diff --git a/data/themes/evisum.edc b/data/themes/evisum.edc index fbba875..89ea43e 100644 --- a/data/themes/evisum.edc +++ b/data/themes/evisum.edc @@ -64,7 +64,44 @@ collections { visible: 1; } } - + part + { + name: "evisum/indicator-clip"; + type: RECT; + description + { + state: "default" 0.0; + min: 128 128; + max: 128 128; + visible: 0; + color: 255 255 255 0; + } + description + { + inherit: "default"; + state: "visible" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part + { + name: "evisum/indicator"; + type: SWALLOW; + description + { + aspect: 1.0 1.0; aspect_preference: BOTH; + clip_to: "evisum/indicator-clip"; + state: "default" 0.0; + visible: 1; + } + description + { + clip_to: "evisum/indicator-clip"; + state: "visible" 0.0; + visible: 1; + } + } } programs { @@ -76,7 +113,6 @@ collections { transition: SINUSOIDAL 0.5; target: "evisum/menu-clip"; } - program { signal: "menu,hide"; @@ -85,6 +121,23 @@ collections { transition: SINUSOIDAL 0.5; target: "evisum/menu-clip"; } + program + { + signal: "indicator,show"; + source: "evisum/indicator"; + action: STATE_SET "visible" 0.0; + target: "evisum/indicator-clip"; + after: "indicator_hide"; + } + program + { + name: "indicator_hide"; + signal: "indicator,hide"; + source: "evisum/indicator"; + action: STATE_SET "default" 0.0; + transition: SINUSOIDAL 2.0; + target: "evisum/indicator-clip"; + } } } } diff --git a/src/bin/ui/evisum_ui.c b/src/bin/ui/evisum_ui.c index 27dc128..1c4a1b2 100644 --- a/src/bin/ui/evisum_ui.c +++ b/src/bin/ui/evisum_ui.c @@ -26,7 +26,7 @@ evisum_ui_config_save(Evisum_Ui *ui) if (!_evisum_config) return; - _evisum_config->effects = 0; + _evisum_config->effects = ui->effects; _evisum_config->backgrounds = 0; if (ui->proc.win) @@ -110,6 +110,18 @@ evisum_ui_config_save(Evisum_Ui *ui) ecore_event_add(EVISUM_EVENT_CONFIG_CHANGED, NULL, NULL, NULL); } +Eina_Bool +evisum_ui_effects_enabled_get(Evisum_Ui *ui) +{ + return ui->effects; +} + +void +evisum_ui_effects_enabled_set(Evisum_Ui *ui, Eina_Bool enabled) +{ + ui->effects = enabled; +} + void evisum_ui_config_load(Evisum_Ui *ui) { @@ -117,6 +129,8 @@ evisum_ui_config_load(Evisum_Ui *ui) _evisum_config = config_load(); + ui->effects = _evisum_config->effects; + ui->proc.sort_type = _evisum_config->proc.sort_type; ui->proc.sort_reverse = _evisum_config->proc.sort_reverse; ui->proc.poll_delay = _evisum_config->proc.poll_delay; @@ -249,14 +263,15 @@ _menu_effects_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Evisum_Ui *ui; + Eina_Bool state; ui = data; -#if 0 - evisum_ui_config_save(ui); + state = evisum_ui_effects_enabled_get(ui); + evisum_ui_effects_enabled_set(ui, !state); + evisum_ui_config_save(ui); evisum_ui_restart(ui); -#endif } static Evas_Object * diff --git a/src/bin/ui/evisum_ui.h b/src/bin/ui/evisum_ui.h index 0ef567c..9d8ebe3 100644 --- a/src/bin/ui/evisum_ui.h +++ b/src/bin/ui/evisum_ui.h @@ -21,6 +21,8 @@ typedef struct _Evisum_Ui pid_t program_pid; Ecore_Event_Handler *handler_sig; + Eina_Bool effects; + struct { Evas_Object *win; @@ -117,4 +119,10 @@ evisum_ui_config_save(Evisum_Ui *ui); void evisum_ui_restart(Evisum_Ui *ui); +Eina_Bool +evisum_ui_effects_enabled_get(Evisum_Ui *ui); + +void +evisum_ui_effects_enabled_set(Evisum_Ui *ui, Eina_Bool enabled); + #endif diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c index 6ec7e6a..ab0a7c0 100644 --- a/src/bin/ui/ui_process_list.c +++ b/src/bin/ui/ui_process_list.c @@ -90,6 +90,7 @@ typedef struct int dsleep; } summary; + Elm_Layout *indicator; Evisum_Ui *ui; } Data; @@ -992,6 +993,8 @@ _process_list_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED, ecore_timer_add(1.0, _bring_in, pd); pd->poll_count++; + if (evisum_ui_effects_enabled_get(pd->ui)) + elm_object_signal_emit(pd->indicator, "indicator,show", "evisum/indicator"); } static void @@ -1963,6 +1966,7 @@ _win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) evas_object_geometry_get(obj, NULL, NULL, &ui->proc.width, &ui->proc.height); + evas_object_move(pd->indicator, 32, ui->proc.height - 32); } static void @@ -2084,6 +2088,30 @@ _win_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, pd = NULL; } +static void +_effects_add(Data *pd, Evas_Object *win) +{ + Elm_Layout *lay; + Evas_Object *pb; + + if (evisum_ui_effects_enabled_get(pd->ui)) + { + pb = elm_progressbar_add(win); + elm_object_style_set(pb, "wheel"); + elm_progressbar_pulse_set(pb, 1); + elm_progressbar_pulse(pb, 1); + evas_object_show(pb); + + pd->indicator = lay = elm_layout_add(win); + elm_layout_file_set(lay, PACKAGE_DATA_DIR"/themes/evisum.edj", "evisum"); + elm_layout_content_set(lay, "evisum/indicator", pb); + evas_object_show(lay); + } + + _win_alpha_set(pd); + evas_object_show(win); +} + static void _init(Data *pd) { @@ -2161,8 +2189,8 @@ ui_process_list_win_add(Evisum_Ui *ui) _win_move_cb, pd); evas_object_event_callback_add(tb, EVAS_CALLBACK_KEY_DOWN, _win_key_down_cb, pd); - _win_alpha_set(pd); - evas_object_show(win); + + _effects_add(pd, win); _win_resize_cb(pd, NULL, win, NULL); pd->thread = ecore_thread_feedback_run(_process_list,