tizen 2.4 release
[apps/home/settings.git] / setting-storage / src / setting-storage-default.c
index 3bc5e70..2a2a539 100644 (file)
@@ -26,6 +26,12 @@ enum {
     STORAGEUG_DEFAULT_STORAGE_SD
 };
 
+enum {
+    SETTING_DEF_MEMORY_PHONE = 0,
+    SETTING_DEF_MEMORY_MMC,
+    SETTING_DEF_MEMORY_MAX
+};
+
 static setting_view setting_view_storage_default;
 
 
@@ -89,6 +95,12 @@ static void _storageUg_default_set_value(Elm_Object_Item *parentItem,
        d_parentItem->sub_desc = (char *)g_strdup(d_subItem->keyStr);
        elm_object_item_data_set(d_parentItem->item, d_parentItem);
        elm_genlist_item_update(d_parentItem->item);
+
+       SettingStorageUG *ad = d_parentItem->userdata;
+       if (ad && ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
 }
 
 static void storageUg_default_expand_item_sel(void *data, Evas_Object *obj,
@@ -99,23 +111,27 @@ static void storageUg_default_expand_item_sel(void *data, Evas_Object *obj,
        Setting_GenGroupItem_Data *d_subItem;
        Setting_GenGroupItem_Data *d_parentItem;
 
-       ret_if(event_info == NULL);
+       ret_if(event_info == NULL || data == NULL);
 
        elm_genlist_item_selected_set(subitem, 0);
 
-       parentItem = elm_genlist_item_parent_get(subitem);
+       /*parentItem = elm_genlist_item_parent_get(subitem); */
+
 
        d_subItem = elm_object_item_data_get(subitem);
        ret_if(NULL == d_subItem);
 
-       d_parentItem = elm_object_item_data_get(parentItem);    /* parent data */
+       d_parentItem = (Setting_GenGroupItem_Data *)data;       /* parent data */
        ret_if(NULL == d_parentItem);
 
+       parentItem = d_parentItem->item;
+
        elm_radio_value_set(d_subItem->rgd, d_subItem->chk_status);
 
        _storageUg_default_set_value(parentItem, d_subItem, d_parentItem);
 
-       elm_genlist_item_expanded_set(d_parentItem->item, EINA_FALSE);
+
+       /*elm_genlist_item_expanded_set(d_parentItem->item, EINA_FALSE); */
 }
 
 
@@ -132,7 +148,6 @@ static void storageUg_default_radio_change(void *data, Evas_Object *obj,
        list_item->chk_status = elm_radio_value_get(obj);       /*  for update */
 
        subItem = list_item->item;
-       parentItem = elm_genlist_item_parent_get(subItem);
 
        d_subItem = elm_object_item_data_get(subItem);
        ret_if(NULL == d_subItem);
@@ -140,62 +155,12 @@ static void storageUg_default_radio_change(void *data, Evas_Object *obj,
        if (d_subItem->disableflag)
                return;
 
-       d_parentItem = elm_object_item_data_get(parentItem);
+       d_parentItem = (Setting_GenGroupItem_Data *)data;
        ret_if(NULL == d_parentItem);
 
-       _storageUg_default_set_value(parentItem, d_subItem, d_parentItem);
-}
+       parentItem = d_parentItem->item;
 
-static void storageUg_default_expand_cb(void *data, Evas_Object *obj,
-                                        void *event_info)
-{
-       Evas_Object *scroller, *rgd;
-       SettingStorageUG *ad = data;
-       Setting_GenGroupItem_Data *data_parentItem;
-       Setting_GenGroupItem_Data *memory_card;
-       Setting_GenGroupItem_Data *phone = NULL;
-       Elm_Object_Item *parentItem = event_info;       /* parent item */
-
-       ret_if(NULL == data);
-       ret_if(NULL == event_info);
-
-       data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
-       scroller = elm_object_item_widget_get(parentItem);
-
-       if (data_parentItem == ad->data_bt || data_parentItem == ad->data_nfc
-           || data_parentItem == ad->data_wifidirect
-           || data_parentItem == ad->data_installapp) {
-               rgd = elm_radio_add(scroller);
-               elm_radio_value_set(rgd, -1);
-               phone = setting_create_Gendial_exp_sub_field(scroller, &itc_1icon_1text_sub,
-                               storageUg_default_expand_item_sel, ad, parentItem, SWALLOW_Type_1RADIO,
-                               rgd, SETTING_DEF_MEMORY_PHONE, STORAGEUG_STR_INTERNAL_STORAGE, NULL);
-               if (phone) {
-                       setting_genlist_item_groupstyle_set(phone, SETTING_GROUP_STYLE_CENTER);
-                       phone->disableflag = EINA_FALSE;
-               }
-
-               memory_card = setting_create_Gendial_exp_sub_field(scroller,
-                                                                  &itc_1icon_1text_sub, storageUg_default_expand_item_sel, ad,
-                                                                  parentItem, SWALLOW_Type_1RADIO, rgd, SETTING_DEF_MEMORY_MMC,
-                                                                  STORAGEUG_STR_SD_CARD, storageUg_default_radio_change);
-               retm_if(NULL == memory_card, "setting_create_Gendial_exp_sub_field() Fail");
-               if (data_parentItem == ad->data_wifidirect
-                   || data_parentItem == ad->data_installapp) {
-                       setting_genlist_item_groupstyle_set(memory_card, SETTING_GROUP_STYLE_BOTTOM);
-               } else {
-                       setting_genlist_item_groupstyle_set(memory_card, SETTING_GROUP_STYLE_CENTER);
-               }
-
-               memory_card->disableflag = EINA_FALSE;
-
-               if (ad->mmc_status != VCONFKEY_SYSMAN_MMC_MOUNTED) {
-                       setting_disable_genlist_item(memory_card->item);
-                       memory_card->disableflag = EINA_TRUE;
-               }
-
-               setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
-       }
+       _storageUg_default_set_value(parentItem, d_subItem, d_parentItem);
 }
 
 static void storageUg_default_reset_vconf(Setting_GenGroupItem_Data *data_item)
@@ -241,19 +206,6 @@ static void storageUg_default_mmc_changed_cb(keynode_t *node, void *data)
                storageUg_default_reset_vconf(ad->data_nfc);
                storageUg_default_reset_vconf(ad->data_installapp);
        }
-
-       /* when vconf change, expand set false */
-       if (ad->data_bt && ad->data_bt->item)
-               elm_genlist_item_expanded_set(ad->data_bt->item, EINA_FALSE);
-
-       if (ad->data_nfc && ad->data_nfc->item)
-               elm_genlist_item_expanded_set(ad->data_nfc->item, EINA_FALSE);
-
-       if (ad->data_wifidirect && ad->data_wifidirect->item)
-               elm_genlist_item_expanded_set(ad->data_wifidirect->item, EINA_FALSE);
-
-       if (ad->data_installapp && ad->data_installapp->item)
-               elm_genlist_item_expanded_set(ad->data_installapp->item, EINA_FALSE);
 }
 
 static const char *storageUg_default_cur_storage_get(int mmc_status,
@@ -278,12 +230,94 @@ static const char *storageUg_default_cur_storage_get(int mmc_status,
        else
                return phone;
 }
+void __storageUg_default_popup_del(void *data, Evas_Object *obj, void *event_info)
+{
+       SettingStorageUG *ad = data;
+
+       ret_if(data == NULL);
+
+       evas_object_del(ad->popup);
+       ad->popup = NULL;
+}
+
+static void storageUg_default_main_item_sel(void *data, Evas_Object *obj,
+                                            void *event_info)
+{
+
+       ret_if(NULL == data || NULL == event_info);
+       SETTING_TRACE_BEGIN;
+       SettingStorageUG *ad = (SettingStorageUG *) data;
+       Elm_Object_Item *parentItem = event_info;       /* parent item */
+       elm_genlist_item_selected_set(parentItem, 0);
+       Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
+
+       /* create popup */
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+
+       Evas_Object *scroller = NULL;
+       ad->popup = setting_create_popup_with_list(&scroller, ad, ad->win,
+                                                  data_parentItem->keyStr, NULL, 0, false, false, 0);
+       _P(ad->popup);
+
+
+       Evas_Object *rgd;
+
+       Setting_GenGroupItem_Data *memory_card;
+       Setting_GenGroupItem_Data *phone;
+
+
+       if (data_parentItem == ad->data_bt || data_parentItem == ad->data_nfc
+           || data_parentItem == ad->data_wifidirect
+           || data_parentItem == ad->data_installapp) {
+               SETTING_TRACE("POPUP ITEMS IS CREATED");
+               rgd = elm_radio_add(scroller);
+               elm_object_style_set(rgd, "list");
+               evas_object_propagate_events_set(rgd, EINA_TRUE);
+               elm_radio_value_set(rgd, -1);
+               /*phone = setting_create_Gendial_exp_sub_field(scroller, &itc_1icon_1text_sub,
+                               storageUg_default_expand_item_sel, ad, parentItem, SWALLOW_Type_1RADIO_RIGHT,
+                               rgd, SETTING_DEF_MEMORY_PHONE, STORAGEUG_STR_INTERNAL_STORAGE, NULL);*/
+               phone = setting_create_Gendial_field_1radio(scroller,
+                                                           &itc_multiline_1text_1icon,
+                                                           storageUg_default_expand_item_sel, data_parentItem,
+                                                           SWALLOW_Type_1RADIO_RIGHT, rgd,
+                                                           SETTING_DEF_MEMORY_PHONE,
+                                                           STORAGEUG_STR_INTERNAL_STORAGE,
+                                                           NULL);
+               setting_retm_if(NULL == phone, "phone is NULL");
+               phone->disableflag = EINA_FALSE;
+
+               /*memory_card = setting_create_Gendial_exp_sub_field(scroller,
+                               &itc_1icon_1text_sub, storageUg_default_expand_item_sel, ad,
+                               parentItem, SWALLOW_Type_1RADIO_RIGHT, rgd, SETTING_DEF_MEMORY_MMC,
+                               STORAGEUG_STR_SD_CARD, storageUg_default_radio_change);*/
+               memory_card = setting_create_Gendial_field_1radio(scroller,
+                                                                 &itc_multiline_1text_1icon,
+                                                                 storageUg_default_expand_item_sel, data_parentItem,
+                                                                 SWALLOW_Type_1RADIO_RIGHT, rgd,
+                                                                 SETTING_DEF_MEMORY_MMC,
+                                                                 STORAGEUG_STR_SD_CARD,
+                                                                 storageUg_default_radio_change);
+               retm_if(NULL == memory_card, "setting_create_Gendial_exp_sub_field() Fail");
+
+               memory_card->disableflag = EINA_FALSE;
+
+               if (ad->mmc_status != VCONFKEY_SYSMAN_MMC_MOUNTED) {
+                       setting_disable_genlist_item(memory_card->item);
+                       memory_card->disableflag = EINA_TRUE;
+               }
+
+               setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
+       }
+}
 
 static int storageUg_default_create(void *data)
 {
        int ret;
        SettingStorageUG *ad = data;
-       Elm_Object_Item *item = NULL;
        Evas_Object *genlist = NULL;
        const char *grp_title, *item_title;
        const char *cur_storage;
@@ -301,11 +335,6 @@ static int storageUg_default_create(void *data)
                                             NULL, ad, &genlist, ad->navi);
        elm_genlist_realization_mode_set(genlist, EINA_FALSE);
 
-       setting_enable_expandable_genlist(genlist, ad,
-                                         storageUg_default_expand_cb, NULL);
-
-       storageUg_append_separator(genlist, ad);
-
        /*Shared contents */
        setting_create_Gendial_field_titleItem(genlist, &itc_group_item,
                                               STORAGEUG_STR_SHARED_CONTENTS, NULL);
@@ -313,47 +342,30 @@ static int storageUg_default_create(void *data)
        /* bluetooth */
        cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
                                                        INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH);
-       ad->data_bt = setting_create_Gendial_exp_parent_field(genlist,
-                                                             &itc_2text_3_parent, NULL, NULL, SWALLOW_Type_INVALID,
-                                                             STORAGEUG_STR_BT, (char *)cur_storage, SETTING_GROUP_STYLE_TOP,
-                                                             SETTING_GROUP_STYLE_TOP);
-       if (ad->data_bt)
+       ad->data_bt = setting_create_Gendial_field_def(genlist, &(itc_2text), storageUg_default_main_item_sel,
+                                                      ad, SWALLOW_Type_INVALID, NULL,
+                                                      NULL, 0, STORAGEUG_STR_BT, (char *)cur_storage, NULL);
+       if (ad->data_bt) {
                ad->data_bt->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH;
-       else
-               SETTING_TRACE_ERROR("ad->data_bt is NULL");
-
-#if 0
-       /* NFC */
-
-       cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
-                                                       INT_SLP_SETTING_DEFAULT_MEM_NFC);
-       ad->data_nfc = setting_create_Gendial_exp_parent_field(genlist,
-                                                              &itc_2text_3_parent, NULL, NULL, SWALLOW_Type_INVALID,
-                                                              STORAGEUG_STR_NFC, (char *)cur_storage, SETTING_GROUP_STYLE_CENTER,
-                                                              SETTING_GROUP_STYLE_CENTER);
-       if (ad->data_nfc) {
-               ad->data_nfc->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_NFC;
+               ad->data_bt->userdata = ad;
        } else {
-               SETTING_TRACE_ERROR("ad->data_dload is NULL");
+               SETTING_TRACE_ERROR("ad->data_bt is NULL");
        }
-#endif
 
        /* Wifi Direct */
        cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
                                                        INT_SLP_SETTING_DEFAULT_MEM_WIFIDIRECT);
-       ad->data_wifidirect = setting_create_Gendial_exp_parent_field(genlist,
-                                                                     &itc_2text_3_parent, NULL, NULL, SWALLOW_Type_INVALID,
-                                                                     STORAGEUG_STR_WIFI, (char *)cur_storage, SETTING_GROUP_STYLE_CENTER,
-                                                                     SETTING_GROUP_STYLE_BOTTOM);
+       ad->data_wifidirect = setting_create_Gendial_field_def(genlist, &(itc_2text), storageUg_default_main_item_sel,
+                                                              ad, SWALLOW_Type_INVALID, NULL,
+                                                              NULL, 0, STORAGEUG_STR_WIFI, (char *)cur_storage, NULL);
        if (ad->data_wifidirect) {
                ad->data_wifidirect->int_slp_setting_binded = INT_SLP_SETTING_DEFAULT_MEM_WIFIDIRECT;
+               ad->data_wifidirect->userdata = ad;
        } else {
                SETTING_TRACE_ERROR("ad->data_wifidirect is NULL");
        }
 
        /*Install application */
-       storageUg_append_separator(genlist, ad);
-
        grp_title = STORAGEUG_STR_INSTALLED_APP_H;
        item_title = STORAGEUG_STR_INSTALLED_APP_B;
 
@@ -362,18 +374,17 @@ static int storageUg_default_create(void *data)
 
        cur_storage = storageUg_default_cur_storage_get(ad->mmc_status,
                                                        INT_SLP_SETTING_DEFAULT_MEM_INSTALLAPPLICATIONS);
-       ad->data_installapp = setting_create_Gendial_exp_parent_field(genlist,
-                                                                     &itc_2text_3_parent, NULL, NULL, SWALLOW_Type_INVALID, item_title,
-                                                                     (char *)cur_storage, SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
+       ad->data_installapp = setting_create_Gendial_field_def(genlist, &(itc_2text), storageUg_default_main_item_sel,
+                                                              ad, SWALLOW_Type_INVALID, NULL,
+                                                              NULL, 0, item_title, (char *)cur_storage, NULL);
        if (ad->data_installapp) {
                ad->data_installapp->int_slp_setting_binded =
                    INT_SLP_SETTING_DEFAULT_MEM_INSTALLAPPLICATIONS;
+               ad->data_installapp->userdata = ad;
        } else {
                SETTING_TRACE_ERROR("ad->data_installapp is NULL");
        }
 
-       storageUg_append_separator(genlist, ad);
-
        ADD_GL_HELP(genlist, STORAGEUG_STR_APP_LOC_NOTICE);
 
        ret = vconf_notify_key_changed(storageUg_MMC_stat, storageUg_default_mmc_changed_cb,
@@ -392,10 +403,13 @@ static int storageUg_default_destroy(void *data)
 {
        int ret;
 
+       SettingStorageUG *ad = (SettingStorageUG *) data;
+
        ret = vconf_ignore_key_changed(storageUg_MMC_stat, storageUg_default_mmc_changed_cb);
        warn_if(ret, "vconf_ignore_key_changed(%s) Fail(%d)", storageUg_MMC_stat, ret);
 
        setting_view_storage_default.is_create = 0;
+       elm_naviframe_item_pop(ad->navi);
 
        return SETTING_RETURN_SUCCESS;
 }