diff --git a/src/modules/ibox/e_mod_config.c b/src/modules/ibox/e_mod_config.c index d0ade272a..83fc2feba 100644 --- a/src/modules/ibox/e_mod_config.c +++ b/src/modules/ibox/e_mod_config.c @@ -8,6 +8,7 @@ struct _E_Config_Dialog_Data int desk_policy; int icon_label; int expand_on_desktop; + int show_preview; struct { Evas_Object *o_desk_show_all; @@ -59,6 +60,8 @@ _fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata) cfdata->zone_policy = ci->show_zone; cfdata->desk_policy = ci->show_desk; cfdata->icon_label = ci->icon_label; + cfdata->expand_on_desktop = ci->expand_on_desktop; + cfdata->show_preview = ci->show_preview; } static void * @@ -93,6 +96,10 @@ _basic_create_widgets(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas, E_Config_Dia o = e_widget_list_add(evas, 0, 0); of = e_widget_framelist_add(evas, _("General Settings"), 0); + + ob = e_widget_check_add(evas, _("Preview"), &(cfdata->show_preview)); + e_widget_framelist_object_append(of, ob); + ob = e_widget_check_add(evas, _("Expand When On Desktop"), &(cfdata->expand_on_desktop)); e_widget_framelist_object_append(of, ob); @@ -177,6 +184,7 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) ci->show_zone = cfdata->zone_policy; ci->show_desk = cfdata->desk_policy; ci->expand_on_desktop = cfdata->expand_on_desktop; + ci->show_preview = cfdata->show_preview; _ibox_config_update(ci); e_config_save_queue(); diff --git a/src/modules/ibox/e_mod_main.c b/src/modules/ibox/e_mod_main.c index 3d7c00447..7cfe79cad 100644 --- a/src/modules/ibox/e_mod_main.c +++ b/src/modules/ibox/e_mod_main.c @@ -563,7 +563,7 @@ _ibox_icon_free(IBox_Icon *ic) } static void -_ibox_icon_fill(IBox_Icon *ic) +_ibox_icon_fill_icon(IBox_Icon *ic) { ic->o_icon = e_client_icon_add(ic->client, evas_object_evas_get(ic->ibox->o_box)); edje_object_part_swallow(ic->o_holder, "e.swallow.content", ic->o_icon); @@ -573,6 +573,39 @@ _ibox_icon_fill(IBox_Icon *ic) edje_object_part_swallow(ic->o_holder2, "e.swallow.content", ic->o_icon2); evas_object_pass_events_set(ic->o_icon2, 1); evas_object_show(ic->o_icon2); +} + +static void +_ibox_icon_fill_preview(IBox_Icon *ic) +{ + E_Client *ec; + Evas_Object *img, *img2; + + ec = ic->client; + + img = e_comp_object_util_mirror_add(ec->frame); + evas_object_size_hint_aspect_set(img, EVAS_ASPECT_CONTROL_BOTH, ec->client.w, ec->client.h); + evas_object_size_hint_max_set(img, ec->client.w, ec->client.h); + ic->o_icon = img; + edje_object_part_swallow(ic->o_holder, "e.swallow.preview", ic->o_icon); + evas_object_pass_events_set(ic->o_icon, 1); + evas_object_show(ic->o_icon); + + img2 = e_comp_object_util_mirror_add(ec->frame); + evas_object_size_hint_aspect_set(img2, EVAS_ASPECT_CONTROL_BOTH, ec->client.w, ec->client.h); + ic->o_icon2 = img2; + edje_object_part_swallow(ic->o_holder2, "e.swallow.preview", ic->o_icon2); + evas_object_pass_events_set(ic->o_icon2, 1); + evas_object_show(ic->o_icon2); +} + +static void +_ibox_icon_fill(IBox_Icon *ic) +{ + if ((ic->ibox->inst->ci->show_preview) && (edje_object_part_exists(ic->o_holder, "e.swallow.preview"))) + _ibox_icon_fill_preview(ic); + else + _ibox_icon_fill_icon(ic); _ibox_icon_fill_label(ic); @@ -1297,6 +1330,7 @@ e_modapi_init(E_Module *m) E_CONFIG_VAL(D, T, show_zone, INT); E_CONFIG_VAL(D, T, show_desk, INT); E_CONFIG_VAL(D, T, icon_label, INT); + E_CONFIG_VAL(D, T, show_preview, INT); conf_edd = E_CONFIG_DD_NEW("IBox_Config", Config); #undef T diff --git a/src/modules/ibox/e_mod_main.h b/src/modules/ibox/e_mod_main.h index 32a104c0c..58d79998d 100644 --- a/src/modules/ibox/e_mod_main.h +++ b/src/modules/ibox/e_mod_main.h @@ -22,6 +22,7 @@ struct _Config_Item int show_desk; int icon_label; int expand_on_desktop; + int show_preview; E_Gadcon_Client *gcc; };