netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=d621b0b998ab035bb189044bb0ec362012c72fab

commit d621b0b998ab035bb189044bb0ec362012c72fab
Author: Alastair Poole <nets...@gmail.com>
Date:   Tue Nov 10 13:12:10 2020 +0000

    windows: save the value for others.
    
    This saves a job later...
---
 src/bin/evisum_config.h | 22 +++++++++++++++++++++-
 src/bin/ui/ui.c         | 35 +++++++++++++++++++++++++++++++----
 src/bin/ui/ui.h         |  6 ++++++
 src/bin/ui/ui_cpu.c     |  3 +++
 src/bin/ui/ui_disk.c    | 22 +++++++++++++++-------
 src/bin/ui/ui_memory.c  | 32 ++++++++++++++++++++++++++++----
 src/bin/ui/ui_sensors.c | 28 ++++++++++++++++++++++++++--
 7 files changed, 130 insertions(+), 18 deletions(-)

diff --git a/src/bin/evisum_config.h b/src/bin/evisum_config.h
index 3a6f0de..6bad5f8 100644
--- a/src/bin/evisum_config.h
+++ b/src/bin/evisum_config.h
@@ -3,7 +3,7 @@
 
 #include "ui/ui.h"
 
-#define CONFIG_VERSION 0x0008
+#define CONFIG_VERSION 0x000a
 
 typedef struct _Evisum_Config
 {
@@ -18,11 +18,31 @@ typedef struct _Evisum_Config
    Eina_Bool show_kthreads;
    Eina_Bool show_user;
    Eina_Bool show_desktop;
+
    struct
    {
       int width;
       int height;
    } cpu;
+
+   struct
+   {
+      int width;
+      int height;
+   } mem;
+
+   struct
+   {
+      int width;
+      int height;
+   } disk;
+
+   struct
+   {
+      int width;
+      int height;
+   } sensors;
+
 } Evisum_Config;
 
 void config_init(void);
diff --git a/src/bin/ui/ui.c b/src/bin/ui/ui.c
index 94d9257..9dcbad9 100644
--- a/src/bin/ui/ui.c
+++ b/src/bin/ui/ui.c
@@ -47,6 +47,27 @@ evisum_ui_config_save(Ui *ui)
         _evisum_config->cpu.height = ui->cpu.height = h;
      }
 
+   if (ui->mem.win)
+     {
+        evas_object_geometry_get(ui->mem.win, NULL, NULL, &w, &h);
+        _evisum_config->mem.width = ui->mem.width = w;
+        _evisum_config->mem.height = ui->mem.height = h;
+     }
+
+   if (ui->disk.win)
+     {
+        evas_object_geometry_get(ui->disk.win, NULL, NULL, &w, &h);
+        _evisum_config->disk.width = ui->disk.width = w;
+        _evisum_config->disk.height = ui->disk.height = h;
+     }
+
+   if (ui->sensors.win)
+     {
+        evas_object_geometry_get(ui->sensors.win, NULL, NULL, &w, &h);
+        _evisum_config->sensors.width = ui->sensors.width = w;
+        _evisum_config->sensors.height = ui->sensors.height = h;
+     }
+
    config_save(_evisum_config);
 }
 
@@ -55,15 +76,12 @@ evisum_ui_config_load(Ui *ui)
 {
    _evisum_config = NULL;
 
-   _evisum_config   = config_load();
+   _evisum_config = config_load();
 
    ui->settings.sort_type    = _evisum_config->sort_type;
    ui->settings.sort_reverse = _evisum_config->sort_reverse;
    ui->settings.poll_delay   = _evisum_config->poll_delay;
 
-   if ((_evisum_config->width > 0) && (_evisum_config->height > 0))
-     evas_object_resize(ui->win, _evisum_config->width, 
_evisum_config->height);
-
    evisum_ui_effects_enabled_set(_evisum_config->effects);
    evisum_ui_backgrounds_enabled_set(_evisum_config->backgrounds);
 
@@ -74,6 +92,15 @@ evisum_ui_config_load(Ui *ui)
 
    ui->cpu.width = _evisum_config->cpu.width;
    ui->cpu.height = _evisum_config->cpu.height;
+
+   ui->mem.width = _evisum_config->mem.width;
+   ui->mem.height = _evisum_config->mem.height;
+
+   ui->disk.width = _evisum_config->disk.width;
+   ui->disk.height = _evisum_config->disk.height;
+
+   ui->sensors.width = _evisum_config->sensors.width;
+   ui->sensors.height = _evisum_config->sensors.height;
 }
 
 static void
diff --git a/src/bin/ui/ui.h b/src/bin/ui/ui.h
index b006363..ce7f3dc 100644
--- a/src/bin/ui/ui.h
+++ b/src/bin/ui/ui.h
@@ -92,6 +92,8 @@ typedef struct Ui
    struct
    {
       Evas_Object *win;
+      int          width;
+      int          height;
       Ecore_Timer *timer;
       Eina_Bool    zfs_mounted;
    } mem;
@@ -99,11 +101,15 @@ typedef struct Ui
    struct
    {
       Evas_Object *win;
+      int          width;
+      int          height;
    } disk;
 
    struct
    {
       Evas_Object *win;
+      int          width;
+      int          height;
       Evas_Object *box;
       Evas_Object *timer;
    } sensors;
diff --git a/src/bin/ui/ui_cpu.c b/src/bin/ui/ui_cpu.c
index 4afbed3..0cf384c 100644
--- a/src/bin/ui/ui_cpu.c
+++ b/src/bin/ui/ui_cpu.c
@@ -709,6 +709,9 @@ ui_win_cpu_add(Ui *ui)
      evas_object_geometry_get(ui->win, &x, &y, NULL, NULL);
    if (x > 0 && y > 0)
      evas_object_move(win, x + 20, y + 20);
+   else
+     elm_win_center(win, 1, 1);
+
    evas_object_show(win);
 }
 
diff --git a/src/bin/ui/ui_disk.c b/src/bin/ui/ui_disk.c
index 4d7f2c2..a34f2fc 100644
--- a/src/bin/ui/ui_disk.c
+++ b/src/bin/ui/ui_disk.c
@@ -402,7 +402,10 @@ _btn_usage_clicked_cb(void *data EINA_UNUSED, Evas_Object 
*obj,
 static void
 _win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
+   Ui *ui = data;
+
    _disks_poll_timer_cb(NULL);
+   evisum_ui_config_save(ui);
 }
 
 void
@@ -420,8 +423,7 @@ ui_win_disk_add(Ui *ui)
      }
 
    eina_lock_new(&_lock);
-   ui->disk.win = win = elm_win_util_standard_add("evisum",
-                   _("Storage"));
+   ui->disk.win = win = elm_win_util_standard_add("evisum", _("Storage"));
    evas_object_size_hint_weight_set(win, EXPAND, EXPAND);
    evas_object_size_hint_align_set(win, FILL, FILL);
    evisum_ui_background_random_add(win, (evisum_ui_effects_enabled_get() ||
@@ -498,7 +500,7 @@ ui_win_disk_add(Ui *ui)
    evas_object_size_hint_weight_set(scroller, EXPAND, EXPAND);
    evas_object_size_hint_align_set(scroller, FILL, FILL);
    elm_scroller_policy_set(scroller,
-                   ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+                           ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
    evas_object_show(scroller);
 
    pd->genlist = genlist = elm_genlist_add(win);
@@ -516,16 +518,22 @@ ui_win_disk_add(Ui *ui)
 
    evas_object_smart_callback_add(win, "delete,request", _win_del_cb, ui);
 
+   if (ui->disk.width > 0 && ui->disk.height > 0)
+     evas_object_resize(win, ui->disk.width, ui->disk.height);
+   else
+     evas_object_resize(win, UI_CHILD_WIN_WIDTH * 1.5, UI_CHILD_WIN_HEIGHT * 
1.1);
+
    if (ui->win)
      evas_object_geometry_get(ui->win, &x, &y, NULL, NULL);
-   evas_object_resize(win, UI_CHILD_WIN_WIDTH * 1.5, UI_CHILD_WIN_HEIGHT * 
1.1);
-   evas_object_move(win, x + 20, y + 20);
    if (x > 0 && y > 0)
-     evas_object_move(win, x, y);
+     evas_object_move(win, x + 20, y + 20);
+   else
+     elm_win_center(win, 1, 1);
+
    evas_object_show(win);
 
    evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE,
-                                  _win_resize_cb, NULL);
+                                  _win_resize_cb, ui);
 
    pd->cache = evisum_ui_item_cache_new(genlist, _item_create, 10);
 
diff --git a/src/bin/ui/ui_memory.c b/src/bin/ui/ui_memory.c
index e74474d..abf639e 100644
--- a/src/bin/ui/ui_memory.c
+++ b/src/bin/ui/ui_memory.c
@@ -143,12 +143,21 @@ _win_del_cb(void *data, Evas_Object *obj,
      ecore_main_loop_quit();
 }
 
+static void
+_win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Ui *ui = data;
+
+   evisum_ui_config_save(ui);
+}
+
 void
 ui_win_memory_add(Ui *ui)
 {
    Evas_Object *win, *frame, *pb;
    Evas_Object *border, *rect, *label, *table;
    int i;
+   Evas_Coord x = 0, y = 0;
    meminfo_t memory;
 
    if (ui->mem.win)
@@ -163,12 +172,13 @@ ui_win_memory_add(Ui *ui)
    memset(&memory, 0, sizeof(memory));
    system_memory_usage_get(&memory);
 
-   ui->mem.win = win = elm_win_util_standard_add("evisum",
-                   _("Memory Usage"));
+   ui->mem.win = win = elm_win_util_standard_add("evisum", _("Memory Usage"));
    evas_object_size_hint_weight_set(win, EXPAND, EXPAND);
    evas_object_size_hint_align_set(win, FILL, FILL);
    evisum_ui_background_random_add(win, (evisum_ui_effects_enabled_get() ||
                                    evisum_ui_backgrounds_enabled_get()));
+   evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE,
+                                  _win_resize_cb, ui);
 
    frame = elm_frame_add(win);
    evas_object_size_hint_weight_set(frame, EXPAND, EXPAND);
@@ -238,8 +248,22 @@ ui_win_memory_add(Ui *ui)
 
    evas_object_data_set(win, "widgets", widgets);
    evas_object_smart_callback_add(win, "delete,request", _win_del_cb, ui);
-   evisum_child_window_show(ui->win, win);
-   evas_object_resize(win, UI_CHILD_WIN_WIDTH , UI_CHILD_WIN_HEIGHT / 2);
+
+   if (ui->mem.width > 0 && ui->mem.height > 0)
+     evas_object_resize(win, ui->mem.width, ui->mem.height);
+   else
+     evas_object_resize(win, UI_CHILD_WIN_WIDTH , UI_CHILD_WIN_HEIGHT / 2);
+
+   if (ui->win)
+     evas_object_geometry_get(ui->win, &x, &y, NULL, NULL);
+   if (x > 0 && y > 0)
+     evas_object_move(win, x + 20, y + 20);
+   else
+     elm_win_center(win, 1, 1);
+
+   evas_object_show(win);
+
+   evas_object_show(win);
 
    _memory_update(widgets);
 
diff --git a/src/bin/ui/ui_sensors.c b/src/bin/ui/ui_sensors.c
index a38e2ad..b02cda9 100644
--- a/src/bin/ui/ui_sensors.c
+++ b/src/bin/ui/ui_sensors.c
@@ -246,11 +246,20 @@ _win_del_cb(void *data, Evas_Object *obj EINA_UNUSED,
      ecore_main_loop_quit();
 }
 
+static void
+_win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Ui *ui = data;
+
+   evisum_ui_config_save(ui);
+}
+
 void
 ui_win_sensors_add(Ui *ui)
 {
    Evas_Object *win, *box, *hbox, *frame, *scroller;
    Evas_Object *table, *border, *rect;
+   Evas_Coord x = 0, y = 0;
 
    if (ui->sensors.win)
      {
@@ -263,6 +272,8 @@ ui_win_sensors_add(Ui *ui)
    evas_object_size_hint_align_set(win, FILL, FILL);
    evisum_ui_background_random_add(win, (evisum_ui_effects_enabled_get() ||
                                    evisum_ui_backgrounds_enabled_get()));
+   evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE,
+                                  _win_resize_cb, ui);
 
    box = elm_box_add(win);
    evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
@@ -284,7 +295,7 @@ ui_win_sensors_add(Ui *ui)
    evas_object_size_hint_weight_set(scroller, EXPAND, EXPAND);
    evas_object_size_hint_align_set(scroller, FILL, FILL);
    elm_scroller_policy_set(scroller,
-                   ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+                           ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
    evas_object_show(scroller);
 
    border = elm_frame_add(box);
@@ -312,7 +323,20 @@ ui_win_sensors_add(Ui *ui)
    elm_object_content_set(win, box);
 
    evas_object_smart_callback_add(win, "delete,request", _win_del_cb, ui);
-   evisum_child_window_show(ui->win, win);
+
+   if (ui->sensors.width > 0 && ui->sensors.height > 0)
+     evas_object_resize(win, ui->sensors.width, ui->sensors.height);
+   else
+     evas_object_resize(win, UI_CHILD_WIN_WIDTH, UI_CHILD_WIN_HEIGHT);
+
+   if (ui->win)
+     evas_object_geometry_get(ui->win, &x, &y, NULL, NULL);
+   if (x > 0 && y > 0)
+     evas_object_move(win, x + 20, y + 20);
+   else
+     elm_win_center(win, 1, 1);
+
+   evas_object_show(win);
 
    _sensors_update(ui);
 

-- 


Reply via email to