Code sync up from tizen 2.4
[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 #define VCONFKEY_IDLE_SCREEN_SAFEMODE "memory/idle-screen/safemode"
29
30
31
32 typedef struct cb_info {
33         status_active_cb func;
34         void *data;
35 } cb_info_s;
36
37
38
39 static struct status_active_s s_status_active = {
40         .list = {NULL, },
41         .setappl_selected_package_name = NULL,
42         .setappl_screen_lock_type_int = -1,
43         .langset = NULL,
44         .pm_state = -1,
45         .starter_sequence = -1,
46         .sysman_power_off_status = -1,
47 };
48
49
50
51 static struct status_passive_s s_status_passive = {
52         .wms_wakeup_by_gesture_setting = -1,
53         .setappl_ambient_mode_bool = -1,
54
55         .pm_key_ignore = -1,
56         .call_state = -1,
57         .idle_lock_state = -1,
58         .setappl_password_attempts_left_int = -1,
59         .remote_lock_islocked = -1,
60         .setappl_psmode = -1,
61         .starter_reserved_apps_status = -1,
62         .setappl_sound_lock_bool = -1,
63         .setappl_motion_activation = -1,
64         .setappl_use_pick_up = -1,
65         .idle_screen_safemode = -1,
66         .boot_animation_finished = -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 #if 0
203         } else if (!strcmp(key_name, )) {
204                 s_status_active. = vconf_keynode_get_int(node);
205                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_], l, info) {
206                         continue_if(!info->func);
207                         if (0 == info->func(STATUS_ACTIVE_KEY_, info->data)) break;
208                 }
209 #endif
210         }
211 }
212
213
214
215 static void _status_passive_change_cb(keynode_t* node, void *data)
216 {
217         char *key_name = NULL;
218
219         ret_if(!node);
220
221         key_name = vconf_keynode_get_name(node);
222         ret_if(!key_name);
223
224 #ifdef TIZEN_PROFILE_WEARABLE
225         if (!strcmp(key_name, VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING)) {
226                 s_status_passive.wms_wakeup_by_gesture_setting = vconf_keynode_get_int(node);
227         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL)) {
228                 s_status_passive.setappl_ambient_mode_bool = vconf_keynode_get_int(node);
229         } else
230 #endif
231         if (!strcmp(key_name, VCONFKEY_PM_KEY_IGNORE)) {
232                 s_status_passive.pm_key_ignore = vconf_keynode_get_int(node);
233         } else if (!strcmp(key_name, VCONFKEY_CALL_STATE)) {
234                 s_status_passive.call_state = vconf_keynode_get_int(node);
235         } else if (!strcmp(key_name, VCONFKEY_IDLE_LOCK_STATE)) {
236                 s_status_passive.idle_lock_state = vconf_keynode_get_int(node);
237         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT)) {
238                 s_status_passive.setappl_password_attempts_left_int = vconf_keynode_get_int(node);
239         } else if (!strcmp(key_name, VCONFKEY_REMOTE_LOCK_ISLOCKED)) {
240                 s_status_passive.remote_lock_islocked = vconf_keynode_get_bool(node);
241         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_PSMODE)) {
242                 s_status_passive.setappl_psmode = vconf_keynode_get_int(node);
243         } else if (!strcmp(key_name, VCONFKEY_STARTER_RESERVED_APPS_STATUS)) {
244                 s_status_passive.starter_reserved_apps_status = vconf_keynode_get_int(node);
245         } else if (!strcmp(key_name, VCONFKEY_IDLE_SCREEN_SAFEMODE)) {
246                 s_status_passive.idle_screen_safemode = vconf_keynode_get_int(node);
247         } else if (!strcmp(key_name, VCONFKEY_BOOT_ANIMATION_FINISHED)) {
248                 s_status_passive.boot_animation_finished = vconf_keynode_get_int(node);
249         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR)) {
250                 char *tmp = vconf_keynode_get_str(node);
251                 char *a_tmp;
252
253                 if (tmp) {
254                         a_tmp = strdup(tmp);
255                 } else {
256                         a_tmp = strdup(STATUS_DEFAULT_LOCK_PKG_NAME);
257                 }
258
259                 if (a_tmp) {
260                         free(s_status_passive.setappl_3rd_lock_pkg_name_str);
261                         s_status_passive.setappl_3rd_lock_pkg_name_str = a_tmp;
262                 } else {
263                         if (!s_status_passive.setappl_3rd_lock_pkg_name_str) {
264                                 _E("Package name is NULL, strdup failed");
265                         } else {
266                                 _E("Keep old package. because of strdup\n");
267                         }
268                 }
269
270 #if 0
271         } else if (!strcmp(key_name, )) {
272                 s_status_passive. = vconf_keynode_get_int(node);
273 #endif
274         }
275 }
276
277
278
279 int status_register(void)
280 {
281         _W("Register every events for Starter");
282
283         /* Active events */
284         if (vconf_notify_key_changed(VCONFKEY_PM_STATE, _status_active_change_cb, NULL) < 0) {
285                 _E("Failed to register add the callback for %s", VCONFKEY_PM_STATE);
286         } else if (vconf_get_int(VCONFKEY_PM_STATE, &s_status_active.pm_state) < 0) {
287                 _E("Failed to get vconfkey[%s]", VCONFKEY_PM_STATE);
288                 s_status_active.pm_state = -1;
289         }
290
291         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME, _status_active_change_cb, NULL) < 0) {
292                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
293         }
294         if (!(s_status_active.setappl_selected_package_name = vconf_get_str(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME))) {
295                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
296                 s_status_active.setappl_selected_package_name = strdup(HOMESCREEN_PKG_NAME);
297                 if (!s_status_active.setappl_selected_package_name) {
298                         _E("Failed to duplicate string");
299                 }
300         }
301
302         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, _status_active_change_cb, NULL) < 0) {
303                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT);
304         } else if (vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &s_status_active.setappl_screen_lock_type_int) < 0) {
305                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT);
306                 s_status_active.setappl_screen_lock_type_int = -1;
307         }
308
309         if (vconf_notify_key_changed(VCONFKEY_STARTER_SEQUENCE, _status_active_change_cb, NULL) < 0) {
310                 _E("Failed to register add the callback for %s", VCONFKEY_STARTER_SEQUENCE);
311         } else if (vconf_get_int(VCONFKEY_STARTER_SEQUENCE, &s_status_active.starter_sequence) < 0) {
312                 _E("Failed to get vconfkey[%s]", VCONFKEY_STARTER_SEQUENCE);
313                 s_status_active.starter_sequence = -1;
314         }
315
316         if (vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, _status_active_change_cb, NULL) < 0) {
317                 _E("Failed to register add the callback for %s", VCONFKEY_SYSMAN_POWER_OFF_STATUS);
318         } else if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &s_status_active.sysman_power_off_status ) < 0) {
319                 _E("Failed to get vconfkey[%s]", VCONFKEY_SYSMAN_POWER_OFF_STATUS);
320                 s_status_active.sysman_power_off_status  = -1;
321         }
322
323         if (vconf_notify_key_changed(VCONFKEY_LANGSET, _status_active_change_cb, NULL) < 0) {
324                 _E("Failed to register add the callback for %s", VCONFKEY_LANGSET);
325         } else if (!(s_status_active.langset = vconf_get_str(VCONFKEY_LANGSET))) {
326                 _E("Failed to get vconfkey[%s]", VCONFKEY_LANGSET);
327         }
328
329 #if 0
330         if (vconf_notify_key_changed(, _status_active_change_cb, NULL) < 0) {
331                 _E("Failed to register add the callback for %s", );
332         } else if (vconf_get_int(, &s_status_active.) < 0) {
333                 _E("Failed to get vconfkey[%s]", );
334                 s_status_active. = -1;
335         }
336 #endif
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_SETAPPL_AMBIENT_MODE_BOOL, _status_passive_change_cb, NULL) < 0) {
348                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL);
349         } else if (vconf_get_int(VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL, &s_status_passive.setappl_ambient_mode_bool) < 0) {
350                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL);
351                 s_status_passive.setappl_ambient_mode_bool = -1;
352         }
353
354 #endif
355
356         if (vconf_notify_key_changed(VCONFKEY_PM_KEY_IGNORE, _status_passive_change_cb, NULL) < 0) {
357                 _E("Failed to register add the callback for %s", VCONFKEY_PM_KEY_IGNORE);
358         } else if (vconf_get_int(VCONFKEY_PM_KEY_IGNORE, &s_status_passive.pm_key_ignore) < 0) {
359                 _E("Failed to get vconfkey[%s]", VCONFKEY_PM_KEY_IGNORE);
360                 s_status_passive.pm_key_ignore = -1;
361         }
362
363         if (vconf_notify_key_changed(VCONFKEY_CALL_STATE, _status_passive_change_cb, NULL) < 0) {
364                 _E("Failed to register add the callback for %s", VCONFKEY_CALL_STATE);
365         } else if (vconf_get_int(VCONFKEY_CALL_STATE, &s_status_passive.call_state) < 0) {
366                 _E("Failed to get vconfkey[%s]", VCONFKEY_CALL_STATE);
367                 s_status_passive.call_state = -1;
368         }
369
370         if (vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE, _status_passive_change_cb, NULL) < 0) {
371                 _E("Failed to regsiter add the callback for %s", VCONFKEY_IDLE_LOCK_STATE);
372         } else if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &s_status_passive.idle_lock_state) < 0) {
373                 _E("Failed to get vconfkey[%s]", VCONFKEY_IDLE_LOCK_STATE);
374                 s_status_passive.idle_lock_state = -1;
375         }
376
377         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, _status_passive_change_cb, NULL) < 0) {
378                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT);
379         } else if (vconf_get_int(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, &s_status_passive.setappl_password_attempts_left_int) < 0) {
380                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT);
381                 s_status_passive.setappl_password_attempts_left_int = -1;
382         }
383
384         if (vconf_notify_key_changed(VCONFKEY_REMOTE_LOCK_ISLOCKED, _status_passive_change_cb, NULL) < 0) {
385                 _E("Failed to register add the callback for %s", VCONFKEY_REMOTE_LOCK_ISLOCKED);
386         } else if (vconf_get_bool(VCONFKEY_REMOTE_LOCK_ISLOCKED, &s_status_passive.remote_lock_islocked) < 0) {
387                 _E("Failed to get vconfkey[%s]", VCONFKEY_REMOTE_LOCK_ISLOCKED);
388                 s_status_passive.remote_lock_islocked = -1;
389         }
390
391         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_PSMODE, _status_passive_change_cb, NULL) < 0) {
392                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_PSMODE);
393         } else if (vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &s_status_passive.setappl_psmode) < 0) {
394                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_PSMODE);
395                 s_status_passive.setappl_psmode = -1;
396         }
397
398         if (vconf_notify_key_changed(VCONFKEY_STARTER_RESERVED_APPS_STATUS, _status_passive_change_cb, NULL) < 0) {
399                 _E("Failed to register add the callback for %s", VCONFKEY_STARTER_RESERVED_APPS_STATUS);
400         } else if (vconf_get_int(VCONFKEY_STARTER_RESERVED_APPS_STATUS, &s_status_passive.starter_reserved_apps_status) < 0) {
401                 _E("Failed to get vconfkey[%s]", VCONFKEY_STARTER_RESERVED_APPS_STATUS);
402                 s_status_passive.starter_reserved_apps_status = -1;
403         }
404
405         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, _status_passive_change_cb, NULL) < 0) {
406                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
407         } else if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, &s_status_passive.setappl_sound_lock_bool) < 0) {
408                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
409                 s_status_passive.setappl_sound_lock_bool = -1;
410         }
411
412         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_MOTION_ACTIVATION, _status_passive_change_cb, NULL) < 0) {
413                 _E("Failed to regitster add the callback for %s", VCONFKEY_SETAPPL_MOTION_ACTIVATION);
414         } else if (vconf_get_bool(VCONFKEY_SETAPPL_MOTION_ACTIVATION, &s_status_passive.setappl_motion_activation) < 0) {
415                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_MOTION_ACTIVATION);
416                 s_status_passive.setappl_motion_activation = -1;
417         }
418
419         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_USE_PICK_UP, _status_passive_change_cb, NULL) < 0) {
420                 _E("Failed to regitster add the callback for %s", VCONFKEY_SETAPPL_USE_PICK_UP);
421         } else if (vconf_get_bool(VCONFKEY_SETAPPL_USE_PICK_UP, &s_status_passive.setappl_use_pick_up) < 0) {
422                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_USE_PICK_UP);
423                 s_status_passive.setappl_use_pick_up = -1;
424         }
425
426         if (vconf_notify_key_changed(VCONFKEY_IDLE_SCREEN_SAFEMODE, _status_passive_change_cb, NULL) < 0) {
427                 _E("Failed to register add the callback for %s", VCONFKEY_IDLE_SCREEN_SAFEMODE);
428         } else if (vconf_get_int(VCONFKEY_IDLE_SCREEN_SAFEMODE, &s_status_passive.idle_screen_safemode ) < 0) {
429                 _E("Failed to get vconfkey[%s]", VCONFKEY_IDLE_SCREEN_SAFEMODE);
430                 s_status_passive.idle_screen_safemode  = -1;
431         }
432
433         if (vconf_notify_key_changed(VCONFKEY_BOOT_ANIMATION_FINISHED, _status_passive_change_cb, NULL) < 0) {
434                 _E("Failed to register add the callback for %s", VCONFKEY_BOOT_ANIMATION_FINISHED);
435         } else if (vconf_get_int(VCONFKEY_BOOT_ANIMATION_FINISHED, &s_status_passive.boot_animation_finished) < 0) {
436                 _E("Failed to get vconfkey[%s]", VCONFKEY_BOOT_ANIMATION_FINISHED);
437                 s_status_passive.boot_animation_finished = -1;
438         }
439
440         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, _status_passive_change_cb, NULL) < 0) {
441                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
442         }
443
444         if (!(s_status_passive.setappl_3rd_lock_pkg_name_str = vconf_get_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR))) {
445                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
446                 s_status_passive.setappl_3rd_lock_pkg_name_str = strdup(STATUS_DEFAULT_LOCK_PKG_NAME);
447                 if (!s_status_passive.setappl_3rd_lock_pkg_name_str) {
448                         _E("Failed to allocate string for 3rd lock %d\n", errno);
449                 }
450         }
451
452 #if 0
453         if (vconf_notify_key_changed(, _status_passive_change_cb, NULL) < 0) {
454                 _E("Failed to register add the callback for %s", );
455         } else if (vconf_get_int(, &s_status_passive.) < 0) {
456                 _E("Failed to get vconfkey[%s]", );
457                 s_status_passive. = -1;
458         }
459 #endif
460
461         return 0;
462 }
463
464
465
466 void status_unregister(void)
467 {
468         /* Active events */
469         if (vconf_ignore_key_changed(VCONFKEY_PM_STATE, _status_active_change_cb) < 0) {
470                 _E("Failed to unregister the callback for %s", VCONFKEY_PM_STATE);
471         }
472
473         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME, _status_active_change_cb) < 0) {
474                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
475         }
476         free(s_status_active.setappl_selected_package_name);
477
478         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, _status_active_change_cb) < 0) {
479                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT);
480         }
481
482         if (vconf_ignore_key_changed(VCONFKEY_STARTER_SEQUENCE, _status_active_change_cb) < 0) {
483                 _E("Failed to unregister the callback for %s", VCONFKEY_STARTER_SEQUENCE);
484         }
485
486         if (vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, _status_active_change_cb) < 0) {
487                 _E("Failed to unregister the callback for %s", VCONFKEY_SYSMAN_POWER_OFF_STATUS);
488         }
489
490         if (vconf_ignore_key_changed(VCONFKEY_LANGSET, _status_active_change_cb) < 0) {
491                 _E("Failed to unregister the callback for %s", VCONFKEY_LANGSET);
492         }
493         free(s_status_active.langset);
494
495 #if 0
496         if (vconf_ignore_key_changed(, _status_active_change_cb) < 0) {
497                 _E("Failed to unregister the callback for %s", );
498         }
499 #endif
500
501         /* Passive events */
502 #ifdef TIZEN_PROFILE_WEARABLE
503         if (vconf_ignore_key_changed(VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING, _status_passive_change_cb) < 0) {
504                 _E("Failed to unregister the callback for %s", VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING);
505         }
506
507         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL, _status_passive_change_cb) < 0) {
508                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL);
509         }
510
511 #endif
512
513         if (vconf_ignore_key_changed(VCONFKEY_PM_KEY_IGNORE, _status_passive_change_cb) < 0) {
514                 _E("Failed to unregister the callback for %s", VCONFKEY_PM_KEY_IGNORE);
515         }
516
517         if (vconf_ignore_key_changed(VCONFKEY_CALL_STATE, _status_passive_change_cb) < 0) {
518                 _E("Failed to unregister the callback for %s", VCONFKEY_CALL_STATE);
519         }
520
521         if (vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE, _status_passive_change_cb) < 0) {
522                 _E("Faield to unregister the callback for %s", VCONFKEY_IDLE_LOCK_STATE);
523         }
524
525         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, _status_passive_change_cb) < 0) {
526                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT);
527         }
528
529         if (vconf_ignore_key_changed(VCONFKEY_REMOTE_LOCK_ISLOCKED, _status_passive_change_cb) < 0) {
530                 _E("Failed to unregister the callback for %s", VCONFKEY_REMOTE_LOCK_ISLOCKED);
531         }
532
533         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_PSMODE, _status_passive_change_cb) < 0) {
534                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_PSMODE);
535         }
536
537         if (vconf_ignore_key_changed(VCONFKEY_STARTER_RESERVED_APPS_STATUS, _status_passive_change_cb) < 0) {
538                 _E("Failed to unregister the callback for %s", VCONFKEY_STARTER_RESERVED_APPS_STATUS);
539         }
540
541         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, _status_passive_change_cb) < 0) {
542                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
543         }
544
545         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_MOTION_ACTIVATION, _status_passive_change_cb) < 0) {
546                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_MOTION_ACTIVATION);
547         }
548
549         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_USE_PICK_UP, _status_passive_change_cb) < 0) {
550                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_USE_PICK_UP);
551         }
552
553         if (vconf_ignore_key_changed(VCONFKEY_IDLE_SCREEN_SAFEMODE, _status_passive_change_cb) < 0) {
554                 _E("Failed to unregister the callback for %s", VCONFKEY_IDLE_SCREEN_SAFEMODE);
555         }
556
557         if (vconf_ignore_key_changed(VCONFKEY_BOOT_ANIMATION_FINISHED, _status_passive_change_cb) < 0) {
558                 _E("Failed to unregister the callback for %s", VCONFKEY_BOOT_ANIMATION_FINISHED);
559         }
560
561         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, _status_passive_change_cb) < 0) {
562                 _E("Failed to unregister ther callback for %s", VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
563         }
564         free(s_status_passive.setappl_3rd_lock_pkg_name_str);
565
566 #if 0
567         if (vconf_ignore_key_changed(, _status_passive_change_cb) < 0) {
568                 _E("Failed to unregister the callback for %s", );
569         }
570 #endif
571 }
572