From d2254253be58d575d347fc6f1e87675da992c839 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 11 Jul 2012 08:50:52 +0000 Subject: [PATCH] pager module now uses deskpreview to show full, realtime previews of desktops; option to disable can be found in pager settings ticket #141 SVN revision: 73555 --- data/themes/default.edc | 122 +++++++++++++++++++++++++++---- src/modules/pager/e_mod_config.c | 16 +++- src/modules/pager/e_mod_main.c | 24 ++++++ src/modules/pager/e_mod_main.h | 1 + 4 files changed, 145 insertions(+), 18 deletions(-) diff --git a/data/themes/default.edc b/data/themes/default.edc index ff486f4b6..f8274e301 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -10583,6 +10583,9 @@ collections { image: "pager_hi2.png" COMP; image: "pager_base_pattern.png" COMP; } + script { + public disable_live_preview = 0; + } parts { part { name: "zoom"; @@ -10625,6 +10628,11 @@ collections { visible: 0; color: 255 255 255 0; } + description { + state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + } } part { name: "base2"; @@ -10652,6 +10660,51 @@ collections { rel1.offset: -1 -1; rel2.offset: 0 0; } + description { + state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { + name: "e.background"; + type: SWALLOW; + clip_to: "bg_clip"; + description { + state: "default" 0.0; + visible: 1; + color: 255 255 255 255; + rel1 { + to: "zoom"; + offset: -1 -1; + } + rel2.to: "zoom"; + } + description { + state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { + name: "bg_clip"; + type: RECT; + description { + state: "default" 0.0; + color: 200 200 200 200; + rel1.to: "e.background"; + rel2.to: "e.background"; + } + description { + state: "active" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + description { + state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + } } part { name: "pattern"; @@ -10797,30 +10850,67 @@ collections { } programs { program { - name: "on"; + name: "select"; signal: "e,state,selected"; source: "e"; - action: STATE_SET "active" 0.0; + script { + if (get_int(disable_live_preview) == 1) { + set_state(PART:"base", "active", 0.0); + set_state(PART:"base2", "active", 0.0); + set_state(PART:"pattern", "active", 0.0); + set_state(PART:"clip", "active", 0.0); + set_state(PART:"over", "active", 0.0); + set_state(PART:"over2", "active", 0.0); + } else + set_state(PART:"bg_clip", "active", 0.0); + } transition: LINEAR 0.2; - target: "base"; - target: "base2"; - target: "pattern"; - target: "clip"; - target: "over"; - target: "over2"; } program { - name: "off"; + name: "unselect"; signal: "e,state,unselected"; source: "e"; - action: STATE_SET "default" 0.0; + script { + if (get_int(disable_live_preview) == 1) { + set_state(PART:"base", "default", 0.0); + set_state(PART:"base2", "default", 0.0); + set_state(PART:"pattern", "default", 0.0); + set_state(PART:"clip", "default", 0.0); + set_state(PART:"over", "default", 0.0); + set_state(PART:"over2", "default", 0.0); + } else + set_state(PART:"bg_clip", "default", 0.0); + } + transition: LINEAR 0.3; + } + program { + name: "preview"; + signal: "e,preview,on"; + source: "e"; + script { + set_int(disable_live_preview, 0); + set_state(PART:"bg_clip", "default", 0.0); + set_state(PART:"e.background", "default", 0.0); + set_state(PART:"base", "hidden", 0.0); + set_state(PART:"base2", "hidden", 0.0); + set_state(PART:"pattern", "default", 0.0); + set_state(PART:"over", "active", 0.0); + set_state(PART:"over2", "default", 0.0); + } + transition: LINEAR 0.3; + } + program { + name: "preview_off"; + signal: "e,preview,off"; + source: "e"; + script { + set_int(disable_live_preview, 1); + set_state(PART:"bg_clip", "hidden", 0.0); + set_state(PART:"e.background", "hidden", 0.0); + set_state(PART:"base", "default", 0.0); + set_state(PART:"base2", "default", 0.0); + } transition: LINEAR 0.3; - target: "base"; - target: "base2"; - target: "pattern"; - target: "clip"; - target: "over"; - target: "over2"; } program { name: "drg"; diff --git a/src/modules/pager/e_mod_config.c b/src/modules/pager/e_mod_config.c index e0fe13c8a..5c3406521 100644 --- a/src/modules/pager/e_mod_config.c +++ b/src/modules/pager/e_mod_config.c @@ -29,7 +29,7 @@ struct _E_Config_Dialog_Data Evas_Object *ob1, *ob2, *ob3; Eina_List *popup_list, *urgent_list; } gui; - int drag_resist, flip_desk, show_desk_names; + int drag_resist, flip_desk, show_desk_names, disable_live_preview; }; /* local function prototypes */ @@ -104,6 +104,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->btn.noplace = pager_config->btn_noplace; cfdata->btn.desk = pager_config->btn_desk; cfdata->flip_desk = pager_config->flip_desk; + cfdata->disable_live_preview = pager_config->disable_live_preview; cfdata->show_desk_names = pager_config->show_desk_names; } @@ -130,6 +131,9 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data ow = e_widget_check_add(evas, _("Show desktop names"), &(cfdata->show_desk_names)); e_widget_framelist_object_append(of, ow); + ow = e_widget_check_add(evas, _("Disable live preview"), + &(cfdata->disable_live_preview)); + e_widget_framelist_object_append(of, ow); e_widget_list_object_append(ol, of, 1, 0, 0.5); of = e_widget_framelist_add(evas, _("Popup"), 0); @@ -149,8 +153,10 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) { pager_config->popup = cfdata->popup.show; pager_config->flip_desk = cfdata->flip_desk; + pager_config->disable_live_preview = cfdata->disable_live_preview; pager_config->show_desk_names = cfdata->show_desk_names; pager_config->popup_urgent = cfdata->popup.urgent_show; + _pager_cb_config_updated(); e_config_save_queue(); return 1; } @@ -160,6 +166,7 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfda { if ((int)pager_config->popup != cfdata->popup.show) return 1; if ((int)pager_config->flip_desk != cfdata->flip_desk) return 1; + if ((int)pager_config->disable_live_preview != cfdata->disable_live_preview) return 1; if ((int)pager_config->show_desk_names != cfdata->show_desk_names) return 1; if ((int)pager_config->popup_urgent != cfdata->popup.urgent_show) return 1; @@ -182,6 +189,9 @@ _adv_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *c ow = e_widget_check_add(evas, _("Show desktop names"), &(cfdata->show_desk_names)); e_widget_list_object_append(ol, ow, 1, 0, 0.5); + ow = e_widget_check_add(evas, _("Disable live preview"), + &(cfdata->disable_live_preview)); + e_widget_list_object_append(ol, ow, 1, 0, 0.5); ow = e_widget_label_add(evas, _("Resistance to dragging")); e_widget_list_object_append(ol, ow, 1, 0, 0.5); ow = e_widget_slider_add(evas, 1, 0, _("%.0f px"), 0.0, 10.0, 1.0, 0, NULL, @@ -290,6 +300,7 @@ _adv_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) pager_config->popup = cfdata->popup.show; pager_config->popup_speed = cfdata->popup.speed; pager_config->flip_desk = cfdata->flip_desk; + pager_config->disable_live_preview = cfdata->disable_live_preview; pager_config->popup_urgent = cfdata->popup.urgent_show; pager_config->popup_urgent_stick = cfdata->popup.urgent_stick; pager_config->popup_urgent_focus = cfdata->popup.urgent_focus; @@ -301,6 +312,7 @@ _adv_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) pager_config->btn_drag = cfdata->btn.drag; pager_config->btn_noplace = cfdata->btn.noplace; pager_config->btn_desk = cfdata->btn.desk; + _pager_cb_config_updated(); e_config_save_queue(); return 1; } @@ -309,7 +321,7 @@ static int _adv_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) { if ((int)pager_config->popup != cfdata->popup.show) return 1; - if ((int)pager_config->flip_desk != cfdata->flip_desk) return 1; + if ((int)pager_config->disable_live_preview != cfdata->disable_live_preview) return 1; if ((int)pager_config->show_desk_names != cfdata->show_desk_names) return 1; if ((int)pager_config->popup_urgent != cfdata->popup.urgent_show) return 1; if (pager_config->popup_speed != cfdata->popup.speed) return 1; diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c index 3cba4448d..22ecd847d 100644 --- a/src/modules/pager/e_mod_main.c +++ b/src/modules/pager/e_mod_main.c @@ -57,6 +57,7 @@ struct _Pager_Desk Eina_List *wins; Evas_Object *o_desk; Evas_Object *o_layout; + Evas_Object *o_bg; int xpos, ypos, urgent; int current : 1; struct @@ -370,6 +371,14 @@ _pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos) else edje_object_part_text_set(o, "e.text.label", ""); + if (pager_config->disable_live_preview) + edje_object_signal_emit(o, "e,preview,off", "e"); + else + edje_object_signal_emit(o, "e,preview,on", "e"); + pd->o_bg = e_widget_deskpreview_desk_add(o, desk->zone, xpos, ypos, -1, -1); + e_widget_deskpreview_desk_configurable_set(pd->o_bg, EINA_FALSE); + edje_object_part_swallow(o, "e.background", pd->o_bg); + edje_object_size_min_calc(o, &w, &h); e_table_pack(p->o_table, o, xpos, ypos, 1, 1); e_table_pack_options_set(o, 1, 1, 1, 1, 0.5, 0.5, w, h, -1, -1); @@ -870,7 +879,22 @@ _pager_instance_drop_zone_recalc(Instance *inst) void _pager_cb_config_updated(void) { + Pager *p; + Pager_Desk *pd; + Eina_List *l, *ll; if (!pager_config) return; + EINA_LIST_FOREACH(pagers, l, p) + EINA_LIST_FOREACH(p->desks, ll, pd) + { + if (pager_config->disable_live_preview) + edje_object_signal_emit(pd->o_desk, "e,preview,off", "e"); + else + edje_object_signal_emit(pd->o_desk, "e,preview,on", "e"); + if (pd->current) + edje_object_signal_emit(pd->o_desk, "e,state,selected", "e"); + else + edje_object_signal_emit(pd->o_desk, "e,state,unselected", "e"); + } } static Eina_Bool diff --git a/src/modules/pager/e_mod_main.h b/src/modules/pager/e_mod_main.h index cb3537eaa..fc1d1f455 100644 --- a/src/modules/pager/e_mod_main.h +++ b/src/modules/pager/e_mod_main.h @@ -31,6 +31,7 @@ struct _Config unsigned int btn_noplace; unsigned int btn_desk; unsigned int flip_desk; + unsigned int disable_live_preview; /* just config state */ E_Module *module;