Merge branch 'tizen_3.0' into tizen 55/123155/1 accepted/tizen/unified/20170406.054126 submit/tizen/20170404.231326 tizen_4.0.m1_release
authorJihoon Kim <jihoon48.kim@samsung.com>
Tue, 4 Apr 2017 23:09:08 +0000 (08:09 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Tue, 4 Apr 2017 23:09:08 +0000 (08:09 +0900)
Change-Id: I038cc70fc5214a1c553ccf4f9d8b61eed70e1286

CMakeLists.txt
im_setting_list/input_method_setting_list_popup_view.cpp
im_setting_list/input_method_setting_list_popup_view.h
im_setting_list/input_method_setting_list_ui.cpp
org.tizen.inputmethod-setting.xml
packaging/org.tizen.inputmethod-setting.spec

index 13a2505..97cbb70 100644 (file)
@@ -24,7 +24,7 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
 INCLUDE(FindPkgConfig)
 pkg_check_modules(pkgs REQUIRED
 capi-appfw-application isf elementary
-efl-extension dlog capi-ui-inputmethod-manager
+efl-extension dlog capi-ui-inputmethod-manager capi-appfw-package-manager
 )
 
 FOREACH(flag ${pkgs_CFLAGS})
index 5c08649..1b0e8ad 100644 (file)
@@ -406,6 +406,22 @@ static void im_setting_list_screen_create(void *data)
 }
 #endif
 
+void im_setting_list_popup_view_del(void *data)
+{
+    appdata *ad = (appdata *)data;
+    if (!ad || !ad->win)
+        return;
+
+    if (ad->popup) {
+        evas_object_del(ad->popup);
+    }
+    ad->popup = NULL;
+
+    if (ad->naviframe) {
+        elm_naviframe_item_pop(ad->naviframe);
+    }
+}
+
 void
 im_setting_list_popup_view_create(void *data)
 {
index 32898f9..875d7b2 100644 (file)
@@ -20,6 +20,7 @@
 #include <Elementary.h>
 
 void im_setting_list_popup_view_create(void *data);
+void im_setting_list_popup_view_del(void *data);
 
 #endif /* __INPUTMETHOD_SETTING_LIST_POPUP_VIEW_H */
 
index ac8e355..da91394 100644 (file)
@@ -24,6 +24,8 @@
 #include <algorithm>
 #include <tzplatform_config.h>
 #include <inputmethod_manager.h>
+#include <package_manager.h>
+
 #include "isf_control.h"
 
 #define IM_SETTING_LIST_PACKAGE                 PACKAGE
@@ -88,6 +90,7 @@ static Elm_Genlist_Item_Class       *itc_im_list_title = NULL;
 static int                          g_active_ime_index = -1;
 static list_item_text               item_text[2];
 static std::vector<gen_item_data>   g_gen_item_data;
+static package_manager_h            pkgmgr = NULL;
 
 void im_setting_list_update_window(void *data);
 
@@ -851,6 +854,11 @@ void im_setting_list_app_terminate(void *data)
         elm_genlist_item_class_free(itc_im_list_title);
         itc_im_list_title = NULL;
     }
+
+    if (pkgmgr) {
+        package_manager_destroy(pkgmgr);
+        pkgmgr = NULL;
+    }
 }
 
 void im_setting_list_update_window(void *data)
@@ -862,6 +870,27 @@ void im_setting_list_update_window(void *data)
     im_setting_list_add_ime(ad);
 }
 
+static void _package_manager_event_cb(const char *type, const char *package, package_manager_event_type_e event_type, package_manager_event_state_e event_state, int progress, package_manager_error_e error, void *user_data)
+{
+    appdata *ad = (appdata *)user_data;
+
+    if (!package || !type)
+        return;
+
+    if (event_state != PACKAGE_MANAGER_EVENT_STATE_COMPLETED)
+        return;
+
+    if (event_type == PACKAGE_MANAGER_EVENT_TYPE_INSTALL ||
+        event_type == PACKAGE_MANAGER_EVENT_TYPE_UNINSTALL ||
+        event_type == PACKAGE_MANAGER_EVENT_TYPE_UPDATE) {
+        LOGD("PACKAGE_MANAGER_EVENT type : %d", event_type);
+        /* Wait for updating IME package list in ISF */
+        usleep(20000);
+        im_setting_list_popup_view_del(ad);
+        im_setting_list_popup_view_create(ad);
+    }
+}
+
 void
 im_setting_list_app_create(void *data)
 {
@@ -873,6 +902,20 @@ im_setting_list_app_create(void *data)
     im_setting_list_bg_create(ad->win);
     im_setting_list_load_ime_info();
 
+    if (!pkgmgr) {
+        int ret = package_manager_create(&pkgmgr);
+        if (ret == PACKAGE_MANAGER_ERROR_NONE) {
+            ret = package_manager_set_event_cb(pkgmgr, _package_manager_event_cb, ad);
+            if (ret == PACKAGE_MANAGER_ERROR_NONE) {
+                LOGD("package_manager_set_event_cb succeeded.\n");
+            } else {
+                LOGD("package_manager_set_event_cb failed(%d)\n", ret);
+            }
+        } else {
+            LOGD("package_manager_create failed(%d)\n", ret);
+        }
+    }
+
     im_setting_list_list_create(ad);
     evas_object_show(ad->win);
 }
index ad254ed..0b6a60b 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" api-version="3.0" package="org.tizen.inputmethod-setting" version="0.5.23" install-location="internal-only">
+<manifest xmlns="http://tizen.org/ns/packages" api-version="3.0" package="org.tizen.inputmethod-setting" version="0.5.24" install-location="internal-only">
         <label>Keyboard setting</label>
         <author email="shoum.chen@samsung.com" href="www.samsung.com">Shuoming Chen</author>
         <description>Keyboard setting Application</description>
@@ -19,5 +19,7 @@
         <privileges>
             <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
             <privilege>http://tizen.org/privilege/imemanager</privilege>
+            <privilege>http://tizen.org/privilege/packagemanager.info</privilege>
+            <privilege>http://tizen.org/privilege/packagemanager.install</privilege>
         </privileges>
 </manifest>
index a61b995..c14c939 100644 (file)
@@ -1,20 +1,21 @@
 Name:       org.tizen.inputmethod-setting
 Summary:    Input Method Setting Application
-Version:    0.5.23
+Version:    0.5.24
 Release:    1
 Group:      Graphics & UI Framework/Input
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
 
 BuildRequires:  gettext-tools
+BuildRequires:  cmake
 BuildRequires:  pkgconfig(capi-appfw-application)
 BuildRequires:  pkgconfig(isf)
 BuildRequires:  pkgconfig(elementary)
 BuildRequires:  pkgconfig(dlog)
-BuildRequires:  cmake
-BuildRequires:  efl-extension-devel
+BuildRequires:  pkgconfig(efl-extension)
 BuildRequires:  pkgconfig(libtzplatform-config)
 BuildRequires:  pkgconfig(capi-ui-inputmethod-manager)
+BuildRequires:  pkgconfig(capi-appfw-package-manager)
 Requires:      %{name}-compat = %{version}-%{release}
 # This if/endif is for GBM build optimization. This usage does not affect
 # The unified build (profile is undefined) as it will return TRUE always.
@@ -108,8 +109,7 @@ CFLAGS="$CFLAGSBASE -D_MOBILE"
 CXXFLAGS="$CXXFLAGSBASE -D_MOBILE"
 
 pushd build_mobile
-cmake .. -DCMAKE_INSTALL_PREFIX=%{_prefix} \
-         -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
+%cmake .. -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
          -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES \
          -DTZ_SYS_RO_ICONS=%TZ_SYS_RO_ICONS
 make %{?jobs:-j%jobs}
@@ -124,8 +124,7 @@ mkdir -p build_wearable_rectangle
 CFLAGS="$CFLAGSBASE -D_WEARABLE"
 CXXFLAGS="$CXXFLAGSBASE -D_WEARABLE"
 pushd build_wearable_rectangle
-cmake .. -DCMAKE_INSTALL_PREFIX=%{_prefix} \
-         -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
+%cmake .. -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
          -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES \
          -DTZ_SYS_RO_ICONS=%TZ_SYS_RO_ICONS
 make %{?jobs:-j%jobs}
@@ -138,8 +137,7 @@ mkdir -p build_wearable_circle
 CFLAGS="$CFLAGSBASE -D_WEARABLE -D_CIRCLE"
 CXXFLAGS="$CXXFLAGSBASE -D_WEARABLE -D_CIRCLE"
 pushd build_wearable_circle
-cmake .. -DCMAKE_INSTALL_PREFIX=%{_prefix} \
-         -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
+%cmake .. -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
          -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES \
          -DTZ_SYS_RO_ICONS=%TZ_SYS_RO_ICONS
 make %{?jobs:-j%jobs}
@@ -152,8 +150,7 @@ popd
 %if "%{?profile}"!="mobile" && "%{?profile}"!="wearable"
 CFLAGS="$CFLAGSBASE"
 CXXFLAGS="$CXXFLAGSBASE"
-cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} \
-        -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
+%cmake . -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
         -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES \
         -DTZ_SYS_RO_ICONS=%TZ_SYS_RO_ICONS
 make %{?jobs:-j%jobs}