static Evas_Object *start_date_popup = NULL;
static Evas_Object *start_date_popup_radio_group = NULL;
static Evas_Object *start_date_popup_datetime = NULL;
+static Evas_Object *start_date_popup_month_day_spinner = NULL;
const static char *cycle_names[] = {
"Monthly",
{
evas_object_del(popup);
}
-/*
-
-
-static Evas_Object *_create_datetime(Evas_Object *parent, setting_call_back_func _datetime_picker_value_changed_cb, SmartMgrData *smd)
-{
- Evas_Object *day_picker = elm_datetime_add(parent);
-
- elm_datetime_field_visible_set(day_picker, ELM_DATETIME_HOUR, EINA_FALSE);
- elm_datetime_field_visible_set(day_picker, ELM_DATETIME_MINUTE, EINA_FALSE);
-
- elm_datetime_field_visible_set(day_picker, ELM_DATETIME_YEAR, EINA_FALSE);
- elm_datetime_field_visible_set(day_picker, ELM_DATETIME_MONTH, EINA_FALSE);
- elm_datetime_field_visible_set(day_picker, ELM_DATETIME_DATE, EINA_TRUE);
- elm_datetime_field_visible_set(day_picker, ELM_DATETIME_AMPM, EINA_FALSE);
-
- elm_object_style_set(day_picker, "datepicker_layout");
- elm_datetime_format_set(day_picker, "%e");
- elm_datetime_value_set(day_picker, &smd->wifi_start_date);
- evas_object_size_hint_weight_set(day_picker, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(day_picker, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- evas_object_smart_callback_add(day_picker, "changed", _datetime_picker_value_changed_cb, smd);
- elm_object_content_set(parent, day_picker);
-
- evas_object_show(day_picker);
- return day_picker;
-}
-
-*/
static int _create(void *data)
{
cycle_popup_radio_group = NULL;
start_date_popup_datetime = NULL;
start_date_popup_radio_group = NULL;
+ start_date_popup_month_day_spinner = NULL;
sm_view_data_usage_wifi.is_create = 0;
return 0;
}
if (!smd)
return;
- 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)
+ if (!write_wifi_cycle_mode(smd->wifi_limits.cycle_mode)) {
SETTING_TRACE_ERROR("Failed to write wifi cycle mode");
+ } else {
+ /* It is necessary to reset start cycle values: */
+ if (CYCLE_MODE_CUSTOM == smd->wifi_limits.cycle_mode)
+ smd->wifi_limits.cycle_start = time(NULL);
+ else
+ smd->wifi_limits.cycle_start = 1;
+
+ if (!write_wifi_cycle_start(smd->wifi_limits.cycle_start))
+ SETTING_TRACE_ERROR("Failed to write wifi cycle start week day");
+ }
evas_object_del(cycle_popup);
cycle_popup = NULL;
elm_genlist_realized_items_update(smd->wifi_data_setting_genlist);
}
-static void _cycle_popup_radio_changed_cb(void *data, Evas_Object *radio, void *event_info)
+static void _cycle_popup_radio_changed_cb(void *data, Evas_Object *radio,
+ void *event_info)
{
SmartMgrData *smd = data;
smd->wifi_limits.cycle_mode = elm_radio_state_value_get(radio);
- if (!write_wifi_cycle_mode(smd->wifi_limits.cycle_mode))
+ if (!write_wifi_cycle_mode(smd->wifi_limits.cycle_mode)) {
SETTING_TRACE_ERROR("Failed to write wifi cycle mode");
+ } else {
+ /* It is necessary to reset start cycle values: */
+ if (CYCLE_MODE_CUSTOM == smd->wifi_limits.cycle_mode)
+ smd->wifi_limits.cycle_start = time(NULL);
+ else
+ smd->wifi_limits.cycle_start = 1;
+ if (!write_wifi_cycle_start(smd->wifi_limits.cycle_start))
+ SETTING_TRACE_ERROR("Failed to write wifi cycle start week day");
+ }
evas_object_del(cycle_popup);
cycle_popup = NULL;
evas_object_del(start_date_popup);
start_date_popup = NULL;
start_date_popup_datetime = NULL;
+ start_date_popup_month_day_spinner = NULL;
}
static void _start_date_popup_set_click_cb(void *data, Evas_Object *obj,
Eina_Bool time_res = EINA_FALSE;
SmartMgrData *smd = data;
- time_res = elm_datetime_value_get(start_date_popup_datetime, &start_date);
+ smd->wifi_limits.cycle_start = 1;
- evas_object_del(start_date_popup);
- start_date_popup = NULL;
- start_date_popup_datetime = NULL;
+ if (CYCLE_MODE_MONTHLY == smd->wifi_limits.cycle_mode) {
+ smd->wifi_limits.cycle_start =
+ (int)elm_spinner_value_get(start_date_popup_month_day_spinner);
+ }
- 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);
+ if (CYCLE_MODE_CUSTOM == smd->wifi_limits.cycle_mode) {
+ time_res = elm_datetime_value_get(start_date_popup_datetime,
+ &start_date);
+ if (EINA_TRUE == time_res) {
+ smd->wifi_limits.cycle_start = mktime(&start_date);
+ } else {
+ SETTING_TRACE_ERROR("Failed to obtain data from datetime %p",
+ start_date_popup_datetime);
+ }
}
+ if (!write_wifi_cycle_start(smd->wifi_limits.cycle_start))
+ SETTING_TRACE_ERROR("Failed to write wifi cycle start");
+
+ evas_object_del(start_date_popup);
+ start_date_popup = NULL;
+ start_date_popup_datetime = NULL;
+ start_date_popup_month_day_spinner = NULL;
elm_genlist_realized_items_update(smd->wifi_data_setting_genlist);
}
if (!smd)
return;
- if (CYCLE_MODE_MONTHLY == smd->wifi_limits.cycle_mode) {
+ if (CYCLE_MODE_CUSTOM == smd->wifi_limits.cycle_mode ||
+ CYCLE_MODE_MONTHLY == smd->wifi_limits.cycle_mode) {
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);
+
+ if (CYCLE_MODE_CUSTOM == smd->wifi_limits.cycle_mode) {
+ 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);
+ }
+
+ if (CYCLE_MODE_MONTHLY == smd->wifi_limits.cycle_mode) {
+ start_date_popup_month_day_spinner =
+ elm_spinner_add(start_date_popup);
+ elm_object_style_set(start_date_popup_month_day_spinner,
+ "vertical");
+ elm_spinner_value_set(start_date_popup_month_day_spinner,
+ smd->wifi_limits.cycle_start);
+ elm_spinner_min_max_set(start_date_popup_month_day_spinner, 1, 31);
+ elm_object_content_set(start_date_popup,
+ start_date_popup_month_day_spinner);
+ }
button = elm_button_add(start_date_popup);
elm_object_text_set(button, _("Cancel"));
if (!data || CYCLE_MODE_DAILY == smd->wifi_limits.cycle_mode)
return NULL;
- 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);
+
+ snprintf(buff, sizeof(buff), "%d", smd->wifi_limits.cycle_start);
break;
case CYCLE_MODE_WEEKLY:
+ if ((smd->wifi_limits.cycle_start >=
+ sizeof(weekday_names) / sizeof(char *)) ||
+ smd->wifi_limits.cycle_start < 0) {
+ SETTING_TRACE_ERROR("Cycle start is put of bounds %d"\
+ " setting to 0",
+ smd->wifi_limits.cycle_start);
+ smd->wifi_limits.cycle_start = 0;
+ }
snprintf(buff, sizeof(buff), "%s",
_(weekday_names[smd->wifi_limits.cycle_start]));
break;
case CYCLE_MODE_DAILY:
break;
case CYCLE_MODE_CUSTOM:
+ tm = localtime((time_t *)(&(smd->wifi_limits.cycle_start)));
strftime(buff, sizeof(buff), "%a, %d/%m/%Y", tm);
break;
default:
{
SmartMgrData *smd = data;
char buff[256] = {'\0',};
- struct tm *tm = NULL;
+
if (!data)
return NULL;
- 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,
+ smd->wifi_limits.cycle_start,
_("day of every month."));
break;
case CYCLE_MODE_WEEKLY:
+ if ((smd->wifi_limits.cycle_start >=
+ sizeof(weekday_names) / sizeof(char *)) ||
+ smd->wifi_limits.cycle_start < 0) {
+ SETTING_TRACE_ERROR("Cycle start is put of bounds %d"\
+ " setting to 0",
+ smd->wifi_limits.cycle_start);
+ smd->wifi_limits.cycle_start = 0;
+ }
snprintf(buff, sizeof(buff), "%s %s%s",
_("The data usage info will be reset every"),
_(weekday_names[smd->wifi_limits.cycle_start]),