2010-03-02 14:56:06 -08:00
|
|
|
#include "e.h"
|
|
|
|
|
|
|
|
typedef struct _E_Widget_Data E_Widget_Data;
|
2012-06-20 23:19:43 -07:00
|
|
|
struct _E_Widget_Data
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
2013-01-11 02:34:29 -08:00
|
|
|
Evas_Object *obj, *table;
|
|
|
|
Eina_List *desks;
|
|
|
|
int w, h, dx, dy, cx, cy;
|
2010-03-02 14:56:06 -08:00
|
|
|
};
|
|
|
|
typedef struct _E_Widget_Desk_Data E_Widget_Desk_Data;
|
2012-06-20 23:19:43 -07:00
|
|
|
struct _E_Widget_Desk_Data
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
2017-01-27 06:44:02 -08:00
|
|
|
Evas_Object *icon, *live, *cont;
|
2015-03-19 13:54:50 -07:00
|
|
|
int zone, x, y;
|
2012-07-11 06:01:11 -07:00
|
|
|
Ecore_Event_Handler *bg_upd_hdl;
|
2013-12-31 10:58:13 -08:00
|
|
|
Ecore_Job *resize_job;
|
2013-01-11 02:34:29 -08:00
|
|
|
Eina_Bool configurable : 1;
|
2017-01-27 06:44:02 -08:00
|
|
|
Eina_Bool thumb : 1;
|
2010-03-02 14:56:06 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
/* local function prototypes */
|
2015-03-18 15:09:09 -07:00
|
|
|
static void _e_wid_data_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
|
2017-01-27 06:24:12 -08:00
|
|
|
static void _e_wid_livethumb_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
|
2012-07-11 00:14:28 -07:00
|
|
|
static void _e_wid_del_hook(Evas_Object *obj);
|
|
|
|
static void _e_wid_reconfigure(E_Widget_Data *wd);
|
|
|
|
static void _e_wid_desk_cb_config(void *data, Evas *evas, Evas_Object *obj, void *event);
|
|
|
|
static void _e_wid_cb_resize(void *data, Evas *evas, Evas_Object *obj, void *event);
|
2010-06-24 09:19:12 -07:00
|
|
|
static Eina_Bool _e_wid_cb_bg_update(void *data, int type, void *event);
|
2010-03-02 14:56:06 -08:00
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API Evas_Object *
|
2013-04-19 02:07:15 -07:00
|
|
|
e_widget_bgpreview_add(Evas *evas, int nx, int ny)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
|
|
|
Evas_Object *obj;
|
|
|
|
E_Widget_Data *wd;
|
|
|
|
|
|
|
|
obj = e_widget_add(evas);
|
|
|
|
wd = E_NEW(E_Widget_Data, 1);
|
|
|
|
wd->obj = obj;
|
|
|
|
wd->dx = nx;
|
|
|
|
wd->dy = ny;
|
|
|
|
e_widget_data_set(obj, wd);
|
|
|
|
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
|
|
|
|
|
|
|
wd->table = evas_object_table_add(evas);
|
2011-02-10 09:08:07 -08:00
|
|
|
evas_object_table_padding_set(wd->table, 0, 0);
|
2010-03-02 14:56:06 -08:00
|
|
|
evas_object_table_align_set(wd->table, 0.5, 0.5);
|
|
|
|
e_widget_resize_object_set(wd->obj, wd->table);
|
|
|
|
evas_object_show(wd->table);
|
|
|
|
e_widget_sub_object_add(wd->obj, wd->table);
|
|
|
|
|
2013-04-19 02:07:15 -07:00
|
|
|
e_widget_bgpreview_num_desks_set(obj, wd->dx, wd->dy);
|
2010-03-02 14:56:06 -08:00
|
|
|
|
2012-06-20 23:19:43 -07:00
|
|
|
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE,
|
2010-03-02 14:56:06 -08:00
|
|
|
_e_wid_cb_resize, NULL);
|
|
|
|
return obj;
|
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API void
|
2013-04-19 02:07:15 -07:00
|
|
|
e_widget_bgpreview_num_desks_set(Evas_Object *obj, int nx, int ny)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
|
|
|
E_Widget_Data *wd;
|
|
|
|
|
|
|
|
if (!(wd = e_widget_data_get(obj))) return;
|
|
|
|
wd->dx = nx;
|
|
|
|
wd->dy = ny;
|
|
|
|
_e_wid_reconfigure(wd);
|
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API Evas_Object *
|
2013-04-19 04:47:45 -07:00
|
|
|
e_widget_bgpreview_desk_add(Evas *e, E_Zone *zone, int x, int y)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
|
|
|
E_Widget_Desk_Data *dd;
|
2016-02-04 06:59:22 -08:00
|
|
|
Evas_Object *o;
|
2010-03-02 14:56:06 -08:00
|
|
|
const char *bgfile;
|
|
|
|
|
2015-03-18 16:12:32 -07:00
|
|
|
bgfile = e_bg_file_get(zone->num, x, y);
|
2010-03-02 14:56:06 -08:00
|
|
|
|
|
|
|
dd = E_NEW(E_Widget_Desk_Data, 1);
|
|
|
|
dd->zone = zone->num;
|
|
|
|
dd->x = x;
|
|
|
|
dd->y = y;
|
|
|
|
|
2016-02-04 06:59:22 -08:00
|
|
|
dd->cont = evas_object_table_add(e);
|
2013-12-31 10:58:13 -08:00
|
|
|
|
2017-01-27 06:44:02 -08:00
|
|
|
dd->thumb = EINA_FALSE;
|
2016-02-04 06:59:22 -08:00
|
|
|
if (eina_str_has_extension(bgfile, ".edj"))
|
|
|
|
{
|
2017-01-27 06:44:02 -08:00
|
|
|
dd->live = o = e_thumb_icon_add(e);
|
|
|
|
e_thumb_icon_size_set(o, zone->w / 8, zone->h / 8);
|
|
|
|
e_thumb_icon_file_set(o, bgfile, "e/desktop/background");
|
2017-01-27 23:08:46 -08:00
|
|
|
e_thumb_desk_pan_set(o, x, y, zone->desk_x_count, zone->desk_y_count);
|
2017-01-27 06:44:02 -08:00
|
|
|
e_icon_fill_inside_set(o, EINA_FALSE);
|
|
|
|
e_thumb_icon_begin(o);
|
|
|
|
dd->thumb = EINA_TRUE;
|
2016-02-04 06:59:22 -08:00
|
|
|
}
|
|
|
|
else if ((eina_str_has_extension(bgfile, ".gif")) ||
|
|
|
|
(eina_str_has_extension(bgfile, ".png")) ||
|
|
|
|
(eina_str_has_extension(bgfile, ".jpg")) ||
|
|
|
|
(eina_str_has_extension(bgfile, ".jpeg")) ||
|
|
|
|
(eina_str_has_extension(bgfile, ".bmp")))
|
|
|
|
{
|
|
|
|
dd->live = o = e_icon_add(e);
|
|
|
|
e_icon_file_key_set(o, bgfile, NULL);
|
|
|
|
e_icon_fill_inside_set(o, 0);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
dd->live = o = e_video_add(e, bgfile, EINA_TRUE);
|
|
|
|
}
|
2012-12-21 02:20:05 -08:00
|
|
|
eina_stringshare_del(bgfile);
|
2013-10-10 05:08:20 -07:00
|
|
|
|
2016-02-04 06:59:22 -08:00
|
|
|
evas_object_size_hint_weight_set(dd->live, 1, 1);
|
|
|
|
evas_object_size_hint_align_set(dd->live, -1, -1);
|
|
|
|
evas_object_table_pack(dd->cont, dd->live, 0, 0, 1, 1);
|
|
|
|
evas_object_show(dd->live);
|
|
|
|
|
|
|
|
evas_object_data_set(dd->cont, "desk_data", dd);
|
|
|
|
evas_object_event_callback_add(dd->cont, EVAS_CALLBACK_DEL, _e_wid_data_del, dd);
|
2017-01-27 06:24:12 -08:00
|
|
|
evas_object_event_callback_add(dd->cont, EVAS_CALLBACK_RESIZE, _e_wid_livethumb_resize, dd);
|
2013-10-10 05:08:20 -07:00
|
|
|
|
2012-07-11 06:01:11 -07:00
|
|
|
dd->bg_upd_hdl = ecore_event_handler_add(E_EVENT_BG_UPDATE,
|
|
|
|
_e_wid_cb_bg_update, dd);
|
2010-03-02 14:56:06 -08:00
|
|
|
|
2016-02-04 06:59:22 -08:00
|
|
|
return dd->cont;
|
2010-03-02 14:56:06 -08:00
|
|
|
}
|
|
|
|
|
2015-05-07 12:13:10 -07:00
|
|
|
E_API void
|
2013-04-19 02:07:15 -07:00
|
|
|
e_widget_bgpreview_desk_configurable_set(Evas_Object *obj, Eina_Bool enable)
|
2012-07-11 01:48:33 -07:00
|
|
|
{
|
|
|
|
E_Widget_Desk_Data *dd;
|
|
|
|
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN(obj);
|
|
|
|
dd = evas_object_data_get(obj, "desk_data");
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN(dd);
|
|
|
|
enable = !!enable;
|
|
|
|
if (dd->configurable == enable) return;
|
|
|
|
if (enable)
|
2016-02-25 11:00:01 -08:00
|
|
|
evas_object_event_callback_add(dd->icon, EVAS_CALLBACK_MOUSE_UP,
|
2012-07-11 01:48:33 -07:00
|
|
|
_e_wid_desk_cb_config, dd);
|
|
|
|
else
|
2016-02-25 11:00:01 -08:00
|
|
|
evas_object_event_callback_del_full(dd->icon, EVAS_CALLBACK_MOUSE_UP,
|
2012-07-11 01:48:33 -07:00
|
|
|
_e_wid_desk_cb_config, dd);
|
|
|
|
dd->configurable = enable;
|
|
|
|
}
|
|
|
|
|
2017-01-27 06:24:12 -08:00
|
|
|
/* local function prototypes */
|
|
|
|
static void
|
|
|
|
_e_wid_livethumb_resize_job(void *data)
|
|
|
|
{
|
|
|
|
E_Widget_Desk_Data *dd = data;
|
|
|
|
E_Zone *zone;
|
|
|
|
int w, h;
|
|
|
|
|
|
|
|
if (dd->thumb)
|
|
|
|
{
|
2017-01-27 06:44:02 -08:00
|
|
|
const char *bgfile;
|
|
|
|
|
|
|
|
bgfile = e_bg_file_get(dd->zone, dd->x, dd->y);
|
2017-01-27 06:24:12 -08:00
|
|
|
zone = e_comp_object_util_zone_get(dd->live);
|
|
|
|
if (!zone) zone = eina_list_data_get(e_comp->zones);
|
|
|
|
evas_object_geometry_get(dd->cont, NULL, NULL, &w, &h);
|
|
|
|
if ((w != zone->w) || (h != zone->h))
|
|
|
|
{
|
|
|
|
w *= 2;
|
|
|
|
h *= 2;
|
|
|
|
if (w > 128)
|
|
|
|
{
|
|
|
|
w = 128;
|
|
|
|
h = (zone->h * w) / zone->w;
|
|
|
|
}
|
|
|
|
if (h > 128)
|
|
|
|
{
|
|
|
|
h = 128;
|
|
|
|
w = (zone->w * h) / zone->h;
|
|
|
|
}
|
|
|
|
}
|
2017-01-27 06:44:02 -08:00
|
|
|
e_thumb_icon_size_set(dd->live, w, h);
|
|
|
|
e_thumb_icon_file_set(dd->live, bgfile, "e/desktop/background");
|
|
|
|
e_icon_fill_inside_set(dd->live, EINA_FALSE);
|
|
|
|
e_thumb_icon_rethumb(dd->live);
|
2017-01-27 06:24:12 -08:00
|
|
|
}
|
|
|
|
dd->resize_job = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_wid_livethumb_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
E_Widget_Desk_Data *dd = data;
|
|
|
|
|
|
|
|
if (!dd->resize_job)
|
|
|
|
dd->resize_job = ecore_job_add(_e_wid_livethumb_resize_job, dd);
|
|
|
|
}
|
|
|
|
|
2012-07-13 03:25:37 -07:00
|
|
|
static void
|
2015-03-18 15:09:09 -07:00
|
|
|
_e_wid_data_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
2012-07-13 03:25:37 -07:00
|
|
|
{
|
|
|
|
E_Widget_Desk_Data *dd;
|
|
|
|
dd = data;
|
|
|
|
if (!dd) return;
|
|
|
|
if (dd->bg_upd_hdl) ecore_event_handler_del(dd->bg_upd_hdl);
|
2013-12-31 10:58:13 -08:00
|
|
|
evas_object_del(dd->live);
|
|
|
|
ecore_job_del(dd->resize_job);
|
|
|
|
free(dd);
|
2012-07-13 03:25:37 -07:00
|
|
|
}
|
|
|
|
|
2012-06-20 23:19:43 -07:00
|
|
|
static void
|
|
|
|
_e_wid_del_hook(Evas_Object *obj)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
|
|
|
E_Widget_Data *wd;
|
2010-03-02 16:36:08 -08:00
|
|
|
Evas_Object *o;
|
2010-03-02 14:56:06 -08:00
|
|
|
|
|
|
|
if (!(wd = e_widget_data_get(obj))) return;
|
|
|
|
|
2012-06-20 23:19:43 -07:00
|
|
|
EINA_LIST_FREE(wd->desks, o)
|
2012-07-13 03:25:37 -07:00
|
|
|
evas_object_del(o);
|
2010-03-02 14:56:06 -08:00
|
|
|
|
2010-03-02 16:36:08 -08:00
|
|
|
E_FREE(wd);
|
2010-03-02 14:56:06 -08:00
|
|
|
}
|
|
|
|
|
2012-06-20 23:19:43 -07:00
|
|
|
static void
|
|
|
|
_e_wid_reconfigure(E_Widget_Data *wd)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
2011-02-10 09:08:07 -08:00
|
|
|
Eina_List *l, *ll;
|
2010-03-02 14:56:06 -08:00
|
|
|
Evas_Object *dw;
|
|
|
|
E_Zone *zone;
|
2011-02-15 13:13:01 -08:00
|
|
|
int tw, th, mw, mh, y;
|
2011-02-10 09:08:07 -08:00
|
|
|
E_Widget_Desk_Data *dd;
|
2012-07-29 10:04:15 -07:00
|
|
|
double zone_ratio, desk_ratio;
|
2012-06-20 23:19:43 -07:00
|
|
|
|
2015-03-13 14:47:36 -07:00
|
|
|
zone = e_zone_current_get();
|
2010-03-02 14:56:06 -08:00
|
|
|
|
|
|
|
evas_object_geometry_get(wd->table, NULL, NULL, &tw, &th);
|
2012-07-29 10:04:15 -07:00
|
|
|
if ((tw == 0) || (th == 0))
|
2010-03-03 10:30:27 -08:00
|
|
|
{
|
2012-07-29 10:04:15 -07:00
|
|
|
mw = mh = 0;
|
2010-03-03 10:30:27 -08:00
|
|
|
}
|
2012-06-20 23:19:43 -07:00
|
|
|
else
|
2010-03-03 10:30:27 -08:00
|
|
|
{
|
2013-01-11 02:34:29 -08:00
|
|
|
zone_ratio = (double)zone->w / zone->h;
|
2012-07-29 10:04:15 -07:00
|
|
|
desk_ratio = (tw / wd->dx) / (th / wd->dy);
|
2012-06-20 23:19:43 -07:00
|
|
|
|
2012-07-29 10:04:15 -07:00
|
|
|
if (zone_ratio > desk_ratio)
|
|
|
|
{
|
|
|
|
mw = tw / wd->dx;
|
|
|
|
mh = mw / zone_ratio;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
mh = th / wd->dy;
|
|
|
|
mw = mh * zone_ratio;
|
|
|
|
}
|
|
|
|
}
|
2012-06-20 23:19:43 -07:00
|
|
|
|
2013-01-11 02:34:29 -08:00
|
|
|
EINA_LIST_FOREACH_SAFE(wd->desks, l, ll, dw)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
|
|
|
if (!(dd = evas_object_data_get(dw, "desk_data"))) continue;
|
2012-06-20 23:19:43 -07:00
|
|
|
if ((dd->x < wd->dx) && (dd->y < wd->dy))
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
|
|
|
evas_object_size_hint_min_set(dw, mw, mh);
|
|
|
|
evas_object_size_hint_max_set(dw, mw, mh);
|
|
|
|
}
|
|
|
|
else
|
2012-07-11 00:14:28 -07:00
|
|
|
{
|
2013-12-31 10:58:13 -08:00
|
|
|
evas_object_del(dd->live);
|
2012-07-11 00:14:28 -07:00
|
|
|
evas_object_del(dw);
|
|
|
|
wd->desks = eina_list_remove(wd->desks, dw);
|
|
|
|
}
|
2010-03-02 14:56:06 -08:00
|
|
|
}
|
|
|
|
|
2012-06-20 23:19:43 -07:00
|
|
|
for (y = 0; y < wd->dy; y++)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
|
|
|
int x, sx;
|
|
|
|
|
|
|
|
if (y >= wd->cy) sx = 0;
|
|
|
|
else sx = wd->cx;
|
2012-06-20 23:19:43 -07:00
|
|
|
for (x = sx; x < wd->dx; x++)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
2012-04-15 01:09:56 -07:00
|
|
|
Evas_Object *dp;
|
2013-10-10 05:08:20 -07:00
|
|
|
Evas *e;
|
|
|
|
|
|
|
|
e = evas_object_evas_get(wd->obj);
|
|
|
|
dp = e_widget_bgpreview_desk_add(e, zone, x, y);
|
|
|
|
|
|
|
|
dd = evas_object_data_get(dp, "desk_data");
|
|
|
|
dp = dd->icon = edje_object_add(e);
|
|
|
|
e_theme_edje_object_set(dd->icon, "base/theme/widgets",
|
|
|
|
"e/widgets/deskpreview/desk");
|
|
|
|
|
2016-02-25 10:38:24 -08:00
|
|
|
edje_object_part_swallow(dd->icon, "e.swallow.content", dd->cont);
|
2013-10-10 05:08:20 -07:00
|
|
|
dd->configurable = EINA_TRUE;
|
2016-02-25 11:00:01 -08:00
|
|
|
evas_object_event_callback_add(dd->icon, EVAS_CALLBACK_MOUSE_UP,
|
2013-10-10 05:08:20 -07:00
|
|
|
_e_wid_desk_cb_config, dd);
|
|
|
|
evas_object_show(dd->icon);
|
|
|
|
evas_object_data_set(dd->icon, "desk_data", dd);
|
2013-04-19 04:47:45 -07:00
|
|
|
evas_object_size_hint_min_set(dp, mw, mh);
|
|
|
|
evas_object_size_hint_max_set(dp, mw, mh);
|
2012-07-11 00:14:28 -07:00
|
|
|
evas_object_size_hint_aspect_set(dp, EVAS_ASPECT_CONTROL_BOTH, zone->w, zone->h);
|
2012-04-15 01:09:56 -07:00
|
|
|
evas_object_table_pack(wd->table, dp, x, y, 1, 1);
|
|
|
|
wd->desks = eina_list_append(wd->desks, dp);
|
2010-03-02 14:56:06 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
wd->cx = wd->dx;
|
|
|
|
wd->cy = wd->dy;
|
|
|
|
}
|
|
|
|
|
2012-06-20 23:19:43 -07:00
|
|
|
static void
|
2015-03-18 15:09:09 -07:00
|
|
|
_e_wid_desk_cb_config(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
|
|
|
E_Widget_Desk_Data *dd;
|
|
|
|
Evas_Event_Mouse_Down *ev;
|
|
|
|
|
|
|
|
ev = event;
|
|
|
|
if (!(dd = data)) return;
|
2012-06-20 23:19:43 -07:00
|
|
|
if (ev->button == 1)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
|
|
|
char buff[256];
|
|
|
|
|
2015-03-19 13:54:50 -07:00
|
|
|
snprintf(buff, sizeof(buff), "%i %i %i",
|
|
|
|
dd->zone, dd->x, dd->y);
|
2014-11-02 18:35:13 -08:00
|
|
|
e_configure_registry_call("internal/desk", NULL, buff);
|
2010-03-02 14:56:06 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-06-20 23:19:43 -07:00
|
|
|
static void
|
2015-03-18 15:09:09 -07:00
|
|
|
_e_wid_cb_resize(void *data EINA_UNUSED, Evas *evas EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED)
|
2010-03-02 14:56:06 -08:00
|
|
|
{
|
|
|
|
E_Widget_Data *wd;
|
|
|
|
|
|
|
|
if (!(wd = e_widget_data_get(obj))) return;
|
|
|
|
_e_wid_reconfigure(wd);
|
|
|
|
}
|
2010-03-02 16:36:08 -08:00
|
|
|
|
2010-06-24 09:19:12 -07:00
|
|
|
static Eina_Bool
|
|
|
|
_e_wid_cb_bg_update(void *data, int type, void *event)
|
2010-03-02 16:36:08 -08:00
|
|
|
{
|
|
|
|
E_Event_Bg_Update *ev;
|
2012-07-11 06:01:11 -07:00
|
|
|
E_Widget_Desk_Data *dd;
|
2010-03-02 16:36:08 -08:00
|
|
|
|
2010-06-24 09:19:12 -07:00
|
|
|
if (type != E_EVENT_BG_UPDATE) return ECORE_CALLBACK_PASS_ON;
|
2012-07-11 06:01:11 -07:00
|
|
|
if (!(dd = data)) return ECORE_CALLBACK_PASS_ON;
|
2010-03-02 16:36:08 -08:00
|
|
|
ev = event;
|
|
|
|
|
2015-03-19 13:54:50 -07:00
|
|
|
if (((ev->zone < 0) || (dd->zone == ev->zone)) &&
|
2012-07-11 06:01:11 -07:00
|
|
|
((ev->desk_x < 0) || (dd->x == ev->desk_x)) &&
|
|
|
|
((ev->desk_y < 0) || (dd->y == ev->desk_y)))
|
2010-03-02 16:36:08 -08:00
|
|
|
{
|
2015-10-14 07:59:31 -07:00
|
|
|
E_Zone *zone;
|
2012-07-11 06:01:11 -07:00
|
|
|
const char *bgfile;
|
2016-02-04 06:59:22 -08:00
|
|
|
Evas_Object *o;
|
|
|
|
Evas *e = evas_object_evas_get(dd->cont);
|
2010-03-02 16:36:08 -08:00
|
|
|
|
2015-10-14 07:59:31 -07:00
|
|
|
zone = e_comp_zone_number_get(dd->zone);
|
2015-03-18 16:12:32 -07:00
|
|
|
bgfile = e_bg_file_get(dd->zone, dd->x, dd->y);
|
2016-02-04 06:59:22 -08:00
|
|
|
|
|
|
|
if (dd->live) evas_object_del(dd->live);
|
|
|
|
dd->live = NULL;
|
|
|
|
|
2017-01-27 06:44:02 -08:00
|
|
|
dd->thumb = EINA_FALSE;
|
2016-02-04 06:59:22 -08:00
|
|
|
if (eina_str_has_extension(bgfile, ".edj"))
|
|
|
|
{
|
2017-01-27 06:44:02 -08:00
|
|
|
dd->live = o = e_thumb_icon_add(e);
|
|
|
|
e_thumb_icon_size_set(o, zone->w / 8, zone->h / 8);
|
|
|
|
e_thumb_icon_file_set(o, bgfile, "e/desktop/background");
|
2017-01-27 23:08:46 -08:00
|
|
|
e_thumb_desk_pan_set(o, dd->x, dd->y, zone->desk_x_count, zone->desk_y_count);
|
2017-01-27 06:44:02 -08:00
|
|
|
e_icon_fill_inside_set(o, EINA_FALSE);
|
|
|
|
e_thumb_icon_begin(o);
|
|
|
|
dd->thumb = EINA_TRUE;
|
|
|
|
_e_wid_livethumb_resize_job(dd);
|
2016-02-04 06:59:22 -08:00
|
|
|
}
|
|
|
|
else if ((eina_str_has_extension(bgfile, ".gif")) ||
|
|
|
|
(eina_str_has_extension(bgfile, ".png")) ||
|
|
|
|
(eina_str_has_extension(bgfile, ".jpg")) ||
|
|
|
|
(eina_str_has_extension(bgfile, ".jpeg")) ||
|
|
|
|
(eina_str_has_extension(bgfile, ".bmp")))
|
|
|
|
{
|
|
|
|
dd->live = o = e_icon_add(e);
|
|
|
|
e_icon_file_key_set(o, bgfile, NULL);
|
|
|
|
e_icon_fill_inside_set(o, 0);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
dd->live = o = e_video_add(e, bgfile, EINA_TRUE);
|
|
|
|
}
|
2012-12-21 02:20:05 -08:00
|
|
|
eina_stringshare_del(bgfile);
|
2016-02-04 06:59:22 -08:00
|
|
|
|
|
|
|
evas_object_size_hint_weight_set(dd->live, 1, 1);
|
|
|
|
evas_object_size_hint_align_set(dd->live, -1, -1);
|
|
|
|
evas_object_table_pack(dd->cont, dd->live, 0, 0, 1, 1);
|
|
|
|
evas_object_show(dd->live);
|
2010-03-02 16:36:08 -08:00
|
|
|
}
|
|
|
|
|
2010-06-24 09:19:12 -07:00
|
|
|
return ECORE_CALLBACK_PASS_ON;
|
2010-03-02 16:36:08 -08:00
|
|
|
}
|
2012-07-11 00:14:28 -07:00
|
|
|
|