[Bug][TDIS-3973]Update sim state
authorJinjin Shi <jinjin.shi@samsung.com>
Mon, 25 Feb 2013 06:08:33 +0000 (14:08 +0800)
committerJinjin Shi <jinjin.shi@samsung.com>
Mon, 25 Feb 2013 06:49:30 +0000 (14:49 +0800)
Change-Id: I892302e6580be91bb6816e60eb66087836512276

CMakeLists.txt
src/sim-state.c [new file with mode: 0755]
src/sim-state.h [new file with mode: 0755]
src/util.c

index 5bdaa0e..532882a 100755 (executable)
@@ -4,6 +4,7 @@ PROJECT(lockscreen C)
 SET(SRCS
        ${CMAKE_SOURCE_DIR}/src/lockscreen.c
        ${CMAKE_SOURCE_DIR}/src/util.c
+       ${CMAKE_SOURCE_DIR}/src/sim-state.c
        ${CMAKE_SOURCE_DIR}/src/info.c
        ${CMAKE_SOURCE_DIR}/src/bg.c
        ${CMAKE_SOURCE_DIR}/src/noti.c
diff --git a/src/sim-state.c b/src/sim-state.c
new file mode 100755 (executable)
index 0000000..b06c7f2
--- /dev/null
@@ -0,0 +1,118 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *  http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#include <vconf.h>\r
+#include <vconf-keys.h>\r
+\r
+#include "lockscreen.h"\r
+#include "sim-state.h"\r
+\r
+static void _set_sim_state(void *data)\r
+{\r
+       struct appdata *ad = data;\r
+       if (ad == NULL)\r
+               return;\r
+\r
+       int state = 0;\r
+       int ret = 0;\r
+       char *buf = NULL;\r
+\r
+       int service_type = VCONFKEY_TELEPHONY_SVCTYPE_SEARCH;\r
+\r
+       if(vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {\r
+               LOGD("fail to get VCONFKEY_TELEPHONY_SVCTYPE");\r
+       }\r
+\r
+       ret = (vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, &state));\r
+       if (ret == 0) {\r
+               LOGD("[%s:%d] VCONFKEY(%s) = %d", __func__, __LINE__, VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, state);\r
+               if (state != VCONFKEY_TELEPHONY_DISP_INVALID\r
+                       && service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {\r
+                       if (state & VCONFKEY_TELEPHONY_DISP_SPN) {\r
+                               buf = vconf_get_str(VCONFKEY_TELEPHONY_SPN_NAME);\r
+                               edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);\r
+                       }\r
+\r
+                       if (state & VCONFKEY_TELEPHONY_DISP_PLMN) {\r
+                               buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);\r
+                               edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);\r
+                       }\r
+               } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_NOSVC) {\r
+                       edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _S("IDS_COM_BODY_NO_SERVICE"));\r
+               } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY) {\r
+                       edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _("IDS_LCKSCN_HEADER_EMERGENCY_CALLS_ONLY"));\r
+               } else {\r
+                       if (service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {\r
+                               buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);\r
+                               edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);\r
+                       }else {\r
+                               edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _S("IDS_COM_BODY_SEARCHING"));\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+static void _sim_state_changed_cb(keynode_t *node, void *data)\r
+{\r
+       _set_sim_state(data);\r
+}\r
+\r
+static void _register_sim_state_event_handler(void *data)\r
+{\r
+       int ret = 0;\r
+\r
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,\r
+                               _sim_state_changed_cb, data);\r
+       if (ret != 0)\r
+               LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
+                       VCONFKEY_TELEPHONY_SVCTYPE);\r
+\r
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,\r
+                               _sim_state_changed_cb, data);\r
+       if (ret != 0)\r
+               LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
+                       VCONFKEY_TELEPHONY_SPN_DISP_CONDITION);\r
+\r
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,\r
+                               _sim_state_changed_cb, data);\r
+       if (ret != 0)\r
+               LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
+                       VCONFKEY_TELEPHONY_SPN_NAME);\r
+\r
+\r
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,\r
+                               _sim_state_changed_cb, data);\r
+       if (ret != 0)\r
+               LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
+                       VCONFKEY_TELEPHONY_NWNAME);\r
+}\r
+\r
+void set_sim_state(void *data)\r
+{\r
+       _set_sim_state(data);\r
+       _register_sim_state_event_handler(data);\r
+}\r
+\r
+void fini_sim_state(void *data)\r
+{\r
+       vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, _sim_state_changed_cb);\r
+\r
+       vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, _sim_state_changed_cb);\r
+\r
+       vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_NAME, _sim_state_changed_cb);\r
+\r
+       vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME, _sim_state_changed_cb);\r
+}\r
diff --git a/src/sim-state.h b/src/sim-state.h
new file mode 100755 (executable)
index 0000000..c2b6c26
--- /dev/null
@@ -0,0 +1,23 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *  http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#ifndef __SIM_STATE_H__\r
+#define __SIM_STATE_H__\r
+\r
+void set_sim_state(void *data);\r
+void fini_sim_state(void *data);\r
+\r
+#endif\r
index 6c33e4c..901a06c 100755 (executable)
@@ -24,6 +24,7 @@
 #include <heynoti.h>
 
 #include "util.h"
+#include "sim-state.h"
 #include "info.h"
 #include "bg.h"
 #include "noti.h"
@@ -183,51 +184,6 @@ void lockscreen_info_hide(struct appdata *ad)
        }
 }
 
-static void _set_sim_state(void *data)
-{
-       struct appdata *ad = data;
-       if (ad == NULL)
-               return;
-
-       int state = 0;
-       int ret = 0;
-       char *buf = NULL;
-
-       int service_type = VCONFKEY_TELEPHONY_SVCTYPE_SEARCH;
-
-       if(vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {
-               LOGD("fail to get VCONFKEY_TELEPHONY_SVCTYPE");
-       }
-
-       ret = (vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, &state));
-       if (ret == 0) {
-               LOGD("[%s:%d] VCONFKEY(%s) = %d", __func__, __LINE__, VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, state);
-               if (state != VCONFKEY_TELEPHONY_DISP_INVALID
-                       && service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
-                       if (state & VCONFKEY_TELEPHONY_DISP_SPN) {
-                               buf = vconf_get_str(VCONFKEY_TELEPHONY_SPN_NAME);
-                               edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);
-                       }
-
-                       if (state & VCONFKEY_TELEPHONY_DISP_PLMN) {
-                               buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
-                               edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);
-                       }
-               } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_NOSVC) {
-                       edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _S("IDS_COM_BODY_NO_SERVICE"));
-               } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY) {
-                       edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _("IDS_LCKSCN_HEADER_EMERGENCY_CALLS_ONLY"));
-               } else {
-                       if (service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
-                               buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
-                               edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);
-                       }else {
-                               edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _S("IDS_COM_BODY_SEARCHING"));
-                       }
-               }
-       }
-}
-
 static void _app_exit(void *data, Evas_Object *obj, const char *emission, const char *source)
 {
        struct appdata *ad = data;
@@ -316,7 +272,7 @@ static Eina_Bool _init_widget_cb(void *data)
                        &ad->slider_rel2.x, &ad->slider_rel2.y, &ad->slider_rel2.w,
                        &ad->slider_rel2.h);
 
-       _set_sim_state(ad);
+       set_sim_state(ad);
 
        ad->info = elm_layout_add(ad->win);
        elm_layout_file_set(ad->info, EDJEFILE, "lock-info");
@@ -413,6 +369,7 @@ int _app_terminate(struct appdata *ad)
        }
 
        vconf_ignore_key_changed(VCONFKEY_PM_STATE, _pm_state_cb);
+       fini_sim_state(ad);
        _fini_heynoti(ad);
 
        LOGD("[%s] app termiante", __func__);