windows: save the value for others.

This saves a job later...
This commit is contained in:
Alastair Poole 2020-11-10 13:12:10 +00:00
parent 5f75b25ca2
commit d621b0b998
7 changed files with 130 additions and 18 deletions

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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);
}

View File

@ -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);

View File

@ -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);

View File

@ -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);