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