3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.1 (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
9 * http://floralicense.org/license/
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.
17 #include <setting-memory-default-memory.h>
18 #define SUPPORT_DVB_B 1
19 #define DVB_H_STR "DVB-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
61 || data_parentItem == ad->data_bt
62 || data_parentItem == ad->data_cmr
63 || data_parentItem == ad->data_vrec
64 || data_parentItem == ad->data_rdo
65 || data_parentItem == ad->data_shr
66 || data_parentItem == ad->data_dvb_h) {
68 SETTING_TRACE_DEBUG("start drawing exp menu.");
70 rgd = elm_radio_add(scroller);
71 elm_radio_value_set(rgd, -1);
72 setting_create_Gendial_exp_sub_field(scroller,
73 &(ad->itc_1icon_1text_sub),
74 NULL, NULL, parentItem,
75 SWALLOW_Type_1RADIO, rgd,
76 SETTING_DEF_MEMORY_PHONE,
80 Setting_GenGroupItem_Data *data_memory_card = NULL;
82 setting_create_Gendial_exp_sub_field(scroller,
83 &(ad->itc_1icon_1text_sub),
84 NULL, NULL, parentItem,
85 SWALLOW_Type_1RADIO, rgd,
86 SETTING_DEF_MEMORY_MMC,
87 "IDS_COM_BODY_MEMORY_CARD",
89 setting_retm_if(!data_memory_card, "data_memory_card is NULL");
91 int mmc_mode = VCONFKEY_SYSMAN_MMC_REMOVED;
92 int ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_mode);
93 setting_retm_if(ret != 0, "Get vconf failed");
95 /* if mmc card is not mounted, set item disable */
96 if (mmc_mode == VCONFKEY_SYSMAN_MMC_REMOVED ||
97 mmc_mode == VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED) {
98 setting_disable_genlist_item(data_memory_card->item);
101 setting_update_chk_status(rgd,
102 data_parentItem->int_slp_setting_binded);
107 static int setting_memory_default_memory_create(void *cb)
110 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
112 SettingMemoryUG *ad = (SettingMemoryUG *) cb;
114 Evas_Object *scroller;
116 Elm_Object_Item *item;
118 setting_create_layout_navi_bar_genlist(ad->win_main_layout, ad->win_get,
119 _("IDS_ST_BODY_MEMORYSETTINGS_DEFAULT_MEMORY"),
120 S_("IDS_COM_BODY_BACK"), NULL,
121 setting_memory_default_click_softkey_cancel_cb,
122 NULL, ad, &scroller, &(ad->navi_bar));
124 retvm_if(ad->ly_main == NULL, -1, "Can't create main layout");
126 setting_enable_expandable_genlist(scroller, ad,
127 __setting_memory_default_exp_cb,
129 /* scroller is a genlist */
132 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
133 ELM_GENLIST_ITEM_NONE, NULL, NULL);
134 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
136 setting_create_Gendial_exp_parent_field(scroller,
137 &(ad->itc_2text_3_parent),
139 SWALLOW_Type_INVALID,
140 "IDS_ST_BODY_WAP_DOWNLOADS",
141 setting_default_memory_get_desc_str_by_vconf
142 (INT_SLP_SETTING_DEFAULT_MEM_WAP));
144 ad->data_wap->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_WAP;
146 SETTING_TRACE_ERROR("ad->data_wap is NULL");
151 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
152 ELM_GENLIST_ITEM_NONE, NULL, NULL);
153 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
155 setting_create_Gendial_exp_parent_field(scroller,
156 &(ad->itc_2text_3_parent),
158 SWALLOW_Type_INVALID,
159 "IDS_COM_BODY_BLUETOOTH",
160 setting_default_memory_get_desc_str_by_vconf
161 (INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH));
163 ad->data_bt->int_slp_setting_binded =
164 INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH;
166 SETTING_TRACE_ERROR("ad->data_bt is NULL");
171 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
172 ELM_GENLIST_ITEM_NONE, NULL, NULL);
173 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
175 setting_create_Gendial_exp_parent_field(scroller,
176 &(ad->itc_2text_3_parent),
178 SWALLOW_Type_INVALID,
179 "IDS_COM_BODY_CAMERA",
180 setting_default_memory_get_desc_str_by_vconf
181 (INT_SLP_SETTING_DEFAULT_MEM_CAMERA));
183 ad->data_cmr->int_slp_setting_binded =
184 INT_SLP_SETTING_DEFAULT_MEM_CAMERA;
186 SETTING_TRACE_ERROR("ad->data_cmr is NULL");
190 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
191 ELM_GENLIST_ITEM_NONE, NULL, NULL);
192 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
194 setting_create_Gendial_exp_parent_field(scroller,
195 &(ad->itc_2text_3_parent),
197 SWALLOW_Type_INVALID,
198 "IDS_COM_BODY_VOICE_RECORDER",
199 setting_default_memory_get_desc_str_by_vconf
200 (INT_SLP_SETTING_DEFAULT_MEM_VOICE_RECORDER));
202 ad->data_vrec->int_slp_setting_binded =
203 INT_SLP_SETTING_DEFAULT_MEM_VOICE_RECORDER;
205 SETTING_TRACE_ERROR("ad->data_vrec is NULL");
211 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
212 ELM_GENLIST_ITEM_NONE, NULL, NULL);
213 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
215 setting_create_Gendial_exp_parent_field(scroller,
216 &(ad->itc_2text_3_parent),
218 SWALLOW_Type_INVALID,
219 "IDS_COM_BODY_FM_RADIO",
220 setting_default_memory_get_desc_str_by_vconf
221 (INT_SLP_SETTING_DEFAULT_MEM_FM_RADIO));
223 ad->data_rdo->int_slp_setting_binded =
224 INT_SLP_SETTING_DEFAULT_MEM_FM_RADIO;
226 SETTING_TRACE_ERROR("ad->data_rdo is NULL");
230 #if SUPPORT_AllShare_Memory
234 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
235 ELM_GENLIST_ITEM_NONE, NULL, NULL);
236 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
238 setting_create_Gendial_exp_parent_field(scroller,
239 &(ad->itc_2text_3_parent),
241 SWALLOW_Type_INVALID,
242 "IDS_COM_BODY_ALLSHARE",
243 setting_default_memory_get_desc_str_by_vconf
244 (INT_SLP_SETTING_DEFAULT_MEM_ALL_SHARE));
246 ad->data_shr->int_slp_setting_binded =
247 INT_SLP_SETTING_DEFAULT_MEM_ALL_SHARE;
249 SETTING_TRACE_ERROR("ad->data_shr is NULL");
255 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
256 ELM_GENLIST_ITEM_NONE, NULL, NULL);
257 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
259 setting_create_Gendial_exp_parent_field(scroller,
260 &(ad->itc_2text_3_parent),
262 SWALLOW_Type_INVALID,
264 setting_default_memory_get_desc_str_by_vconf
265 (INT_SLP_SETTING_DEFAULT_MEM_DVB_H));
266 if (ad->data_dvb_h) {
267 ad->data_dvb_h->int_slp_setting_binded =
268 INT_SLP_SETTING_DEFAULT_MEM_DVB_H;
270 SETTING_TRACE_ERROR("ad->data_shr is NULL");
274 item = elm_genlist_item_append(scroller, &itc_bottom_seperator, NULL, NULL,
275 ELM_GENLIST_ITEM_NONE, NULL, NULL);
276 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
278 int ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
279 __setting_memory_default_memory_vconf_change_cb, ad);
281 SETTING_TRACE_ERROR("call vconf_notify_key_changed failed");
283 setting_view_memory_default_memory.is_create = 1;
287 return SETTING_RETURN_SUCCESS;
290 static int setting_memory_default_memory_destroy(void *cb)
292 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
294 SettingMemoryUG *ad = (SettingMemoryUG *) cb;
296 int ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
297 __setting_memory_default_memory_vconf_change_cb);
299 SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
302 setting_view_memory_default_memory.is_create = 0;
304 evas_object_del(ad->ly_main);
306 return SETTING_RETURN_SUCCESS;
309 static int setting_memory_default_memory_update(void *cb)
311 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
312 return SETTING_RETURN_SUCCESS;
315 char *setting_default_memory_get_desc_str_by_vconf(setting_int_slp_list slp_key)
317 /* SETTING_TRACE_BEGIN; */
320 char *setting_default_memory_type[SETTING_DEF_MEMORY_MAX] = {
321 _("IDS_COM_BODY_PHONE"),
322 _("IDS_COM_BODY_MEMORY_CARD")
324 int ret = SETTING_RETURN_FAIL;
328 int mmc_mode = VCONFKEY_SYSMAN_MMC_REMOVED;
329 ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_mode);
330 setting_retvm_if(ret != 0, NULL, "Get vconf failed");
332 /* if mmc card is not mounted, set vconf by 0(phone) */
333 if (mmc_mode == VCONFKEY_SYSMAN_MMC_REMOVED ||
334 mmc_mode == VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED) {
335 ret = setting_set_int_slp_key(slp_key, 0, &err);
336 setting_retvm_if(ret != 0, NULL, "Set vconf failed");
339 ret = setting_get_int_slp_key(slp_key, &value, &err);
342 case INT_SLP_SETTING_DEFAULT_MEM_WAP:
343 case INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH:
344 case INT_SLP_SETTING_DEFAULT_MEM_CAMERA:
345 case INT_SLP_SETTING_DEFAULT_MEM_VOICE_RECORDER:
346 case INT_SLP_SETTING_DEFAULT_MEM_FM_RADIO:
347 case INT_SLP_SETTING_DEFAULT_MEM_ALL_SHARE:
348 case INT_SLP_SETTING_DEFAULT_MEM_ADOBE_AIR:
349 case INT_SLP_SETTING_DEFAULT_MEM_DVB_H:
351 if (ret == SETTING_RETURN_FAIL
352 || value >= SETTING_DEF_MEMORY_MAX)
353 value = SETTING_DEF_MEMORY_PHONE;
354 return setting_default_memory_type[value];
359 ret = SETTING_GENERAL_ERR_NOT_FIND_VALUE_SWITCH;
366 static int setting_memory_default_memory_cleanup(void *cb)
371 /* ***************************************************
375 ***************************************************/
377 /* ***************************************************
381 ***************************************************/
384 setting_memory_default_click_softkey_cancel_cb(void *data, Evas_Object *obj,
387 ret_if(data == NULL);
389 SettingMemoryUG *ad = (SettingMemoryUG *) data;
391 ug_destroy_me(ad->ug);
394 static void __setting_memory_default_memory_vconf_change_cb(
395 keynode_t *key, void *data)
398 setting_retm_if(NULL == key, "key is NULL");
399 setting_retm_if(NULL == data, "data is NULL");
400 SettingMemoryUG *ad = (SettingMemoryUG *)data;
401 int status = vconf_keynode_get_int(key);
402 char *vconf_name = vconf_keynode_get_name(key);
404 if (!safeStrCmp(vconf_name, VCONFKEY_SYSMAN_MMC_STATUS)) {
405 SETTING_TRACE("status:%d", status);
406 if (VCONFKEY_SYSMAN_MMC_MOUNTED == status) {
407 __setting_memory_default_memory_update_item_status(
410 __setting_memory_default_memory_update_item_status(
416 static void __setting_memory_default_memory_update_item_status(
417 void *data, bool disable_mmc_flag)
420 setting_retm_if(NULL == data, "data is NULL");
421 SettingMemoryUG *ad = (SettingMemoryUG *)data;
423 setting_retm_if(NULL == ad->data_wap, "ad->data_wap is NULL");
424 setting_retm_if(NULL == ad->data_wap->item,
425 "ad->data_wap->item is NULL");
427 Elm_Object_Item *list_item = ad->data_wap->item;
428 Setting_GenGroupItem_Data *data_sub_item = NULL;
429 while (list_item != NULL) {
431 (Setting_GenGroupItem_Data *)
432 elm_object_item_data_get(list_item);
433 /* data_sub_item is seperator*/
434 if (data_sub_item == NULL) {
435 list_item = elm_genlist_item_next_get(list_item);
438 SETTING_TRACE("keystr = %s", data_sub_item->keyStr);
439 /* disable_mmc_flag is true, means mmc is not mounted*/
440 if (disable_mmc_flag) {
441 if (!safeStrCmp(data_sub_item->keyStr,
442 "IDS_COM_BODY_PHONE") &&
443 ! elm_genlist_item_selected_get(list_item)) {
444 elm_genlist_item_selected_set(list_item, 1);
445 } else if (!safeStrCmp(data_sub_item->keyStr,
446 "IDS_COM_BODY_MEMORY_CARD")) {
447 elm_genlist_item_selected_set(list_item, 0);
448 setting_disable_genlist_item(list_item);
451 if (!safeStrCmp(data_sub_item->keyStr,
452 "IDS_COM_BODY_MEMORY_CARD") &&
453 elm_object_item_disabled_get(list_item)) {
454 setting_enable_genlist_item(list_item);
457 list_item = elm_genlist_item_next_get(list_item);
460 /* if mmc is not mounted, update vconf*/
461 setting_retm_if(NULL == ad->data_bt, "ad->data_bt is NULL");
462 setting_retm_if(NULL == ad->data_cmr, "ad->data_cmr is NULL");
463 setting_retm_if(NULL == ad->data_vrec, "ad->data_vrec is NULL");
464 setting_retm_if(NULL == ad->data_rdo, "ad->data_rdo is NULL");
465 setting_retm_if(NULL == ad->data_dvb_h, "ad->data_dvb_h is NULL");
466 if (disable_mmc_flag) {
467 __setting_memory_default_memory_update_vconf(ad->data_wap);
468 __setting_memory_default_memory_update_vconf(ad->data_bt);
469 __setting_memory_default_memory_update_vconf(ad->data_cmr);
470 __setting_memory_default_memory_update_vconf(ad->data_vrec);
471 __setting_memory_default_memory_update_vconf(ad->data_rdo);
472 __setting_memory_default_memory_update_vconf(ad->data_dvb_h);
476 static void __setting_memory_default_memory_update_vconf(void *data)
479 setting_retm_if(NULL == data, "data is NULL");
480 Setting_GenGroupItem_Data *data_item = (Setting_GenGroupItem_Data *)data;
485 ret = setting_get_int_slp_key(
486 data_item->int_slp_setting_binded, &value, &err);
487 setting_retm_if(0 != ret, "get vconf failed");
489 /* if mmc card is not mounted, set vconf by 0(phone) */
491 ret = setting_set_int_slp_key(
492 data_item->int_slp_setting_binded, 0, &err);
493 setting_retm_if(ret != 0, "Set vconf failed");
495 G_FREE(data_item->sub_desc);
496 data_item->sub_desc = (char *)g_strdup(_("IDS_COM_BODY_PHONE"));
497 elm_object_item_data_set(data_item->item, data_item);
498 elm_genlist_item_update(data_item->item);