[SM][Mob]Genlist and item classes refactoring 96/154596/4
authorPawel Aksiutowicz <p.aksiutowic@partner.samsung.com>
Tue, 10 Oct 2017 15:22:41 +0000 (17:22 +0200)
committerPawel Aksiutowicz <p.aksiutowic@partner.samsung.com>
Wed, 11 Oct 2017 16:04:15 +0000 (18:04 +0200)
Change-Id: I3e7d0220a67f097c5a290da707e21889959833bb
Signed-off-by: Pawel Aksiutowicz <p.aksiutowic@partner.samsung.com>
setting-smartmanager/smartmanager-data/include/smartmanager-data.h
setting-smartmanager/smartmanager-data/src/smartmanager-data-usage-mobile-settings.c

index 3de71a432bec54534c9cbef6e72fa62d06b6cc83..cb60a1a24e5036f5aa42523023294b1698588bb4 100755 (executable)
@@ -126,7 +126,6 @@ typedef struct {
 
        /* Mobile view data usage settings: */
        setting_view *mobile_view;
-       Evas_Object *mobile_data_setting_genlist;
        const char *selected_sim_subscriber_id;
        Data_Limits_T *selected_sim_limits;
 
index 379f5544befed95c66a3f2e3cb76a1db7124d95f..8b0aa94353aca512aa2e4292379903bdb0c9c95c 100755 (executable)
@@ -28,6 +28,11 @@ static void _create_monthly_start_date_popup(void *data, Evas_Object *obj, void
 static void _create_start_date_list_popup(void *data, Evas_Object *obj, void *event_info);
 static void create_custom_start_date_popup(void *data, Evas_Object *obj, void *event_info);
 
+static Evas_Object *_genlist_cycle_radio_content_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_genlist_start_date_radio_content_get(void *data, Evas_Object *obj, const char *part);
+static char *_genlist_radio_text_get(void *data, Evas_Object *obj, const char *part);
+static void _genlist_radio_del(void *data, Evas_Object *obj);
+
 static void _softkey_back_cb(void *data, Evas_Object *obj,
                void *event_info);
 static Eina_Bool _pop_view_cb(void *data, Elm_Object_Item *it);
@@ -137,9 +142,34 @@ static Element elements[] = {
 
 static Popup_Info popup_info = {0,};
 
+static Evas_Object *mobile_data_setting_genlist = NULL;
 static Evas_Object *cycle_mode_radio_group = NULL;
 static Evas_Object *start_weekday_radio_group = NULL;
 
+static Elm_Genlist_Item_Class itc_genlist_element = {
+       .item_style = "type2",
+       .func.text_get = _item_label_get
+};
+
+static Elm_Genlist_Item_Class itc_genlist_last_element = {
+               .item_style = "multiline",
+               .func.text_get = _last_item_label_get
+};
+
+static Elm_Genlist_Item_Class itc_cycle_list = {
+               .item_style = "type1",
+               .func.content_get = _genlist_cycle_radio_content_get,
+               .func.text_get = _genlist_radio_text_get,
+               .func.del = _genlist_radio_del
+};
+
+static Elm_Genlist_Item_Class itc_start_date_list = {
+               .item_style = "type1",
+               .func.content_get = _genlist_start_date_radio_content_get,
+               .func.text_get = _genlist_radio_text_get,
+               .func.del = _genlist_radio_del
+};
+
 static Elm_Entry_Filter_Accept_Set accept_set = {
                .accepted = "0123456789.",
                .rejected = NULL
@@ -152,17 +182,11 @@ static Elm_Entry_Filter_Limit_Size limit_size = {
 void complement_data_usage_mobile_genlist(Evas_Object *mobile_genlist, SmartMgrData *smd)
 {
        int i = 0;
-       Elm_Genlist_Item_Class *itc_genlist_element = NULL;
-       Elm_Genlist_Item_Class *itc_genlist_last_element = NULL;
        Elm_Object_Item *last_item = NULL;
 
        elm_genlist_mode_set(mobile_genlist, ELM_LIST_COMPRESS);
        elm_genlist_clear(mobile_genlist);
 
-       itc_genlist_element = elm_genlist_item_class_new();
-       itc_genlist_element->item_style = "type2";
-       itc_genlist_element->func.text_get = _item_label_get;
-
        _update_genlist_warning_item(smd);
        _update_genlist_limit_item(smd);
        _update_genlist_cycle_item(smd);
@@ -173,29 +197,21 @@ void complement_data_usage_mobile_genlist(Evas_Object *mobile_genlist, SmartMgrD
        for (i = 0; i < EINA_C_ARRAY_LENGTH(elements)-1; i++) {
                elements[i].smd = smd;
                if (elements[i].value) {
-                       elm_genlist_item_append(mobile_genlist, itc_genlist_element,
+                       elm_genlist_item_append(mobile_genlist, &itc_genlist_element,
                                &elements[i], NULL, ELM_GENLIST_ITEM_NONE, elements[i].function,
                                smd);
                }
        }
 
-       elm_genlist_item_class_free(itc_genlist_element);
-
-       itc_genlist_last_element = elm_genlist_item_class_new();
-       itc_genlist_last_element->item_style = "multiline";
-       itc_genlist_last_element->func.text_get = _last_item_label_get;
-
        _update_genlist_info_item(smd);
        elements[EINA_C_ARRAY_LENGTH(elements)-1].smd = smd;
 
        last_item = elm_genlist_item_append(mobile_genlist,
-               itc_genlist_last_element, &elements[EINA_C_ARRAY_LENGTH(elements)-1],
+               &itc_genlist_last_element, &elements[EINA_C_ARRAY_LENGTH(elements)-1],
                NULL, ELM_GENLIST_ITEM_NONE, NULL,
                &elements[EINA_C_ARRAY_LENGTH(elements)-1]);
        elm_genlist_item_select_mode_set(last_item, ELM_OBJECT_SELECT_MODE_NONE);
 
-       elm_genlist_item_class_free(itc_genlist_last_element);
-
        evas_object_show(mobile_genlist);
 }
 
@@ -445,7 +461,7 @@ static void _custom_cycle_popup_ok_cb(void *data, Evas_Object *obj,
                } else {
                        smd->selected_sim_limits->custom_mode_interval = value;
                        complement_data_usage_mobile_genlist(
-                                                       smd->mobile_data_setting_genlist,
+                                                       mobile_data_setting_genlist,
                                                        smd);
 
                        write_cycle_interval(smd);
@@ -544,7 +560,7 @@ static void _custom_start_date_popup_ok_cb(void *data, Evas_Object *obj,
                elm_datetime_value_set(popup_info.content, (Elm_Datetime_Time *)&max_date);
        } else {
                smd->selected_sim_limits->cycle_start = set_date;
-               complement_data_usage_mobile_genlist(smd->mobile_data_setting_genlist, smd);
+               complement_data_usage_mobile_genlist(mobile_data_setting_genlist, smd);
 
                write_cycle_mode(smd);
                write_cycle_start(smd);
@@ -703,18 +719,6 @@ static void _genlist_radio_del(void *data, Evas_Object *obj)
        free(item_data);
 }
 
-static Elm_Gen_Item_Class *_create_genlist_1_line_class(Elm_Gen_Item_Content_Get_Cb _genlist_radio_content_get)
-{
-       Elm_Gen_Item_Class *itc = elm_genlist_item_class_new();
-       retv_if(!itc, NULL);
-
-       itc->item_style = "type1";
-       itc->func.content_get = _genlist_radio_content_get;
-       itc->func.text_get = _genlist_radio_text_get;
-       itc->func.del = _genlist_radio_del;
-       return itc;
-}
-
 void _radio_cycle_list_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
 {
        Radio_List_Item_T *item_data = (Radio_List_Item_T *)data;
@@ -725,7 +729,7 @@ void _radio_cycle_list_item_selected_cb(void *data, Evas_Object *obj, void *even
                elm_radio_value_set(cycle_mode_radio_group, item_data->smd->selected_sim_limits->cycle_mode);
        }
 
-       complement_data_usage_mobile_genlist(item_data->smd->mobile_data_setting_genlist, item_data->smd);
+       complement_data_usage_mobile_genlist(mobile_data_setting_genlist, item_data->smd);
 
        if (item_data->smd->selected_sim_limits->cycle_mode == CYCLE_MODE_CUSTOM)
                _create_custom_cycle_popup(item_data->smd, "Set data usage cycle", item_data->smd->selected_sim_limits->custom_mode_interval);
@@ -769,7 +773,7 @@ static void _radio_cycle_selected_cb(void *data, Evas_Object *obj, void *event_i
                elm_radio_value_set(cycle_mode_radio_group, item_data->smd->selected_sim_limits->cycle_mode);
        }
 
-       complement_data_usage_mobile_genlist(item_data->smd->mobile_data_setting_genlist, item_data->smd);
+       complement_data_usage_mobile_genlist(mobile_data_setting_genlist, item_data->smd);
 
        if (item_data->smd->selected_sim_limits->cycle_mode == CYCLE_MODE_CUSTOM)
                _create_custom_cycle_popup(item_data->smd, "Set data usage cycle", item_data->smd->selected_sim_limits->custom_mode_interval);
@@ -812,19 +816,15 @@ static void _create_cycle_list_popup(void *data, Evas_Object *obj, void *event_i
 
        int i;
        Evas_Object *genlist = NULL;
-       Elm_Gen_Item_Class *itc = NULL;
        Evas_Object *popup = setting_create_popup_with_list(&genlist, NULL, smd->md.naviframe, "Select data usage cycle", NULL, 0, EINA_TRUE, EINA_FALSE, 0);
 
        cycle_mode_radio_group = elm_radio_add(genlist);
        elm_radio_value_set(cycle_mode_radio_group, smd->selected_sim_limits->cycle_mode);
 
-       itc = _create_genlist_1_line_class(_genlist_cycle_radio_content_get);
        for (i = 0; i < EINA_C_ARRAY_LENGTH(elements_cycle_initial_values); ++i) {
-               _append_item_to_radio_list(smd, popup, genlist, itc, elements_cycle_initial_values[i],
+               _append_item_to_radio_list(smd, popup, genlist, &itc_cycle_list, elements_cycle_initial_values[i],
                                i, !i, _radio_cycle_list_item_selected_cb);
        }
-
-       elm_genlist_item_class_free(itc);
 }
 
 static void _monthly_start_date_popup_done_cb(void *data, Evas_Object *obj, void *event_info)
@@ -841,7 +841,7 @@ static void _monthly_start_date_popup_done_cb(void *data, Evas_Object *obj, void
                        smd->selected_sim_limits->cycle_start);
        elements[ELEMENT_TYPE_START_DATE].value = strdup(buf);
        elm_genlist_realized_items_update(
-                       smd->mobile_data_setting_genlist);
+                       mobile_data_setting_genlist);
 
        write_cycle_mode(smd);
        write_cycle_start(smd);
@@ -898,7 +898,7 @@ static void _radio_start_date_selected_cb(void *data, Evas_Object *obj, void *ev
        item_data->smd->selected_sim_limits->cycle_start = item_data->radio_value;
        elm_radio_value_set(start_weekday_radio_group, item_data->smd->selected_sim_limits->cycle_start);
 
-       complement_data_usage_mobile_genlist(item_data->smd->mobile_data_setting_genlist, item_data->smd);
+       complement_data_usage_mobile_genlist(mobile_data_setting_genlist, item_data->smd);
 
        evas_object_del(item_data->popup);
 }
@@ -935,20 +935,15 @@ static void _create_start_date_list_popup(void *data, Evas_Object *obj, void *ev
 
        int i;
        Evas_Object *genlist = NULL;
-       Elm_Gen_Item_Class *itc = NULL;
        Evas_Object *popup = setting_create_popup_with_list(&genlist, NULL, smd->md.naviframe, "Select start day", NULL, 0, EINA_TRUE, EINA_FALSE, 0);
 
        start_weekday_radio_group = elm_radio_add(genlist);
        elm_radio_value_set(start_weekday_radio_group, smd->selected_sim_limits->cycle_mode);
 
-       itc = _create_genlist_1_line_class(
-                       _genlist_start_date_radio_content_get);
        for (i = 0; i < EINA_C_ARRAY_LENGTH(elements_cycle_day_of_week); ++i) {
-               _append_item_to_radio_list(smd, popup, genlist, itc, elements_cycle_day_of_week[i],
+               _append_item_to_radio_list(smd, popup, genlist, &itc_start_date_list, elements_cycle_day_of_week[i],
                                i+1, !i, _radio_start_date_list_item_selected_cb);
        }
-
-       elm_genlist_item_class_free(itc);
 }
 
 static void create_custom_start_date_popup(void *data, Evas_Object *obj, void *event_info)
@@ -983,7 +978,7 @@ static void _update_genlist_warning_item(SmartMgrData *smd)
                elements[ELEMENT_TYPE_WARNING].value = elements_initial_values[ELEMENT_TYPE_WARNING];
        }
 
-       elm_genlist_realized_items_update(smd->mobile_data_setting_genlist);
+       elm_genlist_realized_items_update(mobile_data_setting_genlist);
 }
 
 static void _update_genlist_limit_item(SmartMgrData *smd)
@@ -997,7 +992,7 @@ static void _update_genlist_limit_item(SmartMgrData *smd)
                elements[ELEMENT_TYPE_LIMIT].value = elements_initial_values[ELEMENT_TYPE_LIMIT];
        }
 
-       elm_genlist_realized_items_update(smd->mobile_data_setting_genlist);
+       elm_genlist_realized_items_update(mobile_data_setting_genlist);
 }
 
 static void _update_genlist_cycle_item(SmartMgrData *smd)
@@ -1013,7 +1008,7 @@ static void _update_genlist_cycle_item(SmartMgrData *smd)
                elements[ELEMENT_TYPE_CYCLE].value = strdup(elements_cycle_initial_values[smd->selected_sim_limits->cycle_mode]);
        }
 
-       elm_genlist_realized_items_update(smd->mobile_data_setting_genlist);
+       elm_genlist_realized_items_update(mobile_data_setting_genlist);
 }
 
 static void _update_genlist_start_date_item(SmartMgrData *smd)
@@ -1057,7 +1052,7 @@ static void _update_genlist_start_date_item(SmartMgrData *smd)
                }
        }
 
-       elm_genlist_realized_items_update(smd->mobile_data_setting_genlist);
+       elm_genlist_realized_items_update(mobile_data_setting_genlist);
 }
 
 static void _update_genlist_info_item(SmartMgrData *smd)
@@ -1066,7 +1061,7 @@ static void _update_genlist_info_item(SmartMgrData *smd)
 
        elements[ELEMENT_TYPE_INFO].value = strdup(elements_info_initial_values[smd->selected_sim_limits->cycle_mode]);
 
-       elm_genlist_realized_items_update(smd->mobile_data_setting_genlist);
+       elm_genlist_realized_items_update(mobile_data_setting_genlist);
 }
 
 static int _create(void *data)
@@ -1079,10 +1074,10 @@ static int _create(void *data)
        elm_object_style_set(back_btn, NAVI_BACK_ARROW_BUTTON_STYLE);
        evas_object_smart_callback_add(back_btn, "clicked", _softkey_back_cb, smd);
 
-       smd->mobile_data_setting_genlist = elm_genlist_add(smd->md.naviframe);
-       complement_data_usage_mobile_genlist(smd->mobile_data_setting_genlist, smd);
+       mobile_data_setting_genlist = elm_genlist_add(smd->md.naviframe);
+       complement_data_usage_mobile_genlist(mobile_data_setting_genlist, smd);
 
-       nf_it = elm_naviframe_item_push(smd->md.naviframe, data_usage_mobile_strings[0], back_btn, NULL, smd->mobile_data_setting_genlist, NULL);
+       nf_it = elm_naviframe_item_push(smd->md.naviframe, data_usage_mobile_strings[0], back_btn, NULL, mobile_data_setting_genlist, NULL);
        elm_naviframe_item_style_set(nf_it, "tabbar");
        elm_naviframe_item_pop_cb_set(nf_it, _pop_view_cb, smd);
 
@@ -1104,7 +1099,7 @@ static int _update(void* data)
        SmartMgrData *smd = (SmartMgrData *)data;
        retv_if(NULL == smd, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
 
-       complement_data_usage_mobile_genlist(smd->mobile_data_setting_genlist, smd);
+       complement_data_usage_mobile_genlist(mobile_data_setting_genlist, smd);
 
        return 0;
 }