InputMethod Setting UI update on keyboard changing request. 39/219939/1
authorSang Il Lee <sangil77.lee@samsung.com>
Thu, 12 Dec 2019 02:31:32 +0000 (11:31 +0900)
committerSang Il Lee <sangil77.lee@samsung.com>
Thu, 12 Dec 2019 02:32:57 +0000 (11:32 +0900)
Change-Id: I989d620d54a96494df45f89a877d292fa5e662d9
Signed-off-by: Sang-Il Lee <sangil77.lee@samsung.com>
im_setting_list/CMakeLists.txt
im_setting_list/input_method_setting_list_popup_view.cpp
im_setting_list/input_method_setting_list_ui.cpp
packaging/org.tizen.inputmethod-setting.spec

index 108edb0..c803ff5 100644 (file)
@@ -16,7 +16,7 @@ pkg_check_modules(pkgs REQUIRED
                   capi-appfw-application isf elementary
                   efl-extension dlog
                   capi-ui-inputmethod-manager
-                  capi-appfw-package-manager
+                  capi-appfw-package-manager vconf
 )
 
 FOREACH(flag ${pkgs_CFLAGS})
index b50caab..689173f 100644 (file)
@@ -23,6 +23,7 @@
 #include <isf_control.h>
 #include <algorithm>
 #include <inputmethod_manager.h>
+#include <vconf.h>
 
 #define IM_SETTING_LIST_POPUP_VIEW_TITLE          "IDS_ST_HEADER_DEFAULT_KEYBOARD_ABB"
 
@@ -368,6 +369,14 @@ static Evas_Object *im_setting_list_popup_create(void *data)
 #endif
 
 #ifdef _WEARABLE
+static void _active_keyboard_changed_cb(keynode_t* node, void* data)
+{
+    im_setting_list_load_active_ime_info();
+    if (group_radio != NULL) {
+        elm_radio_value_set(group_radio, g_active_ime_id);
+    }
+}
+
 static char *
 im_setting_list_default_keyboard_title_text_get(void *data, Evas_Object *obj, const char *part)
 {
@@ -382,7 +391,9 @@ static Eina_Bool _pop_cb(void *data, Elm_Object_Item *it)
         eext_rotary_object_event_activated_set(ad->main_circle_genlist, EINA_TRUE);
 #endif
 
-    return EINA_TRUE;
+    vconf_ignore_key_changed(VCONFKEY_ISF_ACTIVE_KEYBOARD_UUID, _active_keyboard_changed_cb);
+
+return EINA_TRUE;
 }
 
 static void im_setting_list_screen_create(void *data)
@@ -437,6 +448,8 @@ static void im_setting_list_screen_create(void *data)
     elm_atspi_accessible_name_set(navi_it, dgettext(PACKAGE, IM_SETTING_LIST_POPUP_VIEW_TITLE));
 #endif
     elm_naviframe_item_pop_cb_set(navi_it, _pop_cb, ad);
+
+    vconf_notify_key_changed(VCONFKEY_ISF_ACTIVE_KEYBOARD_UUID, _active_keyboard_changed_cb, data);
 }
 #endif
 
index eed3d37..f7c5bd6 100644 (file)
@@ -24,6 +24,7 @@
 #include <tzplatform_config.h>
 #include <inputmethod_manager.h>
 #include <package_manager.h>
+#include <vconf.h>
 
 #include "isf_control.h"
 
@@ -263,6 +264,41 @@ static void _popup_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_inf
     delete cb_data;
 }
 
+static void _active_keyboard_changed_cb(keynode_t* node, void* data)
+{
+    appdata *ad = (appdata *)data;
+    int active_ime_index = im_setting_list_get_active_ime_index();
+
+    if (g_active_ime_index != active_ime_index) {
+        g_active_ime_index = active_ime_index;
+        if (g_active_ime_index < 0 || g_active_ime_index >= (int)g_ime_info_list.size()) {
+            LOGW("Wrong value. g_active_ime_index : %d, g_ime_info_list.size() : %d\n", g_active_ime_index, g_ime_info_list.size());
+            return;
+        }
+
+        /* Default keyboard selector */
+        snprintf(item_text[0].main_text, sizeof(item_text[0].main_text), "%s", IM_SETTING_LIST_DEFAULT_KEYBOARD);
+#ifdef _WEARABLE
+        if(g_ime_info_list.size() > 1)
+            snprintf(item_text[0].sub_text, sizeof(item_text[0].sub_text), "<color=#4CABFF>%s</color>", g_ime_info_list[g_active_ime_index].label);
+        else
+#endif
+            snprintf(item_text[0].sub_text, sizeof(item_text[0].sub_text), "%s", g_ime_info_list[g_active_ime_index].label);
+
+        if(ad->genlist) {
+            Elm_Object_Item *item = elm_genlist_first_item_get(ad->genlist);
+            list_item_text *item_data = NULL;
+            while (item) {
+                item_data = (list_item_text*)elm_object_item_data_get(item);
+                elm_genlist_item_update (item);
+                if (item_data && strncmp (item_data->main_text, IM_SETTING_LIST_KEYBOARD_SETTING, sizeof(item_data->main_text)) == 0)
+                    elm_object_item_disabled_set(item, !(g_ime_info_list[g_active_ime_index].has_option));
+                item = elm_genlist_item_next_get (item);
+            }
+        }
+    }
+}
+
 static void set_popup_message(Evas_Object *obj, int index)
 {
     char chFormatMsg[255] = {'\0'};
@@ -931,6 +967,8 @@ void im_setting_list_app_terminate(void *data)
         package_manager_destroy(pkgmgr);
         pkgmgr = NULL;
     }
+
+    vconf_ignore_key_changed(VCONFKEY_ISF_ACTIVE_KEYBOARD_UUID, _active_keyboard_changed_cb);
 }
 
 void im_setting_list_update_window(void *data)
@@ -990,6 +1028,8 @@ im_setting_list_app_create(void *data)
 
     im_setting_list_list_create(ad);
     evas_object_show(ad->win);
+
+    vconf_notify_key_changed(VCONFKEY_ISF_ACTIVE_KEYBOARD_UUID, _active_keyboard_changed_cb, data);
 }
 
 void
index 79d6351..a80aa7d 100644 (file)
@@ -16,6 +16,7 @@ BuildRequires:  pkgconfig(efl-extension)
 BuildRequires:  pkgconfig(libtzplatform-config)
 BuildRequires:  pkgconfig(capi-ui-inputmethod-manager)
 BuildRequires:  pkgconfig(capi-appfw-package-manager)
+BuildRequires:  pkgconfig(vconf)
 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.