desksanity is go: 5 effects to start

desksanity-1.0
Mike Blumenkrantz 10 years ago
parent ab5038dc28
commit b49f7366ff
  1. 173
      src/desksanity.c
  2. 10
      src/e_mod_main.c
  3. 3
      src/e_mod_main.h

@ -1,9 +1,179 @@
#include "e_mod_main.h"
static E_Desk *desk_show = NULL;
static Evas_Object *dm_show = NULL;
static E_Desk *desk_hide = NULL;
static Evas_Object *dm_hide = NULL;
enum
{
DS_PAN,
DS_BATMAN,
DS_ZOOM_IN,
DS_ZOOM_OUT,
DS_GROW,
DS_LAST,
} DS_Type;
static void
_ds_end(void *data EINA_UNUSED, Efx_Map_Data *emd EINA_UNUSED, Evas_Object *obj EINA_UNUSED)
{
evas_object_hide(dm_hide);
E_FREE_FUNC(dm_hide, evas_object_del);
desk_hide = NULL;
if (desk_show) e_desk_flip_end(desk_show);
evas_object_hide(dm_show);
E_FREE_FUNC(dm_show, evas_object_del);
desk_show = NULL;
}
static Evas_Object *
dm_add(E_Desk *desk)
{
Evas_Object *o, *dm;
o = dm = e_deskmirror_add(desk, 0, 0);
evas_object_geometry_set(dm, desk->zone->x, desk->zone->y, desk->zone->w, desk->zone->h);
evas_object_show(dm);
//o = e_zoomap_add(e_comp_get(desk)->evas);
//e_zoomap_solid_set(o, 1);
//e_zoomap_always_set(o, 1);
//e_zoomap_child_set(o, dm);
evas_object_propagate_events_set(o, 0);
evas_object_clip_set(o, desk->zone->bg_clip_object);
evas_object_layer_set(o, E_LAYER_MENU + 100);
evas_object_show(o);
return o;
}
static void
_ds_flip(void *data, E_Desk *desk, Eina_Bool show)
_ds_show(E_Desk *desk, int dx, int dy)
{
E_Client *ec;
E_FREE_FUNC(dm_show, evas_object_del);
E_CLIENT_FOREACH(desk->zone->comp, ec)
{
if ((ec->desk->zone != desk->zone) || (ec->iconic) || e_client_util_ignored_get(ec)) continue;
if (ec->moving)
{
e_client_desk_set(ec, desk);
evas_object_show(ec->frame);
continue;
}
if ((ec->desk != desk) || (ec->sticky)) continue;
e_client_comp_hidden_set(ec, EINA_FALSE);
ec->hidden = 0;
evas_object_show(ec->frame);
}
desk_show = desk;
dm_show = dm_add(desk);
evas_object_name_set(dm_show, "dm_show");
switch (rand() % DS_LAST)
{
int x, y, hx, hy, w, h;
Evas_Object *o;
case DS_PAN:
switch (dx)
{
case -1:
x = desk->zone->x - desk->zone->w;
hx = desk->zone->x + desk->zone->w;
break;
case 0:
x = desk->zone->x;
hx = desk->zone->x;
break;
case 1:
x = desk->zone->x + desk->zone->w;
hx = desk->zone->x - desk->zone->w;
break;
}
switch (dy)
{
case -1:
y = desk->zone->y - desk->zone->h;
hy = desk->zone->y + desk->zone->h;
break;
case 0:
y = desk->zone->y;
hy = desk->zone->y;
break;
case 1:
y = desk->zone->y + desk->zone->h;
hy = desk->zone->y - desk->zone->h;
break;
}
evas_object_move(dm_show, x, y);
efx_move(dm_hide, EFX_EFFECT_SPEED_DECELERATE, EFX_POINT(hx, hy), 0.2, NULL, NULL);
efx_move(dm_show, EFX_EFFECT_SPEED_DECELERATE, EFX_POINT(desk->zone->x, desk->zone->y), 0.2, _ds_end, NULL);
break;
case DS_BATMAN:
efx_spin_start(dm_show, 1080.0, NULL);
efx_zoom(dm_show, EFX_EFFECT_SPEED_LINEAR, 1.0, 0.00001, NULL, 0.4, _ds_end, NULL);
break;
case DS_ZOOM_IN:
efx_zoom(dm_show, EFX_EFFECT_SPEED_LINEAR, 0.000001, 1.0, NULL, 0.4, _ds_end, NULL);
break;
case DS_ZOOM_OUT:
evas_object_raise(dm_hide);
efx_zoom(dm_hide, EFX_EFFECT_SPEED_LINEAR, 1.0, 0.0000001, NULL, 0.4, _ds_end, NULL);
break;
case DS_GROW:
x = hx = desk->zone->x;
w = 1;
if (dx == 1)
x = desk->zone->x + desk->zone->w;
else if (!dx)
w = desk->zone->w;
y = hy = desk->zone->y;
h = 1;
if (dy == 1)
y = desk->zone->y + desk->zone->h;
else if (!dy)
h = desk->zone->h;
o = evas_object_rectangle_add(e_comp_get(desk)->evas);
evas_object_geometry_set(o, x, y, w, h);
evas_object_clip_set(dm_show, o);
evas_object_show(o);
e_comp_object_util_del_list_append(dm_show, o);
efx_resize(o, EFX_EFFECT_SPEED_LINEAR, EFX_POINT(hx, hy), desk->zone->w, desk->zone->h, 0.4, _ds_end, NULL);
break;
default: break;
}
}
static void
_ds_hide(E_Desk *desk)
{
E_Client *ec;
E_FREE_FUNC(dm_hide, evas_object_del);
E_CLIENT_FOREACH(desk->zone->comp, ec)
{
if ((ec->desk->zone != desk->zone) || (ec->iconic) || e_client_util_ignored_get(ec)) continue;
if (ec->moving) continue;
if ((ec->desk != desk) || (ec->sticky)) continue;
e_client_comp_hidden_set(ec, EINA_TRUE);
ec->hidden = 1;
evas_object_hide(ec->frame);
}
desk_hide = desk;
dm_hide = dm_add(desk);
evas_object_name_set(dm_hide, "dm_hide");
}
static void
_ds_flip(void *data EINA_UNUSED, E_Desk *desk, int dx, int dy, Eina_Bool show)
{
if (show)
_ds_show(desk, dx, dy);
else
_ds_hide(desk);
}
EINTERN void
@ -16,4 +186,5 @@ EINTERN void
ds_shutdown(void)
{
e_desk_flip_cb_set(NULL, NULL);
_ds_end(NULL, NULL, NULL);
}

@ -8,7 +8,7 @@ EINTERN Mod *mod = NULL;
EINTERN Config *ds_config = NULL;
static void
_e_mod_ech_config_load(void)
_e_mod_ds_config_load(void)
{
#undef T
#undef D
@ -17,7 +17,7 @@ _e_mod_ech_config_load(void)
#define D conf_edd
E_CONFIG_VAL(D, T, config_version, UINT);
ds_config = e_config_domain_load("module.desksanity", conf_edd);
//ds_config = e_config_domain_load("module.desksanity", conf_edd);
if (ds_config)
{
if (!e_util_module_config_check("Desksanity", ds_config->config_version, MOD_CONFIG_FILE_VERSION))
@ -63,9 +63,9 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
e_configure_registry_category_del("extensions");
E_FN_DEL(e_object_del, mod->cfd);
E_FREE_FUNC(mod->cfd, e_object_del);
ds_shutdown();
e_config_domain_save("module.desksanity", conf_edd, ds_config);
//e_config_domain_save("module.desksanity", conf_edd, ds_config);
E_CONFIG_DD_FREE(conf_edd);
E_FREE(mod);
E_FREE_LIST(handlers, ecore_event_handler_del);
@ -76,7 +76,7 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
EAPI int
e_modapi_save(E_Module *m EINA_UNUSED)
{
e_config_domain_save("module.desksanity", conf_edd, ds_config);
//e_config_domain_save("module.desksanity", conf_edd, ds_config);
return 1;
}

@ -39,4 +39,7 @@ typedef struct Config
extern Mod *mod;
extern Config *ds_config;
EINTERN void ds_init(void);
EINTERN void ds_shutdown(void);
#endif

Loading…
Cancel
Save