[Wearable] Implement double key press operation
[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         .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_double_press_home_key = -1,
64
65         .setappl_3rd_lock_pkg_name_str = NULL,
66 };
67
68
69
70 status_active_h status_active_get(void)
71 {
72         return &s_status_active;
73 }
74
75
76
77 status_passive_h status_passive_get(void)
78 {
79         return &s_status_passive;
80 }
81
82
83
84 int status_active_register_cb(status_active_key_e key, status_active_cb func, void *data)
85 {
86         cb_info_s *info = NULL;
87
88         retv_if(key <= STATUS_ACTIVE_KEY_INVALID, -1);
89         retv_if(key >= STATUS_ACTIVE_KEY_MAX, -1);
90         retv_if(!func, -1);
91
92         info = calloc(1, sizeof(cb_info_s));
93         retv_if(!info, -1);
94
95         info->func = func;
96         info->data = data;
97
98         s_status_active.list[key] = eina_list_append(s_status_active.list[key], info);
99
100         return 0;
101 }
102
103
104
105 int status_active_unregister_cb(status_active_key_e key, status_active_cb func)
106 {
107         const Eina_List *l = NULL;
108         const Eina_List *ln = NULL;
109         cb_info_s *info = NULL;
110
111         retv_if(key <= STATUS_ACTIVE_KEY_INVALID, -1);
112         retv_if(key >= STATUS_ACTIVE_KEY_MAX, -1);
113         retv_if(!func, -1);
114
115         EINA_LIST_FOREACH_SAFE(s_status_active.list[key], l, ln, info) {
116                 if (func == info->func) {
117                         s_status_active.list[key] = eina_list_remove(s_status_active.list[key], info);
118                         free(info);
119                         return 0;
120                 }
121         }
122
123         _W("We cannot unregister the func. Because the list doesn't have it.");
124
125         return 0;
126 }
127
128
129
130 static void _status_active_change_cb(keynode_t* node, void *data)
131 {
132         const char *key_name = NULL;
133         const Eina_List *l = NULL;
134         cb_info_s *info = NULL;
135
136         ret_if(!node);
137
138         key_name = vconf_keynode_get_name(node);
139         ret_if(!key_name);
140
141         if (!strcmp(key_name, VCONFKEY_PM_STATE)) {
142                 s_status_active.pm_state = vconf_keynode_get_int(node);
143                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_PM_STATE], l, info) {
144                         continue_if(!info->func);
145                         if (0 == info->func(STATUS_ACTIVE_KEY_PM_STATE, info->data)) break;
146                 }
147         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME)) {
148                 char *tmp = vconf_keynode_get_str(node);
149                 char *a_tmp;
150
151                 if (tmp) {
152                         a_tmp = strdup(tmp);
153                 } else {
154                         a_tmp = strdup(HOMESCREEN_PKG_NAME);
155                 }
156
157                 if (a_tmp) {
158                         free(s_status_active.setappl_selected_package_name);
159                         s_status_active.setappl_selected_package_name = a_tmp;
160                 } else {
161                         if (!s_status_active.setappl_selected_package_name) {
162                                 _E("Package name is NULL, strdup failed");
163                         } else {
164                                 _E("Keep old package. because of strdup\n");
165                         }
166                 }
167
168                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_SETAPPL_SELECTED_PACKAGE_NAME], l, info) {
169                         continue_if(!info->func);
170                         if (0 == info->func(STATUS_ACTIVE_KEY_SETAPPL_SELECTED_PACKAGE_NAME, info->data)) break;
171                 }
172         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT)) {
173                 s_status_active.setappl_screen_lock_type_int = vconf_keynode_get_int(node);
174                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_SETAPPL_SCREEN_LOCK_TYPE_INT], l, info) {
175                         continue_if(!info->func);
176                         if (0 == info->func(STATUS_ACTIVE_KEY_SETAPPL_SCREEN_LOCK_TYPE_INT, info->data)) break;
177                 }
178         } else if (!strcmp(key_name, VCONFKEY_STARTER_SEQUENCE)) {
179                 s_status_active.starter_sequence = vconf_keynode_get_int(node);
180                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_STARTER_SEQUENCE], l, info) {
181                         continue_if(!info->func);
182                         if (0 == info->func(STATUS_ACTIVE_KEY_STARTER_SEQUENCE, info->data)) break;
183                 }
184         } else if (!strcmp(key_name, VCONFKEY_SYSMAN_POWER_OFF_STATUS)) {
185                 s_status_active.sysman_power_off_status = vconf_keynode_get_int(node);
186                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_SYSMAN_POWER_OFF_STATUS], l, info) {
187                         continue_if(!info->func);
188                         if (0 == info->func(STATUS_ACTIVE_KEY_SYSMAN_POWER_OFF_STATUS, info->data)) break;
189                 }
190         } else if (!strcmp(key_name, VCONFKEY_LANGSET)) {
191                 char *tmp = vconf_keynode_get_str(node);
192                 free(s_status_active.langset);
193                 if (tmp) s_status_active.langset = strdup(tmp);
194                 else s_status_active.langset = NULL;
195                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_LANGSET], l, info) {
196                         continue_if(!info->func);
197                         if (0 == info->func(STATUS_ACTIVE_KEY_LANGSET, info->data)) break;
198                 }
199         } else if (!strcmp(key_name, VCONFKEY_BOOT_ANIMATION_FINISHED)) {
200                 s_status_active.boot_animation_finished = vconf_keynode_get_int(node);
201                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_BOOT_ANIMATION_FINISHED], l, info) {
202                         continue_if(!info->func);
203                         if (0 == info->func(STATUS_ACTIVE_KEY_BOOT_ANIMATION_FINISHED, info->data)) break;
204                 }
205 #if 0
206         } else if (!strcmp(key_name, )) {
207                 s_status_active. = vconf_keynode_get_int(node);
208                 EINA_LIST_FOREACH(s_status_active.list[STATUS_ACTIVE_KEY_], l, info) {
209                         continue_if(!info->func);
210                         if (0 == info->func(STATUS_ACTIVE_KEY_, info->data)) break;
211                 }
212 #endif
213         }
214 }
215
216
217
218 static void _status_passive_change_cb(keynode_t* node, void *data)
219 {
220         char *key_name = NULL;
221
222         ret_if(!node);
223
224         key_name = vconf_keynode_get_name(node);
225         ret_if(!key_name);
226
227 #ifdef TIZEN_PROFILE_WEARABLE
228         if (!strcmp(key_name, VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING)) {
229                 s_status_passive.wms_wakeup_by_gesture_setting = vconf_keynode_get_int(node);
230         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL)) {
231                 s_status_passive.setappl_ambient_mode_bool = vconf_keynode_get_int(node);
232         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY)) {
233                 s_status_passive.setappl_double_press_home_key = vconf_keynode_get_int(node);
234         } else
235 #endif
236         if (!strcmp(key_name, VCONFKEY_PM_KEY_IGNORE)) {
237                 s_status_passive.pm_key_ignore = vconf_keynode_get_int(node);
238         } else if (!strcmp(key_name, VCONFKEY_CALL_STATE)) {
239                 s_status_passive.call_state = vconf_keynode_get_int(node);
240         } else if (!strcmp(key_name, VCONFKEY_IDLE_LOCK_STATE)) {
241                 s_status_passive.idle_lock_state = vconf_keynode_get_int(node);
242         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT)) {
243                 s_status_passive.setappl_password_attempts_left_int = vconf_keynode_get_int(node);
244         } else if (!strcmp(key_name, VCONFKEY_REMOTE_LOCK_ISLOCKED)) {
245                 s_status_passive.remote_lock_islocked = vconf_keynode_get_bool(node);
246         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_PSMODE)) {
247                 s_status_passive.setappl_psmode = vconf_keynode_get_int(node);
248         } else if (!strcmp(key_name, VCONFKEY_STARTER_RESERVED_APPS_STATUS)) {
249                 s_status_passive.starter_reserved_apps_status = vconf_keynode_get_int(node);
250         } else if (!strcmp(key_name, VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR)) {
251                 char *tmp = vconf_keynode_get_str(node);
252                 char *a_tmp;
253
254                 if (tmp) {
255                         a_tmp = strdup(tmp);
256                 } else {
257                         a_tmp = strdup(STATUS_DEFAULT_LOCK_PKG_NAME);
258                 }
259
260                 if (a_tmp) {
261                         free(s_status_passive.setappl_3rd_lock_pkg_name_str);
262                         s_status_passive.setappl_3rd_lock_pkg_name_str = a_tmp;
263                 } else {
264                         if (!s_status_passive.setappl_3rd_lock_pkg_name_str) {
265                                 _E("Package name is NULL, strdup failed");
266                         } else {
267                                 _E("Keep old package. because of strdup\n");
268                         }
269                 }
270
271 #if 0
272         } else if (!strcmp(key_name, )) {
273                 s_status_passive. = vconf_keynode_get_int(node);
274 #endif
275         }
276 }
277
278
279
280 int status_register(void)
281 {
282         _W("Register every events for Starter");
283
284         /* Active events */
285         if (vconf_notify_key_changed(VCONFKEY_PM_STATE, _status_active_change_cb, NULL) < 0) {
286                 _E("Failed to register add the callback for %s", VCONFKEY_PM_STATE);
287         } else if (vconf_get_int(VCONFKEY_PM_STATE, &s_status_active.pm_state) < 0) {
288                 _E("Failed to get vconfkey[%s]", VCONFKEY_PM_STATE);
289                 s_status_active.pm_state = -1;
290         }
291
292         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME, _status_active_change_cb, NULL) < 0) {
293                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
294         }
295         if (!(s_status_active.setappl_selected_package_name = vconf_get_str(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME))) {
296                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
297                 s_status_active.setappl_selected_package_name = strdup(HOMESCREEN_PKG_NAME);
298                 if (!s_status_active.setappl_selected_package_name) {
299                         _E("Failed to duplicate string");
300                 }
301         }
302
303         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, _status_active_change_cb, NULL) < 0) {
304                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT);
305         } else if (vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &s_status_active.setappl_screen_lock_type_int) < 0) {
306                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT);
307                 s_status_active.setappl_screen_lock_type_int = -1;
308         }
309
310         if (vconf_notify_key_changed(VCONFKEY_STARTER_SEQUENCE, _status_active_change_cb, NULL) < 0) {
311                 _E("Failed to register add the callback for %s", VCONFKEY_STARTER_SEQUENCE);
312         } else if (vconf_get_int(VCONFKEY_STARTER_SEQUENCE, &s_status_active.starter_sequence) < 0) {
313                 _E("Failed to get vconfkey[%s]", VCONFKEY_STARTER_SEQUENCE);
314                 s_status_active.starter_sequence = -1;
315         }
316
317         if (vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, _status_active_change_cb, NULL) < 0) {
318                 _E("Failed to register add the callback for %s", VCONFKEY_SYSMAN_POWER_OFF_STATUS);
319         } else if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &s_status_active.sysman_power_off_status ) < 0) {
320                 _E("Failed to get vconfkey[%s]", VCONFKEY_SYSMAN_POWER_OFF_STATUS);
321                 s_status_active.sysman_power_off_status  = -1;
322         }
323
324         if (vconf_notify_key_changed(VCONFKEY_LANGSET, _status_active_change_cb, NULL) < 0) {
325                 _E("Failed to register add the callback for %s", VCONFKEY_LANGSET);
326         } else if (!(s_status_active.langset = vconf_get_str(VCONFKEY_LANGSET))) {
327                 _E("Failed to get vconfkey[%s]", VCONFKEY_LANGSET);
328         }
329
330         if (vconf_notify_key_changed(VCONFKEY_BOOT_ANIMATION_FINISHED, _status_active_change_cb, NULL) < 0) {
331                 _E("Failed to register add the callback for %s", VCONFKEY_BOOT_ANIMATION_FINISHED);
332         } else if (vconf_get_int(VCONFKEY_BOOT_ANIMATION_FINISHED, &s_status_active.boot_animation_finished) < 0) {
333                 _E("Failed to get vconfkey[%s]", VCONFKEY_BOOT_ANIMATION_FINISHED);
334                 s_status_active.boot_animation_finished = -1;
335         }
336
337 #if 0
338         if (vconf_notify_key_changed(, _status_active_change_cb, NULL) < 0) {
339                 _E("Failed to register add the callback for %s", );
340         } else if (vconf_get_int(, &s_status_active.) < 0) {
341                 _E("Failed to get vconfkey[%s]", );
342                 s_status_active. = -1;
343         }
344 #endif
345
346         /* Passive events */
347 #ifdef TIZEN_PROFILE_WEARABLE
348         if (vconf_notify_key_changed(VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING, _status_passive_change_cb, NULL) < 0) {
349                 _E("Failed to register add the callback for %s", VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING);
350         } else if (vconf_get_int(VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING, &s_status_passive.wms_wakeup_by_gesture_setting) < 0) {
351                 _E("Failed to get vconfkey[%s]", VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING);
352                 s_status_passive.wms_wakeup_by_gesture_setting = -1;
353         }
354
355         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL, _status_passive_change_cb, NULL) < 0) {
356                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL);
357         } else if (vconf_get_int(VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL, &s_status_passive.setappl_ambient_mode_bool) < 0) {
358                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL);
359                 s_status_passive.setappl_ambient_mode_bool = -1;
360         }
361
362         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY, _status_passive_change_cb, NULL) < 0) {
363                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY);
364         } else if (vconf_get_int(VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY, &s_status_passive.setappl_double_press_home_key) < 0) {
365                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY);
366                 s_status_passive.setappl_double_press_home_key = -1;
367         }
368
369 #endif
370
371         if (vconf_notify_key_changed(VCONFKEY_PM_KEY_IGNORE, _status_passive_change_cb, NULL) < 0) {
372                 _E("Failed to register add the callback for %s", VCONFKEY_PM_KEY_IGNORE);
373         } else if (vconf_get_int(VCONFKEY_PM_KEY_IGNORE, &s_status_passive.pm_key_ignore) < 0) {
374                 _E("Failed to get vconfkey[%s]", VCONFKEY_PM_KEY_IGNORE);
375                 s_status_passive.pm_key_ignore = -1;
376         }
377
378         if (vconf_notify_key_changed(VCONFKEY_CALL_STATE, _status_passive_change_cb, NULL) < 0) {
379                 _E("Failed to register add the callback for %s", VCONFKEY_CALL_STATE);
380         } else if (vconf_get_int(VCONFKEY_CALL_STATE, &s_status_passive.call_state) < 0) {
381                 _E("Failed to get vconfkey[%s]", VCONFKEY_CALL_STATE);
382                 s_status_passive.call_state = -1;
383         }
384
385         if (vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE, _status_passive_change_cb, NULL) < 0) {
386                 _E("Failed to regsiter add the callback for %s", VCONFKEY_IDLE_LOCK_STATE);
387         } else if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &s_status_passive.idle_lock_state) < 0) {
388                 _E("Failed to get vconfkey[%s]", VCONFKEY_IDLE_LOCK_STATE);
389                 s_status_passive.idle_lock_state = -1;
390         }
391
392         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, _status_passive_change_cb, NULL) < 0) {
393                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT);
394         } else if (vconf_get_int(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, &s_status_passive.setappl_password_attempts_left_int) < 0) {
395                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT);
396                 s_status_passive.setappl_password_attempts_left_int = -1;
397         }
398
399         if (vconf_notify_key_changed(VCONFKEY_REMOTE_LOCK_ISLOCKED, _status_passive_change_cb, NULL) < 0) {
400                 _E("Failed to register add the callback for %s", VCONFKEY_REMOTE_LOCK_ISLOCKED);
401         } else if (vconf_get_bool(VCONFKEY_REMOTE_LOCK_ISLOCKED, &s_status_passive.remote_lock_islocked) < 0) {
402                 _E("Failed to get vconfkey[%s]", VCONFKEY_REMOTE_LOCK_ISLOCKED);
403                 s_status_passive.remote_lock_islocked = -1;
404         }
405
406         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_PSMODE, _status_passive_change_cb, NULL) < 0) {
407                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_PSMODE);
408         } else if (vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &s_status_passive.setappl_psmode) < 0) {
409                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_PSMODE);
410                 s_status_passive.setappl_psmode = -1;
411         }
412
413         if (vconf_notify_key_changed(VCONFKEY_STARTER_RESERVED_APPS_STATUS, _status_passive_change_cb, NULL) < 0) {
414                 _E("Failed to register add the callback for %s", VCONFKEY_STARTER_RESERVED_APPS_STATUS);
415         } else if (vconf_get_int(VCONFKEY_STARTER_RESERVED_APPS_STATUS, &s_status_passive.starter_reserved_apps_status) < 0) {
416                 _E("Failed to get vconfkey[%s]", VCONFKEY_STARTER_RESERVED_APPS_STATUS);
417                 s_status_passive.starter_reserved_apps_status = -1;
418         }
419
420         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, _status_passive_change_cb, NULL) < 0) {
421                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
422         } else if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, &s_status_passive.setappl_sound_lock_bool) < 0) {
423                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
424                 s_status_passive.setappl_sound_lock_bool = -1;
425         }
426
427         if (vconf_notify_key_changed(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, _status_passive_change_cb, NULL) < 0) {
428                 _E("Failed to register add the callback for %s", VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
429         }
430
431         if (!(s_status_passive.setappl_3rd_lock_pkg_name_str = vconf_get_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR))) {
432                 _E("Failed to get vconfkey[%s]", VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
433                 s_status_passive.setappl_3rd_lock_pkg_name_str = strdup(STATUS_DEFAULT_LOCK_PKG_NAME);
434                 if (!s_status_passive.setappl_3rd_lock_pkg_name_str) {
435                         _E("Failed to allocate string for 3rd lock %d\n", errno);
436                 }
437         }
438
439 #if 0
440         if (vconf_notify_key_changed(, _status_passive_change_cb, NULL) < 0) {
441                 _E("Failed to register add the callback for %s", );
442         } else if (vconf_get_int(, &s_status_passive.) < 0) {
443                 _E("Failed to get vconfkey[%s]", );
444                 s_status_passive. = -1;
445         }
446 #endif
447
448         return 0;
449 }
450
451
452
453 void status_unregister(void)
454 {
455         /* Active events */
456         if (vconf_ignore_key_changed(VCONFKEY_PM_STATE, _status_active_change_cb) < 0) {
457                 _E("Failed to unregister the callback for %s", VCONFKEY_PM_STATE);
458         }
459
460         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME, _status_active_change_cb) < 0) {
461                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
462         }
463         free(s_status_active.setappl_selected_package_name);
464
465         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, _status_active_change_cb) < 0) {
466                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT);
467         }
468
469         if (vconf_ignore_key_changed(VCONFKEY_STARTER_SEQUENCE, _status_active_change_cb) < 0) {
470                 _E("Failed to unregister the callback for %s", VCONFKEY_STARTER_SEQUENCE);
471         }
472
473         if (vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, _status_active_change_cb) < 0) {
474                 _E("Failed to unregister the callback for %s", VCONFKEY_SYSMAN_POWER_OFF_STATUS);
475         }
476
477         if (vconf_ignore_key_changed(VCONFKEY_LANGSET, _status_active_change_cb) < 0) {
478                 _E("Failed to unregister the callback for %s", VCONFKEY_LANGSET);
479         }
480         free(s_status_active.langset);
481
482         if (vconf_ignore_key_changed(VCONFKEY_BOOT_ANIMATION_FINISHED, _status_active_change_cb) < 0) {
483                 _E("Failed to unregister the callback for %s", VCONFKEY_BOOT_ANIMATION_FINISHED);
484         }
485
486 #if 0
487         if (vconf_ignore_key_changed(, _status_active_change_cb) < 0) {
488                 _E("Failed to unregister the callback for %s", );
489         }
490 #endif
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_SETAPPL_AMBIENT_MODE_BOOL, _status_passive_change_cb) < 0) {
499                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL);
500         }
501
502         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY, _status_passive_change_cb) < 0) {
503                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_DOUBLE_PRESS_HOME_KEY);
504         }
505 #endif
506
507         if (vconf_ignore_key_changed(VCONFKEY_PM_KEY_IGNORE, _status_passive_change_cb) < 0) {
508                 _E("Failed to unregister the callback for %s", VCONFKEY_PM_KEY_IGNORE);
509         }
510
511         if (vconf_ignore_key_changed(VCONFKEY_CALL_STATE, _status_passive_change_cb) < 0) {
512                 _E("Failed to unregister the callback for %s", VCONFKEY_CALL_STATE);
513         }
514
515         if (vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE, _status_passive_change_cb) < 0) {
516                 _E("Faield to unregister the callback for %s", VCONFKEY_IDLE_LOCK_STATE);
517         }
518
519         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT, _status_passive_change_cb) < 0) {
520                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_PASSWORD_ATTEMPTS_LEFT_INT);
521         }
522
523         if (vconf_ignore_key_changed(VCONFKEY_REMOTE_LOCK_ISLOCKED, _status_passive_change_cb) < 0) {
524                 _E("Failed to unregister the callback for %s", VCONFKEY_REMOTE_LOCK_ISLOCKED);
525         }
526
527         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_PSMODE, _status_passive_change_cb) < 0) {
528                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_PSMODE);
529         }
530
531         if (vconf_ignore_key_changed(VCONFKEY_STARTER_RESERVED_APPS_STATUS, _status_passive_change_cb) < 0) {
532                 _E("Failed to unregister the callback for %s", VCONFKEY_STARTER_RESERVED_APPS_STATUS);
533         }
534
535         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, _status_passive_change_cb) < 0) {
536                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
537         }
538
539         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_USE_PICK_UP, _status_passive_change_cb) < 0) {
540                 _E("Failed to unregister the callback for %s", VCONFKEY_SETAPPL_USE_PICK_UP);
541         }
542
543         if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, _status_passive_change_cb) < 0) {
544                 _E("Failed to unregister ther callback for %s", VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
545         }
546         free(s_status_passive.setappl_3rd_lock_pkg_name_str);
547
548 #if 0
549         if (vconf_ignore_key_changed(, _status_passive_change_cb) < 0) {
550                 _E("Failed to unregister the callback for %s", );
551         }
552 #endif
553 }
554