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
29 static setting_view setting_view_storage_default;
32 Evas_Object *storageUg_default_notice_get_icon(void *data, Evas_Object *obj,
36 Evas_Coord height, width;
37 SettingStorageUG *ad = data;
38 int offset = SETTING_STORAGE_PIE_RECT_OFFSET * 2;
40 retv_if(NULL == obj, NULL);
41 retv_if(NULL == data, NULL);
42 retvm_if(safeStrCmp(part, "elm.icon"), NULL, "part(%s) Invaild", part);
44 layout = elm_layout_add(obj);
45 elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "default_storage");
46 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
47 elm_object_part_text_set(layout, "application_desp.text",
48 _(STORAGEUG_STR_APP_LOC_NOTICE));
50 /* in landscape mode, the size should be resize */
51 evas_object_geometry_get(obj, NULL, NULL, &width, NULL);
53 app_device_orientation_e m = elm_win_rotation_get(ad->win);
54 if (APP_DEVICE_ORIENTATION_90 == m || APP_DEVICE_ORIENTATION_270 == m)
55 height = SETTING_STORAGE_DEFAULT_STORAGE_APP_DESP_SIZE * 2 / 3;
57 height = SETTING_STORAGE_DEFAULT_STORAGE_APP_DESP_SIZE;
59 setting_resize_object(layout, width - offset, height);
60 evas_object_show(layout);
64 static Eina_Bool storageUg_default_back_cb(void *data, Elm_Object_Item *it)
66 SettingStorageUG *ad = data;
68 retv_if(data == NULL, EINA_FALSE);
70 if (ad->main_view->is_create)
71 setting_view_change(ad->default_view, ad->main_view, ad);
73 ug_destroy_me(ad->ug);
78 static void _storageUg_default_set_value(Elm_Object_Item *parentItem,
79 Setting_GenGroupItem_Data *d_subItem, Setting_GenGroupItem_Data *d_parentItem)
83 setting_set_int_slp_key(d_parentItem->int_slp_setting_binded, d_subItem->chk_status,
85 retm_if(0 != err, "setting_set_int_slp_key(%d) Fail(%d)",
86 d_parentItem->int_slp_setting_binded, err);
88 G_FREE(d_parentItem->sub_desc);
89 d_parentItem->sub_desc = (char *)g_strdup(d_subItem->keyStr);
90 elm_object_item_data_set(d_parentItem->item, d_parentItem);
91 elm_genlist_item_update(d_parentItem->item);
94 static void storageUg_default_expand_item_sel(void *data, Evas_Object *obj,
97 Elm_Object_Item *parentItem;
98 Elm_Object_Item *subitem = event_info;
99 Setting_GenGroupItem_Data *d_subItem;
100 Setting_GenGroupItem_Data *d_parentItem;
102 ret_if(event_info == NULL);
104 elm_genlist_item_selected_set(subitem, 0);
106 parentItem = elm_genlist_item_parent_get(subitem);
108 d_subItem = elm_object_item_data_get(subitem);
109 ret_if(NULL == d_subItem);
111 d_parentItem = elm_object_item_data_get(parentItem); /* parent data */
112 ret_if(NULL == d_parentItem);
114 elm_radio_value_set(d_subItem->rgd, d_subItem->chk_status);
116 _storageUg_default_set_value(parentItem, d_subItem, d_parentItem);
118 elm_genlist_item_expanded_set(d_parentItem->item, EINA_FALSE);
122 static void storageUg_default_radio_change(void *data, Evas_Object *obj,
125 Elm_Object_Item *subItem, *parentItem;
126 Setting_GenGroupItem_Data *list_item = data;
127 Setting_GenGroupItem_Data *d_subItem;
128 Setting_GenGroupItem_Data *d_parentItem;
130 ret_if(data == NULL);
132 list_item->chk_status = elm_radio_value_get(obj); /* for update */
134 subItem = list_item->item;
135 parentItem = elm_genlist_item_parent_get(subItem);
137 d_subItem = elm_object_item_data_get(subItem);
138 ret_if(NULL == d_subItem);
140 if (d_subItem->disableflag)
143 d_parentItem = elm_object_item_data_get(parentItem);
144 ret_if(NULL == d_parentItem);
146 _storageUg_default_set_value(parentItem, d_subItem, d_parentItem);
149 static void storageUg_default_expand_cb(void *data, Evas_Object *obj,
152 Evas_Object *scroller, *rgd;
153 SettingStorageUG *ad = data;
154 Setting_GenGroupItem_Data *data_parentItem;
155 Setting_GenGroupItem_Data *memory_card;
156 Setting_GenGroupItem_Data *phone = NULL;
157 Elm_Object_Item *parentItem = event_info; /* parent item */
159 ret_if(NULL == data);
160 ret_if(NULL == event_info);
162 data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
163 scroller = elm_object_item_widget_get(parentItem);
165 if (data_parentItem == ad->data_bt || data_parentItem == ad->data_nfc
166 || data_parentItem == ad->data_wifidirect
167 || data_parentItem == ad->data_installapp) {
168 rgd = elm_radio_add(scroller);
169 elm_radio_value_set(rgd, -1);
170 phone = setting_create_Gendial_exp_sub_field(scroller, &itc_1icon_1text_sub,
171 storageUg_default_expand_item_sel, ad, parentItem, SWALLOW_Type_1RADIO,
172 rgd, SETTING_DEF_MEMORY_PHONE, STORAGEUG_STR_INTERNAL_STORAGE, NULL);
174 setting_genlist_item_groupstyle_set(phone, SETTING_GROUP_STYLE_CENTER);
175 phone->disableflag = EINA_FALSE;
178 memory_card = setting_create_Gendial_exp_sub_field(scroller,
179 &itc_1icon_1text_sub, storageUg_default_expand_item_sel, ad,
180 parentItem, SWALLOW_Type_1RADIO, rgd, SETTING_DEF_MEMORY_MMC,
181 STORAGEUG_STR_SD_CARD, storageUg_default_radio_change);
182 retm_if(NULL == memory_card, "setting_create_Gendial_exp_sub_field() Fail");
183 if (data_parentItem == ad->data_wifidirect
184 || data_parentItem == ad->data_installapp) {
185 setting_genlist_item_groupstyle_set(memory_card, SETTING_GROUP_STYLE_BOTTOM);
187 setting_genlist_item_groupstyle_set(memory_card, SETTING_GROUP_STYLE_CENTER);
190 memory_card->disableflag = EINA_FALSE;
192 if (ad->mmc_status != VCONFKEY_SYSMAN_MMC_MOUNTED) {
193 setting_disable_genlist_item(memory_card->item);
194 memory_card->disableflag = EINA_TRUE;
197 setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
201 static void storageUg_default_reset_vconf(Setting_GenGroupItem_Data *data_item)
206 ret_if(NULL == data_item);
208 if (!safeStrCmp(data_item->sub_desc, STORAGEUG_STR_SD_CARD)) {
210 setting_get_int_slp_key(data_item->int_slp_setting_binded, &value, &err);
211 retm_if(0 != err, "setting_get_int_slp_key(%d) Fail(%d)",
212 data_item->int_slp_setting_binded, err);
213 if (value != STORAGEUG_DEFAULT_STORAGE_PHONE) {
214 setting_set_int_slp_key(data_item->int_slp_setting_binded,
215 STORAGEUG_DEFAULT_STORAGE_PHONE, &err);
216 retm_if(0 != err, "setting_set_int_slp_key(%d) Fail(%d)",
217 data_item->int_slp_setting_binded, err);
220 G_FREE(data_item->sub_desc);
221 data_item->sub_desc = (char *)g_strdup(STORAGEUG_STR_INTERNAL_STORAGE);
222 elm_object_item_data_set(data_item->item, data_item);
223 elm_genlist_item_update(data_item->item);
227 static void storageUg_default_mmc_changed_cb(keynode_t *node, void *data)
230 SettingStorageUG *ad = data;
232 ret_if(NULL == node);
233 ret_if(NULL == data);
235 status = vconf_keynode_get_int(node);
237 SETTING_TRACE("status:%d", status);
238 if (VCONFKEY_SYSMAN_MMC_MOUNTED != status) {
239 storageUg_default_reset_vconf(ad->data_bt);
240 storageUg_default_reset_vconf(ad->data_wifidirect);
241 storageUg_default_reset_vconf(ad->data_nfc);
242 storageUg_default_reset_vconf(ad->data_installapp);
245 /* when vconf change, expand set false */
246 if (ad->data_bt && ad->data_bt->item)
247 elm_genlist_item_expanded_set(ad->data_bt->item, EINA_FALSE);
249 if (ad->data_nfc && ad->data_nfc->item)
250 elm_genlist_item_expanded_set(ad->data_nfc->item, EINA_FALSE);
252 if (ad->data_wifidirect && ad->data_wifidirect->item)
253 elm_genlist_item_expanded_set(ad->data_wifidirect->item, EINA_FALSE);
255 if (ad->data_installapp && ad->data_installapp->item)
256 elm_genlist_item_expanded_set(ad->data_installapp->item, EINA_FALSE);
259 static const char *storageUg_default_cur_storage_get(int mmc_status,
260 setting_int_slp_list slp_key)
263 const char *phone = STORAGEUG_STR_INTERNAL_STORAGE;
264 const char *sd = STORAGEUG_STR_SD_CARD;
266 setting_get_int_slp_key(slp_key, &value, &err);
267 warn_if(0 != err, "setting_get_int_slp_key(%d) Fail(%d)", slp_key, err);
269 if (mmc_status != VCONFKEY_SYSMAN_MMC_MOUNTED && STORAGEUG_DEFAULT_STORAGE_SD == value) {
270 setting_set_int_slp_key(slp_key, STORAGEUG_DEFAULT_STORAGE_PHONE, &err);
271 warn_if(0 != err, "setting_set_int_slp_key(%d) Fail(%d)", slp_key, err);
273 value = STORAGEUG_DEFAULT_STORAGE_PHONE;
276 if (STORAGEUG_DEFAULT_STORAGE_SD == value)
282 static int storageUg_default_create(void *data)
285 SettingStorageUG *ad = data;
286 Elm_Object_Item *item = NULL;
287 Evas_Object *genlist = NULL;
288 const char *grp_title, *item_title;
289 const char *cur_storage;
291 retv_if(NULL == data, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
293 if (!ad->main_view->is_create) {
294 ret = vconf_get_int(storageUg_MMC_stat, &ad->mmc_status);
295 retvm_if(ret, SETTING_RETURN_FAIL, "vconf_get_int(%s) Fail", storageUg_MMC_stat);
298 setting_push_layout_navi_bar_genlist(ad->lo_parent, ad->win,
299 STORAGEUG_STR_DEF_STORAGE, STORAGEUG_STR_BACK, NULL,
300 (setting_call_back_func)storageUg_default_back_cb,
301 NULL, ad, &genlist, ad->navi);
302 elm_genlist_realization_mode_set(genlist, EINA_FALSE);
304 setting_enable_expandable_genlist(genlist, ad,
305 storageUg_default_expand_cb, NULL);
307 storageUg_append_separator(genlist, ad);
310 setting_create_Gendial_field_titleItem(genlist, &itc_group_item,
311 STORAGEUG_STR_SHARED_CONTENTS, NULL);
314 cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
315 INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH);
316 ad->data_bt = setting_create_Gendial_exp_parent_field(genlist,
317 &itc_2text_3_parent, NULL, NULL, SWALLOW_Type_INVALID,
318 STORAGEUG_STR_BT, (char *)cur_storage, SETTING_GROUP_STYLE_TOP,
319 SETTING_GROUP_STYLE_TOP);
321 ad->data_bt->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH;
323 SETTING_TRACE_ERROR("ad->data_bt is NULL");
328 cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
329 INT_SLP_SETTING_DEFAULT_MEM_NFC);
330 ad->data_nfc = setting_create_Gendial_exp_parent_field(genlist,
331 &itc_2text_3_parent, NULL, NULL, SWALLOW_Type_INVALID,
332 STORAGEUG_STR_NFC, (char *)cur_storage, SETTING_GROUP_STYLE_CENTER,
333 SETTING_GROUP_STYLE_CENTER);
335 ad->data_nfc->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_NFC;
337 SETTING_TRACE_ERROR("ad->data_dload is NULL");
342 cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
343 INT_SLP_SETTING_DEFAULT_MEM_WIFIDIRECT);
344 ad->data_wifidirect = setting_create_Gendial_exp_parent_field(genlist,
345 &itc_2text_3_parent, NULL, NULL, SWALLOW_Type_INVALID,
346 STORAGEUG_STR_WIFI, (char *)cur_storage, SETTING_GROUP_STYLE_CENTER,
347 SETTING_GROUP_STYLE_BOTTOM);
348 if (ad->data_wifidirect) {
349 ad->data_wifidirect->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_WIFIDIRECT;
351 SETTING_TRACE_ERROR("ad->data_wifidirect is NULL");
354 /*Install application */
355 storageUg_append_separator(genlist, ad);
357 grp_title = STORAGEUG_STR_INSTALLED_APP_H;
358 item_title = STORAGEUG_STR_INSTALLED_APP_B;
360 setting_create_Gendial_field_titleItem(genlist, &itc_group_item, grp_title,
363 cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
364 INT_SLP_SETTING_DEFAULT_MEM_INSTALLAPPLICATIONS);
365 ad->data_installapp = setting_create_Gendial_exp_parent_field(genlist,
366 &itc_2text_3_parent, NULL, NULL, SWALLOW_Type_INVALID, item_title,
367 (char *)cur_storage, SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
368 if (ad->data_installapp) {
369 ad->data_installapp->int_slp_setting_binded =
370 INT_SLP_SETTING_DEFAULT_MEM_INSTALLAPPLICATIONS;
372 SETTING_TRACE_ERROR("ad->data_installapp is NULL");
375 storageUg_append_separator(genlist, ad);
377 ADD_GL_HELP(genlist, STORAGEUG_STR_APP_LOC_NOTICE);
379 ret = vconf_notify_key_changed(storageUg_MMC_stat, storageUg_default_mmc_changed_cb,
382 SETTING_TRACE_ERROR("vconf_notify_key_changed(%s) Fail(%d)", storageUg_MMC_stat,
386 setting_view_storage_default.is_create = 1;
388 return SETTING_RETURN_SUCCESS;
391 static int storageUg_default_destroy(void *data)
395 ret = vconf_ignore_key_changed(storageUg_MMC_stat, storageUg_default_mmc_changed_cb);
396 warn_if(ret, "vconf_ignore_key_changed(%s) Fail(%d)", storageUg_MMC_stat, ret);
398 setting_view_storage_default.is_create = 0;
400 return SETTING_RETURN_SUCCESS;
402 static int storageUg_default_update(void *data)
404 return SETTING_RETURN_SUCCESS;
406 static int storageUg_default_cleanup(void *data)
408 return storageUg_default_destroy(data);
412 void storageUg_default_init(SettingStorageUG *ad)
415 ret_if(ad->default_view);
417 setting_view_storage_default.create = storageUg_default_create;
418 setting_view_storage_default.destroy = storageUg_default_destroy;
419 setting_view_storage_default.update = storageUg_default_update;
420 setting_view_storage_default.cleanup = storageUg_default_cleanup;
422 ad->default_view = &setting_view_storage_default;