static int _update(void *data);
static int _cleanup(void *data);
-void _complement_data_usage_wifi_genlist(Evas_Object *wifi_genlist,
- SmartMgrData *smd);
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);
-static char *_item_label_get(void *data, Evas_Object *obj, const char *part);
-static void _item_selected_cb(void *data, Evas_Object *obj, void *event_info);
-static char *_last_item_label_get(void *data, Evas_Object *obj,
- const char *part);
-static char *_radio_item_label_get(void *data, Evas_Object *obj,
- const char *part);
-static Evas_Object *_radio_item_content_get(void *data, Evas_Object *obj,
- const char *part);
-static void _radio_item_selected_cb(void *data, Evas_Object *obj,
- void *event_info);
-static void _radio_item_delete(void *data, Evas_Object *obj);
-
-setting_view sm_view_data_usage_wifi;
-
-static char *data_usage_wifi_strings[] = {
- "Data usage settings",
- "Set data usage cycle"
+static void _cycle_item_click_cb(void *data, Evas_Object *obj,
+ void *event_info);
+static void _start_date_item_click_cb(void *data, Evas_Object *obj,
+ void *event_info);
+static char *_cycle_item_text_get(void *data, Evas_Object *genlist,
+ const char *part);
+static char *_start_date_item_text_get(void *data, Evas_Object *genlist,
+ const char *part);
+static char *_info_item_text_get(void *data, Evas_Object *genlist,
+ const char *part);
+static char *_cycle_popup_radio_item_text_get(void *data, Evas_Object *genlist,
+ const char *part);
+static Evas_Object *_cycle_popup_radio_item_content_get(void *data,
+ Evas_Object *genlist, const char *part);
+static void _generate_list(SmartMgrData *ad, Evas_Object *genlist);
+
+static Elm_Genlist_Item_Class cycle_itc = {
+ .item_style = "type2",
+ .func.text_get = _cycle_item_text_get
};
-
-typedef enum {
- ELEMENT_TYPE_CYCLE,
- ELEMENT_TYPE_START_DATE,
- ELEMENT_TYPE_INFO
-} Element_Type;
-
-typedef struct {
- const char *name;
- char *value;
- Element_Type type;
- SmartMgrData *smd;
-} Element;
-
-
-static Element elements[] = {
- {"Cycle", NULL, ELEMENT_TYPE_CYCLE, NULL},
- {"Start date", "1", ELEMENT_TYPE_START_DATE, NULL},
- {"", "The data usage info will be reset on the 1st day of every month.", ELEMENT_TYPE_INFO, NULL}
+static Elm_Genlist_Item_Class start_date_itc = {
+ .item_style = "type2",
+ .func.text_get = _start_date_item_text_get
+};
+static Elm_Genlist_Item_Class info_itc = {
+ .item_style = "multiline",
+ .func.text_get = _info_item_text_get
+};
+static Elm_Genlist_Item_Class radio_itc = {
+ .item_style = "type1",
+ .func.text_get = _cycle_popup_radio_item_text_get,
+ .func.content_get = _cycle_popup_radio_item_content_get
};
-typedef struct {
- int radio_num;
- int radio_status;
- char *desc_str;
- SmartMgrData *smd;
-} Radio_Item_Data;
+setting_view sm_view_data_usage_wifi;
+
+static Evas_Object *cycle_popup_radio_group = NULL;
+static Evas_Object *cycle_popup = NULL;
+static Evas_Object *start_date_popup = NULL;
+static Evas_Object *start_date_popup_datetime = NULL;
-static char *elements_cycle_initial_values[] = {
+const static char *cycle_names[] = {
"Monthly",
"Weekly",
"Daily",
"Custom"
};
-static struct tm start_date = {0};
-
-static void _update_genlist_cycle_item(SmartMgrData *smd)
-{
- char buf[256] = {0};
- SETTING_TRACE_BEGIN;
-
- free(elements[ELEMENT_TYPE_CYCLE].value);
-
- if (smd->wifi_limits.custom_mode_interval && smd->wifi_limits.cycle_mode == CYCLE_MODE_CUSTOM) {
- snprintf(buf, sizeof(buf), "%d Days", smd->wifi_limits.custom_mode_interval);
- elements[ELEMENT_TYPE_CYCLE].value = strdup(buf);
- } else {
- elements[ELEMENT_TYPE_CYCLE].value = strdup(elements_cycle_initial_values[smd->wifi_limits.cycle_mode-1]);
- }
-
- SETTING_TRACE_DEBUG("GENLIST DATA UPDATE: %s", elements[ELEMENT_TYPE_CYCLE].value);
- elm_genlist_realized_items_update(smd->wifi_data_setting_genlist);
-
- SETTING_TRACE_END;
-}
-
-static void _update_genlist_start_date_item(SmartMgrData *smd)
-{
-
-}
-
-void _complement_data_usage_wifi_genlist(Evas_Object *wifi_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(wifi_genlist, ELM_LIST_COMPRESS);
- elm_genlist_clear(wifi_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_cycle_item(smd);
- _update_genlist_start_date_item(smd);
-
- for (i = 0; i < EINA_C_ARRAY_LENGTH(elements)-1; i++) {
- elm_genlist_item_append(wifi_genlist,
- itc_genlist_element, &elements[i], NULL, ELM_GENLIST_ITEM_NONE,
- _item_selected_cb, &elements[i]);
- elements[i].smd = 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;
-
- last_item = elm_genlist_item_append(wifi_genlist,
- itc_genlist_last_element, &elements[EINA_C_ARRAY_LENGTH(elements)-1],
- NULL, ELM_GENLIST_ITEM_NONE, NULL, &elements[i]);
- 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(wifi_genlist);
-}
+const static char *weekday_names[] = {
+ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
+};
-static void _popup_back_cb(void *data, Evas_Object *obj, void *event_info)
+static void _popup_back_cb(void *data, Evas_Object *popup, void *event_info)
{
- Evas_Object *popup = (Evas_Object *)data;
evas_object_del(popup);
}
+/*
-static Evas_Object *_create_popup(SmartMgrData *smd, char *title)
-{
- Evas_Object *popup = elm_popup_add(smd->md.window);
- if (!popup) {
- dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] popup == NULL",
- __FILE__, __LINE__);
- return NULL;
- }
-
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
- elm_object_part_text_set(popup, "title,text", title);
- eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, _popup_back_cb,
- popup);
-
- evas_object_show(popup);
- return popup;
-}
-
-static Radio_Item_Data *create_radio_item(SmartMgrData *smd, Evas_Object *genlist, Elm_Genlist_Item_Class *itc,
- setting_call_back_func select_cb, char *radio_str, int radio_num)
-{
- Radio_Item_Data *radio_item_data = (Radio_Item_Data *)calloc(1, sizeof(Radio_Item_Data));
- retv_if(!radio_item_data, NULL);
-
- radio_item_data->radio_num = radio_num;
- radio_item_data->desc_str = radio_str;
- radio_item_data->smd = smd;
-
- elm_genlist_item_append(genlist, itc, radio_item_data, NULL,
- ELM_GENLIST_ITEM_NONE, select_cb, (void *)smd);
-
- return radio_item_data;
-}
-
-static void _create_cycle_popup(SmartMgrData *smd, char *title)
-{
- int i = 0;
- Elm_Genlist_Item_Class *itc = NULL;
- smd->wifi_data_usage_cycle_popup = _create_popup(smd, title);
- evas_object_size_hint_weight_set(smd->wifi_data_usage_cycle_popup, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
-
- smd->wifi_data_usage_cycle_genlist = elm_genlist_add(smd->wifi_data_usage_cycle_popup);
- elm_object_content_set(smd->wifi_data_usage_cycle_popup, smd->wifi_data_usage_cycle_genlist);
- evas_object_show(smd->wifi_data_usage_cycle_genlist);
-
- smd->wifi_data_usage_cycle_radiogroup = elm_radio_add(smd->wifi_data_usage_cycle_genlist);
- elm_object_style_set(smd->wifi_data_usage_cycle_radiogroup, "list");
- elm_radio_state_value_set(smd->wifi_data_usage_cycle_radiogroup, -1);
- evas_object_data_set(smd->wifi_data_usage_cycle_genlist, "radio", smd->wifi_data_usage_cycle_radiogroup);
-
- itc = elm_genlist_item_class_new();
- itc->item_style = "type1";
- itc->func.text_get = _radio_item_label_get;
- itc->func.content_get = _radio_item_content_get;
- itc->func.del = _radio_item_delete;
-
- for (i = 0; i < 4; i++)
- create_radio_item(smd, smd->wifi_data_usage_cycle_genlist, itc, _radio_item_selected_cb,
- elements_cycle_initial_values[i], i+1);
-
- elm_genlist_item_class_free(itc);
-}
-
-static void _start_date_cancel_btn_cb(void *data, Evas_Object *obj,
- void *event_info)
-{
- SmartMgrData *smd = (SmartMgrData *)data;
- ret_if(!smd);
-
- evas_object_del(smd->wifi_start_date_popup);
- smd->wifi_start_date_popup = NULL;
-}
-
-static void _start_date_set_btn_cb(void *data, Evas_Object *obj,
- void *event_info)
-{
- bool res = false;
- SmartMgrData *smd = (SmartMgrData *)data;
- ret_if(!smd);
-
- smd->wifi_start_date = start_date;
- evas_object_del(smd->wifi_start_date_popup);
- smd->wifi_start_date_popup = NULL;
-
- res = write_wifi_cycle_start(mktime(&smd->wifi_start_date));
- ret_if(!res);
-}
-
-static void _day_picker_value_changed_cb(void *data, Evas_Object *obj, void *event_info)
-{
- Eina_Bool day_res = EINA_FALSE;
- SmartMgrData *smd = (SmartMgrData *)data;
- ret_if(!smd);
- day_res = elm_datetime_value_get(smd->wifi_day_picker, &start_date);
- ret_if(!day_res);
-}
static Evas_Object *_create_datetime(Evas_Object *parent, setting_call_back_func _datetime_picker_value_changed_cb, SmartMgrData *smd)
{
return day_picker;
}
-static Evas_Object *create_popup_button(Evas_Object *popup, char *part, char *title, setting_call_back_func _button_cb, SmartMgrData *smd)
-{
- Evas_Object *button = elm_button_add(popup);
- elm_object_text_set(button, title);
- elm_object_part_content_set(popup, part, button);
- evas_object_smart_callback_add(button, "clicked", _button_cb, smd);
- evas_object_show(button);
- return button;
-}
-
-static void _create_start_date_popup(SmartMgrData *smd, char *title)
-{
- smd->wifi_start_date_popup = _create_popup(smd, title);
- smd->wifi_day_picker = _create_datetime(smd->wifi_start_date_popup, _day_picker_value_changed_cb, smd);
-
- create_popup_button(smd->wifi_start_date_popup, "button1", "Cancel", _start_date_cancel_btn_cb, smd);
- create_popup_button(smd->wifi_start_date_popup, "button2", "Set", _start_date_set_btn_cb, smd);
-}
+*/
static int _create(void *data)
{
SmartMgrData *smd = (SmartMgrData *)data;
back_btn = elm_button_add(smd->md.naviframe);
- elm_object_style_set(back_btn, NAVI_BACK_ARROW_BUTTON_STYLE);
+ elm_object_style_set(back_btn, "naviframe/end_btn/default");
evas_object_smart_callback_add(back_btn, "clicked", _softkey_back_cb, smd);
smd->wifi_data_setting_genlist = elm_genlist_add(smd->md.naviframe);
- _complement_data_usage_wifi_genlist(smd->wifi_data_setting_genlist, smd);
-
+ _generate_list(smd, smd->wifi_data_setting_genlist);
nf_it = elm_naviframe_item_push(smd->md.naviframe,
- data_usage_wifi_strings[0], back_btn, NULL,
+ _("Data usage settings"), back_btn, NULL,
smd->wifi_data_setting_genlist, NULL);
- elm_naviframe_item_style_set(nf_it, "tabbar");
elm_naviframe_item_pop_cb_set(nf_it, _pop_view_cb, smd);
sm_view_data_usage_wifi.is_create = 1;
{
SmartMgrData *smd = (SmartMgrData *)data;
retv_if(NULL == smd, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
+ cycle_popup = NULL;
+ start_date_popup = NULL;
+ cycle_popup_radio_group = NULL;
+ start_date_popup_datetime = NULL;
sm_view_data_usage_wifi.is_create = 0;
return 0;
}
SmartMgrData *smd = (SmartMgrData *)data;
retv_if(NULL == smd, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- _complement_data_usage_wifi_genlist(smd->wifi_data_setting_genlist, smd);
-
return 0;
}
return EINA_TRUE;
}
-static char *_item_label_get(void *data, Evas_Object *obj, const char *part)
+static void _cycle_popup_item_selected_cb(void *ix, Evas_Object *genlist,
+ void *event_info)
{
- Element *element = (Element *)data;
- retv_if(!element, NULL);
+ SmartMgrData *smd = evas_object_data_get(genlist, "SmartMgrData");
- if (!safeStrCmp(part, "elm.text"))
- return strdup(element->value);
- else if (!safeStrCmp(part, "elm.text.sub"))
- return strdup(element->name);
- else
- return NULL;
-}
+ if (!smd)
+ return;
-static void _item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
- Element *element = (Element *)data;
- Elm_Object_Item *item = (Elm_Object_Item*)event_info;
-
- elm_genlist_item_selected_set(item, EINA_FALSE);
-
- switch (element->type) {
- case ELEMENT_TYPE_CYCLE:
- _create_cycle_popup(element->smd, "Select data usage cycle");
- break;
- case ELEMENT_TYPE_START_DATE:
- _create_start_date_popup(element->smd, "Select start date");
- break;
- default:
- break;
- }
+ bool res = false;
+
+ elm_genlist_item_selected_set(event_info, EINA_FALSE);
+ smd->wifi_limits.cycle_mode = (int)ix;
+ elm_radio_value_set(cycle_popup_radio_group, smd->wifi_limits.cycle_mode);
+ res = write_wifi_cycle_mode(smd->wifi_limits.cycle_mode);
+
+ if (!res)
+ SETTING_TRACE_ERROR("Failed to write wifi cycle mode");
+
+ evas_object_del(cycle_popup);
+ cycle_popup = NULL;
+ cycle_popup_radio_group = NULL;
+ elm_genlist_realized_items_update(smd->wifi_data_setting_genlist);
}
-static char *_last_item_label_get(void *data, Evas_Object *obj,
- const char *part)
+static void _cycle_popup_radio_changed_cb(void *data, Evas_Object *radio, void *event_info)
{
- Element *element = (Element *)data;
- retv_if(!element, NULL);
+ SmartMgrData *smd = data;
+ bool res = false;
- if (!safeStrCmp(part, "elm.text.multiline"))
- return strdup(element->value);
- else
- return NULL;
+ smd->wifi_limits.cycle_mode = elm_radio_state_value_get(radio);
+ res = write_wifi_cycle_mode(smd->wifi_limits.cycle_mode);
+ if (!res)
+ SETTING_TRACE_ERROR("Failed to write wifi cycle mode");
+
+ evas_object_del(cycle_popup);
+ cycle_popup = NULL;
+ cycle_popup_radio_group = NULL;
+ elm_genlist_realized_items_update(smd->wifi_data_setting_genlist);
}
-static char *_radio_item_label_get(void *data, Evas_Object *obj,
- const char *part)
+static char *_cycle_popup_radio_item_text_get(void *ix, Evas_Object *genlist,
+ const char *part)
{
- Radio_Item_Data *radio_item_data = (Radio_Item_Data *)data;
- retv_if(!radio_item_data, NULL);
if (!safeStrCmp(part, "elm.text"))
- return strdup(radio_item_data->desc_str);
+ return strdup(cycle_names[(int)ix]);
+ return NULL;
+}
+
+static Evas_Object *_cycle_popup_radio_item_content_get(void *ix,
+ Evas_Object *genlist, const char *part)
+{
+ Evas_Object *radio = NULL;
+ SmartMgrData *smd = evas_object_data_get(genlist, "SmartMgrData");
+
+ if (!safeStrCmp(part, "elm.swallow.end")) {
+ radio = elm_radio_add(genlist);
+ evas_object_propagate_events_set(radio, EINA_FALSE);
+ elm_radio_state_value_set(radio, (int)ix);
+ elm_radio_group_add(radio, cycle_popup_radio_group);
+ evas_object_smart_callback_add(radio, "changed",
+ _cycle_popup_radio_changed_cb, smd);
+ return radio;
+ }
return NULL;
}
-static void _radio_changed_cb(void *data, Evas_Object *radio, void *event_info)
+static Evas_Object *_create_popup(SmartMgrData *smd, char *title)
{
- bool res = false;
- Radio_Item_Data *radio_item_data = (Radio_Item_Data *)data;
- ret_if(!radio_item_data);
+ Evas_Object *popup = elm_popup_add(smd->md.window);
- if (radio_item_data->smd->wifi_limits.cycle_mode != radio_item_data->radio_num) {
- radio_item_data->smd->wifi_limits.cycle_mode = (Cycle_Mode_E)
- radio_item_data->radio_num;
- }
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_part_text_set(popup, "title,text", title);
+ eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, _popup_back_cb,
+ NULL);
+ evas_object_show(popup);
+
+ return popup;
+}
+
+static void _cycle_item_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ int ix = 0;
+ SmartMgrData *smd = data;
+ Evas_Object *genlist = NULL;
+
+ elm_genlist_item_selected_set(event_info, EINA_FALSE);
+ cycle_popup = _create_popup(smd, _("Select data usage cycle"));
- _complement_data_usage_wifi_genlist(radio_item_data->smd->wifi_data_setting_genlist, radio_item_data->smd);
+ genlist = elm_genlist_add(cycle_popup);
+ evas_object_data_set(genlist, "SmartMgrData", smd);
+ elm_object_content_set(cycle_popup, genlist);
- res = write_wifi_cycle_mode(radio_item_data->smd->wifi_limits.cycle_mode);
- ret_if(!res);
+ cycle_popup_radio_group = elm_radio_add(genlist);
- evas_object_del(radio_item_data->smd->wifi_data_usage_cycle_popup);
+ for (ix = 0; ix < sizeof(cycle_names) / sizeof(char *); ix++)
+ elm_genlist_item_append(genlist, &radio_itc, (void *)ix, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ _cycle_popup_item_selected_cb, (void *)ix);
+
+ elm_radio_value_set(cycle_popup_radio_group, smd->wifi_limits.cycle_mode);
}
-static Evas_Object *create_radio(SmartMgrData *smd, Evas_Object *parent, Radio_Item_Data *item)
+static void _start_date_popup_cancel_click_cb(void *data, Evas_Object *button,
+ void *event_info)
{
- Evas_Object *radio = elm_radio_add(parent);
- evas_object_propagate_events_set(radio, EINA_FALSE);
- elm_radio_state_value_set(radio, item->radio_num);
- elm_radio_group_add(radio, smd->wifi_data_usage_cycle_radiogroup);
+ evas_object_del(start_date_popup);
+ start_date_popup = NULL;
+ start_date_popup_datetime = NULL;
+}
+
+static void _start_date_popup_set_click_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ struct tm start_date = {0};
+ Eina_Bool time_res = EINA_FALSE;
+ SmartMgrData *smd = data;
+
+ time_res = elm_datetime_value_get(start_date_popup_datetime, &start_date);
- evas_object_smart_callback_add(radio, "changed",
- _radio_changed_cb, item);
+ evas_object_del(start_date_popup);
+ start_date_popup = NULL;
+ start_date_popup_datetime = NULL;
- if (smd->wifi_limits.cycle_mode == item->radio_num)
- elm_radio_value_set(radio, item->radio_num);
- return radio;
+ if (EINA_TRUE == time_res) {
+ smd->wifi_limits.cycle_start = mktime(&start_date);
+ if (!write_wifi_cycle_start(smd->wifi_limits.cycle_start))
+ SETTING_TRACE_ERROR("Failed to write wifi cycle start");
+ } else {
+ SETTING_TRACE_ERROR("Failed to obtain data from datetime %p",
+ start_date_popup_datetime);
+ }
+
+ elm_genlist_realized_items_update(smd->wifi_data_setting_genlist);
}
-static Evas_Object *_radio_item_content_get(void *data, Evas_Object *glist,
- const char *part)
+static void _start_date_item_click_cb(void *data, Evas_Object *genlist,
+ void *event_info)
{
- Radio_Item_Data *radio_item_data = (Radio_Item_Data *)data;
- retv_if(!radio_item_data, NULL);
+ SmartMgrData *smd = data;
+ Evas_Object *button = NULL;
+
+ time_t now = time(NULL);
+ elm_genlist_item_selected_set(event_info, EINA_FALSE);
+ start_date_popup = _create_popup(smd, _("Select start date"));
+ start_date_popup_datetime = elm_datetime_add(start_date_popup);
+ elm_object_style_set(start_date_popup_datetime, "date_layout");
+ elm_datetime_format_set(start_date_popup_datetime, "%d/%b/%Y");
+ elm_datetime_value_set(start_date_popup_datetime,
+ (Elm_Datetime_Time *)localtime(&now));
+ elm_object_content_set(start_date_popup, start_date_popup_datetime);
+
+ button = elm_button_add(start_date_popup);
+ elm_object_text_set(button, _("Cancel"));
+ elm_object_part_content_set(start_date_popup, "button1", button);
+ evas_object_smart_callback_add(button, "clicked",
+ _start_date_popup_cancel_click_cb, smd);
+
+ button = elm_button_add(start_date_popup);
+ elm_object_text_set(button, _("Set"));
+ elm_object_part_content_set(start_date_popup, "button2", button);
+ evas_object_smart_callback_add(button, "clicked",
+ _start_date_popup_set_click_cb, smd);
+}
- if (!safeStrCmp(part, "elm.swallow.end"))
- return create_radio(radio_item_data->smd, glist, radio_item_data);
+static char *_cycle_item_text_get(void *data, Evas_Object *genlist,
+ const char *part)
+{
+ if (!data)
+ return NULL;
+
+ if (!safeStrCmp(part, "elm.text"))
+ return strdup(
+ cycle_names[((SmartMgrData *)data)->wifi_limits.cycle_mode]
+ );
+
+ if (!safeStrCmp(part, "elm.text.sub"))
+ return strdup(_("Cycle"));
return NULL;
}
-static void _radio_item_selected_cb(void *data, Evas_Object *obj,
- void *event_info)
+static char *_start_date_item_text_get(void *data, Evas_Object *genlist,
+ const char *part)
{
- bool res = false;
+ SmartMgrData *smd = data;
+ char buff[128] = {'\0',};
+ struct tm *tm = NULL;
- Elm_Object_Item *item = (Elm_Object_Item *)event_info;
- Radio_Item_Data *radio_item_data = (Radio_Item_Data *)elm_object_item_data_get(item);
- ret_if(!radio_item_data);
- elm_genlist_item_selected_set(item, EINA_FALSE);
-
- if (radio_item_data->smd->wifi_limits.cycle_mode != radio_item_data->radio_num) {
- elm_radio_value_set(
- radio_item_data->smd->wifi_data_usage_cycle_radiogroup,
- radio_item_data->radio_num);
- radio_item_data->smd->wifi_limits.cycle_mode =
- (Cycle_Mode_E)radio_item_data->radio_num;
- }
+ if (!data || CYCLE_MODE_DAILY == smd->wifi_limits.cycle_mode)
+ return NULL;
- _complement_data_usage_wifi_genlist(radio_item_data->smd->wifi_data_setting_genlist, radio_item_data->smd);
+ tm = localtime((time_t *)(&(smd->wifi_limits.cycle_start)));
+
+ if (!safeStrCmp(part, "elm.text")) {
+
+ switch (smd->wifi_limits.cycle_mode) {
+ case CYCLE_MODE_MONTHLY:
+ snprintf(buff, sizeof(buff), "%d", tm->tm_mday);
+ break;
+ case CYCLE_MODE_WEEKLY:
+ snprintf(buff, sizeof(buff), "%s",
+ _(weekday_names[tm->tm_wday]));
+ break;
+ case CYCLE_MODE_DAILY:
+ break;
+ case CYCLE_MODE_CUSTOM:
+ strftime(buff, sizeof(buff), "%a, %d/%m/%Y", tm);
+ break;
+ default:
+ break;
+ }
+
+ return strdup(buff);
+ }
- res = write_wifi_cycle_mode(radio_item_data->smd->wifi_limits.cycle_mode);
- ret_if(!res);
+ if (!safeStrCmp(part, "elm.text.sub"))
+ return strdup(_("Start date"));
- evas_object_del(radio_item_data->smd->wifi_data_usage_cycle_popup);
+ return NULL;
}
-static void _radio_item_delete(void *data, Evas_Object *obj)
+static char *_info_item_text_get(void *data, Evas_Object *genlist,
+ const char *part)
{
- Radio_Item_Data *radio_item_data = (Radio_Item_Data *)data;
- ret_if(!radio_item_data);
+ SmartMgrData *smd = data;
+ char buff[256] = {'\0',};
+ struct tm *tm = NULL;
+ if (!data)
+ return NULL;
- free(radio_item_data);
+ tm = localtime((time_t *)(&(smd->wifi_limits.cycle_start)));
+
+ if (!safeStrCmp(part, "elm.text.multiline")) {
+ switch (smd->wifi_limits.cycle_mode) {
+ case CYCLE_MODE_MONTHLY:
+ snprintf(buff, sizeof(buff), "%s %d %s",
+ _("The data usage info will be reset on the"),
+ tm->tm_mday,
+ _("day of every month."));
+ break;
+ case CYCLE_MODE_WEEKLY:
+ snprintf(buff, sizeof(buff), "%s %s %s",
+ _("The data usage info will be reset every"),
+ _(weekday_names[tm->tm_wday]),
+ ".");
+ break;
+ case CYCLE_MODE_DAILY:
+ snprintf(buff, sizeof(buff), "%s",
+ _("The data usage info will be reset at midnight every day."));
+ break;
+ case CYCLE_MODE_CUSTOM:
+ snprintf(buff, sizeof(buff), "%s %d %s",
+ _("The data usage info will be reset every"),
+ smd->wifi_limits.custom_mode_interval,
+ "days.");
+ break;
+ default:
+ break;
+ }
+ return strdup(buff);
+ }
+ return NULL;
+}
+
+static void _generate_list(SmartMgrData *ad, Evas_Object *genlist)
+{
+ Elm_Object_Item *info_item = NULL;
+
+ elm_genlist_item_append(genlist, &cycle_itc, ad, NULL,
+ ELM_GENLIST_ITEM_NONE, _cycle_item_click_cb, ad);
+ elm_genlist_item_append(genlist, &start_date_itc, ad, NULL,
+ ELM_GENLIST_ITEM_NONE, _start_date_item_click_cb, ad);
+ info_item = elm_genlist_item_append(genlist, &info_itc, ad, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, ad);
+ elm_genlist_item_select_mode_set(info_item, ELM_OBJECT_SELECT_MODE_NONE);
}