[systeminfo] fix error of tizen.systeminfo.getPropertyValue("LOCALE"...) 92/107192/1
authorjk.pu <jk.pu@samsung.com>
Tue, 27 Dec 2016 05:57:25 +0000 (14:57 +0900)
committerjk.pu <jk.pu@samsung.com>
Tue, 27 Dec 2016 06:09:06 +0000 (15:09 +0900)
wrt already set system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,..)
this api is singleton , only one cb can be registered in each process.
change API to vconf_notify_key_changed() instead of system_settings_set_changed_cb

verification : check behavior and web tct. systeminfo 100% passed.

Change-Id: I7ec858317ac8d58b3b11190f58187cf96c342bf6
Signed-off-by: jk.pu <jk.pu@samsung.com>
src/systeminfo/systeminfo_manager.cc

index e20c33226b8c5961f16fb568028d37f49a10f626..a0bdc62e9761994111d5110b778b373a8d344f0a 100644 (file)
@@ -24,6 +24,7 @@
 #include <device/callback.h>
 #include <device/device-error.h>
 #include <sensor_internal.h>
+#include <vconf.h>
 
 #include "common/converter.h"
 #include "common/logger.h"
@@ -166,7 +167,7 @@ static void OnDeviceOrientationChangedCb(sensor_t sensor, unsigned int event_typ
   manager->CallListenerCallback(kPropertyIdDeviceOrientation);
 }
 
-static void OnLocaleChangedCb(system_settings_key_e key, void* event_ptr) {
+static void OnLocaleChangedCb(keynode_t* node,  void* event_ptr) {
   LoggerD("Enter");
   SysteminfoManager* manager = static_cast<SysteminfoManager*>(event_ptr);
   manager->CallListenerCallback(kPropertyIdLocale);
@@ -1041,35 +1042,27 @@ PlatformResult SysteminfoManager::UnregisterDeviceOrientationListener() {
 
 PlatformResult SysteminfoManager::RegisterLocaleListener() {
   LoggerD("Entered");
-  int ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY,
-                                     OnLocaleChangedCb, static_cast<void*>(this));
-  if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
-    return LogAndCreateResult(
-              ErrorCode::UNKNOWN_ERR, "Country change callback registration failed",
-              ("system_settings_set_changed_cb error: %d (%s)", ret, get_error_message(ret)));
-  }
-
-  ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,
-                                     OnLocaleChangedCb, static_cast<void*>(this));
-  if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
-    return LogAndCreateResult(
-              ErrorCode::UNKNOWN_ERR, "Language change callback registration failed",
-              ("system_settings_set_changed_cb error: %d (%s)", ret, get_error_message(ret)));
-  }
+  PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
+  CHECK_LISTENER_ERROR(
+      SysteminfoUtils::RegisterVconfCallback(VCONFKEY_REGIONFORMAT,
+                                             OnLocaleChangedCb, this))
+  CHECK_LISTENER_ERROR(
+      SysteminfoUtils::RegisterVconfCallback(VCONFKEY_LANGSET,
+                                             OnLocaleChangedCb, this))
   LoggerD("Added callback for LOCALE");
   return PlatformResult(ErrorCode::NO_ERROR);
 }
 
 PlatformResult SysteminfoManager::UnregisterLocaleListener() {
   LoggerD("Entered");
-  if (SYSTEM_SETTINGS_ERROR_NONE !=
-      system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE) ) {
-    LoggerE("Unregistration of language change callback failed");
-  }
-  if (SYSTEM_SETTINGS_ERROR_NONE !=
-      system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY) ) {
-    LoggerE("Unregistration of country change callback failed");
-  }
+  PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
+  CHECK_LISTENER_ERROR(
+      SysteminfoUtils::UnregisterVconfCallback(VCONFKEY_REGIONFORMAT,
+                                               OnLocaleChangedCb))
+  CHECK_LISTENER_ERROR(
+      SysteminfoUtils::UnregisterVconfCallback(VCONFKEY_LANGSET,
+                                               OnLocaleChangedCb))
+
   LoggerD("Removed callback for LOCALE");
   return PlatformResult(ErrorCode::NO_ERROR);
 }