diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor.c b/src/modules/sysinfo/cpumonitor/cpumonitor.c index a4c712ab2..187dbb448 100644 --- a/src/modules/sysinfo/cpumonitor/cpumonitor.c +++ b/src/modules/sysinfo/cpumonitor/cpumonitor.c @@ -298,6 +298,7 @@ _cpumonitor_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSE e_gadget_configure_cb_set(inst->o_main, _cpumonitor_configure_cb); inst->cfg->cpumonitor.o_gadget = elm_box_add(inst->o_main); + elm_box_padding_set(inst->cfg->cpumonitor.o_gadget, 0, 0); if (orient == E_GADGET_SITE_ORIENT_VERTICAL) elm_box_horizontal_set(inst->cfg->cpumonitor.o_gadget, EINA_FALSE); else diff --git a/src/modules/sysinfo/mod.c b/src/modules/sysinfo/mod.c index 8ef83610d..746a2d29f 100644 --- a/src/modules/sysinfo/mod.c +++ b/src/modules/sysinfo/mod.c @@ -1,5 +1,7 @@ #include "sysinfo.h" +#define CONFIG_VERSION 1 + static E_Config_DD *conf_edd = NULL; static E_Config_DD *conf_item_edd = NULL; Eina_List *sysinfo_instances = NULL; @@ -9,12 +11,16 @@ Config *sysinfo_config = NULL; EINTERN void sysinfo_init(void) { + Eina_List *l; + Config_Item *ci; + conf_item_edd = E_CONFIG_DD_NEW("Sysinfo_Config_Item", Config_Item); #undef T #undef D #define T Config_Item #define D conf_item_edd E_CONFIG_VAL(D, T, id, INT); + E_CONFIG_VAL(D, T, version, INT); E_CONFIG_VAL(D, T, esm, INT); E_CONFIG_VAL(D, T, batman.poll_interval, INT); E_CONFIG_VAL(D, T, batman.alert, INT); @@ -22,7 +28,7 @@ sysinfo_init(void) E_CONFIG_VAL(D, T, batman.alert_timeout, INT); E_CONFIG_VAL(D, T, batman.suspend_below, INT); E_CONFIG_VAL(D, T, batman.force_mode, INT); - #if defined HAVE_EEZE || defined __OpenBSD__ || defined __NetBSD__ +#if defined HAVE_EEZE || defined __OpenBSD__ || defined __NetBSD__ E_CONFIG_VAL(D, T, batman.fuzzy, INT); #endif E_CONFIG_VAL(D, T, batman.desktop_notifications, INT); @@ -42,6 +48,11 @@ sysinfo_init(void) E_CONFIG_VAL(D, T, cpumonitor.poll_interval, INT); E_CONFIG_VAL(D, T, memusage.poll_interval, INT); E_CONFIG_VAL(D, T, netstatus.poll_interval, INT); + E_CONFIG_VAL(D, T, netstatus.automax, INT); + E_CONFIG_VAL(D, T, netstatus.inmax, INT); + E_CONFIG_VAL(D, T, netstatus.receive_units, INT); + E_CONFIG_VAL(D, T, netstatus.outmax, INT); + E_CONFIG_VAL(D, T, netstatus.send_units, INT); conf_edd = E_CONFIG_DD_NEW("Sysinfo_Config", Config); #undef T @@ -54,11 +65,10 @@ sysinfo_init(void) if (!sysinfo_config) { - Config_Item *ci; - sysinfo_config = E_NEW(Config, 1); ci = E_NEW(Config_Item, 1); ci->id = 0; + ci->version = CONFIG_VERSION; ci->esm = E_SYSINFO_MODULE_NONE; ci->batman.poll_interval = 512; @@ -102,6 +112,9 @@ sysinfo_init(void) ci->memusage.popup = NULL; ci->memusage.configure = NULL; ci->netstatus.poll_interval = 32; + ci->netstatus.automax = EINA_TRUE; + ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES; + ci->netstatus.send_units = NETSTATUS_UNIT_BYTES; ci->netstatus.in = 0; ci->netstatus.out = 0; ci->netstatus.inmax = 0; @@ -133,6 +146,19 @@ sysinfo_init(void) sysinfo_config->items = eina_list_append(sysinfo_config->items, ci); } + EINA_LIST_FOREACH(sysinfo_config->items, l, ci) + { + if (ci->esm == E_SYSINFO_MODULE_NETSTATUS || ci->esm == E_SYSINFO_MODULE_SYSINFO) + { + if (ci->version < CONFIG_VERSION) + { + ci->version = CONFIG_VERSION; + ci->netstatus.automax = EINA_TRUE; + ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES; + ci->netstatus.send_units = NETSTATUS_UNIT_BYTES; + } + } + } e_gadget_type_add("Batman", batman_create, NULL); e_gadget_type_add("Thermal", thermal_create, NULL); e_gadget_type_add("CpuClock", cpuclock_create, NULL); diff --git a/src/modules/sysinfo/netstatus/netstatus.c b/src/modules/sysinfo/netstatus/netstatus.c index 4c2633fd8..93f4a62fb 100644 --- a/src/modules/sysinfo/netstatus/netstatus.c +++ b/src/modules/sysinfo/netstatus/netstatus.c @@ -206,9 +206,6 @@ _netstatus_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED e_gadget_configure_cb_set(inst->o_main, _netstatus_configure_cb); - inst->cfg->netstatus.inmax = 0; - inst->cfg->netstatus.outmax = 0; - inst->cfg->netstatus.o_gadget = elm_layout_add(inst->o_main); e_theme_edje_object_set(inst->cfg->netstatus.o_gadget, "base/theme/modules/netstatus", "e/modules/netstatus/main"); @@ -224,9 +221,6 @@ _netstatus_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED Evas_Object * sysinfo_netstatus_create(Evas_Object *parent, Instance *inst) { - inst->cfg->netstatus.inmax = 0; - inst->cfg->netstatus.outmax = 0; - inst->cfg->netstatus.o_gadget = elm_layout_add(parent); e_theme_edje_object_set(inst->cfg->netstatus.o_gadget, "base/theme/modules/netstatus", "e/modules/netstatus/main"); @@ -260,10 +254,13 @@ _conf_item_get(int *id) ci->esm = E_SYSINFO_MODULE_NETSTATUS; ci->netstatus.poll_interval = 32; - ci->netstatus.in = 0; - ci->netstatus.out = 0; + ci->netstatus.automax = EINA_TRUE; ci->netstatus.inmax = 0; ci->netstatus.outmax = 0; + ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES; + ci->netstatus.send_units = NETSTATUS_UNIT_BYTES; + ci->netstatus.in = 0; + ci->netstatus.out = 0; ci->netstatus.incurrent = 0; ci->netstatus.outcurrent = 0; ci->netstatus.inpercent = 0; @@ -287,8 +284,6 @@ netstatus_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_ *id = inst->cfg->id; inst->cfg->netstatus.in = 0; inst->cfg->netstatus.out = 0; - inst->cfg->netstatus.inmax = 0; - inst->cfg->netstatus.outmax = 0; inst->cfg->netstatus.incurrent = 0; inst->cfg->netstatus.outcurrent = 0; inst->cfg->netstatus.inpercent = 0; diff --git a/src/modules/sysinfo/netstatus/netstatus.h b/src/modules/sysinfo/netstatus/netstatus.h index c13e2185c..5f1772ed8 100644 --- a/src/modules/sysinfo/netstatus/netstatus.h +++ b/src/modules/sysinfo/netstatus/netstatus.h @@ -3,6 +3,19 @@ #include "../sysinfo.h" +typedef struct _Netstatus_Config Netstatus_Config; +struct _Netstatus_Config +{ + Instance *inst; + Evas_Object *transfer_check; + Evas_Object *receive_max; + Evas_Object *receive_units; + Evas_Object *send_max; + Evas_Object *send_units; + int receive_unit_adjust; + int send_unit_adjust; +}; + void _netstatus_config_updated(Instance *inst); void _netstatus_proc_getrstatus(Instance *inst); void _netstatus_proc_gettstatus(Instance *inst); diff --git a/src/modules/sysinfo/netstatus/netstatus_config.c b/src/modules/sysinfo/netstatus/netstatus_config.c index fc11edd95..00b235ec9 100644 --- a/src/modules/sysinfo/netstatus/netstatus_config.c +++ b/src/modules/sysinfo/netstatus/netstatus_config.c @@ -3,16 +3,19 @@ static void _config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Instance *inst = data; + Netstatus_Config *nc = data; + Instance *inst = nc->inst; E_FREE_FUNC(inst->cfg->netstatus.configure, evas_object_del); + E_FREE_FUNC(nc, free); e_config_save_queue(); } static void -_config_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +_poll_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) { - Instance *inst = data; + Netstatus_Config *nc = data; + Instance *inst = nc->inst; int value = elm_radio_value_get(obj); switch(value) @@ -35,44 +38,159 @@ _config_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) default: inst->cfg->netstatus.poll_interval = 32; } + e_config_save_queue(); _netstatus_config_updated(inst); } - + +static void +_update_receive_maximums(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Netstatus_Config *nc = data; + Instance *inst = nc->inst; + int value = elm_slider_value_get(nc->receive_max); + + inst->cfg->netstatus.inmax = value * nc->receive_unit_adjust; + e_config_save_queue(); + _netstatus_config_updated(inst); +} + +static void +_update_send_maximums(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Netstatus_Config *nc = data; + Instance *inst = nc->inst; + int value = elm_slider_value_get(nc->send_max); + + inst->cfg->netstatus.outmax = value * nc->send_unit_adjust; + e_config_save_queue(); + _netstatus_config_updated(inst); +} + +static void +_receive_hover_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) +{ + Netstatus_Config *nc = data; + Instance *inst = nc->inst; + const char *txt = elm_object_item_text_get(event_info); + + if (!strcmp(txt, _("Bytes"))) + { + inst->cfg->netstatus.receive_units = NETSTATUS_UNIT_BYTES; + nc->receive_unit_adjust = 1; + } + if (!strcmp(txt, _("KB"))) + { + inst->cfg->netstatus.receive_units = NETSTATUS_UNIT_KB; + nc->receive_unit_adjust = 1024; + } + if (!strcmp(txt, _("MB"))) + { + inst->cfg->netstatus.receive_units = NETSTATUS_UNIT_MB; + nc->receive_unit_adjust = 2048; + } + if (!strcmp(txt, _("GB"))) + { + inst->cfg->netstatus.receive_units = NETSTATUS_UNIT_GB; + nc->receive_unit_adjust = 3072; + } + _update_receive_maximums(nc, NULL, NULL); +} + +static void +_send_hover_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) +{ + Netstatus_Config *nc = data; + Instance *inst = nc->inst; + const char *txt = elm_object_item_text_get(event_info); + + if (!strcmp(txt, _("Bytes"))) + { + inst->cfg->netstatus.send_units = NETSTATUS_UNIT_BYTES; + nc->send_unit_adjust = 1; + } + if (!strcmp(txt, _("KB"))) + { + inst->cfg->netstatus.send_units = NETSTATUS_UNIT_KB; + nc->send_unit_adjust = 1024; + } + if (!strcmp(txt, _("MB"))) + { + inst->cfg->netstatus.send_units = NETSTATUS_UNIT_MB; + nc->send_unit_adjust = 2048; + } + if (!strcmp(txt, _("GB"))) + { + inst->cfg->netstatus.send_units = NETSTATUS_UNIT_GB; + nc->send_unit_adjust = 3072; + } + _update_send_maximums(nc, NULL, NULL); +} + +static void +_check_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Netstatus_Config *nc = data; + Instance *inst = nc->inst; + + if (elm_check_state_get(nc->transfer_check)) + { + elm_object_disabled_set(nc->receive_max, EINA_TRUE); + elm_object_disabled_set(nc->receive_units, EINA_TRUE); + elm_object_disabled_set(nc->send_max, EINA_TRUE); + elm_object_disabled_set(nc->send_units, EINA_TRUE); + inst->cfg->netstatus.automax = EINA_TRUE; + } + else + { + elm_object_disabled_set(nc->receive_max, EINA_FALSE); + elm_object_disabled_set(nc->receive_units, EINA_FALSE); + elm_object_disabled_set(nc->send_max, EINA_FALSE); + elm_object_disabled_set(nc->send_units, EINA_FALSE);\ + inst->cfg->netstatus.automax = EINA_FALSE; + _update_receive_maximums(nc, NULL, NULL); + _update_send_maximums(nc, NULL, NULL); + } +} + Evas_Object * netstatus_configure(Instance *inst) { - Evas_Object *popup, *frame, *box, *o, *group, *lbl; + Evas_Object *popup, *frame, *main_box, *box, *o, *group, *lbl; + Evas_Object *hover, *slider, *check; E_Zone *zone = e_zone_current_get(); + Netstatus_Config *nc = E_NEW(Netstatus_Config, 1); + + nc->inst = inst; popup = elm_popup_add(e_comp->elm); E_EXPAND(popup); elm_popup_allow_events_set(popup, 1); elm_popup_scrollable_set(popup, 1); - box = elm_box_add(popup); - elm_box_horizontal_set(box, EINA_FALSE); - E_EXPAND(box); - E_FILL(box); - evas_object_show(box); - elm_object_content_set(popup, box); + main_box = elm_box_add(popup); + elm_box_horizontal_set(main_box, EINA_FALSE); + E_EXPAND(main_box); + E_FILL(main_box); + evas_object_show(main_box); + elm_object_content_set(popup, main_box); - lbl = elm_label_add(box); + lbl = elm_label_add(main_box); evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_object_style_set(lbl, "marker"); elm_object_text_set(lbl, _("NetStatus Configuration")); - elm_box_pack_end(box, lbl); + elm_box_pack_end(main_box, lbl); evas_object_show(lbl); - frame = elm_frame_add(box); + frame = elm_frame_add(main_box); elm_object_text_set(frame, _("Update Poll Interval")); E_EXPAND(frame); E_FILL(frame); - elm_box_pack_end(box, frame); + elm_box_pack_end(main_box, frame); evas_object_show(frame); - box = elm_box_add(popup); + box = elm_box_add(frame); elm_box_horizontal_set(box, EINA_FALSE); E_EXPAND(box); evas_object_show(box); @@ -83,7 +201,7 @@ netstatus_configure(Instance *inst) E_ALIGN(o, 0, 0); elm_object_text_set(o, _("Fast (4 ticks)")); elm_box_pack_end(box, o); - evas_object_smart_callback_add(o, "changed", _config_changed, inst); + evas_object_smart_callback_add(o, "changed", _poll_changed, inst); evas_object_show(o); group = o; @@ -94,7 +212,7 @@ netstatus_configure(Instance *inst) E_ALIGN(o, 0, 0); elm_object_text_set(o, _("Medium (8 ticks)")); elm_box_pack_end(box, o); - evas_object_smart_callback_add(o, "changed", _config_changed, inst); + evas_object_smart_callback_add(o, "changed", _poll_changed, inst); evas_object_show(o); o = elm_radio_add(box); @@ -104,7 +222,7 @@ netstatus_configure(Instance *inst) E_ALIGN(o, 0, 0); elm_object_text_set(o, _("Normal (32 ticks)")); elm_box_pack_end(box, o); - evas_object_smart_callback_add(o, "changed", _config_changed, inst); + evas_object_smart_callback_add(o, "changed", _poll_changed, inst); evas_object_show(o); o = elm_radio_add(box); @@ -113,7 +231,7 @@ netstatus_configure(Instance *inst) E_ALIGN(o, 0, 0); elm_object_text_set(o, _("Slow (64 ticks)")); elm_box_pack_end(box, o); - evas_object_smart_callback_add(o, "changed", _config_changed, inst); + evas_object_smart_callback_add(o, "changed", _poll_changed, inst); evas_object_show(o); o = elm_radio_add(box); @@ -123,7 +241,7 @@ netstatus_configure(Instance *inst) E_ALIGN(o, 0, 0); elm_object_text_set(o, _("Very Slow (256 ticks)")); elm_box_pack_end(box, o); - evas_object_smart_callback_add(o, "changed", _config_changed, inst); + evas_object_smart_callback_add(o, "changed", _poll_changed, inst); evas_object_show(o); switch(inst->cfg->netstatus.poll_interval) @@ -147,6 +265,136 @@ netstatus_configure(Instance *inst) elm_radio_value_set(group, 2); } + elm_object_content_set(frame, box); + + frame = elm_frame_add(main_box); + elm_object_text_set(frame, _("Maximum Transfer Speed")); + E_EXPAND(frame); + E_FILL(frame); + elm_box_pack_end(main_box, frame); + evas_object_show(frame); + + box = elm_box_add(frame); + elm_box_horizontal_set(box, EINA_FALSE); + E_EXPAND(box); + evas_object_show(box); + + check = elm_check_add(box); + elm_object_text_set(check, _("Use Automatic Maximums")); + elm_check_state_set(check, inst->cfg->netstatus.automax); + evas_object_size_hint_align_set(check, EVAS_HINT_FILL, 0.5); + evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, 0.0); + evas_object_smart_callback_add(check, "changed", _check_changed, nc); + elm_box_pack_end(box, check); + evas_object_show(check); + nc->transfer_check = check; + + slider = elm_slider_add(box); + elm_object_text_set(slider, _("Receive:")); + elm_slider_unit_format_set(slider, "%1.0f"); + elm_slider_indicator_format_set(slider, "%1.0f"); + elm_slider_min_max_set(slider, 0, 1000); + elm_slider_value_set(slider, inst->cfg->netstatus.inmax); + elm_slider_step_set(slider, 10); + elm_slider_span_size_set(slider, 100); + evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5); + evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0); + evas_object_smart_callback_add(slider, "delay,changed", _update_receive_maximums, nc); + if (inst->cfg->netstatus.automax) elm_object_disabled_set(slider, EINA_TRUE); + elm_box_pack_end(box, slider); + evas_object_show(slider); + nc->receive_max = slider; + + hover = elm_hoversel_add(box); + elm_hoversel_auto_update_set(hover, EINA_TRUE); + elm_hoversel_hover_parent_set(hover, popup); + elm_hoversel_item_add(hover, _("Bytes"), NULL, ELM_ICON_NONE, NULL, NULL); + if (inst->cfg->netstatus.receive_units == NETSTATUS_UNIT_BYTES) + { + elm_object_text_set(hover, _("Bytes")); + nc->receive_unit_adjust = 1; + } + elm_hoversel_item_add(hover, _("KB"), NULL, ELM_ICON_NONE, NULL, NULL); + if (inst->cfg->netstatus.receive_units == NETSTATUS_UNIT_KB) + { + elm_object_text_set(hover, _("KB")); + nc->receive_unit_adjust = 1024; + } + elm_hoversel_item_add(hover, _("MB"), NULL, ELM_ICON_NONE, NULL, NULL); + if (inst->cfg->netstatus.receive_units == NETSTATUS_UNIT_MB) + { + elm_object_text_set(hover, _("MB")); + nc->receive_unit_adjust = 2048; + } + elm_hoversel_item_add(hover, _("GB"), NULL, ELM_ICON_NONE, NULL, NULL); + if (inst->cfg->netstatus.receive_units == NETSTATUS_UNIT_GB) + { + elm_object_text_set(hover, _("GB")); + nc->receive_unit_adjust = 3072; + } + evas_object_size_hint_align_set(hover, EVAS_HINT_FILL, 0.5); + evas_object_size_hint_weight_set(hover, EVAS_HINT_EXPAND, 0.0); + if (inst->cfg->netstatus.automax) elm_object_disabled_set(hover, EINA_TRUE); + evas_object_smart_callback_add(hover, "selected", _receive_hover_changed, nc); + elm_box_pack_end(box, hover); + evas_object_show(hover); + nc->receive_units = hover; + + elm_slider_value_set(nc->receive_max, ceil(inst->cfg->netstatus.inmax / nc->receive_unit_adjust)); + + slider = elm_slider_add(box); + elm_object_text_set(slider, _("Send:")); + elm_slider_unit_format_set(slider, "%1.0f"); + elm_slider_indicator_format_set(slider, "%1.0f"); + elm_slider_min_max_set(slider, 0, 1000); + elm_slider_value_set(slider, inst->cfg->netstatus.outmax); + elm_slider_step_set(slider, 10); + elm_slider_span_size_set(slider, 100); + evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5); + evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0); + evas_object_smart_callback_add(slider, "delay,changed", _update_send_maximums, nc); + if (inst->cfg->netstatus.automax) elm_object_disabled_set(slider, EINA_TRUE); + elm_box_pack_end(box, slider); + evas_object_show(slider); + nc->send_max = slider; + + hover = elm_hoversel_add(box); + elm_hoversel_auto_update_set(hover, EINA_TRUE); + elm_hoversel_hover_parent_set(hover, popup); + elm_hoversel_item_add(hover, _("Bytes"), NULL, ELM_ICON_NONE, NULL, nc); + if (inst->cfg->netstatus.send_units == NETSTATUS_UNIT_BYTES) + { + elm_object_text_set(hover, _("Bytes")); + nc->send_unit_adjust = 1; + } + elm_hoversel_item_add(hover, _("KB"), NULL, ELM_ICON_NONE, NULL, nc); + if (inst->cfg->netstatus.send_units == NETSTATUS_UNIT_KB) + { + elm_object_text_set(hover, _("KB")); + nc->send_unit_adjust = 1024; + } + elm_hoversel_item_add(hover, _("MB"), NULL, ELM_ICON_NONE, NULL, nc); + if (inst->cfg->netstatus.send_units == NETSTATUS_UNIT_MB) + { + elm_object_text_set(hover, _("MB")); + nc->send_unit_adjust = 2048; + } + elm_hoversel_item_add(hover, _("GB"), NULL, ELM_ICON_NONE, NULL, nc); + if (inst->cfg->netstatus.send_units == NETSTATUS_UNIT_GB) + { + elm_object_text_set(hover, _("GB")); + nc->send_unit_adjust = 3072; + } + evas_object_size_hint_align_set(hover, EVAS_HINT_FILL, 0.5); + evas_object_size_hint_weight_set(hover, EVAS_HINT_EXPAND, 0.0); + if (inst->cfg->netstatus.automax) elm_object_disabled_set(hover, EINA_TRUE); + evas_object_smart_callback_add(hover, "selected", _send_hover_changed, nc); + elm_box_pack_end(box, hover); + evas_object_show(hover); + nc->send_units = hover; + + elm_slider_value_set(nc->send_max, ceil(inst->cfg->netstatus.outmax / nc->send_unit_adjust)); + elm_object_content_set(frame, box); popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE); evas_object_layer_set(popup, E_LAYER_POPUP); @@ -154,7 +402,7 @@ netstatus_configure(Instance *inst) e_comp_object_util_center_on_zone(popup, zone); evas_object_show(popup); e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL); - evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, inst); + evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, nc); return inst->cfg->netstatus.configure = popup; } diff --git a/src/modules/sysinfo/netstatus/netstatus_proc.c b/src/modules/sysinfo/netstatus/netstatus_proc.c index 86d6ae372..b2f56f0fc 100644 --- a/src/modules/sysinfo/netstatus/netstatus_proc.c +++ b/src/modules/sysinfo/netstatus/netstatus_proc.c @@ -29,8 +29,11 @@ _netstatus_proc_getrstatus(Instance *inst) else { inst->cfg->netstatus.in = tot_in; - if (diffin > inst->cfg->netstatus.inmax) - inst->cfg->netstatus.inmax = diffin; + if (inst->cfg->netstatus.automax) + { + if (diffin > inst->cfg->netstatus.inmax) + inst->cfg->netstatus.inmax = diffin; + } inst->cfg->netstatus.incurrent = diffin; if (inst->cfg->netstatus.inmax > 0) percent = 100 * ((float)inst->cfg->netstatus.incurrent / (float)inst->cfg->netstatus.inmax); @@ -84,8 +87,11 @@ _netstatus_proc_gettstatus(Instance *inst) else { inst->cfg->netstatus.out = tot_out; - if (diffout > inst->cfg->netstatus.outmax) - inst->cfg->netstatus.outmax = diffout; + if (inst->cfg->netstatus.automax) + { + if (diffout > inst->cfg->netstatus.outmax) + inst->cfg->netstatus.outmax = diffout; + } inst->cfg->netstatus.outcurrent = diffout; if (inst->cfg->netstatus.outcurrent > 0) percent = 100 * ((float)inst->cfg->netstatus.outcurrent / (float)inst->cfg->netstatus.outmax); diff --git a/src/modules/sysinfo/sysinfo.c b/src/modules/sysinfo/sysinfo.c index 05433fb82..c36455ae2 100644 --- a/src/modules/sysinfo/sysinfo.c +++ b/src/modules/sysinfo/sysinfo.c @@ -135,6 +135,11 @@ _conf_item_get(int *id) ci->netstatus.outstring = NULL; ci->netstatus.popup = NULL; ci->netstatus.configure = NULL; + ci->netstatus.automax = EINA_TRUE; + ci->netstatus.inmax = 0; + ci->netstatus.outmax = 0; + ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES; + ci->netstatus.send_units = NETSTATUS_UNIT_BYTES; sysinfo_config->items = eina_list_append(sysinfo_config->items, ci); diff --git a/src/modules/sysinfo/sysinfo.h b/src/modules/sysinfo/sysinfo.h index 2c41a91bc..b3dcb02b3 100644 --- a/src/modules/sysinfo/sysinfo.h +++ b/src/modules/sysinfo/sysinfo.h @@ -27,6 +27,15 @@ enum _E_Sysinfo_Module E_SYSINFO_MODULE_SYSINFO }; +typedef enum _Netstatus_Unit Netstatus_Unit; +enum _Netstatus_Unit +{ + NETSTATUS_UNIT_BYTES = 0, + NETSTATUS_UNIT_KB, + NETSTATUS_UNIT_MB, + NETSTATUS_UNIT_GB +}; + typedef enum _Sensor_Type { SENSOR_TYPE_NONE, @@ -112,6 +121,7 @@ struct _Config struct _Config_Item { int id; + int version; E_Sysinfo_Module esm; struct { @@ -203,6 +213,9 @@ struct _Config_Item Evas_Object *o_gadget; Evas_Object *popup; Evas_Object *configure; + Eina_Bool automax; + Netstatus_Unit receive_units; + Netstatus_Unit send_units; int poll_interval; long in; long out;