summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2020-07-07 23:34:27 +0100
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2020-07-07 23:34:27 +0100
commit0b1c4100efade6585c1a21bea0d910df013091c4 (patch)
tree472662cb6bda027a6cd6abadae1729bc263da191
parent3bbab5a22fd047a2cad066be734a69d1df4f98d0 (diff)
downloadenlightenment-0b1c4100efade6585c1a21bea0d910df013091c4.tar.gz
e gadgets - as per email to e-devbel - it's easier to fix old so rm new
new gadget infra--
-rw-r--r--meson_options.txt24
-rw-r--r--src/bin/e_bryce.c1488
-rw-r--r--src/bin/e_bryce.h22
-rw-r--r--src/bin/e_bryce_editor.c444
-rw-r--r--src/bin/e_config.c99
-rw-r--r--src/bin/e_gadget.c3535
-rw-r--r--src/bin/e_gadget.h155
-rw-r--r--src/bin/e_gadget_loader.c354
-rw-r--r--src/bin/e_gadget_runner.c1270
-rw-r--r--src/bin/e_gadget_types.h30
-rw-r--r--src/bin/e_includes.h2
-rw-r--r--src/bin/e_int_menus.c22
-rw-r--r--src/bin/e_main.c13
-rw-r--r--src/bin/generated/meson.build8
-rw-r--r--src/bin/meson.build22
-rw-r--r--src/modules/backlight/e_mod_main.c12
-rw-r--r--src/modules/backlight/gadget/backlight.c302
-rw-r--r--src/modules/backlight/gadget/backlight.h14
-rw-r--r--src/modules/backlight/gadget/mod.c22
-rw-r--r--src/modules/backlight/meson.build4
-rw-r--r--src/modules/bluez5/e_mod_main.c98
-rw-r--r--src/modules/bluez5/e_mod_main.h4
-rw-r--r--src/modules/conf_display/e_int_config_desklock.c9
-rw-r--r--src/modules/luncher/bar.c2066
-rw-r--r--src/modules/luncher/config.c572
-rw-r--r--src/modules/luncher/e-module-luncher.edjbin13065 -> 0 bytes
-rw-r--r--src/modules/luncher/grid.c754
-rw-r--r--src/modules/luncher/luncher.h114
-rw-r--r--src/modules/luncher/meson.build7
-rw-r--r--src/modules/luncher/mod.c108
-rw-r--r--src/modules/luncher/module.desktop36
-rw-r--r--src/modules/meson.build5
-rw-r--r--src/modules/mixer/backend.c (renamed from src/modules/mixer/gadget/backend.c)3
-rw-r--r--src/modules/mixer/backend.h (renamed from src/modules/mixer/gadget/backend.h)0
-rw-r--r--src/modules/mixer/e_mod_main.c15
-rw-r--r--src/modules/mixer/gadget/mixer.c423
-rw-r--r--src/modules/mixer/gadget/mixer.h30
-rw-r--r--src/modules/mixer/gadget/mod.c36
-rw-r--r--src/modules/mixer/meson.build6
-rw-r--r--src/modules/mixer/mixer.h9
-rw-r--r--src/modules/packagekit/e_mod_main.c136
-rw-r--r--src/modules/packagekit/e_mod_packagekit.c46
-rw-r--r--src/modules/packagekit/e_mod_packagekit.h3
-rw-r--r--src/modules/pager/e_mod_config.c2
-rw-r--r--src/modules/pager/e_mod_main.c72
-rw-r--r--src/modules/pager/e_mod_main.h25
-rw-r--r--src/modules/pager/gadget/config.c685
-rw-r--r--src/modules/pager/gadget/mod.c108
-rw-r--r--src/modules/pager/gadget/pager.c2991
-rw-r--r--src/modules/pager/gadget/pager.h51
-rw-r--r--src/modules/pager/meson.build6
-rw-r--r--src/modules/start/e_mod_main.c4
-rw-r--r--src/modules/start/meson.build3
-rw-r--r--src/modules/start/start.c227
-rw-r--r--src/modules/sysinfo/batman/batman.c759
-rw-r--r--src/modules/sysinfo/batman/batman.h114
-rw-r--r--src/modules/sysinfo/batman/batman_config.c611
-rw-r--r--src/modules/sysinfo/batman/batman_fallback.c1291
-rw-r--r--src/modules/sysinfo/batman/batman_sysctl.c398
-rw-r--r--src/modules/sysinfo/batman/batman_udev.c393
-rw-r--r--src/modules/sysinfo/batman/batman_upower.c419
-rw-r--r--src/modules/sysinfo/cpuclock/cpuclock.c1168
-rw-r--r--src/modules/sysinfo/cpuclock/cpuclock.h33
-rw-r--r--src/modules/sysinfo/cpuclock/cpuclock_config.c633
-rw-r--r--src/modules/sysinfo/cpumonitor/cpumonitor.c502
-rw-r--r--src/modules/sysinfo/cpumonitor/cpumonitor.h12
-rw-r--r--src/modules/sysinfo/cpumonitor/cpumonitor_config.c171
-rw-r--r--src/modules/sysinfo/cpumonitor/cpumonitor_proc.c114
-rw-r--r--src/modules/sysinfo/cpumonitor/cpumonitor_sysctl.c125
-rw-r--r--src/modules/sysinfo/e-module-sysinfo.edjbin7340 -> 0 bytes
-rw-r--r--src/modules/sysinfo/memusage/memusage.c586
-rw-r--r--src/modules/sysinfo/memusage/memusage.h25
-rw-r--r--src/modules/sysinfo/memusage/memusage_config.c171
-rw-r--r--src/modules/sysinfo/memusage/memusage_proc.c98
-rw-r--r--src/modules/sysinfo/memusage/memusage_sysctl.c172
-rw-r--r--src/modules/sysinfo/meson.build44
-rw-r--r--src/modules/sysinfo/mod.c222
-rw-r--r--src/modules/sysinfo/module.desktop8
-rw-r--r--src/modules/sysinfo/netstatus/netstatus.c509
-rw-r--r--src/modules/sysinfo/netstatus/netstatus.h29
-rw-r--r--src/modules/sysinfo/netstatus/netstatus_config.c419
-rw-r--r--src/modules/sysinfo/netstatus/netstatus_proc.c93
-rw-r--r--src/modules/sysinfo/netstatus/netstatus_sysctl.c188
-rw-r--r--src/modules/sysinfo/sysinfo.c176
-rw-r--r--src/modules/sysinfo/sysinfo.h302
-rw-r--r--src/modules/sysinfo/thermal/thermal.c509
-rw-r--r--src/modules/sysinfo/thermal/thermal.h28
-rw-r--r--src/modules/sysinfo/thermal/thermal_config.c369
-rw-r--r--src/modules/sysinfo/thermal/thermal_fallback.c435
-rw-r--r--src/modules/sysinfo/thermal/thermal_sysctl.c212
-rw-r--r--src/modules/sysinfo/thermal/thermal_udev.c51
-rw-r--r--src/modules/teamwork/e-module-teamwork.edjbin13926 -> 0 bytes
-rw-r--r--src/modules/teamwork/e_mod_config.c182
-rw-r--r--src/modules/teamwork/e_mod_main.c181
-rw-r--r--src/modules/teamwork/e_mod_main.h99
-rw-r--r--src/modules/teamwork/e_mod_tw.c1297
-rw-r--r--src/modules/teamwork/meson.build17
-rw-r--r--src/modules/teamwork/module.desktop24
-rw-r--r--src/modules/teamwork/wl.c138
-rw-r--r--src/modules/teamwork/wl_teamwork.c46
-rw-r--r--src/modules/teamwork/wl_teamwork.h93
-rw-r--r--src/modules/teamwork/x11.c143
-rw-r--r--src/modules/time/clock.c516
-rw-r--r--src/modules/time/clock.h94
-rw-r--r--src/modules/time/config.c634
-rw-r--r--src/modules/time/e-module-time.edjbin14062 -> 0 bytes
-rw-r--r--src/modules/time/meson.build7
-rw-r--r--src/modules/time/mod.c142
-rw-r--r--src/modules/time/module.desktop9
-rw-r--r--src/modules/time/time.c385
-rw-r--r--src/modules/wireless/connman.c1673
-rw-r--r--src/modules/wireless/e-module-wireless.edjbin21146 -> 0 bytes
-rw-r--r--src/modules/wireless/meson.build6
-rw-r--r--src/modules/wireless/mod.c54
-rw-r--r--src/modules/wireless/module.desktop10
-rw-r--r--src/modules/wireless/wireless.c1657
-rw-r--r--src/modules/wireless/wireless.h140
-rw-r--r--src/modules/xkbswitch/e_mod_main.c10
-rw-r--r--src/modules/xkbswitch/gadget/mod.c29
-rw-r--r--src/modules/xkbswitch/gadget/xkbswitch.c341
-rw-r--r--src/modules/xkbswitch/gadget/xkbswitch.h25
-rw-r--r--src/modules/xkbswitch/meson.build5
-rw-r--r--src/protocol/e-gadget.xml42
123 files changed, 126 insertions, 35758 deletions
diff --git a/meson_options.txt b/meson_options.txt
index 2f2732b240..016dd81249 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -163,10 +163,6 @@ option('polkit',
type: 'boolean',
value: true,
description: 'enable polkit module: (default=true)')
-option('luncher',
- type: 'boolean',
- value: true,
- description: 'enable luncher module: (default=true)')
option('mixer',
type: 'boolean',
value: true,
@@ -191,10 +187,6 @@ option('pager',
type: 'boolean',
value: true,
description: 'enable pager module: (default=true)')
-option('pager-plain',
- type: 'boolean',
- value: true,
- description: 'enable pager_plain module: (default=true)')
option('quickaccess',
type: 'boolean',
value: true,
@@ -211,10 +203,6 @@ option('syscon',
type: 'boolean',
value: true,
description: 'enable syscon module: (default=true)')
-option('sysinfo',
- type: 'boolean',
- value: true,
- description: 'enable sysinfo module: (default=true)')
option('systray',
type: 'boolean',
value: true,
@@ -223,10 +211,6 @@ option('tasks',
type: 'boolean',
value: true,
description: 'enable tasks module: (default=true)')
-option('teamwork',
- type: 'boolean',
- value: true,
- description: 'enable teamwork module: (default=true)')
option('temperature',
type: 'boolean',
value: true,
@@ -235,18 +219,10 @@ option('tiling',
type: 'boolean',
value: true,
description: 'enable tiling module: (default=true)')
-option('time',
- type: 'boolean',
- value: true,
- description: 'enable time module: (default=true)')
option('winlist',
type: 'boolean',
value: true,
description: 'enable winlist module: (default=true)')
-option('wireless',
- type: 'boolean',
- value: true,
- description: 'enable wireless module: (default=true)')
option('wizard',
type: 'boolean',
value: true,
diff --git a/src/bin/e_bryce.c b/src/bin/e_bryce.c
deleted file mode 100644
index e242686d26..0000000000
--- a/src/bin/e_bryce.c
+++ /dev/null
@@ -1,1488 +0,0 @@
-#include "e.h"
-
-#define DEFAULT_LAYER E_LAYER_CLIENT_ABOVE
-#define E_BRYCE_TYPE 0xE31338
-
-static unsigned int bryce_version = 2;
-
-typedef struct Bryce
-{
- E_Object *e_obj_inherit;
- Eina_Stringshare *name;
-
- Evas_Object *bryce;
- Evas_Object *events;
- Evas_Object *layout;
- Evas_Object *site;
- Evas_Object *scroller;
- Evas_Object *autohide_event;
- Eina_List *zone_obstacles;
- Eina_List *spacers;
-
- Evas_Object *parent; //comp_object is not an elm widget
- Eina_Stringshare *style;
- int size;
- int x, y;
- int last_w, last_h;
- int autohide_size;
- E_Layer layer;
- unsigned int zone;
- E_Gadget_Site_Orient orient;
- E_Gadget_Site_Anchor anchor;
-
- Ecore_Job *calc_job;
- Ecore_Timer *save_timer;
- Ecore_Timer *autohide_timer;
- unsigned int autohide_blocked;
- Eina_List *popups;
- void *event_info;
- unsigned int last_timestamp;
-
- E_Menu *menu;
-
- /* config: do not bitfield! */
- Eina_Bool autosize;
- Eina_Bool autohide;
- unsigned int version;
-
- Eina_Bool hidden E_BITFIELD;
- Eina_Bool animating E_BITFIELD;
- Eina_Bool mouse_in E_BITFIELD;
- Eina_Bool noshadow E_BITFIELD;
- Eina_Bool size_changed E_BITFIELD;
- Eina_Bool editing E_BITFIELD;
-} Bryce;
-
-typedef struct Bryces
-{
- Eina_List *bryces;
-} Bryces;
-
-static E_Config_DD *edd_bryces;
-static E_Config_DD *edd_bryce;
-static Bryces *bryces;
-static E_Action *resize_act;
-static Eina_List *handlers;
-
-
-static void _bryce_menu(Bryce *b, Evas_Object *g);
-
-#define BRYCE_GET(obj) \
- Bryce *b; \
- b = evas_object_data_get((obj), "__bryce"); \
- if (!b) abort()
-
-static void
-_bryce_obstacle_del(void *obs)
-{
- Bryce *b = e_object_data_get(obs);
-
- b->zone_obstacles = eina_list_remove(b->zone_obstacles, obs);
-}
-
-static void
-_bryce_autohide_end(void *data, E_Efx_Map_Data *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED)
-{
- Bryce *b = data;
-
- b->animating = 0;
-}
-
-static void
-_bryce_autohide_coords(Bryce *b, int *x, int *y)
-{
- int ox, oy, ow, oh;
- E_Gadget_Site_Anchor an;
-
- if (b->parent == e_comp->elm)
- {
- E_Zone *zone;
-
- zone = e_comp_zone_number_get(b->zone);
- ox = zone->x, oy = zone->y, ow = zone->w, oh = zone->h;
- }
- else
- evas_object_geometry_get(b->parent, &ox, &oy, &ow, &oh);
- an = e_gadget_site_anchor_get(b->site);
-
- if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- {
- *x = b->x;
-
- if (an & E_GADGET_SITE_ANCHOR_TOP)
- *y = oy - lround(e_scale * b->size) + lround(e_scale * b->autohide_size);
- if (an & E_GADGET_SITE_ANCHOR_BOTTOM)
- *y = oy + oh - lround(e_scale * b->autohide_size);
- }
- else if (b->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- {
- *y = b->y;
-
- if (an & E_GADGET_SITE_ANCHOR_LEFT)
- *x = ox - lround(e_scale * b->size) + lround(e_scale * b->autohide_size);
- if (an & E_GADGET_SITE_ANCHOR_RIGHT)
- *x = ox + ow - lround(e_scale * b->autohide_size);
- }
-}
-
-static void
-_bryce_position(Bryce *b, int w, int h, int *nx, int *ny)
-{
- int ox, oy, ow, oh;
- int x, y;
- E_Gadget_Site_Anchor an;
-
- if (b->parent == e_comp->elm)
- {
- E_Zone *zone;
-
- zone = e_comp_zone_number_get(b->zone);
- ox = zone->x, oy = zone->y, ow = zone->w, oh = zone->h;
- if (starting)
- {
- E_Zone *zone2;
-
- zone2 = e_comp_object_util_zone_get(b->bryce);
- if (zone != zone2)
- evas_object_move(b->bryce, ox, oy);
- }
- }
- else
- evas_object_geometry_get(b->parent, &ox, &oy, &ow, &oh);
- x = ox + (ow - w) / 2;
- x = E_CLAMP(x, ox, ox + ow / 2);
- y = oy + (oh - h) / 2;
- y = E_CLAMP(y, oy, oy + oh / 2);
- an = e_gadget_site_anchor_get(b->site);
- if (an & E_GADGET_SITE_ANCHOR_LEFT)
- x = ox;
- if (an & E_GADGET_SITE_ANCHOR_TOP)
- y = oy;
- if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- {
- if (an & E_GADGET_SITE_ANCHOR_RIGHT)
- x = ox + ow - w;
- if (an & E_GADGET_SITE_ANCHOR_BOTTOM)
- y = oy + oh - lround(e_scale * b->size);
- if (!b->autosize)
- x = ox;
- }
- else if (b->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- {
- if (an & E_GADGET_SITE_ANCHOR_RIGHT)
- x = ox + ow - lround(e_scale * b->size);
- if (an & E_GADGET_SITE_ANCHOR_BOTTOM)
- y = oy + oh - h;
- if (!b->autosize)
- y = oy;
- }
- b->x = x, b->y = y;
- if (b->animating)
- {
- if (b->hidden)
- {
- _bryce_autohide_coords(b, &x, &y);
- e_efx_move(b->bryce, E_EFX_EFFECT_SPEED_LINEAR, E_EFX_POINT(x, y), 0.5, _bryce_autohide_end, b);
- }
- else
- e_efx_move(b->bryce, E_EFX_EFFECT_SPEED_LINEAR, E_EFX_POINT(x, y), 0.5, _bryce_autohide_end, b);
- }
- else if (b->hidden)
- _bryce_autohide_coords(b, &x, &y);
-
- if (nx && ny)
- *nx = x, *ny = y;
- else
- evas_object_move(b->bryce, x, y);
-}
-
-static void
-_bryce_autosize(Bryce *b)
-{
- int lw, lh, sw, sh, maxw, maxh, x, y, w, h;
-
- E_FREE_FUNC(b->calc_job, ecore_job_del);
- if (!b->autosize)
- {
- if (b->parent == e_comp->elm)
- {
- w = e_comp_zone_number_get(b->zone)->w;
- if (b->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_zone_useful_geometry_get(e_comp_zone_number_get(b->zone), NULL, NULL, NULL, &h);
- else
- h = e_comp_zone_number_get(b->zone)->h;
- }
- else
- evas_object_geometry_get(b->parent, NULL, NULL, &w, &h);
- if (b->size_changed)
- elm_object_content_unset(b->scroller);
- _bryce_position(b, w, h, &x, &y);
- evas_object_move(b->bryce, x, y);
- if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- e_efx_resize(b->bryce, E_EFX_EFFECT_SPEED_LINEAR, E_EFX_POINT(x, y), w, lround(b->size * e_scale), 0.1, NULL, NULL);
- else if (b->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_efx_resize(b->bryce, E_EFX_EFFECT_SPEED_LINEAR, E_EFX_POINT(x, y), lround(b->size * e_scale), h, 0.1, NULL, NULL);
- evas_object_smart_need_recalculate_set(b->site, 1);
- evas_object_size_hint_min_set(b->site, -1, -1);
- if (b->size_changed)
- elm_object_content_set(b->scroller, b->site);
- b->size_changed = 0;
- return;
- }
- if (b->parent == e_comp->elm) //screen-based bryce
- {
- E_Zone *zone;
-
- zone = e_comp_zone_number_get(b->zone);
- if (zone)
- {
- maxw = zone->w;
- if (b->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_zone_useful_geometry_get(e_comp_zone_number_get(b->zone), NULL, NULL, NULL, &maxh);
- else
- maxh = zone->h;
- }
- else return;
- }
- else
- evas_object_geometry_get(b->parent, NULL, NULL, &maxw, &maxh);
- do
- {
- if (b->size_changed)
- {
- evas_object_geometry_get(b->bryce, NULL, NULL, &w, &h);
- elm_object_content_unset(b->scroller);
- if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- {
- if (!h) h = 1;
- evas_object_resize(b->bryce, w * lround(b->size * e_scale) / h, lround(b->size * e_scale));
- evas_object_resize(b->site, w * lround(b->size * e_scale) / h, lround(b->size * e_scale));
- }
- else if (b->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- {
- if (!w) w = 1;
- evas_object_resize(b->bryce, lround(b->size * e_scale), h * lround(b->size * e_scale) / w);
- evas_object_resize(b->site, lround(b->size * e_scale), h * lround(b->size * e_scale) / w);
- }
- evas_object_smart_need_recalculate_set(b->site, 1);
- evas_object_size_hint_min_set(b->site, -1, -1);
- evas_object_smart_calculate(b->site);
- elm_object_content_set(b->scroller, b->site);
- }
- evas_object_size_hint_min_get(b->site, &sw, &sh);
- if ((!sw) && (!sh)) b->size_changed = 1;
- }
- while ((!sw) && (!sh));
- edje_object_size_min_calc(elm_layout_edje_get(b->layout), &lw, &lh);
- _bryce_position(b, lw + sw, lh + sh, &x, &y);
- if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- w = MIN(MAX(lw + sw, lround(b->size * e_scale)), maxw), h = lround(b->size * e_scale);
- else if (b->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- w = lround(b->size * e_scale), h = MIN(MAX(lh + sh, lround(b->size * e_scale)), maxh);
- evas_object_move(b->bryce, x, y);
- e_efx_resize(b->bryce, E_EFX_EFFECT_SPEED_LINEAR, E_EFX_POINT(x, y), w, h, 0.1, NULL, NULL);
- b->size_changed = 0;
-}
-
-static Eina_Bool
-_bryce_autohide_timeout(Bryce *b)
-{
- int x = 0, y = 0;
-
- b->autohide_timer = NULL;
- b->hidden = b->animating = 1;
- _bryce_autohide_coords(b, &x, &y);
- e_efx_move(b->bryce, E_EFX_EFFECT_SPEED_LINEAR, E_EFX_POINT(x, y), 0.5, _bryce_autohide_end, b);
- return EINA_FALSE;
-}
-
-static void
-_bryce_autohide_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
- int x, y, w, h;
-
- evas_object_geometry_get(obj, &x, &y, &w, &h);
- evas_object_geometry_set(b->autohide_event, x, y, w, h);
-}
-
-static void
-_bryce_autohide_show(Bryce *b)
-{
- E_FREE_FUNC(b->autohide_timer, ecore_timer_del);
- if (b->animating && (!b->hidden)) return;
- e_efx_move(b->bryce, E_EFX_EFFECT_SPEED_LINEAR, E_EFX_POINT(b->x, b->y), 0.5, _bryce_autohide_end, b);
- b->animating = 1;
- b->hidden = 0;
-}
-
-static void
-_bryce_autohide_hide(Bryce *b)
-{
- if (b->autohide_blocked) return;
- if (b->autohide_timer)
- ecore_timer_loop_reset(b->autohide_timer);
- else
- b->autohide_timer = ecore_timer_loop_add(1.0, (Ecore_Task_Cb)_bryce_autohide_timeout, b);
-}
-
-static void
-_bryce_autohide_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
-
- _bryce_autohide_hide(b);
- b->mouse_in = 0;
-}
-
-static void
-_bryce_autohide_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
-
- b->mouse_in = 1;
- _bryce_autohide_show(b);
-}
-
-static void
-_bryce_autohide_setup(Bryce *b)
-{
- int x, y, w, h;
-
- if (!b->autohide) return;
- b->autohide_event = evas_object_rectangle_add(evas_object_evas_get(b->bryce));
- evas_object_geometry_get(b->bryce, &x, &y, &w, &h);
- evas_object_geometry_set(b->autohide_event, x, y, w, h);
- evas_object_color_set(b->autohide_event, 0, 0, 0, 0);
- evas_object_repeat_events_set(b->autohide_event, 1);
- evas_object_layer_set(b->autohide_event, b->layer + 1);
- evas_object_show(b->autohide_event);
- evas_object_event_callback_add(b->autohide_event, EVAS_CALLBACK_MOUSE_IN, _bryce_autohide_mouse_in, b);
- evas_object_event_callback_add(b->autohide_event, EVAS_CALLBACK_MOUSE_OUT, _bryce_autohide_mouse_out, b);
- evas_object_event_callback_add(b->bryce, EVAS_CALLBACK_MOVE, _bryce_autohide_moveresize, b);
- evas_object_event_callback_add(b->bryce, EVAS_CALLBACK_RESIZE, _bryce_autohide_moveresize, b);
- ecore_evas_pointer_xy_get(e_comp->ee, &x, &y);
- if (!E_INSIDE(x, y, b->x, b->y, w, h))
- _bryce_autohide_hide(b);
-}
-
-static void
-_bryce_style(Evas_Object *site, Eina_Stringshare *name, Evas_Object *g)
-{
- Evas_Object *ly, *prev;
- char buf[1024];
-
- BRYCE_GET(site);
-
- ly = elm_layout_add(b->site);
- snprintf(buf, sizeof(buf), "e/bryce/%s/%s", b->style ?: "default", name ?: "plain");
- if (!e_theme_edje_object_set(ly, NULL, buf))
- {
- evas_object_del(ly);
- return;
- }
- if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- elm_layout_signal_emit(ly, "e,state,orient,horizontal", "e");
- else
- elm_layout_signal_emit(ly, "e,state,orient,vertical", "e");
- edje_object_message_signal_process(elm_layout_edje_get(ly));
- prev = e_gadget_util_layout_style_init(g, ly);
- elm_object_part_content_set(ly, "e.swallow.content", g);
- evas_object_smart_callback_call(g, "gadget_reparent", ly);
- evas_object_del(prev);
-}
-
-static void
-_bryce_site_hints(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
- int w, h;
-
- evas_object_size_hint_min_get(obj, &w, &h);
- if ((w < 0) || (h < 0)) return;
- if (b->autosize && (!b->calc_job))
- b->calc_job = ecore_job_add((Ecore_Cb)_bryce_autosize, b);
-}
-
-static E_Comp_Object_Type
-_bryce_shadow_type(const Bryce *b)
-{
- if ((b->layer == E_LAYER_DESKTOP_TOP) || b->noshadow)
- return E_COMP_OBJECT_TYPE_NONE;
- return E_COMP_OBJECT_TYPE_POPUP;
-}
-
-static void
-_bryce_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
- E_Layer layer;
-
- layer = evas_object_layer_get(obj);
- if (layer > DEFAULT_LAYER) return;
- b->layer = layer;
- if ((!b->noshadow) && (layer != b->layer))
- e_comp_object_util_type_set(b->bryce, _bryce_shadow_type(b));
-}
-
-static Eina_Bool
-_bryce_moveresize_save(void *data)
-{
- Bryce *b = data;
- int w, h;
- int size;
-
- b->save_timer = NULL;
- evas_object_geometry_get(b->bryce, NULL, NULL, &w, &h);
- if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- size = h;
- else
- size = w;
- size = lround(size / e_scale);
- if (b->size == size) return EINA_FALSE;
- e_config_save_queue();
- b->size = size;
- return EINA_FALSE;
-}
-
-static void
-_bryce_zone_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
- e_object_del(E_OBJECT(b->e_obj_inherit));
-}
-
-static void
-_bryce_zone_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
- if (!b->calc_job)
- b->calc_job = ecore_job_add((Ecore_Cb)_bryce_autosize, b);
-}
-
-static void
-_bryce_zone_setup(Bryce *b)
-{
- Evas_Object *zone_clip;
-
- zone_clip = evas_object_clip_get(b->bryce);
- if (zone_clip)
- {
- evas_object_event_callback_del_full(zone_clip, EVAS_CALLBACK_DEL, _bryce_zone_del, b);
- evas_object_event_callback_del_full(zone_clip, EVAS_CALLBACK_MOVE, _bryce_zone_moveresize, b);
- evas_object_event_callback_del_full(zone_clip, EVAS_CALLBACK_RESIZE, _bryce_zone_moveresize, b);
- }
- zone_clip = e_comp_zone_number_get(b->zone)->bg_clip_object;
- evas_object_clip_set(b->bryce, zone_clip);
- evas_object_event_callback_add(zone_clip, EVAS_CALLBACK_DEL, _bryce_zone_del, b);
- evas_object_event_callback_add(zone_clip, EVAS_CALLBACK_MOVE, _bryce_zone_moveresize, b);
- evas_object_event_callback_add(zone_clip, EVAS_CALLBACK_RESIZE, _bryce_zone_moveresize, b);
-}
-
-static void
-_bryce_rename(Bryce *b, int num)
-{
- char buf[1024], buf2[1024], *name, *p;
-
- name = strdup(b->name);
- if (b->version >= 2)
- {
- p = strrchr(name, '_');
- p[0] = 0;
- }
- snprintf(buf, sizeof(buf), "__bryce%s", name);
- snprintf(buf2, sizeof(buf2), "__bryce%s_%d", name, num);
- e_gadget_site_rename(buf, buf2);
- if (b->version >= 2)
- {
- snprintf(buf, sizeof(buf), "%s_%u", name, num);
- eina_stringshare_replace(&b->name, buf);
- }
- free(name);
-}
-
-static void
-_bryce_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
- int x, y, w, h;
- E_Zone *zone;
- int size;
-
- evas_object_geometry_get(obj, &x, &y, &w, &h);
- evas_object_geometry_set(b->events, x, y, w, h);
- if (b->autohide)
- {
- E_FREE_LIST(b->zone_obstacles, e_object_del);
- return;
- }
- if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- size = h;
- else
- size = w;
- if (((b->orient == E_GADGET_SITE_ORIENT_VERTICAL) && (w != b->last_w)) ||
- ((b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL) && (h != b->last_h)))
- {
- evas_object_smart_need_recalculate_set(b->site, 1);
- evas_object_size_hint_min_set(b->site, -1, -1);
- }
- b->last_w = w, b->last_h = h;
-
- if (size && (b->size != size))
- {
- if (b->save_timer)
- ecore_timer_loop_reset(b->save_timer);
- else
- b->save_timer = ecore_timer_loop_add(0.5, _bryce_moveresize_save, b);
- }
-
- if (starting) return;
- zone = e_comp_object_util_zone_get(obj);
- if (zone)
- {
- Eina_Bool vertical = b->orient == E_GADGET_SITE_ORIENT_VERTICAL;
- if (b->zone_obstacles)
- {
- Eina_List *l;
- E_Zone_Obstacle *obs;
-
- EINA_LIST_FOREACH(b->zone_obstacles, l, obs)
- e_zone_obstacle_modify(obs, &(Eina_Rectangle){b->x, b->y, w, h}, vertical);
- }
- else
- {
- void *obs;
-
- obs = e_zone_obstacle_add(e_comp_object_util_zone_get(obj), NULL,
- &(Eina_Rectangle){b->x, b->y, w, h}, vertical);
- e_object_data_set(obs, b);
- E_OBJECT_DEL_SET(obs, _bryce_obstacle_del);
- b->zone_obstacles = eina_list_append(b->zone_obstacles, obs);
- }
- }
- else
- {
- /* determine "closest" zone:
- * calculate size of rect between bryce and zone
- * smallest rect = closest zone
- */
- Eina_List *l;
- E_Zone *lz;
- size = 0;
-
- E_FREE_LIST(b->zone_obstacles, e_object_del);
- EINA_LIST_FOREACH(e_comp->zones, l, lz)
- {
- int cw, ch;
-
- if (x < lz->x)
- cw = lz->x + lz->w - x;
- else
- cw = x + w - lz->x;
- if (y < lz->y)
- ch = lz->y + lz->h - y;
- else
- ch = y + h - lz->y;
- if (size >= cw * ch) continue;
- size = cw * ch;
- zone = lz;
- }
- }
- if (!zone) return;
- if (b->zone == zone->num) return;
- e_config_save_queue();
- _bryce_rename(b, zone->num);
- b->zone = zone->num;
- _bryce_zone_setup(b);
- _bryce_autosize(b);
-}
-
-static void
-_bryce_mouse_wheel(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Bryce *b = data;
- Evas_Event_Mouse_Wheel *ev = event_info;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (e_bindings_wheel_evas_event_handle(E_BINDING_CONTEXT_ANY, b->e_obj_inherit, ev))
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
-}
-
-static void
-_bryce_popup_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
-
- b->autohide_blocked--;
- b->popups = eina_list_remove(b->popups, obj);
- if (!b->autohide) return;
- if (!b->mouse_in)
- _bryce_autohide_hide(b);
-}
-
-static void
-_bryce_popup(Bryce *b, Evas_Object *popup)
-{
- evas_object_event_callback_add(popup, EVAS_CALLBACK_HIDE, _bryce_popup_hide, b);
- b->autohide_blocked++;
- b->popups = eina_list_append(b->popups, popup);
- if (b->autohide)
- _bryce_autohide_show(b);
-}
-
-static void
-_bryce_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
- Evas_Object *p;
- Evas_Object *zone_clip;
- void *obs;
-
- if (b->menu)
- {
- e_menu_deactivate(b->menu);
- e_object_del(E_OBJECT(b->menu));
- b->menu = NULL;
- }
- EINA_LIST_FREE(b->zone_obstacles, obs)
- {
- E_OBJECT_DEL_SET(obs, NULL);
- e_object_del(obs);
- }
- evas_object_del(b->autohide_event);
- E_FREE_FUNC(b->events, evas_object_del);
- E_FREE_FUNC(b->calc_job, ecore_job_del);
- E_FREE_FUNC(b->autohide_timer, ecore_timer_del);
- ecore_timer_del(b->save_timer);
- EINA_LIST_FREE(b->popups, p)
- evas_object_event_callback_del(p, EVAS_CALLBACK_HIDE, _bryce_popup_hide);
- zone_clip = evas_object_clip_get(b->bryce);
- if (zone_clip)
- {
- evas_object_event_callback_del_full(zone_clip, EVAS_CALLBACK_DEL, _bryce_zone_del, b);
- evas_object_event_callback_del_full(zone_clip, EVAS_CALLBACK_MOVE, _bryce_zone_moveresize, b);
- evas_object_event_callback_del_full(zone_clip, EVAS_CALLBACK_RESIZE, _bryce_zone_moveresize, b);
- }
- E_FREE(b->e_obj_inherit);
- b->bryce = NULL;
- b->site = NULL;
-}
-
-static void
-_bryce_object_free(E_Object *eobj)
-{
- Bryce *b = e_object_data_get(eobj);
- evas_object_hide(b->bryce);
- evas_object_del(b->bryce);
-}
-
-static void
-_bryce_style_menu(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Bryce *b = data;
- char buf[1024];
-
- snprintf(buf, sizeof(buf), "e/bryce/%s", b->style ?: "default");
- e_object_data_set(event_info, e_theme_collection_items_find(NULL, buf));
-}
-
-static void
-_bryce_gadgets_menu_close(void *data, Evas_Object *obj)
-{
- Bryce *b = data;
-
- b->autohide_blocked--;
- b->editing = 0;
- evas_object_layer_set(b->bryce, b->layer);
- evas_object_hide(obj);
- evas_object_del(obj);
- if (b->autohide && (!b->mouse_in))
- _bryce_autohide_hide(b);
-}
-
-static void
-_bryce_gadgets_menu(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Bryce *b = data;
- Evas_Object *comp_object;
-
- b->autohide_blocked++;
- b->editing = 1;
- comp_object = e_gadget_site_edit(b->site);
- evas_object_layer_set(b->bryce, E_LAYER_POPUP);
- e_comp_object_util_autoclose(comp_object, _bryce_gadgets_menu_close, e_comp_object_util_autoclose_on_escape, b);
-}
-
-static void
-_bryce_autosize_menu(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Bryce *b = data;
-
- e_bryce_autosize_set(b->bryce, !b->autosize);
-}
-
-static void
-_bryce_autohide_menu(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Bryce *b = data;
-
- e_bryce_autohide_set(b->bryce, !b->autohide);
-}
-
-static void
-_bryce_remove_menu(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Bryce *b = data;
- bryces->bryces = eina_list_remove(bryces->bryces, data);
- e_gadget_site_del(b->site);
- eina_stringshare_del(b->name);
- eina_stringshare_del(b->style);
- evas_object_hide(b->bryce);
- evas_object_del(b->bryce);
- e_config_save_queue();
-}
-
-static void
-_bryce_wizard_menu(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Bryce *b = data;
- Evas_Object *editor;
-
- editor = e_bryce_edit(b->bryce);
- _bryce_popup(b, editor);
-}
-
-static void
-_bryce_gadget_settings_menu(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Evas_Object *g = data;
- e_gadget_configure(g);
-}
-
-static void
-_bryce_gadget_remove_menu(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Evas_Object *g = data;
- e_gadget_del(g);
- e_config_save_queue();
-}
-
-static void
-_bryce_menu_post_cb(void *data, E_Menu *m)
-{
- Bryce *b = data;
- if (b->menu != m) return;
- b->menu = NULL;
-}
-
-static void
-_bryce_menu_populate(Bryce *b, E_Menu *m, Evas_Object *g)
-{
- E_Menu_Item *mi;
- const char *s = NULL;
-
- if (g) s = e_gadget_type_get(g);
- if (s) e_menu_title_set(m, e_gadget_type_get(g));
- else e_menu_title_set(m, _("Gadget Bar"));
-
- if (g)
- {
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Settings"));
- e_util_menu_item_theme_icon_set(mi, "preferences-system");
- e_menu_item_callback_set(mi, _bryce_gadget_settings_menu, g);
-
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Delete"));
- e_util_menu_item_theme_icon_set(mi, "list-remove");
- e_menu_item_callback_set(mi, _bryce_gadget_remove_menu, g);
-
- e_gadget_menu_populate(g, m);
-
- mi = e_menu_item_new(m);
- e_menu_item_separator_set(mi, 1);
- }
-
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Autosize"));
- e_menu_item_check_set(mi, 1);
- e_menu_item_toggle_set(mi, b->autosize);
- e_menu_item_callback_set(mi, _bryce_autosize_menu, b);
-
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Autohide"));
- e_menu_item_check_set(mi, 1);
- e_menu_item_toggle_set(mi, b->autohide);
- e_menu_item_callback_set(mi, _bryce_autohide_menu, b);
-
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Bar Settings"));
- e_menu_item_callback_set(mi, _bryce_wizard_menu, b);
-
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Add Gadget"));
- e_menu_item_callback_set(mi, _bryce_gadgets_menu, b);
-
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Delete Bar"));
- e_util_menu_item_theme_icon_set(mi, "list-remove");
- e_menu_item_callback_set(mi, _bryce_remove_menu, b);
-
- if (b->menu)
- {
- e_menu_deactivate(b->menu);
- e_object_del(E_OBJECT(b->menu));
- }
- b->menu = m;
- e_menu_post_deactivate_callback_set(m, _bryce_menu_post_cb, b);
-}
-
-static void
-_bryce_owner_menu(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Bryce *b = data;
- E_Menu_Item *mi = event_info;
- E_Menu *subm;
-
- e_menu_item_label_set(mi, _("Gadget Bar"));
-
- subm = e_menu_new();
- e_menu_hold_mode_set(subm, EINA_FALSE);
- e_menu_item_submenu_set(mi, subm);
- e_object_unref(E_OBJECT(subm));
-
- _bryce_menu_populate(b, subm, NULL);
-}
-
-static void
-_bryce_gadget_popup(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- _bryce_popup(data, event_info);
-}
-
-static void
-_bryce_gadget_locked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
-
- b->autohide_blocked++;
- if (b->autohide)
- _bryce_autohide_show(b);
-}
-
-static void
-_bryce_gadget_unlocked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
-
- b->autohide_blocked--;
- if (b->autohide && (!b->mouse_in))
- _bryce_autohide_hide(b);
-}
-
-static void
-_bryce_site_anchor(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
-
- e_bryce_orient(b->bryce, e_gadget_site_orient_get(obj), e_gadget_site_anchor_get(obj));
-}
-
-static void
-_bryce_gadget_size_request(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Coord_Size *size = event_info;
- Bryce *b = data;
-
- edje_object_part_geometry_get(elm_layout_edje_get(b->layout), "e.swallow.content", NULL, NULL, &size->w, &size->h);
-}
-
-static void
-_bryce_context(Evas_Object *site, Evas_Object *g, unsigned int timestamp)
-{
- Bryce *b = evas_object_data_get(site, "__bryce");
- if (b)
- {
- b->last_timestamp = timestamp;
- _bryce_menu(b, g);
- }
-}
-
-static void
-_bryce_context_cancel(Evas_Object *site, Evas_Object *g EINA_UNUSED, unsigned int timestamp)
-{
- Bryce *b = evas_object_data_get(site, "__bryce");
- if (b)
- {
- b->last_timestamp = timestamp;
- if (b->menu)
- {
- e_menu_deactivate(b->menu);
- e_object_del(E_OBJECT(b->menu));
- b->menu = NULL;
- }
- }
-}
-
-static void
-_bryce_orient(Bryce *b)
-{
- char buf[1024];
-
- evas_object_del(b->site);
-
- snprintf(buf, sizeof(buf), "__bryce%s", b->name);
- b->site = e_gadget_site_add(b->orient, buf);
- E_EXPAND(b->site);
- E_FILL(b->site);
- evas_object_data_set(b->site, "__bryce", b);
- elm_object_content_set(b->scroller, b->site);
- e_gadget_site_owner_setup(b->site, b->anchor, _bryce_style, _bryce_context, _bryce_context_cancel);
- if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- {
- elm_layout_signal_emit(b->layout, "e,state,orient,horizontal", "e");
- elm_layout_signal_emit(b->scroller, "e,state,orient,horizontal", "e");
- elm_scroller_policy_set(b->scroller, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_OFF);
- }
- else
- {
- elm_layout_signal_emit(b->layout, "e,state,orient,vertical", "e");
- elm_layout_signal_emit(b->scroller, "e,state,orient,vertical", "e");
- elm_scroller_policy_set(b->scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
- }
- evas_object_event_callback_add(b->site, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _bryce_site_hints, b);
- evas_object_smart_callback_add(b->site, "gadget_site_anchor", _bryce_site_anchor, b);
- evas_object_smart_callback_add(b->site, "gadget_site_style_menu", _bryce_style_menu, b);
- evas_object_smart_callback_add(b->site, "gadget_site_owner_menu", _bryce_owner_menu, b);
- evas_object_smart_callback_add(b->site, "gadget_site_popup", _bryce_gadget_popup, b);
- evas_object_smart_callback_add(b->site, "gadget_site_locked", _bryce_gadget_locked, b);
- evas_object_smart_callback_add(b->site, "gadget_site_unlocked", _bryce_gadget_unlocked, b);
- evas_object_smart_callback_add(b->site, "gadget_site_parent_size_request", _bryce_gadget_size_request, b);
-}
-
-static void
-_bryce_style_apply(Bryce *b)
-{
- char buf[1024];
- Eina_Bool noshadow;
-
- snprintf(buf, sizeof(buf), "e/bryce/%s/base", b->style ?: "default");
- e_theme_edje_object_set(b->layout, NULL, buf);
- noshadow = b->noshadow;
- b->noshadow = !!elm_layout_data_get(b->layout, "noshadow");
- if (b->bryce && (noshadow != b->noshadow))
- e_comp_object_util_type_set(b->bryce, _bryce_shadow_type(b));
-}
-
-static void
-_bryce_create(Bryce *b, Evas_Object *parent)
-{
- Evas_Object *ly, *bryce, *scr;
-
- b->e_obj_inherit = E_OBJECT_ALLOC(E_Object, E_BRYCE_TYPE, _bryce_object_free);
- b->events = evas_object_rectangle_add(e_comp->evas);
- evas_object_repeat_events_set(b->events, EINA_TRUE);
- evas_object_color_set(b->events, 0, 0, 0, 0);
- evas_object_name_set(b->events, "b->events");
- evas_object_show(b->events);
- e_object_data_set(b->e_obj_inherit, b);
- b->layout = ly = elm_layout_add(parent);
- _bryce_style_apply(b);
-
- b->scroller = scr = elm_scroller_add(ly);
- elm_scroller_bounce_set(scr, 0, 0);
- elm_object_style_set(scr, "bryce");
- _bryce_orient(b);
- elm_object_part_content_set(ly, "e.swallow.content", scr);
- evas_object_show(ly);
- b->bryce = bryce = e_comp_object_util_add(ly, _bryce_shadow_type(b));
-// evas_object_repeat_events_set(evas_object_smart_parent_get(ly), 1);
- evas_object_smart_member_add(b->events, bryce);
- evas_object_raise(b->events);
- evas_object_data_set(bryce, "comp_skip", (void*)1);
- evas_object_layer_set(bryce, b->layer);
- evas_object_lower(bryce);
-
- b->parent = parent;
- {
- const char *str;
-
- str = elm_layout_data_get(ly, "hidden_state_size");
- if (str && str[0])
- b->autohide_size = strtol(str, NULL, 10);
- }
- evas_object_data_set(bryce, "__bryce", b);
- evas_object_event_callback_add(bryce, EVAS_CALLBACK_DEL, _bryce_del, b);
- evas_object_event_callback_add(bryce, EVAS_CALLBACK_RESTACK, _bryce_restack, b);
- evas_object_event_callback_add(bryce, EVAS_CALLBACK_MOVE, _bryce_moveresize, b);
- evas_object_event_callback_add(bryce, EVAS_CALLBACK_RESIZE, _bryce_moveresize, b);
- evas_object_event_callback_add(b->events, EVAS_CALLBACK_MOUSE_WHEEL, _bryce_mouse_wheel, b);
-
- _bryce_zone_setup(b);
- _bryce_autohide_setup(b);
- _bryce_autosize(b);
-}
-
-static Eina_Bool
-_bryce_act_resize(E_Object *obj, const char *params, E_Binding_Event_Wheel *ev)
-{
- Bryce *b;
- int size, step = 4;
- char buf[64];
-
- if (obj->type != E_BRYCE_TYPE) return EINA_FALSE;
- if (params && params[0])
- {
- step = strtol(params, NULL, 10);
- step = MAX(step, 4);
- }
- b = e_object_data_get(obj);
- size = b->size;
- if (ev->z < 0)//up
- b->size += step;
- else
- b->size -= step;
- b->size = E_CLAMP(b->size, 20, 256);
- if (dblequal(e_scale, 1.0))
- snprintf(buf, sizeof(buf), "%dpx", b->size);
- else
- snprintf(buf, sizeof(buf), "%dpx (%ldpx scaled)", b->size, lround(b->size * e_scale));
- elm_object_part_text_set(b->layout, "e.text", buf);
- elm_object_signal_emit(b->layout, "e,action,resize", "e");
- e_config_save_queue();
- if (size == b->size) return EINA_TRUE;
- b->size_changed = 1;
- if (!b->calc_job)
- b->calc_job = ecore_job_add((Ecore_Cb)_bryce_autosize, b);
- return EINA_TRUE;
-}
-
-static void
-_bryce_menu(Bryce *b, Evas_Object *g)
-{
- E_Menu *m;
- int x = 0, y = 0, w = 1, h = 1;
-
- m = e_menu_new();
- e_menu_hold_mode_set(m, EINA_FALSE);
- _bryce_menu_populate(b, m, g);
- if (g)
- evas_object_geometry_get(g, &x, &y, &w, &h);
- else
- evas_pointer_canvas_xy_get(e_comp->evas, &x, &y);
- e_menu_activate_mouse(m, e_zone_current_get(), x, y, w, h,
- E_MENU_POP_DIRECTION_AUTO, b->last_timestamp);
- _bryce_popup(b, m->comp_object);
-}
-
-static Eina_Bool
-_bryce_zone_useful_geometry_changed(void *d EINA_UNUSED, int t EINA_UNUSED, E_Event_Zone_Move_Resize *ev)
-{
- Eina_List *l;
- Bryce *b;
-
- EINA_LIST_FOREACH(bryces->bryces, l, b)
- {
- if (b->bryce && (b->zone == ev->zone->num) &&
- (b->orient == E_GADGET_SITE_ORIENT_VERTICAL))
- _bryce_autosize(b);
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-_bryce_comp_resize(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Eina_List *l;
- Bryce *b;
-
- EINA_LIST_FOREACH(bryces->bryces, l, b)
- {
- if (e_comp_zone_number_get(b->zone))
- {
- if (b->bryce) continue;
- _bryce_create(b, e_comp->elm);
- evas_object_show(b->bryce);
- }
- }
-}
-
-E_API Evas_Object *
-e_bryce_add(Evas_Object *parent, const char *name, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an)
-{
- Bryce *b;
- const char *z;
-
- b = E_NEW(Bryce, 1);
- b->size = 48;
- b->name = eina_stringshare_add(name);
- z = strrchr(name, '_');
- b->zone = strtoul(z + 1, NULL, 10);
- b->anchor = an;
- b->orient = orient;
- b->layer = DEFAULT_LAYER;
- b->version = bryce_version;
- _bryce_create(b, parent);
- bryces->bryces = eina_list_append(bryces->bryces, b);
- e_config_save_queue();
- return b->bryce;
-}
-
-E_API void
-e_bryce_orient(Evas_Object *bryce, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an)
-{
- const char *loc = NULL, *loc2 = NULL;
- char buf[1024], buf2[1024];
-
- BRYCE_GET(bryce);
- if ((b->orient == orient) && (b->anchor == an)) return;
- if (an & E_GADGET_SITE_ANCHOR_TOP)
- loc = "top";
- else if (an & E_GADGET_SITE_ANCHOR_BOTTOM)
- loc = "bottom";
- else if (an & E_GADGET_SITE_ANCHOR_LEFT)
- loc = "left";
- else if (an & E_GADGET_SITE_ANCHOR_RIGHT)
- loc = "right";
- if (an & E_GADGET_SITE_ANCHOR_RIGHT)
- loc2 = "right";
- else if (an & E_GADGET_SITE_ANCHOR_LEFT)
- loc2 = "left";
- else if (an & E_GADGET_SITE_ANCHOR_TOP)
- loc2 = "top";
- else if (an & E_GADGET_SITE_ANCHOR_BOTTOM)
- loc2 = "bottom";
-
- snprintf(buf, sizeof(buf), "__bryce%s", b->name);
- snprintf(buf2, sizeof(buf2), "__brycebryce_%s_%s_%d", loc, loc2, b->zone);
- e_gadget_site_rename(buf, buf2);
- b->orient = orient;
- b->anchor = an;
- snprintf(buf2, sizeof(buf2), "bryce_%s_%s_%d", loc, loc2, b->zone);
- eina_stringshare_replace(&b->name, buf2);
- _bryce_orient(b);
- _bryce_autosize(b);
-}
-
-E_API Evas_Object *
-e_bryce_site_get(Evas_Object *bryce)
-{
- BRYCE_GET(bryce);
-
- return b->site;
-}
-
-E_API Eina_Bool
-e_bryce_autosize_get(Evas_Object *bryce)
-{
- BRYCE_GET(bryce);
- return b->autosize;
-}
-
-E_API void
-e_bryce_autosize_set(Evas_Object *bryce, Eina_Bool set)
-{
- BRYCE_GET(bryce);
- set = !!set;
-
- if (b->autosize == set) return;
- b->autosize = set;
- if (set)
- {
- while (b->spacers)
- e_gadget_del(eina_list_data_get(b->spacers));
- }
- e_config_save_queue();
- _bryce_autosize(b);
-}
-
-E_API Eina_Bool
-e_bryce_autohide_get(Evas_Object *bryce)
-{
- BRYCE_GET(bryce);
- return b->autohide;
-}
-
-E_API void
-e_bryce_autohide_set(Evas_Object *bryce, Eina_Bool set)
-{
- BRYCE_GET(bryce);
- set = !!set;
-
- if (b->autohide == set) return;
- b->autohide = set;
-
- if (set)
- _bryce_autohide_setup(b);
- else
- {
- E_FREE_FUNC(b->autohide_event, evas_object_del);
- evas_object_event_callback_del_full(bryce, EVAS_CALLBACK_MOVE, _bryce_autohide_moveresize, b);
- evas_object_event_callback_del_full(bryce, EVAS_CALLBACK_RESIZE, _bryce_autohide_moveresize, b);
- if (!b->hidden) return;
- e_efx_move(b->bryce, E_EFX_EFFECT_SPEED_LINEAR, E_EFX_POINT(b->x, b->y), 0.5, _bryce_autohide_end, b);
- b->animating = 1;
- b->hidden = 0;
- }
- e_config_save_queue();
-}
-
-E_API Eina_List *
-e_bryce_list(Evas_Object *parent)
-{
- Eina_List *l, *ret = NULL;
- Bryce *b;
-
- if (!parent) parent = e_comp->elm;
- EINA_LIST_FOREACH(bryces->bryces, l, b)
- {
- if (!b->bryce) continue;
- if (parent == b->parent)
- ret = eina_list_append(ret, b->bryce);
- }
- return ret;
-}
-
-E_API Eina_Bool
-e_bryce_exists(Evas_Object *parent, Evas_Object *bryce, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an)
-{
- Eina_List *l;
- Bryce *b;
- int zone = -1;
-
- if (!parent) parent = e_comp->elm;
- if (parent == e_comp->elm)
- {
- E_Shelf *es;
- E_Zone *z;
-
- z = e_zone_current_get();
- zone = z->num;
- /* FIXME: remove shelf block once shelves are dead */
- l = e_shelf_list_all();
- EINA_LIST_FREE(l, es)
- {
- if (es->zone != z) continue;
- switch (es->cfg->orient)
- {
-#define ORIENT_CHECK(ORIENT, ANCHOR1, ANCHOR2) \
- if ((orient == E_GADGET_SITE_ORIENT_##ORIENT) && \
- ((an == (E_GADGET_SITE_ANCHOR_##ANCHOR1)) || \
- ((an & E_GADGET_SITE_ANCHOR_##ANCHOR2) && (!es->cfg->fit_along)))) \
- return EINA_TRUE; \
- break
- default: break;
- case E_GADCON_ORIENT_LEFT:
- ORIENT_CHECK(VERTICAL, LEFT, LEFT);
- case E_GADCON_ORIENT_RIGHT:
- ORIENT_CHECK(VERTICAL, RIGHT, RIGHT);
- case E_GADCON_ORIENT_TOP:
- ORIENT_CHECK(HORIZONTAL, TOP, TOP);
- case E_GADCON_ORIENT_BOTTOM:
- ORIENT_CHECK(HORIZONTAL, BOTTOM, BOTTOM);
- case E_GADCON_ORIENT_CORNER_TL:
- ORIENT_CHECK(HORIZONTAL, TOP | E_GADGET_SITE_ANCHOR_LEFT, TOP);
- case E_GADCON_ORIENT_CORNER_TR:
- ORIENT_CHECK(HORIZONTAL, TOP | E_GADGET_SITE_ANCHOR_RIGHT, TOP);
- case E_GADCON_ORIENT_CORNER_BL:
- ORIENT_CHECK(HORIZONTAL, BOTTOM | E_GADGET_SITE_ANCHOR_LEFT, BOTTOM);
- case E_GADCON_ORIENT_CORNER_BR:
- ORIENT_CHECK(HORIZONTAL, BOTTOM | E_GADGET_SITE_ANCHOR_RIGHT, BOTTOM);
- case E_GADCON_ORIENT_CORNER_LT:
- ORIENT_CHECK(VERTICAL, LEFT | E_GADGET_SITE_ANCHOR_TOP, LEFT);
- case E_GADCON_ORIENT_CORNER_RT:
- ORIENT_CHECK(VERTICAL, RIGHT | E_GADGET_SITE_ANCHOR_TOP, RIGHT);
- case E_GADCON_ORIENT_CORNER_LB:
- ORIENT_CHECK(VERTICAL, LEFT | E_GADGET_SITE_ANCHOR_BOTTOM, LEFT);
- case E_GADCON_ORIENT_CORNER_RB:
- ORIENT_CHECK(VERTICAL, RIGHT | E_GADGET_SITE_ANCHOR_BOTTOM, RIGHT);
-#undef ORIENT_CHECK
- }
- }
- /* end FIXME */
- }
- EINA_LIST_FOREACH(bryces->bryces, l, b)
- {
- if (!b->bryce) continue;
- if (b->bryce == bryce) return EINA_FALSE;
- if (parent != b->parent) continue;
- if (b->orient != orient) continue;
- if ((zone >= 0) && ((int)b->zone != zone)) continue;
- if ((b->anchor & an) == an) return EINA_TRUE;
- if (b->autosize) continue;
- if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- {
- if ((b->anchor & E_GADGET_SITE_ANCHOR_BOTTOM) && (an & E_GADGET_SITE_ANCHOR_BOTTOM))
- return EINA_TRUE;
- if ((b->anchor & E_GADGET_SITE_ANCHOR_TOP) && (an & E_GADGET_SITE_ANCHOR_TOP))
- return EINA_TRUE;
- }
- else
- {
- if ((b->anchor & E_GADGET_SITE_ANCHOR_LEFT) && (an & E_GADGET_SITE_ANCHOR_LEFT))
- return EINA_TRUE;
- if ((b->anchor & E_GADGET_SITE_ANCHOR_RIGHT) && (an & E_GADGET_SITE_ANCHOR_RIGHT))
- return EINA_TRUE;
- }
- }
- return EINA_FALSE;
-}
-
-E_API void
-e_bryce_style_set(Evas_Object *bryce, const char *style)
-{
- BRYCE_GET(bryce);
-
- eina_stringshare_replace(&b->style, style);
- _bryce_style_apply(b);
- e_config_save_queue();
- evas_object_smart_callback_call(b->site, "gadget_site_style", NULL);
-}
-
-/* FIXME */
-EINTERN void
-e_bryce_save(void)
-{
- e_config_domain_save("e_bryces", edd_bryces, bryces);
-}
-
-static void
-bryce_spacer_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Bryce *b = data;
-
- b->spacers = eina_list_remove(b->spacers, obj);
-}
-
-static Evas_Object *
-bryce_spacer_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Bryce *b;
- Eina_List *l;
- Evas_Object *r;
-
- if (!orient) return NULL;
-
- /* only allow on bryces */
- EINA_LIST_FOREACH(bryces->bryces, l, b)
- {
- if (b->editing || (parent == b->site)) break;
- }
- if (!b) return NULL;
- if (b->autosize) return NULL;
- r = evas_object_rectangle_add(e_comp->evas);
- evas_object_event_callback_add(r, EVAS_CALLBACK_DEL, bryce_spacer_del, b);
- b->spacers = eina_list_append(b->spacers, r);
- E_EXPAND(r);
- E_FILL(r);
- /* FIXME: this should be better for demo gadgets... */
- if (*id < 0)
- {
- evas_object_size_hint_aspect_set(r, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
- evas_object_color_set(r, 255, 0, 0, 255);
- }
- else
- evas_object_color_set(r, 0, 0, 0, 0);
- return r;
-}
-
-EINTERN void
-e_bryce_init(void)
-{
- resize_act = e_action_add("bryce_resize");
- e_action_predef_name_set(_("Bryces"), _("Resize Gadget Bar"), "bryce_resize", NULL, "syntax: step, example: 4", 1);
- resize_act->func.go_wheel = _bryce_act_resize;
-
- edd_bryce = E_CONFIG_DD_NEW("Bryce", Bryce);
- E_CONFIG_VAL(edd_bryce, Bryce, name, STR);
- E_CONFIG_VAL(edd_bryce, Bryce, style, STR);
- E_CONFIG_VAL(edd_bryce, Bryce, zone, UINT);
- E_CONFIG_VAL(edd_bryce, Bryce, size, INT);
- E_CONFIG_VAL(edd_bryce, Bryce, layer, UINT);
- E_CONFIG_VAL(edd_bryce, Bryce, autosize, UCHAR);
- E_CONFIG_VAL(edd_bryce, Bryce, autohide, UCHAR);
- E_CONFIG_VAL(edd_bryce, Bryce, orient, UINT);
- E_CONFIG_VAL(edd_bryce, Bryce, anchor, UINT);
- E_CONFIG_VAL(edd_bryce, Bryce, version, UINT);
-
- edd_bryces = E_CONFIG_DD_NEW("Bryces", Bryces);
- E_CONFIG_LIST(edd_bryces, Bryces, bryces, edd_bryce);
- bryces = e_config_domain_load("e_bryces", edd_bryces);
-
- if (bryces)
- {
- Eina_List *l;
- Bryce *b;
-
- EINA_LIST_FOREACH(bryces->bryces, l, b)
- {
- if (b->version < 2)
- {
- /* I broke this the first time by forgetting the __bryce prefix :(
- */
- _bryce_rename(b, b->zone);
- if (b->version < 1)
- {
- char buf[1024];
-
- snprintf(buf, sizeof(buf), "%s_%u", b->name, b->zone);
- eina_stringshare_replace(&b->name, buf);
- }
- }
- b->version = bryce_version;
- if (!e_comp_zone_number_get(b->zone)) continue;
- b->layer = E_CLAMP(b->layer, E_LAYER_DESKTOP_TOP, E_LAYER_CLIENT_ABOVE);
- _bryce_create(b, e_comp->elm);
- evas_object_show(b->bryce);
- }
- }
- else
- bryces = E_NEW(Bryces, 1);
-
- evas_object_event_callback_add(e_comp->canvas->resize_object, EVAS_CALLBACK_RESIZE, _bryce_comp_resize, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGED, _bryce_zone_useful_geometry_changed, NULL);
- e_gadget_type_add("Spacer Bar", bryce_spacer_create, NULL);
-}
-
-EINTERN void
-e_bryce_shutdown(void)
-{
- Bryce *b;
-
- E_CONFIG_DD_FREE(edd_bryce);
- E_CONFIG_DD_FREE(edd_bryces);
- EINA_LIST_FREE(bryces->bryces, b)
- {
- E_Zone *zone;
- void *obs;
-
- EINA_LIST_FREE(b->zone_obstacles, obs)
- {
- E_OBJECT_DEL_SET(obs, NULL);
- e_object_del(obs);
- }
- evas_object_event_callback_del(b->bryce, EVAS_CALLBACK_DEL, _bryce_del);
- EINA_LIST_FREE(b->popups, obs)
- evas_object_event_callback_del(obs, EVAS_CALLBACK_HIDE, _bryce_popup_hide);
- evas_object_hide(b->bryce);
- evas_object_del(b->bryce);
- evas_object_del(b->autohide_event);
- eina_stringshare_del(b->name);
- eina_stringshare_del(b->style);
- ecore_job_del(b->calc_job);
- ecore_timer_del(b->save_timer);
- ecore_timer_del(b->autohide_timer);
- zone = e_comp_zone_number_get(b->zone);
- if (zone)
- {
- evas_object_event_callback_del(zone->bg_clip_object, EVAS_CALLBACK_DEL, _bryce_zone_del);
- evas_object_event_callback_del(zone->bg_clip_object, EVAS_CALLBACK_MOVE, _bryce_zone_moveresize);
- evas_object_event_callback_del(zone->bg_clip_object, EVAS_CALLBACK_RESIZE, _bryce_zone_moveresize);
- }
- free(b->e_obj_inherit);
- free(b);
- }
- E_FREE_LIST(handlers, ecore_event_handler_del);
- E_FREE(bryces);
- e_gadget_type_del("Spacer Bar");
-}
diff --git a/src/bin/e_bryce.h b/src/bin/e_bryce.h
deleted file mode 100644
index 3f575a2d82..0000000000
--- a/src/bin/e_bryce.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef E_TYPEDEFS
-#ifndef E_BRYCE_H
-# define E_BRYCE_H
-
-EINTERN void e_bryce_init(void);
-EINTERN void e_bryce_shutdown(void);
-
-E_API Evas_Object *e_bryce_add(Evas_Object *parent, const char *name, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an);
-E_API void e_bryce_orient(Evas_Object *bryce, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an);
-E_API Evas_Object *e_bryce_site_get(Evas_Object *bryce);
-E_API Eina_Bool e_bryce_autosize_get(Evas_Object *bryce);
-E_API void e_bryce_autosize_set(Evas_Object *bryce, Eina_Bool set);
-E_API Eina_Bool e_bryce_autohide_get(Evas_Object *bryce);
-E_API void e_bryce_autohide_set(Evas_Object *bryce, Eina_Bool set);
-E_API Eina_Bool e_bryce_exists(Evas_Object *parent, Evas_Object *bryce, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an);
-E_API Eina_List *e_bryce_list(Evas_Object *parent);
-E_API void e_bryce_style_set(Evas_Object *bryce, const char *style);
-
-E_API Evas_Object *e_bryce_editor_add(Evas_Object *parent, Evas_Object *bryce);
-E_API Evas_Object *e_bryce_edit(Evas_Object *bryce);
-#endif
-#endif
diff --git a/src/bin/e_bryce_editor.c b/src/bin/e_bryce_editor.c
deleted file mode 100644
index 63db0718a8..0000000000
--- a/src/bin/e_bryce_editor.c
+++ /dev/null
@@ -1,444 +0,0 @@
-#include "e.h"
-
-#define DEFAULT_AUTOSIZE EINA_TRUE
-#define DEFAULT_AUTOHIDE EINA_FALSE
-#define DEFAULT_LAYER E_LAYER_CLIENT_EDGE
-
-typedef struct Bryce_Info
-{
- E_Gadget_Site_Anchor anchor;
- E_Gadget_Site_Orient orient;
- Eina_Stringshare *style;
- Eina_Bool stack_under;
- Eina_Bool autohide;
- Eina_Bool autosize;
-} Bryce_Info;
-
-
-static void _editor_add_bottom(void *data, Evas_Object *obj, const char *sig, const char *src);
-static void _editor_add_top(void *data, Evas_Object *obj, const char *sig, const char *src);
-static void _editor_add_left(void *data, Evas_Object *obj, const char *sig, const char *src);
-static void _editor_add_right(void *data, Evas_Object *obj, const char *sig, const char *src);
-
-static void
-setup_exists(Evas_Object *bryce, Evas_Object *editor, Evas_Object *parent, E_Gadget_Site_Anchor an)
-{
- if ((an != E_GADGET_SITE_ANCHOR_TOP) &&
- e_bryce_exists(parent, bryce, E_GADGET_SITE_ORIENT_HORIZONTAL, E_GADGET_SITE_ANCHOR_BOTTOM | an))
- elm_object_signal_emit(editor, "e,bryce,exists,bottom", "e");
- if ((an != E_GADGET_SITE_ANCHOR_BOTTOM) &&
- e_bryce_exists(parent, bryce, E_GADGET_SITE_ORIENT_HORIZONTAL, E_GADGET_SITE_ANCHOR_TOP | an))
- elm_object_signal_emit(editor, "e,bryce,exists,top", "e");
- if ((an != E_GADGET_SITE_ANCHOR_RIGHT) &&
- e_bryce_exists(parent, bryce, E_GADGET_SITE_ORIENT_VERTICAL, E_GADGET_SITE_ANCHOR_LEFT | an))
- elm_object_signal_emit(editor, "e,bryce,exists,left", "e");
- if ((an != E_GADGET_SITE_ANCHOR_LEFT) &&
- e_bryce_exists(parent, bryce, E_GADGET_SITE_ORIENT_VERTICAL, E_GADGET_SITE_ANCHOR_RIGHT | an))
- elm_object_signal_emit(editor, "e,bryce,exists,right", "e");
-}
-
-static void
-_editor_bryce_add(Evas_Object *obj)
-{
- Evas_Object *b, *site;
- char buf[1024];
- const char *loc = "", *loc2 = "";
- Bryce_Info *bi;
- E_Zone *zone;
- E_Gadget_Site_Gravity gravity = E_GADGET_SITE_GRAVITY_CENTER;
-
- bi = evas_object_data_get(obj, "__bryce_info");
- b = evas_object_data_get(obj, "__bryce_editor_bryce");
- if (bi->anchor & E_GADGET_SITE_ANCHOR_TOP)
- loc = "top";
- else if (bi->anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- loc = "bottom";
- else if (bi->anchor & E_GADGET_SITE_ANCHOR_LEFT)
- loc = "left";
- else if (bi->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
- loc = "right";
- if (bi->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
- loc2 = "right";
- else if (bi->anchor & E_GADGET_SITE_ANCHOR_LEFT)
- loc2 = "left";
- else if (bi->anchor & E_GADGET_SITE_ANCHOR_TOP)
- loc2 = "top";
- else if (bi->anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- loc2 = "bottom";
-
- zone = e_comp_object_util_zone_get(obj);
- if (!zone) zone = e_zone_current_get();
- snprintf(buf, sizeof(buf), "bryce_%s_%s_%d", loc, loc2, zone->num);
- if (bi->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- {
- if (bi->anchor & E_GADGET_SITE_ANCHOR_LEFT)
- gravity = E_GADGET_SITE_GRAVITY_LEFT;
- else if (bi->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
- gravity = E_GADGET_SITE_GRAVITY_RIGHT;
- }
- else
- {
- if (bi->anchor & E_GADGET_SITE_ANCHOR_TOP)
- gravity = E_GADGET_SITE_GRAVITY_TOP;
- else if (bi->anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- gravity = E_GADGET_SITE_GRAVITY_BOTTOM;
- }
- if (b)
- {
- e_bryce_orient(b, bi->orient, bi->anchor);
- site = e_bryce_site_get(b);
- }
- else
- {
- b = e_bryce_add(e_comp->elm, buf, bi->orient, bi->anchor);
- site = e_bryce_site_get(b);
-
- e_gadget_site_gadget_add(site, "Start", 0);
- e_gadget_site_gadget_add(site, "Digital Clock", 0);
- e_gadget_site_gadget_add(site, "Wireless", 0);
- }
-
- e_gadget_site_gravity_set(site, gravity);
- e_bryce_style_set(b, bi->style);
- e_bryce_autohide_set(b, bi->autohide);
- e_bryce_autosize_set(b, bi->autosize);
- evas_object_layer_set(b, bi->stack_under ? E_LAYER_DESKTOP_TOP : E_LAYER_CLIENT_ABOVE);
- evas_object_del(obj);
-}
-
-static void
-_editor_finish(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- _editor_bryce_add(data);
-}
-
-static void
-_editor_autosize(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce_Info *bi = data;
-
- bi->autosize = !bi->autosize;
-}
-
-static void
-_editor_autohide(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce_Info *bi = data;
-
- bi->autohide = !bi->autohide;
-}
-
-static void
-_editor_stacking(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce_Info *bi = data;
-
- bi->stack_under = !bi->stack_under;
-}
-
-static void
-_editor_style_click(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- const char *g;
- char style[1024] = {0};
- Bryce_Info *bi;
- Evas_Object *ly, *box, *ck, *button, *bryce;
-
- ly = elm_object_part_content_get(obj, "e.swallow.content");
- elm_layout_file_get(ly, NULL, &g);
- g += (sizeof("e/bryce/") - 1);
- memcpy(style, g, MIN(sizeof(style) - 1, (size_t)(strchr(g, '/') - g)));
-
- bryce = evas_object_data_get(data, "__bryce_editor_bryce");
- bi = evas_object_data_get(data, "__bryce_info");
- bi->style = eina_stringshare_add(style);
- e_theme_edje_object_set(data, NULL, "e/bryce/editor/finish");
- elm_object_part_text_set(data, "e.text", _("Finishing touches... (4/4)"));
- box = elm_box_add(data);
- elm_box_padding_set(box, 0, 20 * e_scale);
-
- ck = elm_check_add(box);
- elm_object_focus_allow_set(ck, 0);
- E_ALIGN(ck, 0, 0.5);
- evas_object_show(ck);
- elm_object_text_set(ck, _("Automatically size based on contents"));
- evas_object_smart_callback_add(ck, "changed", _editor_autosize, bi);
- if (bryce)
- {
- bi->autosize = e_bryce_autosize_get(bryce);
- elm_check_state_set(ck, bi->autosize);
- }
- elm_box_pack_end(box, ck);
-
- ck = elm_check_add(box);
- elm_object_focus_allow_set(ck, 0);
- E_ALIGN(ck, 0, 0.5);
- evas_object_show(ck);
- elm_object_text_set(ck, _("Automatically hide"));
- evas_object_smart_callback_add(ck, "changed", _editor_autohide, bi);
- if (bryce)
- {
- bi->autohide = e_bryce_autohide_get(bryce);
- elm_check_state_set(ck, bi->autohide);
- }
- elm_box_pack_end(box, ck);
-
- ck = elm_check_add(box);
- elm_object_focus_allow_set(ck, 0);
- E_ALIGN(ck, 0, 0.5);
- evas_object_show(ck);
- elm_object_text_set(ck, _("Do not stack above windows"));
- evas_object_smart_callback_add(ck, "changed", _editor_stacking, bi);
- if (bryce)
- {
- bi->stack_under = evas_object_layer_get(bryce) == E_LAYER_DESKTOP_TOP;
- elm_check_state_set(ck, bi->stack_under);
- }
- elm_box_pack_end(box, ck);
-
- //ck = elm_check_add(box);
- //elm_object_text_set(ck, _("Allow windows to overlap"));
- //evas_object_smart_callback_add(ck, "changed", _editor_overlap, data);
- //elm_box_pack_end(box, ck);
-
- button = elm_button_add(data);
- evas_object_show(button);
- elm_object_text_set(button, _("Finish!"));
- evas_object_smart_callback_add(button, "clicked", _editor_finish, data);
- elm_box_pack_end(box, button);
-
- elm_object_part_content_set(data, "e.swallow.content", box);
-}
-
-static void
-_editor_style(Evas_Object *obj)
-{
- Eina_List *l;
- Eina_Stringshare *style;
- Evas_Object *box;
- int w;
-
- evas_object_geometry_get(obj, NULL, NULL, &w, NULL);
- box = elm_box_add(obj);
- e_theme_edje_object_set(obj, NULL, "e/bryce/editor/style");
- elm_object_part_text_set(obj, "e.text", _("Choose style (3/4)"));
- elm_box_homogeneous_set(box, 1);
- elm_box_padding_set(box, 0, 20 * e_scale);
- l = elm_theme_group_base_list(NULL, "e/bryce/");
- EINA_LIST_FREE(l, style)
- {
- Evas_Object *ly, *bryce;
- char buf[1024] = {0};
- size_t len;
-
- if (!eina_str_has_suffix(style, "/base"))
- {
- eina_stringshare_del(style);
- continue;
- }
- ly = elm_layout_add(box);
- e_theme_edje_object_set(ly, NULL, "e/bryce/editor/style/item");
- bryce = edje_object_add(evas_object_evas_get(box));
- elm_object_part_content_set(ly, "e.swallow.content", bryce);
- len = strlen(style);
- strncpy(buf, style + sizeof("e/bryce/") - 1,
- MIN(sizeof(buf) - 1, len - (sizeof("e/bryce/") - 1) - (sizeof("/base") - 1)));
- buf[0] = toupper(buf[0]);
- elm_object_part_text_set(ly, "e.text", buf);
- e_comp_object_util_del_list_append(ly, bryce);
- e_theme_edje_object_set(bryce, NULL, style);
- evas_object_size_hint_min_set(bryce, w * 2 / 3, 48 * e_scale);
- evas_object_show(ly);
- evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_DOWN, _editor_style_click, obj);
- elm_box_pack_end(box, ly);
- }
- elm_object_part_content_set(obj, "e.swallow.content", box);
-}
-
-static void
-_editor_info_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Bryce_Info *bi = data;
-
- eina_stringshare_del(bi->style);
- free(bi);
-}
-
-static void
-_editor_add(Evas_Object *obj, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an)
-{
- char buf[1024];
- Bryce_Info *bi;
-
- bi = evas_object_data_get(obj, "__bryce_info");
- if (bi)
- {
- bi->anchor |= an;
- _editor_style(obj);
- }
- else
- {
- bi = E_NEW(Bryce_Info, 1);
- bi->anchor = an;
- bi->orient = orient;
- evas_object_data_set(obj, "__bryce_info", bi);
- evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _editor_info_del, bi);
- snprintf(buf, sizeof(buf), "e/bryce/editor/side/%s",
- orient == E_GADGET_SITE_ORIENT_HORIZONTAL ? "horizontal" : "vertical");
- e_theme_edje_object_set(obj, NULL, buf);
- elm_object_part_text_set(obj, "e.text", _("Choose position (2/4)"));
- if (an & E_GADGET_SITE_ANCHOR_BOTTOM)
- elm_object_signal_emit(obj, "e,state,bottom", "e");
- else if (an & E_GADGET_SITE_ANCHOR_RIGHT)
- elm_object_signal_emit(obj, "e,state,right", "e");
- setup_exists(evas_object_data_get(obj, "__bryce_editor_bryce"), obj,
- evas_object_data_get(obj, "__bryce_editor_site"), an);
- }
-}
-
-static void
-_editor_add_bottom(void *data EINA_UNUSED, Evas_Object *obj, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
-{
- _editor_add(obj, E_GADGET_SITE_ORIENT_HORIZONTAL, E_GADGET_SITE_ANCHOR_BOTTOM);
-}
-
-static void
-_editor_add_top(void *data EINA_UNUSED, Evas_Object *obj, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
-{
- _editor_add(obj, E_GADGET_SITE_ORIENT_HORIZONTAL, E_GADGET_SITE_ANCHOR_TOP);
-}
-
-static void
-_editor_add_left(void *data EINA_UNUSED, Evas_Object *obj, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
-{
- _editor_add(obj, E_GADGET_SITE_ORIENT_VERTICAL, E_GADGET_SITE_ANCHOR_LEFT);
-}
-
-static void
-_editor_add_center(void *data EINA_UNUSED, Evas_Object *obj, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
-{
- _editor_add(obj, E_GADGET_SITE_ORIENT_NONE, E_GADGET_SITE_ANCHOR_NONE);
-}
-
-static void
-_editor_add_right(void *data EINA_UNUSED, Evas_Object *obj, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
-{
- _editor_add(obj, E_GADGET_SITE_ORIENT_VERTICAL, E_GADGET_SITE_ANCHOR_RIGHT);
-}
-
-static void
-_editor_dismiss(void *data EINA_UNUSED, Evas_Object *obj, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
-{
- evas_object_del(obj);
-}
-
-E_API Evas_Object *
-e_bryce_editor_add(Evas_Object *parent, Evas_Object *bryce)
-{
- Evas_Object *editor;
-
- editor = elm_layout_add(parent);
- evas_object_data_set(editor, "__bryce_editor_site", parent);
- evas_object_data_set(editor, "__bryce_editor_bryce", bryce);
- e_theme_edje_object_set(editor, NULL, "e/bryce/editor/side");
- elm_object_part_text_set(editor, "e.text", _("Choose screen edge (1/4)"));
-
- setup_exists(bryce, editor, parent, 0);
-
- elm_object_signal_callback_add(editor, "e,action,dismiss", "e", _editor_dismiss, editor);
- elm_object_signal_callback_add(editor, "e,bryce,add,bottom", "e", _editor_add_bottom, editor);
- elm_object_signal_callback_add(editor, "e,bryce,add,top", "e", _editor_add_top, editor);
- elm_object_signal_callback_add(editor, "e,bryce,add,left", "e", _editor_add_left, editor);
- elm_object_signal_callback_add(editor, "e,bryce,add,right", "e", _editor_add_right, editor);
- elm_object_signal_callback_add(editor, "e,bryce,add,center", "e", _editor_add_center, editor);
- return editor;
-}
-
-static Ecore_Event_Handler *handler;
-
-static void
-_bryce_edit_key_location(Evas_Object *obj, Ecore_Event_Key *ev)
-{
- if (eina_streq(ev->key, "Up"))
- _editor_add(obj, E_GADGET_SITE_ORIENT_HORIZONTAL, E_GADGET_SITE_ANCHOR_TOP);
- else if (eina_streq(ev->key, "Down"))
- _editor_add(obj, E_GADGET_SITE_ORIENT_HORIZONTAL, E_GADGET_SITE_ANCHOR_BOTTOM);
- else if (eina_streq(ev->key, "Left"))
- _editor_add(obj, E_GADGET_SITE_ORIENT_VERTICAL, E_GADGET_SITE_ANCHOR_LEFT);
- else if (eina_streq(ev->key, "Right"))
- _editor_add(obj, E_GADGET_SITE_ORIENT_VERTICAL, E_GADGET_SITE_ANCHOR_RIGHT);
-}
-
-static Eina_Bool
-_bryce_edit_key_handler(void *data, int t EINA_UNUSED, Ecore_Event_Key *ev)
-{
- if (eina_streq(ev->key, "Escape"))
- {
- elm_layout_signal_emit(data, "e,action,dismiss", "e");
- return ECORE_CALLBACK_RENEW;
- }
- if (evas_object_data_get(data, "__bryce_info"))
- {
- const char *grp;
-
- edje_object_file_get(data, NULL, &grp);
- if (!strncmp(grp, "e/bryce/editor/side/", sizeof("e/bryce/editor/side/") - 1))
- _bryce_edit_key_location(data, ev);
- else if (!strncmp(grp, "e/bryce/editor/style", sizeof("e/bryce/editor/style") - 1))
- {
- Evas_Object *bx, *o;
- Eina_List *l;
- int n;
-
- bx = elm_object_part_content_get(data, "e.swallow.content");
- l = elm_box_children_get(bx);
- n = strtol(ev->key, NULL, 10);
- if (n > 0)
- {
- o = eina_list_nth(l, n - 1);
- if (o)
- _editor_style_click(data, NULL, o, NULL);
- }
- eina_list_free(l);
- }
- else if (eina_streq(ev->key, "Return") || eina_streq(ev->key, "KP_Enter"))
- _editor_bryce_add(data);
- }
- else
- _bryce_edit_key_location(data, ev);
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-_bryce_edit_end(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- e_bindings_disabled_set(0);
- e_comp_ungrab_input(1, 1);
- evas_object_hide(data);
- evas_object_del(data);
- E_FREE_FUNC(handler, ecore_event_handler_del);
-}
-
-E_API Evas_Object *
-e_bryce_edit(Evas_Object *bryce)
-{
- Evas_Object *editor, *comp_object;
- E_Zone *zone;
- int x, y, w, h;
-
- zone = e_zone_current_get();
- x = zone->x, y = zone->y, w = zone->w, h = zone->h;
- e_bindings_disabled_set(1);
- editor = e_bryce_editor_add(e_comp->elm, bryce);
-
- evas_object_geometry_set(editor, x, y, w, h);
- comp_object = e_comp_object_util_add(editor, E_COMP_OBJECT_TYPE_NONE);
- evas_object_event_callback_add(editor, EVAS_CALLBACK_DEL, _bryce_edit_end, comp_object);
- evas_object_layer_set(comp_object, E_LAYER_POPUP);
- evas_object_show(comp_object);
-
- e_comp_object_util_autoclose(comp_object, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- e_comp_grab_input(1, 1);
- handler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, (Ecore_Event_Handler_Cb)_bryce_edit_key_handler, editor);
- return comp_object;
-}
diff --git a/src/bin/e_config.c b/src/bin/e_config.c
index 48abc692af..6c792d4f20 100644
--- a/src/bin/e_config.c
+++ b/src/bin/e_config.c
@@ -59,37 +59,6 @@ typedef struct _E_Color_Class
int r3, g3, b3, a3;
} E_Color_Class;
-static void
-_e_config_binding_mouse_add(E_Binding_Context ctxt, int button, E_Binding_Modifier mod, int any_mod, const char *action, const char *params)
-{
- E_Config_Binding_Mouse *binding;
-
- binding = calloc(1, sizeof(E_Config_Binding_Mouse));
- binding->context = ctxt;
- binding->button = button;
- binding->modifiers = mod;
- binding->any_mod = any_mod;
- binding->action = eina_stringshare_add(action);
- binding->params = eina_stringshare_add(params);
- e_bindings->mouse_bindings = eina_list_append(e_bindings->mouse_bindings, binding);
-}
-
-static void
-_e_config_binding_wheel_add(E_Binding_Context ctxt, int direction, int z, E_Binding_Modifier mod, int any_mod, const char *action, const char *params)
-{
- E_Config_Binding_Wheel *binding;
-
- binding = calloc(1, sizeof(E_Config_Binding_Wheel));
- binding->context = ctxt;
- binding->direction = direction;
- binding->z = z;
- binding->modifiers = mod;
- binding->any_mod = any_mod;
- binding->action = eina_stringshare_add(action);
- binding->params = eina_stringshare_add(params);
- e_bindings->wheel_bindings = eina_list_append(e_bindings->wheel_bindings, binding);
-}
-
static Eina_Bool
_e_config_cb_efreet_cache_update(void *data EINA_UNUSED, int type EINA_UNUSED, void *ev EINA_UNUSED)
{
@@ -1384,53 +1353,8 @@ e_config_load(void)
}
CONFIG_VERSION_CHECK(20)
{
- Eina_List *l;
- E_Config_Binding_Mouse *ebm;
- E_Config_Module *em, *module;
-
CONFIG_VERSION_UPDATE_INFO(20);
-
- EINA_LIST_FOREACH(e_bindings->mouse_bindings, l, ebm)
- {
- if (eina_streq(ebm->action, "window_move"))
- {
- _e_config_binding_mouse_add(E_BINDING_CONTEXT_ANY, ebm->button, ebm->modifiers,
- ebm->any_mod, "gadget_move", NULL);
- }
- else if (eina_streq(ebm->action, "window_resize"))
- {
- _e_config_binding_mouse_add(E_BINDING_CONTEXT_ANY, ebm->button, ebm->modifiers,
- ebm->any_mod, "gadget_resize", NULL);
- }
- else if (eina_streq(ebm->action, "window_menu"))
- {
- _e_config_binding_mouse_add(E_BINDING_CONTEXT_ANY, ebm->button, ebm->modifiers,
- ebm->any_mod, "gadget_menu", NULL);
- _e_config_binding_mouse_add(E_BINDING_CONTEXT_ANY, ebm->button, ebm->modifiers,
- ebm->any_mod, "bryce_menu", NULL);
- }
- }
- _e_config_binding_wheel_add(E_BINDING_CONTEXT_ANY, 0, 1, E_BINDING_MODIFIER_CTRL, 0, "bryce_resize", NULL);
- _e_config_binding_wheel_add(E_BINDING_CONTEXT_ANY, 0, -1, E_BINDING_MODIFIER_CTRL, 0, "bryce_resize", NULL);
-
- EINA_LIST_FOREACH(e_config->modules, l, em)
- {
- if (!em->enabled) continue;
- if (eina_streq(em->name, "connman"))
- {
- module = E_NEW(E_Config_Module, 1);
- module->name = eina_stringshare_add("wireless");
- module->enabled = 1;
- e_config->modules = eina_list_append(e_config->modules, module);
- }
- else if (eina_streq(em->name, "clock"))
- {
- module = E_NEW(E_Config_Module, 1);
- module->name = eina_stringshare_add("time");
- module->enabled = 1;
- e_config->modules = eina_list_append(e_config->modules, module);
- }
- }
+ e_config_save_queue();
}
CONFIG_VERSION_CHECK(21)
@@ -1558,23 +1482,7 @@ e_config_load(void)
}
CONFIG_VERSION_CHECK(28)
{
- Eina_List *l, *ll;
- E_Config_Binding_Mouse *ebm;
-
CONFIG_VERSION_UPDATE_INFO(28);
- EINA_LIST_FOREACH_SAFE(e_bindings->mouse_bindings, l, ll, ebm)
- {
- if ((eina_streq(ebm->action, "gadget_menu")) ||
- (eina_streq(ebm->action, "bryce_menu")))
- {
- e_bindings->mouse_bindings =
- eina_list_remove_list
- (e_bindings->mouse_bindings, l);
- eina_stringshare_del(ebm->action);
- eina_stringshare_del(ebm->params);
- free(ebm);
- }
- }
e_config_save_queue();
}
CONFIG_VERSION_CHECK(29)
@@ -2423,16 +2331,11 @@ e_config_bindings_free(E_Config_Bindings *ecb)
static void
_e_config_save_cb(void *data EINA_UNUSED)
{
- EINTERN void e_gadget_save(void);
- EINTERN void e_bryce_save(void);
-
e_config_profile_save();
e_module_save_all();
elm_config_save();
e_config_domain_save("e", _e_config_edd, e_config);
e_config_domain_save("e_bindings", _e_config_binding_edd, e_bindings);
- e_gadget_save();
- e_bryce_save();
_e_config_save_defer = NULL;
}
diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
deleted file mode 100644
index de6d89cbac..0000000000
--- a/src/bin/e_gadget.c
+++ /dev/null
@@ -1,3535 +0,0 @@
-#include "e.h"
-
-
-#ifdef HAVE_WAYLAND
-EINTERN void e_gadget_runner_init(void);
-EINTERN void e_gadget_runner_shutdown(void);
-EINTERN void e_gadget_runner_save(void);
-#endif
-
-#define SNAP_DISTANCE 5
-#define E_GADGET_TYPE 0xE31337
-
-#define IS_HORIZ(orient) \
- ((orient) == E_GADGET_SITE_ORIENT_HORIZONTAL)
-
-#define IS_VERT(orient) \
- ((orient) == E_GADGET_SITE_ORIENT_VERTICAL)
-
-#define ZGS_GET(obj) \
- E_Gadget_Site *zgs; \
- zgs = evas_object_data_get((obj), "__e_gadget_site"); \
- if (!zgs) abort()
-
-typedef struct E_Gadget_Config E_Gadget_Config;
-
-typedef struct E_Gadget_Site
-{
- Eina_Stringshare *name;
- Eina_Bool autoadd;
- E_Gadget_Site_Gravity gravity;
- E_Gadget_Site_Orient orient;
- E_Gadget_Site_Anchor anchor;
- Eina_List *gadgets;
- Eina_Inlist *gadget_list;
-
- Eina_Bool longpressed : 1;
- Eina_Bool dragged : 1;
- Evas_Coord down_1_x, down_1_y, down_3_x, down_3_y;
- Ecore_Timer *down_timer;
-
- Evas_Object *layout;
- Evas_Object *events;
- E_Gadget_Style_Cb style_cb;
- E_Gadget_Context_Cb context_cb;
- E_Gadget_Context_Cb context_cancel_cb;
- int cur_size;
- Ecore_Job *calc_job;
-
- E_Gadget_Config *action;
- Ecore_Event_Handler *move_handler;
- Ecore_Event_Handler *mouse_up_handler;
-
- Evas_Object *editor;
-} E_Gadget_Site;
-
-
-struct E_Gadget_Config
-{
- EINA_INLIST;
- int id;
- struct
- {
- Eina_Stringshare *domain;
- Eina_Stringshare *type;
- } external;
- int zone;
- Eina_Stringshare *type;
- E_Object *e_obj_inherit;
- Evas_Object *display;
- Evas_Object *gadget;
- struct
- {
- Evas_Object *obj;
- int minw, minh;
- Eina_Stringshare *name;
- } style;
- E_Gadget_Configure_Cb configure;
- Evas_Object *cfg_object;
- E_Gadget_Menu_Populate_Cb populate;
- Eina_List *popups;
- E_Gadget_Site *site;
- E_Menu *menu;
-
- struct
- {
- Evas_Object *popup;
- Evas_Smart_Cb allow;
- Evas_Smart_Cb deny;
- void *data;
- } allow_deny;
-
- Eina_Hash *drop_handlers;
-
- double x, y; //fixed % positioning
- double w, h; //fixed % sizing
- Evas_Point offset; //offset from mouse down
- Evas_Point down; //coords from mouse down
- E_Gadget_Config *orig; //gadget is a copy of the original gadget during a move
- E_Gadget_Site_Anchor resizing;
- Eina_Bool moving E_BITFIELD;
- Eina_Bool display_del E_BITFIELD; //deleted using ->display
-};
-
-typedef struct E_Gadget_Sites
-{
- Eina_List *sites;
-} E_Gadget_Sites;
-
-typedef struct E_Gadget_External_Type
-{
- E_Gadget_External_Create_Cb cb;
- E_Gadget_External_Wizard_Cb wizard;
- E_Gadget_External_Name_Cb name;
-} E_Gadget_External_Type;
-
-typedef struct E_Gadget_Type
-{
- E_Gadget_Create_Cb cb;
- E_Gadget_Wizard_Cb wizard;
-} E_Gadget_Type;
-
-typedef struct Gadget_Item
-{
- Evas_Object *box;
- Evas_Object *editor;
- Evas_Object *gadget;
- Evas_Object *site;
- Elm_Object_Item *it;
-} Gadget_Item;
-
-#define DESKLOCK_DEMO_LAYER (E_LAYER_CLIENT_POPUP - 100)
-
-static Eina_List *desktop_handlers;
-static Evas_Object *desktop_rect;
-static Evas_Object *desktop_editor;
-static Eina_Bool added;
-
-static Evas_Object *pointer_site;
-static Eina_List *pointer_site_handlers;
-
-static Eina_Hash *gadget_external_domains;
-static Eina_Hash *gadget_types;
-static E_Gadget_Sites *sites;
-static Eina_List *handlers;
-
-static Evas_Object *comp_site;
-
-static E_Action *move_act;
-static E_Action *resize_act;
-static E_Action *configure_act;
-
-static E_Config_DD *edd_sites;
-static E_Config_DD *edd_site;
-static E_Config_DD *edd_gadget;
-
-static void _gadget_object_finalize(E_Gadget_Config *zgc);
-static Eina_Bool _gadget_object_create(E_Gadget_Config *zgc);
-static void _editor_pointer_site_init(E_Gadget_Site_Orient orient, Evas_Object *site, Evas_Object *editor, Eina_Bool );
-static void _gadget_drop_handler_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED);
-static void _edit_site_del(void *data, Evas *e, Evas_Object *obj, void *event_info);
-
-static void
-_site_recalc_job_cb(E_Gadget_Site *zgs)
-{
- zgs->calc_job = NULL;
- evas_object_smart_need_recalculate_set(zgs->layout, 1);
-}
-
-static void
-_site_recalc_job(E_Gadget_Site *zgs)
-{
- if (zgs->calc_job) ecore_job_del(zgs->calc_job);
- zgs->calc_job = ecore_job_add((Ecore_Cb)_site_recalc_job_cb, zgs);
-}
-
-static E_Gadget_External_Type *
-_gadget_external_type_get(const char *domain, const char *type)
-{
- Eina_Hash *h;
- if (!gadget_external_domains) return NULL;
- h = eina_hash_find(gadget_external_domains, domain);
- if (!h) return NULL;
- return eina_hash_find(h, type);
-}
-
-static Eina_Bool
-_editor_site_visible(void)
-{
- Eina_List *l;
- E_Gadget_Site *zgs;
-
- if (desktop_editor) return evas_object_visible_get(desktop_editor);
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- if (zgs->editor && evas_object_visible_get(zgs->editor)) return EINA_TRUE;
- return EINA_FALSE;
-}
-
-static void
-_comp_site_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Eina_List *l;
- E_Gadget_Config *zgc;
-
- evas_object_resize(data, e_comp->w, e_comp->h);
- ZGS_GET(comp_site);
- EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
- {
- if (!zgc->display)
- _gadget_object_create(zgc);
- else if (!e_comp_zone_number_get(zgc->zone))
- evas_object_del(zgc->display);
- }
-}
-
-static void
-_gadget_free(E_Gadget_Config *zgc)
-{
- if (zgc->menu)
- {
- e_menu_deactivate(zgc->menu);
- e_object_del(E_OBJECT(zgc->menu));
- zgc->menu = NULL;
- }
- evas_object_del(zgc->display);
- eina_stringshare_del(zgc->type);
- eina_stringshare_del(zgc->external.type);
- eina_stringshare_del(zgc->external.domain);
- eina_stringshare_del(zgc->style.name);
- free(zgc);
-}
-
-static E_Gadget_Config *
-_gadget_at_xy(E_Gadget_Site *zgs, int x, int y, E_Gadget_Config *exclude)
-{
- Eina_List *l;
- E_Gadget_Config *zgc, *saved = NULL;
-
- EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
- {
- int ox, oy, ow, oh;
-
- if (!zgc->gadget) continue;
-
- evas_object_geometry_get(zgc->display, &ox, &oy, &ow, &oh);
- if (E_INSIDE(x, y, ox, oy, ow, oh))
- {
- if (zgc == exclude) saved = zgc;
- else return zgc;
- }
- }
- return saved;
-}
-
-static void
-_gravity_apply(E_Gadget_Site *zgs, E_Gadget_Site_Gravity gravity)
-{
- double ax = 0.5, ay = 0.5;
-
- switch (gravity)
- {
- case E_GADGET_SITE_GRAVITY_LEFT:
- ax = 0;
- break;
- case E_GADGET_SITE_GRAVITY_RIGHT:
- ax = 1;
- break;
- default: break;
- }
- switch (gravity)
- {
- case E_GADGET_SITE_GRAVITY_TOP:
- ay = 0;
- break;
- case E_GADGET_SITE_GRAVITY_BOTTOM:
- ay = 1;
- break;
- default: break;
- }
- elm_box_align_set(zgs->layout, ax, ay);
- evas_object_smart_callback_call(zgs->layout, "gadget_site_gravity", NULL);
-}
-
-static void
-_gadget_reparent(E_Gadget_Site *zgs, E_Gadget_Config *zgc)
-{
- Eina_Inlist *l = EINA_INLIST_GET(zgc);
- E_Gadget_Config *z;
-
- if (!zgs->orient)
- {
- evas_object_layer_set(zgc->display, evas_object_layer_get(zgs->layout));
- evas_object_stack_below(zgc->display, zgs->events);
- if (evas_object_visible_get(zgs->events))
- evas_object_show(zgc->display);
- return;
- }
- switch (zgs->gravity)
- {
- case E_GADGET_SITE_GRAVITY_NONE:
- /* fake */
- break;
- case E_GADGET_SITE_GRAVITY_LEFT:
- case E_GADGET_SITE_GRAVITY_TOP:
- for (l = l->prev; l; l = l->prev)
- {
- z = EINA_INLIST_CONTAINER_GET(l, E_Gadget_Config);
- if (!z->display) continue;
- elm_box_pack_after(zgs->layout, zgc->display, z->display);
- return;
- }
- elm_box_pack_end(zgs->layout, zgc->display);
- break;
- default:
- for (l = l->next; l; l = l->next)
- {
- z = EINA_INLIST_CONTAINER_GET(l, E_Gadget_Config);
- if (!z->display) continue;
- elm_box_pack_before(zgs->layout, zgc->display, z->display);
- return;
- }
- /* right aligned: pack on left */
- elm_box_pack_start(zgs->layout, zgc->display);
- }
-}
-
-static void
-_desktop_rect_obj_add(Evas_Object *obj)
-{
- if (!desktop_rect) return;
- evas_object_smart_member_add(obj, desktop_rect);
- evas_object_propagate_events_set(obj, 0);
- if (e_comp->autoclose.obj != obj) return;
- evas_object_smart_member_add(e_comp->autoclose.rect, desktop_rect);
- evas_object_propagate_events_set(e_comp->autoclose.rect, 0);
-}
-
-static void
-_gadget_popup_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- E_Gadget_Config *zgc = data;
- if (desktop_editor) evas_object_show(desktop_editor);
- zgc->popups = eina_list_remove(zgc->popups, event_info);
-}
-
-static void
-_gadget_popup(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- E_Gadget_Config *zgc = data;
- E_Gadget_Site *zgs = zgc->site;
-
- if (event_info && elm_object_widget_check(event_info))
- elm_object_tree_focus_allow_set(event_info, 0);
- if (event_info) _desktop_rect_obj_add(event_info);
- evas_object_smart_callback_call(zgs->layout, "gadget_site_popup", event_info);
- if (!event_info) return;
- evas_object_event_callback_add(event_info, EVAS_CALLBACK_HIDE, _gadget_popup_hide, zgc);
- if (desktop_editor) evas_object_hide(desktop_editor);
- if (eina_list_data_find(zgc->popups, event_info))
- ERR("gadget_popup called multiple times for same popup");
- zgc->popups = eina_list_append(zgc->popups, event_info);
-}
-
-static void
-_gadget_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- E_Gadget_Config *zgc = data;
-
- zgc->display_del = obj == zgc->display;
- if (!e_object_is_del(zgc->e_obj_inherit))
- e_object_del(zgc->e_obj_inherit);
-}
-
-static void
-_gadget_util_allow_deny_cleanup(E_Gadget_Config *zgc)
-{
- zgc->allow_deny.allow = zgc->allow_deny.deny = NULL;
- zgc->allow_deny.data = NULL;
- evas_object_hide(zgc->allow_deny.popup);
- E_FREE_FUNC(zgc->allow_deny.popup, evas_object_del);
-}
-
-static void
-_gadget_drop_handler_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- E_Gadget_Config *zgc = data;
-
- if (zgc->drop_handlers)//may be calling during object_free
- eina_hash_del_by_key(zgc->drop_handlers, &obj);
-}
-
-static void
-_gadget_object_free(E_Object *eobj)
-{
- E_Gadget_Config *zgc;
- Evas_Object *g;
-
- g = e_object_data_get(eobj);
- zgc = evas_object_data_get(g, "__e_gadget");
- evas_object_smart_callback_call(zgc->site->layout, "gadget_destroyed", zgc->gadget);
- evas_object_event_callback_del_full(zgc->gadget, EVAS_CALLBACK_DEL, _gadget_del, zgc);
- if (zgc->display_del || (zgc->gadget == zgc->display))
- zgc->display = NULL;
- else
- {
- evas_object_event_callback_del_full(zgc->display, EVAS_CALLBACK_DEL, _gadget_del, zgc);
- E_FREE_FUNC(zgc->display, evas_object_del);
- }
- zgc->gadget = NULL;
-
- if (zgc->drop_handlers)
- {
- Evas_Object **drop_object;
- Eina_Iterator *it = eina_hash_iterator_key_new(zgc->drop_handlers);
-
- EINA_ITERATOR_FOREACH(it, drop_object)
- {
- evas_object_event_callback_del(*drop_object, EVAS_CALLBACK_MOVE, _gadget_drop_handler_moveresize);
- evas_object_event_callback_del(*drop_object, EVAS_CALLBACK_RESIZE, _gadget_drop_handler_moveresize);
- evas_object_event_callback_del(*drop_object, EVAS_CALLBACK_DEL, _gadget_drop_handler_del);
- }
- eina_iterator_free(it);
- }
-
- E_FREE_FUNC(zgc->drop_handlers, eina_hash_free);
- E_FREE_FUNC(zgc->gadget, evas_object_del);
- E_FREE_FUNC(zgc->cfg_object, evas_object_del);
- E_FREE_FUNC(zgc->style.obj, evas_object_del);
- _gadget_util_allow_deny_cleanup(zgc);
- E_FREE(zgc->e_obj_inherit);
- zgc->configure = NULL;
- zgc->display_del = zgc->moving = zgc->resizing = 0;
- if (zgc->id == -1) _gadget_free(zgc);
-}
-
-static void
-_gadget_remove(E_Gadget_Config *zgc)
-{
- int id = zgc->id;
- evas_object_smart_callback_call(zgc->site->layout, "gadget_removed", zgc->gadget);
- zgc->site->gadget_list = eina_inlist_remove(zgc->site->gadget_list, EINA_INLIST_GET(zgc));
- zgc->site->gadgets = eina_list_remove(zgc->site->gadgets, zgc);
- if (id >= 0)
- {
- _gadget_free(zgc);
- e_config_save_queue();
- }
- else
- evas_object_del(zgc->display);
-}
-
-static void
-_gadget_wizard_end(void *data, int id)
-{
- E_Gadget_Config *zgc = data;
-
- zgc->id = id;
- evas_object_smart_callback_call(zgc->site->layout, "gadget_site_unlocked", NULL);
- e_comp_ungrab_input(1, 1);
- if (id > 0)
- {
- _gadget_object_finalize(zgc);
- added = 0;
- }
- else
- _gadget_remove(zgc);
-}
-
-static void
-_gadget_wizard_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- E_Gadget_Config *zgc = data;
-
- if (zgc->cfg_object == obj) zgc->cfg_object = NULL;
- if (desktop_editor) evas_object_show(desktop_editor);
-}
-
-static void
-_gadget_object_hints(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- E_Gadget_Config *zgc = data;
- _site_recalc_job(zgc->site);
-}
-
-static Eina_Bool
-_gadget_object_create(E_Gadget_Config *zgc)
-{
- E_Gadget_Type *t = NULL;
- E_Gadget_External_Type *te = NULL;
- Evas_Object *g;
-
- if (zgc->external.domain)
- {
- te = _gadget_external_type_get(zgc->external.domain, zgc->external.type);
- if (!te) return EINA_TRUE; //can't create yet
- }
- else
- {
- t = eina_hash_find(gadget_types, zgc->type);
- if (!t) return EINA_TRUE; //can't create yet
- }
-
- if (!zgc->id)
- {
- if ((t && t->wizard) || (te && te->wizard))
- {
- if (t)
- zgc->cfg_object = t->wizard(_gadget_wizard_end, zgc, zgc->site->layout);
- else
- zgc->cfg_object = te->wizard(_gadget_wizard_end, zgc, zgc->external.type, zgc->site->layout);
- if (!zgc->cfg_object)
- {
- added = 1;
- if (desktop_editor) evas_object_show(desktop_editor);
- return EINA_FALSE;
- }
- e_comp_grab_input(1, 1);
- evas_object_event_callback_add(zgc->cfg_object, EVAS_CALLBACK_DEL, _gadget_wizard_del, zgc);
- _desktop_rect_obj_add(zgc->cfg_object);
- evas_object_smart_callback_call(zgc->site->layout, "gadget_site_popup", zgc->cfg_object);
- evas_object_smart_callback_call(zgc->site->layout, "gadget_site_locked", NULL);
- return EINA_TRUE;
- }
- }
- if (desktop_editor) evas_object_show(desktop_editor);
- if ((zgc->zone >= 0) && (!e_comp_zone_number_get(zgc->zone))) return EINA_FALSE;
- /* if id is < 0, gadget creates dummy config for demo use
- * if id is 0, gadget creates new config and returns id
- * otherwise, config of `id` is applied to created object
- *
- * a gadget should return NULL for any demo instance where it
- * should not be shown
- */
- if (t)
- g = t->cb(zgc->site->layout, &zgc->id, zgc->site->orient);
- else
- g = te->cb(zgc->site->layout, zgc->external.type, &zgc->id, zgc->site->orient);
- if (zgc->id < 0)
- {
- if (!g) return EINA_FALSE;
- }
- EINA_SAFETY_ON_NULL_RETURN_VAL(g, EINA_FALSE);
- added = 1;
-
- zgc->e_obj_inherit = E_OBJECT_ALLOC(E_Object, E_GADGET_TYPE, _gadget_object_free);
- e_object_data_set(zgc->e_obj_inherit, g);
- zgc->gadget = zgc->display = g;
- evas_object_event_callback_add(g, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _gadget_object_hints, zgc);
- evas_object_smart_callback_add(g, "gadget_popup", _gadget_popup, zgc);
- evas_object_data_set(g, "__e_gadget", zgc);
- if (zgc->site->style_cb)
- zgc->site->style_cb(zgc->site->layout, zgc->style.name, g);
-
- if (!zgc->site->orient)
- evas_object_smart_need_recalculate_set(zgc->site->layout, 1);
- evas_object_event_callback_priority_add(g, EVAS_CALLBACK_DEL, EVAS_CALLBACK_PRIORITY_AFTER, _gadget_del, zgc);
- _gadget_reparent(zgc->site, zgc);
- if (elm_object_widget_check(zgc->gadget))
- elm_object_tree_focus_allow_set(zgc->gadget, 0);
- evas_object_raise(zgc->site->events);
-
- evas_object_smart_callback_call(zgc->site->layout, "gadget_created", g);
- evas_object_show(zgc->display);
- if (zgc->site->editor) _desktop_rect_obj_add(zgc->display);
- return EINA_TRUE;
-}
-
-static void
-_gadget_object_finalize(E_Gadget_Config *zgc)
-{
- zgc->moving = 0;
- if (_gadget_object_create(zgc))
- {
- if (!zgc->display) return;
- evas_object_smart_callback_call(zgc->site->layout, "gadget_added", zgc->gadget);
- e_config_save_queue();
- return;
- }
- zgc->site->gadgets = eina_list_remove(zgc->site->gadgets, zgc);
- zgc->site->gadget_list = eina_inlist_remove(zgc->site->gadget_list, EINA_INLIST_GET(zgc));
- eina_stringshare_del(zgc->type);
- eina_stringshare_del(zgc->external.type);
- eina_stringshare_del(zgc->external.domain);
- free(zgc);
-}
-
-static void
-_site_gadget_aspect(E_Gadget_Config *zgc, Evas_Coord *ww, Evas_Coord *hh, int ax, int ay, Evas_Aspect_Control aspect)
-{
- if (aspect && ax && ay)
- {
- switch (aspect)
- {
- case EVAS_ASPECT_CONTROL_HORIZONTAL:
- *hh = (*ww * (double)ay / ax) + 0.99999999;
- break;
- case EVAS_ASPECT_CONTROL_VERTICAL:
- *ww = (*hh * (double)ax / ay) + 0.99999999;
- break;
- default:
- if (IS_HORIZ(zgc->site->orient))
- *ww = (*hh * (double)ax / ay) + 0.99999999;
- else if (IS_VERT(zgc->site->orient))
- *hh = (*ww * (double)ay / ax) + 0.99999999;
- else if (aspect)
- {
- double ar = ax / (double) ay;
-
- if (ax == ay)
- {
- if (*ww > *hh)
- *hh = *ww;
- else
- *ww = *hh;
- }
- else if (ar > 1.0)
- *hh = (*ww * (double)ay / ax) + 0.99999999;
- else
- *ww = (*hh * (double)ax / ay) + 0.99999999;
- }
- }
- }
-}
-
-static Eina_Bool
-_site_gadget_resize(Evas_Object *g, int w, int h, Evas_Coord *ww, Evas_Coord *hh, Evas_Coord *ow, Evas_Coord *oh)
-{
- Evas_Coord mnw, mnh, mxw, mxh;
- E_Gadget_Config *zgc;
- Evas_Aspect_Control aspect;
- int ax, ay;
- double ex, ey;
- Eina_Bool ret = EINA_FALSE;
-
- zgc = evas_object_data_get(g, "__e_gadget");
- w -= zgc->style.minw;
- h -= zgc->style.minh;
-
- evas_object_size_hint_min_get(g, &mnw, &mnh);
- evas_object_size_hint_max_get(g, &mxw, &mxh);
- evas_object_size_hint_aspect_get(g, &aspect, &ax, &ay);
- evas_object_size_hint_weight_get(g, &ex, &ey);
-
- if (IS_HORIZ(zgc->site->orient))
- {
- *ww = mnw, *hh = h;
- if (!(*ww)) *ww = *hh;
- if (dblequal(ex, EVAS_HINT_EXPAND) && (!aspect)) ret = EINA_TRUE;
- }
- else if (IS_VERT(zgc->site->orient))
- {
- *hh = mnh, *ww = w;
- if (!(*hh)) *hh = *ww;
- if (dblequal(ey, EVAS_HINT_EXPAND) && (!aspect)) ret = EINA_TRUE;
- }
- else
- {
- *ww = mnw, *hh = mnh;
- if ((!(*ww)) || ((*ww) < w)) *ww = w;
- if ((!(*hh)) || ((*hh) < h)) *hh = h;
- }
- _site_gadget_aspect(zgc, ww, hh, ax, ay, aspect);
- *ww += zgc->style.minw;
- *hh += zgc->style.minh;
- *ow = *ww, *oh = *hh;
- if ((!ax) && (!ay))
- {
- if ((mxw >= 0) && (mxw < *ow)) *ow = mxw;
- if ((mxh >= 0) && (mxh < *oh)) *oh = mxh;
- }
- if (!zgc->site->orient)
- {
- if ((w < (*ow)) || (h < (*oh)))
- {
- if (evas_smart_objects_calculating_get(e_comp->evas))
- _site_recalc_job(zgc->site);
- else
- evas_object_smart_need_recalculate_set(zgc->site->layout, 1);
- }
- }
- //fprintf(stderr, "%s: %dx%d\n", zgc->type, *ow, *oh);
- evas_object_resize(zgc->display, *ow, *oh);
- return ret;
-}
-
-static void
-_site_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- int x, y, w, h;
- E_Gadget_Site *zgs = data;
-
- evas_object_geometry_get(obj, &x, &y, &w, &h);
- evas_object_geometry_set(zgs->events, x, y, w, h);
- evas_object_raise(zgs->events);
- if (!zgs->orient)
- evas_object_smart_need_recalculate_set(zgs->layout, 1);
-}
-
-static void
-_site_layout_orient(Evas_Object *o, E_Gadget_Site *zgs)
-{
- Evas_Coord x, y, w, h, xx, yy;
- Eina_List *l;
- double ax, ay;
- E_Gadget_Config *zgc;
- int mw, mh, sw, sh, rw, rh, bw, bh, prev_w = 0, prev_h = 0;
- int groups = 0, avg;
- Eina_Bool prev_ex = 0, after = 0;
- struct Size
- {
- Evas_Coord_Size size;
- Evas_Coord_Size clipped;
- Evas_Coord_Size before;
- Evas_Coord_Size after;
- Eina_Bool expand;
- Evas_Object *obj;
- } *size, *psize = NULL;
- Eina_List *expand = NULL, *gadgets = NULL;
- Evas_Coord_Size parent_size;
-
- evas_object_geometry_get(o, &x, &y, &w, &h);
- if ((!w) && (!h)) return;
- parent_size.w = parent_size.h = -1;
- evas_object_smart_callback_call(elm_object_parent_widget_get(zgs->layout), "gadget_site_parent_size_request", &parent_size);
- if ((parent_size.w < 0) || (parent_size.h < 0))
- evas_object_geometry_get(elm_object_parent_widget_get(zgs->layout), NULL, NULL, &bw, &bh);
- else
- bw = parent_size.w, bh = parent_size.h;
- rw = bw, rh = bh;
- evas_object_size_hint_min_get(o, &mw, &mh);
- evas_object_size_hint_min_get(zgs->layout, &sw, &sh);
- evas_object_geometry_set(zgs->events, x, y, w, h);
-
- evas_object_box_align_get(o, &ax, &ay);
-
- xx = x;
- yy = y;
-
- EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
- {
- int ww, hh, ow, oh;
- Eina_Bool ex;
-
- if (!zgc->display) continue;
- ex = _site_gadget_resize(zgc->gadget, w, h, &ww, &hh, &ow, &oh);
- if (ex && prev_ex)
- {
- /* multiple spacers */
- evas_object_resize(zgc->display, 0, 0);
- continue;
- }
- size = E_NEW(struct Size, 1);
- size->size.w = ww;
- size->size.h = hh;
- size->clipped.w = ow;
- size->clipped.h = oh;
- size->expand = ex;
- if (ex)
- {
- if (psize)
- {
- psize->after.w = prev_w, psize->after.h = prev_h;
- groups++;
- }
- psize = size;
- size->before.w = prev_w;
- size->before.h = prev_h;
- prev_w = prev_h = 0;
- }
- size->obj = zgc->display;
- prev_w += ow;
- prev_h += oh;
- prev_ex = ex;
- gadgets = eina_list_append(gadgets, size);
- if (ex)
- {
- expand = eina_list_append(expand, size);
- continue;
- }
- if (IS_HORIZ(zgs->orient))
- rw = MAX(rw - ow, 0);
- else if (IS_VERT(zgs->orient))
- rh = MAX(rh - oh, 0);
- }
- if (expand)
- {
- size = eina_list_last_data_get(expand);
- psize = eina_list_last_data_get(gadgets);
- if (size != psize)
- {
- if ((!size->after.w) && (!size->after.h))
- {
- size->after.w = prev_w, size->after.h = prev_h;
- groups++;
- }
- }
- if (!groups) groups++;
-
- size = eina_list_data_get(expand);
- if (IS_HORIZ(zgs->orient))
- {
- after = !size->before.w;
- avg = (bw - rw) / groups;
- }
- else
- {
- after = !size->before.h;
- avg = (bh - rh) / groups;
- }
- }
- EINA_LIST_FREE(expand, size)
- {
- if (IS_HORIZ(zgs->orient))
- {
- if (rw)
- {
- size->size.w = size->clipped.w = rw / eina_list_count(expand);
- if (eina_list_count(expand) > 1)
- {
- int gw;
- if (after)
- gw = size->after.w;
- else
- gw = size->before.w;
- if (gw > avg)
- size->size.w = size->clipped.w -= (gw - avg);
- else
- size->size.w = size->clipped.w += abs(gw - avg);
- size->size.w = size->clipped.w -= size->after.w / 2;
- size->size.w = size->clipped.w = MAX(size->size.w, 0);
- rw -= size->size.w;
- }
- }
- else
- size->size.w = size->clipped.w = 0;
- }
- else if (IS_VERT(zgs->orient))
- {
- if (rh)
- {
- size->size.h = size->clipped.h = rh / eina_list_count(expand);
- if (eina_list_count(expand) > 1)
- {
- int gh;
- if (after)
- gh = size->after.h;
- else
- gh = size->before.h;
- if (gh > avg)
- size->size.h = size->clipped.h -= (gh - avg);
- else
- size->size.h = size->clipped.h += abs(gh - avg);
- size->size.h = size->clipped.h -= size->after.h / 2;
- size->size.h = size->clipped.h = MAX(size->size.h, 0);
- rh -= size->size.h;
- }
- }
- else
- size->size.h = size->clipped.h = 0;
- }
- evas_object_resize(size->obj, size->clipped.w, size->clipped.h);
- }
-
- if (zgs->gravity % 2)//left/top
- {
- EINA_LIST_FREE(gadgets, size)
- {
- Evas_Coord gx = xx, gy = yy;
-
- if (IS_HORIZ(zgs->orient))
- gx += (Evas_Coord)(((double)(size->size.w - size->clipped.w)) * 0.5),
- gy += (h / 2) - (size->clipped.h / 2);
- else if (IS_VERT(zgs->orient))
- gy += (Evas_Coord)(((double)(size->size.h - size->clipped.h)) * 0.5),
- gx += (w / 2) - (size->clipped.w / 2);
- evas_object_move(size->obj, gx, gy);
- if (IS_HORIZ(zgs->orient))
- xx += size->clipped.w;
- else
- yy += size->clipped.h;
- free(size);
- }
- }
- else if (zgs->gravity)
- {
- if (IS_HORIZ(zgs->orient))
- xx += w;
- else
- yy += h;
-
- E_LIST_REVERSE_FREE(gadgets, size)
- {
- Evas_Coord gx = xx, gy = yy;
-
- if (IS_HORIZ(zgs->orient))
- gx -= (Evas_Coord)(((double)(size->size.w - size->clipped.w)) * 0.5) + size->clipped.w,
- gy += (h / 2) - (size->clipped.h / 2);
- else
- gy -= (Evas_Coord)(((double)(size->size.h - size->clipped.h)) * 0.5) + size->clipped.h,
- gx += (w / 2) - (size->clipped.w / 2);
- evas_object_move(size->obj, gx, gy);
- if (IS_HORIZ(zgs->orient))
- xx -= size->clipped.w;
- else
- yy -= size->clipped.h;
- free(size);
- }
- }
-
- if (IS_HORIZ(zgs->orient))
- zgs->cur_size = abs(xx - x);
- else if (IS_VERT(zgs->orient))
- zgs->cur_size = abs(yy - y);
-
- w = IS_HORIZ(zgs->orient) ? zgs->cur_size : w;
- h = IS_VERT(zgs->orient) ? zgs->cur_size : h;
- if ((w == mw) && (h == mh) && (sw == sh) && (sw == -1))
- {
- /* FIXME: https://phab.enlightenment.org/T4747 */
- evas_object_size_hint_min_set(o, -1, -1);
- }
- evas_object_size_hint_min_set(o, w, h);
-}
-
-static void
-_site_layout(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, void *data)
-{
- E_Gadget_Site *zgs = data;
- Evas_Coord x, y, w, h;//, px, py;
- Eina_List *l;
- double ax, ay;
- E_Gadget_Config *zgc;
-
- evas_object_geometry_get(o, &x, &y, &w, &h);
- evas_object_geometry_set(zgs->events, x, y, w, h);
-
- evas_object_box_align_get(o, &ax, &ay);
-
- if (zgs->orient)
- {
- _site_layout_orient(o, zgs);
- return;
- }
- if ((!w) || (!h)) return;
- EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
- {
- Evas_Coord gx = x, gy = y;
- int ww, hh, ow, oh;
- E_Zone *zone;
-
- if (!zgc->display) continue;
- if (zgc->moving)
- {
- if (zgs->layout != pointer_site) continue;
- _site_gadget_resize(zgc->gadget, w, h, &ww, &hh, &ow, &oh);
- }
- else
- {
- if (zgc->zone >= 0)
- {
- zone = e_comp_zone_number_get(zgc->zone);
- x = gx = zone->x;
- y = gy = zone->y;
- w = zone->w;
- h = zone->h;
- }
-
- _site_gadget_resize(zgc->gadget, w * zgc->w, h * zgc->h, &ww, &hh, &ow, &oh);
- if (zgc->x > -1.0)
- {
- gx = x + zgc->x * w;
- gx += (Evas_Coord)(((double)(ww - ow)) * 0.5 * -ax);
- }
- if (zgc->y > -1.0)
- {
- gy = y + zgc->y * h;
- gy += (Evas_Coord)(((double)(hh - oh)) * 0.5 * -ay);
- }
- }
- if (zgs->gravity)
- {
-#if 0//FIXME
- if (zgs->gravity % 2)//left/top
- {
- if (gx < px) gx = px;
- }
- else if ()
- {
- if (gx > px) gx = px;
- }
-
- if (zgs->gravity % 2)//left/top
- {
- if (gy < py) gy = py;
- }
- else
- {
- if (gy > py) gy = py;
- }
-#endif
- }
-
- evas_object_move(zgc->display, gx, gy);
-#if 0//FIXME
- if (zgs->gravity is horizontal or something)
- px = gx + (-ax * ow);
- else
- py = gy + (-ay * oh);
-#endif
- if (eina_list_count(zgs->gadgets) == 1)
- {
- int mw, mh, sw, sh;
-
- evas_object_size_hint_min_get(o, &mw, &mh);
- evas_object_size_hint_min_get(zgs->layout, &sw, &sh);
- if ((ow == mw) && (oh == mh) && (sw == sh) && (sw == -1))
- {
- /* FIXME: https://phab.enlightenment.org/T4747 */
- evas_object_size_hint_min_set(o, -1, -1);
- }
- evas_object_size_hint_min_set(o, ow, oh);
- }
- }
-}
-
-static Eina_Bool
-_gadget_mouse_resize(E_Gadget_Config *zgc, int t EINA_UNUSED, Ecore_Event_Mouse_Move *ev)
-{
- int x, y, w, h;//site geom
- int ox, oy, ow, oh;//gadget geom
- double gw, gh;
- int dx, dy;
- int ax, ay;
- Evas_Aspect_Control aspect;
-
- evas_object_geometry_get(zgc->display, &ox, &oy, &ow, &oh);
- evas_object_size_hint_aspect_get(zgc->gadget, &aspect, &ax, &ay);
- if (zgc->zone >= 0)
- {
- E_Zone *zone;
-
- zone = e_comp_zone_number_get(zgc->zone);
- x = zone->x, y = zone->y, w = zone->w, h = zone->h;
- }
- else
- evas_object_geometry_get(zgc->site->layout, &x, &y, &w, &h);
- /* restore screen-based geometry to canvas size */
- gw = zgc->w * w;
- gh = zgc->h * h;
-
- /* apply mouse movement to canvas size */
- dx = ev->x - zgc->down.x, dy = ev->y - zgc->down.y;
- if (zgc->resizing & E_GADGET_SITE_ANCHOR_LEFT)
- gw -= dx;
- else
- gw += dx;
- if (zgc->resizing & E_GADGET_SITE_ANCHOR_TOP)
- gh -= dy;
- else
- gh += dy;
-
- /* apply aspect based on mouse position change */
- dx = abs(ev->x - zgc->down.x);
- dy = abs(ev->y - zgc->down.y);
- if (dx > dy)
- {
- /* use horizontal motion if most of event is horizontal */
- int ww = lround(gw), hh = lround(gh);
- _site_gadget_aspect(zgc, &ww, &hh, ax, ay, EVAS_ASPECT_CONTROL_HORIZONTAL);
- gh = hh;
- }
- else if (dy > dx)
- {
- /* use vertical motion if most of event is vertical */
- int ww = lround(gw), hh = lround(gh);
- _site_gadget_aspect(zgc, &ww, &hh, ax, ay, EVAS_ASPECT_CONTROL_VERTICAL);
- gw = ww;
- }
- else if ((dx == dy) && (ax != ay))
- {
- /* use aspect values to calculate equal motion on both axes */
- int ww = lround(gw), hh = lround(gh);
- if (ax > ay)
- {
- _site_gadget_aspect(zgc, &ww, &hh, ax, ay, EVAS_ASPECT_CONTROL_VERTICAL);
- gw = ww;
- }
- else
- {
- _site_gadget_aspect(zgc, &ww, &hh, ax, ay, EVAS_ASPECT_CONTROL_HORIZONTAL);
- gh = hh;
- }
- }
-
- /* calculate new position based on resize amount */
- dx = ev->x - zgc->down.x, dy = ev->y - zgc->down.y;
- if (zgc->resizing & E_GADGET_SITE_ANCHOR_LEFT)
- {
- zgc->x = (((zgc->x + zgc->w) * (double)w) - gw) / (double)w;
- }
- if (zgc->resizing & E_GADGET_SITE_ANCHOR_TOP)
- {
- zgc->y = (((zgc->y + zgc->h) * (double)h) - gh) / (double)h;
- }
-
- zgc->w = gw / w;
- zgc->h = gh / h;
- zgc->down.x = ev->x;
- zgc->down.y = ev->y;
- evas_object_smart_need_recalculate_set(zgc->site->layout, 1);
- e_config_save_queue();
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-_gadget_util_add(E_Gadget_Site *zgs, const char *domain, const char *type, int id)
-{
- E_Gadget_Config *zgc;
-
- zgc = E_NEW(E_Gadget_Config, 1);
- zgc->id = id;
- if (domain)
- {
- zgc->external.domain = eina_stringshare_add(domain);
- zgc->external.type = eina_stringshare_add(type);
- }
- else
- zgc->type = eina_stringshare_add(type);
- zgc->x = zgc->y = -1;
- zgc->site = zgs;
- zgc->zone = -1;
- if (zgc->site->orient)
- zgc->w = zgc->h = -1;
- else
- {
- E_Zone *zone = e_zone_current_get();
- zgc->w = (96 * e_scale) / (double)zone->w;
- zgc->h = (96 * e_scale) / (double)zone->h;
- }
- zgc->site->gadgets = eina_list_append(zgc->site->gadgets, zgc);
- zgs->gadget_list = eina_inlist_append(zgs->gadget_list, EINA_INLIST_GET(zgc));
- _gadget_object_finalize(zgc);
-}
-
-static Eina_Bool
-_gadget_act_resize_end(E_Object *obj, const char *params EINA_UNUSED, E_Binding_Event_Mouse_Button *ev EINA_UNUSED)
-{
- E_Gadget_Config *zgc;
- Evas_Object *g;
-
- if (obj->type != E_GADGET_TYPE) return EINA_FALSE;
- g = e_object_data_get(obj);
- zgc = evas_object_data_get(g, "__e_gadget");
- zgc->resizing = 0;
-
- E_FREE_FUNC(zgc->site->move_handler, ecore_event_handler_del);
- evas_object_smart_need_recalculate_set(zgc->site->layout, 1);
- return EINA_TRUE;
-}
-
-static void
-_gadget_popups_clear(E_Gadget_Config *zgc)
-{
- Eina_List *l, *ll;
- Evas_Object *popup;
-
- EINA_LIST_FOREACH_SAFE(zgc->popups, l, ll, popup)
- evas_object_del(popup);
-}
-
-static Eina_Bool
-_gadget_act_move(E_Object *obj, const char *params EINA_UNUSED, E_Binding_Event_Mouse_Button *ev EINA_UNUSED)
-{
- E_Gadget_Config *zgc, *z;
- Evas_Object *g;
- int w, h;
-
- if (obj->type != E_GADGET_TYPE) return EINA_FALSE;
-
- g = e_object_data_get(obj);
- zgc = evas_object_data_get(g, "__e_gadget");
- zgc->moving = 1;
- _editor_pointer_site_init(zgc->site->orient, NULL, NULL, 1);
- e_gadget_site_owner_setup(pointer_site, zgc->site->anchor, NULL, NULL, NULL);
- ZGS_GET(pointer_site);
- if (zgc->external.domain)
- _gadget_util_add(zgs, zgc->external.domain, zgc->external.type, zgc->id);
- else
- _gadget_util_add(zgs, NULL, zgc->type, zgc->id);
- z = eina_list_data_get(zgs->gadgets);
- if (!z)
- {
- E_FREE_FUNC(pointer_site, evas_object_del);
- zgc->moving = 0;
- return EINA_TRUE;
- }
- _gadget_popups_clear(zgc);
- z->moving = 1;
- evas_object_pass_events_set(zgc->site->layout, 1);
- evas_object_geometry_get(g, NULL, NULL, &w, &h);
- evas_object_resize(pointer_site, w, h);
- eina_stringshare_refplace(&z->style.name, zgc->style.name);
- z->orig = zgc;
- return EINA_TRUE;
-}
-
-static Eina_Bool
-_gadget_act_resize(E_Object *obj, const char *params EINA_UNUSED, E_Binding_Event_Mouse_Button *ev)
-{
- E_Gadget_Config *zgc;
- Evas_Object *g;
- int x, y, w, h;
-
- if (obj->type != E_GADGET_TYPE) return EINA_FALSE;
-
- g = e_object_data_get(obj);
- zgc = evas_object_data_get(g, "__e_gadget");
- if (zgc->site->orient) return EINA_FALSE;
- _gadget_popups_clear(zgc);
- evas_object_geometry_get(g, &x, &y, &w, &h);
- if (ev->canvas.x < x + (w / 3))
- zgc->resizing = E_GADGET_SITE_ANCHOR_LEFT;
- else if (ev->canvas.x > x + (w * 2 / 3))
- zgc->resizing = E_GADGET_SITE_ANCHOR_RIGHT;
- if (ev->canvas.y < y + (h / 3))
- zgc->resizing |= E_GADGET_SITE_ANCHOR_TOP;
- else if (ev->canvas.y > y + (h * 2 / 3))
- zgc->resizing |= E_GADGET_SITE_ANCHOR_BOTTOM;
- if (!zgc->site->move_handler)
- zgc->site->move_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, (Ecore_Event_Handler_Cb)_gadget_mouse_resize, zgc);
- return EINA_TRUE;
-}
-
-static void
-_gadget_act_configure_object_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- E_Gadget_Config *zgc = data;
-
- zgc->cfg_object = NULL;
-}
-
-static void
-_gadget_configure(E_Gadget_Config *zgc)
-{
- if (!zgc->configure) return;
- if (zgc->cfg_object)
- {
- evas_object_raise(zgc->cfg_object);
- evas_object_show(zgc->cfg_object);
- return;
- }
- zgc->cfg_object = zgc->configure(zgc->gadget);
- if (!zgc->cfg_object) return;
- evas_object_event_callback_add(zgc->cfg_object, EVAS_CALLBACK_DEL, _gadget_act_configure_object_del, zgc);
- evas_object_smart_callback_call(zgc->display, "gadget_popup", zgc->cfg_object);
-}
-
-static void
-_gadget_menu_populate(E_Gadget_Config *zgc, E_Menu *m)
-{
- if (!zgc->populate) return;
- zgc->populate(zgc->gadget, m);
-}
-
-static Eina_Bool
-_gadget_act_configure(E_Object *obj, const char *params EINA_UNUSED, E_Binding_Event_Mouse_Button *ev EINA_UNUSED)
-{
- E_Gadget_Config *zgc;
- Evas_Object *g;
-
- if (obj->type != E_GADGET_TYPE) return EINA_FALSE;
-
- g = e_object_data_get(obj);
- zgc = evas_object_data_get(g, "__e_gadget");
- _gadget_configure(zgc);
- return EINA_TRUE;
-}
-
-static void
-_gadget_menu_remove(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- E_Gadget_Config *zgc = data;
-
- _gadget_remove(zgc);
-}
-
-static void
-_gadget_menu_configure(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- _gadget_configure(data);
-}
-
-static void
-_gadget_style_menu_item_del(void *mi)
-{
- eina_stringshare_del(e_object_data_get(mi));
-}
-
-static void
-_gadget_menu_style(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi)
-{
- E_Gadget_Config *zgc = data;
- Eina_Stringshare *style = e_object_data_get(E_OBJECT(mi));
-
- eina_stringshare_refplace(&zgc->style.name, style);
- if (zgc->site->style_cb)
- zgc->site->style_cb(zgc->site->layout, style, zgc->gadget);
-}
-
-static void
-_gadget_menu(Evas_Object *g, unsigned int timestamp)
-{
- E_Gadget_Config *zgc;
- E_Menu_Item *mi;
- E_Menu *subm;
- int x, y;
-
- zgc = evas_object_data_get(g, "__e_gadget");
- _gadget_popups_clear(zgc);
-
- zgc->menu = e_menu_new();
- e_menu_hold_mode_set(zgc->menu, EINA_FALSE);
- if (zgc->type)
- {
- char buf[1024];
-
- strncpy(buf, zgc->type, sizeof(buf) - 1);
- buf[0] = toupper(buf[0]);
- e_menu_title_set(zgc->menu, buf);
- }
- evas_object_smart_callback_call(g, "gadget_menu", zgc->menu);
- if (zgc->configure)
- {
- mi = e_menu_item_new(zgc->menu);
- e_menu_item_label_set(mi, _("Settings"));
- e_util_menu_item_theme_icon_set(mi, "configure");
- e_menu_item_callback_set(mi, _gadget_menu_configure, zgc);
- }
- if (zgc->menu->items)
- {
- mi = e_menu_item_new(zgc->menu);
- e_menu_item_separator_set(mi, 1);
- }
- subm = e_menu_new();
- e_menu_hold_mode_set(subm, EINA_FALSE);
- evas_object_smart_callback_call(zgc->site->layout, "gadget_site_style_menu", subm);
- if (e_object_data_get(E_OBJECT(subm)))
- {
- Eina_List *styles = e_object_data_get(E_OBJECT(subm));
- Eina_Stringshare *style;
-
- mi = e_menu_item_new(zgc->menu);
- e_menu_item_label_set(mi, _("Look"));
- e_util_menu_item_theme_icon_set(mi, "preferences-look");
- e_menu_item_submenu_set(mi, subm);
- e_object_unref(E_OBJECT(subm));
-
- EINA_LIST_FREE(styles, style)
- {
- char buf[1024];
-
- if (eina_streq(style, "base"))
- {
- eina_stringshare_del(style);
- continue;
- }
- mi = e_menu_item_new(subm);
- strncpy(buf, style, sizeof(buf) - 1);
- buf[0] = toupper(buf[0]);
- e_menu_item_label_set(mi, buf);
- snprintf(buf, sizeof(buf), "enlightenment/%s", style);
- e_util_menu_item_theme_icon_set(mi, buf);
- e_menu_item_radio_group_set(mi, 1);
- e_menu_item_radio_set(mi, 1);
- e_menu_item_toggle_set(mi, style == zgc->style.name);
- e_menu_item_disabled_set(mi, mi->toggle);
- e_object_data_set(E_OBJECT(mi), style);
- E_OBJECT_DEL_SET(mi, _gadget_style_menu_item_del);
- e_menu_item_callback_set(mi, _gadget_menu_style, zgc);
- }
- }
- else
- e_object_del(E_OBJECT(subm));
-
-
- mi = e_menu_item_new(zgc->menu);
- evas_object_smart_callback_call(zgc->site->layout, "gadget_site_owner_menu", mi);
- if (mi->label)
- {
- mi = e_menu_item_new(zgc->menu);
- e_menu_item_separator_set(mi, 1);
- }
- else
- e_object_del(E_OBJECT(mi));
-
- mi = e_menu_item_new(zgc->menu);
- e_menu_item_label_set(mi, _("Delete"));
- e_util_menu_item_theme_icon_set(mi, "list-remove");
- e_menu_item_callback_set(mi, _gadget_menu_remove, zgc);
-
- evas_pointer_canvas_xy_get(e_comp->evas, &x, &y);
- e_menu_activate_mouse(zgc->menu,
- e_zone_current_get(),
- x, y, 1, 1,
- E_MENU_POP_DIRECTION_AUTO, timestamp);
- _desktop_rect_obj_add(zgc->menu->comp_object);
- evas_object_smart_callback_call(zgc->site->layout, "gadget_site_popup", zgc->menu->comp_object);
-}
-
-static void
-_gadget_menu_cancel(Evas_Object *g, unsigned int timestamp EINA_UNUSED)
-{
- E_Gadget_Config *zgc;
-
- zgc = evas_object_data_get(g, "__e_gadget");
- if (zgc->menu)
- {
- e_menu_deactivate(zgc->menu);
- e_object_del(E_OBJECT(zgc->menu));
- zgc->menu = NULL;
- }
-}
-
-static Eina_Bool
-_site_longpress_menu(void *data)
-{
- E_Gadget_Site *zgs = data;
- E_Gadget_Config *zgc;
- Evas_Object *g = NULL;
-
- zgs->down_timer = NULL;
- zgs->longpressed = EINA_TRUE;
- zgc = _gadget_at_xy(zgs, zgs->down_1_x, zgs->down_1_y, NULL);
- if (zgc) g = zgc->gadget;
- if (zgs->context_cb) zgs->context_cb(zgs->layout, g, ecore_loop_time_get() * 1000);
- return EINA_FALSE;
-}
-
-static Eina_Bool
-_site_mouse_up_handle(E_Gadget_Site *zgs, int t EINA_UNUSED, Ecore_Event_Mouse_Button *ev)
-{
- if (e_bindings_mouse_up_ecore_event_handle(E_BINDING_CONTEXT_ANY, zgs->action->e_obj_inherit, ev))
- {
- evas_object_pointer_mode_set(zgs->events, EVAS_OBJECT_POINTER_MODE_NOGRAB);
- zgs->action = NULL;
- E_FREE_FUNC(zgs->mouse_up_handler, ecore_event_handler_del);
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-_site_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- E_Gadget_Site *zgs = data;
- E_Gadget_Config *zgc;
- Evas_Event_Mouse_Down *ev = event_info;
- E_Action *act;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- zgc = _gadget_at_xy(zgs, ev->output.x, ev->output.y, NULL);
- if (zgc)
- {
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- act = e_bindings_mouse_down_evas_event_handle(E_BINDING_CONTEXT_ANY, zgc->e_obj_inherit, event_info);
- if (!act) ev->event_flags &= ~EVAS_EVENT_FLAG_ON_HOLD;
- else if (act->func.end_mouse)
- {
- int x, y;
-
- evas_object_pointer_mode_set(obj, EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN);
- zgs->action = zgc;
- if (!zgs->mouse_up_handler)
- zgs->mouse_up_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, (Ecore_Event_Handler_Cb)_site_mouse_up_handle, zgs);
-
- evas_object_geometry_get(zgc->display, &x, &y, NULL, NULL);
- zgc->offset.x = ev->canvas.x - x;
- zgc->offset.y = ev->canvas.y - y;
- zgc->down.x = ev->canvas.x;
- zgc->down.y = ev->canvas.y;
- }
- if (act) return;
- }
- if (ev->button == 1)
- {
- zgs->longpressed = EINA_FALSE;
- zgs->dragged = EINA_FALSE;
- zgs->down_1_x = ev->canvas.x;
- zgs->down_1_y = ev->canvas.y;
- E_FREE_FUNC(zgs->down_timer, ecore_timer_del);
- zgs->down_timer = ecore_timer_add(1.0, _site_longpress_menu, zgs);
- }
- else if (ev->button == 3)
- {
- zgs->down_3_x = ev->canvas.x;
- zgs->down_3_y = ev->canvas.y;
- }
-}
-
-static void
-_site_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- E_Gadget_Site *zgs = data;
- Evas_Event_Mouse_Up *ev = event_info;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (ev->button == 1)
- {
- E_FREE_FUNC(zgs->down_timer, ecore_timer_del);
- if ((zgs->longpressed) || (zgs->dragged))
- {
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- zgs->longpressed = EINA_FALSE;
- zgs->dragged = EINA_FALSE;
- }
- }
- else if (ev->button == 3)
- {
- if (!is_dragged(ev->canvas.x - zgs->down_3_x,
- ev->canvas.y - zgs->down_3_y))
- {
- E_Gadget_Config *zgc;
- Evas_Object *g = NULL;
-
- zgc = _gadget_at_xy(zgs, zgs->down_3_x, zgs->down_3_y, NULL);
- if (zgc) g = zgc->gadget;
- if (zgs->context_cb) zgs->context_cb(zgs->layout, g, ev->timestamp);
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- }
- }
-}
-
-static void
-_site_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- E_Gadget_Site *zgs = data;
- Evas_Event_Mouse_Move *ev = event_info;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
-
- if ((zgs->down_timer) || (zgs->longpressed))
- {
- if (is_dragged(ev->cur.canvas.x - zgs->down_1_x,
- ev->cur.canvas.y - zgs->down_1_y))
- {
- if (zgs->down_timer)
- {
- E_FREE_FUNC(zgs->down_timer, ecore_timer_del);
- }
- if (!zgs->dragged)
- {
- E_Gadget_Config *zgc;
- Evas_Object *g = NULL;
-
- zgs->dragged = EINA_TRUE;
- zgc = _gadget_at_xy(zgs, zgs->down_1_x, zgs->down_1_y, NULL);
- if (zgc) g = zgc->gadget;
- if (zgs->context_cancel_cb) zgs->context_cancel_cb(zgs->layout, g, ev->timestamp);
- }
- }
- }
-}
-
-static void
-_site_drop(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- E_Gadget_Site *zgs = data, *drop;
- Eina_List *l;
- E_Gadget_Config *zgc, *dzgc;
- int mx, my;
- int x, y, w, h;
-
- drop = evas_object_data_get(event_info, "__e_gadget_site");
- evas_pointer_canvas_xy_get(e_comp->evas, &mx, &my);
- evas_object_geometry_get(zgs->layout, &x, &y, &w, &h);
- if (!E_INSIDE(mx, my, x, y, w, h)) return;
-
- EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
- {
- if (!zgc->display) continue;
-
- evas_object_geometry_get(zgc->display, &x, &y, &w, &h);
- if (E_INSIDE(mx, my, x, y, w, h)) break;
- }
- if (zgc)
- {
- Eina_Bool pre = EINA_FALSE;
- if (IS_HORIZ(zgs->orient))
- {
- if (mx <= x + (w / 2))
- pre = EINA_TRUE;
- }
- else if (IS_VERT(zgs->orient))
- {
- if (my <= y + (h / 2))
- pre = EINA_TRUE;
- }
- else {} //FIXME
- if (zgs->orient)
- {
- Eina_List *ll;
-
- if (pre)
- EINA_LIST_REVERSE_FOREACH(drop->gadgets, ll, dzgc)
- {
- evas_object_smart_callback_call(zgs->layout, "gadget_moved", dzgc->gadget);
- if (dzgc->id == -1) dzgc->id = 0;
- evas_object_del(dzgc->gadget);
- zgs->gadget_list = eina_inlist_prepend_relative(zgs->gadget_list,
- EINA_INLIST_GET(dzgc), EINA_INLIST_GET(zgc));
- zgs->gadgets = eina_list_prepend_relative_list(zgs->gadgets, dzgc, l);
- dzgc->site = zgs;
- dzgc->zone = -1;
- _gadget_object_finalize(dzgc);
- }
- else
- EINA_LIST_REVERSE_FOREACH(drop->gadgets, ll, dzgc)
- {
- evas_object_smart_callback_call(zgs->layout, "gadget_moved", dzgc->gadget);
- if (dzgc->id == -1) dzgc->id = 0;
- evas_object_del(dzgc->gadget);
- zgs->gadget_list = eina_inlist_append_relative(zgs->gadget_list,
- EINA_INLIST_GET(dzgc), EINA_INLIST_GET(zgc));
- zgs->gadgets = eina_list_append_relative_list(zgs->gadgets, dzgc, l);
- dzgc->site = zgs;
- dzgc->zone = -1;
- _gadget_object_finalize(dzgc);
- }
- }
- else
- {
- int dx, dy, dw, dh, gx, gy, gw, gh;
-
- /* FIXME: this should place _(around)_ the gadget that got dropped on */
- evas_object_geometry_get(drop->layout, &dx, &dy, &dw, &dh);
- evas_object_geometry_get(zgs->layout, &x, &y, &w, &h);
- EINA_LIST_FOREACH(drop->gadgets, l, dzgc)
- {
- E_Zone *zone;
- /* calculate positioning offsets and normalize based on drop point */
- evas_object_geometry_get(dzgc->display, &gx, &gy, &gw, &gh);
- evas_object_smart_callback_call(zgs->layout, "gadget_moved", dzgc->display);
- if ((w == e_comp->w) && (h == e_comp->h))
- {
- zone = e_comp_object_util_zone_get(dzgc->display);
- dzgc->zone = zone->num;
- x = zone->x, y = zone->y, w = zone->w, h = zone->h;
- }
- else
- dzgc->zone = -1;
- if (dzgc->id == -1) dzgc->id = 0;
- evas_object_del(dzgc->gadget);
- zgs->gadget_list = eina_inlist_append(zgs->gadget_list,
- EINA_INLIST_GET(dzgc));
- zgs->gadgets = eina_list_append(zgs->gadgets, dzgc);
- dzgc->x = ((gx - dx) / (double)dw) + ((mx - x) / (double)w);
- dzgc->y = ((gy - dy) / (double)dh) + ((my - y) / (double)h);
- dzgc->w = gw / (double)w;
- dzgc->h = gh / (double)h;
- dzgc->site = zgs;
- _gadget_object_finalize(dzgc);
- }
- }
- }
- else
- {
- if (zgs->orient)
- {
- if (mx >= x) //right of all exiting gadgets
- {
- EINA_LIST_FOREACH(drop->gadgets, l, dzgc)
- {
- evas_object_smart_callback_call(zgs->layout, "gadget_moved", dzgc->gadget);
- if (dzgc->id == -1) dzgc->id = 0;
- evas_object_del(dzgc->gadget);
- zgs->gadget_list = eina_inlist_append(zgs->gadget_list,
- EINA_INLIST_GET(dzgc));
- zgs->gadgets = eina_list_append(zgs->gadgets, dzgc);
- dzgc->site = zgs;
- dzgc->zone = -1;
- _gadget_object_finalize(dzgc);
- }
- }
- else
- {
- EINA_LIST_REVERSE_FOREACH(drop->gadgets, l, dzgc)
- {
- evas_object_smart_callback_call(zgs->layout, "gadget_moved", dzgc->gadget);
- evas_object_del(dzgc->gadget);
- zgs->gadget_list = eina_inlist_prepend(zgs->gadget_list,
- EINA_INLIST_GET(dzgc));
- zgs->gadgets = eina_list_prepend(zgs->gadgets, dzgc);
- dzgc->site = zgs;
- if (dzgc->id == -1) dzgc->id = 0;
- dzgc->zone = -1;
- _gadget_object_finalize(dzgc);
- }
- }
- }
- else
- {
- int dx, dy, dw, dh, gx, gy, gw, gh;
-
- evas_object_geometry_get(drop->layout, &dx, &dy, &dw, &dh);
- evas_object_geometry_get(zgs->layout, &x, &y, &w, &h);
- EINA_LIST_FOREACH(drop->gadgets, l, dzgc)
- {
- E_Zone *zone;
- /* calculate positioning offsets and normalize based on drop point */
- evas_object_geometry_get(dzgc->display, &gx, &gy, &gw, &gh);
- evas_object_smart_callback_call(zgs->layout, "gadget_moved", dzgc->display);
- if ((w == e_comp->w) && (h == e_comp->h))
- {
- zone = e_comp_object_util_zone_get(dzgc->display);
- dzgc->zone = zone->num;
- x = zone->x, y = zone->y, w = zone->w, h = zone->h;
- }
- else
- dzgc->zone = -1;
- if (dzgc->id == -1) dzgc->id = 0;
- evas_object_del(dzgc->gadget);
- zgs->gadget_list = eina_inlist_append(zgs->gadget_list,
- EINA_INLIST_GET(dzgc));
- zgs->gadgets = eina_list_append(zgs->gadgets, dzgc);
- dzgc->x = ((gx - dx) / (double)dw) + ((mx - x - (mx - gx)) / (double)w);
- dzgc->y = ((gy - dy) / (double)dh) + ((my - y - (my - gy)) / (double)h);
- dzgc->w = gw / (double)w;
- dzgc->h = gh / (double)h;
- dzgc->site = zgs;
- _gadget_object_finalize(dzgc);
- }
- }
- }
- drop->gadget_list = NULL;
- drop->gadgets = eina_list_free(drop->gadgets);
- evas_object_smart_need_recalculate_set(zgs->layout, 1);
- e_config_save_queue();
-}
-
-static void
-_site_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- E_Gadget_Site *zgs = data;
-
- if (!evas_object_smart_parent_get(zgs->layout))
- {
- Eina_List *l;
- E_Gadget_Config *zgc;
- int layer;
-
- layer = evas_object_layer_get(obj);
- if (!zgs->orient)
- {
- EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
- if (zgc->display)
- evas_object_layer_set(zgc->display, layer);
- }
- evas_object_layer_set(zgs->events, layer);
- }
- evas_object_raise(zgs->events);
-}
-
-static void
-_site_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- E_Gadget_Site *zgs = data;
- E_Gadget_Config *zgc;
- Eina_List *l, *ll;
-
- E_FREE_FUNC(zgs->events, evas_object_del);
- E_FREE_FUNC(zgs->move_handler, ecore_event_handler_del);
- E_FREE_FUNC(zgs->mouse_up_handler, ecore_event_handler_del);
- E_FREE_FUNC(zgs->calc_job, ecore_job_del);
- EINA_LIST_FOREACH_SAFE(zgs->gadgets, l, ll, zgc)
- evas_object_del(zgc->display);
- zgs->layout = NULL;
- zgs->cur_size = 0;
- zgs->action = NULL;
- zgs->style_cb = NULL;
- if (zgs->name) return;
- eina_stringshare_del(zgs->name);
- E_FREE_FUNC(zgs->down_timer, ecore_timer_del);
- free(zgs);
-}
-
-static void
-_site_style(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- E_Gadget_Site *zgs = data;
- E_Gadget_Config *zgc;
- Eina_List *l;
-
- if (!zgs->style_cb) return;
- EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
- if (zgc->display)
- zgc->site->style_cb(zgc->site->layout, zgc->style.name, zgc->gadget);
-}
-
-static void
-_site_visibility(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- E_Gadget_Site *zgs = data;
- E_Gadget_Config *zgc;
- Eina_List *l;
- Eina_Bool vis = evas_object_visible_get(obj);
-
- EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
- if (zgc->display)
- {
- if (vis) evas_object_show(zgc->display);
- else evas_object_hide(zgc->display);
- }
-}
-
-static void
-_site_create(E_Gadget_Site *zgs)
-{
- zgs->layout = elm_box_add(e_comp->elm);
- evas_object_name_set(zgs->layout, zgs->name);
- elm_box_horizontal_set(zgs->layout, zgs->orient == E_GADGET_SITE_ORIENT_HORIZONTAL);
- _gravity_apply(zgs, zgs->gravity);
- if (!zgs->orient)
- {
- /* add dummy content to allow recalc to work */
- elm_box_pack_end(zgs->layout, elm_box_add(zgs->layout));
- }
- elm_box_layout_set(zgs->layout, _site_layout, zgs, NULL);
- evas_object_event_callback_add(zgs->layout, EVAS_CALLBACK_DEL, _site_del, zgs);
- evas_object_event_callback_add(zgs->layout, EVAS_CALLBACK_RESTACK, _site_restack, zgs);
-
- zgs->events = evas_object_rectangle_add(e_comp->evas);
- evas_object_name_set(zgs->events, "zgs->events");
- evas_object_event_callback_add(zgs->layout, EVAS_CALLBACK_MOVE, _site_move, zgs);
- evas_object_smart_callback_add(zgs->layout, "gadget_site_dropped", _site_drop, zgs);
- evas_object_smart_callback_add(zgs->layout, "gadget_site_style", _site_style, zgs);
- evas_object_pointer_mode_set(zgs->events, EVAS_OBJECT_POINTER_MODE_NOGRAB);
- evas_object_color_set(zgs->events, 0, 0, 0, 0);
- evas_object_repeat_events_set(zgs->events, 1);
- evas_object_show(zgs->events);
- evas_object_event_callback_add(zgs->events, EVAS_CALLBACK_MOUSE_DOWN, _site_mouse_down, zgs);
- evas_object_event_callback_add(zgs->events, EVAS_CALLBACK_MOUSE_UP, _site_mouse_up, zgs);
- evas_object_event_callback_add(zgs->events, EVAS_CALLBACK_MOUSE_MOVE, _site_mouse_move, zgs);
- if (!zgs->orient)
- {
- evas_object_event_callback_add(zgs->layout, EVAS_CALLBACK_SHOW, _site_visibility, zgs);
- evas_object_event_callback_add(zgs->layout, EVAS_CALLBACK_HIDE, _site_visibility, zgs);
- }
-
- evas_object_data_set(zgs->layout, "__e_gadget_site", zgs);
- E_LIST_FOREACH(zgs->gadgets, _gadget_object_create);
- evas_object_layer_set(zgs->events, evas_object_layer_get(zgs->layout));
- evas_object_raise(zgs->events);
-}
-
-static void
-_site_auto_add_comp_object_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- E_Gadget_Site *zgs = data;
- Eina_List *l, *ll;
- E_Gadget_Config *zgc;
-
- /* prune unconfigured gadgets */
- EINA_LIST_FOREACH_SAFE(zgs->gadgets, l, ll, zgc)
- if (zgc->id <= 0) _gadget_remove(zgc);
- e_config_save_queue();
- evas_object_del(zgs->layout);
-}
-
-static void
-_site_auto_add(E_Gadget_Site *zgs, Evas_Object *comp_object)
-{
- int x, y, w, h;
-
- _site_create(zgs);
- evas_object_event_callback_add(comp_object, EVAS_CALLBACK_DEL, _site_auto_add_comp_object_del, zgs);
- evas_object_layer_set(zgs->layout, evas_object_layer_get(comp_object));
- evas_object_stack_above(zgs->layout, comp_object);
- evas_object_geometry_get(comp_object, &x, &y, &w, &h);
- evas_object_geometry_set(zgs->layout, x, y, w, h);
-}
-
-static Eina_Bool
-_site_auto_comp_object_handler(void *d EINA_UNUSED, int t EINA_UNUSED, E_Event_Comp_Object *ev)
-{
- const char *name;
- Eina_List *l;
- E_Gadget_Site *zgs;
-
- name = evas_object_name_get(ev->comp_object);
- if (!name) return ECORE_CALLBACK_RENEW;
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- if (zgs->autoadd && eina_streq(zgs->name, name))
- {
- if (!zgs->layout)
- _site_auto_add(zgs, ev->comp_object);
- break;
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-_site_zone_hover_update(Evas_Object *r, E_Zone *zone)
-{
- int zx, zy, zw, zh;
-
- e_zone_useful_geometry_get(zone, &zx, &zy, &zw, &zh);
- evas_object_geometry_set(r, zx, zy, zw, zh);
-}
-
-static void
-_site_zone_hover_rect_new(E_Zone *zone)
-{
- Evas_Object *r = elm_box_add(e_comp->elm);
- _site_zone_hover_update(r, zone);
- e_comp_object_util_del_list_append(zone->bg_event_object, r);
- evas_object_data_set(zone->bg_event_object, "gadget_hover_rect", r);
-}
-
-static Eina_Bool
-_site_zones_update(void *d EINA_UNUSED, int t EINA_UNUSED, E_Event_Zone_Move_Resize *ev)
-{
- Evas_Object *r;
-
- r = evas_object_data_get(ev->zone->bg_event_object, "gadget_hover_rect");
- _site_zone_hover_update(r, ev->zone);
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_site_auto_comp_update()
-{
- E_Gadget_Site *zgs;
- Eina_List *l;
- Evas_Object *r;
- E_Zone *zone;
-
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- {
- E_Gadget_Config *zgc = eina_list_data_get(zgs->gadgets);
-
- if (!zgc) continue;
- if (zgc->zone == -1) continue;
- evas_object_smart_need_recalculate_set(zgs->layout, 1);
- }
- EINA_LIST_FOREACH(e_comp->zones, l, zone)
- {
- r = evas_object_data_get(zone->bg_event_object, "gadget_hover_rect");
- if (!r) _site_zone_hover_rect_new(zone);
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Evas_Object *
-_site_util_add(E_Gadget_Site_Orient orient, const char *name, Eina_Bool autoadd)
-{
- E_Gadget_Site *zgs;
- Eina_List *l;
- Evas_Object *parent;
-
- if (name)
- {
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- if (eina_streq(zgs->name, name))
- {
- if (zgs->layout) return zgs->layout;
- goto out;
- }
- }
- zgs = E_NEW(E_Gadget_Site, 1);
-
- zgs->name = eina_stringshare_add(name);
- zgs->autoadd = autoadd;
-
- if (name)
- sites->sites = eina_list_append(sites->sites, zgs);
-out:
- zgs->orient = orient;
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- zgs->gravity = E_GADGET_SITE_GRAVITY_LEFT;
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- zgs->gravity = E_GADGET_SITE_GRAVITY_TOP;
- break;
- default: break;
- }
- if (autoadd)
- {
- parent = evas_object_name_find(e_comp->evas, name);
- if (parent)
- _site_auto_add(zgs, parent);
- }
- else
- _site_create(zgs);
-
- return zgs->layout;
-}
-
-E_API Evas_Object *
-e_gadget_site_add(E_Gadget_Site_Orient orient, const char *name)
-{
- return _site_util_add(orient, name, 0);
-}
-
-E_API Evas_Object *
-e_gadget_site_auto_add(E_Gadget_Site_Orient orient, const char *name)
-{
- return _site_util_add(orient, name, 1);
-}
-
-E_API void
-e_gadget_site_del(Evas_Object *obj)
-{
- Eina_List *l, *ll;
- E_Gadget_Config *zgc;
-
- ZGS_GET(obj);
-
- EINA_LIST_FOREACH_SAFE(zgs->gadgets, l, ll, zgc)
- _gadget_remove(zgc);
- sites->sites = eina_list_remove(sites->sites, zgs);
- evas_object_del(zgs->layout);
- eina_stringshare_del(zgs->name);
- free(zgs);
-}
-
-E_API E_Gadget_Site_Anchor
-e_gadget_site_anchor_get(Evas_Object *obj)
-{
- ZGS_GET(obj);
-
- return zgs->anchor;
-}
-
-E_API void
-e_gadget_site_owner_setup(Evas_Object *obj, E_Gadget_Site_Anchor an, E_Gadget_Style_Cb cb, E_Gadget_Context_Cb context_cb, E_Gadget_Context_Cb context_cancel_cb)
-{
- Evas_Object *parent;
- ZGS_GET(obj);
-
- zgs->anchor = an;
- zgs->style_cb = cb;
- zgs->context_cb = context_cb;
- zgs->context_cancel_cb = context_cancel_cb;
- evas_object_smart_callback_call(zgs->layout, "gadget_site_anchor", NULL);
- parent = evas_object_smart_parent_get(obj);
- if (parent)
- evas_object_smart_member_add(zgs->events, parent);
- else
- evas_object_smart_member_del(zgs->events);
-}
-
-E_API E_Gadget_Site_Orient
-e_gadget_site_orient_get(Evas_Object *obj)
-{
- ZGS_GET(obj);
- return zgs->orient;
-}
-
-E_API E_Gadget_Site_Gravity
-e_gadget_site_gravity_get(Evas_Object *obj)
-{
- ZGS_GET(obj);
- return zgs->gravity;
-}
-
-E_API void
-e_gadget_site_gravity_set(Evas_Object *obj, E_Gadget_Site_Gravity gravity)
-{
- ZGS_GET(obj);
- if (zgs->gravity == gravity) return;
- zgs->gravity = gravity;
- _gravity_apply(zgs, gravity);
- evas_object_smart_need_recalculate_set(zgs->layout, 1);
-}
-
-E_API Eina_List *
-e_gadget_site_gadgets_list(Evas_Object *obj)
-{
- Eina_List *l, *list = NULL;
- E_Gadget_Config *zgc;
-
- ZGS_GET(obj);
- EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
- if (zgc->display)
- list = eina_list_append(list, zgc->gadget);
- return list;
-}
-
-E_API void
-e_gadget_site_gadget_add(Evas_Object *obj, const char *type, Eina_Bool demo)
-{
- int id = 0;
-
- demo = !!demo;
- id -= demo;
- EINA_SAFETY_ON_NULL_RETURN(gadget_types);
- ZGS_GET(obj);
- _gadget_util_add(zgs, NULL, type, id);
-}
-
-E_API void
-e_gadget_site_gadget_external_add(Evas_Object *obj, const char *domain, const char *type, Eina_Bool demo)
-{
- int id = 0;
-
- demo = !!demo;
- id -= demo;
- EINA_SAFETY_ON_NULL_RETURN(gadget_types);
- ZGS_GET(obj);
- _gadget_util_add(zgs, domain, type, id);
-}
-
-E_API Evas_Object *
-e_gadget_site_get(Evas_Object *g)
-{
- E_Gadget_Config *zgc;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(g, NULL);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN_VAL(zgc, NULL);
- return zgc->site->layout;
-}
-
-E_API Eina_Bool
-e_gadget_site_is_desklock(Evas_Object *obj)
-{
- const char *name;
- ZGS_GET(obj);
- name = evas_object_name_get(obj);
- return name && strstr(name, "desklock");
-}
-
-E_API void
-e_gadget_configure_cb_set(Evas_Object *g, E_Gadget_Configure_Cb cb)
-{
- E_Gadget_Config *zgc;
-
- EINA_SAFETY_ON_NULL_RETURN(g);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN(zgc);
- zgc->configure = cb;
-}
-
-E_API void
-e_gadget_configure(Evas_Object *g)
-{
- E_Gadget_Config *zgc;
-
- if (e_desklock_state_get()) return;
- EINA_SAFETY_ON_NULL_RETURN(g);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN(zgc);
- _gadget_configure(zgc);
-}
-
-E_API void
-e_gadget_menu_populate_cb_set(Evas_Object *g, E_Gadget_Menu_Populate_Cb cb)
-{
- E_Gadget_Config *zgc;
-
- EINA_SAFETY_ON_NULL_RETURN(g);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN(zgc);
- zgc->populate = cb;
-}
-
-E_API void
-e_gadget_menu_populate(Evas_Object *g, E_Menu *m)
-{
- E_Gadget_Config *zgc;
-
- if (e_desklock_state_get()) return;
- EINA_SAFETY_ON_NULL_RETURN(g);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN(zgc);
- _gadget_menu_populate(zgc, m);
-}
-
-E_API Eina_Stringshare *
-e_gadget_type_get(Evas_Object *g)
-{
- E_Gadget_Config *zgc;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(g, NULL);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN_VAL(zgc, NULL);
- return zgc->external.type ?: zgc->type;
-}
-
-E_API void
-e_gadget_type_add(const char *type, E_Gadget_Create_Cb callback, E_Gadget_Wizard_Cb wizard)
-{
- E_Gadget_Type *t;
- Eina_List *l, *ll;
- E_Gadget_Site *zgs;
- E_Gadget_Config *zgc;
-
- EINA_SAFETY_ON_TRUE_RETURN(!!eina_hash_find(gadget_types, type));
- t = E_NEW(E_Gadget_Type, 1);
- t->cb = callback;
- t->wizard = wizard;
- eina_hash_add(gadget_types, type, t);
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- if (zgs->layout)
- EINA_LIST_FOREACH(zgs->gadgets, ll, zgc)
- if (eina_streq(type, zgc->type))
- _gadget_object_create(zgc);
-}
-
-E_API void
-e_gadget_type_del(const char *type)
-{
- Eina_List *l, *ll;
- E_Gadget_Site *zgs;
- E_Gadget_Config *zgc;
- char buf[1024];
-
- strncpy(buf, type, sizeof(buf) - 1);
-
- if (!gadget_types) return;
-
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- {
- EINA_LIST_FOREACH(zgs->gadgets, ll, zgc)
- if (eina_streq(buf, zgc->type))
- evas_object_del(zgc->gadget);
- }
- eina_hash_del_by_key(gadget_types, type);
-}
-
-E_API void
-e_gadget_external_type_add(const char *domain, const char *type, E_Gadget_External_Create_Cb callback, E_Gadget_External_Wizard_Cb wizard)
-{
- E_Gadget_External_Type *te;
- Eina_List *l, *ll;
- E_Gadget_Site *zgs;
- E_Gadget_Config *zgc;
- Eina_Hash *h = NULL;
-
- if (gadget_external_domains)
- {
- h = eina_hash_find(gadget_external_domains, domain);
- if (h)
- EINA_SAFETY_ON_TRUE_RETURN(!!eina_hash_find(h, type));
- }
- else
- gadget_external_domains = eina_hash_string_superfast_new((Eina_Free_Cb)eina_hash_free);
- if (!h)
- {
- h = eina_hash_string_superfast_new(free);
- eina_hash_add(gadget_external_domains, domain, h);
- }
- te = E_NEW(E_Gadget_External_Type, 1);
- te->cb = callback;
- te->wizard = wizard;
- eina_hash_add(h, type, te);
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- if (zgs->layout)
- EINA_LIST_FOREACH(zgs->gadgets, ll, zgc)
- if (eina_streq(domain, zgc->external.domain) && eina_streq(type, zgc->external.type))
- _gadget_object_create(zgc);
-}
-
-E_API void
-e_gadget_external_type_name_cb_set(const char *domain, const char *type, E_Gadget_External_Name_Cb name)
-{
- E_Gadget_External_Type *te;
-
- te = _gadget_external_type_get(domain, type);
- EINA_SAFETY_ON_NULL_RETURN(te);
- te->name = name;
-}
-
-E_API void
-e_gadget_external_type_del(const char *domain, const char *type)
-{
- Eina_List *l, *ll;
- E_Gadget_Site *zgs;
- E_Gadget_Config *zgc;
-
- if (!gadget_external_domains) return;
- if (!sites) return;
-
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- {
- EINA_LIST_FOREACH(zgs->gadgets, ll, zgc)
- if (eina_streq(domain, zgc->external.domain))
- {
- if ((!type) || eina_streq(type, zgc->external.type))
- evas_object_del(zgc->gadget);
- }
- }
- if (type)
- {
- Eina_Hash *h;
-
- h = eina_hash_find(gadget_external_domains, domain);
- EINA_SAFETY_ON_NULL_RETURN(h);
- eina_hash_del_by_key(h, type);
- if (!eina_hash_population(h))
- eina_hash_del_by_key(gadget_external_domains, domain);
- }
- else
- eina_hash_del_by_key(gadget_external_domains, domain);
-}
-
-E_API Eina_Iterator *
-e_gadget_type_iterator_get(void)
-{
- return gadget_types ? eina_hash_iterator_key_new(gadget_types) : NULL;
-}
-
-E_API void
-e_gadget_del(Evas_Object *g)
-{
- E_Gadget_Config *zgc;
- EINA_SAFETY_ON_NULL_RETURN(g);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN(zgc);
- _gadget_remove(zgc);
-}
-
-static void
-_gadget_drop_handler_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- int x, y, w, h;
-
- evas_object_geometry_get(obj, &x, &y, &w, &h);
- e_drop_handler_geometry_set(data, x, y, w, h);
-}
-
-E_API Evas_Object *
-e_gadget_drop_handler_add(Evas_Object *g, void *data,
- void (*enter_cb)(void *data, const char *type, void *event),
- void (*move_cb)(void *data, const char *type, void *event),
- void (*leave_cb)(void *data, const char *type, void *event),
- void (*drop_cb)(void *data, const char *type, void *event),
- const char **types, unsigned int num_types)
-{
- E_Gadget_Config *zgc;
- int x, y, w, h;
- Evas_Object *drop_object;
- E_Drop_Handler *drop_handler;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(g, NULL);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN_VAL(zgc, NULL);
-
- if (!zgc->drop_handlers)
- zgc->drop_handlers = eina_hash_pointer_new((Eina_Free_Cb)e_drop_handler_del);
-
- evas_object_geometry_get(zgc->display, &x, &y, &w, &h);
- drop_handler = e_drop_handler_add(zgc->e_obj_inherit, NULL, data,
- enter_cb, move_cb, leave_cb, drop_cb,
- types, num_types, x, y, w, h);
- drop_object = evas_object_rectangle_add(e_comp->evas);
- drop_handler->base = drop_object;
- evas_object_color_set(drop_object, 0, 0, 0, 0);
- e_object_data_set(E_OBJECT(drop_handler), drop_object);
- evas_object_data_set(drop_object, "gadget_drop_handler", drop_handler);
- evas_object_geometry_set(drop_object, x, y, w, h);
- evas_object_pass_events_set(drop_object, 1);
- evas_object_layer_set(drop_object, evas_object_layer_get(zgc->display));
- evas_object_event_callback_add(drop_object, EVAS_CALLBACK_MOVE, _gadget_drop_handler_moveresize, drop_handler);
- evas_object_event_callback_add(drop_object, EVAS_CALLBACK_RESIZE, _gadget_drop_handler_moveresize, drop_handler);
- evas_object_event_callback_add(drop_object, EVAS_CALLBACK_DEL, _gadget_drop_handler_del, zgc);
- eina_hash_add(zgc->drop_handlers, &drop_object, drop_handler);
- return drop_object;
-}
-
-static void
-_gadget_style_hints(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- E_Gadget_Config *zgc = data;
- evas_object_smart_need_recalculate_set(zgc->site->layout, 1);
-}
-
-E_API Evas_Object *
-e_gadget_util_layout_style_init(Evas_Object *g, Evas_Object *style)
-{
- E_Gadget_Config *zgc;
- Evas_Object *prev;
- const char *grp;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(g, NULL);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN_VAL(zgc, NULL);
-
- prev = zgc->style.obj;
- if ((!prev) && (!style)) return NULL;
- zgc->style.obj = style;
- if (style)
- {
- elm_layout_file_get(style, NULL, &grp);
- eina_stringshare_replace(&zgc->style.name, strrchr(grp, '/') + 1);
- evas_object_event_callback_priority_add(style, EVAS_CALLBACK_DEL, EVAS_CALLBACK_PRIORITY_AFTER, _gadget_del, zgc);
- }
- else
- eina_stringshare_replace(&zgc->style.name, NULL);
- if (prev)
- evas_object_event_callback_del_full(prev, EVAS_CALLBACK_DEL, _gadget_del, zgc);
- e_config_save_queue();
- zgc->display = style ?: zgc->gadget;
- E_FILL(zgc->display);
- E_EXPAND(zgc->display);
- if (zgc->site->gravity)
- {
- elm_box_pack_before(zgc->site->layout, zgc->display, prev ?: zgc->gadget);
- if (prev)
- elm_box_unpack(zgc->site->layout, prev);
- }
- evas_object_raise(zgc->site->events);
- if (prev) evas_object_event_callback_del(prev, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _gadget_style_hints);
- if (!style) return prev;
-
- evas_object_data_set(style, "__e_gadget", zgc);
-
- elm_layout_sizing_eval(style);
- evas_object_smart_calculate(style);
- evas_object_size_hint_min_get(style, &zgc->style.minw, &zgc->style.minh);
- evas_object_event_callback_add(style, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _gadget_style_hints, zgc);
- evas_object_show(style);
- if (zgc->display != zgc->gadget)
- evas_object_smart_callback_add(zgc->display, "gadget_popup", _gadget_popup, zgc);
- return prev;
-}
-
-static void
-_gadget_util_ctxpopup_visibility(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- e_comp_shape_queue();
-}
-
-static void
-_gadget_util_ctxpopup_moveresize(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- e_comp_shape_queue();
-}
-
-E_API void
-e_gadget_util_ctxpopup_place(Evas_Object *g, Evas_Object *ctx, Evas_Object *pos_obj)
-{
- int x, y, w, h;
- E_Layer layer;
- E_Gadget_Config *zgc;
- Evas_Object *content;
- E_Zone *zone;
- Elm_Ctxpopup_Direction first, second;
-
- EINA_SAFETY_ON_NULL_RETURN(g);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN(zgc);
-
- content = elm_object_content_get(ctx);
- zone = e_comp_object_util_zone_get(g);
- elm_ctxpopup_hover_parent_set(ctx, evas_object_data_get(zone->bg_event_object, "gadget_hover_rect"));
- layer = MAX(evas_object_layer_get(pos_obj ?: g), E_LAYER_POPUP);
- evas_object_layer_set(ctx, layer);
-
- evas_object_geometry_get(pos_obj ?: g, &x, &y, &w, &h);
- if (zgc->site->anchor & E_GADGET_SITE_ANCHOR_TOP)
- y += h;
- if (zgc->site->anchor & E_GADGET_SITE_ANCHOR_LEFT)
- x += w;
- if (zgc->site->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
- {
- x += w / 2;
- first = ELM_CTXPOPUP_DIRECTION_UP, second = ELM_CTXPOPUP_DIRECTION_DOWN;
- if (zgc->site->anchor & E_GADGET_SITE_ANCHOR_TOP)
- first = ELM_CTXPOPUP_DIRECTION_DOWN, second = ELM_CTXPOPUP_DIRECTION_UP;
- }
- else if (zgc->site->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- {
- y += h / 2;
- first = ELM_CTXPOPUP_DIRECTION_LEFT, second = ELM_CTXPOPUP_DIRECTION_RIGHT;
- if (zgc->site->anchor & E_GADGET_SITE_ANCHOR_LEFT)
- first = ELM_CTXPOPUP_DIRECTION_RIGHT, second = ELM_CTXPOPUP_DIRECTION_LEFT;
- }
- else
- {
- int zx, zy, zw, zh;
- e_zone_useful_geometry_get(e_comp_object_util_zone_get(pos_obj ?: g), &zx, &zy, &zw, &zh);
- if (x < zx + (zw / 2))
- {
- second = ELM_CTXPOPUP_DIRECTION_RIGHT;
- x += w / 2;
- }
- else
- second = ELM_CTXPOPUP_DIRECTION_LEFT;
- if (y < zy + (zh / 2))
- {
- first = ELM_CTXPOPUP_DIRECTION_DOWN;
- y += h;
- }
- else
- first = ELM_CTXPOPUP_DIRECTION_UP;
- }
- elm_ctxpopup_direction_priority_set(ctx, first, second, 0, 0);
- evas_object_move(ctx, x, y);
- evas_object_event_callback_add(ctx, EVAS_CALLBACK_SHOW, _gadget_util_ctxpopup_visibility, NULL);
- evas_object_event_callback_add(ctx, EVAS_CALLBACK_HIDE, _gadget_util_ctxpopup_visibility, NULL);
- if (content)
- {
- evas_object_event_callback_add(content, EVAS_CALLBACK_MOVE, _gadget_util_ctxpopup_moveresize, NULL);
- evas_object_event_callback_add(content, EVAS_CALLBACK_RESIZE, _gadget_util_ctxpopup_moveresize, NULL);
- }
- _desktop_rect_obj_add(ctx);
- evas_object_smart_callback_call(g, "gadget_popup", ctx);
- if (evas_object_visible_get(ctx))
- e_comp_shape_queue();
-}
-
-static void
-_gadget_util_allow(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- E_Gadget_Config *zgc = data;
-
- zgc->allow_deny.allow(zgc->allow_deny.data, zgc->gadget, NULL);
- _gadget_util_allow_deny_cleanup(zgc);
-}
-
-static void
-_gadget_util_deny(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- E_Gadget_Config *zgc = data;
-
- zgc->allow_deny.deny(zgc->allow_deny.data, zgc->gadget, NULL);
- _gadget_util_allow_deny_cleanup(zgc);
-}
-
-E_API void
-e_gadget_util_allow_deny_ctxpopup(Evas_Object *g, const char *text, Evas_Smart_Cb allow_cb, Evas_Smart_Cb deny_cb, const void *data)
-{
- Evas_Object *ctx, *tb, *lbl, *bt;
- E_Gadget_Config *zgc;
-
- EINA_SAFETY_ON_NULL_RETURN(g);
- zgc = evas_object_data_get(g, "__e_gadget");
- EINA_SAFETY_ON_NULL_RETURN(zgc);
-
- /* FIXME */
- EINA_SAFETY_ON_TRUE_RETURN(!!zgc->allow_deny.popup);
-
- EINA_SAFETY_ON_NULL_RETURN(allow_cb);
- EINA_SAFETY_ON_NULL_RETURN(deny_cb);
- EINA_SAFETY_ON_NULL_RETURN(text);
-
- zgc->allow_deny.allow = allow_cb;
- zgc->allow_deny.deny = deny_cb;
- zgc->allow_deny.data = (void*)data;
-
- ctx = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(ctx, "noblock");
-
- tb = elm_table_add(ctx);
- E_EXPAND(tb);
- E_FILL(tb);
- evas_object_show(tb);
- lbl = elm_label_add(ctx);
- E_FILL(lbl);
- elm_object_text_set(lbl, text);
- evas_object_show(lbl);
- elm_table_pack(tb, lbl, 0, 0, 2, 2);
-
- bt = elm_button_add(ctx);
- evas_object_show(bt);
- E_EXPAND(bt);
- E_FILL(bt);
- elm_object_text_set(bt, _("Deny"));
- evas_object_smart_callback_add(bt, "clicked", _gadget_util_deny, zgc);
- elm_table_pack(tb, bt, 0, 2, 1, 1);
-
- bt = elm_button_add(ctx);
- evas_object_show(bt);
- E_EXPAND(bt);
- E_FILL(bt);
- elm_object_text_set(bt, _("Allow"));
- evas_object_smart_callback_add(bt, "clicked", _gadget_util_allow, zgc);
- elm_table_pack(tb, bt, 1, 2, 1, 1);
-
- elm_object_content_set(ctx, tb);
-
- e_gadget_util_ctxpopup_place(g, ctx, NULL);
- zgc->allow_deny.popup = e_comp_object_util_add(ctx, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(zgc->allow_deny.popup, E_LAYER_POPUP);
- evas_object_show(zgc->allow_deny.popup);
-}
-
-EINTERN void
-e_gadget_save(void)
-{
- e_config_domain_save("e_gadget_sites", edd_sites, sites);
-#ifdef HAVE_WAYLAND
- e_gadget_runner_save();
-#endif
-}
-
-EINTERN void
-e_gadget_site_rename(const char *name, const char *newname)
-{
- Eina_List *l;
- E_Gadget_Site *zgs;
-
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- if (eina_streq(zgs->name, name))
- {
- eina_stringshare_replace(&zgs->name, newname);
- e_config_save_queue();
- break;
- }
-}
-
-static void
-_desktop_gadget_context(Evas_Object *site EINA_UNUSED, Evas_Object *g, unsigned int timestamp)
-{
- if (g) _gadget_menu(g, timestamp);
-}
-
-static void
-_desktop_gadget_context_cancel(Evas_Object *site EINA_UNUSED, Evas_Object *g, unsigned int timestamp)
-{
- if (g) _gadget_menu_cancel(g, timestamp);
-}
-
-EINTERN void
-e_gadget_init(void)
-{
- gadget_types = eina_hash_string_superfast_new(free);
- edd_gadget = E_CONFIG_DD_NEW("E_Gadget_Config", E_Gadget_Config);
- E_CONFIG_VAL(edd_gadget, E_Gadget_Config, id, INT);
- E_CONFIG_VAL(edd_gadget, E_Gadget_Config, zone, INT);
- E_CONFIG_VAL(edd_gadget, E_Gadget_Config, type, STR);
- E_CONFIG_VAL(edd_gadget, E_Gadget_Config, external.domain, STR);
- E_CONFIG_VAL(edd_gadget, E_Gadget_Config, external.type, STR);
- E_CONFIG_VAL(edd_gadget, E_Gadget_Config, style.name, STR);
- E_CONFIG_VAL(edd_gadget, E_Gadget_Config, x, DOUBLE);
- E_CONFIG_VAL(edd_gadget, E_Gadget_Config, y, DOUBLE);
- E_CONFIG_VAL(edd_gadget, E_Gadget_Config, w, DOUBLE);
- E_CONFIG_VAL(edd_gadget, E_Gadget_Config, h, DOUBLE);
-
- edd_site = E_CONFIG_DD_NEW("E_Gadget_Site", E_Gadget_Site);
- E_CONFIG_VAL(edd_site, E_Gadget_Site, gravity, UINT);
- E_CONFIG_VAL(edd_site, E_Gadget_Site, orient, UINT);
- E_CONFIG_VAL(edd_site, E_Gadget_Site, anchor, UINT);
- E_CONFIG_VAL(edd_site, E_Gadget_Site, autoadd, UCHAR);
- E_CONFIG_VAL(edd_site, E_Gadget_Site, name, STR);
-
- E_CONFIG_LIST(edd_site, E_Gadget_Site, gadgets, edd_gadget);
-
- edd_sites = E_CONFIG_DD_NEW("E_Gadget_Sites", E_Gadget_Sites);
- E_CONFIG_LIST(edd_sites, E_Gadget_Sites, sites, edd_site);
- sites = e_config_domain_load("e_gadget_sites", edd_sites);
- if (sites)
- {
- Eina_List *l;
- E_Gadget_Site *zgs;
-
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- {
- Eina_List *ll;
- E_Gadget_Config *zgc;
-
- EINA_LIST_FOREACH(zgs->gadgets, ll, zgc)
- {
- zgs->gadget_list = eina_inlist_append(zgs->gadget_list, EINA_INLIST_GET(zgc));
- zgc->site = zgs;
- }
- }
- }
- else
- sites = E_NEW(E_Gadget_Sites, 1);
-
- move_act = e_action_add("gadget_move");
- e_action_predef_name_set(_("Gadgets"), _("Move gadget"), "gadget_move", NULL, NULL, 0);
- move_act->func.go_mouse = _gadget_act_move;
-
- resize_act = e_action_add("gadget_resize");
- e_action_predef_name_set(_("Gadgets"), _("Resize gadget"), "gadget_resize", NULL, NULL, 0);
- resize_act->func.go_mouse = _gadget_act_resize;
- resize_act->func.end_mouse = _gadget_act_resize_end;
-
- configure_act = e_action_add("gadget_configure");
- e_action_predef_name_set(_("Gadgets"), _("Configure gadget"), "gadget_configure", NULL, NULL, 0);
- configure_act->func.go_mouse = _gadget_act_configure;
-
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_COMP_OBJECT_ADD, _site_auto_comp_object_handler, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_COMPOSITOR_UPDATE, _site_auto_comp_update, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGED, _site_zones_update, NULL);
-
- E_LIST_FOREACH(e_comp->zones, _site_zone_hover_rect_new);
-
- comp_site = e_comp->canvas->gadget_site = e_gadget_site_add(E_GADGET_SITE_ORIENT_NONE, "__desktop");
- evas_object_event_callback_add(e_comp->canvas->resize_object, EVAS_CALLBACK_RESIZE, _comp_site_resize, comp_site);
- ZGS_GET(comp_site);
- zgs->context_cb = _desktop_gadget_context;
- zgs->context_cancel_cb = _desktop_gadget_context_cancel;
- evas_object_layer_set(comp_site, E_LAYER_DESKTOP);
- evas_object_resize(comp_site, e_comp->w, e_comp->h);
-#ifdef HAVE_WAYLAND
- e_gadget_runner_init();
-#endif
-}
-
-EINTERN void
-e_gadget_shutdown(void)
-{
- E_Gadget_Site *zgs;
-
-#ifdef HAVE_WAYLAND
- e_gadget_runner_shutdown();
-#endif
- E_FREE_LIST(handlers, ecore_event_handler_del);
- E_CONFIG_DD_FREE(edd_gadget);
- E_CONFIG_DD_FREE(edd_site);
- E_CONFIG_DD_FREE(edd_sites);
- EINA_LIST_FREE(sites->sites, zgs)
- {
- E_FREE_LIST(zgs->gadgets, _gadget_free);
- evas_object_del(zgs->layout);
- eina_stringshare_del(zgs->name);
- free(zgs);
- }
- E_FREE(sites);
-
- e_action_del("gadget_move");
- e_action_del("gadget_resize");
- e_action_del("gadget_configure");
- e_action_predef_name_del(_("Gadgets"), _("Move gadget"));
- e_action_predef_name_del(_("Gadgets"), _("Resize gadget"));
- e_action_predef_name_del(_("Gadgets"), _("Configure gadget"));
- move_act = resize_act = configure_act = NULL;
- E_FREE_FUNC(gadget_types, eina_hash_free);
- E_FREE_FUNC(gadget_external_domains, eina_hash_free);
-}
-
-//////////////////////////////////////////////////////
-//// EDITOR /////
-//////////////////////////////////////////////////////
-
-static void
-_editor_resize(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- int w, h, size;
- Elm_Object_Item *it;
-
- evas_object_geometry_get(obj, NULL, NULL, &w, &h);
- size = MAX(w, h);
- size = MAX(size / 4, 100);
- elm_gengrid_item_size_set(obj, size, size);
- for (it = elm_gengrid_first_item_get(obj); it; it = elm_gengrid_item_next_get(it))
- {
- Gadget_Item *gi = elm_object_item_data_get(it);
- evas_object_size_hint_max_set(gi->gadget, lround(size * 0.95), lround(size * 0.95));
- }
-}
-
-static void
-_editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Evas_Object *site = evas_object_data_get(obj, "__gadget_site");
- if (site)
- {
- evas_object_event_callback_del(site, EVAS_CALLBACK_DEL, _edit_site_del);
- ZGS_GET(site);
- zgs->editor = NULL;
- }
- evas_object_event_callback_del_full(data, EVAS_CALLBACK_RESIZE, _editor_resize, obj);
-}
-
-static void
-_editor_item_del(void *data, Evas_Object *obj EINA_UNUSED)
-{
- Gadget_Item *gi = data;
- elm_box_unpack_all(gi->box);
- free(data);
-}
-
-static void
-_editor_pointer_site_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- e_comp_ungrab_input(1, 1);
- free(data);
- pointer_site = NULL;
- E_FREE_LIST(pointer_site_handlers, ecore_event_handler_del);
-}
-
-static void
-_editor_site_hints(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- int x, y, w, h;
-
- evas_object_size_hint_min_get(obj, &w, &h);
- evas_pointer_canvas_xy_get(e_comp->evas, &x, &y);
- evas_object_geometry_set(pointer_site, x - (w / 2), y - (h / 2), w, h);
-}
-
-static Eina_Bool
-_editor_pointer_button(Gadget_Item *active, int t EINA_UNUSED, Ecore_Event_Mouse_Button *ev)
-{
- int x, y, w, h;
- E_Gadget_Site *zgs, *zzgs = NULL;
-
- if (active->site)
- {
- evas_object_geometry_get(active->site, &x, &y, &w, &h);
- if (evas_object_smart_need_recalculate_get(active->site))
- evas_object_smart_calculate(active->site);
- if ((ev->buttons == 1) && E_INSIDE(ev->x, ev->y, x, y, w, h))
- evas_object_smart_callback_call(active->site, "gadget_site_dropped", pointer_site);
- e_comp_canvas_feed_mouse_up(0);
- evas_object_pass_events_set(active->site, 0);
- evas_object_pass_events_set(desktop_editor, 0);
- elm_object_disabled_set(active->editor, 1);
- e_comp_object_util_del_list_remove(active->editor, pointer_site);
- }
- else
- {
- E_Gadget_Config *zgc, *z;
- Eina_List *l;
-
- if (ev->buttons == 1)
- {
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- {
- if (!zgs->layout) continue;
- if (!evas_object_visible_get(zgs->events)) continue;
- evas_object_geometry_get(zgs->layout, &x, &y, &w, &h);
- if (!E_INSIDE(ev->x, ev->y, x, y, w, h)) continue;
- /* FIXME: technically not accurate since objects on the same layer
- * will have different stacking, but walking object trees sucks
- */
- if ((!zzgs) ||
- (evas_object_layer_get(zzgs->layout) < evas_object_layer_get(zgs->layout)))
- zzgs = zgs;
- }
- }
- zgs = evas_object_data_get(pointer_site, "__e_gadget_site");
- zgc = eina_list_data_get(zgs->gadgets);
- e_comp_canvas_feed_mouse_up(0);
- evas_object_pass_events_set(zgc->orig->site->layout, 0);
- evas_object_pass_events_set(desktop_editor, 0);
- if (zzgs)
- {
- /* fake the moving gadget as being on the pointer site */
- z = zgc->orig;
- zgc->site->gadget_list = eina_inlist_remove(zgc->site->gadget_list, EINA_INLIST_GET(zgc));
- zgc->site->gadgets = eina_list_remove(zgc->site->gadgets, zgc);
- if (evas_object_smart_need_recalculate_get(zzgs->layout))
- evas_object_smart_calculate(zzgs->layout);
- evas_object_geometry_get(zgc->display, &x, &y, NULL, NULL);
- evas_object_move(z->display, x, y);
- z->site->gadget_list = eina_inlist_remove(z->site->gadget_list, EINA_INLIST_GET(z));
- z->site->gadgets = eina_list_remove(z->site->gadgets, z);
- zgs->gadgets = eina_list_append(zgs->gadgets, z);
- z->site = zgs;
- evas_object_smart_callback_call(zzgs->layout, "gadget_site_dropped", pointer_site);
- _gadget_free(zgc);
- }
-
- }
- E_FREE_FUNC(pointer_site, evas_object_del);
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_editor_pointer_move(Gadget_Item *active EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Mouse_Move *ev)
-{
- int w, h;
-
- evas_object_geometry_get(pointer_site, NULL, NULL, &w, &h);
- evas_object_move(pointer_site, ev->x - (w / 2), ev->y - (h / 2));
- if (!e_gadget_site_orient_get(pointer_site))
- evas_object_smart_need_recalculate_set(pointer_site, 1);
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_editor_pointer_wheel(Gadget_Item *active EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Mouse_Wheel *ev)
-{
- int w, h;
-
- evas_object_geometry_get(pointer_site, NULL, NULL, &w, &h);
- evas_object_resize(pointer_site, w - (ev->z * 10 * e_scale), h - (ev->z * 10 * e_scale));
- evas_object_smart_need_recalculate_set(pointer_site, 1);
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-_editor_pointer_site_init(E_Gadget_Site_Orient orient, Evas_Object *site, Evas_Object *editor, Eina_Bool up)
-{
- Gadget_Item *active;
- Evas_Object *rect;
- int size;
-
- pointer_site = e_gadget_site_add(orient, NULL);
- if (site && (orient == E_GADGET_SITE_ORIENT_HORIZONTAL))
- evas_object_geometry_get(site, NULL, NULL, NULL, &size);
- else if (site && (orient == E_GADGET_SITE_ORIENT_VERTICAL))
- evas_object_geometry_get(site, NULL, NULL, &size, NULL);
- else
- size = 96 * e_scale;
- evas_object_resize(pointer_site, size, size);
- evas_object_layer_set(pointer_site, E_LAYER_MENU);
- evas_object_pass_events_set(pointer_site, 1);
- evas_object_show(pointer_site);
- active = E_NEW(Gadget_Item, 1);
- active->editor = editor;
- active->site = site;
- if (active->site)
- evas_object_pass_events_set(active->site, 1);
- evas_object_event_callback_add(pointer_site, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _editor_site_hints, active);
- evas_object_event_callback_add(pointer_site, EVAS_CALLBACK_DEL, _editor_pointer_site_del, active);
- E_LIST_HANDLER_APPEND(pointer_site_handlers, ECORE_EVENT_MOUSE_MOVE, _editor_pointer_move, active);
- if (!orient)
- E_LIST_HANDLER_APPEND(pointer_site_handlers, ECORE_EVENT_MOUSE_WHEEL, _editor_pointer_wheel, active);
- E_LIST_HANDLER_APPEND(pointer_site_handlers,
- up ? ECORE_EVENT_MOUSE_BUTTON_UP : ECORE_EVENT_MOUSE_BUTTON_DOWN, _editor_pointer_button, active);
-
- rect = evas_object_rectangle_add(e_comp->evas);
- evas_object_resize(rect, e_comp->w, e_comp->h);
- evas_object_color_set(rect, 0, 0, 0, 0);
- evas_object_layer_set(rect, E_LAYER_MENU + 1);
- e_comp_object_util_del_list_append(pointer_site, rect);
- evas_object_show(rect);
- e_comp_grab_input(1, 1);
-}
-
-static void
-_editor_gadget_new(void *data, Evas_Object *obj, void *event_info)
-{
- Gadget_Item *gi = data;
- E_Gadget_Site_Orient orient;
- E_Gadget_Config *zgc;
-
- zgc = evas_object_data_get(gi->gadget, "__e_gadget");
-
- evas_object_hide(desktop_editor);
- evas_object_pass_events_set(desktop_editor, 1);
- orient = e_gadget_site_orient_get(gi->site);
- _editor_pointer_site_init(orient, gi->site, gi->editor, 0);
-
- if (zgc->external.domain)
- e_gadget_site_gadget_external_add(pointer_site, zgc->external.domain, e_gadget_type_get(gi->gadget), 1);
- else
- e_gadget_site_gadget_add(pointer_site, e_gadget_type_get(gi->gadget), 1);
- ZGS_GET(pointer_site);
- {
- zgc = eina_list_data_get(zgs->gadgets);
- zgc->moving = 1;
- }
- elm_object_disabled_set(gi->editor, 1);
- if (eina_streq(evas_object_type_get(obj), "elm_genlist"))
- elm_genlist_item_selected_set(event_info, 0);
- else
- elm_gengrid_item_selected_set(event_info, 0);
-}
-
-static Evas_Object *
-_editor_content_get(void *data, Evas_Object *obj, const char *part, Evas_Object *old)
-{
- Gadget_Item *gi = data;
- Eina_Bool gl = eina_streq(evas_object_type_get(obj), "elm_genlist");
-
- if (eina_streq(part, "elm.swallow.icon"))
- {
- if (gl) return NULL;
- }
- else if (!gl) return NULL;
- if (old)
- {
- if (gi->box == old) return old;
- elm_box_unpack_all(old);
- elm_box_unpack(gi->box, gi->gadget);
- elm_box_pack_end(old, gi->gadget);
- gi->box = old;
- return old;
- }
- gi->box = elm_box_add(obj);
- elm_box_horizontal_set(gi->box, 1);
- elm_box_pack_end(gi->box, gi->gadget);
- return gi->box;
-}
-
-static char *
-_editor_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
-{
- char buf[1024];
- Gadget_Item *gi = data;
- E_Gadget_Config *zgc;
-
- zgc = evas_object_data_get(gi->gadget, "__e_gadget");
- if (zgc->external.domain)
- {
- E_Gadget_External_Type *te;
-
- te = _gadget_external_type_get(zgc->external.domain, zgc->external.type);
- if (te->name)
- return te->name(zgc->external.type);
- ERR("No name cb for external gadget provider!");
- return strdup(_("ERROR: NO NAME PROVIDED"));
- }
- strncpy(buf, e_gadget_type_get(gi->gadget), sizeof(buf) - 1);
- buf[0] = toupper(buf[0]);
- return strdup(buf);
-}
-
-static void
-_editor_gadget_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Gadget_Item *gi = data;
- elm_object_item_del(gi->it);
-}
-
-static int
-_editor_sort(Elm_Object_Item *ita, Elm_Object_Item *itb)
-{
- Gadget_Item *a = elm_object_item_data_get(ita);
- Gadget_Item *b = elm_object_item_data_get(itb);
-
- return strcasecmp(e_gadget_type_get(a->gadget), e_gadget_type_get(b->gadget));
-}
-
-E_API Evas_Object *
-e_gadget_editor_add(Evas_Object *parent, Evas_Object *site)
-{
- Evas_Object *list, *tempsite, *g;
- Eina_Iterator *it;
- Eina_List *gadgets;
- const char *type;
- E_Gadget_Site_Orient orient = e_gadget_site_orient_get(site);
- static Elm_Genlist_Item_Class gli =
- {
- .version = ELM_GENLIST_ITEM_CLASS_VERSION,
- .func =
- {
- .text_get = _editor_text_get,
- .reusable_content_get = _editor_content_get,
- .del = _editor_item_del,
- },
- };
-
- if (orient)
- {
- orient = E_GADGET_SITE_ORIENT_HORIZONTAL;
- list = elm_genlist_add(parent);
- elm_genlist_homogeneous_set(list, 1);
- elm_genlist_mode_set(list, ELM_LIST_COMPRESS);
- }
- else
- {
- list = elm_gengrid_add(parent);
- evas_object_event_callback_add(list, EVAS_CALLBACK_RESIZE, _editor_resize, NULL);
- }
- elm_scroller_bounce_set(list, 0, 0);
- elm_scroller_policy_set(list, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
- tempsite = e_gadget_site_add(orient, NULL);
- evas_object_name_set(tempsite, evas_object_name_get(site));
- e_gadget_site_gravity_set(tempsite, E_GADGET_SITE_GRAVITY_NONE);
-
- it = e_gadget_type_iterator_get();
- /* FIXME: no types available */
- EINA_ITERATOR_FOREACH(it, type)
- {
- E_Gadget_Config *zgc;
- e_gadget_site_gadget_add(tempsite, type, 1);
- ZGS_GET(tempsite);
- zgc = eina_list_last_data_get(zgs->gadgets);
- if ((zgc) && (!zgc->gadget)) _gadget_remove(zgc);
- }
- eina_iterator_free(it);
-
- if (gadget_external_domains)
- {
- Eina_Hash_Tuple *tup;
-
- it = eina_hash_iterator_tuple_new(gadget_external_domains);
- EINA_ITERATOR_FOREACH(it, tup)
- {
- const char *domain = tup->key;
- Eina_Hash *h = tup->data;
- E_Gadget_Config *zgc;
- Eina_Iterator *typeit = eina_hash_iterator_key_new(h);
-
- EINA_ITERATOR_FOREACH(typeit, type)
- {
- e_gadget_site_gadget_external_add(tempsite, domain, type, 1);
- ZGS_GET(tempsite);
- zgc = eina_list_last_data_get(zgs->gadgets);
- if (!zgc->gadget) _gadget_remove(zgc);
- }
- eina_iterator_free(typeit);
- }
- eina_iterator_free(it);
- }
-
- gadgets = e_gadget_site_gadgets_list(tempsite);
- EINA_LIST_FREE(gadgets, g)
- {
- Gadget_Item *gi;
-
- gi = E_NEW(Gadget_Item, 1);
- gi->editor = list;
- gi->gadget = g;
- gi->site = site;
- E_EXPAND(g);
- E_FILL(g);
- evas_object_pass_events_set(g, 1);
- evas_object_event_callback_add(g, EVAS_CALLBACK_DEL, _editor_gadget_del, gi);
- if (orient)
- gi->it = elm_genlist_item_sorted_insert(list, &gli, gi, NULL, 0, (Eina_Compare_Cb)_editor_sort, _editor_gadget_new, gi);
- else
- gi->it = elm_gengrid_item_sorted_insert(list, &gli, gi, (Eina_Compare_Cb)_editor_sort, _editor_gadget_new, gi);
- }
- evas_object_event_callback_add(list, EVAS_CALLBACK_DEL, _editor_del, parent);
- e_comp_object_util_del_list_append(list, tempsite);
- ZGS_GET(site);
- evas_object_event_callback_add(site, EVAS_CALLBACK_DEL, _edit_site_del, zgs);
- evas_object_data_set(list, "__gadget_site", site);
- /* FIXME: embedded editors? */
- zgs->editor = list;
- if (desktop_rect)
- {
- Eina_List *l;
- E_Gadget_Config *zgc;
-
- EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
- _desktop_rect_obj_add(zgc->display);
- }
- added = 0;
- return list;
-}
-
-static void
-_editor_show(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- if (obj == desktop_editor)
- evas_object_pass_events_set(desktop_editor, 0);
-}
-
-E_API Evas_Object *
-e_gadget_site_edit(Evas_Object *site)
-{
- Evas_Object *comp_object, *popup, *editor, *tb, *r;
- E_Zone *zone, *czone;
-
- ZGS_GET(site);
- EINA_SAFETY_ON_TRUE_RETURN_VAL(!!zgs->editor, NULL);
- zone = e_comp_object_util_zone_get(site);
- czone = e_zone_current_get();
- if (zone != czone)
- {
- int x, y, w, h;
-
- evas_object_geometry_get(site, &x, &y, &w, &h);
- if (E_INTERSECTS(x, y, w, h, czone->x, czone->y, czone->w, czone->h))
- zone = czone;
- }
-
- popup = elm_popup_add(e_comp->elm);
- elm_popup_scrollable_set(popup, EINA_FALSE);
- elm_popup_allow_events_set(popup, 1);
-
- tb = elm_table_add(popup);
- elm_object_content_set(popup, tb);
- r = evas_object_rectangle_add(e_comp->evas);
- evas_object_size_hint_min_set(r, zone->w / 2, 1);
- e_comp_object_util_del_list_append(tb, r);
- elm_table_pack(tb, r, 0, 0, 2, 1);
- r = evas_object_rectangle_add(e_comp->evas);
- evas_object_size_hint_min_set(r, 1, zone->h / 2);
- e_comp_object_util_del_list_append(tb, r);
- elm_table_pack(tb, r, 0, 1, 1, 1);
-
- editor = e_gadget_editor_add(e_comp->elm, site);
- elm_table_pack(tb, editor, 0, 1, 2, 2);
- evas_object_show(editor);
- E_EXPAND(editor);
- E_FILL(editor);
- comp_object = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(comp_object, E_LAYER_POPUP);
- evas_object_show(comp_object);
- evas_object_event_callback_add(comp_object, EVAS_CALLBACK_SHOW, _editor_show, NULL);
- evas_object_resize(comp_object, zone->w / 2, zone->h / 2);
- e_comp_object_util_center_on_zone(comp_object, zone);
-
- return comp_object;
-}
-
-static void
-_edit_end()
-{
- if (desktop_editor)
- {
- E_Action *act;
-
- act = e_action_find("desk_deskshow_toggle");
- if (act) act->func.go(E_OBJECT(e_comp_object_util_zone_get(desktop_editor)), NULL);
- evas_object_hide(desktop_editor);
- E_FREE_FUNC(desktop_editor, evas_object_del);
- }
- E_FREE_FUNC(desktop_rect, evas_object_del);
- E_FREE_LIST(desktop_handlers, ecore_event_handler_del);
- e_comp_ungrab_input(1, 1);
-}
-
-static void
-_edit_site_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- E_Gadget_Site *zgs = data;
-
- evas_object_data_del(zgs->editor, "__gadget_site");
- zgs->editor = NULL;
- _edit_end();
-}
-
-static void
-_gadget_desklock_del(void)
-{
- e_desklock_hide();
- desktop_editor = NULL;
- _edit_end();
-}
-
-static void
-_gadget_desklock_clear(void)
-{
- Eina_List *l;
- E_Gadget_Site *zgs;
-
- EINA_LIST_FOREACH(sites->sites, l, zgs)
- if (zgs->autoadd && zgs->layout && strstr(zgs->name, "desklock."))
- {
- E_LIST_FOREACH(zgs->gadgets, _gadget_remove);
- }
-}
-
-static Eina_Bool
-_gadget_desklock_key_handler(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Key *ev)
-{
- if ((!_editor_site_visible()) && (!pointer_site)) return ECORE_CALLBACK_RENEW;
- if (eina_streq(ev->key, "Escape"))
- {
- if (pointer_site)
- {
- E_FREE_FUNC(pointer_site, evas_object_del);
- if (desktop_editor) evas_object_show(desktop_editor);
- }
- else
- _gadget_desklock_del();
- }
- else if (eina_streq(ev->key, "Delete") || eina_streq(ev->key, "BackSpace"))
- _gadget_desklock_clear();
- return ECORE_CALLBACK_DONE;
-}
-
-static void
-_gadget_desklock_mouse_up_handler(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Event_Mouse_Down *ev = event_info;
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (ev->button != 1) return;
- if (!_editor_site_visible()) return;
- if (!added)
- _gadget_desklock_del();
- added = 0;
-}
-
-static void
-_gadget_moved()
-{
- added = 1;
-}
-
-static Eina_List *desktop_editor_move_handlers;
-static Evas_Point desktop_editor_move_point;
-static E_Zone *desktop_editor_move_zone;
-
-static void
-_desktop_editor_mouse_up_job(void *d)
-{
- evas_object_repeat_events_set(d, 1);
-}
-
-static Eina_Bool
-_desktop_editor_mouse_up(void *d, int t EINA_UNUSED, Ecore_Event_Mouse_Button *ev EINA_UNUSED)
-{
- E_FREE_LIST(desktop_editor_move_handlers, ecore_event_handler_del);
- evas_object_pointer_mode_set(d, EVAS_OBJECT_POINTER_MODE_NOGRAB);
- ecore_job_add(_desktop_editor_mouse_up_job, d);
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_desktop_editor_mouse_move(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Mouse_Move *ev)
-{
- int x, y, w, h;
- int nx, ny;
-
- evas_object_geometry_get(desktop_editor, &x, &y, &w, &h);
- nx = x + ev->x - desktop_editor_move_point.x;
- ny = y + ev->y - desktop_editor_move_point.y;
- desktop_editor_move_point.x = ev->x;
- desktop_editor_move_point.y = ev->y;
- if (!E_CONTAINS(desktop_editor_move_zone->x, desktop_editor_move_zone->y, desktop_editor_move_zone->w, desktop_editor_move_zone->h,
- nx, ny, w, h))
- {
- if (nx < desktop_editor_move_zone->x) nx = desktop_editor_move_zone->x;
- if (ny < desktop_editor_move_zone->y) ny = desktop_editor_move_zone->y;
- if (nx + w > desktop_editor_move_zone->x + desktop_editor_move_zone->w)
- nx = desktop_editor_move_zone->x + desktop_editor_move_zone->w - w;
- if (ny + h > desktop_editor_move_zone->y + desktop_editor_move_zone->h)
- ny = desktop_editor_move_zone->y + desktop_editor_move_zone->h - h;
- }
- evas_object_move(desktop_editor, nx, ny);
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-_desktop_editor_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info)
-{
- Evas_Event_Mouse_Down *ev = event_info;
- uintptr_t button = (uintptr_t)(uintptr_t*)data;
- uintptr_t modifiers = button % 10000;
- int i;
- const char *names[] =
- {
- "Shift",
- "Control",
- "Alt",
- "Win",
- "AltGr",
- };
-
- button = (button - modifiers) / 10000;
- if (button != (unsigned int)ev->button) return;
- for (i = 0; modifiers && i < 5; i++)
- {
- if (!(modifiers & (1 << i))) continue;
- if (evas_key_modifier_is_set(ev->modifiers, names[i]))
- modifiers &= ~(1 << i);
- }
- if (modifiers) return;
- desktop_editor_move_point.x = ev->output.x;
- desktop_editor_move_point.y = ev->output.y;
- desktop_editor_move_zone = e_comp_object_util_zone_get(obj);
- evas_object_pointer_mode_set(obj, EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN);
- evas_object_repeat_events_set(obj, 0);
- E_LIST_HANDLER_APPEND(desktop_editor_move_handlers, ECORE_EVENT_MOUSE_MOVE, _desktop_editor_mouse_move, obj);
- E_LIST_HANDLER_APPEND(desktop_editor_move_handlers, ECORE_EVENT_MOUSE_BUTTON_UP, _desktop_editor_mouse_up, obj);
-}
-
-static void
-_desktop_editor_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- evas_object_layer_set(data, evas_object_layer_get(obj));
-}
-
-static void
-_desktop_editor_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- int x, y, w, h;
-
- evas_object_geometry_get(obj, &x, &y, &w, &h);
- evas_object_geometry_set(data, x, y, w, h);
-}
-
-static void
-_desktop_editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- evas_object_del(data);
- E_FREE_LIST(desktop_editor_move_handlers, ecore_event_handler_del);
-}
-
-static void
-_desktop_editor_visibility(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- if (evas_object_visible_get(obj))
- {
- evas_object_show(data);
- evas_object_pointer_mode_set(data, EVAS_OBJECT_POINTER_MODE_NOGRAB);
- }
- else
- {
- evas_object_hide(data);
- evas_object_pointer_mode_set(data, EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN);
- }
-}
-
-static void
-_desktop_editor_text_add(void)
-{
- Evas_Object *txt, *tb, *popup = e_comp_object_util_get(desktop_editor);
- unsigned int button, modifiers;
- char *hotkeys;
-
- hotkeys = e_bindings_mouse_action_modifiers_text_generate(E_BINDING_CONTEXT_ANY, "gadget_move", &modifiers, &button);
- tb = elm_object_content_get(popup);
- if (hotkeys)
- {
- char buf[4096];
- Evas_Object *bx, *r;
-
- elm_object_content_unset(popup);
- r = evas_object_rectangle_add(e_comp->evas);
- evas_object_repeat_events_set(r, 1);
- _desktop_rect_obj_add(r);
- evas_object_layer_set(r, evas_object_layer_get(desktop_editor));
- evas_object_color_set(r, 0, 0, 0, 0);
- evas_object_show(r);
- bx = elm_box_add(popup);
- evas_object_event_callback_add(bx, EVAS_CALLBACK_MOVE, _desktop_editor_moveresize, r);
- evas_object_event_callback_add(bx, EVAS_CALLBACK_RESIZE, _desktop_editor_moveresize, r);
- evas_object_event_callback_add(desktop_editor, EVAS_CALLBACK_RESTACK, _desktop_editor_restack, r);
- evas_object_event_callback_add(desktop_editor, EVAS_CALLBACK_DEL, _desktop_editor_del, r);
- evas_object_event_callback_add(desktop_editor, EVAS_CALLBACK_SHOW, _desktop_editor_visibility, r);
- evas_object_event_callback_add(desktop_editor, EVAS_CALLBACK_HIDE, _desktop_editor_visibility, r);
- evas_object_show(bx);
- elm_object_content_set(popup, bx);
- elm_box_pack_end(bx, tb);
- txt = elm_label_add(tb);
- elm_box_pack_start(bx, txt);
- evas_object_show(txt);
- snprintf(buf, sizeof(buf), _("The current binding to move gadgets and this dialog is %s+<hilight>Mouse %d</hilight>"), hotkeys, button);
- elm_object_text_set(txt, buf);
- evas_object_pointer_mode_set(r, EVAS_OBJECT_POINTER_MODE_NOGRAB);
- button = (button * 10000) + modifiers;
- evas_object_event_callback_add(r, EVAS_CALLBACK_MOUSE_DOWN, _desktop_editor_mouse_down, (uintptr_t*)(uintptr_t)button);
- }
- txt = elm_label_add(tb);
- evas_object_show(txt);
- elm_object_text_set(txt, _("Press <hilight>Escape</hilight> or click the background to exit.<ps/>"
- "Use <hilight>Backspace</hilight> or <hilight>Delete</hilight> to remove all gadgets from this screen"));
- elm_table_pack(tb, txt, 0, 3, 2, 1);
-}
-
-static Eina_Bool
-_gadget_desklock_handler(void *d EINA_UNUSED, int t EINA_UNUSED, E_Event_Comp_Object *ev)
-{
- const char *name;
- Evas_Object *site, *comp_object;
-
- name = evas_object_name_get(ev->comp_object);
- if (!name) return ECORE_CALLBACK_RENEW;
- if (strncmp(name, "desklock", 8)) return ECORE_CALLBACK_RENEW;
- evas_object_layer_set(ev->comp_object, DESKLOCK_DEMO_LAYER - 1);
- site = e_gadget_site_auto_add(E_GADGET_SITE_ORIENT_NONE, name);
- _desktop_rect_obj_add(site);
- evas_object_smart_callback_add(site, "gadget_moved", _gadget_moved, NULL);
- evas_object_layer_set(site, DESKLOCK_DEMO_LAYER);
- ZGS_GET(site);
- desktop_editor = comp_object = e_gadget_site_edit(site);
- _desktop_editor_text_add();
- _desktop_rect_obj_add(zgs->events);
- _desktop_rect_obj_add(comp_object);
- e_comp_object_util_del_list_append(ev->comp_object, comp_object);
-
- return ECORE_CALLBACK_RENEW;
-}
-
-E_API void
-e_gadget_site_desklock_edit(void)
-{
- desktop_rect = evas_object_event_grabber_add(e_comp->evas);
- evas_object_resize(desktop_rect, e_comp->w, e_comp->h);
- evas_object_layer_set(desktop_rect, E_LAYER_MAX - 100);
- evas_object_show(desktop_rect);
- E_LIST_HANDLER_APPEND(desktop_handlers, E_EVENT_COMP_OBJECT_ADD, _gadget_desklock_handler, NULL);
- E_LIST_HANDLER_APPEND(desktop_handlers, ECORE_EVENT_KEY_DOWN, _gadget_desklock_key_handler, NULL);
- evas_object_event_callback_add(desktop_rect, EVAS_CALLBACK_MOUSE_UP, _gadget_desklock_mouse_up_handler, NULL);
- e_desklock_demo();
- e_comp_grab_input(1, 1);
-}
-
-static Eina_Bool
-_gadget_desktop_key_handler(void *data, int t EINA_UNUSED, Ecore_Event_Key *ev)
-{
- if ((!_editor_site_visible()) && (!pointer_site)) return ECORE_CALLBACK_RENEW;
- if (eina_streq(ev->key, "Escape"))
- {
- if (pointer_site)
- {
- E_FREE_FUNC(pointer_site, evas_object_del);
- if (desktop_editor) evas_object_show(desktop_editor);
- }
- else
- _edit_end();
- }
- else if (eina_streq(ev->key, "Delete") || eina_streq(ev->key, "BackSpace"))
- {
- E_Gadget_Site *zgs = data;
- E_LIST_FOREACH(zgs->gadgets, _gadget_remove);
- }
- return ECORE_CALLBACK_DONE;
-}
-
-static void
-_gadget_desktop_mouse_up_handler(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Event_Mouse_Down *ev = event_info;
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (ev->button != 1) return;
- if (!_editor_site_visible()) return;
- if (!added)
- _edit_end();
- added = 0;
-}
-
-E_API void
-e_gadget_site_desktop_edit(Evas_Object *site)
-{
- E_Action *act;
-
- ZGS_GET(site);
-
- desktop_rect = evas_object_event_grabber_add(e_comp->evas);
- evas_object_event_callback_add(desktop_rect, EVAS_CALLBACK_DEL, _edit_end, NULL);
- evas_object_resize(desktop_rect, e_comp->w, e_comp->h);
- evas_object_layer_set(desktop_rect, E_LAYER_MAX - 100);
- evas_object_show(desktop_rect);
-
- _desktop_rect_obj_add(site);
-
- E_LIST_HANDLER_APPEND(desktop_handlers, ECORE_EVENT_KEY_DOWN, _gadget_desktop_key_handler, zgs);
- evas_object_event_callback_add(desktop_rect, EVAS_CALLBACK_MOUSE_UP, _gadget_desktop_mouse_up_handler, NULL);
-
- desktop_editor = e_gadget_site_edit(site);
- _desktop_editor_text_add();
- _desktop_rect_obj_add(desktop_editor);
- evas_object_smart_callback_add(site, "gadget_moved", _gadget_moved, NULL);
- evas_object_show(desktop_editor);
-
- act = e_action_find("desk_deskshow_toggle");
- if (act) act->func.go(E_OBJECT(e_comp_object_util_zone_get(desktop_editor)), NULL);
- e_comp_grab_input(1, 1);
-}
diff --git a/src/bin/e_gadget.h b/src/bin/e_gadget.h
deleted file mode 100644
index 0afae5111c..0000000000
--- a/src/bin/e_gadget.h
+++ /dev/null
@@ -1,155 +0,0 @@
-#ifndef E_TYPEDEFS
-#ifndef E_GADGET_H
-# define E_GADGET_H
-
-
-/** SMART CALLBACKS:
- -------------------------------
- * called by gadget site internals on gadget site object:
-
- * have a gadget object as event_info
- * {
- "gadget_added"
- - a new gadget was added to the gadget site by the user
- "gadget_created"
- - a gadget object was created on the site
- "gadget_destroyed"
- - a gadget object was destroyed on the site; all objects created by the
- gadget infrastructure are now dead
- - do not watch both this and EVAS_CALLBACK_DEL, as the ordering of these
- callbacks is not consistent
- "gadget_moved"
- - a gadget is preparing to move from its current site
- "gadget_removed"
- - a gadget was removed from the gadget site by the user
- - the gadget should remove its config when this is triggered
- * }
-
- * have NULL as event_info
- * {
- "gadget_site_anchor"
- - the anchor of the gadget site changed
- "gadget_site_gravity"
- - the gravity of the gadget site changed
- "gadget_site_locked"
- - the gadget site's visibility has been locked (must be visible)
- "gadget_site_unlocked"
- - the gadget site's visibility has been unlocked (can be hidden)
- * }
-
- * have E_Menu as event_info
- * {
- "gadget_site_owner_menu"
- - the owner (parent object) of the site should add any owner-specific items
- in this callback (eg. settings)
- "gadget_site_style_menu"
- - the owner (parent object) of the site should add any style-specific items
- in this callback (eg. plain, inset)
- * }
-
- * have Evas_Object as event_info
- * {
- "gadget_site_popup"
- - a popup has been triggered from the site; the site must remain visible until
- the passed popup object has been hidden
- - event_info is the Evas_Object of the popup
- * }
- -------------------------------
- -------------------------------
- * called externally on gadget site
- "gadget_site_dropped"
- - called on a target site when a gadget site is dropped on it
- - event_info is the dropped site
- - all gadgets on the dropped site will be moved to the target site
- "gadget_site_style"
- - called on a target site when its owner has executed a style change
- - event_info is NULL
- - triggers restyling of all contained gadgets
- -------------------------------
- -------------------------------
- * called by gadget internals on gadget object:
- "gadget_menu"
- - called on a gadget object when the "gadget_menu" action has been triggered
- - event_info is an E_Menu object
- - if a configure callback has been passed with e_gadget_configure_cb_set(),
- a "Settings" item will be automatically added with this callback
- "gadget_reparent"
- - called on a gadget object when the gadget has been reparented
- - parent object is event_info
- - indicates that the gadget should watch this new object for EVAS_CALLBACK_RESIZE
- - event_info will be NULL in the case that the reparenting removes the parent
- -------------------------------
- -------------------------------
- * called externally by gadget on gadget object:
- "gadget_popup"
- - called on a gadget object by the gadget when the gadget creates a popup which
- requires that the gadget remain visible for the lifetime of the popup
- - event_info is the Evas_Object of the popup
- */
-
-#include "e_gadget_types.h"
-
-typedef Evas_Object *(*E_Gadget_Create_Cb)(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-typedef Evas_Object *(*E_Gadget_External_Create_Cb)(Evas_Object *parent, const char *type, int *id, E_Gadget_Site_Orient orient);
-typedef Evas_Object *(*E_Gadget_Configure_Cb)(Evas_Object *gadget);
-typedef void (*E_Gadget_Menu_Populate_Cb)(Evas_Object *gadget, E_Menu *m);
-typedef void (*E_Gadget_Context_Cb)(Evas_Object *site, Evas_Object *g, unsigned int timestamp);
-typedef void (*E_Gadget_Wizard_End_Cb)(void *data, int id);
-typedef Evas_Object *(*E_Gadget_Wizard_Cb)(E_Gadget_Wizard_End_Cb cb, void *data, Evas_Object *site);
-typedef Evas_Object *(*E_Gadget_External_Wizard_Cb)(E_Gadget_Wizard_End_Cb cb, void *data, const char *type, Evas_Object *site);
-typedef void (*E_Gadget_Style_Cb)(Evas_Object *owner, Eina_Stringshare *name, Evas_Object *g);
-typedef char *(*E_Gadget_External_Name_Cb)(const char *type);
-
-EINTERN void e_gadget_init(void);
-EINTERN void e_gadget_shutdown(void);
-EINTERN void e_gadget_site_rename(const char *name, const char *newname);
-
-E_API Evas_Object *e_gadget_site_add(E_Gadget_Site_Orient orient, const char *name);
-E_API Evas_Object *e_gadget_site_auto_add(E_Gadget_Site_Orient orient, const char *name);
-E_API void e_gadget_site_del(Evas_Object *obj);
-E_API E_Gadget_Site_Anchor e_gadget_site_anchor_get(Evas_Object *obj);
-E_API void e_gadget_site_owner_setup(Evas_Object *obj, E_Gadget_Site_Anchor an, E_Gadget_Style_Cb cb, E_Gadget_Context_Cb context_cb, E_Gadget_Context_Cb context_cancel_cb);
-E_API E_Gadget_Site_Orient e_gadget_site_orient_get(Evas_Object *obj);
-E_API E_Gadget_Site_Gravity e_gadget_site_gravity_get(Evas_Object *obj);
-E_API void e_gadget_site_gravity_set(Evas_Object *obj, E_Gadget_Site_Gravity gravity);
-E_API void e_gadget_site_gadget_add(Evas_Object *obj, const char *type, Eina_Bool demo);
-E_API void e_gadget_site_gadget_external_add(Evas_Object *obj, const char *domain, const char *type, Eina_Bool demo);
-E_API Eina_List *e_gadget_site_gadgets_list(Evas_Object *obj);
-E_API Eina_Bool e_gadget_site_is_desklock(Evas_Object *obj);
-
-E_API void e_gadget_configure_cb_set(Evas_Object *g, E_Gadget_Configure_Cb cb);
-E_API void e_gadget_configure(Evas_Object *g);
-E_API void e_gadget_menu_populate_cb_set(Evas_Object *g, E_Gadget_Menu_Populate_Cb cb);
-E_API void e_gadget_menu_populate(Evas_Object *g, E_Menu *m);
-
-E_API Evas_Object *e_gadget_site_get(Evas_Object *g);
-E_API Eina_Stringshare *e_gadget_type_get(Evas_Object *g);
-
-E_API void e_gadget_type_add(const char *type, E_Gadget_Create_Cb callback, E_Gadget_Wizard_Cb wizard);
-E_API void e_gadget_type_del(const char *type);
-E_API void e_gadget_external_type_add(const char *domain, const char *type, E_Gadget_External_Create_Cb callback, E_Gadget_External_Wizard_Cb wizard);
-E_API void e_gadget_external_type_del(const char *domain, const char *type);
-E_API void e_gadget_external_type_name_cb_set(const char *domain, const char *type, E_Gadget_External_Name_Cb name);
-E_API Eina_Iterator *e_gadget_type_iterator_get(void);
-/* delete a gadget and its config */
-E_API void e_gadget_del(Evas_Object *g);
-/* drop region initially matches gadget size, resizes to match returned object's size
- * handler is removed when returned object is deleted
- */
-E_API Evas_Object *e_gadget_drop_handler_add(Evas_Object *g, void *data,
- void (*enter_cb)(void *data, const char *type, void *event),
- void (*move_cb)(void *data, const char *type, void *event),
- void (*leave_cb)(void *data, const char *type, void *event),
- void (*drop_cb)(void *data, const char *type, void *event),
- const char **types, unsigned int num_types);
-
-E_API Evas_Object *e_gadget_util_layout_style_init(Evas_Object *g, Evas_Object *style);
-E_API void e_gadget_util_ctxpopup_place(Evas_Object *g, Evas_Object *ctx, Evas_Object *pos_obj);
-E_API void e_gadget_util_allow_deny_ctxpopup(Evas_Object *g, const char *text, Evas_Smart_Cb allow_cb, Evas_Smart_Cb deny_cb, const void *data);
-
-E_API Evas_Object *e_gadget_editor_add(Evas_Object *parent, Evas_Object *site);
-E_API Evas_Object *e_gadget_site_edit(Evas_Object *site);
-E_API void e_gadget_site_desklock_edit(void);
-E_API void e_gadget_site_desktop_edit(Evas_Object *site);
-#endif
-#endif
diff --git a/src/bin/e_gadget_loader.c b/src/bin/e_gadget_loader.c
deleted file mode 100644
index 24913c915c..0000000000
--- a/src/bin/e_gadget_loader.c
+++ /dev/null
@@ -1,354 +0,0 @@
-#include "config.h"
-#define EFL_BETA_API_SUPPORT
-#include <Ecore_Wl2.h>
-#include <Elementary.h>
-#include <dlfcn.h>
-#include "e-gadget-client-protocol.h"
-#include "action_route-client-protocol.h"
-#include <uuid.h>
-
-static Ecore_Event_Handler *handler;
-
-static Eina_Hash *wins;
-static Eina_Hash *gadget_globals;
-static Eina_Hash *ar_globals;
-static Eina_Hash *display_actions;
-static Eina_List *tooltips;
-
-typedef struct Gadget_Action
-{
- Ecore_Wl2_Display *d;
- Eina_Stringshare *action;
- char handle[37];
- Eina_List *requestors;
- struct action_route_bind *ar_bind;
-} Gadget_Action;
-
-static inline Ecore_Wl2_Display *
-win_display_get(Evas_Object *win)
-{
- Ecore_Wl2_Window *ww;
- ww = elm_win_wl_window_get(win);
- return ecore_wl2_window_display_get(ww);
-}
-
-static void
-win_emit(Ecore_Wl2_Display *d, const char *sig, uint32_t val)
-{
- Evas_Object *win;
-
- win = eina_list_data_get(eina_hash_find(wins, &d));
- evas_object_smart_callback_call(win, sig, (uintptr_t*)(uintptr_t)val);
-}
-
-static void
-_gadget_anchor(void *data, struct e_gadget *e_gadget EINA_UNUSED, uint32_t anchor)
-{
- win_emit(data, "gadget_site_anchor", anchor);
-}
-
-static void
-_gadget_orient(void *data, struct e_gadget *e_gadget EINA_UNUSED, uint32_t orient)
-{
- win_emit(data, "gadget_site_orient", orient);
-}
-
-static void
-_gadget_gravity(void *data, struct e_gadget *e_gadget EINA_UNUSED, uint32_t gravity)
-{
- win_emit(data, "gadget_site_gravity", gravity);
-}
-
-static void
-_gadget_configure(void *data, struct e_gadget *e_gadget EINA_UNUSED)
-{
- Evas_Object *win;
-
- win = eina_list_data_get(eina_hash_find(wins, &data));
- evas_object_smart_callback_call(win, "gadget_configure", NULL);
-}
-
-static const struct e_gadget_listener _gadget_listener =
-{
- _gadget_anchor,
- _gadget_orient,
- _gadget_gravity,
- _gadget_configure,
-};
-
-static void
-_gadget_global_bind(Ecore_Wl2_Display *d, uint32_t id)
-{
- Eina_List *l;
- Evas_Object *tt;
-
- struct e_gadget *gadget_global = wl_registry_bind(ecore_wl2_display_registry_get(d), id, &e_gadget_interface, 1);
- e_gadget_add_listener(gadget_global, &_gadget_listener, d);
- eina_hash_add(gadget_globals, &d, gadget_global);
- EINA_LIST_FOREACH(tooltips, l, tt)
- e_gadget_set_tooltip(gadget_global, ecore_wl2_window_surface_get(elm_win_wl_window_get(tt)));
- ecore_wl2_display_flush(d);
-}
-
-static void
-_ar_global_bind(Ecore_Wl2_Display *d, uint32_t id)
-{
- struct action_route *ar_global = wl_registry_bind(ecore_wl2_display_registry_get(d), id, &action_route_interface, 1);
- eina_hash_add(ar_globals, &d, ar_global);
- ecore_wl2_display_flush(d);
-}
-
-static Eina_Bool
-_global_added(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Wl2_Event_Global *ev)
-{
- if (eina_streq(ev->interface, "e_gadget"))
- _gadget_global_bind(ev->display, ev->id);
- else if (eina_streq(ev->interface, "action_route"))
- _ar_global_bind(ev->display, ev->id);
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-_gadget_init(Ecore_Wl2_Display *d)
-{
- Eina_Iterator *it;
- Ecore_Wl2_Global *g;
-
- if (wins)
- {
- if (eina_hash_find(gadget_globals, &d)) return;
- }
- else
- {
- gadget_globals = eina_hash_pointer_new(NULL);
- ar_globals = eina_hash_pointer_new(NULL);
- }
- it = ecore_wl2_display_globals_get(d);
- EINA_ITERATOR_FOREACH(it, g)
- {
- if (eina_streq(g->interface, "e_gadget"))
- _gadget_global_bind(d, g->id);
- else if (eina_streq(g->interface, "action_route"))
- _ar_global_bind(d, g->id);
- }
- eina_iterator_free(it);
- if (!handler)
- handler = ecore_event_handler_add(ECORE_WL2_EVENT_GLOBAL_ADDED, (Ecore_Event_Handler_Cb)_global_added, NULL);
-}
-
-static void
-_ar_bind_activate(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- const char *params = event_info;
- Gadget_Action *ga = data;
-
- if (params && (!params[0])) params = NULL;
- action_route_bind_activate(ga->ar_bind, params);
- ecore_wl2_display_flush(ga->d);
-}
-
-static void
-_ar_bind_del(Gadget_Action *ga)
-{
- Evas_Object *r;
- eina_stringshare_del(ga->action);
- EINA_LIST_FREE(ga->requestors, r)
- evas_object_smart_callback_del_full(r, ga->handle, _ar_bind_activate, ga);
- free(ga);
-}
-
-static void
-_ar_bind_end(void *data, struct action_route_bind *action_route_bind EINA_UNUSED)
-{
- Gadget_Action *ga = data;
- Eina_List *l;
- Evas_Object *r;
-
- EINA_LIST_FOREACH(ga->requestors, l, r)
- evas_object_smart_callback_call(r, "gadget_action_end", ga->handle);
-}
-
-static void
-_ar_bind_status(void *data, struct action_route_bind *action_route_bind, uint32_t state)
-{
- uuid_t u;
- Gadget_Action *ga = data;
- Evas_Object *r;
-
- if (state == ACTION_ROUTE_BIND_STATE_REJECTED)
- {
- Eina_Hash *h;
- Eina_List *l;
- h = eina_hash_find(display_actions, &ga->d);
- EINA_LIST_FOREACH(ga->requestors, l, r)
- {
- if (ga->handle[0])
- evas_object_smart_callback_call(r, "gadget_action_deleted", ga->handle);
- else
- evas_object_smart_callback_call(r, "gadget_action", NULL);
- }
- eina_hash_del_by_key(h, ga->action);
- return;
- }
- uuid_generate(u);
- uuid_unparse_lower(u, ga->handle);
- ga->ar_bind = action_route_bind;
- r = eina_list_data_get(ga->requestors);
- evas_object_smart_callback_add(r, ga->handle, _ar_bind_activate, ga);
- evas_object_smart_callback_call(r, "gadget_action", ga->handle);
-}
-
-static const struct action_route_bind_listener _ar_bind_interface =
-{
- _ar_bind_status,
- _ar_bind_end
-};
-
-static void
-uriopen_request(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Ecore_Wl2_Display *d = data;
- const char *uri = event_info;
- struct e_gadget *gadget_global = eina_hash_find(gadget_globals, &d);
-
- e_gadget_open_uri(gadget_global, uri);
- ecore_wl2_display_flush(d);
-}
-
-static void
-action_request(void *data, Evas_Object *obj, void *event_info)
-{
- Gadget_Action *ga;
- const char *action = event_info;
- Ecore_Wl2_Display *d = data;
- void *ar_global;
- struct action_route_bind *ar_bind;
- Eina_Hash *h;
-
- if ((!action) || (!action[0]))
- {
- evas_object_smart_callback_call(obj, "gadget_action", NULL);
- return;
- }
- if (display_actions)
- {
- h = eina_hash_find(display_actions, &d);
- if (h)
- {
- ga = eina_hash_find(h, action);
- if (ga && (!eina_list_data_find(ga->requestors, obj)))
- {
- ga->requestors = eina_list_append(ga->requestors, obj);
- evas_object_smart_callback_add(obj, ga->handle, _ar_bind_activate, ga);
- }
- evas_object_smart_callback_call(obj, "gadget_action", ga ? ga->handle : NULL);
- return;
- }
- }
- ar_global = eina_hash_find(ar_globals, &d);
- if (!ar_global)
- {
- evas_object_smart_callback_call(obj, "gadget_action", NULL);
- return;
- }
- ga = calloc(1, sizeof(Gadget_Action));
- ga->d = d;
- ga->requestors = eina_list_append(ga->requestors, obj);
- ga->action = eina_stringshare_add(action);
- if (!display_actions)
- display_actions = eina_hash_string_superfast_new(NULL);
- h = eina_hash_find(display_actions, &d);
- if (!h)
- {
- h = eina_hash_pointer_new((Eina_Free_Cb)_ar_bind_del);
- eina_hash_add(display_actions, &d, h);
- }
-
- ar_bind = action_route_bind_action(ar_global, action);
- action_route_bind_add_listener(ar_bind, &_ar_bind_interface, ga);
- wl_display_roundtrip(ecore_wl2_display_get(d));
-}
-
-static void
-win_del(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Ecore_Wl2_Display *d = win_display_get(obj);
- eina_hash_list_remove(wins, &d, obj);
- tooltips = eina_list_remove(tooltips, obj);
-}
-
-static void
-_tooltip_resize(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- int w, h;
-
- evas_object_geometry_get(obj, NULL, NULL, &w, &h);
- evas_object_size_hint_aspect_set(obj, EVAS_ASPECT_CONTROL_BOTH, w, h);
-}
-
-static Evas_Object *
-win_add(Evas_Object *win)
-{
- Ecore_Wl2_Display *d;
- Eina_Bool first;
- if (!win) return NULL;
- d = win_display_get(win);
- _gadget_init(d);
- if (elm_win_type_get(win) == ELM_WIN_TOOLTIP)
- {
- tooltips = eina_list_append(tooltips, win);
- evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _tooltip_resize, d);
- if (eina_hash_population(gadget_globals))
- {
- struct e_gadget *gadget_global = eina_hash_find(gadget_globals, &d);
- if (gadget_global)
- e_gadget_set_tooltip(gadget_global, ecore_wl2_window_surface_get(elm_win_wl_window_get(win)));
- }
- }
- if (!wins)
- wins = eina_hash_pointer_new(NULL);
- first = !eina_hash_find(wins, &d);
- eina_hash_list_append(wins, &d, win);
- if (first)
- {
- evas_object_smart_callback_add(win, "gadget_action_request", action_request, d);
- evas_object_smart_callback_add(win, "gadget_open_uri", uriopen_request, d);
- }
- evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, win_del, NULL);
- elm_win_borderless_set(win, 1);
- return win;
-}
-
-int
-eina_init(void)
-{
- int (*_eina_init)(void) = dlsym(RTLD_NEXT, __func__);
-
- if (wins) return _eina_init();
- if (getenv("RUNNER_DEBUG")) raise(SIGSTOP);
- return _eina_init();
-}
-
-Evas_Object *
-elm_win_util_dialog_add(Evas_Object *parent, const char *name, const char *title)
-{
- Evas_Object *(*_elm_win_util_dialog_add)(Evas_Object *, const char *, const char *) = dlsym(RTLD_NEXT, __func__);
-
- return win_add(_elm_win_util_dialog_add(parent, name, title));
-}
-
-Evas_Object *
-elm_win_util_standard_add(const char *name, const char *title)
-{
- Evas_Object *(*_elm_win_util_standard_add)(const char *, const char *) = dlsym(RTLD_NEXT, __func__);
-
- return win_add(_elm_win_util_standard_add(name, title));
-}
-
-Evas_Object *
-elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
-{
- Evas_Object *(*_elm_win_add)(Evas_Object *,const char*, Elm_Win_Type) = dlsym(RTLD_NEXT, __func__);
-
- return win_add(_elm_win_add(parent, name, type));
-}
diff --git a/src/bin/e_gadget_runner.c b/src/bin/e_gadget_runner.c
deleted file mode 100644
index 39a008ed91..0000000000
--- a/src/bin/e_gadget_runner.c
+++ /dev/null
@@ -1,1270 +0,0 @@
-#include "e.h"
-#include <Efl_Canvas_Wl.h>
-#include "e-gadget-server-protocol.h"
-#include "action_route-server-protocol.h"
-#include <sched.h>
-
-#ifdef __GNUC__
-# pragma GCC diagnostic ignored "-Wformat-truncation"
-#endif
-
-typedef enum
-{
- EXIT_MODE_RESTART,
- EXIT_MODE_DELETE,
-} Exit_Mode;
-
-typedef struct Config_Item
-{
- int id;
- int exit_mode;
- Eina_Stringshare *cmd;
- void *inst;
- Eina_Bool cmd_changed E_BITFIELD;
- Eina_Bool sandbox E_BITFIELD;
-} Config_Item;
-
-typedef struct Tooltip
-{
- Evas_Object *obj;
- Evas_Object *content;
- Evas_Object *tooltip_content;
- struct wl_resource *tooltip_surface;
-} Tooltip;
-
-typedef struct Instance
-{
- E_Gadget_Site_Orient orient;
- E_Gadget_Site_Anchor anchor;
- Evas_Object *box;
- Evas_Object *obj;
- Efl_Exe *exe;
- Config_Item *ci;
- Eina_Hash *allowed_pids;
- Eina_List *tooltip_surfaces;
- void *gadget_resource;
- Tooltip popup, ctxpopup, base;
- Eina_List *extracted;
-} Instance;
-
-typedef struct RConfig
-{
- Eina_List *items;
- Evas_Object *config_dialog;
-} RConfig;
-
-static Eina_Bool runner_enabled;
-
-static E_Config_DD *conf_edd = NULL;
-static E_Config_DD *conf_item_edd = NULL;
-
-static int ns_fd = -1;
-
-static RConfig *rconfig;
-static Eina_List *instances;
-static Eina_List *wizards;
-
-static Eina_Hash *sandbox_gadgets;
-
-static Eina_List *handlers;
-static Eio_Monitor *gadget_monitor;
-static Eio_File *gadget_lister;
-
-typedef struct Wizard_Item
-{
- Evas_Object *site;
- Evas_Object *popup;
- E_Gadget_Wizard_End_Cb cb;
- void *data;
- int id;
- Eina_Bool sandbox E_BITFIELD;
-} Wizard_Item;
-
-static void runner_exe_del(void *data, const Efl_Event *ev);
-
-static char *
-sandbox_name(const char *filename)
-{
- Efreet_Desktop *ed = eina_hash_find(sandbox_gadgets, filename);
- char buf[1024];
-
- snprintf(buf, sizeof(buf), "%s (v%s)", ed->name, (char*)eina_hash_find(ed->x, "X-Gadget-Version"));
- return strdup(buf);
-}
-
-static void
-runner_run(Instance *inst)
-{
- char *preload = eina_strdup(getenv("LD_PRELOAD"));
- char buf[PATH_MAX];
- int pid;
-
- snprintf(buf, sizeof(buf), "%s/enlightenment/gadgets/%s/loader.so", e_prefix_lib_get(), MODULE_ARCH);
- e_util_env_set("LD_PRELOAD", buf);
-
- snprintf(buf, sizeof(buf), "%d", inst->ci->id);
- e_util_env_set("E_GADGET_ID", buf);
- switch (inst->orient)
- {
- case E_GADGET_SITE_ORIENT_NONE:
- e_util_env_set("E_GADGET_ORIENTATION", "None");
- break;
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- e_util_env_set("E_GADGET_ORIENTATION", "Horizontal");
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- e_util_env_set("E_GADGET_ORIENTATION", "Vertical");
- break;
- }
- if (inst->anchor)
- {
- if (inst->anchor & E_GADGET_SITE_ANCHOR_TOP)
- {
- if (inst->anchor & E_GADGET_SITE_ANCHOR_LEFT)
- e_util_env_set("E_GADGET_ANCHOR", "Top,Left");
- else if (inst->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
- e_util_env_set("E_GADGET_ANCHOR", "Top,Right");
- else
- e_util_env_set("E_GADGET_ANCHOR", "Top");
- }
- else if (inst->anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- {
- if (inst->anchor & E_GADGET_SITE_ANCHOR_LEFT)
- e_util_env_set("E_GADGET_ANCHOR", "Bottom,Left");
- else if (inst->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
- e_util_env_set("E_GADGET_ANCHOR", "Bottom,Right");
- else
- e_util_env_set("E_GADGET_ANCHOR", "Bottom");
- }
- else
- {
- if (inst->anchor & E_GADGET_SITE_ANCHOR_LEFT)
- e_util_env_set("E_GADGET_ANCHOR", "Left");
- else if (inst->anchor & E_GADGET_SITE_ANCHOR_RIGHT)
- e_util_env_set("E_GADGET_ANCHOR", "Right");
- }
- }
- e_util_env_set("E_GADGET_ID", buf);
-
- unshare(CLONE_NEWPID);
-
- inst->exe = efl_canvas_wl_run(inst->obj, inst->ci->cmd);
- efl_event_callback_add(inst->exe, EFL_TASK_EVENT_EXIT, runner_exe_del, inst);
-
- setns(ns_fd, CLONE_NEWPID);
-
- e_util_env_set("E_GADGET_ANCHOR", NULL);
- e_util_env_set("E_GADGET_ORIENTATION", NULL);
- e_util_env_set("E_GADGET_ID", NULL);
- e_util_env_set("LD_PRELOAD", preload);
- free(preload);
- eina_hash_free_buckets(inst->allowed_pids);
- pid = efl_exe_pid_get(inst->exe);
- eina_hash_add(inst->allowed_pids, &pid, (void*)1);
-}
-
-static void
-_config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Config_Item *ci = data;
- Instance *inst = ci->inst;
-
- e_comp_ungrab_input(1, 1);
- rconfig->config_dialog = NULL;
- if (ci->cmd_changed)
- {
- char *cmd;
-
- cmd = elm_entry_markup_to_utf8(elm_entry_entry_get(evas_object_data_get(obj, "entry")));
- eina_stringshare_replace(&ci->cmd, cmd);
- free(cmd);
- e_config_save_queue();
- }
- if (!inst) ci->cmd_changed = 0;
- if (!ci->cmd_changed) return;
- ci->cmd_changed = 0;
- if (inst->exe) efl_exe_signal(inst->exe, EFL_EXE_SIGNAL_QUIT);
- runner_run(inst);
-}
-
-static void
-_config_label_add(Evas_Object *tb, const char *txt, int row)
-{
- Evas_Object *o;
-
- o = elm_label_add(tb);
- E_ALIGN(o, 0, 0.5);
- elm_object_text_set(o, txt);
- evas_object_show(o);
- elm_table_pack(tb, o, 0, row, 1, 1);
-}
-
-static void
-_config_cmd_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Config_Item *ci = data;
-
- ci->cmd_changed = 1;
-}
-
-static void
-_config_cmd_activate(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Config_Item *ci = data;
- Instance *inst = ci->inst;
- char *cmd;
-
- ci->cmd_changed = 0;
- cmd = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
- eina_stringshare_replace(&ci->cmd, cmd);
- free(cmd);
- e_config_save_queue();
- if (!inst) return;
- if (inst->exe) efl_exe_signal(inst->exe, EFL_EXE_SIGNAL_QUIT);
- runner_run(inst);
-}
-
-EINTERN Evas_Object *
-config_runner(Config_Item *ci, E_Zone *zone)
-{
- Evas_Object *popup, *tb, *o, *ent, *rg;
- int row = 0;
-
- if (!zone) zone = e_zone_current_get();
- popup = elm_popup_add(e_comp->elm);
- E_EXPAND(popup);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- tb = elm_table_add(popup);
- elm_table_align_set(tb, 0, 0.5);
- E_EXPAND(tb);
- evas_object_show(tb);
- elm_object_content_set(popup, tb);
-
- o = evas_object_rectangle_add(e_comp->evas);
- evas_object_size_hint_min_set(o, ELM_SCALE_SIZE(200), 1);
- elm_table_pack(tb, o, 0, row++, 2, 1);
-
- _config_label_add(tb, _("Command:"), row);
- ent = o = elm_entry_add(tb);
- E_FILL(o);
- evas_object_show(o);
- elm_entry_single_line_set(o, 1);
- elm_entry_entry_set(o, ci->cmd);
- evas_object_smart_callback_add(o, "changed,user", _config_cmd_changed, ci);
- evas_object_smart_callback_add(o, "activated", _config_cmd_activate, ci);
- elm_table_pack(tb, o, 1, row++, 1, 1);
-
- _config_label_add(tb, _("On Exit:"), row);
- o = rg = elm_radio_add(tb);
- E_FILL(o);
- evas_object_show(o);
- elm_object_text_set(o, _("Restart"));
- elm_radio_state_value_set(o, EXIT_MODE_RESTART);
- elm_radio_value_pointer_set(o, &ci->exit_mode);
- elm_table_pack(tb, o, 1, row++, 1, 1);
-
- o = elm_radio_add(tb);
- E_FILL(o);
- elm_radio_group_add(o, rg);
- evas_object_show(o);
- elm_object_text_set(o, _("Delete"));
- elm_radio_state_value_set(o, EXIT_MODE_DELETE);
- elm_table_pack(tb, o, 1, row++, 1, 1);
-
-
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_move(popup, zone->x, zone->y);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center(popup);
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_priority_add(popup, EVAS_CALLBACK_DEL, EVAS_CALLBACK_PRIORITY_BEFORE, _config_close, ci);
- evas_object_data_set(popup, "entry", ent);
- e_comp_grab_input(1, 1);
-
- elm_object_focus_set(ent, 1);
-
- return rconfig->config_dialog = popup;
-}
-
-static Config_Item *
-_conf_item_get(int *id)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(rconfig->items, l, ci)
- if (*id == ci->id) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
- if (!*id)
- *id = ci->id = rconfig->items ? eina_list_count(rconfig->items) + 1 : 1;
- else
- ci->id = *id;
-
- if (ci->id < 1) return ci;
- rconfig->items = eina_list_append(rconfig->items, ci);
- e_config_save_queue();
-
- return ci;
-}
-
-static void
-wizard_site_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Wizard_Item *wi = data;
- wi->site = NULL;
- evas_object_hide(wi->popup);
- evas_object_del(wi->popup);
-}
-
-static void
-_wizard_config_end(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Wizard_Item *wi = data;
- Eina_List *l;
- Config_Item *ci;
-
- EINA_LIST_FOREACH(rconfig->items, l, ci)
- {
- if (ci->id == wi->id)
- {
- if (ci->cmd) break;
- wi->id = 0;
- free(ci);
- rconfig->items = eina_list_remove_list(rconfig->items, l);
- break;
- }
- }
-
- if (wi->site)
- wi->cb(wi->data, wi->id);
- wizards = eina_list_remove(wizards, wi);
- if (wi->site)
- evas_object_event_callback_del_full(wi->site, EVAS_CALLBACK_DEL, wizard_site_del, wi);
- free(wi);
-}
-
-static Evas_Object *
-runner_wizard(E_Gadget_Wizard_End_Cb cb, void *data, Evas_Object *site)
-{
- int id = 0;
- Config_Item *ci;
- Wizard_Item *wi;
-
- wi = E_NEW(Wizard_Item, 1);
- wi->cb = cb;
- wi->data = data;
- wi->site = site;
- evas_object_event_callback_add(wi->site, EVAS_CALLBACK_DEL, wizard_site_del, wi);
- wizards = eina_list_append(wizards, wi);
-
- ci = _conf_item_get(&id);
- wi->id = ci->id;
- wi->popup = config_runner(ci, NULL);
- evas_object_event_callback_add(wi->popup, EVAS_CALLBACK_DEL, _wizard_config_end, wi);
- return wi->popup;
-}
-
-/////////////////////////////////////////
-
-static void
-mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- evas_object_focus_set(inst->obj, 1);
-}
-
-static void
-runner_removed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Instance *inst = data;
- if (inst->box != event_info) return;
- rconfig->items = eina_list_remove(rconfig->items, inst->ci);
- eina_stringshare_del(inst->ci->cmd);
- E_FREE(inst->ci);
-}
-
-static void
-runner_site_gravity(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- if (inst->gadget_resource)
- e_gadget_send_gadget_gravity(inst->gadget_resource, e_gadget_site_gravity_get(obj));
-}
-
-static void
-runner_site_anchor(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->anchor = e_gadget_site_anchor_get(obj);
- if (inst->gadget_resource)
- e_gadget_send_gadget_anchor(inst->gadget_resource, inst->anchor);
-}
-
-static void
-runner_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- Evas_Object *site = e_gadget_site_get(obj);
-
- if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
- e_comp_wl->efl_wls = eina_list_remove(e_comp_wl->efl_wls, inst->obj);
- evas_object_smart_callback_del_full(site, "gadget_removed", runner_removed, inst);
- evas_object_smart_callback_del_full(site, "gadget_site_anchor", runner_site_anchor, inst);
- evas_object_smart_callback_del_full(site, "gadget_site_gravity", runner_site_gravity, inst);
- if (inst->ci)
- inst->ci->inst = NULL;
- else
- efl_exe_signal(inst->exe, EFL_EXE_SIGNAL_USR2);
- efl_event_callback_del(inst->exe, EFL_TASK_EVENT_EXIT, runner_exe_del, inst);
- efl_exe_signal(inst->exe, EFL_EXE_SIGNAL_TERM);
- inst->exe = NULL;
- instances = eina_list_remove(instances, inst);
- eina_hash_free(inst->allowed_pids);
- eina_list_free(inst->tooltip_surfaces);
- free(inst);
-}
-
-static Evas_Object *
-runner_gadget_configure(Evas_Object *g)
-{
- Instance *inst = evas_object_data_get(g, "runner");
- if (inst->ci->sandbox)
- {
- if (inst->gadget_resource)
- e_gadget_send_gadget_configure(inst->gadget_resource);
- return NULL;
- }
- else
- return config_runner(inst->ci, e_comp_object_util_zone_get(g));
-}
-
-static void
-runner_created(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- if (inst->box != event_info) return;
- inst->anchor = e_gadget_site_anchor_get(obj);
- e_gadget_configure_cb_set(inst->box, runner_gadget_configure);
- evas_object_smart_callback_del_full(obj, "gadget_created", runner_created, data);
- if (e_gadget_site_is_desklock(obj))
- evas_object_show(inst->obj);
- else if (!e_desklock_state_get())
- evas_object_show(inst->obj);
- runner_run(inst);
-}
-
-
-static void
-gadget_unbind(struct wl_resource *resource)
-{
- Instance *inst = wl_resource_get_user_data(resource);
- inst->gadget_resource = NULL;
-}
-
-static void
-gadget_open_uri(struct wl_client *client EINA_UNUSED, struct wl_resource *resource EINA_UNUSED, const char *uri)
-{
- //Instance *inst = wl_resource_get_user_data(resource);
-
- /* FIXME: rate limit? */
- e_util_open(uri, NULL);
-}
-
-static void
-gadget_set_tooltip(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, struct wl_resource *surface)
-{
- Instance *inst = wl_resource_get_user_data(resource);
-
- inst->tooltip_surfaces = eina_list_append(inst->tooltip_surfaces, surface);
-}
-
-static const struct e_gadget_interface _gadget_interface =
-{
- .open_uri = gadget_open_uri,
- .set_tooltip = gadget_set_tooltip,
-};
-
-static void
-gadget_bind(struct wl_client *client, void *data, uint32_t version, uint32_t id)
-{
- struct wl_resource *res;
- Instance *inst = data;
- pid_t pid;
- Evas_Object *site;
-
- wl_client_get_credentials(client, &pid, NULL, NULL);
- if (pid != efl_exe_pid_get(inst->exe))
- {
- wl_client_post_no_memory(client);
- return;
- }
-
- res = wl_resource_create(client, &e_gadget_interface, version, id);
- wl_resource_set_implementation(res, &_gadget_interface, data, gadget_unbind);
- inst->gadget_resource = res;
- site = e_gadget_site_get(inst->box);
- e_gadget_send_gadget_orient(res, e_gadget_site_orient_get(site));
- e_gadget_send_gadget_gravity(res, e_gadget_site_gravity_get(site));
- e_gadget_send_gadget_anchor(res, e_gadget_site_anchor_get(site));
-}
-
-static void
-ar_bind(struct wl_client *client, void *data, uint32_t version, uint32_t id)
-{
- struct wl_resource *res;
- Instance *inst = data;
- int v;
- const void *ar_interface;
- pid_t pid;
-
- wl_client_get_credentials(client, &pid, NULL, NULL);
- if (pid != efl_exe_pid_get(inst->exe))
- {
- wl_client_post_no_memory(client);
- return;
- }
- ar_interface = e_comp_wl_extension_action_route_interface_get(&v);
-
- if (!(res = wl_resource_create(client, &action_route_interface, MIN(v, version), id)))
- {
- wl_client_post_no_memory(client);
- return;
- }
-
- wl_resource_set_implementation(res, ar_interface, inst->allowed_pids, NULL);
-}
-
-static void
-child_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- Evas_Object *ext;
-
- inst->popup.obj = NULL;
- inst->popup.content = NULL;
- ext = evas_object_data_get(obj, "extracted");
- elm_box_unpack_all(obj);
- inst->extracted = eina_list_remove(inst->extracted, ext);
- evas_object_hide(ext);
-}
-
-static void
-child_added(void *data, const Efl_Event *ev)
-{
- Evas_Object *popup, *bx;
- Eo *event_info = ev->info;
- E_Zone *zone = e_comp_object_util_zone_get(ev->object);
- Instance *inst = data;
-
- if (!efl_canvas_wl_surface_extract(event_info)) return;
- inst->extracted = eina_list_append(inst->extracted, event_info);
- inst->popup.content = event_info;
-
- popup = elm_popup_add(e_comp->elm);
- e_comp_object_util_del_list_append(event_info, popup);
- E_EXPAND(popup);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- bx = elm_box_add(popup);
- E_EXPAND(event_info);
- E_FILL(event_info);
- elm_box_homogeneous_set(bx, 1);
- evas_object_show(bx);
- evas_object_show(event_info);
- elm_box_pack_end(bx, event_info);
- elm_object_content_set(popup, bx);
-
- inst->popup.obj = popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_move(popup, zone->x, zone->y);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center(popup);
- evas_object_show(popup);
- e_comp_canvas_feed_mouse_up(0);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_add(bx, EVAS_CALLBACK_DEL, child_close, inst);
- evas_object_data_set(bx, "extracted", event_info);
- evas_object_focus_set(event_info, 1);
-}
-
-static void
-extracted_del(Instance *inst, Evas_Object *ext)
-{
- inst->extracted = eina_list_remove(inst->extracted, ext);
- evas_object_hide(ext);
-}
-
-static void
-popup_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- Evas_Object *ext;
-
- inst->ctxpopup.obj = NULL;
- inst->ctxpopup.content = NULL;
- ext = evas_object_data_get(obj, "extracted");
- elm_box_unpack_all(obj);
- extracted_del(inst, ext);
-}
-
-static void
-popup_dismissed(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- evas_object_del(obj);
-}
-
-static void
-popup_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- elm_ctxpopup_dismiss(inst->ctxpopup.obj);
- evas_object_del(elm_object_content_get(inst->ctxpopup.obj));
-}
-
-static void
-popup_hints_update(Evas_Object *obj)
-{
- double w, h;
- E_Zone *zone = e_comp_object_util_zone_get(obj);
-
- evas_object_size_hint_weight_get(obj, &w, &h);
- w = E_CLAMP(w, 0, 0.5);
- h = E_CLAMP(h, 0, 0.5);
-
- if ((w > 0) && (h > 0))
- {
- evas_object_size_hint_min_set(obj, w * zone->w, h * zone->h);
- evas_object_size_hint_max_set(obj, w * zone->w, h * zone->h);
- }
- if ((!EINA_DBL_NONZERO(w)) && (!EINA_DBL_NONZERO(h)))
- {
- int ww, hh;
- evas_object_geometry_get(obj, NULL, NULL, &ww, &hh);
- evas_object_size_hint_min_set(obj, ww, hh);
- }
- E_WEIGHT(obj, 0, 0);
-}
-
-static void
-popup_hints(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- evas_object_event_callback_del_full(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, popup_hints, data);
- popup_hints_update(obj);
- evas_object_event_callback_add(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, popup_hints, data);
-}
-
-static void
-tooltip_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Tooltip *tt = data;
- Instance *inst = evas_object_data_get(tt->tooltip_content, "instance");
-
- tt->tooltip_content = NULL;
- inst->tooltip_surfaces = eina_list_remove(inst->tooltip_surfaces, tt->tooltip_surface);
- tt->tooltip_surface = NULL;
- elm_object_tooltip_unset(tt->obj);
- extracted_del(inst, obj);
-}
-
-static void
-tooltip_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Tooltip *tt = data;
-
- elm_box_unpack_all(obj);
- if (tt->tooltip_content) evas_object_hide(tt->tooltip_content);
- tt->tooltip_content = NULL;
- tt->tooltip_surface = NULL;
-}
-
-static void
-tooltip_hints(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- int w, h;
- evas_object_size_hint_aspect_get(obj, NULL, &w, &h);
- evas_object_size_hint_min_set(obj, w, h);
-}
-
-static Evas_Object *
-tooltip_content_cb(void *data, Evas_Object *obj EINA_UNUSED, Evas_Object *tooltip)
-{
- Evas_Object *bx;
- Tooltip *tt = data;
-
- bx = elm_box_add(tooltip);
- evas_object_pass_events_set(bx, 1);
- evas_object_event_callback_add(bx, EVAS_CALLBACK_DEL, tooltip_hide, tt);
- elm_box_pack_end(bx, tt->tooltip_content);
- evas_object_show(tt->tooltip_content);
- elm_box_recalculate(bx);
- evas_object_show(bx);
- return bx;
-}
-
-static void
-popup_added(void *data, const Efl_Event *ev)
-{
- Instance *inst = data;
- Eo *event_info = ev->info;
- Evas_Object *bx;
-
- if (!efl_canvas_wl_surface_extract(event_info)) return;
- inst->extracted = eina_list_append(inst->extracted, event_info);
- if (inst->tooltip_surfaces)
- {
- Eina_List *l;
- struct wl_resource *surface;
-
- EINA_LIST_FOREACH(inst->tooltip_surfaces, l, surface)
- if (event_info == efl_canvas_wl_extracted_surface_object_find(surface))
- {
- Evas_Object *base = efl_canvas_wl_surface_parent_surface_get(event_info);
- Tooltip *tt = NULL;
-
- //FIXME: if (inst->tooltip_content) error
- if (base && efl_canvas_wl_surface_extracted_get(base))
- {
- if (base == inst->popup.content)
- tt = &inst->popup;
- else if (base == inst->ctxpopup.content)
- tt = &inst->ctxpopup;
- }
- else // base tooltip
- tt = &inst->base;
- if (tt)
- {
- tt->tooltip_surface = surface;
- tt->tooltip_content = event_info;
- evas_object_data_set(event_info, "instance", inst);
- evas_object_pass_events_set(event_info, 1);
- E_FILL(event_info);
- tooltip_hints(NULL, NULL, event_info, NULL);
- evas_object_event_callback_add(event_info, EVAS_CALLBACK_DEL, tooltip_del, tt);
- evas_object_event_callback_add(event_info, EVAS_CALLBACK_CHANGED_SIZE_HINTS, tooltip_hints, tt);
- elm_object_tooltip_content_cb_set(tt->obj, tooltip_content_cb, tt, NULL);
- }
- else
- {
- inst->extracted = eina_list_remove(inst->extracted, event_info);
- evas_object_hide(event_info);
- }
- return;
- }
- }
-
- //FIXME: if (inst->ctxpopup.obj) error
-
- inst->ctxpopup.obj = elm_ctxpopup_add(inst->box);
- inst->ctxpopup.content = event_info;
- elm_object_style_set(inst->ctxpopup.obj, "noblock");
- evas_object_smart_callback_add(inst->ctxpopup.obj, "dismissed", popup_dismissed, inst);
- evas_object_event_callback_add(event_info, EVAS_CALLBACK_DEL, popup_hide, inst);
-
- bx = elm_box_add(inst->ctxpopup.obj);
- popup_hints_update(event_info);
- E_FILL(event_info);
- evas_object_event_callback_add(event_info, EVAS_CALLBACK_CHANGED_SIZE_HINTS, popup_hints, inst);
- evas_object_show(bx);
- elm_box_pack_end(bx, event_info);
- elm_box_recalculate(bx);
- evas_object_show(event_info);
- evas_object_data_set(bx, "extracted", event_info);
- evas_object_event_callback_add(bx, EVAS_CALLBACK_DEL, popup_del, inst);
- elm_object_content_set(inst->ctxpopup.obj, bx);
-
- e_gadget_util_ctxpopup_place(inst->box, inst->ctxpopup.obj, NULL);
- evas_object_show(inst->ctxpopup.obj);
- evas_object_focus_set(event_info, 1);
-}
-
-static void
-seat_added(void *data EINA_UNUSED, const Efl_Event *ev)
-{
- efl_canvas_wl_seat_keymap_set(ev->object, NULL, e_comp_wl->xkb.state, e_comp_wl->xkb.map_string, &e_comp_wl->kbd.keys);
- efl_canvas_wl_seat_key_repeat_set(ev->object, NULL, e_config->keyboard.repeat_rate, e_config->keyboard.repeat_delay);
-}
-
-static void
-runner_hints(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- int w, h;
- Evas_Aspect_Control aspect;
-
- evas_object_size_hint_min_get(obj, &w, &h);
- evas_object_size_hint_min_set(inst->box, w, h);
- evas_object_size_hint_max_get(obj, &w, &h);
- evas_object_size_hint_max_set(inst->box, w, h);
- evas_object_size_hint_aspect_get(obj, &aspect, &w, &h);
- evas_object_size_hint_aspect_set(inst->box, aspect, w, h);
-}
-
-static void
-runner_menu_bugreport(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- char *url = data;
- e_util_open(url, NULL);
- free(url);
-}
-
-static void
-runner_menu(void *data, Evas_Object *obj, void *event_info)
-{
- E_Menu *m = event_info;
- Instance *inst = data;
-
- if (inst->ci->sandbox)
- {
- E_Menu_Item *mi;
- E_Menu *subm;
- Efreet_Desktop *ed = eina_hash_find(sandbox_gadgets, e_gadget_type_get(obj));
- char buf[1024];
-
- e_menu_title_set(m, ed->name);
-
- subm = e_menu_new();
- snprintf(buf, sizeof(buf), _("Version: %s"), (char*)eina_hash_find(ed->x, "X-Gadget-Version"));
- e_menu_title_set(subm, buf);
-
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Details"));
- e_menu_item_submenu_set(mi, subm);
- e_object_unref(E_OBJECT(subm));
-
- mi = e_menu_item_new(subm);
- snprintf(buf, sizeof(buf), "PID: %u", efl_exe_pid_get(inst->exe));
- e_menu_item_label_set(mi, buf);
- e_menu_item_disabled_set(mi, 1);
-
- mi = e_menu_item_new(subm);
- e_menu_item_label_set(mi, _("Report bug"));
- e_util_menu_item_theme_icon_set(mi, "dialog-error");
- e_menu_item_callback_set(mi, runner_menu_bugreport, eina_strdup(eina_hash_find(ed->x, "X-Gadget-Bugreport")));
- }
- else
- {
- char buf[1024], *p;
-
- strncpy(buf, inst->ci->cmd, sizeof(buf) - 1);
- p = strchr(buf, ' ');
- if (p) p[0] = 0;
- e_menu_title_set(m, ecore_file_file_get(buf));
- }
-}
-
-static Evas_Object *
-gadget_create(Evas_Object *parent, Config_Item *ci, int *id, E_Gadget_Site_Orient orient)
-{
- Instance *inst;
- int ar_version;
-
- inst = E_NEW(Instance, 1);
- instances = eina_list_append(instances, inst);
- inst->ci = ci;
- inst->orient = orient;
- if (!inst->ci)
- inst->ci = _conf_item_get(id);
- inst->ci->inst = inst;
- inst->allowed_pids = eina_hash_int32_new(NULL);
- inst->obj = efl_add(EFL_CANVAS_WL_CLASS, e_comp->evas);
- if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
- {
- efl_canvas_wl_seat_keymap_set(inst->obj, NULL, e_comp_wl->xkb.state, e_comp_wl->xkb.map_string, &e_comp_wl->kbd.keys);
- efl_canvas_wl_seat_key_repeat_set(inst->obj, NULL, e_config->keyboard.repeat_rate, e_config->keyboard.repeat_delay);
- e_comp_wl->efl_wls = eina_list_append(e_comp_wl->efl_wls, inst->obj);
- }
- E_EXPAND(inst->obj);
- E_FILL(inst->obj);
- efl_canvas_wl_aspect_propagate_set(inst->obj, 1);
- efl_canvas_wl_minmax_propagate_set(inst->obj, 1);
- efl_canvas_wl_global_add(inst->obj, &e_gadget_interface, 1, inst, gadget_bind);
- efl_event_callback_add(inst->obj, EFL_CANVAS_WL_EVENT_CHILD_ADDED, child_added, inst);
- efl_event_callback_add(inst->obj, EFL_CANVAS_WL_EVENT_POPUP_ADDED, popup_added, inst);
- if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
- efl_event_callback_add(inst->obj, EFL_CANVAS_WL_EVENT_SEAT_ADDED, seat_added, inst);
- e_comp_wl_extension_action_route_interface_get(&ar_version);
- efl_canvas_wl_global_add(inst->obj, &action_route_interface, ar_version, inst, ar_bind);
- evas_object_event_callback_add(inst->obj, EVAS_CALLBACK_MOUSE_DOWN, mouse_down, inst);
- evas_object_smart_callback_add(parent, "gadget_created", runner_created, inst);
- evas_object_smart_callback_add(parent, "gadget_removed", runner_removed, inst);
- evas_object_smart_callback_add(parent, "gadget_site_anchor", runner_site_anchor, inst);
- evas_object_smart_callback_add(parent, "gadget_site_gravity", runner_site_gravity, inst);
- inst->base.obj = inst->box = elm_box_add(e_comp->elm);
- evas_object_data_set(inst->box, "runner", inst);
- evas_object_smart_callback_add(inst->box, "gadget_menu", runner_menu, inst);
- evas_object_event_callback_add(inst->box, EVAS_CALLBACK_DEL, runner_del, inst);
- evas_object_event_callback_add(inst->obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, runner_hints, inst);
- elm_box_homogeneous_set(inst->box, 1);
- elm_box_pack_end(inst->box, inst->obj);
- return inst->box;
-}
-
-static Evas_Object *
-runner_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Evas_Object *obj;
- Config_Item *ci = NULL;
-
- if (orient) return NULL;
- if (*id > 0) ci = _conf_item_get(id);
- if ((*id < 0) || ((ci) && (ci->inst)))
- {
- obj = elm_image_add(parent);
- elm_image_file_set(obj, e_theme_edje_file_get(NULL, "e/icons/modules-launcher"), "e/icons/modules-launcher");
- evas_object_size_hint_aspect_set(obj, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
- return obj;
- }
- return gadget_create(parent, ci, id, orient);
-}
-
-static void
-runner_exe_del(void *data, const Efl_Event *ev)
-{
- Instance *inst = data;
-
- if ((!instances) || (!eina_list_data_find(instances, inst))) return;
- switch (inst->ci->exit_mode)
- {
- case EXIT_MODE_RESTART:
- /* FIXME: probably notify? */
- if (efl_task_exit_code_get(ev->object) == 255) //exec error
- e_gadget_del(inst->box);
- else
- runner_run(inst);
- break;
- case EXIT_MODE_DELETE:
- e_gadget_del(inst->box);
- break;
- }
-}
-
-///////////////////////////////
-
-static Evas_Object *
-sandbox_create(Evas_Object *parent, const char *type, int *id, E_Gadget_Site_Orient orient)
-{
- Efreet_Desktop *ed = eina_hash_find(sandbox_gadgets, type);
- Config_Item *ci = NULL;
-
- if (*id > 0) ci = _conf_item_get(id);
- if ((*id < 0) || (ci && ci->inst))
- {
- if (ed->x)
- {
- const char *orients = eina_hash_find(ed->x, "X-Gadget-Orientations");
-
- if (orients)
- {
- const char *ostring[] =
- {
- "None",
- "Horizontal",
- "Vertical",
- };
- const char *v, *val = orients;
- Eina_Bool found = EINA_FALSE;
-
- v = strchr(val, ';');
- do
- {
- if (v)
- {
- if (!memcmp(val, ostring[orient], v - val))
- {
- found = EINA_TRUE;
- break;
- }
- val = v + 1;
- v = strchr(val, ';');
- }
- else
- {
- if (!strcmp(val, ostring[orient]))
- found = EINA_TRUE;
- break;
- }
- } while (val[0]);
- if (!found) return NULL;
- }
- }
- if (ed->icon)
- {
- int w, h;
- Eina_Bool fail = EINA_FALSE;
- Evas_Object *obj;
-
- obj = elm_image_add(parent);
- if (ed->icon[0] == '/')
- {
- if (eina_str_has_extension(ed->icon, ".edj"))
- fail = !elm_image_file_set(obj, ed->icon, "icon");
- else
- fail = !elm_image_file_set(obj, ed->icon, NULL);
- }
- else
- {
- if (!elm_image_file_set(obj, e_theme_edje_file_get(NULL, ed->icon), ed->icon))
- fail = !elm_icon_standard_set(obj, ed->icon);
- }
- if (!fail)
- {
- elm_image_object_size_get(obj, &w, &h);
- if (w && h)
- evas_object_size_hint_aspect_set(obj, EVAS_ASPECT_CONTROL_BOTH, w, h);
- return obj;
- }
- evas_object_del(obj);
- }
- }
- if (!ci)
- {
- ci = _conf_item_get(id);
- ci->exit_mode = EXIT_MODE_RESTART;
- }
- if (ci->id > 0)
- if (!eina_streq(ci->cmd, ed->exec))
- e_config_save_queue();
- eina_stringshare_replace(&ci->cmd, ed->exec);
- ci->sandbox = 1;
- return gadget_create(parent, ci, id, orient);
-}
-
-///////////////////////////////
-
-static void
-gadget_dir_add(const char *filename)
-{
- const char *file;
- char buf[PATH_MAX];
- Efreet_Desktop *ed;
-
- file = ecore_file_file_get(filename);
- snprintf(buf, sizeof(buf), "%s/%s.desktop", filename, file);
- ed = efreet_desktop_new(buf);
- EINA_SAFETY_ON_NULL_RETURN(ed);
- if (!ed->name)
- {
- char str[4096];
- snprintf(str, sizeof(str), _("A gadget .desktop file was found,</ps>"
- "but no [Name] entry was specified!</ps>"
- "%s"), buf);
- /* FIXME: maybe don't use notification here? T6630 */
- e_notification_util_send(_("Gadget Error"), str);
- efreet_desktop_free(ed);
- return;
- }
- if (ed->type != EFREET_DESKTOP_TYPE_APPLICATION)
- {
- char str[4096];
- snprintf(str, sizeof(str), _("A gadget .desktop file was found,</ps>"
- "but [Type] is not set to Application!</ps>"
- "%s"), buf);
- /* FIXME: maybe don't use notification here? T6630 */
- e_notification_util_send(_("Gadget Error"), str);
- efreet_desktop_free(ed);
- return;
- }
- if ((!ed->x) || (!eina_hash_find(ed->x, "X-Gadget-Version")))
- {
- char str[4096];
- snprintf(str, sizeof(str), _("A gadget .desktop file was found,</ps>"
- "but [X-Gadget-Version] is missing!</ps>"
- "%s"), buf);
- /* FIXME: maybe don't use notification here? T6630 */
- e_notification_util_send(_("Gadget Error"), str);
- efreet_desktop_free(ed);
- return;
- }
- if (!eina_hash_find(ed->x, "X-Gadget-Bugreport"))
- {
- char str[4096];
- snprintf(str, sizeof(str), _("A gadget .desktop file was found,</ps>"
- "but [X-Gadget-Bugreport] is missing!</ps>"
- "%s"), buf);
- /* FIXME: maybe don't use notification here? T6630 */
- e_notification_util_send(_("Gadget Error"), str);
- efreet_desktop_free(ed);
- return;
- }
- eina_hash_add(sandbox_gadgets, filename, ed);
- e_gadget_external_type_add("runner_sandbox", filename, sandbox_create, NULL);
- e_gadget_external_type_name_cb_set("runner_sandbox", filename, sandbox_name);
-}
-
-static Eina_Bool
-monitor_dir_create(void *d EINA_UNUSED, int t EINA_UNUSED, Eio_Monitor_Event *ev)
-{
- if (!eina_hash_find(sandbox_gadgets, ev->filename))
- gadget_dir_add(ev->filename);
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-monitor_dir_del(void *d EINA_UNUSED, int t EINA_UNUSED, Eio_Monitor_Event *ev)
-{
- eina_hash_del_by_key(sandbox_gadgets, ev->filename);
- e_gadget_external_type_del("runner_sandbox", ev->filename);
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-monitor_error(void *d EINA_UNUSED, int t EINA_UNUSED, Eio_Monitor_Error *ev EINA_UNUSED)
-{
- /* panic? */
- return ECORE_CALLBACK_RENEW;
-}
-
-
-static Eina_Bool
-list_filter_cb(void *d EINA_UNUSED, Eio_File *ls EINA_UNUSED, const Eina_File_Direct_Info *info)
-{
- struct stat st;
- char buf[PATH_MAX];
-
- if (info->type != EINA_FILE_DIR) return EINA_FALSE;
- if (info->path[info->name_start] == '.') return EINA_FALSE;
- snprintf(buf, sizeof(buf), "%s/%s.desktop", info->path, info->path + info->name_start);
- return !stat(info->path, &st);
-}
-
-static void
-list_main_cb(void *d EINA_UNUSED, Eio_File *ls EINA_UNUSED, const Eina_File_Direct_Info *info)
-{
- gadget_dir_add(info->path);
-}
-
-static void
-list_done_cb(void *d EINA_UNUSED, Eio_File *ls EINA_UNUSED)
-{
- gadget_lister = NULL;
-}
-
-static void
-list_error_cb(void *d EINA_UNUSED, Eio_File *ls EINA_UNUSED, int error EINA_UNUSED)
-{
- gadget_lister = NULL;
-}
-
-static Ecore_Job *desklock_job;
-
-static void
-desklock_job_cb()
-{
- Eina_List *l;
- Instance *inst;
-
- EINA_LIST_FOREACH(instances, l, inst)
- {
- if (e_gadget_site_is_desklock(e_gadget_site_get(inst->box))) continue;
- if (e_desklock_state_get())
- evas_object_hide(inst->obj);
- else
- evas_object_show(inst->obj);
- }
- desklock_job = NULL;
-}
-
-static Eina_Bool
-desklock_event()
-{
- if (!desklock_job) desklock_job = ecore_job_add(desklock_job_cb, NULL);
- return ECORE_CALLBACK_RENEW;
-}
-
-EINTERN void
-e_gadget_runner_init(void)
-{
- char buf[PATH_MAX];
-
- snprintf(buf, sizeof(buf), "%s/enlightenment/gadgets/%s/loader.so", e_prefix_lib_get(), MODULE_ARCH);
- if (!ecore_file_exists(buf)) return;
- runner_enabled = EINA_TRUE;
- conf_item_edd = E_CONFIG_DD_NEW("Config_Item", Config_Item);
-#undef T
-#undef D
-#define T Config_Item
-#define D conf_item_edd
- E_CONFIG_VAL(D, T, id, INT);
- E_CONFIG_VAL(D, T, exit_mode, INT);
- E_CONFIG_VAL(D, T, cmd, STR);
-
- conf_edd = E_CONFIG_DD_NEW("RConfig", RConfig);
-#undef T
-#undef D
-#define T RConfig
-#define D conf_edd
- E_CONFIG_LIST(D, T, items, conf_item_edd);
-
- rconfig = e_config_domain_load("e_gadget_runner", conf_edd);
- if (!rconfig) rconfig = E_NEW(RConfig, 1);
-
- e_gadget_type_add("runner", runner_create, runner_wizard);
- {
- snprintf(buf, sizeof(buf), "%s/enlightenment/gadgets/%s", e_prefix_lib_get(), MODULE_ARCH);
- gadget_monitor = eio_monitor_add(buf);
- gadget_lister = eio_file_direct_ls(buf, list_filter_cb, list_main_cb, list_done_cb, list_error_cb, NULL);
- }
- E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_DIRECTORY_CREATED, monitor_dir_create, NULL);
- E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_DIRECTORY_DELETED, monitor_dir_del, NULL);
- E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_ERROR, monitor_error, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_DESKLOCK, desklock_event, NULL);
-
- sandbox_gadgets = eina_hash_string_superfast_new((Eina_Free_Cb)efreet_desktop_free);
- {
- snprintf(buf, sizeof(buf), "/proc/%d/ns/pid", getpid());
- ns_fd = open(buf, O_RDONLY);
- }
-}
-
-EINTERN void
-e_gadget_runner_shutdown(void)
-{
- if (!runner_enabled) return;
- e_gadget_type_del("runner");
- e_gadget_external_type_del("runner_sandbox", NULL);
-
- if (rconfig)
- {
- Config_Item *ci;
-
- if (rconfig->config_dialog)
- {
- evas_object_hide(rconfig->config_dialog);
- evas_object_del(rconfig->config_dialog);
- }
-
- EINA_LIST_FREE(rconfig->items, ci)
- {
- eina_stringshare_del(ci->cmd);
- free(ci);
- }
-
- }
- E_FREE(rconfig);
- E_CONFIG_DD_FREE(conf_edd);
- E_CONFIG_DD_FREE(conf_item_edd);
- E_FREE_LIST(handlers, ecore_event_handler_del);
- E_FREE_FUNC(sandbox_gadgets, eina_hash_free);
- E_FREE_FUNC(gadget_lister, eio_file_cancel);
- E_FREE_FUNC(desklock_job, ecore_job_del);
- close(ns_fd);
- ns_fd = -1;
-}
-
-EINTERN void
-e_gadget_runner_save(void)
-{
- if (!runner_enabled) return;
- e_config_domain_save("e_gadget_runner", conf_edd, rconfig);
-}
diff --git a/src/bin/e_gadget_types.h b/src/bin/e_gadget_types.h
deleted file mode 100644
index 070592e1e7..0000000000
--- a/src/bin/e_gadget_types.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef E_GADGET_TYPES_H
-# define E_GADGET_TYPES_H
-
-typedef enum
-{
- E_GADGET_SITE_GRAVITY_NONE = 0,
- E_GADGET_SITE_GRAVITY_LEFT,
- E_GADGET_SITE_GRAVITY_RIGHT,
- E_GADGET_SITE_GRAVITY_TOP,
- E_GADGET_SITE_GRAVITY_BOTTOM,
- E_GADGET_SITE_GRAVITY_CENTER,
-} E_Gadget_Site_Gravity;
-
-typedef enum
-{
- E_GADGET_SITE_ORIENT_NONE = 0,
- E_GADGET_SITE_ORIENT_HORIZONTAL,
- E_GADGET_SITE_ORIENT_VERTICAL,
-} E_Gadget_Site_Orient;
-
-typedef enum
-{
- E_GADGET_SITE_ANCHOR_NONE = 0,
- E_GADGET_SITE_ANCHOR_LEFT = (1 << 0),
- E_GADGET_SITE_ANCHOR_RIGHT = (1 << 1),
- E_GADGET_SITE_ANCHOR_TOP = (1 << 2),
- E_GADGET_SITE_ANCHOR_BOTTOM = (1 << 3),
-} E_Gadget_Site_Anchor;
-
-#endif
diff --git a/src/bin/e_includes.h b/src/bin/e_includes.h
index 6ca9c9836f..e7ad9ac3e5 100644
--- a/src/bin/e_includes.h
+++ b/src/bin/e_includes.h
@@ -152,8 +152,6 @@
#include "e_utils.h"
#include "e_hints.h"
#include "e_comp_x_randr.h"
-#include "e_gadget.h"
-#include "e_bryce.h"
#ifdef HAVE_WAYLAND
# include "e_comp_wl.h"
diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c
index bb1c154fe9..eac50938f1 100644
--- a/src/bin/e_int_menus.c
+++ b/src/bin/e_int_menus.c
@@ -93,18 +93,6 @@ _e_int_menus_wallpaper_cb()
e_configure_registry_call("appearance/wallpaper", NULL, NULL);
}
-static void
-_e_int_menus_bryce_cb()
-{
- e_bryce_edit(NULL);
-}
-
-static void
-_e_int_menus_desktop_gadget_add_cb()
-{
- e_gadget_site_desktop_edit(e_comp->canvas->gadget_site);
-}
-
#ifdef ISCOMFITOR
static void
_TEST_ADD(void *data, E_Dialog *dia EINA_UNUSED)
@@ -367,16 +355,6 @@ e_int_menus_desktops_new(void)
e_menu_item_callback_set(mi, _e_int_menus_wallpaper_cb, NULL);
mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Add Gadget Bar (EXPERIMENTAL)"));
- e_util_menu_item_theme_icon_set(mi, "list-add");
- e_menu_item_callback_set(mi, _e_int_menus_bryce_cb, NULL);
-
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Add Gadgets To Desktop"));
- e_util_menu_item_theme_icon_set(mi, "list-add");
- e_menu_item_callback_set(mi, _e_int_menus_desktop_gadget_add_cb, NULL);
-
- mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
mi = e_menu_item_new(m);
diff --git a/src/bin/e_main.c b/src/bin/e_main.c
index 85a466c4cb..7209c933cb 100644
--- a/src/bin/e_main.c
+++ b/src/bin/e_main.c
@@ -944,11 +944,6 @@ main(int argc, char **argv)
TS("E_Remember Init Done");
_e_main_shutdown_push(e_remember_shutdown);
- TS("E_Gadget Init");
- e_gadget_init();
- TS("E_Gadget Init Done");
- _e_main_shutdown_push((void*)e_gadget_shutdown);
-
TS("E_Gadcon Init");
if (!e_gadcon_init())
{
@@ -1064,14 +1059,6 @@ main(int argc, char **argv)
_e_main_modules_load(safe_mode);
TS("Load Modules Done");
- if (E_EFL_VERSION_MINIMUM(1, 17, 99))
- {
- TS("Bryce Init");
- e_bryce_init();
- TS("Bryce Init Done");
- _e_main_shutdown_push((void*)e_bryce_shutdown);
- }
-
TS("E_Shelf Init");
if (!e_shelf_init())
{
diff --git a/src/bin/generated/meson.build b/src/bin/generated/meson.build
index dff59bc72e..9d8e7db485 100644
--- a/src/bin/generated/meson.build
+++ b/src/bin/generated/meson.build
@@ -4,7 +4,6 @@ protos = [
'../../protocol/www.xml',
'../../protocol/efl-aux-hints.xml',
'../../protocol/action_route.xml',
- '../../protocol/e-gadget.xml',
'@0@/unstable/xdg-foreign/xdg-foreign-unstable-v1.xml'.format(dir_wayland_protocols),
'@0@/unstable/relative-pointer/relative-pointer-unstable-v1.xml'.format(dir_wayland_protocols),
'@0@/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml'.format(dir_wayland_protocols),
@@ -23,12 +22,5 @@ gadget_loader_protos = [
'../../protocol/e-gadget.xml',
]
-gadget_loader_proto_files = []
-
-foreach p: gadget_loader_protos
- gadget_loader_proto_files += gen_scanner_client.process(p)
- gadget_loader_proto_files += gen_scanner_impl.process(p)
-endforeach
-
wayland_proto_c = proto_c
wayland_proto_h = proto_h
diff --git a/src/bin/meson.build b/src/bin/meson.build
index d1ad052941..87079a658d 100644
--- a/src/bin/meson.build
+++ b/src/bin/meson.build
@@ -74,8 +74,6 @@ src = [
'e_backlight.c',
'e_bg.c',
'e_bindings.c',
- 'e_bryce.c',
- 'e_bryce_editor.c',
'e_client.c',
'e_client_volume.c',
'e_color.c',
@@ -118,7 +116,6 @@ src = [
'e_font.c',
'e_gadcon.c',
'e_gadcon_popup.c',
- 'e_gadget.c',
'e_grabinput.c',
'e_grab_dialog.c',
'e_hints.c',
@@ -248,7 +245,6 @@ hdr = [
'e_backlight.h',
'e_bg.h',
'e_bindings.h',
- 'e_bryce.h',
'e_client.h',
'e_client_volume.h',
'e_client.x',
@@ -295,8 +291,6 @@ hdr = [
'e_font.h',
'e_gadcon.h',
'e_gadcon_popup.h',
- 'e_gadget.h',
- 'e_gadget_types.h',
'e_grabinput.h',
'e_grab_dialog.h',
'e.h',
@@ -411,7 +405,6 @@ if config_h.has('HAVE_WAYLAND') == true
'e_comp_wl.c',
'e_comp_wl_extensions.c',
'e_comp_wl_extensions_tizen.c',
- 'e_gadget_runner.c',
wayland_proto_c,
wayland_proto_h
]
@@ -559,20 +552,5 @@ executable('enlightenment_ckpasswd',
)
suid_exes += join_paths(dir_e_utils, 'enlightenment_ckpasswd')
-if config_h.has('HAVE_WAYLAND') == true
- shared_library('loader',
- ['e_gadget_loader.c', gadget_loader_proto_files],
- name_prefix: '',
- include_directories: include_directories('../..'),
- dependencies: [
- dep_dl,
- dependency('uuid'),
- dependency('elementary'),
- dependency('ecore-wl2'),
- dependency('wayland-client'),
- cc.find_library('uuid')],
- install_dir: join_paths([dir_lib, 'enlightenment/gadgets/', module_arch]),
- install: true)
-endif
subdir('e_fm')
subdir('system')
diff --git a/src/modules/backlight/e_mod_main.c b/src/modules/backlight/e_mod_main.c
index 96c7d756d0..3d99c4f401 100644
--- a/src/modules/backlight/e_mod_main.c
+++ b/src/modules/backlight/e_mod_main.c
@@ -10,7 +10,6 @@
*/
#include "e.h"
-#include "gadget/backlight.h"
/* gadcon requirements */
static E_Gadcon_Client *_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style);
@@ -470,8 +469,6 @@ E_API E_Module_Api e_modapi =
E_API void *
e_modapi_init(E_Module *m)
{
- e_modapi_gadget_init(m);
-
backlight_module = m;
e_gadcon_provider_register(&_gadcon_class);
E_LIST_HANDLER_APPEND(handlers, E_EVENT_BACKLIGHT_CHANGE, _backlight_cb_changed, NULL);
@@ -487,10 +484,8 @@ e_modapi_init(E_Module *m)
}
E_API int
-e_modapi_shutdown(E_Module *m)
+e_modapi_shutdown(E_Module *m EINA_UNUSED)
{
- e_modapi_gadget_shutdown(m);
-
if (act)
{
e_action_predef_name_del("Screen", "Backlight Controls");
@@ -499,13 +494,12 @@ e_modapi_shutdown(E_Module *m)
}
E_FREE_LIST(handlers, ecore_event_handler_del);
e_gadcon_provider_unregister(&_gadcon_class);
+ backlight_module = NULL;
return 1;
}
E_API int
-e_modapi_save(E_Module *m)
+e_modapi_save(E_Module *m EINA_UNUSED)
{
- e_modapi_gadget_save(m);
-
return 1;
}
diff --git a/src/modules/backlight/gadget/backlight.c b/src/modules/backlight/gadget/backlight.c
deleted file mode 100644
index 9eaf2d9c27..0000000000
--- a/src/modules/backlight/gadget/backlight.c
+++ /dev/null
@@ -1,302 +0,0 @@
-#include "backlight.h"
-
-typedef struct _Instance Instance;
-
-struct _Instance
-{
- Evas_Object *o_main;
- Evas_Object *o_backlight, *o_table, *o_slider;
- Evas_Object *popup, *box;
- E_Gadget_Site_Orient orient;
- double val;
-};
-
-static Eina_List *ginstances = NULL;
-static E_Action *act = NULL;
-static Eina_List *handlers;
-
-static void
-_backlight_gadget_update(Instance *inst)
-{
- Edje_Message_Float msg;
-
- if (EINA_FLT_EQ(inst->val, -1.0))
- msg.val = .75;
- else
- msg.val = inst->val;
- if (msg.val < 0.0) msg.val = 0.0;
- else if (msg.val > 1.0)
- msg.val = 1.0;
- edje_object_message_send(elm_layout_edje_get(inst->o_backlight), EDJE_MESSAGE_FLOAT, 0, &msg);
-}
-
-static void
-_backlight_level_set(Instance *inst, double val, Eina_Bool set_slider)
-{
- if (val > 1.0) val = 1.0;
- if (val < 0.0) val = 0.0;
- inst->val = val;
-
- if (set_slider)
- elm_slider_value_set(inst->o_slider, inst->val * 100);
-
- e_backlight_mode_set(e_comp_object_util_zone_get(inst->o_main), E_BACKLIGHT_MODE_NORMAL);
- e_backlight_level_set(e_comp_object_util_zone_get(inst->o_main), inst->val, 0.0);
- e_config->backlight.normal = inst->val;
- e_config_save_queue();
-}
-
-static void
-_slider_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->val = elm_slider_value_get(inst->o_slider) / 100;
- _backlight_level_set(inst, inst->val, EINA_FALSE);
-}
-
-static void
-_backlight_popup_dismissed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- E_FREE_FUNC(obj, evas_object_del);
- inst->popup = NULL;
-}
-
-static void
-_backlight_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->popup = NULL;
-}
-
-static void
-_backlight_popup_new(Instance *inst)
-{
- Evas_Object *o;
-
- if (inst->popup) return;
-
- e_backlight_mode_set(e_comp_object_util_zone_get(inst->o_main), E_BACKLIGHT_MODE_NORMAL);
- inst->val = e_backlight_level_get(e_comp_object_util_zone_get(inst->o_main));
- _backlight_gadget_update(inst);
-
- inst->popup = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(inst->popup, "noblock");
- evas_object_smart_callback_add(inst->popup, "dismissed", _backlight_popup_dismissed, inst);
- evas_object_event_callback_add(inst->popup, EVAS_CALLBACK_DEL, _backlight_popup_deleted, inst);
-
- inst->box = elm_box_add(e_comp->elm);
- elm_box_horizontal_set(inst->box, EINA_FALSE);
- evas_object_size_hint_weight_set(inst->box, 0.0, 1.0);
- evas_object_size_hint_align_set(inst->box, 0.0, 0.0);
- elm_object_content_set(inst->popup, inst->box);
- evas_object_show(inst->box);
-
- o = elm_slider_add(inst->box);
- elm_slider_horizontal_set(o, EINA_FALSE);
- elm_slider_inverted_set(o, EINA_TRUE);
- elm_slider_unit_format_set(o, "%.0f");
- elm_slider_indicator_show_set(o, EINA_FALSE);
- elm_slider_min_max_set(o, 1, 100.0);
- elm_slider_step_set(o, 0.05);
- elm_slider_span_size_set(o, 100);
- elm_slider_value_set(o, inst->val * 100.0);
- evas_object_smart_callback_add(o, "changed", _slider_cb, inst);
- elm_box_pack_end(inst->box, o);
- evas_object_show(o);
- inst->o_slider = o;
-
- e_gadget_util_ctxpopup_place(inst->o_main, inst->popup, inst->o_backlight);
- evas_object_show(inst->popup);
-}
-
-static void
-_backlight_cb_mouse_up(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event)
-{
- Instance *inst = data;
- Evas_Event_Mouse_Up *ev = event;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
-
- if (ev->button == 1)
- {
- if (inst->popup) elm_ctxpopup_dismiss(inst->popup);
- else _backlight_popup_new(inst);
- }
-}
-
-static void
-_backlight_cb_mouse_wheel(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event)
-{
- Evas_Event_Mouse_Wheel *ev = event;
- Instance *inst = data;
-
- inst->val = e_backlight_level_get(e_comp_object_util_zone_get(inst->o_main));
- if (ev->z > 0)
- _backlight_level_set(inst, inst->val - 0.1, EINA_TRUE);
- else if (ev->z < 0)
- _backlight_level_set(inst, inst->val + 0.1, EINA_TRUE);
-}
-
-static void
-_e_mod_action_cb(E_Object *obj EINA_UNUSED,
- const char *params)
-{
- Eina_List *l;
- Instance *inst;
-
- EINA_LIST_FOREACH(ginstances, l, inst)
- {
- if (params) _backlight_level_set(inst, inst->val + atof(params), EINA_TRUE);
- }
-}
-
-static Eina_Bool
-_backlight_cb_mod_init_end(void *d EINA_UNUSED, int type EINA_UNUSED, void *ev EINA_UNUSED)
-{
- Eina_List *l;
- Instance *inst;
-
- EINA_LIST_FOREACH(ginstances, l, inst)
- {
- inst->val = e_backlight_level_get(e_comp_object_util_zone_get(inst->o_main));
- _backlight_gadget_update(inst);
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_backlight_cb_changed(void *d EINA_UNUSED, int type EINA_UNUSED, void *ev EINA_UNUSED)
-{
- Eina_List *l;
- Instance *inst;
-
- EINA_LIST_FOREACH(ginstances, l, inst)
- {
- inst->val = e_backlight_level_get(e_comp_object_util_zone_get(inst->o_main));
- _backlight_gadget_update(inst);
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Evas_Object *
-_backlight_gadget_configure(Evas_Object *g EINA_UNUSED)
-{
- if (e_configure_registry_exists("screen/power_management"))
- {
- e_configure_registry_call("screen/power_management", NULL, NULL);
- }
- return NULL;
-}
-
-static void
-_backlight_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Evas_Coord w, h;
- Instance *inst = data;
-
- edje_object_parts_extends_calc(elm_layout_edje_get(inst->o_backlight), 0, 0, &w, &h);
- if (w < 1) w = 1;
- if (h < 1) h = 1;
- evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, w, h);
-}
-
-static void
-_backlight_gadget_created_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst->o_main)
- {
- e_gadget_configure_cb_set(inst->o_main, _backlight_gadget_configure);
-
- inst->o_backlight = elm_layout_add(inst->o_main);
- E_EXPAND(inst->o_backlight);
- E_FILL(inst->o_backlight);
- if (inst->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(inst->o_backlight,
- "base/theme/gadget/backlight",
- "e/gadget/backlight/main_vert");
- else
- e_theme_edje_object_set(inst->o_backlight,
- "base/theme/gadget/backlight",
- "e/gadget/backlight/main");
- evas_object_event_callback_add(inst->o_backlight,
- EVAS_CALLBACK_MOUSE_UP,
- _backlight_cb_mouse_up,
- inst);
- evas_object_event_callback_add(inst->o_backlight,
- EVAS_CALLBACK_MOUSE_WHEEL,
- _backlight_cb_mouse_wheel,
- inst);
- evas_object_event_callback_add(inst->o_backlight,
- EVAS_CALLBACK_RESIZE,
- _backlight_resize_cb,
- inst);
- elm_box_pack_end(inst->o_main, inst->o_backlight);
- evas_object_show(inst->o_backlight);
- if (!EINA_FLT_EQ(inst->val, -1.0))
- inst->val = e_backlight_level_get(e_comp_object_util_zone_get(inst->o_main));
- _backlight_gadget_update(inst);
- }
- evas_object_smart_callback_del_full(obj, "gadget_created", _backlight_gadget_created_cb, data);
-}
-
-static void
-backlight_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst->popup)
- elm_ctxpopup_dismiss(inst->popup);
- backlight_shutdown();
- ginstances = eina_list_remove(ginstances, inst);
- free(inst);
-}
-
-EINTERN Evas_Object *
-backlight_gadget_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Instance *inst;
-
- inst = E_NEW(Instance, 1);
- inst->o_main = elm_box_add(parent);
- inst->orient = orient;
- if (*id != -1)
- backlight_init();
- else
- inst->val = -1.0;
- evas_object_smart_callback_add(parent, "gadget_created", _backlight_gadget_created_cb, inst);
- if (*id != -1)
- {
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, backlight_del, inst);
- ginstances = eina_list_append(ginstances, inst);
- }
- return inst->o_main;
-}
-
-EINTERN void
-backlight_init(void)
-{
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_BACKLIGHT_CHANGE, _backlight_cb_changed, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_MODULE_INIT_END, _backlight_cb_mod_init_end, NULL);
- act = e_action_add("backlight");
- if (act)
- {
- act->func.go = _e_mod_action_cb;
- e_action_predef_name_set(N_("Screen"), N_("Backlight Controls"), "backlight",
- NULL, "syntax: brightness change(-1.0 - 1.0), example: -0.1", 1);
- }
-}
-
-EINTERN void
-backlight_shutdown(void)
-{
- if (act)
- {
- e_action_predef_name_del("Screen", "Backlight Controls");
- e_action_del("backlight");
- act = NULL;
- }
- E_FREE_LIST(handlers, ecore_event_handler_del);
-}
diff --git a/src/modules/backlight/gadget/backlight.h b/src/modules/backlight/gadget/backlight.h
deleted file mode 100644
index a6cfd1aedc..0000000000
--- a/src/modules/backlight/gadget/backlight.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef BACKLIGHT_H
-#define BACKLIGHT_H
-
-#include "e.h"
-
-EINTERN void *e_modapi_gadget_init(E_Module *m EINA_UNUSED);
-EINTERN int e_modapi_gadget_shutdown(E_Module *m EINA_UNUSED);
-EINTERN int e_modapi_gadget_save(E_Module *m EINA_UNUSED);
-
-EINTERN Evas_Object *backlight_gadget_create(Evas_Object *parent, int *id EINA_UNUSED, E_Gadget_Site_Orient orient);
-EINTERN void backlight_init(void);
-EINTERN void backlight_shutdown(void);
-
-#endif
diff --git a/src/modules/backlight/gadget/mod.c b/src/modules/backlight/gadget/mod.c
deleted file mode 100644
index f27ca80d46..0000000000
--- a/src/modules/backlight/gadget/mod.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "backlight.h"
-
-EINTERN void *
-e_modapi_gadget_init(E_Module *m)
-{
- e_gadget_type_add("Backlight", backlight_gadget_create, NULL);
- return m;
-}
-
-EINTERN int
-e_modapi_gadget_shutdown(E_Module *m EINA_UNUSED)
-{
- e_gadget_type_del("Backlight");
- return 1;
-}
-
-EINTERN int
-e_modapi_gadget_save(E_Module *m EINA_UNUSED)
-{
- return 1;
-}
-
diff --git a/src/modules/backlight/meson.build b/src/modules/backlight/meson.build
index c601cd6fcc..1507689583 100644
--- a/src/modules/backlight/meson.build
+++ b/src/modules/backlight/meson.build
@@ -1,5 +1,3 @@
src = files(
- 'e_mod_main.c',
- 'gadget/backlight.c',
- 'gadget/mod.c'
+ 'e_mod_main.c'
)
diff --git a/src/modules/bluez5/e_mod_main.c b/src/modules/bluez5/e_mod_main.c
index b3165ced97..bcac3ec9cc 100644
--- a/src/modules/bluez5/e_mod_main.c
+++ b/src/modules/bluez5/e_mod_main.c
@@ -34,96 +34,6 @@ _mod_icon_set(Evas_Object *base, Eina_Bool gadget)
/////////////////////////////////////////////////////////////////////////////
static void
-_gad_popup_dismiss(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- E_FREE_FUNC(obj, evas_object_del);
- inst->pop = NULL;
-}
-
-static void
-_gad_popup_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->pop = NULL;
-}
-
-static void
-_gad_popup_do(Instance *inst)
-{
- Evas_Object *o;
-
- if (inst->pop) return;
-
- inst->pop = o = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(o, "noblock");
- evas_object_smart_callback_add(o, "dismissed", _gad_popup_dismiss, inst);
- evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, _gad_popup_del, inst);
-
- inst->popcontent = o = ebluez5_popup_content_add(e_comp->elm, inst);
- elm_object_content_set(inst->pop, o);
- evas_object_show(o);
-
- e_gadget_util_ctxpopup_place(inst->o_bluez5, inst->pop, inst->o_bluez5);
- evas_object_show(inst->pop);
-}
-
-static void
-_gad_mouse_up(void *data, Evas *evas EINA_UNUSED,
- Evas_Object *obj EINA_UNUSED, void *event)
-{
- Instance *inst = data;
- Evas_Event_Mouse_Up *ev = event;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (ev->button != 1) return;
- if (!inst->pop) _gad_popup_do(inst);
- else elm_ctxpopup_dismiss(inst->pop);
-}
-
-static void
-_gad_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- instances = eina_list_remove(instances, inst);
- E_FREE(inst);
-}
-
-/* XXX: fill in later when we have gotten this far
-static Evas_Object *
-_gad_config(Evas_Object *g EINA_UNUSED)
-{
- if (e_configure_registry_exists("extensions/bluez5"))
- e_configure_registry_call("extensions/bluez5", NULL, NULL);
- return NULL;
-}
-*/
-
-static Evas_Object *
-_gad_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Evas_Object *o;
- Instance *inst = E_NEW(Instance, 1);
-
- if (!inst) return NULL;
- inst->id = *id;
- inst->orient = orient;
- inst->o_bluez5 = o = elm_layout_add(parent);
- _mod_icon_set(o, EINA_TRUE);
- evas_object_size_hint_aspect_set(o, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
-// XXX: fill in later when we have gotten this far
-// e_gadget_configure_cb_set(o, _gad_config);
- evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _gad_mouse_up, inst);
- if (*id != -1)
- evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, _gad_del, inst);
- instances = eina_list_append(instances, inst);
- return o;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-
-static void
_popup_del(Instance *inst)
{
E_FREE_FUNC(inst->popup, e_object_del);
@@ -279,10 +189,6 @@ ebluez5_popups_show(void)
{
if (!inst->popup) _popup_new(inst);
}
- else
- {
- if (!inst->pop) _gad_popup_do(inst);
- }
}
}
@@ -466,7 +372,6 @@ e_modapi_init(E_Module *m)
bz_init();
e_gadcon_provider_register(&_gc_class);
- e_gadget_type_add("Bluetooth", _gad_create, NULL);
return m;
}
@@ -494,9 +399,6 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
bz_shutdown();
ebluze5_popup_shutdown();
- e_gadget_type_del("Bluetooth");
- e_gadcon_provider_unregister(&_gc_class);
-
E_CONFIG_DD_FREE(conf_edd);
E_CONFIG_DD_FREE(conf_adapter_edd);
return 1;
diff --git a/src/modules/bluez5/e_mod_main.h b/src/modules/bluez5/e_mod_main.h
index e0bef146eb..c3b75e8a26 100644
--- a/src/modules/bluez5/e_mod_main.h
+++ b/src/modules/bluez5/e_mod_main.h
@@ -12,11 +12,7 @@ struct _Instance
// e_gadcon info
E_Gadcon_Client *gcc;
E_Gadcon_Popup *popup;
- // e_gadget info
- Evas_Object *pop;
- Evas_Object *popcontent;
int id;
- E_Gadget_Site_Orient orient;
};
typedef struct _Config Config;
diff --git a/src/modules/conf_display/e_int_config_desklock.c b/src/modules/conf_display/e_int_config_desklock.c
index 4466d62f82..06690fa83c 100644
--- a/src/modules/conf_display/e_int_config_desklock.c
+++ b/src/modules/conf_display/e_int_config_desklock.c
@@ -208,12 +208,6 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
free(cfdata);
}
-static void
-_cb_lockscreen_gadgets()
-{
- e_gadget_site_desklock_edit();
-}
-
static Evas_Object *
_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
@@ -276,9 +270,6 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
e_widget_disabled_set(cfdata->lock_cmd_entry,
(cfdata->desklock_auth_method != E_DESKLOCK_AUTH_METHOD_EXTERNAL));
- e_widget_list_object_append(ol, of, 1, 1, 0.5);
- ow = e_widget_button_add(evas, _("Configure Lockscreen Gadgets"), "configure", _cb_lockscreen_gadgets, NULL, NULL);
-
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
e_widget_toolbook_page_append(otb, NULL, _("Locking"), ol,
1, 1, 1, 0, 0.0, 0.0);
diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c
deleted file mode 100644
index b9727c2580..0000000000
--- a/src/modules/luncher/bar.c
+++ /dev/null
@@ -1,2066 +0,0 @@
-#include "luncher.h"
-static Eina_List *handlers;
-static Eina_Bool _bar_icon_preview_show(void *data);
-static Eina_Bool _bar_icon_preview_hide(void *data);
-static void _bar_icon_del(Instance *inst, Icon *ic);
-static void _bar_exec_new_show(void *data, Evas *e, Evas_Object *obj, void *event_data);
-static void _bar_icon_preview_menu_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED);
-
-static void
-_bar_aspect(Instance *inst)
-{
- Evas_Coord w, h;
-
- switch (e_gadget_site_orient_get(e_gadget_site_get(inst->o_main)))
- {
- case E_GADGET_SITE_ORIENT_VERTICAL:
- h = eina_list_count(inst->icons);
- w = 1;
- break;
- default:
- w = eina_list_count(inst->icons);
- h = 1;
- }
- evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, w, h);
-}
-
-static Eina_Bool
-_bar_check_for_duplicates(Icon *ic, E_Client *dupe)
-{
- Eina_List *l;
- E_Exec_Instance *ex;
-
- EINA_LIST_FOREACH(ic->execs, l, ex)
- if (eina_list_data_find(ex->clients, dupe)) return EINA_TRUE;
- return !!eina_list_data_find(ic->clients, dupe);
-}
-
-static Eina_Bool
-_bar_check_modifiers(Evas_Modifier *modifiers)
-{
- if ((evas_key_modifier_is_set(modifiers, "Alt")) ||
- (evas_key_modifier_is_set(modifiers, "Control")) ||
- (evas_key_modifier_is_set(modifiers, "Shift")))
- return EINA_TRUE;
- return EINA_FALSE;
-}
-
-static Evas_Object *
-_bar_gadget_configure(Evas_Object *g)
-{
- if (!luncher_config) return NULL;
- if (luncher_config->config_dialog) return NULL;
- Instance *inst = evas_object_data_get(g, "instance");
- return config_luncher(e_zone_current_get(), inst, EINA_TRUE);
-}
-
-static void
-_bar_popup_dismissed(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- E_FREE_FUNC(obj, evas_object_del);
-}
-
-static const char *
-_bar_location_get(Instance *inst)
-{
- const char *s = "float";
-
- E_Gadget_Site_Orient orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_main));
- E_Gadget_Site_Anchor anchor = e_gadget_site_anchor_get(e_gadget_site_get(inst->o_main));
-
- if (anchor & E_GADGET_SITE_ANCHOR_LEFT)
- {
- if (anchor & E_GADGET_SITE_ANCHOR_TOP)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "top";
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "left";
- break;
- case E_GADGET_SITE_ORIENT_NONE:
- s = "left";
- break;
- }
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "bottom";
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "left";
- break;
- case E_GADGET_SITE_ORIENT_NONE:
- s = "left";
- break;
- }
- }
- else
- s = "left";
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_RIGHT)
- {
- if (anchor & E_GADGET_SITE_ANCHOR_TOP)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "top";
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "right";
- break;
- case E_GADGET_SITE_ORIENT_NONE:
- s = "right";
- break;
- }
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "bottom";
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "right";
- break;
- case E_GADGET_SITE_ORIENT_NONE:
- s = "right";
- break;
- }
- }
- else
- s = "right";
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_TOP)
- s = "top";
- else if (anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- s = "bottom";
- else
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "bottom";
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "left";
- break;
- default:
- s = "bottom";
- break;
- }
- }
- return s;
-}
-
-static Icon *
-_bar_icon_match(Instance *inst, E_Client *ec)
-{
- Icon *ic = NULL, *ic2 = NULL;
- Eina_Bool has_desktop = EINA_FALSE;
- char ori[32];
-
- if (ec->exe_inst)
- {
- if (ec->exe_inst->desktop)
- has_desktop = EINA_TRUE;
- }
- if (has_desktop)
- {
- ic = eina_hash_find(inst->icons_desktop_hash, ec->exe_inst->desktop->orig_path);
- if ((ic) && (ic2 = eina_hash_find(inst->icons_clients_hash, &ec)))
- {
- ic2->execs = eina_list_remove(ic2->execs, ec->exe_inst);
- ic2->clients = eina_list_remove(ic2->clients, ec);
- if (ic2->client_cbs)
- {
- ic2->client_cbs = eina_list_remove(ic2->client_cbs, ec);
- evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_SHOW, _bar_exec_new_show, ic2);
- }
- if (!eina_list_count(ic2->execs) && !eina_list_count(ic2->clients))
- {
- eina_hash_del(inst->icons_clients_hash, ec, ic2);
- snprintf(ori, sizeof(ori), "e,state,off,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic2->o_layout, ori, "e");
- if (!ic2->in_order)
- _bar_icon_del(inst, ic2);
- }
- }
- }
- if (has_desktop && !ic)
- ic = eina_hash_find(inst->icons_clients_hash, &ec);
- if (!ic)
- ic = eina_hash_find(inst->icons_clients_hash, &ec);
-
- return ic;
-}
-
-static void
-_bar_instance_watch(void *data, E_Exec_Instance *ex, E_Exec_Watch_Type type)
-{
- Icon *ic = data;
- char ori[32];
-
- switch (type)
- {
- case E_EXEC_WATCH_STARTED:
- if (ic->starting) elm_layout_signal_emit(ic->o_layout, "e,state,started", "e");
- ic->starting = EINA_FALSE;
- if (!ic->execs && ic->inst->cfg->type != E_LUNCHER_MODULE_LAUNCH_ONLY)
- {
- snprintf(ori, sizeof(ori), "e,state,on,%s", _bar_location_get(ic->inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- }
- if (!eina_list_data_find(ic->execs, ex) && ic->inst->cfg->type != E_LUNCHER_MODULE_LAUNCH_ONLY)
- ic->execs = eina_list_append(ic->execs, ex);
- break;
- case E_EXEC_WATCH_TIMEOUT:
- case E_EXEC_WATCH_STOPPED:
- ic->exec = NULL;
- break;
- default:
- break;
- }
-}
-
-static void
-_bar_icon_del(Instance *inst, Icon *ic)
-{
- E_Client *ec;
-
- inst->icons = eina_list_remove(inst->icons, ic);
- if (ic->client_menu)
- evas_object_event_callback_del_full(ic->client_menu, EVAS_CALLBACK_HIDE, _bar_icon_preview_menu_hide, ic);
- if (ic->preview)
- _bar_icon_preview_hide(ic);
- if (!inst->main_del)
- _bar_aspect(inst);
- evas_object_del(ic->o_icon);
- evas_object_del(ic->o_layout);
- eina_hash_del_by_data(inst->icons_desktop_hash, ic);
- eina_hash_del_by_data(inst->icons_clients_hash, ic);
- if (ic->desktop)
- efreet_desktop_unref(ic->desktop);
- eina_list_free(ic->execs);
- eina_list_free(ic->clients);
- EINA_LIST_FREE(ic->client_cbs, ec)
- evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_SHOW, _bar_exec_new_show, ic);
- eina_stringshare_del(ic->icon);
- eina_stringshare_del(ic->key);
- if (ic->exec)
- e_exec_instance_watcher_del(ic->exec, _bar_instance_watch, ic);
- ic->exec = NULL;
- E_FREE_FUNC(ic->mouse_in_timer, ecore_timer_del);
- E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
- E_FREE(ic);
-}
-
-#if 0
-static void
-_bar_icon_menu_icon_mouse_out(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- elm_layout_signal_emit(obj, "e,state,unfocused", "e");
-}
-
-static void
-_bar_icon_menu_icon_mouse_in(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data)
-{
- Evas_Event_Mouse_In *ev = event_data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_bar_check_modifiers(ev->modifiers)) return;
-
- elm_layout_signal_emit(obj, "e,state,focused", "e");
-}
-
-static Evas_Object *
-_bar_icon_menu_item_new(Icon *ic, Evas_Object *popup, Evas_Object *parent, const char *name, const char *icon)
-{
- const char *path = NULL, *k = NULL;
- char buf[4096];
- int len = 0;
- Evas_Object *layout, *label, *img;
-
- layout = elm_layout_add(parent);
- e_theme_edje_object_set(layout, "e/gadget/luncher/preview",
- "e/gadget/luncher/preview");
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_IN, _bar_icon_menu_icon_mouse_in, NULL);
- evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_OUT, _bar_icon_menu_icon_mouse_out, NULL);
- elm_layout_signal_emit(layout, "e,state,icon,menu", "e");
- elm_box_pack_end(parent, layout);
- evas_object_data_set(layout, "popup", popup);
- evas_object_data_set(layout, "content", parent);
- evas_object_show(layout);
-
- label = elm_label_add(layout);
- elm_object_style_set(label, "luncher_preview");
- elm_label_ellipsis_set(label, EINA_TRUE);
- elm_object_text_set(label, name);
- evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
- elm_layout_content_set(layout, "e.swallow.title", label);
- evas_object_show(label);
-
- img = elm_icon_add(layout);
- evas_object_size_hint_aspect_set(img, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
- if (!icon)
- path = NULL;
- else if (strncmp(icon, "/", 1) && !ecore_file_exists(icon))
- {
- path = efreet_icon_path_find(e_config->icon_theme, icon, ic->inst->size);
- if (!path)
- {
- if (e_util_strcmp(e_config->icon_theme, "hicolor"))
- path = efreet_icon_path_find("hicolor", icon, ic->inst->size);
- }
- }
- else if (ecore_file_exists(icon))
- {
- path = icon;
- }
- if (!path && icon)
- {
- snprintf(buf, sizeof(buf), "e/icons/%s", icon);
- if (eina_list_count(e_theme_collection_items_find("base/theme/icons", buf)))
- {
- path = e_theme_edje_file_get("base/theme/icons", buf);
- k = buf;
- }
- else
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- }
- else if (!path && !icon)
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- if (path && icon)
- {
- len = strlen(icon);
- if ((len > 4) && (!strcasecmp(icon + len - 4, ".edj")))
- k = "icon";
- }
- elm_image_file_set(img, path, k);
- elm_layout_content_set(layout, "e.swallow.icon", img);
- evas_object_show(img);
-
- elm_layout_sizing_eval(layout);
-
- return layout;
-}
-#endif
-
-static void
-_bar_icon_drag_done(E_Drag *drag, int dropped)
-{
- Instance *inst = e_object_data_get(E_OBJECT(drag));
-
- efreet_desktop_unref(drag->data);
- if (!inst) return;
- evas_object_smart_callback_call(e_gadget_site_get(inst->o_main), "gadget_site_unlocked", NULL);
- if (!dropped)
- bar_recalculate(inst);
-}
-
-static Eina_Bool
-_bar_icon_preview_hide(void *data)
-{
- Icon *ic = data;
-
- if (!ic) return EINA_FALSE;
-
- ic->mouse_out_timer = NULL;
-
- if (!ic->preview || ic->preview_dismissed)
- {
- ic->active = EINA_FALSE;
- return EINA_FALSE;
- }
- E_FREE_FUNC(ic->preview_box, evas_object_del);
- E_FREE_FUNC(ic->preview_scroller, evas_object_del);
- elm_ctxpopup_dismiss(ic->preview);
- ic->preview_dismissed = EINA_TRUE;
- ic->inst->current_preview = NULL;
- ic->inst->current_preview_menu = EINA_FALSE;
- ic->active = EINA_FALSE;
-
- return EINA_FALSE;
-}
-
-static void
-_bar_icon_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Icon *ic = data;
-
- elm_layout_signal_emit(ic->o_layout, "e,state,default", "e");
- elm_layout_signal_emit(ic->o_layout, "e,state,unfocused", "e");
- ic->active = EINA_FALSE;
- if (!ic->inst->cfg->hide_tooltips)
- elm_object_tooltip_hide(obj);
- E_FREE_FUNC(ic->mouse_in_timer, ecore_timer_del);
- E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
- ic->mouse_out_timer = ecore_timer_loop_add(.25, _bar_icon_preview_hide, ic);
-}
-
-static void
-_bar_icon_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Icon *ic = data;
- Evas_Event_Mouse_Move *ev = event_data;
- int dx, dy;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_bar_check_modifiers(ev->modifiers)) return;
-
- if (!ic->drag.start)
- return;
-
- dx = ev->cur.output.x - ic->drag.x;
- dy = ev->cur.output.y - ic->drag.y;
- if (((dx * dx) + (dy * dy)) >
- (e_config->drag_resist * e_config->drag_resist))
- {
- E_Drag *d;
- Evas_Object *o;
- Evas_Coord x, y, w, h;
- unsigned int size;
- const char *drag_types[] = { "enlightenment/desktop" };
-
- _bar_icon_preview_hide(ic);
- ic->drag.dnd = 1;
- ic->drag.start = 0;
-
- evas_object_geometry_get(ic->o_icon, &x, &y, &w, &h);
- d = e_drag_new(x, y, drag_types, 1,
- ic->desktop, -1, NULL, _bar_icon_drag_done);
- d->button_mask = evas_pointer_button_down_mask_get(e_comp->evas);
- efreet_desktop_ref(ic->desktop);
- size = MAX(w, h);
- o = e_util_desktop_icon_add(ic->desktop, size, e_drag_evas_get(d));
- e_drag_object_set(d, o);
-
- e_drag_resize(d, w, h);
- e_drag_start(d, ic->drag.x, ic->drag.y);
- e_object_data_set(E_OBJECT(d), ic->inst);
- if (ic->in_order)
- e_order_remove(ic->inst->order, ic->desktop);
- }
-}
-
-static Eina_Bool
-_bar_drag_timer(void *data)
-{
- Icon *ic = data;
-
- ic->drag_timer = NULL;
- ic->drag.start = 1;
- evas_object_smart_callback_call(e_gadget_site_get(ic->inst->o_main), "gadget_site_locked", NULL);
- return EINA_FALSE;
-}
-
-static void
-_bar_icon_menu_action_cb(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Efreet_Desktop_Action *action = (Efreet_Desktop_Action*)data;
-
- e_exec(e_zone_current_get(), NULL, action->exec, NULL, "luncher");
-}
-
-static void
-_bar_icon_menu_add_cb(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Icon *ic = data;
-
- if (ic->desktop)
- e_order_append(ic->inst->order, ic->desktop);
-}
-
-static void
-_bar_icon_menu_remove_cb(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Icon *ic = data;
-
- if (ic->desktop)
- e_order_remove(ic->inst->order, ic->desktop);
-}
-
-static void
-_bar_icon_menu_properties_cb(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- Icon *ic = data;
-
- if (ic->desktop)
- e_desktop_edit(ic->desktop);
-}
-
-static void
-_bar_gadget_menu_populate(Evas_Object *g, E_Menu *m)
-{
- Instance *inst = evas_object_data_get(g, "instance");
- Evas *e = evas_object_evas_get(g);
- Eina_List *l;
- Icon *ic = NULL;
- Evas_Coord px, py;
- E_Menu_Item *mi;
- Efreet_Desktop_Action *action;
-
- evas_pointer_canvas_xy_get(e, &px, &py);
- EINA_LIST_FOREACH(inst->icons, l, ic)
- {
- Evas_Coord x, y, w, h;
-
- evas_object_geometry_get(ic->o_icon, &x, &y, &w, &h);
- if (E_INSIDE(px, py, x, y, w, h)) break;
- ic = NULL;
- }
- if (!ic) return;
-
- mi = e_menu_item_new(m);
- e_menu_item_separator_set(mi, 1);
-
- if (ic->desktop)
- {
- if (ic->desktop->actions)
- {
- EINA_LIST_FOREACH(ic->desktop->actions, l, action)
- {
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, action->name);
- e_util_menu_item_theme_icon_set(mi, action->icon);
- e_menu_item_callback_set(mi, _bar_icon_menu_action_cb, action);
- }
- mi = e_menu_item_new(m);
- e_menu_item_separator_set(mi, 1);
- }
- }
- if (ic->desktop)
- {
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Icon Properties"));
- e_util_menu_item_theme_icon_set(mi, "preferences-applications");
- e_menu_item_callback_set(mi, _bar_icon_menu_properties_cb, ic);
- }
- if (ic->in_order)
- {
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Remove Icon"));
- e_util_menu_item_theme_icon_set(mi, "list-remove");
- e_menu_item_callback_set(mi, _bar_icon_menu_remove_cb, ic);
- }
- else if ((!ic->in_order) && (ic->desktop))
- {
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Add Icon"));
- e_util_menu_item_theme_icon_set(mi, "list-add");
- e_menu_item_callback_set(mi, _bar_icon_menu_add_cb, ic);
- }
-}
-
-static void
-_bar_icon_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Icon *ic = data;
- Evas_Event_Mouse_Up *ev = event_data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_bar_check_modifiers(ev->modifiers)) return;
-
- if (ev->button == 1)
- {
- E_FREE_FUNC(ic->mouse_in_timer, ecore_timer_del);
- E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
- ic->drag.x = ev->output.x;
- ic->drag.y = ev->output.y;
- E_FREE_FUNC(ic->drag_timer, ecore_timer_del);
- ic->drag_timer = ecore_timer_loop_add(0.35, _bar_drag_timer, ic);
- }
-}
-
-static void
-_bar_icon_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Icon *ic = data;
- Evas_Event_Mouse_Up *ev = event_data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
- {
- if (ev->button == 1)
- {
- ic->drag.start = 0;
- ic->drag.dnd = 0;
- E_FREE_FUNC(ic->mouse_in_timer, ecore_timer_del);
- E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
- E_FREE_FUNC(ic->drag_timer, ecore_timer_del);
- }
- return;
- }
- if (_bar_check_modifiers(ev->modifiers)) return;
-
- if (ev->button == 1)
- {
- E_FREE_FUNC(ic->drag_timer, ecore_timer_del);
- if (ic->drag.dnd)
- {
- ic->drag.start = 0;
- ic->drag.dnd = 0;
- return;
- }
- }
- if (ev->button == 1 && ic->desktop)
- {
- if (ic->desktop->type == EFREET_DESKTOP_TYPE_APPLICATION)
- {
- E_Exec_Instance *ex;
-
- ex = e_exec(e_zone_current_get(), ic->desktop, NULL, NULL, "luncher");
- ic->exec = ex;
- e_exec_instance_watcher_add(ex, _bar_instance_watch, ic);
- if (!ic->starting) elm_layout_signal_emit(ic->o_layout, "e,state,starting", "e");
- ic->starting = EINA_TRUE;
- }
- else if (ic->desktop->type == EFREET_DESKTOP_TYPE_LINK)
- {
- if (!strncasecmp(ic->desktop->url, "file:", 5))
- {
- E_Action *act;
-
- act = e_action_find("fileman");
- if (act)
- act->func.go(NULL, ic->desktop->url + 5);
- }
- }
- }
- else if (ev->button == 1 && !ic->in_order)
- {
- _bar_icon_preview_show(ic);
- }
-}
-
-static void
-_bar_icon_preview_item_mouse_out(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- elm_layout_signal_emit(obj, "e,state,unfocused", "e");
-}
-
-static void
-_bar_icon_preview_item_mouse_in(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data)
-{
- Evas_Event_Mouse_In *ev = event_data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_bar_check_modifiers(ev->modifiers)) return;
-
- elm_layout_signal_emit(obj, "e,state,focused", "e");
-}
-
-static void
-_bar_icon_preview_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Icon *ic = data;
-
- if (ic->inst->current_preview_menu)
- return;
- E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
- ic->mouse_out_timer = ecore_timer_loop_add(0.25, _bar_icon_preview_hide, ic);
-}
-
-static void
-_bar_icon_preview_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Icon *ic = data;
- Evas_Event_Mouse_In *ev = event_data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_bar_check_modifiers(ev->modifiers)) return;
-
- E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
-}
-
-static void
-_bar_icon_preview_menu_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Icon *ic = data;
-
- evas_object_event_callback_del_full(obj, EVAS_CALLBACK_HIDE, _bar_icon_preview_menu_hide, ic);
- ic->client_menu = NULL;
- if (ic->preview)
- {
- ic->inst->current_preview_menu = EINA_FALSE;
- _bar_icon_preview_mouse_out(ic, NULL, NULL, NULL);
- }
-}
-
-static void
-_bar_icon_preview_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data)
-{
- E_Client *ec = data;
- Evas_Event_Mouse_Up *ev = event_data;
- Icon *ic = evas_object_data_get(obj, "icon");
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_bar_check_modifiers(ev->modifiers)) return;
-
- if (ev->button == 3)
- {
- e_int_client_menu_show(ec, ev->canvas.x, ev->canvas.y, 0, ev->timestamp);
- evas_object_event_callback_add(ec->border_menu->comp_object, EVAS_CALLBACK_HIDE,
- _bar_icon_preview_menu_hide, ic);
- ic->client_menu = ec->border_menu->comp_object;
- ic->inst->current_preview_menu = EINA_TRUE;
- return;
- }
- e_client_activate(ec, 1);
- _bar_icon_preview_hide(ic);
-}
-
-static void
-_bar_icon_preview_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Evas_Object *img = data;
-
- evas_object_del(img);
-}
-
-static void
-_bar_icon_preview_client_add(Icon *ic, E_Client *ec)
-{
- Evas_Object *layout, *label, *img;
-
- layout = elm_layout_add(ic->preview_box);
- edje_object_update_hints_set(elm_layout_edje_get(layout), EINA_TRUE);
- evas_object_data_set(layout, "icon", ic);
- e_theme_edje_object_set(layout, "e/gadget/luncher/preview",
- "e/gadget/luncher/preview");
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_IN,
- _bar_icon_preview_item_mouse_in, ic);
- evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_OUT,
- _bar_icon_preview_item_mouse_out, ic);
- elm_box_pack_end(ic->preview_box, layout);
- evas_object_show(layout);
-
- label = elm_label_add(layout);
- elm_object_style_set(label, "luncher_preview");
- elm_label_ellipsis_set(label, EINA_TRUE);
- elm_object_text_set(label, e_client_util_name_get(ec));
- evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
- elm_layout_content_set(layout, "e.swallow.title", label);
- evas_object_show(label);
-
- 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_min_set(img, ic->inst->cfg->preview_size, ic->inst->cfg->preview_size);
- elm_layout_content_set(layout, "e.swallow.icon", img);
- if (evas_object_image_alpha_get(img))
- elm_layout_signal_emit(layout, "e,state,icon,alpha", "e");
- evas_object_show(img);
-
- if (!(ec->desk->visible) || (ec->iconic))
- elm_layout_signal_emit(layout, "e,state,invisible", "e");
-
- evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_UP,
- _bar_icon_preview_mouse_up, ec);
- evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
- _bar_icon_preview_del, img);
- elm_layout_sizing_eval(layout);
-}
-
-static Eina_Bool
-_bar_icon_preview_show(void *data)
-{
- Icon *ic = data;
- Eina_List *l, *ll;
- E_Client *ec;
- E_Exec_Instance *ex;
- Eina_List *clients = NULL;
- E_Gadget_Site_Orient orient;
- E_Zone *zone = e_zone_current_get();
- int count = 0;
-
- if (!ic)
- return EINA_FALSE;
- ic->mouse_in_timer = NULL;
- if (ic->drag.dnd)
- return EINA_FALSE;
- if (!ic->inst)
- return EINA_FALSE;
- if (!ic->inst->o_icon_con)
- return EINA_FALSE;
-
- orient = e_gadget_site_orient_get(e_gadget_site_get(ic->inst->o_main));
-
- if (ic->inst->current_preview && (ic->inst->current_preview != ic->preview))
- _bar_icon_preview_hide(evas_object_data_get(ic->inst->current_preview, "icon"));
- if (ic->preview && !ic->preview_dismissed)
- _bar_icon_preview_hide(ic);
- ic->preview_dismissed = EINA_FALSE;
- if (!eina_list_count(ic->execs) && !eina_list_count(ic->clients))
- return EINA_FALSE;
-
- ic->preview = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(ic->preview, "noblock");
- evas_object_smart_callback_add(ic->preview, "dismissed", _bar_popup_dismissed, ic);
- evas_object_event_callback_add(ic->preview, EVAS_CALLBACK_MOUSE_IN,
- _bar_icon_preview_mouse_in, ic);
- evas_object_event_callback_add(ic->preview, EVAS_CALLBACK_MOUSE_OUT,
- _bar_icon_preview_mouse_out, ic);
-
- ic->preview_scroller = elm_scroller_add(ic->preview);
- elm_scroller_content_min_limit(ic->preview_scroller, EINA_TRUE, EINA_TRUE);
- evas_object_size_hint_max_set(ic->preview_scroller, zone->w - 15, zone->h - 15);
- elm_object_style_set(ic->preview_scroller, "no_inset_shadow");
- E_EXPAND(ic->preview_scroller);
-
- ic->preview_box = elm_box_add(ic->preview);
- evas_object_size_hint_align_set(ic->preview_box, 0, 0);
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- elm_box_horizontal_set(ic->preview_box, EINA_TRUE);
- elm_box_padding_set(ic->preview_box, 2, 0);
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- elm_box_horizontal_set(ic->preview_box, EINA_FALSE);
- elm_box_padding_set(ic->preview_box, 0, 2);
- break;
- default:
- elm_box_horizontal_set(ic->preview_box, EINA_TRUE);
- elm_box_padding_set(ic->preview_box, 2, 0);
- }
- EINA_LIST_FOREACH(ic->execs, l, ex)
- {
- EINA_LIST_FOREACH(ex->clients, ll, ec)
- clients = eina_list_append(clients, ec);
- }
- EINA_LIST_FOREACH(ic->clients, l, ec)
- clients = eina_list_append(clients, ec);
-
- EINA_LIST_FREE(clients, ec)
- {
- if (ec && !ec->netwm.state.skip_taskbar && !e_client_util_ignored_get(ec))
- {
- if (!e_client_util_is_popup(ec))
- {
- _bar_icon_preview_client_add(ic, ec);
- count++;
- }
- }
- }
-
- if (!count)
- {
- _bar_icon_preview_hide(ic);
- return EINA_FALSE;
- }
- elm_object_content_set(ic->preview_scroller, ic->preview_box);
- elm_object_content_set(ic->preview, ic->preview_scroller);
- evas_object_show(ic->preview_box);
-
- e_gadget_util_ctxpopup_place(ic->inst->o_main, ic->preview, ic->o_icon);
- evas_object_layer_set(ic->preview, E_LAYER_POPUP);
-
- evas_object_data_del(ic->preview, "icon");
- evas_object_data_set(ic->preview, "icon", ic);
- evas_object_show(ic->preview);
- ic->inst->current_preview = ic->preview;
-
- return EINA_FALSE;
-}
-
-static void
-_bar_icon_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data)
-{
- Icon *ic = data;
- Eina_Bool clients = EINA_FALSE;
- Evas_Event_Mouse_In *ev = event_data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_bar_check_modifiers(ev->modifiers)) return;
-
- if (!ic->active)
- {
- if (!ic->inst->cfg->hide_tooltips)
- elm_object_tooltip_show(obj);
- ic->active = EINA_TRUE;
- elm_layout_signal_emit(ic->o_layout, "e,state,focused", "e");
- }
- E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
- E_FREE_FUNC(ic->mouse_in_timer, ecore_timer_del);
- if (ic->inst->current_preview && (ic->preview == ic->inst->current_preview)) return;
- if (eina_list_count(ic->execs) || eina_list_count(ic->clients))
- clients = EINA_TRUE;
- if (clients && ic->inst->current_preview && !ic->inst->current_preview_menu)
- ic->mouse_in_timer = ecore_timer_loop_add(0.2, _bar_icon_preview_show, ic);
- else if (clients && !ic->inst->current_preview)
- ic->mouse_in_timer = ecore_timer_loop_add(0.3, _bar_icon_preview_show, ic);
-}
-
-static void
-_bar_exec_new_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Icon *ic = data;
- E_Client *ec = e_comp_object_client_get(obj);
-
- if (ic->preview && (ic->inst->current_preview == ic->preview))
- {
- _bar_icon_preview_client_add(ic, ec);
- }
- else
- {
- if (ic->active)
- {
- E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
- E_FREE_FUNC(ic->mouse_in_timer, ecore_timer_del);
- if (ic->inst->current_preview && !ic->inst->current_preview_menu)
- _bar_icon_preview_show(ic);
- else if (!ic->inst->current_preview)
- ic->mouse_in_timer = ecore_timer_loop_add(0.3, _bar_icon_preview_show, ic);
- }
- }
- ic->client_cbs = eina_list_remove(ic->client_cbs, ec);
- evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_SHOW, _bar_exec_new_show, ic);
-}
-
-static void
-_bar_icon_file_set(Icon *ic, Efreet_Desktop *desktop, E_Client *non_desktop_client)
-{
- const char *path = NULL, *k = NULL;
- char buf[4096];
- int len = 0, clamp = 0;
- if (desktop)
- {
- if (!desktop->icon)
- path = NULL;
- else if (strncmp(desktop->icon, "/", 1) && !ecore_file_exists(desktop->icon))
- {
- clamp = MAX((4 * round((double)ic->inst->size/4)), 8);
- path = efreet_icon_path_find(e_config->icon_theme, desktop->icon, clamp);
- if (!path)
- {
- if (e_util_strcmp(e_config->icon_theme, "hicolor"))
- path = efreet_icon_path_find("hicolor", desktop->icon, clamp);
- }
- }
- else if (ecore_file_exists(desktop->icon))
- {
- path = desktop->icon;
- }
- if (!path && desktop->icon)
- {
- snprintf(buf, sizeof(buf), "e/icons/%s", desktop->icon);
- if (eina_list_count(e_theme_collection_items_find("base/theme/icons", buf)))
- {
- path = e_theme_edje_file_get("base/theme/icons", buf);
- k = buf;
- }
- else
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- }
- else if (!path && !desktop->icon)
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- if (path && desktop->icon && !k)
- {
- len = strlen(desktop->icon);
- if ((len > 4) && (!strcasecmp(desktop->icon + len - 4, ".edj")))
- k = "icon";
- }
- }
- else if (non_desktop_client)
- {
- Evas_Object *tmp;
- const char *file, *group;
- Eina_Bool ret = EINA_FALSE;
-
- tmp = e_client_icon_add(non_desktop_client, evas_object_evas_get(ic->o_layout));
- if (isedje(tmp))
- {
- edje_object_file_get(tmp, &file, &group);
- if (file && group)
- ret = EINA_TRUE;
- }
- else
- ret = e_icon_file_get(tmp, &file, &group);
- if (ret)
- {
- eina_stringshare_replace(&ic->icon, file);
- eina_stringshare_replace(&ic->key, group);
- path = ic->icon;
- k = ic->key;
- }
- evas_object_del(tmp);
- }
- else if (ic->icon)
- {
- if (strncmp(ic->icon, "/", 1) && !ecore_file_exists(ic->icon))
- {
- clamp = (4 * round((double)ic->inst->size/4));
- path = efreet_icon_path_find(e_config->icon_theme, ic->icon, clamp);
- if (!path)
- {
- if (e_util_strcmp(e_config->icon_theme, "hicolor"))
- path = efreet_icon_path_find("hicolor", ic->icon, clamp);
- }
- }
- else if (ecore_file_exists(ic->icon))
- {
- path = ic->icon;
- k = ic->key;
- }
- if (!path)
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- }
- else
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- elm_image_file_set(ic->o_icon, path, k);
-}
-
-static void
-_bar_resized_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
-{
- Instance *inst = data;
-
- _bar_aspect(inst);
-}
-
-static Icon *
-_bar_icon_add(Instance *inst, Efreet_Desktop *desktop, E_Client *non_desktop_client)
-{
- char ori[32];
- Icon *ic;
- const Eina_List *l;
-
- ic = E_NEW(Icon, 1);
- if (desktop)
- efreet_desktop_ref(desktop);
- ic->desktop = desktop;
- ic->inst = inst;
- ic->preview = NULL;
- ic->preview_box = NULL;
- ic->preview_scroller = NULL;
- ic->client_menu = NULL;
- ic->mouse_in_timer = NULL;
- ic->mouse_out_timer = NULL;
- ic->active = EINA_FALSE;
- ic->starting = EINA_FALSE;
- ic->preview_dismissed = EINA_FALSE;
- ic->exec = NULL;
-
- ic->o_layout = elm_layout_add(inst->o_icon_con);
- edje_object_update_hints_set(elm_layout_edje_get(ic->o_layout), EINA_TRUE);
- e_theme_edje_object_set(ic->o_layout, "e/gadget/luncher/icon",
- "e/gadget/luncher/icon");
- E_EXPAND(ic->o_layout);
- E_FILL(ic->o_layout);
- edje_object_signal_callback_add(elm_layout_edje_get(ic->o_layout), "e,state,resized", "e", _bar_resized_cb, inst);
- elm_box_pack_end(inst->o_icon_con, ic->o_layout);
- evas_object_show(ic->o_layout);
-
- snprintf(ori, sizeof(ori), "e,state,off,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
-
- ic->o_icon = elm_icon_add(ic->o_layout);
- E_EXPAND(ic->o_icon);
-
-
- _bar_icon_file_set(ic, desktop, non_desktop_client);
-
- if (!inst->cfg->hide_tooltips)
- {
- if (desktop)
- elm_object_tooltip_text_set(ic->o_icon, desktop->name);
- else if (non_desktop_client && non_desktop_client->icccm.class)
- elm_object_tooltip_text_set(ic->o_icon, non_desktop_client->icccm.class);
- else if (non_desktop_client && non_desktop_client->icccm.name)
- elm_object_tooltip_text_set(ic->o_icon, non_desktop_client->icccm.name);
- else if (non_desktop_client && non_desktop_client->icccm.title)
- elm_object_tooltip_text_set(ic->o_icon, non_desktop_client->icccm.title);
- else if (non_desktop_client && non_desktop_client->netwm.name)
- elm_object_tooltip_text_set(ic->o_icon, non_desktop_client->netwm.name);
- else
- elm_object_tooltip_text_set(ic->o_icon, _("Unknown"));
- elm_object_tooltip_orient_set(ic->o_icon, ELM_TOOLTIP_ORIENT_CENTER);
- elm_object_tooltip_style_set(ic->o_icon, "luncher");
- }
- evas_object_size_hint_aspect_set(ic->o_icon, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
- elm_layout_content_set(ic->o_layout, "e.swallow.icon", ic->o_icon);
- evas_object_event_callback_add(ic->o_icon, EVAS_CALLBACK_MOUSE_UP,
- _bar_icon_mouse_up, ic);
- evas_object_event_callback_priority_add(ic->o_icon, EVAS_CALLBACK_MOUSE_DOWN, 0,
- _bar_icon_mouse_down, ic);
- evas_object_event_callback_add(ic->o_icon, EVAS_CALLBACK_MOUSE_MOVE,
- _bar_icon_mouse_move, ic);
- evas_object_event_callback_add(ic->o_icon, EVAS_CALLBACK_MOUSE_IN,
- _bar_icon_mouse_in, ic);
- evas_object_event_callback_add(ic->o_icon, EVAS_CALLBACK_MOUSE_OUT,
- _bar_icon_mouse_out, ic);
- evas_object_show(ic->o_icon);
-
- if (desktop)
- eina_hash_add(inst->icons_desktop_hash, eina_stringshare_add(desktop->orig_path), ic);
- else
- eina_hash_add(inst->icons_clients_hash, &non_desktop_client, ic);
-
- if (desktop)
- {
- if (inst->cfg->type != E_LUNCHER_MODULE_LAUNCH_ONLY)
- {
- l = e_exec_desktop_instances_find(desktop);
- if (l)
- {
- snprintf(ori, sizeof(ori), "e,state,on,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- ic->execs = eina_list_clone(l);
- }
- }
- }
- else
- {
- if (!_bar_check_for_duplicates(ic, non_desktop_client))
- ic->clients = eina_list_append(ic->clients, non_desktop_client);
- }
- elm_layout_sizing_eval(ic->o_layout);
- _bar_aspect(inst);
- return ic;
-}
-
-static Eina_Bool
-_bar_cb_desk_switch(void *data EINA_UNUSED, int type EINA_UNUSED, E_Event_Client *ev EINA_UNUSED)
-{
- Instance *inst = NULL;
- Icon *ic = NULL;
- Eina_List *l = NULL, *ll = NULL;
-
-
- EINA_LIST_FOREACH(luncher_instances, l, inst)
- {
- if (inst->current_preview)
- {
- EINA_LIST_FOREACH(inst->icons, ll, ic)
- {
- if (inst->current_preview && (inst->current_preview == ic->preview))
- {
- _bar_icon_preview_show(ic);
- return ECORE_CALLBACK_RENEW;
- }
- }
- }
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_bar_cb_client_remove(void *data EINA_UNUSED, int type EINA_UNUSED, E_Event_Client *ev)
-{
- Instance *inst = NULL;
- Eina_List *l = NULL;
- char ori[32];
-
- EINA_LIST_FOREACH(luncher_instances, l, inst)
- {
- Icon *ic = NULL;
-
- if (!inst->bar) continue;
- if (inst->cfg->type == E_LUNCHER_MODULE_LAUNCH_ONLY) continue;
- ic = _bar_icon_match(inst, ev->ec);
- if (ic)
- {
- if (ic->starting) elm_layout_signal_emit(ic->o_layout, "e,state,started", "e");
- ic->starting = EINA_FALSE;
- ic->clients = eina_list_remove(ic->clients, ev->ec);
- if (ic->client_cbs)
- {
- ic->client_cbs = eina_list_remove(ic->client_cbs, ev->ec);
- evas_object_event_callback_del_full(ev->ec->frame, EVAS_CALLBACK_SHOW, _bar_exec_new_show, ic);
- }
- if (ev->ec->exe_inst)
- ic->execs = eina_list_remove(ic->execs, ev->ec->exe_inst);
- if (!eina_list_count(ic->execs) && !eina_list_count(ic->clients))
- {
- snprintf(ori, sizeof(ori), "e,state,off,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- if (ic->preview)
- _bar_icon_preview_hide(ic);
- if (!ic->in_order)
- _bar_icon_del(inst, ic);
- }
- else if (ic->preview && (inst->current_preview == ic->preview))
- {
- _bar_icon_preview_show(ic);
- }
- }
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_bar_cb_exec_del(void *data EINA_UNUSED, int type EINA_UNUSED, E_Exec_Instance *ex)
-{
- Instance *inst = NULL;
- Eina_List *l = NULL;
- E_Client *ec = NULL;
- char ori[32];
-
- EINA_LIST_FOREACH(ex->clients, l, ec)
- {
- if (!ec->netwm.state.skip_taskbar && !e_client_util_is_popup(ec))
- {
- break;
- }
- }
-
- EINA_LIST_FOREACH(luncher_instances, l, inst)
- {
- Icon *ic = NULL;
-
- if (!inst->bar) continue;
- if (inst->cfg->type == E_LUNCHER_MODULE_LAUNCH_ONLY) continue;
- if (ex->desktop)
- {
- ic = eina_hash_find(inst->icons_desktop_hash, ex->desktop->orig_path);
- }
- if (ic)
- {
- if (ic->starting) elm_layout_signal_emit(ic->o_layout, "e,state,started", "e");
- ic->starting = EINA_FALSE;
- ic->execs = eina_list_remove(ic->execs, ex);
- if (ec) ic->clients = eina_list_remove(ic->clients, ec);
- if (ec && ic->client_cbs)
- {
- ic->client_cbs = eina_list_remove(ic->client_cbs, ec);
- evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_SHOW, _bar_exec_new_show, ic);
- }
- if (!eina_list_count(ic->execs) && !eina_list_count(ic->clients))
- {
- snprintf(ori, sizeof(ori), "e,state,off,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- if (ic->preview)
- _bar_icon_preview_hide(ic);
- if (!ic->in_order)
- _bar_icon_del(inst, ic);
- }
- else if (ic->preview && (inst->current_preview == ic->preview))
- {
- _bar_icon_preview_show(ic);
- }
- }
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_bar_cb_exec_client_prop(void *data EINA_UNUSED, int type EINA_UNUSED, E_Event_Client_Property *ev)
-{
- Instance *inst = NULL;
- E_Client *ec = NULL;
- Eina_List *l = NULL;
- Eina_Bool skip;
- Eina_Bool has_desktop = EINA_TRUE;
-
- if (e_client_util_ignored_get(ev->ec))
- return ECORE_CALLBACK_RENEW;
- if ((!(ev->property & E_CLIENT_PROPERTY_NETWM_STATE)) && (!(ev->property & E_CLIENT_PROPERTY_ICON))
- && (!(ev->property & E_CLIENT_PROPERTY_URGENCY)))
- return ECORE_CALLBACK_RENEW;
-
- if (!ev->ec->exe_inst)
- has_desktop = EINA_FALSE;
- if (ev->ec->exe_inst)
- {
- if (!ev->ec->exe_inst->desktop)
- has_desktop = EINA_FALSE;
- }
- if (has_desktop)
- {
- skip = EINA_TRUE;
- EINA_LIST_FOREACH(ev->ec->exe_inst->clients, l, ec)
- {
- if (!ec->netwm.state.skip_taskbar && !e_client_util_is_popup(ec))
- {
- skip = EINA_FALSE;
- break;
- }
- }
- }
- else
- {
- if (ev->ec->netwm.state.skip_taskbar || e_client_util_is_popup(ev->ec))
- skip = EINA_TRUE;
- else
- skip = EINA_FALSE;
- }
- EINA_LIST_FOREACH(luncher_instances, l, inst)
- {
- Icon *ic = NULL;
- char ori[32];
-
- if (!inst->bar) continue;
- if (inst->cfg->type == E_LUNCHER_MODULE_LAUNCH_ONLY) continue;
- ic = _bar_icon_match(inst, ev->ec);
- if (skip && !ic) continue;
- if (!skip)
- {
- if (ic)
- {
- if ((ev->property & E_CLIENT_PROPERTY_URGENCY))
- {
- if (ev->ec->urgent)
- elm_layout_signal_emit(ic->o_layout, "e,state,urgent", "e");
- else
- elm_layout_signal_emit(ic->o_layout, "e,state,normal", "e");
- return ECORE_CALLBACK_RENEW;
- }
- if (ic->starting) elm_layout_signal_emit(ic->o_layout, "e,state,started", "e");
- ic->starting = EINA_FALSE;
- snprintf(ori, sizeof(ori), "e,state,on,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- if (has_desktop)
- {
- if (!(_bar_check_for_duplicates(ic, ev->ec)))
- ic->execs = eina_list_append(ic->execs, ev->ec->exe_inst);
- }
- else
- {
- if (!(_bar_check_for_duplicates(ic, ev->ec)))
- ic->clients = eina_list_append(ic->clients, ev->ec);
- }
- }
- else
- {
- if (has_desktop && !ev->ec->internal_elm_win)
- ic = _bar_icon_add(inst, ev->ec->exe_inst->desktop, NULL);
- else
- ic = _bar_icon_add(inst, NULL, ev->ec);
- snprintf(ori, sizeof(ori), "e,state,on,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- ic->in_order = EINA_FALSE;
- inst->icons = eina_list_append(inst->icons, ic);
- _bar_aspect(inst);
- }
- }
- else
- {
- if (has_desktop)
- ic->execs = eina_list_remove(ic->execs, ev->ec->exe_inst);
- else
- ic->clients = eina_list_remove(ic->clients, ev->ec);
- if (ic->client_cbs)
- {
- ic->client_cbs = eina_list_remove(ic->client_cbs, ev->ec);
- evas_object_event_callback_del_full(ev->ec->frame, EVAS_CALLBACK_SHOW, _bar_exec_new_show, ic);
- }
- if (!eina_list_count(ic->execs) && !eina_list_count(ic->clients))
- {
- if (ic->preview)
- _bar_icon_preview_hide(ic);
- if (!ic->in_order)
- _bar_icon_del(inst, ic);
- else
- {
- snprintf(ori, sizeof(ori), "e,state,off,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- }
- }
- else if (ic->preview && (inst->current_preview == ic->preview))
- {
- _bar_icon_preview_show(ic);
- }
- }
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_bar_cb_exec_new(void *data EINA_UNUSED, int type, E_Exec_Instance *ex)
-{
- Instance *inst = NULL;
- E_Client *ec = NULL;
- Eina_List *l = NULL;
- Eina_Bool skip;
-
- if (type == E_EVENT_EXEC_NEW_CLIENT)
- {
- ec = eina_list_last_data_get(ex->clients);
- if (ec->netwm.state.skip_taskbar || e_client_util_is_popup(ec))
- skip = EINA_TRUE;
- else
- skip = EINA_FALSE;
- }
- else
- {
- skip = EINA_TRUE;
- EINA_LIST_FOREACH(ex->clients, l, ec)
- {
- if (!ec->netwm.state.skip_taskbar && !e_client_util_is_popup(ec))
- {
- skip = EINA_FALSE;
- break;
- }
- }
- }
- EINA_LIST_FOREACH(luncher_instances, l, inst)
- {
- Icon *ic = NULL;
- char ori[32];
-
- if (!inst->bar) continue;
- if (inst->cfg->type == E_LUNCHER_MODULE_LAUNCH_ONLY) continue;
- if (ec) ic = _bar_icon_match(inst, ec);
- if (ic)
- {
- if (skip) continue;
- if (ic->starting) elm_layout_signal_emit(ic->o_layout, "e,state,started", "e");
- ic->starting = EINA_FALSE;
- snprintf(ori, sizeof(ori), "e,state,on,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- if (!(_bar_check_for_duplicates(ic, ec)))
- {
- if (ex->desktop)
- ic->execs = eina_list_append(ic->execs, ex);
- else
- ic->clients = eina_list_append(ic->clients, ec);
- }
- if (evas_object_visible_get(ec->frame))
- _bar_exec_new_show(ic, NULL, ec->frame, NULL);
- else
- {
- ic->client_cbs = eina_list_append(ic->client_cbs, ec);
- evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW,
- _bar_exec_new_show, ic);
- }
- }
- else
- {
- if (skip) continue;
- if (ex->desktop && !ec->internal_elm_win)
- ic = _bar_icon_add(inst, ex->desktop, NULL);
- else
- ic = _bar_icon_add(inst, NULL, ec);
- snprintf(ori, sizeof(ori), "e,state,on,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- ic->in_order = EINA_FALSE;
- inst->icons = eina_list_append(inst->icons, ic);
- _bar_aspect(inst);
- }
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-_bar_empty(Instance *inst)
-{
- if (inst->icons)
- {
- elm_box_clear(inst->o_icon_con);
- while (inst->icons)
- _bar_icon_del(inst, eina_list_data_get(inst->icons));
- inst->icons = NULL;
- }
-}
-
-static void
-_bar_fill(Instance *inst)
-{
- const Eina_Hash *execs = e_exec_instances_get();
- Eina_Iterator *it;
- Eina_List *l, *ll, *lll;
- E_Exec_Instance *ex;
- E_Client *ec;
- Icon *ic;
- char ori[32];
-
- if (inst->order && inst->cfg->type != E_LUNCHER_MODULE_TASKS_ONLY)
- {
- Efreet_Desktop *desktop;
- Eina_List *list;
-
- EINA_LIST_FOREACH(inst->order->desktops, list, desktop)
- {
- ic = _bar_icon_add(inst, desktop, NULL);
- ic->in_order = EINA_TRUE;
- inst->icons = eina_list_append(inst->icons, ic);
- }
- }
- if (inst->cfg->type == E_LUNCHER_MODULE_LAUNCH_ONLY)
- {
- _bar_aspect(inst);
- return;
- }
- it = eina_hash_iterator_data_new(execs);
- EINA_ITERATOR_FOREACH(it, l)
- {
- EINA_LIST_FOREACH(l, ll, ex)
- {
- Eina_Bool skip = EINA_TRUE;
-
- EINA_LIST_FOREACH(ex->clients, lll, ec)
- {
- if (!ec->netwm.state.skip_taskbar && !e_client_util_is_popup(ec))
- {
- skip = EINA_FALSE;
- }
- if (skip) continue;
- ic = _bar_icon_match(inst, ec);
- if (ic)
- {
- if (!(_bar_check_for_duplicates(ic, ec)))
- ic->execs = eina_list_append(ic->execs, ex);
- continue;
- }
- if (!ec->internal_elm_win)
- ic = _bar_icon_add(inst, ex->desktop, NULL);
- else
- ic = _bar_icon_add(inst, NULL, ec);
- snprintf(ori, sizeof(ori), "e,state,on,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- ic->in_order = EINA_FALSE;
- inst->icons = eina_list_append(inst->icons, ic);
- }
- }
- }
- eina_iterator_free(it);
- E_CLIENT_FOREACH(ec)
- {
- if (e_client_util_ignored_get(ec)) continue;
- if (ec->netwm.state.skip_taskbar) continue;
- if (e_client_util_is_popup(ec)) continue;
- ic = _bar_icon_match(inst, ec);
- if (!ic)
- {
- if (ec->exe_inst && ec->exe_inst->desktop && !ec->internal_elm_win)
- ic = _bar_icon_add(inst, ec->exe_inst->desktop, NULL);
- else
- ic = _bar_icon_add(inst, NULL, ec);
- snprintf(ori, sizeof(ori), "e,state,on,%s", _bar_location_get(inst));
- elm_layout_signal_emit(ic->o_layout, ori, "e");
- ic->in_order = EINA_FALSE;
- inst->icons = eina_list_append(inst->icons, ic);
- }
- }
- _bar_aspect(inst);
-}
-
-static void
-_bar_resize_job(void *data)
-{
- Instance *inst = data;
- Eina_List *l;
- Icon *ic;
- E_Gadget_Site_Orient orient;
- Evas_Coord x, y, w, h, size;
-
- if (inst)
- {
- orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_main));
- elm_layout_sizing_eval(inst->o_main);
- evas_object_geometry_get(inst->o_main, &x, &y, &w, &h);
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- size = h;
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- size = w;
- break;
- default:
- size = h;
- }
- if (inst->size == size)
- {
- inst->resize_job = NULL;
- return;
- }
- inst->size = size;
- EINA_LIST_FOREACH(inst->icons, l, ic)
- _bar_icon_file_set(ic, ic->desktop, NULL);
- inst->resize_job = NULL;
- }
-}
-
-static Eina_Bool
-_bar_cb_update_icons(EINA_UNUSED void *data, EINA_UNUSED int ev_type, EINA_UNUSED void *ev)
-{
- Instance *inst = NULL;
- Eina_List *l, *ll;
- Icon *ic;
-
- EINA_LIST_FOREACH(luncher_instances, l, inst)
- {
- if (!inst->bar) continue;
- EINA_LIST_FOREACH(inst->icons, ll, ic)
- _bar_icon_file_set(ic, ic->desktop, eina_list_data_get(ic->clients));
- }
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static void
-_bar_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst->resize_job) return;
- inst->resize_job = ecore_job_add(_bar_resize_job, inst);
-}
-
-static void
-_bar_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- Evas_Coord px, py, x, y, w, h;
- Eina_List *l = NULL;
- Icon *ic = NULL;
-
- evas_pointer_canvas_xy_get(evas_object_evas_get(inst->o_main), &px, &py);
- evas_object_geometry_get(inst->o_main, &x, &y, &w, &h);
-
- if (E_INSIDE(px, py, x, y, w, h)) return;
-
- EINA_LIST_FOREACH(inst->icons, l, ic)
- {
- elm_layout_signal_emit(ic->o_layout, "e,state,default", "e");
- elm_layout_signal_emit(ic->o_layout, "e,state,unfocused", "e");
- _bar_icon_mouse_out(ic, NULL, ic->o_icon, NULL);
- }
- _bar_aspect(inst);
-}
-
-static void
-_bar_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
- char buf[4096];
-
- if (inst->o_main != event_data) return;
- if (e_user_dir_snprintf(buf, sizeof(buf), "applications/bar/%s", inst->cfg->dir) >= sizeof(buf))
- return;
-
- luncher_config->items = eina_list_remove(luncher_config->items, inst->cfg);
- eina_stringshare_del(inst->cfg->dir);
- E_FREE(inst->cfg);
-}
-
-static void
-_bar_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- evas_object_smart_callback_del_full(e_gadget_site_get(obj), "gadget_removed", _bar_removed_cb, inst);
- E_FREE_FUNC(inst->iconify_provider, e_comp_object_effect_mover_del);
- inst->main_del = EINA_TRUE;
- _bar_empty(inst);
- e_object_del(E_OBJECT(inst->order));
- E_FREE_FUNC(inst->drop_handler, evas_object_del);
- eina_hash_free(inst->icons_desktop_hash);
- eina_hash_free(inst->icons_clients_hash);
- luncher_instances = eina_list_remove(luncher_instances, inst);
- free(inst);
- if (!eina_list_count(luncher_instances))
- {
- EINA_LIST_FREE(handlers, handler)
- E_FREE_FUNC(handler, ecore_event_handler_del);
- }
-}
-
-static void
-_bar_drop_drop(void *data, const char *type, void *event_data)
-{
- Instance *inst = data;
- E_Event_Dnd_Drop *ev = event_data;
- Efreet_Desktop *desktop = NULL;
- Eina_List *l = NULL;
- Icon *ic = NULL;
-
- evas_object_del(inst->place_holder);
- inst->place_holder = NULL;
- if (!strcmp(type, "enlightenment/desktop"))
- desktop = ev->data;
- else if (!strcmp(type, "enlightenment/border"))
- {
- E_Client *ec;
-
- ec = ev->data;
- desktop = ec->desktop;
- if (!desktop)
- {
- desktop = e_desktop_client_create(ec);
- efreet_desktop_save(desktop);
- e_desktop_edit(desktop);
- }
- }
- else if (!strcmp(type, "text/uri-list"))
- l = ev->data;
-
- ic = inst->drop_before;
- if (ic)
- {
- if (desktop)
- e_order_prepend_relative(inst->order, desktop, ic->desktop);
- else
- e_order_files_prepend_relative(inst->order, l, ic->desktop);
- }
- else
- {
- if (desktop)
- e_order_append(inst->order, desktop);
- else
- e_order_files_append(inst->order, l);
- }
-}
-
-static void
-_bar_drop_leave(void *data, const char *type EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
-
- inst->inside = EINA_FALSE;
- evas_object_del(inst->place_holder);
- inst->place_holder = NULL;
-}
-
-static void
-_bar_drop_move(void *data, const char *type EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
- E_Event_Dnd_Move *ev = event_data;
- Evas_Coord x = ev->x, y = ev->y;
- Eina_List *l;
- Icon *ic;
-
- if (!inst->inside)
- return;
-
- EINA_LIST_FOREACH(inst->icons, l, ic)
- {
- Evas_Coord dx, dy, dw, dh;
-
- if (!ic->in_order) continue;
- evas_object_geometry_get(ic->o_layout, &dx, &dy, &dw, &dh);
- if (E_INSIDE(x, y, dx, dy, dw, dh))
- inst->drop_before = ic;
- }
- elm_box_unpack(inst->o_icon_con, inst->place_holder);
- if (inst->drop_before)
- elm_box_pack_before(inst->o_icon_con, inst->place_holder, inst->drop_before->o_layout);
-}
-
-static void
-_bar_drop_enter(void *data, const char *type EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
-
- inst->inside = EINA_TRUE;
- inst->place_holder = evas_object_rectangle_add(evas_object_evas_get(inst->o_icon_con));
- evas_object_color_set(inst->place_holder, 0, 0, 0, 0);
- evas_object_size_hint_min_set(inst->place_holder, inst->size, inst->size);
- evas_object_size_hint_max_set(inst->place_holder, inst->size, inst->size);
- evas_object_show(inst->place_holder);
-}
-
-static void
-_bar_iconify_end(void *data, Evas_Object *obj EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
-{
- E_Client *ec = data;
-
- evas_object_layer_set(ec->frame, ec->layer);
- ec->layer_block = 0;
- if (ec->iconic)
- evas_object_hide(ec->frame);
-}
-
-static Eina_Bool
-_bar_iconify_start(void *data, Evas_Object *obj, const char *signal EINA_UNUSED)
-{
- Instance *inst = data;
- Icon *ic = NULL;
- E_Client *ec;
- int ox, oy, ow, oh;
-
- ec = e_comp_object_client_get(obj);
-
- if (ec)
- ic = _bar_icon_match(inst, ec);
-
- if (!ic) return EINA_FALSE;
-
- ec->layer_block = 1;
- evas_object_layer_set(ec->frame, E_LAYER_CLIENT_PRIO);
- evas_object_geometry_get(ic->o_layout, &ox, &oy, &ow, &oh);
- e_comp_object_effect_set(ec->frame, "iconify/luncher");
- e_comp_object_effect_params_set(ec->frame, 1, (int[]){ec->x, ec->y, ec->w, ec->h, ox, oy, ow, oh}, 8);
- e_comp_object_effect_params_set(ec->frame, 0, (int[]){!!strcmp(signal, "e,action,iconify")}, 1);
- e_comp_object_effect_start(ec->frame, _bar_iconify_end, ec);
- return EINA_TRUE;
-}
-
-static void
-_bar_anchor_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst && inst->o_icon_con)
- {
- bar_recalculate(inst);
- }
-}
-
-static void
-_bar_order_update(void *data, E_Order *eo EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst && inst->o_icon_con)
- {
- bar_recalculate(inst);
- }
-}
-
-static void
-_bar_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- char buf[4096];
- const char *drop[] = { "enlightenment/desktop", "enlightenment/border", "text/uri-list" };
- E_Gadget_Site_Orient orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_main));
-
- inst->o_icon_con = elm_box_add(inst->o_main);
- E_EXPAND(inst->o_icon_con);
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- elm_box_horizontal_set(inst->o_icon_con, EINA_TRUE);
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- elm_box_horizontal_set(inst->o_icon_con, EINA_FALSE);
- break;
- default:
- elm_box_horizontal_set(inst->o_icon_con, EINA_TRUE);
- }
- elm_layout_content_set(inst->o_main, "e.swallow.bar", inst->o_icon_con);
- evas_object_show(inst->o_icon_con);
-
- evas_object_data_set(inst->o_main, "instance", inst);
- evas_object_data_set(inst->o_icon_con, "instance", inst);
-
- e_gadget_configure_cb_set(inst->o_main, _bar_gadget_configure);
- e_gadget_menu_populate_cb_set(inst->o_main, _bar_gadget_menu_populate);
- evas_object_smart_callback_del_full(obj, "gadget_created", _bar_created_cb, data);
-
- if (!inst->cfg->dir)
- inst->cfg->dir = eina_stringshare_add("default");
- if (inst->cfg->dir[0] != '/')
- e_user_dir_snprintf(buf, sizeof(buf), "applications/bar/%s/.order",
- inst->cfg->dir);
- else
- eina_strlcpy(buf, inst->cfg->dir, sizeof(buf));
-
- inst->order = e_order_new(buf);
- e_order_update_callback_set(inst->order, _bar_order_update, inst);
-
- if (inst->cfg->type != E_LUNCHER_MODULE_LAUNCH_ONLY)
- {
- if (inst->cfg->id != -1)
- inst->iconify_provider = e_comp_object_effect_mover_add(80, "e,action,*iconify",
- _bar_iconify_start, inst);
- }
- _bar_fill(inst);
-
- if (inst->cfg->type != E_LUNCHER_MODULE_TASKS_ONLY)
- {
- inst->drop_handler =
- e_gadget_drop_handler_add(inst->o_main, inst,
- _bar_drop_enter, _bar_drop_move,
- _bar_drop_leave, _bar_drop_drop,
- drop, 3);
- elm_layout_content_set(inst->o_main, "e.swallow.drop", inst->drop_handler);
- evas_object_show(inst->drop_handler);
- }
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_RESIZE, _bar_resize, inst);
-}
-
-static Config_Item *
-_conf_item_get(int *id)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(luncher_config->items, l, ci)
- if (*id == ci->id) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
-
- if (*id != -1)
- ci->id = eina_list_count(luncher_config->items)+1;
- else
- ci->id = -1;
- ci->preview_size = 64;
- ci->dir = eina_stringshare_add("default");
- ci->type = E_LUNCHER_MODULE_FULL;
- luncher_config->items = eina_list_append(luncher_config->items, ci);
-
- return ci;
-}
-
-static void
-_bar_recalculate_job(void *data)
-{
- Instance *inst = data;
-
- if (inst)
- {
- if (inst->o_icon_con)
- {
- _bar_empty(inst);
- _bar_fill(inst);
- }
- inst->recalc_job = NULL;
- }
-}
-
-EINTERN void
-bar_recalculate(Instance *inst)
-{
- E_FREE_FUNC(inst->recalc_job, ecore_job_del);
- inst->recalc_job = ecore_job_add(_bar_recalculate_job, inst);
-}
-
-EINTERN void
-bar_reorder(Instance *inst)
-{
- char buf[4096];
-
- if (inst)
- {
- E_FREE_FUNC(inst->recalc_job, ecore_job_del);
- _bar_empty(inst);
- if (!inst->cfg->dir)
- inst->cfg->dir = eina_stringshare_add("default");
- if (inst->cfg->dir[0] != '/')
- e_user_dir_snprintf(buf, sizeof(buf), "applications/bar/%s/.order",
- inst->cfg->dir);
- else
- eina_strlcpy(buf, inst->cfg->dir, sizeof(buf));
- e_object_del(E_OBJECT(inst->order));
- inst->order = e_order_new(buf);
- e_order_update_callback_set(inst->order, _bar_order_update, inst);
- _bar_fill(inst);
- }
-}
-
-EINTERN void
-bar_config_updated(Instance *inst)
-{
- const char *drop[] = { "enlightenment/desktop", "enlightenment/border", "text/uri-list" };
-
- if (!inst->iconify_provider && inst->cfg->type != E_LUNCHER_MODULE_LAUNCH_ONLY)
- {
- inst->iconify_provider = e_comp_object_effect_mover_add(80, "e,action,*iconify",
- _bar_iconify_start, inst);
- }
- else if (inst->iconify_provider && inst->cfg->type == E_LUNCHER_MODULE_LAUNCH_ONLY)
- {
- E_FREE_FUNC(inst->iconify_provider, e_comp_object_effect_mover_del);
- }
-
- bar_reorder(inst);
-
- if (!inst->drop_handler && inst->cfg->type != E_LUNCHER_MODULE_TASKS_ONLY)
- {
- inst->drop_handler =
- e_gadget_drop_handler_add(inst->o_main, inst,
- _bar_drop_enter, _bar_drop_move,
- _bar_drop_leave, _bar_drop_drop,
- drop, 3);
- elm_layout_content_set(inst->o_main, "e.swallow.drop", inst->drop_handler);
- evas_object_show(inst->drop_handler);
- }
- else if (inst->drop_handler && inst->cfg->type == E_LUNCHER_MODULE_TASKS_ONLY)
- {
- E_FREE_FUNC(inst->drop_handler, evas_object_del);
- }
-}
-
-EINTERN Evas_Object *
-bar_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNUSED)
-{
- Instance *inst;
-
- if (e_gadget_site_is_desklock(parent)) return NULL;
- inst = E_NEW(Instance, 1);
- inst->size = 0;
- inst->resize_job = NULL;
- inst->cfg = _conf_item_get(id);
- *id = inst->cfg->id;
- inst->inside = EINA_FALSE;
- inst->bar = EINA_TRUE;
- inst->main_del = EINA_FALSE;
- inst->icons_desktop_hash = eina_hash_string_superfast_new(NULL);
- inst->icons_clients_hash = eina_hash_pointer_new(NULL);
-
- if (!inst->cfg->preview_size)
- inst->cfg->preview_size = 64;
-
- inst->o_main = elm_layout_add(parent);
- e_theme_edje_object_set(inst->o_main, "e/gadget/luncher/bar",
- "e/gadget/luncher/bar");
- edje_object_update_hints_set(elm_layout_edje_get(inst->o_main), EINA_TRUE);
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_MOUSE_OUT, _bar_mouse_out, inst);
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, _bar_del, inst);
- evas_object_smart_callback_add(parent, "gadget_created", _bar_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_site_anchor", _bar_anchor_changed_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_removed", _bar_removed_cb, inst);
- evas_object_show(inst->o_main);
-
- if (!eina_list_count(handlers))
- {
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_CONFIG_ICON_THEME,
- _bar_cb_update_icons, NULL);
- E_LIST_HANDLER_APPEND(handlers, EFREET_EVENT_ICON_CACHE_UPDATE,
- _bar_cb_update_icons, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_NEW,
- _bar_cb_exec_new, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_NEW_CLIENT,
- _bar_cb_exec_new, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_PROPERTY,
- _bar_cb_exec_client_prop, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_DEL,
- _bar_cb_exec_del, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_REMOVE,
- _bar_cb_client_remove, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_DESK_SHOW,
- _bar_cb_desk_switch, NULL);
- }
- if (inst->cfg->id < 0) return inst->o_main;
- luncher_instances = eina_list_append(luncher_instances, inst);
-
- inst->current_preview = NULL;
- inst->current_preview_menu = EINA_FALSE;
-
- return inst->o_main;
-}
-
diff --git a/src/modules/luncher/config.c b/src/modules/luncher/config.c
deleted file mode 100644
index 2ce4baf7ed..0000000000
--- a/src/modules/luncher/config.c
+++ /dev/null
@@ -1,572 +0,0 @@
-#include "luncher.h"
-
-static void
-_config_close(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- luncher_config->list = NULL;
- luncher_config->slist = NULL;
- evas_object_del(luncher_config->config_dialog);
- luncher_config->config_dialog = NULL;
- e_config_save_queue();
-}
-
-static void
-_config_show_general(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- evas_object_hide(luncher_config->contents);
- evas_object_show(luncher_config->general);
-}
-
-static void
-_config_show_contents(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- evas_object_hide(luncher_config->general);
- evas_object_show(luncher_config->contents);
-}
-
-static void
-_type_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- int value = elm_radio_value_get(obj);
-
- switch (value)
- {
- case 0:
- inst->cfg->type = E_LUNCHER_MODULE_FULL;
- break;
- case 1:
- inst->cfg->type = E_LUNCHER_MODULE_LAUNCH_ONLY;
- break;
- case 2:
- inst->cfg->type = E_LUNCHER_MODULE_TASKS_ONLY;
- break;
- default:
- inst->cfg->type = E_LUNCHER_MODULE_FULL;
- }
-
- e_config_save_queue();
- bar_config_updated(inst);
-}
-
-static void
-_check_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- inst->cfg->hide_tooltips = elm_check_state_get(obj);
-
- e_config_save_queue();
- bar_config_updated(inst);
-}
-
-static void
-_config_source_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- const char *dir = elm_object_item_text_get(elm_list_selected_item_get(luncher_config->list));
-
- if (eina_streq(inst->cfg->dir, dir))
- return;
- if (inst->cfg->dir) eina_stringshare_del(inst->cfg->dir);
- inst->cfg->dir = NULL;
- inst->cfg->dir = eina_stringshare_ref(dir);
- bar_reorder(inst);
-}
-
-static void
-_config_populate_order_list(Evas_Object *list, Instance *inst)
-{
- Eina_List *dirs;
- char buf[4096], *file;
- size_t len;
- Elm_Object_Item *it;
-
- elm_list_clear(list);
-
- len = e_user_dir_concat_static(buf, "applications/bar");
- if (len + 2 >= sizeof(buf)) return;
- dirs = ecore_file_ls(buf);
-
- buf[len] = '/';
- len++;
-
- EINA_LIST_FREE(dirs, file)
- {
- if (file[0] == '.') continue;
- if (eina_strlcpy(buf + len, file, sizeof(buf) - len) >= sizeof(buf) - len)
- continue;
- if (ecore_file_is_dir(buf))
- {
- it = elm_list_item_append(list, file, NULL, NULL, _config_source_changed, inst);
- if ((inst->cfg->dir) && (eina_streq(inst->cfg->dir, file)))
- elm_list_item_selected_set(it, EINA_TRUE);
- }
- free(file);
- }
- elm_list_go(list);
-}
-
-static void
-_config_source_cancel(void *data)
-{
- Instance *inst = data;
-
- config_luncher(e_zone_current_get(), inst, luncher_config->bar);
-}
-
-static void
-_config_source_added(void *data, char *text)
-{
- Instance *inst = data;
- char buf[4096];
- char tmp[4096] = {0};
- FILE *f;
- size_t len;
-
- len = e_user_dir_snprintf(buf, sizeof(buf), "applications/bar/%s", text);
- if (len + sizeof("/.order") >= sizeof(buf)) return;
- while (!ecore_file_exists(buf))
- {
- ecore_file_mkdir(buf);
- memcpy(buf + len, "/.order", sizeof("/.order"));
- e_user_dir_concat_static(tmp, "applications/bar/default/.order");
- if (ecore_file_cp(tmp, buf)) break;
- f = fopen(buf, "w");
- if (!f) break;
- /* Populate this .order file with some defaults */
- snprintf(tmp, sizeof(tmp),
- "terminology.desktop\n"
- "sylpheed.desktop\n"
- "firefox.desktop\n"
- "openoffice.desktop\n"
- "xchat.desktop\n"
- "gimp.desktop\n");
- fwrite(tmp, sizeof(char), strlen(tmp), f);
- fclose(f);
- break;
- }
- config_luncher(e_zone_current_get(), inst, luncher_config->bar);
-}
-
-static void
-_config_source_deleted(void *data)
-{
- char buf[4096];
- Instance *inst = data;
-
- if (e_user_dir_snprintf(buf, sizeof(buf), "applications/bar/%s", inst->cfg->dir) >= sizeof(buf))
- return;
- if (ecore_file_is_dir(buf))
- ecore_file_recursive_rm(buf);
- e_object_del(E_OBJECT(inst->order));
- config_luncher(e_zone_current_get(), inst, luncher_config->bar);
-}
-
-static void
-_config_source_add(void *data, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
-
- evas_object_del(luncher_config->config_dialog);
- e_entry_dialog_show(_("Create new Luncher source"), "enlightenment",
- _("Enter a name for this new source:"), "", NULL, NULL,
- _config_source_added, _config_source_cancel, inst);
-}
-
-static void
-_config_source_del(void *data, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- char buf[4096];
-
- evas_object_del(luncher_config->config_dialog);
- snprintf(buf, sizeof(buf), _("You requested to delete \"%s\".<ps/><ps/>"
- "Are you sure you want to delete this bar source?"),
- inst->cfg->dir);
- e_confirm_dialog_show(_("Are you sure you want to delete this bar source?"),
- "application-exit", buf, _("Delete"), _("Keep"),
- _config_source_deleted, _config_source_cancel, inst, inst,
- NULL, NULL);
-}
-
-static void
-_config_contents(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- Evas_Object *popup = evas_object_data_get(obj, "popup");
-
- if (e_configure_registry_exists("applications/ibar_applications"))
- {
- char path[4096];
- e_user_dir_snprintf(path, sizeof(path), "applications/bar/%s/.order",
- inst->cfg->dir);
- e_configure_registry_call("internal/ibar_other", NULL, path);
- evas_object_del(popup);
- }
-
-}
-
-static void
-_config_create_icon(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- Evas_Object *popup = evas_object_data_get(obj, "popup");
-
- if (e_configure_registry_exists("applications/new_application"))
- {
- char path[4096];
- e_user_dir_snprintf(path, sizeof(path), "applications/bar/%s/.order",
- inst->cfg->dir);
- e_configure_registry_call("applications/new_application", NULL, path);
- evas_object_del(popup);
- }
-}
-
-static void
-_icon_theme_file_set(Evas_Object *img, const char *icon)
-{
- const char *path = NULL, *k = NULL;
- char buf[4096];
- int len = 0;
-
- if (!icon)
- path = NULL;
- else if (strncmp(icon, "/", 1) && !ecore_file_exists(icon))
- {
- path = efreet_icon_path_find(e_config->icon_theme, icon, 48);
- if (!path)
- {
- if (e_util_strcmp(e_config->icon_theme, "hicolor"))
- path = efreet_icon_path_find("hicolor", icon, 48);
- }
- }
- else if (ecore_file_exists(icon))
- {
- path = icon;
- }
- if (!path && icon)
- {
- snprintf(buf, sizeof(buf), "e/icons/%s", icon);
- if (eina_list_count(e_theme_collection_items_find("base/theme/icons", buf)))
- {
- path = e_theme_edje_file_get("base/theme/icons", buf);
- k = buf;
- }
- else
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- }
- else if (!path && !icon)
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- if (path && icon)
- {
- len = strlen(icon);
- if ((len > 4) && (!strcasecmp(icon + len - 4, ".edj")))
- k = "icon";
- }
- elm_image_file_set(img, path, k);
-}
-
-static void
-_update_preview_size(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- int value = elm_slider_value_get(obj);
-
- inst->cfg->preview_size = value;
- e_config_save_queue();
-}
-
-EINTERN Evas_Object *
-config_luncher(E_Zone *zone, Instance *inst, Eina_Bool bar)
-{
- Evas_Object *popup, *tb, *lbl, *fr, *box, *list, *mlist;
- Evas_Object *butbox, *sep, *hbox, *img, *but, *o, *group;
- Evas_Object *slider, *check;
- Elm_Object_Item *it;
-
- luncher_config->bar = bar;
-
- popup = elm_popup_add(e_comp->elm);
- E_EXPAND(popup);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- tb = elm_table_add(popup);
- E_EXPAND(tb);
- evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_show(tb);
- elm_object_content_set(popup, tb);
-
- lbl = elm_label_add(tb);
- evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_style_set(lbl, "marker");
- evas_object_show(lbl);
- elm_object_text_set(lbl, _("Luncher Configuration"));
- elm_table_pack(tb, lbl, 0, 0, 2, 1);
-
- mlist = elm_list_add(tb);
- E_ALIGN(mlist, 0, EVAS_HINT_FILL);
- E_WEIGHT(mlist, 0, EVAS_HINT_EXPAND);
- elm_table_pack(tb, mlist, 0, 1, 1, 1);
- elm_list_select_mode_set(mlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
- elm_scroller_content_min_limit(mlist, 1, 1);
- it = elm_list_item_append(mlist, _("General"), NULL, NULL,
- _config_show_general, inst);
- elm_list_item_selected_set(it, 1);
- it = elm_list_item_append(mlist, _("Contents"), NULL, NULL,
- _config_show_contents, inst);
- elm_list_go(mlist);
- evas_object_show(mlist);
-
- fr = elm_frame_add(tb);
- elm_object_text_set(fr, _("General"));
- E_EXPAND(fr);
- evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_table_pack(tb, fr, 1, 1, 1, 1);
- evas_object_show(fr);
- luncher_config->general = fr;
-
- box = elm_box_add(fr);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- lbl = elm_label_add(box);
- elm_object_text_set(lbl, _("Luncher Type:"));
- E_ALIGN(lbl, 0.5, 0.5);
- E_WEIGHT(lbl, EVAS_HINT_EXPAND, 0);
- elm_box_pack_end(box, lbl);
- evas_object_show(lbl);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 0);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Launcher and Taskbar"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _type_changed, inst);
- evas_object_show(o);
- group = o;
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 1);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Launcher Only"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _type_changed, inst);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 2);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Taskbar Only"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _type_changed, inst);
- evas_object_show(o);
-
- switch(inst->cfg->type)
- {
- case E_LUNCHER_MODULE_FULL:
- elm_radio_value_set(group, 0);
- break;
- case E_LUNCHER_MODULE_LAUNCH_ONLY:
- elm_radio_value_set(group, 1);
- break;
- case E_LUNCHER_MODULE_TASKS_ONLY:
- elm_radio_value_set(group, 2);
- break;
- default:
- elm_radio_value_set(group, 0);
- }
-
- o = elm_separator_add(box);
- elm_separator_horizontal_set(o, EINA_TRUE);
- E_EXPAND(o);
- E_FILL(o);
- elm_box_pack_end(box, o);
- evas_object_show(o);
-
- lbl = elm_label_add(box);
- elm_object_text_set(lbl, _("Tooltips:"));
- E_ALIGN(lbl, 0.5, 0.5);
- E_WEIGHT(lbl, EVAS_HINT_EXPAND, 0);
- elm_box_pack_end(box, lbl);
- evas_object_show(lbl);
-
- check = elm_check_add(box);
- elm_object_text_set(check, _("Hide tooltips"));
- elm_check_state_set(check, inst->cfg->hide_tooltips);
- E_ALIGN(check, 0.0, 0.0);
- E_WEIGHT(check, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(check, "changed", _check_changed, inst);
- elm_box_pack_end(box, check);
- evas_object_show(check);
-
- o = elm_separator_add(box);
- elm_separator_horizontal_set(o, EINA_TRUE);
- E_EXPAND(o);
- E_FILL(o);
- elm_box_pack_end(box, o);
- evas_object_show(o);
-
- lbl = elm_label_add(box);
- elm_object_text_set(lbl, _("Preview Size:"));
- E_ALIGN(lbl, 0.5, 0.5);
- E_WEIGHT(lbl, EVAS_HINT_EXPAND, 0);
- elm_box_pack_end(box, lbl);
- evas_object_show(lbl);
-
- slider = elm_slider_add(box);
- elm_slider_unit_format_set(slider, "%1.0f");
- elm_slider_indicator_format_set(slider, "%1.0f");
- elm_slider_min_max_set(slider, 1, 256);
- elm_slider_value_set(slider, inst->cfg->preview_size);
- elm_slider_step_set(slider, 1 / 256.0);
- elm_slider_span_size_set(slider, 256);
- E_ALIGN(slider, 0.0, 0.0);
- E_WEIGHT(slider, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_preview_size, inst);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
-
- elm_object_content_set(fr, box);
-
- fr = elm_frame_add(tb);
- elm_object_text_set(fr, _("Contents"));
- E_EXPAND(fr);
- evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_table_pack(tb, fr, 1, 1, 1, 1);
- evas_object_show(fr);
- luncher_config->contents = fr;
-
- box = elm_box_add(fr);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_show(box);
-
- hbox = elm_box_add(box);
- elm_box_horizontal_set(hbox, EINA_TRUE);
- elm_box_homogeneous_set(hbox, EINA_FALSE);
- evas_object_size_hint_expand_set(hbox, 0.0, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_end(box, hbox);
- evas_object_show(hbox);
-
- list = elm_list_add(hbox);
- E_ALIGN(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_box_pack_end(hbox, list);
- elm_list_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS);
- elm_scroller_content_min_limit(list, 1, 1);
- evas_object_show(list);
- luncher_config->list = list;
- _config_populate_order_list(list, inst);
-
- butbox = elm_box_add(hbox);
- elm_box_horizontal_set(butbox, EINA_FALSE);
- E_EXPAND(butbox);
- evas_object_size_hint_align_set(butbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_end(hbox, butbox);
- evas_object_show(butbox);
-
- sep = elm_separator_add(box);
- elm_separator_horizontal_set(sep, EINA_TRUE);
- elm_box_pack_end(box, sep);
- evas_object_show(sep);
-
- img = elm_icon_add(butbox);
- evas_object_size_hint_aspect_set(img, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- _icon_theme_file_set(img, "list-add");
- evas_object_show(img);
-
- but = elm_button_add(butbox);
- elm_object_part_content_set(but, "icon", img);
- elm_object_text_set(but, _("Add"));
- E_EXPAND(but);
- evas_object_size_hint_align_set(but, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_data_set(but, "popup", popup);
- evas_object_smart_callback_add(but, "clicked", _config_source_add, inst);
- elm_box_pack_end(butbox, but);
- evas_object_show(but);
-
- img = elm_icon_add(butbox);
- evas_object_size_hint_aspect_set(img, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- _icon_theme_file_set(img, "list-remove");
- evas_object_show(img);
-
- but = elm_button_add(butbox);
- elm_object_part_content_set(but, "icon", img);
- elm_object_text_set(but, _("Delete"));
- E_EXPAND(but);
- evas_object_size_hint_align_set(but, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_data_set(but, "popup", popup);
- evas_object_smart_callback_add(but, "clicked", _config_source_del, inst);
- elm_box_pack_end(butbox, but);
- evas_object_show(but);
-
- hbox = elm_box_add(box);
- elm_box_horizontal_set(hbox, EINA_TRUE);
- elm_box_homogeneous_set(hbox, EINA_TRUE);
- E_EXPAND(box);
- evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_end(box, hbox);
- evas_object_show(hbox);
-
- img = elm_icon_add(hbox);
- evas_object_size_hint_aspect_set(img, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- _icon_theme_file_set(img, "document-new");
- evas_object_show(img);
-
- but = elm_button_add(hbox);
- elm_object_part_content_set(but, "icon", img);
- elm_object_text_set(but, _("Create New Icon"));
- E_EXPAND(but);
- evas_object_size_hint_align_set(but, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_data_set(but, "popup", popup);
- evas_object_smart_callback_add(but, "clicked", _config_create_icon, inst);
- elm_box_pack_end(hbox, but);
- evas_object_show(but);
-
- img = elm_icon_add(hbox);
- evas_object_size_hint_aspect_set(img, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- _icon_theme_file_set(img, "list-add");
- evas_object_show(img);
-
- but = elm_button_add(hbox);
- elm_object_part_content_set(but, "icon", img);
- elm_object_text_set(but, _("Contents"));
- E_EXPAND(but);
- evas_object_size_hint_align_set(but, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_data_set(but, "popup", popup);
- evas_object_smart_callback_add(but, "clicked", _config_contents, inst);
- elm_box_pack_end(hbox, but);
- evas_object_show(but);
-
- elm_object_content_set(fr, box);
-
- _config_show_general(NULL, NULL, NULL);
-
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center_on_zone(popup, zone);
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, NULL);
-
- return luncher_config->config_dialog = popup;
-}
-
diff --git a/src/modules/luncher/e-module-luncher.edj b/src/modules/luncher/e-module-luncher.edj
deleted file mode 100644
index f2dd5d4bbe..0000000000
--- a/src/modules/luncher/e-module-luncher.edj
+++ /dev/null
Binary files differ
diff --git a/src/modules/luncher/grid.c b/src/modules/luncher/grid.c
deleted file mode 100644
index b99fdff226..0000000000
--- a/src/modules/luncher/grid.c
+++ /dev/null
@@ -1,754 +0,0 @@
-#include "luncher.h"
-static Eina_List *handlers;
-static Elm_Gengrid_Item_Class _grid_icon_class;
-static void _grid_resize_job(void *data);
-
-static void
-_grid_aspect(Instance *inst)
-{
- Evas_Coord w, h, square, size;
-
- if (!eina_list_count(inst->icons))
- return;
- evas_object_geometry_get(inst->o_main, 0, 0, &w, &h);
- size = 0;
- if ((w + h) > 1)
- {
- square = w + h;
- size = floor((square / eina_list_count(inst->icons)));
- }
- inst->size = size;
- elm_gengrid_item_size_set(inst->o_icon_con, size, size);
-}
-
-static Eina_Bool
-_grid_check_modifiers(Evas_Modifier *modifiers)
-{
- if ((evas_key_modifier_is_set(modifiers, "Alt")) ||
- (evas_key_modifier_is_set(modifiers, "Control")) ||
- (evas_key_modifier_is_set(modifiers, "Shift")))
- return EINA_TRUE;
- return EINA_FALSE;
-}
-
-static Evas_Object *
-_grid_gadget_configure(Evas_Object *g)
-{
- if (!luncher_config) return NULL;
- if (luncher_config->config_dialog) return NULL;
- Instance *inst = evas_object_data_get(g, "instance");
- return config_luncher(e_zone_current_get(), inst, EINA_TRUE);
-}
-
-static void
-_grid_instance_watch(void *data, E_Exec_Instance *ex EINA_UNUSED, E_Exec_Watch_Type type)
-{
- Icon *ic = data;
-
- switch (type)
- {
- case E_EXEC_WATCH_STARTED:
- if (ic->starting) elm_layout_signal_emit(ic->o_layout, "e,state,started", "e");
- ic->starting = EINA_FALSE;
- break;
- default:
- break;
- }
-}
-
-static void
-_grid_icon_del(Instance *inst, Icon *ic)
-{
- inst->icons = eina_list_remove(inst->icons, ic);
- evas_object_del(ic->o_icon);
- evas_object_del(ic->o_layout);
- if (ic->desktop)
- efreet_desktop_unref(ic->desktop);
- eina_stringshare_del(ic->icon);
- eina_stringshare_del(ic->key);
- if (ic->exec)
- e_exec_instance_watcher_del(ic->exec, _grid_instance_watch, ic);
- ic->exec = NULL;
- _grid_aspect(inst);
- E_FREE(ic);
-}
-
-static void
-_grid_icon_drag_done(E_Drag *drag, int dropped)
-{
- Instance *inst = e_object_data_get(E_OBJECT(drag));
-
- efreet_desktop_unref(drag->data);
- if (!inst) return;
- evas_object_smart_callback_call(e_gadget_site_get(inst->o_main), "gadget_site_unlocked", NULL);
- if (!dropped)
- grid_recalculate(inst);
-}
-
-static void
-_grid_icon_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Icon *ic = data;
- Evas_Event_Mouse_Move *ev = event_data;
- int dx, dy;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_grid_check_modifiers(ev->modifiers)) return;
-
- if (!ic->drag.start) return;
-
- dx = ev->cur.output.x - ic->drag.x;
- dy = ev->cur.output.y - ic->drag.y;
- if (((dx * dx) + (dy * dy)) >
- (e_config->drag_resist * e_config->drag_resist))
- {
- E_Drag *d;
- Evas_Object *o;
- Evas_Coord x, y, w, h;
- unsigned int size;
- const char *drag_types[] = { "enlightenment/desktop" };
-
- ic->drag.dnd = 1;
- ic->drag.start = 0;
-
- evas_object_geometry_get(ic->o_icon, &x, &y, &w, &h);
- d = e_drag_new(x, y, drag_types, 1,
- ic->desktop, -1, NULL, _grid_icon_drag_done);
- d->button_mask = evas_pointer_button_down_mask_get(e_comp->evas);
- efreet_desktop_ref(ic->desktop);
- size = MAX(w, h);
- o = e_util_desktop_icon_add(ic->desktop, size, e_drag_evas_get(d));
- e_drag_object_set(d, o);
-
- e_drag_resize(d, w, h);
- e_drag_start(d, ic->drag.x, ic->drag.y);
- e_object_data_set(E_OBJECT(d), ic->inst);
- if (ic->in_order)
- e_order_remove(ic->inst->order, ic->desktop);
- }
-}
-
-static Eina_Bool
-_grid_drag_timer(void *data)
-{
- Icon *ic = data;
-
- ic->drag_timer = NULL;
- ic->drag.start = 1;
- evas_object_smart_callback_call(e_gadget_site_get(ic->inst->o_main), "gadget_site_locked", NULL);
- return EINA_FALSE;
-}
-
-static void
-_grid_icon_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Icon *ic = data;
- Evas_Event_Mouse_Up *ev = event_data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
- {
- if (ev->button == 1)
- {
- ic->drag.start = 0;
- ic->drag.dnd = 0;
- E_FREE_FUNC(ic->mouse_in_timer, ecore_timer_del);
- E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
- E_FREE_FUNC(ic->drag_timer, ecore_timer_del);
- }
- return;
- }
- if (_grid_check_modifiers(ev->modifiers)) return;
-
- if (ev->button == 1)
- {
- ic->drag.x = ev->output.x;
- ic->drag.y = ev->output.y;
- E_FREE_FUNC(ic->drag_timer, ecore_timer_del);
- ic->drag_timer = ecore_timer_loop_add(.35, _grid_drag_timer, ic);
- }
-}
-
-static void
-_grid_icon_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Icon *ic = data;
- Evas_Event_Mouse_Up *ev = event_data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_grid_check_modifiers(ev->modifiers)) return;
-
- if (ev->button == 1)
- {
- E_FREE_FUNC(ic->drag_timer, ecore_timer_del);
- if (ic->drag.dnd)
- {
- ic->drag.start = 0;
- ic->drag.dnd = 0;
- return;
- }
- }
- if (ev->button == 1 && ic->desktop)
- {
- if (ic->desktop->type == EFREET_DESKTOP_TYPE_APPLICATION)
- {
- E_Exec_Instance *ex;
-
- ex = e_exec(e_zone_current_get(), ic->desktop, NULL, NULL, "luncher");
- ic->exec = ex;
- e_exec_instance_watcher_add(ex, _grid_instance_watch, ic);
- if (!ic->starting) elm_layout_signal_emit(ic->o_layout, "e,state,starting", "e");
- ic->starting = EINA_TRUE;
- }
- else if (ic->desktop->type == EFREET_DESKTOP_TYPE_LINK)
- {
- if (!strncasecmp(ic->desktop->url, "file:", 5))
- {
- E_Action *act;
-
- act = e_action_find("fileman");
- if (act)
- act->func.go(NULL, ic->desktop->url + 5);
- }
- }
- }
-}
-
-static void
-_grid_icon_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data)
-{
- Icon *ic = data;
- Evas_Event_Mouse_In *ev = event_data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_grid_check_modifiers(ev->modifiers)) return;
-
- evas_object_raise(ic->o_layout);
- if (!ic->inst->cfg->hide_tooltips)
- elm_object_tooltip_show(obj);
- ic->active = EINA_TRUE;
- elm_layout_signal_emit(ic->o_layout, "e,state,focused", "e");
-}
-
-static void
-_grid_icon_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Icon *ic = data;
-
- if (!ic->inst->cfg->hide_tooltips)
- elm_object_tooltip_hide(obj);
- elm_layout_signal_emit(ic->o_layout, "e,state,unfocused", "e");
-}
-
-static Evas_Object *
-_gengrid_icon_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part)
-{
- Icon *ic = data;
- if (strcmp(part, "elm.swallow.icon"))
- return NULL;
- return ic->o_layout;
-}
-
-static void
-_grid_icon_file_set(Icon *ic, Efreet_Desktop *desktop)
-{
- const char *path = NULL, *k = NULL;
- char buf[4096];
-
- if (desktop)
- {
- if (!desktop->icon)
- path = NULL;
- else if (strncmp(desktop->icon, "/", 1) && !ecore_file_exists(desktop->icon))
- {
- path = efreet_icon_path_find(e_config->icon_theme, desktop->icon, ic->inst->size);
- if (!path)
- {
- if (e_util_strcmp(e_config->icon_theme, "hicolor"))
- path = efreet_icon_path_find("hicolor", desktop->icon, ic->inst->size);
- }
- }
- else if (ecore_file_exists(desktop->icon))
- {
- path = desktop->icon;
- }
- if (!path && desktop->icon)
- {
- snprintf(buf, sizeof(buf), "e/icons/%s", desktop->icon);
- if (eina_list_count(e_theme_collection_items_find("base/theme/icons", buf)))
- {
- path = e_theme_edje_file_get("base/theme/icons", buf);
- k = buf;
- }
- else
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- }
- else if (!path && !desktop->icon)
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- }
- else if (ic->icon)
- {
- if (strncmp(ic->icon, "/", 1) && !ecore_file_exists(ic->icon))
- {
- path = efreet_icon_path_find(e_config->icon_theme, ic->icon, ic->inst->size);
- if (!path)
- {
- if (e_util_strcmp(e_config->icon_theme, "hicolor"))
- path = efreet_icon_path_find("hicolor", ic->icon, ic->inst->size);
- }
- }
- else if (ecore_file_exists(ic->icon))
- {
- path = ic->icon;
- k = ic->key;
- }
- if (!path)
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- }
- else
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- elm_image_file_set(ic->o_icon, path, k);
-}
-
-static Icon *
-_grid_icon_add(Instance *inst, Efreet_Desktop *desktop)
-{
- Icon *ic;
-
- ic = E_NEW(Icon, 1);
- efreet_desktop_ref(desktop);
- ic->desktop = desktop;
- ic->inst = inst;
- ic->preview = NULL;
- ic->preview_box = NULL;
- ic->mouse_in_timer = NULL;
- ic->mouse_out_timer = NULL;
- ic->active = EINA_FALSE;
- ic->starting = EINA_FALSE;
- ic->exec = NULL;
-
- ic->o_layout = elm_layout_add(inst->o_icon_con);
- e_theme_edje_object_set(ic->o_layout, "e/gadget/luncher/icon",
- "e/gadget/luncher/icon");
- E_FILL(ic->o_layout);
- evas_object_show(ic->o_layout);
-
- ic->o_icon = elm_icon_add(ic->o_layout);
- E_EXPAND(ic->o_icon);
-
-
- _grid_icon_file_set(ic, desktop);
-
- if (!inst->cfg->hide_tooltips)
- {
- elm_object_tooltip_text_set(ic->o_icon, desktop->name);
- elm_object_tooltip_orient_set(ic->o_icon, ELM_TOOLTIP_ORIENT_CENTER);
- elm_object_tooltip_style_set(ic->o_icon, "luncher");
- }
- evas_object_size_hint_aspect_set(ic->o_icon, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
- elm_layout_content_set(ic->o_layout, "e.swallow.icon", ic->o_icon);
- evas_object_event_callback_add(ic->o_icon, EVAS_CALLBACK_MOUSE_UP,
- _grid_icon_mouse_up, ic);
- evas_object_event_callback_priority_add(ic->o_icon, EVAS_CALLBACK_MOUSE_DOWN, 0,
- _grid_icon_mouse_down, ic);
- evas_object_event_callback_add(ic->o_icon, EVAS_CALLBACK_MOUSE_MOVE,
- _grid_icon_mouse_move, ic);
- evas_object_event_callback_add(ic->o_icon, EVAS_CALLBACK_MOUSE_IN,
- _grid_icon_mouse_in, ic);
- evas_object_event_callback_add(ic->o_icon, EVAS_CALLBACK_MOUSE_OUT,
- _grid_icon_mouse_out, ic);
- evas_object_show(ic->o_icon);
-
- elm_layout_sizing_eval(ic->o_layout);
-
- elm_gengrid_item_append(inst->o_icon_con, &_grid_icon_class, ic, NULL, NULL);
- _grid_aspect(inst);
-
- return ic;
-}
-
-static void
-_grid_empty(Instance *inst)
-{
- if (inst->icons)
- {
- elm_gengrid_clear(inst->o_icon_con);
- while (inst->icons)
- _grid_icon_del(inst, eina_list_data_get(inst->icons));
- inst->icons = NULL;
- }
-}
-
-static void
-_grid_fill(Instance *inst)
-{
- Icon *ic;
-
- if (inst->order)
- {
- Efreet_Desktop *desktop;
- Eina_List *list;
-
- EINA_LIST_FOREACH(inst->order->desktops, list, desktop)
- {
- ic = _grid_icon_add(inst, desktop);
- ic->in_order = EINA_TRUE;
- inst->icons = eina_list_append(inst->icons, ic);
- }
- }
-}
-
-static void
-_grid_resize_job(void *data)
-{
- Instance *inst = data;
- Eina_List *l;
- Icon *ic;
-
- if (inst)
- {
- elm_layout_sizing_eval(inst->o_main);
- _grid_aspect(inst);
- EINA_LIST_FOREACH(inst->icons, l, ic)
- _grid_icon_file_set(ic, ic->desktop);
- inst->resize_job = NULL;
- }
-}
-
-static Eina_Bool
-_grid_cb_update_icons(EINA_UNUSED void *data, EINA_UNUSED int ev_type, EINA_UNUSED void *ev)
-{
- Instance *inst = NULL;
- Eina_List *l = NULL;
-
- EINA_LIST_FOREACH(luncher_instances, l, inst)
- {
- if (inst->bar) continue;
- if (inst->resize_job) return ECORE_CALLBACK_RENEW;
- inst->resize_job = ecore_job_add(_grid_resize_job, inst);
- }
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static void
-_grid_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst->resize_job) return;
- inst->resize_job = ecore_job_add(_grid_resize_job, inst);
-}
-
-static void
-_grid_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
- char buf[4096];
-
- if (inst->o_main != event_data) return;
- if (e_user_dir_snprintf(buf, sizeof(buf), "applications/bar/%s", inst->cfg->dir) >= sizeof(buf))
- return;
-
- luncher_config->items = eina_list_remove(luncher_config->items, inst->cfg);
- eina_stringshare_del(inst->cfg->dir);
- E_FREE(inst->cfg);
-}
-
-static void
-_grid_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
-
- evas_object_smart_callback_del_full(e_gadget_site_get(obj), "gadget_removed", _grid_removed_cb, inst);
- e_object_del(E_OBJECT(inst->order));
- E_FREE_FUNC(inst->drop_handler, evas_object_del);
- luncher_instances = eina_list_remove(luncher_instances, inst);
- free(inst);
-}
-
-static void
-_grid_drop_drop(void *data, const char *type, void *event_data)
-{
- Instance *inst = data;
- E_Event_Dnd_Drop *ev = event_data;
- Efreet_Desktop *desktop = NULL;
- Eina_List *l = NULL;
- Icon *ic = NULL;
-
- evas_object_del(inst->place_holder);
- inst->place_holder = NULL;
- if (!strcmp(type, "enlightenment/desktop"))
- desktop = ev->data;
- else if (!strcmp(type, "enlightenment/border"))
- {
- E_Client *ec;
-
- ec = ev->data;
- desktop = ec->desktop;
- if (!desktop)
- {
- desktop = e_desktop_client_create(ec);
- efreet_desktop_save(desktop);
- e_desktop_edit(desktop);
- }
- }
- else if (!strcmp(type, "text/uri-list"))
- l = ev->data;
-
- ic = inst->drop_before;
- if (ic)
- {
- if (desktop)
- e_order_prepend_relative(inst->order, desktop, ic->desktop);
- else
- e_order_files_prepend_relative(inst->order, l, ic->desktop);
- }
- else
- {
- if (desktop)
- e_order_append(inst->order, desktop);
- else
- e_order_files_append(inst->order, l);
- }
-}
-
-static void
-_grid_drop_leave(void *data, const char *type EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
-
- inst->inside = EINA_FALSE;
- evas_object_del(inst->place_holder);
- inst->place_holder = NULL;
-}
-
-static void
-_grid_drop_move(void *data, const char *type EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
- E_Event_Dnd_Move *ev = event_data;
- Evas_Coord x = ev->x, y = ev->y;
- Eina_List *l;
- Icon *ic;
-
- if (!inst->inside)
- return;
-
- EINA_LIST_FOREACH(inst->icons, l, ic)
- {
- Evas_Coord dx, dy, dw, dh;
-
- if (!ic->in_order) continue;
- evas_object_geometry_get(ic->o_layout, &dx, &dy, &dw, &dh);
- if (E_INSIDE(x, y, dx, dy, dw, dh))
- inst->drop_before = ic;
- }
- if (inst->drop_before)
- elm_gengrid_item_insert_before(inst->o_icon_con, &_grid_icon_class, inst->place_holder, inst->drop_before->o_layout, NULL, NULL);
-}
-
-static void
-_grid_drop_enter(void *data, const char *type EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
-
- inst->inside = EINA_TRUE;
- inst->place_holder = evas_object_rectangle_add(evas_object_evas_get(inst->o_icon_con));
- evas_object_color_set(inst->place_holder, 0, 0, 0, 0);
- evas_object_size_hint_min_set(inst->place_holder, inst->size, inst->size);
- evas_object_size_hint_max_set(inst->place_holder, inst->size, inst->size);
- evas_object_show(inst->place_holder);
-}
-
-static void
-_grid_anchor_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst && inst->o_icon_con)
- {
- grid_recalculate(inst);
- }
-}
-
-static void
-_grid_order_update(void *data, E_Order *eo EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst && inst->o_icon_con)
- {
- grid_recalculate(inst);
- }
-}
-
-static void
-_grid_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- char buf[4096];
- const char *drop[] = { "enlightenment/desktop", "enlightenment/border", "text/uri-list" };
-
- inst->o_icon_con = elm_gengrid_add(inst->o_main);
- elm_object_style_set(inst->o_icon_con, "no_inset_shadow");
- elm_gengrid_align_set(inst->o_icon_con, 0.5, 0.5);
- elm_gengrid_select_mode_set(inst->o_icon_con, ELM_OBJECT_SELECT_MODE_NONE);
- E_FILL(inst->o_icon_con);
- elm_layout_content_set(inst->o_main, "e.swallow.grid", inst->o_icon_con);
- evas_object_show(inst->o_icon_con);
-
- evas_object_data_set(inst->o_main, "instance", inst);
- evas_object_data_set(inst->o_icon_con, "instance", inst);
-
- e_gadget_configure_cb_set(inst->o_main, _grid_gadget_configure);
- evas_object_smart_callback_del_full(obj, "gadget_created", _grid_created_cb, data);
-
- if (!inst->cfg->dir)
- inst->cfg->dir = eina_stringshare_add("default");
- if (inst->cfg->dir[0] != '/')
- e_user_dir_snprintf(buf, sizeof(buf), "applications/bar/%s/.order",
- inst->cfg->dir);
- else
- eina_strlcpy(buf, inst->cfg->dir, sizeof(buf));
-
- inst->order = e_order_new(buf);
- e_order_update_callback_set(inst->order, _grid_order_update, inst);
-
- _grid_fill(inst);
-
- inst->drop_handler =
- e_gadget_drop_handler_add(inst->o_main, inst,
- _grid_drop_enter, _grid_drop_move,
- _grid_drop_leave, _grid_drop_drop,
- drop, 3);
- elm_layout_content_set(inst->o_main, "e.swallow.drop", inst->drop_handler);
- evas_object_show(inst->drop_handler);
-
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_RESIZE, _grid_resize, inst);
- _grid_aspect(inst);
-}
-
-static Config_Item *
-_conf_item_get(int *id)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(luncher_config->items, l, ci)
- if (*id == ci->id) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
-
- if (*id != -1)
- ci->id = eina_list_count(luncher_config->items)+1;
- else
- ci->id = -1;
- ci->dir = eina_stringshare_add("default");
- luncher_config->items = eina_list_append(luncher_config->items, ci);
-
- return ci;
-}
-
-static void
-_grid_recalculate_job(void *data)
-{
- Instance *inst = data;
-
- if (inst)
- {
- if (inst->o_icon_con)
- {
- _grid_empty(inst);
- _grid_fill(inst);
- }
- inst->recalc_job = NULL;
- }
-}
-
-EINTERN void
-grid_recalculate(Instance *inst)
-{
- E_FREE_FUNC(inst->recalc_job, ecore_job_del);
- inst->recalc_job = ecore_job_add(_grid_recalculate_job, inst);
-}
-
-EINTERN void
-grid_reorder(Instance *inst)
-{
- char buf[4096];
-
- if (inst)
- {
- E_FREE_FUNC(inst->recalc_job, ecore_job_del);
- _grid_empty(inst);
- if (!inst->cfg->dir)
- inst->cfg->dir = eina_stringshare_add("default");
- if (inst->cfg->dir[0] != '/')
- e_user_dir_snprintf(buf, sizeof(buf), "applications/bar/%s/.order",
- inst->cfg->dir);
- else
- eina_strlcpy(buf, inst->cfg->dir, sizeof(buf));
- e_object_del(E_OBJECT(inst->order));
- inst->order = e_order_new(buf);
- e_order_update_callback_set(inst->order, _grid_order_update, inst);
- _grid_fill(inst);
- }
-}
-
-EINTERN Evas_Object *
-grid_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Instance *inst;
-
- if (orient) return NULL;
- if (e_gadget_site_is_desklock(parent)) return NULL;
- inst = E_NEW(Instance, 1);
- inst->size = 0;
- inst->resize_job = NULL;
- inst->cfg = _conf_item_get(id);
- *id = inst->cfg->id;
- inst->inside = EINA_FALSE;
- inst->bar = EINA_FALSE;
-
- if (!inst->cfg->preview_size)
- inst->cfg->preview_size = 64;
-
- _grid_icon_class.item_style = "luncher";
- _grid_icon_class.func.text_get = NULL;
- _grid_icon_class.func.content_get = _gengrid_icon_get;
- _grid_icon_class.func.state_get = NULL;
- _grid_icon_class.func.del = NULL;
-
- inst->o_main = elm_layout_add(parent);
- e_theme_edje_object_set(inst->o_main, "e/gadget/luncher/grid",
- "e/gadget/luncher/grid");
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, _grid_del, inst);
- evas_object_smart_callback_add(parent, "gadget_created", _grid_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_site_anchor", _grid_anchor_changed_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_removed", _grid_removed_cb, inst);
- evas_object_show(inst->o_main);
-
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_CONFIG_ICON_THEME,
- _grid_cb_update_icons, NULL);
- E_LIST_HANDLER_APPEND(handlers, EFREET_EVENT_ICON_CACHE_UPDATE,
- _grid_cb_update_icons, NULL);
-
- if (inst->cfg->id < 0) return inst->o_main;
- luncher_instances = eina_list_append(luncher_instances, inst);
-
- return inst->o_main;
-}
diff --git a/src/modules/luncher/luncher.h b/src/modules/luncher/luncher.h
deleted file mode 100644
index ef98550738..0000000000
--- a/src/modules/luncher/luncher.h
+++ /dev/null
@@ -1,114 +0,0 @@
-#ifndef LUNCHER_H
-#define LUNCHER_H
-
-#include "e.h"
-
-E_API extern E_Module_Api e_modapi;
-
-E_API void *e_modapi_init (E_Module *m);
-E_API int e_modapi_shutdown (E_Module *m);
-E_API int e_modapi_save (E_Module *m);
-
-typedef struct _Config Config;
-typedef struct _Config_Item Config_Item;
-typedef struct _Instance Instance;
-typedef struct _Icon Icon;
-typedef enum _Luncher_Type Luncher_Type;
-
-enum _Luncher_Type
-{
- E_LUNCHER_MODULE_FULL = 0,
- E_LUNCHER_MODULE_LAUNCH_ONLY,
- E_LUNCHER_MODULE_TASKS_ONLY
-};
-
-struct _Config
-{
- Eina_List *items;
-
- E_Module *module;
- Evas_Object *config_dialog;
- Evas_Object *slist;
- Evas_Object *list;
- Evas_Object *general;
- Evas_Object *contents;
- Eina_Bool bar;
-};
-
-struct _Config_Item
-{
- int id;
- int version;
- int preview_size;
- int hide_tooltips;
- Eina_Stringshare *dir;
- Luncher_Type type;
-};
-
-struct _Instance
-{
- Evas_Object *o_main;
- Evas_Object *o_icon_con;
- Evas_Object *drop_handler;
- Evas_Object *place_holder;
- Evas_Object *current_preview;
- E_Order *order;
- Eina_List *icons;
- Eina_Hash *icons_desktop_hash;
- Eina_Hash *icons_clients_hash;
- Evas_Coord size;
- Ecore_Job *resize_job;
- Ecore_Job *recalc_job;
- E_Comp_Object_Mover *iconify_provider;
- Eina_Bool main_del;
- Eina_Bool bar;
- Eina_Bool inside;
- Eina_Bool current_preview_menu;
- Config_Item *cfg;
- Icon *drop_before;
-};
-
-struct _Icon
-{
- Instance *inst;
- Evas_Object *o_layout;
- Evas_Object *o_icon;
- Evas_Object *preview;
- Evas_Object *preview_box;
- Evas_Object *preview_scroller;
- Evas_Object *client_menu;
- E_Exec_Instance *exec;
- Efreet_Desktop *desktop;
- Eina_List *execs;
- Eina_List *clients;
- Eina_List *client_cbs;
- Ecore_Timer *mouse_in_timer;
- Ecore_Timer *mouse_out_timer;
- Ecore_Timer *drag_timer;
- Eina_Stringshare *icon;
- Eina_Stringshare *key;
- Eina_Bool in_order;
- Eina_Bool active;
- Eina_Bool starting;
- Eina_Bool preview_dismissed;
- struct
- {
- unsigned char start E_BITFIELD;
- unsigned char dnd E_BITFIELD;
- int x, y;
- } drag;
-};
-
-EINTERN Evas_Object *config_luncher(E_Zone *zone, Instance *inst, Eina_Bool bar);
-EINTERN Evas_Object *bar_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN void bar_reorder(Instance *inst);
-EINTERN void bar_recalculate(Instance *inst);
-EINTERN void bar_config_updated(Instance *inst);
-EINTERN Evas_Object *grid_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN void grid_reorder(Instance *inst);
-EINTERN void grid_recalculate(Instance *inst);
-
-EINTERN extern Config *luncher_config;
-EINTERN extern Eina_List *luncher_instances;
-
-#endif
diff --git a/src/modules/luncher/meson.build b/src/modules/luncher/meson.build
deleted file mode 100644
index 17905a7d7f..0000000000
--- a/src/modules/luncher/meson.build
+++ /dev/null
@@ -1,7 +0,0 @@
-src = files(
- 'mod.c',
- 'bar.c',
- 'config.c',
- 'grid.c',
- 'luncher.h'
- )
diff --git a/src/modules/luncher/mod.c b/src/modules/luncher/mod.c
deleted file mode 100644
index 94530db5a0..0000000000
--- a/src/modules/luncher/mod.c
+++ /dev/null
@@ -1,108 +0,0 @@
-#include "luncher.h"
-
-#define CONFIG_VERSION 2
-
-static E_Config_DD *conf_edd = NULL;
-static E_Config_DD *conf_item_edd = NULL;
-Eina_List *luncher_instances = NULL;
-Config *luncher_config = NULL;
-
-EINTERN void
-luncher_init(void)
-{
- Eina_List *l;
- Config_Item *ci;
-
- conf_item_edd = E_CONFIG_DD_NEW("Luncher_Config_Item", Config_Item);
-#undef T
-#undef D
-#define T Config_Item
-#define D conf_item_edd
- E_CONFIG_VAL(D, T, id, INT);
- E_CONFIG_VAL(D, T, version, INT);
- E_CONFIG_VAL(D, T, preview_size, INT);
- E_CONFIG_VAL(D, T, dir, STR);
- E_CONFIG_VAL(D, T, type, INT);
- E_CONFIG_VAL(D, T, hide_tooltips, INT);
-
- conf_edd = E_CONFIG_DD_NEW("Luncher_Config", Config);
-#undef T
-#undef D
-#define T Config
-#define D conf_edd
- E_CONFIG_LIST(D, T, items, conf_item_edd);
-
- luncher_config = e_config_domain_load("module.luncher", conf_edd);
-
- if (!luncher_config)
- {
- luncher_config = E_NEW(Config, 1);
- ci = E_NEW(Config_Item, 1);
- ci->id = 0;
- ci->version = CONFIG_VERSION;
- ci->preview_size = 64;
- ci->dir = eina_stringshare_add("default");
- ci->type = E_LUNCHER_MODULE_FULL;
- ci->hide_tooltips = 0;
- luncher_config->items = eina_list_append(luncher_config->items, ci);
- }
- EINA_LIST_FOREACH(luncher_config->items, l, ci)
- {
- if (ci->version < CONFIG_VERSION)
- {
- ci->version = CONFIG_VERSION;
- ci->type = E_LUNCHER_MODULE_FULL;
- }
- }
- e_gadget_type_add("Luncher Bar", bar_create, NULL);
- e_gadget_type_add("Luncher Grid", grid_create, NULL);
-}
-
-EINTERN void
-luncher_shutdown(void)
-{
- if (luncher_config)
- {
- Config_Item *ci;
- EINA_LIST_FREE(luncher_config->items, ci)
- {
- eina_stringshare_del(ci->dir);
- free(ci);
- }
- E_FREE(luncher_config);
- }
- E_CONFIG_DD_FREE(conf_edd);
- E_CONFIG_DD_FREE(conf_item_edd);
-
- e_gadget_type_del("Luncher Bar");
- e_gadget_type_del("Luncher Grid");
-}
-
-E_API E_Module_Api e_modapi =
-{
- E_MODULE_API_VERSION,
- "Luncher"
-};
-
-E_API void *
-e_modapi_init(E_Module *m)
-{
- luncher_init();
-
- luncher_config->module = m;
- return m;
-}
-
-E_API int
-e_modapi_shutdown(E_Module *m EINA_UNUSED)
-{
- luncher_shutdown();
- return 1;
-}
-
-E_API int
-e_modapi_save(E_Module *m EINA_UNUSED)
-{
- e_config_domain_save("module.luncher", conf_edd, luncher_config);
- return 1;
-}
diff --git a/src/modules/luncher/module.desktop b/src/modules/luncher/module.desktop
deleted file mode 100644
index 6aa6dc6bb7..0000000000
--- a/src/modules/luncher/module.desktop
+++ /dev/null
@@ -1,36 +0,0 @@
-[Desktop Entry]
-Type=Link
-Name=Luncher
-Name[ca]=Luncher
-Name[cs]=Lišta spouštěčů
-Name[de]=Luncher
-Name[eo]=Breto Luncher
-Name[fi]=Luncher
-Name[fr]=Luncher
-Name[gl]=Luncher
-Name[ja]=Luncher
-Name[ms]=Luncher
-Name[pl]=Luncher
-Name[ru]=Luncher
-Name[sr]=И-трака
-Name[tr]=Luncher
-Comment=Iconic application launcher.
-Comment[ca]=Barra d'icones per a executar aplicacions.
-Comment[cs]=Lišta se spouštěči.
-Comment[de]=Symbolbasierter Anwendungsstarter.
-Comment[el]=Εικονικός εκκινητής εφαρμογών.
-Comment[eo]=Lanĉilo de piktograma aplikaĵo.
-Comment[es]=Lanzador de aplicaciones con íconos.
-Comment[fi]=Ikoninen sovelluskäynnistin.
-Comment[fr]=Barre d'icones permettant de lancer des applications.
-Comment[gl]=Unha barra de iconas para iniciar aplicativos.
-Comment[hu]=Ikonokkal bővíthető alkalmazásindító modul.
-Comment[it]=Una barra di icone per il lancio di applicazioni.
-Comment[ja]=Iconic アプリケーションランチャー
-Comment[ms]=Pelancar aplikasi ikonik
-Comment[pt]=Barra para iniciar aplicações
-Comment[ru]=Панель для запуска приложений, представленных в виде значков.
-Comment[sr]=Трака иконица покретача програма.
-Comment[tr]=Uygulama başlatıcı.
-Icon=e-module-luncher
-X-Enlightenment-ModuleType=utils
diff --git a/src/modules/meson.build b/src/modules/meson.build
index 0a1e079134..21a8f1a235 100644
--- a/src/modules/meson.build
+++ b/src/modules/meson.build
@@ -44,16 +44,11 @@ mods = [
'xkbswitch',
'tiling',
'packagekit',
- 'wireless',
- 'time',
- 'luncher',
- 'teamwork',
'vkbd',
# modules have a custom binary as well
'battery',
'cpufreq',
'clock',
- 'sysinfo',
# custyom sub modules and custom data
'wizard',
# also standard modules, just with only a desktop file using a generic icon
diff --git a/src/modules/mixer/gadget/backend.c b/src/modules/mixer/backend.c
index 66ebb26527..7fcb2c73c8 100644
--- a/src/modules/mixer/gadget/backend.c
+++ b/src/modules/mixer/backend.c
@@ -3,8 +3,7 @@
#include "emix.h"
#include "e_mod_main.h"
#include "e_mod_config.h"
-#include "gadget/mixer.h"
-#include "gadget/backend.h"
+#include "backend.h"
#define VOLUME_STEP 5
diff --git a/src/modules/mixer/gadget/backend.h b/src/modules/mixer/backend.h
index 9336ef111b..9336ef111b 100644
--- a/src/modules/mixer/gadget/backend.h
+++ b/src/modules/mixer/backend.h
diff --git a/src/modules/mixer/e_mod_main.c b/src/modules/mixer/e_mod_main.c
index 3fdbd4a094..cdaaefabfa 100644
--- a/src/modules/mixer/e_mod_main.c
+++ b/src/modules/mixer/e_mod_main.c
@@ -3,8 +3,8 @@
#include "emix.h"
#include "e_mod_main.h"
#include "e_mod_config.h"
-#include "gadget/mixer.h"
-#include "gadget/backend.h"
+#include "mixer.h"
+#include "backend.h"
EINTERN int _e_emix_log_domain;
@@ -444,7 +444,7 @@ _gc_id_new(const E_Gadcon_Client_Class *client_class EINA_UNUSED)
}
E_API void *
-e_modapi_init(E_Module *m)
+e_modapi_init(E_Module *m EINA_UNUSED)
{
char buf[4096];
@@ -466,8 +466,6 @@ e_modapi_init(E_Module *m)
E_LIST_HANDLER_APPEND(_handlers, E_EVENT_MIXER_SINKS_CHANGED,
_mixer_sinks_changed, NULL);
- e_modapi_gadget_init(m);
-
e_configure_registry_category_add("extensions", 90, _("Extensions"), NULL,
"preferences-extensions");
e_configure_registry_item_add("extensions/emix", 30, _("Mixer"), NULL,
@@ -480,7 +478,7 @@ e_modapi_init(E_Module *m)
}
E_API int
-e_modapi_shutdown(E_Module *m)
+e_modapi_shutdown(E_Module *m EINA_UNUSED)
{
e_gadcon_provider_unregister((const E_Gadcon_Client_Class *)&_gadcon_class);
@@ -491,16 +489,13 @@ e_modapi_shutdown(E_Module *m)
E_FREE(mixer_context);
}
- e_modapi_gadget_shutdown(m);
-
backend_shutdown();
return 1;
}
E_API int
-e_modapi_save(E_Module *m)
+e_modapi_save(E_Module *m EINA_UNUSED)
{
- e_modapi_gadget_save(m);
emix_config_save();
return 1;
}
diff --git a/src/modules/mixer/gadget/mixer.c b/src/modules/mixer/gadget/mixer.c
deleted file mode 100644
index 2376c182cc..0000000000
--- a/src/modules/mixer/gadget/mixer.c
+++ /dev/null
@@ -1,423 +0,0 @@
-#include "mixer.h"
-#include "backend.h"
-
-typedef struct _Context Context;
-struct _Context
-{
- char *theme;
- E_Module *module;
- Eina_List *instances;
- E_Menu *menu;
- unsigned int notification_id;
-};
-
-typedef struct _Instance Instance;
-struct _Instance
-{
- int id;
- Evas_Object *o_main;
- Evas_Object *o_mixer;
- Evas_Object *popup;
- Evas_Object *list;
- Evas_Object *slider;
- Evas_Object *check;
- E_Gadget_Site_Orient orient;
-};
-
-static Context *gmixer_context = NULL;
-static Eina_List *_handlers = NULL;
-
-static void
-_mixer_popup_update(Instance *inst, int mute, int vol)
-{
- elm_check_state_set(inst->check, !!mute);
- elm_slider_value_set(inst->slider, vol);
-}
-
-static void
-_mixer_gadget_update(void)
-{
- Edje_Message_Int_Set *msg;
- Instance *inst;
- Eina_List *l;
- const Eina_List *ll;
- Elm_Object_Item *it;
-
- EINA_LIST_FOREACH(gmixer_context->instances, l, inst)
- {
- msg = alloca(sizeof(Edje_Message_Int_Set) + (2 * sizeof(int)));
- msg->count = 3;
-
- if (!backend_sink_default_get())
- {
- msg->val[0] = EINA_FALSE;
- msg->val[1] = 0;
- msg->val[2] = 0;
- if (inst->popup)
- elm_ctxpopup_dismiss(inst->popup);
- }
- else
- {
- msg->val[0] = backend_mute_get();
- msg->val[1] = backend_volume_get();
- msg->val[2] = msg->val[1];
- if (inst->popup)
- _mixer_popup_update(inst, msg->val[0], msg->val[1]);
- }
- edje_object_message_send(elm_layout_edje_get(inst->o_mixer), EDJE_MESSAGE_INT_SET, 0, msg);
- elm_layout_signal_emit(inst->o_mixer, "e,action,volume,change", "e");
-
- if (inst->list)
- {
- EINA_LIST_FOREACH(elm_list_items_get(inst->list), ll, it)
- {
- if (backend_sink_default_get() == elm_object_item_data_get(it))
- elm_list_item_selected_set(it, EINA_TRUE);
- }
- }
- }
-}
-
-static Eina_Bool
-_mixer_backend_changed(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- _mixer_gadget_update();
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static void
-_emixer_exec_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- elm_ctxpopup_dismiss(inst->popup);
-
- backend_emixer_exec();
-}
-
-static void
-_check_changed_cb(void *data EINA_UNUSED, Evas_Object *obj,
- void *event EINA_UNUSED)
-{
- backend_mute_set(elm_check_state_get(obj));
-}
-
-static void
-_slider_changed_cb(void *data EINA_UNUSED, Evas_Object *obj,
- void *event EINA_UNUSED)
-{
- int val;
-
-
- val = (int)elm_slider_value_get(obj);
- backend_volume_set(val);
-}
-
-static void
-_sink_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Emix_Sink *s = data;
-
- backend_sink_default_set(s);
-}
-
-static void
-_mixer_popup_dismissed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- E_FREE_FUNC(obj, evas_object_del);
- inst->popup = NULL;
-}
-
-static void
-_mixer_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->popup = NULL;
- inst->list = NULL;
- inst->slider = NULL;
- inst->check = NULL;
-}
-
-static Eina_Bool
-_mixer_sinks_changed(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- Eina_List *l, *ll;
- Instance *inst;
-
- EINA_LIST_FOREACH(gmixer_context->instances, l, inst)
- {
- if (inst->list)
- {
- Elm_Object_Item *default_it = NULL;
- Emix_Sink *s;
-
- elm_list_clear(inst->list);
- EINA_LIST_FOREACH((Eina_List *)emix_sinks_get(), ll, s)
- {
- Elm_Object_Item *it;
-
- it = elm_list_item_append(inst->list, s->name, NULL, NULL,
- _sink_selected_cb, s);
- if (backend_sink_default_get() == s)
- default_it = it;
- }
- elm_list_go(inst->list);
- if (default_it)
- elm_list_item_selected_set(default_it, EINA_TRUE);
- }
- }
-
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static void
-_popup_new(Instance *inst)
-{
- Evas_Object *button, *list, *slider, *bx;
- Emix_Sink *s;
- Eina_List *l;
- Elm_Object_Item *default_it = NULL;
-
- inst->popup = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(inst->popup, "noblock");
- evas_object_smart_callback_add(inst->popup, "dismissed", _mixer_popup_dismissed, inst);
- evas_object_event_callback_add(inst->popup, EVAS_CALLBACK_DEL, _mixer_popup_deleted, inst);
-
- list = elm_box_add(e_comp->elm);
- elm_object_content_set(inst->popup, list);
-
- inst->list = elm_list_add(e_comp->elm);
- elm_list_mode_set(inst->list, ELM_LIST_COMPRESS);
- evas_object_size_hint_align_set(inst->list, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(inst->list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(inst->list);
-
- EINA_LIST_FOREACH((Eina_List *)emix_sinks_get(), l, s)
- {
- Elm_Object_Item *it;
-
- it = elm_list_item_append(inst->list, s->name, NULL, NULL, _sink_selected_cb, s);
- if (backend_sink_default_get() == s)
- default_it = it;
- }
- elm_list_go(inst->list);
- elm_box_pack_end(list, inst->list);
-
- bx = elm_box_add(e_comp->elm);
- elm_box_horizontal_set(bx, EINA_TRUE);
- evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.0);
- elm_box_pack_end(list, bx);
- evas_object_show(bx);
-
- slider = elm_slider_add(e_comp->elm);
- inst->slider = slider;
- elm_slider_span_size_set(slider, 128 * elm_config_scale_get());
- elm_slider_unit_format_set(slider, "%1.0f");
- elm_slider_indicator_format_set(slider, "%1.0f");
- evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
- evas_object_show(slider);
- elm_slider_min_max_set(slider, 0.0, emix_max_volume_get());
- evas_object_smart_callback_add(slider, "changed", _slider_changed_cb, NULL);
- elm_slider_value_set(slider, backend_volume_get());
- elm_box_pack_end(bx, slider);
- evas_object_show(slider);
-
- inst->check = elm_check_add(e_comp->elm);
- evas_object_size_hint_align_set(inst->check, 0.5, EVAS_HINT_FILL);
- elm_object_text_set(inst->check, _("Mute"));
- elm_check_state_set(inst->check, backend_mute_get());
- evas_object_smart_callback_add(inst->check, "changed", _check_changed_cb,
- NULL);
- elm_box_pack_end(bx, inst->check);
- evas_object_show(inst->check);
-
- button = elm_button_add(e_comp->elm);
- evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0.0);
- elm_object_text_set(button, _("Mixer"));
- evas_object_smart_callback_add(button, "clicked", _emixer_exec_cb, inst);
- elm_box_pack_end(list, button);
- evas_object_show(button);
-
- evas_object_size_hint_min_set(list, 208, 208);
-
- e_gadget_util_ctxpopup_place(inst->o_main, inst->popup, inst->o_mixer);
- evas_object_show(inst->popup);
-
- if (default_it)
- elm_list_item_selected_set(default_it, EINA_TRUE);
-}
-
-static void
-_mouse_up_cb(void *data, Evas *evas EINA_UNUSED,
- Evas_Object *obj EINA_UNUSED, void *event)
-{
- Instance *inst = data;
- Evas_Event_Mouse_Up *ev = event;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
-
- if (ev->button == 1)
- {
- if (inst->popup)
- {
- elm_ctxpopup_dismiss(inst->popup);
- return;
- }
- _popup_new(inst);
- }
- else if (ev->button == 2)
- {
- backend_mute_set(!backend_mute_get());
- }
-}
-
-static void
-_mouse_wheel_cb(void *data EINA_UNUSED, Evas *evas EINA_UNUSED,
- Evas_Object *obj EINA_UNUSED, void *event)
-{
- Evas_Event_Mouse_Wheel *ev = event;
-
- if (ev->z > 0)
- backend_volume_decrease();
- else if (ev->z < 0)
- backend_volume_increase();
-}
-
-static Evas_Object *
-_mixer_gadget_configure(Evas_Object *g EINA_UNUSED)
-{
- if (e_configure_registry_exists("extensions/emix"))
- {
- e_configure_registry_call("extensions/emix", NULL, NULL);
- }
- return NULL;
-}
-
-static void
-_mixer_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Evas_Coord w, h;
- Instance *inst = data;
-
- edje_object_parts_extends_calc(elm_layout_edje_get(inst->o_mixer), 0, 0, &w, &h);
- if (w < 1) w = 1;
- if (h < 1) h = 1;
- evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, w, h);
-}
-
-static void
-_mixer_gadget_created_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst->o_main)
- {
- e_gadget_configure_cb_set(inst->o_main, _mixer_gadget_configure);
-
- inst->o_mixer = elm_layout_add(inst->o_main);
- E_EXPAND(inst->o_mixer);
- E_FILL(inst->o_mixer);
- if (inst->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(inst->o_mixer,
- "base/theme/gadget/mixer",
- "e/gadget/mixer/main_vert");
- else
- e_theme_edje_object_set(inst->o_mixer,
- "base/theme/gadget/mixer",
- "e/gadget/mixer/main");
- evas_object_event_callback_add(inst->o_mixer, EVAS_CALLBACK_MOUSE_UP,
- _mouse_up_cb, inst);
- evas_object_event_callback_add(inst->o_mixer, EVAS_CALLBACK_MOUSE_WHEEL,
- _mouse_wheel_cb, inst);
- evas_object_event_callback_add(inst->o_mixer, EVAS_CALLBACK_RESIZE,
- _mixer_resize_cb, inst);
- elm_box_pack_end(inst->o_main, inst->o_mixer);
- evas_object_show(inst->o_mixer);
- if (inst->id != -1)
- gmixer_context->instances = eina_list_append(gmixer_context->instances, inst);
- if (inst->id == -1)
- {
- Edje_Message_Int_Set *msg;
-
- msg = alloca(sizeof(Edje_Message_Int_Set) + (2 * sizeof(int)));
- msg->count = 3;
- msg->val[0] = EINA_FALSE;
- msg->val[1] = 60;
- msg->val[2] = 60;
- edje_object_message_send(elm_layout_edje_get(inst->o_mixer), EDJE_MESSAGE_INT_SET, 0, msg);
- elm_layout_signal_emit(inst->o_mixer, "e,action,volume,change", "e");
- }
- else
- _mixer_gadget_update();
- }
- evas_object_smart_callback_del_full(obj, "gadget_created", _mixer_gadget_created_cb, data);
-}
-
-static void
-mixer_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- gmixer_context->instances = eina_list_remove(gmixer_context->instances, inst);
- free(inst);
-}
-
-EINTERN Evas_Object *
-mixer_gadget_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Instance *inst;
-
- if (*id != -1)
- {
- if (!mixer_init())
- return NULL;
- }
- inst = E_NEW(Instance, 1);
- inst->o_main = elm_box_add(parent);
- inst->orient = orient;
- inst->id = *id;
- evas_object_show(inst->o_main);
-
- evas_object_smart_callback_add(parent, "gadget_created", _mixer_gadget_created_cb, inst);
- if (*id != -1)
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, mixer_del, inst);
- return inst->o_main;
-}
-
-EINTERN Eina_Bool
-mixer_init(void)
-{
- char buf[4096];
-
- if (!gmixer_context)
- {
- gmixer_context = E_NEW(Context, 1);
-
- snprintf(buf, sizeof(buf), "%s/mixer.edj",
- e_module_dir_get(gmixer_context->module));
- gmixer_context->theme = strdup(buf);
- E_LIST_HANDLER_APPEND(_handlers, E_EVENT_MIXER_BACKEND_CHANGED,
- _mixer_backend_changed, NULL);
- E_LIST_HANDLER_APPEND(_handlers, E_EVENT_MIXER_SINKS_CHANGED,
- _mixer_sinks_changed, NULL);
- }
-
- return EINA_TRUE;
-}
-
-EINTERN void
-mixer_shutdown(void)
-{
- E_FREE_LIST(_handlers, ecore_event_handler_del);
- if (gmixer_context)
- {
- free(gmixer_context->theme);
- E_FREE(gmixer_context);
- }
-}
-
diff --git a/src/modules/mixer/gadget/mixer.h b/src/modules/mixer/gadget/mixer.h
deleted file mode 100644
index 049d61b569..0000000000
--- a/src/modules/mixer/gadget/mixer.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef MIXER_H
-#define MIXER_H
-
-#include "e.h"
-#include <Eina.h>
-#include "emix.h"
-#include "../e_mod_config.h"
-
-EINTERN void *e_modapi_gadget_init(E_Module *m);
-EINTERN int e_modapi_gadget_shutdown(E_Module *m);
-EINTERN int e_modapi_gadget_save(E_Module *m);
-
-EINTERN extern int _e_gemix_log_domain;
-
-#undef DBG
-#undef INF
-#undef WRN
-#undef ERR
-#undef CRIT
-#define DBG(...) EINA_LOG_DOM_DBG(_e_gemix_log_domain, __VA_ARGS__)
-#define INF(...) EINA_LOG_DOM_INF(_e_gemix_log_domain, __VA_ARGS__)
-#define WRN(...) EINA_LOG_DOM_WARN(_e_gemix_log_domain, __VA_ARGS__)
-#define ERR(...) EINA_LOG_DOM_ERR(_e_gemix_log_domain, __VA_ARGS__)
-#define CRIT(...) EINA_LOG_DOM_CRIT(_e_gemix_log_domain, __VA_ARGS__)
-
-EINTERN Eina_Bool mixer_init(void);
-EINTERN void mixer_shutdown(void);
-EINTERN Evas_Object *mixer_gadget_create(Evas_Object *parent, int *id EINA_UNUSED, E_Gadget_Site_Orient orient EINA_UNUSED);
-
-#endif
diff --git a/src/modules/mixer/gadget/mod.c b/src/modules/mixer/gadget/mod.c
deleted file mode 100644
index 613e58df1c..0000000000
--- a/src/modules/mixer/gadget/mod.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "mixer.h"
-#include "backend.h"
-
-EINTERN int _e_gemix_log_domain;
-
-EINTERN void *
-e_modapi_gadget_init(E_Module *m)
-{
- if (!backend_init()) return NULL;
-
- _e_gemix_log_domain = eina_log_domain_register("mixer_gadget", EINA_COLOR_RED);
-
- e_gadget_type_add("Mixer", mixer_gadget_create, NULL);
-
- return m;
-}
-
-EINTERN int
-e_modapi_gadget_shutdown(E_Module *m EINA_UNUSED)
-{
- mixer_shutdown();
-
- e_gadget_type_del("Mixer");
-
- backend_shutdown();
-
- return 1;
-}
-
-EINTERN int
-e_modapi_gadget_save(E_Module *m EINA_UNUSED)
-{
- emix_config_save();
- return 1;
-}
-
diff --git a/src/modules/mixer/meson.build b/src/modules/mixer/meson.build
index a2ea75b6ba..7a9fb2b6b4 100644
--- a/src/modules/mixer/meson.build
+++ b/src/modules/mixer/meson.build
@@ -3,10 +3,8 @@ src = files(
'e_mod_config.c',
'e_mod_config.h',
'e_mod_main.h',
- 'gadget/mixer.h',
- 'gadget/mixer.c',
- 'gadget/mod.c',
- 'gadget/backend.c'
+ 'backend.c',
+ 'backend.h'
)
mixer_lib = files(
diff --git a/src/modules/mixer/mixer.h b/src/modules/mixer/mixer.h
new file mode 100644
index 0000000000..21acdbf5f8
--- /dev/null
+++ b/src/modules/mixer/mixer.h
@@ -0,0 +1,9 @@
+#ifndef MIXER_H
+#define MIXER_H
+
+#include "e.h"
+#include <Eina.h>
+#include "emix.h"
+#include "../e_mod_config.h"
+
+#endif
diff --git a/src/modules/packagekit/e_mod_main.c b/src/modules/packagekit/e_mod_main.c
index 04da5498fd..4996ca060d 100644
--- a/src/modules/packagekit/e_mod_main.c
+++ b/src/modules/packagekit/e_mod_main.c
@@ -26,7 +26,7 @@ _mouse_down_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
if (inst->popup)
packagekit_popup_del(inst);
else
- packagekit_popup_new(inst, EINA_TRUE);
+ packagekit_popup_new(inst);
}
else if (ev->button == 2)
{
@@ -76,133 +76,6 @@ _refresh_timer_cb(void *data)
return ECORE_CALLBACK_RENEW;
}
-
-/* Gadget Api Functions */
-static void
-_gadget_mouse_up_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event)
-{
- E_PackageKit_Instance *inst = data;
- E_PackageKit_Module_Context *ctxt = packagekit_mod->data;
- Evas_Event_Mouse_Up *ev = event;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
-
- if (ev->button == 1)
- {
- if (inst->ctxpopup)
- packagekit_popup_del(inst);
- else
- packagekit_popup_new(inst, EINA_FALSE);
- }
- else if (ev->button == 2)
- {
- packagekit_create_transaction_and_exec(ctxt, packagekit_get_updates);
- }
-}
-
-static void
-_gadget_del_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
-{
- E_PackageKit_Instance *inst = data;
- E_PackageKit_Module_Context *ctxt = packagekit_mod->data;
-
- if (inst->ctxpopup) packagekit_popup_del(inst);
- ctxt->instances = eina_list_remove(ctxt->instances, inst);
- free(inst);
-}
-
-static Evas_Object *
-_gadget_configure_cb(Evas_Object *gadget)
-{
- E_PackageKit_Instance *inst = evas_object_data_get(gadget, "pkit-inst");
- return packagekit_config_show(inst->ctxt);
-}
-
-static void
-_gadget_menu1_cb(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- E_PackageKit_Module_Context *ctxt = data;
-
- e_exec(e_zone_current_get(), NULL,
- ctxt->config->manager_command,
- NULL, NULL);
-}
-
-static void
-_gadget_menu2_cb(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
-{
- E_PackageKit_Module_Context *ctxt = data;
-
- packagekit_create_transaction_and_exec(ctxt, packagekit_refresh_cache);
-}
-
-static void
-_gadget_menu_populate_cb(Evas_Object *gadget, E_Menu *m)
-{
- E_PackageKit_Instance *inst = evas_object_data_get(gadget, "pkit-inst");
- E_Menu_Item *mi;
-
- mi = e_menu_item_new(m);
- e_menu_item_separator_set(mi, 1);
-
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Refresh package list"));
- e_util_menu_item_theme_icon_set(mi, "view-refresh");
- e_menu_item_callback_set(mi, _gadget_menu2_cb, inst->ctxt);
-
- if (inst->ctxt->config->manager_command && inst->ctxt->config->manager_command[0])
- {
- mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("Run the package manager"));
- e_util_menu_item_theme_icon_set(mi, "preferences-applications");
- e_menu_item_callback_set(mi, _gadget_menu1_cb, inst->ctxt);
- }
-}
-
-static void
-_gadget_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- E_PackageKit_Instance *inst = data;
-
- evas_object_smart_callback_del_full(obj, "gadget_created",
- _gadget_created_cb, data);
- evas_object_event_callback_add(inst->gadget, EVAS_CALLBACK_MOUSE_UP,
- _gadget_mouse_up_cb, inst);
- e_gadget_configure_cb_set(inst->gadget, _gadget_configure_cb);
- e_gadget_menu_populate_cb_set(inst->gadget, _gadget_menu_populate_cb);
- packagekit_icon_update(inst->ctxt, EINA_FALSE);
-}
-
-EINTERN Evas_Object *
-_gadget_create_cb(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNUSED)
-{
- E_PackageKit_Instance *inst;
- E_PackageKit_Module_Context *ctxt = packagekit_mod->data;
-
- inst = E_NEW(E_PackageKit_Instance, 1);
- inst->ctxt = ctxt;
- inst->gadget = edje_object_add(evas_object_evas_get(parent));
- e_theme_edje_object_set(inst->gadget, "base/theme/modules/packagekit",
- "e/modules/packagekit/main");
- evas_object_event_callback_add(inst->gadget, EVAS_CALLBACK_DEL,
- _gadget_del_cb, inst);
- evas_object_data_set(inst->gadget, "pkit-inst", inst);
- ctxt->instances = eina_list_append(ctxt->instances, inst);
- if (*id >= 0)
- { // normal mode
- evas_object_smart_callback_add(parent, "gadget_created",
- _gadget_created_cb, inst);
- }
- else
- { // demo mode
- edje_object_signal_emit(inst->gadget, "packagekit,state,updated", "e");
- }
-
- return inst->gadget;
-}
-
-
/* Gadcon Api Functions */
static E_Gadcon_Client *
_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
@@ -315,10 +188,6 @@ e_modapi_init(E_Module *m)
ctxt->module = m;
packagekit_mod = m;
- // add the gadget to the new E gadgets system
- // TODO should this name be translated? also on type_del??
- e_gadget_type_add("PackageKit", _gadget_create_cb, NULL);
-
// add the gadget to the old E gadcon system
e_gadcon_provider_register(&_gc_class);
@@ -341,9 +210,6 @@ e_modapi_shutdown(E_Module *m)
E_FREE(ctxt->config);
E_CONFIG_DD_FREE(ctxt->conf_edd);
- // remove the gadget from the new E gadgets system
- e_gadget_type_del("PackageKit");
-
// remove the gadget from the old E gadcon system
e_gadcon_provider_unregister(&_gc_class);
diff --git a/src/modules/packagekit/e_mod_packagekit.c b/src/modules/packagekit/e_mod_packagekit.c
index cb412dc65a..e32b555ebf 100644
--- a/src/modules/packagekit/e_mod_packagekit.c
+++ b/src/modules/packagekit/e_mod_packagekit.c
@@ -2,7 +2,6 @@
#include "e_mod_main.h"
#include "e_mod_packagekit.h"
-
/* GUI */
void
packagekit_icon_update(E_PackageKit_Module_Context *ctxt,
@@ -432,34 +431,14 @@ _genlist_selunsel_cb(void *data, Evas_Object *obj EINA_UNUSED,
packagekit_popup_update(data, EINA_FALSE);
}
-static void
-_ctxpopup_dismissed(void *data, Evas_Object *obj, void *info EINA_UNUSED)
-{
- E_PackageKit_Instance *inst = data;
-
- evas_object_del(obj);
- inst->ctxpopup = NULL;
-}
-
void
-packagekit_popup_new(E_PackageKit_Instance *inst, Eina_Bool is_gadcon)
+packagekit_popup_new(E_PackageKit_Instance *inst)
{
Evas_Object *table, *bt, *ic, *lb, *li, *pb, *fr, *bx, *size_rect;
const char *p;
- if (is_gadcon)
- {
- inst->popup = e_gadcon_popup_new(inst->gcc, EINA_FALSE);
- table = elm_table_add(e_comp->elm);
- }
- else
- {
- inst->ctxpopup = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(inst->ctxpopup, "noblock");
- evas_object_smart_callback_add(inst->ctxpopup, "dismissed",
- _ctxpopup_dismissed, inst);
- table = elm_table_add(inst->ctxpopup);
- }
+ inst->popup = e_gadcon_popup_new(inst->gcc, EINA_FALSE);
+ table = elm_table_add(e_comp->elm);
evas_object_show(table);
// horiz box for title and buttons
@@ -573,19 +552,10 @@ packagekit_popup_new(E_PackageKit_Instance *inst, Eina_Bool is_gadcon)
}
// setup and show the popup
- if (is_gadcon)
- {
- e_gadcon_popup_content_set(inst->popup, table);
- e_object_data_set(E_OBJECT(inst->popup), inst);
- E_OBJECT_DEL_SET(inst->popup, _popup_del_cb);
- e_gadcon_popup_show(inst->popup);
- }
- else
- {
- elm_object_content_set(inst->ctxpopup, table);
- e_gadget_util_ctxpopup_place(inst->gadget, inst->ctxpopup, NULL);
- evas_object_show(inst->ctxpopup);
- }
+ e_gadcon_popup_content_set(inst->popup, table);
+ e_object_data_set(E_OBJECT(inst->popup), inst);
+ E_OBJECT_DEL_SET(inst->popup, _popup_del_cb);
+ e_gadcon_popup_show(inst->popup);
// update the popup state and contents
packagekit_popup_update(inst, EINA_TRUE);
@@ -596,8 +566,6 @@ packagekit_popup_del(E_PackageKit_Instance *inst)
{
if (inst->popup)
E_FREE_FUNC(inst->popup, e_object_del);
- if (inst->ctxpopup)
- elm_ctxpopup_dismiss(inst->ctxpopup);
inst->popup_genlist = inst->popup_title_entry = NULL;
inst->popup_progressbar = inst->popup_progressbar_frame = NULL;
diff --git a/src/modules/packagekit/e_mod_packagekit.h b/src/modules/packagekit/e_mod_packagekit.h
index df09a66224..1d89b5154b 100644
--- a/src/modules/packagekit/e_mod_packagekit.h
+++ b/src/modules/packagekit/e_mod_packagekit.h
@@ -79,7 +79,6 @@ typedef struct _E_PackageKit_Instance
E_Gadcon_Client *gcc;
Evas_Object *gadget;
E_Gadcon_Popup *popup;
- Evas_Object *ctxpopup;
Evas_Object *popup_title_entry;
Evas_Object *popup_error_label;
Evas_Object *popup_install_button;
@@ -113,7 +112,7 @@ void packagekit_get_updates(E_PackageKit_Module_Context *ctxt, const char *
void packagekit_refresh_cache(E_PackageKit_Module_Context *ctxt, const char *transaction);
void packagekit_update_packages(E_PackageKit_Module_Context *ctxt, const char *transaction);
void packagekit_icon_update(E_PackageKit_Module_Context *ctxt, Eina_Bool working);
-void packagekit_popup_new(E_PackageKit_Instance *inst, Eina_Bool is_gadcon);
+void packagekit_popup_new(E_PackageKit_Instance *inst);
void packagekit_popup_del(E_PackageKit_Instance *inst);
void packagekit_popup_update(E_PackageKit_Instance *inst, Eina_Bool rebuild_list);
diff --git a/src/modules/pager/e_mod_config.c b/src/modules/pager/e_mod_config.c
index 2fb019309b..b70bb988ce 100644
--- a/src/modules/pager/e_mod_config.c
+++ b/src/modules/pager/e_mod_config.c
@@ -152,7 +152,6 @@ _basic_apply(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
pager_config->show_desk_names = cfdata->show_desk_names;
pager_config->popup_urgent = cfdata->popup.urgent_show;
_pager_cb_config_updated();
- _pager_cb_config_gadget_updated(EINA_FALSE);
e_config_save_queue();
return 1;
}
@@ -300,7 +299,6 @@ _adv_apply(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
pager_config->btn_noplace = cfdata->btn.noplace;
pager_config->btn_desk = cfdata->btn.desk;
_pager_cb_config_updated();
- _pager_cb_config_gadget_updated(EINA_FALSE);
e_config_save_queue();
return 1;
}
diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c
index 4a81aec992..4945eb4b60 100644
--- a/src/modules/pager/e_mod_main.c
+++ b/src/modules/pager/e_mod_main.c
@@ -170,10 +170,12 @@ static int hold_mod = 0;
static E_Desk *current_desk = NULL;
static Eina_List *pagers = NULL;
static double _pager_start_time = 0.0;
+static E_Config_DD *conf_edd = NULL;
EINTERN E_Module *module;
EINTERN E_Config_Dialog *config_dialog;
EINTERN Eina_List *instances, *shandlers;
+EINTERN Config *pager_config;
static Pager_Win *
_pager_desk_window_find(Pager_Desk *pd, E_Client *client)
@@ -2086,12 +2088,69 @@ E_API E_Module_Api e_modapi =
};
E_API void *
-e_modapi_init(E_Module *m)
+e_modapi_init(E_Module *m EINA_UNUSED)
{
E_Module *p;
_pager_start_time = ecore_time_get();
- e_modapi_gadget_init(m);
+ conf_edd = E_CONFIG_DD_NEW("Pager_Config", Config);
+#undef T
+#undef D
+#define T Config
+#define D conf_edd
+ E_CONFIG_VAL(D, T, popup, UINT);
+ E_CONFIG_VAL(D, T, popup_speed, DOUBLE);
+ E_CONFIG_VAL(D, T, popup_urgent, UINT);
+ E_CONFIG_VAL(D, T, popup_urgent_stick, UINT);
+ E_CONFIG_VAL(D, T, popup_urgent_speed, DOUBLE);
+ E_CONFIG_VAL(D, T, show_desk_names, UINT);
+ E_CONFIG_VAL(D, T, popup_height, INT);
+ E_CONFIG_VAL(D, T, popup_act_height, INT);
+ E_CONFIG_VAL(D, T, drag_resist, UINT);
+ E_CONFIG_VAL(D, T, btn_drag, UCHAR);
+ E_CONFIG_VAL(D, T, btn_noplace, UCHAR);
+ E_CONFIG_VAL(D, T, btn_desk, UCHAR);
+ E_CONFIG_VAL(D, T, flip_desk, UCHAR);
+ E_CONFIG_VAL(D, T, plain, UCHAR);
+ E_CONFIG_VAL(D, T, permanent_plain, UCHAR);
+
+ pager_config = e_config_domain_load("module.pager", conf_edd);
+
+ if (!pager_config)
+ {
+ pager_config = E_NEW(Config, 1);
+ pager_config->popup = 1;
+ pager_config->popup_speed = 1.0;
+ pager_config->popup_urgent = 0;
+ pager_config->popup_urgent_stick = 0;
+ pager_config->popup_urgent_speed = 1.5;
+ pager_config->show_desk_names = 0;
+ pager_config->popup_height = 60;
+ pager_config->popup_act_height = 60;
+ pager_config->drag_resist = 3;
+ pager_config->btn_drag = 1;
+ pager_config->btn_noplace = 2;
+ pager_config->btn_desk = 2;
+ pager_config->flip_desk = 0;
+ pager_config->plain = 0;
+ pager_config->permanent_plain = 0;
+ }
+ E_CONFIG_LIMIT(pager_config->popup, 0, 1);
+ E_CONFIG_LIMIT(pager_config->popup_speed, 0.1, 10.0);
+ E_CONFIG_LIMIT(pager_config->popup_urgent, 0, 1);
+ E_CONFIG_LIMIT(pager_config->popup_urgent_stick, 0, 1);
+ E_CONFIG_LIMIT(pager_config->popup_urgent_speed, 0.1, 10.0);
+ E_CONFIG_LIMIT(pager_config->show_desk_names, 0, 1);
+ E_CONFIG_LIMIT(pager_config->popup_height, 20, 200);
+ E_CONFIG_LIMIT(pager_config->popup_act_height, 20, 200);
+ E_CONFIG_LIMIT(pager_config->drag_resist, 0, 50);
+ E_CONFIG_LIMIT(pager_config->flip_desk, 0, 1);
+ E_CONFIG_LIMIT(pager_config->btn_drag, 0, 32);
+ E_CONFIG_LIMIT(pager_config->btn_noplace, 0, 32);
+ E_CONFIG_LIMIT(pager_config->btn_desk, 0, 32);
+ E_CONFIG_LIMIT(pager_config->plain, 0, 1);
+ E_CONFIG_LIMIT(pager_config->permanent_plain, 0, 1);
+
p = e_module_find("pager_plain");
if (p && p->enabled)
{
@@ -2141,9 +2200,8 @@ e_modapi_init(E_Module *m)
}
E_API int
-e_modapi_shutdown(E_Module *m)
+e_modapi_shutdown(E_Module *m EINA_UNUSED)
{
- e_modapi_gadget_shutdown(m);
e_gadcon_provider_unregister(&_gadcon_class);
if (config_dialog)
@@ -2160,13 +2218,15 @@ e_modapi_shutdown(E_Module *m)
e_action_predef_name_del("Pager", "Popup Desk Next");
e_action_predef_name_del("Pager", "Popup Desk Previous");
+ module = NULL;
+
return 1;
}
E_API int
-e_modapi_save(E_Module *m)
+e_modapi_save(E_Module *m EINA_UNUSED)
{
- e_modapi_gadget_save(m);
+ e_config_domain_save("module.pager", conf_edd, pager_config);
return 1;
}
diff --git a/src/modules/pager/e_mod_main.h b/src/modules/pager/e_mod_main.h
index fc6a5221c9..bf9d94624e 100644
--- a/src/modules/pager/e_mod_main.h
+++ b/src/modules/pager/e_mod_main.h
@@ -1,8 +1,27 @@
#ifndef E_MOD_MAIN_H
#define E_MOD_MAIN_H
-#include "gadget/pager.h"
typedef struct _Config_Item Config_Item;
+typedef struct _Config Config;
+struct _Config
+{
+ unsigned int popup;
+ double popup_speed;
+ unsigned int popup_urgent;
+ unsigned int popup_urgent_stick;
+ unsigned int popup_urgent_focus;
+ double popup_urgent_speed;
+ unsigned int show_desk_names;
+ int popup_act_height;
+ int popup_height;
+ unsigned int drag_resist;
+ unsigned int btn_drag;
+ unsigned int btn_noplace;
+ unsigned int btn_desk;
+ unsigned int flip_desk;
+ unsigned int plain;
+ unsigned int permanent_plain;
+};
#define PAGER_RESIZE_NONE 0
#define PAGER_RESIZE_HORZ 1
@@ -21,6 +40,10 @@ E_API void *e_modapi_init(E_Module *m);
E_API int e_modapi_shutdown(E_Module *m);
E_API int e_modapi_save(E_Module *m);
+EINTERN void _pager_cb_config_updated(void);
+
+EINTERN extern Config *pager_config;
+
EINTERN void _config_pager_module(Config_Item *ci);
extern E_Module *module;
diff --git a/src/modules/pager/gadget/config.c b/src/modules/pager/gadget/config.c
deleted file mode 100644
index c6c6535825..0000000000
--- a/src/modules/pager/gadget/config.c
+++ /dev/null
@@ -1,685 +0,0 @@
-#include "pager.h"
-
-#define BUTTON_DRAG 0
-#define BUTTON_NOPLACE 1
-#define BUTTON_DESK 2
-
-typedef struct _Config_Objects Config_Objects;
-struct _Config_Objects
-{
- Evas_Object *general_page;
- Evas_Object *popup_page;
- Evas_Object *urgent_page;
- Evas_Object *style_page;
- Evas_Object *o_popup;
- Evas_Object *o_popup_speed;
- Evas_Object *o_popup_urgent;
- Evas_Object *o_popup_urgent_stick;
- Evas_Object *o_popup_urgent_focus;
- Evas_Object *o_popup_urgent_speed;
- Evas_Object *o_show_desk_names;
- Evas_Object *o_popup_act_height;
- Evas_Object *o_popup_height;
- Evas_Object *o_btn_drag;
- Evas_Object *o_btn_noplace;
- Evas_Object *o_btn_desk;
- Evas_Object *o_btn_virtual;
- Evas_Object *o_flip_desk;
- Evas_Object *o_permanent;
- Evas_Object *o_plain;
- E_Grab_Dialog *grab_dia;
- int grab_btn;
- int w, h;
-};
-Config_Objects *pager_gadget_config_objects = NULL;
-
-static void
-_config_close(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- cfg_dialog = NULL;
- E_FREE(pager_gadget_config_objects);
-}
-
-static void
-_config_show_general(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- evas_object_hide(pager_gadget_config_objects->popup_page);
- evas_object_hide(pager_gadget_config_objects->urgent_page);
- evas_object_hide(pager_gadget_config_objects->style_page);
- evas_object_show(pager_gadget_config_objects->general_page);
-}
-
-static void
-_config_show_popup(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- evas_object_hide(pager_gadget_config_objects->general_page);
- evas_object_hide(pager_gadget_config_objects->urgent_page);
- evas_object_hide(pager_gadget_config_objects->style_page);
- evas_object_show(pager_gadget_config_objects->popup_page);
-}
-
-static void
-_config_show_urgent(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- evas_object_hide(pager_gadget_config_objects->general_page);
- evas_object_hide(pager_gadget_config_objects->popup_page);
- evas_object_hide(pager_gadget_config_objects->style_page);
- evas_object_show(pager_gadget_config_objects->urgent_page);
-}
-
-static void
-_config_show_style(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- evas_object_hide(pager_gadget_config_objects->general_page);
- evas_object_hide(pager_gadget_config_objects->popup_page);
- evas_object_hide(pager_gadget_config_objects->urgent_page);
- evas_object_show(pager_gadget_config_objects->style_page);
-}
-
-static void
-_config_value_changed(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Eina_Bool val, changed = EINA_FALSE;
- pager_config->popup =
- elm_check_state_get(pager_gadget_config_objects->o_popup);
- pager_config->popup_speed =
- elm_slider_value_get(pager_gadget_config_objects->o_popup_speed);
- pager_config->flip_desk =
- elm_check_state_get(pager_gadget_config_objects->o_flip_desk);
- pager_config->popup_urgent =
- elm_check_state_get(pager_gadget_config_objects->o_popup_urgent);
- pager_config->popup_urgent_stick =
- elm_check_state_get(pager_gadget_config_objects->o_popup_urgent_stick);
- pager_config->popup_urgent_focus =
- elm_check_state_get(pager_gadget_config_objects->o_popup_urgent_focus);
- pager_config->popup_urgent_speed =
- elm_slider_value_get(pager_gadget_config_objects->o_popup_urgent_speed);
- pager_config->show_desk_names =
- elm_check_state_get(pager_gadget_config_objects->o_show_desk_names);
- pager_config->popup_height =
- elm_slider_value_get(pager_gadget_config_objects->o_popup_height);
- pager_config->popup_act_height =
- elm_slider_value_get(pager_gadget_config_objects->o_popup_act_height);
- val = elm_check_state_get(pager_gadget_config_objects->o_permanent);
- if (val != pager_config->permanent_plain)
- changed = EINA_TRUE;
- pager_config->permanent_plain = val;
- val = elm_check_state_get(pager_gadget_config_objects->o_plain);
- if (val != pager_config->plain)
- changed = EINA_TRUE;
- pager_config->plain = val;
- _pager_cb_config_gadget_updated(changed);
- _pager_cb_config_updated();
- e_config_save_queue();
-
- elm_object_disabled_set(pager_gadget_config_objects->o_popup_speed,
- !pager_config->popup);
- elm_object_disabled_set(pager_gadget_config_objects->o_popup_act_height,
- !pager_config->popup);
- elm_object_disabled_set(pager_gadget_config_objects->o_popup_height,
- !pager_config->popup);
- elm_object_disabled_set(pager_gadget_config_objects->o_popup_urgent_stick,
- !pager_config->popup_urgent);
- elm_object_disabled_set(pager_gadget_config_objects->o_popup_urgent_focus,
- !pager_config->popup_urgent);
- elm_object_disabled_set(pager_gadget_config_objects->o_popup_urgent_speed,
- !pager_config->popup_urgent);
-}
-
-static void
-_config_update_btn(Evas_Object *button, const int mouse_button)
-{
- char lbl[256];
- char *icon = NULL;
- Evas_Object *ic = NULL;
-
- switch (mouse_button)
- {
- case 0:
- snprintf(lbl, sizeof(lbl), _("Click to set"));
- break;
-
- case 1:
- if (e_config->mouse_hand == E_MOUSE_HAND_RIGHT)
- {
- snprintf(lbl, sizeof(lbl), _("Left button"));
- icon = "preferences-desktop-mouse-left";
- }
- else if (e_config->mouse_hand == E_MOUSE_HAND_LEFT)
- {
- snprintf(lbl, sizeof(lbl), _("Right button"));
- icon = "preferences-desktop-mouse-right";
- }
- else
- {
- snprintf(lbl, sizeof(lbl), _("Button %i"), mouse_button);
- icon = "preferences-desktop-mouse-extra";
- }
- break;
-
- case 2:
- snprintf(lbl, sizeof(lbl), _("Middle button"));
- icon = "preferences-desktop-mouse-middle";
- break;
-
- case 3:
- if (e_config->mouse_hand == E_MOUSE_HAND_RIGHT)
- {
- snprintf(lbl, sizeof(lbl), _("Right button"));
- icon = "preferences-desktop-mouse-right";
- }
- else if (e_config->mouse_hand == E_MOUSE_HAND_LEFT)
- {
- snprintf(lbl, sizeof(lbl), _("Left button"));
- icon = "preferences-desktop-mouse-left";
- }
- else
- {
- snprintf(lbl, sizeof(lbl), _("Button %i"), mouse_button);
- icon = "preferences-desktop-mouse-extra";
- }
- break;
-
- default:
- snprintf(lbl, sizeof(lbl), _("Button %i"), mouse_button);
- icon = "preferences-desktop-mouse-extra";
- break;
- }
- elm_object_text_set(button, lbl);
- if (icon)
- {
- ic = elm_icon_add(button);
- elm_icon_standard_set(ic, icon);
- evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
- }
- elm_object_part_content_set(button, "icon", ic);
-}
-
-static void
-_config_update_btns(void)
-{
-#if 0
- _config_update_btn(pager_gadget_config_objects->o_btn_drag, pager_config->btn_drag);
-#endif
-
- _config_update_btn(pager_gadget_config_objects->o_btn_noplace, pager_config->btn_noplace);
- _config_update_btn(pager_gadget_config_objects->o_btn_desk, pager_config->btn_desk);
-}
-
-static void
-_config_grab_window_del(void *data EINA_UNUSED)
-{
- evas_object_show(cfg_dialog);
- _config_update_btns();
-}
-
-static Eina_Bool
-_config_grab_cb_mouse_down(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- Ecore_Event_Mouse_Button *ev;
-
- ev = event;
-
- if (ev->buttons == 3)
- {
- e_util_dialog_show(_("Attention"),
- _("You cannot use the right mouse button in the<ps/>"
- "gadget for this as it is already taken by internal<ps/>"
- "code for context menus.<ps/>"
- "This button only works in the popup."));
- }
- else
- {
- if (ev->buttons == pager_config->btn_drag)
- pager_config->btn_drag = 0;
- else if (ev->buttons == pager_config->btn_noplace)
- pager_config->btn_noplace = 0;
- else if (ev->buttons == pager_config->btn_desk)
- pager_config->btn_desk = 0;
-
- if (pager_gadget_config_objects->grab_btn == 1)
- pager_config->btn_drag = ev->buttons;
- else if (pager_gadget_config_objects->grab_btn == 2)
- pager_config->btn_noplace = ev->buttons;
- else
- pager_config->btn_desk = ev->buttons;
- }
-
- e_object_del(E_OBJECT(pager_gadget_config_objects->grab_dia));
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_config_grab_cb_key_down(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- Ecore_Event_Key *ev;
-
- ev = event;
- if (!strcmp(ev->key, "Delete"))
- {
- if (pager_gadget_config_objects->grab_btn == 1)
- pager_config->btn_drag = 0;
- else if (pager_gadget_config_objects->grab_btn == 2)
- pager_config->btn_noplace = 0;
- else
- pager_config->btn_desk = 0;
- }
- e_object_del(E_OBJECT(pager_gadget_config_objects->grab_dia));
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static void
-_config_grab_window_show(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- evas_object_hide(cfg_dialog);
- pager_gadget_config_objects->grab_btn = 0;
- if ((long)data == BUTTON_DRAG)
- pager_gadget_config_objects->grab_btn = 1;
- else if ((long)data == BUTTON_NOPLACE)
- pager_gadget_config_objects->grab_btn = 2;
-
- pager_gadget_config_objects->grab_dia = e_grab_dialog_show(NULL, EINA_TRUE,
- _config_grab_cb_key_down, _config_grab_cb_mouse_down, NULL, NULL);
- e_object_del_attach_func_set(E_OBJECT(pager_gadget_config_objects->grab_dia), _config_grab_window_del);
-}
-
-static void
-_config_virtual_desks_show(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- evas_object_del(cfg_dialog);
- e_configure_registry_call("screen/virtual_desktops", NULL, NULL);
-}
-
-static Evas_Object *
-_config_create_pages(Evas_Object *parent)
-{
- Evas_Object *m, *tb, *ow, *fr;
- int row = 5;
-
- m = elm_table_add(parent);
- E_EXPAND(m);
- evas_object_show(m);
-
- /* General Page */
- fr = elm_frame_add(m);
- elm_object_text_set(fr, _("General"));
- E_EXPAND(fr);
- E_FILL(fr);
- evas_object_show(fr);
-
- tb = elm_table_add(m);
- E_EXPAND(tb);
- elm_object_content_set(fr, tb);
- evas_object_show(tb);
-
- ow = elm_button_add(tb);
- elm_object_text_set(ow, _("Configure virtual deskstops"));
- evas_object_smart_callback_add(ow, "clicked",
- _config_virtual_desks_show, NULL);
- elm_table_pack(tb, ow, 0, 0, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
- pager_gadget_config_objects->o_btn_virtual = ow;
- row++;
-
- ow = elm_check_add(tb);
- elm_object_text_set(ow, _("Flip desktop on mouse wheel"));
- evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
- elm_check_state_set(ow, pager_config->flip_desk);
- elm_table_pack(tb, ow, 0, 1, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_flip_desk = ow;
-
- ow = elm_check_add(tb);
- elm_object_text_set(ow, _("Always show desktop names"));
- evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
- elm_check_state_set(ow, pager_config->show_desk_names);
- elm_table_pack(tb, ow, 0, 2, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_show_desk_names = ow;
-
-#if 0
- ow = elm_label_add(m);
- elm_object_text_set(ow, _("Select and Slide button"));
- elm_table_pack(tb, ow, 0, row, 1, 1);
- E_ALIGN(ow, 0.0, 0.0);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
- row++;
-
- ow = elm_button_add(tb);
- elm_object_text_set(ow, _("Click to set"));
- evas_object_smart_callback_add(ow, "clicked",
- _config_grab_window_show, (void *)BUTTON_DRAG);
- elm_table_pack(tb, ow, 0, row, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
- pager_gadget_config_objects->o_btn_drag = ow;
- row++;
-#endif
-
- ow = elm_label_add(m);
- elm_object_text_set(ow, _("Drag and Drop button"));
- elm_table_pack(tb, ow, 0, row, 1, 1);
- E_ALIGN(ow, 0.0, 0.0);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
- row++;
-
- ow = elm_button_add(tb);
- elm_object_text_set(ow, _("Click to set"));
- evas_object_smart_callback_add(ow, "clicked",
- _config_grab_window_show, (void *)BUTTON_NOPLACE);
- elm_table_pack(tb, ow, 0, row, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
- pager_gadget_config_objects->o_btn_noplace = ow;
- row++;
-
- ow = elm_label_add(m);
- elm_object_text_set(ow, _("Drag whole desktop"));
- elm_table_pack(tb, ow, 0, row, 1, 1);
- E_ALIGN(ow, 0.0, 0.0);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
- row++;
-
- ow = elm_button_add(tb);
- elm_object_text_set(ow, _("Click to set"));
- evas_object_smart_callback_add(ow, "clicked",
- _config_grab_window_show, (void *)BUTTON_DESK);
- elm_table_pack(tb, ow, 0, row, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
- pager_gadget_config_objects->o_btn_desk = ow;
-
- _config_update_btns();
-
- elm_table_pack(m, fr, 0, 0, 1, 1);
- pager_gadget_config_objects->general_page = fr;
-
- /* Popup Page */
- fr = elm_frame_add(m);
- elm_object_text_set(fr, _("Popup"));
- E_EXPAND(fr);
- E_FILL(fr);
- evas_object_show(fr);
-
- tb = elm_table_add(fr);
- E_EXPAND(tb);
- elm_object_content_set(fr, tb);
- evas_object_show(tb);
-
- ow = elm_check_add(tb);
- elm_object_text_set(ow, _("Show popup on desktop change"));
- evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
- elm_check_state_set(ow, pager_config->popup);
- elm_table_pack(tb, ow, 0, 0, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_popup = ow;
-
- ow = elm_label_add(m);
- elm_object_text_set(ow, _("Popup pager height"));
- elm_object_disabled_set(ow, !pager_config->popup);
- elm_table_pack(tb, ow, 0, 1, 1, 1);
- E_ALIGN(ow, 0.0, 0.0);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
-
- ow = elm_slider_add(tb);
- elm_object_disabled_set(ow, !pager_config->popup);
- elm_slider_min_max_set(ow, 20, 200);
- elm_slider_step_set(ow, 0.0555);
- elm_slider_value_set(ow, pager_config->popup_height);
- elm_slider_unit_format_set(ow, _("%.0f pixels"));
- elm_slider_indicator_format_set(ow, _("%.0f"));
- elm_table_pack(tb, ow, 0, 2, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "delay,changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_popup_height = ow;
-
- ow = elm_label_add(m);
- elm_object_text_set(ow, _("Popup duration"));
- elm_object_disabled_set(ow, !pager_config->popup);
- elm_table_pack(tb, ow, 0, 3, 1, 1);
- E_ALIGN(ow, 0.0, 0.0);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
-
- ow = elm_slider_add(tb);
- elm_object_disabled_set(ow, !pager_config->popup);
- elm_slider_min_max_set(ow, 0.1, 10);
- elm_slider_step_set(ow, 0.01);
- elm_slider_value_set(ow, pager_config->popup_speed);
- elm_slider_unit_format_set(ow, _("%1.1f seconds"));
- elm_slider_indicator_format_set(ow, _("%.1f"));
- elm_table_pack(tb, ow, 0, 4, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "delay,changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_popup_speed = ow;
-
- ow = elm_label_add(m);
- elm_object_text_set(ow, _("Pager action popup height"));
- elm_object_disabled_set(ow, !pager_config->popup);
- elm_table_pack(tb, ow, 0, 5, 1, 1);
- E_ALIGN(ow, 0.0, 0.0);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
-
- ow = elm_slider_add(tb);
- elm_object_disabled_set(ow, !pager_config->popup);
- elm_slider_min_max_set(ow, 20, 200);
- elm_slider_step_set(ow, 0.0555);
- elm_slider_value_set(ow, pager_config->popup_act_height);
- elm_slider_unit_format_set(ow, _("%.0f pixels"));
- elm_slider_indicator_format_set(ow, _("%.0f"));
- elm_table_pack(tb, ow, 0, 6, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "delay,changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_popup_act_height = ow;
-
- elm_table_pack(m, fr, 0, 0, 1, 1);
- pager_gadget_config_objects->popup_page = fr;
-
- /* Urgent Page */
- fr = elm_frame_add(m);
- elm_object_text_set(fr, _("Urgent"));
- E_EXPAND(fr);
- E_FILL(fr);
- evas_object_show(fr);
-
- tb = elm_table_add(fr);
- E_EXPAND(tb);
- elm_object_content_set(fr, tb);
- evas_object_show(tb);
-
- ow = elm_check_add(tb);
- elm_object_text_set(ow, _("Show popup for urgent window"));
- evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
- elm_check_state_set(ow, pager_config->popup_urgent);
- elm_table_pack(tb, ow, 0, 0, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_popup_urgent = ow;
-
- ow = elm_check_add(tb);
- elm_object_disabled_set(ow, !pager_config->popup_urgent);
- elm_object_text_set(ow, _("Urgent popup sticks on screen"));
- evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
- elm_check_state_set(ow, pager_config->popup_urgent_stick);
- elm_table_pack(tb, ow, 0, 1, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_popup_urgent_stick = ow;
-
- ow = elm_check_add(tb);
- elm_object_disabled_set(ow, !pager_config->popup_urgent);
- elm_object_text_set(ow, _("Show popup for focused windows"));
- evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
- elm_check_state_set(ow, pager_config->popup_urgent_focus);
- elm_table_pack(tb, ow, 0, 2, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_popup_urgent_focus = ow;
-
- ow = elm_label_add(m);
- elm_object_text_set(ow, _("Urgent Popup Duration"));
- elm_object_disabled_set(ow, !pager_config->popup_urgent);
- elm_table_pack(tb, ow, 0, 3, 1, 1);
- E_ALIGN(ow, 0.0, 0.0);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_show(ow);
-
- ow = elm_slider_add(tb);
- elm_object_disabled_set(ow, !pager_config->popup_urgent);
- elm_slider_min_max_set(ow, 0.1, 10);
- elm_slider_step_set(ow, 0.01);
- elm_slider_value_set(ow, pager_config->popup_urgent_speed);
- elm_slider_unit_format_set(ow, _("%1.1f seconds"));
- elm_slider_indicator_format_set(ow, _("%.1f"));
- elm_table_pack(tb, ow, 0, 4, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "delay,changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_popup_urgent_speed = ow;
-
- elm_table_pack(m, fr, 0, 0, 1, 1);
- pager_gadget_config_objects->urgent_page = fr;
-
- /* Style Page */
- fr = elm_frame_add(m);
- elm_object_text_set(fr, _("Style"));
- E_EXPAND(fr);
- E_FILL(fr);
- evas_object_show(fr);
-
- tb = elm_table_add(m);
- E_EXPAND(tb);
- elm_object_content_set(fr, tb);
- evas_object_show(tb);
-
- ow = elm_check_add(tb);
- elm_object_text_set(ow, _("Always Use Plain Style"));
- evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
- elm_check_state_set(ow, pager_config->permanent_plain);
- elm_table_pack(tb, ow, 0, 0, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_permanent = ow;
-
- ow = elm_check_add(tb);
- elm_object_text_set(ow, _("Switch to Plain Style When Saving Power"));
- evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
- elm_check_state_set(ow, pager_config->plain);
- elm_table_pack(tb, ow, 0, 1, 1, 1);
- E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
- E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(ow, "changed",
- _config_value_changed, NULL);
- evas_object_show(ow);
- pager_gadget_config_objects->o_plain = ow;
-
- elm_table_pack(m, fr, 0, 0, 1, 1);
- pager_gadget_config_objects->style_page = fr;
-
- return m;
-}
-
-EINTERN Evas_Object *
-config_pager(E_Zone *zone)
-{
- Evas_Object *popup, *tb, *lbl, *list;
- Elm_Object_Item *it;
-
- pager_gadget_config_objects = E_NEW(Config_Objects, 1);
- pager_gadget_config_objects->w = 0;
- pager_gadget_config_objects->h = 0;
-
- popup = elm_popup_add(e_comp->elm);
- E_EXPAND(popup);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- tb = elm_table_add(popup);
- E_EXPAND(tb);
- evas_object_show(tb);
- elm_object_content_set(popup, tb);
-
- lbl = elm_label_add(tb);
- elm_object_style_set(lbl, "marker");
- evas_object_show(lbl);
- elm_object_text_set(lbl, _("Pager Configuration"));
- elm_table_pack(tb, lbl, 0, 0, 2, 1);
-
- list = elm_list_add(tb);
- E_ALIGN(list, 0, EVAS_HINT_FILL);
- E_WEIGHT(list, 0, EVAS_HINT_EXPAND);
- elm_table_pack(tb, list, 0, 1, 1, 1);
- elm_list_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS);
- elm_scroller_content_min_limit(list, 1, 1);
- it = elm_list_item_append(list, _("General"), NULL, NULL,
- _config_show_general, NULL);
- elm_list_item_selected_set(it, 1);
- it = elm_list_item_append(list, _("Popup"), NULL, NULL,
- _config_show_popup, NULL);
- it = elm_list_item_append(list, _("Urgent"), NULL, NULL,
- _config_show_urgent, NULL);
- it = elm_list_item_append(list, _("Style"), NULL, NULL,
- _config_show_style, NULL);
- elm_list_go(list);
- evas_object_show(list);
-
- elm_table_pack(tb,
- _config_create_pages(tb), 1, 1, 1, 1);
- _config_show_general(NULL, NULL, NULL);
-
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center_on_zone(popup, zone);
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, NULL);
-
- return cfg_dialog = popup;
-}
-
diff --git a/src/modules/pager/gadget/mod.c b/src/modules/pager/gadget/mod.c
deleted file mode 100644
index f2b5863b78..0000000000
--- a/src/modules/pager/gadget/mod.c
+++ /dev/null
@@ -1,108 +0,0 @@
-#include "pager.h"
-static E_Config_DD *conf_edd = NULL;
-EINTERN Config *pager_config;
-EINTERN Evas_Object *cfg_dialog;
-EINTERN Eina_List *ginstances, *ghandlers, *phandlers;
-
-EINTERN void *
-e_modapi_gadget_init(E_Module *m)
-{
- conf_edd = E_CONFIG_DD_NEW("Pager_Config", Config);
-#undef T
-#undef D
-#define T Config
-#define D conf_edd
- E_CONFIG_VAL(D, T, popup, UINT);
- E_CONFIG_VAL(D, T, popup_speed, DOUBLE);
- E_CONFIG_VAL(D, T, popup_urgent, UINT);
- E_CONFIG_VAL(D, T, popup_urgent_stick, UINT);
- E_CONFIG_VAL(D, T, popup_urgent_speed, DOUBLE);
- E_CONFIG_VAL(D, T, show_desk_names, UINT);
- E_CONFIG_VAL(D, T, popup_height, INT);
- E_CONFIG_VAL(D, T, popup_act_height, INT);
- E_CONFIG_VAL(D, T, drag_resist, UINT);
- E_CONFIG_VAL(D, T, btn_drag, UCHAR);
- E_CONFIG_VAL(D, T, btn_noplace, UCHAR);
- E_CONFIG_VAL(D, T, btn_desk, UCHAR);
- E_CONFIG_VAL(D, T, flip_desk, UCHAR);
- E_CONFIG_VAL(D, T, plain, UCHAR);
- E_CONFIG_VAL(D, T, permanent_plain, UCHAR);
-
- pager_config = e_config_domain_load("module.pager", conf_edd);
-
- if (!pager_config)
- {
- pager_config = E_NEW(Config, 1);
- pager_config->popup = 1;
- pager_config->popup_speed = 1.0;
- pager_config->popup_urgent = 0;
- pager_config->popup_urgent_stick = 0;
- pager_config->popup_urgent_speed = 1.5;
- pager_config->show_desk_names = 0;
- pager_config->popup_height = 60;
- pager_config->popup_act_height = 60;
- pager_config->drag_resist = 3;
- pager_config->btn_drag = 1;
- pager_config->btn_noplace = 2;
- pager_config->btn_desk = 2;
- pager_config->flip_desk = 0;
- pager_config->plain = 0;
- pager_config->permanent_plain = 0;
- }
- E_CONFIG_LIMIT(pager_config->popup, 0, 1);
- E_CONFIG_LIMIT(pager_config->popup_speed, 0.1, 10.0);
- E_CONFIG_LIMIT(pager_config->popup_urgent, 0, 1);
- E_CONFIG_LIMIT(pager_config->popup_urgent_stick, 0, 1);
- E_CONFIG_LIMIT(pager_config->popup_urgent_speed, 0.1, 10.0);
- E_CONFIG_LIMIT(pager_config->show_desk_names, 0, 1);
- E_CONFIG_LIMIT(pager_config->popup_height, 20, 200);
- E_CONFIG_LIMIT(pager_config->popup_act_height, 20, 200);
- E_CONFIG_LIMIT(pager_config->drag_resist, 0, 50);
- E_CONFIG_LIMIT(pager_config->flip_desk, 0, 1);
- E_CONFIG_LIMIT(pager_config->btn_drag, 0, 32);
- E_CONFIG_LIMIT(pager_config->btn_noplace, 0, 32);
- E_CONFIG_LIMIT(pager_config->btn_desk, 0, 32);
- E_CONFIG_LIMIT(pager_config->plain, 0, 1);
- E_CONFIG_LIMIT(pager_config->permanent_plain, 0, 1);
-
- pager_init();
-
- e_gadget_type_add("Pager", pager_create, NULL);
-
- return m;
-}
-
-EINTERN int
-e_modapi_gadget_shutdown(E_Module *m EINA_UNUSED)
-{
- if (cfg_dialog)
- e_object_del(E_OBJECT(cfg_dialog));
-
- if (pager_config && ghandlers)
- E_FREE_LIST(ghandlers, ecore_event_handler_del);
-
- e_action_del("pager_gadget_show");
- e_action_del("pager_gadget_switch");
-
- e_action_predef_name_del("Pager Gadget", "Show Pager Popup");
- e_action_predef_name_del("Pager Gadget", "Popup Desk Right");
- e_action_predef_name_del("Pager Gadget", "Popup Desk Left");
- e_action_predef_name_del("Pager Gadget", "Popup Desk Up");
- e_action_predef_name_del("Pager Gadget", "Popup Desk Down");
- e_action_predef_name_del("Pager Gadget", "Popup Desk Next");
- e_action_predef_name_del("Pager Gadget", "Popup Desk Previous");
-
- e_gadget_type_del("Pager");
-
- E_FREE(pager_config);
- E_CONFIG_DD_FREE(conf_edd);
- return 1;
-}
-
-EINTERN int
-e_modapi_gadget_save(E_Module *m EINA_UNUSED)
-{
- e_config_domain_save("module.pager", conf_edd, pager_config);
- return 1;
-}
-
diff --git a/src/modules/pager/gadget/pager.c b/src/modules/pager/gadget/pager.c
deleted file mode 100644
index deea784850..0000000000
--- a/src/modules/pager/gadget/pager.c
+++ /dev/null
@@ -1,2991 +0,0 @@
-#include "pager.h"
-
-/* actual module specifics */
-typedef struct _Instance Instance;
-typedef struct _Pager Pager;
-typedef struct _Pager_Desk Pager_Desk;
-typedef struct _Pager_Win Pager_Win;
-typedef struct _Pager_Popup Pager_Popup;
-
-struct _Instance
-{
- Evas_Object *o_pager; /* table */
- Pager *pager;
- Pager_Popup *popup;
-};
-
-struct _Pager
-{
- Instance *inst;
- Pager_Popup *popup;
- Evas_Object *o_table;
- E_Zone *zone;
- int xnum, ynum;
- Eina_List *desks;
- Pager_Desk *active_pd;
- unsigned char dragging E_BITFIELD;
- unsigned char just_dragged E_BITFIELD;
- E_Client *active_drag_client;
- Ecore_Job *recalc;
- Eina_Bool invert E_BITFIELD;
- Eina_Bool plain E_BITFIELD;
-};
-
-struct _Pager_Desk
-{
- Pager *pager;
- E_Desk *desk;
- Eina_List *wins;
- Evas_Object *o_desk;
- Evas_Object *o_layout;
- Evas_Object *drop_handler;
- int xpos, ypos, urgent;
- int current E_BITFIELD;
- struct
- {
- Pager *from_pager;
- unsigned char in_pager E_BITFIELD;
- unsigned char start E_BITFIELD;
- int x, y, dx, dy, button;
- } drag;
-};
-
-struct _Pager_Win
-{
- E_Client *client;
- Pager_Desk *desk;
- Evas_Object *o_window;
- Evas_Object *o_mirror;
- Evas_Object *o_icon;
- unsigned char skip_winlist E_BITFIELD;
- struct
- {
- Pager *from_pager;
- unsigned char start E_BITFIELD;
- unsigned char in_pager E_BITFIELD;
- unsigned char desktop E_BITFIELD;
- int x, y, dx, dy, button;
- } drag;
-};
-
-struct _Pager_Popup
-{
- Evas_Object *popup;
- Evas_Object *o_bg;
- Pager *pager;
- Ecore_Timer *timer;
- unsigned char urgent E_BITFIELD;
-};
-
-static void _pager_cb_mirror_add(Pager_Desk *pd, Evas_Object *obj, Evas_Object *mirror);
-
-static void _pager_cb_obj_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
-static void _pager_cb_obj_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
-static Evas_Object *_pager_gadget_configure(Evas_Object *g);
-static Eina_Bool _pager_cb_event_powersave_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_desk_show(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_desk_name_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_compositor_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_move(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_remove(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_iconify(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_uniconify(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_stick(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_unstick(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_desk_set(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_stack(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_icon_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_focus_in(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_focus_out(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_property(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_cb_event_client_urgent_change(void *data EINA_UNUSED, int type EINA_UNUSED, E_Event_Client_Property *ev);
-static void _pager_window_move(Pager_Win *pw);
-static void _pager_window_cb_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
-static void _pager_window_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info);
-static void _pager_window_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info);
-static void _pager_window_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info);
-static void *_pager_window_cb_drag_convert(E_Drag *drag, const char *type);
-static void _pager_window_cb_drag_finished(E_Drag *drag, int dropped);
-static void _pager_drop_cb_enter(void *data, const char *type EINA_UNUSED, void *event_info);
-static void _pager_drop_cb_move(void *data, const char *type EINA_UNUSED, void *event_info);
-static void _pager_drop_cb_leave(void *data, const char *type EINA_UNUSED, void *event_info EINA_UNUSED);
-static void _pager_drop_cb_drop(void *data, const char *type, void *event_info);
-static void _pager_update_drop_position(Pager *p, Pager_Desk *pd, Evas_Coord x, Evas_Coord y);
-static void _pager_desk_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info);
-static void _pager_desk_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info);
-static void _pager_desk_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info);
-static void _pager_desk_cb_drag_finished(E_Drag *drag, int dropped);
-static void _pager_desk_cb_mouse_wheel(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info);
-static Eina_Bool _pager_popup_cb_timeout(void *data);
-static Pager *_pager_new(Evas *evas, Eina_Bool popup);
-static void _pager_free(Pager *p);
-static void _pager_fill(Pager *p);
-static void _pager_orient(Instance *inst, E_Gadget_Site_Orient orient);
-static void _pager_empty(Pager *p);
-static Pager_Desk *_pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos, Eina_Bool invert);
-static void _pager_desk_free(Pager_Desk *pd);
-static void _pager_desk_select(Pager_Desk *pd);
-static Pager_Desk *_pager_desk_find(Pager *p, E_Desk *desk);
-static void _pager_desk_switch(Pager_Desk *pd1, Pager_Desk *pd2);
-static Pager_Win *_pager_window_new(Pager_Desk *pd, Evas_Object *mirror, E_Client *client);
-static void _pager_window_free(Pager_Win *pw);
-static Pager_Popup *pager_popup_new(int keyaction);
-static void _pager_popup_free(Pager_Popup *pp);
-static Pager_Popup *_pager_popup_find(E_Zone *zone);
-
-/* functions for pager popup on key actions */
-static int _pager_popup_show(void);
-static void _pager_popup_hide(int switch_desk);
-static Eina_Bool _pager_popup_cb_mouse_wheel(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static void _pager_popup_desk_switch(int x, int y);
-static void _pager_popup_modifiers_set(int mod);
-static Eina_Bool _pager_popup_cb_key_down(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static Eina_Bool _pager_popup_cb_key_up(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
-static void _pager_popup_cb_action_show(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED, Ecore_Event_Key *ev EINA_UNUSED);
-static void _pager_popup_cb_action_switch(E_Object *obj EINA_UNUSED, const char *params, Ecore_Event_Key *ev);
-
-/* variables for pager popup on key actions */
-static Ecore_Window input_window = 0;
-static Eina_List *handlers = NULL;
-static Pager_Popup *act_popup = NULL; /* active popup */
-static int hold_count = 0;
-static int hold_mod = 0;
-static E_Desk *current_desk = NULL;
-static Eina_List *pagers = NULL;
-
-static E_Action *act_popup_show = NULL;
-static E_Action *act_popup_switch = NULL;
-
-static const char *
-_pager_location_get(Instance *inst)
-{
- const char *s = "float";
-
- if (!inst) return NULL;
-
- E_Gadget_Site_Orient orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_pager));
- E_Gadget_Site_Anchor anchor = e_gadget_site_anchor_get(e_gadget_site_get(inst->o_pager));
-
- if (anchor & E_GADGET_SITE_ANCHOR_LEFT)
- {
- if (anchor & E_GADGET_SITE_ANCHOR_TOP)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "top";
- break;
-
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "left";
- break;
-
- case E_GADGET_SITE_ORIENT_NONE:
- s = "left";
- break;
- }
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "bottom";
- break;
-
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "left";
- break;
-
- case E_GADGET_SITE_ORIENT_NONE:
- s = "left";
- break;
- }
- }
- else
- s = "left";
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_RIGHT)
- {
- if (anchor & E_GADGET_SITE_ANCHOR_TOP)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "top";
- break;
-
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "right";
- break;
-
- case E_GADGET_SITE_ORIENT_NONE:
- s = "right";
- break;
- }
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "bottom";
- break;
-
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "right";
- break;
-
- case E_GADGET_SITE_ORIENT_NONE:
- s = "right";
- break;
- }
- }
- else
- s = "right";
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_TOP)
- s = "top";
- else if (anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- s = "bottom";
- else
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "bottom";
- break;
-
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "left";
- break;
-
- default:
- s = "bottom";
- break;
- }
- }
- return s;
-}
-
-static Eina_Bool
-_pager_check_modifiers(Evas_Modifier *modifiers)
-{
- if ((evas_key_modifier_is_set(modifiers, "Alt")) ||
- (evas_key_modifier_is_set(modifiers, "Control")) ||
- (evas_key_modifier_is_set(modifiers, "Shift")))
- return EINA_TRUE;
- return EINA_FALSE;
-}
-
-static Pager_Win *
-_pager_desk_window_find(Pager_Desk *pd, E_Client *client)
-{
- Eina_List *l;
- Pager_Win *pw;
-
- EINA_LIST_FOREACH(pd->wins, l, pw)
- {
- if (pw)
- {
- if (pw->client == client) return pw;
- }
- }
- return NULL;
-}
-
-static Pager_Win *
-_pager_window_find(Pager *p, E_Client *client)
-{
- Eina_List *l;
- Pager_Desk *pd;
-
- EINA_LIST_FOREACH(p->desks, l, pd)
- {
- Pager_Win *pw;
-
- pw = _pager_desk_window_find(pd, client);
- if (pw) return pw;
- }
- return NULL;
-}
-
-static void
-_pager_gadget_anchor_change_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- Eina_Bool invert;
-
- if (inst->pager && inst->o_pager)
- {
- switch (e_gadget_site_orient_get(obj))
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- invert = EINA_FALSE;
- break;
-
- case E_GADGET_SITE_ORIENT_VERTICAL:
- invert = EINA_TRUE;
- break;
-
- default:
- invert = EINA_FALSE;
- }
- if (invert != inst->pager->invert)
- {
- _pager_orient(inst, e_gadget_site_orient_get(obj));
- _pager_empty(inst->pager);
- _pager_fill(inst->pager);
- }
- }
-}
-
-static void
-_pager_gadget_created_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- Eina_List *l;
- Pager_Desk *pd;
- if (inst->pager && inst->o_pager)
- {
- e_gadget_configure_cb_set(inst->o_pager, _pager_gadget_configure);
- _pager_orient(inst, e_gadget_site_orient_get(obj));
- _pager_empty(inst->pager);
- _pager_fill(inst->pager);
-
- EINA_LIST_FOREACH(inst->pager->desks, l, pd)
- {
- if (!pd->drop_handler)
- {
- const char *drop[] =
- {
- "enlightenment/pager_win", "enlightenment/border",
- "enlightenment/vdesktop"
- };
- pd->drop_handler =
- e_gadget_drop_handler_add(inst->o_pager, pd,
- _pager_drop_cb_enter, _pager_drop_cb_move,
- _pager_drop_cb_leave, _pager_drop_cb_drop,
- drop, 3);
- //edje_object_part_swallow(pd->o_desk, "e.swallow.drop", pd->drop_handler);
- evas_object_show(pd->drop_handler);
- }
- }
- }
- evas_object_smart_callback_del_full(obj, "gadget_created", _pager_gadget_created_cb, data);
-}
-
-static void
-_pager_orient(Instance *inst, E_Gadget_Site_Orient orient)
-{
- int aspect_w, aspect_h, zone_w = 1, zone_h = 1;
-
- if (inst->o_pager)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- inst->pager->invert = EINA_FALSE;
- break;
-
- case E_GADGET_SITE_ORIENT_VERTICAL:
- inst->pager->invert = EINA_TRUE;
- break;
-
- default:
- inst->pager->invert = EINA_FALSE;
- }
- }
- if (inst->pager->zone)
- {
- zone_w = inst->pager->zone->w;
- zone_h = inst->pager->zone->h;
- }
- if (inst->pager->invert)
- {
- aspect_w = inst->pager->ynum * zone_w;
- aspect_h = inst->pager->xnum * zone_h;
- evas_object_size_hint_aspect_set(inst->o_pager, EVAS_ASPECT_CONTROL_BOTH, aspect_w, aspect_h);
- }
- else
- {
- aspect_w = inst->pager->xnum * zone_w;
- aspect_h = inst->pager->ynum * zone_h;
- evas_object_size_hint_aspect_set(inst->o_pager, EVAS_ASPECT_CONTROL_BOTH, aspect_w, aspect_h);
- }
-}
-
-static void
-_pager_recalc(void *data)
-{
- Pager *p = data;
- Pager_Desk *pd;
- Evas_Coord mw = 0, mh = 0;
- int w, h, zw, zh, w2, h2;
-
- p->recalc = NULL;
- if (!p->zone) return;
- zw = p->zone->w; zh = p->zone->h;
- pd = eina_list_data_get(p->desks);
- if (!pd) return;
-
- edje_object_size_min_calc(pd->o_desk, &mw, &mh);
- evas_object_geometry_get(pd->o_desk, NULL, NULL, &w, &h);
- w -= mw; h -= mh;
- w2 = w; h2 = (zh * w) / zw;
- if (h2 > h)
- {
- h2 = h; w2 = (zw * h) / zh;
- }
- w = w2; h = h2;
- w += mw; h += mh;
- if ((p->inst) && (p->inst->o_pager))
- {
- _pager_orient(p->inst, e_gadget_site_orient_get(e_gadget_site_get(p->inst->o_pager)));
- }
-}
-
-static void
-_pager_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Pager *p = data;
-
- if (!p->recalc)
- p->recalc = ecore_job_add(_pager_recalc, p);
-}
-
-static Pager *
-_pager_new(Evas *evas, Eina_Bool popup)
-{
- Pager *p;
-
- p = E_NEW(Pager, 1);
- p->inst = NULL;
- p->popup = NULL;
- if (pager_config->plain)
- {
- switch (e_powersave_mode_get())
- {
- case E_POWERSAVE_MODE_HIGH:
- p->plain = EINA_TRUE;
- break;
-
- case E_POWERSAVE_MODE_EXTREME:
- p->plain = EINA_TRUE;
- break;
-
- case E_POWERSAVE_MODE_FREEZE:
- p->plain = EINA_TRUE;
- break;
-
- default:
- p->plain = EINA_FALSE;
- }
- }
- p->o_table = elm_table_add(e_win_evas_win_get(evas));
- evas_object_event_callback_add(p->o_table, EVAS_CALLBACK_RESIZE, _pager_resize, p);
- elm_table_homogeneous_set(p->o_table, 1);
- if (popup)
- p->zone = e_zone_current_get();
- else
- p->zone = e_comp_object_util_zone_get(p->o_table);
- _pager_fill(p);
- pagers = eina_list_append(pagers, p);
- return p;
-}
-
-static void
-_pager_free(Pager *p)
-{
- _pager_empty(p);
- evas_object_del(p->o_table);
- ecore_job_del(p->recalc);
- pagers = eina_list_remove(pagers, p);
- free(p);
-}
-
-static void
-_pager_fill(Pager *p)
-{
- int x, y;
- E_Gadget_Site_Orient orient;
-
- if (p->inst && p->inst->o_pager)
- {
- orient = e_gadget_site_orient_get(e_gadget_site_get(p->inst->o_pager));
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- p->invert = EINA_FALSE;
- break;
-
- case E_GADGET_SITE_ORIENT_VERTICAL:
- p->invert = EINA_TRUE;
- break;
-
- default:
- p->invert = EINA_FALSE;
- }
- }
- e_zone_desk_count_get(p->zone, &(p->xnum), &(p->ynum));
- if (p->ynum != 1) p->invert = EINA_FALSE;
- for (x = 0; x < p->xnum; x++)
- {
- if ((p->plain) || (pager_config->permanent_plain))
- {
- if (!phandlers)
- {
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_RESIZE, _pager_cb_event_client_resize, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_MOVE, _pager_cb_event_client_move, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_ADD, _pager_cb_event_client_add, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_REMOVE, _pager_cb_event_client_remove, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_ICONIFY, _pager_cb_event_client_iconify, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_UNICONIFY, _pager_cb_event_client_uniconify, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_PROPERTY, _pager_cb_event_client_stick, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_PROPERTY, _pager_cb_event_client_unstick, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_DESK_SET, _pager_cb_event_client_desk_set, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_STACK, _pager_cb_event_client_stack, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_PROPERTY, _pager_cb_event_client_icon_change, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_FOCUS_IN, _pager_cb_event_client_focus_in, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_FOCUS_OUT, _pager_cb_event_client_focus_out, NULL);
- E_LIST_HANDLER_APPEND(phandlers, E_EVENT_CLIENT_PROPERTY, _pager_cb_event_client_property, NULL);
- }
- }
- for (y = 0; y < p->ynum; y++)
- {
- Pager_Desk *pd;
- E_Desk *desk;
-
- desk = e_desk_at_xy_get(p->zone, x, y);
- if (desk)
- {
- pd = _pager_desk_new(p, desk, x, y, p->invert);
- if (pd)
- {
- p->desks = eina_list_append(p->desks, pd);
- if (desk == e_desk_current_get(desk->zone))
- _pager_desk_select(pd);
- }
- }
- }
- }
-}
-
-static void
-_pager_empty(Pager *p)
-{
- p->active_pd = NULL;
- if (!(p->plain) && !(pager_config->permanent_plain))
- {
- if (!phandlers)
- {
- Ecore_Event_Handler *handler;
- EINA_LIST_FREE(phandlers, handler)
- ecore_event_handler_del(handler);
- }
- }
- E_FREE_LIST(p->desks, _pager_desk_free);
-}
-
-static Pager_Desk *
-_pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos, Eina_Bool invert)
-{
- Pager_Desk *pd;
- Evas_Object *o, *evo;
- E_Client *ec;
- Eina_List *l;
- int w, h;
- Evas *e;
- const char *drop[] =
- {
- "enlightenment/pager_win", "enlightenment/border",
- "enlightenment/vdesktop"
- };
-
- if (!desk) return NULL;
- pd = E_NEW(Pager_Desk, 1);
- if (!pd) return NULL;
-
- pd->xpos = xpos;
- pd->ypos = ypos;
- pd->urgent = 0;
- pd->desk = desk;
- e_object_ref(E_OBJECT(desk));
- pd->pager = p;
- pd->drop_handler = NULL;
-
- e = evas_object_evas_get(p->o_table);
- o = edje_object_add(e);
- pd->o_desk = o;
- if (p->plain || pager_config->permanent_plain)
- e_theme_edje_object_set(o, "base/theme/gadgets/pager",
- "e/gadget/pager/plain/desk");
- else
- e_theme_edje_object_set(o, "base/theme/gadgets/pager",
- "e/gadget/pager/default/desk");
- edje_object_part_text_set(o, "e.text.label", desk->name);
- if (pager_config->show_desk_names)
- edje_object_signal_emit(o, "e,name,show", "e");
-
- edje_object_size_min_calc(o, &w, &h);
-
- E_EXPAND(o);
- E_FILL(o);
- if (invert)
- elm_table_pack(p->o_table, o, ypos, xpos, 1, 1);
- else
- elm_table_pack(p->o_table, o, xpos, ypos, 1, 1);
-
- evo = (Evas_Object *)edje_object_part_object_get(o, "e.eventarea");
- if (!evo) evo = o;
-
- evas_object_event_callback_add(evo, EVAS_CALLBACK_MOUSE_DOWN,
- _pager_desk_cb_mouse_down, pd);
- evas_object_event_callback_add(evo, EVAS_CALLBACK_MOUSE_UP,
- _pager_desk_cb_mouse_up, pd);
- evas_object_event_callback_add(evo, EVAS_CALLBACK_MOUSE_MOVE,
- _pager_desk_cb_mouse_move, pd);
- evas_object_event_callback_add(evo, EVAS_CALLBACK_MOUSE_WHEEL,
- _pager_desk_cb_mouse_wheel, pd);
- evas_object_show(o);
-
- if (p->plain || pager_config->permanent_plain)
- {
- pd->o_layout = e_layout_add(e);
- e_layout_virtual_size_set(pd->o_layout, desk->zone->w, desk->zone->h);
- edje_object_part_swallow(pd->o_desk, "e.swallow.content", pd->o_layout);
- evas_object_show(pd->o_layout);
- E_CLIENT_FOREACH(ec)
- {
- Pager_Win *pw;
-
- if (e_client_util_ignored_get(ec)) continue;
- if ((ec->new_client) || (ec->zone != desk->zone) ||
- ((ec->desk != desk) && (!ec->sticky)))
- continue;
- pw = _pager_window_new(pd, NULL, ec);
- if (pw) pd->wins = eina_list_append(pd->wins, pw);
- }
- }
- else
- {
- pd->o_layout = e_deskmirror_add(desk, 1, 0);
- evas_object_smart_callback_add(pd->o_layout, "mirror_add", (Evas_Smart_Cb)_pager_cb_mirror_add, pd);
-
- l = e_deskmirror_mirror_list(pd->o_layout);
- EINA_LIST_FREE(l, o)
- {
- ec = evas_object_data_get(o, "E_Client");
- if (ec)
- {
- Pager_Win *pw;
-
- pw = _pager_window_new(pd, o, ec);
- if (pw) pd->wins = eina_list_append(pd->wins, pw);
- }
- }
- edje_object_part_swallow(pd->o_desk, "e.swallow.content", pd->o_layout);
- evas_object_show(pd->o_layout);
- }
- if (pd->pager->inst)
- {
- pd->drop_handler =
- e_gadget_drop_handler_add(p->inst->o_pager, pd,
- _pager_drop_cb_enter, _pager_drop_cb_move,
- _pager_drop_cb_leave, _pager_drop_cb_drop,
- drop, 3);
- edje_object_part_swallow(pd->o_desk, "e.swallow.drop", pd->drop_handler);
- evas_object_show(pd->drop_handler);
- }
-
- return pd;
-}
-
-static void
-_pager_desk_free(Pager_Desk *pd)
-{
- Pager_Win *w;
-
- if (pd->drop_handler)
- evas_object_del(pd->drop_handler);
- pd->drop_handler = NULL;
- evas_object_del(pd->o_desk);
- evas_object_del(pd->o_layout);
- EINA_LIST_FREE(pd->wins, w)
- _pager_window_free(w);
- e_object_unref(E_OBJECT(pd->desk));
- free(pd);
-}
-
-static void
-_pager_desk_select(Pager_Desk *pd)
-{
- char ori[32];
- const char *s = _pager_location_get(pd->pager->inst);
- if (pd->current) return;
- if (pd->pager->active_pd)
- {
- pd->pager->active_pd->current = 0;
- edje_object_signal_emit(pd->pager->active_pd->o_desk, "e,state,unselected", "e");
- }
- pd->current = 1;
- evas_object_raise(pd->o_desk);
- if (s)
- snprintf(ori, sizeof(ori), "e,state,selected,%s", s);
- else
- snprintf(ori, sizeof(ori), "e,state,selected,bottom");
- edje_object_signal_emit(pd->o_desk, ori, "e");
- pd->pager->active_pd = pd;
-}
-
-static Pager_Desk *
-_pager_desk_find(Pager *p, E_Desk *desk)
-{
- Eina_List *l;
- Pager_Desk *pd;
-
- EINA_LIST_FOREACH(p->desks, l, pd)
- if (pd->desk == desk) return pd;
-
- return NULL;
-}
-
-static void
-_pager_desk_switch(Pager_Desk *pd1, Pager_Desk *pd2)
-{
- int c;
- E_Zone *zone1, *zone2;
- E_Desk *desk1, *desk2;
- Pager_Win *pw;
- Eina_List *l;
-
- if ((!pd1) || (!pd2) || (!pd1->desk) || (!pd2->desk)) return;
- if (pd1 == pd2) return;
-
- desk1 = pd1->desk;
- desk2 = pd2->desk;
- zone1 = pd1->desk->zone;
- zone2 = pd2->desk->zone;
-
- /* Move opened windows from on desk to the other */
- EINA_LIST_FOREACH(pd1->wins, l, pw)
- {
- if ((!pw) || (!pw->client) || (pw->client->iconic)) continue;
- pw->client->hidden = 0;
- e_client_desk_set(pw->client, desk2);
- }
- EINA_LIST_FOREACH(pd2->wins, l, pw)
- {
- if ((!pw) || (!pw->client) || (pw->client->iconic)) continue;
- pw->client->hidden = 0;
- e_client_desk_set(pw->client, desk1);
- }
- e_deskmirror_update_force(pd1->o_layout);
- e_deskmirror_update_force(pd2->o_layout);
-
- /* Modify desktop names in the config */
- for (l = e_config->desktop_names, c = 0; l && c < 2; l = l->next)
- {
- E_Config_Desktop_Name *tmp_dn;
-
- tmp_dn = l->data;
- if (!tmp_dn) continue;
- if ((tmp_dn->desk_x == desk1->x) &&
- (tmp_dn->desk_y == desk1->y) &&
- (tmp_dn->zone == (int)desk1->zone->num))
- {
- tmp_dn->desk_x = desk2->x;
- tmp_dn->desk_y = desk2->y;
- tmp_dn->zone = desk2->zone->num;
- c++;
- }
- else if ((tmp_dn->desk_x == desk2->x) &&
- (tmp_dn->desk_y == desk2->y) &&
- (tmp_dn->zone == (int)desk2->zone->num))
- {
- tmp_dn->desk_x = desk1->x;
- tmp_dn->desk_y = desk1->y;
- tmp_dn->zone = desk1->zone->num;
- c++;
- }
- }
- if (c > 0) e_config_save();
- e_desk_name_update();
-
- /* Modify desktop backgrounds in the config */
- for (l = e_config->desktop_backgrounds, c = 0; l && c < 2; l = l->next)
- {
- E_Config_Desktop_Background *tmp_db;
-
- tmp_db = l->data;
- if (!tmp_db) continue;
- if ((tmp_db->desk_x == desk1->x) &&
- (tmp_db->desk_y == desk1->y) &&
- (tmp_db->zone == (int)desk1->zone->num))
- {
- tmp_db->desk_x = desk2->x;
- tmp_db->desk_y = desk2->y;
- tmp_db->zone = desk2->zone->num;
- c++;
- }
- else if ((tmp_db->desk_x == desk2->x) &&
- (tmp_db->desk_y == desk2->y) &&
- (tmp_db->zone == (int)desk2->zone->num))
- {
- tmp_db->desk_x = desk1->x;
- tmp_db->desk_y = desk1->y;
- tmp_db->zone = desk1->zone->num;
- c++;
- }
- }
- if (c > 0) e_config_save();
-
- /* If the current desktop has been switched, force to update of the screen */
- if (desk2 == e_desk_current_get(zone2))
- {
- desk2->visible = 0;
- e_desk_show(desk2);
- }
- if (desk1 == e_desk_current_get(zone1))
- {
- desk1->visible = 0;
- e_desk_show(desk1);
- }
-}
-
-static Pager_Win *
-_pager_window_new(Pager_Desk *pd, Evas_Object *mirror, E_Client *client)
-{
- Pager_Win *pw;
- Evas_Object *o;
- int visible;
-
- if (!client) return NULL;
- pw = E_NEW(Pager_Win, 1);
- if (!pw) return NULL;
-
- pw->client = client;
- pw->desk = pd;
- if ((pd->pager->plain) || (pager_config->permanent_plain))
- {
- visible = ((!client->iconic) && (!client->netwm.state.skip_pager));
- pw->skip_winlist = client->netwm.state.skip_pager;
-
- o = edje_object_add(evas_object_evas_get(pd->pager->o_table));
- pw->o_window = o;
- e_theme_edje_object_set(o, "base/theme/gadgets/pager",
- "e/gadget/pager/plain/window");
- if (visible) evas_object_show(o);
- e_layout_pack(pd->o_layout, pw->o_window);
- e_layout_child_raise(pw->o_window);
- o = e_client_icon_add(client, evas_object_evas_get(pd->pager->o_table));
- if (o)
- {
- pw->o_icon = o;
- evas_object_show(o);
- edje_object_part_swallow(pw->o_window, "e.swallow.icon", o);
- }
- e_layout_child_move(pw->o_window,
- pw->client->x - pw->client->zone->x,
- pw->client->y - pw->client->zone->y);
- e_layout_child_resize(pw->o_window, pw->client->w, pw->client->h);
- evas_object_show(o);
- o = pw->o_window;
- }
- else
- {
- pw->o_mirror = mirror;
- o = mirror;
- }
- evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN,
- _pager_window_cb_mouse_down, pw);
- evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP,
- _pager_window_cb_mouse_up, pw);
- evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE,
- _pager_window_cb_mouse_move, pw);
- evas_object_event_callback_add(o, EVAS_CALLBACK_DEL,
- _pager_window_cb_del, pw);
-
- if (client->urgent)
- {
- if (!(client->iconic))
- {
- if ((pd->pager->plain) || (pager_config->permanent_plain))
- edje_object_signal_emit(pw->o_window, "e,state,urgent", "e");
- else
- edje_object_signal_emit(pd->o_desk, "e,state,urgent", "e");
- }
- }
-
- return pw;
-}
-
-static void
-_pager_window_free(Pager_Win *pw)
-{
- Evas_Object *o;
- if ((pw->drag.from_pager) && (pw->desk->pager->dragging))
- pw->desk->pager->dragging = 0;
- if (pw->o_mirror)
- o = pw->o_mirror;
- else
- o = pw->o_window;
- if (o)
- evas_object_event_callback_del_full(o, EVAS_CALLBACK_DEL,
- _pager_window_cb_del, pw);
- if (pw->o_icon) evas_object_del(pw->o_icon);
- if (pw->o_window) evas_object_del(pw->o_window);
- free(pw);
-}
-
-static void
-_pager_popup_cb_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Pager_Popup *pp = data;
- E_FREE_FUNC(pp->timer, ecore_timer_del);
- _pager_free(pp->pager);
- free(pp);
-}
-
-static Pager_Popup *
-pager_popup_new(int keyaction)
-{
- Pager_Popup *pp;
- Evas_Coord w, h, zx, zy, zw, zh;
- int x, y, height, width;
- E_Desk *desk;
- Pager_Desk *pd;
- E_Zone *zone = e_zone_current_get();
-
- pp = E_NEW(Pager_Popup, 1);
- if (!pp) return NULL;
-
- /* Show popup */
-
- pp->pager = _pager_new(e_comp->evas, EINA_TRUE);
-
- pp->pager->popup = pp;
- pp->urgent = 0;
-
- e_zone_desk_count_get(zone, &x, &y);
-
- if (keyaction)
- height = pager_config->popup_act_height;
- else
- height = pager_config->popup_height;
-
- pd = eina_list_data_get(pp->pager->desks);
- if (!pd)
- {
- height *= y;
- width = height * (zone->w * x) / (zone->h * y);
- }
- else
- {
- Evas_Coord mw = 0, mh = 0;
-
- edje_object_size_min_calc(pd->o_desk, &mw, &mh);
- height -= mh;
- width = (height * zone->w) / zone->h;
- height *= y;
- height += (y * mh);
- width *= x;
- width += (x * mw);
- }
-
- evas_object_move(pp->pager->o_table, 0, 0);
- evas_object_resize(pp->pager->o_table, width, height);
-
- pp->o_bg = edje_object_add(e_comp->evas);
- evas_object_name_set(pp->o_bg, "pager_gadget_popup");
- e_theme_edje_object_set(pp->o_bg, "base/theme/gadgets/pager",
- "e/gadget/pager/popup");
- desk = e_desk_current_get(zone);
- if (desk)
- edje_object_part_text_set(pp->o_bg, "e.text.label", desk->name);
-
- evas_object_size_hint_min_set(pp->pager->o_table, width, height);
- edje_object_part_swallow(pp->o_bg, "e.swallow.content", pp->pager->o_table);
- edje_object_size_min_calc(pp->o_bg, &w, &h);
-
- pp->popup = e_comp_object_util_add(pp->o_bg, E_COMP_OBJECT_TYPE_POPUP);
- evas_object_layer_set(pp->popup, E_LAYER_CLIENT_POPUP);
- evas_object_pass_events_set(pp->popup, 1);
- e_zone_useful_geometry_get(zone, &zx, &zy, &zw, &zh);
- evas_object_geometry_set(pp->popup, zx, zy, w, h);
- e_comp_object_util_center(pp->popup);
- evas_object_event_callback_add(pp->popup, EVAS_CALLBACK_DEL, _pager_popup_cb_del, pp);
- evas_object_show(pp->popup);
-
- pp->timer = NULL;
-
- return pp;
-}
-
-static void
-_pager_popup_free(Pager_Popup *pp)
-{
- E_FREE_FUNC(pp->timer, ecore_timer_del);
- evas_object_hide(pp->popup);
- evas_object_del(pp->popup);
-}
-
-static Pager_Popup *
-_pager_popup_find(E_Zone *zone)
-{
- Eina_List *l;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- if ((p->popup) && (p->zone == zone))
- return p->popup;
-
- return NULL;
-}
-
-static void
-_pager_cb_obj_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- Eina_List *l;
- Pager_Desk *pd;
-
- EINA_LIST_FOREACH(inst->pager->desks, l, pd)
- edje_object_signal_emit(pd->o_desk, "e,state,hidden", "e");
-}
-
-static void
-_pager_cb_obj_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- Eina_List *l;
- Pager_Desk *pd;
-
- EINA_LIST_FOREACH(inst->pager->desks, l, pd)
- edje_object_signal_emit(pd->o_desk, "e,state,visible", "e");
-}
-
-static void
-_pager_cb_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- Pager *p = inst->pager;
- E_Zone *zone = e_comp_object_util_zone_get(p->o_table);
- if (zone != p->zone)
- {
- p->zone = zone;
- _pager_empty(p);
- _pager_fill(p);
- }
-}
-
-static Evas_Object *
-_pager_gadget_configure(Evas_Object *g EINA_UNUSED)
-{
- if (!pager_config) return NULL;
- if (cfg_dialog) return NULL;
- return config_pager(e_zone_current_get());
-}
-
-EINTERN void
-_pager_cb_config_gadget_updated(Eina_Bool style_changed)
-{
- Pager *p;
- Pager_Desk *pd;
- Eina_List *l, *ll;
- if (!pager_config) return;
- EINA_LIST_FOREACH(pagers, l, p)
- {
- if (style_changed)
- {
- if (pager_config->plain)
- {
- switch (e_powersave_mode_get())
- {
- case E_POWERSAVE_MODE_HIGH:
- p->plain = EINA_TRUE;
- break;
-
- case E_POWERSAVE_MODE_EXTREME:
- p->plain = EINA_TRUE;
- break;
-
- case E_POWERSAVE_MODE_FREEZE:
- p->plain = EINA_TRUE;
- break;
-
- default:
- p->plain = EINA_FALSE;
- }
- }
- _pager_empty(p);
- _pager_fill(p);
- }
- EINA_LIST_FOREACH(p->desks, ll, pd)
- {
- if (pd->current)
- {
- char ori[32];
- const char *s = _pager_location_get(pd->pager->inst);
- if (s)
- snprintf(ori, sizeof(ori), "e,state,selected,%s", s);
- else
- snprintf(ori, sizeof(ori), "e,state,selected,bottom");
- edje_object_signal_emit(pd->o_desk, ori, "e");
- }
- else
- edje_object_signal_emit(pd->o_desk, "e,state,unselected", "e");
- if (pager_config->show_desk_names)
- edje_object_signal_emit(pd->o_desk, "e,name,show", "e");
- else
- edje_object_signal_emit(pd->o_desk, "e,name,hide", "e");
- }
- }
-}
-
-static void
-_pager_cb_mirror_add(Pager_Desk *pd, Evas_Object *obj EINA_UNUSED, Evas_Object *mirror)
-{
- Pager_Win *pw;
-
- pw = _pager_window_new(pd, mirror, evas_object_data_get(mirror, "E_Client"));
- if (pw) pd->wins = eina_list_append(pd->wins, pw);
-}
-
-static Eina_Bool
-_pager_cb_event_client_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client *ev = event;
- Eina_List *l, *l2;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Pager_Desk *pd;
-
- if (p->zone != ev->ec->zone) continue;
- EINA_LIST_FOREACH(p->desks, l2, pd)
- {
- Pager_Win *pw;
-
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw) _pager_window_move(pw);
- }
- }
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_move(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client *ev = event;
- Eina_List *l;
- Pager_Win *pw;
- Pager_Desk *pd;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Eina_List *l2;
-
- if (p->zone != ev->ec->zone) continue;
- EINA_LIST_FOREACH(p->desks, l2, pd)
- {
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw) _pager_window_move(pw);
- }
- }
-
- if ((act_popup) && (act_popup->pager->zone == ev->ec->zone))
- {
- EINA_LIST_FOREACH(act_popup->pager->desks, l, pd)
- {
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw) _pager_window_move(pw);
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client *ev = event;
- Eina_List *l;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Pager_Desk *pd;
- Pager_Win *pw;
-
- if ((p->zone != ev->ec->zone) ||
- (_pager_window_find(p, ev->ec)))
- continue;
- pd = _pager_desk_find(p, ev->ec->desk);
- if (!pd) continue;
- pw = _pager_window_new(pd, NULL, ev->ec);
- if (pw) pd->wins = eina_list_append(pd->wins, pw);
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_remove(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client *ev = event;
- Eina_List *l;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Eina_List *l2;
- Pager_Desk *pd;
-
- if (p->zone != ev->ec->zone) continue;
-
- EINA_LIST_FOREACH(p->desks, l2, pd)
- {
- Pager_Win *pw;
-
- pw = _pager_desk_window_find(pd, ev->ec);
- if (!pw) continue;
- pd->wins = eina_list_remove(pd->wins, pw);
- _pager_window_free(pw);
- }
- }
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_iconify(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client *ev = event;
- Eina_List *l;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Eina_List *l2;
- Pager_Desk *pd;
-
- if (p->zone != ev->ec->zone) continue;
-
- EINA_LIST_FOREACH(p->desks, l2, pd)
- {
- Pager_Win *pw;
-
- pw = _pager_desk_window_find(pd, ev->ec);
- if (!pw) continue;
- if ((pw->drag.from_pager) && (pw->desk->pager->dragging))
- pw->desk->pager->dragging = 0;
- evas_object_hide(pw->o_window);
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_uniconify(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client *ev = event;
- Eina_List *l;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Eina_List *l2;
- Pager_Desk *pd;
-
- if (p->zone != ev->ec->zone) continue;
-
- EINA_LIST_FOREACH(p->desks, l2, pd)
- {
- Pager_Win *pw;
-
- pw = _pager_desk_window_find(pd, ev->ec);
- if ((pw) && (!pw->skip_winlist)) evas_object_show(pw->o_window);
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_stick(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client_Property *ev = event;
- Eina_List *l;
- Pager *p;
-
- if ((!(ev->property & E_CLIENT_PROPERTY_STICKY)) || (!ev->ec->sticky)) return ECORE_CALLBACK_RENEW;
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Eina_List *l2;
- Pager_Desk *pd;
- Pager_Win *pw;
-
- if (p->zone != ev->ec->zone) continue;
- pw = _pager_window_find(p, ev->ec);
- if (!pw) continue;
-
- EINA_LIST_FOREACH(p->desks, l2, pd)
- if ((ev->ec->desk != pd->desk) && (!_pager_desk_window_find(pd, ev->ec)))
- {
- pw = _pager_window_new(pd, NULL, ev->ec);
- if (pw) pd->wins = eina_list_append(pd->wins, pw);
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_unstick(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client_Property *ev = event;
- Eina_List *l;
- Pager *p;
-
- if ((!(ev->property & E_CLIENT_PROPERTY_STICKY)) || (ev->ec->sticky)) return ECORE_CALLBACK_RENEW;
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Pager_Desk *pd;
- Eina_List *l2;
-
- if (p->zone != ev->ec->zone) continue;
-
- EINA_LIST_FOREACH(p->desks, l2, pd)
- if (ev->ec->desk != pd->desk)
- {
- Pager_Win *pw;
-
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw)
- {
- pd->wins = eina_list_remove(pd->wins, pw);
- _pager_window_free(pw);
- }
- }
- }
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static void
-_pager_window_desk_change(Pager *pager, E_Client *ec)
-{
- Eina_List *l;
- Pager_Win *pw;
- Pager_Desk *pd;
-
- /* if this pager is not for the zone of the client */
- if (pager->zone != ec->zone)
- {
- /* look at all desks in the pager */
- EINA_LIST_FOREACH(pager->desks, l, pd)
- {
- /* find this client in this desk */
- pw = _pager_desk_window_find(pd, ec);
- if (!pw) continue;
- /* if it is found - remove it. it does not belong in this
- * pager as it probably moves zones */
- pd->wins = eina_list_remove(pd->wins, pw);
- _pager_window_free(pw);
- }
- return;
- }
- /* and this pager zone is for this client */
- /* see if the window is in this pager at all */
- pw = _pager_window_find(pager, ec);
- if (pw) /* is it sticky */
- {
- if (ec->sticky)
- {
- /* if its sticky and in this pager - its already everywhere, so abort
- * doing anything else */
- return;
- }
- /* move it to the right desk */
- /* find the pager desk of the target desk */
- pd = _pager_desk_find(pager, ec->desk);
- if (pd)
- {
- Pager_Win *pw2 = NULL;
- E_Client *ec_above;
-
- /* remove it from whatever desk it was on */
- pw->desk->wins = eina_list_remove(pw->desk->wins, pw);
- e_layout_unpack(pw->o_window);
-
- /* add it to the one its MEANT to be on */
- pw->desk = pd;
- pd->wins = eina_list_append(pd->wins, pw);
- e_layout_pack(pd->o_layout, pw->o_window);
-
- ec_above = e_util_desk_client_above(pw->client);
- if (ec_above)
- pw2 = _pager_desk_window_find(pd, ec_above);
- if (pw2)
- e_layout_child_lower_below(pw->o_window, pw2->o_window);
- else
- e_layout_child_raise(pw->o_window);
-
- _pager_window_move(pw);
- }
- }
- /* the client isn't in this pager at all - it must have moved zones */
- else
- {
- if (!ec->sticky)
- {
- /* find the pager desk it needs to go to */
- pd = _pager_desk_find(pager, ec->desk);
- if ((pd) && (!_pager_desk_window_find(pd, ec)))
- {
- /* create it and add it */
- pw = _pager_window_new(pd, NULL, ec);
- if (pw)
- {
- Pager_Win *pw2 = NULL;
- E_Client *ec_above;
-
- pd->wins = eina_list_append(pd->wins, pw);
- ec_above = e_util_desk_client_above(pw->client);
- if (ec_above)
- pw2 = _pager_desk_window_find(pd, ec_above);
- if (pw2)
- e_layout_child_lower_below(pw->o_window, pw2->o_window);
- else
- e_layout_child_raise(pw->o_window);
- _pager_window_move(pw);
- }
- }
- }
- else
- {
- /* go through all desks */
- EINA_LIST_FOREACH(pager->desks, l, pd)
- {
- /* create it and add it */
- if (_pager_desk_window_find(pd, ec)) continue;
- pw = _pager_window_new(pd, NULL, ec);
- if (pw)
- {
- Pager_Win *pw2 = NULL;
- E_Client *ec_above;
-
- pd->wins = eina_list_append(pd->wins, pw);
- ec_above = e_util_desk_client_above(pw->client);
- if (ec_above)
- pw2 = _pager_desk_window_find(pd, ec_above);
- if (pw2)
- e_layout_child_lower_below(pw->o_window, pw2->o_window);
- else
- e_layout_child_raise(pw->o_window);
- _pager_window_move(pw);
- }
- }
- }
- }
-}
-
-static Eina_Bool
-_pager_cb_event_client_desk_set(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client_Desk_Set *ev = event;
- Eina_List *l;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- _pager_window_desk_change(p, ev->ec);
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_stack(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client *ev = event;
- Eina_List *l;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Eina_List *l2;
- Pager_Desk *pd;
-
- if (p->zone != ev->ec->zone) continue;
- EINA_LIST_FOREACH(p->desks, l2, pd)
- {
- Pager_Win *pw, *pw2 = NULL;
-
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw)
- {
- E_Client *ec;
-
- ec = e_util_desk_client_below(ev->ec);
- if (ec) pw2 = _pager_desk_window_find(pd, ec);
- if (pw2)
- {
- e_layout_child_raise_above(pw->o_window, pw2->o_window);
- continue;
- }
- ec = e_util_desk_client_above(ev->ec);
- if (ec) pw2 = _pager_desk_window_find(pd, ec);
- if (pw2)
- {
- e_layout_child_lower_below(pw->o_window, pw2->o_window);
- continue;
- }
- }
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_icon_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client_Property *ev = event;
- Eina_List *l;
- Pager *p;
-
- if (!(ev->property & E_CLIENT_PROPERTY_ICON)) return ECORE_CALLBACK_RENEW;
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Eina_List *l2;
- Pager_Desk *pd;
-
- if (p->zone != ev->ec->zone) continue;
- EINA_LIST_FOREACH(p->desks, l2, pd)
- {
- Pager_Win *pw;
-
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw)
- {
- Evas_Object *o;
-
- if (pw->o_icon)
- {
- evas_object_del(pw->o_icon);
- pw->o_icon = NULL;
- }
- o = e_client_icon_add(ev->ec,
- evas_object_evas_get(p->o_table));
- if (o)
- {
- pw->o_icon = o;
- evas_object_show(o);
- edje_object_part_swallow(pw->o_window,
- "e.swallow.icon", o);
- }
- }
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_focus_in(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client *ev = event;
- Pager *pager;
- Eina_List *l, *l2;
- Pager_Popup *pp;
- Pager_Desk *pd;
- Pager_Win *pw;
- E_Zone *zone;
-
- zone = ev->ec->zone;
-
- EINA_LIST_FOREACH(pagers, l, pager)
- {
- if (pager->zone != zone) continue;
-
- EINA_LIST_FOREACH(pager->desks, l2, pd)
- {
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw)
- {
- edje_object_signal_emit(pw->o_window,
- "e,state,focused", "e");
- break;
- }
- }
- }
-
- pp = _pager_popup_find(zone);
- if (!pp) return ECORE_CALLBACK_PASS_ON;
-
- EINA_LIST_FOREACH(pp->pager->desks, l, pd)
- {
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw)
- {
- edje_object_signal_emit(pw->o_window,
- "e,state,focused", "e");
- break;
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_focus_out(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client *ev = event;
- Pager *pager;
- Pager_Popup *pp;
- Pager_Desk *pd;
- Pager_Win *pw;
- E_Zone *zone;
- Eina_List *l;
-
- zone = ev->ec->zone;
-
- EINA_LIST_FOREACH(pagers, l, pager)
- {
- Eina_List *l2;
-
- if (pager->zone != zone) continue;
-
- EINA_LIST_FOREACH(pager->desks, l2, pd)
- {
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw)
- {
- edje_object_signal_emit(pw->o_window,
- "e,state,unfocused", "e");
- break;
- }
- }
- }
-
- pp = _pager_popup_find(zone);
- if (!pp) return ECORE_CALLBACK_PASS_ON;
-
- EINA_LIST_FOREACH(pp->pager->desks, l, pd)
- {
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw)
- {
- edje_object_signal_emit(pw->o_window,
- "e,state,unfocused", "e");
- break;
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_property(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Client_Property *ev = event;
- Eina_List *l, *l2;
- int found = 0;
- Pager *p;
- Pager_Win *pw;
- Pager_Desk *pd;
-
- if (!(ev->property & E_CLIENT_PROPERTY_NETWM_STATE)) return ECORE_CALLBACK_RENEW;
- EINA_LIST_FOREACH(pagers, l, p)
- {
- if (p->zone != ev->ec->zone) continue;
-
- EINA_LIST_FOREACH(p->desks, l2, pd)
- {
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw)
- {
- found = 1;
- if (ev->ec->netwm.state.skip_pager)
- {
- pd->wins = eina_list_remove(pd->wins, pw);
- _pager_window_free(pw);
- }
- }
- }
- }
- if (found) return ECORE_CALLBACK_PASS_ON;
-
- /* If we did not find this window in the pager, then add it because
- * the skip_pager state may have changed to 1 */
- EINA_LIST_FOREACH(pagers, l, p)
- {
- if ((p->zone != ev->ec->zone) ||
- (_pager_window_find(p, ev->ec)))
- continue;
- if (!ev->ec->sticky)
- {
- pd = _pager_desk_find(p, ev->ec->desk);
- if ((pd) && (!_pager_desk_window_find(pd, ev->ec)))
- {
- pw = _pager_window_new(pd, NULL, ev->ec);
- if (pw)
- {
- Pager_Win *pw2 = NULL;
- E_Client *ec;
-
- pd->wins = eina_list_append(pd->wins, pw);
- ec = e_util_desk_client_above(pw->client);
- if (ec)
- pw2 = _pager_desk_window_find(pd, ec);
- if (pw2)
- e_layout_child_lower_below(pw->o_window, pw2->o_window);
- else
- e_layout_child_raise(pw->o_window);
- _pager_window_move(pw);
- }
- }
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_zone_desk_count_set(void *data EINA_UNUSED, int type EINA_UNUSED, E_Event_Zone_Desk_Count_Set *ev)
-{
- Eina_List *l;
- Pager *p;
- int xx, yy;
-
- xx = ev->zone->desk_x_count;
- yy = ev->zone->desk_y_count;
- EINA_LIST_FOREACH(pagers, l, p)
- {
- if ((xx == p->xnum) && (yy == p->ynum)) continue;
- _pager_empty(p);
- _pager_fill(p);
- if (p->inst) _pager_orient(p->inst, e_gadget_site_orient_get(e_gadget_site_get(p->inst->o_pager)));
- }
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_desk_show(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Desk_Show *ev = event;
- Eina_List *l;
- Pager *p;
- Pager_Popup *pp;
- Pager_Desk *pd;
-
- if (!pagers)
- return ECORE_CALLBACK_PASS_ON;
-
- EINA_LIST_FOREACH(pagers, l, p)
- {
- if (p->zone != ev->desk->zone) continue;
- pd = _pager_desk_find(p, ev->desk);
- if (pd) _pager_desk_select(pd);
-
- if (p->popup)
- edje_object_part_text_set(p->popup->o_bg, "e.text.label", ev->desk->name);
- }
-
- if ((pager_config->popup) && (!act_popup))
- {
- if ((pp = _pager_popup_find(ev->desk->zone)))
- evas_object_show(pp->popup);
- else
- pp = pager_popup_new(0);
- if (pp->timer)
- ecore_timer_loop_reset(pp->timer);
- else
- pp->timer = ecore_timer_loop_add(pager_config->popup_speed,
- _pager_popup_cb_timeout, pp);
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_desk_name_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- E_Event_Desk_Name_Change *ev = event;
- Eina_List *l;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Pager_Desk *pd;
-
- if (p->zone != ev->desk->zone) continue;
- pd = _pager_desk_find(p, ev->desk);
- if (pager_config->show_desk_names)
- {
- if (pd)
- edje_object_part_text_set(pd->o_desk, "e.text.label",
- ev->desk->name);
- }
- else
- {
- if (pd)
- edje_object_part_text_set(pd->o_desk, "e.text.label", "");
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_client_urgent_change(void *data EINA_UNUSED, int type EINA_UNUSED, E_Event_Client_Property *ev)
-{
- Eina_List *l, *l2;
- Pager *p;
- Pager_Desk *pd;
- Pager_Win *pw;
-
- if (!(ev->property & E_CLIENT_PROPERTY_URGENCY)) return ECORE_CALLBACK_RENEW;
- if (!pagers) return ECORE_CALLBACK_RENEW;
-
- if (pager_config->popup_urgent && (!e_client_util_desk_visible(ev->ec, e_desk_current_get(ev->ec->zone))) &&
- (pager_config->popup_urgent_focus ||
- (!pager_config->popup_urgent_focus && (!ev->ec->focused) && (!ev->ec->want_focus))))
- {
- Pager_Popup *pp;
-
- pp = _pager_popup_find(ev->ec->zone);
-
- if ((!pp) && (ev->ec->urgent || ev->ec->icccm.urgent) && (!ev->ec->iconic))
- {
- pp = pager_popup_new(0);
- if (!pp) return ECORE_CALLBACK_RENEW;
-
- if (!pager_config->popup_urgent_stick)
- pp->timer = ecore_timer_loop_add(pager_config->popup_urgent_speed,
- _pager_popup_cb_timeout, pp);
- pp->urgent = 1;
- }
- }
- EINA_LIST_FOREACH(pagers, l, p)
- {
- if (p->zone != ev->ec->zone) continue;
-
- EINA_LIST_FOREACH(p->desks, l2, pd)
- {
- pw = _pager_desk_window_find(pd, ev->ec);
- if (pw)
- {
- if (ev->ec->urgent)
- {
- if (!(ev->ec->iconic))
- {
- if ((pd->pager) && (pd->pager->inst) &&
- (!pager_config->popup_urgent))
- edje_object_signal_emit(pd->o_desk,
- "e,state,urgent", "e");
- }
- edje_object_signal_emit(pw->o_window,
- "e,state,urgent", "e");
- }
- else
- {
- if (!(ev->ec->iconic))
- edje_object_signal_emit(pd->o_desk,
- "e,state,not_urgent", "e");
- edje_object_signal_emit(pw->o_window,
- "e,state,not_urgent", "e");
- }
- }
- }
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_pager_cb_event_compositor_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- Eina_List *l;
- Pager *p;
-
- EINA_LIST_FOREACH(pagers, l, p)
- {
- Eina_List *l2;
- Pager_Desk *pd;
-
- EINA_LIST_FOREACH(p->desks, l2, pd)
- e_layout_virtual_size_set(pd->o_layout, pd->desk->zone->w,
- pd->desk->zone->h);
-
- if (p->inst) _pager_orient(p->inst, e_gadget_site_orient_get(e_gadget_site_get(p->inst->o_pager)));
- /* TODO if (p->popup) */
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_cb_event_powersave_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- if (!pager_config->plain)
- return ECORE_CALLBACK_PASS_ON;
-
- _pager_cb_config_gadget_updated(EINA_TRUE);
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static void
-_pager_window_move(Pager_Win *pw)
-{
- e_layout_child_move(pw->o_window,
- pw->client->x - pw->client->zone->x,
- pw->client->y - pw->client->zone->y);
- e_layout_child_resize(pw->o_window, pw->client->w, pw->client->h);
-}
-
-static void
-_pager_window_cb_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Pager_Win *pw = data;
-
- pw->desk->wins = eina_list_remove(pw->desk->wins, pw);
- _pager_window_free(data);
-}
-
-static void
-_pager_window_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Event_Mouse_Up *ev = event_info;
- Pager_Win *pw = data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
- {
- pw->drag.button = 0;
- return;
- }
- pw->drag.button = 0;
- if (_pager_check_modifiers(ev->modifiers)) return;
-
- evas_object_smart_callback_call(e_gadget_site_get(pw->desk->pager->inst->o_pager), "gadget_site_unlocked", NULL);
-}
-
-static void
-_pager_window_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Event_Mouse_Down *ev = event_info;
- Pager_Win *pw;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_pager_check_modifiers(ev->modifiers)) return;
-
- pw = data;
-
- if (!pw) return;
- pw->desk->pager->active_drag_client = NULL;
- if (pw->desk->pager->popup && !act_popup) return;
- if (!pw->desk->pager->popup && ev->button == 3) return;
- if (e_client_util_ignored_get(pw->client) || e_client_util_is_popup(pw->client)) return;
- if (ev->button == (int)pager_config->btn_desk) return;
- if ((ev->button == (int)pager_config->btn_drag) ||
- (ev->button == (int)pager_config->btn_noplace))
- {
- Evas_Coord ox, oy;
- if ((pw->desk->pager->plain) || (pager_config->permanent_plain))
- evas_object_geometry_get(pw->o_window, &ox, &oy, NULL, NULL);
- else
- evas_object_geometry_get(pw->o_mirror, &ox, &oy, NULL, NULL);
- pw->drag.in_pager = 1;
- pw->drag.x = ev->canvas.x;
- pw->drag.y = ev->canvas.y;
- pw->drag.dx = ox - ev->canvas.x;
- pw->drag.dy = oy - ev->canvas.y;
- pw->drag.start = 1;
- pw->drag.button = ev->button;
- pw->desk->pager->active_drag_client = pw->client;
- evas_object_smart_callback_call(e_gadget_site_get(pw->desk->pager->inst->o_pager), "gadget_site_locked", NULL);
- }
-}
-
-static void
-_pager_window_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Event_Mouse_Move *ev = event_info;
- Pager_Win *pw;
- E_Drag *drag;
- Evas_Object *o, *oo = NULL;
- Evas_Coord x, y, w, h;
- const char *drag_types[] =
- { "enlightenment/pager_win", "enlightenment/border" };
- pw = data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_pager_check_modifiers(ev->modifiers)) return;
- if (!pw) return;
- if (pw->client->lock_user_location) return;
- if ((pw->desk->pager->popup) && (!act_popup)) return;
- if (!pw->drag.button) return;
-
- /* prevent drag for a few pixels */
- if (!pw->drag.start) return;
-
- if (!is_dragged(pw->drag.x - ev->cur.output.x,
- pw->drag.y - ev->cur.output.y)) return;
-
- pw->desk->pager->dragging = 1;
- pw->drag.start = 0;
- e_comp_object_effect_clip(pw->client->frame);
- edje_object_signal_emit(pw->desk->o_desk, "e,action,drag,in", "e");
-
- if ((pw->desk->pager->plain) || (pager_config->permanent_plain))
- {
- evas_object_geometry_get(pw->o_window, &x, &y, &w, &h);
- evas_object_hide(pw->o_window);
- }
- else
- {
- evas_object_geometry_get(pw->o_mirror, &x, &y, &w, &h);
- evas_object_hide(pw->o_mirror);
- }
- drag = e_drag_new(x, y, drag_types, 2, pw->desk->pager, -1,
- _pager_window_cb_drag_convert,
- _pager_window_cb_drag_finished);
- drag->button_mask = evas_pointer_button_down_mask_get(e_comp->evas);
- evas_object_raise(pw->client->frame);
- if ((pw->desk->pager->plain) || (pager_config->permanent_plain))
- {
- o = edje_object_add(drag->evas);
- e_theme_edje_object_set(o, "base/theme/gadgets/pager/plain",
- "e/gadget/pager/plain/window");
- evas_object_show(o);
-
- oo = e_client_icon_add(pw->client, drag->evas);
- if (oo)
- {
- evas_object_show(oo);
- edje_object_part_swallow(o, "e.swallow.icon", oo);
- }
- }
- else
- {
- /* this is independent of the original mirror */
- o = e_deskmirror_mirror_copy(pw->o_mirror);
- evas_object_show(o);
- }
- e_drag_object_set(drag, o);
- e_drag_resize(drag, w, h);
- e_drag_show(drag);
- e_drag_start(drag, x - pw->drag.dx, y - pw->drag.dy);
- if (oo)
- e_comp_object_util_del_list_append(drag->comp_object, oo);
-}
-
-static void *
-_pager_window_cb_drag_convert(E_Drag *drag, const char *type)
-{
- Pager *p;
-
- p = drag->data;
- if (!strcmp(type, "enlightenment/pager_win")) return _pager_window_find(p, p->active_drag_client);
- if (!strcmp(type, "enlightenment/border")) return p->active_drag_client;
- return NULL;
-}
-
-static void
-_pager_window_cb_drag_finished(E_Drag *drag, int dropped)
-{
- Pager_Win *pw;
- Pager *p;
- p = drag->data;
- if (!p) return;
- pw = _pager_window_find(p, p->active_drag_client);
- if (!pw) return;
- p->active_drag_client = NULL;
- if ((p->plain) || (pager_config->permanent_plain))
- evas_object_show(pw->o_window);
- else
- evas_object_show(pw->o_mirror);
- evas_object_smart_callback_call(e_gadget_site_get(pw->desk->pager->inst->o_pager), "gadget_site_unlocked", NULL);
- if (dropped)
- {
- /* be helpful */
- if (pw->client->desk->visible && (!e_client_focused_get()))
- evas_object_focus_set(pw->client->frame, 1);
- e_deskmirror_update_force(pw->desk->o_layout);
- }
- else
- {
- int dx, dy, x, y, zx, zy, zw, zh;
- E_Client *ec = pw->client;
-
- ec->hidden = !p->active_pd->desk->visible;
- e_client_desk_set(ec, p->active_pd->desk);
-
- dx = (ec->w / 2);
- dy = (ec->h / 2);
-
- evas_pointer_canvas_xy_get(evas_object_evas_get(p->o_table), &x, &y);
- e_zone_useful_geometry_get(p->zone, &zx, &zy, &zw, &zh);
-
- /* offset so that center of window is on mouse, but keep within desk bounds */
- if (dx < x)
- {
- x -= dx;
- if ((ec->w < zw) && (x + ec->w > zx + zw))
- x -= x + ec->w - (zx + zw);
- }
- else x = 0;
-
- if (dy < y)
- {
- y -= dy;
- if ((ec->h < zh) && (y + ec->h > zy + zh))
- y -= y + ec->h - (zy + zh);
- }
- else y = 0;
- evas_object_move(ec->frame, x, y);
-
- if (!(ec->lock_user_stacking)) evas_object_raise(ec->frame);
- evas_object_focus_set(ec->frame, 1);
- e_deskmirror_update_force(pw->desk->o_layout);
- }
- edje_object_signal_emit(pw->desk->o_desk, "e,action,drag,out", "e");
- if (!pw->drag.from_pager)
- {
- if (!pw->drag.start) p->just_dragged = 1;
- pw->drag.in_pager = 0;
- pw->drag.button = pw->drag.start = 0;
- p->dragging = 0;
- }
- if (pw->drag.from_pager) pw->drag.from_pager->dragging = 0;
- pw->drag.from_pager = NULL;
- e_comp_object_effect_unclip(pw->client->frame);
- if (act_popup)
- {
- if (e_comp->comp_type == E_PIXMAP_TYPE_X)
- e_grabinput_get(input_window, 0, input_window);
- else
- e_comp_grab_input(1, 1);
- if (!hold_count) _pager_popup_hide(1);
- }
-}
-
-static void
-_pager_update_drop_position(Pager *p, Pager_Desk *pd, Evas_Coord x, Evas_Coord y)
-{
- Pager_Win *pw = NULL;
-
- if ((p->plain) || (pager_config->permanent_plain))
- {
- if (pd)
- edje_object_signal_emit(pd->o_desk, "e,action,drag,in", "e");
- return;
- }
- if (pd)
- pw = _pager_desk_window_find(pd, p->active_drag_client);
- else
- pw = _pager_window_find(p, p->active_drag_client);
- if (!pw) return;
- if (pd)
- {
- int zx, zy, zw, zh, vx, vy, offx, offy;
- E_Client *ec = pw->client;
- E_Desk *old_desk = ec->desk;
- Eina_Bool was_focused = e_client_stack_focused_get(ec);
- E_Drag *drag = e_drag_current_get();
-
- pw->drag.in_pager = 1;
- //makes drags look weird
- //e_zone_useful_geometry_get(pd->desk->zone, &zx, &zy, &zw, &zh);
- zx = pd->desk->zone->x, zy = pd->desk->zone->y;
- zw = pd->desk->zone->w, zh = pd->desk->zone->h;
- e_deskmirror_coord_canvas_to_virtual(pd->o_layout,
- x, y, &vx, &vy);
- ec->hidden = !pd->desk->visible;
- e_client_desk_set(ec, pd->desk);
- offx = (ec->w / 2);
- offy = (ec->h / 2);
- if (drag)
- {
- if (drag->w > 0) offx = ((drag->dx) * ec->w) / drag->w;
- if (drag->h > 0) offy = ((drag->dy) * ec->h) / drag->h;
- }
- x = E_CLAMP(vx + zx - offx, zx, zx + zw - ec->w);
- y = E_CLAMP(vy + zy - offy, zy, zy + zh - ec->h);
- evas_object_move(ec->frame, x, y);
- if (was_focused)
- e_desk_last_focused_focus(old_desk);
- }
- else
- {
- /* this prevents the desk from switching on drags */
- pw->drag.from_pager = pw->desk->pager;
- pw->drag.from_pager->dragging = 1;
- pw->drag.in_pager = 0;
- }
-}
-
-static void
-_pager_drop_cb_enter(void *data, const char *type EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Pager_Desk *pd = data;
-
- /* FIXME this fixes a segv, but the case is not easy
- * reproduceable. this makes no sense either since
- * the same 'pager' is passed to e_drop_handler_add
- * and it works without this almost all the time.
- * so this must be an issue with e_dnd code... i guess */
- if (act_popup) return;
- edje_object_signal_emit(pd->o_desk, "e,action,drag,in", "e");
-}
-
-static void
-_pager_drop_cb_move(void *data, const char *type EINA_UNUSED, void *event_info)
-{
- E_Event_Dnd_Move *ev;
- Pager_Desk *pd;
-
- ev = event_info;
- pd = data;
-
- if (act_popup) return;
- _pager_update_drop_position(pd->pager, pd, ev->x, ev->y);
-}
-
-static void
-_pager_drop_cb_leave(void *data, const char *type EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Pager_Desk *pd = data;
-
- if (act_popup) return;
- edje_object_signal_emit(pd->o_desk, "e,action,drag,out", "e");
-}
-
-static void
-_pager_drop_cb_drop(void *data, const char *type, void *event_info)
-{
- E_Event_Dnd_Drop *ev;
- Eina_List *l;
- Pager_Desk *pd, *pdd;
- Pager_Desk *pd2 = NULL;
- E_Client *ec = NULL;
- Pager_Win *pw = NULL;
- Evas_Coord wx, wy, wx2, wy2;
- Evas_Coord nx, ny;
- ev = event_info;
- pd = data;
-
- if (act_popup) return;
-
- if (pd)
- {
- if (!strcmp(type, "enlightenment/pager_win"))
- {
- pw = (Pager_Win *)(ev->data);
- if (pw)
- {
- ec = pw->client;
- }
- }
- else if (!strcmp(type, "enlightenment/border"))
- {
- ec = ev->data;
- if ((pd->pager->plain) || (pager_config->permanent_plain))
- {
- e_layout_coord_virtual_to_canvas(pd->o_layout, ec->x, ec->y,
- &wx, &wy);
- e_layout_coord_virtual_to_canvas(pd->o_layout, ec->x + ec->w,
- ec->y + ec->h, &wx2, &wy2);
- }
- else
- {
- e_deskmirror_coord_virtual_to_canvas(pd->o_layout, ec->x, ec->y,
- &wx, &wy);
- e_deskmirror_coord_virtual_to_canvas(pd->o_layout, ec->x + ec->w,
- ec->y + ec->h, &wx2, &wy2);
- }
- }
- else if (!strcmp(type, "enlightenment/vdesktop"))
- {
- pd2 = ev->data;
- if (!pd2) return;
- _pager_desk_switch(pd, pd2);
- }
- else
- return;
-
- if (ec)
- {
- E_Maximize max = ec->maximized;
- E_Fullscreen fs = ec->fullscreen_policy;
- Eina_Bool fullscreen = ec->fullscreen;
- E_Desk *old_desk = ec->desk;
- Eina_Bool was_focused = e_client_stack_focused_get(ec);
-
- if (ec->iconic) e_client_uniconify(ec);
- if (ec->maximized)
- e_client_unmaximize(ec, E_MAXIMIZE_BOTH);
- if (fullscreen) e_client_unfullscreen(ec);
- ec->hidden = 0;
- e_client_desk_set(ec, pd->desk);
- if (was_focused)
- e_desk_last_focused_focus(old_desk);
- evas_object_raise(ec->frame);
-
- if ((!max) && (!fullscreen))
- {
- E_Drag *drag = e_drag_current_get();
- int zx, zy, zw, zh, mx, my, offx, offy;
-
- if ((pd->pager->plain) || (pager_config->permanent_plain))
- {
- e_layout_coord_canvas_to_virtual(pd->o_layout,
- ev->x, ev->y,
- &nx, &ny);
- }
- else
- {
- e_deskmirror_coord_canvas_to_virtual(pd->o_layout,
- ev->x, ev->y,
- &nx, &ny);
- }
- e_zone_useful_geometry_get(pd->desk->zone,
- &zx, &zy, &zw, &zh);
-
- offx = (ec->w / 2);
- offy = (ec->h / 2);
- if (drag)
- {
- if (drag->w > 0) offx = ((drag->dx) * ec->w) / drag->w;
- if (drag->h > 0) offy = ((drag->dy) * ec->h) / drag->h;
- }
- mx = E_CLAMP(nx + zx - offx, zx, zx + zw - ec->w);
- my = E_CLAMP(ny + zy - offy, zy, zy + zh - ec->h);
- evas_object_move(ec->frame, mx, my);
- }
- if (max) e_client_maximize(ec, max);
- if (fullscreen) e_client_fullscreen(ec, fs);
- e_deskmirror_update_force(pd->o_layout);
- }
- EINA_LIST_FOREACH(pd->pager->desks, l, pdd)
- {
- edje_object_signal_emit(pdd->o_desk, "e,action,drag,out", "e");
- }
- }
-}
-
-static void
-_pager_desk_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Event_Mouse_Down *ev = event_info;
- Pager_Desk *pd;
- Evas_Coord ox, oy;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_pager_check_modifiers(ev->modifiers)) return;
-
- pd = data;
- if (!pd) return;
- if ((!pd->pager->popup) && (ev->button == 3)) return;
- if (ev->button == (int)pager_config->btn_desk)
- {
- evas_object_geometry_get(pd->o_desk, &ox, &oy, NULL, NULL);
- pd->drag.start = 1;
- pd->drag.in_pager = 1;
- pd->drag.dx = ox - ev->canvas.x;
- pd->drag.dy = oy - ev->canvas.y;
- pd->drag.x = ev->canvas.x;
- pd->drag.y = ev->canvas.y;
- pd->drag.button = ev->button;
- evas_object_smart_callback_call(e_gadget_site_get(pd->pager->inst->o_pager), "gadget_site_locked", NULL);
- }
- else
- {
- pd->drag.dx = pd->drag.dy = pd->drag.x = pd->drag.y = 0;
- }
- pd->pager->just_dragged = 0;
-}
-
-static void
-_pager_desk_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Event_Mouse_Up *ev = event_info;
- Pager_Desk *pd;
- Pager *p;
-
- pd = data;
-
- if (!pd) return;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
- {
- pd->drag.start = 0;
- pd->drag.in_pager = 0;
- return;
- }
- if (_pager_check_modifiers(ev->modifiers)) return;
-
- p = pd->pager;
-
- /* FIXME: pd->pager->dragging is 0 when finishing a drag from desk to desk */
- if ((ev->button == 1) && (!pd->pager->dragging) &&
- (!pd->pager->just_dragged))
- {
- current_desk = pd->desk;
- e_desk_show(pd->desk);
- pd->drag.start = 0;
- pd->drag.in_pager = 0;
- }
- else if (ev->button == (int)pager_config->btn_desk)
- {
- if (pd->pager->dragging) pd->pager->dragging = 0;
- pd->drag.start = 0;
- pd->drag.in_pager = 0;
- evas_object_smart_callback_call(e_gadget_site_get(p->inst->o_pager), "gadget_site_unlocked", NULL);
- }
-
- if ((p->popup) && (p->popup->urgent)) _pager_popup_free(p->popup);
-}
-
-static void
-_pager_desk_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Event_Mouse_Move *ev = event_info;
- Pager_Desk *pd;
- E_Drag *drag;
- Evas_Object *o;
- Evas_Coord x, y, w, h;
- const char *drag_types[] = { "enlightenment/vdesktop" };
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_pager_check_modifiers(ev->modifiers)) return;
-
- pd = data;
- if (!pd) return;
- /* prevent drag for a few pixels */
- if (pd->drag.start)
- {
- if (!is_dragged(pd->drag.x - ev->cur.output.x,
- pd->drag.y - ev->cur.output.y)) return;
- if (pd->pager) pd->pager->dragging = 1;
- pd->drag.start = 0;
- }
-
- if (pd->drag.in_pager && pd->pager)
- {
- evas_object_geometry_get(pd->o_desk, &x, &y, &w, &h);
- drag = e_drag_new(x, y, drag_types, 1, pd, -1,
- NULL, _pager_desk_cb_drag_finished);
- drag->button_mask = evas_pointer_button_down_mask_get(e_comp->evas);
- /* redraw the desktop theme above */
- if ((pd->pager->plain) || (pager_config->permanent_plain))
- {
- o = edje_object_add(drag->evas);
- e_theme_edje_object_set(o, "base/theme/gadgets/pager",
- "e/gadget/pager/plain/desk");
- evas_object_show(o);
- }
- else
- {
- o = e_comp_object_util_mirror_add(pd->o_layout);
- }
- e_drag_object_set(drag, o);
-
- e_drag_resize(drag, w, h);
- e_drag_start(drag, x - pd->drag.dx, y - pd->drag.dy);
-
- pd->drag.from_pager = pd->pager;
- pd->drag.from_pager->dragging = 1;
- pd->drag.in_pager = 0;
- }
-}
-
-static void
-_pager_desk_cb_drag_finished(E_Drag *drag, int dropped)
-{
- Pager_Desk *pd;
- Pager_Desk *pd2 = NULL;
- Eina_List *l;
- E_Desk *desk;
- E_Zone *zone;
- Pager *p;
-
- pd = drag->data;
- if (!pd) return;
- evas_object_smart_callback_call(e_gadget_site_get(pd->pager->inst->o_pager), "gadget_site_unlocked", NULL);
- if (!dropped)
- {
- /* wasn't dropped on pager, switch with current desktop */
- if (!pd->desk) return;
- zone = e_zone_current_get();
- desk = e_desk_current_get(zone);
- EINA_LIST_FOREACH(pagers, l, p)
- {
- pd2 = _pager_desk_find(p, desk);
- if (pd2) break;
- }
- _pager_desk_switch(pd, pd2);
- }
- if (pd->drag.from_pager)
- {
- pd->drag.from_pager->dragging = 0;
- pd->drag.from_pager->just_dragged = 0;
- }
- edje_object_signal_emit(pd->o_desk, "e,action,drag,out", "e");
- pd->drag.from_pager = NULL;
-
- if (act_popup)
- {
- if (e_comp->comp_type == E_PIXMAP_TYPE_X)
- e_grabinput_get(input_window, 0, input_window);
- else
- e_comp_grab_input(1, 1);
- if (!hold_count) _pager_popup_hide(1);
- }
-}
-
-static void
-_pager_desk_cb_mouse_wheel(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Event_Mouse_Wheel *ev = event_info;
- Pager_Desk *pd;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (_pager_check_modifiers(ev->modifiers)) return;
-
- pd = data;
-
- if (pd->pager->popup) return;
-
- if (pager_config->flip_desk)
- e_zone_desk_linear_flip_by(pd->desk->zone, ev->z);
-}
-
-static Eina_Bool
-_pager_popup_cb_timeout(void *data)
-{
- Pager_Popup *pp;
-
- pp = data;
- pp->timer = NULL;
- _pager_popup_free(pp);
-
-#ifndef HAVE_WAYLAND_ONLY
- if (e_comp->comp_type == E_PIXMAP_TYPE_X)
- {
- if (input_window)
- {
- e_grabinput_release(input_window, input_window);
- ecore_x_window_free(input_window);
- input_window = 0;
- }
- }
-#endif
- if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
- {
- e_comp_ungrab_input(1, 1);
- input_window = 0;
- }
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-/************************************************************************/
-/* popup-on-keyaction functions */
-static int
-_pager_popup_show(void)
-{
- E_Zone *zone;
- int x, y, w, h;
- Pager_Popup *pp;
- //const char *drop[] =
- //{
- //"enlightenment/pager_win", "enlightenment/border",
- //"enlightenment/vdesktop"
- //};
-
- if ((act_popup) || (input_window)) return 0;
-
- zone = e_zone_current_get();
-
- pp = _pager_popup_find(zone);
- if (pp) _pager_popup_free(pp);
-
-#ifndef HAVE_WAYLAND_ONLY
- if (e_comp->comp_type == E_PIXMAP_TYPE_X)
- {
- input_window = ecore_x_window_input_new(e_comp->win, 0, 0, 1, 1);
- ecore_x_window_show(input_window);
- if (!e_grabinput_get(input_window, 0, input_window))
- {
- ecore_x_window_free(input_window);
- input_window = 0;
- return 0;
- }
- }
-#endif
- if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
- {
- input_window = e_comp->ee_win;
- e_comp_grab_input(1, 1);
- }
-
- handlers = eina_list_append
- (handlers, ecore_event_handler_add
- (ECORE_EVENT_KEY_DOWN, _pager_popup_cb_key_down, NULL));
- handlers = eina_list_append
- (handlers, ecore_event_handler_add
- (ECORE_EVENT_KEY_UP, _pager_popup_cb_key_up, NULL));
- handlers = eina_list_append
- (handlers, ecore_event_handler_add
- (ECORE_EVENT_MOUSE_WHEEL, _pager_popup_cb_mouse_wheel, NULL));
-
- act_popup = pager_popup_new(0);
-
- evas_object_geometry_get(act_popup->pager->o_table, &x, &y, &w, &h);
-
- current_desk = e_desk_current_get(zone);
-
- return 1;
-}
-
-static void
-_pager_popup_hide(int switch_desk)
-{
- hold_count = 0;
- hold_mod = 0;
- while (handlers)
- {
- ecore_event_handler_del(handlers->data);
- handlers = eina_list_remove_list(handlers, handlers);
- }
-
- act_popup->timer = ecore_timer_loop_add(0.1, _pager_popup_cb_timeout, act_popup);
-
- if ((switch_desk) && (current_desk)) e_desk_show(current_desk);
-
- act_popup = NULL;
-}
-
-static void
-_pager_popup_modifiers_set(int mod)
-{
- if (!act_popup) return;
- hold_mod = mod;
- hold_count = 0;
- if (hold_mod & ECORE_EVENT_MODIFIER_SHIFT) hold_count++;
- if (hold_mod & ECORE_EVENT_MODIFIER_CTRL) hold_count++;
- if (hold_mod & ECORE_EVENT_MODIFIER_ALT) hold_count++;
- if (hold_mod & ECORE_EVENT_MODIFIER_WIN) hold_count++;
-}
-
-static void
-_pager_popup_desk_switch(int x, int y)
-{
- int max_x, max_y, desk_x, desk_y;
- Pager_Desk *pd;
- Pager_Popup *pp = act_popup;
-
- e_zone_desk_count_get(pp->pager->zone, &max_x, &max_y);
-
- desk_x = current_desk->x + x;
- desk_y = current_desk->y + y;
-
- if (desk_x < 0)
- desk_x = max_x - 1;
- else if (desk_x >= max_x)
- desk_x = 0;
-
- if (desk_y < 0)
- desk_y = max_y - 1;
- else if (desk_y >= max_y)
- desk_y = 0;
-
- current_desk = e_desk_at_xy_get(pp->pager->zone, desk_x, desk_y);
-
- pd = _pager_desk_find(pp->pager, current_desk);
- if (pd) _pager_desk_select(pd);
-
- edje_object_part_text_set(pp->o_bg, "e.text.label", current_desk->name);
-}
-
-static void
-_pager_popup_cb_action_show(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED, Ecore_Event_Key *ev EINA_UNUSED)
-{
- if (_pager_popup_show())
- _pager_popup_modifiers_set(ev->modifiers);
-}
-
-static void
-_pager_popup_cb_action_switch(E_Object *obj EINA_UNUSED, const char *params, Ecore_Event_Key *ev)
-{
- int max_x, max_y, desk_x;
- int x = 0, y = 0;
-
- if (!act_popup)
- {
- if (_pager_popup_show())
- _pager_popup_modifiers_set(ev->modifiers);
- else
- return;
- }
-
- e_zone_desk_count_get(act_popup->pager->zone, &max_x, &max_y);
- desk_x = current_desk->x /* + x <=this is always 0 */;
-
- if (!strcmp(params, "left"))
- x = -1;
- else if (!strcmp(params, "right"))
- x = 1;
- else if (!strcmp(params, "up"))
- y = -1;
- else if (!strcmp(params, "down"))
- y = 1;
- else if (!strcmp(params, "next"))
- {
- x = 1;
- if (desk_x == max_x - 1)
- y = 1;
- }
- else if (!strcmp(params, "prev"))
- {
- x = -1;
- if (desk_x == 0)
- y = -1;
- }
-
- _pager_popup_desk_switch(x, y);
-}
-
-static Eina_Bool
-_pager_popup_cb_mouse_wheel(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- Ecore_Event_Mouse_Wheel *ev = event;
- Pager_Popup *pp = act_popup;
- int max_x;
-
- e_zone_desk_count_get(pp->pager->zone, &max_x, NULL);
-
- if (current_desk->x + ev->z >= max_x)
- _pager_popup_desk_switch(1, 1);
- else if (current_desk->x + ev->z < 0)
- _pager_popup_desk_switch(-1, -1);
- else
- _pager_popup_desk_switch(ev->z, 0);
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_popup_cb_key_down(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- Ecore_Event_Key *ev;
-
- ev = event;
- if (ev->window != input_window) return ECORE_CALLBACK_PASS_ON;
- if (!strcmp(ev->key, "Up"))
- _pager_popup_desk_switch(0, -1);
- else if (!strcmp(ev->key, "Down"))
- _pager_popup_desk_switch(0, 1);
- else if (!strcmp(ev->key, "Left"))
- _pager_popup_desk_switch(-1, 0);
- else if (!strcmp(ev->key, "Right"))
- _pager_popup_desk_switch(1, 0);
- else if (!strcmp(ev->key, "Escape"))
- _pager_popup_hide(0);
- else if ((!strcmp(ev->key, "Return")) || (!strcmp(ev->key, "KP_Enter")) ||
- (!strcmp(ev->key, "space")))
- {
- Pager_Popup *pp = act_popup;
-
- if (pp)
- {
- E_Desk *desk;
-
- desk = e_desk_at_xy_get(pp->pager->zone,
- current_desk->x, current_desk->y);
- if (desk) e_desk_show(desk);
- }
- _pager_popup_hide(0);
- }
- else
- {
- E_Config_Binding_Key *binding;
- Eina_List *l;
-
- EINA_LIST_FOREACH(e_bindings->key_bindings, l, binding)
- {
- E_Binding_Modifier mod = 0;
-
- if ((binding->action) && (strcmp(binding->action, "pager_gadget_switch")))
- continue;
-
- if (ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT)
- mod |= E_BINDING_MODIFIER_SHIFT;
- if (ev->modifiers & ECORE_EVENT_MODIFIER_CTRL)
- mod |= E_BINDING_MODIFIER_CTRL;
- if (ev->modifiers & ECORE_EVENT_MODIFIER_ALT)
- mod |= E_BINDING_MODIFIER_ALT;
- if (ev->modifiers & ECORE_EVENT_MODIFIER_WIN)
- mod |= E_BINDING_MODIFIER_WIN;
-
- if (binding->key && (!strcmp(binding->key, ev->key)) &&
- ((binding->modifiers == mod)))
- {
- E_Action *act;
-
- act = e_action_find(binding->action);
-
- if (act)
- {
- if (act->func.go_key)
- act->func.go_key(NULL, binding->params, ev);
- }
- }
- }
- }
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_pager_popup_cb_key_up(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- Ecore_Event_Key *ev;
-
- ev = event;
- if (!(act_popup)) return ECORE_CALLBACK_PASS_ON;
-
- if (hold_mod)
- {
- if ((hold_mod & ECORE_EVENT_MODIFIER_SHIFT) &&
- (!strcmp(ev->key, "Shift_L"))) hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_SHIFT) &&
- (!strcmp(ev->key, "Shift_R")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_CTRL) &&
- (!strcmp(ev->key, "Control_L")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_CTRL) &&
- (!strcmp(ev->key, "Control_R")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_ALT) &&
- (!strcmp(ev->key, "Alt_L")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_ALT) &&
- (!strcmp(ev->key, "Alt_R")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_ALT) &&
- (!strcmp(ev->key, "Meta_L")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_ALT) &&
- (!strcmp(ev->key, "Meta_R")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_ALT) &&
- (!strcmp(ev->key, "Super_L")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_ALT) &&
- (!strcmp(ev->key, "Super_R")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_WIN) &&
- (!strcmp(ev->key, "Super_L")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_WIN) &&
- (!strcmp(ev->key, "Super_R")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_WIN) &&
- (!strcmp(ev->key, "Mode_switch")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_WIN) &&
- (!strcmp(ev->key, "Meta_L")))
- hold_count--;
- else if ((hold_mod & ECORE_EVENT_MODIFIER_WIN) &&
- (!strcmp(ev->key, "Meta_R")))
- hold_count--;
- if ((hold_count <= 0) && (!act_popup->pager->dragging))
- {
- _pager_popup_hide(1);
- return ECORE_CALLBACK_PASS_ON;
- }
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static void
-pager_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- _pager_free(inst->pager);
- ginstances = eina_list_remove(ginstances, inst);
- free(inst);
-}
-
-EINTERN Evas_Object *
-pager_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNUSED)
-{
- Pager *p;
- Evas_Object *o;
- Instance *inst;
-
- if (e_gadget_site_is_desklock(parent)) return NULL;
- if (*id == 0) *id = 1;
- inst = E_NEW(Instance, 1);
- p = _pager_new(evas_object_evas_get(parent), EINA_FALSE);
- p->inst = inst;
- inst->pager = p;
- o = p->o_table;
- inst->o_pager = o;
- _pager_orient(inst, e_gadget_site_orient_get(parent));
-
- evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, pager_del, inst);
- evas_object_smart_callback_add(parent, "gadget_created", _pager_gadget_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_site_anchor", _pager_gadget_anchor_change_cb, inst);
- evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, _pager_cb_move, inst);
- evas_object_event_callback_add(o, EVAS_CALLBACK_SHOW,
- _pager_cb_obj_show, inst);
- evas_object_event_callback_add(o, EVAS_CALLBACK_HIDE,
- _pager_cb_obj_hide, inst);
- ginstances = eina_list_append(ginstances, inst);
- return inst->o_pager;
-}
-
-EINTERN void
-pager_init(void)
-{
- E_LIST_HANDLER_APPEND(ghandlers, E_EVENT_ZONE_DESK_COUNT_SET, _pager_cb_event_zone_desk_count_set, NULL);
- E_LIST_HANDLER_APPEND(ghandlers, E_EVENT_DESK_SHOW, _pager_cb_event_desk_show, NULL);
- E_LIST_HANDLER_APPEND(ghandlers, E_EVENT_DESK_NAME_CHANGE, _pager_cb_event_desk_name_change, NULL);
- E_LIST_HANDLER_APPEND(ghandlers, E_EVENT_COMPOSITOR_UPDATE, _pager_cb_event_compositor_resize, NULL);
- E_LIST_HANDLER_APPEND(ghandlers, E_EVENT_CLIENT_PROPERTY, _pager_cb_event_client_urgent_change, NULL);
- E_LIST_HANDLER_APPEND(ghandlers, E_EVENT_POWERSAVE_UPDATE, _pager_cb_event_powersave_change, NULL);
-
- act_popup_show = e_action_add("pager_gadget_show");
- if (act_popup_show)
- {
- act_popup_show->func.go_key = _pager_popup_cb_action_show;
- e_action_predef_name_set(N_("Pager Gadget"), N_("Show Pager Popup"),
- "pager_gadget_show", "<none>", NULL, 0);
- }
- act_popup_switch = e_action_add("pager_gadget_switch");
- if (act_popup_switch)
- {
- act_popup_switch->func.go_key = _pager_popup_cb_action_switch;
- e_action_predef_name_set(N_("Pager Gadget"), N_("Popup Desk Right"),
- "pager_gadget_switch", "right", NULL, 0);
- e_action_predef_name_set(N_("Pager Gadget"), N_("Popup Desk Left"),
- "pager_gadget_switch", "left", NULL, 0);
- e_action_predef_name_set(N_("Pager Gadget"), N_("Popup Desk Up"),
- "pager_gadget_switch", "up", NULL, 0);
- e_action_predef_name_set(N_("Pager Gadget"), N_("Popup Desk Down"),
- "pager_gadget_switch", "down", NULL, 0);
- e_action_predef_name_set(N_("Pager Gadget"), N_("Popup Desk Next"),
- "pager_gadget_switch", "next", NULL, 0);
- e_action_predef_name_set(N_("Pager Gadget"), N_("Popup Desk Previous"),
- "pager_gadget_switch", "prev", NULL, 0);
- }
-}
-
diff --git a/src/modules/pager/gadget/pager.h b/src/modules/pager/gadget/pager.h
deleted file mode 100644
index c0f7c283b7..0000000000
--- a/src/modules/pager/gadget/pager.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef PAGER_H
-#define PAGER_H
-
-#include "e.h"
-
-EINTERN void *e_modapi_gadget_init(E_Module *m);
-EINTERN int e_modapi_gadget_shutdown(E_Module *m);
-EINTERN int e_modapi_gadget_save(E_Module *m);
-
-typedef struct _Config Config;
-struct _Config
-{
- unsigned int popup;
- double popup_speed;
- unsigned int popup_urgent;
- unsigned int popup_urgent_stick;
- unsigned int popup_urgent_focus;
- double popup_urgent_speed;
- unsigned int show_desk_names;
- int popup_act_height;
- int popup_height;
- unsigned int drag_resist;
- unsigned int btn_drag;
- unsigned int btn_noplace;
- unsigned int btn_desk;
- unsigned int flip_desk;
- unsigned int plain;
- unsigned int permanent_plain;
-};
-
-EINTERN Evas_Object *pager_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN Evas_Object *config_pager(E_Zone *zone);
-EINTERN void pager_init(void);
-EINTERN void _pager_cb_config_gadget_updated(Eina_Bool style_changed);
-EINTERN void _pager_cb_config_updated(void);
-
-EINTERN extern Config *pager_config;
-EINTERN extern Evas_Object *cfg_dialog;
-EINTERN extern Eina_List *ginstances, *ghandlers, *phandlers;
-/**
- * @addtogroup Optional_Gadgets
- * @{
- *
- * @defgroup Module_Pager Virtual Desktop Pager
- *
- * Shows the grid of virtual desktops and allows changing between
- * them.
- *
- * @}
- */
-#endif
diff --git a/src/modules/pager/meson.build b/src/modules/pager/meson.build
index dad8fa4ea7..b42668d41b 100644
--- a/src/modules/pager/meson.build
+++ b/src/modules/pager/meson.build
@@ -1,9 +1,5 @@
src = files(
'e_mod_main.c',
'e_mod_config.c',
- 'e_mod_main.h',
- 'gadget/mod.c',
- 'gadget/pager.h',
- 'gadget/pager.c',
- 'gadget/config.c'
+ 'e_mod_main.h'
)
diff --git a/src/modules/start/e_mod_main.c b/src/modules/start/e_mod_main.c
index 52e9268306..ba4f8e3aa7 100644
--- a/src/modules/start/e_mod_main.c
+++ b/src/modules/start/e_mod_main.c
@@ -320,11 +320,8 @@ E_API E_Module_Api e_modapi =
E_API void *
e_modapi_init(E_Module *m)
{
- EINTERN Evas_Object *start_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-
start_module = m;
e_gadcon_provider_register(&_gadcon_class);
- e_gadget_type_add("Start", start_create, NULL);
return m;
}
@@ -333,7 +330,6 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
{
start_module = NULL;
e_gadcon_provider_unregister(&_gadcon_class);
- e_gadget_type_del("Start");
return 1;
}
diff --git a/src/modules/start/meson.build b/src/modules/start/meson.build
index 8ea716cc32..42119f40ed 100644
--- a/src/modules/start/meson.build
+++ b/src/modules/start/meson.build
@@ -1,4 +1,3 @@
src = files(
- 'e_mod_main.c',
- 'start.c'
+ 'e_mod_main.c'
)
diff --git a/src/modules/start/start.c b/src/modules/start/start.c
deleted file mode 100644
index 610e7fde26..0000000000
--- a/src/modules/start/start.c
+++ /dev/null
@@ -1,227 +0,0 @@
-#include "e.h"
-
-/* actual module specifics */
-typedef struct _Instance Instance;
-
-struct _Instance
-{
- Evas_Object *site;
- Evas_Object *o_button;
- E_Menu *main_menu;
-};
-
-static void
-do_orient(Instance *inst, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor anchor)
-{
- char buf[4096];
- const char *s = "float";
-
- if (anchor & E_GADGET_SITE_ANCHOR_LEFT)
- {
- if (anchor & E_GADGET_SITE_ANCHOR_TOP)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "top_left";
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "left_top";
- break;
- case E_GADGET_SITE_ORIENT_NONE:
- s = "left_top";
- break;
- }
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "bottom_left";
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "left_bottom";
- break;
- case E_GADGET_SITE_ORIENT_NONE:
- s = "left_bottom";
- break;
- }
- }
- else
- s = "left";
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_RIGHT)
- {
- if (anchor & E_GADGET_SITE_ANCHOR_TOP)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "top_right";
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "right_top";
- break;
- case E_GADGET_SITE_ORIENT_NONE:
- s = "right_top";
- break;
- }
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "bottom_right";
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "right_bottom";
- break;
- case E_GADGET_SITE_ORIENT_NONE:
- s = "right_bottom";
- break;
- }
- }
- else
- s = "right";
- }
- else if (anchor & E_GADGET_SITE_ANCHOR_TOP)
- s = "top";
- else if (anchor & E_GADGET_SITE_ANCHOR_BOTTOM)
- s = "bottom";
- else
- {
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- s = "horizontal";
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- s = "vertical";
- break;
- default: break;
- }
- }
- snprintf(buf, sizeof(buf), "e,state,orientation,%s", s);
- elm_layout_signal_emit(inst->o_button, buf, "e");
-}
-
-static void
-_menu_cb_post(void *data, E_Menu *m)
-{
- Instance *inst = data;
- Eina_Bool fin;
-
- if (stopping || (!inst->main_menu)) return;
- fin = m == inst->main_menu;
- e_object_del(E_OBJECT(m));
- if (!fin) return;
- elm_layout_signal_emit(inst->o_button, "e,state,unfocused", "e");
- inst->main_menu = NULL;
-}
-
-static void
-_button_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Instance *inst = data;
- Evas_Event_Mouse_Up *ev = event_info;
- Evas_Coord x, y, w, h;
- E_Gadget_Site_Anchor an;
- int dir = E_MENU_POP_DIRECTION_AUTO;
-
- if (ev->button != 1) return;
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
-
- evas_object_geometry_get(inst->o_button, &x, &y, &w, &h);
- if (!inst->main_menu)
- inst->main_menu = e_int_menus_main_new();
- if (!inst->main_menu) return;
- e_menu_post_deactivate_callback_set(inst->main_menu,
- _menu_cb_post, inst);
- an = e_gadget_site_anchor_get(e_gadget_site_get(inst->o_button));
- switch (e_gadget_site_orient_get(e_gadget_site_get(inst->o_button)))
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- if (an & E_GADGET_SITE_ANCHOR_TOP)
- dir = E_MENU_POP_DIRECTION_DOWN;
- else if (an & E_GADGET_SITE_ANCHOR_BOTTOM)
- dir = E_MENU_POP_DIRECTION_UP;
- break;
- case E_GADGET_SITE_ORIENT_VERTICAL:
- if (an & E_GADGET_SITE_ANCHOR_LEFT)
- dir = E_MENU_POP_DIRECTION_RIGHT;
- else if (an & E_GADGET_SITE_ANCHOR_RIGHT)
- dir = E_MENU_POP_DIRECTION_LEFT;
- break;
- default: break;
- }
- e_menu_activate_mouse(inst->main_menu,
- e_zone_current_get(),
- x, y, w, h, dir, ev->timestamp);
- evas_object_smart_callback_call(inst->o_button, "gadget_popup",
- inst->main_menu->container_object);
- elm_layout_signal_emit(inst->o_button, "e,state,focused", "e");
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
-}
-
-static void
-_anchor_change(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- do_orient(inst, e_gadget_site_orient_get(obj), e_gadget_site_anchor_get(obj));
-}
-
-static void
-start_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst->main_menu)
- {
- e_menu_post_deactivate_callback_set(inst->main_menu, NULL, NULL);
- e_object_del(E_OBJECT(inst->main_menu));
- }
- evas_object_smart_callback_del_full(inst->site, "gadget_site_anchor", _anchor_change, inst);
- free(inst);
-}
-
-static void
-_gadget_created(void *data, Evas_Object *obj, void *event_info)
-{
- Instance *inst = data;
-
- if (event_info != inst->o_button) return;
- do_orient(inst, e_gadget_site_orient_get(obj), e_gadget_site_anchor_get(obj));
- evas_object_smart_callback_del_full(obj, "gadget_created", _gadget_created, inst);
-}
-
-EINTERN Evas_Object *
-start_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Evas_Object *o;
- Instance *inst;
-
- if (e_gadget_site_is_desklock(parent)) return NULL;
- if (*id == 0) *id = 1;
- inst = E_NEW(Instance, 1);
- inst->site = parent;
-
- o = elm_layout_add(parent);
-
- e_theme_edje_object_set(o, NULL, "e/gadget/start/main");
- elm_layout_signal_emit(o, "e,state,unfocused", "e");
-
- inst->o_button = o;
- evas_object_size_hint_aspect_set(o, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
-
- evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP,
- _button_cb_mouse_up, inst);
- evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, start_del, inst);
- evas_object_smart_callback_add(parent, "gadget_site_anchor", _anchor_change, inst);
- evas_object_smart_callback_add(parent, "gadget_created", _gadget_created, inst);
- do_orient(inst, orient, e_gadget_site_anchor_get(parent));
-
- return o;
-}
diff --git a/src/modules/sysinfo/batman/batman.c b/src/modules/sysinfo/batman/batman.c
deleted file mode 100644
index 8a28f78bdd..0000000000
--- a/src/modules/sysinfo/batman/batman.c
+++ /dev/null
@@ -1,759 +0,0 @@
-#include "batman.h"
-
-EINTERN Eina_Bool upower;
-EINTERN Eina_List *batman_device_batteries;
-EINTERN Eina_List *batman_device_ac_adapters;
-EINTERN double batman_init_time;
-
-static Eina_Bool _batman_cb_warning_popup_timeout(void *data);
-static void _batman_cb_warning_popup_hide(void *data, Evas *e, Evas_Object *obj, void *event);
-static void _batman_warning_popup_destroy(Instance *inst);
-static void _batman_warning_popup(Instance *inst, int time, double percent);
-
-Eina_List *
-_batman_battery_find(const char *udi)
-{
- Eina_List *l;
- Battery *bat;
- Eina_List *batteries = NULL;
- EINA_LIST_FOREACH(batman_device_batteries, l, bat)
- { /* these are always stringshared */
- if (udi == bat->udi) batteries = eina_list_append(batteries, bat);
- }
-
- return batteries;
-}
-
-Eina_List *
-_batman_ac_adapter_find(const char *udi)
-{
- Eina_List *l;
- Ac_Adapter *ac;
- Eina_List *adapters = NULL;
- EINA_LIST_FOREACH(batman_device_ac_adapters, l, ac)
- { /* these are always stringshared */
- if (udi == ac->udi) adapters = eina_list_append(adapters, ac);
- }
-
- return adapters;
-}
-
-static void
-_batman_face_level_set(Evas_Object *battery, double level)
-{
- Edje_Message_Float msg;
-
- if (level < 0.0) level = 0.0;
- else if (level > 1.0)
- level = 1.0;
- msg.val = level;
- edje_object_message_send(elm_layout_edje_get(battery), EDJE_MESSAGE_FLOAT, 1, &msg);
-}
-
-static void
-_batman_popup_dismissed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- E_FREE_FUNC(obj, evas_object_del);
- inst->cfg->batman.popup = NULL;
-}
-
-static void
-_batman_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->cfg->batman.popup = NULL;
-}
-
-static Evas_Object *
-_batman_popup_create(Instance *inst)
-{
- Evas_Object *popup, *box, *pbar, *label;
- Battery *bat;
- Eina_List *l;
- char buf[128], buf2[128 + 100];
- int hrs = 0, mins = 0;
- Eina_List *udis = NULL;
-
- hrs = (inst->cfg->batman.time_left / 3600);
- mins = ((inst->cfg->batman.time_left) / 60 - (hrs * 60));
- if (mins < 0) mins = 0;
-
- popup = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(popup, "noblock");
- evas_object_smart_callback_add(popup, "dismissed",
- _batman_popup_dismissed, inst);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL,
- _batman_popup_deleted, inst);
-
- box = elm_box_add(popup);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box); E_FILL(box);
- elm_object_content_set(popup, box);
- evas_object_show(box);
-
- label = elm_label_add(box);
- E_EXPAND(label); E_ALIGN(label, 0.5, 0.5);
- elm_object_text_set(label, buf);
- elm_box_pack_end(box, label);
- evas_object_show(label);
-
- if (eina_list_count(batman_device_batteries) == 0)
- snprintf(buf, sizeof(buf), _("No Battery Found"));
- else if (inst->cfg->batman.have_power && (inst->cfg->batman.full < 99))
- snprintf(buf, sizeof(buf), _("Battery Charging"));
- else if (inst->cfg->batman.full >= 99)
- snprintf(buf, sizeof(buf), _("Battery Fully Charged"));
- else
- snprintf(buf, sizeof(buf), _("Time Remaining: %i:%02i"), hrs, mins);
- snprintf(buf2, sizeof(buf2), "<big><b>%s</b></big>", buf);
- elm_object_text_set(label, buf2);
-
- EINA_LIST_FOREACH(batman_device_batteries, l, bat)
- {
- if (!eina_list_count(udis) || !eina_list_data_find(udis, bat->udi))
- {
- udis = eina_list_append(udis, bat->udi);
- if (bat->vendor && bat->vendor[0] && bat->model && bat->model[0])
- {
- label = elm_label_add(box);
- E_EXPAND(label); E_ALIGN(label, 0.5, 0.5);
- snprintf(buf, sizeof(buf), "%s (%s)", bat->vendor, bat->model);
- elm_object_text_set(label, buf);
- elm_box_pack_end(box, label);
- evas_object_show(label);
- }
-
- pbar = elm_progressbar_add(box);
- E_EXPAND(pbar); E_FILL(pbar);
- elm_progressbar_span_size_set(pbar, 200 * e_scale);
- elm_progressbar_value_set(pbar, bat->percent / 100);
- elm_box_pack_end(box, pbar);
- evas_object_show(pbar);
- }
- }
- if (eina_list_count(udis))
- eina_list_free(udis);
- e_gadget_util_ctxpopup_place(inst->o_main, popup,
- inst->cfg->batman.o_gadget);
- evas_object_show(popup);
-
- return popup;
-}
-
-static Evas_Object *
-_batman_configure_cb(Evas_Object *g)
-{
- Instance *inst = evas_object_data_get(g, "Instance");
-
- if (!sysinfo_config) return NULL;
- if (inst->cfg->batman.popup) return NULL;
- return batman_configure(inst);
-}
-
-static void
-_batman_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Evas_Event_Mouse_Up *ev = event_data;
- Instance *inst = data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (ev->button == 1)
- {
- if (inst->cfg->batman.popup)
- elm_ctxpopup_dismiss(inst->cfg->batman.popup);
- else
- inst->cfg->batman.popup = _batman_popup_create(inst);
- }
-}
-
-static Eina_Bool
-_powersave_cb_config_update(void *data, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (!inst->cfg->batman.have_battery)
- e_powersave_mode_set(E_POWERSAVE_MODE_LOW);
- else
- {
- if (inst->cfg->batman.have_power)
- e_powersave_mode_set(E_POWERSAVE_MODE_LOW);
- else if (inst->cfg->batman.full > 95)
- e_powersave_mode_set(E_POWERSAVE_MODE_MEDIUM);
- else if (inst->cfg->batman.full > 30)
- e_powersave_mode_set(E_POWERSAVE_MODE_HIGH);
- else
- e_powersave_mode_set(E_POWERSAVE_MODE_EXTREME);
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-void
-_batman_update(Instance *inst, int full, int time_left, Eina_Bool have_battery, Eina_Bool have_power)
-{
- static double debounce_time = 0.0;
-
- if (!inst) return;
- if (!inst->cfg) return;
- if (inst->cfg->esm != E_SYSINFO_MODULE_BATMAN && inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
-
- if (have_power != inst->cfg->batman.have_power)
- {
- if (have_power && (full < 100))
- elm_layout_signal_emit(inst->cfg->batman.o_gadget,
- "e,state,charging",
- "e");
- else
- {
- elm_layout_signal_emit(inst->cfg->batman.o_gadget,
- "e,state,discharging",
- "e");
- if (inst->popup_battery)
- elm_layout_signal_emit(inst->popup_battery,
- "e,state,discharging", "e");
- }
- }
- if (have_battery)
- {
- if (inst->cfg->batman.full != full)
- {
- double val;
-
- if (full >= 100) val = 1.0;
- else val = (double)full / 100.0;
- _batman_face_level_set(inst->cfg->batman.o_gadget, val);
- if (inst->popup_battery)
- _batman_face_level_set(inst->popup_battery, val);
- }
- }
- else
- {
- _batman_face_level_set(inst->cfg->batman.o_gadget, 0.0);
- }
- if (have_battery &&
- (!have_power) &&
- (full < 100) &&
- (
- (
- (time_left > 0) &&
- inst->cfg->batman.alert &&
- ((time_left / 60) <= inst->cfg->batman.alert)
- ) ||
- (
- inst->cfg->batman.alert_p &&
- (full <= inst->cfg->batman.alert_p)
- )
- )
- )
- {
- double t;
-
- printf("-------------------------------------- bat warn .. why below\n");
- printf("have_battery = %i\n", (int)have_battery);
- printf("have_power = %i\n", (int)have_power);
- printf("full = %i\n", (int)full);
- printf("time_left = %i\n", (int)time_left);
- printf("inst->cfg->batman.alert = %i\n", (int)inst->cfg->batman.alert);
- printf("inst->cfg->batman.alert_p = %i\n", (int)inst->cfg->batman.alert_p);
- t = ecore_time_get();
- if ((t - debounce_time) > 30.0)
- {
- printf("t-debounce = %3.3f\n", (t - debounce_time));
- debounce_time = t;
- if ((t - batman_init_time) > 5.0)
- _batman_warning_popup(inst, time_left, (double)full / 100.0);
- }
- }
- else if (have_power || ((time_left / 60) > inst->cfg->batman.alert))
- _batman_warning_popup_destroy(inst);
- if ((have_battery) && (!have_power) && (full >= 0) &&
- (inst->cfg->batman.suspend_below > 0) &&
- (full < inst->cfg->batman.suspend_below))
- {
- if (inst->cfg->batman.suspend_method == SUSPEND)
- e_sys_action_do(E_SYS_SUSPEND, NULL);
- else if (inst->cfg->batman.suspend_method == HIBERNATE)
- e_sys_action_do(E_SYS_HIBERNATE, NULL);
- else if (inst->cfg->batman.suspend_method == SHUTDOWN)
- e_sys_action_do(E_SYS_HALT, NULL);
- }
- inst->cfg->batman.full = full;
- inst->cfg->batman.time_left = time_left;
- inst->cfg->batman.have_battery = have_battery;
- inst->cfg->batman.have_power = have_power;
-
- if (!have_battery)
- e_powersave_mode_set(E_POWERSAVE_MODE_LOW);
- else
- {
- if (have_power)
- e_powersave_mode_set(E_POWERSAVE_MODE_LOW);
- else if (full > 95)
- e_powersave_mode_set(E_POWERSAVE_MODE_MEDIUM);
- else if (full > 30)
- e_powersave_mode_set(E_POWERSAVE_MODE_HIGH);
- else
- e_powersave_mode_set(E_POWERSAVE_MODE_EXTREME);
- }
-}
-
-void
-_batman_device_update(Instance *inst)
-{
- Eina_List *l;
- Battery *bat;
- Ac_Adapter *ac;
- int full = -1;
- int time_left = -1;
- int have_battery = 0;
- int have_power = 0;
- int charging = 0;
-
- int batnum = 0;
- int acnum = 0;
-
- EINA_LIST_FOREACH(batman_device_ac_adapters, l, ac)
- {
- if (ac->present)
- {
- acnum++;
- have_power = 1;
- }
- }
-
- EINA_LIST_FOREACH(batman_device_batteries, l, bat)
- {
- if (!bat->got_prop)
- continue;
- have_battery = 1;
- batnum++;
- if (bat->charging == 1) have_power = 1;
- if (full == -1) full = 0;
- if (bat->percent >= 0)
- full += bat->percent;
- else if (bat->last_full_charge > 0)
- full += (bat->current_charge * 100) / bat->last_full_charge;
- else if (bat->design_charge > 0)
- full += (bat->current_charge * 100) / bat->design_charge;
- if (bat->time_left > 0)
- {
- if (time_left < 0) time_left = bat->time_left;
- else time_left += bat->time_left;
- }
- charging += bat->charging;
- }
-
- if ((batman_device_batteries) && (batnum == 0))
- return; /* not ready yet, no properties received for any battery */
-
- if (batnum > 0) full /= batnum;
- if ((full == 100) && have_power)
- {
- time_left = -1;
- }
- if (time_left < 1) time_left = -1;
-
- _batman_update(inst, full, time_left, have_battery, have_power);
-}
-
-static Eina_Bool
-_screensaver_on(void *data)
-{
-#if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__)
- Instance *inst = data;
-#else
- (void)data;
-#endif
-
-#if defined(HAVE_EEZE)
- _batman_udev_stop(inst);
-#elif defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__)
- _batman_sysctl_stop(inst);
-#elif defined(upower)
- _batman_upower_stop();
-#else
- _batman_fallback_stop();
-#endif
-
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_screensaver_off(void *data)
-{
- Instance *inst = data;
-
- _batman_config_updated(inst);
-
- return ECORE_CALLBACK_RENEW;
-}
-
-void
-_batman_config_updated(Instance *inst)
-{
- int ok = 0;
-
- if (!inst->cfg) return;
-
- if (inst->cfg->id == -1)
- {
- _batman_face_level_set(inst->cfg->batman.o_gadget, 1.0);
- return;
- }
- if ((inst->cfg->batman.force_mode == UNKNOWN) ||
- (inst->cfg->batman.force_mode == SUBSYSTEM))
- {
-#if defined(HAVE_EEZE)
- ok = _batman_udev_start(inst);
-#elif defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__)
- ok = _batman_sysctl_start(inst);
-#else
- ok = _batman_upower_start(inst);
- if (ok)
- upower = EINA_TRUE;
-#endif
- }
- if (ok) return;
-
- if ((inst->cfg->batman.force_mode == UNKNOWN) ||
- (inst->cfg->batman.force_mode == NOSUBSYSTEM))
- {
- ok = _batman_fallback_start(inst);
- }
-}
-
-static void
-_warning_popup_dismissed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- E_FREE_FUNC(inst->popup_battery, evas_object_del);
- E_FREE_FUNC(inst->warning, evas_object_del);
-}
-
-static Eina_Bool
-_batman_cb_warning_popup_timeout(void *data)
-{
- Instance *inst;
-
- inst = data;
- elm_ctxpopup_dismiss(inst->warning);
- inst->cfg->batman.alert_timer = NULL;
- return ECORE_CALLBACK_CANCEL;
-}
-
-static void
-_batman_cb_warning_popup_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
-{
- Instance *inst = NULL;
-
- inst = (Instance *)data;
- if ((!inst) || (!inst->warning)) return;
- evas_object_hide(inst->warning);
-}
-
-static void
-_batman_warning_popup_destroy(Instance *inst)
-{
- if (inst->cfg->batman.alert_timer)
- {
- ecore_timer_del(inst->cfg->batman.alert_timer);
- inst->cfg->batman.alert_timer = NULL;
- }
- if (!inst->warning) return;
- elm_ctxpopup_dismiss(inst->warning);
-}
-
-static void
-_batman_warning_popup_cb(void *data, unsigned int id)
-{
- Instance *inst = data;
-
- inst->notification_id = id;
-}
-
-static void
-_batman_warning_popup(Instance *inst, int t, double percent)
-{
- Evas_Object *popup_bg = NULL;
- int x, y, w, h;
- char buf[4096];
- int hrs = 0, mins = 0;
-
- if ((!inst) || (inst->warning)) return;
-
- hrs = (t / 3600);
- mins = ((t) / 60 - (hrs * 60));
- if (mins < 0) mins = 0;
- snprintf(buf, 4096, _("AC power is recommended. %i:%02i Remaining"), hrs, mins);
-
- if (inst->cfg->batman.desktop_notifications)
- {
- E_Notification_Notify n;
- memset(&n, 0, sizeof(E_Notification_Notify));
- n.app_name = _("Battery");
- n.replaces_id = 0;
- n.icon.icon = "battery-low";
- n.summary = _("Your battery is low!");
- n.body = buf;
- n.timeout = inst->cfg->batman.alert_timeout * 1000;
- e_notification_client_send(&n, _batman_warning_popup_cb, inst);
- return;
- }
-
- inst->warning = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(inst->warning, "noblock");
- evas_object_smart_callback_add(inst->warning, "dismissed", _warning_popup_dismissed, inst);
- if (!inst->warning) return;
-
- popup_bg = elm_layout_add(inst->warning);
- inst->popup_battery = elm_layout_add(popup_bg);
-
- if ((!popup_bg) || (!inst->popup_battery))
- {
- elm_ctxpopup_dismiss(inst->warning);
- inst->warning = NULL;
- return;
- }
-
- e_theme_edje_object_set(popup_bg, "base/theme/gadget/batman/popup",
- "e/gadget/batman/popup");
- e_theme_edje_object_set(inst->popup_battery, "base/theme/gadget/batman",
- "e/gadget/batman/main");
- if (edje_object_part_exists(elm_layout_edje_get(popup_bg), "e.swallow.batman"))
- elm_layout_content_set(popup_bg, "e.swallow.batman", inst->popup_battery);
- else
- elm_layout_content_set(popup_bg, "battery", inst->popup_battery);
-
- elm_layout_text_set(popup_bg, "e.text.title",
- _("Your battery is low!"));
- elm_layout_text_set(popup_bg, "e.text.label", buf);
- evas_object_show(inst->popup_battery);
- evas_object_show(popup_bg);
-
- elm_object_content_set(inst->warning, popup_bg);
- e_gadget_util_ctxpopup_place(inst->o_main, inst->warning, inst->cfg->batman.o_gadget);
- evas_object_layer_set(inst->warning, E_LAYER_POPUP);
- evas_object_show(inst->warning);
-
- evas_object_geometry_get(inst->warning, &x, &y, &w, &h);
- evas_object_event_callback_add(inst->warning, EVAS_CALLBACK_MOUSE_UP,
- _batman_cb_warning_popup_hide, inst);
-
- _batman_face_level_set(inst->popup_battery, percent);
- edje_object_signal_emit(inst->popup_battery, "e,state,discharging", "e");
-
- if ((inst->cfg->batman.alert_timeout > 0) &&
- (!inst->cfg->batman.alert_timer))
- {
- inst->cfg->batman.alert_timer =
- ecore_timer_loop_add(inst->cfg->batman.alert_timeout,
- _batman_cb_warning_popup_timeout, inst);
- }
-}
-
-static void
-_batman_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Evas_Coord w, h;
- Instance *inst = data;
-
- edje_object_parts_extends_calc(elm_layout_edje_get(inst->cfg->batman.o_gadget), 0, 0, &w, &h);
- if (w < 1) w = 1;
- if (h < 1) h = 1;
- if (inst->cfg->esm == E_SYSINFO_MODULE_BATMAN)
- evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, w, h);
- else
- evas_object_size_hint_aspect_set(inst->cfg->batman.o_gadget, EVAS_ASPECT_CONTROL_BOTH, w, h);
-}
-
-static void
-_batman_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->o_main != event_data) return;
- if (inst->cfg->batman.popup)
- E_FREE_FUNC(inst->cfg->batman.popup, evas_object_del);
- if (inst->cfg->batman.configure)
- E_FREE_FUNC(inst->cfg->batman.configure, evas_object_del);
- EINA_LIST_FREE(inst->cfg->batman.handlers, handler)
- ecore_event_handler_del(handler);
-#if defined(HAVE_EEZE)
- _batman_udev_stop(inst);
-#elif defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__)
- _batman_sysctl_stop(inst);
-#elif defined(upower)
- _batman_upower_stop();
-#else
- _batman_fallback_stop();
-#endif
-
- evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_batman_remove, data);
- evas_object_smart_callback_del_full(e_gadget_site_get(inst->o_main), "gadget_removed",
- _batman_removed_cb, inst);
-
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
-}
-
-void
-sysinfo_batman_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->cfg->batman.popup)
- E_FREE_FUNC(inst->cfg->batman.popup, evas_object_del);
- if (inst->cfg->batman.configure)
- E_FREE_FUNC(inst->cfg->batman.configure, evas_object_del);
- EINA_LIST_FREE(inst->cfg->batman.handlers, handler)
- ecore_event_handler_del(handler);
-#if defined(HAVE_EEZE)
- _batman_udev_stop(inst);
-#elif defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__)
- _batman_sysctl_stop(inst);
-#elif defined(upower)
- (void)inst;
- _batman_upower_stop();
-#else
- (void)inst;
- _batman_fallback_stop();
-#endif
-}
-
-static void
-_batman_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- E_Gadget_Site_Orient orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_main));
-
- e_gadget_configure_cb_set(inst->o_main, _batman_configure_cb);
-
- inst->cfg->batman.full = -2;
- inst->cfg->batman.time_left = -2;
- inst->cfg->batman.have_battery = -2;
- inst->cfg->batman.have_power = -2;
-
- inst->cfg->batman.o_gadget = elm_layout_add(inst->o_main);
- if (orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(inst->cfg->batman.o_gadget,
- "base/theme/gadget/batman",
- "e/gadget/batman/main_vert");
- else
- e_theme_edje_object_set(inst->cfg->batman.o_gadget, "base/theme/gadget/batman",
- "e/gadget/batman/main");
- E_EXPAND(inst->cfg->batman.o_gadget);
- E_FILL(inst->cfg->batman.o_gadget);
- elm_box_pack_end(inst->o_main, inst->cfg->batman.o_gadget);
- evas_object_event_callback_add(inst->cfg->batman.o_gadget,
- EVAS_CALLBACK_MOUSE_UP,
- _batman_mouse_up_cb, inst);
- evas_object_event_callback_add(inst->cfg->batman.o_gadget, EVAS_CALLBACK_RESIZE, _batman_resize_cb, inst);
- evas_object_show(inst->cfg->batman.o_gadget);
- evas_object_smart_callback_del_full(obj, "gadget_created", _batman_created_cb, data);
-
- E_LIST_HANDLER_APPEND(inst->cfg->batman.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->batman.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->batman.handlers, E_EVENT_POWERSAVE_CONFIG_UPDATE,
- _powersave_cb_config_update, inst);
-
- _batman_config_updated(inst);
-}
-
-Evas_Object *
-sysinfo_batman_create(Evas_Object *parent, Instance *inst)
-{
- inst->cfg->batman.full = -2;
- inst->cfg->batman.time_left = -2;
- inst->cfg->batman.have_battery = -2;
- inst->cfg->batman.have_power = -2;
-
- inst->cfg->batman.o_gadget = elm_layout_add(parent);
- e_theme_edje_object_set(inst->cfg->batman.o_gadget, "base/theme/gadget/batman",
- "e/gadget/batman/main");
- E_EXPAND(inst->cfg->batman.o_gadget);
- E_FILL(inst->cfg->batman.o_gadget);
- evas_object_event_callback_add(inst->cfg->batman.o_gadget,
- EVAS_CALLBACK_MOUSE_UP,
- _batman_mouse_up_cb, inst);
- evas_object_event_callback_add(inst->cfg->batman.o_gadget, EVAS_CALLBACK_RESIZE, _batman_resize_cb, inst);
- evas_object_show(inst->cfg->batman.o_gadget);
-
- E_LIST_HANDLER_APPEND(inst->cfg->batman.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->batman.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->batman.handlers, E_EVENT_POWERSAVE_CONFIG_UPDATE,
- _powersave_cb_config_update, inst);
-
- _batman_config_updated(inst);
-
- return inst->cfg->batman.o_gadget;
-}
-
-static Config_Item *
-_conf_item_get(int *id)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(sysinfo_config->items, l, ci)
- if (*id == ci->id && ci->esm == E_SYSINFO_MODULE_BATMAN) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
-
- if (*id != -1)
- ci->id = eina_list_count(sysinfo_config->items) + 1;
- else
- ci->id = -1;
-
- ci->esm = E_SYSINFO_MODULE_BATMAN;
- ci->batman.poll_interval = 512;
- ci->batman.alert = 30;
- ci->batman.alert_p = 10;
- ci->batman.alert_timeout = 0;
- ci->batman.suspend_below = 0;
- ci->batman.force_mode = 0;
- ci->batman.full = -2;
- ci->batman.time_left = -2;
- ci->batman.have_battery = -2;
- ci->batman.have_power = -2;
-#if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__NetBSD__)
- ci->batman.fuzzy = 0;
-#endif
- ci->batman.desktop_notifications = 0;
- ci->batman.configure = NULL;
-
- sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
-
- return ci;
-}
-
-Evas_Object *
-batman_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNUSED)
-{
- Instance *inst;
-
- inst = E_NEW(Instance, 1);
- inst->cfg = _conf_item_get(id);
- *id = inst->cfg->id;
- inst->o_main = elm_box_add(parent);
- evas_object_data_set(inst->o_main, "Instance", inst);
- evas_object_smart_callback_add(parent, "gadget_created", _batman_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_removed", _batman_removed_cb, inst);
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_batman_remove, inst);
- evas_object_show(inst->o_main);
-
- if (inst->cfg->id < 0) return inst->o_main;
-
- sysinfo_instances =
- eina_list_append(sysinfo_instances, inst);
-
- return inst->o_main;
-}
diff --git a/src/modules/sysinfo/batman/batman.h b/src/modules/sysinfo/batman/batman.h
deleted file mode 100644
index 70a7b08d89..0000000000
--- a/src/modules/sysinfo/batman/batman.h
+++ /dev/null
@@ -1,114 +0,0 @@
-#ifndef BATMAN_H
-#define BATMAN_H
-
-#include "../sysinfo.h"
-
-#define CHECK_NONE 0
-#define CHECK_ACPI 1
-#define CHECK_APM 2
-#define CHECK_PMU 3
-#define CHECK_SYS_ACPI 4
-
-#define UNKNOWN 0
-#define NOSUBSYSTEM 1
-#define SUBSYSTEM 2
-
-#define SUSPEND 0
-#define HIBERNATE 1
-#define SHUTDOWN 2
-
-#define POPUP_DEBOUNCE_CYCLES 2
-
-typedef struct _Battery Battery;
-typedef struct _Ac_Adapter Ac_Adapter;
-typedef struct _Batman_Config Batman_Config;
-
-struct _Battery
-{
- Instance *inst;
- const char *udi;
-#if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__)
- Ecore_Poller *poll;
-#endif
- Eina_Bool present E_BITFIELD;
- Eina_Bool charging E_BITFIELD;
-#if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__)
- double last_update;
- double percent;
- double current_charge;
- double design_charge;
- double last_full_charge;
- double charge_rate;
- double time_full;
- double time_left;
-#else
- int percent;
- int current_charge;
- int design_charge;
- int last_full_charge;
- int charge_rate;
- int time_full;
- int time_left;
- const char *type;
- const char *charge_units;
-#endif
- const char *technology;
- const char *model;
- const char *vendor;
- Eina_Bool got_prop E_BITFIELD;
- Eldbus_Proxy *proxy;
- int * mib;
-};
-
-struct _Ac_Adapter
-{
- Instance *inst;
- const char *udi;
- Eina_Bool present E_BITFIELD;
- const char *product;
- Eldbus_Proxy *proxy;
- int * mib;
-};
-
-struct _Batman_Config
-{
- Instance *inst;
- Evas_Object *alert_check;
- Evas_Object *alert_desktop;
- Evas_Object *alert_time;
- Evas_Object *alert_percent;
- Evas_Object *alert_timeout;
- Evas_Object *general_page;
- Evas_Object *alert_page;
- Evas_Object *power_page;
-};
-
-EINTERN Eina_List *_batman_battery_find(const char *udi);
-EINTERN Eina_List *_batman_ac_adapter_find(const char *udi);
-EINTERN void _batman_update(Instance *inst, int full, int time_left, Eina_Bool have_battery, Eina_Bool have_power);
-EINTERN void _batman_device_update(Instance *inst);
-/* in batman_fallback.c */
-EINTERN int _batman_fallback_start(Instance *inst);
-EINTERN void _batman_fallback_stop(void);
-/* end batman_fallback.c */
-#if defined(HAVE_EEZE)
-/* in batman_udev.c */
-EINTERN int _batman_udev_start(Instance *inst);
-EINTERN void _batman_udev_stop(Instance *inst);
-/* end batman_udev.c */
-#elif !defined(__OpenBSD__) && !defined(__DragonFly__) && !defined(__FreeBSD__) && !defined(__NetBSD__)
-/* in batman_upower.c */
-EINTERN int _batman_upower_start(Instance *inst);
-EINTERN void _batman_upower_stop(void);
-/* end batman_upower.c */
-#else
-/* in batman_sysctl.c */
-EINTERN int _batman_sysctl_start(Instance *inst);
-EINTERN void _batman_sysctl_stop(Instance *inst);
-/* end batman_sysctl.c */
-#endif
-
-EINTERN Evas_Object *batman_configure(Instance *inst);
-EINTERN void _batman_config_updated(Instance *inst);
-
-#endif
diff --git a/src/modules/sysinfo/batman/batman_config.c b/src/modules/sysinfo/batman/batman_config.c
deleted file mode 100644
index 489e206552..0000000000
--- a/src/modules/sysinfo/batman/batman_config.c
+++ /dev/null
@@ -1,611 +0,0 @@
-#include "batman.h"
-
-static void
-_config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
- Instance *inst = bc->inst;
-
- E_FREE_FUNC(inst->cfg->batman.configure, evas_object_del);
- E_FREE(bc);
- e_config_save_queue();
-}
-
-static void
-_config_show_general(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
-
- evas_object_hide(bc->power_page);
- evas_object_hide(bc->alert_page);
- evas_object_show(bc->general_page);
-}
-
-static void
-_config_show_alert(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
-
- evas_object_hide(bc->general_page);
- evas_object_hide(bc->power_page);
- evas_object_show(bc->alert_page);
-}
-
-static void
-_config_show_power(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
-
- evas_object_hide(bc->general_page);
- evas_object_hide(bc->alert_page);
- evas_object_show(bc->power_page);
-}
-
-static void
-_update_suspend_percent(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
- Instance *inst = bc->inst;
- int value = elm_slider_value_get(obj);
-
- inst->cfg->batman.suspend_below = value;
- e_config_save_queue();
- _batman_config_updated(inst);
-}
-
-static void
-_update_alert_time(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
- Instance *inst = bc->inst;
- int value = elm_slider_value_get(bc->alert_time);
-
- inst->cfg->batman.alert = value;
- e_config_save_queue();
- _batman_config_updated(inst);
-}
-
-static void
-_update_alert_percent(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
- Instance *inst = bc->inst;
- int value = elm_slider_value_get(bc->alert_percent);
-
- inst->cfg->batman.alert_p = value;
- e_config_save_queue();
- _batman_config_updated(inst);
-}
-
-static void
-_update_alert_timeout(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
- Instance *inst = bc->inst;
- int value = elm_slider_value_get(bc->alert_timeout);
-
- inst->cfg->batman.alert_timeout = value;
- e_config_save_queue();
- _batman_config_updated(inst);
-}
-
-static void
-_check_desktop_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
- Instance *inst = bc->inst;
-
- inst->cfg->batman.desktop_notifications = elm_check_state_get(bc->alert_desktop);
- e_config_save_queue();
- _batman_config_updated(inst);
-}
-
-static void
-_check_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
- Instance *inst = bc->inst;
-
- if (!elm_check_state_get(bc->alert_check))
- {
- elm_object_disabled_set(bc->alert_time, EINA_TRUE);
- elm_object_disabled_set(bc->alert_percent, EINA_TRUE);
- elm_object_disabled_set(bc->alert_desktop, EINA_TRUE);
- elm_object_disabled_set(bc->alert_timeout, EINA_TRUE);
- elm_slider_value_set(bc->alert_time, 0);
- elm_slider_value_set(bc->alert_percent, 0);
- _update_alert_time(bc, NULL, NULL);
- _update_alert_percent(bc, NULL, NULL);
- }
- else
- {
- elm_object_disabled_set(bc->alert_time, EINA_FALSE);
- elm_object_disabled_set(bc->alert_percent, EINA_FALSE);
- elm_object_disabled_set(bc->alert_desktop, EINA_FALSE);
- elm_object_disabled_set(bc->alert_timeout, EINA_FALSE);
- }
- e_config_save_queue();
- _batman_config_updated(inst);
-}
-
-static void
-_suspend_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
- Instance *inst = bc->inst;
- int value = elm_radio_value_get(obj);
-
- switch (value)
- {
- case 0:
- inst->cfg->batman.suspend_method = SUSPEND;
- break;
-
- case 1:
- inst->cfg->batman.suspend_method = HIBERNATE;
- break;
-
- case 2:
- inst->cfg->batman.suspend_method = SHUTDOWN;
- break;
-
- default:
- inst->cfg->batman.suspend_method = SUSPEND;
- }
-
- e_config_save_queue();
- _batman_config_updated(inst);
-}
-
-static void
-_poll_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Batman_Config *bc = data;
- Instance *inst = bc->inst;
- int value = elm_radio_value_get(obj);
-
- switch (value)
- {
- case 0:
- inst->cfg->batman.poll_interval = 4;
- break;
-
- case 1:
- inst->cfg->batman.poll_interval = 8;
- break;
-
- case 2:
- inst->cfg->batman.poll_interval = 32;
- break;
-
- case 3:
- inst->cfg->batman.poll_interval = 64;
- break;
-
- case 4:
- inst->cfg->batman.poll_interval = 256;
- break;
-
- default:
- inst->cfg->batman.poll_interval = 32;
- }
-
- e_config_save_queue();
- _batman_config_updated(inst);
-}
-
-static void
-_power_management_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Evas_Object *popup = data;
-
- evas_object_del(popup);
- e_configure_registry_call("advanced/powermanagement", NULL, NULL);
-}
-
-static void
-_icon_theme_file_set(Evas_Object *img, const char *icon)
-{
- const char *path = NULL, *k = NULL;
- char buf[4096];
- int len = 0;
-
- if (!icon)
- path = NULL;
- else if (strncmp(icon, "/", 1) && !ecore_file_exists(icon))
- {
- path = efreet_icon_path_find(e_config->icon_theme, icon, 48);
- if (!path)
- {
- if (e_util_strcmp(e_config->icon_theme, "hicolor"))
- path = efreet_icon_path_find("hicolor", icon, 48);
- }
- }
- else if (ecore_file_exists(icon))
- {
- path = icon;
- }
- if (!path && icon)
- {
- snprintf(buf, sizeof(buf), "e/icons/%s", icon);
- if (eina_list_count(e_theme_collection_items_find("base/theme/icons", buf)))
- {
- path = e_theme_edje_file_get("base/theme/icons", buf);
- k = buf;
- }
- else
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
- }
- else if (!path && !icon)
- {
- path = e_theme_edje_file_get("base/theme/icons", "e/icons/unknown");
- k = "e/icons/unknown";
- }
-
- if (path && icon)
- {
- len = strlen(icon);
- if ((len > 4) && (!strcasecmp(icon + len - 4, ".edj")))
- k = "icon";
- }
- elm_image_file_set(img, path, k);
-}
-
-Evas_Object *
-batman_configure(Instance *inst)
-{
- Evas_Object *popup, *tb, *list, *frame, *box, *o, *group, *groupy, *lbl;
- Evas_Object *slider, *check, *but, *img;
- Elm_Object_Item *it;
- Eina_Bool show_alert;
- E_Zone *zone = e_zone_current_get();
- Batman_Config *bc = E_NEW(Batman_Config, 1);
-
- bc->inst = inst;
-
- if (inst->cfg->batman.alert > 0 || inst->cfg->batman.alert_p > 0)
- show_alert = EINA_TRUE;
- else
- show_alert = EINA_FALSE;
-
- popup = elm_popup_add(e_comp->elm);
- E_EXPAND(popup);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- tb = elm_table_add(popup);
- E_EXPAND(tb);
- evas_object_show(tb);
- elm_object_content_set(popup, tb);
-
- lbl = elm_label_add(tb);
- evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_style_set(lbl, "marker");
- elm_object_text_set(lbl, _("Batman Configuration"));
- elm_table_pack(tb, lbl, 0, 0, 2, 1);
- evas_object_show(lbl);
-
- list = elm_list_add(tb);
- E_ALIGN(list, 0, EVAS_HINT_FILL);
- E_WEIGHT(list, 0, EVAS_HINT_EXPAND);
- elm_table_pack(tb, list, 0, 1, 1, 1);
- elm_list_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS);
- elm_scroller_content_min_limit(list, 1, 1);
- it = elm_list_item_append(list, _("General"), NULL, NULL,
- _config_show_general, bc);
- elm_list_item_selected_set(it, 1);
- it = elm_list_item_append(list, _("Alert"), NULL, NULL,
- _config_show_alert, bc);
- it = elm_list_item_append(list, _("Power"), NULL, NULL,
- _config_show_power, bc);
- elm_list_go(list);
- evas_object_show(list);
-
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("General"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 1, 1, 1, 1);
- evas_object_show(frame);
- bc->general_page = frame;
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- lbl = elm_label_add(box);
- elm_object_text_set(lbl, _("Update Poll Interval:"));
- E_ALIGN(lbl, 0.0, 0.0);
- E_WEIGHT(lbl, EVAS_HINT_EXPAND, 0);
- elm_box_pack_end(box, lbl);
- evas_object_show(lbl);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 0);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Fast (4 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, bc);
- evas_object_show(o);
- group = o;
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 1);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Medium (8 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, bc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 2);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Normal (32 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, bc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 3);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Slow (64 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, bc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 4);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Very Slow (256 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, bc);
- evas_object_show(o);
-
- switch (inst->cfg->batman.poll_interval)
- {
- case 4:
- elm_radio_value_set(group, 0);
- break;
-
- case 8:
- elm_radio_value_set(group, 1);
- break;
-
- case 32:
- elm_radio_value_set(group, 2);
- break;
-
- case 64:
- elm_radio_value_set(group, 3);
- break;
-
- case 256:
- elm_radio_value_set(group, 4);
- break;
-
- default:
- elm_radio_value_set(group, 2);
- }
-
- elm_object_content_set(frame, box);
-
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("Alert"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 1, 1, 1, 1);
- evas_object_show(frame);
- bc->alert_page = frame;
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- check = elm_check_add(box);
- elm_object_text_set(check, _("Show low battery alert"));
- elm_check_state_set(check, show_alert);
- E_ALIGN(check, 0.0, 0.0);
- E_WEIGHT(check, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(check, "changed", _check_changed, bc);
- elm_box_pack_end(box, check);
- evas_object_show(check);
- bc->alert_check = check;
-
- check = elm_check_add(box);
- elm_object_text_set(check, _("Show alert as a desktop notification"));
- elm_check_state_set(check, inst->cfg->batman.desktop_notifications);
- E_ALIGN(check, 0.0, 0.0);
- E_WEIGHT(check, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(check, "changed", _check_desktop_changed, bc);
- elm_object_disabled_set(check, !show_alert);
- elm_box_pack_end(box, check);
- evas_object_show(check);
- bc->alert_desktop = check;
-
- lbl = elm_label_add(box);
- elm_object_text_set(lbl, _("Alert when time left is at:"));
- E_ALIGN(lbl, 0.0, 0.0);
- E_WEIGHT(lbl, EVAS_HINT_EXPAND, 0);
- elm_box_pack_end(box, lbl);
- evas_object_show(lbl);
-
- slider = elm_slider_add(box);
- elm_slider_unit_format_set(slider, "%1.0f min");
- elm_slider_indicator_format_set(slider, "%1.0f min");
- elm_slider_min_max_set(slider, 0, 60);
- elm_slider_value_set(slider, inst->cfg->batman.alert);
- elm_slider_step_set(slider, 0.01);
- elm_slider_span_size_set(slider, 100);
- E_ALIGN(slider, 0.0, 0.0);
- E_WEIGHT(slider, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_alert_time, bc);
- elm_object_disabled_set(slider, !show_alert);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
- bc->alert_time = slider;
-
- lbl = elm_label_add(box);
- elm_object_text_set(lbl, _("Alert when percent left is at:"));
- E_ALIGN(lbl, 0.0, 0.0);
- E_WEIGHT(lbl, EVAS_HINT_EXPAND, 0);
- elm_box_pack_end(box, lbl);
- evas_object_show(lbl);
-
- slider = elm_slider_add(box);
- elm_slider_unit_format_set(slider, "%1.0f %%");
- elm_slider_indicator_format_set(slider, "%1.0f %%");
- elm_slider_min_max_set(slider, 0, 100);
- elm_slider_value_set(slider, inst->cfg->batman.alert_p);
- elm_slider_step_set(slider, 0.01);
- elm_slider_span_size_set(slider, 100);
- E_ALIGN(slider, 0.0, 0.0);
- E_WEIGHT(slider, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_alert_percent, bc);
- elm_object_disabled_set(slider, !show_alert);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
- bc->alert_percent = slider;
-
- lbl = elm_label_add(box);
- elm_object_text_set(lbl, _("Alert timeout:"));
- E_ALIGN(lbl, 0.0, 0.0);
- E_WEIGHT(lbl, EVAS_HINT_EXPAND, 0);
- elm_box_pack_end(box, lbl);
- evas_object_show(lbl);
-
- slider = elm_slider_add(box);
- elm_slider_unit_format_set(slider, "%1.0f s");
- elm_slider_indicator_format_set(slider, "%1.0f s");
- elm_slider_min_max_set(slider, 1, 300);
- elm_slider_value_set(slider, inst->cfg->batman.alert_timeout);
- elm_slider_step_set(slider, 0.01);
- elm_slider_span_size_set(slider, 100);
- E_ALIGN(slider, 0.0, 0.0);
- E_WEIGHT(slider, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_alert_timeout, bc);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
- bc->alert_timeout = slider;
-
- elm_object_content_set(frame, box);
-
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("Power Management"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 1, 1, 1, 1);
- evas_object_show(frame);
- bc->power_page = frame;
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 0);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Suspend when below:"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _suspend_changed, bc);
- evas_object_show(o);
- groupy = o;
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 1);
- elm_radio_group_add(o, groupy);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Hibernate when below:"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _suspend_changed, bc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 2);
- elm_radio_group_add(o, groupy);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Shutdown when below:"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _suspend_changed, bc);
- evas_object_show(o);
-
- switch (inst->cfg->batman.suspend_method)
- {
- case SUSPEND:
- elm_radio_value_set(groupy, 0);
- break;
-
- case HIBERNATE:
- elm_radio_value_set(groupy, 1);
- break;
-
- case SHUTDOWN:
- elm_radio_value_set(groupy, 2);
- break;
-
- default:
- elm_radio_value_set(groupy, 0);
- }
-
- slider = elm_slider_add(box);
- elm_slider_unit_format_set(slider, "%1.0f %%");
- elm_slider_indicator_format_set(slider, "%1.0f %%");
- elm_slider_min_max_set(slider, 0, 100);
- elm_slider_value_set(slider, inst->cfg->batman.suspend_below);
- elm_slider_step_set(slider, 0.05);
- elm_slider_span_size_set(slider, 100);
- E_ALIGN(slider, 0.0, 0.0);
- E_WEIGHT(slider, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_suspend_percent, bc);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
-
- img = elm_icon_add(box);
- evas_object_size_hint_aspect_set(img, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- _icon_theme_file_set(img, "preferences-system-power-management");
- evas_object_show(img);
-
- but = elm_button_add(box);
- elm_object_part_content_set(but, "icon", img);
- elm_object_text_set(but, _("Power Management Timing"));
- E_ALIGN(but, 0.0, 0.0);
- E_WEIGHT(but, EVAS_HINT_EXPAND, 0);
- E_FILL(but);
- evas_object_data_set(but, "popup", popup);
- evas_object_smart_callback_add(but, "clicked", _power_management_cb, popup);
- elm_box_pack_end(box, but);
- evas_object_show(but);
-
- elm_object_content_set(frame, box);
-
- _config_show_general(bc, NULL, NULL);
-
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center_on_zone(popup, zone);
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, bc);
-
- return inst->cfg->batman.configure = popup;
-}
-
diff --git a/src/modules/sysinfo/batman/batman_fallback.c b/src/modules/sysinfo/batman/batman_fallback.c
deleted file mode 100644
index 1e57745472..0000000000
--- a/src/modules/sysinfo/batman/batman_fallback.c
+++ /dev/null
@@ -1,1291 +0,0 @@
-#include "batman.h"
-
-#if defined(HAVE_CFBASE_H)
-# include <CFBase.h>
-# include <CFNumber.h>
-# include <CFArray.h>
-# include <CFDictionary.h>
-# include <CFRunLoop.h>
-# include <ps/IOPSKeys.h>
-# include <ps/IOPowerSources.h>
-#endif
-
-/* supported battery system schemes - irrespective of OS */
-#define CHECK_NONE 0
-#define CHECK_ACPI 1
-#define CHECK_APM 2
-#define CHECK_PMU 3
-#define CHECK_SYS_CLASS_POWER_SUPPLY 4
-
-#define SYS_PWR
-
-static Ecore_Poller *poller = NULL;
-
-static int mode = CHECK_NONE;
-
-static int time_left = -2;
-static int battery_full = -2;
-static int have_battery = -2;
-static int have_power = -2;
-
-static const char *sys_power_dir = "/sys/class/power_supply";
-static Eina_Bool _batman_fallback_poll_cb(void *data EINA_UNUSED);
-
-static int
-int_file_get(const char *file)
-{
- int val = -1;
- FILE *f = fopen(file, "r");
- if (f)
- {
- char buf[256];
- char *str = fgets(buf, sizeof(buf), f);
- if (str) val = atoi(str);
- fclose(f);
- }
- return val;
-}
-
-static char *
-str_file_get(const char *file)
-{
- char *val = NULL;
- FILE *f = fopen(file, "r");
- if (f)
- {
- char buf[4096];
- char *str = fgets(buf, sizeof(buf), f);
- if (str)
- {
- size_t len = strlen(str);
- if ((len > 0) && (str[len - 1] == '\n'))
- {
- len--;
- str[len] = 0;
- }
- val = malloc(len + 1);
- if (val) memcpy(val, str, len + 1);
- }
- fclose(f);
- }
- return val;
-}
-
-static int
-int_get(const char *buf)
-{
- const char *p = strchr(buf, ':');
- if (!p) return 0;
- p++;
- while (*p == ' ')
- p++;
- return atoi(p);
-}
-
-static char *
-str_get(const char *buf)
-{
- const char *p = strchr(buf, ':');
- const char *q;
- char *ret;
-
- if (!p) return NULL;
- p++;
- while (*p == ' ')
- p++;
-
- q = p + strlen(p) - 1;
- while ((q > p) && ((*q == ' ') || (*q == '\n')))
- q--;
-
- if (q < p) return NULL;
- q++;
- ret = malloc(q - p + 1);
- if (!ret) return NULL;
- memcpy(ret, p, q - p);
- ret[q - p] = '\0';
- return ret;
-}
-
-static char *
-file_str_entry_get(FILE *f,
- const char *entry)
-{
- char buf[4096];
- char *tmp;
-
- tmp = fgets(buf, sizeof(buf), f);
- if (!tmp)
- {
- EINA_LOG_ERR("unexpected end of file, expected: '%s'", entry);
- return NULL;
- }
- if (strcmp(tmp, entry) != 0)
- {
- EINA_LOG_ERR("unexpected file entry, expected: '%s'", entry);
- return NULL;
- }
- tmp = str_get(tmp);
- if (!tmp)
- {
- EINA_LOG_ERR("unexpected file entry, missing value for '%s'", entry);
- return NULL;
- }
- return tmp;
-}
-
-#if defined(HAVE_CFBASE_H) /* OS X */
-/***---***/
-static void darwin_init(void);
-static void darwin_check(void);
-
-static void
-darwin_init(void)
-{
- /* nothing to do */
-}
-
-static void
-darwin_check(void)
-{
- const void *values;
- int device_num, device_count;
- int currentval = 0, maxval = 0;
- CFTypeRef blob;
- CFArrayRef sources;
- CFDictionaryRef device_dict;
-
- time_left = -1;
- battery_full = -1;
- have_battery = 0;
- have_power = 0;
-
- /* Retrieve the power source data and the array of sources. */
- blob = IOPSCopyPowerSourcesInfo();
- sources = IOPSCopyPowerSourcesList(blob);
- device_count = CFArrayGetCount(sources);
- for (device_num = 0; device_num < device_count; device_num++)
- {
- CFTypeRef ps;
-
- /* Retrieve a dictionary of values for this device and the count of keys in the dictionary. */
- ps = CFArrayGetValueAtIndex(sources, device_num);
- device_dict = IOPSGetPowerSourceDescription(blob, ps);
- /* Retrieve the charging key and save the present charging value if one exists. */
- if (CFDictionaryGetValueIfPresent(device_dict,
- CFSTR(kIOPSIsChargingKey), &values))
- {
- have_battery = 1;
- if (CFBooleanGetValue(values) > 0) have_power = 1;
- break;
- }
- }
-
- if (!have_battery)
- {
- CFRelease(sources);
- CFRelease(blob);
- have_power = 1;
- return;
- }
-
- /* Retrieve the current capacity key. */
- values = CFDictionaryGetValue(device_dict, CFSTR(kIOPSCurrentCapacityKey));
- CFNumberGetValue(values, kCFNumberSInt32Type, &currentval);
- /* Retrieve the max capacity key. */
- values = CFDictionaryGetValue(device_dict, CFSTR(kIOPSMaxCapacityKey));
- CFNumberGetValue(values, kCFNumberSInt32Type, &maxval);
- /* Calculate the percentage charged. */
- battery_full = (currentval * 100) / maxval;
-
- /* Retrieve the remaining battery power or time until charged in minutes. */
- if (!have_power)
- {
- values = CFDictionaryGetValue(device_dict, CFSTR(kIOPSTimeToEmptyKey));
- CFNumberGetValue(values, kCFNumberSInt32Type, &currentval);
- time_left = currentval * 60;
- }
- else
- {
- values = CFDictionaryGetValue(device_dict, CFSTR(kIOPSTimeToFullChargeKey));
- CFNumberGetValue(values, kCFNumberSInt32Type, &currentval);
- time_left = currentval * 60;
- }
- CFRelease(sources);
- CFRelease(blob);
-}
-
-#else
-
-/***---***/
-/* new linux power class api to get power info - brand new and this code
- * may have bugs, but it is a good attempt to get it right */
-#if 0
-static Eina_Bool linux_sys_class_power_supply_cb_event_fd_active(void *data,
- Ecore_Fd_Handler *fd_handler);
-static void linux_sys_class_power_supply_check(void);
-#endif
-static void linux_sys_class_power_supply_init(void);
-
-typedef struct _Sys_Class_Power_Supply_Uevent Sys_Class_Power_Supply_Uevent;
-
-#define BASIS_CHARGE 1
-#define BASIS_ENERGY 2
-#define BASIS_VOLTAGE 3
-
-struct _Sys_Class_Power_Supply_Uevent
-{
- char *name;
- int fd;
- Ecore_Fd_Handler *fd_handler;
-
- int present;
-
- int basis;
- int basis_empty;
- int basis_full;
-
- unsigned char have_current_avg E_BITFIELD;
- unsigned char have_current_now E_BITFIELD;
-};
-
-static Eina_List *events = NULL;
-
-#if 0
-static Ecore_Timer *sys_class_delay_check = NULL;
-
-static Eina_Bool
-linux_sys_class_power_supply_cb_delay_check(void *data)
-{
- linux_sys_class_power_supply_init();
- _batman_fallback_poll_cb(NULL);
- sys_class_delay_check = NULL;
- return ECORE_CALLBACK_CANCEL;
-}
-
-static Ecore_Timer *re_init_timer = NULL;
-
-static Eina_Bool
-linux_sys_class_power_supply_cb_re_init(void *data)
-{
- Sys_Class_Power_Supply_Uevent *sysev;
-
- if (events)
- {
- EINA_LIST_FREE(events, sysev)
- {
-// if (sysev->fd_handler)
-// ecore_main_fd_handler_del(sysev->fd_handler);
-// if (sysev->fd >= 0) close(sysev->fd);
- E_FREE(sysev->name);
- E_FREE(sysev);
- }
- }
- linux_sys_class_power_supply_init();
- re_init_timer = NULL;
- return ECORE_CALLBACK_CANCEL;
-}
-
-static Eina_Bool
-linux_sys_class_power_supply_cb_event_fd_active(void *data,
- Ecore_Fd_Handler *fd_handler)
-{
- Sys_Class_Power_Supply_Uevent *sysev;
-
- sysev = data;
- if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
- {
- int lost = 0;
- for (;; )
- {
- char buf[1024];
- int num;
-
- if ((num = read(sysev->fd, buf, sizeof(buf))) < 1)
- {
- lost = ((errno == EIO) ||
- (errno == EBADF) ||
- (errno == EPIPE) ||
- (errno == EINVAL) ||
- (errno == ENOSPC) ||
- (errno == ENODEV));
- if (num <= 0) break;
- }
- }
- if (lost)
- {
- events = eina_list_remove(events, sysev);
-
-// if (sysev->fd_handler)
-// ecore_main_fd_handler_del(sysev->fd_handler);
-// if (sysev->fd >= 0) close(sysev->fd);
- E_FREE(sysev->name);
- E_FREE(sysev);
-
- if (re_init_timer) ecore_timer_del(re_init_timer);
- re_init_timer = ecore_timer_loop_add(1.0, linux_sys_class_power_supply_cb_re_init, NULL);
- }
- else
- {
- if (sys_class_delay_check) ecore_timer_del(sys_class_delay_check);
- sys_class_delay_check = ecore_timer_loop_add(0.2, linux_sys_class_power_supply_cb_delay_check, NULL);
- }
- }
- return ECORE_CALLBACK_CANCEL;
-}
-
-#endif
-static void
-linux_sys_class_power_supply_sysev_init(Sys_Class_Power_Supply_Uevent *sysev)
-{
- char buf[4096];
- const char *dir = sys_power_dir;
-
- sysev->basis = 0;
- sysev->have_current_avg = 0;
- sysev->have_current_now = 0;
- snprintf(buf, sizeof(buf), "%s/%s/present", dir, sysev->name);
- sysev->present = int_file_get(buf);
- if (!sysev->present) return;
- snprintf(buf, sizeof(buf), "%s/%s/current_avg", dir, sysev->name);
- if (ecore_file_exists(buf)) sysev->have_current_avg = 1;
- snprintf(buf, sizeof(buf), "%s/%s/current_now", dir, sysev->name);
- if (ecore_file_exists(buf)) sysev->have_current_now = 1;
-
- snprintf(buf, sizeof(buf), "%s/%s/voltage_max", dir, sysev->name);
- if (ecore_file_exists(buf)) sysev->basis = BASIS_VOLTAGE;
- snprintf(buf, sizeof(buf), "%s/%s/voltage_max_design", dir, sysev->name);
- if (ecore_file_exists(buf)) sysev->basis = BASIS_VOLTAGE;
-
- snprintf(buf, sizeof(buf), "%s/%s/energy_full", dir, sysev->name);
- if (ecore_file_exists(buf)) sysev->basis = BASIS_ENERGY;
- snprintf(buf, sizeof(buf), "%s/%s/energy_full_design", dir, sysev->name);
- if (ecore_file_exists(buf)) sysev->basis = BASIS_ENERGY;
-
- snprintf(buf, sizeof(buf), "%s/%s/charge_full", dir, sysev->name);
- if (ecore_file_exists(buf)) sysev->basis = BASIS_CHARGE;
- snprintf(buf, sizeof(buf), "%s/%s/charge_full_design", dir, sysev->name);
- if (ecore_file_exists(buf)) sysev->basis = BASIS_CHARGE;
-
- if (sysev->basis == BASIS_CHARGE)
- {
- snprintf(buf, sizeof(buf), "%s/%s/charge_full", dir, sysev->name);
- sysev->basis_full = int_file_get(buf);
- snprintf(buf, sizeof(buf), "%s/%s/charge_empty", dir, sysev->name);
- sysev->basis_empty = int_file_get(buf);
- if (sysev->basis_full < 0)
- {
- snprintf(buf, sizeof(buf), "%s/%s/charge_full_design", dir, sysev->name);
- sysev->basis_full = int_file_get(buf);
- }
- if (sysev->basis_empty < 0)
- {
- snprintf(buf, sizeof(buf), "%s/%s/charge_empty_design", dir, sysev->name);
- sysev->basis_empty = int_file_get(buf);
- }
- }
- else if (sysev->basis == BASIS_ENERGY)
- {
- snprintf(buf, sizeof(buf), "%s/%s/energy_full", dir, sysev->name);
- sysev->basis_full = int_file_get(buf);
- snprintf(buf, sizeof(buf), "%s/%s/energy_empty", dir, sysev->name);
- sysev->basis_empty = int_file_get(buf);
- if (sysev->basis_full < 0)
- {
- snprintf(buf, sizeof(buf), "%s/%s/energy_full_design", dir, sysev->name);
- sysev->basis_full = int_file_get(buf);
- }
- if (sysev->basis_empty < 0)
- {
- snprintf(buf, sizeof(buf), "%s/%s/energy_empty_design", dir, sysev->name);
- sysev->basis_empty = int_file_get(buf);
- }
- }
- else if (sysev->basis == BASIS_VOLTAGE)
- {
- snprintf(buf, sizeof(buf), "%s/%s/voltage_max", dir, sysev->name);
- sysev->basis_full = int_file_get(buf);
- snprintf(buf, sizeof(buf), "%s/%s/voltage_min", dir, sysev->name);
- sysev->basis_empty = int_file_get(buf);
- if (sysev->basis_full < 0)
- {
- snprintf(buf, sizeof(buf), "%s/%s/voltage_max_design", dir, sysev->name);
- sysev->basis_full = int_file_get(buf);
- }
- if (sysev->basis_empty < 0)
- {
- snprintf(buf, sizeof(buf), "%s/%s/voltage_min_design", dir, sysev->name);
- sysev->basis_empty = int_file_get(buf);
- }
- }
-}
-
-static int
-linux_sys_class_power_supply_is_battery(char *name)
-{
- int fd;
- int ret = 0;
- char buf[256];
- const char *dir = sys_power_dir;
-
- snprintf(buf, sizeof(buf), "%s/%s/type", dir, name);
- fd = open(buf, O_RDONLY);
- if (fd < 0)
- {
- ret = 0;
- goto NO_OPEN;
- }
- else if (read(fd, buf, sizeof(buf)) < 1)
- ret = 0;
- else if (!strncmp(buf, "Battery", 7))
- ret = 1;
-
- close(fd);
-
-NO_OPEN:
- return ret;
-}
-
-static void
-linux_sys_class_power_supply_init(void)
-{
- Eina_List *l;
-
- if (events)
- {
- Sys_Class_Power_Supply_Uevent *sysev;
-
- EINA_LIST_FOREACH(events, l, sysev)
- linux_sys_class_power_supply_sysev_init(sysev);
- }
- else
- {
- Eina_List *bats;
- char *name;
-// char buf[4096];
-
- bats = ecore_file_ls("/sys/class/power_supply/");
-// bats = ecore_file_ls("./TST");
- if (bats)
- {
- events = NULL;
-
- EINA_LIST_FREE(bats, name)
- {
- Sys_Class_Power_Supply_Uevent *sysev;
-
- if (!(linux_sys_class_power_supply_is_battery(name)))
- {
- E_FREE(name);
- continue;
- }
- sysev = (Sys_Class_Power_Supply_Uevent *)calloc(1, sizeof(Sys_Class_Power_Supply_Uevent));
- sysev->name = name;
-// snprintf(buf, sizeof(buf), "/sys/class/power_supply/%s/uevent", name);
-// sysev->fd = open(buf, O_RDONLY);
-// if (sysev->fd >= 0)
-// sysev->fd_handler = ecore_main_fd_handler_add(sysev->fd,
-// ECORE_FD_READ,
-// linux_sys_class_power_supply_cb_event_fd_active,
-// sysev,
-// NULL, NULL);
-//
- events = eina_list_append(events, sysev);
- linux_sys_class_power_supply_sysev_init(sysev);
- }
- }
- }
-}
-
-static void
-linux_sys_class_power_supply_check(void)
-{
- Eina_List *l;
- char *name;
- char buf[4096];
- const char *dir = sys_power_dir;
-
- battery_full = -1;
- time_left = -1;
- have_battery = 0;
- have_power = 0;
-
- if (events)
- {
- Sys_Class_Power_Supply_Uevent *sysev;
- int total_pwr_now;
- int total_pwr_max;
- int nofull = 0;
-
- total_pwr_now = 0;
- total_pwr_max = 0;
- time_left = 0;
- EINA_LIST_FOREACH(events, l, sysev)
- {
- char *tmp;
- int present = 0;
- int charging = -1;
- int capacity = -1;
- int current = -1;
- int time_to_full = -1;
- int time_to_empty = -1;
- int full = -1;
- int pwr_now = -1;
- int pwr_empty = -1;
- int pwr_full = -1;
- int pwr = 0;
-
- name = sysev->name;
-
- /* fetch more generic info */
- // init
- present = sysev->present;
- if (!present) continue;
- snprintf(buf, sizeof(buf), "%s/%s/capacity", dir, name);
- capacity = int_file_get(buf);
- if (sysev->have_current_avg)
- {
- snprintf(buf, sizeof(buf), "%s/%s/current_avg", dir, name);
- current = int_file_get(buf);
- }
- else if (sysev->have_current_now)
- {
- snprintf(buf, sizeof(buf), "%s/%s/current_now", dir, name);
- current = int_file_get(buf);
- }
-
- /* FIXME: do we get a uevent on going from charging to full?
- * if so, move this to init */
- snprintf(buf, sizeof(buf), "%s/%s/status", dir, name);
- tmp = str_file_get(buf);
- if (tmp)
- {
- full = 0;
- if (!strncasecmp("discharging", tmp, 11)) charging = 0;
- else if (!strncasecmp("unknown", tmp, 7))
- charging = 0;
- else if (!strncasecmp("not charging", tmp, 12))
- charging = 0;
- else if (!strncasecmp("charging", tmp, 8))
- charging = 1;
- else if (!strncasecmp("full", tmp, 4))
- {
- full = 1;
- charging = 0;
- }
- E_FREE(tmp);
- }
- /* some batteries can/will/want to predict how long they will
- * last. if so - take what the battery says. too bad if it's
- * wrong. that's a buggy battery or driver */
- if (!full)
- {
- nofull++;
- if (charging)
- {
- snprintf(buf, sizeof(buf), "%s/%s/time_to_full_now", dir, name);
- time_to_full = int_file_get(buf);
- }
- else
- {
- snprintf(buf, sizeof(buf), "%s/%s/time_to_empty_now", dir, name);
- time_to_empty = int_file_get(buf);
- }
- }
-
- /* now get charge, energy and voltage. take the one that provides
- * the best info (charge first, then energy, then voltage */
- if (sysev->basis == BASIS_CHARGE)
- snprintf(buf, sizeof(buf), "%s/%s/charge_now", dir, name);
- else if (sysev->basis == BASIS_ENERGY)
- snprintf(buf, sizeof(buf), "%s/%s/energy_now", dir, name);
- else if (sysev->basis == BASIS_VOLTAGE)
- snprintf(buf, sizeof(buf), "%s/%s/voltage_now", dir, name);
- pwr_now = int_file_get(buf);
- pwr_empty = sysev->basis_empty;
- pwr_full = sysev->basis_full;
- if ((sysev->basis == BASIS_VOLTAGE) &&
- (capacity >= 0))
- {
- /* if we use voltage as basis.. we're not very accurate
- * so we should prefer capacity readings */
- pwr_empty = -1;
- pwr_full = -1;
- pwr_now = -1;
- }
-
- if (pwr_empty < 0) pwr_empty = 0;
-
- if ((pwr_full > 0) && (pwr_full > pwr_empty))
- {
- if (full) pwr_now = pwr_full;
- else
- {
- if (pwr_now < 0)
- pwr_now = (((long long)capacity * ((long long)pwr_full - (long long)pwr_empty)) / 100) + pwr_empty;
- }
-
- if (sysev->present) have_battery = 1;
- if (charging)
- {
- have_power = 1;
- if (time_to_full >= 0)
- {
- if (time_to_full > time_left)
- time_left = time_to_full;
- }
- else
- {
- if (current == 0) time_left = 0;
- else if (current < 0)
- time_left = -1;
- else
- {
- pwr = (((long long)pwr_full - (long long)pwr_now) * 3600) / -current;
- if (pwr > time_left) time_left = pwr;
- }
- }
- }
- else
- {
- have_power = 0;
- if (time_to_empty >= 0) time_left += time_to_empty;
- else
- {
- if (time_to_empty < 0)
- {
- if (current > 0)
- {
- pwr = (((long long)pwr_now - (long long)pwr_empty) * 3600) / current;
- time_left += pwr;
- }
- }
- }
- }
- total_pwr_now += pwr_now - pwr_empty;
- total_pwr_max += pwr_full - pwr_empty;
- }
- /* simple current battery fallback */
- else
- {
- if (sysev->present) have_battery = 1;
- if (charging) have_power = 1;
- total_pwr_max = 100;
- total_pwr_now = capacity;
- if (total_pwr_now < 100) nofull = 1;
- }
- }
- if (total_pwr_max > 0)
- battery_full = ((long long)total_pwr_now * 100) / total_pwr_max;
- if (nofull == 0)
- time_left = -1;
- }
-}
-
-/***---***/
-/* "here and now" ACPI based power checking. is there for linux and most
- * modern laptops. as of linux 2.6.24 it is replaced with
- * linux_sys_class_power_supply_init/check() though as this is the new
- * power class api to poll for power stuff
- */
-static Eina_Bool linux_acpi_cb_acpid_add(void *data,
- int type,
- void *event);
-static Eina_Bool linux_acpi_cb_acpid_del(void *data,
- int type,
- void *event);
-static Eina_Bool linux_acpi_cb_acpid_data(void *data,
- int type,
- void *event);
-static void linux_acpi_init(void);
-static void linux_acpi_check(void);
-
-static int acpi_max_full = -1;
-static int acpi_max_design = -1;
-static Ecore_Con_Server *acpid = NULL;
-static Ecore_Event_Handler *acpid_handler_add = NULL;
-static Ecore_Event_Handler *acpid_handler_del = NULL;
-static Ecore_Event_Handler *acpid_handler_data = NULL;
-static Ecore_Timer *delay_check = NULL;
-static int event_fd = -1;
-static Ecore_Fd_Handler *event_fd_handler = NULL;
-
-static Eina_Bool
-linux_acpi_cb_delay_check(void *data EINA_UNUSED)
-{
- linux_acpi_init();
- _batman_fallback_poll_cb(NULL);
- delay_check = NULL;
- return ECORE_CALLBACK_CANCEL;
-}
-
-static Eina_Bool
-linux_acpi_cb_acpid_add(void *data EINA_UNUSED,
- int type EINA_UNUSED,
- void *event EINA_UNUSED)
-{
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-linux_acpi_cb_acpid_del(void *data EINA_UNUSED,
- int type EINA_UNUSED,
- void *event EINA_UNUSED)
-{
- ecore_con_server_del(acpid);
- acpid = NULL;
- if (acpid_handler_add) ecore_event_handler_del(acpid_handler_add);
- acpid_handler_add = NULL;
- if (acpid_handler_del) ecore_event_handler_del(acpid_handler_del);
- acpid_handler_del = NULL;
- if (acpid_handler_data) ecore_event_handler_del(acpid_handler_data);
- acpid_handler_data = NULL;
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-linux_acpi_cb_acpid_data(void *data EINA_UNUSED,
- int type EINA_UNUSED,
- void *event EINA_UNUSED)
-{
- if (delay_check) ecore_timer_del(delay_check);
- delay_check = ecore_timer_loop_add(0.2, linux_acpi_cb_delay_check, NULL);
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-linux_acpi_cb_event_fd_active(void *data EINA_UNUSED,
- Ecore_Fd_Handler *fd_handler)
-{
- if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
- {
- int lost = 0;
- for (;; )
- {
- char buf[1024];
- int num;
-
- if ((num = read(event_fd, buf, sizeof(buf))) < 1)
- {
- lost = ((errno == EIO) ||
- (errno == EBADF) ||
- (errno == EPIPE) ||
- (errno == EINVAL) ||
- (errno == ENOSPC));
- if (num == 0) break;
- }
- }
- if (lost)
- {
- ecore_main_fd_handler_del(event_fd_handler);
- event_fd_handler = NULL;
- close(event_fd);
- event_fd = -1;
- }
- else
- {
- if (delay_check) ecore_timer_del(delay_check);
- delay_check = ecore_timer_loop_add(0.2, linux_acpi_cb_delay_check, NULL);
- }
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-linux_acpi_init(void)
-{
- Eina_Iterator *powers;
- Eina_Iterator *bats;
-
- bats = eina_file_direct_ls("/proc/acpi/battery");
- if (bats)
- {
- Eina_File_Direct_Info *info;
- FILE *f;
- char *tmp;
- char buf[(PATH_MAX * 2) + 128];
-
- have_power = 0;
- powers = eina_file_direct_ls("/proc/acpi/ac_adapter");
- if (powers)
- {
- EINA_ITERATOR_FOREACH(powers, info)
- {
- if (info->name_length + sizeof("/state") >= sizeof(buf)) continue;
- snprintf(buf, sizeof(buf), "%s/state", info->path);
- f = fopen(buf, "r");
- if (f)
- {
- /* state */
- tmp = fgets(buf, sizeof(buf), f);
- if (tmp) tmp = str_get(tmp);
- if (tmp)
- {
- if (!strcmp(tmp, "on-line")) have_power = 1;
- E_FREE(tmp);
- }
- fclose(f);
- }
- }
- eina_iterator_free(powers);
- }
-
- have_battery = 0;
- acpi_max_full = 0;
- acpi_max_design = 0;
- EINA_ITERATOR_FOREACH(bats, info)
- {
- snprintf(buf, sizeof(buf), "%s/info", info->path);
- f = fopen(buf, "r");
- if (f)
- {
- /* present */
- tmp = fgets(buf, sizeof(buf), f);
- if (tmp) tmp = str_get(tmp);
- if (tmp)
- {
- if (!strcmp(tmp, "yes")) have_battery = 1;
- E_FREE(tmp);
- }
- /* design cap */
- tmp = fgets(buf, sizeof(buf), f);
- if (tmp) tmp = str_get(tmp);
- if (tmp)
- {
- if (strcmp(tmp, "unknown")) acpi_max_design += atoi(tmp);
- E_FREE(tmp);
- }
- /* last full cap */
- tmp = fgets(buf, sizeof(buf), f);
- if (tmp) tmp = str_get(tmp);
- if (tmp)
- {
- if (strcmp(tmp, "unknown")) acpi_max_full += atoi(tmp);
- E_FREE(tmp);
- }
- fclose(f);
- }
- }
-
- eina_iterator_free(bats);
- }
- if (!acpid)
- {
- acpid = ecore_con_server_connect(ECORE_CON_LOCAL_SYSTEM,
- "/var/run/acpid.socket", -1, NULL);
- if (acpid)
- {
- acpid_handler_add = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD,
- linux_acpi_cb_acpid_add, NULL);
- acpid_handler_del = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL,
- linux_acpi_cb_acpid_del, NULL);
- acpid_handler_data = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA,
- linux_acpi_cb_acpid_data, NULL);
- }
- else
- {
- if (event_fd < 0)
- {
- event_fd = open("/proc/acpi/event", O_RDONLY);
- if (event_fd >= 0)
- event_fd_handler = ecore_main_fd_handler_add(event_fd,
- ECORE_FD_READ,
- linux_acpi_cb_event_fd_active,
- NULL,
- NULL, NULL);
- }
- }
- }
-}
-
-static void
-linux_acpi_check(void)
-{
- Eina_List *bats;
-
- battery_full = -1;
- time_left = -1;
- have_battery = 0;
- have_power = 0;
-
- bats = ecore_file_ls("/proc/acpi/battery");
- if (bats)
- {
- char *name;
- int rate = 0;
- int capacity = 0;
-
- EINA_LIST_FREE(bats, name)
- {
- char buf[4096];
- char *tmp;
- FILE *f;
-
- snprintf(buf, sizeof(buf), "/proc/acpi/battery/%s/state", name);
- E_FREE(name);
- f = fopen(buf, "r");
- if (!f) continue;
-
- tmp = file_str_entry_get(f, "present:");
- if (!tmp) goto fclose_and_continue;
- if (!strcasecmp(tmp, "yes")) have_battery = 1;
- E_FREE(tmp);
-
- tmp = file_str_entry_get(f, "capacity state:");
- if (!tmp) goto fclose_and_continue;
- E_FREE(tmp);
-
- tmp = file_str_entry_get(f, "charging state:");
- if (!tmp) goto fclose_and_continue;
- if ((have_power == 0) && (!strcasecmp(tmp, "charging")))
- have_power = 1;
- E_FREE(tmp);
-
- tmp = file_str_entry_get(f, "present rate:");
- if (!tmp) goto fclose_and_continue;
- if (strcasecmp(tmp, "unknown")) rate += atoi(tmp);
- E_FREE(tmp);
-
- tmp = file_str_entry_get(f, "remaining capacity:");
- if (!tmp) goto fclose_and_continue;
- if (strcasecmp(tmp, "unknown")) capacity += atoi(tmp);
- E_FREE(tmp);
-
-fclose_and_continue:
- fclose(f);
- }
-
- if (acpi_max_full > 0)
- battery_full = 100 * (long long)capacity / acpi_max_full;
- else if (acpi_max_design > 0)
- battery_full = 100 * (long long)capacity / acpi_max_design;
- else
- battery_full = -1;
- if (rate <= 0) time_left = -1;
- else
- {
- if (have_power)
- time_left = (3600 * ((long long)acpi_max_full - (long long)capacity)) / rate;
- else
- time_left = (3600 * (long long)capacity) / rate;
- }
- }
-}
-
-/* old school apm support - very old laptops and some devices support this.
- * this is here for legacy support and i wouldn't suggest spending any
- * effort on it as it is complete below as best i know, but could have missed
- * one or 2 things, but not worth fixing */
-static void linux_apm_init(void);
-static void linux_apm_check(void);
-
-static void
-linux_apm_init(void)
-{
- /* nothing to do */
-}
-
-static void
-linux_apm_check(void)
-{
- FILE *f;
- char s1[32], s2[32], s3[32], *endptr;
- int apm_flags, ac_stat, bat_stat, bat_flags, bat_val, time_val;
-
- battery_full = -1;
- time_left = -1;
- have_battery = 0;
- have_power = 0;
-
- f = fopen("/proc/apm", "r");
- if (!f) return;
-
- if (fscanf(f, "%*s %*s %x %x %x %x %31s %31s %31s",
- &apm_flags, &ac_stat, &bat_stat, &bat_flags, s1, s2, s3) != 7)
- {
- fclose(f);
- return;
- }
- fclose(f);
-
- bat_val = strtol(s1, &endptr, 10);
- if (*endptr != '%') return;
-
- else if (!strcmp(s3, "min"))
- time_val = atoi(s2) * 60;
- else time_val = 0;
-
- if ((bat_flags != 0xff) && (bat_flags & 0x80))
- {
- have_battery = 0;
- have_power = 0;
- battery_full = 100;
- time_left = 0;
- return;
- }
-
- if (bat_val >= 0)
- {
- have_battery = 1;
- have_power = ac_stat;
- battery_full = bat_val;
- if (battery_full > 100) battery_full = 100;
- if (ac_stat == 1) time_left = -1;
- else time_left = time_val;
- }
- else
- {
- switch (bat_stat)
- {
- case 0: /* high */
- have_battery = 1;
- have_power = ac_stat;
- battery_full = 100;
- time_left = -1;
- break;
-
- case 1: /* medium */
- have_battery = 1;
- have_power = ac_stat;
- battery_full = 50;
- time_left = -1;
- break;
-
- case 2: /* low */
- have_battery = 1;
- have_power = ac_stat;
- battery_full = 25;
- time_left = -1;
- break;
-
- case 3: /* charging */
- have_battery = 1;
- have_power = ac_stat;
- battery_full = 100;
- time_left = -1;
- break;
- }
- }
-}
-
-/* for older mac powerbooks. legacy as well like linux_apm_init/check. leave
- * it alone unless you have to touch it */
-static void linux_pmu_init(void);
-static void linux_pmu_check(void);
-
-static void
-linux_pmu_init(void)
-{
- /* nothing to do */
-}
-
-static void
-linux_pmu_check(void)
-{
- FILE *f;
- char buf[4096];
- Eina_List *bats;
- char *name;
- int ac = 0;
- int charge = 0;
- int max_charge = 0;
- int seconds = 0;
- int curcharge = 0;
- int curmax = 0;
-
- f = fopen("/proc/pmu/info", "r");
- if (f)
- {
- char *tmp;
- /* Skip driver */
- tmp = fgets(buf, sizeof(buf), f);
- if (!tmp)
- {
- EINA_LOG_ERR("no driver info in /proc/pmu/info");
- goto fclose_and_continue;
- }
- /* Skip firmware */
- tmp = fgets(buf, sizeof(buf), f);
- if (!tmp)
- {
- EINA_LOG_ERR("no firmware info in /proc/pmu/info");
- goto fclose_and_continue;
- }
- /* Read ac */
- tmp = fgets(buf, sizeof(buf), f);
- if (!tmp)
- {
- EINA_LOG_ERR("no AC info in /proc/pmu/info");
- goto fclose_and_continue;
- }
- ac = int_get(buf);
-fclose_and_continue:
- fclose(f);
- }
- bats = ecore_file_ls("/proc/pmu");
- if (bats)
- {
- have_battery = 1;
- have_power = ac;
- EINA_LIST_FREE(bats, name)
- {
- if (strncmp(name, "battery", 7)) continue;
- snprintf(buf, sizeof(buf), "/proc/pmu/%s", name);
- f = fopen(buf, "r");
- if (f)
- {
- int timeleft = 0;
- int current = 0;
-
- while (fgets(buf, sizeof (buf), f))
- {
- char *token;
-
- if ((token = strtok(buf, ":")))
- {
- if (!strncmp("charge", token, 6))
- charge = atoi(strtok(0, ": "));
- else if (!strncmp("max_charge", token, 9))
- max_charge = atoi(strtok(0, ": "));
- else if (!strncmp("current", token, 7))
- current = atoi(strtok(0, ": "));
- else if (!strncmp("time rem", token, 8))
- timeleft = atoi(strtok(0, ": "));
- else
- strtok(0, ": ");
- }
- }
- curmax += max_charge;
- curcharge += charge;
- fclose(f);
- if (!current)
- {
- /* Neither charging nor discharging */
- }
- else if (!ac)
- {
- /* When on dc, we are discharging */
- seconds += timeleft;
- }
- else
- {
- /* Charging - works in parallel */
- seconds = MAX(timeleft, seconds);
- }
- }
-
- E_FREE(name);
- }
- if (max_charge > 0) battery_full = ((long long)charge * 100) / max_charge;
- else battery_full = 0;
- time_left = seconds;
- }
- else
- {
- have_power = ac;
- have_battery = 0;
- battery_full = -1;
- time_left = -1;
- }
-}
-
-#endif
-
-static Eina_Bool
-_batman_fallback_poll_cb(void *data)
-{
- Instance *inst = data;
-
-#if defined(HAVE_CFBASE_H) /* OS X */
- darwin_check();
- return ECORE_CALLBACK_RENEW;
-#else
- switch (mode)
- {
- case CHECK_ACPI:
- linux_acpi_check();
- break;
-
- case CHECK_APM:
- linux_apm_check();
- break;
-
- case CHECK_PMU:
- linux_pmu_check();
- break;
-
- case CHECK_SYS_CLASS_POWER_SUPPLY:
- linux_sys_class_power_supply_check();
- break;
-
- default:
- battery_full = -1;
- time_left = -1;
- have_battery = 0;
- have_power = 0;
- break;
- }
-#endif
-
- _batman_update(inst, battery_full, time_left, have_battery, have_power);
-
- return EINA_TRUE;
-}
-
-static int
-dir_has_contents(const char *dir)
-{
- Eina_List *bats;
- char *file;
- int count;
-
- bats = ecore_file_ls(dir);
-
- count = eina_list_count(bats);
- EINA_LIST_FREE(bats, file)
- E_FREE(file);
- if (count > 0) return 1;
- return 0;
-}
-
-int
-_batman_fallback_start(Instance *inst)
-{
-#if defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__)
- return 0;
-#elif defined(HAVE_CFBASE_H) /* OS X */
- darwin_init();
-#else
- if ((ecore_file_is_dir(sys_power_dir)) && (dir_has_contents(sys_power_dir)))
- {
- mode = CHECK_SYS_CLASS_POWER_SUPPLY;
- linux_sys_class_power_supply_init();
- }
- else if (ecore_file_is_dir("/proc/acpi")) /* <= 2.6.24 */
- {
- mode = CHECK_ACPI;
- linux_acpi_init();
- }
- else if (ecore_file_exists("/proc/apm"))
- {
- mode = CHECK_APM;
- linux_apm_init();
- }
- else if (ecore_file_is_dir("/proc/pmu"))
- {
- mode = CHECK_PMU;
- linux_pmu_init();
- }
-#endif
-
- poller = ecore_poller_add(ECORE_POLLER_CORE, inst->cfg->batman.poll_interval, _batman_fallback_poll_cb, inst);
-
- return 1;
-}
-
-void
-_batman_fallback_stop(void)
-{
- E_FREE_FUNC(poller, ecore_poller_del);
-}
-
diff --git a/src/modules/sysinfo/batman/batman_sysctl.c b/src/modules/sysinfo/batman/batman_sysctl.c
deleted file mode 100644
index 39d71d115e..0000000000
--- a/src/modules/sysinfo/batman/batman_sysctl.c
+++ /dev/null
@@ -1,398 +0,0 @@
-#include "batman.h"
-
-#include <sys/types.h>
-#include <sys/sysctl.h>
-
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-# include <dev/acpica/acpiio.h>
-# include <sys/ioctl.h>
-#endif
-
-#if defined(__OpenBSD__) || defined(__NetBSD__)
-# include <sys/param.h>
-# include <sys/sensors.h>
-#endif
-
-EINTERN extern Eina_List *batman_device_batteries;
-EINTERN extern Eina_List *batman_device_ac_adapters;
-
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
-static Eina_Bool _batman_sysctl_battery_update_poll(void *data);
-static int _batman_sysctl_battery_update(Instance *inst);
-#endif
-
-int
-_batman_sysctl_start(Instance *inst)
-{
-#if defined(__OpenBSD__) || defined(__NetBSD__)
- int mib[] = {CTL_HW, HW_SENSORS, 0, 0, 0};
- int devn, i = 0;
- struct sensordev snsrdev;
- size_t sdlen = sizeof(struct sensordev);
- char name[256];
-
- if (eina_list_count(batman_device_batteries) != 0)
- {
- _batman_sysctl_battery_update(inst);
- return 1;
- }
-
- for (devn = 0;; devn++)
- {
- mib[2] = devn;
- if (sysctl(mib, 3, &snsrdev, &sdlen, NULL, 0) == -1)
- {
- if (errno == ENXIO)
- continue;
- if (errno == ENOENT)
- break;
- }
-
- snprintf(name, sizeof(name), "acpibat%d", i);
- if (!strcmp(name, snsrdev.xname))
- {
- Battery *bat = E_NEW(Battery, 1);
- if (!bat)
- return 0;
- bat->inst = inst;
- bat->udi = eina_stringshare_add(name),
- bat->mib = malloc(sizeof(int) * 5);
- if (!bat->mib) return 0;
- bat->mib[0] = mib[0];
- bat->mib[1] = mib[1];
- bat->mib[2] = mib[2];
- bat->technology = eina_stringshare_add("Unknown");
- bat->model = eina_stringshare_add("Unknown");
- bat->last_update = ecore_time_get();
- bat->vendor = eina_stringshare_add("Unknown");
- bat->poll = ecore_poller_add(ECORE_POLLER_CORE,
- inst->cfg->batman.poll_interval,
- _batman_sysctl_battery_update_poll, inst);
- batman_device_batteries = eina_list_append(batman_device_batteries, bat);
- ++i;
- }
-
- if (!strcmp("acpiac0", snsrdev.xname))
- {
- Ac_Adapter *ac = E_NEW(Ac_Adapter, 1);
- if (!ac) return 0;
- ac->inst = inst;
- ac->udi = eina_stringshare_add("acpiac0");
- ac->mib = malloc(sizeof(int) * 5);
- if (!ac->mib) return 0;
- ac->mib[0] = mib[0];
- ac->mib[1] = mib[1];
- ac->mib[2] = mib[2];
- batman_device_ac_adapters = eina_list_append(batman_device_ac_adapters, ac);
- }
- }
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
- size_t len;
- int i, count, fd;
- union acpi_battery_ioctl_arg battio;
-
- if (eina_list_count(batman_device_batteries) != 0)
- {
- _batman_sysctl_battery_update(inst);
- return 1;
- }
-
- if ((fd = open("/dev/acpi", O_RDONLY)) == -1)
- return 0;
-
- if (ioctl(fd, ACPIIO_BATT_GET_UNITS, &count) == -1)
- {
- close(fd);
- return 0;
- }
-
- for (i = 0; i < count; i++)
- {
- battio.unit = i;
- if (ioctl(fd, ACPIIO_BATT_GET_BIF, &battio) != -1)
- {
- Battery *bat = E_NEW(Battery, 1);
- if (!bat) return 0;
-
- bat->inst = inst;
- bat->last_update = ecore_time_get();
- bat->last_full_charge = battio.bif.lfcap;
- bat->model = eina_stringshare_add(battio.bif.model);
- bat->vendor = eina_stringshare_add(battio.bif.oeminfo);
- bat->technology = eina_stringshare_add(battio.bif.type);
- bat->poll = ecore_poller_add(ECORE_POLLER_CORE,
- inst->cfg->batman.poll_interval,
- _batman_sysctl_battery_update_poll, inst);
-
- batman_device_batteries = eina_list_append(batman_device_batteries, bat);
- }
- }
-
- close(fd);
-
- if ((sysctlbyname("hw.acpi.acline", NULL, &len, NULL, 0)) != -1)
- {
- Ac_Adapter *ac = E_NEW(Ac_Adapter, 1);
- if (!ac)
- return 0;
- ac->inst = inst;
- ac->mib = malloc(sizeof(int) * 3);
- if (!ac->mib) return 0;
- len = sizeof(ac->mib);
- sysctlnametomib("hw.acpi.acline", ac->mib, &len);
-
- ac->udi = eina_stringshare_add("hw.acpi.acline");
-
- batman_device_ac_adapters = eina_list_append(batman_device_ac_adapters, ac);
- }
-#endif
- _batman_sysctl_battery_update(inst);
-
- return 1;
-}
-
-void
-_batman_sysctl_stop(Instance *inst)
-{
- Instance *child;
- Eina_List *l;
- Battery *bat;
- Ac_Adapter *ac;
- int bat_num = 0;
-
- /* This is a dummy battery we return here. */
- if (inst->cfg->batman.have_battery != 1)
- {
- return;
- }
-
- /* If this is NOT the last batman gadget then we return before
- * freeing everything. This is NOT optimal but is allows us to have
- * many gadgets and share the same data between multiple batman
- * gadget instances. The instance will be deleted.
- */
-
- EINA_LIST_FOREACH(sysinfo_instances, l, child)
- {
- if (inst->cfg->esm == E_SYSINFO_MODULE_BATMAN ||
- inst->cfg->esm == E_SYSINFO_MODULE_SYSINFO)
- {
- if (child != inst)
- {
- bat_num++;
- }
- }
- }
-
- /* This is not the last batman gadget. */
- if (bat_num > 0) return;
-
- /* We have no batman or sysinfo gadgets remaining. We can safely
- remove these batteries and adapters. */
-
- EINA_LIST_FREE(batman_device_ac_adapters, ac)
- {
- E_FREE_FUNC(ac->udi, eina_stringshare_del);
- E_FREE(ac->mib);
- E_FREE(ac);
- }
-
- EINA_LIST_FREE(batman_device_batteries, bat)
- {
- E_FREE_FUNC(bat->udi, eina_stringshare_del);
- E_FREE_FUNC(bat->technology, eina_stringshare_del);
- E_FREE_FUNC(bat->model, eina_stringshare_del);
- E_FREE_FUNC(bat->vendor, eina_stringshare_del);
- E_FREE_FUNC(bat->poll, ecore_poller_del);
- E_FREE(bat->mib);
- E_FREE(bat);
- }
-}
-
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
-static Eina_Bool
-_batman_sysctl_battery_update_poll(void *data EINA_UNUSED)
-{
- Eina_List *l;
- Instance *inst;
-
- /* We need to ensure we update both batman and sysinfo instances. */
- EINA_LIST_FOREACH(sysinfo_instances, l, inst)
- {
- if (inst->cfg->esm == E_SYSINFO_MODULE_BATMAN ||
- inst->cfg->esm == E_SYSINFO_MODULE_SYSINFO)
- _batman_sysctl_battery_update(inst);
- }
-
- return EINA_TRUE;
-}
-
-#endif
-
-static int
-_batman_sysctl_battery_update(Instance *inst)
-{
- Battery *bat;
- Ac_Adapter *ac;
- Eina_List *l;
-#if defined(__OpenBSD__) || defined(__NetBSD__)
- double _time, charge;
- struct sensor s;
- size_t slen = sizeof(struct sensor);
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
- union acpi_battery_ioctl_arg battio;
- size_t len;
- int value, fd, i = 0;
-#endif
-
- EINA_LIST_FOREACH(batman_device_batteries, l, bat)
- {
- /* update the poller interval */
- ecore_poller_poller_interval_set(bat->poll,
- inst->cfg->batman.poll_interval);
-#if defined(__OpenBSD__) || defined(__NetBSD__)
- /* last full capacity */
- bat->mib[3] = 7;
- bat->mib[4] = 0;
- if (sysctl(bat->mib, 5, &s, &slen, NULL, 0) != -1)
- {
- bat->last_full_charge = (double)s.value;
- }
-
- /* remaining capacity */
- bat->mib[3] = 7;
- bat->mib[4] = 3;
- if (sysctl(bat->mib, 5, &s, &slen, NULL, 0) != -1)
- {
- charge = (double)s.value;
- }
-
- /* This is a workaround because there's an ACPI bug */
- if ((EINA_FLT_EQ(charge, 0.0)) || (EINA_FLT_EQ(bat->last_full_charge, 0.0)))
- {
- /* last full capacity */
- bat->mib[3] = 8;
- bat->mib[4] = 0;
- if (sysctl(bat->mib, 5, &s, &slen, NULL, 0) != -1)
- {
- bat->last_full_charge = (double)s.value;
- if (bat->last_full_charge < 0) return EINA_TRUE;
- }
-
- /* remaining capacity */
- bat->mib[3] = 8;
- bat->mib[4] = 3;
- if (sysctl(bat->mib, 5, &s, &slen, NULL, 0) != -1)
- {
- charge = (double)s.value;
- }
- }
-
- bat->got_prop = 1;
-
- _time = ecore_time_get();
- if ((bat->got_prop) && (!EINA_FLT_EQ(charge, bat->current_charge)))
- bat->charge_rate = ((charge - bat->current_charge) / (_time - bat->last_update));
- bat->last_update = _time;
- bat->current_charge = charge;
- bat->percent = 100 * (bat->current_charge / bat->last_full_charge);
- if (bat->current_charge >= bat->last_full_charge)
- bat->percent = 100;
-
- if (bat->got_prop)
- {
- if (bat->charge_rate > 0)
- {
- if (inst->cfg->batman.fuzzy && (++inst->cfg->batman.fuzzcount <= 10) && (bat->time_full > 0))
- bat->time_full = (((bat->last_full_charge - bat->current_charge) / bat->charge_rate) + bat->time_full) / 2;
- else
- bat->time_full = (bat->last_full_charge - bat->current_charge) / bat->charge_rate;
- bat->time_left = -1;
- }
- else
- {
- if (inst->cfg->batman.fuzzy && (inst->cfg->batman.fuzzcount <= 10) && (bat->time_left > 0))
- bat->time_left = (((0 - bat->current_charge) / bat->charge_rate) + bat->time_left) / 2;
- else
- bat->time_left = (0 - bat->current_charge) / bat->charge_rate;
- bat->time_full = -1;
- }
- }
- else
- {
- bat->time_full = -1;
- bat->time_left = -1;
- }
-
- /* battery state 1: discharge, 2: charge */
- bat->mib[3] = 10;
- bat->mib[4] = 0;
- if (sysctl(bat->mib, 5, &s, &slen, NULL, 0) == -1)
- {
- if (s.value == 2)
- bat->charging = 1;
- else
- bat->charging = 0;
- }
- _batman_device_update(bat->inst);
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
-
- if ((fd = open("/dev/acpi", O_RDONLY)) != -1)
- {
- battio.unit = i;
-
- if (ioctl(fd, ACPIIO_BATT_GET_BATTINFO, &battio) != -1)
- {
- bat->got_prop = 1;
-
- bat->percent = battio.battinfo.cap;
-
- if (battio.battinfo.state & ACPI_BATT_STAT_CHARGING)
- bat->charging = EINA_TRUE;
- else
- bat->charging = EINA_FALSE;
-
- bat->time_left = battio.battinfo.min * 60;
- if (bat->charge_rate > 0)
- {
- bat->time_full = (bat->last_full_charge - bat->current_charge) / bat->charge_rate;
- }
- }
- else
- {
- bat->time_full = bat->time_left = -1;
- }
-
- close(fd);
- }
-
- _batman_device_update(inst);
- i++;
-#endif
- }
-
- EINA_LIST_FOREACH(batman_device_ac_adapters, l, ac)
- {
-#if defined(__OpenBSD__) || defined(__NetBSD__)
- /* AC State */
- ac->mib[3] = 9;
- ac->mib[4] = 0;
- if (sysctl(ac->mib, 5, &s, &slen, NULL, 0) != -1)
- {
- if (s.value)
- ac->present = 1;
- else
- ac->present = 0;
- }
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
- len = sizeof(value);
- if ((sysctl(ac->mib, 3, &value, &len, NULL, 0)) != -1)
- {
- ac->present = value;
- }
-#endif
- }
-
- return EINA_TRUE;
-}
-
diff --git a/src/modules/sysinfo/batman/batman_udev.c b/src/modules/sysinfo/batman/batman_udev.c
deleted file mode 100644
index 3281b2a9d5..0000000000
--- a/src/modules/sysinfo/batman/batman_udev.c
+++ /dev/null
@@ -1,393 +0,0 @@
-#include "batman.h"
-
-static void _batman_udev_event_battery(const char *syspath, Eeze_Udev_Event event, void *data, Eeze_Udev_Watch *watch);
-static void _batman_udev_event_ac(const char *syspath, Eeze_Udev_Event event, void *data, Eeze_Udev_Watch *watch);
-static void _batman_udev_battery_add(const char *syspath, Instance *inst);
-static void _batman_udev_ac_add(const char *syspath, Instance *inst);
-static void _batman_udev_battery_del(const char *syspath, Instance *inst);
-static void _batman_udev_ac_del(const char *syspath, Instance *inst);
-static Eina_Bool _batman_udev_battery_update_poll(void *data);
-static void _batman_udev_battery_update(const char *syspath, Battery *bat, Instance *inst);
-static void _batman_udev_ac_update(const char *syspath, Ac_Adapter *ac, Instance *inst);
-
-EINTERN extern Eina_List *batman_device_batteries;
-EINTERN extern Eina_List *batman_device_ac_adapters;
-EINTERN extern double batman_init_time;
-
-int
-_batman_udev_start(Instance *inst)
-{
- Eina_List *devices;
- const char *dev;
-
- devices = eeze_udev_find_by_type(EEZE_UDEV_TYPE_POWER_BAT, NULL);
- EINA_LIST_FREE(devices, dev)
- _batman_udev_battery_add(dev, inst);
-
- devices = eeze_udev_find_by_type(EEZE_UDEV_TYPE_POWER_AC, NULL);
- EINA_LIST_FREE(devices, dev)
- _batman_udev_ac_add(dev, inst);
-
- if (!inst->cfg->batman.batwatch)
- inst->cfg->batman.batwatch = eeze_udev_watch_add(EEZE_UDEV_TYPE_POWER_BAT, EEZE_UDEV_EVENT_NONE, _batman_udev_event_battery, inst);
- if (!inst->cfg->batman.acwatch)
- inst->cfg->batman.acwatch = eeze_udev_watch_add(EEZE_UDEV_TYPE_POWER_AC, EEZE_UDEV_EVENT_NONE, _batman_udev_event_ac, inst);
-
- batman_init_time = ecore_time_get();
- return 1;
-}
-
-void
-_batman_udev_stop(Instance *inst)
-{
- Ac_Adapter *ac;
- Battery *bat;
- Eina_List *l;
- Instance *child;
- int bat_num = 0;
-
- /* This is a dummy battery we return here. */
- if (inst->cfg->batman.have_battery != 1)
- {
- return;
- }
-
- if (inst->cfg->batman.batwatch)
- E_FREE_FUNC(inst->cfg->batman.batwatch, eeze_udev_watch_del);
- if (inst->cfg->batman.acwatch)
- E_FREE_FUNC(inst->cfg->batman.acwatch, eeze_udev_watch_del);
-
- /* If this is NOT the last batman gadget then we return before
- * freeing everything. This is NOT optimal but is allows us to have
- * many gadgets and share the same data between multiple batman
- * gadget instances. The instance will be deleted.
- */
-
- EINA_LIST_FOREACH(sysinfo_instances, l, child)
- {
- if (inst->cfg->esm == E_SYSINFO_MODULE_BATMAN ||
- inst->cfg->esm == E_SYSINFO_MODULE_SYSINFO)
- {
- if (child != inst)
- {
- bat_num++;
- }
- }
- }
-
- /* This is not the last batman gadget. */
- if (bat_num > 0) return;
-
- /* We have no batman or sysinfo gadgets remaining. We can safely
- remove these batteries and adapters. */
-
- EINA_LIST_FREE(batman_device_ac_adapters, ac)
- {
- E_FREE(ac);
- }
- EINA_LIST_FREE(batman_device_batteries, bat)
- {
- eina_stringshare_del(bat->udi);
- eina_stringshare_del(bat->technology);
- eina_stringshare_del(bat->model);
- eina_stringshare_del(bat->vendor);
- E_FREE_FUNC(bat->poll, ecore_poller_del);
- E_FREE(bat);
- }
-}
-
-static void
-_batman_udev_event_battery(const char *syspath, Eeze_Udev_Event event, void *data, Eeze_Udev_Watch *watch EINA_UNUSED)
-{
- Instance *inst = data;
-
- if ((event & EEZE_UDEV_EVENT_ADD) ||
- (event & EEZE_UDEV_EVENT_ONLINE))
- _batman_udev_battery_add(syspath, inst);
- else if ((event & EEZE_UDEV_EVENT_REMOVE) ||
- (event & EEZE_UDEV_EVENT_OFFLINE))
- _batman_udev_battery_del(syspath, inst);
- else /* must be change */
- _batman_udev_battery_update(syspath, NULL, inst);
-}
-
-static void
-_batman_udev_event_ac(const char *syspath, Eeze_Udev_Event event, void *data, Eeze_Udev_Watch *watch EINA_UNUSED)
-{
- Instance *inst = data;
-
- if ((event & EEZE_UDEV_EVENT_ADD) ||
- (event & EEZE_UDEV_EVENT_ONLINE))
- _batman_udev_ac_add(syspath, inst);
- else if ((event & EEZE_UDEV_EVENT_REMOVE) ||
- (event & EEZE_UDEV_EVENT_OFFLINE))
- _batman_udev_ac_del(syspath, inst);
- else /* must be change */
- _batman_udev_ac_update(syspath, NULL, inst);
-}
-
-static void
-_batman_udev_battery_add(const char *syspath, Instance *inst)
-{
- Battery *bat;
- Eina_List *batteries = _batman_battery_find(syspath), *l;
- Eina_Bool exists = EINA_FALSE;
-
- if (eina_list_count(batteries))
- {
- EINA_LIST_FOREACH(batteries, l, bat)
- {
- if (inst == bat->inst)
- {
- _batman_udev_battery_update(NULL, bat, inst);
- exists = EINA_TRUE;
- }
- }
- if (exists)
- {
- eina_stringshare_del(syspath);
- eina_list_free(batteries);
- return;
- }
- }
-
- if (!(bat = E_NEW(Battery, 1)))
- {
- eina_stringshare_del(syspath);
- return;
- }
- bat->inst = inst;
- bat->last_update = ecore_time_get();
- bat->udi = eina_stringshare_add(syspath);
- bat->poll = ecore_poller_add(ECORE_POLLER_CORE,
- bat->inst->cfg->batman.poll_interval,
- _batman_udev_battery_update_poll, bat);
- batman_device_batteries = eina_list_append(batman_device_batteries, bat);
- _batman_udev_battery_update(syspath, bat, inst);
-}
-
-static void
-_batman_udev_ac_add(const char *syspath, Instance *inst)
-{
- Ac_Adapter *ac;
- Eina_List *adapters = _batman_ac_adapter_find(syspath), *l;
- Eina_Bool exists = EINA_FALSE;
-
- if (eina_list_count(adapters))
- {
- EINA_LIST_FOREACH(adapters, l, ac)
- {
- if (inst == ac->inst)
- {
- _batman_udev_ac_update(NULL, ac, inst);
- exists = EINA_TRUE;
- }
- }
- if (exists)
- {
- eina_stringshare_del(syspath);
- eina_list_free(adapters);
- return;
- }
- }
-
- if (!(ac = E_NEW(Ac_Adapter, 1)))
- {
- eina_stringshare_del(syspath);
- return;
- }
- ac->inst = inst;
- ac->udi = eina_stringshare_add(syspath);
- batman_device_ac_adapters = eina_list_append(batman_device_ac_adapters, ac);
- _batman_udev_ac_update(syspath, ac, inst);
-}
-
-static void
-_batman_udev_battery_del(const char *syspath, Instance *inst)
-{
- Battery *bat;
- Eina_List *batteries = _batman_battery_find(syspath), *l;
- if (!eina_list_count(batteries))
- {
- eina_stringshare_del(syspath);
- return;
- }
-
- EINA_LIST_FOREACH(batman_device_batteries, l, bat)
- {
- if ((inst == bat->inst) && (eina_streq(bat->udi, syspath)))
- {
- batman_device_batteries = eina_list_remove_list(batman_device_batteries, l);
- eina_stringshare_del(bat->udi);
- eina_stringshare_del(bat->technology);
- eina_stringshare_del(bat->model);
- eina_stringshare_del(bat->vendor);
- E_FREE_FUNC(bat->poll, ecore_poller_del);
- E_FREE(bat);
- }
- }
- eina_stringshare_del(syspath);
- eina_list_free(batteries);
-}
-
-static void
-_batman_udev_ac_del(const char *syspath, Instance *inst)
-{
- Ac_Adapter *ac;
- Eina_List *adapters = _batman_ac_adapter_find(syspath), *l;
-
- if (!eina_list_count(adapters))
- {
- eina_stringshare_del(syspath);
- return;
- }
- EINA_LIST_FOREACH(batman_device_ac_adapters, l, ac)
- {
- if (inst == ac->inst)
- {
- batman_device_ac_adapters = eina_list_remove_list(batman_device_ac_adapters, l);
- eina_stringshare_del(ac->udi);
- E_FREE(ac);
- }
- }
- eina_stringshare_del(syspath);
- eina_list_free(adapters);
-}
-
-static Eina_Bool
-_batman_udev_battery_update_poll(void *data)
-{
- Battery *bat = data;
-
- _batman_udev_battery_update(NULL, bat, bat->inst);
-
- return EINA_TRUE;
-}
-
-#define GET_NUM(TYPE, VALUE, PROP) \
- do \
- { \
- test = eeze_udev_syspath_get_property(TYPE->udi, #PROP); \
- if (test) \
- { \
- TYPE->VALUE = strtod(test, NULL); \
- eina_stringshare_del(test); \
- } \
- } \
- while (0)
-
-#define GET_STR(TYPE, VALUE, PROP) TYPE->VALUE = eeze_udev_syspath_get_property(TYPE->udi, #PROP)
-
-static void
-_batman_udev_battery_update(const char *syspath, Battery *bat, Instance *inst)
-{
- const char *test;
- double t, charge;
-
- if (!bat)
- {
- _batman_udev_battery_add(syspath, inst);
- return;
- }
- /* update the poller interval */
- ecore_poller_poller_interval_set(bat->poll, bat->inst->cfg->batman.poll_interval);
-
- GET_NUM(bat, present, POWER_SUPPLY_PRESENT);
- if (!bat->got_prop) /* only need to get these once */
- {
- GET_STR(bat, technology, POWER_SUPPLY_TECHNOLOGY);
- GET_STR(bat, model, POWER_SUPPLY_MODEL_NAME);
- GET_STR(bat, vendor, POWER_SUPPLY_MANUFACTURER);
- GET_NUM(bat, design_charge, POWER_SUPPLY_ENERGY_FULL_DESIGN);
- if (eina_dbl_exact(bat->design_charge, 0))
- GET_NUM(bat, design_charge, POWER_SUPPLY_CHARGE_FULL_DESIGN);
- }
- GET_NUM(bat, last_full_charge, POWER_SUPPLY_ENERGY_FULL);
- if (eina_dbl_exact(bat->last_full_charge, 0))
- GET_NUM(bat, last_full_charge, POWER_SUPPLY_CHARGE_FULL);
- test = eeze_udev_syspath_get_property(bat->udi, "POWER_SUPPLY_ENERGY_NOW");
- if (!test)
- test = eeze_udev_syspath_get_property(bat->udi, "POWER_SUPPLY_CHARGE_NOW");
- if (test)
- {
- double charge_rate = 0;
-
- charge = strtod(test, NULL);
- eina_stringshare_del(test);
- t = ecore_time_get();
- if ((bat->got_prop) && (!eina_dbl_exact(charge, bat->current_charge)) && (!eina_dbl_exact(bat->current_charge, 0)))
- charge_rate = ((charge - bat->current_charge) / (t - bat->last_update));
- if ((!eina_dbl_exact(charge_rate, 0)) || eina_dbl_exact(bat->last_update, 0) || eina_dbl_exact(bat->current_charge, 0))
- {
- bat->last_update = t;
- bat->current_charge = charge;
- bat->charge_rate = charge_rate;
- }
- bat->percent = 100 * (bat->current_charge / bat->last_full_charge);
- if (bat->got_prop)
- {
- if (bat->charge_rate > 0)
- {
- if (bat->inst->cfg->batman.fuzzy && (++bat->inst->cfg->batman.fuzzcount <= 10) && (bat->time_full > 0))
- bat->time_full = (((bat->last_full_charge - bat->current_charge) / bat->charge_rate) + bat->time_full) / 2;
- else
- bat->time_full = (bat->last_full_charge - bat->current_charge) / bat->charge_rate;
- bat->time_left = -1;
- }
- else
- {
- if (bat->inst->cfg->batman.fuzzy && (bat->inst->cfg->batman.fuzzcount <= 10) && (bat->time_left > 0))
- bat->time_left = (((0 - bat->current_charge) / bat->charge_rate) + bat->time_left) / 2;
- else
- bat->time_left = (0 - bat->current_charge) / bat->charge_rate;
- bat->time_full = -1;
- }
- }
- else
- {
- bat->time_full = -1;
- bat->time_left = -1;
- }
- }
- if (bat->inst->cfg->batman.fuzzcount > 10) bat->inst->cfg->batman.fuzzcount = 0;
- test = eeze_udev_syspath_get_property(bat->udi, "POWER_SUPPLY_STATUS");
- if (test)
- {
- if (!strcmp(test, "Charging"))
- bat->charging = 1;
- else if ((!strcmp(test, "Unknown")) && (bat->charge_rate > 0))
- bat->charging = 1;
- else if ((!strcmp(test, "Unknown")) && (bat->charge_rate <= 0) && (bat->last_full_charge <= 0))
- {
- _batman_udev_battery_del(syspath, inst);
- eina_stringshare_del(test);
- return;
- }
- else
- bat->charging = 0;
- eina_stringshare_del(test);
- }
- else
- bat->charging = 0;
- if (bat->got_prop)
- _batman_device_update(bat->inst);
- bat->got_prop = 1;
-}
-
-static void
-_batman_udev_ac_update(const char *syspath, Ac_Adapter *ac, Instance *inst)
-{
- const char *test;
-
- if (!ac)
- {
- _batman_udev_ac_add(syspath, inst);
- return;
- }
-
- GET_NUM(ac, present, POWER_SUPPLY_ONLINE);
- /* yes, it's really that simple. */
-
- _batman_device_update(inst);
-}
-
diff --git a/src/modules/sysinfo/batman/batman_upower.c b/src/modules/sysinfo/batman/batman_upower.c
deleted file mode 100644
index 7fe8493d40..0000000000
--- a/src/modules/sysinfo/batman/batman_upower.c
+++ /dev/null
@@ -1,419 +0,0 @@
-#include "batman.h"
-
-#define BUS "org.freedesktop.UPower"
-#define PATH "/org/freedesktop/UPower"
-#define IFACE "org.freedesktop.UPower"
-# define IFACE_DEVICE "org.freedesktop.UPower.Device"
-# define IFACE_PROPERTIES "org.freedesktop.DBus.Properties"
-
-EINTERN extern Eina_List *batman_device_batteries;
-EINTERN extern Eina_List *batman_device_ac_adapters;
-EINTERN extern double batman_init_time;
-
-static Eldbus_Connection *conn;
-static Eldbus_Proxy *upower_proxy;
-static Eldbus_Proxy *upower_proxy_bat;
-static Eldbus_Proxy *upower_proxy_ac;
-
-typedef struct _Upower_Data Upower_Data;
-struct _Upower_Data
-{
- Eldbus_Proxy *proxy;
- Instance *inst;
-};
-
-static void
-_battery_free(Battery *bat)
-{
- Eldbus_Object *obj = eldbus_proxy_object_get(bat->proxy);
- eldbus_proxy_unref(bat->proxy);
- eldbus_object_unref(obj);
-
- batman_device_batteries = eina_list_remove(batman_device_batteries, bat);
- eina_stringshare_del(bat->udi);
- if (bat->model)
- eina_stringshare_del(bat->model);
- if (bat->vendor)
- eina_stringshare_del(bat->vendor);
- E_FREE(bat);
-}
-
-static void
-_ac_free(Ac_Adapter *ac)
-{
- Eldbus_Object *obj = eldbus_proxy_object_get(ac->proxy);
- eldbus_proxy_unref(ac->proxy);
- eldbus_object_unref(obj);
-
- batman_device_ac_adapters = eina_list_remove(batman_device_ac_adapters, ac);
- eina_stringshare_del(ac->udi);
- E_FREE(ac);
-}
-
-static void
-_ac_get_all_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- Ac_Adapter *ac = data;
- Eldbus_Message_Iter *array, *dict, *variant;
-
- if (!eldbus_message_arguments_get(msg, "a{sv}", &array))
- return;
-
- while (eldbus_message_iter_get_and_next(array, 'e', &dict))
- {
- const char *key;
-
- if (!eldbus_message_iter_arguments_get(dict, "sv", &key, &variant))
- continue;
-
- if (!strcmp(key, "Online"))
- {
- Eina_Bool b;
- eldbus_message_iter_arguments_get(variant, "b", &b);
- ac->present = b;
- break;
- }
- }
- _batman_device_update(ac->inst);
-}
-
-static void
-_ac_changed_cb(void *data, const Eldbus_Message *msg EINA_UNUSED)
-{
- Ac_Adapter *ac = data;
- eldbus_proxy_property_get_all(ac->proxy, _ac_get_all_cb, ac);
-}
-
-static void
-_process_ac(Eldbus_Proxy *proxy, Instance *inst)
-{
- Ac_Adapter *ac;
- ac = E_NEW(Ac_Adapter, 1);
- if (!ac) goto error;
- ac->inst = inst;
- ac->proxy = proxy;
- ac->udi = eina_stringshare_add(eldbus_object_path_get(eldbus_proxy_object_get(proxy)));
- eldbus_proxy_property_get_all(proxy, _ac_get_all_cb, ac);
- eldbus_proxy_signal_handler_add(upower_proxy_ac, "PropertiesChanged", _ac_changed_cb, ac);
- batman_device_ac_adapters = eina_list_append(batman_device_ac_adapters, ac);
- return;
-
-error:
- eldbus_object_unref(eldbus_proxy_object_get(proxy));
- eldbus_proxy_unref(proxy);
- return;
-}
-
-static const char *bat_techologies[] = {
- "Unknown",
- "Lithium ion",
- "Lithium polymer",
- "Lithium iron phosphate",
- "Lead acid",
- "Nickel cadmium",
- "Nickel metal hydride"
-};
-
-static void
-_bat_get_all_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- Battery *bat = data;
- Eldbus_Message_Iter *array, *dict, *variant;
-
- bat->got_prop = EINA_TRUE;
- if (!eldbus_message_arguments_get(msg, "a{sv}", &array))
- return;
- while (eldbus_message_iter_get_and_next(array, 'e', &dict))
- {
- const char *key;
- union
- {
- Eina_Bool b;
- int64_t i64;
- unsigned u;
- double d;
- const char *s;
- } val;
-
- if (!eldbus_message_iter_arguments_get(dict, "sv", &key, &variant))
- continue;
- if (!strcmp(key, "IsPresent"))
- {
- eldbus_message_iter_arguments_get(variant, "b", &val.b);
- bat->present = val.b;
- }
- else if (!strcmp(key, "TimeToEmpty"))
- {
- eldbus_message_iter_arguments_get(variant, "x", &val.i64);
- bat->time_left = (int)val.i64;
- if (bat->time_left > 0)
- bat->charging = EINA_FALSE;
- else
- bat->charging = EINA_TRUE;
- }
- else if (!strcmp(key, "Percentage"))
- {
- eldbus_message_iter_arguments_get(variant, "d", &val.d);
- bat->percent = (int)val.d;
- }
- else if (!strcmp(key, "Energy"))
- {
- eldbus_message_iter_arguments_get(variant, "d", &val.d);
- bat->current_charge = (int)val.d;
- }
- else if (!strcmp(key, "EnergyFullDesign"))
- {
- eldbus_message_iter_arguments_get(variant, "d", &val.d);
- bat->design_charge = (int)val.d;
- }
- else if (!strcmp(key, "EnergyFull"))
- {
- eldbus_message_iter_arguments_get(variant, "d", &val.d);
- bat->last_full_charge = (int)val.d;
- }
- else if (!strcmp(key, "TimeToFull"))
- {
- eldbus_message_iter_arguments_get(variant, "x", &val.i64);
- bat->time_full = (int)val.i64;
- }
- else if (!strcmp(key, "Technology"))
- {
- eldbus_message_iter_arguments_get(variant, "u", &val.u);
- if (val.u > EINA_C_ARRAY_LENGTH(bat_techologies))
- val.u = 0;
- bat->technology = bat_techologies[val.u];
- }
- else if (!strcmp(key, "Model"))
- {
- if (!eldbus_message_iter_arguments_get(variant, "s", &val.s))
- continue;
- eina_stringshare_replace(&bat->model, val.s);
- }
- else if (!strcmp(key, "Vendor"))
- {
- if (!eldbus_message_iter_arguments_get(variant, "s", &val.s))
- continue;
- if (bat->vendor)
- eina_stringshare_del(bat->vendor);
- bat->vendor = eina_stringshare_add(val.s);
- }
- }
- _batman_device_update(bat->inst);
-}
-
-static void
-_bat_changed_cb(void *data, const Eldbus_Message *msg EINA_UNUSED)
-{
- Battery *bat = data;
- eldbus_proxy_property_get_all(bat->proxy, _bat_get_all_cb, bat);
-}
-
-static void
-_process_battery(Eldbus_Proxy *proxy, Instance *inst)
-{
- Battery *bat;
-
- bat = E_NEW(Battery, 1);
- if (!bat)
- {
- eldbus_object_unref(eldbus_proxy_object_get(proxy));
- eldbus_proxy_unref(proxy);
- return;
- }
- bat->inst = inst;
- bat->proxy = proxy;
- bat->udi = eina_stringshare_add(eldbus_object_path_get(eldbus_proxy_object_get(proxy)));
- eldbus_proxy_property_get_all(proxy, _bat_get_all_cb, bat);
- eldbus_proxy_signal_handler_add(upower_proxy_bat, "PropertiesChanged", _bat_changed_cb, bat);
- batman_device_batteries = eina_list_append(batman_device_batteries, bat);
- _batman_device_update(bat->inst);
-}
-
-static void
-_device_type_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
-{
- Upower_Data *ud = data;
- Eldbus_Message_Iter *variant;
- Eldbus_Object *obj;
- unsigned int type;
-
- const char *path = eldbus_pending_path_get (pending);
- if (!eldbus_message_arguments_get(msg, "v", &variant))
- goto error;
-
- eldbus_message_iter_arguments_get(variant, "u", &type);
- if (type == 1)
- {
- obj = eldbus_object_get(conn, BUS, path);
- EINA_SAFETY_ON_FALSE_RETURN(obj);
- upower_proxy_ac = eldbus_proxy_get(obj, IFACE_PROPERTIES);
- _process_ac(ud->proxy, ud->inst);
- }
- else if (type == 2)
- {
- obj = eldbus_object_get(conn, BUS, path);
- EINA_SAFETY_ON_FALSE_RETURN(obj);
- upower_proxy_bat = eldbus_proxy_get(obj, IFACE_PROPERTIES);
- _process_battery(ud->proxy, ud->inst);
- }
- else
- goto error;
-
- E_FREE(ud);
-
- return;
-
-error:
- obj = eldbus_proxy_object_get(ud->proxy);
- eldbus_proxy_unref(ud->proxy);
- eldbus_object_unref(obj);
- E_FREE(ud);
- return;
-}
-
-static void
-_process_enumerate_path(const char *path, Instance *inst)
-{
- Eldbus_Object *obj;
- Eldbus_Proxy *proxy;
- Upower_Data *ud;
-
- obj = eldbus_object_get(conn, BUS, path);
- EINA_SAFETY_ON_FALSE_RETURN(obj);
- proxy = eldbus_proxy_get(obj, IFACE_DEVICE);
- ud = E_NEW(Upower_Data, 1);
- if (!ud)
- {
- eldbus_object_unref(eldbus_proxy_object_get(proxy));
- eldbus_proxy_unref(proxy);
- return;
- }
- ud->proxy = proxy;
- ud->inst = inst;
- eldbus_proxy_property_get(proxy, "Type", _device_type_cb, ud);
-}
-
-static void
-_enumerate_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- Instance *inst = data;
- const char *path;
- Eldbus_Message_Iter *array;
-
- if (!eldbus_message_arguments_get(msg, "ao", &array))
- return;
-
- while (eldbus_message_iter_get_and_next(array, 'o', &path))
- _process_enumerate_path(path, inst);
-}
-
-static void
-_device_added_cb(void *data, const Eldbus_Message *msg)
-{
- const char *path;
- Instance *inst = data;
-
- if (!eldbus_message_arguments_get(msg, "o", &path))
- return;
- _process_enumerate_path(path, inst);
-}
-
-static void
-_device_removed_cb(void *data, const Eldbus_Message *msg)
-{
- Battery *bat;
- Ac_Adapter *ac;
- const char *path;
- Instance *inst = data;
- Eina_List *batteries, *adapters, *l;
- Eina_Bool exists = EINA_FALSE;
-
- if (!eldbus_message_arguments_get(msg, "o", &path))
- return;
- batteries = _batman_battery_find(path);
- if (eina_list_count(batteries))
- {
- EINA_LIST_FOREACH(batteries, l, bat)
- {
- if (inst == bat->inst)
- {
- inst = bat->inst;
- _battery_free(bat);
- _batman_device_update(inst);
- exists = EINA_TRUE;
- }
- }
- if (exists)
- {
- eina_list_free(batteries);
- return;
- }
- }
- exists = EINA_FALSE;
- adapters = _batman_ac_adapter_find(path);
- if (eina_list_count(adapters))
- {
- EINA_LIST_FOREACH(adapters, l, ac)
- {
- if (ac->inst == inst)
- {
- inst = ac->inst;
- _ac_free(ac);
- _batman_device_update(inst);
- exists = EINA_TRUE;
- }
- }
- eina_list_free(adapters);
- }
-}
-
-int
-_batman_upower_start(Instance *inst)
-{
- Eldbus_Object *obj;
-
- conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM);
- EINA_SAFETY_ON_NULL_RETURN_VAL(conn, 0);
-
- obj = eldbus_object_get(conn, BUS, PATH);
- EINA_SAFETY_ON_NULL_GOTO(obj, obj_error);
- upower_proxy = eldbus_proxy_get(obj, IFACE);
- EINA_SAFETY_ON_NULL_GOTO(upower_proxy, proxy_error);
-
- eldbus_proxy_signal_handler_add(upower_proxy, "DeviceAdded", _device_added_cb, inst);
- eldbus_proxy_signal_handler_add(upower_proxy, "DeviceRemoved", _device_removed_cb, inst);
- eldbus_proxy_call(upower_proxy, "EnumerateDevices", _enumerate_cb, inst, -1, "");
- return 1;
-
-proxy_error:
- eldbus_object_unref(obj);
-obj_error:
- eldbus_connection_unref(conn);
- return 0;
-}
-
-void
-_batman_upower_stop(void)
-{
- Eina_List *list, *list2;
- Battery *bat;
- Ac_Adapter *ac;
- Eldbus_Object *obj;
-
- EINA_LIST_FOREACH_SAFE(batman_device_batteries, list, list2, bat)
- E_FREE_FUNC(bat, _battery_free);
- EINA_LIST_FOREACH_SAFE(batman_device_ac_adapters, list, list2, ac)
- E_FREE_FUNC(ac, _ac_free);
-
- obj = eldbus_proxy_object_get(upower_proxy);
- E_FREE_FUNC(upower_proxy, eldbus_proxy_unref);
- E_FREE_FUNC(obj, eldbus_object_unref);
- obj = eldbus_proxy_object_get(upower_proxy_ac);
- E_FREE_FUNC(upower_proxy_ac, eldbus_proxy_unref);
- E_FREE_FUNC(obj, eldbus_object_unref);
- obj = eldbus_proxy_object_get(upower_proxy_bat);
- E_FREE_FUNC(upower_proxy_bat, eldbus_proxy_unref);
- E_FREE_FUNC(obj, eldbus_object_unref);
- E_FREE_FUNC(conn, eldbus_connection_unref);
-}
-
diff --git a/src/modules/sysinfo/cpuclock/cpuclock.c b/src/modules/sysinfo/cpuclock/cpuclock.c
deleted file mode 100644
index df2cb717d6..0000000000
--- a/src/modules/sysinfo/cpuclock/cpuclock.c
+++ /dev/null
@@ -1,1168 +0,0 @@
-#include "cpuclock.h"
-#if defined(__OpenBSD__) || defined(__NetBSD__)
-#include <sys/param.h>
-#include <sys/sysctl.h>
-#endif
-
-#if defined(__FreeBSD__) || defined(__DragonFly__)
- #include <sys/types.h>
- #include <sys/sysctl.h>
-#endif
-
-EINTERN void _cpuclock_poll_interval_update(Instance *inst);
-
-typedef struct _Thread_Config Thread_Config;
-struct _Thread_Config
-{
- int interval;
- Instance *inst;
- E_Powersave_Sleeper *sleeper;
-};
-
-typedef struct _Pstate_Config Pstate_Config;
-struct _Pstate_Config
-{
- Instance *inst;
- int min;
- int max;
- int turbo;
-};
-
-static Cpu_Status *
-_cpuclock_status_new(void)
-{
- Cpu_Status *s;
-
- s = E_NEW(Cpu_Status, 1);
- if (!s) return NULL;
- s->active = -1;
- return s;
-}
-
-static void
-_cpuclock_status_free(Cpu_Status *s)
-{
- Eina_List *l;
-
- if (eina_list_count(s->frequencies)) eina_list_free(s->frequencies);
- if (s->governors)
- {
- for (l = s->governors; l; l = l->next)
- E_FREE(l->data);
- eina_list_free(s->governors);
- }
- E_FREE(s->cur_governor);
- if (s->orig_governor) eina_stringshare_del(s->orig_governor);
- E_FREE(s);
-}
-
-#if defined(__linux__)
-static int
-_cpuclock_cb_sort(const void *item1, const void *item2)
-{
- int a, b;
-
- a = (long)item1;
- b = (long)item2;
- if (a < b) return -1;
- else if (a > b)
- return 1;
- return 0;
-}
-
-#endif
-void
-_cpuclock_set_governor(const char *governor)
-{
- e_system_send("cpufreq-governor", "%s", governor);
-}
-
-void
-_cpuclock_set_frequency(int frequency)
-{
-#if defined(__FreeBSD__) || defined(__DragonFly__)
- frequency /= 1000;
-#endif
- e_system_send("cpufreq-freq", "%i", frequency);
-}
-
-void
-_cpuclock_set_pstate(int min, int max, int turbo)
-{
- e_system_send("cpufreq-pstate", "%i %i %i", min, max, turbo);
-}
-
-static void
-_cpuclock_face_cb_set_frequency(void *data, Evas_Object *obj EINA_UNUSED, const char *emission, const char *src EINA_UNUSED)
-{
- Eina_List *l;
- int next_frequency = 0;
- Instance *inst = data;
-
- for (l = inst->cfg->cpuclock.status->frequencies; l; l = l->next)
- {
- if (inst->cfg->cpuclock.status->cur_frequency == (long)l->data)
- {
- if (!strcmp(emission, "e,action,frequency,increase"))
- {
- if (l->next) next_frequency = (long)l->next->data;
- break;
- }
- else if (!strcmp(emission, "e,action,frequency,decrease"))
- {
- if (l->prev) next_frequency = (long)l->prev->data;
- break;
- }
- else
- break;
- }
- }
- if (inst->cfg->cpuclock.status->can_set_frequency && next_frequency)
- _cpuclock_set_frequency(next_frequency);
-}
-
-static void
-_cpuclock_face_cb_set_governor(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *src EINA_UNUSED)
-{
- Eina_List *l;
- char *next_governor = NULL;
- Instance *inst = data;
-
- for (l = inst->cfg->cpuclock.status->governors; l; l = l->next)
- {
- if (!strcmp(l->data, inst->cfg->cpuclock.status->cur_governor))
- {
- if (l->next)
- next_governor = l->next->data;
- else
- next_governor = inst->cfg->cpuclock.status->governors->data;
- break;
- }
- }
- if (next_governor) _cpuclock_set_governor(next_governor);
-}
-
-static Eina_Bool
-_cpuclock_event_cb_powersave(void *data, int type, void *event)
-{
- Instance *inst = data;
- E_Event_Powersave_Update *ev;
- Eina_List *l;
- Eina_Bool has_powersave = EINA_FALSE;
- Eina_Bool has_conservative = EINA_FALSE;
-
- if (type != E_EVENT_POWERSAVE_UPDATE) return ECORE_CALLBACK_PASS_ON;
- if (!inst->cfg->cpuclock.auto_powersave) return ECORE_CALLBACK_PASS_ON;
- if (inst->cfg->id == -1) return ECORE_CALLBACK_RENEW;
-
- ev = event;
- if (!inst->cfg->cpuclock.status->orig_governor)
- inst->cfg->cpuclock.status->orig_governor = eina_stringshare_add(inst->cfg->cpuclock.status->cur_governor);
-
- for (l = inst->cfg->cpuclock.status->governors; l; l = l->next)
- {
- if (!strcmp(l->data, "conservative"))
- has_conservative = EINA_TRUE;
- else if (!strcmp(l->data, "powersave"))
- has_powersave = EINA_TRUE;
- else if (!strcmp(l->data, "interactive"))
- has_powersave = EINA_TRUE;
- }
-
- switch (ev->mode)
- {
- case E_POWERSAVE_MODE_NONE:
- case E_POWERSAVE_MODE_LOW:
- _cpuclock_set_governor(inst->cfg->cpuclock.status->orig_governor);
- eina_stringshare_del(inst->cfg->cpuclock.status->orig_governor);
- inst->cfg->cpuclock.status->orig_governor = NULL;
- break;
-
- case E_POWERSAVE_MODE_MEDIUM:
- case E_POWERSAVE_MODE_HIGH:
- if ((inst->cfg->cpuclock.powersave_governor) || (has_conservative))
- {
- if (inst->cfg->cpuclock.powersave_governor)
- _cpuclock_set_governor(inst->cfg->cpuclock.powersave_governor);
- else
- _cpuclock_set_governor("conservative");
- break;
- }
- EINA_FALLTHROUGH;
- /* no break */
-
- case E_POWERSAVE_MODE_EXTREME:
- default:
- if (has_powersave)
- _cpuclock_set_governor("powersave");
- break;
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Evas_Object *
-_cpuclock_configure_cb(Evas_Object *g)
-{
- Instance *inst = evas_object_data_get(g, "Instance");
-
- if (!sysinfo_config) return NULL;
- return cpuclock_configure(inst);
-}
-
-static void
-_cpuclock_popup_dismissed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- E_FREE_FUNC(obj, evas_object_del);
-
- inst->cfg->cpuclock.popup = NULL;
- inst->cfg->cpuclock.popup_pbar = NULL;
-}
-
-static void
-_cpuclock_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->cfg->cpuclock.popup = NULL;
-}
-
-static Evas_Object *
-_cpuclock_popup_create(Instance *inst)
-{
- Evas_Object *popup, *table, *label, *pbar;
- double f = inst->cfg->cpuclock.status->cur_frequency;
- char buf[4096], text[4096], *u;
-
- if (f < 1000000)
- {
- f += 500;
- f /= 1000;
- u = _("MHz");
- }
- else
- {
- f += 50000;
- f /= 1000000;
- u = _("GHz");
- }
-
- popup = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(popup, "noblock");
- evas_object_smart_callback_add(popup, "dismissed",
- _cpuclock_popup_dismissed, inst);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL,
- _cpuclock_popup_deleted, inst);
-
- table = elm_table_add(popup);
- E_EXPAND(table);
- E_FILL(table);
- elm_object_content_set(popup, table);
- evas_object_show(table);
-
- snprintf(text, sizeof(text), "<big><b>%s</b></big>", _("Frequency"));
-
- label = elm_label_add(table);
- E_EXPAND(label);
- E_ALIGN(label, 0.5, 0.5);
- elm_object_text_set(label, text);
- elm_table_pack(table, label, 0, 0, 2, 1);
- evas_object_show(label);
-
- snprintf(buf, sizeof(buf), "%1.1f %s (%d %%%%)", f, u,
- inst->cfg->cpuclock.percent);
-
- pbar = elm_progressbar_add(table);
- E_EXPAND(pbar);
- E_FILL(pbar);
- elm_progressbar_span_size_set(pbar, 200 * e_scale);
- elm_progressbar_unit_format_set(pbar, buf);
- elm_progressbar_value_set(pbar, (float)inst->cfg->cpuclock.percent / 100);
- elm_table_pack(table, pbar, 0, 1, 2, 1);
- evas_object_show(pbar);
- inst->cfg->cpuclock.popup_pbar = pbar;
-
- e_gadget_util_ctxpopup_place(inst->o_main, popup,
- inst->cfg->cpuclock.o_gadget);
- evas_object_show(popup);
-
- return popup;
-}
-
-static void
-_cpuclock_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Evas_Event_Mouse_Up *ev = event_data;
- Instance *inst = data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (ev->button == 1)
- {
- if (inst->cfg->cpuclock.popup)
- elm_ctxpopup_dismiss(inst->cfg->cpuclock.popup);
- else
- inst->cfg->cpuclock.popup = _cpuclock_popup_create(inst);
- }
-}
-
-void
-_cpuclock_config_updated(Instance *inst)
-{
- Edje_Message_Int_Set *frequency_msg;
- Edje_Message_String_Set *governor_msg;
- Eina_List *l;
- int i;
- unsigned int count;
-
- if (inst->cfg->id == -1)
- {
- inst->cfg->cpuclock.status->cur_frequency = 3000000;
- inst->cfg->cpuclock.status->can_set_frequency = 1000000;
- inst->cfg->cpuclock.status->cur_min_frequency = 500000;
- inst->cfg->cpuclock.status->cur_max_frequency = 3500000;
- return;
- }
- if (inst->cfg->cpuclock.status->frequencies)
- {
- count = eina_list_count(inst->cfg->cpuclock.status->frequencies);
- frequency_msg = malloc(sizeof(Edje_Message_Int_Set) + (count - 1) * sizeof(int));
- EINA_SAFETY_ON_NULL_RETURN(frequency_msg);
- frequency_msg->count = count;
- for (l = inst->cfg->cpuclock.status->frequencies, i = 0; l; l = l->next, i++)
- frequency_msg->val[i] = (long)l->data;
- edje_object_message_send(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), EDJE_MESSAGE_INT_SET, 1, frequency_msg);
- E_FREE(frequency_msg);
- }
-
- if (inst->cfg->cpuclock.status->governors)
- {
- count = eina_list_count(inst->cfg->cpuclock.status->governors);
- governor_msg = malloc(sizeof(Edje_Message_String_Set) + (count - 1) * sizeof(char *));
- governor_msg->count = count;
- for (l = inst->cfg->cpuclock.status->governors, i = 0; l; l = l->next, i++)
- governor_msg->str[i] = (char *)l->data;
- edje_object_message_send(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), EDJE_MESSAGE_STRING_SET, 2, governor_msg);
- E_FREE(governor_msg);
- }
- _cpuclock_poll_interval_update(inst);
-}
-
-static void
-_cpuclock_face_update_current(Instance *inst)
-{
- Edje_Message_Int_Set *frequency_msg;
- Edje_Message_String governor_msg;
-
- frequency_msg = malloc(sizeof(Edje_Message_Int_Set) + (sizeof(int) * 4));
- EINA_SAFETY_ON_NULL_RETURN(frequency_msg);
- frequency_msg->count = 5;
- frequency_msg->val[0] = inst->cfg->cpuclock.status->cur_frequency;
- frequency_msg->val[1] = inst->cfg->cpuclock.status->can_set_frequency;
- frequency_msg->val[2] = inst->cfg->cpuclock.status->cur_min_frequency;
- frequency_msg->val[3] = inst->cfg->cpuclock.status->cur_max_frequency;
- frequency_msg->val[4] = 0; // pad
- edje_object_message_send(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), EDJE_MESSAGE_INT_SET, 3,
- frequency_msg);
- E_FREE(frequency_msg);
- if (inst->cfg->cpuclock.tot_min_frequency == 0)
- inst->cfg->cpuclock.tot_min_frequency = inst->cfg->cpuclock.status->cur_frequency;
- if (inst->cfg->cpuclock.status->cur_frequency >
- inst->cfg->cpuclock.tot_max_frequency)
- {
- inst->cfg->cpuclock.tot_max_frequency = inst->cfg->cpuclock.status->cur_frequency;
- inst->cfg->cpuclock.percent = 100;
- }
- if (inst->cfg->cpuclock.status->cur_frequency <
- inst->cfg->cpuclock.tot_min_frequency)
- {
- inst->cfg->cpuclock.tot_min_frequency = inst->cfg->cpuclock.status->cur_frequency;
- inst->cfg->cpuclock.percent = 0;
- }
- if ((inst->cfg->cpuclock.tot_min_frequency > 0) &&
- (inst->cfg->cpuclock.tot_max_frequency >=
- inst->cfg->cpuclock.tot_min_frequency))
- {
- inst->cfg->cpuclock.percent = ((double)(inst->cfg->cpuclock.status->cur_frequency -
- inst->cfg->cpuclock.tot_min_frequency) /
- (double)(inst->cfg->cpuclock.tot_max_frequency -
- inst->cfg->cpuclock.tot_min_frequency)) * 100;
- }
- else
- inst->cfg->cpuclock.percent = 0;
-
-#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- inst->cfg->cpuclock.percent = inst->cfg->cpuclock.status->cur_percent;
-#endif
-
- /* BSD crashes here without the if-condition
- * since it has no governors (yet) */
- if (inst->cfg->cpuclock.status->cur_governor)
- {
- governor_msg.str = inst->cfg->cpuclock.status->cur_governor;
- edje_object_message_send(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), EDJE_MESSAGE_STRING, 4,
- &governor_msg);
- }
-
- if (inst->cfg->cpuclock.popup)
- {
- double f = inst->cfg->cpuclock.status->cur_frequency;
- char buf[4096], *u;
-
- if (f < 1000000)
- {
- f += 500;
- f /= 1000;
- u = _("MHz");
- }
- else
- {
- f += 50000;
- f /= 1000000;
- u = _("GHz");
- }
- snprintf(buf, sizeof(buf), "%1.1f %s (%d %%%%)", f, u,
- inst->cfg->cpuclock.percent);
- elm_progressbar_unit_format_set(inst->cfg->cpuclock.popup_pbar, buf);
- elm_progressbar_value_set(inst->cfg->cpuclock.popup_pbar,
- (float)inst->cfg->cpuclock.percent / 100);
- }
-}
-
-static void
-_cpuclock_status_check_available(Cpu_Status *s)
-{
-#if !defined(__OpenBSD__)
- char buf[4096];
- Eina_List *l;
-#endif
- // FIXME: this assumes all cores accept the same freqs/ might be wrong
-
-#if defined(__OpenBSD__)
- int p;
-
- if (s->frequencies)
- {
- eina_list_free(s->frequencies);
- s->frequencies = NULL;
- }
-
- /* storing percents */
- p = 100;
- s->frequencies = eina_list_append(s->frequencies, (void *)(long int)p);
- p = 75;
- s->frequencies = eina_list_append(s->frequencies, (void *)(long int)p);
- p = 50;
- s->frequencies = eina_list_append(s->frequencies, (void *)(long int)p);
- p = 25;
- s->frequencies = eina_list_append(s->frequencies, (void *)(long int)p);
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
- int freq;
- size_t len = sizeof(buf);
- char *pos, *q;
-
- /* read freq_levels sysctl and store it in freq */
- if (sysctlbyname("dev.cpu.0.freq_levels", buf, &len, NULL, 0) == 0)
- {
- /* sysctl returns 0 on success */
- if (s->frequencies)
- {
- eina_list_free(s->frequencies);
- s->frequencies = NULL;
- }
-
- /* parse freqs and store the frequencies in s->frequencies */
- pos = buf;
- while (pos)
- {
- q = strchr(pos, '/');
- if (!q) break;
-
- *q = '\0';
- freq = atoi(pos);
- freq *= 1000;
-
- s->frequencies = eina_list_append(s->frequencies, (void *)(long)freq);
- pos = q + 1;
- pos = strchr(pos, ' ');
- }
- }
-
- /* sort is not necessary because freq_levels is already sorted */
- /* freebsd doesn't have governors */
- if (s->governors)
- {
- for (l = s->governors; l; l = l->next)
- E_FREE(l->data);
- eina_list_free(s->governors);
- s->governors = NULL;
- }
-#else
- FILE *f;
-
- f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies", "r");
- if (f)
- {
- char *freq;
-
- if (s->frequencies)
- {
- eina_list_free(s->frequencies);
- s->frequencies = NULL;
- }
-
- if (fgets(buf, sizeof(buf), f) == NULL)
- {
- fclose(f);
- return;
- }
- fclose(f);
-
- freq = strtok(buf, " ");
- do
- {
- if (atoi(freq) != 0)
- {
- s->frequencies = eina_list_append(s->frequencies,
- (void *)(long)atoi(freq));
- }
- freq = strtok(NULL, " ");
- }
- while (freq);
-
- s->frequencies = eina_list_sort(s->frequencies,
- eina_list_count(s->frequencies),
- _cpuclock_cb_sort);
- }
- else
- do
- {
-#define CPUFREQ_SYSFSDIR "/sys/devices/system/cpu/cpu0/cpufreq"
- f = fopen(CPUFREQ_SYSFSDIR "/scaling_cur_freq", "r");
- if (!f) break;
- fclose(f);
-
- f = fopen(CPUFREQ_SYSFSDIR "/scaling_driver", "r");
- if (!f) break;
- if (fgets(buf, sizeof(buf), f) == NULL)
- {
- fclose(f);
- break;
- }
- fclose(f);
- if (strcmp(buf, "intel_pstate\n")) break;
-
- if (s->frequencies)
- {
- eina_list_free(s->frequencies);
- s->frequencies = NULL;
- }
-#define CPUFREQ_ADDF(filename) \
- f = fopen(CPUFREQ_SYSFSDIR filename, "r"); \
- if (f) \
- { \
- if (fgets(buf, sizeof(buf), f) != NULL) \
- s->frequencies = eina_list_append(s->frequencies, \
- (void *)(long)(atoi(buf))); \
- fclose(f); \
- }
- CPUFREQ_ADDF("/cpuinfo_min_freq");
- CPUFREQ_ADDF("/cpuinfo_max_freq");
- }
- while (0);
-
- f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors", "r");
- if (f)
- {
- char *gov;
- int len;
-
- if (s->governors)
- {
- for (l = s->governors; l; l = l->next)
- E_FREE(l->data);
- eina_list_free(s->governors);
- s->governors = NULL;
- }
-
- if (fgets(buf, sizeof(buf), f) == NULL)
- {
- fclose(f);
- return;
- }
- fclose(f);
- len = strlen(buf);
- if (len > 0)
- {
- gov = buf + len - 1;
- while ((gov > buf) && (isspace(*gov)))
- {
- *gov = 0;
- gov--;
- }
- }
- gov = strtok(buf, " ");
- do
- {
- while ((*gov) && (isspace(*gov)))
- gov++;
- if (strlen(gov) != 0)
- s->governors = eina_list_append(s->governors, strdup(gov));
- gov = strtok(NULL, " ");
- }
- while (gov);
-
- s->governors =
- eina_list_sort(s->governors, eina_list_count(s->governors),
- (int (*)(const void *, const void *))strcmp);
- }
-#endif
-}
-
-static int
-_cpuclock_status_check_current(Cpu_Status *s)
-{
- int ret = 0;
- int frequency = 0;
-
-#if defined(__OpenBSD__)
- size_t len = sizeof(frequency);
- int percent, mib[] = {CTL_HW, HW_CPUSPEED};
- s->active = 0;
-
- _cpuclock_status_check_available(s);
-
- if (sysctl(mib, 2, &frequency, &len, NULL, 0) == 0)
- {
- frequency *= 1000;
- if (frequency != s->cur_frequency) ret = 1;
- s->cur_frequency = frequency;
- s->active = 1;
- }
-
- mib[1] = HW_SETPERF;
-
- if (sysctl(mib, 2, &percent, &len, NULL, 0) == 0)
- {
- s->cur_percent = percent;
- }
-
- s->can_set_frequency = 1;
- s->cur_governor = NULL;
-
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
- float ratio;
- size_t len = sizeof(frequency);
- s->active = 0;
-
- _cpuclock_status_check_available(s);
-
- s->can_set_frequency = eina_list_count(s->frequencies);
-
- /* frequency is stored in dev.cpu.0.freq */
- if (sysctlbyname("dev.cpu.0.freq", &frequency, &len, NULL, 0) == 0)
- {
- frequency *= 1000;
- if (frequency != s->cur_frequency) ret = 1;
- if (!frequency) frequency = 1;
- s->cur_frequency = frequency;
- s->active = 1;
- if (s->can_set_frequency)
- {
- s->cur_max_frequency = (int) eina_list_nth(s->frequencies, 0);
- if (!s->cur_max_frequency) s->cur_max_frequency = 1;
- s->cur_min_frequency = (int) eina_list_nth(s->frequencies, eina_list_count(s->frequencies) - 1);
- ratio = (s->cur_max_frequency) / 100.0;
- s->cur_percent = s->cur_frequency / ratio;
- }
- }
-
- s->cur_governor = NULL;
-
-#else
- char buf[4096];
- FILE *f;
- int frequency_min = 0x7fffffff;
- int frequency_max = 0;
- int freqtot = 0;
- int i;
-
- s->active = 0;
-
- _cpuclock_status_check_available(s);
- // average out frequencies of all cores
- for (i = 0; i < 64; i++)
- {
- snprintf(buf, sizeof(buf), "/sys/devices/system/cpu/cpu%i/cpufreq/scaling_cur_freq", i);
- f = fopen(buf, "r");
- if (f)
- {
- if (fgets(buf, sizeof(buf), f) == NULL)
- {
- fclose(f);
- continue;
- }
- fclose(f);
-
- frequency = atoi(buf);
- if (frequency > frequency_max) frequency_max = frequency;
- if (frequency < frequency_min) frequency_min = frequency;
- freqtot += frequency;
- s->active = 1;
- }
- else
- break;
- }
- if (i < 1) i = 1;
- frequency = freqtot / i;
- if (frequency != s->cur_frequency) ret = 1;
- if (frequency_min != s->cur_min_frequency) ret = 1;
- if (frequency_max != s->cur_max_frequency) ret = 1;
- s->cur_frequency = frequency;
- s->cur_min_frequency = frequency_min;
- s->cur_max_frequency = frequency_max;
-
-// printf("%i | %i %i\n", frequency, frequency_min, frequency_max);
-
- // FIXME: this assumes all cores are on the same governor
- f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed", "r");
- if (f)
- {
- s->can_set_frequency = 1;
- fclose(f);
- }
- else
- {
- s->can_set_frequency = 0;
- }
-
- f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", "r");
- if (f)
- {
- char *p;
-
- if (fgets(buf, sizeof(buf), f) == NULL)
- {
- fclose(f);
- return ret;
- }
- fclose(f);
-
- for (p = buf; (*p != 0) && (isalnum(*p)); p++) ;
- *p = 0;
-
- if ((!s->cur_governor) || (strcmp(buf, s->cur_governor)))
- {
- ret = 1;
-
- E_FREE(s->cur_governor);
- s->cur_governor = strdup(buf);
-
- for (i = strlen(s->cur_governor) - 1; i >= 0; i--)
- {
- if (isspace(s->cur_governor[i]))
- s->cur_governor[i] = 0;
- else
- break;
- }
- }
- }
- f = fopen("/sys/devices/system/cpu/intel_pstate/min_perf_pct", "r");
- if (f)
- {
- if (fgets(buf, sizeof(buf), f) != NULL)
- {
- s->pstate_min = atoi(buf);
- s->pstate = 1;
- }
- fclose(f);
- }
- f = fopen("/sys/devices/system/cpu/intel_pstate/max_perf_pct", "r");
- if (f)
- {
- if (fgets(buf, sizeof(buf), f) != NULL)
- {
- s->pstate_max = atoi(buf);
- s->pstate = 1;
- }
- fclose(f);
- }
- f = fopen("/sys/devices/system/cpu/intel_pstate/no_turbo", "r");
- if (f)
- {
- if (fgets(buf, sizeof(buf), f) != NULL)
- {
- s->pstate_turbo = atoi(buf);
- if (s->pstate_turbo) s->pstate_turbo = 0;
- else s->pstate_turbo = 1;
- s->pstate = 1;
- }
- fclose(f);
- }
-#endif
- return ret;
-}
-
-static void
-_cpuclock_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Evas_Coord w, h;
- Instance *inst = data;
-
- edje_object_parts_extends_calc(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), 0, 0, &w, &h);
- if (w < 1) w = 1;
- if (h < 1) h = 1;
- if (inst->cfg->esm == E_SYSINFO_MODULE_CPUCLOCK)
- evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, w, h);
- else
- evas_object_size_hint_aspect_set(inst->cfg->cpuclock.o_gadget, EVAS_ASPECT_CONTROL_BOTH, w, h);
-}
-
-static void
-_cpuclock_cb_frequency_check_main(void *data, Ecore_Thread *th)
-{
- Thread_Config *thc = data;
- for (;; )
- {
- Cpu_Status *status;
-
- if (ecore_thread_check(th)) break;
- status = _cpuclock_status_new();
- if (_cpuclock_status_check_current(status))
- ecore_thread_feedback(th, status);
- else
- _cpuclock_status_free(status);
- if (ecore_thread_check(th)) break;
- e_powersave_sleeper_sleep(thc->sleeper, thc->interval);
- if (ecore_thread_check(th)) break;
- }
-}
-
-static void
-_cpuclock_cb_frequency_check_notify(void *data,
- Ecore_Thread *th EINA_UNUSED,
- void *msg)
-{
- Cpu_Status *status = msg;
- Eina_Bool freq_changed = EINA_FALSE;
- Eina_Bool init_set = EINA_FALSE;
- Thread_Config *thc = data;
-
- if (!thc->inst) return;
- if (!thc->inst->cfg) return;
- if (thc->inst->cfg->esm != E_SYSINFO_MODULE_CPUCLOCK && thc->inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
-
- if ((thc->inst->cfg->cpuclock.status) && (status) &&
- (
-#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- (status->cur_percent != thc->inst->cfg->cpuclock.status->cur_percent) ||
-#endif
- (status->cur_frequency != thc->inst->cfg->cpuclock.status->cur_frequency) ||
- (status->cur_min_frequency != thc->inst->cfg->cpuclock.status->cur_min_frequency) ||
- (status->cur_max_frequency != thc->inst->cfg->cpuclock.status->cur_max_frequency) ||
- (status->can_set_frequency != thc->inst->cfg->cpuclock.status->can_set_frequency)))
- freq_changed = EINA_TRUE;
- E_FREE_FUNC(thc->inst->cfg->cpuclock.status, _cpuclock_status_free);
- thc->inst->cfg->cpuclock.status = status;
- if (freq_changed)
- {
- _cpuclock_face_update_current(thc->inst);
- }
- if (thc->inst->cfg->cpuclock.status->active == 0)
- elm_layout_signal_emit(thc->inst->cfg->cpuclock.o_gadget, "e,state,disabled", "e");
- else if (thc->inst->cfg->cpuclock.status->active == 1)
- elm_layout_signal_emit(thc->inst->cfg->cpuclock.o_gadget, "e,state,enabled", "e");
-
- if (!init_set)
- {
- _cpuclock_set_pstate(thc->inst->cfg->cpuclock.pstate_min - 1,
- thc->inst->cfg->cpuclock.pstate_max - 1,
- thc->inst->cfg->cpuclock.status->pstate_turbo);
- init_set = EINA_TRUE;
- }
-}
-
-static void
-_cpuclock_cb_frequency_check_end(void *data, Ecore_Thread *th EINA_UNUSED)
-{
- Thread_Config *thc = data;
-
- e_powersave_sleeper_free(thc->sleeper);
- E_FREE(thc);
-}
-
-EINTERN void
-_cpuclock_poll_interval_update(Instance *inst)
-{
- Thread_Config *thc;
-
- if (inst->cfg->cpuclock.frequency_check_thread)
- {
- ecore_thread_cancel(inst->cfg->cpuclock.frequency_check_thread);
- inst->cfg->cpuclock.frequency_check_thread = NULL;
- }
- thc = E_NEW(Thread_Config, 1);
- if (thc)
- {
- thc->inst = inst;
- thc->sleeper = e_powersave_sleeper_new();
- thc->interval = inst->cfg->cpuclock.poll_interval;
- inst->cfg->cpuclock.frequency_check_thread =
- ecore_thread_feedback_run(_cpuclock_cb_frequency_check_main,
- _cpuclock_cb_frequency_check_notify,
- _cpuclock_cb_frequency_check_end,
- _cpuclock_cb_frequency_check_end, thc, EINA_TRUE);
- }
- e_config_save_queue();
-}
-
-static Eina_Bool
-_screensaver_on(void *data)
-{
- Instance *inst = data;
-
- if (inst->cfg->cpuclock.frequency_check_thread)
- {
- ecore_thread_cancel(inst->cfg->cpuclock.frequency_check_thread);
- inst->cfg->cpuclock.frequency_check_thread = NULL;
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_screensaver_off(void *data)
-{
- Instance *inst = data;
-
- _cpuclock_config_updated(inst);
-
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-_cpuclock_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->o_main != event_data) return;
-
- if (inst->cfg->cpuclock.popup_pbar)
- E_FREE_FUNC(inst->cfg->cpuclock.popup_pbar, evas_object_del);
- if (inst->cfg->cpuclock.popup)
- E_FREE_FUNC(inst->cfg->cpuclock.popup, evas_object_del);
- if (inst->cfg->cpuclock.configure)
- E_FREE_FUNC(inst->cfg->cpuclock.configure, evas_object_del);
- EINA_LIST_FREE(inst->cfg->cpuclock.handlers, handler)
- ecore_event_handler_del(handler);
- evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_cpuclock_remove, data);
- evas_object_smart_callback_del_full(e_gadget_site_get(inst->o_main), "gadget_removed",
- _cpuclock_removed_cb, inst);
- if (inst->cfg->cpuclock.frequency_check_thread)
- {
- ecore_thread_cancel(inst->cfg->cpuclock.frequency_check_thread);
- inst->cfg->cpuclock.frequency_check_thread = NULL;
- return;
- }
- if (inst->cfg->cpuclock.governor)
- eina_stringshare_del(inst->cfg->cpuclock.governor);
- E_FREE_FUNC(inst->cfg->cpuclock.status, _cpuclock_status_free);
-
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
-}
-
-void
-sysinfo_cpuclock_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->cfg->cpuclock.popup_pbar)
- E_FREE_FUNC(inst->cfg->cpuclock.popup_pbar, evas_object_del);
- if (inst->cfg->cpuclock.popup)
- E_FREE_FUNC(inst->cfg->cpuclock.popup, evas_object_del);
- if (inst->cfg->cpuclock.configure)
- E_FREE_FUNC(inst->cfg->cpuclock.configure, evas_object_del);
- EINA_LIST_FREE(inst->cfg->cpuclock.handlers, handler)
- ecore_event_handler_del(handler);
- if (inst->cfg->cpuclock.frequency_check_thread)
- {
- ecore_thread_cancel(inst->cfg->cpuclock.frequency_check_thread);
- inst->cfg->cpuclock.frequency_check_thread = NULL;
- }
- if (inst->cfg->cpuclock.governor)
- eina_stringshare_del(inst->cfg->cpuclock.governor);
- E_FREE_FUNC(inst->cfg->cpuclock.status, _cpuclock_status_free);
-}
-
-static void
-_cpuclock_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- E_Gadget_Site_Orient orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_main));
- Eina_List *l = NULL;
-
- e_gadget_configure_cb_set(inst->o_main, _cpuclock_configure_cb);
-
- if (inst->cfg->cpuclock.pstate_min == 0) inst->cfg->cpuclock.pstate_min = 1;
- if (inst->cfg->cpuclock.pstate_max == 0) inst->cfg->cpuclock.pstate_max = 101;
- inst->cfg->cpuclock.percent = 0;
- inst->cfg->cpuclock.tot_min_frequency = 0;
- inst->cfg->cpuclock.tot_max_frequency = 0;
-
- inst->cfg->cpuclock.o_gadget = elm_layout_add(inst->o_main);
- if (orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(inst->cfg->cpuclock.o_gadget,
- "base/theme/gadget/cpuclock",
- "e/gadget/cpuclock/main_vert");
- else
- e_theme_edje_object_set(inst->cfg->cpuclock.o_gadget, "base/theme/gadget/cpuclock",
- "e/gadget/cpuclock/main");
- E_EXPAND(inst->cfg->cpuclock.o_gadget);
- E_FILL(inst->cfg->cpuclock.o_gadget);
- edje_object_signal_callback_add(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), "e,action,governor,next", "*",
- _cpuclock_face_cb_set_governor, inst);
- edje_object_signal_callback_add(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), "e,action,frequency,increase", "*",
- _cpuclock_face_cb_set_frequency, inst);
- edje_object_signal_callback_add(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), "e,action,frequency,decrease", "*",
- _cpuclock_face_cb_set_frequency, inst);
- evas_object_event_callback_add(inst->cfg->cpuclock.o_gadget, EVAS_CALLBACK_RESIZE, _cpuclock_resize_cb, inst);
- elm_box_pack_end(inst->o_main, inst->cfg->cpuclock.o_gadget);
- evas_object_event_callback_add(inst->cfg->cpuclock.o_gadget,
- EVAS_CALLBACK_MOUSE_UP,
- _cpuclock_mouse_up_cb, inst);
- evas_object_show(inst->cfg->cpuclock.o_gadget);
- evas_object_smart_callback_del_full(obj, "gadget_created", _cpuclock_created_cb, data);
-
- inst->cfg->cpuclock.status = _cpuclock_status_new();
- _cpuclock_status_check_available(inst->cfg->cpuclock.status);
-
- E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_POWERSAVE_UPDATE, _cpuclock_event_cb_powersave, inst);
-
- _cpuclock_config_updated(inst);
- if ((inst->cfg->cpuclock.restore_governor) && (inst->cfg->cpuclock.governor))
- {
- for (l = inst->cfg->cpuclock.status->governors; l; l = l->next)
- {
- if (!strcmp(l->data, inst->cfg->cpuclock.governor))
- {
- _cpuclock_set_governor(inst->cfg->cpuclock.governor);
- break;
- }
- }
- }
-}
-
-Evas_Object *
-sysinfo_cpuclock_create(Evas_Object *parent, Instance *inst)
-{
- Eina_List *l = NULL;
-
- if (inst->cfg->cpuclock.pstate_min == 0) inst->cfg->cpuclock.pstate_min = 1;
- if (inst->cfg->cpuclock.pstate_max == 0) inst->cfg->cpuclock.pstate_max = 101;
- inst->cfg->cpuclock.percent = 0;
- inst->cfg->cpuclock.tot_min_frequency = 0;
- inst->cfg->cpuclock.tot_max_frequency = 0;
-
- inst->cfg->cpuclock.o_gadget = elm_layout_add(parent);
- e_theme_edje_object_set(inst->cfg->cpuclock.o_gadget, "base/theme/gadget/cpuclock",
- "e/gadget/cpuclock/main");
- E_EXPAND(inst->cfg->cpuclock.o_gadget);
- E_FILL(inst->cfg->cpuclock.o_gadget);
- evas_object_event_callback_add(inst->cfg->cpuclock.o_gadget,
- EVAS_CALLBACK_MOUSE_UP,
- _cpuclock_mouse_up_cb, inst);
- edje_object_signal_callback_add(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), "e,action,governor,next", "*",
- _cpuclock_face_cb_set_governor, inst);
- edje_object_signal_callback_add(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), "e,action,frequency,increase", "*",
- _cpuclock_face_cb_set_frequency, inst);
- edje_object_signal_callback_add(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), "e,action,frequency,decrease", "*",
- _cpuclock_face_cb_set_frequency, inst);
- evas_object_event_callback_add(inst->cfg->cpuclock.o_gadget, EVAS_CALLBACK_RESIZE, _cpuclock_resize_cb, inst);
- evas_object_show(inst->cfg->cpuclock.o_gadget);
-
- inst->cfg->cpuclock.status = _cpuclock_status_new();
- _cpuclock_status_check_available(inst->cfg->cpuclock.status);
-
- E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_POWERSAVE_UPDATE, _cpuclock_event_cb_powersave, inst);
-
- _cpuclock_config_updated(inst);
- if ((inst->cfg->cpuclock.restore_governor) && (inst->cfg->cpuclock.governor))
- {
- for (l = inst->cfg->cpuclock.status->governors; l; l = l->next)
- {
- if (!strcmp(l->data, inst->cfg->cpuclock.governor))
- {
- _cpuclock_set_governor(inst->cfg->cpuclock.governor);
- break;
- }
- }
- }
-
- return inst->cfg->cpuclock.o_gadget;
-}
-
-static Config_Item *
-_conf_item_get(int *id)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(sysinfo_config->items, l, ci)
- if (*id == ci->id && ci->esm == E_SYSINFO_MODULE_CPUCLOCK) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
-
- if (*id != -1)
- ci->id = eina_list_count(sysinfo_config->items) + 1;
- else
- ci->id = -1;
-
- ci->esm = E_SYSINFO_MODULE_CPUCLOCK;
- ci->cpuclock.poll_interval = 32;
- ci->cpuclock.restore_governor = 0;
- ci->cpuclock.auto_powersave = 1;
- ci->cpuclock.powersave_governor = NULL;
- ci->cpuclock.governor = NULL;
- ci->cpuclock.pstate_min = 1;
- ci->cpuclock.pstate_max = 101;
- ci->cpuclock.configure = NULL;
-
- sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
-
- return ci;
-}
-
-Evas_Object *
-cpuclock_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNUSED)
-{
- Instance *inst;
-
- inst = E_NEW(Instance, 1);
- inst->cfg = _conf_item_get(id);
- *id = inst->cfg->id;
- inst->o_main = elm_box_add(parent);
- evas_object_data_set(inst->o_main, "Instance", inst);
- evas_object_smart_callback_add(parent, "gadget_created", _cpuclock_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_removed", _cpuclock_removed_cb, inst);
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_cpuclock_remove, inst);
- evas_object_show(inst->o_main);
-
- if (inst->cfg->id < 0) return inst->o_main;
-
- sysinfo_instances =
- eina_list_append(sysinfo_instances, inst);
-
- return inst->o_main;
-}
-
diff --git a/src/modules/sysinfo/cpuclock/cpuclock.h b/src/modules/sysinfo/cpuclock/cpuclock.h
deleted file mode 100644
index 911b49b7cc..0000000000
--- a/src/modules/sysinfo/cpuclock/cpuclock.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef CPUCLOCK_H
-#define CPUCLOCK_H
-
-#include "../sysinfo.h"
-
-typedef struct _Cpuclock_Config Cpuclock_Config;
-
-struct _Cpuclock_Config
-{
- Instance *inst;
- Evas_Object *max;
- Evas_Object *min;
- Evas_Object *general;
- Evas_Object *policy;
- Evas_Object *saving;
- Evas_Object *freq;
- Evas_Object *ps;
- Eina_List *powersaves;
- Eina_Bool frequencies;
- Eina_Bool pstate;
-};
-
-
-EINTERN Evas_Object *cpuclock_configure(Instance *inst);
-EINTERN void _cpuclock_config_updated(Instance *inst);
-EINTERN void _cpuclock_set_governor(const char *governor);
-EINTERN void _cpuclock_set_frequency(int frequency);
-EINTERN void _cpuclock_set_pstate(int min, int max, int turbo);
-#if defined(__OpenBSD__) || defined(__FreeBSD__)
-EINTERN int _cpuclock_sysctl_frequency(int new_perf);
-#endif
-
-#endif
diff --git a/src/modules/sysinfo/cpuclock/cpuclock_config.c b/src/modules/sysinfo/cpuclock/cpuclock_config.c
deleted file mode 100644
index 5477fb84aa..0000000000
--- a/src/modules/sysinfo/cpuclock/cpuclock_config.c
+++ /dev/null
@@ -1,633 +0,0 @@
-#include "cpuclock.h"
-
-static void
-_config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
- Instance *inst = cc->inst;
-
- E_FREE_FUNC(inst->cfg->cpuclock.configure, evas_object_del);
- E_FREE_FUNC(cc->powersaves, eina_list_free);
- E_FREE(cc);
- e_config_save_queue();
-}
-
-static void
-_config_show_general(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
-
- evas_object_hide(cc->policy);
- evas_object_hide(cc->saving);
- if (cc->pstate)
- evas_object_hide(cc->ps);
- if (cc->frequencies)
- evas_object_hide(cc->freq);
- evas_object_show(cc->general);
-}
-
-static void
-_config_show_policy(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
-
- evas_object_hide(cc->general);
- evas_object_hide(cc->saving);
- if (cc->pstate)
- evas_object_hide(cc->ps);
- if (cc->frequencies)
- evas_object_hide(cc->freq);
- evas_object_show(cc->policy);
-}
-
-static void
-_config_show_saving(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
-
- evas_object_hide(cc->general);
- evas_object_hide(cc->policy);
- if (cc->pstate)
- evas_object_hide(cc->ps);
- if (cc->frequencies)
- evas_object_hide(cc->freq);
- evas_object_show(cc->saving);
-}
-
-static void
-_config_show_frequencies(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
-
- evas_object_hide(cc->general);
- evas_object_hide(cc->policy);
- evas_object_hide(cc->saving);
- if (cc->pstate)
- evas_object_hide(cc->ps);
- evas_object_show(cc->freq);
-}
-
-static void
-_config_show_pstate(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
-
- evas_object_hide(cc->general);
- evas_object_hide(cc->policy);
- evas_object_hide(cc->saving);
- if (cc->frequencies)
- evas_object_hide(cc->freq);
- evas_object_show(cc->ps);
-}
-
-static void
-_update_max_power(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
- Instance *inst = cc->inst;
- int value = elm_slider_value_get(cc->max);
-
- inst->cfg->cpuclock.pstate_max = value;
- _cpuclock_set_pstate(inst->cfg->cpuclock.pstate_min - 1,
- inst->cfg->cpuclock.pstate_max - 1, inst->cfg->cpuclock.status->pstate_turbo);
- e_config_save_queue();
- _cpuclock_config_updated(inst);
-}
-
-static void
-_update_min_power(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
- Instance *inst = cc->inst;
- int value = elm_slider_value_get(cc->min);
-
- inst->cfg->cpuclock.pstate_min = value;
- _cpuclock_set_pstate(inst->cfg->cpuclock.pstate_min - 1,
- inst->cfg->cpuclock.pstate_max - 1, inst->cfg->cpuclock.status->pstate_turbo);
- e_config_save_queue();
- _cpuclock_config_updated(inst);
-}
-
-static void
-_auto_powersave(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
- Instance *inst = cc->inst;
- Eina_List *l = NULL;
- Evas_Object *o = NULL;
-
- inst->cfg->cpuclock.auto_powersave = elm_check_state_get(obj);
- EINA_LIST_FOREACH(cc->powersaves, l, o)
- elm_object_disabled_set(o, inst->cfg->cpuclock.auto_powersave);
- e_config_save_queue();
- _cpuclock_config_updated(inst);
-}
-
-static void
-_restore_governor(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
- Instance *inst = cc->inst;
-
- inst->cfg->cpuclock.restore_governor = elm_check_state_get(obj);
- if ((!inst->cfg->cpuclock.governor) ||
- (strcmp(inst->cfg->cpuclock.status->cur_governor, inst->cfg->cpuclock.governor)))
- {
- eina_stringshare_replace(&inst->cfg->cpuclock.governor, inst->cfg->cpuclock.status->cur_governor);
- }
- e_config_save_queue();
- _cpuclock_config_updated(inst);
-}
-
-static void
-_frequency_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- const char *value = elm_object_text_get(obj);
- int frequency = atol(value);
-
-#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- frequency = (int) evas_object_data_get(obj, "frequency");
-#endif
- if (frequency > 0)
- _cpuclock_set_frequency(frequency);
-}
-
-static void
-_powersave_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
- Instance *inst = cc->inst;
- const char *value = evas_object_data_get(obj, "governor");
-
- if (value)
- eina_stringshare_replace(&inst->cfg->cpuclock.powersave_governor, value);
- e_config_save_queue();
- _cpuclock_config_updated(inst);
-}
-
-static void
-_governor_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
- Instance *inst = cc->inst;
- const char *value = evas_object_data_get(obj, "governor");
-
- if (value)
- {
- eina_stringshare_replace(&inst->cfg->cpuclock.governor, value);
- _cpuclock_set_governor(inst->cfg->cpuclock.governor);
- }
-
- e_config_save_queue();
- _cpuclock_config_updated(inst);
-}
-
-static void
-_poll_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Cpuclock_Config *cc = data;
- Instance *inst = cc->inst;
- int value = elm_radio_value_get(obj);
-
- switch (value)
- {
- case 0:
- inst->cfg->cpuclock.poll_interval = 4;
- break;
-
- case 1:
- inst->cfg->cpuclock.poll_interval = 8;
- break;
-
- case 2:
- inst->cfg->cpuclock.poll_interval = 32;
- break;
-
- case 3:
- inst->cfg->cpuclock.poll_interval = 64;
- break;
-
- case 4:
- inst->cfg->cpuclock.poll_interval = 256;
- break;
-
- default:
- inst->cfg->cpuclock.poll_interval = 32;
- }
-
- e_config_save_queue();
- _cpuclock_config_updated(inst);
-}
-
-Evas_Object *
-cpuclock_configure(Instance *inst)
-{
- Evas_Object *popup, *tb, *frame, *box, *o, *group, *lbl, *slider, *list, *check;
- Evas_Object *groupg = NULL, *groups = NULL, *groupf = NULL;
- Elm_Object_Item *it;
- E_Zone *zone = e_zone_current_get();
- Eina_List *l = NULL;
- Cpuclock_Config *cc = E_NEW(Cpuclock_Config, 1);
- int i = 0, value = 0;
-
- cc->inst = inst;
- cc->powersaves = NULL;
- cc->frequencies = EINA_FALSE;
- cc->pstate = EINA_FALSE;
-
- if ((inst->cfg->cpuclock.status->frequencies) &&
- (inst->cfg->cpuclock.status->can_set_frequency) &&
- (!inst->cfg->cpuclock.status->pstate))
- {
- cc->frequencies = EINA_TRUE;
- }
- if ((inst->cfg->cpuclock.status) && (inst->cfg->cpuclock.status->pstate))
- {
- cc->pstate = EINA_TRUE;
- }
-
- popup = elm_popup_add(e_comp->elm);
- E_EXPAND(popup);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- tb = elm_table_add(popup);
- E_EXPAND(tb);
- evas_object_show(tb);
- elm_object_content_set(popup, tb);
-
- lbl = elm_label_add(tb);
- evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_style_set(lbl, "marker");
- elm_object_text_set(lbl, _("CpuClock Configuration"));
- elm_table_pack(tb, lbl, 0, 0, 2, 1);
- evas_object_show(lbl);
-
- list = elm_list_add(tb);
- E_ALIGN(list, 0, EVAS_HINT_FILL);
- E_WEIGHT(list, 0, EVAS_HINT_EXPAND);
- elm_table_pack(tb, list, 0, 1, 1, 1);
- elm_list_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS);
- elm_scroller_content_min_limit(list, 1, 1);
- it = elm_list_item_append(list, _("General"), NULL, NULL,
- _config_show_general, cc);
- elm_list_item_selected_set(it, 1);
- it = elm_list_item_append(list, _("Power Policy"), NULL, NULL,
- _config_show_policy, cc);
- it = elm_list_item_append(list, _("Power Saving"), NULL, NULL,
- _config_show_saving, cc);
- if (cc->pstate)
- it = elm_list_item_append(list, _("Power State"), NULL, NULL,
- _config_show_pstate, cc);
- if (cc->frequencies)
- it = elm_list_item_append(list, _("Frequencies"), NULL, NULL,
- _config_show_frequencies, cc);
- elm_list_go(list);
- evas_object_show(list);
-
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("General"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 1, 1, 1, 1);
- evas_object_show(frame);
- cc->general = frame;
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- lbl = elm_label_add(tb);
- E_ALIGN(lbl, 0.0, 0.0);
- E_WEIGHT(lbl, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(lbl, _("Update Poll Interval"));
- elm_box_pack_end(box, lbl);
- evas_object_show(lbl);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 0);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Fast (4 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, cc);
- evas_object_show(o);
- group = o;
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 1);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Medium (8 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, cc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 2);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Normal (32 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, cc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 3);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Slow (64 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, cc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 4);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Very Slow (256 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, cc);
- evas_object_show(o);
-
- switch (inst->cfg->cpuclock.poll_interval)
- {
- case 4:
- elm_radio_value_set(group, 0);
- break;
-
- case 8:
- elm_radio_value_set(group, 1);
- break;
-
- case 32:
- elm_radio_value_set(group, 2);
- break;
-
- case 64:
- elm_radio_value_set(group, 3);
- break;
-
- case 256:
- elm_radio_value_set(group, 4);
- break;
-
- default:
- elm_radio_value_set(group, 2);
- }
-
- elm_object_content_set(frame, box);
-
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("Power Policy"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 1, 1, 1, 1);
- evas_object_show(frame);
- cc->policy = frame;
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- i = 0;
- for (l = inst->cfg->cpuclock.status->governors; l; l = l->next)
- {
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, i);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- if (!strcmp(l->data, "ondemand"))
- elm_object_text_set(o, _("Automatic"));
- else if (!strcmp(l->data, "conservative"))
- elm_object_text_set(o, _("Lower Power Automatic"));
- else if (!strcmp(l->data, "interactive"))
- elm_object_text_set(o, _("Automatic Interactive"));
- else if (!strcmp(l->data, "powersave"))
- elm_object_text_set(o, _("Minimum Speed"));
- else if (!strcmp(l->data, "performance"))
- elm_object_text_set(o, _("Maximum Speed"));
- else
- elm_object_text_set(o, l->data);
- evas_object_data_set(o, "governor", strdup(l->data));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _governor_changed, cc);
- evas_object_show(o);
-
- if (!strcmp(inst->cfg->cpuclock.status->cur_governor, l->data))
- value = i;
-
- if (!groupg)
- groupg = o;
- else
- elm_radio_group_add(o, groupg);
- i++;
- }
- if (groupg)
- elm_radio_value_set(groupg, value);
-
- check = elm_check_add(box);
- elm_object_text_set(check, _("Restore CPU Power Policy"));
- elm_check_state_set(check, inst->cfg->cpuclock.restore_governor);
- E_ALIGN(check, 0.0, 0.0);
- E_WEIGHT(check, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(check, "changed", _restore_governor, cc);
- elm_box_pack_end(box, check);
- evas_object_show(check);
-
- elm_object_content_set(frame, box);
-
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("Power Saving"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 1, 1, 1, 1);
- evas_object_show(frame);
- cc->saving = frame;
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- check = elm_check_add(box);
- elm_object_text_set(check, _("Automatic Powersaving"));
- elm_check_state_set(check, inst->cfg->cpuclock.auto_powersave);
- E_ALIGN(check, 0.0, 0.0);
- E_WEIGHT(check, EVAS_HINT_EXPAND, 0);
- evas_object_smart_callback_add(check, "changed", _auto_powersave, cc);
- elm_box_pack_end(box, check);
- evas_object_show(check);
-
- i = 0;
- for (l = inst->cfg->cpuclock.status->governors; l; l = l->next)
- {
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, i);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- if (!strcmp(l->data, "ondemand"))
- elm_object_text_set(o, _("Automatic"));
- else if (!strcmp(l->data, "conservative"))
- elm_object_text_set(o, _("Lower Power Automatic"));
- else if (!strcmp(l->data, "interactive"))
- elm_object_text_set(o, _("Automatic Interactive"));
- else if (!strcmp(l->data, "powersave"))
- elm_object_text_set(o, _("Minimum Speed"));
- else if (!strcmp(l->data, "performance"))
- elm_object_text_set(o, _("Maximum Speed"));
- else
- elm_object_text_set(o, l->data);
- elm_object_disabled_set(o, inst->cfg->cpuclock.auto_powersave);
- evas_object_data_set(o, "governor", strdup(l->data));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _powersave_changed, cc);
- evas_object_show(o);
- cc->powersaves = eina_list_append(cc->powersaves, o);
-
- if (inst->cfg->cpuclock.powersave_governor && !strcmp(inst->cfg->cpuclock.powersave_governor, l->data))
- value = i;
-
- if (!groups)
- groups = o;
- else
- elm_radio_group_add(o, groups);
- i++;
- }
- if (groups)
- elm_radio_value_set(groups, value);
-
- elm_object_content_set(frame, box);
-
- if (cc->pstate)
- {
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("Power State"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 1, 1, 1, 1);
- evas_object_show(frame);
- cc->ps = frame;
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- slider = elm_slider_add(box);
- elm_object_text_set(slider, _("Maximum Power State:"));
- elm_slider_unit_format_set(slider, "%3.0f");
- elm_slider_indicator_format_set(slider, "%3.0f");
- elm_slider_min_max_set(slider, 2, 100);
- elm_slider_value_set(slider, inst->cfg->cpuclock.pstate_max);
- elm_slider_step_set(slider, 1);
- elm_slider_span_size_set(slider, 100);
- evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
- evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_max_power, cc);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
- cc->max = slider;
-
- slider = elm_slider_add(box);
- elm_object_text_set(slider, _("Minimum Power State:"));
- elm_slider_unit_format_set(slider, "%3.0f");
- elm_slider_indicator_format_set(slider, "%3.0f");
- elm_slider_min_max_set(slider, 0, 100);
- elm_slider_value_set(slider, inst->cfg->cpuclock.pstate_min);
- elm_slider_step_set(slider, 1);
- elm_slider_span_size_set(slider, 100);
- evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
- evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_min_power, cc);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
- cc->min = slider;
-
- elm_object_content_set(frame, box);
- }
- if (cc->frequencies)
- {
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("Frequencies"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 1, 1, 1, 1);
- evas_object_show(frame);
- cc->freq = frame;
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- i = 0;
- for (l = inst->cfg->cpuclock.status->frequencies; l; l = l->next)
- {
- char buf[4096];
- int frequency;
-
- frequency = (long)l->data;
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, i);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
-#if defined(__OpenBSD__)
- snprintf(buf, sizeof(buf), "%i %%", frequency);
-#else
- if (frequency < 1000000)
- snprintf(buf, sizeof(buf), _("%i MHz"), frequency / 1000);
- else
- snprintf(buf, sizeof(buf), _("%'.1f GHz"),
- frequency / 1000000.);
-#endif
- elm_object_text_set(o, buf);
- evas_object_data_set(o, "frequency", (void *) (long) frequency);
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _frequency_changed, cc);
- evas_object_show(o);
-
-#if defined(__OpenBSD__)
- if (inst->cfg->cpuclock.status->cur_percent == frequency)
- value = i;
-#else
- if (inst->cfg->cpuclock.status->cur_frequency == frequency)
- value = i;
-#endif
- if (!groupf)
- groupf = o;
- else
- elm_radio_group_add(o, groupf);
- i++;
- }
- if (groupf)
- elm_radio_value_set(groupf, value);
-
- elm_object_content_set(frame, box);
- evas_object_hide(cc->freq);
- }
- if (cc->pstate)
- evas_object_hide(cc->ps);
- evas_object_hide(cc->policy);
- evas_object_hide(cc->saving);
- evas_object_show(cc->general);
-
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center_on_zone(popup, zone);
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, cc);
-
- return inst->cfg->cpuclock.configure = popup;
-}
-
diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor.c b/src/modules/sysinfo/cpumonitor/cpumonitor.c
deleted file mode 100644
index 9618cbad6e..0000000000
--- a/src/modules/sysinfo/cpumonitor/cpumonitor.c
+++ /dev/null
@@ -1,502 +0,0 @@
-#include "cpumonitor.h"
-
-typedef struct _Thread_Config Thread_Config;
-
-struct _Thread_Config
-{
- int interval;
- int num_cores;
- int percent;
- unsigned long total;
- unsigned long idle;
- Instance *inst;
- E_Powersave_Sleeper *sleeper;
- Eina_List *cores;
-};
-
-static void
-_cpumonitor_face_update(Thread_Config *thc)
-{
- Eina_List *l;
- CPU_Core *core;
-
- EINA_LIST_FOREACH(thc->cores, l, core)
- {
- Edje_Message_Int_Set *usage_msg;
- usage_msg = malloc(sizeof(Edje_Message_Int_Set) + 1 * sizeof(int));
- EINA_SAFETY_ON_NULL_RETURN(usage_msg);
- usage_msg->count = 1;
- usage_msg->val[0] = core->percent;
- edje_object_message_send(elm_layout_edje_get(core->layout), EDJE_MESSAGE_INT_SET, 1,
- usage_msg);
- E_FREE(usage_msg);
- }
- if (thc->inst->cfg->cpumonitor.popup)
- {
- elm_progressbar_value_set(thc->inst->cfg->cpumonitor.popup_pbar,
- (float)thc->percent / 100);
- }
-}
-
-static Evas_Object *
-_cpumonitor_configure_cb(Evas_Object *g)
-{
- Instance *inst = evas_object_data_get(g, "Instance");
-
- if (!sysinfo_config) return NULL;
- return cpumonitor_configure(inst);
-}
-
-static void
-_cpumonitor_popup_dismissed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- E_FREE_FUNC(obj, evas_object_del);
- inst->cfg->cpumonitor.popup = NULL;
-}
-
-static void
-_cpumonitor_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->cfg->cpumonitor.popup = NULL;
-}
-
-static void
-_cpumonitor_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Evas_Object *popup, *box, *pbar, *label;
- Evas_Event_Mouse_Up *ev = event_data;
- Instance *inst = data;
- char text[256];
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (ev->button == 1)
- {
- if (inst->cfg->cpumonitor.popup)
- {
- elm_ctxpopup_dismiss(inst->cfg->cpumonitor.popup);
- return;
- }
- popup = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(popup, "noblock");
- evas_object_smart_callback_add(popup, "dismissed", _cpumonitor_popup_dismissed, inst);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _cpumonitor_popup_deleted, inst);
-
- box = elm_box_add(popup);
- E_EXPAND(box); E_FILL(box);
- elm_object_content_set(popup, box);
- evas_object_show(box);
-
- snprintf(text, sizeof(text), "<big><b>%s</b></big>", _("Total CPU Usage"));
- label = elm_label_add(box);
- E_EXPAND(label); E_ALIGN(label, 0.5, 0.5);
- elm_object_text_set(label, text);
- elm_box_pack_end(box, label);
- evas_object_show(label);
-
- pbar = elm_progressbar_add(box);
- E_EXPAND(pbar); E_FILL(pbar);
- elm_progressbar_span_size_set(pbar, 200 * e_scale);
- elm_progressbar_value_set(pbar, (float)inst->cfg->cpumonitor.percent / 100);
- elm_box_pack_end(box, pbar);
- evas_object_show(pbar);
- inst->cfg->cpumonitor.popup_pbar = pbar;
-
- e_gadget_util_ctxpopup_place(inst->o_main, popup,
- inst->cfg->cpumonitor.o_gadget);
- evas_object_show(popup);
- inst->cfg->cpumonitor.popup = popup;
- }
-}
-
-static void
-_cpumonitor_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Evas_Coord w = 1, h = 1, sw, sh;
- Instance *inst = data;
- int num_cores = inst->cfg->cpumonitor.cores;
-
- if (!num_cores || !inst->o_main) return;
-
- edje_object_parts_extends_calc(elm_layout_edje_get(obj), 0, 0, &w, &h);
- evas_object_event_callback_del_full(obj, EVAS_CALLBACK_RESIZE, _cpumonitor_resize_cb, inst);
- if (inst->cfg->esm == E_SYSINFO_MODULE_CPUMONITOR)
- {
- evas_object_geometry_get(inst->o_main, 0, 0, &sw, &sh);
- }
- else
- {
- sw = w;
- sh = h;
- }
- if (e_gadget_site_orient_get(e_gadget_site_get(inst->o_main)) == E_GADGET_SITE_ORIENT_VERTICAL)
- {
- w = sw;
- h *= num_cores;
- }
- else
- {
- w *= num_cores;
- h = sh;
- }
- if (w < 1) w = 1;
- if (h < 1) h = 1;
- evas_object_size_hint_aspect_set(inst->cfg->cpumonitor.o_gadget_box, EVAS_ASPECT_CONTROL_BOTH, w, h);
- if (inst->cfg->esm == E_SYSINFO_MODULE_CPUMONITOR)
- evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, w, h);
-}
-
-static void
-_cpumonitor_cb_usage_check_main(void *data, Ecore_Thread *th)
-{
- Thread_Config *thc = data;
- for (;; )
- {
- if (ecore_thread_check(th)) break;
-#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- _cpumonitor_sysctl_getusage(&thc->total, &thc->idle, &thc->percent, thc->cores);
-#else
- _cpumonitor_proc_getusage(&thc->total, &thc->idle, &thc->percent, thc->cores);
-#endif
- ecore_thread_feedback(th, NULL);
- if (ecore_thread_check(th)) break;
- e_powersave_sleeper_sleep(thc->sleeper, thc->interval);
- if (ecore_thread_check(th)) break;
- }
-}
-
-static void
-_cpumonitor_cb_usage_check_notify(void *data,
- Ecore_Thread *th EINA_UNUSED,
- void *msg EINA_UNUSED)
-{
- Thread_Config *thc = data;
-
- if (!thc->inst || !thc->inst->cfg) return;
- if (thc->inst->cfg->esm != E_SYSINFO_MODULE_CPUMONITOR && thc->inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
- thc->inst->cfg->cpumonitor.percent = thc->percent;
- _cpumonitor_face_update(thc);
-}
-
-static void
-_cpumonitor_cb_usage_check_end(void *data, Ecore_Thread *th EINA_UNUSED)
-{
- Thread_Config *thc = data;
- CPU_Core *core;
-
- e_powersave_sleeper_free(thc->sleeper);
- EINA_LIST_FREE(thc->cores, core)
- E_FREE(core);
- E_FREE(thc);
-}
-
-Evas_Object *
-_cpumonitor_add_layout(Instance *inst)
-{
- Evas_Object *layout;
- int orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_main));
-
- layout = elm_layout_add(inst->cfg->cpumonitor.o_gadget_box);
- edje_object_update_hints_set(elm_layout_edje_get(layout), EINA_TRUE);
- if (orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(layout, "base/theme/gadget/cpumonitor",
- "e/gadget/cpumonitor/core/main_vert");
- else
- e_theme_edje_object_set(layout, "base/theme/gadget/cpumonitor",
- "e/gadget/cpumonitor/core/main");
- E_EXPAND(layout);
- E_FILL(layout);
- elm_box_pack_end(inst->cfg->cpumonitor.o_gadget_box, layout);
- evas_object_show(layout);
-
- return layout;
-}
-
-static void
-_cpumonitor_del_layouts(Instance *inst)
-{
- elm_box_clear(inst->cfg->cpumonitor.o_gadget_box);
-}
-
-static Eina_Bool
-_screensaver_on(void *data)
-{
- Instance *inst = data;
-
- if (!ecore_thread_check(inst->cfg->cpumonitor.usage_check_thread))
- {
- _cpumonitor_del_layouts(inst);
- ecore_thread_cancel(inst->cfg->cpumonitor.usage_check_thread);
- inst->cfg->cpumonitor.usage_check_thread = NULL;
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_screensaver_off(void *data)
-{
- Instance *inst = data;
-
- _cpumonitor_config_updated(inst);
-
- return ECORE_CALLBACK_RENEW;
-}
-
-void
-_cpumonitor_config_updated(Instance *inst)
-{
- Thread_Config *thc;
- CPU_Core *core;
- int i = 0;
-
- if (inst->cfg->id == -1)
- {
- int percent = 15;
- thc = E_NEW(Thread_Config, 1);
- if (thc)
- {
- thc->inst = inst;
- thc->total = 0;
- thc->idle = 0;
- thc->percent = 60;
- thc->num_cores = 4;
- inst->cfg->cpumonitor.cores = thc->num_cores;
- for (i = 0; i < 4; i++)
- {
- core = E_NEW(CPU_Core, 1);
- core->layout = _cpumonitor_add_layout(inst);
- if (i == 0)
- evas_object_event_callback_add(core->layout, EVAS_CALLBACK_RESIZE, _cpumonitor_resize_cb, inst);
- core->percent = percent;
- core->total = 0;
- core->idle = 0;
- thc->cores = eina_list_append(thc->cores, core);
- percent += 15;
- }
- _cpumonitor_face_update(thc);
- EINA_LIST_FREE(thc->cores, core)
- E_FREE(core);
- E_FREE(thc);
- }
- return;
- }
- if (!ecore_thread_check(inst->cfg->cpumonitor.usage_check_thread))
- {
- _cpumonitor_del_layouts(inst);
- ecore_thread_cancel(inst->cfg->cpumonitor.usage_check_thread);
- inst->cfg->cpumonitor.usage_check_thread = NULL;
- }
- thc = E_NEW(Thread_Config, 1);
- if (thc)
- {
- thc->inst = inst;
- thc->total = 0;
- thc->idle = 0;
- thc->percent = 0;
- thc->interval = inst->cfg->cpumonitor.poll_interval;
- thc->sleeper = e_powersave_sleeper_new();
-#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- thc->num_cores = _cpumonitor_sysctl_getcores();
-#else
- thc->num_cores = _cpumonitor_proc_getcores();
-#endif
- inst->cfg->cpumonitor.cores = thc->num_cores;
- for (i = 0; i < thc->num_cores; i++)
- {
- core = E_NEW(CPU_Core, 1);
- core->layout = _cpumonitor_add_layout(inst);
- if (i == 0)
- evas_object_event_callback_add(core->layout, EVAS_CALLBACK_RESIZE, _cpumonitor_resize_cb, inst);
- core->percent = 0;
- core->total = 0;
- core->idle = 0;
- thc->cores = eina_list_append(thc->cores, core);
- }
- inst->cfg->cpumonitor.usage_check_thread =
- ecore_thread_feedback_run(_cpumonitor_cb_usage_check_main,
- _cpumonitor_cb_usage_check_notify,
- _cpumonitor_cb_usage_check_end,
- _cpumonitor_cb_usage_check_end, thc, EINA_TRUE);
- }
- e_config_save_queue();
-}
-
-static void
-_cpumonitor_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->o_main != event_data) return;
-
- if (inst->cfg->cpumonitor.popup)
- E_FREE_FUNC(inst->cfg->cpumonitor.popup, evas_object_del);
- if (inst->cfg->cpumonitor.configure)
- E_FREE_FUNC(inst->cfg->cpumonitor.configure, evas_object_del);
- EINA_LIST_FREE(inst->cfg->cpumonitor.handlers, handler)
- ecore_event_handler_del(handler);
- evas_object_smart_callback_del_full(e_gadget_site_get(inst->o_main), "gadget_removed",
- _cpumonitor_removed_cb, inst);
- evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_cpumonitor_remove, data);
- if (!ecore_thread_check(inst->cfg->cpumonitor.usage_check_thread))
- {
- _cpumonitor_del_layouts(inst);
- ecore_thread_cancel(inst->cfg->cpumonitor.usage_check_thread);
- inst->cfg->cpumonitor.usage_check_thread = NULL;
- }
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
-}
-
-void
-sysinfo_cpumonitor_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->cfg->cpumonitor.popup)
- E_FREE_FUNC(inst->cfg->cpumonitor.popup, evas_object_del);
- if (inst->cfg->cpumonitor.configure)
- E_FREE_FUNC(inst->cfg->cpumonitor.configure, evas_object_del);
- EINA_LIST_FREE(inst->cfg->cpumonitor.handlers, handler)
- ecore_event_handler_del(handler);
- if (!ecore_thread_check(inst->cfg->cpumonitor.usage_check_thread))
- {
- _cpumonitor_del_layouts(inst);
- ecore_thread_cancel(inst->cfg->cpumonitor.usage_check_thread);
- inst->cfg->cpumonitor.usage_check_thread = NULL;
- }
-}
-
-static void
-_cpumonitor_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- int orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_main));
-
- e_gadget_configure_cb_set(inst->o_main, _cpumonitor_configure_cb);
-
- inst->cfg->cpumonitor.o_gadget = elm_layout_add(inst->o_main);
- if (orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(inst->cfg->cpumonitor.o_gadget,
- "base/theme/gadget/cpumonitor",
- "e/gadget/cpumonitor/main_vert");
- else
- e_theme_edje_object_set(inst->cfg->cpumonitor.o_gadget,
- "base/theme/gadget/cpumonitor",
- "e/gadget/cpumonitor/main");
- E_EXPAND(inst->cfg->cpumonitor.o_gadget);
- E_FILL(inst->cfg->cpumonitor.o_gadget);
- elm_box_pack_end(inst->o_main, inst->cfg->cpumonitor.o_gadget);
- evas_object_event_callback_add(inst->cfg->cpumonitor.o_gadget, EVAS_CALLBACK_MOUSE_UP,
- _cpumonitor_mouse_up_cb, inst);
- evas_object_show(inst->cfg->cpumonitor.o_gadget);
-
- inst->cfg->cpumonitor.o_gadget_box = elm_box_add(inst->cfg->cpumonitor.o_gadget);
- elm_box_homogeneous_set(inst->cfg->cpumonitor.o_gadget_box, EINA_TRUE);
- if (orient == E_GADGET_SITE_ORIENT_VERTICAL)
- elm_box_horizontal_set(inst->cfg->cpumonitor.o_gadget_box, EINA_FALSE);
- else
- elm_box_horizontal_set(inst->cfg->cpumonitor.o_gadget_box, EINA_TRUE);
- E_EXPAND(inst->cfg->cpumonitor.o_gadget_box);
- E_FILL(inst->cfg->cpumonitor.o_gadget_box);
- elm_layout_content_set(inst->cfg->cpumonitor.o_gadget, "e.swallow.content", inst->cfg->cpumonitor.o_gadget_box);
- evas_object_show(inst->cfg->cpumonitor.o_gadget_box);
-
- evas_object_smart_callback_del_full(obj, "gadget_created", _cpumonitor_created_cb, data);
-
- E_LIST_HANDLER_APPEND(inst->cfg->cpumonitor.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->cpumonitor.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
-
- _cpumonitor_config_updated(inst);
-}
-
-Evas_Object *
-sysinfo_cpumonitor_create(Evas_Object *parent, Instance *inst)
-{
- inst->cfg->cpumonitor.percent = 0;
- inst->cfg->cpumonitor.popup = NULL;
- inst->cfg->cpumonitor.configure = NULL;
- inst->cfg->cpumonitor.o_gadget = elm_layout_add(parent);
- e_theme_edje_object_set(inst->cfg->cpumonitor.o_gadget,
- "base/theme/gadget/cpumonitor",
- "e/gadget/cpumonitor/main");
- E_EXPAND(inst->cfg->cpumonitor.o_gadget);
- E_FILL(inst->cfg->cpumonitor.o_gadget);
- evas_object_event_callback_add(inst->cfg->cpumonitor.o_gadget, EVAS_CALLBACK_MOUSE_UP,
- _cpumonitor_mouse_up_cb, inst);
- evas_object_show(inst->cfg->cpumonitor.o_gadget);
-
- inst->cfg->cpumonitor.o_gadget_box = elm_box_add(inst->cfg->cpumonitor.o_gadget);
- elm_box_homogeneous_set(inst->cfg->cpumonitor.o_gadget_box, EINA_TRUE);
- elm_box_horizontal_set(inst->cfg->cpumonitor.o_gadget_box, EINA_TRUE);
- E_EXPAND(inst->cfg->cpumonitor.o_gadget_box);
- E_FILL(inst->cfg->cpumonitor.o_gadget_box);
- elm_layout_content_set(inst->cfg->cpumonitor.o_gadget, "e.swallow.content", inst->cfg->cpumonitor.o_gadget_box);
- evas_object_show(inst->cfg->cpumonitor.o_gadget_box);
-
- E_LIST_HANDLER_APPEND(inst->cfg->cpumonitor.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->cpumonitor.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
-
- _cpumonitor_config_updated(inst);
-
- return inst->cfg->cpumonitor.o_gadget;
-}
-
-static Config_Item *
-_conf_item_get(int *id)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(sysinfo_config->items, l, ci)
- if (*id == ci->id && ci->esm == E_SYSINFO_MODULE_CPUMONITOR) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
-
- if (*id != -1)
- ci->id = eina_list_count(sysinfo_config->items) + 1;
- else
- ci->id = -1;
-
- ci->esm = E_SYSINFO_MODULE_CPUMONITOR;
- ci->cpumonitor.poll_interval = 32;
- ci->cpumonitor.popup = NULL;
- ci->cpumonitor.configure = NULL;
- sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
-
- return ci;
-}
-
-Evas_Object *
-cpumonitor_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNUSED)
-{
- Instance *inst;
-
- inst = E_NEW(Instance, 1);
- inst->cfg = _conf_item_get(id);
- *id = inst->cfg->id;
- inst->cfg->cpumonitor.popup = NULL;
- inst->cfg->cpumonitor.configure = NULL;
- inst->o_main = elm_box_add(parent);
- evas_object_data_set(inst->o_main, "Instance", inst);
- evas_object_smart_callback_add(parent, "gadget_created", _cpumonitor_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_removed", _cpumonitor_removed_cb, inst);
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_cpumonitor_remove, inst);
- evas_object_show(inst->o_main);
-
- if (inst->cfg->id < 0) return inst->o_main;
-
- sysinfo_instances =
- eina_list_append(sysinfo_instances, inst);
-
- return inst->o_main;
-}
-
diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor.h b/src/modules/sysinfo/cpumonitor/cpumonitor.h
deleted file mode 100644
index 557f23f069..0000000000
--- a/src/modules/sysinfo/cpumonitor/cpumonitor.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef CPUMONITOR_H
-#define CPUMONITOR_H
-
-#include "../sysinfo.h"
-
-EINTERN void _cpumonitor_config_updated(Instance *inst);
-EINTERN int _cpumonitor_proc_getcores(void);
-EINTERN void _cpumonitor_proc_getusage(unsigned long *prev_total, unsigned long *prev_idle, int *prev_precent, Eina_List *cores);
-EINTERN int _cpumonitor_sysctl_getcores(void);
-EINTERN void _cpumonitor_sysctl_getusage(unsigned long *prev_total, unsigned long *prev_idle, int *prev_precent, Eina_List *cores);
-EINTERN Evas_Object *cpumonitor_configure(Instance *inst);
-#endif
diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor_config.c b/src/modules/sysinfo/cpumonitor/cpumonitor_config.c
deleted file mode 100644
index f20a936350..0000000000
--- a/src/modules/sysinfo/cpumonitor/cpumonitor_config.c
+++ /dev/null
@@ -1,171 +0,0 @@
-#include "cpumonitor.h"
-
-static void
-_config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- E_FREE_FUNC(inst->cfg->cpumonitor.configure, evas_object_del);
- e_config_save_queue();
-}
-
-static void
-_config_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- int value = elm_radio_value_get(obj);
-
- switch (value)
- {
- case 0:
- inst->cfg->cpumonitor.poll_interval = 4;
- break;
-
- case 1:
- inst->cfg->cpumonitor.poll_interval = 8;
- break;
-
- case 2:
- inst->cfg->cpumonitor.poll_interval = 32;
- break;
-
- case 3:
- inst->cfg->cpumonitor.poll_interval = 64;
- break;
-
- case 4:
- inst->cfg->cpumonitor.poll_interval = 256;
- break;
-
- default:
- inst->cfg->cpumonitor.poll_interval = 32;
- }
- e_config_save_queue();
- _cpumonitor_config_updated(inst);
-}
-
-Evas_Object *
-cpumonitor_configure(Instance *inst)
-{
- Evas_Object *popup, *frame, *box, *o, *group, *lbl;
- E_Zone *zone = e_zone_current_get();
-
- popup = elm_popup_add(e_comp->elm);
- E_EXPAND(popup);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- box = elm_box_add(popup);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- E_FILL(box);
- evas_object_show(box);
- elm_object_content_set(popup, box);
-
- lbl = elm_label_add(box);
- evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_style_set(lbl, "marker");
- elm_object_text_set(lbl, _("CpuMonitor Configuration"));
- elm_box_pack_end(box, lbl);
- evas_object_show(lbl);
-
- frame = elm_frame_add(box);
- elm_object_text_set(frame, _("Update Poll Interval"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_box_pack_end(box, frame);
- evas_object_show(frame);
-
- box = elm_box_add(popup);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 0);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Fast (4 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _config_changed, inst);
- evas_object_show(o);
- group = o;
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 1);
- elm_radio_group_add(o, group);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Medium (8 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _config_changed, inst);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 2);
- elm_radio_group_add(o, group);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Normal (32 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _config_changed, inst);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 3);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Slow (64 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _config_changed, inst);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 4);
- elm_radio_group_add(o, group);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Very Slow (256 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _config_changed, inst);
- evas_object_show(o);
-
- switch (inst->cfg->cpumonitor.poll_interval)
- {
- case 4:
- elm_radio_value_set(group, 0);
- break;
-
- case 8:
- elm_radio_value_set(group, 1);
- break;
-
- case 32:
- elm_radio_value_set(group, 2);
- break;
-
- case 64:
- elm_radio_value_set(group, 3);
- break;
-
- case 256:
- elm_radio_value_set(group, 4);
- break;
-
- default:
- elm_radio_value_set(group, 2);
- }
-
- elm_object_content_set(frame, box);
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center_on_zone(popup, zone);
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, inst);
-
- return inst->cfg->cpumonitor.configure = popup;
-}
-
diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor_proc.c b/src/modules/sysinfo/cpumonitor/cpumonitor_proc.c
deleted file mode 100644
index 075ec613a4..0000000000
--- a/src/modules/sysinfo/cpumonitor/cpumonitor_proc.c
+++ /dev/null
@@ -1,114 +0,0 @@
-#include "cpumonitor.h"
-
-int
-_cpumonitor_proc_getcores(void)
-{
- char buf[4096], *tok;
- FILE *f;
- int cores = 0, i = 0;
-
- f = fopen("/proc/stat", "r");
- if (f)
- {
- while (fgets(buf, sizeof(buf), f))
- {
- if (i > 0)
- {
- tok = strtok(buf, " ");
- if (!strncmp(tok, "cpu", 3))
- cores++;
- else
- break;
- }
- i++;
- }
- fclose(f);
- }
- return cores;
-}
-
-void
-_cpumonitor_proc_getusage(unsigned long *prev_total,
- unsigned long *prev_idle,
- int *prev_percent,
- Eina_List *cores)
-{
- int k = 0, j = 0;
- char buf[4096];
- FILE *f;
- CPU_Core *core;
-
- f = fopen("/proc/stat", "r");
- if (f)
- {
- while (fgets(buf, sizeof(buf), f))
- {
- if (k == 0)
- {
- unsigned long total = 0, idle = 0, use = 0, total_change = 0, idle_change = 0;
- int percent = 0;
- char *line, *tok;
- int i = 0;
-
- line = strchr(buf, ' ') + 1;
- tok = strtok(line, " ");
- while (tok)
- {
- use = atol(tok);
- total += use;
- i++;
- if (i == 4)
- idle = use;
- tok = strtok(NULL, " ");
- }
- total_change = total - *prev_total;
- idle_change = idle - *prev_idle;
- if (total_change != 0)
- percent = 100 * (1 - ((float)idle_change / (float)total_change));
- if (percent > 100) percent = 100;
- else if (percent < 0)
- percent = 0;
- *prev_total = total;
- *prev_idle = idle;
- *prev_percent = percent;
- }
- if (k > 0)
- {
- unsigned long total = 0, idle = 0, use = 0, total_change = 0, idle_change = 0;
- int percent = 0;
- if (!strncmp(buf, "cpu", 3))
- {
- char *line, *tok;
- int i = 0;
- line = strchr(buf, ' ');
- tok = strtok(line, " ");
- while (tok)
- {
- use = atol(tok);
- total += use;
- i++;
- if (i == 4)
- idle = use;
- tok = strtok(NULL, " ");
- }
- }
- else break;
- core = eina_list_nth(cores, j);
- total_change = total - core->total;
- idle_change = idle - core->idle;
- if (total_change != 0)
- percent = 100 * (1 - ((float)idle_change / (float)total_change));
- if (percent > 100) percent = 100;
- else if (percent < 0)
- percent = 0;
- core->percent = percent;
- core->total = total;
- core->idle = idle;
- j++;
- }
- k++;
- }
- fclose(f);
- }
-}
-
diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor_sysctl.c b/src/modules/sysinfo/cpumonitor/cpumonitor_sysctl.c
deleted file mode 100644
index bdddd2f539..0000000000
--- a/src/modules/sysinfo/cpumonitor/cpumonitor_sysctl.c
+++ /dev/null
@@ -1,125 +0,0 @@
-#include "cpumonitor.h"
-
-#if defined(__FreeBSD__) || defined (__DragonFly__)
-# include <sys/types.h>
-# include <sys/sysctl.h>
-# define CPU_STATES 5
-#endif
-
-#if defined(__OpenBSD__)
-# include <sys/sched.h>
-# include <sys/sysctl.h>
-# define CPU_STATES 6
-#endif
-
-int
-_cpumonitor_sysctl_getcores(void)
-{
- int cores = 0;
-#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- size_t len;
- int mib[2] = { CTL_HW, HW_NCPU };
-
- len = sizeof(cores);
- if (sysctl(mib, 2, &cores, &len, NULL, 0) < 0) return 0;
-#endif
- return cores;
-}
-
-void
-_cpumonitor_sysctl_getusage(unsigned long *prev_total, unsigned long *prev_idle, int *prev_percent, Eina_List *cores)
-{
- CPU_Core *core;
- size_t size;
- unsigned long percent_all = 0, total_all = 0, idle_all = 0;
- int i, j;
-#if defined(__FreeBSD__) || defined(__DragonFly__)
- int ncpu = _cpumonitor_sysctl_getcores();
- if (!ncpu) return;
- size = sizeof(unsigned long) * (CPU_STATES * ncpu);
- unsigned long cpu_times[ncpu][CPU_STATES];
-
- if (sysctlbyname("kern.cp_times", cpu_times, &size, NULL, 0) < 0)
- return;
-
- for (i = 0; i < ncpu; i++)
- {
- unsigned long *cpu = cpu_times[i];
- double total = 0;
-
- for (j = 0; j < CPU_STATES; j++)
- total += cpu[j];
-
- core = eina_list_nth(cores, i);
-
- int diff_total = total - core->total;
- int diff_idle = cpu[4] - core->idle;
-
- if (diff_total == 0) diff_total = 1;
-
- double ratio = diff_total / 100.0;
- unsigned long used = diff_total - diff_idle;
-
- int percent = used / ratio;
- if (percent > 100)
- percent = 100;
- else if (percent < 0)
- percent = 0;
-
- core->percent = percent;
- core->total = total;
- core->idle = cpu[4];
-
- percent_all += (int)percent;
- total_all += total;
- idle_all += core->idle;
- }
- *prev_total = total_all / ncpu;
- *prev_idle = idle_all / ncpu;
- *prev_percent = (int)(percent_all / ncpu);
-#elif defined(__OpenBSD__)
- int ncpu = _cpumonitor_sysctl_getcores();
- struct cpustats cpu_times[CPU_STATES];
- memset(&cpu_times, 0, CPU_STATES * sizeof(struct cpustats));
- if (!ncpu) return;
- for (i = 0; i < ncpu; i++)
- {
- unsigned long total = 0, idle;
- int diff_total, diff_idle;
- int cpu_time_mib[] = { CTL_KERN, KERN_CPUSTATS, 0 };
-
- size = sizeof(struct cpustats);
- cpu_time_mib[2] = i;
- if (sysctl(cpu_time_mib, 3, &cpu_times[i], &size, NULL, 0) < 0)
- return;
-
- for (j = 0; j < CPU_STATES; j++)
- total += cpu_times[i].cs_time[j];
-
- idle = cpu_times[i].cs_time[CP_IDLE];
- core = eina_list_nth(cores, i);
- diff_total = total - core->total;
- diff_idle = idle - core->idle;
-
- core->total = total;
- core->idle = idle;
-
- if (diff_total == 0) diff_total = 1;
-
- double ratio = diff_total / 100;
- unsigned long used = diff_total - diff_idle;
- int percent = used / ratio;
-
- core->percent = percent;
-
- percent_all += (int)percent;
- total_all += total;
- idle_all += core->idle;
-
- *prev_total = (total_all / ncpu);
- *prev_idle = (idle_all / ncpu);
- *prev_percent = (percent_all / ncpu) + (percent_all % ncpu);
- }
-#endif
-}
-
diff --git a/src/modules/sysinfo/e-module-sysinfo.edj b/src/modules/sysinfo/e-module-sysinfo.edj
deleted file mode 100644
index b861ae1b16..0000000000
--- a/src/modules/sysinfo/e-module-sysinfo.edj
+++ /dev/null
Binary files differ
diff --git a/src/modules/sysinfo/memusage/memusage.c b/src/modules/sysinfo/memusage/memusage.c
deleted file mode 100644
index 35a8cf1626..0000000000
--- a/src/modules/sysinfo/memusage/memusage.c
+++ /dev/null
@@ -1,586 +0,0 @@
-#include "memusage.h"
-
-typedef struct _Thread_Config Thread_Config;
-
-struct _Thread_Config
-{
- int interval;
- Instance *inst;
- int mem_percent;
- int swp_percent;
- unsigned long mem_total;
- unsigned long mem_used;
- unsigned long mem_cached;
- unsigned long mem_buffers;
- unsigned long mem_shared;
- unsigned long swp_total;
- unsigned long swp_used;
- E_Powersave_Sleeper *sleeper;
-};
-
-static void
-_memusage_popup_update(Instance *inst)
-{
- Evas_Object *pbar;
- int val_mb, val_perc;
- char buf[128];
-
- if (!inst->cfg->memusage.popup)
- return;
-
- if (inst->cfg->memusage.mem_total)
- {
- pbar = evas_object_data_get(inst->cfg->memusage.popup, "mem_used_pbar");
- val_mb = inst->cfg->memusage.mem_used / 1024;
- val_perc = 100 * ((float)inst->cfg->memusage.mem_used /
- (float)inst->cfg->memusage.mem_total);
- snprintf(buf, sizeof(buf), "%d MB (%d %%%%)", val_mb, val_perc);
- elm_progressbar_unit_format_set(pbar, buf);
- elm_progressbar_value_set(pbar, (float)val_perc / 100);
-
- pbar = evas_object_data_get(inst->cfg->memusage.popup, "mem_buffers_pbar");
- val_mb = inst->cfg->memusage.mem_buffers / 1024;
- val_perc = 100 * ((float)inst->cfg->memusage.mem_buffers /
- (float)inst->cfg->memusage.mem_total);
- snprintf(buf, sizeof(buf), "%d MB (%d %%%%)", val_mb, val_perc);
- elm_progressbar_unit_format_set(pbar, buf);
- elm_progressbar_value_set(pbar, (float)val_perc / 100);
-
- pbar = evas_object_data_get(inst->cfg->memusage.popup, "mem_cached_pbar");
- val_mb = inst->cfg->memusage.mem_cached / 1024;
- val_perc = 100 * ((float)inst->cfg->memusage.mem_cached /
- (float)inst->cfg->memusage.mem_total);
- snprintf(buf, sizeof(buf), "%d MB (%d %%%%)", val_mb, val_perc);
- elm_progressbar_unit_format_set(pbar, buf);
- elm_progressbar_value_set(pbar, (float)val_perc / 100);
-
- pbar = evas_object_data_get(inst->cfg->memusage.popup, "mem_shared_pbar");
- val_mb = inst->cfg->memusage.mem_shared / 1024;
- val_perc = 100 * ((float)inst->cfg->memusage.mem_shared /
- (float)inst->cfg->memusage.mem_total);
- snprintf(buf, sizeof(buf), "%d MB (%d %%%%)", val_mb, val_perc);
- elm_progressbar_unit_format_set(pbar, buf);
- elm_progressbar_value_set(pbar, (float)val_perc / 100);
- }
-
- if (inst->cfg->memusage.swp_total)
- {
- pbar = evas_object_data_get(inst->cfg->memusage.popup, "swap_pbar");
- val_mb = inst->cfg->memusage.swp_used / 1024;
- val_perc = 100 * ((float)inst->cfg->memusage.swp_used /
- (float)inst->cfg->memusage.swp_total);
- snprintf(buf, sizeof(buf), "%d MB (%d %%%%)", val_mb, val_perc);
- elm_progressbar_unit_format_set(pbar, buf);
- elm_progressbar_value_set(pbar, (float)val_perc / 100);
- }
-}
-
-static void
-_memusage_face_update(Instance *inst)
-{
- Edje_Message_Int_Set *msg;
-
- msg = malloc(sizeof(Edje_Message_Int_Set) + 9 * sizeof(int));
- EINA_SAFETY_ON_NULL_RETURN(msg);
- msg->count = 2;
- msg->val[0] = inst->cfg->memusage.mem_percent;
- msg->val[1] = inst->cfg->memusage.swp_percent;
- msg->val[2] = inst->cfg->memusage.mem_total;
- msg->val[3] = inst->cfg->memusage.mem_used;
- msg->val[4] = inst->cfg->memusage.mem_cached;
- msg->val[5] = inst->cfg->memusage.mem_buffers;
- msg->val[6] = inst->cfg->memusage.mem_shared;
- msg->val[7] = inst->cfg->memusage.swp_total;
- msg->val[8] = inst->cfg->memusage.swp_used;
- edje_object_message_send(elm_layout_edje_get(inst->cfg->memusage.o_gadget),
- EDJE_MESSAGE_INT_SET, 1, msg);
- E_FREE(msg);
-
- if (inst->cfg->memusage.popup)
- _memusage_popup_update(inst);
-}
-
-static Evas_Object *
-_memusage_configure_cb(Evas_Object *g)
-{
- Instance *inst = evas_object_data_get(g, "Instance");
-
- if (!sysinfo_config) return NULL;
- return memusage_configure(inst);
-}
-
-static void
-_memusage_popup_dismissed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- E_FREE_FUNC(obj, evas_object_del);
- inst->cfg->memusage.popup = NULL;
-}
-
-static void
-_memusage_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->cfg->memusage.popup = NULL;
-}
-
-static Evas_Object *
-_memusage_popup_create(Instance *inst)
-{
- Evas_Object *popup, *table, *label, *pbar;
- char buf[128], buf2[128 + 100];
-
- popup = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(popup, "noblock");
- evas_object_smart_callback_add(popup, "dismissed",
- _memusage_popup_dismissed, inst);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL,
- _memusage_popup_deleted, inst);
-
- table = elm_table_add(popup);
- E_EXPAND(table);
- E_FILL(table);
- elm_object_content_set(popup, table);
- evas_object_show(table);
-
- snprintf(buf, sizeof(buf), _("Memory Usage (Available %ld MB)"),
- inst->cfg->memusage.mem_total / 1024);
- snprintf(buf2, sizeof(buf2), "<big><b>%s</b></big>", buf);
-
- label = elm_label_add(table);
- E_EXPAND(label); E_ALIGN(label, 0.5, 0.5);
- elm_object_text_set(label, buf2);
- elm_table_pack(table, label, 0, 0, 2, 1);
- evas_object_show(label);
-
- label = elm_label_add(table);
- E_ALIGN(label, 0.0, 0.5);
- elm_object_text_set(label, _("Used"));
- elm_table_pack(table, label, 0, 1, 1, 1);
- evas_object_show(label);
-
- pbar = elm_progressbar_add(table);
- E_EXPAND(pbar);
- E_FILL(pbar);
- elm_progressbar_span_size_set(pbar, 200 * e_scale);
- elm_table_pack(table, pbar, 1, 1, 1, 1);
- evas_object_show(pbar);
- evas_object_data_set(popup, "mem_used_pbar", pbar);
-
- label = elm_label_add(table);
- E_ALIGN(label, 0.0, 0.5);
- elm_object_text_set(label, _("Buffers"));
- elm_table_pack(table, label, 0, 2, 1, 1);
- evas_object_show(label);
-
- pbar = elm_progressbar_add(table);
- E_EXPAND(pbar);
- E_FILL(pbar);
- elm_progressbar_span_size_set(pbar, 200 * e_scale);
- elm_table_pack(table, pbar, 1, 2, 1, 1);
- evas_object_show(pbar);
- evas_object_data_set(popup, "mem_buffers_pbar", pbar);
-
- label = elm_label_add(table);
- E_ALIGN(label, 0.0, 0.5);
- elm_object_text_set(label, _("Cached"));
- elm_table_pack(table, label, 0, 3, 1, 1);
- evas_object_show(label);
-
- pbar = elm_progressbar_add(table);
- E_EXPAND(pbar);
- E_FILL(pbar);
- elm_progressbar_span_size_set(pbar, 200 * e_scale);
- elm_table_pack(table, pbar, 1, 3, 1, 1);
- evas_object_show(pbar);
- evas_object_data_set(popup, "mem_cached_pbar", pbar);
-
- label = elm_label_add(table);
- E_ALIGN(label, 0.0, 0.5);
- elm_object_text_set(label, _("Shared"));
- elm_table_pack(table, label, 0, 4, 1, 1);
- evas_object_show(label);
-
- pbar = elm_progressbar_add(table);
- E_EXPAND(pbar);
- E_FILL(pbar);
- elm_progressbar_span_size_set(pbar, 200 * e_scale);
- elm_table_pack(table, pbar, 1, 4, 1, 1);
- evas_object_show(pbar);
- evas_object_data_set(popup, "mem_shared_pbar", pbar);
-
- snprintf(buf, sizeof(buf), _("Swap Usage (Available %ld MB)"),
- inst->cfg->memusage.swp_total / 1024);
- snprintf(buf2, sizeof(buf2), "<big><b>%s</b></big>", buf);
-
- label = elm_label_add(table);
- E_EXPAND(label);
- E_ALIGN(label, 0.5, 0.5);
- elm_object_text_set(label, buf2);
- elm_table_pack(table, label, 0, 5, 2, 1);
- evas_object_show(label);
-
- pbar = elm_progressbar_add(table);
- E_EXPAND(pbar);
- E_FILL(pbar);
- elm_table_pack(table, pbar, 0, 6, 2, 1);
- evas_object_show(pbar);
- evas_object_data_set(popup, "swap_pbar", pbar);
-
- // place and show the popup
- e_gadget_util_ctxpopup_place(inst->o_main, popup,
- inst->cfg->memusage.o_gadget);
- evas_object_show(popup);
-
- return popup;
-}
-
-static void
-_memusage_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Evas_Event_Mouse_Up *ev = event_data;
- Instance *inst = data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (ev->button == 1)
- {
- if (inst->cfg->memusage.popup)
- elm_ctxpopup_dismiss(inst->cfg->memusage.popup);
- else
- {
- inst->cfg->memusage.popup = _memusage_popup_create(inst);
- _memusage_popup_update(inst);
- }
- }
-}
-
-static void
-_memusage_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Evas_Coord w, h;
- Instance *inst = data;
-
- edje_object_parts_extends_calc(elm_layout_edje_get(inst->cfg->memusage.o_gadget),
- 0, 0, &w, &h);
- if (w < 1) w = 1;
- if (h < 1) h = 1;
- if (inst->cfg->esm == E_SYSINFO_MODULE_MEMUSAGE)
- evas_object_size_hint_aspect_set(inst->o_main,
- EVAS_ASPECT_CONTROL_BOTH, w, h);
- else
- evas_object_size_hint_aspect_set(inst->cfg->memusage.o_gadget,
- EVAS_ASPECT_CONTROL_BOTH, w, h);
-}
-
-static void
-_memusage_cb_usage_check_main(void *data, Ecore_Thread *th)
-{
- Thread_Config *thc = data;
- for (;; )
- {
- if (ecore_thread_check(th)) break;
-#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
- _memusage_sysctl_getusage(&thc->mem_total, &thc->mem_used,
- &thc->mem_cached, &thc->mem_buffers, &thc->mem_shared,
- &thc->swp_total, &thc->swp_used);
-#else
- _memusage_proc_getusage(&thc->mem_total, &thc->mem_used,
- &thc->mem_cached, &thc->mem_buffers, &thc->mem_shared,
- &thc->swp_total, &thc->swp_used);
-#endif
- if (thc->mem_total > 0)
- thc->mem_percent = 100 * ((float)thc->mem_used / (float)thc->mem_total);
- if (thc->swp_total > 0)
- thc->swp_percent = 100 * ((float)thc->swp_used / (float)thc->swp_total);
-
- ecore_thread_feedback(th, NULL);
- if (ecore_thread_check(th)) break;
- e_powersave_sleeper_sleep(thc->sleeper, thc->interval);
- if (ecore_thread_check(th)) break;
- }
-}
-
-static void
-_memusage_cb_usage_check_end(void *data, Ecore_Thread *th EINA_UNUSED)
-{
- Thread_Config *thc = data;
- e_powersave_sleeper_free(thc->sleeper);
- E_FREE(thc);
-}
-
-static void
-_memusage_cb_usage_check_notify(void *data,
- Ecore_Thread *th EINA_UNUSED,
- void *msg EINA_UNUSED)
-{
- Thread_Config *thc = data;
-
- if (!thc->inst->cfg) return;
- if (thc->inst->cfg->esm != E_SYSINFO_MODULE_MEMUSAGE &&
- thc->inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
-
- thc->inst->cfg->memusage.mem_percent = thc->mem_percent;
- thc->inst->cfg->memusage.swp_percent = thc->swp_percent;
- thc->inst->cfg->memusage.mem_total = thc->mem_total;
- thc->inst->cfg->memusage.mem_used = thc->mem_used;
- thc->inst->cfg->memusage.mem_cached = thc->mem_cached;
- thc->inst->cfg->memusage.mem_buffers = thc->mem_buffers;
- thc->inst->cfg->memusage.mem_shared = thc->mem_shared;
- thc->inst->cfg->memusage.swp_total = thc->swp_total;
- thc->inst->cfg->memusage.swp_used = thc->swp_used;
- _memusage_face_update(thc->inst);
-}
-
-static Eina_Bool
-_screensaver_on(void *data)
-{
- Instance *inst = data;
-
- if (inst->cfg->memusage.usage_check_thread)
- {
- ecore_thread_cancel(inst->cfg->memusage.usage_check_thread);
- inst->cfg->memusage.usage_check_thread = NULL;
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_screensaver_off(void *data)
-{
- Instance *inst = data;
-
- _memusage_config_updated(inst);
-
- return ECORE_CALLBACK_RENEW;
-}
-
-void
-_memusage_config_updated(Instance *inst)
-{
- Thread_Config *thc;
-
- if (inst->cfg->id == -1)
- {
- inst->cfg->memusage.mem_percent = 75;
- inst->cfg->memusage.swp_percent = 30;
- _memusage_face_update(inst);
- return;
- }
- if (inst->cfg->memusage.usage_check_thread)
- {
- ecore_thread_cancel(inst->cfg->memusage.usage_check_thread);
- inst->cfg->memusage.usage_check_thread = NULL;
- }
- thc = E_NEW(Thread_Config, 1);
- if (thc)
- {
- thc->inst = inst;
- thc->sleeper = e_powersave_sleeper_new();
- thc->interval = inst->cfg->memusage.poll_interval;
- thc->mem_percent = 0;
- thc->swp_percent = 0;
- inst->cfg->memusage.usage_check_thread =
- ecore_thread_feedback_run(_memusage_cb_usage_check_main,
- _memusage_cb_usage_check_notify,
- _memusage_cb_usage_check_end,
- _memusage_cb_usage_check_end, thc, EINA_TRUE);
- }
- e_config_save_queue();
-}
-
-static void
-_memusage_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->o_main != event_data) return;
-
- if (inst->cfg->memusage.popup)
- E_FREE_FUNC(inst->cfg->memusage.popup, evas_object_del);
- if (inst->cfg->memusage.configure)
- E_FREE_FUNC(inst->cfg->memusage.configure, evas_object_del);
- evas_object_smart_callback_del_full(e_gadget_site_get(inst->o_main), "gadget_removed",
- _memusage_removed_cb, inst);
- evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL,
- sysinfo_memusage_remove, data);
- EINA_LIST_FREE(inst->cfg->memusage.handlers, handler)
- ecore_event_handler_del(handler);
- if (inst->cfg->memusage.usage_check_thread)
- {
- ecore_thread_cancel(inst->cfg->memusage.usage_check_thread);
- inst->cfg->memusage.usage_check_thread = NULL;
- }
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
-}
-
-void
-sysinfo_memusage_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->cfg->memusage.popup)
- E_FREE_FUNC(inst->cfg->memusage.popup, evas_object_del);
- if (inst->cfg->memusage.configure)
- E_FREE_FUNC(inst->cfg->memusage.configure, evas_object_del);
- if (inst->cfg->memusage.usage_check_thread)
- {
- ecore_thread_cancel(inst->cfg->memusage.usage_check_thread);
- inst->cfg->memusage.usage_check_thread = NULL;
- }
- EINA_LIST_FREE(inst->cfg->memusage.handlers, handler)
- ecore_event_handler_del(handler);
-}
-
-static void
-_memusage_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- int orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_main));
-
- e_gadget_configure_cb_set(inst->o_main, _memusage_configure_cb);
-
- inst->cfg->memusage.o_gadget = elm_layout_add(inst->o_main);
- if (orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(inst->cfg->memusage.o_gadget,
- "base/theme/gadget/memusage",
- "e/gadget/memusage/main_vert");
- else
- e_theme_edje_object_set(inst->cfg->memusage.o_gadget,
- "base/theme/gadget/memusage",
- "e/gadget/memusage/main");
-
- E_EXPAND(inst->cfg->memusage.o_gadget);
- E_FILL(inst->cfg->memusage.o_gadget);
- elm_box_pack_end(inst->o_main, inst->cfg->memusage.o_gadget);
- evas_object_event_callback_add(inst->cfg->memusage.o_gadget,
- EVAS_CALLBACK_MOUSE_UP,
- _memusage_mouse_up_cb, inst);
- evas_object_event_callback_add(inst->cfg->memusage.o_gadget,
- EVAS_CALLBACK_RESIZE,
- _memusage_resize_cb, inst);
- evas_object_show(inst->cfg->memusage.o_gadget);
- evas_object_smart_callback_del_full(obj, "gadget_created",
- _memusage_created_cb, data);
-
- E_LIST_HANDLER_APPEND(inst->cfg->memusage.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->memusage.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
-
- _memusage_config_updated(inst);
-}
-
-Evas_Object *
-sysinfo_memusage_create(Evas_Object *parent, Instance *inst)
-{
- inst->cfg->memusage.mem_percent = 0;
- inst->cfg->memusage.swp_percent = 0;
- inst->cfg->memusage.mem_total = 0;
- inst->cfg->memusage.mem_used = 0;
- inst->cfg->memusage.mem_cached = 0;
- inst->cfg->memusage.mem_buffers = 0;
- inst->cfg->memusage.mem_shared = 0;
- inst->cfg->memusage.swp_total = 0;
- inst->cfg->memusage.swp_used = 0;
- inst->cfg->memusage.popup = NULL;
- inst->cfg->memusage.configure = NULL;
- inst->cfg->memusage.o_gadget = elm_layout_add(parent);
- e_theme_edje_object_set(inst->cfg->memusage.o_gadget,
- "base/theme/gadget/memusage",
- "e/gadget/memusage/main");
- E_EXPAND(inst->cfg->memusage.o_gadget);
- E_FILL(inst->cfg->memusage.o_gadget);
- evas_object_event_callback_add(inst->cfg->memusage.o_gadget,
- EVAS_CALLBACK_MOUSE_UP,
- _memusage_mouse_up_cb, inst);
- evas_object_event_callback_add(inst->cfg->memusage.o_gadget,
- EVAS_CALLBACK_RESIZE,
- _memusage_resize_cb, inst);
- evas_object_show(inst->cfg->memusage.o_gadget);
-
- E_LIST_HANDLER_APPEND(inst->cfg->memusage.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->memusage.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
-
- _memusage_config_updated(inst);
-
- return inst->cfg->memusage.o_gadget;
-}
-
-static Config_Item *
-_conf_item_get(int *id)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(sysinfo_config->items, l, ci)
- if (*id == ci->id && ci->esm == E_SYSINFO_MODULE_MEMUSAGE) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
-
- if (*id != -1)
- ci->id = eina_list_count(sysinfo_config->items) + 1;
- else
- ci->id = -1;
-
- ci->esm = E_SYSINFO_MODULE_MEMUSAGE;
- ci->memusage.poll_interval = 32;
- ci->memusage.mem_percent = 0;
- ci->memusage.swp_percent = 0;
- ci->memusage.mem_total = 0;
- ci->memusage.mem_used = 0;
- ci->memusage.mem_cached = 0;
- ci->memusage.mem_buffers = 0;
- ci->memusage.mem_shared = 0;
- ci->memusage.swp_total = 0;
- ci->memusage.swp_used = 0;
- ci->memusage.popup = NULL;
- ci->memusage.configure = NULL;
-
- sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
-
- return ci;
-}
-
-Evas_Object *
-memusage_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNUSED)
-{
- Instance *inst;
-
- inst = E_NEW(Instance, 1);
- inst->cfg = _conf_item_get(id);
- *id = inst->cfg->id;
- inst->cfg->memusage.mem_percent = 0;
- inst->cfg->memusage.swp_percent = 0;
- inst->cfg->memusage.mem_total = 0;
- inst->cfg->memusage.mem_used = 0;
- inst->cfg->memusage.mem_cached = 0;
- inst->cfg->memusage.mem_buffers = 0;
- inst->cfg->memusage.mem_shared = 0;
- inst->cfg->memusage.swp_total = 0;
- inst->cfg->memusage.swp_used = 0;
- inst->cfg->memusage.popup = NULL;
- inst->cfg->memusage.configure = NULL;
- inst->o_main = elm_box_add(parent);
- evas_object_data_set(inst->o_main, "Instance", inst);
- evas_object_smart_callback_add(parent, "gadget_created",
- _memusage_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_removed",
- _memusage_removed_cb, inst);
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL,
- sysinfo_memusage_remove, inst);
- evas_object_show(inst->o_main);
-
- if (inst->cfg->id < 0) return inst->o_main;
-
- sysinfo_instances = eina_list_append(sysinfo_instances, inst);
-
- return inst->o_main;
-}
-
diff --git a/src/modules/sysinfo/memusage/memusage.h b/src/modules/sysinfo/memusage/memusage.h
deleted file mode 100644
index 31002f2b35..0000000000
--- a/src/modules/sysinfo/memusage/memusage.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef MEMUSAGE_H
-#define MEMUSAGE_H
-
-#include "../sysinfo.h"
-
-EINTERN void _memusage_config_updated(Instance *inst);
-EINTERN Evas_Object *memusage_configure(Instance *inst);
-
-EINTERN void _memusage_proc_getusage(unsigned long *mem_total,
- unsigned long *mem_used,
- unsigned long *mem_cached,
- unsigned long *mem_buffers,
- unsigned long *mem_shared,
- unsigned long *swp_total,
- unsigned long *swp_used);
-
-EINTERN void _memusage_sysctl_getusage(unsigned long *mem_total,
- unsigned long *mem_used,
- unsigned long *mem_cached,
- unsigned long *mem_buffers,
- unsigned long *mem_shared,
- unsigned long *swp_total,
- unsigned long *swp_used);
-
-#endif
diff --git a/src/modules/sysinfo/memusage/memusage_config.c b/src/modules/sysinfo/memusage/memusage_config.c
deleted file mode 100644
index 3e04da4acd..0000000000
--- a/src/modules/sysinfo/memusage/memusage_config.c
+++ /dev/null
@@ -1,171 +0,0 @@
-#include "memusage.h"
-
-static void
-_config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- E_FREE_FUNC(inst->cfg->memusage.configure, evas_object_del);
- e_config_save_queue();
-}
-
-static void
-_config_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- int value = elm_radio_value_get(obj);
-
- switch (value)
- {
- case 0:
- inst->cfg->memusage.poll_interval = 4;
- break;
-
- case 1:
- inst->cfg->memusage.poll_interval = 8;
- break;
-
- case 2:
- inst->cfg->memusage.poll_interval = 32;
- break;
-
- case 3:
- inst->cfg->memusage.poll_interval = 64;
- break;
-
- case 4:
- inst->cfg->memusage.poll_interval = 256;
- break;
-
- default:
- inst->cfg->memusage.poll_interval = 32;
- }
- e_config_save_queue();
- _memusage_config_updated(inst);
-}
-
-Evas_Object *
-memusage_configure(Instance *inst)
-{
- Evas_Object *popup, *frame, *box, *o, *group, *lbl;
- E_Zone *zone = e_zone_current_get();
-
- popup = elm_popup_add(e_comp->elm);
- E_EXPAND(popup);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- box = elm_box_add(popup);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- E_FILL(box);
- evas_object_show(box);
- elm_object_content_set(popup, box);
-
- lbl = elm_label_add(box);
- evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_style_set(lbl, "marker");
- elm_object_text_set(lbl, _("MemUsage Configuration"));
- elm_box_pack_end(box, lbl);
- evas_object_show(lbl);
-
- frame = elm_frame_add(box);
- elm_object_text_set(frame, _("Update Poll Interval"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_box_pack_end(box, frame);
- evas_object_show(frame);
-
- box = elm_box_add(popup);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 0);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Fast (4 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _config_changed, inst);
- evas_object_show(o);
- group = o;
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 1);
- elm_radio_group_add(o, group);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Medium (8 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _config_changed, inst);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 2);
- elm_radio_group_add(o, group);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Normal (32 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _config_changed, inst);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 3);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Slow (64 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _config_changed, inst);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 4);
- elm_radio_group_add(o, group);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Very Slow (256 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _config_changed, inst);
- evas_object_show(o);
-
- switch (inst->cfg->memusage.poll_interval)
- {
- case 4:
- elm_radio_value_set(group, 0);
- break;
-
- case 8:
- elm_radio_value_set(group, 1);
- break;
-
- case 32:
- elm_radio_value_set(group, 2);
- break;
-
- case 64:
- elm_radio_value_set(group, 3);
- break;
-
- case 256:
- elm_radio_value_set(group, 4);
- break;
-
- default:
- elm_radio_value_set(group, 2);
- }
-
- elm_object_content_set(frame, box);
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center_on_zone(popup, zone);
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, inst);
-
- return inst->cfg->memusage.configure = popup;
-}
-
diff --git a/src/modules/sysinfo/memusage/memusage_proc.c b/src/modules/sysinfo/memusage/memusage_proc.c
deleted file mode 100644
index bfbb45664a..0000000000
--- a/src/modules/sysinfo/memusage/memusage_proc.c
+++ /dev/null
@@ -1,98 +0,0 @@
-#include "memusage.h"
-
-unsigned long
-_line_parse(const char *line)
-{
- char *p, *tok;
-
- p = strchr(line, ':') + 1;
- while (isspace(*p))
- p++;
- tok = strtok(p, " ");
- return atol(tok);
-}
-
-void
-_memusage_proc_getusage(unsigned long *mem_total,
- unsigned long *mem_used,
- unsigned long *mem_cached,
- unsigned long *mem_buffers,
- unsigned long *mem_shared,
- unsigned long *swp_total,
- unsigned long *swp_used)
-{
- char line[256];
- int found = 0;
- unsigned long tmp_swp_total = 0;
- unsigned long tmp_swp_free = 0;
- unsigned long tmp_mem_free = 0;
- unsigned long tmp_mem_cached = 0;
- unsigned long tmp_mem_slab = 0;
- FILE *f;
-
- *mem_total = 0;
- *mem_used = 0;
- *mem_cached = 0;
- *mem_buffers = 0;
- *mem_shared = 0;
- *swp_total = 0;
- *swp_used = 0;
-
- f = fopen("/proc/meminfo", "r");
- if (!f) return;
-
- while (fgets(line, sizeof(line), f) != NULL)
- {
- if (!strncmp("MemTotal:", line, 9))
- {
- *mem_total = _line_parse(line);
- found++;
- }
- else if (!strncmp("MemFree:", line, 8))
- {
- tmp_mem_free = _line_parse(line);
- found++;
- }
- else if (!strncmp("Cached:", line, 7))
- {
- tmp_mem_cached = _line_parse(line);
- found++;
- }
- else if (!strncmp("Slab:", line, 5))
- {
- tmp_mem_slab = _line_parse(line);
- found++;
- }
- else if (!strncmp("Buffers:", line, 8))
- {
- *mem_buffers = _line_parse(line);
- found++;
- }
- else if (!strncmp("Shmem:", line, 6))
- {
- *mem_shared = _line_parse(line);
- found++;
- }
- else if (!strncmp("SwapTotal:", line, 10))
- {
- tmp_swp_total = _line_parse(line);
- found++;
- }
- else if (!strncmp("SwapFree:", line, 9))
- {
- tmp_swp_free = _line_parse(line);
- found++;
- }
-
- if (found >= 8)
- break;
- }
- fclose(f);
-
- *mem_cached = tmp_mem_cached + tmp_mem_slab;
- *mem_used = *mem_total - tmp_mem_free - *mem_cached - *mem_buffers;
-
- *swp_total = tmp_swp_total;
- *swp_used = tmp_swp_total - tmp_swp_free;
-}
-
diff --git a/src/modules/sysinfo/memusage/memusage_sysctl.c b/src/modules/sysinfo/memusage/memusage_sysctl.c
deleted file mode 100644
index f4523aa757..0000000000
--- a/src/modules/sysinfo/memusage/memusage_sysctl.c
+++ /dev/null
@@ -1,172 +0,0 @@
-#include "memusage.h"
-
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-# include <sys/types.h>
-# include <sys/sysctl.h>
-# include <vm/vm_param.h>
-#endif
-
-#if defined(__OpenBSD__)
-# include <sys/param.h>
-# include <sys/sysctl.h>
-# include <sys/swap.h>
-# include <sys/mount.h>
-#endif
-
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-static long int
-_sysctlfromname(const char *name, void *mib, int depth, size_t *len)
-{
- long int result;
-
- if (sysctlnametomib(name, mib, len) < 0) return -1;
-
- *len = sizeof(result);
- if (sysctl(mib, depth, &result, len, NULL, 0) < 0) return -1;
-
- return result;
-}
-
-#endif
-
-void
-_memsize_bytes_to_kb(unsigned long *bytes)
-{
- *bytes = (unsigned int)*bytes >> 10;
-}
-
-void
-_memusage_sysctl_getusage(unsigned long *mem_total,
- unsigned long *mem_used,
- unsigned long *mem_cached,
- unsigned long *mem_buffers,
- unsigned long *mem_shared,
- unsigned long *swp_total,
- unsigned long *swp_used)
-{
- size_t len;
- int i = 0;
- *mem_total = *mem_used = *mem_cached = *mem_buffers = *mem_shared = 0;
- *swp_total = *swp_used = 0;
-#if defined(__FreeBSD__) || defined(__DragonFly__)
- size_t miblen;
- int total_pages = 0, free_pages = 0, inactive_pages = 0;
- long int result = 0;
- int page_size = getpagesize();
-
- int *mib = malloc(sizeof(int) * 4);
- if (mib == NULL) return;
-
- mib[0] = CTL_HW; mib[1] = HW_PHYSMEM;
- len = sizeof(*mem_total);
- if (sysctl(mib, 2, mem_total, &len, NULL, 0) == -1)
- return;
- *mem_total /= 1024;
-
- total_pages = _sysctlfromname("vm.stats.vm.v_page_count", mib, 4, &len);
- if (total_pages < 0) return;
-
- free_pages = _sysctlfromname("vm.stats.vm.v_free_count", mib, 4, &len);
- if (free_pages < 0) return;
-
- inactive_pages = _sysctlfromname("vm.stats.vm.v_inactive_count", mib, 4, &len);
- if (inactive_pages < 0) return;
-
- *mem_used = (total_pages - free_pages - inactive_pages) * page_size;
- _memsize_bytes_to_kb(mem_used);
-
- result = _sysctlfromname("vfs.bufspace", mib, 2, &len);
- if (result < 0) return;
- *mem_buffers = (result);
- _memsize_bytes_to_kb(mem_buffers);
-
- result = _sysctlfromname("vm.stats.vm.v_active_count", mib, 4, &len);
- if (result < 0) return;
- *mem_cached = (result * page_size);
- _memsize_bytes_to_kb(mem_cached);
-
- result = _sysctlfromname("vm.stats.vm.v_cache_count", mib, 4, &len);
- if (result < 0) return;
- *mem_shared = (result * page_size);
- _memsize_bytes_to_kb(mem_shared);
-
- result = _sysctlfromname("vm.swap_total", mib, 2, &len);
- if (result < 0) return;
- *swp_total = (result / 1024);
-
- miblen = 3;
- if (sysctlnametomib("vm.swap_info", mib, &miblen) == -1) return;
-
- struct xswdev xsw;
- // previous mib is important for this one...
-
- for (i = 0; ; i++)
- {
- mib[miblen] = i;
- len = sizeof(xsw);
- if (sysctl(mib, miblen + 1, &xsw, &len, NULL, 0) == -1) break;
-
- *swp_used += (unsigned long)xsw.xsw_used * page_size;
- }
-
- *swp_used >>= 10;
-
- E_FREE(mib);
-#elif defined(__OpenBSD__)
- static int mib[] = { CTL_HW, HW_PHYSMEM64 };
- static int bcstats_mib[] = { CTL_VFS, VFS_GENERIC, VFS_BCACHESTAT };
- struct bcachestats bcstats;
- static int uvmexp_mib[] = { CTL_VM, VM_UVMEXP };
- struct uvmexp uvmexp;
- int nswap, rnswap;
- struct swapent *swdev = NULL;
-
- len = sizeof(*mem_total);
- if (sysctl(mib, 2, mem_total, &len, NULL, 0) == -1)
- return;
-
- len = sizeof(uvmexp);
- if (sysctl(uvmexp_mib, 2, &uvmexp, &len, NULL, 0) == -1)
- return;
-
- len = sizeof(bcstats);
- if (sysctl(bcstats_mib, 3, &bcstats, &len, NULL, 0) == -1)
- return;
-
- // Don't fail if there's not swap!
- nswap = swapctl(SWAP_NSWAP, 0, 0);
- if (nswap == 0) goto swap_out;
-
- swdev = calloc(nswap, sizeof(*swdev));
- if (swdev == NULL) goto swap_out;
-
- rnswap = swapctl(SWAP_STATS, swdev, nswap);
- if (rnswap == -1) goto swap_out;
-
- for (i = 0; i < nswap; i++) // nswap; i++)
- {
- if (swdev[i].se_flags & SWF_ENABLE)
- {
- *swp_used += (swdev[i].se_inuse / (1024 / DEV_BSIZE));
- *swp_total += (swdev[i].se_nblks / (1024 / DEV_BSIZE));
- }
- }
-swap_out:
- if (swdev) E_FREE(swdev);
-
- *mem_total /= 1024;
-
- *mem_cached = (uvmexp.pagesize * bcstats.numbufpages);
- _memsize_bytes_to_kb(mem_cached);
-
- *mem_used = (uvmexp.active * uvmexp.pagesize);
- _memsize_bytes_to_kb(mem_used);
-
- *mem_buffers = (uvmexp.pagesize * (uvmexp.npages - uvmexp.free));
- _memsize_bytes_to_kb(mem_buffers);
-
- *mem_shared = (uvmexp.pagesize * uvmexp.wired);
- _memsize_bytes_to_kb(mem_shared);
-#endif
-}
-
diff --git a/src/modules/sysinfo/meson.build b/src/modules/sysinfo/meson.build
deleted file mode 100644
index 443fb05d08..0000000000
--- a/src/modules/sysinfo/meson.build
+++ /dev/null
@@ -1,44 +0,0 @@
-src = files(
- 'mod.c',
- 'sysinfo.c',
- 'sysinfo.h',
- 'batman/batman.h',
- 'batman/batman.c',
- 'batman/batman_fallback.c',
- 'batman/batman_config.c',
- 'thermal/thermal.h',
- 'thermal/thermal.c',
- 'thermal/thermal_config.c',
- 'thermal/thermal_fallback.c',
- 'cpuclock/cpuclock.h',
- 'cpuclock/cpuclock.c',
- 'cpuclock/cpuclock_config.c',
- 'cpumonitor/cpumonitor.h',
- 'cpumonitor/cpumonitor.c',
- 'cpumonitor/cpumonitor_config.c',
- 'cpumonitor/cpumonitor_proc.c',
- 'memusage/memusage.h',
- 'memusage/memusage.c',
- 'memusage/memusage_config.c',
- 'memusage/memusage_proc.c',
- 'netstatus/netstatus.h',
- 'netstatus/netstatus.c',
- 'netstatus/netstatus_config.c',
- 'netstatus/netstatus_proc.c'
-)
-if config_h.has('HAVE_EEZE') == true
- src += files(
- 'batman/batman_udev.c',
- 'thermal/thermal_udev.c')
-elif host_machine.system().contains('bsd') == true
- src += files(
- 'batman/batman_sysctl.c',
- 'thermal/thermal_sysctl.c',
- 'netstatus/netstatus_sysctl.c',
- 'cpumonitor/cpumonitor_sysctl.c',
- 'memusage/memusage_sysctl.c')
-else
- src += files(
- 'batman/batman_upower.c',
- 'thermal/thermal_sysctl.c')
-endif
diff --git a/src/modules/sysinfo/mod.c b/src/modules/sysinfo/mod.c
deleted file mode 100644
index 0e23f6641a..0000000000
--- a/src/modules/sysinfo/mod.c
+++ /dev/null
@@ -1,222 +0,0 @@
-#include "sysinfo.h"
-
-#define CONFIG_VERSION 2
-
-static E_Config_DD *conf_edd = NULL;
-static E_Config_DD *conf_item_edd = NULL;
-Eina_List *sysinfo_instances = NULL;
-Config *sysinfo_config = NULL;
-
-EINTERN void
-sysinfo_init(void)
-{
- Eina_List *l;
- Config_Item *ci;
-
- conf_item_edd = E_CONFIG_DD_NEW("Sysinfo_Config_Item", Config_Item);
-#undef T
-#undef D
-#define T Config_Item
-#define D conf_item_edd
- E_CONFIG_VAL(D, T, id, INT);
- E_CONFIG_VAL(D, T, version, INT);
- E_CONFIG_VAL(D, T, esm, INT);
- E_CONFIG_VAL(D, T, batman.poll_interval, INT);
- E_CONFIG_VAL(D, T, batman.alert, INT);
- E_CONFIG_VAL(D, T, batman.alert_p, INT);
- E_CONFIG_VAL(D, T, batman.alert_timeout, INT);
- E_CONFIG_VAL(D, T, batman.suspend_below, INT);
- E_CONFIG_VAL(D, T, batman.suspend_method, INT);
- E_CONFIG_VAL(D, T, batman.force_mode, INT);
-#if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__NetBSD__)
- E_CONFIG_VAL(D, T, batman.fuzzy, INT);
-#endif
- E_CONFIG_VAL(D, T, batman.desktop_notifications, INT);
- E_CONFIG_VAL(D, T, thermal.poll_interval, INT);
- E_CONFIG_VAL(D, T, thermal.low, INT);
- E_CONFIG_VAL(D, T, thermal.high, INT);
- E_CONFIG_VAL(D, T, thermal.sensor_type, INT);
- E_CONFIG_VAL(D, T, thermal.sensor_name, STR);
- E_CONFIG_VAL(D, T, thermal.units, INT);
- E_CONFIG_VAL(D, T, cpuclock.poll_interval, INT);
- E_CONFIG_VAL(D, T, cpuclock.restore_governor, INT);
- E_CONFIG_VAL(D, T, cpuclock.auto_powersave, INT);
- E_CONFIG_VAL(D, T, cpuclock.powersave_governor, STR);
- E_CONFIG_VAL(D, T, cpuclock.governor, STR);
- E_CONFIG_VAL(D, T, cpuclock.pstate_min, INT);
- E_CONFIG_VAL(D, T, cpuclock.pstate_max, INT);
- E_CONFIG_VAL(D, T, cpumonitor.poll_interval, INT);
- E_CONFIG_VAL(D, T, memusage.poll_interval, INT);
- E_CONFIG_VAL(D, T, netstatus.poll_interval, INT);
- E_CONFIG_VAL(D, T, netstatus.automax, INT);
- E_CONFIG_VAL(D, T, netstatus.inmax, INT);
- E_CONFIG_VAL(D, T, netstatus.outmax, INT);
- E_CONFIG_VAL(D, T, netstatus.receive_units, INT);
- E_CONFIG_VAL(D, T, netstatus.send_units, INT);
-
- conf_edd = E_CONFIG_DD_NEW("Sysinfo_Config", Config);
-#undef T
-#undef D
-#define T Config
-#define D conf_edd
- E_CONFIG_LIST(D, T, items, conf_item_edd);
-
- sysinfo_config = e_config_domain_load("module.sysinfo", conf_edd);
-
- if (!sysinfo_config)
- {
- sysinfo_config = E_NEW(Config, 1);
- ci = E_NEW(Config_Item, 1);
- ci->id = 0;
- ci->version = CONFIG_VERSION;
- ci->esm = E_SYSINFO_MODULE_NONE;
-
- ci->batman.poll_interval = 512;
- ci->batman.alert = 30;
- ci->batman.alert_p = 10;
- ci->batman.alert_timeout = 0;
- ci->batman.suspend_below = 0;
- ci->batman.suspend_method = 0;
- ci->batman.force_mode = 0;
- ci->batman.full = -2;
- ci->batman.time_left = -2;
- ci->batman.have_battery = -2;
- ci->batman.have_power = -2;
-#if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__NetBSD__)
- ci->batman.fuzzy = 0;
-#endif
- ci->batman.desktop_notifications = 0;
- ci->batman.popup = NULL;
- ci->batman.configure = NULL;
- ci->batman.done = EINA_FALSE;
- ci->thermal.poll_interval = 128;
- ci->thermal.low = 30;
- ci->thermal.high = 80;
- ci->thermal.sensor_type = SENSOR_TYPE_NONE;
- ci->thermal.sensor_name = NULL;
- ci->thermal.temp = -900;
- ci->thermal.units = CELSIUS;
- ci->thermal.popup = NULL;
- ci->thermal.configure = NULL;
- ci->cpuclock.poll_interval = 32;
- ci->cpuclock.restore_governor = 0;
- ci->cpuclock.auto_powersave = 1;
- ci->cpuclock.powersave_governor = NULL;
- ci->cpuclock.governor = NULL;
- ci->cpuclock.pstate_min = 1;
- ci->cpuclock.pstate_max = 101;
- ci->cpuclock.popup = NULL;
- ci->cpuclock.configure = NULL;
- ci->cpumonitor.poll_interval = 32;
- ci->cpumonitor.percent = 0;
- ci->cpumonitor.popup = NULL;
- ci->cpumonitor.configure = NULL;
- ci->memusage.poll_interval = 32;
- ci->memusage.mem_percent = 0;
- ci->memusage.swp_percent = 0;
- ci->memusage.popup = NULL;
- ci->memusage.configure = NULL;
- ci->netstatus.poll_interval = 32;
- ci->netstatus.automax = EINA_TRUE;
- ci->netstatus.inmax = 0;
- ci->netstatus.outmax = 0;
- ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
- ci->netstatus.send_units = NETSTATUS_UNIT_BYTES;
- ci->netstatus.instring = NULL;
- ci->netstatus.outstring = NULL;
- ci->netstatus.popup = NULL;
- ci->netstatus.configure = NULL;
-
- E_CONFIG_LIMIT(ci->batman.poll_interval, 4, 4096);
- E_CONFIG_LIMIT(ci->batman.alert, 0, 60);
- E_CONFIG_LIMIT(ci->batman.alert_p, 0, 100);
- E_CONFIG_LIMIT(ci->batman.alert_timeout, 0, 300);
- E_CONFIG_LIMIT(ci->batman.suspend_below, 0, 50);
- E_CONFIG_LIMIT(ci->batman.force_mode, 0, 2);
- E_CONFIG_LIMIT(ci->batman.desktop_notifications, 0, 1);
- E_CONFIG_LIMIT(ci->thermal.poll_interval, 1, 1024);
- E_CONFIG_LIMIT(ci->thermal.low, 0, 100);
- E_CONFIG_LIMIT(ci->thermal.high, 0, 220);
- E_CONFIG_LIMIT(ci->thermal.units, CELSIUS, FAHRENHEIT);
- E_CONFIG_LIMIT(ci->cpuclock.poll_interval, 1, 1024);
- E_CONFIG_LIMIT(ci->cpumonitor.poll_interval, 1, 1024);
- E_CONFIG_LIMIT(ci->memusage.poll_interval, 1, 1024);
- E_CONFIG_LIMIT(ci->netstatus.poll_interval, 1, 1024);
-
- sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
- }
- EINA_LIST_FOREACH(sysinfo_config->items, l, ci)
- {
- if (ci->esm == E_SYSINFO_MODULE_NETSTATUS || ci->esm == E_SYSINFO_MODULE_SYSINFO)
- {
- if (ci->version < CONFIG_VERSION)
- {
- ci->version = CONFIG_VERSION;
- ci->netstatus.automax = EINA_TRUE;
- ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
- ci->netstatus.send_units = NETSTATUS_UNIT_BYTES;
- }
- }
- }
- e_gadget_type_add("Batman", batman_create, NULL);
- e_gadget_type_add("Thermal", thermal_create, NULL);
- e_gadget_type_add("CpuClock", cpuclock_create, NULL);
- e_gadget_type_add("CpuMonitor", cpumonitor_create, NULL);
- e_gadget_type_add("MemUsage", memusage_create, NULL);
- e_gadget_type_add("NetStatus", netstatus_create, NULL);
- e_gadget_type_add("SysInfo", sysinfo_create, NULL);
-}
-
-EINTERN void
-sysinfo_shutdown(void)
-{
- if (sysinfo_config)
- {
- Config_Item *ci;
- EINA_LIST_FREE(sysinfo_config->items, ci)
- {
- E_FREE(ci);
- }
- E_FREE(sysinfo_config);
- }
- E_CONFIG_DD_FREE(conf_edd);
- E_CONFIG_DD_FREE(conf_item_edd);
-
- e_gadget_type_del("Batman");
- e_gadget_type_del("Thermal");
- e_gadget_type_del("CpuClock");
- e_gadget_type_del("CpuMonitor");
- e_gadget_type_del("MemUsage");
- e_gadget_type_del("NetStatus");
- e_gadget_type_del("SysInfo");
-}
-
-E_API E_Module_Api e_modapi =
-{
- E_MODULE_API_VERSION,
- "Sysinfo"
-};
-
-E_API void *
-e_modapi_init(E_Module *m)
-{
- sysinfo_init();
-
- sysinfo_config->module = m;
- return m;
-}
-
-E_API int
-e_modapi_shutdown(E_Module *m EINA_UNUSED)
-{
- sysinfo_shutdown();
- return 1;
-}
-
-E_API int
-e_modapi_save(E_Module *m EINA_UNUSED)
-{
- e_config_domain_save("module.sysinfo", conf_edd, sysinfo_config);
- return 1;
-}
-
diff --git a/src/modules/sysinfo/module.desktop b/src/modules/sysinfo/module.desktop
deleted file mode 100644
index f37b35ca55..0000000000
--- a/src/modules/sysinfo/module.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Type=Link
-Name=Sysinfo
-Comment=A gadget to visualize your system info
-Comment[fr]=Un gadget pour visualer les infos système
-Comment[it]=Un gadget per visualizzare informazioni sul sistema
-Icon=e-module-sysinfo
-X-Enlightenment-ModuleType=system
diff --git a/src/modules/sysinfo/netstatus/netstatus.c b/src/modules/sysinfo/netstatus/netstatus.c
deleted file mode 100644
index 045724ea8f..0000000000
--- a/src/modules/sysinfo/netstatus/netstatus.c
+++ /dev/null
@@ -1,509 +0,0 @@
-#include "netstatus.h"
-
-typedef struct _Thread_Config Thread_Config;
-
-struct _Thread_Config
-{
- int interval;
- Instance *inst;
- Eina_Bool automax;
- time_t checktime;
- int inpercent;
- unsigned long in;
- unsigned long incurrent;
- unsigned long inmax;
- Eina_Stringshare *instring;
- int outpercent;
- unsigned long out;
- unsigned long outcurrent;
- unsigned long outmax;
- Eina_Stringshare *outstring;
- E_Powersave_Sleeper *sleeper;
-};
-
-static void
-_netstatus_face_update(Thread_Config *thc)
-{
- Edje_Message_Int_Set *msg;
-
- msg = malloc(sizeof(Edje_Message_Int_Set) + 6 * sizeof(int));
- EINA_SAFETY_ON_NULL_RETURN(msg);
- msg->count = 6;
- msg->val[0] = thc->incurrent;
- msg->val[1] = thc->inpercent;
- msg->val[2] = thc->inmax;
- msg->val[3] = thc->outcurrent;
- msg->val[4] = thc->outpercent;
- msg->val[5] = thc->outmax;
- edje_object_message_send(elm_layout_edje_get(thc->inst->cfg->netstatus.o_gadget),
- EDJE_MESSAGE_INT_SET, 1, msg);
- E_FREE(msg);
-
- if (thc->inst->cfg->netstatus.popup)
- {
- char buf[4096];
- snprintf(buf, sizeof(buf), "%s (%d %%%%)",
- thc->inst->cfg->netstatus.instring,
- thc->inst->cfg->netstatus.inpercent);
- elm_progressbar_unit_format_set(thc->inst->cfg->netstatus.popup_inpbar, buf);
- elm_progressbar_value_set(thc->inst->cfg->netstatus.popup_inpbar,
- (float)thc->inst->cfg->netstatus.inpercent / 100);
- memset(buf, 0x00, sizeof(buf));
- snprintf(buf, sizeof(buf), "%s (%d %%%%)",
- thc->inst->cfg->netstatus.outstring,
- thc->inst->cfg->netstatus.outpercent);
- elm_progressbar_unit_format_set(thc->inst->cfg->netstatus.popup_outpbar, buf);
- elm_progressbar_value_set(thc->inst->cfg->netstatus.popup_outpbar,
- (float)thc->inst->cfg->netstatus.outpercent / 100);
- }
-}
-
-static Evas_Object *
-_netstatus_configure_cb(Evas_Object *g)
-{
- Instance *inst = evas_object_data_get(g, "Instance");
-
- if (!sysinfo_config) return NULL;
- return netstatus_configure(inst);
-}
-
-static void
-_netstatus_popup_dismissed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- E_FREE_FUNC(obj, evas_object_del);
- inst->cfg->netstatus.popup = NULL;
-}
-
-static void
-_netstatus_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->cfg->netstatus.popup = NULL;
-}
-
-static void
-_netstatus_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Evas_Object *label, *popup, *table, *pbar;
- Evas_Event_Mouse_Up *ev = event_data;
- Instance *inst = data;
- char text[4096], buf[4096];
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (ev->button == 1)
- {
- if (inst->cfg->netstatus.popup)
- {
- elm_ctxpopup_dismiss(inst->cfg->netstatus.popup);
- return;
- }
- popup = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(popup, "noblock");
- evas_object_smart_callback_add(popup, "dismissed", _netstatus_popup_dismissed, inst);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _netstatus_popup_deleted, inst);
-
- table = elm_table_add(popup);
- E_EXPAND(table);
- E_FILL(table);
- elm_object_content_set(popup, table);
- evas_object_show(table);
-
- snprintf(text, sizeof(text), "<big><b>%s</b></big>", _("Network Throughput"));
-
- label = elm_label_add(table);
- E_EXPAND(label); E_ALIGN(label, 0.5, 0.5);
- elm_object_text_set(label, text);
- elm_table_pack(table, label, 0, 0, 2, 1);
- evas_object_show(label);
-
- label = elm_label_add(table);
- E_ALIGN(label, 0.0, 0.5);
- elm_object_text_set(label, _("Receiving"));
- elm_table_pack(table, label, 0, 1, 1, 1);
- evas_object_show(label);
-
- snprintf(buf, sizeof(buf), "%s (%d %%%%)",
- inst->cfg->netstatus.instring,
- inst->cfg->netstatus.inpercent);
-
- pbar = elm_progressbar_add(table);
- E_EXPAND(pbar);
- E_FILL(pbar);
- elm_progressbar_span_size_set(pbar, 200 * e_scale);
- elm_progressbar_unit_format_set(pbar, buf);
- elm_progressbar_value_set(pbar, (float)inst->cfg->netstatus.inpercent / 100);
- elm_table_pack(table, pbar, 1, 1, 1, 1);
- evas_object_show(pbar);
- inst->cfg->netstatus.popup_inpbar = pbar;
-
- label = elm_label_add(table);
- E_ALIGN(label, 0.0, 0.5);
- elm_object_text_set(label, _("Sending"));
- elm_table_pack(table, label, 0, 2, 1, 1);
- evas_object_show(label);
-
- memset(buf, 0x00, sizeof(buf));
- snprintf(buf, sizeof(buf), "%s (%d %%%%)",
- inst->cfg->netstatus.outstring,
- inst->cfg->netstatus.outpercent);
-
- pbar = elm_progressbar_add(table);
- E_EXPAND(pbar);
- E_FILL(pbar);
- elm_progressbar_span_size_set(pbar, 200 * e_scale);
- elm_progressbar_unit_format_set(pbar, buf);
- elm_progressbar_value_set(pbar, (float)inst->cfg->netstatus.outpercent / 100);
- elm_table_pack(table, pbar, 1, 2, 1, 1);
- evas_object_show(pbar);
- inst->cfg->netstatus.popup_outpbar = pbar;
-
- e_gadget_util_ctxpopup_place(inst->o_main, popup,
- inst->cfg->netstatus.o_gadget);
- evas_object_show(popup);
- inst->cfg->netstatus.popup = popup;
- }
-}
-
-static void
-_netstatus_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Evas_Coord w, h;
- Instance *inst = data;
-
- edje_object_parts_extends_calc(elm_layout_edje_get(inst->cfg->netstatus.o_gadget), 0, 0, &w, &h);
- if (w < 1) w = 1;
- if (h < 1) h = 1;
- if (inst->cfg->esm == E_SYSINFO_MODULE_NETSTATUS)
- evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, w, h);
- else
- evas_object_size_hint_aspect_set(inst->cfg->netstatus.o_gadget, EVAS_ASPECT_CONTROL_BOTH, w, h);
-}
-
-static void
-_netstatus_cb_usage_check_main(void *data, Ecore_Thread *th)
-{
- Thread_Config *thc = data;
- for (;; )
- {
- char rin[4096], rout[4096];
-
- if (ecore_thread_check(th)) break;
-#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- _netstatus_sysctl_getstatus(thc->automax, &thc->checktime, &thc->in, &thc->incurrent,
- &thc->inmax, &thc->inpercent, &thc->out, &thc->outcurrent, &thc->outmax,
- &thc->outpercent);
-#else
- _netstatus_proc_getstatus(thc->automax, &thc->checktime, &thc->in, &thc->incurrent,
- &thc->inmax, &thc->inpercent, &thc->out, &thc->outcurrent, &thc->outmax,
- &thc->outpercent);
-#endif
- if (!thc->incurrent)
- {
- snprintf(rin, sizeof(rin), "0 B/s");
- }
- else
- {
- if (thc->incurrent > 1048576)
- snprintf(rin, sizeof(rin), "%.2f MB/s", ((float)thc->incurrent / 1048576));
- else if ((thc->incurrent > 1024) && (thc->incurrent < 1048576))
- snprintf(rin, sizeof(rin), "%lu KB/s", (thc->incurrent / 1024));
- else
- snprintf(rin, sizeof(rin), "%lu B/s", thc->incurrent);
- }
- eina_stringshare_replace(&thc->instring, rin);
- if (!thc->outcurrent)
- {
- snprintf(rout, sizeof(rout), "0 B/s");
- }
- else
- {
- if (thc->outcurrent > 1048576)
- snprintf(rout, sizeof(rout), "%.2f MB/s", ((float)thc->outcurrent / 1048576));
- else if ((thc->outcurrent > 1024) && (thc->outcurrent < 1048576))
- snprintf(rout, sizeof(rout), "%lu KB/s", (thc->outcurrent / 1024));
- else
- snprintf(rout, sizeof(rout), "%lu B/s", thc->outcurrent);
- }
- eina_stringshare_replace(&thc->outstring, rout);
- ecore_thread_feedback(th, NULL);
- if (ecore_thread_check(th)) break;
- e_powersave_sleeper_sleep(thc->sleeper, thc->interval);
- if (ecore_thread_check(th)) break;
- }
-}
-
-static void
-_netstatus_cb_usage_check_notify(void *data,
- Ecore_Thread *th EINA_UNUSED,
- void *msg EINA_UNUSED)
-{
- Thread_Config *thc = data;
-
- if (!thc->inst->cfg) return;
- if (thc->inst->cfg->esm != E_SYSINFO_MODULE_NETSTATUS && thc->inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
-
- eina_stringshare_replace(&thc->inst->cfg->netstatus.instring, thc->instring);
- eina_stringshare_replace(&thc->inst->cfg->netstatus.outstring, thc->outstring);
- thc->inst->cfg->netstatus.inpercent = thc->inpercent;
- thc->inst->cfg->netstatus.outpercent = thc->outpercent;
- _netstatus_face_update(thc);
-}
-
-static void
-_netstatus_cb_usage_check_end(void *data, Ecore_Thread *th EINA_UNUSED)
-{
- Thread_Config *thc = data;
- e_powersave_sleeper_free(thc->sleeper);
- E_FREE_FUNC(thc->instring, eina_stringshare_del);
- E_FREE_FUNC(thc->outstring, eina_stringshare_del);
- E_FREE(thc);
-}
-
-static Eina_Bool
-_screensaver_on(void *data)
-{
- Instance *inst = data;
-
- if (inst->cfg->netstatus.usage_check_thread)
- {
- ecore_thread_cancel(inst->cfg->netstatus.usage_check_thread);
- inst->cfg->netstatus.usage_check_thread = NULL;
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_screensaver_off(void *data)
-{
- Instance *inst = data;
-
- _netstatus_config_updated(inst);
-
- return ECORE_CALLBACK_RENEW;
-}
-
-void
-_netstatus_config_updated(Instance *inst)
-{
- Thread_Config *thc;
-
- if (inst->cfg->id == -1)
- {
- thc = E_NEW(Thread_Config, 1);
- if (thc)
- {
- thc->inst = inst;
- thc->inpercent = 75;
- thc->outpercent = 30;
- _netstatus_face_update(thc);
- E_FREE(thc);
- }
- return;
- }
- if (inst->cfg->netstatus.usage_check_thread)
- {
- ecore_thread_cancel(inst->cfg->netstatus.usage_check_thread);
- inst->cfg->netstatus.usage_check_thread = NULL;
- }
- thc = E_NEW(Thread_Config, 1);
- if (thc)
- {
- thc->inst = inst;
- thc->sleeper = e_powersave_sleeper_new();
- thc->interval = inst->cfg->netstatus.poll_interval;
- thc->in = 0;
- thc->inmax = inst->cfg->netstatus.inmax;
- thc->incurrent = 0;
- thc->inpercent = 0;
- thc->instring = NULL;
- thc->out = 0;
- thc->outmax = inst->cfg->netstatus.outmax;
- thc->outcurrent = 0;
- thc->outpercent = 0;
- thc->outstring = NULL;
- thc->automax = inst->cfg->netstatus.automax;
- inst->cfg->netstatus.usage_check_thread =
- ecore_thread_feedback_run(_netstatus_cb_usage_check_main,
- _netstatus_cb_usage_check_notify,
- _netstatus_cb_usage_check_end,
- _netstatus_cb_usage_check_end, thc, EINA_TRUE);
- }
- e_config_save_queue();
-}
-
-static void
-_netstatus_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->o_main != event_data) return;
-
- if (inst->cfg->netstatus.popup)
- E_FREE_FUNC(inst->cfg->netstatus.popup, evas_object_del);
- if (inst->cfg->netstatus.configure)
- E_FREE_FUNC(inst->cfg->netstatus.configure, evas_object_del);
- evas_object_smart_callback_del_full(e_gadget_site_get(inst->o_main), "gadget_removed",
- _netstatus_removed_cb, inst);
- evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_netstatus_remove, data);
- EINA_LIST_FREE(inst->cfg->netstatus.handlers, handler)
- ecore_event_handler_del(handler);
- if (inst->cfg->netstatus.usage_check_thread)
- {
- ecore_thread_cancel(inst->cfg->netstatus.usage_check_thread);
- inst->cfg->netstatus.usage_check_thread = NULL;
- }
- E_FREE_FUNC(inst->cfg->netstatus.instring, eina_stringshare_del);
- E_FREE_FUNC(inst->cfg->netstatus.outstring, eina_stringshare_del);
-
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
-}
-
-void
-sysinfo_netstatus_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->cfg->netstatus.popup)
- E_FREE_FUNC(inst->cfg->netstatus.popup, evas_object_del);
- if (inst->cfg->netstatus.configure)
- E_FREE_FUNC(inst->cfg->netstatus.configure, evas_object_del);
- EINA_LIST_FREE(inst->cfg->netstatus.handlers, handler)
- ecore_event_handler_del(handler);
- if (inst->cfg->netstatus.usage_check_thread)
- {
- ecore_thread_cancel(inst->cfg->netstatus.usage_check_thread);
- inst->cfg->netstatus.usage_check_thread = NULL;
- return;
- }
- E_FREE_FUNC(inst->cfg->netstatus.instring, eina_stringshare_del);
- E_FREE_FUNC(inst->cfg->netstatus.outstring, eina_stringshare_del);
-}
-
-static void
-_netstatus_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- E_Gadget_Site_Orient orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_main));
-
- e_gadget_configure_cb_set(inst->o_main, _netstatus_configure_cb);
-
- inst->cfg->netstatus.popup = NULL;
- inst->cfg->netstatus.instring = NULL;
- inst->cfg->netstatus.outstring = NULL;
- inst->cfg->netstatus.inpercent = 0;
- inst->cfg->netstatus.outpercent = 0;
-
- inst->cfg->netstatus.o_gadget = elm_layout_add(inst->o_main);
- if (orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(inst->cfg->netstatus.o_gadget,
- "base/theme/gadget/netstatus",
- "e/gadget/netstatus/main_vert");
- else
- e_theme_edje_object_set(inst->cfg->netstatus.o_gadget, "base/theme/gadget/netstatus",
- "e/gadget/netstatus/main");
- E_EXPAND(inst->cfg->netstatus.o_gadget);
- E_FILL(inst->cfg->netstatus.o_gadget);
- elm_box_pack_end(inst->o_main, inst->cfg->netstatus.o_gadget);
- evas_object_event_callback_add(inst->cfg->netstatus.o_gadget, EVAS_CALLBACK_MOUSE_UP, _netstatus_mouse_up_cb, inst);
- evas_object_event_callback_add(inst->cfg->netstatus.o_gadget, EVAS_CALLBACK_RESIZE, _netstatus_resize_cb, inst);
- evas_object_show(inst->cfg->netstatus.o_gadget);
- evas_object_smart_callback_del_full(obj, "gadget_created", _netstatus_created_cb, data);
-
- E_LIST_HANDLER_APPEND(inst->cfg->netstatus.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->netstatus.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
-
- _netstatus_config_updated(inst);
-}
-
-Evas_Object *
-sysinfo_netstatus_create(Evas_Object *parent, Instance *inst)
-{
- inst->cfg->netstatus.popup = NULL;
- inst->cfg->netstatus.instring = NULL;
- inst->cfg->netstatus.outstring = NULL;
- inst->cfg->netstatus.inpercent = 0;
- inst->cfg->netstatus.outpercent = 0;
-
- inst->cfg->netstatus.o_gadget = elm_layout_add(parent);
- e_theme_edje_object_set(inst->cfg->netstatus.o_gadget, "base/theme/gadget/netstatus",
- "e/gadget/netstatus/main");
- E_EXPAND(inst->cfg->netstatus.o_gadget);
- E_FILL(inst->cfg->netstatus.o_gadget);
- evas_object_event_callback_add(inst->cfg->netstatus.o_gadget, EVAS_CALLBACK_MOUSE_UP, _netstatus_mouse_up_cb, inst);
- evas_object_event_callback_add(inst->cfg->netstatus.o_gadget, EVAS_CALLBACK_RESIZE, _netstatus_resize_cb, inst);
- evas_object_show(inst->cfg->netstatus.o_gadget);
-
- E_LIST_HANDLER_APPEND(inst->cfg->netstatus.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->netstatus.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
-
- _netstatus_config_updated(inst);
-
- return inst->cfg->netstatus.o_gadget;
-}
-
-static Config_Item *
-_conf_item_get(int *id)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(sysinfo_config->items, l, ci)
- if (*id == ci->id && ci->esm == E_SYSINFO_MODULE_NETSTATUS) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
-
- if (*id != -1)
- ci->id = eina_list_count(sysinfo_config->items) + 1;
- else
- ci->id = -1;
-
- ci->esm = E_SYSINFO_MODULE_NETSTATUS;
- ci->netstatus.poll_interval = 32;
- ci->netstatus.automax = EINA_TRUE;
- ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
- ci->netstatus.send_units = NETSTATUS_UNIT_BYTES;
- ci->netstatus.instring = NULL;
- ci->netstatus.outstring = NULL;
- ci->netstatus.popup = NULL;
- ci->netstatus.configure = NULL;
- sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
-
- return ci;
-}
-
-Evas_Object *
-netstatus_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNUSED)
-{
- Instance *inst;
-
- inst = E_NEW(Instance, 1);
- inst->cfg = _conf_item_get(id);
- *id = inst->cfg->id;
- inst->cfg->netstatus.instring = NULL;
- inst->cfg->netstatus.outstring = NULL;
- inst->cfg->netstatus.popup = NULL;
- inst->o_main = elm_box_add(parent);
- evas_object_data_set(inst->o_main, "Instance", inst);
- evas_object_smart_callback_add(parent, "gadget_created", _netstatus_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_removed", _netstatus_removed_cb, inst);
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_netstatus_remove, inst);
- evas_object_show(inst->o_main);
-
- if (inst->cfg->id < 0) return inst->o_main;
-
- sysinfo_instances =
- eina_list_append(sysinfo_instances, inst);
-
- return inst->o_main;
-}
-
diff --git a/src/modules/sysinfo/netstatus/netstatus.h b/src/modules/sysinfo/netstatus/netstatus.h
deleted file mode 100644
index c49ca1582e..0000000000
--- a/src/modules/sysinfo/netstatus/netstatus.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef NETSTATUS_H
-#define NETSTATUS_H
-
-#include "../sysinfo.h"
-
-typedef struct _Netstatus_Config Netstatus_Config;
-struct _Netstatus_Config
-{
- Instance *inst;
- Evas_Object *transfer_check;
- Evas_Object *receive_max;
- Evas_Object *receive_units;
- Evas_Object *send_max;
- Evas_Object *send_units;
- int receive_unit_adjust;
- int send_unit_adjust;
-};
-
-EINTERN void _netstatus_config_updated(Instance *inst);
-EINTERN void _netstatus_proc_getstatus(Eina_Bool automax, time_t *last_checked,
- unsigned long *prev_in, unsigned long *prev_incurrent, unsigned long *prev_inmax,
- int *prev_inpercent, unsigned long *prev_out, unsigned long *prev_outcurrent,
- unsigned long *prev_outmax, int *prev_outpercent);
-EINTERN void _netstatus_sysctl_getstatus(Eina_Bool automax, time_t *last_checked,
- unsigned long *prev_in, unsigned long *prev_incurrent, unsigned long *prev_inmax,
- int *prev_inpercent, unsigned long *prev_out, unsigned long *prev_outcurrent,
- unsigned long *prev_outmax, int *prev_outpercent);
-EINTERN Evas_Object *netstatus_configure(Instance *inst);
-#endif
diff --git a/src/modules/sysinfo/netstatus/netstatus_config.c b/src/modules/sysinfo/netstatus/netstatus_config.c
deleted file mode 100644
index 36aac0ceb5..0000000000
--- a/src/modules/sysinfo/netstatus/netstatus_config.c
+++ /dev/null
@@ -1,419 +0,0 @@
-#include "netstatus.h"
-
-static void
-_config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Netstatus_Config *nc = data;
- Instance *inst = nc->inst;
-
- E_FREE_FUNC(inst->cfg->netstatus.configure, evas_object_del);
- E_FREE(nc);
- e_config_save_queue();
-}
-
-static void
-_poll_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Netstatus_Config *nc = data;
- Instance *inst = nc->inst;
- int value = elm_radio_value_get(obj);
-
- switch (value)
- {
- case 0:
- inst->cfg->netstatus.poll_interval = 4;
- break;
-
- case 1:
- inst->cfg->netstatus.poll_interval = 8;
- break;
-
- case 2:
- inst->cfg->netstatus.poll_interval = 32;
- break;
-
- case 3:
- inst->cfg->netstatus.poll_interval = 64;
- break;
-
- case 4:
- inst->cfg->netstatus.poll_interval = 256;
- break;
-
- default:
- inst->cfg->netstatus.poll_interval = 32;
- }
-
- e_config_save_queue();
- _netstatus_config_updated(inst);
-}
-
-static void
-_update_receive_maximums(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Netstatus_Config *nc = data;
- Instance *inst = nc->inst;
- int value = elm_slider_value_get(nc->receive_max);
-
- inst->cfg->netstatus.inmax = value * nc->receive_unit_adjust;
- e_config_save_queue();
- _netstatus_config_updated(inst);
-}
-
-static void
-_update_send_maximums(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Netstatus_Config *nc = data;
- Instance *inst = nc->inst;
- int value = elm_slider_value_get(nc->send_max);
-
- inst->cfg->netstatus.outmax = value * nc->send_unit_adjust;
- e_config_save_queue();
- _netstatus_config_updated(inst);
-}
-
-static void
-_receive_hover_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Netstatus_Config *nc = data;
- Instance *inst = nc->inst;
- const char *txt = elm_object_item_text_get(event_info);
-
- if (!strcmp(txt, _("Bytes")))
- {
- inst->cfg->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
- nc->receive_unit_adjust = 1;
- }
- if (!strcmp(txt, _("KB")))
- {
- inst->cfg->netstatus.receive_units = NETSTATUS_UNIT_KB;
- nc->receive_unit_adjust = 1024;
- }
- if (!strcmp(txt, _("MB")))
- {
- inst->cfg->netstatus.receive_units = NETSTATUS_UNIT_MB;
- nc->receive_unit_adjust = 2048;
- }
- if (!strcmp(txt, _("GB")))
- {
- inst->cfg->netstatus.receive_units = NETSTATUS_UNIT_GB;
- nc->receive_unit_adjust = 3072;
- }
- _update_receive_maximums(nc, NULL, NULL);
-}
-
-static void
-_send_hover_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Netstatus_Config *nc = data;
- Instance *inst = nc->inst;
- const char *txt = elm_object_item_text_get(event_info);
-
- if (!strcmp(txt, _("Bytes")))
- {
- inst->cfg->netstatus.send_units = NETSTATUS_UNIT_BYTES;
- nc->send_unit_adjust = 1;
- }
- if (!strcmp(txt, _("KB")))
- {
- inst->cfg->netstatus.send_units = NETSTATUS_UNIT_KB;
- nc->send_unit_adjust = 1024;
- }
- if (!strcmp(txt, _("MB")))
- {
- inst->cfg->netstatus.send_units = NETSTATUS_UNIT_MB;
- nc->send_unit_adjust = 2048;
- }
- if (!strcmp(txt, _("GB")))
- {
- inst->cfg->netstatus.send_units = NETSTATUS_UNIT_GB;
- nc->send_unit_adjust = 3072;
- }
- _update_send_maximums(nc, NULL, NULL);
-}
-
-static void
-_check_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Netstatus_Config *nc = data;
- Instance *inst = nc->inst;
-
- if (elm_check_state_get(nc->transfer_check))
- {
- elm_object_disabled_set(nc->receive_max, EINA_TRUE);
- elm_object_disabled_set(nc->receive_units, EINA_TRUE);
- elm_object_disabled_set(nc->send_max, EINA_TRUE);
- elm_object_disabled_set(nc->send_units, EINA_TRUE);
- inst->cfg->netstatus.automax = EINA_TRUE;
- }
- else
- {
- elm_object_disabled_set(nc->receive_max, EINA_FALSE);
- elm_object_disabled_set(nc->receive_units, EINA_FALSE);
- elm_object_disabled_set(nc->send_max, EINA_FALSE);
- elm_object_disabled_set(nc->send_units, EINA_FALSE);
- inst->cfg->netstatus.automax = EINA_FALSE;
- _update_receive_maximums(nc, NULL, NULL);
- _update_send_maximums(nc, NULL, NULL);
- }
-}
-
-Evas_Object *
-netstatus_configure(Instance *inst)
-{
- Evas_Object *popup, *frame, *main_box, *box, *o, *group, *lbl;
- Evas_Object *hover, *slider, *check;
- E_Zone *zone = e_zone_current_get();
- Netstatus_Config *nc = E_NEW(Netstatus_Config, 1);
-
- nc->inst = inst;
-
- popup = elm_popup_add(e_comp->elm);
- E_EXPAND(popup);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- main_box = elm_box_add(popup);
- elm_box_horizontal_set(main_box, EINA_FALSE);
- E_EXPAND(main_box);
- E_FILL(main_box);
- evas_object_show(main_box);
- elm_object_content_set(popup, main_box);
-
- lbl = elm_label_add(main_box);
- evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_style_set(lbl, "marker");
- elm_object_text_set(lbl, _("NetStatus Configuration"));
- elm_box_pack_end(main_box, lbl);
- evas_object_show(lbl);
-
- frame = elm_frame_add(main_box);
- elm_object_text_set(frame, _("Update Poll Interval"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_box_pack_end(main_box, frame);
- evas_object_show(frame);
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 0);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Fast (4 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, nc);
- evas_object_show(o);
- group = o;
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 1);
- elm_radio_group_add(o, group);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Medium (8 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, nc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 2);
- elm_radio_group_add(o, group);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Normal (32 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, nc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 3);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Slow (64 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, nc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 4);
- elm_radio_group_add(o, group);
- E_EXPAND(o);
- E_ALIGN(o, 0, 0);
- elm_object_text_set(o, _("Very Slow (256 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, nc);
- evas_object_show(o);
-
- switch (inst->cfg->netstatus.poll_interval)
- {
- case 4:
- elm_radio_value_set(group, 0);
- break;
-
- case 8:
- elm_radio_value_set(group, 1);
- break;
-
- case 32:
- elm_radio_value_set(group, 2);
- break;
-
- case 64:
- elm_radio_value_set(group, 3);
- break;
-
- case 256:
- elm_radio_value_set(group, 4);
- break;
-
- default:
- elm_radio_value_set(group, 2);
- }
-
- elm_object_content_set(frame, box);
-
- frame = elm_frame_add(main_box);
- elm_object_text_set(frame, _("Maximum Throughput"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_box_pack_end(main_box, frame);
- evas_object_show(frame);
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- check = elm_check_add(box);
- elm_object_text_set(check, _("Use Automatic Maximums"));
- elm_check_state_set(check, inst->cfg->netstatus.automax);
- evas_object_size_hint_align_set(check, EVAS_HINT_FILL, 0.5);
- evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, 0.0);
- evas_object_smart_callback_add(check, "changed", _check_changed, nc);
- elm_box_pack_end(box, check);
- evas_object_show(check);
- nc->transfer_check = check;
-
- slider = elm_slider_add(box);
- elm_object_text_set(slider, _("Receive:"));
- elm_slider_unit_format_set(slider, "%1.0f");
- elm_slider_indicator_format_set(slider, "%1.0f");
- elm_slider_min_max_set(slider, 0, 1000);
- elm_slider_value_set(slider, inst->cfg->netstatus.inmax);
- elm_slider_step_set(slider, 0.05);
- elm_slider_span_size_set(slider, 100);
- evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
- evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_receive_maximums, nc);
- if (inst->cfg->netstatus.automax) elm_object_disabled_set(slider, EINA_TRUE);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
- nc->receive_max = slider;
-
- hover = elm_hoversel_add(box);
- elm_hoversel_auto_update_set(hover, EINA_TRUE);
- elm_hoversel_hover_parent_set(hover, popup);
- elm_hoversel_item_add(hover, _("Bytes"), NULL, ELM_ICON_NONE, NULL, NULL);
- if (inst->cfg->netstatus.receive_units == NETSTATUS_UNIT_BYTES)
- {
- elm_object_text_set(hover, _("Bytes"));
- nc->receive_unit_adjust = 1;
- }
- elm_hoversel_item_add(hover, _("KB"), NULL, ELM_ICON_NONE, NULL, NULL);
- if (inst->cfg->netstatus.receive_units == NETSTATUS_UNIT_KB)
- {
- elm_object_text_set(hover, _("KB"));
- nc->receive_unit_adjust = 1024;
- }
- elm_hoversel_item_add(hover, _("MB"), NULL, ELM_ICON_NONE, NULL, NULL);
- if (inst->cfg->netstatus.receive_units == NETSTATUS_UNIT_MB)
- {
- elm_object_text_set(hover, _("MB"));
- nc->receive_unit_adjust = 2048;
- }
- elm_hoversel_item_add(hover, _("GB"), NULL, ELM_ICON_NONE, NULL, NULL);
- if (inst->cfg->netstatus.receive_units == NETSTATUS_UNIT_GB)
- {
- elm_object_text_set(hover, _("GB"));
- nc->receive_unit_adjust = 3072;
- }
- evas_object_size_hint_align_set(hover, EVAS_HINT_FILL, 0.5);
- evas_object_size_hint_weight_set(hover, EVAS_HINT_EXPAND, 0.0);
- if (inst->cfg->netstatus.automax) elm_object_disabled_set(hover, EINA_TRUE);
- evas_object_smart_callback_add(hover, "selected", _receive_hover_changed, nc);
- elm_box_pack_end(box, hover);
- evas_object_show(hover);
- nc->receive_units = hover;
-
- elm_slider_value_set(nc->receive_max, ceil((double)inst->cfg->netstatus.inmax / (double)nc->receive_unit_adjust));
-
- slider = elm_slider_add(box);
- elm_object_text_set(slider, _("Send:"));
- elm_slider_unit_format_set(slider, "%1.0f");
- elm_slider_indicator_format_set(slider, "%1.0f");
- elm_slider_min_max_set(slider, 0, 1000);
- elm_slider_value_set(slider, inst->cfg->netstatus.outmax);
- elm_slider_step_set(slider, 0.05);
- elm_slider_span_size_set(slider, 100);
- evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
- evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_send_maximums, nc);
- if (inst->cfg->netstatus.automax) elm_object_disabled_set(slider, EINA_TRUE);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
- nc->send_max = slider;
-
- hover = elm_hoversel_add(box);
- elm_hoversel_auto_update_set(hover, EINA_TRUE);
- elm_hoversel_hover_parent_set(hover, popup);
- elm_hoversel_item_add(hover, _("Bytes"), NULL, ELM_ICON_NONE, NULL, nc);
- if (inst->cfg->netstatus.send_units == NETSTATUS_UNIT_BYTES)
- {
- elm_object_text_set(hover, _("Bytes"));
- nc->send_unit_adjust = 1;
- }
- elm_hoversel_item_add(hover, _("KB"), NULL, ELM_ICON_NONE, NULL, nc);
- if (inst->cfg->netstatus.send_units == NETSTATUS_UNIT_KB)
- {
- elm_object_text_set(hover, _("KB"));
- nc->send_unit_adjust = 1024;
- }
- elm_hoversel_item_add(hover, _("MB"), NULL, ELM_ICON_NONE, NULL, nc);
- if (inst->cfg->netstatus.send_units == NETSTATUS_UNIT_MB)
- {
- elm_object_text_set(hover, _("MB"));
- nc->send_unit_adjust = 2048;
- }
- elm_hoversel_item_add(hover, _("GB"), NULL, ELM_ICON_NONE, NULL, nc);
- if (inst->cfg->netstatus.send_units == NETSTATUS_UNIT_GB)
- {
- elm_object_text_set(hover, _("GB"));
- nc->send_unit_adjust = 3072;
- }
- evas_object_size_hint_align_set(hover, EVAS_HINT_FILL, 0.5);
- evas_object_size_hint_weight_set(hover, EVAS_HINT_EXPAND, 0.0);
- if (inst->cfg->netstatus.automax) elm_object_disabled_set(hover, EINA_TRUE);
- evas_object_smart_callback_add(hover, "selected", _send_hover_changed, nc);
- elm_box_pack_end(box, hover);
- evas_object_show(hover);
- nc->send_units = hover;
-
- elm_slider_value_set(nc->send_max, ceil((double)inst->cfg->netstatus.outmax / (double)nc->send_unit_adjust));
-
- elm_object_content_set(frame, box);
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center_on_zone(popup, zone);
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, nc);
-
- return inst->cfg->netstatus.configure = popup;
-}
-
diff --git a/src/modules/sysinfo/netstatus/netstatus_proc.c b/src/modules/sysinfo/netstatus/netstatus_proc.c
deleted file mode 100644
index 29de6e39b9..0000000000
--- a/src/modules/sysinfo/netstatus/netstatus_proc.c
+++ /dev/null
@@ -1,93 +0,0 @@
-#include "netstatus.h"
-
-void
-_netstatus_proc_getstatus(Eina_Bool automax,
- time_t *last_checked,
- unsigned long *prev_in,
- unsigned long *prev_incurrent,
- unsigned long *prev_inmax,
- int *prev_inpercent,
- unsigned long *prev_out,
- unsigned long *prev_outcurrent,
- unsigned long *prev_outmax,
- int *prev_outpercent)
-{
- unsigned long in, out, dummy, tot_in = 0, tot_out = 0;
- unsigned long diffin, diffout;
- int percent = 0;
- char buf[4096], dummys[64];
- FILE *f;
- time_t current = time(NULL);
- time_t diff = 0;
-
- if (!*last_checked)
- *last_checked = current;
- if ((current - *last_checked) < 1)
- return;
- else
- diff = current - *last_checked;
-
- f = fopen("/proc/net/dev", "r");
- if (f)
- {
- while (fgets(buf, sizeof(buf), f) != NULL)
- {
- if (sscanf(buf, "%s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu "
- "%lu %lu %lu %lu\n", dummys, &in, &dummy, &dummy,
- &dummy, &dummy, &dummy, &dummy, &dummy, &out, &dummy,
- &dummy, &dummy, &dummy, &dummy, &dummy, &dummy) < 17)
- continue;
- tot_in += in;
- tot_out += out;
- }
- fclose(f);
- }
-
- diffin = tot_in - *prev_in;
- if (diff > 1)
- diffin /= diff;
- if (!*prev_in)
- *prev_in = tot_in;
- else
- {
- *prev_in = tot_in;
- if (automax)
- {
- if (diffin > *prev_inmax)
- *prev_inmax = diffin;
- }
- *prev_incurrent = diffin;
- if (*prev_inmax > 0)
- percent = 100 * ((float)*prev_incurrent / (float)*prev_inmax);
- if (percent > 100) percent = 100;
- else if (percent < 0)
- percent = 0;
- *prev_inpercent = percent;
- }
-
- percent = 0;
-
- diffout = tot_out - *prev_out;
- if (diff > 1)
- diffout /= diff;
- if (!*prev_out)
- *prev_out = tot_out;
- else
- {
- *prev_out = tot_out;
- if (automax)
- {
- if (diffout > *prev_outmax)
- *prev_outmax = diffout;
- }
- *prev_outcurrent = diffout;
- if (*prev_outcurrent > 0)
- percent = 100 * ((float)*prev_outcurrent / (float)*prev_outmax);
- if (percent > 100) percent = 100;
- else if (percent < 0)
- percent = 0;
- *prev_outpercent = percent;
- }
- *last_checked = current;
-}
-
diff --git a/src/modules/sysinfo/netstatus/netstatus_sysctl.c b/src/modules/sysinfo/netstatus/netstatus_sysctl.c
deleted file mode 100644
index 63cddb8cd4..0000000000
--- a/src/modules/sysinfo/netstatus/netstatus_sysctl.c
+++ /dev/null
@@ -1,188 +0,0 @@
-#include "netstatus.h"
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-# include <sys/socket.h>
-# include <sys/sysctl.h>
-# include <net/if.h>
-# include <net/if_mib.h>
-#endif
-
-#if defined(__OpenBSD__)
-# include <sys/types.h>
-# include <sys/socket.h>
-# include <sys/sysctl.h>
-# include <sys/sockio.h>
-# include <sys/ioctl.h>
-# include <net/if.h>
-# include <net/if_types.h>
-# include <ifaddrs.h>
-#endif
-
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-
-static int
-get_ifmib_general(int row, struct ifmibdata *data)
-{
- int mib[6];
- size_t len;
-
- mib[0] = CTL_NET;
- mib[1] = PF_LINK;
- mib[2] = NETLINK_GENERIC;
- mib[3] = IFMIB_IFDATA;
- mib[4] = row;
- mib[5] = IFDATA_GENERAL;
-
- len = sizeof(*data);
-
- return sysctl(mib, 6, data, &len, NULL, 0);
-}
-
-static void
-_freebsd_generic_network_status(unsigned long int *in, unsigned long int *out)
-{
- struct ifmibdata *ifmd;
- size_t len;
- int i, count;
-
- len = sizeof(count);
- if (sysctlbyname("net.link.generic.system.ifcount", &count, &len, NULL, 0) < 0)
- return;
-
- ifmd = malloc(sizeof(struct ifmibdata));
- if (!ifmd)
- return;
-
- for (i = 1; i <= count; i++)
- {
- get_ifmib_general(i, ifmd);
- *in += ifmd->ifmd_data.ifi_ibytes;
- *out += ifmd->ifmd_data.ifi_obytes;
- }
-
- free(ifmd);
-}
-
-#endif
-
-#if defined(__OpenBSD__)
-static void
-_openbsd_generic_network_status(unsigned long int *in, unsigned long int *out)
-{
- struct ifaddrs *interfaces, *ifa;
-
- if (getifaddrs(&interfaces) < 0)
- return;
-
- int sock = socket(AF_INET, SOCK_STREAM, 0);
- if (sock < 0)
- return;
-
- for (ifa = interfaces; ifa; ifa = ifa->ifa_next)
- {
- struct ifreq ifreq;
- struct if_data if_data;
-
- ifreq.ifr_data = (void *)&if_data;
- strncpy(ifreq.ifr_name, ifa->ifa_name, IFNAMSIZ - 1);
- if (ioctl(sock, SIOCGIFDATA, &ifreq) < 0)
- return;
-
- struct if_data *const ifi = &if_data;
- if (ifi->ifi_type == IFT_ETHER || ifi->ifi_type == IFT_IEEE80211)
- {
- if (ifi->ifi_ibytes)
- *in += ifi->ifi_ibytes;
- else
- *in += 0;
-
- if (ifi->ifi_obytes)
- *out += ifi->ifi_obytes;
- else
- *out += 0;
- }
- }
- close(sock);
-}
-
-#endif
-
-void
-_netstatus_sysctl_getstatus(Eina_Bool automax,
- time_t *last_checked,
- unsigned long *prev_in,
- unsigned long *prev_incurrent,
- unsigned long *prev_inmax,
- int *prev_inpercent,
- unsigned long *prev_out,
- unsigned long *prev_outcurrent,
- unsigned long *prev_outmax,
- int *prev_outpercent)
-{
- unsigned long tot_out = 0, tot_in = 0, diffin, diffout;
- int percent = 0;
- unsigned long int incoming = 0, outgoing = 0;
- time_t current = time(NULL);
- time_t diff = 0;
-#if defined(__OpenBSD__)
- _openbsd_generic_network_status(&incoming, &outgoing);
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
- _freebsd_generic_network_status(&incoming, &outgoing);
-#endif
- if (!*last_checked)
- *last_checked = current;
- if ((current - *last_checked) < 1)
- return;
- else
- diff = current - *last_checked;
-
- tot_in = incoming;
- tot_out = outgoing;
-
- diffin = tot_in - *prev_in;
- if (diff > 1)
- diffin /= diff;
- if (!*prev_in)
- *prev_in = tot_in;
- else
- {
- *prev_in = tot_in;
- if (automax)
- {
- if (diffin > *prev_inmax)
- *prev_inmax = diffin;
- }
- *prev_incurrent = diffin;
- if (*prev_inmax > 0)
- percent = 100 * ((float)*prev_incurrent / (float)*prev_inmax);
- if (percent > 100) percent = 100;
- else if (percent < 0)
- percent = 0;
- *prev_inpercent = percent;
- }
-
- percent = 0;
-
- diffout = tot_out - *prev_out;
- if (diff > 1)
- diffout /= diff;
- if (!*prev_out)
- *prev_out = tot_out;
- else
- {
- *prev_out = tot_out;
- if (automax)
- {
- if (diffout > *prev_outmax)
- *prev_outmax = diffout;
- }
- *prev_outcurrent = diffout;
- if (*prev_outcurrent > 0)
- percent = 100 * ((float)*prev_outcurrent / (float)*prev_outmax);
- if (percent > 100) percent = 100;
- else if (percent < 0)
- percent = 0;
- *prev_outpercent = percent;
- }
- *last_checked = current;
-}
-
diff --git a/src/modules/sysinfo/sysinfo.c b/src/modules/sysinfo/sysinfo.c
deleted file mode 100644
index c5c42fa7ba..0000000000
--- a/src/modules/sysinfo/sysinfo.c
+++ /dev/null
@@ -1,176 +0,0 @@
-#include "sysinfo.h"
-
-static void _sysinfo_deleted_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
-
-static void
-_sysinfo_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
-
- if (!inst) return;
- if (inst->o_main != event_data) return;
- sysinfo_batman_remove(inst, NULL, NULL, NULL);
- sysinfo_thermal_remove(inst, NULL, NULL, NULL);
- sysinfo_cpuclock_remove(inst, NULL, NULL, NULL);
- sysinfo_cpumonitor_remove(inst, NULL, NULL, NULL);
- sysinfo_memusage_remove(inst, NULL, NULL, NULL);
- sysinfo_netstatus_remove(inst, NULL, NULL, NULL);
-
- evas_object_smart_callback_del_full(e_gadget_site_get(obj), "gadget_removed", _sysinfo_removed_cb, inst);
- evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, _sysinfo_deleted_cb, data);
- if (inst->cfg)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
- }
-}
-
-static void
-_sysinfo_deleted_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
-
- sysinfo_batman_remove(inst, NULL, NULL, NULL);
- sysinfo_thermal_remove(inst, NULL, NULL, NULL);
- sysinfo_cpuclock_remove(inst, NULL, NULL, NULL);
- sysinfo_cpumonitor_remove(inst, NULL, NULL, NULL);
- sysinfo_memusage_remove(inst, NULL, NULL, NULL);
- sysinfo_netstatus_remove(inst, NULL, NULL, NULL);
-}
-
-static void
-_sysinfo_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
-
- inst->o_table = elm_table_add(inst->o_main);
- elm_table_homogeneous_set(inst->o_table, EINA_FALSE);
- E_EXPAND(inst->o_table);
- elm_object_content_set(inst->o_main, inst->o_table);
- evas_object_show(inst->o_table);
-
- inst->cfg->sysinfo.o_batman = sysinfo_batman_create(inst->o_table, inst);
- elm_table_pack(inst->o_table, inst->cfg->sysinfo.o_batman, 0, 0, 1, 1);
- inst->cfg->sysinfo.o_cpuclock = sysinfo_cpuclock_create(inst->o_table, inst);
- elm_table_pack(inst->o_table, inst->cfg->sysinfo.o_cpuclock, 1, 0, 1, 1);
- inst->cfg->sysinfo.o_cpumonitor = sysinfo_cpumonitor_create(inst->o_table, inst);
- elm_table_pack(inst->o_table, inst->cfg->sysinfo.o_cpumonitor, 0, 1, 1, 1);
- inst->cfg->sysinfo.o_memusage = sysinfo_memusage_create(inst->o_table, inst);
- elm_table_pack(inst->o_table, inst->cfg->sysinfo.o_memusage, 1, 1, 1, 1);
- inst->cfg->sysinfo.o_thermal = sysinfo_thermal_create(inst->o_table, inst);
- elm_table_pack(inst->o_table, inst->cfg->sysinfo.o_thermal, 0, 2, 1, 1);
- inst->cfg->sysinfo.o_netstatus = sysinfo_netstatus_create(inst->o_table, inst);
- elm_table_pack(inst->o_table, inst->cfg->sysinfo.o_netstatus, 1, 2, 1, 1);
-
- evas_object_smart_callback_del_full(obj, "gadget_created", _sysinfo_created_cb, data);
-}
-
-static Config_Item *
-_conf_item_get(int *id)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(sysinfo_config->items, l, ci)
- if (*id == ci->id && ci->esm == E_SYSINFO_MODULE_SYSINFO) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
-
- if (*id != -1)
- ci->id = eina_list_count(sysinfo_config->items) + 1;
- else
- ci->id = -1;
-
- ci->esm = E_SYSINFO_MODULE_SYSINFO;
- ci->batman.poll_interval = 512;
- ci->batman.alert = 30;
- ci->batman.alert_p = 10;
- ci->batman.alert_timeout = 0;
- ci->batman.suspend_below = 0;
- ci->batman.force_mode = 0;
- ci->batman.full = -2;
- ci->batman.time_left = -2;
- ci->batman.have_battery = -2;
- ci->batman.have_power = -2;
-#if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__NetBSD__)
- ci->batman.fuzzy = 0;
-#endif
- ci->batman.desktop_notifications = 0;
- ci->batman.popup = NULL;
- ci->batman.configure = NULL;
- ci->thermal.poll_interval = 128;
- ci->thermal.low = 30;
- ci->thermal.high = 80;
- ci->thermal.sensor_type = SENSOR_TYPE_NONE;
- ci->thermal.sensor_name = NULL;
- ci->thermal.units = CELSIUS;
- ci->thermal.popup = NULL;
- ci->thermal.configure = NULL;
- ci->cpuclock.poll_interval = 32;
- ci->cpuclock.restore_governor = 0;
- ci->cpuclock.auto_powersave = 1;
- ci->cpuclock.powersave_governor = NULL;
- ci->cpuclock.governor = NULL;
- ci->cpuclock.pstate_min = 1;
- ci->cpuclock.pstate_max = 101;
- ci->cpuclock.popup = NULL;
- ci->cpuclock.configure = NULL;
- ci->cpumonitor.poll_interval = 32;
- ci->cpumonitor.percent = 0;
- ci->cpumonitor.popup = NULL;
- ci->cpumonitor.configure = NULL;
- ci->memusage.poll_interval = 32;
- ci->memusage.mem_percent = 0;
- ci->memusage.swp_percent = 0;
- ci->memusage.popup = NULL;
- ci->memusage.configure = NULL;
- ci->netstatus.poll_interval = 32;
- ci->netstatus.instring = NULL;
- ci->netstatus.outstring = NULL;
- ci->netstatus.popup = NULL;
- ci->netstatus.configure = NULL;
- ci->netstatus.automax = EINA_TRUE;
- ci->netstatus.inmax = 0;
- ci->netstatus.outmax = 0;
- ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
- ci->netstatus.send_units = NETSTATUS_UNIT_BYTES;
-
- sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
-
- return ci;
-}
-
-Evas_Object *
-sysinfo_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Instance *inst;
-
- if (orient) return NULL;
-
- inst = E_NEW(Instance, 1);
- inst->cfg = _conf_item_get(id);
- *id = inst->cfg->id;
-
- inst->o_main = elm_scroller_add(parent);
- elm_object_style_set(inst->o_main, "no_inset_shadow");
- E_EXPAND(inst->o_main);
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, _sysinfo_deleted_cb, inst);
- evas_object_show(inst->o_main);
-
- evas_object_smart_callback_add(parent, "gadget_created", _sysinfo_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_removed", _sysinfo_removed_cb, inst);
-
- if (inst->cfg->id < 0) return inst->o_main;
-
- sysinfo_instances =
- eina_list_append(sysinfo_instances, inst);
-
- return inst->o_main;
-}
-
diff --git a/src/modules/sysinfo/sysinfo.h b/src/modules/sysinfo/sysinfo.h
deleted file mode 100644
index c6a75daeb2..0000000000
--- a/src/modules/sysinfo/sysinfo.h
+++ /dev/null
@@ -1,302 +0,0 @@
-#ifndef SYSINFO_H
-#define SYSINFO_H
-
-#include "e.h"
-#if defined(HAVE_EEZE)
-# include <Eeze.h>
-#else
-# include <Eldbus.h>
-#endif
-
-E_API extern E_Module_Api e_modapi;
-
-E_API void *e_modapi_init (E_Module *m);
-E_API int e_modapi_shutdown (E_Module *m);
-E_API int e_modapi_save (E_Module *m);
-
-typedef enum _E_Sysinfo_Module E_Sysinfo_Module;
-enum _E_Sysinfo_Module
-{
- E_SYSINFO_MODULE_NONE = 0,
- E_SYSINFO_MODULE_BATMAN ,
- E_SYSINFO_MODULE_THERMAL,
- E_SYSINFO_MODULE_CPUCLOCK,
- E_SYSINFO_MODULE_CPUMONITOR,
- E_SYSINFO_MODULE_MEMUSAGE,
- E_SYSINFO_MODULE_NETSTATUS,
- E_SYSINFO_MODULE_SYSINFO
-};
-
-typedef enum _Netstatus_Unit Netstatus_Unit;
-enum _Netstatus_Unit
-{
- NETSTATUS_UNIT_BYTES = 0,
- NETSTATUS_UNIT_KB,
- NETSTATUS_UNIT_MB,
- NETSTATUS_UNIT_GB
-};
-
-typedef enum _Sensor_Type
-{
- SENSOR_TYPE_NONE,
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
- SENSOR_TYPE_FREEBSD,
- SENSOR_TYPE_OPENBSD,
-#else
- SENSOR_TYPE_OMNIBOOK,
- SENSOR_TYPE_LINUX_MACMINI,
- SENSOR_TYPE_LINUX_I2C,
- SENSOR_TYPE_LINUX_ACPI,
- SENSOR_TYPE_LINUX_PCI,
- SENSOR_TYPE_LINUX_PBOOK,
- SENSOR_TYPE_LINUX_INTELCORETEMP,
- SENSOR_TYPE_LINUX_THINKPAD,
- SENSOR_TYPE_LINUX_SYS
-#endif
-} Sensor_Type;
-
-typedef enum _Unit
-{
- CELSIUS,
- FAHRENHEIT
-} Unit;
-
-typedef struct _Tempthread Tempthread;
-typedef struct _Cpu_Status Cpu_Status;
-typedef struct _CPU_Core CPU_Core;
-typedef struct _Config Config;
-typedef struct _Config_Item Config_Item;
-typedef struct _Instance Instance;
-
-struct _Tempthread
-{
- Instance *inst;
- int poll_interval;
- Sensor_Type sensor_type;
- const char *sensor_name;
- const char *sensor_path;
- void *extn;
- E_Powersave_Sleeper *sleeper;
-#if defined(HAVE_EEZE)
- Eina_List *tempdevs;
-#endif
- Eina_Bool initted E_BITFIELD;
-};
-
-struct _Cpu_Status
-{
- Eina_List *frequencies;
- Eina_List *governors;
- int cur_frequency;
-#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- int cur_percent;
-#endif
- int cur_min_frequency;
- int cur_max_frequency;
- int can_set_frequency;
- int pstate_min;
- int pstate_max;
- char *cur_governor;
- const char *orig_governor;
- unsigned char active;
- unsigned char pstate;
- unsigned char pstate_turbo;
-};
-
-struct _CPU_Core
-{
- int percent;
- long total;
- long idle;
- Evas_Object *layout;
-};
-
-struct _Config
-{
- Eina_List *items;
-
- E_Module *module;
- Evas_Object *config_dialog;
-};
-
-struct _Config_Item
-{
- int id;
- int version;
- E_Sysinfo_Module esm;
- struct
- {
- Evas_Object *o_gadget;
- Evas_Object *popup;
- Evas_Object *configure;
- /* saved * loaded config values */
- int poll_interval;
- int alert; /* Alert on minutes remaining */
- int alert_p; /* Alert on percentage remaining */
- int alert_timeout; /* Popup dismissal timeout */
- int suspend_below; /* Suspend if battery drops below this level */
- int suspend_method; /* Method used to suspend the machine */
- int force_mode; /* force use of batget or hal */
- /* just config state */
- Ecore_Timer *alert_timer;
- int full;
- int time_left;
- int have_battery;
- int have_power;
- int desktop_notifications;
- Eina_List *handlers;
- Eina_Bool done;
-#if defined(HAVE_EEZE)
- Eeze_Udev_Watch *acwatch;
- Eeze_Udev_Watch *batwatch;
-#endif
-#if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__NetBSD__)
- Eina_Bool fuzzy;
- int fuzzcount;
-#endif
- } batman;
- struct
- {
- Evas_Object *o_gadget;
- Evas_Object *configure;
- Evas_Object *popup;
- Evas_Object *popup_pbar;
- int poll_interval;
- int low, high;
- int sensor_type;
- int temp;
- int percent;
- const char *sensor_name;
- Unit units;
-#if defined(HAVE_EEZE)
- Ecore_Poller *poller;
- Tempthread *tth;
-#endif
- Ecore_Thread *th;
-
- Eina_Bool have_temp E_BITFIELD;
- Eina_List *handlers;
- Eina_Bool defer;
- Eina_Bool done;
- } thermal;
- struct
- {
- Evas_Object *o_gadget;
- Evas_Object *popup;
- Evas_Object *popup_pbar;
- Evas_Object *configure;
- int poll_interval;
- int restore_governor;
- int auto_powersave;
- int percent;
- int tot_min_frequency;
- int tot_max_frequency;
- const char *powersave_governor;
- const char *governor;
- int pstate_min;
- int pstate_max;
- Cpu_Status *status;
- Ecore_Thread *frequency_check_thread;
- Eina_List *handlers;
- } cpuclock;
- struct
- {
- Evas_Object *o_gadget;
- Evas_Object *o_gadget_box;
- Evas_Object *event;
- Evas_Object *popup;
- Evas_Object *popup_pbar;
- Evas_Object *configure;
- int poll_interval;
- int percent;
- int cores;
-
- Ecore_Thread *usage_check_thread;
- Eina_List *handlers;
- } cpumonitor;
- struct
- {
- Evas_Object *o_gadget;
- Evas_Object *popup;
- Evas_Object *configure;
- int poll_interval;
- int mem_percent;
- int swp_percent;
- unsigned long mem_total;
- unsigned long mem_used;
- unsigned long mem_cached;
- unsigned long mem_buffers;
- unsigned long mem_shared;
- unsigned long swp_total;
- unsigned long swp_used;
- Ecore_Thread *usage_check_thread;
- Eina_List *handlers;
- } memusage;
- struct
- {
- Evas_Object *o_gadget;
- Evas_Object *popup;
- Evas_Object *popup_inpbar;
- Evas_Object *popup_outpbar;
- Evas_Object *configure;
- Eina_Bool automax;
- Netstatus_Unit receive_units;
- Netstatus_Unit send_units;
- int poll_interval;
- int inpercent;
- int outpercent;
- unsigned long inmax;
- unsigned long outmax;
- Ecore_Thread *usage_check_thread;
- Eina_List *handlers;
- Eina_Stringshare *instring;
- Eina_Stringshare *outstring;
- } netstatus;
- struct {
- Evas_Object *o_batman;
- Evas_Object *o_thermal;
- Evas_Object *o_cpuclock;
- Evas_Object *o_cpumonitor;
- Evas_Object *o_memusage;
- Evas_Object *o_netstatus;
- } sysinfo;
-};
-
-struct _Instance
-{
- Evas_Object *o_main;
- Evas_Object *o_table;
- Evas_Object *popup_battery;
- Evas_Object *warning;
- Config_Item *cfg;
- unsigned int notification_id;
-};
-
-EINTERN Evas_Object *config_sysinfo(E_Zone *zone, Instance *inst, E_Sysinfo_Module esm);
-EINTERN Evas_Object *batman_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN Evas_Object *thermal_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN Evas_Object *cpuclock_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN Evas_Object *cpumonitor_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN Evas_Object *memusage_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN Evas_Object *netstatus_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN Evas_Object *sysinfo_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-
-EINTERN Evas_Object *config_sysinfo(E_Zone *zone, Instance *inst, E_Sysinfo_Module esm);
-EINTERN Evas_Object *sysinfo_batman_create(Evas_Object *parent, Instance *inst);
-EINTERN Evas_Object *sysinfo_thermal_create(Evas_Object *parent, Instance *inst);
-EINTERN Evas_Object *sysinfo_cpuclock_create(Evas_Object *parent, Instance *inst);
-EINTERN Evas_Object *sysinfo_cpumonitor_create(Evas_Object *parent, Instance *inst);
-EINTERN Evas_Object *sysinfo_memusage_create(Evas_Object *parent, Instance *inst);
-EINTERN Evas_Object *sysinfo_netstatus_create(Evas_Object *parent, Instance *inst);
-
-EINTERN void sysinfo_batman_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
-EINTERN void sysinfo_thermal_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
-EINTERN void sysinfo_cpuclock_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
-EINTERN void sysinfo_cpumonitor_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
-EINTERN void sysinfo_memusage_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
-EINTERN void sysinfo_netstatus_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
-
-EINTERN extern Config *sysinfo_config;
-EINTERN extern Eina_List *sysinfo_instances;
-
-#endif
diff --git a/src/modules/sysinfo/thermal/thermal.c b/src/modules/sysinfo/thermal/thermal.c
deleted file mode 100644
index 8cf533786f..0000000000
--- a/src/modules/sysinfo/thermal/thermal.c
+++ /dev/null
@@ -1,509 +0,0 @@
-#include "thermal.h"
-
-static void
-_thermal_thread_free(Tempthread *tth)
-{
-#if defined(HAVE_EEZE)
- const char *s;
-#endif
- if (!tth) return;
-
- eina_stringshare_del(tth->sensor_name);
- eina_stringshare_del(tth->sensor_path);
-#if defined(HAVE_EEZE)
- EINA_LIST_FREE(tth->tempdevs, s)
- eina_stringshare_del(s);
-#endif
- e_powersave_sleeper_free(tth->sleeper);
- E_FREE(tth->extn);
- E_FREE(tth);
-}
-
-static void
-_thermal_face_level_set(Instance *inst, double level)
-{
- Edje_Message_Float msg;
-
- if (level < 0.0) level = 0.0;
- else if (level > 1.0)
- level = 1.0;
- inst->cfg->thermal.percent = level * 100;
- msg.val = level;
- edje_object_message_send(elm_layout_edje_get(inst->cfg->thermal.o_gadget), EDJE_MESSAGE_FLOAT, 1, &msg);
-}
-
-static void
-_thermal_apply(Instance *inst, int temp)
-{
- if (inst->cfg->thermal.temp == temp) return;
- inst->cfg->thermal.temp = temp;
- if (temp != -999)
- {
- if (inst->cfg->thermal.units == FAHRENHEIT) temp = (temp * 9.0 / 5.0) + 32;
-
- if (!inst->cfg->thermal.have_temp)
- {
- /* enable therm object */
- elm_layout_signal_emit(inst->cfg->thermal.o_gadget, "e,state,known", "");
- inst->cfg->thermal.have_temp = EINA_TRUE;
- }
-
- _thermal_face_level_set(inst,
- (double)(temp - inst->cfg->thermal.low) /
- (double)(inst->cfg->thermal.high - inst->cfg->thermal.low));
- }
- else
- {
- if (inst->cfg->thermal.have_temp)
- {
- /* disable therm object */
- elm_layout_signal_emit(inst->cfg->thermal.o_gadget, "e,state,unknown", "");
- _thermal_face_level_set(inst, 0.5);
- inst->cfg->thermal.have_temp = EINA_FALSE;
- }
- }
- if (inst->cfg->thermal.popup)
- {
- char buf[4096];
-
- if (inst->cfg->thermal.units == FAHRENHEIT)
- snprintf(buf, sizeof(buf), "%d F (%d %%%%)",
- (int)((inst->cfg->thermal.temp * 9.0 / 5.0) + 32),
- inst->cfg->thermal.percent);
- else
- snprintf(buf, sizeof(buf), "%d C (%d %%%%)",
- (int)inst->cfg->thermal.temp,
- inst->cfg->thermal.percent);
- elm_progressbar_unit_format_set(inst->cfg->thermal.popup_pbar, buf);
- elm_progressbar_value_set(inst->cfg->thermal.popup_pbar,
- (float)inst->cfg->thermal.percent / 100);
- }
-}
-
-#if defined(HAVE_EEZE)
-static Eina_Bool
-_thermal_udev_poll(void *data)
-{
- Tempthread *tth = data;
- int temp = thermal_udev_get(tth);
-
- _thermal_apply(tth->inst, temp);
- return EINA_TRUE;
-}
-
-#endif
-
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-static void
-_thermal_check_sysctl(void *data, Ecore_Thread *th)
-{
- Tempthread *tth = data;
- int ptemp = -500, temp;
-
- for (;; )
- {
- if (ecore_thread_check(th)) break;
- temp = thermal_sysctl_get(tth);
- if (ptemp != temp) ecore_thread_feedback(th, (void *)((long)temp));
- ptemp = temp;
- e_powersave_sleeper_sleep(tth->sleeper, tth->poll_interval);
- if (ecore_thread_check(th)) break;
- }
-}
-
-#endif
-
-#if !defined(HAVE_EEZE) && !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
-static void
-_thermal_check_fallback(void *data, Ecore_Thread *th)
-{
- Tempthread *tth = data;
- int ptemp = -500, temp;
- for (;; )
- {
- if (ecore_thread_check(th)) break;
- temp = thermal_fallback_get(tth);
- if (ptemp != temp) ecore_thread_feedback(th, (void *)((long)temp));
- ptemp = temp;
- e_powersave_sleeper_sleep(tth->sleeper, tth->poll_interval);
- if (ecore_thread_check(th)) break;
- }
-}
-
-#endif
-
-#if !defined(HAVE_EEZE)
-static void
-_thermal_check_notify(void *data, Ecore_Thread *th, void *msg)
-{
- Tempthread *tth = data;
- int temp = (int)((long)msg);
- if (th != tth->inst->cfg->thermal.th) return;
- _thermal_apply(tth->inst, temp);
-}
-
-static void
-_thermal_check_done(void *data, Ecore_Thread *th EINA_UNUSED)
-{
- Tempthread *tth = data;
- _thermal_thread_free(tth);
-}
-
-#endif
-
-static Evas_Object *
-_thermal_configure_cb(Evas_Object *g)
-{
- Instance *inst = evas_object_data_get(g, "Instance");
-
- if (!sysinfo_config) return NULL;
- return thermal_configure(inst);
-}
-
-static void
-_thermal_popup_dismissed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- E_FREE_FUNC(obj, evas_object_del);
-
- inst->cfg->thermal.popup = NULL;
- inst->cfg->thermal.popup_pbar = NULL;
-}
-
-static void
-_thermal_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->cfg->thermal.popup = NULL;
-}
-
-static Evas_Object *
-_thermal_popup_create(Instance *inst)
-{
- Evas_Object *popup, *table, *label, *pbar;
- char text[4096], buf[100];
-
- popup = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(popup, "noblock");
- evas_object_smart_callback_add(popup, "dismissed",
- _thermal_popup_dismissed, inst);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL,
- _thermal_popup_deleted, inst);
-
- table = elm_table_add(popup);
- E_EXPAND(table);
- E_FILL(table);
- elm_object_content_set(popup, table);
- evas_object_show(table);
-
- snprintf(text, sizeof(text), "<big><b>%s</b></big>", _("Temperature"));
-
- label = elm_label_add(table);
- E_EXPAND(label); E_ALIGN(label, 0.5, 0.5);
- elm_object_text_set(label, text);
- elm_table_pack(table, label, 0, 0, 2, 1);
- evas_object_show(label);
-
- if (inst->cfg->thermal.units == FAHRENHEIT)
- snprintf(buf, sizeof(buf), "%d F (%d %%%%)",
- (int)((inst->cfg->thermal.temp * 9.0 / 5.0) + 32),
- inst->cfg->thermal.percent);
- else
- snprintf(buf, sizeof(buf), "%d C (%d %%%%)",
- (int)inst->cfg->thermal.temp,
- inst->cfg->thermal.percent);
-
- pbar = elm_progressbar_add(table);
- E_EXPAND(pbar); E_FILL(pbar);
- elm_progressbar_span_size_set(pbar, 200 * e_scale);
- elm_progressbar_unit_format_set(pbar, buf);
- elm_progressbar_value_set(pbar, (float)inst->cfg->thermal.percent / 100);
- elm_table_pack(table, pbar, 0, 1, 2, 1);
- evas_object_show(pbar);
- inst->cfg->thermal.popup_pbar = pbar;
-
- e_gadget_util_ctxpopup_place(inst->o_main, popup,
- inst->cfg->thermal.o_gadget);
- evas_object_show(popup);
-
- return popup;
-}
-
-static void
-_thermal_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Evas_Event_Mouse_Up *ev = event_data;
- Instance *inst = data;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (ev->button == 1)
- {
- if (inst->cfg->thermal.popup)
- elm_ctxpopup_dismiss(inst->cfg->thermal.popup);
- else
- inst->cfg->thermal.popup = _thermal_popup_create(inst);
- }
-}
-
-static Eina_Bool
-_screensaver_on(void *data)
-{
- Instance *inst = data;
-
- if (inst->cfg->thermal.th)
- {
- ecore_thread_cancel(inst->cfg->thermal.th);
- inst->cfg->thermal.th = NULL;
- }
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_screensaver_off(void *data)
-{
- Instance *inst = data;
-
- _thermal_config_updated(inst);
-
- return ECORE_CALLBACK_RENEW;
-}
-
-void
-_thermal_config_updated(Instance *inst)
-{
- Tempthread *tth;
-
- if (inst->cfg->id == -1)
- {
- _thermal_face_level_set(inst, .60);
- return;
- }
- if (inst->cfg->thermal.th) ecore_thread_cancel(inst->cfg->thermal.th);
-
- tth = calloc(1, sizeof(Tempthread));
- tth->poll_interval = inst->cfg->thermal.poll_interval;
- tth->sensor_type = inst->cfg->thermal.sensor_type;
- tth->inst = inst;
- tth->sleeper = e_powersave_sleeper_new();
- if (inst->cfg->thermal.sensor_name)
- tth->sensor_name = eina_stringshare_add(inst->cfg->thermal.sensor_name);
-
-#if defined(HAVE_EEZE)
- _thermal_udev_poll(tth);
- inst->cfg->thermal.poller = ecore_poller_add(ECORE_POLLER_CORE, inst->cfg->thermal.poll_interval,
- _thermal_udev_poll, tth);
- inst->cfg->thermal.tth = tth;
-#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
- inst->cfg->thermal.th = ecore_thread_feedback_run(_thermal_check_sysctl,
- _thermal_check_notify,
- _thermal_check_done,
- _thermal_check_done,
- tth, EINA_TRUE);
-#else
- inst->cfg->thermal.th = ecore_thread_feedback_run(_thermal_check_fallback,
- _thermal_check_notify,
- _thermal_check_done,
- _thermal_check_done,
- tth, EINA_TRUE);
-#endif
-}
-
-static void
-_thermal_face_shutdown(Instance *inst)
-{
-#if defined(HAVE_EEZE)
- if (inst->cfg->thermal.poller)
- {
- E_FREE_FUNC(inst->cfg->thermal.poller, ecore_poller_del);
- _thermal_thread_free(inst->cfg->thermal.tth);
- }
-#endif
- if (inst->cfg->thermal.sensor_name) eina_stringshare_del(inst->cfg->thermal.sensor_name);
-}
-
-static void
-_thermal_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Evas_Coord w, h;
- Instance *inst = data;
-
- edje_object_parts_extends_calc(elm_layout_edje_get(inst->cfg->thermal.o_gadget), 0, 0, &w, &h);
- if (w < 1) w = 1;
- if (h < 1) h = 1;
- if (inst->cfg->esm == E_SYSINFO_MODULE_THERMAL)
- evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, w, h);
- else
- evas_object_size_hint_aspect_set(inst->cfg->thermal.o_gadget, EVAS_ASPECT_CONTROL_BOTH, w, h);
-}
-
-static void
-_thermal_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->o_main != event_data) return;
-
- if (inst->cfg->thermal.popup_pbar)
- E_FREE_FUNC(inst->cfg->thermal.popup_pbar, evas_object_del);
- if (inst->cfg->thermal.popup)
- E_FREE_FUNC(inst->cfg->thermal.popup, evas_object_del);
- if (inst->cfg->thermal.configure)
- E_FREE_FUNC(inst->cfg->thermal.configure, evas_object_del);
- EINA_LIST_FREE(inst->cfg->thermal.handlers, handler)
- ecore_event_handler_del(handler);
- evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_thermal_remove, data);
- evas_object_smart_callback_del_full(e_gadget_site_get(inst->o_main), "gadget_removed",
- _thermal_removed_cb, inst);
- if (inst->cfg->thermal.th)
- {
- ecore_thread_cancel(inst->cfg->thermal.th);
- inst->cfg->thermal.th = NULL;
- }
- _thermal_face_shutdown(inst);
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
-}
-
-void
-sysinfo_thermal_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- Ecore_Event_Handler *handler;
-
- if (inst->cfg->thermal.popup_pbar)
- E_FREE_FUNC(inst->cfg->thermal.popup_pbar, evas_object_del);
- if (inst->cfg->thermal.popup)
- E_FREE_FUNC(inst->cfg->thermal.popup, evas_object_del);
- if (inst->cfg->thermal.configure)
- E_FREE_FUNC(inst->cfg->thermal.configure, evas_object_del);
- EINA_LIST_FREE(inst->cfg->thermal.handlers, handler)
- ecore_event_handler_del(handler);
- if (inst->cfg->thermal.th)
- {
- ecore_thread_cancel(inst->cfg->thermal.th);
- inst->cfg->thermal.th = NULL;
- }
- _thermal_face_shutdown(inst);
-}
-
-static void
-_thermal_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- E_Gadget_Site_Orient orient = e_gadget_site_orient_get(e_gadget_site_get(inst->o_main));
-
- e_gadget_configure_cb_set(inst->o_main, _thermal_configure_cb);
-
- inst->cfg->thermal.temp = 900;
- inst->cfg->thermal.percent = 0;
- inst->cfg->thermal.have_temp = EINA_FALSE;
-
- inst->cfg->thermal.o_gadget = elm_layout_add(inst->o_main);
- if (orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(inst->cfg->thermal.o_gadget,
- "base/theme/gadget/thermal",
- "e/gadget/thermal/main_vert");
- else
- e_theme_edje_object_set(inst->cfg->thermal.o_gadget, "base/theme/gadget/thermal",
- "e/gadget/thermal/main");
- E_EXPAND(inst->cfg->thermal.o_gadget);
- E_FILL(inst->cfg->thermal.o_gadget);
- elm_box_pack_end(inst->o_main, inst->cfg->thermal.o_gadget);
- evas_object_event_callback_add(inst->cfg->thermal.o_gadget,
- EVAS_CALLBACK_MOUSE_UP,
- _thermal_mouse_up_cb, inst);
- evas_object_event_callback_add(inst->cfg->thermal.o_gadget, EVAS_CALLBACK_RESIZE, _thermal_resize_cb, inst);
- evas_object_show(inst->cfg->thermal.o_gadget);
- evas_object_smart_callback_del_full(obj, "gadget_created", _thermal_created_cb, data);
-
- E_LIST_HANDLER_APPEND(inst->cfg->thermal.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->thermal.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
-
- _thermal_config_updated(inst);
-}
-
-Evas_Object *
-sysinfo_thermal_create(Evas_Object *parent, Instance *inst)
-{
- inst->cfg->thermal.temp = 900;
- inst->cfg->thermal.percent = 0;
- inst->cfg->thermal.have_temp = EINA_FALSE;
-
- inst->cfg->thermal.o_gadget = elm_layout_add(parent);
- e_theme_edje_object_set(inst->cfg->thermal.o_gadget, "base/theme/gadget/thermal",
- "e/gadget/thermal/main");
- E_EXPAND(inst->cfg->thermal.o_gadget);
- E_FILL(inst->cfg->thermal.o_gadget);
- evas_object_event_callback_add(inst->cfg->thermal.o_gadget,
- EVAS_CALLBACK_MOUSE_UP,
- _thermal_mouse_up_cb, inst);
- evas_object_event_callback_add(inst->cfg->thermal.o_gadget, EVAS_CALLBACK_RESIZE, _thermal_resize_cb, inst);
- evas_object_show(inst->cfg->thermal.o_gadget);
-
- E_LIST_HANDLER_APPEND(inst->cfg->thermal.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
- E_LIST_HANDLER_APPEND(inst->cfg->thermal.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
-
- _thermal_config_updated(inst);
-
- return inst->cfg->thermal.o_gadget;
-}
-
-static Config_Item *
-_conf_item_get(int *id)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(sysinfo_config->items, l, ci)
- if (*id == ci->id && ci->esm == E_SYSINFO_MODULE_THERMAL) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
-
- if (*id != -1)
- ci->id = eina_list_count(sysinfo_config->items) + 1;
- else
- ci->id = -1;
-
- ci->esm = E_SYSINFO_MODULE_THERMAL;
- ci->thermal.poll_interval = 128;
- ci->thermal.low = 30;
- ci->thermal.high = 80;
- ci->thermal.sensor_type = SENSOR_TYPE_NONE;
- ci->thermal.sensor_name = NULL;
- ci->thermal.units = CELSIUS;
- ci->thermal.configure = NULL;
-
- sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
-
- return ci;
-}
-
-Evas_Object *
-thermal_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNUSED)
-{
- Instance *inst;
-
- inst = E_NEW(Instance, 1);
- inst->cfg = _conf_item_get(id);
- *id = inst->cfg->id;
- inst->o_main = elm_box_add(parent);
- evas_object_data_set(inst->o_main, "Instance", inst);
- evas_object_smart_callback_add(parent, "gadget_created", _thermal_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_removed", _thermal_removed_cb, inst);
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_thermal_remove, inst);
- evas_object_show(inst->o_main);
-
- if (inst->cfg->id < 0) return inst->o_main;
- sysinfo_instances =
- eina_list_append(sysinfo_instances, inst);
-
- return inst->o_main;
-}
-
diff --git a/src/modules/sysinfo/thermal/thermal.h b/src/modules/sysinfo/thermal/thermal.h
deleted file mode 100644
index c0cb3238a5..0000000000
--- a/src/modules/sysinfo/thermal/thermal.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef THERMAL_H
-#define THERMAL_H
-
-#include "../sysinfo.h"
-
-typedef struct _Thermal_Config Thermal_Config;
-
-struct _Thermal_Config
-{
- Instance *inst;
- Evas_Object *high;
- Evas_Object *low;
-};
-
-
-#if defined(HAVE_EEZE)
-EINTERN int thermal_udev_get(Tempthread *tth);
-#endif
-
-#if defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__)
-EINTERN int thermal_sysctl_get(Tempthread *tth);
-#endif
-
-EINTERN Evas_Object *thermal_configure(Instance *inst);
-EINTERN int thermal_fallback_get(Tempthread *tth);
-EINTERN void _thermal_config_updated(Instance *inst);
-
-#endif
diff --git a/src/modules/sysinfo/thermal/thermal_config.c b/src/modules/sysinfo/thermal/thermal_config.c
deleted file mode 100644
index 404f5d4b0c..0000000000
--- a/src/modules/sysinfo/thermal/thermal_config.c
+++ /dev/null
@@ -1,369 +0,0 @@
-#include "thermal.h"
-
-#define FAR_2_CEL(x) ((x - 32) / 9.0) * 5.0
-#define CEL_2_FAR(x) (x * 9.0 / 5.0) + 32
-
-static void
-_config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Thermal_Config *tc = data;
- Instance *inst = tc->inst;
-
- E_FREE_FUNC(inst->cfg->thermal.configure, evas_object_del);
- E_FREE(tc);
- e_config_save_queue();
-}
-
-static void
-_update_high_temperature(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Thermal_Config *tc = data;
- Instance *inst = tc->inst;
- int value = (int)elm_slider_value_get(tc->high);
-
- inst->cfg->thermal.high = value;
- e_config_save_queue();
- _thermal_config_updated(inst);
-}
-
-static void
-_update_low_temperature(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Thermal_Config *tc = data;
- Instance *inst = tc->inst;
- int value = (int)elm_slider_value_get(tc->low);
-
- inst->cfg->thermal.low = value;
- e_config_save_queue();
- _thermal_config_updated(inst);
-}
-
-static void
-_units_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Thermal_Config *tc = data;
- Instance *inst = tc->inst;
- int value = elm_radio_value_get(obj), val;
-
- switch (value)
- {
- case 0:
- inst->cfg->thermal.units = CELSIUS;
- break;
-
- case 1:
- inst->cfg->thermal.units = FAHRENHEIT;
- break;
-
- default:
- inst->cfg->thermal.units = CELSIUS;
- }
- if (inst->cfg->thermal.units == FAHRENHEIT)
- {
- elm_slider_min_max_set(tc->low, 0, 200);
- elm_slider_min_max_set(tc->high, 0, 230);
- val = (int)elm_slider_value_get(tc->low);
- elm_slider_value_set(tc->low, ceil(CEL_2_FAR(val)));
- val = (int)elm_slider_value_get(tc->high);
- elm_slider_value_set(tc->high, ceil(CEL_2_FAR(val)));
- elm_slider_unit_format_set(tc->high, "%1.0f F");
- elm_slider_indicator_format_set(tc->high, "%1.0f F");
- elm_slider_unit_format_set(tc->low, "%1.0f F");
- elm_slider_indicator_format_set(tc->low, "%1.0f F");
- }
- else
- {
- val = (int)elm_slider_value_get(tc->low);
- elm_slider_value_set(tc->low, ceil(FAR_2_CEL(val)));
- val = (int)elm_slider_value_get(tc->high);
- elm_slider_value_set(tc->high, ceil(FAR_2_CEL(val)));
- elm_slider_unit_format_set(tc->low, "%1.0f C");
- elm_slider_indicator_format_set(tc->low, "%1.0f C");
- elm_slider_unit_format_set(tc->high, "%1.0f C");
- elm_slider_indicator_format_set(tc->high, "%1.0f C");
- elm_slider_min_max_set(tc->low, 0, 95);
- elm_slider_min_max_set(tc->high, 0, 110);
- }
- val = (int)elm_slider_value_get(tc->high);
- inst->cfg->thermal.high = val;
- val = (int)elm_slider_value_get(tc->low);
- inst->cfg->thermal.low = val;
- e_config_save_queue();
- _thermal_config_updated(inst);
-}
-
-static void
-_poll_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Thermal_Config *tc = data;
- Instance *inst = tc->inst;
- int value = elm_radio_value_get(obj);
-
- switch (value)
- {
- case 0:
- inst->cfg->thermal.poll_interval = 4;
- break;
-
- case 1:
- inst->cfg->thermal.poll_interval = 8;
- break;
-
- case 2:
- inst->cfg->thermal.poll_interval = 32;
- break;
-
- case 3:
- inst->cfg->thermal.poll_interval = 64;
- break;
-
- case 4:
- inst->cfg->thermal.poll_interval = 256;
- break;
-
- default:
- inst->cfg->thermal.poll_interval = 32;
- }
-
- e_config_save_queue();
- _thermal_config_updated(inst);
-}
-
-Evas_Object *
-thermal_configure(Instance *inst)
-{
- Evas_Object *popup, *tb, *frame, *box, *o, *group, *groupu, *lbl, *slider;
- E_Zone *zone = e_zone_current_get();
- Thermal_Config *tc = E_NEW(Thermal_Config, 1);
-
- tc->inst = inst;
-
- popup = elm_popup_add(e_comp->elm);
- E_EXPAND(popup);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- tb = elm_table_add(popup);
- E_EXPAND(tb);
- evas_object_show(tb);
- elm_object_content_set(popup, tb);
-
- lbl = elm_label_add(tb);
- evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_style_set(lbl, "marker");
- elm_object_text_set(lbl, _("Thermal Configuration"));
- elm_table_pack(tb, lbl, 0, 0, 1, 1);
- evas_object_show(lbl);
-
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("Temperature Units"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 0, 1, 1, 1);
- evas_object_show(frame);
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 0);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Celsius"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _units_changed, tc);
- evas_object_show(o);
- groupu = o;
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 1);
- elm_radio_group_add(o, groupu);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Fahrenheit"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _units_changed, tc);
- evas_object_show(o);
-
- switch (inst->cfg->thermal.units)
- {
- case CELSIUS:
- elm_radio_value_set(groupu, 0);
- break;
-
- case FAHRENHEIT:
- elm_radio_value_set(groupu, 1);
- break;
-
- default:
- elm_radio_value_set(groupu, 0);
- }
-
- elm_object_content_set(frame, box);
-
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("Update Poll Interval"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 0, 2, 1, 1);
- evas_object_show(frame);
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 0);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Fast (4 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, tc);
- evas_object_show(o);
- group = o;
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 1);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Medium (8 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, tc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 2);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Normal (32 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, tc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 3);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Slow (64 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, tc);
- evas_object_show(o);
-
- o = elm_radio_add(box);
- elm_radio_state_value_set(o, 4);
- elm_radio_group_add(o, group);
- E_ALIGN(o, 0.0, 0.0);
- E_WEIGHT(o, EVAS_HINT_EXPAND, 0);
- elm_object_text_set(o, _("Very Slow (256 ticks)"));
- elm_box_pack_end(box, o);
- evas_object_smart_callback_add(o, "changed", _poll_changed, tc);
- evas_object_show(o);
-
- switch (inst->cfg->thermal.poll_interval)
- {
- case 4:
- elm_radio_value_set(group, 0);
- break;
-
- case 8:
- elm_radio_value_set(group, 1);
- break;
-
- case 32:
- elm_radio_value_set(group, 2);
- break;
-
- case 64:
- elm_radio_value_set(group, 3);
- break;
-
- case 256:
- elm_radio_value_set(group, 4);
- break;
-
- default:
- elm_radio_value_set(group, 2);
- }
-
- elm_object_content_set(frame, box);
-
- frame = elm_frame_add(tb);
- elm_object_text_set(frame, _("Temperature Limits"));
- E_EXPAND(frame);
- E_FILL(frame);
- elm_table_pack(tb, frame, 0, 3, 1, 1);
- evas_object_show(frame);
-
- box = elm_box_add(frame);
- elm_box_horizontal_set(box, EINA_FALSE);
- E_EXPAND(box);
- evas_object_show(box);
-
- slider = elm_slider_add(box);
- elm_object_text_set(slider, _("High Temperature:"));
- if (inst->cfg->thermal.units == FAHRENHEIT)
- {
- elm_slider_unit_format_set(slider, "%1.0f F");
- elm_slider_indicator_format_set(slider, "%1.0f F");
- elm_slider_min_max_set(slider, 0, 230);
- }
- else
- {
- elm_slider_unit_format_set(slider, "%1.0f C");
- elm_slider_indicator_format_set(slider, "%1.0f C");
- elm_slider_min_max_set(slider, 0, 110);
- }
- elm_slider_value_set(slider, inst->cfg->thermal.high);
- elm_slider_step_set(slider, 0.05);
- elm_slider_span_size_set(slider, 150);
- evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
- evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_high_temperature, tc);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
- tc->high = slider;
-
- slider = elm_slider_add(box);
- elm_object_text_set(slider, _("Low Temperature:"));
- if (inst->cfg->thermal.units == FAHRENHEIT)
- {
- elm_slider_unit_format_set(slider, "%1.0f F");
- elm_slider_indicator_format_set(slider, "%1.0f F");
- elm_slider_min_max_set(slider, 0, 200);
- }
- else
- {
- elm_slider_unit_format_set(slider, "%1.0f C");
- elm_slider_indicator_format_set(slider, "%1.0f C");
- elm_slider_min_max_set(slider, 0, 95);
- }
- elm_slider_value_set(slider, inst->cfg->thermal.low);
- elm_slider_step_set(slider, 0.05);
- elm_slider_span_size_set(slider, 150);
- evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
- evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
- evas_object_smart_callback_add(slider, "delay,changed", _update_low_temperature, tc);
- elm_box_pack_end(box, slider);
- evas_object_show(slider);
- tc->low = slider;
-
- elm_object_content_set(frame, box);
-
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center_on_zone(popup, zone);
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, tc);
-
- return inst->cfg->thermal.configure = popup;
-}
-
diff --git a/src/modules/sysinfo/thermal/thermal_fallback.c b/src/modules/sysinfo/thermal/thermal_fallback.c
deleted file mode 100644
index 3ed6a89db2..0000000000
--- a/src/modules/sysinfo/thermal/thermal_fallback.c
+++ /dev/null
@@ -1,435 +0,0 @@
-#if defined(__linux__)
-#include "thermal.h"
-
-typedef struct
-{
- int dummy;
-} Extn;
-
-Eina_List *
-temperature_get_bus_files(const char *bus)
-{
- Eina_List *result;
- Eina_List *therms;
- char path[PATH_MAX + 3];
- char busdir[PATH_MAX];
- char *name;
-
- result = NULL;
-
- snprintf(busdir, sizeof(busdir), "/sys/bus/%s/devices", bus);
- /* Look through all the devices for the given bus. */
- therms = ecore_file_ls(busdir);
-
- EINA_LIST_FREE(therms, name)
- {
- Eina_List *files;
- char *file;
-
- /* Search each device for temp*_input, these should be
- * temperature devices. */
- snprintf(path, sizeof(path), "%s/%s", busdir, name);
- files = ecore_file_ls(path);
- EINA_LIST_FREE(files, file)
- {
- if ((!strncmp("temp", file, 4)) &&
- (!strcmp("_input", &file[strlen(file) - 6])))
- {
- char *f;
-
- snprintf(path, sizeof(path),
- "%s/%s/%s", busdir, name, file);
- f = strdup(path);
- if (f) result = eina_list_append(result, f);
- }
- E_FREE(file);
- }
- E_FREE(name);
- }
- return result;
-}
-
-static void
-init(Tempthread *tth)
-{
- Eina_List *therms;
- char path[512];
- Extn *extn;
-
- if (tth->initted) return;
- tth->initted = EINA_TRUE;
-
- extn = calloc(1, sizeof(Extn));
- tth->extn = extn;
-
- if ((!tth->sensor_type) ||
- ((!tth->sensor_name) ||
- (tth->sensor_name[0] == 0)))
- {
- eina_stringshare_del(tth->sensor_name);
- tth->sensor_name = NULL;
- eina_stringshare_del(tth->sensor_path);
- tth->sensor_path = NULL;
- therms = ecore_file_ls("/proc/acpi/thermal_zone");
- if (therms)
- {
- char *name;
-
- name = eina_list_data_get(therms);
- tth->sensor_type = SENSOR_TYPE_LINUX_ACPI;
- tth->sensor_name = eina_stringshare_add(name);
- eina_list_free(therms);
- }
- else
- {
- eina_list_free(therms);
- therms = ecore_file_ls("/sys/class/thermal");
- if (therms)
- {
- char *name;
- Eina_List *l;
-
- EINA_LIST_FOREACH(therms, l, name)
- {
- if (!strncmp(name, "thermal", 7))
- {
- tth->sensor_type = SENSOR_TYPE_LINUX_SYS;
- tth->sensor_name = eina_stringshare_add(name);
- eina_list_free(therms);
- therms = NULL;
- break;
- }
- }
- if (therms) eina_list_free(therms);
- }
- if (therms)
- {
- if (ecore_file_exists("/proc/omnibook/temperature"))
- {
- tth->sensor_type = SENSOR_TYPE_OMNIBOOK;
- tth->sensor_name = eina_stringshare_add("dummy");
- }
- else if (ecore_file_exists("/sys/devices/temperatures/sensor1_temperature"))
- {
- tth->sensor_type = SENSOR_TYPE_LINUX_PBOOK;
- tth->sensor_name = eina_stringshare_add("dummy");
- }
- else if (ecore_file_exists("/sys/devices/temperatures/cpu_temperature"))
- {
- tth->sensor_type = SENSOR_TYPE_LINUX_MACMINI;
- tth->sensor_name = eina_stringshare_add("dummy");
- }
- else if (ecore_file_exists("/sys/devices/platform/coretemp.0/temp1_input"))
- {
- tth->sensor_type = SENSOR_TYPE_LINUX_INTELCORETEMP;
- tth->sensor_name = eina_stringshare_add("dummy");
- }
- else if (ecore_file_exists("/sys/devices/platform/thinkpad_hwmon/temp1_input"))
- {
- tth->sensor_type = SENSOR_TYPE_LINUX_THINKPAD;
- tth->sensor_name = eina_stringshare_add("dummy");
- }
- else
- {
- // try the i2c bus
- therms = temperature_get_bus_files("i2c");
- if (therms)
- {
- char *name;
-
- if ((name = eina_list_data_get(therms)))
- {
- if (ecore_file_exists(name))
- {
- int len;
-
- snprintf(path, sizeof(path),
- "%s", ecore_file_file_get(name));
- len = strlen(path);
- if (len > 6) path[len - 6] = '\0';
- tth->sensor_type = SENSOR_TYPE_LINUX_I2C;
- tth->sensor_path = eina_stringshare_add(name);
- tth->sensor_name = eina_stringshare_add(path);
- }
- }
- eina_list_free(therms);
- }
- if (!tth->sensor_path)
- {
- // try the pci bus
- therms = temperature_get_bus_files("pci");
- if (therms)
- {
- char *name;
-
- if ((name = eina_list_data_get(therms)))
- {
- if (ecore_file_exists(name))
- {
- int len;
-
- snprintf(path, sizeof(path),
- "%s", ecore_file_file_get(name));
- len = strlen(path);
- if (len > 6) path[len - 6] = '\0';
- tth->sensor_type = SENSOR_TYPE_LINUX_PCI;
- tth->sensor_path = eina_stringshare_add(name);
- eina_stringshare_del(tth->sensor_name);
- tth->sensor_name = eina_stringshare_add(path);
- }
- }
- eina_list_free(therms);
- }
- }
- }
- }
- }
- }
- if ((tth->sensor_type) && (tth->sensor_name) && (!tth->sensor_path))
- {
- char *name;
-
- switch (tth->sensor_type)
- {
- case SENSOR_TYPE_NONE:
- break;
-
- case SENSOR_TYPE_OMNIBOOK:
- tth->sensor_path = eina_stringshare_add("/proc/omnibook/temperature");
- break;
-
- case SENSOR_TYPE_LINUX_MACMINI:
- tth->sensor_path = eina_stringshare_add("/sys/devices/temperatures/cpu_temperature");
- break;
-
- case SENSOR_TYPE_LINUX_PBOOK:
- tth->sensor_path = eina_stringshare_add("/sys/devices/temperatures/sensor1_temperature");
- break;
-
- case SENSOR_TYPE_LINUX_INTELCORETEMP:
- tth->sensor_path = eina_stringshare_add("/sys/devices/platform/coretemp.0/temp1_input");
- break;
-
- case SENSOR_TYPE_LINUX_THINKPAD:
- tth->sensor_path = eina_stringshare_add("/sys/devices/platform/thinkpad_hwmon/temp1_input");
- break;
-
- case SENSOR_TYPE_LINUX_I2C:
- therms = ecore_file_ls("/sys/bus/i2c/devices");
-
- EINA_LIST_FREE(therms, name)
- {
- snprintf(path, sizeof(path),
- "/sys/bus/i2c/devices/%s/%s_input",
- name, tth->sensor_name);
- if (ecore_file_exists(path))
- {
- tth->sensor_path = eina_stringshare_add(path);
- /* We really only care about the first
- * one for the default. */
- break;
- }
- E_FREE(name);
- }
- break;
-
- case SENSOR_TYPE_LINUX_PCI:
- therms = ecore_file_ls("/sys/bus/pci/devices");
-
- EINA_LIST_FREE(therms, name)
- {
- snprintf(path, sizeof(path),
- "/sys/bus/pci/devices/%s/%s_input",
- name, tth->sensor_name);
- if (ecore_file_exists(path))
- {
- tth->sensor_path = eina_stringshare_add(path);
- /* We really only care about the first
- * one for the default. */
- break;
- }
- E_FREE(name);
- }
- break;
-
- case SENSOR_TYPE_LINUX_ACPI:
- snprintf(path, sizeof(path),
- "/proc/acpi/thermal_zone/%s/temperature",
- tth->sensor_name);
- tth->sensor_path = eina_stringshare_add(path);
- break;
-
- case SENSOR_TYPE_LINUX_SYS:
- snprintf(path, sizeof(path),
- "/sys/class/thermal/%s/temp", tth->sensor_name);
- tth->sensor_path = eina_stringshare_add(path);
- break;
-
- default:
- break;
- }
- }
-}
-
-static int
-check(Tempthread *tth)
-{
- FILE *f = NULL;
- int ret = 0;
- int temp = 0;
- char buf[512];
- /* TODO: Make standard parser. Seems to be two types of temperature string:
- * - Somename: <temp> C
- * - <temp>
- */
- switch (tth->sensor_type)
- {
- case SENSOR_TYPE_NONE:
- /* TODO: Slow down poller? */
- break;
-
- case SENSOR_TYPE_OMNIBOOK:
- f = fopen(tth->sensor_path, "r");
- if (f)
- {
- char dummy[4096];
-
- if (fgets(buf, sizeof(buf), f) == NULL) goto error;
- fclose(f);
- f = NULL;
- if (sscanf(buf, "%s %s %i", dummy, dummy, &temp) == 3)
- ret = 1;
- else
- goto error;
- }
- else
- goto error;
- break;
-
- case SENSOR_TYPE_LINUX_MACMINI:
- case SENSOR_TYPE_LINUX_PBOOK:
- f = fopen(tth->sensor_path, "rb");
- if (f)
- {
- if (fgets(buf, sizeof(buf), f) == NULL) goto error;
- fclose(f);
- f = NULL;
- if (sscanf(buf, "%i", &temp) == 1)
- ret = 1;
- else
- goto error;
- }
- else
- goto error;
- break;
-
- case SENSOR_TYPE_LINUX_INTELCORETEMP:
- case SENSOR_TYPE_LINUX_I2C:
- case SENSOR_TYPE_LINUX_THINKPAD:
- f = fopen(tth->sensor_path, "r");
- if (f)
- {
- if (fgets(buf, sizeof(buf), f) == NULL) goto error;
- fclose(f);
- f = NULL;
- /* actually read the temp */
- if (sscanf(buf, "%i", &temp) == 1)
- ret = 1;
- else
- goto error;
- /* Hack for temp */
- temp = temp / 1000;
- }
- else
- goto error;
- break;
-
- case SENSOR_TYPE_LINUX_PCI:
- f = fopen(tth->sensor_path, "r");
- if (f)
- {
- if (fgets(buf, sizeof(buf), f) == NULL) goto error;
- fclose(f);
- f = NULL;
- /* actually read the temp */
- if (sscanf(buf, "%i", &temp) == 1)
- ret = 1;
- else
- goto error;
- /* Hack for temp */
- temp = temp / 1000;
- }
- else
- goto error;
- break;
-
- case SENSOR_TYPE_LINUX_ACPI:
- f = fopen(tth->sensor_path, "r");
- if (f)
- {
- char *p, *q;
-
- if (fgets(buf, sizeof(buf), f) == NULL) goto error;
- fclose(f);
- f = NULL;
- p = strchr(buf, ':');
- if (p)
- {
- p++;
- while (*p == ' ')
- p++;
- q = strchr(p, ' ');
- if (q) *q = 0;
- temp = atoi(p);
- ret = 1;
- }
- else
- goto error;
- }
- else
- goto error;
- break;
-
- case SENSOR_TYPE_LINUX_SYS:
- f = fopen(tth->sensor_path, "r");
- if (f)
- {
- if (fgets(buf, sizeof(buf), f) == NULL) goto error;
- fclose(f);
- f = NULL;
- temp = atoi(buf);
- temp /= 1000;
- ret = 1;
- }
- else
- goto error;
- break;
-
- default:
- break;
- }
-
- if (ret) return temp;
-
- return -999;
-error:
- if (f) fclose(f);
- tth->sensor_type = SENSOR_TYPE_NONE;
- eina_stringshare_del(tth->sensor_name);
- tth->sensor_name = NULL;
- eina_stringshare_del(tth->sensor_path);
- tth->sensor_path = NULL;
- return -999;
-}
-
-int
-thermal_fallback_get(Tempthread *tth)
-{
- int temp;
-
- init(tth);
- temp = check(tth);
- return temp;
-}
-
-#endif
diff --git a/src/modules/sysinfo/thermal/thermal_sysctl.c b/src/modules/sysinfo/thermal/thermal_sysctl.c
deleted file mode 100644
index 35427c8321..0000000000
--- a/src/modules/sysinfo/thermal/thermal_sysctl.c
+++ /dev/null
@@ -1,212 +0,0 @@
-#include "thermal.h"
-
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-# include <sys/types.h>
-# include <sys/sysctl.h>
-# include <errno.h>
-#endif
-
-#if defined(__OpenBSD__)
-# include <sys/param.h>
-# include <sys/sysctl.h>
-# include <sys/sensors.h>
-# include <errno.h>
-# include <err.h>
-#endif
-
-#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
-typedef struct
-{
- int mib[CTL_MAXNAME];
-#if defined(__FreeBSD__) || defined(__DragonFly__)
- unsigned int miblen;
-#endif
- int dummy;
-} Extn;
-
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-static const char *sources[] =
-{
- "hw.acpi.thermal.tz0.temperature",
- "dev.cpu.0.temperature",
- "dev.aibs.0.temp.0",
- "dev.lm75.0.temperature",
- NULL
-};
-#endif
-
-#if defined(__OpenBSD__)
-static struct sensor snsr;
-static size_t slen = sizeof(snsr);
-#endif
-
-static void
-init(Tempthread *tth)
-{
-#if defined(__OpenBSD__)
- int dev, numt;
- struct sensordev snsrdev;
- size_t sdlen = sizeof(snsrdev);
-#endif
-
-#if defined(__FreeBSD__) || defined(__DragonFly__)
- unsigned i;
- size_t len;
- int rc;
-#endif
-
- Extn *extn;
- if (tth->initted) return;
- tth->initted = EINA_TRUE;
-
- extn = calloc(1, sizeof(Extn));
- tth->extn = extn;
-
- if ((!tth->sensor_type) ||
- ((!tth->sensor_name) ||
- (tth->sensor_name[0] == 0)))
- {
- eina_stringshare_del(tth->sensor_name);
- tth->sensor_name = NULL;
- eina_stringshare_del(tth->sensor_path);
- tth->sensor_path = NULL;
-
-#if defined(__FreeBSD__) || defined(__DragonFly__)
- for (i = 0; sources[i]; i++)
- {
- rc = sysctlbyname(sources[i], NULL, NULL, NULL, 0);
- if (rc == 0)
- {
- tth->sensor_type = SENSOR_TYPE_FREEBSD;
- tth->sensor_name = eina_stringshare_add(sources[i]);
- break;
- }
- }
-
-#elif defined(__OpenBSD__)
- extn->mib[0] = CTL_HW;
- extn->mib[1] = HW_SENSORS;
-
- for (dev = 0;; dev++)
- {
- extn->mib[2] = dev;
- if (sysctl(extn->mib, 3, &snsrdev, &sdlen, NULL, 0) == -1)
- {
- if (errno == ENOENT) /* no further sensors */
- break;
- else
- continue;
- }
- if (strcmp(snsrdev.xname, "cpu0") == 0)
- {
- tth->sensor_type = SENSOR_TYPE_OPENBSD;
- tth->sensor_name = eina_stringshare_add("cpu0");
- break;
- }
- else if (strcmp(snsrdev.xname, "km0") == 0)
- {
- tth->sensor_type = SENSOR_TYPE_OPENBSD;
- tth->sensor_name = eina_stringshare_add("km0");
- break;
- }
- }
-#endif
- }
- if ((tth->sensor_type) && (tth->sensor_name) && (!tth->sensor_path))
- {
- if (tth->sensor_type == SENSOR_TYPE_FREEBSD)
- {
-#if defined(__FreeBSD__) || defined(__DragonFly__)
- len = sizeof(extn->mib) / sizeof(extn->mib[0]);
- rc = sysctlnametomib(tth->sensor_name, extn->mib, &len);
- if (rc == 0)
- {
- extn->miblen = len;
- tth->sensor_path = eina_stringshare_add(tth->sensor_name);
- }
-#endif
- }
- else if (tth->sensor_type == SENSOR_TYPE_OPENBSD)
- {
-#if defined(__OpenBSD__)
- for (numt = 0; numt < snsrdev.maxnumt[SENSOR_TEMP]; numt++)
- {
- extn->mib[4] = numt;
- slen = sizeof(snsr);
- if (sysctl(extn->mib, 5, &snsr, &slen, NULL, 0) == -1)
- continue;
- if (slen > 0 && (snsr.flags & SENSOR_FINVALID) == 0)
- {
- break;
- }
- }
-#endif
- }
- }
-}
-
-static int
-check(Tempthread *tth)
-{
- int ret = 0;
- int temp = 0;
-#if defined(__FreeBSD__) || defined(__DragonFly__)
- size_t len;
- size_t ftemp = 0;
-#endif
-#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- Extn *extn = tth->extn;
-#endif
-
- /* TODO: Make standard parser. Seems to be two types of temperature string:
- * - Somename: <temp> C
- * - <temp>
- */
- if (tth->sensor_type == SENSOR_TYPE_FREEBSD)
- {
-#if defined(__FreeBSD__) || defined(__DragonFly__)
- len = sizeof(ftemp);
- if (sysctl(extn->mib, extn->miblen, &ftemp, &len, NULL, 0) == 0)
- {
- temp = (ftemp - 2732) / 10;
- ret = 1;
- }
- else
- goto error;
-#endif
- }
- else if (tth->sensor_type == SENSOR_TYPE_OPENBSD)
- {
-#if defined(__OpenBSD__)
- if (sysctl(extn->mib, 5, &snsr, &slen, NULL, 0) != -1)
- {
- temp = (snsr.value - 273150000) / 1000000.0;
- ret = 1;
- }
- else
- goto error;
-#endif
- }
- if (ret) return temp;
-
- return -999;
-error:
- tth->sensor_type = SENSOR_TYPE_NONE;
- eina_stringshare_del(tth->sensor_name);
- tth->sensor_name = NULL;
- eina_stringshare_del(tth->sensor_path);
- tth->sensor_path = NULL;
- return -999;
-}
-
-int
-thermal_sysctl_get(Tempthread *tth)
-{
- int temp;
-
- init(tth);
- temp = check(tth);
- return temp;
-}
-
-#endif
diff --git a/src/modules/sysinfo/thermal/thermal_udev.c b/src/modules/sysinfo/thermal/thermal_udev.c
deleted file mode 100644
index 6b817ac4f2..0000000000
--- a/src/modules/sysinfo/thermal/thermal_udev.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "thermal.h"
-
-int
-thermal_udev_get(Tempthread *tth)
-{
- Eina_List *l;
- double cur, temp;
- char *syspath;
- const char *test;
- char buf[256];
- int x, y, cpus = 0;
-
- temp = -999;
-
- if (!tth->tempdevs)
- tth->tempdevs =
- eeze_udev_find_by_type(EEZE_UDEV_TYPE_IS_IT_HOT_OR_IS_IT_COLD_SENSOR,
- NULL);
- if (tth->tempdevs)
- {
- temp = 0;
- EINA_LIST_FOREACH(tth->tempdevs, l, syspath)
- {
- for (x = 1, y = 0; x < 15; x++)
- {
- if (y >= 2) break;
- sprintf(buf, "temp%d_input", x);
- if ((test = eeze_udev_syspath_get_sysattr(syspath, buf)))
- {
- y = 0;
- cur = atoi(test);
- if (cur > 0)
- {
- /* udev reports temp in (celsius * 1000) */
- temp += (cur / 1000);
- cpus++;
- }
- }
- /* keep checking for sensors until 2 in a row don't exist */
- else y++;
- }
- }
- if (cpus > 0)
- {
- temp /= (double)cpus;
- return temp;
- }
- }
- return -999;
-}
-
diff --git a/src/modules/teamwork/e-module-teamwork.edj b/src/modules/teamwork/e-module-teamwork.edj
deleted file mode 100644
index a394dcb853..0000000000
--- a/src/modules/teamwork/e-module-teamwork.edj
+++ /dev/null
Binary files differ
diff --git a/src/modules/teamwork/e_mod_config.c b/src/modules/teamwork/e_mod_config.c
deleted file mode 100644
index d40ef7b811..0000000000
--- a/src/modules/teamwork/e_mod_config.c
+++ /dev/null
@@ -1,182 +0,0 @@
-#include "e_mod_main.h"
-
-struct _E_Config_Dialog_Data
-{
- int disable_media_fetch;
- int disable_video;
- double allowed_media_size;
- double allowed_media_fetch_size;
- double allowed_media_age;
-
- double mouse_out_delay;
- double popup_size;
- double popup_opacity;
-};
-
-static void *
-_create_data(E_Config_Dialog *cfd EINA_UNUSED)
-{
- E_Config_Dialog_Data *cfdata;
-
- cfdata = E_NEW(E_Config_Dialog_Data, 1);
-#define SET(X) \
- cfdata->X = tw_config->X
- SET(disable_media_fetch);
- SET(disable_video);
- SET(allowed_media_size);
- SET(allowed_media_fetch_size);
- SET(allowed_media_age);
-
- SET(mouse_out_delay);
- SET(popup_size);
- SET(popup_opacity);
-#undef SET
- return cfdata;
-}
-
-static void
-_free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
-{
- tw_mod->cfd = NULL;
- free(cfdata);
-}
-
-static int
-_basic_check_changed(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
-{
-#define CHECK(X) \
- if (cfdata->X != tw_config->X) return 1
-
- CHECK(disable_media_fetch);
- CHECK(disable_video);
- if (lround(cfdata->allowed_media_age) != tw_config->allowed_media_age) return 1;
- if (lround(cfdata->allowed_media_size) != tw_config->allowed_media_size) return 1;
- if (lround(cfdata->allowed_media_fetch_size) != tw_config->allowed_media_fetch_size) return 1;
-
- if (fabs(cfdata->mouse_out_delay - tw_config->mouse_out_delay) > 0.45) return 1;
-
- if (fabs(cfdata->popup_size - tw_config->popup_size) > 0.9) return 1;
- if (fabs(cfdata->popup_opacity - tw_config->popup_opacity) > 0.9) return 1;
-
-#undef CHECK
- return 0;
-}
-
-static Evas_Object *
-_basic_create_widgets(E_Config_Dialog *cfd EINA_UNUSED,
- Evas *evas,
- E_Config_Dialog_Data *cfdata)
-{
- Evas_Object *ob, *ol, *otb, *tab, *oc;
-
- tab = e_widget_table_add(e_win_evas_win_get(evas), 0);
-
- otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
-
- ///////////////////////////////////////////
-
- ol = e_widget_list_add(evas, 0, 0);
-
- ob = e_widget_check_add(evas, _("Disable remote media fetching"), &cfdata->disable_media_fetch);
- e_widget_list_object_append(ol, ob, 1, 0, 0.5);
-
- oc = e_widget_label_add(evas, _("Maximum media size to fetch"));
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- oc = e_widget_slider_add(evas, 1, 0, _("%2.0f MiB"), 1, 50, 1, 0, &cfdata->allowed_media_fetch_size, NULL, 150);
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- e_widget_check_widget_disable_on_checked_add(ob, oc);
-
- oc = e_widget_label_add(evas, _("Maximum media cache size in RAM"));
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- oc = e_widget_slider_add(evas, 1, 0, _("%4.0f MiB"), 0, 1024, 16, 0, &cfdata->allowed_media_size, NULL, 150);
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- e_widget_check_widget_disable_on_checked_add(ob, oc);
-
- oc = e_widget_label_add(evas, _("Maximum media cache age on disk"));
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- oc = e_widget_slider_add(evas, 1, 0, _("%3.0f Days"), -1, 180, 1, 0, &cfdata->allowed_media_age, NULL, 150);
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- e_widget_check_widget_disable_on_checked_add(ob, oc);
-
- e_widget_toolbook_page_append(otb, NULL, _("Cache"), ol, 1, 1, 1, 1, 0.5, 0.5);
-
- ///////////////////////////////////////////
-
- ol = e_widget_list_add(evas, 0, 0);
-
- ob = e_widget_check_add(evas, _("Disable video previews"), &cfdata->disable_video);
- e_widget_list_object_append(ol, ob, 1, 0, 0.5);
-
- oc = e_widget_label_add(evas, _("Mouse-out hide delay"));
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- oc = e_widget_slider_add(evas, 1, 0, _("%1.1f seconds"), 0, 5, 0.5, 0, &cfdata->mouse_out_delay, NULL, 150);
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- e_widget_check_widget_disable_on_checked_add(ob, oc);
-
- oc = e_widget_label_add(evas, _("Maximum size (Percentage of screens size)"));
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- oc = e_widget_slider_add(evas, 1, 0, _("%3.0f"), 10, 100, 1, 0, &cfdata->popup_size, NULL, 150);
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- e_widget_check_widget_disable_on_checked_add(ob, oc);
-
- oc = e_widget_label_add(evas, _("Opacity"));
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- oc = e_widget_slider_add(evas, 1, 0, _("%3.0f"), 10, 100, 1, 0, &cfdata->popup_opacity, NULL, 150);
- e_widget_list_object_append(ol, oc, 1, 1, 0.5);
- e_widget_check_widget_disable_on_checked_add(ob, oc);
-
- e_widget_toolbook_page_append(otb, NULL, _("Popups"), ol, 1, 1, 1, 1, 0.5, 0.5);
-
- e_widget_toolbook_page_show(otb, 0);
-
- e_widget_table_object_append(tab, otb, 0, 0, 1, 1, 1, 1, 1, 1);
- return tab;
-}
-
-
-static int
-_basic_apply_data(E_Config_Dialog *cfd EINA_UNUSED,
- E_Config_Dialog_Data *cfdata)
-{
-
-#define SET(X) tw_config->X = cfdata->X
- SET(disable_media_fetch);
- SET(disable_video);
- SET(allowed_media_size);
- SET(allowed_media_fetch_size);
- SET(allowed_media_age);
-
- SET(mouse_out_delay);
- SET(popup_size);
- if (fabs(cfdata->popup_opacity - tw_config->popup_opacity) > 0.9)
- {
- SET(popup_opacity);
- tw_popup_opacity_set();
- }
-
- e_config_save_queue();
- return 1;
-}
-
-EINTERN E_Config_Dialog *
-e_int_config_teamwork_module(Evas_Object *parent EINA_UNUSED, const char *params EINA_UNUSED)
-{
- E_Config_Dialog *cfd;
- E_Config_Dialog_View *v;
- char buf[4096];
-
- if (tw_mod->cfd) return NULL;
- snprintf(buf, sizeof(buf), "%s/e-module-teamwork.edj", e_module_dir_get(tw_mod->module));
- v = E_NEW(E_Config_Dialog_View, 1);
-
- v->create_cfdata = _create_data;
- v->free_cfdata = _free_data;
- v->basic.apply_cfdata = _basic_apply_data;
- v->basic.create_widgets = _basic_create_widgets;
- v->basic.check_changed = _basic_check_changed;
-
- cfd = e_config_dialog_new(NULL, _("Teamwork Settings"),
- "E", "applications/teamwork", buf, 32, v, tw_mod);
- tw_mod->cfd = cfd;
- return cfd;
-}
diff --git a/src/modules/teamwork/e_mod_main.c b/src/modules/teamwork/e_mod_main.c
deleted file mode 100644
index 0be6ab4dd2..0000000000
--- a/src/modules/teamwork/e_mod_main.c
+++ /dev/null
@@ -1,181 +0,0 @@
-#include "e_mod_main.h"
-
-EINTERN int _e_teamwork_log_dom = -1;
-EINTERN Mod *tw_mod = NULL;
-EINTERN Teamwork_Config *tw_config = NULL;
-
-E_API E_Module_Api e_modapi = {E_MODULE_API_VERSION, "Teamwork"};
-
-static E_Config_DD *conf_edd = NULL;
-
-static E_Action *e_tw_toggle = NULL;
-static const char _act_toggle[] = "tw_toggle";
-static const char _e_tw_name[] = N_("Teamwork");
-static const char _lbl_toggle[] = N_("Toggle Popup Visibility");
-
-static const char *
-_sha1_to_string(const unsigned char *hashout)
-{
- const char hextab[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
- char sha1[41] = {0};
- unsigned int i = 0;
-
- for (i = 0; i < 20; i++)
- {
- sha1[2 * i] = hextab[(hashout[i] >> 4) & 0x0f];
- sha1[2 * i + 1] = hextab[hashout[i] & 0x0f];
- }
- return eina_stringshare_add(sha1);
-}
-
-const char *
-sha1_encode(const Eina_Binbuf *data)
-{
- unsigned char hashout[20];
-
- emile_binbuf_sha1(data, hashout);
- return _sha1_to_string(hashout);
-}
-
-//////////////////////////////
-static Teamwork_Config *
-e_tw_config_new(void)
-{
- Teamwork_Config *cf;
-
- cf = E_NEW(Teamwork_Config, 1);
- cf->config_version = MOD_CONFIG_FILE_VERSION;
-
- cf->allowed_media_size = 10; // 10 megabytes
- cf->allowed_media_fetch_size = 5; // 5 megabytes
- cf->allowed_media_age = 3; // 3 days
-
- cf->mouse_out_delay = 0.0; // hide instantly
- cf->popup_size = 60.0; // 60% screen size
- cf->popup_opacity = 90.0; // 90% opacity
-
- return cf;
-}
-
-static E_Config_DD *
-e_tw_config_dd_new(void)
-{
- conf_edd = E_CONFIG_DD_NEW("Teamwork_Config", Teamwork_Config);
-
-#undef T
-#undef D
-#define T Teamwork_Config
-#define D conf_edd
- E_CONFIG_VAL(D, T, config_version, UINT);
- E_CONFIG_VAL(D, T, disable_media_fetch, UCHAR);
- E_CONFIG_VAL(D, T, disable_video, UCHAR);
- E_CONFIG_VAL(D, T, allowed_media_size, LL);
- E_CONFIG_VAL(D, T, allowed_media_fetch_size, LL);
- E_CONFIG_VAL(D, T, allowed_media_age, INT);
-
- E_CONFIG_VAL(D, T, mouse_out_delay, DOUBLE);
- E_CONFIG_VAL(D, T, popup_size, DOUBLE);
- E_CONFIG_VAL(D, T, popup_opacity, DOUBLE);
- return conf_edd;
-}
-//////////////////////////////
-static void
-e_tw_act_toggle_cb(E_Object *obj EINA_UNUSED, const char *params)
-{
- if (tw_mod->pop)
- {
- if (tw_mod->sticky)
- tw_hide(NULL);
- tw_mod->sticky = !tw_mod->sticky;
- return;
- }
- if (params && params[0])
- {
- tw_uri_show(params);
- tw_mod->sticky = 1;
- }
-}
-//////////////////////////////
-static void
-_e_modapi_shutdown(void)
-{
- e_tw_shutdown();
-
- E_CONFIG_DD_FREE(conf_edd);
- eina_log_domain_unregister(_e_teamwork_log_dom);
- _e_teamwork_log_dom = -1;
-
- e_configure_registry_item_del("applications/teamwork");
- e_configure_registry_category_del("applications");
-
- e_action_predef_name_del(_e_tw_name, _lbl_toggle);
- e_action_del(_act_toggle);
- e_tw_toggle = NULL;
-
- E_FREE(tw_config);
- E_FREE(tw_mod);
-}
-
-E_API void *
-e_modapi_init(E_Module *m)
-{
- char buf[PATH_MAX];
-
- snprintf(buf, sizeof(buf), "%s/e-module-teamwork.edj", e_module_dir_get(m));
- e_configure_registry_category_add("applications", 20, _("Apps"), NULL,
- "preferences-applications");
- e_configure_registry_item_add("applications/teamwork", 1, _("Teamwork"), NULL,
- buf, e_int_config_teamwork_module);
-
- tw_mod = E_NEW(Mod, 1);
- tw_mod->module = m;
- m->data = tw_mod;
- conf_edd = e_tw_config_dd_new();
- tw_config = e_config_domain_load("module.teamwork", conf_edd);
- if (tw_config)
- {
- if (!e_util_module_config_check(_("Teamwork"), tw_config->config_version, MOD_CONFIG_FILE_VERSION))
- E_FREE_FUNC(tw_config, free);
- }
-
- if (tw_config)
- {
- /* sanity checks */
- tw_config->mouse_out_delay = E_CLAMP(tw_config->mouse_out_delay, 0.0, 5.0);
- tw_config->popup_size = E_CLAMP(tw_config->popup_size, 10.0, 100.0);
- tw_config->popup_opacity = E_CLAMP(tw_config->popup_opacity, 10.0, 100.0);
- tw_config->allowed_media_fetch_size = E_CLAMP(tw_config->allowed_media_fetch_size, 1, 50);
- }
- else
- tw_config = e_tw_config_new();
- tw_config->config_version = MOD_CONFIG_FILE_VERSION;
-
- _e_teamwork_log_dom = eina_log_domain_register("teamwork", EINA_COLOR_ORANGE);
- eina_log_domain_level_set("teamwork", EINA_LOG_LEVEL_DBG);
-
- if (!e_tw_init())
- {
- _e_modapi_shutdown();
- return NULL;
- }
- e_tw_toggle = e_action_add(_act_toggle);
- e_tw_toggle->func.go = e_tw_act_toggle_cb;
- e_action_predef_name_set(_e_tw_name, _lbl_toggle, _act_toggle, NULL, NULL, 1);
-
- return m;
-}
-
-E_API int
-e_modapi_shutdown(E_Module *m EINA_UNUSED)
-{
- _e_modapi_shutdown();
- return 1;
-}
-
-E_API int
-e_modapi_save(E_Module *m EINA_UNUSED)
-{
- e_config_domain_save("module.teamwork", conf_edd, tw_config);
- return 1;
-}
-
diff --git a/src/modules/teamwork/e_mod_main.h b/src/modules/teamwork/e_mod_main.h
deleted file mode 100644
index c570d31986..0000000000
--- a/src/modules/teamwork/e_mod_main.h
+++ /dev/null
@@ -1,99 +0,0 @@
-#ifndef E_MOD_MAIN_H
-#define E_MOD_MAIN_H
-
-/* We want emil_binbuf_sha1 which is beta API */
-#define EFL_BETA_API_SUPPORT
-
-#include "e.h"
-
-/**
- * https://phab.enlightenment.org/w/teamwork_api/
- */
-
-/* Increment for Major Changes */
-#define MOD_CONFIG_FILE_EPOCH 1
-/* Increment for Minor Changes (ie: user doesn't need a new config) */
-#define MOD_CONFIG_FILE_GENERATION 0
-#define MOD_CONFIG_FILE_VERSION ((MOD_CONFIG_FILE_EPOCH * 1000000) + MOD_CONFIG_FILE_GENERATION)
-
-typedef struct Teamwork_Config
-{
- unsigned int config_version;
-
- Eina_Bool disable_media_fetch;
- Eina_Bool disable_video;
- long long int allowed_media_size;
- long long int allowed_media_fetch_size;
- int allowed_media_age;
-
- double mouse_out_delay;
- double popup_size;
- double popup_opacity;
-} Teamwork_Config;
-
-typedef struct Mod
-{
- E_Module *module;
- E_Config_Dialog *cfd;
- size_t media_size;
- Eina_Inlist *media_list;
- Eina_Hash *media;
- Evas_Object *pop;
- Eina_Bool sticky E_BITFIELD;
- Eina_Bool force E_BITFIELD;
- Eina_Bool hidden E_BITFIELD;
-} Mod;
-
-extern Teamwork_Config *tw_config;
-extern Mod *tw_mod;
-extern int _e_teamwork_log_dom;
-
-EINTERN const char *sha1_encode(const Eina_Binbuf *data);
-
-EINTERN int e_tw_init(void);
-EINTERN void e_tw_shutdown(void);
-EINTERN Eina_Bool tw_hide(void *d EINA_UNUSED);
-EINTERN void tw_popup_opacity_set(void);
-EINTERN void tw_uri_show(const char *uri);
-
-EINTERN void tw_link_detect(E_Client *ec, const char *uri);
-EINTERN void tw_link_show(E_Client *ec, const char *uri, int x, int y);
-EINTERN void tw_link_hide(E_Client *ec, const char *uri);
-EINTERN void tw_link_open(E_Client *ec, const char *uri);
-
-typedef void (*Teamwork_Signal_Cb)(E_Client *, const char *);
-typedef void (*Teamwork_Signal_Progress_Cb)(E_Client *, const char *, uint32_t);
-
-extern Teamwork_Signal_Cb tw_signal_link_complete[E_PIXMAP_TYPE_NONE];
-extern Teamwork_Signal_Cb tw_signal_link_invalid[E_PIXMAP_TYPE_NONE];
-extern Teamwork_Signal_Progress_Cb tw_signal_link_progress[E_PIXMAP_TYPE_NONE];
-extern Teamwork_Signal_Cb tw_signal_link_downloading[E_PIXMAP_TYPE_NONE];
-
-EINTERN E_Config_Dialog *e_int_config_teamwork_module(Evas_Object *parent, const char *params EINA_UNUSED);
-
-E_API int e_modapi_shutdown(E_Module *m EINA_UNUSED);
-
-#ifdef HAVE_WAYLAND
-EINTERN Eina_Bool wl_tw_init(void);
-EINTERN void wl_tw_shutdown(void);
-#endif
-
-#ifndef HAVE_WAYLAND_ONLY
-EINTERN Eina_Bool x11_tw_init(void);
-EINTERN void x11_tw_shutdown(void);
-#endif
-
-#define E_TW_VERSION 2
-
-#undef DBG
-#undef INF
-#undef WRN
-#undef ERR
-#undef CRIT
-#define DBG(...) EINA_LOG_DOM_DBG(_e_teamwork_log_dom, __VA_ARGS__)
-#define INF(...) EINA_LOG_DOM_INFO(_e_teamwork_log_dom, __VA_ARGS__)
-#define WRN(...) EINA_LOG_DOM_WARN(_e_teamwork_log_dom, __VA_ARGS__)
-#define ERR(...) EINA_LOG_DOM_ERR(_e_teamwork_log_dom, __VA_ARGS__)
-#define CRIT(...) EINA_LOG_DOM_CRIT(_e_teamwork_log_dom, __VA_ARGS__)
-
-#endif
diff --git a/src/modules/teamwork/e_mod_tw.c b/src/modules/teamwork/e_mod_tw.c
deleted file mode 100644
index bbf4dc4e6f..0000000000
--- a/src/modules/teamwork/e_mod_tw.c
+++ /dev/null
@@ -1,1297 +0,0 @@
-#include "e_mod_main.h"
-
-#define IMAGE_FETCH_TRIES 5
-
-/**
- * https://phab.enlightenment.org/w/teamwork_api/
- */
-
-typedef struct
-{
- const char *sha1;
- unsigned long long timestamp;
- Eina_Bool video;
-} Media_Cache;
-
-typedef struct Media_Cache_List
-{
- Eina_List *cache;
- Eina_Bool video;
-} Media_Cache_List;
-
-typedef struct Media
-{
- Mod *mod;
- EINA_INLIST;
- Ecore_Con_Url *client;
- Eina_Binbuf *buf;
- const char *addr;
- unsigned long long timestamp;
- unsigned int tries;
- Ecore_Thread *video_thread;
- Eina_List *clients;
- Eina_Stringshare *tmpfile;
- Eina_Bool video;
- Eina_Bool dummy E_BITFIELD;
- Eina_Bool valid E_BITFIELD;
- Eina_Bool show E_BITFIELD;
-} Media;
-
-typedef enum
-{
- MEDIA_CACHE_TYPE_IMAGE,
- MEDIA_CACHE_TYPE_VIDEO,
-} Media_Cache_Type;
-
-static Eet_File *media[2] = {NULL};
-static Eet_File *dummies = NULL;
-static Eet_Data_Descriptor *cleaner_edd = NULL;
-static Eet_Data_Descriptor *cache_edd = NULL;
-static Ecore_Idler *media_cleaner[2] = {NULL};
-static Eina_List *handlers = NULL;
-static Media_Cache_List *tw_cache_list[2] = {NULL};
-
-static Evas_Point last_coords = {0, 0};
-
-static E_Client *tw_win;
-
-static Ecore_Timer *tw_hide_timer = NULL;
-
-static Eina_Stringshare *tw_tmpfile = NULL;
-static int tw_tmpfd = -1;
-static Ecore_Thread *tw_tmpthread = NULL;
-static Media *tw_tmpthread_media = NULL;
-static Eina_Bool tw_tooltip = EINA_FALSE;
-
-typedef enum
-{
- TEAMWORK_LINK_TYPE_NONE,
- TEAMWORK_LINK_TYPE_LOCAL_FILE,
- TEAMWORK_LINK_TYPE_LOCAL_DIRECTORY,
- TEAMWORK_LINK_TYPE_REMOTE
-} Teamwork_Link_Type;
-
-static void tw_show(Media *i);
-static void tw_show_local_file(const char *uri);
-static void tw_show_local_dir(const char *uri);
-static int tw_media_add(const char *url, Eina_Binbuf *buf, unsigned long long timestamp, Eina_Bool video);
-static void download_media_cleanup(void);
-static void tw_dummy_add(const char *url);
-static Eina_Bool tw_dummy_check(const char *url);
-static void tw_media_ping(const char *url, unsigned long long timestamp, Eina_Bool video);
-static Eina_Binbuf *tw_media_get(const char *url, unsigned long long timestamp, Eina_Bool *video);
-static Eina_Bool tw_idler_start(void);
-
-EINTERN Teamwork_Signal_Cb tw_signal_link_complete[E_PIXMAP_TYPE_NONE];
-EINTERN Teamwork_Signal_Cb tw_signal_link_invalid[E_PIXMAP_TYPE_NONE];
-EINTERN Teamwork_Signal_Progress_Cb tw_signal_link_progress[E_PIXMAP_TYPE_NONE];
-EINTERN Teamwork_Signal_Cb tw_signal_link_downloading[E_PIXMAP_TYPE_NONE];
-
-static void
-media_client_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Media *i = data;
- E_Client *ec = e_comp_object_client_get(obj);
-
- i->clients = eina_list_remove(i->clients, ec);
-}
-
-static void
-signal_link_complete(Media *i)
-{
- E_Client *ec;
-
- if (i->show && (i->clients || (!tw_win))) tw_show(i);
- i->show = 0;
-
- EINA_LIST_FREE(i->clients, ec)
- {
- E_Pixmap_Type type = e_pixmap_type_get(ec->pixmap);
- if (e_client_has_xwindow(ec))
- type = E_PIXMAP_TYPE_X;
- if (tw_signal_link_complete[type])
- tw_signal_link_complete[type](ec, i->addr);
- evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_DEL, media_client_del, i);
- }
-}
-
-static void
-signal_link_invalid(Media *i)
-{
- E_Client *ec;
-
- EINA_LIST_FREE(i->clients, ec)
- {
- E_Pixmap_Type type = e_pixmap_type_get(ec->pixmap);
- if (e_client_has_xwindow(ec))
- type = E_PIXMAP_TYPE_X;
- if (tw_signal_link_invalid[type])
- tw_signal_link_invalid[type](ec, i->addr);
- evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_DEL, media_client_del, i);
- }
-}
-
-static void
-signal_link_progress(Media *i, double pr)
-{
- Eina_List *l;
- E_Client *ec;
-
- EINA_LIST_FOREACH(i->clients, l, ec)
- {
- E_Pixmap_Type type = e_pixmap_type_get(ec->pixmap);
- if (e_client_has_xwindow(ec))
- type = E_PIXMAP_TYPE_X;
- if (tw_signal_link_progress[type])
- tw_signal_link_progress[type](ec, i->addr, lround(pr));
- }
-}
-
-static void
-signal_link_downloading(Media *i)
-{
- Eina_List *l;
- E_Client *ec;
-
- EINA_LIST_FOREACH(i->clients, l, ec)
- {
- E_Pixmap_Type type = e_pixmap_type_get(ec->pixmap);
- if (e_client_has_xwindow(ec))
- type = E_PIXMAP_TYPE_X;
- if (tw_signal_link_downloading[type])
- tw_signal_link_downloading[type](ec, i->addr);
- }
-}
-
-static void
-link_failure_show(void)
-{
- tw_mod->pop = evas_object_rectangle_add(e_comp->evas);
- evas_object_color_set(tw_mod->pop, 0, 0, 0, 0);
- evas_object_pass_events_set(tw_mod->pop, 1);
- evas_object_geometry_set(tw_mod->pop, 0, 0, 1, 1);
- evas_object_show(tw_mod->pop);
- tw_tooltip = 1;
- elm_object_tooltip_text_set(e_comp->elm, _("Target URI could not be shown.<ps/>"
- "Hold [Ctrl] to disable link fetching."));
- elm_object_tooltip_show(e_comp->elm);
-}
-
-static Eina_Bool
-download_media_complete(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_Con_Event_Url_Complete *ev)
-{
- Media *i;
- void **test = ecore_con_url_data_get(ev->url_con);
-
- if ((!test) || (*test != tw_mod)) return ECORE_CALLBACK_RENEW;
- i = (void *)test;
- if (!i->valid) return ECORE_CALLBACK_DONE;
- i->timestamp = (unsigned long long)ecore_time_unix_get();
- if (tw_media_add(i->addr, i->buf, i->timestamp, i->video) == 1)
- tw_mod->media_size += eina_binbuf_length_get(i->buf);
- E_FREE_FUNC(i->client, ecore_con_url_free);
- signal_link_complete(i);
- download_media_cleanup();
- DBG("MEDIA CACHE: %zu bytes", tw_mod->media_size);
- return ECORE_CALLBACK_DONE;
-}
-
-static Eina_Bool
-download_media_data(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_Con_Event_Url_Data *ev)
-{
- Media *i;
- void **test = ecore_con_url_data_get(ev->url_con);
-
- if ((!test) || (*test != tw_mod)) return ECORE_CALLBACK_RENEW;
- i = (void *)test;
- if (i->dummy) return ECORE_CALLBACK_DONE;
- if (!i->buf) i->buf = eina_binbuf_new();
- eina_binbuf_append_length(i->buf, ev->data, ev->size);
- return ECORE_CALLBACK_DONE;
-}
-
-static Eina_Bool
-download_media_status(void *data EINA_UNUSED, int t EINA_UNUSED, Ecore_Con_Event_Url_Progress *ev)
-{
- int status;
- const char *h;
- Media *i;
- const Eina_List *l;
- void **test = ecore_con_url_data_get(ev->url_con);
-
- if ((!test) || (*test != tw_mod)) return ECORE_CALLBACK_RENEW;
- i = (void *)test;
-
- if (i->valid)
- {
- signal_link_progress(i, ev->down.now / ev->down.total);
- return ECORE_CALLBACK_DONE; //already checked
- }
- status = ecore_con_url_status_code_get(ev->url_con);
- if (!status) return ECORE_CALLBACK_DONE; //not ready yet
- if (ev->down.total / 1024 / 1024 > tw_config->allowed_media_fetch_size)
- {
- DBG("Media larger than allowed!");
- goto invalid;
- }
- DBG("%i code for media: %s", status, i->addr);
- if (status != 200)
- {
- E_FREE_FUNC(i->buf, eina_binbuf_free);
- E_FREE_FUNC(i->client, ecore_con_url_free);
- if ((status >= 400) || (status <= 301)) goto dummy;
- if (++i->tries < IMAGE_FETCH_TRIES)
- {
- i->client = ecore_con_url_new(i->addr);
- ecore_con_url_data_set(i->client, i);
- if (!ecore_con_url_get(i->client)) goto dummy;
- }
- return ECORE_CALLBACK_DONE;
- }
- EINA_LIST_FOREACH(ecore_con_url_response_headers_get(ev->url_con), l, h)
- {
- const char *type;
-
- if (strncasecmp(h, "Content-Type: ", sizeof("Content-Type: ") - 1)) continue;
- type = h + sizeof("Content-Type: ") - 1;
- i->video = ((!strncasecmp(type, "video/", 6)) || (!strncasecmp(type, "application/ogg", sizeof("application/ogg") -1)));
- if (i->video) break;
- if (strncasecmp(type, "image/", 6)) goto dummy;
- break;
- }
- i->valid = !i->dummy;
- if (i->valid) signal_link_progress(i, ev->down.now / ev->down.total);
-
- return ECORE_CALLBACK_DONE;
-dummy:
- signal_link_invalid(i);
- tw_dummy_add(i->addr);
- i->dummy = EINA_TRUE;
-invalid:
- E_FREE_FUNC(i->buf, eina_binbuf_free);
- E_FREE_FUNC(i->client, ecore_con_url_free);
- if (i->show)
- link_failure_show();
- i->show = 0;
- return ECORE_CALLBACK_RENEW;
-}
-
-static int
-download_media_sort_cb(Media *a, Media *b)
-{
- long long diff;
- diff = a->timestamp - b->timestamp;
- if (diff < 0) return -1;
- if (!diff) return 0;
- return 1;
-}
-
-static Media *
-download_media_add(const char *url)
-{
- Media *i;
- unsigned long long t;
- Eina_Bool add = EINA_FALSE;
-
- t = (unsigned long long)ecore_time_unix_get();
-
- i = eina_hash_find(tw_mod->media, url);
- if (i)
- {
- if (i->buf)
- {
- i->timestamp = t;
- tw_media_ping(url, i->timestamp, i->video);
- }
- else
- {
- /* randomly deleted during cache pruning */
- i->buf = tw_media_get(url, t, &i->video);
- if (i->buf) tw_mod->media_size += eina_binbuf_length_get(i->buf);
- }
- if (i->buf)
- {
- tw_mod->media_list = eina_inlist_promote(tw_mod->media_list, EINA_INLIST_GET(i));
- download_media_cleanup();
- return i;
- }
- }
- if (!i)
- {
- if (tw_dummy_check(url)) return NULL;
- if (tw_config->disable_media_fetch) return NULL;
- add = EINA_TRUE;
- i = calloc(1, sizeof(Media));
- i->mod = tw_mod;
- i->addr = eina_stringshare_add(url);
- i->buf = tw_media_get(url, t, &i->video);
- }
- if (i->buf)
- tw_mod->media_size += eina_binbuf_length_get(i->buf);
- else
- {
- i->client = ecore_con_url_new(url);
- ecore_con_url_data_set(i->client, i);
- ecore_con_url_get(i->client);
- signal_link_downloading(i);
- }
- if (!add) return i;
- eina_hash_add(tw_mod->media, url, i);
- tw_mod->media_list = eina_inlist_sorted_insert(tw_mod->media_list, EINA_INLIST_GET(i), (Eina_Compare_Cb)download_media_sort_cb);
- return i;
-}
-
-static void
-download_media_free(Media *i)
-{
- E_Client *ec;
-
- if (!i) return;
- tw_mod->media_list = eina_inlist_remove(tw_mod->media_list, EINA_INLIST_GET(i));
- if (i->client) ecore_con_url_free(i->client);
- if (i->buf) eina_binbuf_free(i->buf);
- if (i->tmpfile) ecore_file_unlink(i->tmpfile);
- EINA_LIST_FREE(i->clients, ec)
- evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_DEL, media_client_del, i);
- eina_stringshare_del(i->tmpfile);
- eina_stringshare_del(i->addr);
- free(i);
-}
-
-static void
-download_media_cleanup(void)
-{
- Media *i;
- Eina_Inlist *l;
-
- if (tw_config->allowed_media_age)
- {
- if (tw_config->allowed_media_size < 0) return;
- if ((size_t)tw_config->allowed_media_size > (tw_mod->media_size / 1024 / 1024)) return;
- }
- if (!tw_mod->media_list) return;
- l = tw_mod->media_list->last;
- while (l)
- {
- i = EINA_INLIST_CONTAINER_GET(l, Media);
- l = l->prev;
- if (!i->buf) continue;
- if (i->video_thread) continue; //ignore currently-threaded media
- /* only free the buffers here where possible to avoid having to deal with multiple list entries */
- if (tw_mod->media_size && (tw_mod->media_size >= eina_binbuf_length_get(i->buf)))
- tw_mod->media_size -= eina_binbuf_length_get(i->buf);
- E_FREE_FUNC(i->buf, eina_binbuf_free);
- if (!tw_config->allowed_media_age)
- /* if caching is disabled, just delete */
- eina_hash_del_by_key(tw_mod->media, i->addr);
- if ((size_t)tw_config->allowed_media_size > (tw_mod->media_size / 1024 / 1024))
- break;
- }
-}
-
-static Teamwork_Link_Type
-link_uri_local_type_get(const char *uri)
-{
- size_t len = strlen(uri);
-
- if (uri[len - 1] == '/') return TEAMWORK_LINK_TYPE_LOCAL_DIRECTORY;
- return TEAMWORK_LINK_TYPE_LOCAL_FILE;
-}
-
-static Teamwork_Link_Type
-link_uri_type_get(const char *uri)
-{
- if (!uri[0]) return TEAMWORK_LINK_TYPE_NONE; //invalid
- if (uri[0] == '/') return link_uri_local_type_get(uri + 1); //probably a file?
- if ((!strncasecmp(uri, "http://", 7)) || (!strncasecmp(uri, "https://", 8))) return TEAMWORK_LINK_TYPE_REMOTE;
- if (!strncmp(uri, "file://", 7)) return link_uri_local_type_get(uri + 7);
- WRN("Unknown link type for '%s'", uri);
- return TEAMWORK_LINK_TYPE_NONE;
-}
-
-EINTERN void
-tw_link_detect(E_Client *ec, const char *uri)
-{
- Media *i;
-
- if (!tw_config->allowed_media_age) return;
-
- if (link_uri_type_get(uri) != TEAMWORK_LINK_TYPE_REMOTE) return;
- i = download_media_add(uri);
- if ((!i->clients) || (!eina_list_data_find(i->clients, ec)))
- {
- i->clients = eina_list_append(i->clients, ec);
- evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_DEL, media_client_del, i);
- }
-}
-
-static void
-link_show_helper(const char *uri, Eina_Bool signal_open)
-{
- Teamwork_Link_Type type;
- Eina_Bool dummy = EINA_TRUE;
-
- if (tw_mod->pop && (!e_util_strcmp(evas_object_data_get(tw_mod->pop, "uri"), uri))) return;
- type = link_uri_type_get(uri);
- switch (type)
- {
- case TEAMWORK_LINK_TYPE_NONE:
- dummy = EINA_FALSE;
- break;
- case TEAMWORK_LINK_TYPE_LOCAL_DIRECTORY:
- if (signal_open) tw_show_local_dir(uri);
- break;
- case TEAMWORK_LINK_TYPE_LOCAL_FILE:
- tw_show_local_file(uri);
- break;
- case TEAMWORK_LINK_TYPE_REMOTE:
- {
- Media *i;
-
- i = eina_hash_find(tw_mod->media, uri);
- if (!i)
- {
- if (tw_dummy_check(uri)) break;
- i = download_media_add(uri);
- if (i)
- {
- if (i->buf)
- {
- tw_show(i);
- dummy = EINA_FALSE;
- }
- else if (i->dummy) break;
- else
- {
- i->show = 1;
- dummy = EINA_FALSE;
- }
- }
- }
- else if (!i->dummy)
- {
- tw_show(i);
- dummy = EINA_FALSE;
- }
- break;
- }
- }
- if (tw_mod->pop) tw_mod->force = signal_open;
- else if (dummy)
- link_failure_show();
-}
-
-EINTERN void
-tw_link_show(E_Client *ec, const char *uri, int x, int y)
-{
- if (evas_key_modifier_is_set(evas_key_modifier_get(e_comp->evas), "Control")) return;
- tw_win = ec;
- last_coords.x = x;
- last_coords.y = y;
- link_show_helper(uri, 0);
- tw_mod->hidden = 0;
-}
-
-EINTERN void
-tw_link_hide(E_Client *ec, const char *uri)
-{
- if (tw_tooltip)
- elm_object_tooltip_hide(e_comp->elm);
- if (ec != tw_win) return;
- if (tw_mod->pop && (!tw_mod->sticky) &&
- ((tw_tmpfile && eina_streq(evas_object_data_get(tw_mod->pop, "uri"), tw_tmpfile)) ||
- eina_streq(evas_object_data_get(tw_mod->pop, "uri"), uri)))
- {
- if (EINA_DBL_NONZERO(tw_config->mouse_out_delay))
- {
- if (tw_hide_timer) ecore_timer_loop_reset(tw_hide_timer);
- else tw_hide_timer = ecore_timer_loop_add(tw_config->mouse_out_delay, tw_hide, NULL);
- }
- else
- tw_hide(NULL);
- tw_mod->force = 0;
- }
- else if (tw_tmpthread || tw_tmpfile)
- tw_hide(NULL);
- tw_mod->hidden = !tw_mod->pop;
-}
-
-EINTERN void
-tw_link_open(E_Client *ec, const char *uri)
-{
- if (ec->focused)
- e_util_open(uri, NULL);
-}
-
-static Eet_Data_Descriptor *
-media_cache_edd_new(void)
-{
- Eet_Data_Descriptor *edd;
- Eet_Data_Descriptor_Class eddc;
- EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Media_Cache);
- edd = eet_data_descriptor_stream_new(&eddc);
-#define ADD(name, type) \
- EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Media_Cache, #name, name, EET_T_##type)
-
- ADD(sha1, INLINED_STRING);
- ADD(timestamp, ULONG_LONG);
- ADD(video, UCHAR);
-#undef ADD
- return edd;
-}
-
-static int
-media_cache_compare(Media_Cache *a, Media_Cache *b)
-{
- long long diff;
- diff = a->timestamp - b->timestamp;
- if (diff < 0) return -1;
- if (!diff) return 0;
- return 1;
-}
-
-static void
-media_cache_add(const char *sha1, unsigned long long timestamp, Eina_Bool video)
-{
- Media_Cache *ic;
- if (!tw_cache_list[0]) return;
- ic = malloc(sizeof(Media_Cache));
- ic->sha1 = eina_stringshare_ref(sha1);
- ic->timestamp = timestamp;
- ic->video = video;
- tw_cache_list[video]->cache = eina_list_sorted_insert(tw_cache_list[video]->cache, (Eina_Compare_Cb)media_cache_compare, ic);
-}
-
-static void
-media_cache_del(const char *sha1, Eina_Bool video)
-{
- Eina_List *l, *l2;
- Media_Cache *ic;
-
- if (!tw_cache_list[0]) return;
- EINA_LIST_FOREACH_SAFE(tw_cache_list[video]->cache, l, l2, ic)
- {
- if (ic->sha1 == sha1) continue;
- tw_cache_list[video]->cache = eina_list_remove_list(tw_cache_list[video]->cache, l);
- return;
- }
-}
-
-static void
-media_cache_update(const char *sha1, unsigned long long timestamp, Eina_Bool video)
-{
- Media_Cache *ic;
- Eina_List *l;
-
- if (!tw_cache_list[video]) return;
- EINA_LIST_FOREACH(tw_cache_list[video]->cache, l, ic)
- {
- if (ic->sha1 != sha1) continue;
- ic->timestamp = timestamp;
- break;
- }
- tw_cache_list[video]->cache = eina_list_sort(tw_cache_list[video]->cache, 0, (Eina_Compare_Cb)media_cache_compare);
-}
-
-static Eina_Bool
-media_cleaner_cb(void *data)
-{
- unsigned long long now;
- Media_Cache_List *mcl = data;
- Media_Cache *ic;
- Eina_List *l, *l2;
- int cleaned = 0;
- if ((!cleaner_edd) || (!cache_edd) || (tw_config->allowed_media_age < 0) || (!mcl) || (!mcl->cache))
- {
- if (mcl)
- media_cleaner[mcl->video] = NULL;
- return EINA_FALSE;
- }
-
- if (tw_config->allowed_media_age)
- {
- now = (unsigned long long)ecore_time_unix_get();
- now -= tw_config->allowed_media_age * 24 * 60 * 60;
- }
- else
- now = ULLONG_MAX;
- EINA_LIST_FOREACH_SAFE(mcl->cache, l, l2, ic)
- {
- /* only clean up to 3 entries at a time to ensure responsiveness */
- if (cleaned >= 3) break;
- if (ic->timestamp >= now)
- {
- /* stop the idler for now to avoid pointless spinning */
- ecore_timer_loop_add(24 * 60 * 60, (void *)tw_idler_start, NULL);
- media_cleaner[mcl->video] = NULL;
- tw_cache_list[mcl->video] = mcl;
- return EINA_FALSE;
- }
- eet_delete(media[mcl->video], ic->sha1);
- mcl->cache = eina_list_remove_list(mcl->cache, l);
- eina_stringshare_del(ic->sha1);
- free(ic);
- cleaned++;
- }
- tw_cache_list[mcl->video] = mcl;
- return EINA_TRUE;
-}
-
-static void
-tw_dummy_add(const char *url)
-{
- if (!dummies) return;
- eet_write(dummies, url, "0", 1, 0);
- DBG("Added new dummy for url %s", url);
-}
-
-static Eina_Bool
-tw_dummy_check(const char *url)
-{
- char **list;
- int lsize;
-
- if (!dummies) return EINA_FALSE;
- list = eet_list(dummies, url, &lsize);
- if (lsize)
- {
- free(list);
- return EINA_TRUE;
- }
- return EINA_FALSE;
-}
-
-static int
-tw_media_add(const char *url, Eina_Binbuf *buf, unsigned long long timestamp, Eina_Bool video)
-{
- const char *sha1;
- int lsize;
- char **list;
-
- if (!media[video]) return -1;
- if (!tw_config->allowed_media_age) return 0; //disk caching disabled
-
- sha1 = sha1_encode(buf);
- DBG("Media: %s - %s", url, sha1);
-
- list = eet_list(media[video], url, &lsize);
- if (lsize)
- {
- /* should never happen; corruption likely */
- eet_delete(media[video], url);
- free(list);
- }
- list = eet_list(media[video], sha1, &lsize);
- if (lsize)
- {
- eet_alias(media[video], url, sha1, 0);
- eet_sync(media[video]);
- DBG("Added new alias for media %s", sha1);
- eina_stringshare_del(sha1);
- free(list);
- return 0;
- }
-
- eet_write(media[video], sha1, eina_binbuf_string_get(buf), eina_binbuf_length_get(buf), 0);
- eet_alias(media[video], url, sha1, 0);
- eet_sync(media[video]);
- media_cache_add(sha1, timestamp, video);
- DBG("Added new media with length %zu: %s", eina_binbuf_length_get(buf), sha1);
- eina_stringshare_del(sha1);
- return 1;
-}
-
-void
-tw_media_del(const char *url, Eina_Bool video)
-{
- const char *alias;
- if (!media[video]) return;
- alias = eet_alias_get(media[video], url);
- eet_delete(media[video], alias);
- media_cache_del(alias, video);
- eina_stringshare_del(alias);
-}
-
-static Eina_Binbuf *
-tw_media_get(const char *url, unsigned long long timestamp, Eina_Bool *video)
-{
- unsigned char *img;
- Eina_Binbuf *buf = NULL;
- const char *alias;
- char **list;
- int size, lsize;
-
- for (*video = 0; *video <= MEDIA_CACHE_TYPE_VIDEO; (*video)++)
- {
- if (!media[*video]) return NULL;
-
- list = eet_list(media[*video], url, &lsize);
- if (!lsize) continue;
- free(list);
-
- img = eet_read(media[*video], url, &size);
- alias = eet_alias_get(media[*video], url);
- buf = eina_binbuf_manage_new(img, size, EINA_FALSE);
- media_cache_update(alias, timestamp, *video);
-
- eina_stringshare_del(alias);
- return buf;
- }
- *video = 0;
- return NULL;
-}
-
-static void
-tw_media_ping(const char *url, unsigned long long timestamp, Eina_Bool video)
-{
- const char *alias;
-
- if (!media[video]) return;
-
- alias = eet_alias_get(media[video], url);
- media_cache_update(alias, timestamp, video);
-
- eina_stringshare_del(alias);
-}
-
-static Eina_Bool
-tw_idler_start(void)
-{
- if (!media[0]) return EINA_FALSE;
- media_cleaner[0] = ecore_idler_add((Ecore_Task_Cb)media_cleaner_cb, tw_cache_list[0]);
- media_cleaner[1] = ecore_idler_add((Ecore_Task_Cb)media_cleaner_cb, tw_cache_list[1]);
- return EINA_FALSE;
-}
-
-static void
-tw_popup_del(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- eina_stringshare_del(evas_object_data_get(obj, "uri"));
-}
-
-EINTERN void
-tw_popup_opacity_set(void)
-{
- int c = lround((double)255 * (tw_config->popup_opacity / 100.));
- if (tw_mod->pop)
- evas_object_color_set(tw_mod->pop, c, c, c, c);
-}
-
-static void
-tw_show_helper(Evas_Object *o, int w, int h)
-{
- int px, py, pw, ph;
- double ratio = tw_config->popup_size / 100.;
- E_Zone *zone = e_zone_current_get();
-
- evas_object_hide(tw_mod->pop);
- evas_object_del(tw_mod->pop);
- tw_mod->sticky = 0;
- tw_mod->pop = e_comp_object_util_add(o, E_COMP_OBJECT_TYPE_POPUP);
- evas_object_pass_events_set(tw_mod->pop, 1);
- pw = MIN(w, (ratio * (double)zone->w));
- pw = MIN(pw, zone->w);
- if (pw == w) ph = h;
- else
- ph = lround((double)(pw * h) / ((double)w));
- if (ph > zone->h)
- {
- ph = zone->h;
- pw = lround((double)(ph * w) / ((double)h));
- }
- e_livethumb_vsize_set(o, pw, ph);
- evas_object_layer_set(tw_mod->pop, E_LAYER_POPUP);
- evas_object_resize(tw_mod->pop, pw, ph);
-
- if ((!tw_win) && (last_coords.x == last_coords.y) && (last_coords.x == -1))
- {
- px = lround(ratio * (double)zone->w) - (pw / 2);
- py = lround(ratio * (double)zone->h) - (ph / 2);
- if (px + pw > zone->w)
- px = zone->w - pw;
- if (py + ph > zone->h)
- py = zone->h - ph;
- evas_object_move(tw_mod->pop, px, py);
- }
- else if (tw_win)
- {
- int x, y;
-
- x = tw_win->client.x + last_coords.x;
- y = tw_win->client.y + last_coords.y;
- /* prefer tooltip left of last_coords */
- px = x - pw - 3;
- /* if it's offscreen, try right of last_coords */
- if (px < 0) px = x + 3;
- /* fuck this, stick it right on the last_coords */
- if (px + pw + 3 > zone->w)
- px = (x / 2) - (pw / 2);
- /* give up */
- if (px < 0) px = 0;
-
- /* prefer tooltip above last_coords */
- py = y - ph - 3;
- /* if it's offscreen, try below last_coords */
- if (py < 0) py = y + 3;
- /* fuck this, stick it right on the last_coords */
- if (py + ph + 3 > zone->h)
- py = (y / 2) - (ph / 2);
- /* give up */
- if (py < 0) py = 0;
- evas_object_move(tw_mod->pop, px, py);
- }
- else
- {
- e_comp_object_util_center_on(tw_mod->pop, zone->bg_clip_object);
- }
- evas_object_show(tw_mod->pop);
- tw_popup_opacity_set();
- evas_object_event_callback_add(tw_mod->pop, EVAS_CALLBACK_DEL, tw_popup_del, NULL);
-}
-
-static Eina_Bool
-stupid_obj_del_workaround_hack(void *data)
-{
- evas_object_del(data);
- return EINA_FALSE;
-}
-
-static void
-tw_video_closed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- evas_object_hide(obj);
- evas_object_hide(data);
- emotion_object_play_set(obj, EINA_FALSE);
- ecore_timer_loop_add(3.0, stupid_obj_del_workaround_hack, data);
- if (!tw_tmpfile) return;
- eina_stringshare_replace(&tw_tmpfile, NULL);
-}
-
-static void
-tw_video_opened_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- int iw, ih, w, h;
- double ratio = tw_config->popup_size / 100.;
- E_Zone *zone;
-
- evas_object_smart_callback_del_full(obj, "frame_decode", tw_video_opened_cb, data);
- if (tw_mod->hidden && (!tw_mod->sticky) && (!tw_mod->force))
- {
- tw_video_closed_cb(data, obj, NULL);
- return;
- }
- emotion_object_size_get(obj, &iw, &ih);
- if ((iw <= 0) || (ih <= 0))
- {
- tw_video_closed_cb(data, obj, NULL);
- return;
- }
-
- zone = e_zone_current_get();
- w = MIN(zone->w, (ratio * (double)zone->w));
- ratio = emotion_object_ratio_get(obj);
- if (ratio > 0.0) iw = (ih * ratio) + 0.5;
- if (iw < 1) iw = 1;
-
- h = (w * ih) / iw;
- e_livethumb_thumb_set(data, obj);
- tw_show_helper(data, w, h);
- evas_object_data_set(tw_mod->pop, "uri", eina_stringshare_add(emotion_object_file_get(obj)));
-}
-
-static void
-tw_video_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- if (emotion_object_file_get(obj) != tw_tmpfile) return;
- if (!tw_tmpfile) return;
- eina_stringshare_replace(&tw_tmpfile, NULL);
-}
-
-static void
-tw_show_video(Evas_Object *prev, const char *uri)
-{
- Evas_Object *o;
-
- o = emotion_object_add(e_livethumb_evas_get(prev));
- emotion_object_init(o, "gstreamer1");
- emotion_object_file_set(o, uri);
- emotion_object_play_set(o, EINA_TRUE);
- evas_object_smart_callback_add(o, "frame_decode", tw_video_opened_cb, prev);
- evas_object_smart_callback_add(o, "decode_stop", tw_video_closed_cb, prev);
- evas_object_resize(o, 1, 1);
- if (uri == tw_tmpfile)
- evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, tw_video_del_cb, NULL);
-}
-
-static void
-tw_video_thread_cancel_cb(void *data, Ecore_Thread *eth)
-{
- Media *i;
-
- if (ecore_thread_local_data_find(eth, "dead")) return;
- i = data;
- tw_tmpthread = i->video_thread = NULL;
- tw_tmpthread_media = NULL;
- close(tw_tmpfd);
- tw_tmpfd = -1;
- download_media_cleanup();
-}
-
-static void
-tw_video_thread_done_cb(void *data, Ecore_Thread *eth)
-{
- Media *i;
- Evas_Object *prev;
-
- if (ecore_thread_local_data_find(eth, "dead")) return;
- i = data;
- tw_tmpthread = i->video_thread = NULL;
- tw_tmpthread_media = NULL;
- close(tw_tmpfd);
- tw_tmpfd = -1;
- i->tmpfile = eina_stringshare_ref(tw_tmpfile);
- prev = e_livethumb_add(e_comp->evas);
- tw_show_video(prev, tw_tmpfile);
- download_media_cleanup();
-}
-
-static void
-tw_video_thread_cb(void *data, Ecore_Thread *eth)
-{
- int fd;
- Media *i;
- const void *buf;
- size_t pos = 0, tot;
-
- if (ecore_thread_local_data_find(eth, "dead")) return;
- i = data;
- fd = (intptr_t)ecore_thread_global_data_find("teamwork_media_file");
-
- if (ftruncate(fd, 0))
- {
- ERR("TRUNCATE FAILED: %s", strerror(errno));
- ecore_thread_cancel(eth);
- return; //fail if file can't be zeroed
- }
- tot = eina_binbuf_length_get(i->buf);
- buf = eina_binbuf_string_get(i->buf);
- while (pos < tot)
- {
- unsigned int num = 4096;
-
- if (pos + num >= tot)
- num = tot - pos;
- if (write(fd, (char*)buf + pos, num) < 0)
- {
- ERR("WRITE FAILED: %s", strerror(errno));
- ecore_thread_cancel(eth);
- return;
- }
- pos += num;
- if (ecore_thread_local_data_find(eth, "dead")) break;
- }
-}
-
-static void
-tw_show(Media *i)
-{
- Evas_Object *o, *ic, *prev;
- int w, h;
-
- if (!i->buf) i->buf = tw_media_get(i->addr, ecore_time_unix_get(), &i->video);
- if (!i->buf)
- {
- download_media_add(i->addr);
- return;
- }
- if (i->video)
- {
- char buf[PATH_MAX];
- Eina_Tmpstr *tmpfile;
-
- if (tw_config->disable_video) return;
- while (i->tmpfile)
- {
- if (!ecore_file_exists(i->tmpfile))
- {
- eina_stringshare_replace(&i->tmpfile, NULL);
- break;
- }
- if (tw_tmpthread)
- {
- ecore_thread_local_data_add(tw_tmpthread, "dead", (void*)1, NULL, 0);
- E_FREE_FUNC(tw_tmpthread, ecore_thread_cancel);
- tw_tmpthread_media->video_thread = NULL;
- }
- if (tw_tmpfd != -1)
- {
- close(tw_tmpfd);
- tw_tmpfd = -1;
- }
- eina_stringshare_del(tw_tmpfile);
- tw_tmpfile = eina_stringshare_ref(i->tmpfile);
- prev = e_livethumb_add(e_comp->evas);
- tw_show_video(prev, tw_tmpfile);
- return;
- }
- snprintf(buf, sizeof(buf), "teamwork-%s-XXXXXX", ecore_file_file_get(i->addr));
- if (tw_tmpfile)
- {
- if (tw_tmpthread)
- {
- ecore_thread_local_data_add(tw_tmpthread, "dead", (void*)1, NULL, 0);
- E_FREE_FUNC(tw_tmpthread, ecore_thread_cancel);
- tw_tmpthread_media->video_thread = NULL;
- }
- close(tw_tmpfd);
- }
- tw_tmpfd = eina_file_mkstemp(buf, &tmpfile);
- eina_stringshare_replace(&tw_tmpfile, tmpfile);
- if (tw_tmpfd < 0)
- {
- ERR("ERROR: %s", strerror(errno));
- download_media_cleanup();
- eina_stringshare_replace(&tw_tmpfile, NULL);
- tw_tmpthread_media = NULL;
- eina_tmpstr_del(tmpfile);
- return;
- }
- tw_tmpthread_media = i;
- ecore_thread_global_data_add("teamwork_media_file", (intptr_t*)(long)tw_tmpfd, NULL, 0);
- i->video_thread = tw_tmpthread = ecore_thread_run(tw_video_thread_cb, tw_video_thread_done_cb, tw_video_thread_cancel_cb, i);
- return;
- }
- else
- {
- prev = e_livethumb_add(e_comp->evas);
- o = evas_object_image_filled_add(e_livethumb_evas_get(prev));
- evas_object_image_memfile_set(o, (void*)eina_binbuf_string_get(i->buf), eina_binbuf_length_get(i->buf), NULL, NULL);
- evas_object_image_size_get(o, &w, &h);
- ic = e_icon_add(e_livethumb_evas_get(prev));
- e_icon_image_object_set(ic, o);
- }
- e_livethumb_thumb_set(prev, ic);
- tw_show_helper(prev, w, h);
- evas_object_data_set(tw_mod->pop, "uri", eina_stringshare_ref(i->addr));
-}
-
-static void
-tw_show_local_dir(const char *uri)
-{
- E_Action *act;
-
- act = e_action_find("fileman");
- if (act) act->func.go(NULL, uri);
-}
-
-static void
-tw_show_local_file(const char *uri)
-{
- Evas_Object *o, *prev;
- int w, h;
- Eina_Bool video = EINA_FALSE;
-
- video = emotion_object_extension_may_play_get(uri);
- if (video)
- {
- if (tw_config->disable_video) return;
- }
- else
- {
- if (!evas_object_image_extension_can_load_get(uri)) return;
- }
- prev = e_livethumb_add(e_comp->evas);
- if (video)
- {
- tw_show_video(prev, uri);
- return;
- }
- else
- {
- o = e_icon_add(e_livethumb_evas_get(prev));
- e_icon_file_set(o, uri);
- e_icon_preload_set(o, 1);
- e_icon_size_get(o, &w, &h);
- }
- e_livethumb_thumb_set(prev, o);
- tw_show_helper(prev, w, h);
- evas_object_data_set(tw_mod->pop, "uri", eina_stringshare_add(uri));
-}
-
-static void
-tw_handler_hide(void)
-{
- if (tw_mod->force || tw_mod->sticky) return;
- if (EINA_DBL_NONZERO(tw_config->mouse_out_delay))
- {
- if (tw_hide_timer) ecore_timer_loop_reset(tw_hide_timer);
- else tw_hide_timer = ecore_timer_loop_add(tw_config->mouse_out_delay, tw_hide, NULL);
- }
- else
- tw_hide(NULL);
- tw_mod->force = 0;
-}
-
-static Eina_Bool
-button_press(void *data EINA_UNUSED, int type EINA_UNUSED, void *ev EINA_UNUSED)
-{
- if (tw_mod->pop) tw_handler_hide();
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-desk_show(void *data EINA_UNUSED, int type EINA_UNUSED, E_Event_Desk_Show *ev EINA_UNUSED)
-{
- if (tw_mod->pop) tw_handler_hide();
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-focus_out(void *data EINA_UNUSED, int type EINA_UNUSED, E_Event_Client *ev EINA_UNUSED)
-{
- if (e_config->focus_policy == E_FOCUS_CLICK) return ECORE_CALLBACK_RENEW;
- if (tw_mod->pop) tw_handler_hide();
- return ECORE_CALLBACK_RENEW;
-}
-
-EINTERN Eina_Bool
-tw_hide(void *d EINA_UNUSED)
-{
- if (tw_tmpthread)
- {
- ecore_thread_local_data_add(tw_tmpthread, "dead", (void*)1, NULL, 0);
- E_FREE_FUNC(tw_tmpthread, ecore_thread_cancel);
- tw_tmpthread_media->video_thread = NULL;
- }
- if (tw_tmpfd != -1)
- {
- close(tw_tmpfd);
- tw_tmpfd = -1;
- }
- eina_stringshare_replace(&tw_tmpfile, NULL);
- tw_win = NULL;
- evas_object_hide(tw_mod->pop);
- E_FREE_FUNC(tw_mod->pop, evas_object_del);
- last_coords.x = last_coords.y = 0;
- E_FREE_FUNC(tw_hide_timer, ecore_timer_del);
- download_media_cleanup();
- return EINA_FALSE;
-}
-
-EINTERN int
-e_tw_init(void)
-{
- char buf[PATH_MAX];
- Eet_Data_Descriptor_Class eddc;
-
-#ifdef HAVE_WAYLAND
- if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
- wl_tw_init();
-#endif
-#ifndef HAVE_WAYLAND_ONLY
- if (e_comp_util_has_x())
- x11_tw_init();
-#endif
-
- e_user_dir_concat_static(buf, "images/tw_cache_images.eet");
- media[MEDIA_CACHE_TYPE_IMAGE] = eet_open(buf, EET_FILE_MODE_READ_WRITE);
- if (!media[MEDIA_CACHE_TYPE_IMAGE])
- {
- ERR("Could not open image cache file!");
- return 0;
- }
-
- e_user_dir_concat_static(buf, "images/tw_cache_video.eet");
- media[MEDIA_CACHE_TYPE_VIDEO] = eet_open(buf, EET_FILE_MODE_READ_WRITE);
- if (!media[MEDIA_CACHE_TYPE_VIDEO])
- {
- ERR("Could not open video cache file!");
- E_FREE_FUNC(media[MEDIA_CACHE_TYPE_IMAGE], eet_close);
- return 0;
- }
-
- cache_edd = media_cache_edd_new();
- EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Media_Cache_List);
- cleaner_edd = eet_data_descriptor_file_new(&eddc);
- EET_DATA_DESCRIPTOR_ADD_LIST(cleaner_edd, Media_Cache_List, "cache", cache, cache_edd);
- EET_DATA_DESCRIPTOR_ADD_BASIC(cleaner_edd, Media_Cache_List, "video", video, EET_T_UCHAR);
- tw_cache_list[MEDIA_CACHE_TYPE_IMAGE] = eet_data_read(media[MEDIA_CACHE_TYPE_IMAGE], cleaner_edd, "media_cache");
- if (!tw_cache_list[MEDIA_CACHE_TYPE_IMAGE])
- tw_cache_list[MEDIA_CACHE_TYPE_IMAGE] = E_NEW(Media_Cache_List, 1);
- tw_cache_list[MEDIA_CACHE_TYPE_VIDEO] = eet_data_read(media[MEDIA_CACHE_TYPE_VIDEO], cleaner_edd, "media_cache");
- if (!tw_cache_list[MEDIA_CACHE_TYPE_VIDEO])
- {
- tw_cache_list[MEDIA_CACHE_TYPE_VIDEO] = E_NEW(Media_Cache_List, 1);
- tw_cache_list[MEDIA_CACHE_TYPE_VIDEO]->video = 1;
- }
-
- e_user_dir_concat_static(buf, "images/dummies.eet");
- dummies = eet_open(buf, EET_FILE_MODE_READ_WRITE);
-
- E_LIST_HANDLER_APPEND(handlers, ECORE_CON_EVENT_URL_COMPLETE, download_media_complete, tw_mod);
- E_LIST_HANDLER_APPEND(handlers, ECORE_CON_EVENT_URL_PROGRESS, download_media_status, tw_mod);
- E_LIST_HANDLER_APPEND(handlers, ECORE_CON_EVENT_URL_DATA, download_media_data, tw_mod);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_FOCUS_OUT, focus_out, tw_mod);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_DESK_SHOW, desk_show, tw_mod);
- E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_MOUSE_BUTTON_DOWN, button_press, tw_mod);
- E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_MOUSE_BUTTON_UP, button_press, tw_mod);
-
- tw_mod->media = eina_hash_string_superfast_new((Eina_Free_Cb)download_media_free);
- return 1;
-}
-
-EINTERN void
-e_tw_shutdown(void)
-{
- unsigned int x;
-
-#ifdef HAVE_WAYLAND
- if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
- wl_tw_shutdown();
-#endif
-#ifndef HAVE_WAYLAND_ONLY
- if (e_comp_util_has_x())
- x11_tw_shutdown();
-#endif
- E_FREE_LIST(handlers, ecore_event_handler_del);
- for (x = 0; x <= MEDIA_CACHE_TYPE_VIDEO; x++)
- {
- if (media[x])
- {
- if (tw_cache_list[x])
- {
- Media_Cache *ic;
- eet_data_write(media[x], cleaner_edd, "media_cache", tw_cache_list[x], 1);
- EINA_LIST_FREE(tw_cache_list[x]->cache, ic)
- {
- eina_stringshare_del(ic->sha1);
- free(ic);
- }
- free(tw_cache_list[x]);
- }
- E_FREE_FUNC(media[x], eet_close);
- }
- }
- E_FREE_FUNC(dummies, eet_close);
- E_FREE_FUNC(cleaner_edd, eet_data_descriptor_free);
- E_FREE_FUNC(cache_edd, eet_data_descriptor_free);
- if (tw_tmpfd != -1)
- {
- close(tw_tmpfd);
- tw_tmpfd = -1;
- }
- eina_stringshare_replace(&tw_tmpfile, NULL);
- E_FREE_FUNC(tw_tmpthread, ecore_thread_cancel);
- tw_tmpthread_media = NULL;
- tw_hide(NULL);
- last_coords.x = last_coords.y = 0;
- eina_hash_free(tw_mod->media);
- evas_object_hide(tw_mod->pop);
- E_FREE_FUNC(tw_mod->pop, evas_object_del);
-}
-
-EINTERN void
-tw_uri_show(const char *uri)
-{
- link_show_helper(uri, 1);
-}
diff --git a/src/modules/teamwork/meson.build b/src/modules/teamwork/meson.build
deleted file mode 100644
index 111ec42425..0000000000
--- a/src/modules/teamwork/meson.build
+++ /dev/null
@@ -1,17 +0,0 @@
-deps = [dependency('emile')]
-
-src = files(
- 'e_mod_main.c',
- 'e_mod_config.c',
- 'e_mod_tw.c',
- 'wl.c',
- 'x11.c',
- 'e_mod_main.h'
- )
-
-if config_h.has('HAVE_WAYLAND') == true
- src += files(
- 'wl_teamwork.c',
- 'wl_teamwork.h'
- )
-endif
diff --git a/src/modules/teamwork/module.desktop b/src/modules/teamwork/module.desktop
deleted file mode 100644
index 3c69d1df00..0000000000
--- a/src/modules/teamwork/module.desktop
+++ /dev/null
@@ -1,24 +0,0 @@
-[Desktop Entry]
-Type=Link
-Name=Teamwork
-Name[ca]=Treball en equip
-Name[fi]=Tiimityö
-Name[gl]=Traballo en equipo
-Name[ms]=Teamwork
-Name[pl]=Praca zespołowa
-Name[ru]=Командная работа
-Name[sr]=Тимски рад
-Name[tr]=Takı Çalışması
-Comment=Enlightenment Is A Team Player
-Comment[ca]=Enlightenment és un jugador d'equip
-Comment[de]=Enlightenment ist ein Mannschaftsspieler
-Comment[eo]=Enlightenment estas skipa ludanto
-Comment[fi]=Enlightenment on tiimipelaaja
-Comment[fr]=Enlightenment joue en équipe
-Comment[it]=Enlightenment è giocatore in un team
-Comment[ms]=Enlightenment Adalah Pemain Pasukan
-Comment[ru]=Enlightenment — командный игрок
-Comment[sr]=Просвећење је тимски играч
-Comment[tr]=Enlightenment bir takım oyunu
-Icon=e-module-teamwork
-X-Enlightenment-ModuleType=core
diff --git a/src/modules/teamwork/wl.c b/src/modules/teamwork/wl.c
deleted file mode 100644
index b6ffa2598c..0000000000
--- a/src/modules/teamwork/wl.c
+++ /dev/null
@@ -1,138 +0,0 @@
-#define E_COMP_WL
-#include "e_mod_main.h"
-#ifdef HAVE_WAYLAND
-#include "wl_teamwork.h"
-
-static struct wl_resource *tw_resource;
-static struct wl_global *tw_global;
-
-static void
-tw_preload_uri(struct wl_client *client EINA_UNUSED, struct wl_resource *resource EINA_UNUSED,
- struct wl_resource *surface, const char *uri)
-{
- E_Client *ec;
-
- ec = wl_resource_get_user_data(surface);
- if (ec)
- tw_link_detect(ec, uri);
-}
-
-static void
-tw_activate_uri(struct wl_client *client EINA_UNUSED, struct wl_resource *resource EINA_UNUSED,
- struct wl_resource *surface, const char *uri, wl_fixed_t x, wl_fixed_t y)
-{
- E_Client *ec;
-
- ec = wl_resource_get_user_data(surface);
- if (ec)
- tw_link_show(ec, uri, wl_fixed_to_int(x), wl_fixed_to_int(y));
-}
-
-static void
-tw_deactivate_uri(struct wl_client *client EINA_UNUSED, struct wl_resource *resource EINA_UNUSED,
- struct wl_resource *surface, const char *uri)
-{
- E_Client *ec;
-
- ec = wl_resource_get_user_data(surface);
- if (ec)
- tw_link_hide(ec, uri);
-}
-
-static void
-tw_open_uri(struct wl_client *client EINA_UNUSED, struct wl_resource *resource EINA_UNUSED,
- struct wl_resource *surface, const char *uri)
-{
- E_Client *ec;
-
- ec = wl_resource_get_user_data(surface);
- if (ec)
- tw_link_open(ec, uri);
-}
-
-static const struct zwp_teamwork_interface tw_interface =
-{
- tw_preload_uri,
- tw_activate_uri,
- tw_deactivate_uri,
- tw_open_uri,
-};
-
-static void
-wl_tw_cb_unbind(struct wl_resource *resource EINA_UNUSED)
-{
- tw_resource = NULL;
-}
-
-static void
-wl_tw_cb_bind(struct wl_client *client, void *data EINA_UNUSED, uint32_t version EINA_UNUSED, uint32_t id)
-{
- struct wl_resource *res;
-
- if (!(res = wl_resource_create(client, &zwp_teamwork_interface, E_TW_VERSION, id)))
- {
- ERR("Could not create zwp_teamwork_interface interface");
- wl_client_post_no_memory(client);
- return;
- }
-
- tw_resource = res;
- wl_resource_set_implementation(res, &tw_interface, NULL, wl_tw_cb_unbind);
-}
-
-static void
-wl_tw_link_complete(E_Client *ec, const char *uri)
-{
- if (e_object_is_del(E_OBJECT(ec))) return;
- zwp_teamwork_send_completed_uri(tw_resource, ec->comp_data->surface, uri, 1);
-}
-
-static void
-wl_tw_link_invalid(E_Client *ec, const char *uri)
-{
- if (e_object_is_del(E_OBJECT(ec))) return;
- zwp_teamwork_send_completed_uri(tw_resource, ec->comp_data->surface, uri, 0);
-}
-
-static void
-wl_tw_link_progress(E_Client *ec, const char *uri, uint32_t pct)
-{
- if (e_object_is_del(E_OBJECT(ec))) return;
- zwp_teamwork_send_fetch_info(tw_resource, ec->comp_data->surface, uri, pct);
-}
-
-static void
-wl_tw_link_downloading(E_Client *ec, const char *uri)
-{
- if (e_object_is_del(E_OBJECT(ec))) return;
- zwp_teamwork_send_fetching_uri(tw_resource, ec->comp_data->surface, uri);
-}
-
-EINTERN Eina_Bool
-wl_tw_init(void)
-{
- tw_global = wl_global_create(e_comp_wl->wl.disp, &zwp_teamwork_interface, E_TW_VERSION,
- NULL, wl_tw_cb_bind);
- if (!tw_global)
- {
- ERR("Could not add zwp_teamwork to wayland globals");
- return EINA_FALSE;
- }
- tw_signal_link_complete[E_PIXMAP_TYPE_WL] = wl_tw_link_complete;
- tw_signal_link_invalid[E_PIXMAP_TYPE_WL] = wl_tw_link_invalid;
- tw_signal_link_progress[E_PIXMAP_TYPE_WL] = wl_tw_link_progress;
- tw_signal_link_downloading[E_PIXMAP_TYPE_WL] = wl_tw_link_downloading;
- return EINA_TRUE;
-}
-
-EINTERN void
-wl_tw_shutdown(void)
-{
- E_FREE_FUNC(tw_resource, wl_resource_destroy);
- E_FREE_FUNC(tw_global, wl_global_destroy);
- tw_signal_link_complete[E_PIXMAP_TYPE_WL] = NULL;
- tw_signal_link_invalid[E_PIXMAP_TYPE_WL] = NULL;
- tw_signal_link_progress[E_PIXMAP_TYPE_WL] = NULL;
- tw_signal_link_downloading[E_PIXMAP_TYPE_WL] = NULL;
-}
-#endif
diff --git a/src/modules/teamwork/wl_teamwork.c b/src/modules/teamwork/wl_teamwork.c
deleted file mode 100644
index baca23d3b0..0000000000
--- a/src/modules/teamwork/wl_teamwork.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <stdlib.h>
-#include <stdint.h>
-#include "wayland-util.h"
-
-extern const struct wl_interface wl_surface_interface;
-
-static const struct wl_interface *types[] = {
- &wl_surface_interface,
- NULL,
- &wl_surface_interface,
- NULL,
- NULL,
- NULL,
- &wl_surface_interface,
- NULL,
- &wl_surface_interface,
- NULL,
- &wl_surface_interface,
- NULL,
- &wl_surface_interface,
- NULL,
- NULL,
- &wl_surface_interface,
- NULL,
- NULL,
-};
-
-static const struct wl_message zwp_teamwork_requests[] = {
- { "preload_uri", "os", types + 0 },
- { "activate_uri", "osff", types + 2 },
- { "deactivate_uri", "os", types + 6 },
- { "open_uri", "os", types + 8 },
-};
-
-static const struct wl_message zwp_teamwork_events[] = {
- { "fetching_uri", "os", types + 10 },
- { "completed_uri", "osi", types + 12 },
- { "fetch_info", "osu", types + 15 },
-};
-
-WL_EXPORT const struct wl_interface zwp_teamwork_interface = {
- "zwp_teamwork", 2,
- 4, zwp_teamwork_requests,
- 3, zwp_teamwork_events,
-};
-
diff --git a/src/modules/teamwork/wl_teamwork.h b/src/modules/teamwork/wl_teamwork.h
deleted file mode 100644
index f6a11d1a43..0000000000
--- a/src/modules/teamwork/wl_teamwork.h
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef TEAMWORK_SERVER_PROTOCOL_H
-#define TEAMWORK_SERVER_PROTOCOL_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-#include <stddef.h>
-#include "wayland-server.h"
-
-struct wl_client;
-struct wl_resource;
-
-struct wl_surface;
-struct zwp_teamwork;
-
-extern const struct wl_interface zwp_teamwork_interface;
-
-struct zwp_teamwork_interface {
- /**
- * preload_uri - (none)
- * @surface: (none)
- * @uri: (none)
- */
- void (*preload_uri)(struct wl_client *client,
- struct wl_resource *resource,
- struct wl_resource *surface,
- const char *uri);
- /**
- * activate_uri - (none)
- * @surface: (none)
- * @uri: (none)
- * @x: surface local coords
- * @y: surface local coords
- */
- void (*activate_uri)(struct wl_client *client,
- struct wl_resource *resource,
- struct wl_resource *surface,
- const char *uri,
- wl_fixed_t x,
- wl_fixed_t y);
- /**
- * deactivate_uri - (none)
- * @surface: (none)
- * @uri: (none)
- */
- void (*deactivate_uri)(struct wl_client *client,
- struct wl_resource *resource,
- struct wl_resource *surface,
- const char *uri);
- /**
- * open_uri - (none)
- * @surface: (none)
- * @uri: (none)
- */
- void (*open_uri)(struct wl_client *client,
- struct wl_resource *resource,
- struct wl_resource *surface,
- const char *uri);
-};
-
-#define ZWP_TEAMWORK_FETCHING_URI 0
-#define ZWP_TEAMWORK_COMPLETED_URI 1
-#define ZWP_TEAMWORK_FETCH_INFO 2
-
-#define ZWP_TEAMWORK_FETCHING_URI_SINCE_VERSION 1
-#define ZWP_TEAMWORK_COMPLETED_URI_SINCE_VERSION 1
-#define ZWP_TEAMWORK_FETCH_INFO_SINCE_VERSION 1
-
-static inline void
-zwp_teamwork_send_fetching_uri(struct wl_resource *resource_, struct wl_resource *surface, const char *uri)
-{
- wl_resource_post_event(resource_, ZWP_TEAMWORK_FETCHING_URI, surface, uri);
-}
-
-static inline void
-zwp_teamwork_send_completed_uri(struct wl_resource *resource_, struct wl_resource *surface, const char *uri, int32_t valid)
-{
- wl_resource_post_event(resource_, ZWP_TEAMWORK_COMPLETED_URI, surface, uri, valid);
-}
-
-static inline void
-zwp_teamwork_send_fetch_info(struct wl_resource *resource_, struct wl_resource *surface, const char *uri, uint32_t progress)
-{
- wl_resource_post_event(resource_, ZWP_TEAMWORK_FETCH_INFO, surface, uri, progress);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/src/modules/teamwork/x11.c b/src/modules/teamwork/x11.c
deleted file mode 100644
index e80e2f8ccc..0000000000
--- a/src/modules/teamwork/x11.c
+++ /dev/null
@@ -1,143 +0,0 @@
-#define E_COMP_X
-#include "e_mod_main.h"
-
-#ifndef HAVE_WAYLAND_ONLY
-enum
-{
- TEAMWORK_PRELOAD,
- TEAMWORK_ACTIVATE,
- TEAMWORK_DEACTIVATE,
- TEAMWORK_OPEN,
- TEAMWORK_NOPE,
-};
-
-enum
-{
- TEAMWORK_COMPLETED,
- TEAMWORK_PROGRESS,
- TEAMWORK_STARTED,
-};
-
-static Ecore_Event_Handler *handler;
-static Ecore_X_Atom atoms[4];
-static Ecore_X_Atom server_atoms[3];
-static Ecore_X_Atom prop;
-
-static Eina_Bool
-x11_message_handler(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_X_Event_Client_Message *ev)
-{
- E_Client *ec;
- int i;
- char *uri;
-
- ec = e_pixmap_find_client(E_PIXMAP_TYPE_X, ev->win);
- if (!ec) return ECORE_CALLBACK_RENEW;
- for (i = 0; i < TEAMWORK_NOPE; i++)
- if (ev->message_type == atoms[i]) break;
- if (i == TEAMWORK_NOPE) return ECORE_CALLBACK_RENEW;
-
- uri = ecore_x_window_prop_string_get(ev->win, prop);
- if (!uri) return ECORE_CALLBACK_RENEW;
- if (ev->message_type == atoms[TEAMWORK_PRELOAD])
- /*
- format = 32
- data.l[0] = version
- */
- tw_link_detect(ec, uri);
- else if (ev->message_type == atoms[TEAMWORK_ACTIVATE])
- /*
- format = 32
- data.l[0] = version
- data.l[1] = window_x
- data.l[2] = window_y
- */
- tw_link_show(ec, uri, ev->data.l[1], ev->data.l[2]);
- else if (ev->message_type == atoms[TEAMWORK_DEACTIVATE])
- /*
- format = 32
- data.l[0] = version
- */
- tw_link_hide(ec, uri);
- else if (ev->message_type == atoms[TEAMWORK_OPEN])
- /*
- format = 32
- data.l[0] = version
- */
- tw_link_open(ec, uri);
- free(uri);
- return ECORE_CALLBACK_RENEW;
-}
-
-static void
-x11_tw_link_complete(E_Client *ec, const char *uri EINA_UNUSED)
-{
- if (e_object_is_del(E_OBJECT(ec))) return;
- ecore_x_client_message32_send(e_client_util_win_get(ec), server_atoms[TEAMWORK_COMPLETED],
- ECORE_X_EVENT_MASK_WINDOW_MANAGE | ECORE_X_EVENT_MASK_WINDOW_CHILD_CONFIGURE, E_TW_VERSION, 1, 0, 0, 0);
-}
-
-static void
-x11_tw_link_invalid(E_Client *ec, const char *uri EINA_UNUSED)
-{
- if (e_object_is_del(E_OBJECT(ec))) return;
- ecore_x_client_message32_send(e_client_util_win_get(ec), server_atoms[TEAMWORK_COMPLETED],
- ECORE_X_EVENT_MASK_WINDOW_MANAGE | ECORE_X_EVENT_MASK_WINDOW_CHILD_CONFIGURE, E_TW_VERSION, 0, 0, 0, 0);
-}
-
-static void
-x11_tw_link_progress(E_Client *ec, const char *uri EINA_UNUSED, uint32_t pct)
-{
- if (e_object_is_del(E_OBJECT(ec))) return;
- ecore_x_client_message32_send(e_client_util_win_get(ec), server_atoms[TEAMWORK_PROGRESS],
- ECORE_X_EVENT_MASK_WINDOW_MANAGE | ECORE_X_EVENT_MASK_WINDOW_CHILD_CONFIGURE, E_TW_VERSION, pct, 0, 0, 0);
-}
-
-static void
-x11_tw_link_downloading(E_Client *ec, const char *uri EINA_UNUSED)
-{
- if (e_object_is_del(E_OBJECT(ec))) return;
- ecore_x_client_message32_send(e_client_util_win_get(ec), server_atoms[TEAMWORK_STARTED],
- ECORE_X_EVENT_MASK_WINDOW_MANAGE | ECORE_X_EVENT_MASK_WINDOW_CHILD_CONFIGURE, E_TW_VERSION, 0, 0, 0, 0);
-}
-
-EINTERN Eina_Bool
-x11_tw_init(void)
-{
- const char *atom_names[] =
- {
- "_TEAMWORK_PRELOAD",
- "_TEAMWORK_ACTIVATE",
- "_TEAMWORK_DEACTIVATE",
- "_TEAMWORK_OPEN",
- "_TEAMWORK_COMPLETED",
- "_TEAMWORK_PROGRESS",
- "_TEAMWORK_STARTED",
- "_TEAMWORK_PROP",
- };
- Ecore_X_Atom at[EINA_C_ARRAY_LENGTH(atom_names)];
- int i;
-
- ecore_x_atoms_get(atom_names, EINA_C_ARRAY_LENGTH(atom_names), at);
- for (i = 0; i < 4; i++)
- atoms[i] = at[i];
- for (i = 4; i < 7; i++)
- server_atoms[i - 4] = at[i];
- prop = at[7];
- handler = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, (Ecore_Event_Handler_Cb)x11_message_handler, NULL);
- tw_signal_link_complete[E_PIXMAP_TYPE_X] = x11_tw_link_complete;
- tw_signal_link_invalid[E_PIXMAP_TYPE_X] = x11_tw_link_invalid;
- tw_signal_link_progress[E_PIXMAP_TYPE_X] = x11_tw_link_progress;
- tw_signal_link_downloading[E_PIXMAP_TYPE_X] = x11_tw_link_downloading;
- return EINA_TRUE;
-}
-
-EINTERN void
-x11_tw_shutdown(void)
-{
- E_FREE_FUNC(handler, ecore_event_handler_del);
- tw_signal_link_complete[E_PIXMAP_TYPE_X] = NULL;
- tw_signal_link_invalid[E_PIXMAP_TYPE_X] = NULL;
- tw_signal_link_progress[E_PIXMAP_TYPE_X] = NULL;
- tw_signal_link_downloading[E_PIXMAP_TYPE_X] = NULL;
-}
-#endif
diff --git a/src/modules/time/clock.c b/src/modules/time/clock.c
deleted file mode 100644
index 630ca4f30f..0000000000
--- a/src/modules/time/clock.c
+++ /dev/null
@@ -1,516 +0,0 @@
-#include "clock.h"
-
-EINTERN Config *time_config = NULL;
-EINTERN Eina_List *clock_instances = NULL;
-static Ecore_Timer *clock_timer;
-
-static void
-_clock_calendar_month_update(Instance *inst)
-{
- Evas_Object *od, *oi;
- int x, y;
-
- oi = elm_layout_edje_get(inst->o_cal);
- edje_object_part_text_set(oi, "e.text.month", inst->month);
- edje_object_part_text_set(oi, "e.text.year", inst->year);
- for (x = 0; x < 7; x++)
- {
- od = edje_object_part_table_child_get(oi, "e.table.daynames", x, 0);
- edje_object_part_text_set(od, "e.text.label", inst->daynames[x]);
- edje_object_message_signal_process(od);
- if (inst->dayweekends[x][0])
- edje_object_signal_emit(od, "e,state,weekend", "e");
- else
- edje_object_signal_emit(od, "e,state,weekday", "e");
- }
-
- for (y = 0; y < 6; y++)
- {
- for (x = 0; x < 7; x++)
- {
- char buf[32];
-
- od = edje_object_part_table_child_get(oi, "e.table.days", x, y);
- snprintf(buf, sizeof(buf), "%i", (int)inst->daynums[x][y]);
- edje_object_part_text_set(od, "e.text.label", buf);
- if (inst->dayweekends[x][y])
- edje_object_signal_emit(od, "e,state,weekend", "e");
- else
- edje_object_signal_emit(od, "e,state,weekday", "e");
- if (inst->dayvalids[x][y])
- edje_object_signal_emit(od, "e,state,visible", "e");
- else
- edje_object_signal_emit(od, "e,state,hidden", "e");
- if (inst->daytoday[x][y])
- edje_object_signal_emit(od, "e,state,today", "e");
- else
- edje_object_signal_emit(od, "e,state,someday", "e");
- edje_object_message_signal_process(od);
- }
- }
- edje_object_message_signal_process(oi);
-}
-
-static void
-_clock_month_prev_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
-{
- Instance *inst = data;
- inst->madj--;
- time_instance_update(inst);
- _clock_calendar_month_update(inst);
-}
-
-static void
-_clock_month_next_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
-{
- Instance *inst = data;
- inst->madj++;
- time_instance_update(inst);
- _clock_calendar_month_update(inst);
-}
-
-static void
-_clock_mouse_wheel_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Instance *inst = data;
- Evas_Event_Mouse_Wheel *ev = event_info;
-
- if (ev->z < 0)
- _clock_month_prev_cb(inst, NULL, NULL, NULL);
- else if (ev->z > 0)
- _clock_month_next_cb(inst, NULL, NULL, NULL);
-}
-
-static void
-_clock_popup_dismissed(void *data EINA_UNUSED, Evas_Object *obj, void *info EINA_UNUSED)
-{
- evas_object_del(obj);
-}
-
-static void
-_eval_instance_size(Instance *inst)
-{
- Evas_Coord mw, mh;
- int sw = 0, sh = 0;
- Evas_Object *ed = elm_layout_edje_get(inst->o_clock);
-
- edje_object_size_min_get(ed, &mw, &mh);
-
- if ((mw < 1) || (mh < 1))
- {
- if (edje_object_part_exists(ed, "e.sizer"))
- {
- edje_object_part_geometry_get(ed, "e.sizer", NULL, NULL, &mw, &mh);
- }
- else
- {
- Evas_Object *owner;
-
- owner = e_gadget_site_get(inst->o_clock);
- switch (e_gadget_site_orient_get(owner))
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- evas_object_geometry_get(owner, NULL, NULL, NULL, &sh);
- break;
-
- case E_GADGET_SITE_ORIENT_VERTICAL:
- evas_object_geometry_get(owner, NULL, NULL, &sw, NULL);
- break;
-
- default: break;
- }
-
- evas_object_resize(inst->o_clock, sw, sh);
- edje_object_message_signal_process(ed);
-
- edje_object_parts_extends_calc(ed, NULL, NULL, &mw, &mh);
- }
- }
-
- if (mw < 4) mw = 4;
- if (mh < 4) mh = 4;
-
- if (mw < sw) mw = sw;
- if (mh < sh) mh = sh;
-
- evas_object_size_hint_aspect_set(inst->o_clock, EVAS_ASPECT_CONTROL_BOTH, mw, mh);
-}
-
-static void
-_clock_edje_init(Instance *inst, Evas_Object *o)
-{
- char datestr[128];
- const char *digital[] =
- {
- "e/gadget/clock/digital",
- "e/gadget/clock/digital/advanced",
- };
-
- time_datestring_format(inst, datestr, sizeof(datestr) - 1);
- if (inst->cfg->digital_clock)
- e_theme_edje_object_set(o, NULL, digital[inst->cfg->advanced]);
- else
- e_theme_edje_object_set(o, NULL, "e/gadget/clock/analog");
- if (inst->cfg->show_date)
- elm_layout_signal_emit(o, "e,state,date,on", "e");
- else
- elm_layout_signal_emit(o, "e,state,date,off", "e");
- if (inst->cfg->digital_24h)
- elm_layout_signal_emit(o, "e,state,24h,on", "e");
- else
- elm_layout_signal_emit(o, "e,state,24h,off", "e");
- if (inst->cfg->show_seconds)
- elm_layout_signal_emit(o, "e,state,seconds,on", "e");
- else
- elm_layout_signal_emit(o, "e,state,seconds,off", "e");
-
- elm_object_part_text_set(o, "e.text.sub", datestr);
- if (inst->cfg->timezone)
- {
- Edje_Message_String msg;
-
- msg.str = (char*)inst->cfg->timezone;
- edje_object_message_send(elm_layout_edje_get(o), EDJE_MESSAGE_STRING, 1, &msg);
- }
- {
- Edje_Message_String_Int msg;
- msg.str = (char*)inst->cfg->colorclass[0] ?: "";
- msg.val = !!inst->cfg->colorclass[0];
- edje_object_message_send(elm_layout_edje_get(o), EDJE_MESSAGE_STRING_INT, 2, &msg);
- msg.str = (char*)inst->cfg->colorclass[1] ?: "";
- msg.val = !!inst->cfg->colorclass[1];
- edje_object_message_send(elm_layout_edje_get(o), EDJE_MESSAGE_STRING_INT, 3, &msg);
- }
- edje_object_message_signal_process(elm_layout_edje_get(o));
-}
-
-static Eina_Bool
-_clock_timer(void *d EINA_UNUSED)
-{
- Eina_List *l;
- Instance *inst;
- Eina_Bool seconds = EINA_FALSE;
- int sec = 0;
- char buf[128];
-
- EINA_LIST_FOREACH(clock_instances, l, inst)
- {
- if (!inst->cfg->advanced) continue;
- seconds |= inst->cfg->show_seconds;
- sec = time_string_format(inst, buf, sizeof(buf));
- elm_object_part_text_set(inst->o_clock, "e.text", buf);
- time_datestring_format(inst, buf, sizeof(buf) - 1);
- elm_object_part_text_set(inst->o_clock, "e.text.sub", buf);
- _eval_instance_size(inst);
- }
- sec = seconds ? 1 : (61 - sec);
- if (clock_timer)
- ecore_timer_interval_set(clock_timer, sec);
- else
- clock_timer = ecore_timer_loop_add(sec, _clock_timer, NULL);
- return EINA_TRUE;
-}
-
-static void
-_clock_popup_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (obj != inst->popup) return;
- inst->popup = inst->o_table = inst->o_cal = NULL;
-}
-
-EINTERN void
-clock_popup_new(Instance *inst)
-{
- Evas_Object *oi;
-
- if (inst->popup) return;
-
- inst->madj = 0;
-
- time_instance_update(inst);
-
- inst->popup = elm_ctxpopup_add(inst->o_clock);
- elm_object_style_set(inst->popup, "noblock");
- evas_object_smart_callback_add(inst->popup, "dismissed", _clock_popup_dismissed, inst);
- evas_object_event_callback_add(inst->popup, EVAS_CALLBACK_DEL, _clock_popup_del, inst);
- evas_object_event_callback_add(inst->popup, EVAS_CALLBACK_MOUSE_WHEEL,
- _clock_mouse_wheel_cb, inst);
-
- inst->o_table = elm_table_add(inst->popup);
-
- oi = elm_layout_add(inst->o_table);
- inst->o_cal = oi;
- e_theme_edje_object_set(oi, "base/theme/gadget/clock",
- "e/gadget/clock/calendar");
- _clock_calendar_month_update(inst);
-
- elm_object_signal_callback_add(oi, "e,action,prev", "*",
- _clock_month_prev_cb, inst);
- elm_object_signal_callback_add(oi, "e,action,next", "*",
- _clock_month_next_cb, inst);
- edje_object_message_signal_process(elm_layout_edje_get(oi));
- elm_layout_sizing_eval(oi);
- elm_table_pack(inst->o_table, oi, 0, 1, 1, 1);
- evas_object_show(oi);
-
- elm_object_content_set(inst->popup, inst->o_table);
- e_gadget_util_ctxpopup_place(inst->o_clock, inst->popup, NULL);
- evas_object_show(inst->popup);
-}
-
-void
-clock_instances_redo(void)
-{
- Eina_List *l;
- Instance *inst;
-
- EINA_LIST_FOREACH(clock_instances, l, inst)
- {
- _clock_edje_init(inst, inst->o_clock);
- _eval_instance_size(inst);
- }
-}
-
-static void
-_clock_cb_mouse_up(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event)
-{
- Instance *inst = data;
- Evas_Event_Mouse_Up *ev = event;
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- if (ev->button == 1)
- {
- if (inst->popup) elm_ctxpopup_dismiss(inst->popup);
- else clock_popup_new(inst);
- }
-}
-
-static void
-_clock_sizing_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
-{
- _eval_instance_size(data);
-}
-
-static void
-_clock_gadget_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Instance *inst = data;
-
- if (inst->o_clock != event_info) return;
- if (!inst->cfg) return;
- time_config->items = eina_list_remove(time_config->items, inst->cfg);
- eina_stringshare_del(inst->cfg->timezone);
- eina_stringshare_del(inst->cfg->time_str[0]);
- eina_stringshare_del(inst->cfg->time_str[1]);
- E_FREE(inst->cfg);
-}
-
-static void
-clock_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- Eina_List *l;
- Eina_Bool advanced = EINA_FALSE, seconds = EINA_FALSE;
-
- evas_object_smart_callback_del_full(e_gadget_site_get(obj), "gadget_removed", _clock_gadget_removed_cb, inst);
- clock_instances = eina_list_remove(clock_instances, inst);
- evas_object_del(inst->popup);
- time_daynames_clear(inst);
- if (inst->cfg)
- {
- advanced |= !!inst->cfg->advanced;
- seconds |= !!inst->cfg->show_seconds;
- if (inst->cfg->inst == inst) inst->cfg->inst = NULL;
- }
- free(inst);
- if ((!advanced) && (!seconds)) return;
- EINA_LIST_FOREACH(clock_instances, l, inst)
- {
- advanced |= !!inst->cfg->advanced;
- seconds |= !!inst->cfg->show_seconds;
- if (seconds) break;
- }
- if (seconds) return; //no change possible
- E_FREE_FUNC(clock_timer, ecore_timer_del);
- if (advanced)
- _clock_timer(NULL);
-}
-
-static Config_Item *
-_conf_item_get(int *id, Eina_Bool digital)
-{
- Config_Item *ci;
- Eina_List *l;
-
- if (*id > 0)
- {
- EINA_LIST_FOREACH(time_config->items, l, ci)
- if (*id == ci->id) return ci;
- }
-
- ci = E_NEW(Config_Item, 1);
- if (!*id)
- *id = ci->id = time_config->items ? eina_list_count(time_config->items) + 1 : 1;
- else if (*id < 0)
- ci->id = -1;
- else
- ci->id = *id;
-
- ci->weekend.start = 6;
- ci->weekend.len = 2;
- ci->week.start = 1;
- ci->digital_clock = digital;
- ci->digital_24h = 0;
- ci->show_seconds = 0;
- ci->show_date = 0;
- ci->time_str[0] = eina_stringshare_add("%I:%M");
- ci->time_str[1] = eina_stringshare_add("%F");
-
- if (ci->id < 1) return ci;
- time_config->items = eina_list_append(time_config->items, ci);
- e_config_save_queue();
-
- return ci;
-}
-
-static Evas_Object *
-_clock_gadget_configure(Evas_Object *g)
-{
- Instance *inst = evas_object_data_get(g, "clock");
- inst->cfg->inst = inst;
- return config_clock(inst->cfg, e_comp_object_util_zone_get(g));
-}
-
-static void
-_clock_gadget_created_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- e_gadget_configure_cb_set(inst->o_clock, _clock_gadget_configure);
- evas_object_smart_callback_del_full(obj, "gadget_created", _clock_gadget_created_cb, data);
- if (inst->cfg->advanced)
- {
- _clock_timer(NULL);
- ecore_timer_loop_reset(clock_timer);
- }
- _eval_instance_size(inst);
-}
-
-static Evas_Object *
-clock_create(Evas_Object *parent, Instance *inst, E_Gadget_Site_Orient orient)
-{
- Evas_Object *o;
- const char *sig = NULL;
-
- inst->o_clock = o = elm_layout_add(parent);
- elm_layout_signal_callback_add(o, "e,state,sizing,changed", "*",
- _clock_sizing_changed_cb, inst);
-
- _clock_edje_init(inst, o);
-
- switch (orient)
- {
- case E_GADGET_SITE_ORIENT_HORIZONTAL:
- sig = "e,state,horizontal";
- break;
-
- case E_GADGET_SITE_ORIENT_VERTICAL:
- sig = "e,state,vertical";
- break;
-
- default:
- sig = "e,state,float";
- }
-
- elm_layout_signal_emit(inst->o_clock, sig, "e");
-
- evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, clock_del, inst);
- evas_object_smart_callback_add(parent, "gadget_created", _clock_gadget_created_cb, inst);
- evas_object_smart_callback_add(parent, "gadget_removed", _clock_gadget_removed_cb, inst);
- evas_object_data_set(o, "clock", inst);
-
- evas_object_event_callback_add(inst->o_clock,
- EVAS_CALLBACK_MOUSE_UP,
- _clock_cb_mouse_up,
- inst);
-
- if (inst->cfg->id < 0) return o;
- clock_instances = eina_list_append(clock_instances, inst);
-
- return o;
-}
-
-EINTERN Evas_Object *
-digital_clock_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Instance *inst;
-
- inst = E_NEW(Instance, 1);
- inst->cfg = _conf_item_get(id, 1);
- return clock_create(parent, inst, orient);
-}
-
-EINTERN Evas_Object *
-analog_clock_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Instance *inst;
-
- inst = E_NEW(Instance, 1);
- inst->cfg = _conf_item_get(id, 0);
- return clock_create(parent, inst, orient);
-}
-
-EINTERN void
-time_config_update(Config_Item *ci)
-{
- Eina_List *l;
- Instance *inst;
- Eina_Bool advanced = EINA_FALSE;
-
- ci->week.start = (ci->weekend.start + ci->weekend.len) % 7;
- EINA_LIST_FOREACH(clock_instances, l, inst)
- {
- if (inst->cfg != ci) continue;
- _clock_edje_init(inst, inst->o_clock);
- if (!advanced)
- {
- advanced |= inst->cfg->advanced;
- if (!inst->cfg->advanced) continue;
- _clock_timer(NULL);
- ecore_timer_loop_reset(clock_timer);
- }
- _eval_instance_size(inst);
- }
- if (!advanced)
- E_FREE_FUNC(clock_timer, ecore_timer_del);
- e_config_save_queue();
-}
-
-EINTERN void
-clock_timer_set(Eina_Bool set)
-{
- if (set)
- {
- if (clock_instances) _clock_timer(NULL);
- }
- else
- E_FREE_FUNC(clock_timer, ecore_timer_del);
-}
-
-EINTERN void
-clock_date_update(void)
-{
- Eina_List *l;
- Instance *inst;
- char buf[128];
-
- EINA_LIST_FOREACH(clock_instances, l, inst)
- {
- time_datestring_format(inst, buf, sizeof(buf) - 1);
- elm_object_part_text_set(inst->o_clock, "e.text.sub", buf);
- _eval_instance_size(inst);
- }
-}
diff --git a/src/modules/time/clock.h b/src/modules/time/clock.h
deleted file mode 100644
index 7e5338ffd0..0000000000
--- a/src/modules/time/clock.h
+++ /dev/null
@@ -1,94 +0,0 @@
-#ifndef CLOCK_H
-#define CLOCK_H
-
-#include "e.h"
-
-E_API extern E_Module_Api e_modapi;
-
-E_API void *e_modapi_init (E_Module *m);
-E_API int e_modapi_shutdown (E_Module *m);
-E_API int e_modapi_save (E_Module *m);
-
-typedef struct _Config Config;
-typedef struct _Config_Item Config_Item;
-typedef struct _Instance Instance;
-
-typedef enum
-{
- CLOCK_DATE_DISPLAY_NONE,
- CLOCK_DATE_DISPLAY_FULL,
- CLOCK_DATE_DISPLAY_NUMERIC,
- CLOCK_DATE_DISPLAY_DATE_ONLY,
- CLOCK_DATE_DISPLAY_ISO8601,
- CLOCK_DATE_DISPLAY_CUSTOM,
-} Clock_Date_Display;
-
-struct _Config
-{
- Eina_List *items;
-
- E_Module *module;
- Evas_Object *config_dialog;
-};
-
-struct _Config_Item
-{
- int id;
- Instance *inst;
- struct {
- int start, len; // 0->6 0 == sun, 6 == sat, number of days
- } weekend;
- struct {
- int start; // 0->6 0 == sun, 6 == sat
- } week;
- Eina_Bool digital_clock;
- Eina_Bool digital_24h;
- Eina_Bool show_seconds;
- Clock_Date_Display show_date;
- Eina_Bool advanced;
- Eina_Stringshare *timezone;
- Eina_Stringshare *time_str[2];
- Eina_Stringshare *colorclass[2];
-};
-
-
-struct _Instance
-{
- Evas_Object *o_clock, *o_table, *o_cal;
- Evas_Object *popup;
-
- int madj;
-
- char year[8];
- char month[64];
- const char *daynames[7];
- unsigned char daynums[7][6];
- Eina_Bool dayweekends[7][6];
- Eina_Bool dayvalids[7][6];
- Eina_Bool daytoday[7][6];
- Config_Item *cfg;
-};
-
-EINTERN Evas_Object *config_clock(Config_Item *, E_Zone*);
-EINTERN void config_timezone_populate(Evas_Object *obj, const char *name);
-void clock_instances_redo(void);
-
-EINTERN void time_daynames_clear(Instance *inst);
-EINTERN void time_datestring_format(Instance *inst, char *buf, int bufsz);
-EINTERN int time_string_format(Instance *inst, char *buf, int bufsz);
-EINTERN void time_instance_update(Instance *inst);
-EINTERN void time_init(void);
-EINTERN void time_shutdown(void);
-EINTERN void time_zoneinfo_scan(Evas_Object *obj);
-
-EINTERN Evas_Object *digital_clock_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN Evas_Object *analog_clock_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN void clock_popup_new(Instance *inst);
-EINTERN void time_config_update(Config_Item *ci);
-EINTERN void clock_timer_set(Eina_Bool set);
-EINTERN void clock_date_update(void);
-
-extern Config *time_config;
-extern Eina_List *clock_instances;
-
-#endif
diff --git a/src/modules/time/config.c b/src/modules/time/config.c
deleted file mode 100644
index 153a84640b..0000000000
--- a/src/modules/time/config.c
+++ /dev/null
@@ -1,634 +0,0 @@
-#include "clock.h"
-#include <time.h>
-
-static const char *datecfg[] =
-{
- N_("None"),
- N_("Full"),
- N_("Numeric"),
- N_("Date-only"),
- N_("ISO 8601"),
- N_("Custom"),
-};
-
-
-static void
-_config_rect_click(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Evas_Event_Mouse_Up *ev = event_info;
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- evas_object_del(data);
-}
-
-static Evas_Object *
-_config_autoclose_rect_add(Evas_Object *obj)
-{
- Evas_Object *rect;
-
- rect = evas_object_rectangle_add(e_comp->evas);
- e_comp_object_util_fullscreen(rect);
- evas_object_color_set(rect, 0, 0, 0, 0);
- evas_object_layer_set(rect, E_LAYER_MENU - 1);
- evas_object_show(rect);
- evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_UP, _config_rect_click, obj);
- return rect;
-}
-
-static void
-_config_close(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- time_config->config_dialog = NULL;
-}
-
-static void
-_config_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- time_config_update(data);
-}
-
-static void
-_clock_color_dismissed(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- evas_object_del(obj);
-}
-
-static void
-_config_color_reset(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Config_Item *ci = data;
- Evas_Object *cs;
- int num;
-
- num = !evas_object_data_get(obj, "bg_color");
- if (ci->colorclass[num])
- {
- elm_config_color_overlay_unset(ci->colorclass[num]);
- edje_color_class_del(ci->colorclass[num]);
- }
- eina_stringshare_replace(&ci->colorclass[num], NULL);
- cs = evas_object_data_get(obj, "colorselector");
- elm_colorselector_color_set(cs, 0, 0, 0, 0);
- elm_colorselector_palette_item_color_set(evas_object_data_get(cs, "colorselector_it"),
- 0, 0, 0, 0);
- time_config_update(data);
-}
-
-static void
-_config_color_change(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Config_Item *ci = data;
- int r, g, b, a;
- int num;
- char buf[1024];
-
- num = !evas_object_data_get(obj, "bg_color");
- elm_colorselector_color_get(obj, &r, &g, &b, &a);
-
- if (!ci->colorclass[num])
- {
- snprintf(buf, sizeof(buf), "e.clock_color_%s.%d", num ? "fg" : "bg", ci->id);
- eina_stringshare_replace(&ci->colorclass[num], buf);
- }
- elm_config_color_overlay_set(ci->colorclass[num], r, g, b, a, 0, 0, 0, 0, 0, 0, 0, 0);
- edje_color_class_set(ci->colorclass[num], r, g, b, a, 0, 0, 0, 0, 0, 0, 0, 0);
- elm_colorselector_palette_item_color_set(evas_object_data_get(obj, "colorselector_it"), r, g, b, a);
- time_config_update(data);
-}
-
-static void
-_config_color_setup(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Config_Item *ci = data;
- Evas_Object *cs, *ctx, *bx, *bt, *rect;
- int r, g, b, a, x, y;
- Eina_Bool bg;
- const char *ccname, *ccnames[] =
- {
- "e.clock_color_bg",
- "e.clock_color_fg",
- };
-
- bg = !!evas_object_data_get(obj, "bg_color");
- ccname = ci->colorclass[!bg];
- if (!ccname) ccname = ccnames[!bg];
- edje_color_class_get(ccname, &r, &g, &b, &a,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-
- bx = elm_box_add(obj);
- E_FILL(bx);
- evas_object_show(bx);
-
- cs = elm_colorselector_add(obj);
- evas_object_data_set(cs, "colorselector_bt", evas_object_data_get(obj, "colorselector_tt"));
- evas_object_data_set(cs, "bg_color", (void*)(long)bg);
- evas_object_smart_callback_add(cs, "changed,user", _config_color_change, ci);
- elm_colorselector_mode_set(cs, ELM_COLORSELECTOR_COMPONENTS);
- elm_colorselector_color_set(cs, r, g, b, a);
- E_FILL(cs);
- elm_box_pack_end(bx, cs);
- evas_object_show(cs);
-
- bt = elm_button_add(bx);
- evas_object_data_set(bt, "colorselector", cs);
- evas_object_data_set(bt, "bg_color", (void*)(long)bg);
- elm_object_text_set(bt, _("Reset"));
- evas_object_smart_callback_add(bt, "clicked", _config_color_reset, ci);
- evas_object_show(bt);
- elm_box_pack_end(bx, bt);
-
- /* size hints: the final frontier */
- rect = evas_object_rectangle_add(e_comp->elm);
- evas_object_geometry_get(time_config->config_dialog, NULL, NULL, &x, &y);
- evas_object_size_hint_min_set(rect, x - 10, 1);
- e_comp_object_util_del_list_append(bx, rect);
- elm_box_pack_end(bx, rect);
-
- ctx = elm_ctxpopup_add(obj);
- elm_ctxpopup_hover_parent_set(ctx, e_comp->elm);
- evas_object_layer_set(ctx, E_LAYER_MENU);
- elm_object_style_set(ctx, "noblock");
- rect = _config_autoclose_rect_add(ctx);
- evas_object_smart_callback_call(ci->inst->o_clock, "gadget_popup", rect);
- e_comp_object_util_del_list_append(ctx, rect);
- evas_object_smart_callback_add(ctx, "dismissed", _clock_color_dismissed, NULL);
- elm_object_content_set(ctx, bx);
- evas_pointer_canvas_xy_get(e_comp->evas, &x, &y);
- evas_object_move(ctx, x, y);
- evas_object_show(ctx);
-}
-
-static void
-_config_digital_timestr_update(Config_Item *ci, Evas_Object *obj, int idx)
-{
- const char *str, *p;
- char seconds[] =
- {
- 'S',
- 's',
- 'r',
- 'T',
- };
- unsigned int i;
-
- str = elm_entry_entry_get(obj);
- eina_stringshare_replace(&ci->time_str[idx], str);
- ci->show_seconds = 0;
- for (p = strchr(str, '%'); p; p = strchr(p + 1, '%'))
- {
- for (i = 0; i < EINA_C_ARRAY_LENGTH(seconds); i++)
- if (p[1] == seconds[i])
- {
- ci->show_seconds = 1;
- time_config_update(ci);
- return;
- }
- }
-
- time_config_update(ci);
-}
-
-static void
-_config_digital_datestr_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- _config_digital_timestr_update(data, obj, 1);
-}
-
-static Evas_Object *
-_config_date_custom(Config_Item *ci, Evas_Object *bx)
-{
- Evas_Object *o;
-
- o = elm_entry_add(bx);
- elm_entry_single_line_set(o, 1);
- elm_object_tooltip_text_set(o, _("strftime() format string"));
- elm_entry_entry_set(o, ci->time_str[1]);
- evas_object_smart_callback_add(o, "changed,user", _config_digital_datestr_changed, ci);
- E_FILL(o);
- E_EXPAND(o);
- evas_object_show(o);
- elm_box_pack_end(bx, o);
- return o;
-}
-
-static void
-_config_date_changed(void *data, Evas_Object *obj, void *event_info)
-{
- Config_Item *ci = data;
- Evas_Object *bx = elm_object_parent_widget_get(obj);
- Eina_Bool custom;
-
- custom = ci->show_date == CLOCK_DATE_DISPLAY_CUSTOM;
- ci->show_date = (intptr_t)elm_object_item_data_get(event_info);
- if (custom)
- {
- elm_box_unpack(bx, obj);
- elm_box_clear(bx);
- E_FILL(obj);
- E_EXPAND(obj);
- elm_box_pack_end(bx, obj);
- }
- else if (ci->show_date == CLOCK_DATE_DISPLAY_CUSTOM)
- {
- E_WEIGHT(obj, 0, 0);
- E_ALIGN(obj, 0, 0.5);
- elm_object_focus_set(_config_date_custom(ci, bx), 1);
- }
- time_config_update(ci);
-}
-
-static void
-_config_weekend_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Config_Item *ci = data;
-
- ci->weekend.start = (intptr_t)elm_object_item_data_get(event_info);
- time_config_update(ci);
-}
-
-static void
-_config_weekend_end_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- Config_Item *ci = data;
- int end;
-
- end = (intptr_t)elm_object_item_data_get(event_info);
- if (end < ci->weekend.start) end += 7;
- ci->weekend.len = end - ci->weekend.start + 1;
- time_config_update(ci);
-}
-
-static void
-_config_date_populate(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Config_Item *ci = data;
- unsigned int i;
-
- elm_hoversel_clear(obj);
- for (i = 0; i <= 5; i++)
- if (ci->show_date != i)
- elm_hoversel_item_add(obj, datecfg[i], NULL, ELM_ICON_NONE, NULL, (uintptr_t*)(unsigned long)i);
-}
-
-static void
-_config_weekend_populate(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Config_Item *ci = data;
- char daynames[7][64];
- struct tm tm;
- int i;
-
- memset(&tm, 0, sizeof(struct tm));
- for (i = 0; i < 7; i++)
- {
- tm.tm_wday = i;
- strftime(daynames[i], sizeof(daynames[i]), "%A", &tm);
- }
-
- elm_hoversel_clear(obj);
- for (i = ci->weekend.start + 1; i <= 6; i++)
- if (ci->weekend.start != i)
- elm_hoversel_item_add(obj, daynames[i], NULL, ELM_ICON_NONE, NULL, (intptr_t*)(long)i);
- for (i = 0; i < ci->weekend.start; i++)
- elm_hoversel_item_add(obj, daynames[i], NULL, ELM_ICON_NONE, NULL, (intptr_t*)(long)i);
-}
-
-static void
-_config_weekend_end_populate(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Config_Item *ci = data;
- char daynames[7][64];
- struct tm tm;
- int i, end;
-
- memset(&tm, 0, sizeof(struct tm));
- for (i = 0; i < 7; i++)
- {
- tm.tm_wday = i;
- strftime(daynames[i], sizeof(daynames[i]), "%A", &tm);
- }
-
- elm_hoversel_clear(obj);
- end = (ci->weekend.start + ci->weekend.len - 1) % 7;
- for (i = end + 1; i <= 6; i++)
- if (end != i)
- elm_hoversel_item_add(obj, daynames[i], NULL, ELM_ICON_NONE, NULL, (intptr_t*)(long)i);
- for (i = 0; i < end; i++)
- elm_hoversel_item_add(obj, daynames[i], NULL, ELM_ICON_NONE, NULL, (intptr_t*)(long)i);
-}
-
-static void
-_config_timezone_setup(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Evas_Object *hover, *gl, *r;
- Config_Item *ci = data;
-
- hover = elm_hover_add(e_comp->elm);
- evas_object_layer_set(hover, E_LAYER_MENU);
- elm_hover_parent_set(hover, elm_object_parent_widget_get(obj));
- elm_hover_target_set(hover, elm_object_parent_widget_get(obj));
-
- gl = elm_genlist_add(hover);
- evas_object_layer_set(gl, E_LAYER_MENU);
- evas_object_data_set(gl, "config_item", data);
- evas_object_data_set(gl, "button", obj);
- elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
- elm_genlist_homogeneous_set(gl, 1);
- elm_scroller_bounce_set(gl, 0, 0);
- evas_object_show(gl);
- elm_object_part_content_set(hover, "middle", gl);
- time_zoneinfo_scan(gl);
- e_comp_object_util_del_list_append(gl, hover);
- r = _config_autoclose_rect_add(gl);
- evas_object_smart_callback_call(ci->inst->o_clock, "gadget_popup", r);
- e_comp_object_util_del_list_append(gl, r);
- evas_object_show(hover);
-}
-
-static void
-_config_digital_timestr_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- _config_digital_timestr_update(data, obj, 0);
-}
-
-static void
-_config_label_add(Evas_Object *tb, const char *txt, int row)
-{
- Evas_Object *o;
-
- o = elm_label_add(tb);
- E_ALIGN(o, 0, 0.5);
- elm_object_text_set(o, txt);
- evas_object_show(o);
- elm_table_pack(tb, o, 0, row, 1, 1);
-}
-
-static void
-_config_digital_rows_setup(Config_Item *ci, Evas_Object *tb)
-{
- int row = 1;
- Evas_Object *o;
-
- evas_object_del(elm_table_child_get(tb, 0, 1));
- evas_object_del(elm_table_child_get(tb, 1, 1));
- evas_object_del(elm_table_child_get(tb, 0, 2));
- evas_object_del(elm_table_child_get(tb, 1, 2));
- if (ci->advanced)
- {
- _config_label_add(tb, _("Time string:"), row);
- o = elm_entry_add(tb);
- E_FILL(o);
- evas_object_show(o);
- elm_entry_single_line_set(o, 1);
- elm_entry_entry_set(o, ci->time_str[0]);
- elm_object_focus_set(o, 1);
- evas_object_smart_callback_add(o, "changed,user", _config_digital_timestr_changed, ci);
- elm_table_pack(tb, o, 1, row++, 1, 1);
-
- o = elm_separator_add(tb);
- E_EXPAND(o);
- E_FILL(o);
- elm_separator_horizontal_set(o, 1);
- evas_object_show(o);
- elm_table_pack(tb, o, 0, row++, 2, 1);
- return;
- }
- if (ci->digital_clock)
- {
- _config_label_add(tb, _("24-hour Display:"), row);
- o = elm_check_add(tb);
- E_FILL(o);
- evas_object_show(o);
- elm_object_style_set(o, "toggle");
- elm_object_part_text_set(o, "on", "On");
- elm_object_part_text_set(o, "off", "Off");
- elm_check_state_pointer_set(o, &ci->digital_24h);
- evas_object_smart_callback_add(o, "changed", _config_changed, ci);
- elm_table_pack(tb, o, 1, row++, 1, 1);
- }
-
- _config_label_add(tb, _("Show Seconds:"), row);
- o = elm_check_add(tb);
- E_FILL(o);
- evas_object_show(o);
- elm_object_style_set(o, "toggle");
- elm_object_part_text_set(o, "on", _("On"));
- elm_object_part_text_set(o, "off", _("Off"));
- elm_check_state_pointer_set(o, &ci->show_seconds);
- evas_object_smart_callback_add(o, "changed", _config_changed, ci);
- elm_table_pack(tb, o, 1, row++, 1, 1);
-}
-
-static void
-_config_advanced_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Config_Item *ci = data;
-
- _config_digital_rows_setup(data, evas_object_data_get(obj, "table"));
- time_config_update(ci);
-}
-
-EINTERN Evas_Object *
-config_clock(Config_Item *ci, E_Zone *zone)
-{
- Evas_Object *popup, *tb, *o, *bx;
- int i, row = 0;
- char daynames[7][64];
- struct tm tm;
-
- if (!zone) zone = e_zone_current_get();
- memset(&tm, 0, sizeof(struct tm));
- for (i = 0; i < 7; i++)
- {
- tm.tm_wday = i;
- strftime(daynames[i], sizeof(daynames[i]), "%A", &tm);
- }
- popup = elm_popup_add(e_comp->elm);
- E_EXPAND(popup);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- tb = elm_table_add(popup);
- E_EXPAND(tb);
- evas_object_show(tb);
- elm_object_content_set(popup, tb);
-
- if (ci->digital_clock)
- {
- _config_label_add(tb, _("Mode"), row);
- o = elm_check_add(tb);
- E_FILL(o);
- evas_object_show(o);
- elm_object_style_set(o, "toggle");
- elm_object_part_text_set(o, "on", _("Advanced"));
- elm_object_part_text_set(o, "off", _("Simple"));
- elm_check_state_pointer_set(o, &ci->advanced);
- evas_object_smart_callback_add(o, "changed", _config_advanced_changed, ci);
- evas_object_data_set(o, "table", tb);
- elm_table_pack(tb, o, 1, row++, 1, 1);
- }
- _config_digital_rows_setup(ci, tb);
- row = 3;
-
- _config_label_add(tb, _("Date Display:"), row);
- bx = elm_box_add(tb);
- elm_box_horizontal_set(bx, 1);
- evas_object_show(bx);
- elm_table_pack(tb, bx, 1, row++, 1, 1);
- E_FILL(bx);
- E_EXPAND(bx);
- o = elm_hoversel_add(tb);
- elm_box_pack_end(bx, o);
- elm_hoversel_hover_parent_set(o, popup);
- elm_hoversel_auto_update_set(o, 1);
- evas_object_show(o);
- evas_object_smart_callback_add(o, "clicked", _config_date_populate, ci);
- evas_object_smart_callback_add(o, "selected", _config_date_changed, ci);
- elm_object_text_set(o, datecfg[ci->show_date]);
- if (ci->show_date == CLOCK_DATE_DISPLAY_CUSTOM)
- {
- E_ALIGN(o, 0, 0.5);
- E_WEIGHT(o, 0, 0);
- _config_date_custom(ci, bx);
- }
- else
- {
- E_FILL(o);
- E_EXPAND(o);
- }
-
- _config_label_add(tb, _("Weekend Start:"), row);
- o = elm_hoversel_add(tb);
- E_FILL(o);
- elm_hoversel_hover_parent_set(o, popup);
- elm_hoversel_auto_update_set(o, 1);
- evas_object_show(o);
- elm_table_pack(tb, o, 1, row++, 1, 1);
- elm_object_text_set(o, daynames[ci->weekend.start]);
- evas_object_smart_callback_add(o, "clicked", _config_weekend_populate, ci);
- evas_object_smart_callback_add(o, "selected", _config_weekend_changed, ci);
-
- _config_label_add(tb, _("Weekend End:"), row);
- o = elm_hoversel_add(tb);
- E_FILL(o);
- elm_hoversel_hover_parent_set(o, popup);
- elm_hoversel_auto_update_set(o, 1);
- evas_object_show(o);
- elm_table_pack(tb, o, 1, row++, 1, 1);
- elm_object_text_set(o, daynames[(ci->weekend.start + ci->weekend.len - 1) % 7]);
- evas_object_smart_callback_add(o, "clicked", _config_weekend_end_populate, ci);
- evas_object_smart_callback_add(o, "selected", _config_weekend_end_changed, ci);
-
- _config_label_add(tb, _("Timezone:"), row);
- o = elm_button_add(tb);
- E_FILL(o);
- elm_object_text_set(o, ci->timezone ?: _("System"));
- evas_object_show(o);
- evas_object_smart_callback_add(o, "clicked", _config_timezone_setup, ci);
- elm_table_pack(tb, o, 1, row++, 1, 1);
-
- for (i = 0; i <= 1; i++)
- {
- const char *ccname, *names[] =
- {
- N_("Background"),
- N_("Foreground"),
- };
- const char *ccnames[] =
- {
- "e.clock_color_bg",
- "e.clock_color_fg",
- };
- Evas_Object *cs;
- Elm_Object_Item *it;
- int r, g, b, a;
-
- cs = elm_colorselector_add(tb);
- elm_colorselector_mode_set(cs, ELM_COLORSELECTOR_PALETTE);
- ccname = ci->colorclass[i];
- if (!ccname) ccname = ccnames[i];
- edje_color_class_get(ccname, &r, &g, &b, &a,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-
- it = elm_colorselector_palette_color_add(cs, r, g, b, a);
- o = elm_button_add(tb);
- elm_object_text_set(o, names[i]);
- elm_object_content_set(o, cs);
- E_FILL(o);
- if (!i)
- evas_object_data_set(o, "bg_color", (void*)1L);
- evas_object_data_set(o, "colorselector_it", it);
- evas_object_smart_callback_add(o, "clicked", _config_color_setup, ci);
- evas_object_show(o);
- elm_table_pack(tb, o, i, row, 1, 1);
- }
-
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- evas_object_move(popup, zone->x, zone->y);
- evas_object_resize(popup, zone->w / 4, zone->h / 3);
- e_comp_object_util_center(popup);
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
- evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, NULL);
-
- return time_config->config_dialog = popup;
-}
-
-
-static char *
-_config_timezone_text_get(const char *str, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
-{
- return strdup(str);
-}
-
-static void
-_config_timezone_text_del(void *d, Evas_Object *obj EINA_UNUSED)
-{
- free(d);
-}
-
-static int
-_config_timezone_sort(void *ita, void *itb)
-{
- const char *a, *b;
- a = elm_object_item_data_get(ita);
- b = elm_object_item_data_get(itb);
- return strcmp(a, b);
-}
-
-static void
-_config_timezone_set(void *data EINA_UNUSED, Evas_Object *obj, void *event_info)
-{
- char *tz = elm_object_item_data_get(event_info);
- Config_Item *ci;
- Evas_Object *bt;
-
- ci = evas_object_data_get(obj, "config_item");
- bt = evas_object_data_get(obj, "button");
- eina_stringshare_replace(&ci->timezone, tz);
- elm_object_text_set(bt, tz);
- time_config_update(ci);
- evas_object_del(obj);
-}
-
-EINTERN void
-config_timezone_populate(Evas_Object *obj, const char *name)
-{
- static const Elm_Genlist_Item_Class itc =
- {
- .item_style = "default",
- .func = {
- .text_get = (Elm_Genlist_Item_Text_Get_Cb)_config_timezone_text_get,
- .del = _config_timezone_text_del,
- },
- .version = ELM_GENLIST_ITEM_CLASS_VERSION
- };
- Config_Item *ci;
- Elm_Object_Item *it;
-
- it = elm_genlist_item_sorted_insert(obj, &itc, strdup(name), NULL, 0, (Eina_Compare_Cb)_config_timezone_sort, _config_timezone_set, NULL);
- ci = evas_object_data_get(obj, "config_item");
- if (eina_streq(name, ci->timezone))
- elm_genlist_item_bring_in(it, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
-}
diff --git a/src/modules/time/e-module-time.edj b/src/modules/time/e-module-time.edj
deleted file mode 100644
index 7566698882..0000000000
--- a/src/modules/time/e-module-time.edj
+++ /dev/null
Binary files differ
diff --git a/src/modules/time/meson.build b/src/modules/time/meson.build
deleted file mode 100644
index 43392cbf95..0000000000
--- a/src/modules/time/meson.build
+++ /dev/null
@@ -1,7 +0,0 @@
-src = files(
- 'mod.c',
- 'clock.c',
- 'config.c',
- 'time.c',
- 'clock.h'
- )
diff --git a/src/modules/time/mod.c b/src/modules/time/mod.c
deleted file mode 100644
index 9a74f8d9d1..0000000000
--- a/src/modules/time/mod.c
+++ /dev/null
@@ -1,142 +0,0 @@
-#include "clock.h"
-static E_Config_DD *conf_edd = NULL;
-static E_Config_DD *conf_item_edd = NULL;
-static E_Action *act = NULL;
-
-static void
-_e_mod_action_cb(E_Object *obj EINA_UNUSED, const char *params, ...)
-{
- Eina_List *l;
- Instance *inst;
-
- if (!eina_streq(params, "show_calendar")) return;
-
- EINA_LIST_FOREACH(clock_instances, l, inst)
- if (inst->popup)
- {
- elm_ctxpopup_dismiss(inst->popup);
- inst->popup = NULL;
- }
- else
- clock_popup_new(inst);
-}
-
-EINTERN void
-clock_init(void)
-{
- conf_item_edd = E_CONFIG_DD_NEW("Config_Item", Config_Item);
-#undef T
-#undef D
-#define T Config_Item
-#define D conf_item_edd
- E_CONFIG_VAL(D, T, id, INT);
- E_CONFIG_VAL(D, T, weekend.start, INT);
- E_CONFIG_VAL(D, T, weekend.len, INT);
- E_CONFIG_VAL(D, T, week.start, INT);
- E_CONFIG_VAL(D, T, digital_clock, INT);
- E_CONFIG_VAL(D, T, digital_24h, INT);
- E_CONFIG_VAL(D, T, show_seconds, INT);
- E_CONFIG_VAL(D, T, show_date, INT);
- E_CONFIG_VAL(D, T, advanced, UCHAR);
- E_CONFIG_VAL(D, T, timezone, STR);
- E_CONFIG_VAL(D, T, time_str[0], STR);
- E_CONFIG_VAL(D, T, time_str[1], STR);
- E_CONFIG_VAL(D, T, colorclass[0], STR);
- E_CONFIG_VAL(D, T, colorclass[1], STR);
-
- conf_edd = E_CONFIG_DD_NEW("Config", Config);
-#undef T
-#undef D
-#define T Config
-#define D conf_edd
- E_CONFIG_LIST(D, T, items, conf_item_edd);
-
- time_config = e_config_domain_load("module.time", conf_edd);
-
- if (!time_config)
- time_config = E_NEW(Config, 1);
-
- act = e_action_add("clock");
- if (act)
- {
- act->func.go = (void*)_e_mod_action_cb;
- act->func.go_key = (void*)_e_mod_action_cb;
- act->func.go_mouse = (void*)_e_mod_action_cb;
- act->func.go_edge = (void*)_e_mod_action_cb;
-
- e_action_predef_name_set(N_("Clock"), N_("Toggle calendar"), "clock", "show_calendar", NULL, 0);
- }
-
- e_gadget_type_add("Digital Clock", digital_clock_create, NULL);
- e_gadget_type_add("Analog Clock", analog_clock_create, NULL);
- time_init();
-}
-
-EINTERN void
-clock_shutdown(void)
-{
- if (act)
- {
- e_action_predef_name_del("Clock", "Toggle calendar");
- e_action_del("clock");
- act = NULL;
- }
- if (time_config)
- {
- Config_Item *ci;
-
- if (time_config->config_dialog)
- {
- evas_object_hide(time_config->config_dialog);
- evas_object_del(time_config->config_dialog);
- }
-
- EINA_LIST_FREE(time_config->items, ci)
- {
- eina_stringshare_del(ci->timezone);
- eina_stringshare_del(ci->time_str[0]);
- eina_stringshare_del(ci->time_str[1]);
- eina_stringshare_del(ci->colorclass[0]);
- eina_stringshare_del(ci->colorclass[1]);
- free(ci);
- }
-
- E_FREE(time_config);
- }
- E_CONFIG_DD_FREE(conf_edd);
- E_CONFIG_DD_FREE(conf_item_edd);
-
- e_gadget_type_del("Digital Clock");
- e_gadget_type_del("Analog Clock");
- time_shutdown();
-}
-
-/* module setup */
-E_API E_Module_Api e_modapi =
-{
- E_MODULE_API_VERSION,
- "Time"
-};
-
-E_API void *
-e_modapi_init(E_Module *m)
-{
- clock_init();
-
- time_config->module = m;
- return m;
-}
-
-E_API int
-e_modapi_shutdown(E_Module *m EINA_UNUSED)
-{
- clock_shutdown();
- return 1;
-}
-
-E_API int
-e_modapi_save(E_Module *m EINA_UNUSED)
-{
- e_config_domain_save("module.time", conf_edd, time_config);
- return 1;
-}
diff --git a/src/modules/time/module.desktop b/src/modules/time/module.desktop
deleted file mode 100644
index 38bb457794..0000000000
--- a/src/modules/time/module.desktop
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Type=Link
-Name=Time
-Name[fr]=Temps
-Comment=Time-related gadgets and utilities
-Comment[fr]=Gadgets et utilitaires liés au temps
-Comment[it]=Gadget e utilità correlate al tempo
-Icon=e-module-time
-X-Enlightenment-ModuleType=utils
diff --git a/src/modules/time/time.c b/src/modules/time/time.c
deleted file mode 100644
index c1ee09210c..0000000000
--- a/src/modules/time/time.c
+++ /dev/null
@@ -1,385 +0,0 @@
-#include "clock.h"
-
-#include <sys/time.h>
-#include <time.h>
-
-static Eio_Monitor *clock_te_monitor = NULL;
-static Eio_Monitor *clock_tz2_monitor = NULL;
-static Eio_Monitor *clock_tzetc_monitor = NULL;
-static Eina_List *handlers = NULL;
-
-static Ecore_Timer *update_today = NULL;
-
-#define ZONEINFO_DIR "/usr/share/zoneinfo/posix"
-#define ZONEINFO_DIR_LEN sizeof(ZONEINFO_DIR) - 1
-
-#define TE_DECL \
- const char *tzenv; \
- char prevtz[128] = {0}
-
-#define TZSET(inst) \
- tzenv = getenv("TZ"); \
- if (tzenv) \
- strncpy(prevtz, tzenv, sizeof(prevtz) - 1); \
- if (inst->cfg->timezone) \
- e_util_env_set("TZ", inst->cfg->timezone); \
- tzset()
-
-#define TZUNSET() \
- if (prevtz[0]) \
- e_util_env_set("TZ", prevtz); \
- else \
- e_util_env_set("TZ", NULL); \
- tzset()
-
-static void
-_zoneinfo_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- eio_file_cancel(data);
-}
-
-static void
-_zoneinfo_done(void *data, Eio_File *handler EINA_UNUSED)
-{
- evas_object_event_callback_del(data, EVAS_CALLBACK_DEL, _zoneinfo_del);
-}
-
-static void
-_zoneinfo_error(void *data, Eio_File *handler EINA_UNUSED, int error EINA_UNUSED)
-{
- evas_object_event_callback_del(data, EVAS_CALLBACK_DEL, _zoneinfo_del);
-}
-
-static Eina_Bool
-_zoneinfo_filter(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, const Eina_File_Direct_Info *info)
-{
- return (info->type == EINA_FILE_REG) || (info->type == EINA_FILE_DIR);
-}
-
-static void
-_zoneinfo_main(void *data, Eio_File *handler EINA_UNUSED, const Eina_File_Direct_Info *info)
-{
- if (info->type == EINA_FILE_REG)
- config_timezone_populate(data, &info->path[ZONEINFO_DIR_LEN + 1]);
- else
- {
- Eio_File *ls;
-
- ls = eio_file_direct_ls(info->path, _zoneinfo_filter, _zoneinfo_main, _zoneinfo_done, _zoneinfo_error, data);
- evas_object_event_callback_add(data, EVAS_CALLBACK_DEL, _zoneinfo_del, ls);
- }
-}
-
-EINTERN void
-time_zoneinfo_scan(Evas_Object *obj)
-{
- Eio_File *ls;
-
- ls = eio_file_direct_ls(ZONEINFO_DIR, _zoneinfo_filter, _zoneinfo_main, _zoneinfo_done, _zoneinfo_error, obj);
- evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _zoneinfo_del, ls);
-}
-
-EINTERN void
-time_daynames_clear(Instance *inst)
-{
- int x;
-
- for (x = 0; x < 7; x++)
- eina_stringshare_replace(&inst->daynames[x], NULL);
-}
-
-EINTERN void
-time_datestring_format(Instance *inst, char *buf, int bufsz)
-{
- struct timeval timev;
- struct tm *tm;
- time_t tt;
- const char *default_str = "%F";
- TE_DECL;
-
- buf[0] = 0;
- if (!inst->cfg->show_date) return;
- TZSET(inst);
- gettimeofday(&timev, NULL);
- tt = (time_t)(timev.tv_sec);
- tm = localtime(&tt);
- TZUNSET();
- switch (inst->cfg->show_date)
- {
- case CLOCK_DATE_DISPLAY_FULL:
- strftime(buf, bufsz, _("%a, %e %b, %Y"), (const struct tm *)tm);
- break;
- case CLOCK_DATE_DISPLAY_NUMERIC:
- strftime(buf, bufsz, _("%a, %x"), (const struct tm *)tm);
- break;
- case CLOCK_DATE_DISPLAY_DATE_ONLY:
- strftime(buf, bufsz, "%x", (const struct tm *)tm);
- break;
- case CLOCK_DATE_DISPLAY_ISO8601:
- strftime(buf, bufsz, "%F", (const struct tm *)tm);
- break;
- case CLOCK_DATE_DISPLAY_CUSTOM:
-/* disable warning for known-safe code */
-DISABLE_WARNING(format-nonliteral, format-nonliteral, format-nonliteral)
- if (!strftime(buf, bufsz, inst->cfg->time_str[1] ?: default_str, (const struct tm *)tm))
- strncpy(buf, "ERROR", bufsz - 1);
-ENABLE_WARNING(format-nonliteral, format-nonliteral, format-nonliteral)
- break;
- default: break;
- }
-}
-
-EINTERN int
-time_string_format(Instance *inst, char *buf, int bufsz)
-{
- struct timeval timev;
- struct tm *tm;
- time_t tt;
- const char *default_fmt = "%R";
- TE_DECL;
-
- buf[0] = 0;
- TZSET(inst);
- gettimeofday(&timev, NULL);
- tt = (time_t)(timev.tv_sec);
- tm = localtime(&tt);
- TZUNSET();
-/* disable warning for known-safe code */
-DISABLE_WARNING(format-nonliteral, format-nonliteral, format-nonliteral)
- if (!strftime(buf, bufsz, inst->cfg->time_str[0] ?: default_fmt, (const struct tm *)tm))
- strncpy(buf, "ERROR", bufsz - 1);
-ENABLE_WARNING(format-nonliteral, format-nonliteral, format-nonliteral)
- return tm->tm_sec;
-}
-
-EINTERN void
-time_instance_update(Instance *inst)
-{
- struct timeval timev;
- struct tm *tm, tms, tmm, tm2;
- time_t tt;
- int started = 0, num, i;
- int day;
-
- tzset();
- gettimeofday(&timev, NULL);
- tt = (time_t)(timev.tv_sec);
- tm = localtime(&tt);
-
- time_daynames_clear(inst);
- if (!tm) return;
-
- // tms == current date time "saved"
- // tm2 == date to look at adjusting for madj
- // tm2 == month baseline @ 1st
- memcpy(&tms, tm, sizeof(struct tm));
- num = 0;
- for (day = (0 - 6); day < (31 + 16); day++)
- {
- memcpy(&tmm, &tms, sizeof(struct tm));
- tmm.tm_sec = 0;
- tmm.tm_min = 0;
- tmm.tm_hour = 10;
- tmm.tm_mon += inst->madj;
- tmm.tm_mday = 1; // start at the 1st of the month
- tmm.tm_wday = 0; // ignored by mktime
- tmm.tm_yday = 0; // ignored by mktime
- tmm.tm_isdst = 0; // ignored by mktime
- tt = mktime(&tmm);
- tm = localtime(&tt);
- memcpy(&tm2, tm, sizeof(struct tm));
-
- tt = mktime(&tmm);
- tt += (day * 60 * 60 * 24);
- tm = localtime(&tt);
- memcpy(&tmm, tm, sizeof(struct tm));
- if (!started)
- {
- if (tm->tm_wday == inst->cfg->week.start)
- {
- char buf[32];
-
- for (i = 0; i < 7; i++, tm->tm_wday = (tm->tm_wday + 1) % 7)
- {
- strftime(buf, sizeof(buf), "%a", tm);
- inst->daynames[i] = eina_stringshare_add(buf);
- }
- started = 1;
- }
- }
- if (started)
- {
- int y = num / 7;
- int x = num % 7;
-
- if (y < 6)
- {
- inst->daynums[x][y] = tmm.tm_mday;
-
- inst->dayvalids[x][y] = 0;
- if (tmm.tm_mon == tm2.tm_mon) inst->dayvalids[x][y] = 1;
-
- inst->daytoday[x][y] = 0;
- if ((tmm.tm_mon == tms.tm_mon) &&
- (tmm.tm_year == tms.tm_year) &&
- (tmm.tm_mday == tms.tm_mday))
- inst->daytoday[x][y] = 1;
-
- inst->dayweekends[x][y] = 0;
- for (i = inst->cfg->weekend.start;
- i < (inst->cfg->weekend.start + inst->cfg->weekend.len);
- i++)
- {
- if (tmm.tm_wday == (i % 7))
- {
- inst->dayweekends[x][y] = 1;
- break;
- }
- }
- }
- num++;
- }
- }
-
- memcpy(&tmm, &tms, sizeof(struct tm));
- tmm.tm_sec = 0;
- tmm.tm_min = 0;
- tmm.tm_hour = 10;
- tmm.tm_mon += inst->madj;
- tmm.tm_mday = 1; // start at the 1st of the month
- tmm.tm_wday = 0; // ignored by mktime
- tmm.tm_yday = 0; // ignored by mktime
- tmm.tm_isdst = 0; // ignored by mktime
- tt = mktime(&tmm);
- tm = localtime(&tt);
- memcpy(&tm2, tm, sizeof(struct tm));
- inst->year[sizeof(inst->year) - 1] = 0;
- strftime(inst->year, sizeof(inst->year) - 1, "%Y", (const struct tm *)&tm2);
- inst->month[sizeof(inst->month) - 1] = 0;
- strftime(inst->month, sizeof(inst->month) - 1, "%B", (const struct tm *)&tm2); // %b for short month
-}
-
-
-static Eina_Bool
-_update_today_timer(void *data EINA_UNUSED)
-{
- time_t t, t_tomorrow;
- const struct tm *now;
- struct tm today;
-
- t = time(NULL);
- now = localtime(&t);
- memcpy(&today, now, sizeof(today));
- today.tm_sec = 1;
- today.tm_min = 0;
- today.tm_hour = 0;
-
- t_tomorrow = mktime(&today) + 24 * 60 * 60;
- if (update_today) ecore_timer_interval_set(update_today, t_tomorrow - t);
- else update_today = ecore_timer_loop_add(t_tomorrow - t, _update_today_timer, NULL);
- clock_date_update();
- return EINA_TRUE;
-}
-
-static void
-_time_changed(void)
-{
- _update_today_timer(NULL);
- clock_instances_redo();
-}
-
-static Eina_Bool
-_clock_eio_update(void *d EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- Eio_Monitor_Event *ev = event;
-
- if ((ev->monitor == clock_te_monitor) ||
- (ev->monitor == clock_tz2_monitor) ||
- (ev->monitor == clock_tzetc_monitor))
- {
- if (eina_streq(ev->filename, "/etc/localtime") ||
- eina_streq(ev->filename, "/etc/timezone"))
- {
- _time_changed();
- }
- }
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_clock_time_update(void *d EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- _time_changed();
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_clock_eio_error(void *d EINA_UNUSED, int type EINA_UNUSED, void *event)
-{
- Eio_Monitor_Event *ev = event;
-
- if ((ev->monitor == clock_te_monitor) ||
- (ev->monitor == clock_tz2_monitor) ||
- (ev->monitor == clock_tzetc_monitor))
- {
- E_FREE_FUNC(clock_te_monitor, eio_monitor_del);
- if (ecore_file_exists("/etc/localtime"))
- clock_te_monitor = eio_monitor_add("/etc/localtime");
-
- E_FREE_FUNC(clock_tz2_monitor, eio_monitor_del);
- if (ecore_file_exists("/etc/timezone"))
- clock_tz2_monitor = eio_monitor_add("/etc/timezone");
-
- E_FREE_FUNC(clock_tzetc_monitor, eio_monitor_del);
- if (ecore_file_is_dir("/etc"))
- clock_tzetc_monitor = eio_monitor_add("/etc");
- }
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_clock_screensaver_on()
-{
- clock_timer_set(0);
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_clock_screensaver_off()
-{
- clock_timer_set(1);
- return ECORE_CALLBACK_RENEW;
-}
-
-EINTERN void
-time_init(void)
-{
- if (ecore_file_exists("/etc/localtime"))
- clock_te_monitor = eio_monitor_add("/etc/localtime");
- if (ecore_file_exists("/etc/timezone"))
- clock_tz2_monitor = eio_monitor_add("/etc/timezone");
- if (ecore_file_is_dir("/etc"))
- clock_tzetc_monitor = eio_monitor_add("/etc");
-
- E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_ERROR, _clock_eio_error, NULL);
- E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_FILE_CREATED, _clock_eio_update, NULL);
- E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_FILE_MODIFIED, _clock_eio_update, NULL);
- E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_FILE_DELETED, _clock_eio_update, NULL);
- E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_SELF_DELETED, _clock_eio_update, NULL);
- E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_SELF_RENAME, _clock_eio_update, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_SYS_RESUME, _clock_time_update, NULL);
- E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED, _clock_time_update, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_ON, _clock_screensaver_on, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_OFF, _clock_screensaver_off, NULL);
- _update_today_timer(NULL);
-}
-
-EINTERN void
-time_shutdown(void)
-{
- E_FREE_FUNC(update_today, ecore_timer_del);
- E_FREE_FUNC(clock_te_monitor, eio_monitor_del);
- E_FREE_FUNC(clock_tz2_monitor, eio_monitor_del);
- E_FREE_FUNC(clock_tzetc_monitor, eio_monitor_del);
-}
diff --git a/src/modules/wireless/connman.c b/src/modules/wireless/connman.c
deleted file mode 100644
index 21fa98e8a2..0000000000
--- a/src/modules/wireless/connman.c
+++ /dev/null
@@ -1,1673 +0,0 @@
-#include "wireless.h"
-
-#define CONNMAN_BUS_NAME "net.connman"
-#define CONNMAN_MANAGER_IFACE CONNMAN_BUS_NAME ".Manager"
-#define CONNMAN_SERVICE_IFACE CONNMAN_BUS_NAME ".Service"
-#define CONNMAN_TECHNOLOGY_IFACE CONNMAN_BUS_NAME ".Technology"
-#define CONNMAN_TECHNOLOGY_PATH_ETHERNET "/net/connman/technology/ethernet"
-#define CONNMAN_TECHNOLOGY_PATH_WIFI "/net/connman/technology/wifi"
-#define CONNMAN_TECHNOLOGY_PATH_BT "/net/connman/technology/bluetooth"
-#define CONNMAN_TECHNOLOGY_PATH_CELLULAR "/net/connman/technology/cellular"
-#define CONNMAN_AGENT_IFACE "net.connman.Agent"
-#define CONNMAN_AGENT_PATH "/org/enlightenment/wireless/agent"
-
-#define CONNMAN_SERVICE_TYPE_ITER(i) \
- for ((i) = 0; (i) < CONNMAN_SERVICE_TYPE_LAST; (i)++)
-
-#define MILLI_PER_SEC 1000
-#define CONNMAN_CONNECTION_TIMEOUT 60 * MILLI_PER_SEC
-
-#undef DBG
-#undef INF
-#undef WRN
-#undef ERR
-
-#define DBG(...) EINA_LOG_DOM_DBG(_connman_log_dom, __VA_ARGS__)
-#define INF(...) EINA_LOG_DOM_INFO(_connman_log_dom, __VA_ARGS__)
-#define WRN(...) EINA_LOG_DOM_WARN(_connman_log_dom, __VA_ARGS__)
-#define ERR(...) EINA_LOG_DOM_ERR(_connman_log_dom, __VA_ARGS__)
-
-typedef enum
-{
- CONNMAN_STATE_NONE = -1, /* All unknown states */
- CONNMAN_STATE_OFFLINE,
- CONNMAN_STATE_IDLE,
- CONNMAN_STATE_ASSOCIATION,
- CONNMAN_STATE_CONFIGURATION,
- CONNMAN_STATE_READY,
- CONNMAN_STATE_ONLINE,
- CONNMAN_STATE_DISCONNECT,
- CONNMAN_STATE_FAILURE,
-} Connman_State;
-
-typedef enum
-{
- CONNMAN_SERVICE_TYPE_NONE = -1, /* All non-supported types */
- CONNMAN_SERVICE_TYPE_ETHERNET = 0,
- CONNMAN_SERVICE_TYPE_WIFI = 1,
- CONNMAN_SERVICE_TYPE_BLUETOOTH = 2,
- CONNMAN_SERVICE_TYPE_CELLULAR = 3,
- CONNMAN_SERVICE_TYPE_LAST = 4,
-} Connman_Service_Type;
-
-typedef struct Connman_Technology
-{
- Connman_Service_Type type;
- Eldbus_Proxy *proxy;
- Eina_Stringshare *tethering_ssid;
- Eina_Stringshare *tethering_passwd;
- Eina_Bool powered E_BITFIELD;
- Eina_Bool connected E_BITFIELD;
- Eina_Bool tethering E_BITFIELD;
-} Connman_Technology;
-
-typedef struct
-{
- EINA_INLIST;
- Eldbus_Proxy *proxy;
-
- /* Private */
- struct
- {
- Eldbus_Pending *connect;
- Eldbus_Pending *disconnect;
- Eldbus_Pending *remov;
- void *data;
- } pending;
- Eldbus_Signal_Handler *handler;
-
- /* Properties */
- Eina_Stringshare *path;
- Eina_Stringshare *name;
- Wireless_Network_Security security;
- Connman_State state;
- Connman_Service_Type type;
- uint8_t strength;
-
- /* Connection */
- unsigned int method;
- Eina_Stringshare *address;
- Eina_Stringshare *gateway;
- union
- {
- struct
- {
- Eina_Stringshare *netmask;
- } v4;
- struct
- {
- Eina_Stringshare *prefixlength;
- Wireless_Network_IPv6_Privacy privacy;
- } v6;
- } ip;
-
- Eina_Array *domain_servers;
- Eina_Array *name_servers;
- Eina_Array *time_servers;
-
- /* Proxy */
- unsigned int proxy_type;
- Eina_Stringshare *proxy_url;
- Eina_Array *proxy_servers;
- Eina_Array *proxy_excludes;
- Eina_Bool ipv6 E_BITFIELD;
- Eina_Bool favorite E_BITFIELD;
-} Connman_Service;
-
-typedef enum
-{
- CONNMAN_FIELD_STATE_MANDATORY,
- CONNMAN_FIELD_STATE_OPTIONAL,
- CONNMAN_FIELD_STATE_ALTERNATE,
- CONNMAN_FIELD_STATE_INFO,
-} Connman_Field_State;
-
-typedef struct Connman_Field
-{
- const char *name;
-
- Connman_Field_State requirement;
- const char *type;
- const char *value;
-} Connman_Field;
-
-static int _connman_log_dom = -1;
-
-static Eldbus_Proxy *proxy_manager;
-
-static Eldbus_Pending *pending_gettechnologies;
-static Eldbus_Pending *pending_getservices;
-static Eldbus_Pending *pending_getproperties_manager;
-
-static Eina_List *signal_handlers;
-
-static Eina_Inlist *connman_services_list[CONNMAN_SERVICE_TYPE_LAST];
-static Eina_Hash *connman_services[CONNMAN_SERVICE_TYPE_LAST];
-static Eldbus_Service_Interface *agent_iface;
-
-static Connman_Service *connman_current_service[CONNMAN_SERVICE_TYPE_LAST];
-static Wireless_Connection *connman_current_connection[CONNMAN_SERVICE_TYPE_LAST];
-
-static Connman_Technology connman_technology[CONNMAN_SERVICE_TYPE_LAST];
-
-/* connman -> wireless */
-static Eina_Hash *connman_services_map[CONNMAN_SERVICE_TYPE_LAST];
-
-static inline Eina_Bool
-_connman_service_is_connected(const Connman_Service *cs)
-{
- return (cs->state >= CONNMAN_STATE_ASSOCIATION) && (cs->state <= CONNMAN_STATE_ONLINE);
-}
-
-static void
-_eldbus_proxy_del(Eldbus_Proxy *proxy)
-{
- Eldbus_Object *obj;
-
- obj = eldbus_proxy_object_get(proxy);
- eldbus_proxy_unref(proxy);
- eldbus_object_unref(obj);
-}
-
-static void
-_connman_service_connect_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- Connman_Service *cs = data;
- const char *error;
-
- /* FIXME */
- cs->pending.connect = NULL;
- eldbus_message_error_get(msg, NULL, &error);
-}
-
-static Eina_Bool
-_connman_service_connect(Wireless_Network *wn)
-{
- Connman_Service *cs;
-
- cs = eina_hash_find(connman_services[wn->type], wn->path);
- EINA_SAFETY_ON_NULL_RETURN_VAL(cs, EINA_FALSE);
- if (!cs->pending.connect)
- cs->pending.connect = eldbus_proxy_call(cs->proxy, "Connect",
- _connman_service_connect_cb, cs,
- CONNMAN_CONNECTION_TIMEOUT, "");
- return !!cs->pending.connect;
-}
-
-static void
-_connman_update_technologies(void)
-{
- Eina_Bool avail[CONNMAN_SERVICE_TYPE_LAST];
- int i;
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- avail[i] = connman_technology[i].type > -1;
- wireless_service_type_available_set(avail);
-}
-
-static void
-_connman_update_enabled_technologies(void)
-{
- Eina_Bool enabled[CONNMAN_SERVICE_TYPE_LAST];
- int i;
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- enabled[i] = connman_technology[i].powered;
- wireless_service_type_enabled_set(enabled);
-}
-
-static Wireless_Network_State
-_connman_wifi_state_convert(Connman_State state)
-{
- Wireless_Network_State wifi_state;
- switch (state)
- {
- case CONNMAN_STATE_ASSOCIATION:
- case CONNMAN_STATE_CONFIGURATION:
- wifi_state = WIRELESS_NETWORK_STATE_CONFIGURING;
- break;
- case CONNMAN_STATE_READY:
- wifi_state = WIRELESS_NETWORK_STATE_CONNECTED;
- break;
- case CONNMAN_STATE_ONLINE:
- wifi_state = WIRELESS_NETWORK_STATE_ONLINE;
- break;
- case CONNMAN_STATE_FAILURE:
- wifi_state = WIRELESS_NETWORK_STATE_FAILURE;
- break;
- case CONNMAN_STATE_NONE:
- case CONNMAN_STATE_OFFLINE:
- case CONNMAN_STATE_IDLE:
- case CONNMAN_STATE_DISCONNECT:
- default:
- wifi_state = WIRELESS_NETWORK_STATE_NONE;
- }
- return wifi_state;
-}
-
-static Wireless_Network *
-_connman_service_convert(Connman_Service *cs)
-{
- Wireless_Network *wn;
-
- wn = E_NEW(Wireless_Network, 1);
- wn->path = cs->path;
- wn->name = cs->name;
- wn->security = cs->security;
- wn->state = _connman_wifi_state_convert(cs->state);
- wn->type = (Wireless_Service_Type)cs->type;
- wn->strength = cs->strength;
- wn->connect_cb = _connman_service_connect;
- return wn;
-}
-
-static void
-_connman_update_current_network(Connman_Service *cs, Connman_Service_Type type)
-{
- if (connman_current_service[type] != cs)
- {
- E_FREE(connman_current_connection[type]);
- if (cs)
- connman_current_connection[type] = E_NEW(Wireless_Connection, 1);
- }
- connman_current_service[type] = cs;
- if (cs)
- {
- connman_current_connection[type]->wn = eina_hash_find(connman_services_map[type], &cs);
- memcpy(&connman_current_connection[type]->method,
- &cs->method, sizeof(Wireless_Connection) - sizeof(void*));
- }
- else
- connman_current_connection[type] = NULL;
- wireless_wifi_current_networks_set(connman_current_connection);
-}
-
-static void
-_connman_update_networks(Connman_Service_Type type)
-{
- Eina_Array *arr;
- Connman_Service *cs;
- Wireless_Network *wn;
- Eina_Hash *map;
- Connman_Service *services[CONNMAN_SERVICE_TYPE_LAST] = {NULL};
-
- map = connman_services_map[type];
- connman_services_map[type] = eina_hash_pointer_new(free);
- arr = eina_array_new(eina_hash_population(connman_services[type]));
- EINA_INLIST_FOREACH(connman_services_list[type], cs)
- {
- wn = _connman_service_convert(cs);
- eina_hash_add(connman_services_map[type], &cs, wn);
- eina_array_push(arr, wn);
- if (connman_current_service[type] && _connman_service_is_connected(cs))
- services[type] = cs;
- }
- memcpy(&connman_current_service, services, CONNMAN_SERVICE_TYPE_LAST * sizeof(void*));
- arr = wireless_networks_set(arr);
- _connman_update_current_network(connman_current_service[type], type);
- eina_hash_free(map);
- eina_array_free(arr);
-}
-
-static void
-_connman_update_airplane_mode(Eina_Bool offline)
-{
- wireless_airplane_mode_set(offline);
-}
-
-static Connman_State
-str_to_state(const char *s)
-{
- if (!strcmp(s, "offline"))
- return CONNMAN_STATE_OFFLINE;
- if (!strcmp(s, "idle"))
- return CONNMAN_STATE_IDLE;
- if (!strcmp(s, "association"))
- return CONNMAN_STATE_ASSOCIATION;
- if (!strcmp(s, "configuration"))
- return CONNMAN_STATE_CONFIGURATION;
- if (!strcmp(s, "ready"))
- return CONNMAN_STATE_READY;
- if (!strcmp(s, "online"))
- return CONNMAN_STATE_ONLINE;
- if (!strcmp(s, "disconnect"))
- return CONNMAN_STATE_DISCONNECT;
- if (!strcmp(s, "failure"))
- return CONNMAN_STATE_FAILURE;
-
- ERR("Unknown state %s", s);
- return CONNMAN_STATE_NONE;
-}
-
-static Connman_Service_Type
-str_to_type(const char *s)
-{
- if (!strcmp(s, "ethernet"))
- return CONNMAN_SERVICE_TYPE_ETHERNET;
- if (!strcmp(s, "wifi"))
- return CONNMAN_SERVICE_TYPE_WIFI;
- if (!strcmp(s, "bluetooth"))
- return CONNMAN_SERVICE_TYPE_BLUETOOTH;
- if (!strcmp(s, "cellular"))
- return CONNMAN_SERVICE_TYPE_CELLULAR;
-
- DBG("Unknown type %s", s);
- return CONNMAN_SERVICE_TYPE_NONE;
-}
-
-static Wireless_Network_Security
-str_to_security(const char *s)
-{
- if (!strcmp(s, "none")) return WIRELESS_NETWORK_SECURITY_NONE;
- if (!strcmp(s, "wep")) return WIRELESS_NETWORK_SECURITY_WEP;
- if (!strcmp(s, "psk")) return WIRELESS_NETWORK_SECURITY_PSK;
- if (!strcmp(s, "ieee8021x")) return WIRELESS_NETWORK_SECURITY_IEEE8021X;
- if (!strcmp(s, "wps")) return WIRELESS_NETWORK_SECURITY_WPS;
- CRI("UNKNOWN TYPE %s", s);
- return WIRELESS_NETWORK_SECURITY_NONE;
-}
-
-static void
-_connman_service_free(Connman_Service *cs)
-{
- if (!cs) return;
-
- if (cs->pending.connect)
- {
- eldbus_pending_cancel(cs->pending.connect);
- free(cs->pending.data);
- }
- else if (cs->pending.disconnect)
- {
- eldbus_pending_cancel(cs->pending.disconnect);
- free(cs->pending.data);
- }
- else if (cs->pending.remov)
- {
- eldbus_pending_cancel(cs->pending.remov);
- free(cs->pending.data);
- }
- eina_stringshare_del(cs->address);
- eina_stringshare_del(cs->gateway);
- if (cs->ipv6)
- eina_stringshare_del(cs->ip.v6.prefixlength);
- else
- eina_stringshare_del(cs->ip.v4.netmask);
-
- eina_stringshare_del(cs->proxy_url);
-
- array_clear(cs->domain_servers);
- array_clear(cs->name_servers);
- array_clear(cs->time_servers);
-
- array_clear(cs->proxy_servers);
- array_clear(cs->proxy_excludes);
-
- eina_stringshare_del(cs->name);
- eina_stringshare_del(cs->path);
- eldbus_signal_handler_del(cs->handler);
- DBG("service free %p || proxy %p", cs, cs->proxy);
- _eldbus_proxy_del(cs->proxy);
- connman_services_list[cs->type] = eina_inlist_remove(connman_services_list[cs->type], EINA_INLIST_GET(cs));
-
- free(cs);
-}
-
-static void
-_connman_service_parse_stringarray(Eldbus_Message_Iter *value, Eina_Array **arr)
-{
- Eldbus_Message_Iter *itr_array;
- const char *s;
-
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(value, "as",
- &itr_array));
- if (*arr)
- {
- while (eina_array_count(*arr))
- eina_stringshare_del(eina_array_pop(*arr));
- }
- else
- *arr = eina_array_new(1);
- while (eldbus_message_iter_get_and_next(itr_array, 's', &s))
- eina_array_push(*arr, eina_stringshare_add(s));
-}
-
-static void
-_connman_service_parse_prop_changed(Connman_Service *cs, const char *prop_name, Eldbus_Message_Iter *value)
-{
- DBG("service %p %s prop %s", cs, cs->path, prop_name);
-
- if (!strcmp(prop_name, "State"))
- {
- const char *state;
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(value,
- "s",
- &state));
- cs->state = str_to_state(state);
- DBG("New state: %s %d", state, cs->state);
- }
- if (!strcmp(prop_name, "Favorite"))
- {
- Eina_Bool state;
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(value,
- "b",
- &state));
- cs->favorite = !!state;
- DBG("New favorite state: %d", cs->favorite);
- }
- else if (!strcmp(prop_name, "Name"))
- {
- const char *name;
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(value,
- "s",
- &name));
- eina_stringshare_replace(&cs->name, name);
- DBG("New name: %s", cs->name);
- }
- else if (!strcmp(prop_name, "Type"))
- {
- const char *type;
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(value,
- "s",
- &type));
- cs->type = str_to_type(type);
- DBG("New type: %s %d", type, cs->type);
- }
- else if (!strcmp(prop_name, "Strength"))
- {
- uint8_t strength;
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(value,
- "y",
- &strength));
- cs->strength = strength;
- DBG("New strength: %d", strength);
- }
- else if (!strcmp(prop_name, "Security"))
- {
- const char *s;
- Eldbus_Message_Iter *itr_array;
-
- DBG("Old security: %u", cs->security);
- cs->security = WIRELESS_NETWORK_SECURITY_NONE;
-
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(value, "as",
- &itr_array));
- while (eldbus_message_iter_get_and_next(itr_array, 's', &s))
- cs->security |= str_to_security(s);
- DBG("New security %u", cs->security);
- }
- else if (!strcmp(prop_name, "IPv4"))
- {
- Eldbus_Message_Iter *array, *dict;
-
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(value, "a{sv}", &array));
- while (eldbus_message_iter_get_and_next(array, 'e', &dict))
- {
- Eldbus_Message_Iter *var;
- const char *name, *val;
-
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(dict, "sv", &name, &var));
- if (!strcmp(name, "Method"))
- {
- cs->method = WIRELESS_NETWORK_IPV4_METHOD_OFF;
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- if (!strcmp(val, "off"))
- cs->method = WIRELESS_NETWORK_IPV4_METHOD_OFF;
- else if (!strcmp(val, "dhcp"))
- cs->method = WIRELESS_NETWORK_IPV4_METHOD_DHCP;
- else if (!strcmp(val, "manual"))
- cs->method = WIRELESS_NETWORK_IPV4_METHOD_MANUAL;
- else if (!strcmp(val, "fixed"))
- cs->method = WIRELESS_NETWORK_IPV4_METHOD_FIXED;
- }
- else if (!strcmp(name, "Address"))
- {
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- eina_stringshare_replace(&cs->address, val);
- }
- else if (!strcmp(name, "Netmask"))
- {
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- eina_stringshare_replace(&cs->ip.v4.netmask, val);
- }
- else if (!strcmp(name, "Gateway"))
- {
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- eina_stringshare_replace(&cs->gateway, val);
- }
- }
- }
- else if (!strcmp(prop_name, "IPv6"))
- {
- Eldbus_Message_Iter *array, *dict;
-
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(value, "a{sv}", &array));
- while (eldbus_message_iter_get_and_next(array, 'e', &dict))
- {
- Eldbus_Message_Iter *var;
- const char *name, *val;
-
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(dict, "sv", &name, &var));
- if (!strcmp(name, "Method"))
- {
- cs->method = WIRELESS_NETWORK_IPV6_METHOD_OFF;
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- if (!strcmp(val, "auto"))
- cs->method = WIRELESS_NETWORK_IPV6_METHOD_AUTO;
- else if (!strcmp(val, "manual"))
- cs->method = WIRELESS_NETWORK_IPV6_METHOD_MANUAL;
- else if (!strcmp(val, "6to4"))
- cs->method = WIRELESS_NETWORK_IPV6_METHOD_6TO4;
- else if (!strcmp(val, "fixed"))
- cs->method = WIRELESS_NETWORK_IPV6_METHOD_FIXED;
- }
- else if (!strcmp(name, "Privacy"))
- {
- cs->ip.v6.privacy = WIRELESS_NETWORK_IPV6_PRIVACY_DISABLED;
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- if (!strcmp(val, "disabled"))
- cs->ip.v6.privacy = WIRELESS_NETWORK_IPV6_PRIVACY_DISABLED;
- else if (!strcmp(val, "enabled"))
- cs->ip.v6.privacy = WIRELESS_NETWORK_IPV6_PRIVACY_ENABLED;
- else if (!strcmp(val, "preferred"))
- cs->ip.v6.privacy = WIRELESS_NETWORK_IPV6_PRIVACY_PREFERRED;
- }
- else if (!strcmp(name, "Address"))
- {
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- eina_stringshare_replace(&cs->address, val);
- }
- else if (!strcmp(name, "PrefixLength"))
- {
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- eina_stringshare_replace(&cs->ip.v6.prefixlength, val);
- }
- else if (!strcmp(name, "Gateway"))
- {
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- eina_stringshare_replace(&cs->gateway, val);
- }
- }
- }
- else if (!strcmp(prop_name, "Proxy"))
- {
- Eldbus_Message_Iter *array, *dict;
-
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(value, "a{sv}", &array));
- while (eldbus_message_iter_get_and_next(array, 'e', &dict))
- {
- Eldbus_Message_Iter *var;
- const char *name, *val;
-
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(dict, "sv", &name, &var));
- if (!strcmp(name, "Method"))
- {
- cs->proxy_type = WIRELESS_PROXY_TYPE_DIRECT;
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- if (!strcmp(val, "manual"))
- cs->proxy_type = WIRELESS_PROXY_TYPE_MANUAL;
- else if (!strcmp(val, "auto"))
- cs->proxy_type = WIRELESS_PROXY_TYPE_AUTO;
- }
- else if (!strcmp(name, "URL"))
- {
- EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_iter_arguments_get(var, "s", &val));
- eina_stringshare_replace(&cs->proxy_url, val);
- }
- else if (!strcmp(name, "Servers"))
- _connman_service_parse_stringarray(value, &cs->proxy_servers);
- else if (!strcmp(name, "Excludes"))
- _connman_service_parse_stringarray(value, &cs->proxy_excludes);
- }
- }
- else if (!strcmp(prop_name, "Nameservers"))
- _connman_service_parse_stringarray(value, &cs->name_servers);
- else if (!strcmp(prop_name, "Timeservers"))
- _connman_service_parse_stringarray(value, &cs->time_servers);
- else if (!strcmp(prop_name, "Domains"))
- _connman_service_parse_stringarray(value, &cs->domain_servers);
-}
-
-static Eina_Bool
-_connman_service_prop_dict_changed(Connman_Service *cs, Eldbus_Message_Iter *props)
-{
- Eldbus_Message_Iter *dict;
-
- while (eldbus_message_iter_get_and_next(props, 'e', &dict))
- {
- char *name;
- Eldbus_Message_Iter *var;
-
- if (eldbus_message_iter_arguments_get(dict, "sv", &name, &var))
- _connman_service_parse_prop_changed(cs, name, var);
- }
- if ((cs->type <= CONNMAN_SERVICE_TYPE_NONE) ||
- (cs->type >= CONNMAN_SERVICE_TYPE_LAST))
- return EINA_FALSE;
- else
- {
- if (_connman_service_is_connected(cs))
- _connman_update_current_network(cs, cs->type);
- }
- return EINA_TRUE;
-}
-
-static void
-_connman_service_property(void *data, const Eldbus_Message *msg)
-{
- Connman_Service *cs = data;
- Eldbus_Message_Iter *var;
- const char *name;
-
- if (eldbus_message_arguments_get(msg, "sv", &name, &var))
- _connman_service_parse_prop_changed(cs, name, var);
- if (_connman_service_is_connected(cs))
- _connman_update_current_network(cs, cs->type);
-}
-
-static Connman_Service *
-_connman_service_new(const char *path, Eldbus_Message_Iter *props)
-{
- Connman_Service *cs;
- Eldbus_Object *obj;
-
- cs = E_NEW(Connman_Service, 1);
- cs->path = eina_stringshare_add(path);
-
- obj = eldbus_object_get(dbus_conn, CONNMAN_BUS_NAME, path);
- cs->proxy = eldbus_proxy_get(obj, CONNMAN_SERVICE_IFACE);
- cs->handler = eldbus_proxy_signal_handler_add(cs->proxy, "PropertyChanged",
- _connman_service_property, cs);
-
- if (!_connman_service_prop_dict_changed(cs, props))
- {
- ERR("Service added of invalid type");
- _connman_service_free(cs);
- return NULL;
- }
- connman_services_list[cs->type] = eina_inlist_append(connman_services_list[cs->type], EINA_INLIST_GET(cs));
- eina_hash_add(connman_services[cs->type], cs->path, cs);
- DBG("Added service: %p %s || proxy %p", cs, path, cs->proxy);
- return cs;
-}
-
-static void
-_connman_manager_agent_register(void *data EINA_UNUSED, const Eldbus_Message *msg EINA_UNUSED, Eldbus_Pending *pending EINA_UNUSED)
-{
- /* FIXME: should this do something? */
-}
-
-static Eina_Bool
-_connman_technology_parse_prop_changed(Connman_Technology *ct, const char *name, Eldbus_Message_Iter *value)
-{
- Eina_Bool val;
- const char *str;
- Eina_Bool ret = EINA_FALSE;
-
- if (!strcmp(name, "Powered"))
- {
- if (!eldbus_message_iter_arguments_get(value, "b", &val)) goto exit;
-
- val = !!val;
- if (val != ct->powered) ret = EINA_TRUE;
- ct->powered = !!val;
- }
- else if (!strcmp(name, "Connected"))
- {
- if (!eldbus_message_iter_arguments_get(value, "b", &val)) goto exit;
- ct->connected = !!val;
- }
- else if (!strcmp(name, "Tethering"))
- {
- if (!eldbus_message_iter_arguments_get(value, "b", &val)) goto exit;
- ct->tethering = !!val;
- }
- else if (!strcmp(name, "TetheringIdentifier"))
- {
- if (!eldbus_message_iter_arguments_get(value, "b", &str)) goto exit;
- ct->tethering_ssid = eina_stringshare_add(str);
- }
- else if (!strcmp(name, "TetheringPassphrase"))
- {
- if (!eldbus_message_iter_arguments_get(value, "b", &str)) goto exit;
- ct->tethering_passwd = eina_stringshare_add(str);
- }
- exit:
- return ret;
-}
-
-static void
-_connman_technology_event_property(void *data, const Eldbus_Message *msg)
-{
- Eldbus_Message_Iter *var;
- const char *name;
- Connman_Technology *ct = NULL;
- int i;
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- if (data == connman_technology[i].proxy)
- {
- ct = &connman_technology[i];
- break;
- }
- if (!ct) return;
-
- if (!eldbus_message_arguments_get(msg, "sv", &name, &var))
- ERR("Could not parse message %p", msg);
- else if (_connman_technology_parse_prop_changed(ct, name, var))
- _connman_update_enabled_technologies();
-}
-
-static Eina_Bool
-_connman_manager_parse_prop_changed(const char *name, Eldbus_Message_Iter *value)
-{
- if (!strcmp(name, "State"))
- {
- const char *state;
-
- if (!eldbus_message_iter_arguments_get(value, "s", &state))
- return EINA_FALSE;
- DBG("New state: %s", state);
- //_connman_update_state(str_to_state(state));
- }
- else if (!strcmp(name, "OfflineMode"))
- {
- Eina_Bool offline;
- if (!eldbus_message_iter_arguments_get(value, "b", &offline))
- return EINA_FALSE;
- _connman_update_airplane_mode(offline);
- }
- else
- return EINA_FALSE;
-
- return EINA_TRUE;
-}
-
-static void
-_connman_manager_getproperties(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- Eldbus_Message_Iter *array, *dict;
- const char *name, *text;
-
- pending_getproperties_manager = NULL;
- if (eldbus_message_error_get(msg, &name, &text))
- {
- ERR("Could not get properties. %s: %s", name, text);
- return;
- }
-
- if (!eldbus_message_arguments_get(msg, "a{sv}", &array))
- {
- ERR("Error getting arguments.");
- return;
- }
-
- while (eldbus_message_iter_get_and_next(array, 'e', &dict))
- {
- const char *key;
- Eldbus_Message_Iter *var;
-
- if (eldbus_message_iter_arguments_get(dict, "sv", &key, &var))
- _connman_manager_parse_prop_changed(key, var);
- }
-}
-
-static void
-_connman_manager_getservices(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- Eldbus_Message_Iter *array, *s;
- const char *name, *text;
- int i;
- Eina_Bool update[CONNMAN_SERVICE_TYPE_LAST] = {0};
-
- pending_getservices = NULL;
- CONNMAN_SERVICE_TYPE_ITER(i)
- eina_hash_free_buckets(connman_services[i]);
- if (eldbus_message_error_get(msg, &name, &text))
- {
- ERR("Could not get services. %s: %s", name, text);
- return;
- }
-
- if (!eldbus_message_arguments_get(msg, "a(oa{sv})", &array))
- {
- ERR("Error getting array");
- return;
- }
-
- while (eldbus_message_iter_get_and_next(array, 'r', &s))
- {
- const char *path;
- Eldbus_Message_Iter *inner_array;
- Connman_Service *cs;
-
- if (!eldbus_message_iter_arguments_get(s, "oa{sv}", &path, &inner_array))
- continue;
-
- cs = _connman_service_new(path, inner_array);
- if (cs) update[cs->type] = 1;
- }
- CONNMAN_SERVICE_TYPE_ITER(i)
- if (update[i]) _connman_update_networks(i);
-}
-
-static void
-_connman_manager_gettechnologies(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- Eldbus_Message_Iter *array, *s;
- const char *name, *text;
-
- pending_gettechnologies = NULL;
- if (eldbus_message_error_get(msg, &name, &text))
- {
- ERR("Could not get technologies. %s: %s", name, text);
- return;
- }
-
- if (!eldbus_message_arguments_get(msg, "a(oa{sv})", &array))
- {
- ERR("Error getting array");
- return;
- }
-
- while (eldbus_message_iter_get_and_next(array, 'r', &s))
- {
- const char *path;
- Eldbus_Message_Iter *inner_array, *dict;
- Connman_Technology *ct = NULL;
- Eldbus_Object *obj;
- int i;
- const char *paths[] =
- {
- CONNMAN_TECHNOLOGY_PATH_ETHERNET,
- CONNMAN_TECHNOLOGY_PATH_WIFI,
- CONNMAN_TECHNOLOGY_PATH_BT,
- CONNMAN_TECHNOLOGY_PATH_CELLULAR,
- };
-
- if (!eldbus_message_iter_arguments_get(s, "oa{sv}", &path, &inner_array))
- continue;
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- if (strcmp(path, paths[i])) continue;
- ct = &connman_technology[i];
- ct->type = i;
-
- obj = eldbus_object_get(dbus_conn, CONNMAN_BUS_NAME, paths[i]);
- ct->proxy = eldbus_proxy_get(obj, CONNMAN_TECHNOLOGY_IFACE);
- signal_handlers = eina_list_append(signal_handlers,
- eldbus_proxy_signal_handler_add(ct->proxy, "PropertyChanged",
- _connman_technology_event_property, ct->proxy));
- }
- if (!ct)
- {
- ERR("No handler for technology: %s", path);
- continue;
- }
- while (eldbus_message_iter_get_and_next(inner_array, 'e', &dict))
- {
- Eldbus_Message_Iter *var;
-
- if (eldbus_message_iter_arguments_get(dict, "sv", &name, &var))
- _connman_technology_parse_prop_changed(ct, name, var);
- }
- }
- /* scan not supported on bluetooth */
- if (connman_technology[CONNMAN_SERVICE_TYPE_BLUETOOTH].proxy)
- pending_getservices = eldbus_proxy_call(proxy_manager, "GetServices", _connman_manager_getservices,
- NULL, -1, "");
- else if (connman_technology[CONNMAN_SERVICE_TYPE_WIFI].proxy)
- eldbus_proxy_call(connman_technology[CONNMAN_SERVICE_TYPE_WIFI].proxy, "Scan", NULL, NULL, -1, "");
- _connman_update_technologies();
- _connman_update_enabled_technologies();
-}
-
-static void
-_connman_manager_event_services(void *data EINA_UNUSED, const Eldbus_Message *msg)
-{
- Eldbus_Message_Iter *changed, *removed, *s;
- const char *path;
- int i;
- Eina_Bool update[CONNMAN_SERVICE_TYPE_LAST] = {0};
-
- if (pending_getservices) return;
-
- if (!eldbus_message_arguments_get(msg, "a(oa{sv})ao", &changed, &removed))
- {
- ERR("Error getting arguments");
- return;
- }
-
- while (eldbus_message_iter_get_and_next(removed, 'o', &path))
- {
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- if (!eina_hash_del_by_key(connman_services[i], path)) continue;
- DBG("Removed service: %s", path);
- update[i] = 1;
- break;
- }
- }
-
- while (eldbus_message_iter_get_and_next(changed, 'r', &s))
- {
- Connman_Service *cs;
- Eldbus_Message_Iter *array;
- Eina_Bool found = EINA_FALSE;
-
- if (!eldbus_message_iter_arguments_get(s, "oa{sv}", &path, &array))
- continue;
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- cs = eina_hash_find(connman_services[i], path);
- if (!cs) continue;
- if (!_connman_service_prop_dict_changed(cs, array))
- {
- ERR("Service became an invalid type");
- cs->type = i;
- _connman_service_free(cs);
- continue;
- }
- found = update[cs->type] = 1;
- DBG("Changed service: %p %s", cs, path);
- break;
- }
- if (!found)
- {
- cs = _connman_service_new(path, array);
- if (cs) update[cs->type] = 1;
- }
- }
- CONNMAN_SERVICE_TYPE_ITER(i)
- if (update[i]) _connman_update_networks(i);
-}
-
-static void
-_connman_manager_event_property(void *data EINA_UNUSED, const Eldbus_Message *msg)
-{
- Eldbus_Message_Iter *var;
- const char *name;
-
- if (pending_getproperties_manager) return;
- if (!eldbus_message_arguments_get(msg, "sv", &name, &var))
- {
- ERR("Could not parse message %p", msg);
- return;
- }
-
- _connman_manager_parse_prop_changed(name, var);
-}
-
-static Eldbus_Message *
-_connman_agent_release(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
-{
- DBG("Agent released");
- wireless_authenticate_cancel();
- return eldbus_message_method_return_new(msg);
-}
-
-static Eldbus_Message *
-_connman_agent_report_error(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg EINA_UNUSED)
-{
- const char *path, *err;
- E_Notification_Notify n;
-
- if (!eldbus_message_arguments_get(msg, "ss", &path, &err))
- {
- ERR("Could not parse message %p", msg);
- return NULL;
- }
- /* TODO: need a generic "sticky" gadget popup */
- memset(&n, 0, sizeof(E_Notification_Notify));
- n.timeout = 3000;
- n.summary = _("Connection Error");
- n.body = err;
- n.urgency = E_NOTIFICATION_NOTIFY_URGENCY_NORMAL;
- e_notification_client_send(&n, NULL, NULL);
-
- return NULL;
-}
-
-static Eldbus_Message *
-_connman_agent_request_browser(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
-{
- const char *path, *url;
- int i;
- Connman_Service *cs;
- Wireless_Network *wn;
-
- if (!eldbus_message_arguments_get(msg, "ss", &path, &url))
- {
- ERR("Could not parse message %p", msg);
- return NULL;
- }
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- cs = eina_hash_find(connman_services[i], path);
- if (cs) break;
- }
- if (!cs) return NULL;
- wn = eina_hash_find(connman_services_map[i], &cs);
- EINA_SAFETY_ON_NULL_RETURN_VAL(wn, NULL);
- wireless_authenticate_external(wn, url);
- return NULL;
-}
-
-static Eina_Bool
-_connman_field_parse_value(Connman_Field *field, const char *key, Eldbus_Message_Iter *value, const char *signature)
-{
- if (!strcmp(key, "Type"))
- {
- EINA_SAFETY_ON_FALSE_RETURN_VAL(signature[0] == 's', EINA_FALSE);
- eldbus_message_iter_basic_get(value, &field->type);
- return EINA_TRUE;
- }
-
- if (!strcmp(key, "Requirement"))
- {
- const char *req;
- const char *types[] =
- {
- [CONNMAN_FIELD_STATE_MANDATORY] = "mandatory",
- [CONNMAN_FIELD_STATE_OPTIONAL] = "optional",
- [CONNMAN_FIELD_STATE_ALTERNATE] = "alternate",
- [CONNMAN_FIELD_STATE_INFO] = "informational",
- };
- int i;
- EINA_SAFETY_ON_FALSE_RETURN_VAL(signature[0] == 's', EINA_FALSE);
- eldbus_message_iter_basic_get(value, &req);
- for (i = 0; i <= CONNMAN_FIELD_STATE_INFO; i++)
- if (!strcmp(req, types[i]))
- {
- field->requirement = i;
- break;
- }
- return EINA_TRUE;
- }
-
- if (!strcmp(key, "Alternates"))
- {
- EINA_SAFETY_ON_FALSE_RETURN_VAL(signature[0] == 'a', EINA_FALSE);
- /* ignore alternates */
- return EINA_TRUE;
- }
-
- if (!strcmp(key, "Value"))
- {
- EINA_SAFETY_ON_FALSE_RETURN_VAL(signature[0] == 's', EINA_FALSE);
- eldbus_message_iter_basic_get(value, &field->value);
- return EINA_TRUE;
- }
-
- DBG("Ignored unknown argument: %s", key);
- return EINA_FALSE;
-}
-
-static Eina_Bool
-_connman_field_parse(Connman_Field *field, Eldbus_Message_Iter *value, const char *signature EINA_UNUSED)
-{
- Eldbus_Message_Iter *array, *dict;
-
- eldbus_message_iter_arguments_get(value, "a{sv}", &array);
- EINA_SAFETY_ON_NULL_RETURN_VAL(array, EINA_FALSE);
-
- while (eldbus_message_iter_get_and_next(array, 'e', &dict))
- {
- Eldbus_Message_Iter *var;
- const char *key;
- char *sig2;
-
- if (!eldbus_message_iter_arguments_get(dict, "sv", &key, &var))
- return EINA_FALSE;
- sig2 = eldbus_message_iter_signature_get(var);
- if (!sig2)
- return EINA_FALSE;
-
- if (!_connman_field_parse_value(field, key, var, sig2))
- {
- free(sig2);
- return EINA_FALSE;
- }
- free(sig2);
- }
-
- return EINA_TRUE;
-}
-
-static void
-_connman_dbus_dict_append_array(Eldbus_Message_Iter *array, const char *key, Eina_Array *val)
-{
- Eldbus_Message_Iter *dict, *variant, *array2;
- Eina_Stringshare *str;
- unsigned int i;
- Eina_Array_Iterator it;
-
- eldbus_message_iter_arguments_append(array, "{sv}", &dict);
- eldbus_message_iter_basic_append(dict, 's', key);
- variant = eldbus_message_iter_container_new(dict, 'v', "as");
- array2 = eldbus_message_iter_container_new(variant, 'a', "s");
- EINA_ARRAY_ITER_NEXT(val, i, str, it)
- eldbus_message_iter_basic_append(array2, 's', str);
- eldbus_message_iter_container_close(variant, array2);
- eldbus_message_iter_container_close(dict, variant);
- eldbus_message_iter_container_close(array, dict);
-}
-
-static void
-_connman_dbus_dict_append_string(Eldbus_Message_Iter *array, const char *key, const char *val)
-{
- Eldbus_Message_Iter *dict, *variant;
-
- eldbus_message_iter_arguments_append(array, "{sv}", &dict);
- eldbus_message_iter_basic_append(dict, 's', key);
- variant = eldbus_message_iter_container_new(dict, 'v', "s");
- eldbus_message_iter_basic_append(variant, 's', val ?: "");
- eldbus_message_iter_container_close(dict, variant);
- eldbus_message_iter_container_close(array, dict);
-}
-
-static void
-_connman_dbus_dict_append_bool(Eldbus_Message_Iter *array, const char *key, Eina_Bool val)
-{
- Eldbus_Message_Iter *dict, *variant;
-
- eldbus_message_iter_arguments_append(array, "{sv}", &dict);
- eldbus_message_iter_basic_append(dict, 's', key);
- variant = eldbus_message_iter_container_new(dict, 'v', "b");
- eldbus_message_iter_basic_append(variant, 'b', !!val);
- eldbus_message_iter_container_close(dict, variant);
- eldbus_message_iter_container_close(array, dict);
-}
-
-static void
-_connman_agent_auth_send(void *data, const Eina_Array *fields)
-{
- Eldbus_Message *reply;
- Eldbus_Message_Iter *iter, *array;
- const char *f, *fprev = NULL;
- unsigned int i;
- Eina_Array_Iterator it;
-
- if (!fields)
- {
- reply = eldbus_message_error_new(data,
- "net.connman.Agent.Error.Canceled",
- "User canceled dialog");
- eldbus_connection_send(dbus_conn, reply, NULL, NULL, -1);
- return;
- }
- reply = eldbus_message_method_return_new(data);
- iter = eldbus_message_iter_get(reply);
- eldbus_message_iter_arguments_append(iter, "a{sv}", &array);
-
- EINA_ARRAY_ITER_NEXT(fields, i, f, it)
- {
- if ((i % 2) && (fprev))
- _connman_dbus_dict_append_string(array, fprev, f);
- else
- fprev = f;
- }
- eldbus_message_iter_container_close(iter, array);
-
- eldbus_connection_send(dbus_conn, reply, NULL, NULL, -1);
-}
-
-static Eldbus_Message *
-_connman_agent_request_input(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
-{
- Eldbus_Message_Iter *array, *dict;
- const char *path;
- Eina_Array *arr = NULL;
-
- if (!eldbus_message_arguments_get(msg, "oa{sv}", &path, &array))
- return eldbus_message_method_return_new(msg);
-
- /* FIXME: WISPr - net.connman.Agent.Error.LaunchBrowser */
- while (eldbus_message_iter_get_and_next(array, 'e', &dict))
- {
- Eldbus_Message_Iter *var;
- char *signature;
- Connman_Field field = { NULL, CONNMAN_FIELD_STATE_MANDATORY, NULL, NULL };
-
- if (!eldbus_message_iter_arguments_get(dict, "sv", &field.name, &var))
- goto err;
- signature = eldbus_message_iter_signature_get(var);
- if (!signature) goto err;
-
- if (!_connman_field_parse(&field, var, signature))
- {
- free(signature);
- goto err;
- }
- free(signature);
-
- DBG("AGENT Got field:\n"
- "\tName: %s\n"
- "\tType: %s\n"
- "\tRequirement: %d\n"
- "\tAlternates: (omit array)\n"
- "\tValue: %s",
- field.name, field.type, field.requirement, field.value);
-
- if (field.requirement != CONNMAN_FIELD_STATE_MANDATORY) continue;
- if (!arr) arr = eina_array_new(1);
- eina_array_push(arr, eina_stringshare_add(field.name));
- }
- wireless_authenticate(arr, _connman_agent_auth_send, eldbus_message_ref((Eldbus_Message *)msg));
- array_clear(arr);
- return NULL;
-
-err:
- eina_array_free(arr);
- WRN("Failed to parse msg");
- return eldbus_message_method_return_new(msg);
-}
-
-static Eldbus_Message *
-_connman_agent_cancel(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
-{
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
-
- DBG("Agent canceled");
- wireless_authenticate_cancel();
-
- return reply;
-}
-
-static const Eldbus_Method methods[] = {
- { "Release", NULL, NULL, _connman_agent_release, 0 },
- {
- "ReportError", ELDBUS_ARGS({"o", "service"}, {"s", "error"}), NULL,
- _connman_agent_report_error, 0
- },
- //{
- //"ReportPeerError", ELDBUS_ARGS({"o", "peer"}, {"s", "error"}), NULL,
- //_connman_agent_report_peer_error, 0
- //},
- {
- "RequestBrowser", ELDBUS_ARGS({"o", "service"}, {"s", "url"}), NULL,
- _connman_agent_request_browser, 0
- },
- {
- "RequestInput", ELDBUS_ARGS({"o", "service"}, {"a{sv}", "fields"}),
- ELDBUS_ARGS({"a{sv}", ""}), _connman_agent_request_input, 0
- },
- //{
- //"RequestPeerAuthorization", ELDBUS_ARGS({"o", "peer"}, {"a{sv}", "fields"}),
- //ELDBUS_ARGS({"a{sv}", ""}), _connman_agent_request_peer_auth, 0
- //},
- { "Cancel", NULL, NULL, _connman_agent_cancel, 0 },
- { NULL, NULL, NULL, NULL, 0 }
-};
-
-static const Eldbus_Service_Interface_Desc desc = {
- CONNMAN_AGENT_IFACE, methods, NULL, NULL, NULL, NULL
-};
-
-static void
-_connman_start(void)
-{
- Eldbus_Object *obj;
- int i;
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- connman_services[i] = eina_hash_string_superfast_new((Eina_Free_Cb)_connman_service_free);
-
- obj = eldbus_object_get(dbus_conn, CONNMAN_BUS_NAME, "/");
- proxy_manager = eldbus_proxy_get(obj, CONNMAN_MANAGER_IFACE);
-
- signal_handlers = eina_list_append(signal_handlers,
- eldbus_proxy_signal_handler_add(proxy_manager, "PropertyChanged",
- _connman_manager_event_property, NULL));
- signal_handlers = eina_list_append(signal_handlers,
- eldbus_proxy_signal_handler_add(proxy_manager, "ServicesChanged",
- _connman_manager_event_services, NULL));
-
- pending_gettechnologies = eldbus_proxy_call(proxy_manager, "GetTechnologies", _connman_manager_gettechnologies,
- NULL, -1, "");
- pending_getproperties_manager = eldbus_proxy_call(proxy_manager, "GetProperties", _connman_manager_getproperties,
- NULL, -1, "");
-
- agent_iface = eldbus_service_interface_register(dbus_conn, CONNMAN_AGENT_PATH, &desc);
- eldbus_proxy_call(proxy_manager, "RegisterAgent",
- _connman_manager_agent_register, NULL, -1, "o", CONNMAN_AGENT_PATH);
-}
-
-static void
-_connman_end(void)
-{
- int i;
-
- if (!proxy_manager) return;
- eldbus_proxy_call(proxy_manager, "UnregisterAgent", NULL, NULL, -1, "o", CONNMAN_AGENT_PATH);
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- E_FREE_FUNC(connman_services[i], eina_hash_free);
- if (!connman_technology[i].proxy) continue;
- E_FREE_FUNC(connman_technology[i].proxy, _eldbus_proxy_del);
- }
- E_FREE_FUNC(pending_getservices, eldbus_pending_cancel);
- E_FREE_FUNC(pending_getproperties_manager, eldbus_pending_cancel);
- signal_handlers = eina_list_free(signal_handlers);
-
- E_FREE_FUNC(proxy_manager, _eldbus_proxy_del);
- E_FREE_FUNC(agent_iface, eldbus_service_object_unregister);
-}
-
-static void
-_connman_name_owner_changed(void *data EINA_UNUSED, const char *bus EINA_UNUSED, const char *from EINA_UNUSED, const char *to)
-{
- if (to[0])
- _connman_start();
- else
- _connman_end();
-}
-
-EINTERN void
-connman_init(void)
-{
- int i;
-
- if (_connman_log_dom > -1) return;
- CONNMAN_SERVICE_TYPE_ITER(i)
- connman_technology[i].type = -1;
- eldbus_name_owner_changed_callback_add(dbus_conn, CONNMAN_BUS_NAME,
- _connman_name_owner_changed,
- NULL, EINA_TRUE);
- _connman_log_dom = eina_log_domain_register("wireless.connman", EINA_COLOR_ORANGE);
-}
-
-EINTERN void
-connman_shutdown(void)
-{
- int i;
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- E_FREE_FUNC(connman_services_map[i], eina_hash_free);
- E_FREE(connman_current_connection[i]);
- connman_current_service[i] = NULL;
- }
- _connman_end();
- eldbus_name_owner_changed_callback_del(dbus_conn, CONNMAN_BUS_NAME, _connman_name_owner_changed, NULL);
- eina_log_domain_unregister(_connman_log_dom);
- _connman_log_dom = -1;
-}
-
-EINTERN void
-connman_technology_enabled_set(Wireless_Service_Type type, Eina_Bool state)
-{
- Eldbus_Message_Iter *main_iter, *var;
- Eldbus_Message *msg;
-
- EINA_SAFETY_ON_NULL_RETURN(connman_technology[type].proxy);
- msg = eldbus_proxy_method_call_new(connman_technology[type].proxy, "SetProperty");
- main_iter = eldbus_message_iter_get(msg);
- eldbus_message_iter_basic_append(main_iter, 's', "Powered");
- var = eldbus_message_iter_container_new(main_iter, 'v', "b");
- eldbus_message_iter_basic_append(var, 'b', state);
- eldbus_message_iter_container_close(main_iter, var);
-
- eldbus_proxy_send(connman_technology[type].proxy, msg, NULL, NULL, -1);
-}
-
-static void
-_connman_service_edit_timeservers_cb(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- const char *name, *text;
- /* FIXME */
- if (eldbus_message_error_get(msg, &name, &text))
- {
- ERR("Could not set properties. %s: %s", name, text);
- }
-}
-
-static void
-_connman_service_edit_nameservers_cb(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- const char *name, *text;
- /* FIXME */
- if (eldbus_message_error_get(msg, &name, &text))
- {
- ERR("Could not set properties. %s: %s", name, text);
- }
-}
-
-static void
-_connman_service_edit_domains_cb(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- const char *name, *text;
- /* FIXME */
- if (eldbus_message_error_get(msg, &name, &text))
- {
- ERR("Could not set properties. %s: %s", name, text);
- }
-}
-
-static void
-_connman_service_edit_proxy_cb(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- const char *name, *text;
- /* FIXME */
- if (eldbus_message_error_get(msg, &name, &text))
- {
- ERR("Could not set properties. %s: %s", name, text);
- }
-}
-
-static void
-_connman_service_edit_cb(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- const char *name, *text;
- /* FIXME */
- if (eldbus_message_error_get(msg, &name, &text))
- {
- ERR("Could not set properties. %s: %s", name, text);
- }
-}
-
-static void
-_connman_service_remove_cb(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- const char *name, *text;
-
- if (eldbus_message_error_get(msg, &name, &text))
- ERR("Could not remove service. %s: %s", name, text);
-}
-
-EINTERN void
-connman_service_edit(const char *path, Wireless_Connection *wc)
-{
- int i;
- Eldbus_Message *msg;
- Eldbus_Message_Iter *iter, *variant, *array;
- Connman_Service *cs = NULL;
- const char *prop[] =
- {
- "IPv4.Configuration",
- "IPv6.Configuration",
- };
- const char *method[] =
- {
- "off",
- "manual",
- "dhcp",
- "fixed",
- };
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- cs = eina_hash_find(connman_services[i], path);
- if (cs) break;
- }
- EINA_SAFETY_ON_NULL_RETURN(cs);
-
- msg = eldbus_proxy_method_call_new(cs->proxy, "SetProperty");
- iter = eldbus_message_iter_get(msg);
- eldbus_message_iter_basic_append(iter, 's', prop[cs->ipv6]);
- variant = eldbus_message_iter_container_new(iter, 'v', "a{sv}");
- eldbus_message_iter_arguments_append(variant, "a{sv}", &array);
- _connman_dbus_dict_append_string(array, "Method", method[wc->method]);
- _connman_dbus_dict_append_string(array, "Address", wc->address);
- _connman_dbus_dict_append_string(array, "Gateway", wc->gateway);
- if (wc->ipv6)
- {
- const char *privacy[] =
- {
- [WIRELESS_NETWORK_IPV6_PRIVACY_DISABLED] = "disabled",
- [WIRELESS_NETWORK_IPV6_PRIVACY_ENABLED] = "enabled",
- [WIRELESS_NETWORK_IPV6_PRIVACY_PREFERRED] = "preferred",
- };
- _connman_dbus_dict_append_string(array, "PrefixLength", wc->ip.v6.prefixlength);
- if (wc->method == WIRELESS_NETWORK_IPV6_METHOD_AUTO)
- _connman_dbus_dict_append_string(array, "Privacy", privacy[wc->ip.v6.privacy]);
- }
- else
- _connman_dbus_dict_append_string(array, "Netmask", wc->ip.v4.netmask);
- eldbus_message_iter_container_close(variant, array);
- eldbus_message_iter_container_close(iter, variant);
-
- eldbus_proxy_send(cs->proxy, msg, _connman_service_edit_cb, NULL, -1);
-}
-
-EINTERN void
-connman_service_edit_proxy(const char *path, Wireless_Connection *wc)
-{
- int i;
- Eldbus_Message *msg;
- Eldbus_Message_Iter *iter, *variant, *array;
- Connman_Service *cs = NULL;
- const char *method[] =
- {
- "direct",
- "manual",
- "auto",
- };
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- cs = eina_hash_find(connman_services[i], path);
- if (cs) break;
- }
- EINA_SAFETY_ON_NULL_RETURN(cs);
-
- msg = eldbus_proxy_method_call_new(cs->proxy, "SetProperty");
- iter = eldbus_message_iter_get(msg);
- eldbus_message_iter_basic_append(iter, 's', "Proxy");
- variant = eldbus_message_iter_container_new(iter, 'v', "a{sv}");
- eldbus_message_iter_arguments_append(variant, "a{sv}", &array);
- _connman_dbus_dict_append_string(array, "Method", method[wc->proxy_type]);
- switch (wc->proxy_type)
- {
- case WIRELESS_PROXY_TYPE_DIRECT: break;
- case WIRELESS_PROXY_TYPE_MANUAL:
- _connman_dbus_dict_append_array(array, "Servers", wc->proxy_servers);
- _connman_dbus_dict_append_array(array, "Excludes", wc->proxy_excludes);
- break;
- case WIRELESS_PROXY_TYPE_AUTO:
- _connman_dbus_dict_append_string(array, "Address", wc->proxy_url);
- break;
- }
- eldbus_message_iter_container_close(variant, array);
- eldbus_message_iter_container_close(iter, variant);
-
- eldbus_proxy_send(cs->proxy, msg, _connman_service_edit_proxy_cb, NULL, -1);
-}
-
-EINTERN void
-connman_service_edit_domains(const char *path, Wireless_Connection *wc)
-{
- int i;
- Eldbus_Message *msg;
- Eldbus_Message_Iter *iter;
- Connman_Service *cs = NULL;
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- cs = eina_hash_find(connman_services[i], path);
- if (cs) break;
- }
- EINA_SAFETY_ON_NULL_RETURN(cs);
-
- msg = eldbus_proxy_method_call_new(cs->proxy, "SetProperty");
- iter = eldbus_message_iter_get(msg);
- _connman_dbus_dict_append_array(iter, "Domains.Configuration", wc->domain_servers);
-
- eldbus_proxy_send(cs->proxy, msg, _connman_service_edit_domains_cb, NULL, -1);
-}
-
-EINTERN void
-connman_service_edit_nameservers(const char *path, Wireless_Connection *wc)
-{
- int i;
- Eldbus_Message *msg;
- Eldbus_Message_Iter *iter;
- Connman_Service *cs = NULL;
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- cs = eina_hash_find(connman_services[i], path);
- if (cs) break;
- }
- EINA_SAFETY_ON_NULL_RETURN(cs);
-
- msg = eldbus_proxy_method_call_new(cs->proxy, "SetProperty");
- iter = eldbus_message_iter_get(msg);
- _connman_dbus_dict_append_array(iter, "Nameservers.Configuration", wc->name_servers);
-
- eldbus_proxy_send(cs->proxy, msg, _connman_service_edit_nameservers_cb, NULL, -1);
-}
-
-EINTERN void
-connman_service_edit_timeservers(const char *path, Wireless_Connection *wc)
-{
- int i;
- Eldbus_Message *msg;
- Eldbus_Message_Iter *iter;
- Connman_Service *cs = NULL;
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- cs = eina_hash_find(connman_services[i], path);
- if (cs) break;
- }
- EINA_SAFETY_ON_NULL_RETURN(cs);
-
- msg = eldbus_proxy_method_call_new(cs->proxy, "SetProperty");
- iter = eldbus_message_iter_get(msg);
- _connman_dbus_dict_append_array(iter, "Timeservers.Configuration", wc->time_servers);
-
- eldbus_proxy_send(cs->proxy, msg, _connman_service_edit_timeservers_cb, NULL, -1);
-}
-
-EINTERN void
-connman_service_remove(const char *path)
-{
- int i;
- Eldbus_Message *msg;
- Connman_Service *cs = NULL;
-
- CONNMAN_SERVICE_TYPE_ITER(i)
- {
- cs = eina_hash_find(connman_services[i], path);
- if (cs) break;
- }
- EINA_SAFETY_ON_NULL_RETURN(cs);
-
- msg = eldbus_proxy_method_call_new(cs->proxy, "Remove");
- eldbus_proxy_send(cs->proxy, msg, _connman_service_remove_cb, NULL, -1);
-}
-
-EINTERN void
-connman_airplane_mode_set(Eina_Bool set)
-{
- Eldbus_Message *msg;
- Eldbus_Message_Iter *iter;
-
- msg = eldbus_proxy_method_call_new(proxy_manager, "SetProperty");
- iter = eldbus_message_iter_get(msg);
- _connman_dbus_dict_append_bool(iter, "OfflineMode", set);
- eldbus_proxy_send(proxy_manager, msg, NULL, NULL, -1);
-}
diff --git a/src/modules/wireless/e-module-wireless.edj b/src/modules/wireless/e-module-wireless.edj
deleted file mode 100644
index 2b7ed6f679..0000000000
--- a/src/modules/wireless/e-module-wireless.edj
+++ /dev/null
Binary files differ
diff --git a/src/modules/wireless/meson.build b/src/modules/wireless/meson.build
deleted file mode 100644
index 3799bd50f7..0000000000
--- a/src/modules/wireless/meson.build
+++ /dev/null
@@ -1,6 +0,0 @@
-src = files(
- 'mod.c',
- 'connman.c',
- 'wireless.c',
- 'wireless.h'
- )
diff --git a/src/modules/wireless/mod.c b/src/modules/wireless/mod.c
deleted file mode 100644
index bce3406cd7..0000000000
--- a/src/modules/wireless/mod.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "wireless.h"
-
-EINTERN void wireless_gadget_init(void);
-EINTERN void wireless_gadget_shutdown(void);
-
-EINTERN void connman_init(void);
-EINTERN void connman_shutdown(void);
-
-EINTERN Eldbus_Connection *dbus_conn;
-static E_Config_DD *edd;
-EINTERN Wireless_Config *wireless_config;
-
-E_API E_Module_Api e_modapi =
-{
- E_MODULE_API_VERSION,
- "Wireless"
-};
-
-E_API void *
-e_modapi_init(E_Module *m)
-{
- dbus_conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM);
- connman_init();
- wireless_gadget_init();
-
- edd = E_CONFIG_DD_NEW("Wireless_Config", Wireless_Config);
-#undef T
-#undef D
-#define T Wireless_Config
-#define D edd
-
- E_CONFIG_VAL(D, T, disabled_types, UINT);
- wireless_config = e_config_domain_load("module.wireless", edd);
- if (!wireless_config) wireless_config = E_NEW(Wireless_Config, 1);
- return m;
-}
-
-E_API int
-e_modapi_shutdown(E_Module *m EINA_UNUSED)
-{
- wireless_gadget_shutdown();
- connman_shutdown();
- E_FREE_FUNC(dbus_conn, eldbus_connection_unref);
- E_CONFIG_DD_FREE(edd);
- E_FREE(wireless_config);
- return 1;
-}
-
-E_API int
-e_modapi_save(E_Module *m EINA_UNUSED)
-{
- e_config_domain_save("module.wireless", edd, wireless_config);
- return 1;
-}
diff --git a/src/modules/wireless/module.desktop b/src/modules/wireless/module.desktop
deleted file mode 100644
index f1f9f37881..0000000000
--- a/src/modules/wireless/module.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Type=Link
-Name=Wireless
-Name[fr]=Sans fil
-GenericName=Wireless
-Comment=Manage wifi connections
-Comment[it]=Gestisce le connessioni wifi
-Comment[fr]=Gestion des connexions Wi-Fi
-Icon=e-module-wireless
-X-Enlightenment-ModuleType=system
diff --git a/src/modules/wireless/wireless.c b/src/modules/wireless/wireless.c
deleted file mode 100644
index 8663394427..0000000000
--- a/src/modules/wireless/wireless.c
+++ /dev/null
@@ -1,1657 +0,0 @@
-#include "wireless.h"
-
-
-/* FIXME */
-void connman_technology_enabled_set(Wireless_Service_Type type, Eina_Bool state);
-
-static const char *wireless_theme_groups[] =
-{
- [WIRELESS_SERVICE_TYPE_ETHERNET] = "e/gadget/wireless/ethernet",
- [WIRELESS_SERVICE_TYPE_WIFI] = "e/gadget/wireless/wifi",
- [WIRELESS_SERVICE_TYPE_BLUETOOTH] = "e/gadget/wireless/bluetooth",
- [WIRELESS_SERVICE_TYPE_CELLULAR] = "e/gadget/wireless/cellular",
-};
-
-static const char *wireless_ipv4_methods[] =
-{
- N_("Disabled"),
- N_("Manual"),
- "DHCP",
- N_("Fixed"),
-};
-
-static const char *wireless_ipv6_methods[] =
-{
- N_("Off"),
- N_("Manual"),
- N_("Auto"),
- "6to4",
- N_("Fixed"),
-};
-
-static const char *wireless_proxy_methods[] =
-{
- N_("Direct"),
- N_("Manual"),
- N_("Auto"),
-};
-
-typedef struct Instance
-{
- int id;
- E_Gadget_Site_Orient orient;
- Evas_Object *box;
- Evas_Object *icon[WIRELESS_SERVICE_TYPE_LAST];
-
- Eina_Bool popup;
-
- struct
- {
- Evas_Object *error;
- Evas_Object *address;
- Evas_Object *method;
- Evas_Object *signal;
- Wireless_Service_Type type;
- } tooltip;
-} Instance;
-
-typedef struct Wireless_Auth_Popup
-{
- Evas_Object *popup;
- Wireless_Auth_Cb cb;
- void *data;
- Eina_Bool sent E_BITFIELD;
-} Wireless_Auth_Popup;
-
-static Eina_Array *wireless_networks;
-static Wireless_Connection *wireless_current[WIRELESS_SERVICE_TYPE_LAST];
-static Eina_Bool wireless_type_enabled[WIRELESS_SERVICE_TYPE_LAST];
-static Eina_Bool wireless_type_available[WIRELESS_SERVICE_TYPE_LAST];
-static Eina_List *instances;
-static Eina_List *wireless_auth_pending;
-static Wireless_Auth_Popup *wireless_auth_popup;
-static Eina_Bool wireless_offline;
-static Evas_Object *wireless_edit_popup;
-static Evas_Object *menu_icon;
-static Wireless_Connection *wireless_edit[2];
-static unsigned int wireless_network_count[WIRELESS_SERVICE_TYPE_LAST];
-
-static struct
-{
- Evas_Object *popup;
- Evas_Object *box;
- Evas_Object *content;
- Eina_Stringshare *name_servers;
- Eina_Stringshare *time_servers;
- Eina_Stringshare *domain_servers;
- Eina_Stringshare *proxy_servers;
- Eina_Stringshare *proxy_excludes;
- Eina_Hash *items;
- Eina_List *entries;
- Wireless_Service_Type type;
-} wireless_popup;
-
-static Eina_Bool auth_popup;
-
-#undef DBG
-#undef INF
-#undef WRN
-#undef ERR
-
-#define DBG(...) EINA_LOG_DOM_DBG(_wireless_gadget_log_dom, __VA_ARGS__)
-#define INF(...) EINA_LOG_DOM_INFO(_wireless_gadget_log_dom, __VA_ARGS__)
-#define WRN(...) EINA_LOG_DOM_WARN(_wireless_gadget_log_dom, __VA_ARGS__)
-#define ERR(...) EINA_LOG_DOM_ERR(_wireless_gadget_log_dom, __VA_ARGS__)
-static int _wireless_gadget_log_dom = -1;
-
-static void _wireless_gadget_refresh(Instance *inst);
-
-static void
-_wifi_icon_signal(Evas_Object *icon, int state, int strength)
-{
- Edje_Message_Int_Set *msg;
-
- DBG("icon msg: %d %d%%", state, strength);
- msg = alloca(sizeof(Edje_Message_Int_Set) + sizeof(int));
- msg->count = 2;
- msg->val[0] = state;
- msg->val[1] = strength;
- edje_object_message_send(elm_layout_edje_get(icon), EDJE_MESSAGE_INT_SET, 1, msg);
-}
-
-static void
-_wifi_icon_init(Evas_Object *icon, Wireless_Network *wn, int type)
-{
- int state = 0, strength = 0;
-
- if (wn)
- {
- state = wn->state;
- strength = wn->strength;
- }
- _wifi_icon_signal(icon, state, strength);
-
- if (!wn)
- {
- if (wireless_type_available[type])
- elm_object_signal_emit(icon, "e,state,default", "e");
- else
- elm_object_signal_emit(icon, "e,state,error", "e");
- elm_object_signal_emit(icon, "e,state,unsecured", "e");
- return;
- }
- if (wn->state == WIRELESS_NETWORK_STATE_FAILURE)
- {
- elm_object_signal_emit(icon, "e,state,error", "e");
- return;
- }
- elm_object_signal_emit(icon, "e,state,default", "e");
- switch (wn->type)
- {
- case WIRELESS_SERVICE_TYPE_WIFI:
- if (wn->security > WIRELESS_NETWORK_SECURITY_WEP)
- elm_object_signal_emit(icon, "e,state,secure", "e");
- else if (wn->security == WIRELESS_NETWORK_SECURITY_WEP)
- elm_object_signal_emit(icon, "e,state,insecure", "e");
- else if (!wn->security)
- elm_object_signal_emit(icon, "e,state,unsecured", "e");
- break;
- default: break;
- }
-}
-
-static void
-_wireless_popup_toggle(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- connman_technology_enabled_set(wireless_popup.type, elm_check_state_get(obj));
-}
-
-static void
-_wireless_popup_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->popup = 0;
- E_FREE_FUNC(wireless_popup.items, eina_hash_free);
- E_FREE_FUNC(wireless_popup.entries, eina_list_free);
- eina_stringshare_replace(&wireless_popup.proxy_servers, NULL);
- eina_stringshare_replace(&wireless_popup.proxy_excludes, NULL);
- eina_stringshare_replace(&wireless_popup.name_servers, NULL);
- eina_stringshare_replace(&wireless_popup.time_servers, NULL);
- eina_stringshare_replace(&wireless_popup.domain_servers, NULL);
- wireless_popup.box = NULL;
- wireless_popup.content = NULL;
- wireless_popup.popup = NULL;
- wireless_popup.type = -1;
-}
-
-static void
-_wireless_edit_basic_entries_update(void)
-{
- Eina_List *l;
- Evas_Object *ent;
- Eina_Bool disabled;
-
- if (wireless_edit[1]->ipv6)
- disabled = wireless_edit[1]->method != WIRELESS_NETWORK_IPV6_METHOD_MANUAL;
- else
- disabled = wireless_edit[1]->method != WIRELESS_NETWORK_IPV4_METHOD_MANUAL;
- EINA_LIST_FOREACH(wireless_popup.entries, l, ent)
- elm_object_disabled_set(ent, disabled);
-}
-
-static Evas_Object *
-_wireless_popup_table_entry_row(Evas_Object *tb, const char *name, Evas_Smart_Cb cb, void *data, int *row)
-{
- Evas_Object *fr, *entry;
-
- fr = elm_frame_add(tb);
- evas_object_show(fr);
- E_EXPAND(fr);
- E_FILL(fr);
- elm_object_text_set(fr, name);
- elm_table_pack(tb, fr, 0, *row, 2, 2);
- *row += 2;
-
- entry = elm_entry_add(tb);
- evas_object_show(entry);
- elm_entry_single_line_set(entry, 1);
- elm_entry_scrollable_set(entry, 1);
- evas_object_data_set(entry, "table", tb);
- evas_object_smart_callback_add(entry, "activated", cb, data);
- elm_object_content_set(fr, entry);
- return entry;
-}
-
-static void
-_wireless_edit_entry_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Eina_Stringshare **str = data;
-
- eina_stringshare_replace(str, elm_entry_entry_get(obj));
-}
-
-static void
-_wireless_gadget_edit_array_entry(Eina_Array *arr, Eina_Stringshare **ptr)
-{
- Eina_Stringshare *str;
- unsigned int i;
- Eina_Array_Iterator it;
- Eina_Strbuf *buf;
-
- if (!arr) return;
- buf = eina_strbuf_new();
- EINA_ARRAY_ITER_NEXT(arr, i, str, it)
- {
- if (eina_strbuf_length_get(buf)) eina_strbuf_append(buf, ", ");
- eina_strbuf_append(buf, str);
- }
- eina_stringshare_replace(ptr, eina_strbuf_string_get(buf));
- eina_strbuf_free(buf);
-}
-
-static void
-_wireless_gadget_edit_proxy_method_update(void)
-{
- Evas_Object *ent, *tb = wireless_popup.content;
- int row = 1;
- Wireless_Connection *wc = wireless_edit[1];
-
- evas_object_del(elm_table_child_get(wireless_popup.content, 0, 1));
- evas_object_del(elm_table_child_get(wireless_popup.content, 0, 3));
- evas_object_del(elm_table_child_get(wireless_popup.content, 0, 5));
- switch (wc->proxy_type)
- {
- case WIRELESS_PROXY_TYPE_DIRECT:
- _wireless_popup_table_entry_row(tb, NULL, NULL, NULL, &row);
- evas_object_hide(elm_table_child_get(wireless_popup.content, 0, 1));
- _wireless_popup_table_entry_row(tb, NULL, NULL, NULL, &row);
- evas_object_hide(elm_table_child_get(wireless_popup.content, 0, 3));
- _wireless_popup_table_entry_row(tb, NULL, NULL, NULL, &row);
- evas_object_hide(elm_table_child_get(wireless_popup.content, 0, 5));
- break;
- case WIRELESS_PROXY_TYPE_MANUAL:
- ent = _wireless_popup_table_entry_row(tb, _("Proxy Servers"), NULL, NULL, &row);
- elm_entry_entry_set(ent, wireless_popup.proxy_servers);
- evas_object_smart_callback_add(ent, "changed,user", _wireless_edit_entry_changed, &wireless_popup.proxy_servers);
- ent = _wireless_popup_table_entry_row(tb, _("Proxy Excludes"), NULL, NULL, &row);
- elm_entry_entry_set(ent, wireless_popup.proxy_excludes);
- evas_object_smart_callback_add(ent, "changed,user", _wireless_edit_entry_changed, &wireless_popup.proxy_excludes);
- _wireless_popup_table_entry_row(tb, NULL, NULL, NULL, &row);
- evas_object_hide(elm_table_child_get(wireless_popup.content, 0, 5));
- break;
- case WIRELESS_PROXY_TYPE_AUTO:
- ent = _wireless_popup_table_entry_row(tb, _("Proxy Address"), NULL, NULL, &row);
- elm_entry_entry_set(ent, wc->proxy_url);
- evas_object_smart_callback_add(ent, "changed,user", _wireless_edit_entry_changed, &wireless_edit[1]->address);
- _wireless_popup_table_entry_row(tb, NULL, NULL, NULL, &row);
- evas_object_hide(elm_table_child_get(wireless_popup.content, 0, 3));
- _wireless_popup_table_entry_row(tb, NULL, NULL, NULL, &row);
- evas_object_hide(elm_table_child_get(wireless_popup.content, 0, 5));
- break;
- }
-}
-
-static void
-_wireless_gadget_edit_proxy_method(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- wireless_edit[1]->proxy_type = (intptr_t)elm_object_item_data_get(event_info);
- _wireless_gadget_edit_proxy_method_update();
-}
-
-static void
-_wireless_gadget_edit_method(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
- wireless_edit[1]->method = (intptr_t)elm_object_item_data_get(event_info);
- _wireless_edit_basic_entries_update();
-}
-
-static void
-_wireless_gadget_edit_method_open(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- int i, fixed;
- const char **methods;
-
- elm_hoversel_clear(obj);
- evas_object_layer_set(obj, E_LAYER_MENU);
- if (wireless_edit[1]->ipv6)
- {
- fixed = WIRELESS_NETWORK_IPV6_METHOD_FIXED;
- methods = wireless_ipv6_methods;
- }
- else
- {
- fixed = WIRELESS_NETWORK_IPV6_METHOD_FIXED;
- methods = wireless_ipv4_methods;
- }
- for (i = 0; i < fixed; i++)
- {
- if ((int)wireless_edit[1]->method != i)
- elm_hoversel_item_add(obj, methods[i], NULL, ELM_ICON_NONE, NULL, (intptr_t*)(long)i);
- }
-}
-
-static void
-_wireless_edit_del(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- int i;
-
- wireless_popup.entries = eina_list_free(wireless_popup.entries);
- eina_stringshare_del(wireless_edit[0]->wn->path);
- free(wireless_edit[0]->wn);
- for (i = 0; i <= 1; i++)
- {
- eina_stringshare_del(wireless_edit[i]->address);
- eina_stringshare_del(wireless_edit[i]->gateway);
- if (wireless_edit[i]->ipv6)
- eina_stringshare_del(wireless_edit[i]->ip.v6.prefixlength);
- else
- eina_stringshare_del(wireless_edit[i]->ip.v4.netmask);
- eina_stringshare_del(wireless_edit[i]->proxy_url);
- array_clear(wireless_edit[i]->proxy_excludes);
- array_clear(wireless_edit[i]->proxy_servers);
- E_FREE(wireless_edit[i]);
- }
- wireless_popup.popup = NULL;
- wireless_edit_popup = NULL;
-}
-
-static Eina_Array *
-string_to_array(const char *str)
-{
- const char *p = str;
- Eina_Array *arr;
-
- arr = eina_array_new(1);
- do
- {
- const char *start, *end;
-
- start = p;
- p = strchr(p, ',');
- if (!p) break;
- end = p - 1;
- while (isspace(start[0])) start++;
- while (isspace(end[0])) end--;
- end++;
-
- if (start == end) break;
- eina_array_push(arr, eina_stringshare_add_length(start, end - start));
- p++;
- } while (p[0]);
- return arr;
-}
-
-static Eina_Bool
-_wireless_array_notequal(Eina_Array *a, Eina_Array *b)
-{
- unsigned int i;
-
- if ((!!a) != (!!b)) return EINA_TRUE;
- if ((!a) && (!b)) return EINA_FALSE;
- if (eina_array_count(a) != eina_array_count(b)) return EINA_TRUE;
- for (i = 0; i < eina_array_count(a); i++)
- if (eina_array_data_get(a, i) != eina_array_data_get(b, i)) return EINA_TRUE;
- return EINA_FALSE;
-}
-
-static void
-_wireless_edit_send()
-{
- Eina_Bool basic = EINA_FALSE, proxy = EINA_FALSE;
-
- EINTERN void connman_service_edit(const char *path, Wireless_Connection *wc);
- EINTERN void connman_service_edit_proxy(const char *path, Wireless_Connection *wc);
- EINTERN void connman_service_edit_domains(const char *path, Wireless_Connection *wc);
- EINTERN void connman_service_edit_nameservers(const char *path, Wireless_Connection *wc);
- EINTERN void connman_service_edit_timeservers(const char *path, Wireless_Connection *wc);
-
- if (wireless_edit[0]->method == wireless_edit[1]->method)
- {
- if (wireless_edit[1]->ipv6)
- switch (wireless_edit[1]->method)
- {
- case WIRELESS_NETWORK_IPV6_METHOD_AUTO:
- basic = wireless_edit[0]->ip.v6.privacy != wireless_edit[1]->ip.v6.privacy;
- break;
- case WIRELESS_NETWORK_IPV6_METHOD_MANUAL:
- basic = wireless_edit[0]->address != wireless_edit[1]->address;
- if (basic) break;
- basic = wireless_edit[0]->gateway != wireless_edit[1]->gateway;
- if (basic) break;
- basic = wireless_edit[0]->ip.v6.prefixlength != wireless_edit[1]->ip.v6.prefixlength;
- break;
- default: break;
- }
- else
- switch (wireless_edit[1]->method)
- {
- case WIRELESS_NETWORK_IPV4_METHOD_MANUAL:
- basic = wireless_edit[0]->address != wireless_edit[1]->address;
- if (basic) break;
- basic = wireless_edit[0]->gateway != wireless_edit[1]->gateway;
- if (basic) break;
- basic = wireless_edit[0]->ip.v4.netmask != wireless_edit[1]->ip.v4.netmask;
- break;
- default: break;
- }
- }
- else
- basic = EINA_TRUE;
-
- if (basic)
- connman_service_edit(wireless_edit[1]->wn->path, wireless_edit[1]);
-
- if (wireless_edit[1]->proxy_type == WIRELESS_PROXY_TYPE_MANUAL)
- {
- array_clear(wireless_edit[1]->proxy_servers);
- array_clear(wireless_edit[1]->proxy_excludes);
- if (wireless_popup.proxy_servers)
- wireless_edit[1]->proxy_servers = string_to_array(wireless_popup.proxy_servers);
- if (wireless_popup.proxy_excludes)
- wireless_edit[1]->proxy_excludes = string_to_array(wireless_popup.proxy_excludes);
- }
- if (wireless_edit[0]->proxy_type == wireless_edit[1]->proxy_type)
- {
- switch (wireless_edit[0]->proxy_type)
- {
- case WIRELESS_PROXY_TYPE_MANUAL:
- proxy = _wireless_array_notequal(wireless_edit[0]->proxy_servers,
- wireless_edit[1]->proxy_servers);
- if (proxy) break;
- proxy = _wireless_array_notequal(wireless_edit[0]->proxy_excludes,
- wireless_edit[1]->proxy_excludes);
- break;
- case WIRELESS_PROXY_TYPE_AUTO:
- proxy = wireless_edit[0]->proxy_url != wireless_edit[1]->proxy_url;
- break;
- break;
- default: break;
- }
-
- }
- else
- proxy = EINA_TRUE;
- if (proxy)
- connman_service_edit_proxy(wireless_edit[1]->wn->path, wireless_edit[1]);
-
- array_clear(wireless_edit[1]->domain_servers);
- if (wireless_popup.domain_servers)
- wireless_edit[1]->domain_servers = string_to_array(wireless_popup.domain_servers);
- array_clear(wireless_edit[1]->name_servers);
- if (wireless_popup.name_servers)
- wireless_edit[1]->name_servers = string_to_array(wireless_popup.name_servers);
- array_clear(wireless_edit[1]->name_servers);
- if (wireless_popup.name_servers)
- wireless_edit[1]->name_servers = string_to_array(wireless_popup.name_servers);
-
- if (_wireless_array_notequal(wireless_edit[0]->domain_servers, wireless_edit[1]->domain_servers))
- connman_service_edit_domains(wireless_edit[1]->wn->path, wireless_edit[1]);
- if (_wireless_array_notequal(wireless_edit[0]->name_servers, wireless_edit[1]->name_servers))
- connman_service_edit_nameservers(wireless_edit[1]->wn->path, wireless_edit[1]);
- if (_wireless_array_notequal(wireless_edit[0]->time_servers, wireless_edit[1]->time_servers))
- connman_service_edit_timeservers(wireless_edit[1]->wn->path, wireless_edit[1]);
-}
-
-static void
-_wireless_edit_send_button()
-{
- e_comp_object_util_autoclose(NULL, NULL, NULL, NULL);
- _wireless_edit_send();
-}
-
-static void
-_wireless_edit_remove()
-{
- EINTERN void connman_service_remove(const char *path);
- e_comp_object_util_autoclose(NULL, NULL, NULL, NULL);
- connman_service_remove(wireless_edit[1]->wn->path);
-}
-
-static Eina_Bool
-_wireless_edit_key(void *d EINA_UNUSED, Ecore_Event_Key *ev)
-{
- if ((!strcmp(ev->key, "Return")) || (!strcmp(ev->key, "KP_Enter")))
- {
- _wireless_edit_send();
- return EINA_FALSE;
- }
- return !!strcmp(ev->key, "Escape");
-}
-
-static void
-_wireless_gadget_edit_proxy_method_open(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- int i;
-
- elm_hoversel_clear(obj);
- for (i = 0; i <= WIRELESS_PROXY_TYPE_AUTO; i++)
- {
- if ((int)wireless_edit[1]->proxy_type != i)
- elm_hoversel_item_add(obj, wireless_proxy_methods[i], NULL, ELM_ICON_NONE, NULL, (intptr_t*)(long)i);
- }
-}
-
-static void
-_wireless_gadget_edit_proxy(void)
-{
- Evas_Object *tb, *fr, *hoversel;
- int row = 0;
- Wireless_Connection *wc = wireless_edit[1];
-
- wireless_popup.content = tb = elm_table_add(wireless_popup.popup);
- E_FILL(tb);
- E_EXPAND(tb);
- evas_object_show(tb);
- elm_box_pack_end(wireless_popup.box, tb);
-
- fr = elm_frame_add(tb);
- E_EXPAND(fr);
- E_FILL(fr);
- evas_object_show(fr);
- elm_object_text_set(fr, _("Proxy Type"));
- elm_table_pack(tb, fr, 0, row++, 2, 1);
-
- hoversel = elm_hoversel_add(tb);
- elm_hoversel_hover_parent_set(hoversel, wireless_popup.popup);
- elm_hoversel_auto_update_set(hoversel, 1);
- evas_object_show(hoversel);
- elm_object_content_set(fr, hoversel);
- evas_object_smart_callback_add(hoversel, "selected", _wireless_gadget_edit_proxy_method, NULL);
- evas_object_smart_callback_add(hoversel, "clicked", _wireless_gadget_edit_proxy_method_open, NULL);
- elm_object_text_set(hoversel, wireless_proxy_methods[wc->proxy_type]);
- _wireless_gadget_edit_proxy_method_update();
-}
-
-static void
-_wireless_gadget_edit_dnstime(void)
-{
- Evas_Object *tb, *ent;
- int row = 0;
-
- wireless_popup.content = tb = elm_table_add(wireless_popup.popup);
- E_FILL(tb);
- E_EXPAND(tb);
- evas_object_show(tb);
- elm_box_pack_end(wireless_popup.box, tb);
-
- ent = _wireless_popup_table_entry_row(tb, _("Nameservers"), NULL, NULL, &row);
- elm_entry_entry_set(ent, wireless_popup.name_servers);
- evas_object_smart_callback_add(ent, "changed,user", _wireless_edit_entry_changed, &wireless_popup.name_servers);
-
- ent = _wireless_popup_table_entry_row(tb, _("Timeservers"), NULL, NULL, &row);
- elm_entry_entry_set(ent, wireless_popup.time_servers);
- evas_object_smart_callback_add(ent, "changed,user", _wireless_edit_entry_changed, &wireless_popup.time_servers);
-
- ent = _wireless_popup_table_entry_row(tb, _("Search Domains"), NULL, NULL, &row);
- elm_entry_entry_set(ent, wireless_popup.domain_servers);
- evas_object_smart_callback_add(ent, "changed,user", _wireless_edit_entry_changed, &wireless_popup.domain_servers);
-
- _wireless_popup_table_entry_row(tb, NULL, NULL, NULL, &row);
- evas_object_hide(elm_table_child_get(tb, 0, 6));
-}
-
-static void
-_wireless_gadget_edit_services_type(Evas_Object *obj, Wireless_Service_Type type)
-{
- Eina_Bool state = elm_check_state_get(obj);
-
- if (state)
- wireless_config->disabled_types |= (1 << type);
- else
- wireless_config->disabled_types &= ~(1 << type);
- e_config_save_queue();
- E_LIST_FOREACH(instances, _wireless_gadget_refresh);
-}
-
-static void
-_wireless_gadget_edit_services_wifi(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- _wireless_gadget_edit_services_type(obj, WIRELESS_SERVICE_TYPE_WIFI);
-}
-
-static void
-_wireless_gadget_edit_services_bluetooth(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- _wireless_gadget_edit_services_type(obj, WIRELESS_SERVICE_TYPE_BLUETOOTH);
-}
-
-static void
-_wireless_gadget_edit_services_cellular(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- _wireless_gadget_edit_services_type(obj, WIRELESS_SERVICE_TYPE_CELLULAR);
-}
-
-static void
-_wireless_gadget_edit_services(void)
-{
- Evas_Object *tb, *bx, *ck, *fr, *r;
- int row = 0;
-
- wireless_popup.content = tb = elm_table_add(wireless_popup.popup);
- elm_table_homogeneous_set(tb, 1);
- E_FILL(tb);
- E_EXPAND(tb);
- evas_object_show(tb);
- elm_box_pack_end(wireless_popup.box, tb);
-
- fr = elm_frame_add(tb);
- E_EXPAND(fr);
- E_FILL(fr);
- evas_object_show(fr);
- elm_object_text_set(fr, _("Hide Service Types"));
- elm_table_pack(tb, fr, 0, row++, 2, 1);
-
- bx = elm_box_add(fr);
- E_EXPAND(bx);
- E_FILL(bx);
- evas_object_show(bx);
- elm_object_content_set(fr, bx);
-
- ck = elm_check_add(tb);
- E_EXPAND(ck);
- E_FILL(ck);
- elm_object_text_set(ck, _("Hide Wifi"));
- elm_check_state_set(ck, (wireless_config->disabled_types &
- (1 << WIRELESS_SERVICE_TYPE_WIFI)) == (1 << WIRELESS_SERVICE_TYPE_WIFI));
- evas_object_smart_callback_add(ck, "changed", _wireless_gadget_edit_services_wifi, NULL);
- if ((!wireless_current[WIRELESS_SERVICE_TYPE_WIFI]) || (!wireless_current[WIRELESS_SERVICE_TYPE_WIFI]->wn) ||
- (wireless_current[WIRELESS_SERVICE_TYPE_WIFI]->wn->state != WIRELESS_NETWORK_STATE_ONLINE))
- evas_object_show(ck);
- elm_box_pack_end(bx, ck);
-
- ck = elm_check_add(tb);
- E_EXPAND(ck);
- E_FILL(ck);
- elm_object_text_set(ck, _("Hide Bluetooth"));
- elm_check_state_set(ck, (wireless_config->disabled_types &
- (1 << WIRELESS_SERVICE_TYPE_BLUETOOTH)) == (1 << WIRELESS_SERVICE_TYPE_BLUETOOTH));
- evas_object_smart_callback_add(ck, "changed", _wireless_gadget_edit_services_bluetooth, NULL);
- if ((!wireless_current[WIRELESS_SERVICE_TYPE_BLUETOOTH]) || (!wireless_current[WIRELESS_SERVICE_TYPE_BLUETOOTH]->wn) ||
- (wireless_current[WIRELESS_SERVICE_TYPE_BLUETOOTH]->wn->state != WIRELESS_NETWORK_STATE_ONLINE))
- evas_object_show(ck);
- elm_box_pack_end(bx, ck);
-
- ck = elm_check_add(tb);
- E_EXPAND(ck);
- E_FILL(ck);
- elm_object_text_set(ck, _("Hide Cellular"));
- elm_check_state_set(ck, (wireless_config->disabled_types &
- (1 << WIRELESS_SERVICE_TYPE_CELLULAR)) == (1 << WIRELESS_SERVICE_TYPE_CELLULAR));
- evas_object_smart_callback_add(ck, "changed", _wireless_gadget_edit_services_cellular, NULL);
- if ((!wireless_current[WIRELESS_SERVICE_TYPE_CELLULAR]) || (!wireless_current[WIRELESS_SERVICE_TYPE_CELLULAR]->wn) ||
- (wireless_current[WIRELESS_SERVICE_TYPE_CELLULAR]->wn->state != WIRELESS_NETWORK_STATE_ONLINE))
- evas_object_show(ck);
- elm_box_pack_end(bx, ck);
-
- r = evas_object_rectangle_add(e_comp->evas);
- elm_table_pack(tb, r, 0, row++, 2, 1);
-}
-
-static Evas_Object *
-_wireless_gadget_edit_basic(void)
-{
- Evas_Object *tb, *fr, *hoversel, *ent, *entry;
- Eina_Bool disabled;
- int row = 0, fixed;
- const char **methods;
- Wireless_Connection *wc = wireless_edit[1];
-
- wireless_popup.content = tb = elm_table_add(wireless_popup.box);
- E_FILL(tb);
- E_EXPAND(tb);
- evas_object_show(tb);
- elm_box_pack_end(wireless_popup.box, tb);
-
- fr = elm_frame_add(tb);
- E_EXPAND(fr);
- E_FILL(fr);
- evas_object_show(fr);
- elm_object_text_set(fr, _("Method"));
- elm_table_pack(tb, fr, 0, row++, 2, 1);
-
- hoversel = elm_hoversel_add(tb);
- elm_hoversel_hover_parent_set(hoversel, wireless_popup.popup);
- elm_hoversel_auto_update_set(hoversel, 1);
- evas_object_show(hoversel);
- elm_object_content_set(fr, hoversel);
- evas_object_smart_callback_add(hoversel, "selected", _wireless_gadget_edit_method, NULL);
- if (wc->ipv6)
- {
- fixed = WIRELESS_NETWORK_IPV6_METHOD_FIXED;
- methods = wireless_ipv6_methods;
- }
- else
- {
- fixed = WIRELESS_NETWORK_IPV6_METHOD_FIXED;
- methods = wireless_ipv4_methods;
- }
- disabled = (int)wc->method == fixed;
- elm_object_disabled_set(hoversel, disabled);
- if (disabled)
- elm_hoversel_item_add(hoversel, _("Fixed"), NULL, ELM_ICON_NONE, NULL, NULL);
- else
- {
- elm_object_text_set(hoversel, methods[wc->method]);
- evas_object_smart_callback_add(hoversel, "clicked", _wireless_gadget_edit_method_open, NULL);
- }
-
- ent = entry = _wireless_popup_table_entry_row(tb, _("Address"), NULL, NULL, &row);
- elm_object_disabled_set(ent, disabled);
- wireless_popup.entries = eina_list_append(wireless_popup.entries, ent);
- elm_entry_entry_set(ent, wc->address);
- evas_object_smart_callback_add(ent, "changed,user", _wireless_edit_entry_changed, &wireless_edit[1]->address);
- if (wc->ipv6)
- {
- ent = _wireless_popup_table_entry_row(tb, _("PrefixLength"), NULL, NULL, &row);
- elm_entry_entry_set(ent, wc->ip.v6.prefixlength);
- evas_object_smart_callback_add(ent, "changed,user", _wireless_edit_entry_changed, &wireless_edit[1]->ip.v6.prefixlength);
- }
- else
- {
- ent = _wireless_popup_table_entry_row(tb, _("Netmask"), NULL, NULL, &row);
- elm_entry_entry_set(ent, wc->ip.v4.netmask);
- evas_object_smart_callback_add(ent, "changed,user", _wireless_edit_entry_changed, &wireless_edit[1]->ip.v4.netmask);
- }
- elm_object_disabled_set(ent, disabled);
- wireless_popup.entries = eina_list_append(wireless_popup.entries, ent);
- ent = _wireless_popup_table_entry_row(tb, _("Gateway"), NULL, NULL, &row);
- elm_entry_entry_set(ent, wc->gateway);
- elm_object_disabled_set(ent, disabled);
- evas_object_smart_callback_add(ent, "changed,user", _wireless_edit_entry_changed, &wireless_edit[1]->gateway);
- wireless_popup.entries = eina_list_append(wireless_popup.entries, ent);
- _wireless_edit_basic_entries_update();
-
- return entry;
-}
-
-static void
-_wireless_gadget_edit_select_pre(void)
-{
- elm_box_unpack(wireless_popup.box, wireless_popup.content);
- evas_object_del(wireless_popup.content);
- wireless_popup.entries = eina_list_free(wireless_popup.entries);
-}
-
-static void
-_wireless_gadget_edit_select_basic(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- _wireless_gadget_edit_select_pre();
- _wireless_gadget_edit_basic();
-}
-
-static void
-_wireless_gadget_edit_select_proxy(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- _wireless_gadget_edit_select_pre();
- _wireless_gadget_edit_proxy();
-}
-
-static void
-_wireless_gadget_edit_select_dnstime(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- _wireless_gadget_edit_select_pre();
- _wireless_gadget_edit_dnstime();
-}
-
-static void
-_wireless_gadget_edit_select_services(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- _wireless_gadget_edit_select_pre();
- _wireless_gadget_edit_services();
-}
-
-static Evas_Object *
-_wireless_gadget_edit(int type)
-{
- Evas_Object *popup, *entry, *box1, *box, *list, *lbl, *bt;
- Elm_Object_Item *it;
- Eina_Bool disabled;
- int i;
- char buf[1024] = {0};
- Wireless_Connection *wc = wireless_current[type];
- Wireless_Network *wn;
-
- if (!wc) return NULL;
- if (wireless_popup.popup)
- {
- evas_object_hide(wireless_popup.popup);
- evas_object_del(wireless_popup.popup);
- }
- wireless_edit[0] = E_NEW(Wireless_Connection, 1);
- wireless_edit[1] = E_NEW(Wireless_Connection, 1);
- wn = E_NEW(Wireless_Network, 1);
- wn->path = eina_stringshare_ref(wc->wn->path);
- for (i = 0; i <= 1; i++)
- {
- Eina_Array *arrays[] =
- { wc->domain_servers, wc->name_servers, wc->time_servers, wc->proxy_servers,
- wc->proxy_excludes, NULL };
- Eina_Array **arrays2[] =
- { &wireless_edit[i]->domain_servers, &wireless_edit[i]->name_servers,
- &wireless_edit[i]->time_servers, &wireless_edit[i]->proxy_servers,
- &wireless_edit[i]->proxy_excludes, NULL };
- unsigned int ii;
-
- wireless_edit[i]->wn = wn;
- wireless_edit[i]->method = wc->method;
- wireless_edit[i]->address = eina_stringshare_ref(wc->address);
- wireless_edit[i]->gateway = eina_stringshare_ref(wc->gateway);
- wireless_edit[i]->ipv6 = wc->ipv6;
- if (wc->ipv6)
- {
- wireless_edit[i]->ip.v6.prefixlength = eina_stringshare_ref(wc->ip.v6.prefixlength);
- wireless_edit[i]->ip.v6.privacy = wc->ip.v6.privacy;
- }
- else
- wireless_edit[i]->ip.v4.netmask = eina_stringshare_ref(wc->ip.v4.netmask);
- wireless_edit[i]->proxy_type = wc->proxy_type;
- wireless_edit[i]->proxy_url = eina_stringshare_ref(wc->proxy_url);
- /* fuuuuck thiiiiiiis */
- for (ii = 0; ii < EINA_C_ARRAY_LENGTH(arrays); ii++)
- {
- unsigned int iii;
- Eina_Stringshare *str;
- Eina_Array_Iterator itr;
-
- if (!arrays[ii]) continue;
- *arrays2[ii] = eina_array_new(eina_array_count(arrays[ii]));
- EINA_ARRAY_ITER_NEXT(arrays[ii], iii, str, itr)
- eina_array_push(*arrays2[ii], eina_stringshare_ref(str));
- }
- }
- _wireless_gadget_edit_array_entry(wc->domain_servers, &wireless_popup.domain_servers);
- _wireless_gadget_edit_array_entry(wc->name_servers, &wireless_popup.name_servers);
- _wireless_gadget_edit_array_entry(wc->time_servers, &wireless_popup.time_servers);
- _wireless_gadget_edit_array_entry(wc->proxy_servers, &wireless_popup.proxy_servers);
- _wireless_gadget_edit_array_entry(wc->proxy_excludes, &wireless_popup.proxy_excludes);
-
- wireless_popup.popup = popup = elm_popup_add(e_comp->elm);
- evas_object_layer_set(popup, E_LAYER_MENU);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- box = elm_box_add(popup);
- E_EXPAND(box);
- E_FILL(box);
- evas_object_show(box);
- elm_object_content_set(popup, box);
-
- lbl = elm_label_add(box);
- elm_object_style_set(lbl, "marker");
- evas_object_show(lbl);
- if (wireless_popup.type == WIRELESS_SERVICE_TYPE_ETHERNET)
- strncpy(buf, _("Edit Connection Details: <b>Ethernet</b>"), sizeof(buf) - 1);
- else
- snprintf(buf, sizeof(buf), "%s: <hilight>%s</hilight>", _("Edit Connection Details"), wc->wn->name);
- elm_object_text_set(lbl, buf);
- elm_box_pack_end(box, lbl);
-
- wireless_popup.box = box1 = elm_box_add(popup);
- E_EXPAND(box1);
- E_FILL(box1);
- elm_box_horizontal_set(box1, 1);
- evas_object_show(box1);
- elm_box_pack_end(box, box1);
-
- list = elm_list_add(box1);
- E_ALIGN(list, 0, EVAS_HINT_FILL);
- E_WEIGHT(list, 0, EVAS_HINT_EXPAND);
- elm_box_pack_end(box1, list);
- elm_list_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS);
- elm_scroller_content_min_limit(list, 1, 1);
-
- entry = _wireless_gadget_edit_basic();
- it = elm_list_item_append(list, _("Basic"), NULL, NULL, _wireless_gadget_edit_select_basic, NULL);
- elm_list_item_selected_set(it, 1);
- elm_list_item_append(list, _("Proxy"), NULL, NULL, _wireless_gadget_edit_select_proxy, NULL);
- elm_list_item_append(list, _("DNS/Time"), NULL, NULL, _wireless_gadget_edit_select_dnstime, NULL);
- elm_list_item_append(list, _("Services"), NULL, NULL, _wireless_gadget_edit_select_services, NULL);
- elm_list_go(list);
- evas_object_show(list);
-
- if (wc->ipv6)
- disabled = wc->method == WIRELESS_NETWORK_IPV4_METHOD_FIXED;
- else
- disabled = wc->method == WIRELESS_NETWORK_IPV6_METHOD_FIXED;
- if (!disabled)
- {
- bt = elm_button_add(box);
- E_EXPAND(bt);
- E_FILL(bt);
- evas_object_show(bt);
- elm_object_text_set(bt, _("Deal with it"));
- evas_object_smart_callback_add(bt, "clicked", _wireless_edit_send_button, NULL);
- elm_box_pack_end(box, bt);
-
- bt = elm_button_add(box);
- E_EXPAND(bt);
- E_FILL(bt);
- evas_object_show(bt);
- elm_object_text_set(bt, _("Forget Network"));
- evas_object_smart_callback_add(bt, "clicked", _wireless_edit_remove, NULL);
- elm_box_pack_end(box, bt);
- }
- wireless_edit_popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- evas_object_layer_set(wireless_edit_popup, E_LAYER_POPUP);
- evas_object_resize(wireless_edit_popup, e_zone_current_get()->w / 3, e_zone_current_get()->h / 2);
- e_comp_object_util_center(wireless_edit_popup);
- evas_object_show(wireless_edit_popup);
- e_comp_object_util_autoclose(wireless_edit_popup, NULL, _wireless_edit_key, NULL);
- evas_object_event_callback_add(wireless_edit_popup, EVAS_CALLBACK_DEL, _wireless_edit_del, NULL);
- elm_object_focus_set(entry, 1);
-
- return wireless_popup.popup;
-}
-
-static void
-_wireless_popup_network_click(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Wireless_Network *wn = data;
-
- if ((wn->state == WIRELESS_NETWORK_STATE_CONNECTED) || (wn->state == WIRELESS_NETWORK_STATE_ONLINE))
- {
- int type = wireless_popup.type;
-
- evas_object_hide(wireless_popup.popup);
- evas_object_del(wireless_popup.popup);
- _wireless_gadget_edit(type);
- }
- else
- {
- /* FIXME */
- if (!wn->connect_cb(wn))
- {}
- }
-}
-
-static void
-_wireless_popup_list_populate(void)
-{
- Eina_Iterator *it;
- Wireless_Network *wn;
-
- if (!wireless_networks) return;
- it = eina_array_iterator_new(wireless_networks);
- EINA_ITERATOR_FOREACH(it, wn)
- {
- Evas_Object *icon;
- Elm_Object_Item *item;
- const char *name = wn->name;
-
- if (wn->type != wireless_popup.type) continue;
- icon = elm_layout_add(wireless_popup.content);
- e_theme_edje_object_set(icon, NULL, wireless_theme_groups[wireless_popup.type]);
- _wifi_icon_init(icon, wn, wn->type);
- if (!name)
- name = _("<SSID hidden>");
- item = elm_list_item_append(wireless_popup.content, name, icon, NULL, _wireless_popup_network_click, wn);
- eina_hash_add(wireless_popup.items, &wn, item);
- }
- eina_iterator_free(it);
-}
-
-static void
-_wireless_popup_dismissed(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- evas_object_del(obj);
-}
-
-static Evas_Object *
-_wireless_gadget_configure_cb(Evas_Object *g)
-{
- Instance *inst = evas_object_data_get(g, "Instance");
- int type;
-
- if (!menu_icon)
- return NULL;
- for (type = 0; type < WIRELESS_SERVICE_TYPE_LAST; type++)
- {
- if (inst->icon[type] == menu_icon) break;
- }
- if (type >= WIRELESS_SERVICE_TYPE_LAST) return NULL;
-
- return _wireless_gadget_edit(type);
-}
-
-static void
-_wireless_gadget_menu_populate_cb(Evas_Object *g, E_Menu *m EINA_UNUSED)
-{
- Instance *inst = evas_object_data_get(g, "Instance");
- Evas_Coord px, py, x, y, w, h;
- int type;
-
- evas_pointer_canvas_xy_get(evas_object_evas_get(g), &px, &py);
- for (type = 0; type < WIRELESS_SERVICE_TYPE_LAST; type++)
- {
- evas_object_geometry_get(inst->icon[type], &x, &y, &w, &h);
- if (E_INSIDE(px, py, x, y, w, h)) break;
- }
- if (type >= WIRELESS_SERVICE_TYPE_LAST) return;
- menu_icon = inst->icon[type];
-}
-
-static void
-_wireless_gadget_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info)
-{
- Evas_Event_Mouse_Up *ev = event_info;
- Instance *inst = data;
- Evas_Object *ctx, *tb, *list, *toggle;
- int type;
- E_Zone *zone;
- const char *names[] =
- {
- _("Ethernet"),
- _("Wifi"),
- _("Bluetooth"),
- _("Cellular"),
- };
-
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if (e_desklock_state_get()) return;
- if (auth_popup) return;
- for (type = 0; type < WIRELESS_SERVICE_TYPE_LAST; type++)
- {
- if (obj == inst->icon[type]) break;
- }
- if (type >= WIRELESS_SERVICE_TYPE_LAST) return;
- if (ev->button == 2) connman_technology_enabled_set(type, !wireless_type_enabled[type]);
- if (ev->button != 1) return;
- if (wireless_popup.popup)
- {
- elm_ctxpopup_dismiss(wireless_popup.popup);
- wireless_popup.popup = NULL;
- return;
- }
- inst->popup = 1;
- wireless_popup.type = type;
- wireless_popup.items = eina_hash_pointer_new(NULL);
-
- ctx = elm_ctxpopup_add(e_comp->elm);
- evas_object_smart_callback_add(ctx, "dismissed", _wireless_popup_dismissed, NULL);
- elm_object_style_set(ctx, "noblock");
-
- tb = elm_table_add(ctx);
- E_EXPAND(tb);
- E_FILL(tb);
-
- wireless_popup.content = list = elm_list_add(ctx);
- elm_list_mode_set(list, ELM_LIST_EXPAND);
- E_EXPAND(list);
- E_FILL(list);
- _wireless_popup_list_populate();
- elm_list_go(list);
- evas_object_show(list);
- elm_table_pack(tb, list, 0, 0, 2, 1);
- toggle = elm_check_add(ctx);
- evas_object_show(toggle);
- elm_object_style_set(toggle, "toggle");
- elm_object_text_set(toggle, names[type]);
- elm_object_part_text_set(toggle, "on", _("On"));
- elm_object_part_text_set(toggle, "off", _("Off"));
- elm_check_state_set(toggle, wireless_type_enabled[type]);
- evas_object_smart_callback_add(toggle, "changed", _wireless_popup_toggle, inst);
- elm_table_pack(tb, toggle, 0, 1, 2, 1);
- elm_object_content_set(ctx, tb);
- wireless_popup.popup = ctx;
-
- {
- Evas_Object *r = evas_object_rectangle_add(e_comp->evas);
- e_comp_object_util_del_list_append(list, r);
- elm_table_pack(tb, r, 2, 0, 1, 1);
- zone = e_zone_current_get();
- evas_object_size_hint_min_set(r, 1, zone->h / 3);
-
- r = evas_object_rectangle_add(e_comp->evas);
- e_comp_object_util_del_list_append(list, r);
- elm_table_pack(tb, r, 0, 2, 2, 1);
- evas_object_size_hint_min_set(r, zone->w / 5, 1);
- }
-
- e_gadget_util_ctxpopup_place(inst->box, ctx, inst->icon[type]);
- evas_object_show(wireless_popup.popup);
- evas_object_event_callback_add(wireless_popup.popup, EVAS_CALLBACK_DEL, _wireless_popup_del, inst);
-}
-
-static Evas_Object *
-_wireless_tooltip_row(Evas_Object *tb, const char *label, const char *value, int row)
-{
- Evas_Object *lbl;
-
- lbl = elm_label_add(tb);
- evas_object_show(lbl);
- E_ALIGN(lbl, 0, 0.5);
- elm_object_text_set(lbl, label);
- elm_table_pack(tb, lbl, 0, row, 1, 1);
-
- lbl = elm_label_add(tb);
- evas_object_show(lbl);
- E_ALIGN(lbl, 0, 0.5);
- elm_object_text_set(lbl, value);
- elm_table_pack(tb, lbl, 1, row, 1, 1);
- return lbl;
-}
-
-static const char *
-_wireless_tooltip_method_name(void)
-{
- if (wireless_current[WIRELESS_SERVICE_TYPE_WIFI]->ipv6)
- return wireless_ipv6_methods[wireless_current[WIRELESS_SERVICE_TYPE_WIFI]->method];
- return wireless_ipv4_methods[wireless_current[WIRELESS_SERVICE_TYPE_WIFI]->method];
-}
-
-static void
-_wireless_tooltip_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- inst->tooltip.error = inst->tooltip.address =
- inst->tooltip.method = inst->tooltip.signal = NULL;
- inst->tooltip.type = -1;
-}
-
-static Evas_Object *
-_wireless_tooltip(void *data, Evas_Object *obj EINA_UNUSED, Evas_Object *tooltip)
-{
- Instance *inst = data;
- Evas_Object *tb;
- int row = 0;
- char buf[1024];
- int type = WIRELESS_SERVICE_TYPE_WIFI;
-
- if (!wireless_current[type])
- {
- if (!wireless_type_available[type])//connman not found
- {
- inst->tooltip.error = elm_label_add(tooltip);
- elm_object_text_set(inst->tooltip.error, _("Error: Connman not detected!"));
- evas_object_event_callback_add(inst->tooltip.error, EVAS_CALLBACK_DEL, _wireless_tooltip_del, inst);
- return inst->tooltip.error;
- }
- return NULL;
- }
- tb = elm_table_add(tooltip);
- elm_table_padding_set(tb, 5, 1);
-
- _wireless_tooltip_row(tb, _("Name:"), wireless_current[type]->wn->name, row++);
- inst->tooltip.method = _wireless_tooltip_row(tb, _("Method:"), _wireless_tooltip_method_name(), row++);
-
- inst->tooltip.address = _wireless_tooltip_row(tb, _("Address:"), wireless_current[type]->address, row++);
- snprintf(buf, sizeof(buf), "%u%%", wireless_current[type]->wn->strength);
- inst->tooltip.signal = _wireless_tooltip_row(tb, _("Signal:"), buf, row++);
-
- evas_object_event_callback_add(tb, EVAS_CALLBACK_DEL, _wireless_tooltip_del, inst);
- return tb;
-}
-
-static void
-wireless_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst->popup)
- {
- evas_object_hide(wireless_popup.popup);
- evas_object_del(wireless_popup.popup);
- }
-
- instances = eina_list_remove(instances, inst);
- evas_object_hide(wireless_popup.popup);
- evas_object_del(wireless_popup.popup);
- free(inst);
-
- if (instances) return;
- eina_log_domain_unregister(_wireless_gadget_log_dom);
- _wireless_gadget_log_dom = -1;
-}
-
-static void
-_wireless_gadget_icon_add(Instance *inst, int type)
-{
- if (!inst->icon[type])
- {
- Evas_Object *g;
-
- inst->icon[type] = g = elm_layout_add(inst->box);
- E_EXPAND(g);
- E_FILL(g);
- e_theme_edje_object_set(g, NULL, wireless_theme_groups[type]);
- elm_object_tooltip_content_cb_set(g, _wireless_tooltip, inst, NULL);
- evas_object_event_callback_add(g, EVAS_CALLBACK_MOUSE_UP, _wireless_gadget_mouse_up, inst);
- }
- DBG("Updating icon for %d", type);
- _wifi_icon_init(inst->icon[type], wireless_current[type] ? wireless_current[type]->wn : NULL, type);
- evas_object_hide(inst->icon[type]);
-}
-
-static void
-_wireless_gadget_refresh(Instance *inst)
-{
- int type;
- int avail = 0;
-
- if (inst->id < 0) return;
- for (type = 0; type < WIRELESS_SERVICE_TYPE_LAST; type++)
- {
- if (wireless_type_available[type])
- _wireless_gadget_icon_add(inst, type);
- else
- {
- if (inst->tooltip.type == type)
- elm_object_tooltip_hide(inst->icon[type]);
- if (wireless_popup.type == type)
- {
- evas_object_hide(wireless_popup.popup);
- evas_object_del(wireless_popup.popup);
- }
- E_FREE_FUNC(inst->icon[type], evas_object_del);
- }
- }
- elm_box_unpack_all(inst->box);
- type = WIRELESS_SERVICE_TYPE_ETHERNET;
- if (inst->icon[type])
- {
- /* only show ethernet if it's connected or there's no wifi available */
- if ((!inst->icon[WIRELESS_SERVICE_TYPE_WIFI]) ||
- wireless_network_count[WIRELESS_SERVICE_TYPE_ETHERNET] ||
- (wireless_current[type] &&
- wireless_current[type]->wn &&
- (wireless_current[type]->wn->state == WIRELESS_NETWORK_STATE_ONLINE)))
- {
- elm_box_pack_end(inst->box, inst->icon[type]);
- evas_object_show(inst->icon[type]);
- avail++;
- }
- }
- if (!avail)
- {
- for (type = WIRELESS_SERVICE_TYPE_WIFI; type < WIRELESS_SERVICE_TYPE_LAST; type++)
- {
- if (!inst->icon[type]) continue;
- if ((wireless_config->disabled_types & (1U << type)) == (1U << type)) continue;
- if (wireless_type_enabled[type] && (!wireless_network_count[type])) continue;
-
- elm_box_pack_end(inst->box, inst->icon[type]);
- evas_object_show(inst->icon[type]);
- avail++;
- }
- }
- if (!avail)
- {
- type = WIRELESS_SERVICE_TYPE_ETHERNET;
- _wireless_gadget_icon_add(inst, type);
- elm_box_pack_end(inst->box, inst->icon[type]);
- evas_object_show(inst->icon[type]);
- avail++;
- }
- if (inst->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- evas_object_size_hint_aspect_set(inst->box, EVAS_ASPECT_CONTROL_BOTH, 1, avail);
- else
- evas_object_size_hint_aspect_set(inst->box, EVAS_ASPECT_CONTROL_BOTH, avail, 1);
-}
-
-static void
-_wireless_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = data;
- evas_object_data_set(inst->box, "Instance", inst);
- e_gadget_configure_cb_set(inst->box, _wireless_gadget_configure_cb);
- e_gadget_menu_populate_cb_set(inst->box, _wireless_gadget_menu_populate_cb);
- evas_object_smart_callback_del_full(obj, "gadget_created", _wireless_created_cb, data);
-}
-
-static Evas_Object *
-wireless_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Evas_Object *g;
- Instance *inst;
-
- if (!instances)
- _wireless_gadget_log_dom = eina_log_domain_register("wireless", EINA_COLOR_CYAN);
- inst = E_NEW(Instance, 1);
- inst->id = *id;
- inst->orient = orient;
- wireless_popup.type = inst->tooltip.type = -1;
- menu_icon = NULL;
-
- inst->box = elm_box_add(parent);
- elm_box_horizontal_set(inst->box, orient != E_GADGET_SITE_ORIENT_VERTICAL);
- elm_box_homogeneous_set(inst->box, 1);
- evas_object_smart_callback_add(parent, "gadget_created", _wireless_created_cb, inst);
- evas_object_event_callback_add(inst->box, EVAS_CALLBACK_DEL, wireless_del, inst);
-
- if (*id < 0)
- {
- inst->icon[WIRELESS_SERVICE_TYPE_WIFI] = g = elm_layout_add(inst->box);
- E_EXPAND(g);
- E_FILL(g);
- e_theme_edje_object_set(g, NULL, "e/gadget/wireless/wifi");
- elm_object_signal_emit(g, "e,state,default", "e");
- _wifi_icon_signal(g, WIRELESS_NETWORK_STATE_ONLINE, 100);
- evas_object_show(g);
- elm_box_pack_end(inst->box, g);
- evas_object_size_hint_aspect_set(inst->box, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
- }
- else
- _wireless_gadget_refresh(inst);
- instances = eina_list_append(instances, inst);
-
- return inst->box;
-}
-
-static Ecore_Event_Handler *handler;
-
-static Eina_Bool
-_wireless_mode_change()
-{
- EINTERN void connman_airplane_mode_set(Eina_Bool set);
-
- if (wireless_offline != e_config->mode.offline)
- connman_airplane_mode_set(e_config->mode.offline);
- return ECORE_CALLBACK_RENEW;
-}
-
-EINTERN void
-wireless_gadget_init(void)
-{
- e_gadget_type_add("Wireless", wireless_create, NULL);
- handler = ecore_event_handler_add(E_EVENT_CONFIG_MODE_CHANGED, _wireless_mode_change, NULL);
-}
-
-EINTERN void
-wireless_gadget_shutdown(void)
-{
- e_gadget_type_del("Wireless");
- E_FREE_FUNC(handler, ecore_event_handler_del);
-}
-
-EINTERN void
-wireless_service_type_available_set(Eina_Bool *avail)
-{
- if (!memcmp(avail, &wireless_type_available, sizeof(wireless_type_available))) return;
- memcpy(&wireless_type_available, avail, WIRELESS_SERVICE_TYPE_LAST * sizeof(Eina_Bool));
- E_LIST_FOREACH(instances, _wireless_gadget_refresh);
-}
-
-EINTERN void
-wireless_service_type_enabled_set(Eina_Bool *avail)
-{
- if (!memcmp(avail, &wireless_type_enabled, sizeof(wireless_type_enabled))) return;
- memcpy(&wireless_type_enabled, avail, WIRELESS_SERVICE_TYPE_LAST * sizeof(Eina_Bool));
- E_LIST_FOREACH(instances, _wireless_gadget_refresh);
-}
-
-EINTERN void
-wireless_wifi_current_networks_set(Wireless_Connection **current)
-{
- Eina_List *l;
- Instance *inst;
- Wireless_Connection *prev[WIRELESS_SERVICE_TYPE_LAST] = {NULL};
- int type;
-
- memcpy(&prev, &wireless_current, WIRELESS_SERVICE_TYPE_LAST * sizeof(void*));
- memcpy(&wireless_current, current, WIRELESS_SERVICE_TYPE_LAST * sizeof(void*));
- type = wireless_popup.type;
- if ((type > -1) && wireless_popup.items)
- {
- Elm_Object_Item *it;
- Evas_Object *icon;
-
- if (wireless_current[type])
- {
- it = eina_hash_find(wireless_popup.items, &wireless_current[type]->wn);
- icon = elm_object_item_content_get(it);
- _wifi_icon_init(icon, wireless_current[type]->wn, type);
- }
- if (prev[type])
- {
- it = eina_hash_find(wireless_popup.items, &prev[type]->wn);
- if (it)
- {
- icon = elm_object_item_content_get(it);
- _wifi_icon_init(icon, prev[type]->wn, type);
- }
- }
- }
- else if ((type > -1) && wireless_popup.popup && (!wireless_current[type]))
- {
- evas_object_hide(wireless_popup.popup);
- evas_object_del(wireless_popup.popup);
- }
- EINA_LIST_FOREACH(instances, l, inst)
- {
- _wireless_gadget_refresh(inst);
- type = inst->tooltip.type;
- if (type < 0) continue;
- if (prev[type] &&
- ((!wireless_current[type]) ||
- ((wireless_current[type] != prev[type]) && (!eina_streq(wireless_current[type]->wn->name, prev[type]->wn->name)))))
- {
- elm_object_tooltip_hide(inst->icon[type]);
- continue;
- }
- if (inst->tooltip.method)
- elm_object_text_set(inst->tooltip.method, _wireless_tooltip_method_name());
- if (inst->tooltip.address)
- elm_object_text_set(inst->tooltip.address, wireless_current[type]->address);
- if (inst->tooltip.signal)
- {
- char buf[32];
-
- snprintf(buf, sizeof(buf), "%u%%", wireless_current[type]->wn->strength);
- elm_object_text_set(inst->tooltip.signal, buf);
- }
- }
-}
-
-static Eina_Bool
-_wireless_networks_count(const void *cont EINA_UNUSED, void *data, void *fdata EINA_UNUSED)
-{
- Wireless_Network *wn = data;
-
- wireless_network_count[wn->type]++;
- return EINA_TRUE;
-}
-
-EINTERN Eina_Array *
-wireless_networks_set(Eina_Array *networks)
-{
- Eina_Array *prev = wireless_networks;
-
- wireless_networks = networks;
- memset(&wireless_network_count, 0, sizeof(wireless_network_count));
- eina_array_foreach(networks, _wireless_networks_count, NULL);
- if (wireless_popup.popup && wireless_popup.items)
- {
- elm_list_clear(wireless_popup.content);
- eina_hash_free_buckets(wireless_popup.items);
- _wireless_popup_list_populate();
- }
-
- return prev;
-}
-
-EINTERN void
-wireless_airplane_mode_set(Eina_Bool enabled)
-{
- wireless_offline = enabled;
- if (enabled == e_config->mode.offline) return;
- e_config->mode.offline = !!enabled;
- e_config_mode_changed();
- e_config_save_queue();
-}
-
-static void
-_wireless_auth_del(void *data, Evas_Object *popup)
-{
- Wireless_Auth_Popup *p = data;
-
- if (!p->sent)
- p->cb(p->data, NULL);
- free(p);
- wireless_auth_popup = NULL;
- evas_object_hide(popup);
- evas_object_del(popup);
- if (!wireless_auth_pending) return;
- wireless_auth_popup = eina_list_data_get(wireless_auth_pending);
- wireless_auth_pending = eina_list_remove_list(wireless_auth_pending, wireless_auth_pending);
- evas_object_show(wireless_auth_popup->popup);
- e_comp_object_util_autoclose(wireless_auth_popup->popup,
- _wireless_auth_del, e_comp_object_util_autoclose_on_escape, wireless_auth_popup);
-}
-
-static void
-_wireless_auth_send(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Wireless_Auth_Popup *p = data;
- Eina_Array *arr = NULL;
- Evas_Object *tb, *o;
- unsigned int row = 1;
-
- tb = evas_object_data_get(obj, "table");
- do
- {
- const char *txt;
-
- o = elm_table_child_get(tb, 0, row);
- if (!o) break;
- if (!arr) arr = eina_array_new(2);
- txt = elm_object_text_get(o);
- eina_array_push(arr, txt);
- o = elm_object_content_get(o);
- /* skip checkboxes */
- if (!strncmp(txt, "Pass", 4)) row++;
- eina_array_push(arr, elm_object_text_get(o));
- row += 2;
- } while (1);
- p->cb(p->data, arr);
- p->sent = 1;
- eina_array_free(arr);
- e_comp_object_util_autoclose(NULL, NULL, NULL, NULL);
-}
-
-static void
-_wireless_auth_password_toggle(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- elm_entry_password_set(data, !elm_entry_password_get(data));
-}
-
-EINTERN void
-wireless_authenticate(const Eina_Array *fields, Wireless_Auth_Cb cb, void *data)
-{
- Evas_Object *popup, *tb, *lbl, *entry = NULL;
- Eina_Iterator *it;
- const char *f;
- Wireless_Auth_Popup *p;
- int row = 0;
-
- p = E_NEW(Wireless_Auth_Popup, 1);
- p->cb = cb;
- p->data = data;
- if (wireless_popup.popup)
- {
- evas_object_hide(wireless_popup.popup);
- evas_object_del(wireless_popup.popup);
- }
-
- popup = elm_popup_add(e_comp->elm);
- elm_popup_allow_events_set(popup, 1);
- elm_popup_scrollable_set(popup, 1);
-
- tb = elm_table_add(popup);
- evas_object_show(tb);
- elm_object_content_set(popup, tb);
-
- lbl = elm_label_add(popup);
- evas_object_show(lbl);
- elm_object_text_set(lbl, _("Authentication Required"));
- elm_table_pack(tb, lbl, 0, row++, 2, 1);
-
- it = eina_array_iterator_new(fields);
- EINA_ITERATOR_FOREACH(it, f)
- {
- Evas_Object *o;
- char buf[1024];
- Evas_Object *ck;
-
- o = _wireless_popup_table_entry_row(tb, f, _wireless_auth_send, p, &row);
- if (strncmp(f, "Pass", 4)) continue;
- if (!entry) entry = o;
- elm_entry_password_set(o, 1);
-
- ck = elm_check_add(tb);
- evas_object_show(ck);
- E_ALIGN(ck, 0, -1);
- snprintf(buf, sizeof(buf), _("Show %s"), f);
- evas_object_smart_callback_add(ck, "changed", _wireless_auth_password_toggle, o);
- elm_object_text_set(ck, buf);
- elm_table_pack(tb, ck, 0, row++, 2, 1);
- }
- popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
- p->popup = popup;
- evas_object_resize(popup, e_zone_current_get()->w / 4, e_zone_current_get()->h / 3);
- evas_object_layer_set(popup, E_LAYER_POPUP);
- e_comp_object_util_center(popup);
- if (wireless_auth_popup)
- wireless_auth_pending = eina_list_append(wireless_auth_pending, p);
- else
- {
- wireless_auth_popup = p;
- evas_object_show(popup);
- e_comp_object_util_autoclose(popup, _wireless_auth_del,
- e_comp_object_util_autoclose_on_escape, p);
- elm_object_focus_set(entry, 1);
- }
-}
-
-EINTERN void
-wireless_authenticate_cancel(void)
-{
- if (!wireless_auth_popup) return;
- evas_object_hide(wireless_auth_popup->popup);
- evas_object_del(wireless_auth_popup->popup);
-}
-
-static void
-_wireless_auth_external_deny(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- /* FIXME */
- free(data);
- auth_popup = 0;
-}
-
-static void
-_wireless_auth_external_allow(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- char *uri = data;
-
- e_util_open(uri, NULL);
- DBG("launched uri: %s", uri);
- free(uri);
- auth_popup = 0;
-}
-
-EINTERN void
-wireless_authenticate_external(Wireless_Network *wn, const char *url)
-{
- char buf[1024];
- Eina_List *l;
- Instance *inst;
-
- EINA_LIST_FOREACH(instances, l, inst)
- if (wireless_popup.popup)
- {
- evas_object_hide(wireless_popup.popup);
- evas_object_del(wireless_popup.popup);
- }
- if (wn->type == WIRELESS_SERVICE_TYPE_ETHERNET)
- snprintf(buf, sizeof(buf), _("Ethernet connection wants to open a url:<ps/>%s"), url);
- else
- snprintf(buf, sizeof(buf), _("Network '%s' wants to open a url:<ps/>%s"), wn->name, url);
- EINA_LIST_FOREACH(instances, l, inst)
- {
- if (!inst->icon[wn->type]) continue;
- e_gadget_util_allow_deny_ctxpopup(inst->box, buf, _wireless_auth_external_allow, _wireless_auth_external_deny, strdup(url));
- auth_popup = 1;
- break;
- }
-}
diff --git a/src/modules/wireless/wireless.h b/src/modules/wireless/wireless.h
deleted file mode 100644
index 91a7b7f7f0..0000000000
--- a/src/modules/wireless/wireless.h
+++ /dev/null
@@ -1,140 +0,0 @@
-#ifndef E_WIRELESS_H
-# define E_WIRELESS_H
-
-#include "e.h"
-
-typedef enum
-{
- WIRELESS_SERVICE_TYPE_NONE = -1,
- WIRELESS_SERVICE_TYPE_ETHERNET,
- WIRELESS_SERVICE_TYPE_WIFI,
- WIRELESS_SERVICE_TYPE_BLUETOOTH,
- WIRELESS_SERVICE_TYPE_CELLULAR,
- WIRELESS_SERVICE_TYPE_LAST,
-} Wireless_Service_Type;
-
-typedef enum
-{
- WIRELESS_NETWORK_STATE_NONE,
- WIRELESS_NETWORK_STATE_CONFIGURING,
- WIRELESS_NETWORK_STATE_CONNECTED,
- WIRELESS_NETWORK_STATE_ONLINE,
- WIRELESS_NETWORK_STATE_FAILURE,
-} Wireless_Network_State;
-
-typedef enum
-{
- WIRELESS_NETWORK_SECURITY_NONE = 0,
- WIRELESS_NETWORK_SECURITY_WEP = (1 << 0),
- WIRELESS_NETWORK_SECURITY_PSK = (1 << 1),
- WIRELESS_NETWORK_SECURITY_IEEE8021X = (1 << 2),
- WIRELESS_NETWORK_SECURITY_WPS = (1 << 3),
-} Wireless_Network_Security;
-
-typedef enum
-{
- WIRELESS_NETWORK_IPV4_METHOD_OFF,
- WIRELESS_NETWORK_IPV4_METHOD_MANUAL,
- WIRELESS_NETWORK_IPV4_METHOD_DHCP,
- WIRELESS_NETWORK_IPV4_METHOD_FIXED,
-} Wireless_Network_IPv4_Method;
-
-typedef enum
-{
- WIRELESS_NETWORK_IPV6_METHOD_OFF,
- WIRELESS_NETWORK_IPV6_METHOD_MANUAL,
- WIRELESS_NETWORK_IPV6_METHOD_AUTO,
- WIRELESS_NETWORK_IPV6_METHOD_6TO4,
- WIRELESS_NETWORK_IPV6_METHOD_FIXED,
-} Wireless_Network_IPv6_Method;
-
-typedef enum
-{
- WIRELESS_NETWORK_IPV6_PRIVACY_DISABLED,
- WIRELESS_NETWORK_IPV6_PRIVACY_ENABLED,
- WIRELESS_NETWORK_IPV6_PRIVACY_PREFERRED,
-} Wireless_Network_IPv6_Privacy;
-
-typedef enum
-{
- WIRELESS_PROXY_TYPE_DIRECT,
- WIRELESS_PROXY_TYPE_MANUAL,
- WIRELESS_PROXY_TYPE_AUTO,
-} Wireless_Proxy_Type;
-
-typedef struct Wireless_Network Wireless_Network;
-
-typedef Eina_Bool (*Wireless_Network_Connect_Cb)(Wireless_Network *);
-
-typedef struct Wireless_Config
-{
- unsigned int disabled_types;
-} Wireless_Config;
-
-struct Wireless_Network
-{
- Eina_Stringshare *path;//dbus path
- Eina_Stringshare *name;
- Wireless_Network_Security security;
- Wireless_Network_State state;
- Wireless_Service_Type type;
- uint8_t strength;
-
- Wireless_Network_Connect_Cb connect_cb;
-};
-
-typedef struct Wireless_Connection
-{
- Wireless_Network *wn;
- unsigned int method;
- Eina_Stringshare *address;
- Eina_Stringshare *gateway;
- union
- {
- struct
- {
- Eina_Stringshare *netmask;
- } v4;
- struct
- {
- Eina_Stringshare *prefixlength;
- Wireless_Network_IPv6_Privacy privacy;
- } v6;
- } ip;
-
- Eina_Array *domain_servers;
- Eina_Array *name_servers;
- Eina_Array *time_servers;
-
- Wireless_Proxy_Type proxy_type;
- Eina_Stringshare *proxy_url;
- Eina_Array *proxy_servers;
- Eina_Array *proxy_excludes;
- Eina_Bool ipv6 E_BITFIELD;
- Eina_Bool favorite E_BITFIELD;
-} Wireless_Connection;
-
-typedef void (*Wireless_Auth_Cb)(void *data, const Eina_Array *fields);
-
-extern Eldbus_Connection *dbus_conn;
-extern Wireless_Config *wireless_config;
-
-EINTERN void wireless_service_type_available_set(Eina_Bool *avail);
-EINTERN void wireless_service_type_enabled_set(Eina_Bool *enabled);
-EINTERN void wireless_wifi_current_networks_set(Wireless_Connection **current);
-EINTERN Eina_Array *wireless_networks_set(Eina_Array *networks);
-EINTERN void wireless_airplane_mode_set(Eina_Bool enabled);
-EINTERN void wireless_authenticate(const Eina_Array *fields, Wireless_Auth_Cb cb, void *data);
-EINTERN void wireless_authenticate_cancel(void);
-EINTERN void wireless_authenticate_external(Wireless_Network *wn, const char *url);
-
-static inline void
-array_clear(Eina_Array *arr)
-{
- if (arr)
- while (eina_array_count(arr))
- eina_stringshare_del(eina_array_pop(arr));
- eina_array_free(arr);
-}
-
-#endif
diff --git a/src/modules/xkbswitch/e_mod_main.c b/src/modules/xkbswitch/e_mod_main.c
index a361a5241f..4a9a03222b 100644
--- a/src/modules/xkbswitch/e_mod_main.c
+++ b/src/modules/xkbswitch/e_mod_main.c
@@ -1,7 +1,6 @@
#include "e.h"
#include "e_mod_main.h"
#include "e_mod_parse.h"
-#include "gadget/xkbswitch.h"
/* GADCON */
static E_Gadcon_Client *_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style);
@@ -79,7 +78,6 @@ e_modapi_init(E_Module *m)
_("Keyboard"), NULL,
"preferences-desktop-keyboard",
_xkb_cfg_dialog);
- e_modapi_gadget_init(m);
_xkb.module = m;
xkb_change_handle = ecore_event_handler_add(E_EVENT_XKB_CHANGED, _xkb_changed_state, NULL);
@@ -93,13 +91,11 @@ e_modapi_init(E_Module *m)
* and frees up the config.
*/
E_API int
-e_modapi_shutdown(E_Module *m)
+e_modapi_shutdown(E_Module *m EINA_UNUSED)
{
e_configure_registry_item_del("keyboard_and_mouse/xkbswitch");
e_configure_registry_category_del("keyboard_and_mouse");
- e_modapi_gadget_shutdown(m);
-
if (_xkb.evh) ecore_event_handler_del(_xkb.evh);
if (_xkb.cfd) e_object_del(E_OBJECT(_xkb.cfd));
_xkb.cfd = NULL;
@@ -114,10 +110,8 @@ e_modapi_shutdown(E_Module *m)
* Used to save the configuration file.
*/
E_API int
-e_modapi_save(E_Module *m)
+e_modapi_save(E_Module *m EINA_UNUSED)
{
- e_modapi_gadget_save(m);
-
return 1;
}
diff --git a/src/modules/xkbswitch/gadget/mod.c b/src/modules/xkbswitch/gadget/mod.c
deleted file mode 100644
index def93b7151..0000000000
--- a/src/modules/xkbswitch/gadget/mod.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "xkbswitch.h"
-
-Xkbg _xkbg = { NULL, NULL, NULL };
-
-EINTERN void *
-e_modapi_gadget_init(E_Module *m)
-{
- _xkbg.module = m;
- xkbg_init();
- e_gadget_type_add("Xkbswitch", xkbg_gadget_create, NULL);
- return m;
-}
-
-EINTERN int
-e_modapi_gadget_shutdown(E_Module *m EINA_UNUSED)
-{
- xkbg_shutdown();
- _xkbg.module = NULL;
- e_gadget_type_del("Xkbswitch");
-
- return 1;
-}
-
-EINTERN int
-e_modapi_gadget_save(E_Module *m EINA_UNUSED)
-{
- return 1;
-}
-
diff --git a/src/modules/xkbswitch/gadget/xkbswitch.c b/src/modules/xkbswitch/gadget/xkbswitch.c
deleted file mode 100644
index fd38bd57f3..0000000000
--- a/src/modules/xkbswitch/gadget/xkbswitch.c
+++ /dev/null
@@ -1,341 +0,0 @@
-#include "xkbswitch.h"
-
-typedef struct _Instance
-{
- Evas_Object *o_main;
- Evas_Object *o_xkbswitch;
- Evas_Object *o_xkbflag;
- Evas_Object *menu;
- Evas_Object *popup;
- E_Gadget_Site_Orient orient;
- E_Config_XKB_Layout *layout;
- Ecore_Timer *menu_timer;
- unsigned int menu_timestamp;
-} Instance;
-
-static Eina_List *ginstances = NULL;
-static Ecore_Event_Handler *xkbg_change_handle = NULL;
-
-void
-_xkbg_update_icon(int cur_group)
-{
- Instance *inst;
- Eina_List *l;
- E_Config_XKB_Layout *cl;
-
- EINA_SAFETY_ON_NULL_RETURN(e_config->xkb.used_layouts);
- //INF("ui: %d", cur_group);
- cl = eina_list_nth(e_config->xkb.used_layouts, cur_group);
- EINA_SAFETY_ON_NULL_RETURN(cl);
- if (!e_config_xkb_layout_eq(cl, e_config->xkb.current_layout))
- {
- e_config_xkb_layout_free(e_config->xkb.current_layout);
- e_config->xkb.current_layout = e_config_xkb_layout_dup(cl);
- }
-
- if (e_config->xkb.only_label)
- {
- EINA_LIST_FOREACH(ginstances, l, inst)
- {
- if (!e_config_xkb_layout_eq(e_config->xkb.current_layout, inst->layout))
- inst->layout = e_config->xkb.current_layout;
- E_FREE_FUNC(inst->o_xkbflag, evas_object_del);
- e_theme_edje_object_set(inst->o_xkbswitch,
- "base/theme/gadget/xkbswitch",
- "e/gadget/xkbswitch/noflag");
- elm_layout_text_set(inst->o_xkbswitch,
- "e.text.label", cl->name);
- }
- }
- else
- {
- EINA_LIST_FOREACH(ginstances, l, inst)
- {
- if (!e_config_xkb_layout_eq(e_config->xkb.current_layout, inst->layout))
- inst->layout = e_config->xkb.current_layout;
- if (!inst->o_xkbflag)
- inst->o_xkbflag = e_icon_add(evas_object_evas_get(inst->o_xkbswitch));
- e_theme_edje_object_set(inst->o_xkbswitch,
- "base/theme/gadget/xkbswitch",
- "e/gadget/xkbswitch/main");
- e_xkb_e_icon_flag_setup(inst->o_xkbflag, cl->name);
- elm_layout_content_set(inst->o_xkbswitch, "e.swallow.flag",
- inst->o_xkbflag);
- elm_layout_text_set(inst->o_xkbswitch, "e.text.label",
- e_xkb_layout_name_reduce(cl->name));
- }
- }
-}
-
-static Eina_Bool
-_xkbg_changed_state(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- _xkbg_update_icon(e_config->xkb.cur_group);
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Evas_Object *
-_xkbg_gadget_configure(Evas_Object *g EINA_UNUSED)
-{
- if (e_configure_registry_exists("keyboard_and_mouse/xkbswitch"))
- {
- e_configure_registry_call("keyboard_and_mouse/xkbswitch", NULL, NULL);
- }
- return NULL;
-}
-
-static void
-_xkbg_cb_menu_set(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
-{
- Instance *inst = evas_object_data_get(obj, "inst");
- Eina_List *l;
- int cur_group = -1, grp = -1;
- E_Config_XKB_Layout *cl2, *cl = data;
-
- if (inst->popup)
- elm_ctxpopup_dismiss(inst->popup);
-
- EINA_LIST_FOREACH(e_config->xkb.used_layouts, l, cl2)
- {
- grp++;
- if (cl2 == cl) cur_group = grp;
- }
- if (cur_group == -1) return;
- e_xkb_layout_set(cl);
- e_config_xkb_layout_free(e_config->xkb.sel_layout);
- e_config->xkb.sel_layout = e_config_xkb_layout_dup(cl);
- if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
-#ifdef HAVE_WAYLAND
- e_comp_wl_input_keymap_index_set(cur_group);
-#else
- (void)cur_group;
-#endif
-}
-
-static void
-_xkbg_popup_dismissed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- E_FREE_FUNC(obj, evas_object_del);
- inst->popup = NULL;
-}
-
-static void
-_xkbg_popup_deleted(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
- inst->popup = NULL;
-}
-
-static Eina_Bool
-_xkbg_popup_cb(void *data)
-{
- Instance *inst;
- E_Config_XKB_Layout *cl, *cur;
- Eina_List *l;
- Elm_Object_Item *mi;
- char buf[4096], buf2[4096];
-
- inst = data;
- inst->menu_timer = NULL;
- cur = e_xkb_layout_get();
-
- inst->popup = elm_ctxpopup_add(e_comp->elm);
- elm_object_style_set(inst->popup, "noblock");
- evas_object_smart_callback_add(inst->popup, "dismissed", _xkbg_popup_dismissed, inst);
- evas_object_event_callback_add(inst->popup, EVAS_CALLBACK_DEL, _xkbg_popup_deleted, inst);
-
- inst->menu = elm_list_add(inst->popup);
- elm_list_select_mode_set(inst->menu, ELM_OBJECT_SELECT_MODE_ALWAYS);
- evas_object_data_set(inst->menu, "inst", inst);
- elm_object_content_set(inst->popup, inst->menu);
- E_EXPAND(inst->menu);
- E_FILL(inst->menu);
-
- /* Append all the layouts */
- EINA_LIST_FOREACH(e_config->xkb.used_layouts, l, cl)
- {
- const char *name = cl->name;
- Evas_Object *ic;
-
- e_xkb_flag_file_get(buf, sizeof(buf), name);
- if (cl->variant)
- snprintf(buf2, sizeof(buf2), "%s (%s, %s)", cl->name, cl->model, cl->variant);
- else
- snprintf(buf2, sizeof(buf2), "%s (%s)", cl->name, cl->model);
-
- ic = elm_icon_add(inst->menu);
- E_EXPAND(ic);
- E_FILL(ic);
- elm_image_file_set(ic, buf, NULL);
- evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- evas_object_show(ic);
-
- mi = elm_list_item_append(inst->menu, buf2, ic, NULL, _xkbg_cb_menu_set, cl);
-
- if (e_config_xkb_layout_eq(cur, cl))
- elm_list_item_selected_set(mi, EINA_TRUE);
- }
-
- evas_object_show(inst->menu);
- evas_object_size_hint_min_set(inst->popup, 200 * e_scale, 100 * e_scale);
- e_gadget_util_ctxpopup_place(inst->o_main, inst->popup, inst->o_xkbswitch);
- evas_object_show(inst->popup);
- return ECORE_CALLBACK_CANCEL;
-}
-
-static void
-_xkbg_cb_mouse_up(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event)
-{
- Evas_Event_Mouse_Up *ev = event;
- Instance *inst = data;
-
- if (!inst) return;
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
- if ((ev->button == 1) && (inst->popup))
- {
- elm_ctxpopup_dismiss(inst->popup);
- return;
- }
- else if ((ev->button == 2) /* Middle click */
- ||
- ((ev->button == 1) && (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)) /* double Left-click */
- )
- {
- if (inst->menu_timer)
- {
- ecore_timer_del(inst->menu_timer);
- inst->menu_timer = NULL;
- }
- e_xkb_layout_next();
- }
-
- else if ((ev->button == 1) && (!inst->popup)) /* Left-click layout menu */
- {
- if (!e_config->xkb.dont_touch_my_damn_keyboard)
- {
- if (!inst->menu_timer)
- {
- inst->menu_timestamp = ev->timestamp;
-#ifdef HAVE_WAYLAND_ONLY
- inst->menu_timer = ecore_timer_add(0.25,
- _xkbg_popup_cb, inst);
-#else
- inst->menu_timer = ecore_timer_add(ecore_x_double_click_time_get(),
- _xkbg_popup_cb, inst);
-#endif
- }
- }
- }
-}
-
-static void
-_xkbg_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
-{
- //Evas_Coord w, h;
- Instance *inst = data;
-
- /* This does not work properly yet
- edje_object_parts_extends_calc(elm_layout_edje_get(inst->o_xkbswitch), 0, 0, &w, &h);
- evas_object_size_hint_aspect_set(inst->o_xkbswitch, EVAS_ASPECT_CONTROL_BOTH, w, h);*/
- evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
-}
-
-static void
-_xkbg_gadget_created_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst->o_main)
- {
- e_gadget_configure_cb_set(inst->o_main, _xkbg_gadget_configure);
-
- inst->o_xkbswitch = elm_layout_add(inst->o_main);
- E_EXPAND(inst->o_xkbswitch);
- E_FILL(inst->o_xkbswitch);
-
- inst->layout = e_xkb_layout_get();
- if (e_config->xkb.only_label || (!inst->layout))
- {
- if (inst->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(inst->o_xkbswitch,
- "base/theme/gadget/xkbswitch",
- "e/gadget/xkbswitch/noflag_vert");
- else
- e_theme_edje_object_set(inst->o_xkbswitch,
- "base/theme/gadget/xkbswitch",
- "e/gadget/xkbswitch/noflag");
- }
- else
- {
- if (inst->orient == E_GADGET_SITE_ORIENT_VERTICAL)
- e_theme_edje_object_set(inst->o_xkbswitch,
- "base/theme/gadget/xkbswitch",
- "e/gadget/xkbswitch/main_vert");
- else
- e_theme_edje_object_set(inst->o_xkbswitch,
- "base/theme/gadget/xkbswitch",
- "e/gadget/xkbswitch/main");
- }
- elm_layout_text_set(inst->o_xkbswitch, "e.text.label",
- inst->layout ? e_xkb_layout_name_reduce(inst->layout->name) : _("NONE"));
- if (inst->layout && (!e_config->xkb.only_label))
- {
- inst->o_xkbflag = e_icon_add(evas_object_evas_get(inst->o_xkbswitch));
- e_xkb_e_icon_flag_setup(inst->o_xkbflag, inst->layout->name);
- elm_layout_content_set(inst->o_xkbswitch, "e.swallow.flag",
- inst->o_xkbflag);
- }
- else inst->o_xkbflag = NULL;
- evas_object_event_callback_add(inst->o_xkbswitch, EVAS_CALLBACK_MOUSE_UP,
- _xkbg_cb_mouse_up, inst);
- evas_object_event_callback_add(inst->o_xkbswitch, EVAS_CALLBACK_RESIZE,
- _xkbg_resize_cb, inst);
- elm_box_pack_end(inst->o_main, inst->o_xkbswitch);
- evas_object_show(inst->o_xkbswitch);
- }
- evas_object_smart_callback_del_full(obj, "gadget_created", _xkbg_gadget_created_cb, data);
-}
-
-static void
-xkbg_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
- Instance *inst = data;
-
- if (inst->popup)
- elm_ctxpopup_dismiss(inst->popup);
- ginstances = eina_list_remove(ginstances, inst);
- free(inst);
-}
-
-EINTERN Evas_Object *
-xkbg_gadget_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient)
-{
- Instance *inst;
-
- if (*id == 0) *id = 1;
- inst = E_NEW(Instance, 1);
- inst->o_main = elm_box_add(parent);
- inst->orient = orient;
- evas_object_smart_callback_add(parent, "gadget_created", _xkbg_gadget_created_cb, inst);
- evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, xkbg_del, inst);
-
- ginstances = eina_list_append(ginstances, inst);
- return inst->o_main;
-}
-
-EINTERN void
-xkbg_init(void)
-{
- xkbg_change_handle = ecore_event_handler_add(E_EVENT_XKB_CHANGED, _xkbg_changed_state, NULL);
-}
-
-EINTERN void
-xkbg_shutdown(void)
-{
- if (_xkbg.evh) ecore_event_handler_del(_xkbg.evh);
- if (_xkbg.cfd) e_object_del(E_OBJECT(_xkbg.cfd));
- _xkbg.cfd = NULL;
- ecore_event_handler_del(xkbg_change_handle);
-}
-
diff --git a/src/modules/xkbswitch/gadget/xkbswitch.h b/src/modules/xkbswitch/gadget/xkbswitch.h
deleted file mode 100644
index d708041f29..0000000000
--- a/src/modules/xkbswitch/gadget/xkbswitch.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef XKBSWITCH_H
-#define XKBSWITCH_H
-
-#include "e.h"
-
-typedef struct _Xkbg
-{
- E_Module *module;
- E_Config_Dialog *cfd;
- Ecore_Event_Handler *evh;
-} Xkbg;
-
-void _xkbg_update_icon(int);
-E_Config_Dialog *_xkbg_cfg_dialog(Evas_Object *, const char *params);
-
-EINTERN extern Xkbg _xkbg;
-
-EINTERN void *e_modapi_gadget_init(E_Module *m);
-EINTERN int e_modapi_gadget_shutdown(E_Module *m EINA_UNUSED);
-EINTERN int e_modapi_gadget_save(E_Module *m EINA_UNUSED);
-EINTERN Evas_Object *xkbg_gadget_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient);
-EINTERN void xkbg_init(void);
-EINTERN void xkbg_shutdown(void);
-
-#endif
diff --git a/src/modules/xkbswitch/meson.build b/src/modules/xkbswitch/meson.build
index 374e55c50b..6359415280 100644
--- a/src/modules/xkbswitch/meson.build
+++ b/src/modules/xkbswitch/meson.build
@@ -3,8 +3,5 @@ src = files(
'e_mod_config.c',
'e_mod_parse.c',
'e_mod_main.h',
- 'e_mod_parse.h',
- 'gadget/xkbswitch.h',
- 'gadget/xkbswitch.c',
- 'gadget/mod.c'
+ 'e_mod_parse.h'
)
diff --git a/src/protocol/e-gadget.xml b/src/protocol/e-gadget.xml
deleted file mode 100644
index 44b2460128..0000000000
--- a/src/protocol/e-gadget.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<protocol name="e_gadget">
-
- <interface name="e_gadget" version="1">
- <enum name="orient">
- <entry name="none" value="0"/>
- <entry name="horizontal" value="1"/>
- <entry name="vertical" value="2"/>
- </enum>
- <enum name="gravity">
- <entry name="none" value="0"/>
- <entry name="left" value="1"/>
- <entry name="right" value="2"/>
- <entry name="top" value="3"/>
- <entry name="bottom" value="4"/>
- <entry name="center" value="5"/>
- </enum>
- <enum name="anchor" bitfield="true">
- <entry name="none" value="0"/>
- <entry name="left" value="1"/>
- <entry name="right" value="2"/>
- <entry name="top" value="4"/>
- <entry name="bottom" value="8"/>
- </enum>
- <event name="gadget_anchor">
- <arg name="anchor" type="uint" enum="anchor"/>
- </event>
- <event name="gadget_orient">
- <arg name="orient" type="uint" enum="orient"/>
- </event>
- <event name="gadget_gravity">
- <arg name="gravity" type="uint" enum="gravity"/>
- </event>
- <event name="gadget_configure"/>
- <request name="open_uri">
- <arg name="uri" type="string"/>
- </request>
- <request name="set_tooltip">
- <arg name="surface" type="object" interface="wl_surface"/>
- </request>
- </interface>
-
-</protocol>