Coverity issue fix
[apps/native/starter.git] / src / status.c
1 /*
2  * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include <vconf.h>
18 #include <stdlib.h>
19 #include <string.h>
20 #include <errno.h>
21
22 #include "status.h"
23 #include "util.h"
24
25 int errno;
26
27 #define VCONFKEY_REMOTE_LOCK_ISLOCKED "db/private/org.tizen.wfmw/is_locked"
28
29
30
31 typedef struct cb_info {
32         status_active_cb func;
33         void *data;
34 } cb_info_s;
35
36
37
38 static struct status_active_s s_status_active = {
39         .list = {NULL, },
40         .setappl_selected_package_name = NULL,
41         .setappl_screen_lock_type_int = -1,
42         .langset = NULL,
43         .pm_state = -1,
44         .starter_sequence = -1,
45         .sysman_power_off_status = -1,
46         .boot_animation_finished = -1,
47 };
48
49
50
51 static struct status_passive_s s_status_passive = {
52         .wms_wakeup_by_gesture_setting = -1,
53         .wms_clocks_set_idle = NULL,
54         .setappl_ambient_mode_bool = -1,
55         .homescreen_watch_face_visibility = -1,
56
57         .pm_key_ignore = -1,
58         .call_state = -1,
59         .idle_lock_state = -1,
60         .setappl_password_attempts_left_int = -1,
61         .remote_lock_islocked = -1,
62         .setappl_psmode = -1,
63         .starter_reserved_apps_status = -1,
64         .setappl_sound_lock_bool = -1,
65         .setappl_double_press_home_key = -1,
66         .starter_quick_launch_enable = -1,
67
68         .setappl_3rd_lock_pkg_name_str = NULL,
69 };
70
71
72
73 status_active_h status_active_get(void)
74 {
75         return &s_status_active;
76 }
77
78
79
80 status_passive_h status_passive_get(void)
81 {
82         return &s_status_passive;
83 }
84
85
86
87 int status_active_register_cb(status_active_key_e key, status_active_cb func, void *data)
88 {
89         cb_info_s *info = NULL;
90
91         retv_if(key <= STATUS_ACTIVE_KEY_INVALID, -1);
92         retv_if(key >= STATUS_ACTIVE_KEY_MAX, -1);
93         retv_if(!func, -1);
94
95         info = calloc(1, sizeof(cb_info_s));
96         retv_if(!info, -1);
97
98         info->func = func;
99         info->data = data;
100
101         s_status_active.list[key] = eina_list_append(s_status_active.list[key], info);
102
103         return 0;
104 }
105
106
107
108 int status_active_unregister_cb(status_active_key_e key, status_active_cb func)
109 {
110         const Eina_List *l = NULL;
111         const Eina_List *ln = NULL;
112         cb_info_s *info = NULL;
113
114         retv_if(key <= STATUS_ACTIVE_KEY_INVALID, -1);
115         retv_if(key >= STATUS_ACTIVE_KEY_MAX, -1);
116         retv_if(!func, -1);
117
118         EINA_LIST_FOREACH_SAFE(s_status_active.list[key], l, ln, info) {
119                 if (func == info->func) {
120                         s_status_active.list[key] = eina_list_remove(s_status_active.list[key], info);
121                         free(info);
122                         return 0;
123                 }
124         }
125
126         _W("We cannot unregister the func. Because the list doesn't have it.");
127
128         return 0;
129 }
130
131
132
133 static void _status_active_change_cb(keynode_t* node, void *data)
134 {
135         const char *key_name = NULL;
136         const Eina_List *l = NULL;
137         cb_info_s *info = NULL;
138
139         ret_if(!node);
140
141         key_name = vconf_keynode_get_name(node);
142         ret_if(!key_name);
143
144         if (!strcmp(key_name, VCONFKEY_PM_STATE)) {
145                 s_status_active.pm_state = vconf_keynode_get_int(node);
146                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_PM_STATE], l, info) {
147                         continue_if(!info->func);
148                         if (0 == info->func(STATUS_ACTIVE_KEY_PM_STATE, info->data)) break;
149                 }
150         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME)) {
151                 char *tmp = vconf_keynode_get_str(node);
152                 char *a_tmp;
153
154                 if (tmp) {
155                         a_tmp = strdup(tmp);
156                 } else {
157                         a_tmp = strdup(HOMESCREEN_PKG_NAME);
158                 }
159
160                 if (a_tmp) {
161                         free(s_status_active.setappl_selected_package_name);
162                         s_status_active.setappl_selected_package_name = a_tmp;
163                 } else {
164                         if (!s_status_active.setappl_selected_package_name) {
165                                 _E("Package name is NULL, strdup failed");
166                         } else {
167                                 _E("Keep old package. because of strdup\n");
168                         }
169                 }
170
171                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_SETAPPL_SELECTED_PACKAGE_NAME], l, info) {
172                         continue_if(!info->func);
173                         if (0 == info->func(STATUS_ACTIVE_KEY_SETAPPL_SELECTED_PACKAGE_NAME, info->data)) break;
174                 }
175         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT)) {
176                 s_status_active.setappl_screen_lock_type_int = vconf_keynode_get_int(node);
177                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_SETAPPL_SCREEN_LOCK_TYPE_INT], l, info) {
178                         continue_if(!info->func);
179                         if (0 == info->func(STATUS_ACTIVE_KEY_SETAPPL_SCREEN_LOCK_TYPE_INT, info->data)) break;
180                 }
181         } else if (!strcmp(key_name, VCONFKEY_STARTER_SEQUENCE)) {
182                 s_status_active.starter_sequence = vconf_keynode_get_int(node);
183                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_STARTER_SEQUENCE], l, info) {
184                         continue_if(!info->func);
185                         if (0 == info->func(STATUS_ACTIVE_KEY_STARTER_SEQUENCE, info->data)) break;
186                 }
187         } else if (!strcmp(key_name, VCONFKEY_SYSMAN_POWER_OFF_STATUS)) {
188                 s_status_active.sysman_power_off_status = vconf_keynode_get_int(node);
189                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_SYSMAN_POWER_OFF_STATUS], l, info) {
190                         continue_if(!info->func);
191                         if (0 == info->func(STATUS_ACTIVE_KEY_SYSMAN_POWER_OFF_STATUS, info->data)) break;
192                 }
193         } else if (!strcmp(key_name, VCONFKEY_LANGSET)) {
194                 char *tmp = vconf_keynode_get_str(node);
195                 free(s_status_active.langset);
196                 if (tmp) s_status_active.langset = strdup(tmp);
197                 else s_status_active.langset = NULL;
198                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_LANGSET], l, info) {
199                         continue_if(!info->func);
200                         if (0 == info->func(STATUS_ACTIVE_KEY_LANGSET, info->data)) break;
201                 }
202         } else if (!strcmp(key_name, VCONFKEY_BOOT_ANIMATION_FINISHED)) {
203                 s_status_active.boot_animation_finished = vconf_keynode_get_int(node);
204                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_BOOT_ANIMATION_FINISHED], l, info) {
205                         continue_if(!info->func);
206                         if (0 == info->func(STATUS_ACTIVE_KEY_BOOT_ANIMATION_FINISHED, info->data)) break;
207                 }
208         }
209 }
210
211
212
213 static void _status_passive_change_cb(keynode_t* node, void *data)
214 {
215         char *key_name = NULL;
216
217         ret_if(!node);
218
219         key_name = vconf_keynode_get_name(node);
220         ret_if(!key_name);
221
222 #ifdef TIZEN_PROFILE_WEARABLE
223         if (!strcmp(key_name, VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING)) {
224                 s_status_passive.wms_wakeup_by_gesture_setting = vconf_keynode_get_int(node);
225         } else if (!strcmp(key_name, VCONFKEY_WMS_CLOCKS_SET_IDLE)) {
226                 char *tmp = vconf_keynode_get_str(node);
227
228                 if (tmp) {
229                         free(s_status_passive.wms_clocks_set_idle);
230                         s_status_passive.wms_clocks_set_idle = strdup(tmp);
231                 }
232         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL)) {
233                 s_status_passive.setappl_ambient_mode_bool = vconf_keynode_get_int(node);
234         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY)) {
235                 s_status_passive.setappl_double_press_home_key = vconf_keynode_get_int(node);
236         } else if (!strcmp(key_name, VCONFKEY_HOMESCREEN_WATCH_FACE_VISIBILITY)) {
237                 s_status_passive.homescreen_watch_face_visibility = vconf_keynode_get_bool(node);
238         } else
239 #endif
240         if (!strcmp(key_name, VCONFKEY_PM_KEY_IGNORE)) {
241                 s_status_passive.pm_key_ignore = vconf_keynode_get_int(node);
242         } else if (!strcmp(key_name, VCONFKEY_CALL_STATE)) {
243                 s_status_passive.call_state = vconf_keynode_get_int(node);
244         } else if (!strcmp(key_name, VCONFKEY_IDLE_LOCK_STATE)) {
245                 s_status_passive.idle_lock_state = vconf_keynode_get_int(node);
246         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT)) {
247                 s_status_passive.setappl_password_attempts_left_int = vconf_keynode_get_int(node);
248         } else if (!strcmp(key_name, VCONFKEY_REMOTE_LOCK_ISLOCKED)) {
249                 s_status_passive.remote_lock_islocked = vconf_keynode_get_bool(node);
250         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_PSMODE)) {
251                 s_status_passive.setappl_psmode = vconf_keynode_get_int(node);
252         } else if (!strcmp(key_name, VCONFKEY_STARTER_RESERVED_APPS_STATUS)) {
253                 s_status_passive.starter_reserved_apps_status = vconf_keynode_get_int(node);
254         } else if (!strcmp(key_name, VCONFKEY_STARTER_QUICK_LAUNCH_ENABLE)) {
255                 s_status_passive.starter_quick_launch_enable = vconf_keynode_get_bool(node);
256         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR)) {
257                 char *tmp = vconf_keynode_get_str(node);
258                 char *a_tmp;
259
260                 if (tmp) {
261                         a_tmp = strdup(tmp);
262                 } else {
263                         a_tmp = strdup(STATUS_DEFAULT_LOCK_PKG_NAME);
264                 }
265
266                 if (a_tmp) {
267                         free(s_status_passive.setappl_3rd_lock_pkg_name_str);
268                         s_status_passive.setappl_3rd_lock_pkg_name_str = a_tmp;
269                 } else {
270                         if (!s_status_passive.setappl_3rd_lock_pkg_name_str) {
271                                 _E("Package name is NULL, strdup failed");
272                         } else {
273                                 _E("Keep old package. because of strdup\n");
274                         }
275                 }
276         }
277 }
278
279
280
281 int status_register(void)
282 {
283         _W("Register every events for Starter");
284
285         /* Active events */
286         if (vconf_notify_key_changed(VCONFKEY_PM_STATE, _status_active_change_cb, NULL) < 0) {
287                 _E("Failed to register add the callback for %s", VCONFKEY_PM_STATE);
288         } else if (vconf_get_int(VCONFKEY_PM_STATE, &s_status_active.pm_state) < 0) {
289                 _E("Failed to get vconfkey[%s]", VCONFKEY_PM_STATE);
290                 s_status_active.pm_state = -1;
291         }
292
293         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME, _status_active_change_cb, NULL) < 0) {
294                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
295         }
296         if (!(s_status_active.setappl_selected_package_name = vconf_get_str(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME))) {
297                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
298                 s_status_active.setappl_selected_package_name = strdup(HOMESCREEN_PKG_NAME);
299                 if (!s_status_active.setappl_selected_package_name) {
300                         _E("Failed to duplicate string");
301                 }
302         }
303
304         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, _status_active_change_cb, NULL) < 0) {
305                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT);
306         } else if (vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &s_status_active.setappl_screen_lock_type_int) < 0) {
307                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT);
308                 s_status_active.setappl_screen_lock_type_int = -1;
309         }
310
311         if (vconf_notify_key_changed(VCONFKEY_STARTER_SEQUENCE, _status_active_change_cb, NULL) < 0) {
312                 _E("Failed to register add the callback for %s", VCONFKEY_STARTER_SEQUENCE);
313         } else if (vconf_get_int(VCONFKEY_STARTER_SEQUENCE, &s_status_active.starter_sequence) < 0) {
314                 _E("Failed to get vconfkey[%s]", VCONFKEY_STARTER_SEQUENCE);
315                 s_status_active.starter_sequence = -1;
316         }
317
318         if (vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, _status_active_change_cb, NULL) < 0) {
319                 _E("Failed to register add the callback for %s", VCONFKEY_SYSMAN_POWER_OFF_STATUS);
320         } else if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &s_status_active.sysman_power_off_status) < 0) {
321                 _E("Failed to get vconfkey[%s]", VCONFKEY_SYSMAN_POWER_OFF_STATUS);
322                 s_status_active.sysman_power_off_status  = -1;
323         }
324
325         if (vconf_notify_key_changed(VCONFKEY_LANGSET, _status_active_change_cb, NULL) < 0) {
326                 _E("Failed to register add the callback for %s", VCONFKEY_LANGSET);
327         } else if (!(s_status_active.langset = vconf_get_str(VCONFKEY_LANGSET))) {
328                 _E("Failed to get vconfkey[%s]", VCONFKEY_LANGSET);
329         }
330
331         if (vconf_notify_key_changed(VCONFKEY_BOOT_ANIMATION_FINISHED, _status_active_change_cb, NULL) < 0) {
332                 _E("Failed to register add the callback for %s", VCONFKEY_BOOT_ANIMATION_FINISHED);
333         } else if (vconf_get_int(VCONFKEY_BOOT_ANIMATION_FINISHED, &s_status_active.boot_animation_finished) < 0) {
334                 _E("Failed to get vconfkey[%s]", VCONFKEY_BOOT_ANIMATION_FINISHED);
335                 s_status_active.boot_animation_finished = -1;
336         }
337
338         /* Passive events */
339 #ifdef TIZEN_PROFILE_WEARABLE
340         if (vconf_notify_key_changed(VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING, _status_passive_change_cb, NULL) < 0) {
341                 _E("Failed to register add the callback for %s", VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING);
342         } else if (vconf_get_int(VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING, &s_status_passive.wms_wakeup_by_gesture_setting) < 0) {
343                 _E("Failed to get vconfkey[%s]", VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING);
344                 s_status_passive.wms_wakeup_by_gesture_setting = -1;
345         }
346
347         if (vconf_notify_key_changed(VCONFKEY_WMS_CLOCKS_SET_IDLE, _status_passive_change_cb, NULL) < 0) {
348                 _E("Failed to register add the callback for %s", VCONFKEY_WMS_CLOCKS_SET_IDLE);
349         }
350         if (!(s_status_passive.wms_clocks_set_idle = vconf_get_str(VCONFKEY_WMS_CLOCKS_SET_IDLE))) {
351                 _E("Failed to get vconfkey[%s]", VCONFKEY_WMS_CLOCKS_SET_IDLE);
352                 s_status_passive.wms_clocks_set_idle = strdup(IDLE_CLOCK_PKG_NAME);
353                 if (!s_status_passive.wms_clocks_set_idle) {
354                         _E("Failed to duplicate string");
355                 }
356         }
357
358         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL, _status_passive_change_cb, NULL) < 0) {
359                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL);
360         } else if (vconf_get_int(VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL, &s_status_passive.setappl_ambient_mode_bool) < 0) {
361                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL);
362                 s_status_passive.setappl_ambient_mode_bool = -1;
363         }
364
365         if (vconf_notify_key_changed(VCONFKEY_HOMESCREEN_WATCH_FACE_VISIBILITY, _status_passive_change_cb, NULL) < 0) {
366                 _E("Failed to register add the callback for %s", VCONFKEY_HOMESCREEN_WATCH_FACE_VISIBILITY);
367         } else if (vconf_get_bool(VCONFKEY_HOMESCREEN_WATCH_FACE_VISIBILITY, &s_status_passive.homescreen_watch_face_visibility) < 0) {
368                 _E("Failed to get vconfkey[%s]", VCONFKEY_HOMESCREEN_WATCH_FACE_VISIBILITY);
369                 s_status_passive.homescreen_watch_face_visibility = -1;
370         }
371
372         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY, _status_passive_change_cb, NULL) < 0) {
373                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY);
374         } else if (vconf_get_int(VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY, &s_status_passive.setappl_double_press_home_key) < 0) {
375                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY);
376                 s_status_passive.setappl_double_press_home_key = -1;
377         }
378 #endif
379
380         if (vconf_notify_key_changed(VCONFKEY_PM_KEY_IGNORE, _status_passive_change_cb, NULL) < 0) {
381                 _E("Failed to register add the callback for %s", VCONFKEY_PM_KEY_IGNORE);
382         } else if (vconf_get_int(VCONFKEY_PM_KEY_IGNORE, &s_status_passive.pm_key_ignore) < 0) {
383                 _E("Failed to get vconfkey[%s]", VCONFKEY_PM_KEY_IGNORE);
384                 s_status_passive.pm_key_ignore = -1;
385         }
386
387         if (vconf_notify_key_changed(VCONFKEY_CALL_STATE, _status_passive_change_cb, NULL) < 0) {
388                 _E("Failed to register add the callback for %s", VCONFKEY_CALL_STATE);
389         } else if (vconf_get_int(VCONFKEY_CALL_STATE, &s_status_passive.call_state) < 0) {
390                 _E("Failed to get vconfkey[%s]", VCONFKEY_CALL_STATE);
391                 s_status_passive.call_state = -1;
392         }
393
394         if (vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE, _status_passive_change_cb, NULL) < 0) {
395                 _E("Failed to regsiter add the callback for %s", VCONFKEY_IDLE_LOCK_STATE);
396         } else if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &s_status_passive.idle_lock_state) < 0) {
397                 _E("Failed to get vconfkey[%s]", VCONFKEY_IDLE_LOCK_STATE);
398                 s_status_passive.idle_lock_state = -1;
399         }
400
401         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, _status_passive_change_cb, NULL) < 0) {
402                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT);
403         } else if (vconf_get_int(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, &s_status_passive.setappl_password_attempts_left_int) < 0) {
404                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT);
405                 s_status_passive.setappl_password_attempts_left_int = -1;
406         }
407
408         if (vconf_notify_key_changed(VCONFKEY_REMOTE_LOCK_ISLOCKED, _status_passive_change_cb, NULL) < 0) {
409                 _E("Failed to register add the callback for %s", VCONFKEY_REMOTE_LOCK_ISLOCKED);
410         } else if (vconf_get_bool(VCONFKEY_REMOTE_LOCK_ISLOCKED, &s_status_passive.remote_lock_islocked) < 0) {
411                 _E("Failed to get vconfkey[%s]", VCONFKEY_REMOTE_LOCK_ISLOCKED);
412                 s_status_passive.remote_lock_islocked = -1;
413         }
414
415         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_PSMODE, _status_passive_change_cb, NULL) < 0) {
416                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_PSMODE);
417         } else if (vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &s_status_passive.setappl_psmode) < 0) {
418                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_PSMODE);
419                 s_status_passive.setappl_psmode = -1;
420         }
421
422         if (vconf_notify_key_changed(VCONFKEY_STARTER_RESERVED_APPS_STATUS, _status_passive_change_cb, NULL) < 0) {
423                 _E("Failed to register add the callback for %s", VCONFKEY_STARTER_RESERVED_APPS_STATUS);
424         } else if (vconf_get_int(VCONFKEY_STARTER_RESERVED_APPS_STATUS, &s_status_passive.starter_reserved_apps_status) < 0) {
425                 _E("Failed to get vconfkey[%s]", VCONFKEY_STARTER_RESERVED_APPS_STATUS);
426                 s_status_passive.starter_reserved_apps_status = -1;
427         }
428
429         if (vconf_notify_key_changed(VCONFKEY_STARTER_QUICK_LAUNCH_ENABLE, _status_passive_change_cb, NULL) < 0) {
430                 _E("Failed to register add the callback for %s", VCONFKEY_STARTER_QUICK_LAUNCH_ENABLE);
431         } else if (vconf_get_bool(VCONFKEY_STARTER_QUICK_LAUNCH_ENABLE, &s_status_passive.starter_quick_launch_enable) < 0) {
432                 _E("Failed to get vconfkey[%s]", VCONFKEY_STARTER_QUICK_LAUNCH_ENABLE);
433                 s_status_passive.starter_quick_launch_enable = -1;
434         }
435
436         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, _status_passive_change_cb, NULL) < 0) {
437                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
438         } else if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, &s_status_passive.setappl_sound_lock_bool) < 0) {
439                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
440                 s_status_passive.setappl_sound_lock_bool = -1;
441         }
442
443         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, _status_passive_change_cb, NULL) < 0) {
444                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
445         }
446         if (!(s_status_passive.setappl_3rd_lock_pkg_name_str = vconf_get_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR))) {
447                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
448                 s_status_passive.setappl_3rd_lock_pkg_name_str = strdup(STATUS_DEFAULT_LOCK_PKG_NAME);
449                 if (!s_status_passive.setappl_3rd_lock_pkg_name_str) {
450                         _E("Failed to allocate string for 3rd lock %d\n", errno);
451                 }
452         }
453
454         return 0;
455 }
456
457
458
459 void status_unregister(void)
460 {
461         /* Active events */
462         if (vconf_ignore_key_changed(VCONFKEY_PM_STATE, _status_active_change_cb) < 0) {
463                 _E("Failed to unregister the callback for %s", VCONFKEY_PM_STATE);
464         }
465
466         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME, _status_active_change_cb) < 0) {
467                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
468         }
469         free(s_status_active.setappl_selected_package_name);
470
471         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, _status_active_change_cb) < 0) {
472                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT);
473         }
474
475         if (vconf_ignore_key_changed(VCONFKEY_STARTER_SEQUENCE, _status_active_change_cb) < 0) {
476                 _E("Failed to unregister the callback for %s", VCONFKEY_STARTER_SEQUENCE);
477         }
478
479         if (vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, _status_active_change_cb) < 0) {
480                 _E("Failed to unregister the callback for %s", VCONFKEY_SYSMAN_POWER_OFF_STATUS);
481         }
482
483         if (vconf_ignore_key_changed(VCONFKEY_LANGSET, _status_active_change_cb) < 0) {
484                 _E("Failed to unregister the callback for %s", VCONFKEY_LANGSET);
485         }
486         free(s_status_active.langset);
487
488         if (vconf_ignore_key_changed(VCONFKEY_BOOT_ANIMATION_FINISHED, _status_active_change_cb) < 0) {
489                 _E("Failed to unregister the callback for %s", VCONFKEY_BOOT_ANIMATION_FINISHED);
490         }
491
492         /* Passive events */
493 #ifdef TIZEN_PROFILE_WEARABLE
494         if (vconf_ignore_key_changed(VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING, _status_passive_change_cb) < 0) {
495                 _E("Failed to unregister the callback for %s", VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING);
496         }
497
498         if (vconf_ignore_key_changed(VCONFKEY_WMS_CLOCKS_SET_IDLE, _status_passive_change_cb) < 0) {
499                 _E("Failed to unregister the callback for %s", VCONFKEY_WMS_CLOCKS_SET_IDLE);
500         }
501         free(s_status_passive.wms_clocks_set_idle);
502
503         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL, _status_passive_change_cb) < 0) {
504                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL);
505         }
506
507         if (vconf_ignore_key_changed(VCONFKEY_HOMESCREEN_WATCH_FACE_VISIBILITY, _status_passive_change_cb) < 0) {
508                 _E("Failed to unregister the callback for %s", VCONFKEY_HOMESCREEN_WATCH_FACE_VISIBILITY);
509         }
510
511         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY, _status_passive_change_cb) < 0) {
512                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY);
513         }
514 #endif
515
516         if (vconf_ignore_key_changed(VCONFKEY_PM_KEY_IGNORE, _status_passive_change_cb) < 0) {
517                 _E("Failed to unregister the callback for %s", VCONFKEY_PM_KEY_IGNORE);
518         }
519
520         if (vconf_ignore_key_changed(VCONFKEY_CALL_STATE, _status_passive_change_cb) < 0) {
521                 _E("Failed to unregister the callback for %s", VCONFKEY_CALL_STATE);
522         }
523
524         if (vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE, _status_passive_change_cb) < 0) {
525                 _E("Faield to unregister the callback for %s", VCONFKEY_IDLE_LOCK_STATE);
526         }
527
528         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, _status_passive_change_cb) < 0) {
529                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT);
530         }
531
532         if (vconf_ignore_key_changed(VCONFKEY_REMOTE_LOCK_ISLOCKED, _status_passive_change_cb) < 0) {
533                 _E("Failed to unregister the callback for %s", VCONFKEY_REMOTE_LOCK_ISLOCKED);
534         }
535
536         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_PSMODE, _status_passive_change_cb) < 0) {
537                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_PSMODE);
538         }
539
540         if (vconf_ignore_key_changed(VCONFKEY_STARTER_RESERVED_APPS_STATUS, _status_passive_change_cb) < 0) {
541                 _E("Failed to unregister the callback for %s", VCONFKEY_STARTER_RESERVED_APPS_STATUS);
542         }
543
544         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, _status_passive_change_cb) < 0) {
545                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
546         }
547
548         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_USE_PICK_UP, _status_passive_change_cb) < 0) {
549                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_USE_PICK_UP);
550         }
551
552         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, _status_passive_change_cb) < 0) {
553                 _E("Failed to unregister ther callback for %s", VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
554         }
555         free(s_status_passive.setappl_3rd_lock_pkg_name_str);
556 }
557