diff --git a/src/bin/ui.c b/src/bin/ui.c
index a18231b..4a69aef 100644
--- a/src/bin/ui.c
+++ b/src/bin/ui.c
@@ -212,11 +212,78 @@ _battery_list_add(Evas_Object *box, power_t *power)
free(power->batteries);
}
+static void
+_network_usage_add(Ui *ui, Evas_Object *box, uint64_t bytes, Eina_Bool incoming)
+{
+ Evas_Object *vbox, *hbox, *label, *progress, *ic;
+ char *tmp;
+
+ vbox = elm_box_add(box);
+ evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(vbox);
+
+ label = elm_label_add(box);
+ if (incoming)
+ elm_object_text_set(label, "Network Incoming");
+ else
+ elm_object_text_set(label, "Network Outgoing");
+
+ evas_object_size_hint_align_set(label, 1.0, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(label);
+ elm_box_pack_end(vbox, label);
+
+ hbox = elm_box_add(box);
+ evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_box_horizontal_set(hbox, EINA_TRUE);
+ evas_object_show(hbox);
+
+ ic = elm_image_add(box);
+ elm_image_file_set(ic, _icon_path_get("network"), NULL);
+ evas_object_size_hint_min_set(ic, 32 * elm_config_scale_get(), 32 * elm_config_scale_get());
+ evas_object_show(ic);
+ elm_box_pack_end(hbox, ic);
+
+ progress = elm_progressbar_add(box);
+ evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_progressbar_span_size_set(progress, 1.0);
+ evas_object_show(progress);
+ elm_box_pack_end(hbox, progress);
+ elm_box_pack_end(vbox, hbox);
+
+ tmp = _network_transfer_format(bytes);
+ if (tmp)
+ {
+ elm_progressbar_unit_format_set(progress, tmp);
+ free(tmp);
+ }
+
+ if (bytes)
+ {
+ if (incoming)
+ {
+ if (ui->incoming_max < bytes)
+ ui->incoming_max = bytes;
+ elm_progressbar_value_set(progress, (double) bytes / ui->incoming_max);
+ }
+ else
+ {
+ if (ui->outgoing_max < bytes)
+ ui->outgoing_max = bytes;
+ elm_progressbar_value_set(progress, (double) bytes / ui->outgoing_max);
+ }
+ }
+
+ elm_box_pack_end(box, vbox);
+}
+
static void
_tab_misc_update(Ui *ui, results_t *results)
{
- Evas_Object *box, *hbox, *vbox, *frame, *ic, *progress;
- Evas_Object *label;
+ Evas_Object *box, *frame;
if (!ui->misc_visible)
return;
@@ -229,102 +296,8 @@ _tab_misc_update(Ui *ui, results_t *results)
evas_object_show(box);
_battery_list_add(box, &results->power);
-
- vbox = elm_box_add(box);
- evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(vbox);
-
- label = elm_label_add(box);
- elm_object_text_set(label, "Network Incoming");
- evas_object_size_hint_align_set(label, 1.0, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(label);
- elm_box_pack_end(vbox, label);
-
- hbox = elm_box_add(box);
- evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_box_horizontal_set(hbox, EINA_TRUE);
- evas_object_show(hbox);
-
- ic = elm_image_add(box);
- elm_image_file_set(ic, _icon_path_get("network"), NULL);
- evas_object_size_hint_min_set(ic, 32 * elm_config_scale_get(), 32 * elm_config_scale_get());
- evas_object_show(ic);
- elm_box_pack_end(hbox, ic);
-
- progress = elm_progressbar_add(box);
- evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_progressbar_span_size_set(progress, 1.0);
- evas_object_show(progress);
- elm_box_pack_end(hbox, progress);
- elm_box_pack_end(vbox, hbox);
-
- char *tmp = _network_transfer_format(results->incoming);
- if (tmp)
- {
- elm_progressbar_unit_format_set(progress, tmp);
- free(tmp);
- }
-
- if (results->incoming)
- {
- if (ui->incoming_max < results->incoming)
- ui->incoming_max = results->incoming;
- elm_progressbar_value_set(progress, (double) results->incoming / ui->incoming_max);
- }
-
- elm_box_pack_end(box, vbox);
-
- vbox = elm_box_add(box);
- evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(vbox);
-
- label = elm_label_add(box);
- elm_object_text_set(label, "Network Outgoing");
- evas_object_size_hint_align_set(label, 1.0, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(label);
- elm_box_pack_end(vbox, label);
-
- hbox = elm_box_add(box);
- evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_box_horizontal_set(hbox, EINA_TRUE);
- evas_object_show(hbox);
-
- ic = elm_image_add(box);
- elm_image_file_set(ic, _icon_path_get("network"), NULL);
- evas_object_size_hint_min_set(ic, 32 * elm_config_scale_get(), 32 * elm_config_scale_get());
- evas_object_show(ic);
- elm_box_pack_end(hbox, ic);
-
- progress = elm_progressbar_add(box);
- evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_progressbar_span_size_set(progress, 1.0);
- evas_object_show(progress);
-
- tmp = _network_transfer_format(results->outgoing);
- if (tmp)
- {
- elm_progressbar_unit_format_set(progress, tmp);
- free(tmp);
- }
-
- if (results->outgoing)
- {
- if (ui->outgoing_max < results->outgoing)
- ui->outgoing_max = results->outgoing;
- elm_progressbar_value_set(progress, (double) results->outgoing / ui->outgoing_max);
- }
-
- elm_box_pack_end(hbox, progress);
- elm_box_pack_end(vbox, hbox);
- elm_box_pack_end(box, vbox);
+ _network_usage_add(ui, box, results->incoming, EINA_TRUE);
+ _network_usage_add(ui, box, results->outgoing, EINA_FALSE);
frame = elm_frame_add(ui->misc_activity);
evas_object_size_hint_align_set(frame, EVAS_HINT_FILL, EVAS_HINT_FILL);