merge with master
[apps/core/preloaded/lockscreen.git] / src / sim-state.c
1 /*\r
2  * Copyright 2012  Samsung Electronics Co., Ltd\r
3  *\r
4  * Licensed under the Flora License, Version 1.0 (the License);\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *  http://floralicense.org/license/\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an AS IS BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 #include <vconf.h>\r
18 #include <vconf-keys.h>\r
19 \r
20 #include "lockscreen.h"\r
21 #include "sim-state.h"\r
22 \r
23 static void _set_sim_state(void *data)\r
24 {\r
25         struct appdata *ad = data;\r
26         if (ad == NULL)\r
27                 return;\r
28 \r
29         int state = 0;\r
30         int ret = 0;\r
31         char *buf = NULL;\r
32 \r
33         int service_type = VCONFKEY_TELEPHONY_SVCTYPE_SEARCH;\r
34 \r
35         if(vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {\r
36                 LOGD("fail to get VCONFKEY_TELEPHONY_SVCTYPE");\r
37         }\r
38 \r
39         ret = (vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, &state));\r
40         if (ret == 0) {\r
41                 LOGD("[%s:%d] VCONFKEY(%s) = %d", __func__, __LINE__, VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, state);\r
42                 if (state != VCONFKEY_TELEPHONY_DISP_INVALID\r
43                         && service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {\r
44                         if (state & VCONFKEY_TELEPHONY_DISP_SPN) {\r
45                                 buf = vconf_get_str(VCONFKEY_TELEPHONY_SPN_NAME);\r
46                                 edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);\r
47                         }\r
48 \r
49                         if (state & VCONFKEY_TELEPHONY_DISP_PLMN) {\r
50                                 buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);\r
51                                 edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);\r
52                         }\r
53                 } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_NOSVC) {\r
54                         edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _S("IDS_COM_BODY_NO_SERVICE"));\r
55                 } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY) {\r
56                         edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _("IDS_LCKSCN_HEADER_EMERGENCY_CALLS_ONLY"));\r
57                 } else {\r
58                         if (service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {\r
59                                 buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);\r
60                                 edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);\r
61                         }else {\r
62                                 edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _S("IDS_COM_BODY_SEARCHING"));\r
63                         }\r
64                 }\r
65         }\r
66 }\r
67 \r
68 static void _sim_state_changed_cb(keynode_t *node, void *data)\r
69 {\r
70         _set_sim_state(data);\r
71 }\r
72 \r
73 static void _register_sim_state_event_handler(void *data)\r
74 {\r
75         int ret = 0;\r
76 \r
77         ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,\r
78                                 _sim_state_changed_cb, data);\r
79         if (ret != 0)\r
80                 LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
81                         VCONFKEY_TELEPHONY_SVCTYPE);\r
82 \r
83         ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,\r
84                                 _sim_state_changed_cb, data);\r
85         if (ret != 0)\r
86                 LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
87                         VCONFKEY_TELEPHONY_SPN_DISP_CONDITION);\r
88 \r
89         ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,\r
90                                 _sim_state_changed_cb, data);\r
91         if (ret != 0)\r
92                 LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
93                         VCONFKEY_TELEPHONY_SPN_NAME);\r
94 \r
95 \r
96         ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,\r
97                                 _sim_state_changed_cb, data);\r
98         if (ret != 0)\r
99                 LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
100                         VCONFKEY_TELEPHONY_NWNAME);\r
101 }\r
102 \r
103 void set_sim_state(void *data)\r
104 {\r
105         _set_sim_state(data);\r
106         _register_sim_state_event_handler(data);\r
107 }\r
108 \r
109 void fini_sim_state(void *data)\r
110 {\r
111         vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, _sim_state_changed_cb);\r
112 \r
113         vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, _sim_state_changed_cb);\r
114 \r
115         vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_NAME, _sim_state_changed_cb);\r
116 \r
117         vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME, _sim_state_changed_cb);\r
118 }\r