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