2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.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
8 * http://www.tizenopensource.org/license
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.
18 #include <setting-memory-default-memory.h>
20 static int setting_memory_default_memory_create(void *cb);
21 static int setting_memory_default_memory_destroy(void *cb);
22 static int setting_memory_default_memory_update(void *cb);
23 static int setting_memory_default_memory_cleanup(void *cb);
24 char *setting_default_memory_get_desc_str_by_vconf(setting_int_slp_list
27 setting_view setting_view_memory_default_memory = {
28 .create = setting_memory_default_memory_create,
29 .destroy = setting_memory_default_memory_destroy,
30 .update = setting_memory_default_memory_update,
31 .cleanup = setting_memory_default_memory_cleanup,
34 static void setting_memory_default_click_softkey_cancel_cb(void *data,
37 static void __setting_memory_default_memory_vconf_change_cb(
38 keynode_t *key, void *data);
39 static void __setting_memory_default_memory_update_item_status(
40 void *data, bool disable_mmc_flag);
41 static void __setting_memory_default_memory_update_vconf(void *data);
43 /* ***************************************************
47 ***************************************************/
49 static void __setting_memory_default_exp_cb(void *data, Evas_Object *obj,
52 ret_if(NULL == data || NULL == event_info);
54 SettingMemoryUG *ad = (SettingMemoryUG *) data;
55 Elm_Object_Item *parentItem = event_info; /* parent item */
56 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
57 Evas_Object *scroller = elm_object_item_widget_get(parentItem);
60 if (data_parentItem == ad->data_wap) {
62 rgd = elm_radio_add(scroller);
63 elm_radio_value_set(rgd, -1);
64 setting_create_Gendial_exp_sub_field(scroller,
65 &(ad->itc_1icon_1text_sub),
66 NULL, NULL, parentItem,
67 SWALLOW_Type_1RADIO, rgd,
68 SETTING_DEF_MEMORY_PHONE,
72 Setting_GenGroupItem_Data *data_memory_card = NULL;
74 setting_create_Gendial_exp_sub_field(scroller,
75 &(ad->itc_1icon_1text_sub),
76 NULL, NULL, parentItem,
77 SWALLOW_Type_1RADIO, rgd,
78 SETTING_DEF_MEMORY_MMC,
79 "IDS_COM_BODY_MEMORY_CARD",
81 setting_retm_if(!data_memory_card, "data_memory_card is NULL");
83 int mmc_mode = VCONFKEY_SYSMAN_MMC_REMOVED;
84 int ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_mode);
85 setting_retm_if(ret != 0, "Get vconf failed");
87 /* if mmc card is not mounted, set item disable */
88 if (mmc_mode == VCONFKEY_SYSMAN_MMC_REMOVED ||
89 mmc_mode == VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED) {
90 setting_disable_genlist_item(data_memory_card->item);
93 setting_update_chk_status(rgd,
94 data_parentItem->int_slp_setting_binded);
99 static int setting_memory_default_memory_create(void *cb)
101 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
103 SettingMemoryUG *ad = (SettingMemoryUG *) cb;
105 Evas_Object *scroller;
107 Elm_Object_Item *item;
108 setting_push_layout_navi_bar_genlist(ad->win_main_layout, ad->win_get,
110 ("IDS_ST_BODY_MEMORYSETTINGS_DEFAULT_MEMORY"),
111 S_("IDS_COM_BODY_BACK"), NULL,
112 setting_memory_default_click_softkey_cancel_cb,
113 NULL, ad, &scroller, ad->navi_bar);
115 setting_enable_expandable_genlist(scroller, ad,
116 __setting_memory_default_exp_cb,
118 /* scroller is a genlist */
121 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
122 ELM_GENLIST_ITEM_NONE, NULL, NULL);
123 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
125 setting_create_Gendial_exp_parent_field(scroller,
126 &(ad->itc_2text_3_parent),
128 SWALLOW_Type_INVALID,
129 "IDS_ST_BODY_WAP_DOWNLOADS",
130 setting_default_memory_get_desc_str_by_vconf
131 (INT_SLP_SETTING_DEFAULT_MEM_WAP));
133 ad->data_wap->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_WAP;
135 SETTING_TRACE_ERROR("ad->data_wap is NULL");
138 int ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
139 __setting_memory_default_memory_vconf_change_cb, ad);
141 SETTING_TRACE_ERROR("call vconf_notify_key_changed failed");
143 setting_view_memory_default_memory.is_create = 1;
145 return SETTING_RETURN_SUCCESS;
148 static int setting_memory_default_memory_destroy(void *cb)
150 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
152 SettingMemoryUG *ad = (SettingMemoryUG *) cb;
154 elm_naviframe_item_pop(ad->navi_bar);
156 int ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
157 __setting_memory_default_memory_vconf_change_cb);
159 SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
162 setting_view_memory_default_memory.is_create = 0;
164 return SETTING_RETURN_SUCCESS;
167 static int setting_memory_default_memory_update(void *cb)
169 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
170 return SETTING_RETURN_SUCCESS;
173 char *setting_default_memory_get_desc_str_by_vconf(setting_int_slp_list slp_key)
175 /* SETTING_TRACE_BEGIN; */
178 char *setting_default_memory_type[SETTING_DEF_MEMORY_MAX] = {
179 _("IDS_COM_BODY_PHONE"),
180 _("IDS_COM_BODY_MEMORY_CARD")
182 int ret = SETTING_RETURN_FAIL;
186 int mmc_mode = VCONFKEY_SYSMAN_MMC_REMOVED;
187 ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_mode);
188 setting_retvm_if(ret != 0, NULL, "Get vconf failed");
190 /* if mmc card is not mounted, set vconf by 0(phone) */
191 if (mmc_mode == VCONFKEY_SYSMAN_MMC_REMOVED ||
192 mmc_mode == VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED) {
193 ret = setting_set_int_slp_key(slp_key, 0, &err);
194 setting_retvm_if(ret != 0, NULL, "Set vconf failed");
197 ret = setting_get_int_slp_key(slp_key, &value, &err);
200 case INT_SLP_SETTING_DEFAULT_MEM_WAP:
201 case INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH:
202 case INT_SLP_SETTING_DEFAULT_MEM_CAMERA:
203 case INT_SLP_SETTING_DEFAULT_MEM_VOICE_RECORDER:
204 case INT_SLP_SETTING_DEFAULT_MEM_FM_RADIO:
205 case INT_SLP_SETTING_DEFAULT_MEM_ALL_SHARE:
206 case INT_SLP_SETTING_DEFAULT_MEM_ADOBE_AIR:
208 if (ret == SETTING_RETURN_FAIL
209 || value >= SETTING_DEF_MEMORY_MAX)
210 value = SETTING_DEF_MEMORY_PHONE;
211 return setting_default_memory_type[value];
216 ret = SETTING_GENERAL_ERR_NOT_FIND_VALUE_SWITCH;
223 static int setting_memory_default_memory_cleanup(void *cb)
225 return setting_memory_default_memory_destroy(cb);
228 /* ***************************************************
232 ***************************************************/
234 /* ***************************************************
238 ***************************************************/
241 setting_memory_default_click_softkey_cancel_cb(void *data, Evas_Object *obj,
244 ret_if(data == NULL);
246 SettingMemoryUG *ad = (SettingMemoryUG *) data;
247 setting_view_change(&setting_view_memory_default_memory,
248 &setting_view_memory_main, ad);
251 static void __setting_memory_default_memory_vconf_change_cb(
252 keynode_t *key, void *data)
255 setting_retm_if(NULL == key, "key is NULL");
256 setting_retm_if(NULL == data, "data is NULL");
257 SettingMemoryUG *ad = (SettingMemoryUG *)data;
258 int status = vconf_keynode_get_int(key);
259 char *vconf_name = vconf_keynode_get_name(key);
261 if (!safeStrCmp(vconf_name, VCONFKEY_SYSMAN_MMC_STATUS)) {
262 SETTING_TRACE("status:%d", status);
263 if (VCONFKEY_SYSMAN_MMC_MOUNTED == status) {
264 __setting_memory_default_memory_update_item_status(
267 __setting_memory_default_memory_update_item_status(
273 static void __setting_memory_default_memory_update_item_status(
274 void *data, bool disable_mmc_flag)
277 setting_retm_if(NULL == data, "data is NULL");
278 SettingMemoryUG *ad = (SettingMemoryUG *)data;
280 setting_retm_if(NULL == ad->data_wap, "ad->data_wap is NULL");
281 setting_retm_if(NULL == ad->data_wap->item,
282 "ad->data_wap->item is NULL");
284 Elm_Object_Item *list_item = ad->data_wap->item;
285 Setting_GenGroupItem_Data *data_sub_item = NULL;
286 while (list_item != NULL) {
288 (Setting_GenGroupItem_Data *)
289 elm_object_item_data_get(list_item);
290 /* data_sub_item is seperator*/
291 if (data_sub_item == NULL) {
292 list_item = elm_genlist_item_next_get(list_item);
295 SETTING_TRACE("keystr = %s", data_sub_item->keyStr);
296 /* disable_mmc_flag is true, means mmc is not mounted*/
297 if (disable_mmc_flag) {
298 if (!safeStrCmp(data_sub_item->keyStr,
299 "IDS_COM_BODY_PHONE") &&
300 ! elm_genlist_item_selected_get(list_item)) {
301 elm_genlist_item_selected_set(list_item, 1);
302 } else if (!safeStrCmp(data_sub_item->keyStr,
303 "IDS_COM_BODY_MEMORY_CARD")) {
304 elm_genlist_item_selected_set(list_item, 0);
305 setting_disable_genlist_item(list_item);
308 if (!safeStrCmp(data_sub_item->keyStr,
309 "IDS_COM_BODY_MEMORY_CARD") &&
310 elm_object_item_disabled_get(list_item)) {
311 setting_enable_genlist_item(list_item);
314 list_item = elm_genlist_item_next_get(list_item);
317 /* if mmc is not mounted, update vconf*/
318 if (disable_mmc_flag) {
319 __setting_memory_default_memory_update_vconf(ad->data_wap);
323 static void __setting_memory_default_memory_update_vconf(void *data)
326 setting_retm_if(NULL == data, "data is NULL");
327 Setting_GenGroupItem_Data *data_item = (Setting_GenGroupItem_Data *)data;
332 ret = setting_get_int_slp_key(
333 data_item->int_slp_setting_binded, &value, &err);
334 setting_retm_if(0 != ret, "get vconf failed");
336 /* if mmc card is not mounted, set vconf by 0(phone) */
338 ret = setting_set_int_slp_key(
339 data_item->int_slp_setting_binded, 0, &err);
340 setting_retm_if(ret != 0, "Set vconf failed");
342 G_FREE(data_item->sub_desc);
343 data_item->sub_desc = (char *)g_strdup(_("IDS_COM_BODY_PHONE"));
344 elm_object_item_data_set(data_item->item, data_item);
345 elm_genlist_item_update(data_item->item);