#include "smartmanager-data.h"
#include "setting-common-init.h"
#include "setting-common-draw-widget.h"
+#include <utils_i18n.h>
+#include <system_settings.h>
#include <Elementary.h>
#define MSG_ID_LIMITS 2
static void _redraw_toolbar_buttons(SmartMgrData *ad);
static void _get_data_amount_str(const char *prefix, int num_bytes,
char *txt_out, int len_max);
-static void _get_time_interval_str(const time_t *from, const time_t *to,
+static void _get_time_interval_str(const time_t from, const time_t to,
char *txt_out, int len_max);
/** Genlist items class functions: **/
SETTING_TRACE_END;
}
+static void _graph_layout_fill(SmartMgrData *ad, Evas_Object *layout,
+ long long total_data, long long warning_data,
+ long long hard_limit_data,
+ time_t interval_from, time_t interval_to)
+{
+ char buff[64] = {'\0',};
+ _get_time_interval_str(interval_from, interval_to, buff, sizeof(buff));
+ elm_layout_text_set(layout, "timespan_txt", buff);
+
+ _get_data_amount_str("", total_data, buff, sizeof(buff));
+ elm_layout_text_set(layout, "quantity_txt", buff);
+
+ if (warning_data > 0) {
+ _get_data_amount_str("Warning: ", warning_data, buff, sizeof(buff));
+ elm_layout_text_set(layout, "warning_txt", buff);
+ } else {
+ elm_layout_text_set(layout, "warning_txt", "");
+ }
+
+ if (hard_limit_data > 0) {
+ _get_data_amount_str("Limit: ", hard_limit_data, buff, sizeof(buff));
+ elm_layout_text_set(layout, "limit_txt", buff);
+ if (warning_data > 0) {
+ _set_warning_limit_value(layout,
+ (float)warning_data / hard_limit_data,
+ 1.0);
+ } else {
+ _set_warning_limit_value(layout, -1.0, 1.0);
+ }
+ _set_progress_value(layout, (float)total_data / hard_limit_data);
+ } else {
+ elm_layout_text_set(layout, "limit_txt", "");
+ if (warning_data > 0) {
+ _set_warning_limit_value(layout, 1.0, -1.0);
+ _set_progress_value(layout, (float)total_data / warning_data);
+ } else {
+ _set_warning_limit_value(layout, -1.0, -1.0);
+ _set_progress_value(layout, 0.0);
+ }
+ }
+}
+
static Evas_Object *_data_usage_item_get(
void *data, Evas_Object *genlist, const char *part)
{
- SETTING_TRACE_BEGIN;
- char buff[64] = {'\0',};
Evas_Object *layout = NULL;
- Evas_Object *progress_bar = NULL;
SmartMgrData *ad = data;
if (!ad)
"genlist_item_mobile_data_usage.edj",
"genlist_item_mobile_data_usage");
- elm_layout_content_set(layout, "progress_bar", progress_bar);
-
- elm_layout_text_set(layout, "timespan_txt", "timespan_txt");
-
- if (ad->sim_1_genlist == genlist) {
- _get_data_amount_str("", ad->total_data_sim_1, buff, sizeof(buff));
- elm_layout_text_set(layout, "quantity_txt", buff);
- if (ad->hard_limit_sim_1 > 0) {
- _get_data_amount_str("Limit: ", ad->hard_limit_sim_1,
- buff, sizeof(buff));
- elm_layout_text_set(layout, "limit_txt", buff);
- _set_warning_limit_value(layout,
- (float)ad->warn_limit_sim_1 / ad->hard_limit_sim_1, 1.0);
- _set_progress_value(layout,
- (float)ad->total_data_sim_1 / ad->hard_limit_sim_1);
- } else {
- elm_layout_text_set(layout, "limit_txt", "");
- _set_warning_limit_value(layout, 1.0, -1.0);
- if (ad->warn_limit_sim_1 > 0) {
- _set_progress_value(layout,
- (float)ad->total_data_sim_1 / ad->warn_limit_sim_1);
- } else {
- _set_progress_value(layout, 0.0);
- }
- }
- if (ad->warn_limit_sim_1 > 0) {
- _get_data_amount_str("Warning: ", ad->warn_limit_sim_1,
- buff, sizeof(buff));
- elm_layout_text_set(layout, "warning_txt", buff);
- } else {
- elm_layout_text_set(layout, "warning_txt", "");
- }
- }
-
- if (ad->sim_2_genlist == genlist) {
- _get_data_amount_str("", ad->total_data_sim_2, buff, sizeof(buff));
- elm_layout_text_set(layout, "quantity_txt", buff);
- if (ad->hard_limit_sim_2 > 0) {
- _get_data_amount_str("Limit: ", ad->hard_limit_sim_2,
- buff, sizeof(buff));
- elm_layout_text_set(layout, "limit_txt", buff);
- _set_warning_limit_value(layout,
- (float) ad->warn_limit_sim_2 / ad->hard_limit_sim_2, 1.0);
- _set_progress_value(layout,
- (float)ad->total_data_sim_2 / ad->hard_limit_sim_2);
- } else {
- elm_layout_text_set(layout, "limit_txt", "");
- _set_warning_limit_value(layout, 1.0, -1.0);
- if (ad->warn_limit_sim_2 > 0) {
- _set_progress_value(layout,
- (float)ad->total_data_sim_2 / ad->warn_limit_sim_2);
- } else {
- _set_progress_value(layout, 0.0);
- }
- }
- if (ad->warn_limit_sim_2 > 0) {
- _get_data_amount_str("Warning: ", ad->warn_limit_sim_2,
- buff, sizeof(buff));
- elm_layout_text_set(layout, "warning_txt", buff);
- } else {
- elm_layout_text_set(layout, "warning_txt", "");
- }
- }
+ if (ad->sim_1_genlist == genlist)
+ _graph_layout_fill(ad, layout,
+ ad->total_data_sim_1, ad->warn_limit_sim_1,
+ ad->hard_limit_sim_1, ad->interval_from_sim_1,
+ ad->interval_to_sim_1);
- if (ad->wifi_genlist == genlist) {
- _get_data_amount_str("", ad->total_data_wifi, buff, sizeof(buff));
- elm_layout_text_set(layout, "quantity_txt", buff);
- if (ad->hard_limit_wifi > 0) {
- _get_data_amount_str("Limit: ", ad->hard_limit_wifi,
- buff, sizeof(buff));
- elm_layout_text_set(layout, "limit_txt", buff);
- _set_warning_limit_value(layout,
- (float)ad->warn_limit_wifi / ad->hard_limit_wifi, 1.0);
- _set_progress_value(layout,
- (float)ad->total_data_wifi / ad->hard_limit_wifi);
- } else {
- elm_layout_text_set(layout, "limit_txt", "");
- _set_warning_limit_value(layout, 1.0, -1.0);
- if (ad->warn_limit_wifi > 0) {
- _set_progress_value(layout,
- (float)ad->total_data_wifi / ad->warn_limit_wifi);
- } else {
- _set_progress_value(layout, 0.0);
- }
- }
- if (ad->warn_limit_wifi > 0) {
- _get_data_amount_str("Warning: ", ad->warn_limit_wifi,
- buff, sizeof(buff));
- elm_layout_text_set(layout, "warning_txt", buff);
- } else {
- elm_layout_text_set(layout, "warning_txt", "");
- }
- }
+ if (ad->sim_2_genlist == genlist)
+ _graph_layout_fill(ad, layout,
+ ad->total_data_sim_2, ad->warn_limit_sim_2,
+ ad->hard_limit_sim_2, ad->interval_from_sim_2,
+ ad->interval_to_sim_2);
- SETTING_TRACE_END;
+ if (ad->wifi_genlist == genlist)
+ _graph_layout_fill(ad, layout,
+ ad->total_data_wifi, ad->warn_limit_wifi,
+ ad->hard_limit_wifi, ad->interval_from_wifi,
+ ad->interval_to_wifi);
return layout;
}
Evas_Object *icon = NULL;
char buff[64] = {'\0',};
- if (!data)
+ if (!app_item || !app_item->ad)
return NULL;
if (safeStrCmp(part, "elm.swallow.content"))
progress_bar = elm_progressbar_add(layout);
evas_object_size_hint_weight_set(progress_bar, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(progress_bar, EVAS_HINT_FILL, 0.5);
- elm_progressbar_value_set(progress_bar, (app_item->percent / 100.0));
+ if (app_item->ad->sim_1_genlist == genlist)
+ elm_progressbar_value_set(progress_bar,
+ ((double)app_item->data_usage_bytes /
+ (double)app_item->ad->total_data_sim_1));
+ if (app_item->ad->sim_2_genlist == genlist)
+ elm_progressbar_value_set(progress_bar,
+ ((double)app_item->data_usage_bytes /
+ (double)app_item->ad->total_data_sim_2));
+ if (app_item->ad->wifi_genlist == genlist)
+ elm_progressbar_value_set(progress_bar,
+ ((double)app_item->data_usage_bytes /
+ (double)app_item->ad->total_data_wifi));
+
evas_object_pass_events_set(progress_bar, EINA_TRUE);
evas_object_propagate_events_set(progress_bar, EINA_FALSE);
elm_object_part_content_set(layout, "elm.swallow.content", progress_bar);
}
}
-static void _get_time_interval_str(const time_t *from, const time_t *to,
+static void _get_time_interval_str(const time_t from, const time_t to,
char *txt_out, int len_max)
{
+ i18n_udate date1 = 1000.0 * (i18n_udate)from;
+ i18n_udate date2 = 1000.0 * (i18n_udate)to;
+ i18n_uchar result1[128] = {0,};
+ i18n_uchar result2[128] = {0,};
+ char result1_str[128] = {'\0',};
+ char result2_str[128] = {'\0',};
+ int32_t buf_size_needed = 0;
+ i18n_udatepg_h pttrn_gen = NULL;
+ i18n_udate_format_h formatter = NULL;
+ i18n_uchar best_pattern[128] = {0,};
+ int32_t best_pattern_result_len = 0;
+ i18n_uchar format[128] = {0,};
+ char *country_iso = NULL;
+
+ if (0 == from || 0 == to) {
+ if (txt_out && len_max > 0)
+ txt_out[0] = '\0';
+ return;
+ }
+ system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY,
+ &country_iso);
+
+ i18n_udatepg_create(country_iso, &pttrn_gen);
+ i18n_ustring_copy_ua_n(format, "dd MMM", strlen("dd MMM"));
+ i18n_udatepg_get_best_pattern(pttrn_gen, format,
+ (sizeof(format) / sizeof(i18n_uchar)),
+ best_pattern,
+ (sizeof(best_pattern) / sizeof(i18n_uchar)),
+ &best_pattern_result_len);
+
+ i18n_udatepg_destroy(pttrn_gen);
+ i18n_udate_create(I18N_UDATE_PATTERN, I18N_UDATE_PATTERN, country_iso,
+ NULL, -1, best_pattern, -1, &formatter);
+ i18n_udate_format_date(formatter, date1,
+ result1, (sizeof(result1) / sizeof(i18n_uchar)),
+ NULL, &buf_size_needed);
+ i18n_udate_format_date(formatter, date2,
+ result2, (sizeof(result2) / sizeof(i18n_uchar)),
+ NULL, &buf_size_needed);
+ i18n_udate_destroy(formatter);
+
+ i18n_ustring_copy_au(result1_str, result1);
+ i18n_ustring_copy_au(result2_str, result2);
+ snprintf(txt_out, len_max, "%s - %s", result1_str, result2_str);
}
static int _update(void *data)
_redraw_toolbar_buttons(ad);
switch (ad->main_view_update_type) {
+ case MV_UPDATE_SIM_STATE_CHANGED:
+ if (ad->num_sim_cards_available > 0) {
+ elm_genlist_clear(ad->sim_1_genlist);
+ ad->item_sim_1_data_amount = NULL;
+ ad->item_sim_1_data_usage_set = NULL;
+ _generate_list(ad, ad->sim_1_genlist,
+ &ad->gl_data_usage_itc, &ad->gl_text_itc,
+ &ad->item_sim_1_data_amount,
+ &ad->item_sim_1_data_usage_set,
+ "Set Data usage cycle, and Warning, Limit value");
+ }
+ if (ad->num_sim_cards_available > 1) {
+ elm_genlist_clear(ad->sim_2_genlist);
+ ad->item_sim_2_data_amount = NULL;
+ ad->item_sim_2_data_usage_set = NULL;
+ _generate_list(ad, ad->sim_2_genlist,
+ &ad->gl_data_usage_itc, &ad->gl_text_itc,
+ &ad->item_sim_2_data_amount,
+ &ad->item_sim_2_data_usage_set,
+ "Set Data usage cycle, and Warning, Limit value");
+ }
+ break;
case MV_UPDATE_SIM_1_TOTAL_DATA_USAGE:
elm_genlist_item_update(ad->item_sim_1_data_amount);
break;
break;
case MV_UPDATE_APPEND_SIM_2_APP:
_append_app(ad, &ad->item_sim_2_first_app_info,
- ad->sim_2_apps, ad->sim_2_genlist,
- &ad->gl_header_itc, &ad->gl_application_itc);
+ ad->sim_2_apps, ad->sim_2_genlist,
+ &ad->gl_header_itc, &ad->gl_application_itc);
break;
case MV_UPDATE_APPEND_WIFI_APP:
_append_app(ad, &ad->item_wifi_first_app_info,
- ad->wifi_apps, ad->wifi_genlist,
- &ad->gl_header_itc, &ad->gl_application_itc);
+ ad->wifi_apps, ad->wifi_genlist,
+ &ad->gl_header_itc, &ad->gl_application_itc);
break;
default:
break;
}
- _toolbar_item_click(ad, ad->toolbar, ad->toolbar_item_sim_1);
+ if (ad->num_sim_cards_available < 1)
+ _toolbar_item_click(ad, ad->toolbar, ad->toolbar_item_wifi);
+ if (ad->num_sim_cards_available >= 1)
+ _toolbar_item_click(ad, ad->toolbar, ad->toolbar_item_sim_1);
+
ad->main_view_update_type = MV_UPDATE_APPEND_NONE;
return 0;