Tizen 2.0 Release
[apps/home/settings.git] / setting-memory / src / setting-memory-main.c
1 /*
2  * setting
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Flora License, Version 1.0 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://floralicense.org/license/
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an AS IS BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 #include <setting-memory-main.h>
18 #define VCONFKEY_MEMORY_STATUS "memory/msg/ready"
19
20 static int setting_memory_main_create(void *cb);
21 static int setting_memory_main_destroy(void *cb);
22 static int setting_memory_main_update(void *cb);
23 static int setting_memory_main_cleanup(void *cb);
24
25 setting_view setting_view_memory_main = {
26         .create = setting_memory_main_create,
27         .destroy = setting_memory_main_destroy,
28         .update = setting_memory_main_update,
29         .cleanup = setting_memory_main_cleanup,
30 };
31
32 static void setting_memory_main_mouse_up_Gendial_list_cb(void *data,
33                                                          Evas_Object *obj,
34                                                          void *event_info);
35 static void setting_memory_main_click_softkey_back(void *data,
36                                                    Evas_Object *obj,
37                                                    void *event_info);
38 static void setting_memory_main_memory_status_change_cb(keynode_t *key,
39                                                         void *data);
40
41 /*******************************************
42  *
43  *      basic function
44  *
45  ******************************************/
46
47 static int setting_memory_main_create(void *cb)
48 {
49         SETTING_TRACE_BEGIN;
50         SettingMemoryUG *ad = (SettingMemoryUG *) cb;
51
52         Evas_Object *scroller;
53         /* int mmc_mode; */
54         ad->ly_main =
55             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
56                                                    ad->win_get,
57                                                    _("IDS_ST_BODY_MEMORY"),
58                                                    S_("IDS_COM_BODY_BACK"),
59                                                    NULL,
60                                                    setting_memory_main_click_softkey_back,
61                                                    NULL, ad, &scroller,
62                                                    &(ad->navi_bar));
63         retvm_if(ad->ly_main == NULL, -1, "Can't create main layout");
64
65         Elm_Object_Item *item = NULL;;
66         item =
67             elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
68                                     ELM_GENLIST_ITEM_NONE, NULL, NULL);
69         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
70
71         // [UI] Default Memory
72         setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
73                                          setting_memory_main_mouse_up_Gendial_list_cb,
74                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
75                                          0,
76                                          "IDS_ST_BODY_MEMORYSETTINGS_DEFAULT_MEMORY",
77                                          NULL, NULL);
78
79         // [UI] Memory Status
80         setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
81                                          setting_memory_main_mouse_up_Gendial_list_cb,
82                                          ad, SWALLOW_Type_INVALID, NULL, NULL,
83                                          0, "IDS_ST_BODY_MEMORY_STATUS", NULL,
84                                          NULL);
85         setting_view_memory_main.is_create = 1;
86         return SETTING_RETURN_SUCCESS;
87 }
88
89 static int setting_memory_main_destroy(void *cb)
90 {
91         SETTING_TRACE_BEGIN;
92         setting_view_memory_main.is_create = 0;
93
94         SettingMemoryUG *ad = (SettingMemoryUG *) cb;
95         vconf_ignore_key_changed(VCONFKEY_MEMORY_STATUS,
96                                  setting_memory_main_memory_status_change_cb);
97         evas_object_del(ad->ly_main);
98
99         return 0;
100 }
101
102 static int setting_memory_main_update(void *cb)
103 {
104         SETTING_TRACE_BEGIN;
105         SettingMemoryUG *ad = (SettingMemoryUG *) cb;
106         evas_object_show(ad->ly_main);
107
108         return 0;
109 }
110
111 static int setting_memory_main_cleanup(void *cb)
112 {
113         SETTING_TRACE_BEGIN;
114         /* SettingMemoryUG *ad = (SettingMemoryUG *)cb; */
115         /* evas_object_hide(ad->ly_main); */
116
117         return 0;
118 }
119
120 /*********************************************
121  *
122  *      callback function
123  *
124  *********************************************/
125 static void
126 setting_memory_main_memory_status_change_cb(keynode_t *key, void *data)
127 {
128         SETTING_TRACE_BEGIN;
129         SettingMemoryUG *ad = data;
130         int status = vconf_keynode_get_bool(key);
131         /* char *vconf_name = vconf_keynode_get_name(key); */
132
133         if (1 == status) {
134                 if (ad->msg_intial_popup != NULL) {
135                         evas_object_del(ad->msg_intial_popup);
136                         ad->msg_intial_popup = NULL;
137                 }
138                 vconf_ignore_key_changed(VCONFKEY_MEMORY_STATUS,
139                                          setting_memory_main_memory_status_change_cb);
140                 setting_view_change(&setting_view_memory_main,
141                                     &setting_view_memory_status, ad);
142         }
143 }
144
145 static void
146 setting_memory_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
147                                              void *event_info)
148 {
149         /* error check */
150         setting_retm_if(data == NULL, "Data parameter is NULL");
151
152         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
153         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
154         elm_genlist_item_selected_set(item, 0);
155         Setting_GenGroupItem_Data *list_item =
156             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
157
158         SettingMemoryUG *ad = (SettingMemoryUG *) data;
159
160         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
161
162         if (!safeStrCmp
163                 ("IDS_ST_BODY_MEMORYSETTINGS_DEFAULT_MEMORY",
164                  list_item->keyStr)) {
165                 setting_view_change(&setting_view_memory_main,
166                                     &setting_view_memory_default_memory, ad);
167         } else if (!safeStrCmp("IDS_ST_BODY_MEMORY_STATUS", list_item->keyStr)) {
168                 /* check if msg server is ready */
169                 int val = 0;    /* intial value is 0(not ready) */
170                 vconf_get_bool(VCONFKEY_MEMORY_STATUS, &val);
171
172                 if (1 != val) { /* not ready */
173                         int ret;
174                         ret =
175                             vconf_notify_key_changed(VCONFKEY_MEMORY_STATUS,
176                                                      setting_memory_main_memory_status_change_cb,
177                                                      ad);
178                         setting_retm_if(ret < 0, "%s notifications Failed(%d)",
179                                         VCONFKEY_MEMORY_STATUS, ret);
180
181                         ad->msg_intial_popup =
182                             setting_create_popup_without_btn(ad, ad->win_get,
183                                                  NULL, _(SETTING_MEMORY_MSG_SERVER_POPUP_INFO_MSG),
184                                                  NULL, 0, TRUE, TRUE);
185                 } else {        /* ready */
186
187                         setting_view_change(&setting_view_memory_main,
188                                             &setting_view_memory_status, ad);
189                 }
190         } else
191                 SETTING_TRACE("Invalid selection");
192
193 }
194
195 static void
196 setting_memory_main_click_softkey_back(void *data, Evas_Object *obj,
197                                        void *event_info)
198 {
199         SETTING_TRACE_BEGIN;
200         /* error check */
201         retm_if(data == NULL, "data == NULL");
202
203         SettingMemoryUG *ad = (SettingMemoryUG *) data;
204
205         /* Send destroy request */
206         ug_destroy_me(ad->ug);
207
208 }