Extract function for restoring global config 75/174775/2
authorJi-hoon Lee <dalton.lee@samsung.com>
Wed, 4 Apr 2018 06:05:57 +0000 (15:05 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Wed, 4 Apr 2018 08:31:15 +0000 (17:31 +0900)
Change-Id: I3474bf1f50f5dd30cd69e65b0e1dedfd5a0c0cda

ism/extras/efl_panel/isf_panel_efl.cpp
ism/src/scim_global_config.cpp
ism/src/scim_global_config.h

index be60ad6..473822f 100644 (file)
@@ -7524,6 +7524,32 @@ static Eina_Bool x_event_window_focus_out_cb (void *data, int ev_type, void *eve
 }
 #endif
 
+static void restore_config ()
+{
+    if (!_config.null ()) {
+        String uuid = _initial_ise_uuid;
+
+        String global_uuid = scim_global_config_read (String(SCIM_GLOBAL_CONFIG_DEFAULT_ISE_UUID), String(""));
+        if (global_uuid.length () > 0) uuid = global_uuid;
+
+        String default_uuid = _config->read (SCIM_CONFIG_DEFAULT_HELPER_ISE, String(""));
+        if (default_uuid.length() > 0) uuid = default_uuid;
+
+        if (global_uuid.length() == 0) {
+            scim_global_config_write (String(SCIM_GLOBAL_CONFIG_DEFAULT_ISE_UUID), uuid);
+        }
+        if (default_uuid.length() == 0) {
+            _config->write (SCIM_CONFIG_DEFAULT_HELPER_ISE, uuid);
+        }
+
+        scim_global_config_flush ();
+        _config->flush();
+
+        scim_global_config_reload ();
+        _config->reload ();
+    }
+}
+
 /**
  * @brief : Launches default soft keyboard for performance enhancement (It's not mandatory)
  */
@@ -7531,19 +7557,16 @@ static void launch_default_soft_keyboard (keynode_t *key, void* data)
 {
     SCIM_DEBUG_MAIN (3) << __FUNCTION__ << "...\n";
 
-    String helper_uuid = _config->read (SCIM_CONFIG_DEFAULT_HELPER_ISE, String(""));
+    String helper_uuid;
+    if (!_config.null()) {
+        helper_uuid = _config->read(SCIM_CONFIG_DEFAULT_HELPER_ISE, String(""));
+    }
     if (helper_uuid.length () > 0) {
         /* Start default ISE */
         change_keyboard_mode (TOOLBAR_HELPER_MODE);
     } else {
         set_temporary_ise (_initial_ise_uuid);
-        if (!_config.null()) {
-            scim_global_config_write(String(SCIM_GLOBAL_CONFIG_DEFAULT_ISE_UUID), _initial_ise_uuid);
-            scim_global_config_flush();
-
-            _config->flush();
-            _config->reload();
-        }
+        restore_config();
     }
 }
 
@@ -7584,9 +7607,7 @@ static Eina_Bool monitor_user_data_path_timer(void *data)
         LOGW ("'%s' exists : %d, is_dir : %d", path,
              (user_data_path_exists ? 1 : 0), (user_data_path_is_dir ? 1 : 0));
 
-        /* Flush config before reloading */
-        scim_global_config_flush ();
-        scim_global_config_reload ();
+        scim_global_config_reload (true);
 
         load_config ();
 
@@ -7602,8 +7623,11 @@ static Eina_Bool monitor_user_data_path_timer(void *data)
             launch = false;
         }
         String default_ise_uuid = scim_global_config_read (String (SCIM_GLOBAL_CONFIG_DEFAULT_ISE_UUID), _initial_ise_uuid);
+
         set_active_ise (default_ise_uuid, launch);
 
+        restore_config ();
+
         g_monitor_user_data_path_timer = NULL;
         return ECORE_CALLBACK_CANCEL;
     }
index df46017..ef996c7 100644 (file)
@@ -407,9 +407,9 @@ scim_global_config_reset (const String &key)
 }
 
 EXAPI bool
-scim_global_config_reload ()
+scim_global_config_reload (bool force)
 {
-    if (__config_repository.updated.size ())
+    if (__config_repository.updated.size () && !force)
         return false;
 
     // Reload all configuration.
index 657c356..14a709e 100644 (file)
@@ -165,7 +165,7 @@ EXAPI void scim_global_config_reset (const String &key);
  * @brief Reload global config.
  * @return true if success.
  */
-EXAPI bool scim_global_config_reload ();
+EXAPI bool scim_global_config_reload (bool force = false);
 
 /**
  * @brief Flush the updated global config into user global config file.