4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
21 #include "setting-storage-utils.h"
22 #include "setting-storage-default.h"
25 STORAGEUG_DEFAULT_STORAGE_PHONE,
26 STORAGEUG_DEFAULT_STORAGE_SD
30 SETTING_DEF_MEMORY_PHONE = 0,
31 SETTING_DEF_MEMORY_MMC,
32 SETTING_DEF_MEMORY_MAX
35 static setting_view setting_view_storage_default;
38 Evas_Object *storageUg_default_notice_get_icon(void *data, Evas_Object *obj,
42 Evas_Coord height, width;
43 SettingStorageUG *ad = data;
44 int offset = SETTING_STORAGE_PIE_RECT_OFFSET * 2;
46 retv_if(NULL == obj, NULL);
47 retv_if(NULL == data, NULL);
48 retvm_if(safeStrCmp(part, "elm.icon"), NULL, "part(%s) Invaild", part);
50 layout = elm_layout_add(obj);
51 elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "default_storage");
52 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
53 elm_object_part_text_set(layout, "application_desp.text",
54 _(STORAGEUG_STR_APP_LOC_NOTICE));
56 /* in landscape mode, the size should be resize */
57 evas_object_geometry_get(obj, NULL, NULL, &width, NULL);
59 app_device_orientation_e m = elm_win_rotation_get(ad->win);
60 if (APP_DEVICE_ORIENTATION_90 == m || APP_DEVICE_ORIENTATION_270 == m)
61 height = SETTING_STORAGE_DEFAULT_STORAGE_APP_DESP_SIZE * 2 / 3;
63 height = SETTING_STORAGE_DEFAULT_STORAGE_APP_DESP_SIZE;
65 setting_resize_object(layout, width - offset, height);
66 evas_object_show(layout);
70 static Eina_Bool storageUg_default_back_cb(void *data, Elm_Object_Item *it)
72 SettingStorageUG *ad = data;
74 retv_if(data == NULL, EINA_FALSE);
76 if (ad->main_view->is_create)
77 setting_view_change(ad->default_view, ad->main_view, ad);
79 ug_destroy_me(ad->ug);
84 static void _storageUg_default_set_value(Elm_Object_Item *parentItem,
85 Setting_GenGroupItem_Data *d_subItem, Setting_GenGroupItem_Data *d_parentItem)
89 setting_set_int_slp_key(d_parentItem->int_slp_setting_binded, d_subItem->chk_status,
91 retm_if(0 != err, "setting_set_int_slp_key(%d) Fail(%d)",
92 d_parentItem->int_slp_setting_binded, err);
94 G_FREE(d_parentItem->sub_desc);
95 d_parentItem->sub_desc = (char *)g_strdup(d_subItem->keyStr);
96 elm_object_item_data_set(d_parentItem->item, d_parentItem);
97 elm_genlist_item_update(d_parentItem->item);
99 SettingStorageUG *ad = d_parentItem->userdata;
100 if (ad && ad->popup) {
101 evas_object_del(ad->popup);
106 static void storageUg_default_expand_item_sel(void *data, Evas_Object *obj,
109 Elm_Object_Item *parentItem;
110 Elm_Object_Item *subitem = event_info;
111 Setting_GenGroupItem_Data *d_subItem;
112 Setting_GenGroupItem_Data *d_parentItem;
114 ret_if(event_info == NULL || data == NULL);
116 elm_genlist_item_selected_set(subitem, 0);
118 /*parentItem = elm_genlist_item_parent_get(subitem); */
121 d_subItem = elm_object_item_data_get(subitem);
122 ret_if(NULL == d_subItem);
124 d_parentItem = (Setting_GenGroupItem_Data *)data; /* parent data */
125 ret_if(NULL == d_parentItem);
127 parentItem = d_parentItem->item;
129 elm_radio_value_set(d_subItem->rgd, d_subItem->chk_status);
131 _storageUg_default_set_value(parentItem, d_subItem, d_parentItem);
134 /*elm_genlist_item_expanded_set(d_parentItem->item, EINA_FALSE); */
138 static void storageUg_default_radio_change(void *data, Evas_Object *obj,
141 Elm_Object_Item *subItem, *parentItem;
142 Setting_GenGroupItem_Data *list_item = data;
143 Setting_GenGroupItem_Data *d_subItem;
144 Setting_GenGroupItem_Data *d_parentItem;
146 ret_if(data == NULL);
148 list_item->chk_status = elm_radio_value_get(obj); /* for update */
150 subItem = list_item->item;
152 d_subItem = elm_object_item_data_get(subItem);
153 ret_if(NULL == d_subItem);
155 if (d_subItem->disableflag)
158 d_parentItem = (Setting_GenGroupItem_Data *)data;
159 ret_if(NULL == d_parentItem);
161 parentItem = d_parentItem->item;
163 _storageUg_default_set_value(parentItem, d_subItem, d_parentItem);
166 static void storageUg_default_reset_vconf(Setting_GenGroupItem_Data *data_item)
171 ret_if(NULL == data_item);
173 if (!safeStrCmp(data_item->sub_desc, STORAGEUG_STR_SD_CARD)) {
175 setting_get_int_slp_key(data_item->int_slp_setting_binded, &value, &err);
176 retm_if(0 != err, "setting_get_int_slp_key(%d) Fail(%d)",
177 data_item->int_slp_setting_binded, err);
178 if (value != STORAGEUG_DEFAULT_STORAGE_PHONE) {
179 setting_set_int_slp_key(data_item->int_slp_setting_binded,
180 STORAGEUG_DEFAULT_STORAGE_PHONE, &err);
181 retm_if(0 != err, "setting_set_int_slp_key(%d) Fail(%d)",
182 data_item->int_slp_setting_binded, err);
185 G_FREE(data_item->sub_desc);
186 data_item->sub_desc = (char *)g_strdup(STORAGEUG_STR_INTERNAL_STORAGE);
187 elm_object_item_data_set(data_item->item, data_item);
188 elm_genlist_item_update(data_item->item);
192 static void storageUg_default_mmc_changed_cb(keynode_t *node, void *data)
195 SettingStorageUG *ad = data;
197 ret_if(NULL == node);
198 ret_if(NULL == data);
200 status = vconf_keynode_get_int(node);
202 SETTING_TRACE("status:%d", status);
203 if (VCONFKEY_SYSMAN_MMC_MOUNTED != status) {
204 storageUg_default_reset_vconf(ad->data_bt);
205 storageUg_default_reset_vconf(ad->data_wifidirect);
206 storageUg_default_reset_vconf(ad->data_nfc);
207 storageUg_default_reset_vconf(ad->data_installapp);
211 static const char *storageUg_default_cur_storage_get(int mmc_status,
212 setting_int_slp_list slp_key)
215 const char *phone = STORAGEUG_STR_INTERNAL_STORAGE;
216 const char *sd = STORAGEUG_STR_SD_CARD;
218 setting_get_int_slp_key(slp_key, &value, &err);
219 warn_if(0 != err, "setting_get_int_slp_key(%d) Fail(%d)", slp_key, err);
221 if (mmc_status != VCONFKEY_SYSMAN_MMC_MOUNTED && STORAGEUG_DEFAULT_STORAGE_SD == value) {
222 setting_set_int_slp_key(slp_key, STORAGEUG_DEFAULT_STORAGE_PHONE, &err);
223 warn_if(0 != err, "setting_set_int_slp_key(%d) Fail(%d)", slp_key, err);
225 value = STORAGEUG_DEFAULT_STORAGE_PHONE;
228 if (STORAGEUG_DEFAULT_STORAGE_SD == value)
233 void __storageUg_default_popup_del(void *data, Evas_Object *obj, void *event_info)
235 SettingStorageUG *ad = data;
237 ret_if(data == NULL);
239 evas_object_del(ad->popup);
243 static void storageUg_default_main_item_sel(void *data, Evas_Object *obj,
247 ret_if(NULL == data || NULL == event_info);
249 SettingStorageUG *ad = (SettingStorageUG *) data;
250 Elm_Object_Item *parentItem = event_info; /* parent item */
251 elm_genlist_item_selected_set(parentItem, 0);
252 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
256 evas_object_del(ad->popup);
260 Evas_Object *scroller = NULL;
261 ad->popup = setting_create_popup_with_list(&scroller, ad, ad->win,
262 data_parentItem->keyStr, NULL, 0, 0);
268 Setting_GenGroupItem_Data *memory_card;
269 Setting_GenGroupItem_Data *phone;
272 if (data_parentItem == ad->data_bt || data_parentItem == ad->data_nfc
273 || data_parentItem == ad->data_wifidirect
274 || data_parentItem == ad->data_installapp) {
275 SETTING_TRACE("POPUP ITEMS IS CREATED");
276 rgd = elm_radio_add(scroller);
277 elm_object_style_set(rgd, "list");
278 evas_object_propagate_events_set(rgd, EINA_TRUE);
279 elm_radio_value_set(rgd, -1);
280 /*phone = setting_create_Gendial_exp_sub_field(scroller, &itc_1icon_1text_sub,
281 storageUg_default_expand_item_sel, ad, parentItem, SWALLOW_Type_1RADIO_RIGHT,
282 rgd, SETTING_DEF_MEMORY_PHONE, STORAGEUG_STR_INTERNAL_STORAGE, NULL);*/
283 phone = setting_create_Gendial_field_1radio(scroller,
284 &itc_multiline_1text_1icon,
285 storageUg_default_expand_item_sel, data_parentItem,
286 SWALLOW_Type_1RADIO_RIGHT, rgd,
287 SETTING_DEF_MEMORY_PHONE,
288 STORAGEUG_STR_INTERNAL_STORAGE,
290 setting_retm_if(NULL == phone, "phone is NULL");
291 setting_genlist_item_groupstyle_set(phone, SETTING_GROUP_STYLE_CENTER);
292 phone->disableflag = EINA_FALSE;
294 /*memory_card = setting_create_Gendial_exp_sub_field(scroller,
295 &itc_1icon_1text_sub, storageUg_default_expand_item_sel, ad,
296 parentItem, SWALLOW_Type_1RADIO_RIGHT, rgd, SETTING_DEF_MEMORY_MMC,
297 STORAGEUG_STR_SD_CARD, storageUg_default_radio_change);*/
298 memory_card = setting_create_Gendial_field_1radio(scroller,
299 &itc_multiline_1text_1icon,
300 storageUg_default_expand_item_sel, data_parentItem,
301 SWALLOW_Type_1RADIO_RIGHT, rgd,
302 SETTING_DEF_MEMORY_MMC,
303 STORAGEUG_STR_SD_CARD,
304 storageUg_default_radio_change);
305 retm_if(NULL == memory_card, "setting_create_Gendial_exp_sub_field() Fail");
306 if (data_parentItem == ad->data_wifidirect
307 || data_parentItem == ad->data_installapp) {
308 setting_genlist_item_groupstyle_set(memory_card, SETTING_GROUP_STYLE_BOTTOM);
310 setting_genlist_item_groupstyle_set(memory_card, SETTING_GROUP_STYLE_CENTER);
313 memory_card->disableflag = EINA_FALSE;
315 if (ad->mmc_status != VCONFKEY_SYSMAN_MMC_MOUNTED) {
316 setting_disable_genlist_item(memory_card->item);
317 memory_card->disableflag = EINA_TRUE;
320 setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
324 static int storageUg_default_create(void *data)
327 SettingStorageUG *ad = data;
328 Evas_Object *genlist = NULL;
329 const char *grp_title, *item_title;
330 const char *cur_storage;
332 retv_if(NULL == data, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
334 if (!ad->main_view->is_create) {
335 ret = vconf_get_int(storageUg_MMC_stat, &ad->mmc_status);
336 retvm_if(ret, SETTING_RETURN_FAIL, "vconf_get_int(%s) Fail", storageUg_MMC_stat);
339 setting_push_layout_navi_bar_genlist(ad->lo_parent, ad->win,
340 STORAGEUG_STR_DEF_STORAGE, STORAGEUG_STR_BACK, NULL,
341 (setting_call_back_func)storageUg_default_back_cb,
342 NULL, ad, &genlist, ad->navi);
343 // elm_genlist_realization_mode_set(genlist, EINA_FALSE);
346 setting_create_Gendial_field_titleItem(genlist, &itc_group_item,
347 STORAGEUG_STR_SHARED_CONTENTS, NULL);
350 cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
351 INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH);
352 ad->data_bt = setting_create_Gendial_field_def(genlist, &(itc_2text), storageUg_default_main_item_sel,
353 ad, SWALLOW_Type_INVALID, NULL,
354 NULL, 0, STORAGEUG_STR_BT, (char *)cur_storage, NULL);
356 ad->data_bt->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH;
357 ad->data_bt->userdata = ad;
359 SETTING_TRACE_ERROR("ad->data_bt is NULL");
364 cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
365 INT_SLP_SETTING_DEFAULT_MEM_NFC);
366 ad->data_nfc = setting_create_Gendial_exp_parent_field(genlist,
367 &itc_2text_3_parent, NULL, NULL, SWALLOW_Type_INVALID,
368 STORAGEUG_STR_NFC, (char *)cur_storage, SETTING_GROUP_STYLE_CENTER,
369 SETTING_GROUP_STYLE_CENTER);
371 ad->data_nfc->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_NFC;
373 SETTING_TRACE_ERROR("ad->data_dload is NULL");
379 cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
380 INT_SLP_SETTING_DEFAULT_MEM_WIFIDIRECT);
381 /*sub_text = setting_customize_text(_(cur_storage), 0, BLUE_SUBTEXT_COLOR, NULL); */
382 /*ad->data_wifidirect= setting_create_Gendial_exp_parent_field(genlist,
383 &itc_2text_3_parent, NULL, NULL, SWALLOW_Type_INVALID,
384 STORAGEUG_STR_WIFI, sub_text, SETTING_GROUP_STYLE_CENTER,
385 SETTING_GROUP_STYLE_BOTTOM);*/
386 ad->data_wifidirect = setting_create_Gendial_field_def(genlist, &(itc_2text), storageUg_default_main_item_sel,
387 ad, SWALLOW_Type_INVALID, NULL,
388 NULL, 0, STORAGEUG_STR_WIFI, (char *)cur_storage, NULL);
389 if (ad->data_wifidirect) {
390 ad->data_wifidirect->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_WIFIDIRECT;
391 ad->data_wifidirect->userdata = ad;
393 SETTING_TRACE_ERROR("ad->data_wifidirect is NULL");
396 /*Install application */
397 grp_title = STORAGEUG_STR_INSTALLED_APP_H;
398 item_title = STORAGEUG_STR_INSTALLED_APP_B;
400 setting_create_Gendial_field_titleItem(genlist, &itc_group_item, grp_title,
403 cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
404 INT_SLP_SETTING_DEFAULT_MEM_INSTALLAPPLICATIONS);
405 ad->data_installapp = setting_create_Gendial_field_def(genlist, &(itc_2text), storageUg_default_main_item_sel,
406 ad, SWALLOW_Type_INVALID, NULL,
407 NULL, 0, item_title, (char *)cur_storage, NULL);
408 if (ad->data_installapp) {
409 ad->data_installapp->int_slp_setting_binded =
410 INT_SLP_SETTING_DEFAULT_MEM_INSTALLAPPLICATIONS;
411 ad->data_installapp->userdata = ad;
413 SETTING_TRACE_ERROR("ad->data_installapp is NULL");
416 ADD_GL_HELP(genlist, STORAGEUG_STR_APP_LOC_NOTICE);
418 ret = vconf_notify_key_changed(storageUg_MMC_stat, storageUg_default_mmc_changed_cb,
421 SETTING_TRACE_ERROR("vconf_notify_key_changed(%s) Fail(%d)", storageUg_MMC_stat,
425 setting_view_storage_default.is_create = 1;
427 return SETTING_RETURN_SUCCESS;
430 static int storageUg_default_destroy(void *data)
434 ret = vconf_ignore_key_changed(storageUg_MMC_stat, storageUg_default_mmc_changed_cb);
435 warn_if(ret, "vconf_ignore_key_changed(%s) Fail(%d)", storageUg_MMC_stat, ret);
437 setting_view_storage_default.is_create = 0;
439 return SETTING_RETURN_SUCCESS;
441 static int storageUg_default_update(void *data)
443 return SETTING_RETURN_SUCCESS;
445 static int storageUg_default_cleanup(void *data)
447 return storageUg_default_destroy(data);
451 void storageUg_default_init(SettingStorageUG *ad)
454 ret_if(ad->default_view);
456 setting_view_storage_default.create = storageUg_default_create;
457 setting_view_storage_default.destroy = storageUg_default_destroy;
458 setting_view_storage_default.update = storageUg_default_update;
459 setting_view_storage_default.cleanup = storageUg_default_cleanup;
461 ad->default_view = &setting_view_storage_default;