tizen 2.4 release
[apps/home/settings.git] / src / setting-helper.c
1 #include <setting-helper.h>
2
3 bool is_selected_menu(Eina_List *list, const char *keystr)
4 {
5         while (list) {
6                 char *str = eina_list_data_get(list);
7                 if (NULL == str)
8                         continue;
9                 if (0 == safeStrCmp(keystr, str))
10                         return TRUE;
11                 list = eina_list_next(list);
12         }
13         return FALSE;
14 }
15
16 Eina_Bool setting_main_freeze_event_timer_cb(void *cb)
17 {
18         SETTING_TRACE_BEGIN;
19         retv_if(cb == NULL, EINA_FALSE);
20
21         setting_main_appdata *ad = (setting_main_appdata *)cb;
22
23         evas_object_freeze_events_set(ad->navibar_main, EINA_FALSE);
24         ad->event_freeze_timer = NULL;
25         return EINA_FALSE;
26 }
27
28 /**
29  * @brief preset all pointers to NULL
30  *
31  * @bug this code may make dangling pointers,
32  * in setting_vconf_int_xxx callback refer to ad->data_xxxx ptrs.
33  * if it's NULL, what happen?
34  */
35 void setting_main_genlist_handler_reset(void *data)
36 {
37         SETTING_TRACE_BEGIN;
38         retm_if(data == NULL, "Invalid argument: data is NULL");
39         setting_main_appdata *ad = data;
40
41
42         ad->data_network = NULL;
43
44         SETTING_TRACE_END;
45 }
46
47 void setting_main_genlist_handler_set(void *data, int viewtype)
48 {
49         retm_if(data == NULL, "Invalid argument: data is NULL");
50         setting_main_appdata *ad = data;
51
52 }
53
54 bool is_searchmode_app(Cfg_Item_Type type)
55 {
56         bool ret = false;
57
58         switch (type % 10) {
59                 case Cfg_Item_Ug_Node:                          /* ug run */
60                 case Cfg_Item_App_Node:                         /* docomo run */
61                 case Cfg_Item_View_Node:                        /* n-depth search */
62                 case Cfg_Item_AppLauncher_Node:         /* app launch */
63                         ret = true;
64                         break;
65
66                 case Cfg_Item_Ui_Node:
67                 case Cfg_Item_Title_Node:
68                         ret = false;
69                         break;
70
71                 default:
72                         ret = false;
73                         break;
74         }
75         return ret;
76 }
77
78 void setting_main_click_list_item_reset_data(void *data,
79                                              Evas_Object *obj)
80 {
81         /*SETTING_TRACE_BEGIN; */
82         setting_main_appdata *ad = (setting_main_appdata *) data;
83         ad->isInUGMode = FALSE;
84         /*SETTING_TRACE_END; */
85 }
86
87
88 void setting_main_destroy_ug_cb(ui_gadget_h ug, void *priv)
89 {
90         setting_main_appdata *ad = (setting_main_appdata *) priv;
91
92         if (!ad) {
93                 return;         /*  do nothing if ad is NULL */
94         }
95
96         evas_object_show(ad->navibar_main);
97
98         if (ug) {
99                 setting_ug_destroy(ug);
100         }
101
102         SETTING_TRACE("ad->ug:%p", ad->ug);
103         SETTING_TRACE("g_main_ad->isInUGMode:%d", g_main_ad->isInUGMode);
104         SETTING_TRACE("g_main_ad->ug:%p", g_main_ad->ug);
105
106         if (is_searchmode_app(ad->is_searchmode)) {
107                 /*ug_destroy(parent); */
108                 if (ad->ug) {
109                         ug_destroy_me(ad->ug);
110                         ad->ug = NULL;
111                 }
112
113                 /*SETTING_TRACE("terminate app !!!!!! "); */
114                 elm_exit();
115                 return;
116         }
117
118         elm_object_tree_focus_allow_set(ad->ly_main, TRUE);
119         //ea_screen_reader_support_set(ad->ly_main, TRUE);
120
121         setting_main_click_list_item_reset_data(ad, NULL);
122         SETTING_TRACE("update main genlist in unloading UG");
123         SETTING_TRACE("ad->ug:%p", ad->ug);
124         SETTING_TRACE("g_main_ad->isInUGMode:%d", g_main_ad->isInUGMode);
125         SETTING_TRACE("g_main_ad->ug:%p", g_main_ad->ug);
126         SETTING_TRACE_END;
127 }
128
129 void setting_main_result_ug_cb(ui_gadget_h ug, app_control_h service,
130                                void *priv)
131 {
132         if (!priv) {
133                 return;
134         }
135         SETTING_TRACE_BEGIN;
136         setting_main_appdata *ad = (setting_main_appdata *) priv;
137
138         SETTING_TRACE_END;
139 }
140
141 void setting_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
142                                void *priv)
143 {
144         /*setting_main_appdata *ad = (setting_main_appdata *) priv; */
145         Evas_Object *base;
146
147         if (!priv) {
148                 return;
149         }
150         SETTING_TRACE_BEGIN;
151
152         setting_main_appdata *ad = (setting_main_appdata *) priv;
153         evas_object_hide(ad->navibar_main);
154
155         base = (Evas_Object *) ug_get_layout(ug);
156         if (!base) {
157                 return;
158         }
159
160
161         switch (mode) {
162                 case UG_MODE_FULLVIEW:
163                         evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
164                                                          EVAS_HINT_EXPAND);
165                         /*elm_win_resize_object_add(ad->win_main, base); */
166                         evas_object_show(base);
167                         break;
168                 default:
169                         break;
170         }
171
172         /*SETTING_TRACE_END; */
173 }