Enlightenment CVS committal
Author : devilhorns
Project : e_modules
Module : slideshow
Dir : e_modules/slideshow
Modified Files:
e_mod_main.h e_mod_main.c e_mod_config.c
Log Message:
Modified patch from Joao Vale:
-Searches for backgrounds in specified directory and all sub-dirs.
-Optionally randomize the order of backgrounds.
===================================================================
RCS file: /cvs/e/e_modules/slideshow/e_mod_main.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- e_mod_main.h 6 Jun 2006 15:31:43 -0000 1.17
+++ e_mod_main.h 28 Jul 2006 00:02:17 -0000 1.18
@@ -20,6 +20,7 @@
const char *id;
int disable_timer;
+ int random_order;
double poll_time;
const char *dir;
};
===================================================================
RCS file: /cvs/e/e_modules/slideshow/e_mod_main.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -3 -r1.34 -r1.35
--- e_mod_main.c 18 Jul 2006 00:01:37 -0000 1.34
+++ e_mod_main.c 28 Jul 2006 00:02:17 -0000 1.35
@@ -8,509 +8,556 @@
struct _Instance
{
- E_Gadcon_Client *gcc;
- Evas_Object *slide_obj;
- Slideshow *slide;
- Ecore_Timer *check_timer;
- Ecore_List *bg_list;
- const char *display;
- int index, bg_id, bg_count;
+ E_Gadcon_Client *gcc;
+ Evas_Object *slide_obj;
+ Slideshow *slide;
+ Ecore_Timer *check_timer;
+ Ecore_List *bg_list;
+ const char *display;
+
+ int index, bg_id, bg_count;
};
struct _Slideshow
{
- Instance *inst;
- Evas_Object *slide_obj;
- Evas_Object *bg_obj;
- Evas_Object *img_obj;
+ Instance *inst;
+ Evas_Object *slide_obj;
+ Evas_Object *bg_obj;
+ Evas_Object *img_obj;
};
-static E_Gadcon_Client *_gc_init (E_Gadcon * gc, const char *name,
- const char *id, const char *style);
-static void _gc_shutdown (E_Gadcon_Client * gcc);
-static void _gc_orient (E_Gadcon_Client * gcc);
-static char *_gc_label (void);
-static Evas_Object *_gc_icon (Evas * evas);
-
-static void _slide_cb_mouse_down (void *data, Evas * e, Evas_Object * obj,
- void *event_info);
-static void _slide_menu_cb_configure (void *data, E_Menu * m,
- E_Menu_Item * mi);
-static void _slide_menu_cb_post (void *data, E_Menu * m);
-static Config_Item *_slide_config_item_get (const char *id);
-static Slideshow *_slide_new (Evas * evas);
-static void _slide_free (Slideshow * ss);
-static int _slide_cb_check (void *data);
-static void _slide_get_bg_count (void *data);
-static void _slide_set_bg (void *data, const char *bg);
-static void _slide_set_preview (void *data);
+static E_Gadcon_Client *_gc_init (E_Gadcon *gc, const char *name, const
char *id, const char *style);
+static void _gc_shutdown (E_Gadcon_Client *gcc);
+static void _gc_orient (E_Gadcon_Client *gcc);
+static char *_gc_label (void);
+static Evas_Object *_gc_icon (Evas *evas);
+
+static void _slide_cb_mouse_down (void *data, Evas *e, Evas_Object
*obj, void *event_info);
+static void _slide_menu_cb_configure (void *data, E_Menu *m,
E_Menu_Item *mi);
+static void _slide_menu_cb_post (void *data, E_Menu *m);
+static Config_Item *_slide_config_item_get (const char *id);
+static Slideshow *_slide_new (Evas *evas);
+static void _slide_free (Slideshow *ss);
+static int _slide_cb_check (void *data);
+static void _slide_get_bg_count (void *data);
+static void _slide_set_bg (void *data, const char *bg);
+static void _slide_set_preview (void *data);
+static void _slide_get_bg_subdirs (void *data, char *localPath);
static E_Config_DD *conf_edd = NULL;
static E_Config_DD *conf_item_edd = NULL;
Config *slide_config = NULL;
-static const E_Gadcon_Client_Class _gc_class = {
- GADCON_CLIENT_CLASS_VERSION,
- "slideshow", {_gc_init, _gc_shutdown, _gc_orient, _gc_label, _gc_icon}
+static const E_Gadcon_Client_Class _gc_class =
+{
+ GADCON_CLIENT_CLASS_VERSION,
+ "slideshow", {_gc_init, _gc_shutdown, _gc_orient, _gc_label, _gc_icon}
};
static E_Gadcon_Client *
-_gc_init (E_Gadcon * gc, const char *name, const char *id, const char *style)
+_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
{
- Evas_Object *o;
- E_Gadcon_Client *gcc;
- Instance *inst;
- Config_Item *ci;
- Slideshow *slide;
-
- inst = E_NEW (Instance, 1);
-
- ci = _slide_config_item_get (id);
- if (!ci->id)
- ci->id = evas_stringshare_add (id);
-
- slide = _slide_new (gc->evas);
- slide->inst = inst;
- inst->slide = slide;
-
- o = slide->slide_obj;
- gcc = e_gadcon_client_new (gc, name, id, style, o);
- gcc->data = inst;
- inst->gcc = gcc;
- inst->slide_obj = o;
-
- evas_object_event_callback_add (o, EVAS_CALLBACK_MOUSE_DOWN,
- _slide_cb_mouse_down, inst);
- slide_config->instances = evas_list_append (slide_config->instances, inst);
-
- if (!ci->disable_timer)
- inst->check_timer =
- ecore_timer_add (ci->poll_time, _slide_cb_check, inst);
- else
- {
- _slide_get_bg_count (inst);
- inst->index = 0;
- _slide_set_preview (inst);
- }
- return gcc;
+ Evas_Object *o;
+ E_Gadcon_Client *gcc;
+ Instance *inst;
+ Config_Item *ci;
+ Slideshow *slide;
+
+ inst = E_NEW(Instance, 1);
+
+ ci = _slide_config_item_get(id);
+ if (!ci->id)
+ ci->id = evas_stringshare_add(id);
+
+ slide = _slide_new(gc->evas);
+ slide->inst = inst;
+ inst->slide = slide;
+
+ o = slide->slide_obj;
+ gcc = e_gadcon_client_new(gc, name, id, style, o);
+ gcc->data = inst;
+ inst->gcc = gcc;
+ inst->slide_obj = o;
+
+ evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN,
_slide_cb_mouse_down, inst);
+ slide_config->instances = evas_list_append(slide_config->instances, inst);
+
+ if (!ci->disable_timer)
+ inst->check_timer =
+ ecore_timer_add(ci->poll_time, _slide_cb_check, inst);
+ else
+ {
+ _slide_get_bg_count(inst);
+ if(ci->random_order)
+ {
+ srand(time(NULL));
+ inst->index = (rand() % (inst->bg_count+1));
+ }
+ else
+ inst->index = 0;
+
+ _slide_set_preview(inst);
+ }
+ return gcc;
}
static void
-_gc_shutdown (E_Gadcon_Client * gcc)
+_gc_shutdown(E_Gadcon_Client *gcc)
{
- Instance *inst;
- Slideshow *slide;
+ Instance *inst;
+ Slideshow *slide;
- inst = gcc->data;
- slide = inst->slide;
+ inst = gcc->data;
+ slide = inst->slide;
- if (inst->bg_list)
- ecore_list_destroy (inst->bg_list);
- if (inst->display)
- evas_stringshare_del (inst->display);
- if (inst->check_timer)
- ecore_timer_del (inst->check_timer);
+ if (inst->bg_list)
+ ecore_list_destroy(inst->bg_list);
+ if (inst->display)
+ evas_stringshare_del(inst->display);
+ if (inst->check_timer)
+ ecore_timer_del(inst->check_timer);
- slide_config->instances = evas_list_remove (slide_config->instances, inst);
+ slide_config->instances = evas_list_remove(slide_config->instances, inst);
- evas_object_event_callback_del (slide->slide_obj, EVAS_CALLBACK_MOUSE_DOWN,
- _slide_cb_mouse_down);
+ evas_object_event_callback_del(slide->slide_obj, EVAS_CALLBACK_MOUSE_DOWN,
_slide_cb_mouse_down);
- _slide_free (slide);
- free (inst);
+ _slide_free(slide);
+ E_FREE(inst);
}
static void
-_gc_orient (E_Gadcon_Client * gcc)
+_gc_orient(E_Gadcon_Client *gcc)
{
- e_gadcon_client_aspect_set (gcc, 16, 16);
- e_gadcon_client_min_size_set (gcc, 16, 16);
+ e_gadcon_client_aspect_set(gcc, 16, 16);
+ e_gadcon_client_min_size_set(gcc, 16, 16);
}
static char *
-_gc_label (void)
+_gc_label(void)
{
- return D_ ("Slideshow");
+ return D_ ("Slideshow");
}
static Evas_Object *
-_gc_icon (Evas * evas)
+_gc_icon(Evas *evas)
{
- Evas_Object *o;
- char buf[4096];
+ Evas_Object *o;
+ char buf[4096];
- o = edje_object_add (evas);
- snprintf (buf, sizeof (buf), "%s/module.eap",
- e_module_dir_get (slide_config->module));
- edje_object_file_set (o, buf, "icon");
- return o;
+ o = edje_object_add(evas);
+ snprintf(buf, sizeof (buf), "%s/module.eap", e_module_dir_get
(slide_config->module));
+ edje_object_file_set(o, buf, "icon");
+ return o;
}
static void
-_slide_cb_mouse_down (void *data, Evas * e, Evas_Object * obj,
- void *event_info)
+_slide_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
- Instance *inst;
- Evas_Event_Mouse_Down *ev;
+ Instance *inst;
+ Evas_Event_Mouse_Down *ev;
- inst = data;
- ev = event_info;
- if ((ev->button == 3) && (!slide_config->menu))
- {
- E_Menu *mn;
- E_Menu_Item *mi;
- int x, y, w, h;
-
- mn = e_menu_new ();
- e_menu_post_deactivate_callback_set (mn, _slide_menu_cb_post, inst);
- slide_config->menu = mn;
-
- mi = e_menu_item_new (mn);
- e_menu_item_label_set (mi, _("Configuration"));
- e_util_menu_item_edje_icon_set (mi, "enlightenment/configuration");
- e_menu_item_callback_set (mi, _slide_menu_cb_configure, inst);
-
- mi = e_menu_item_new (mn);
- e_menu_item_separator_set (mi, 1);
-
- e_gadcon_client_util_menu_items_append (inst->gcc, mn, 0);
- e_gadcon_canvas_zone_geometry_get (inst->gcc->gadcon, &x, &y, &w, &h);
- e_menu_activate_mouse (mn,
- e_util_zone_current_get (e_manager_current_get
- ()), x + ev->output.x,
- y + ev->output.y, 1, 1,
- E_MENU_POP_DIRECTION_DOWN, ev->timestamp);
- evas_event_feed_mouse_up (inst->gcc->gadcon->evas, ev->button,
- EVAS_BUTTON_NONE, ev->timestamp, NULL);
- }
- else if (ev->button == 2)
- {
- Config_Item *ci;
-
- ci = _slide_config_item_get (inst->gcc->id);
- if (ci->disable_timer)
- return;
- if (inst->check_timer)
- ecore_timer_del (inst->check_timer);
- else
- inst->check_timer =
- ecore_timer_add (ci->poll_time, _slide_cb_check, inst);
- }
- else if (ev->button == 1)
- _slide_cb_check (inst);
+ inst = data;
+ ev = event_info;
+ if ((ev->button == 3) && (!slide_config->menu))
+ {
+ E_Menu *mn;
+ E_Menu_Item *mi;
+ int x, y, w, h;
+
+ mn = e_menu_new();
+ e_menu_post_deactivate_callback_set(mn, _slide_menu_cb_post, inst);
+ slide_config->menu = mn;
+
+ mi = e_menu_item_new(mn);
+ e_menu_item_label_set(mi, D_("Configuration"));
+ e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration");
+ e_menu_item_callback_set(mi, _slide_menu_cb_configure, inst);
+
+ mi = e_menu_item_new(mn);
+ e_menu_item_separator_set(mi, 1);
+
+ e_gadcon_client_util_menu_items_append(inst->gcc, mn, 0);
+ e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &x, &y, &w, &h);
+ e_menu_activate_mouse(mn,
+
e_util_zone_current_get(e_manager_current_get()),
+ x + ev->output.x, y + ev->output.y, 1, 1,
+ E_MENU_POP_DIRECTION_DOWN, ev->timestamp);
+ evas_event_feed_mouse_up(inst->gcc->gadcon->evas, ev->button,
+ EVAS_BUTTON_NONE, ev->timestamp, NULL);
+ }
+ else if (ev->button == 2)
+ {
+ Config_Item *ci;
+
+ ci = _slide_config_item_get(inst->gcc->id);
+ if (ci->disable_timer)
+ return;
+ if (inst->check_timer)
+ ecore_timer_del(inst->check_timer);
+ else
+ inst->check_timer = ecore_timer_add(ci->poll_time, _slide_cb_check,
inst);
+ }
+ else if (ev->button == 1)
+ _slide_cb_check(inst);
}
static void
-_slide_menu_cb_post (void *data, E_Menu * m)
+_slide_menu_cb_post(void *data, E_Menu *m)
{
- if (!slide_config->menu)
- return;
- e_object_del (E_OBJECT (slide_config->menu));
- slide_config->menu = NULL;
+ if (!slide_config->menu)
+ return;
+ e_object_del(E_OBJECT(slide_config->menu));
+ slide_config->menu = NULL;
}
static void
-_slide_menu_cb_configure (void *data, E_Menu * m, E_Menu_Item * mi)
+_slide_menu_cb_configure(void *data, E_Menu *m, E_Menu_Item *mi)
{
- Instance *inst;
- Config_Item *ci;
+ Instance *inst;
+ Config_Item *ci;
- inst = data;
- ci = _slide_config_item_get (inst->gcc->id);
- _config_slideshow_module (ci);
+ inst = data;
+ ci = _slide_config_item_get(inst->gcc->id);
+ _config_slideshow_module(ci);
}
void
-_slide_config_updated (const char *id)
+_slide_config_updated(const char *id)
{
- Evas_List *l;
- Config_Item *ci;
+ Evas_List *l;
+ Config_Item *ci;
- if (!slide_config)
- return;
- ci = _slide_config_item_get (id);
- for (l = slide_config->instances; l; l = l->next)
- {
- Instance *inst;
-
- inst = l->data;
- if (!inst->gcc->id)
- continue;
- if (!strcmp (inst->gcc->id, ci->id))
- {
- if (inst->check_timer)
- ecore_timer_del (inst->check_timer);
- if ((ci->disable_timer) || (ci->poll_time == 0))
- break;
- inst->check_timer =
- ecore_timer_add (ci->poll_time, _slide_cb_check, inst);
- break;
- }
- }
+ if (!slide_config)
+ return;
+ ci = _slide_config_item_get(id);
+ for (l = slide_config->instances; l; l = l->next)
+ {
+ Instance *inst;
+
+ inst = l->data;
+ if (!inst->gcc->id)
+ continue;
+ if (!strcmp(inst->gcc->id, ci->id))
+ {
+ if (inst->check_timer)
+ ecore_timer_del(inst->check_timer);
+ if ((ci->disable_timer) || (ci->poll_time == 0))
+ break;
+ inst->check_timer = ecore_timer_add(ci->poll_time,
_slide_cb_check, inst);
+ break;
+ }
+ }
}
static Config_Item *
-_slide_config_item_get (const char *id)
+_slide_config_item_get(const char *id)
+{
+ Evas_List *l;
+ Config_Item *ci;
+ char buf[4096];
+
+ for (l = slide_config->items; l; l = l->next)
+ {
+ ci = l->data;
+ if (!ci->id) continue;
+ if (!strcmp(ci->id, id)) return ci;
+ }
+
+ snprintf(buf, sizeof (buf), "%s/.e/e/backgrounds", e_user_homedir_get());
+
+ ci = E_NEW(Config_Item, 1);
+ ci->id = evas_stringshare_add(id);
+ ci->poll_time = 60.0;
+ ci->disable_timer = 0;
+ ci->dir = evas_stringshare_add(buf);
+
+ slide_config->items = evas_list_append(slide_config->items, ci);
+ return ci;
+}
+
+EAPI E_Module_Api e_modapi =
{
- Evas_List *l;
- Config_Item *ci;
- char buf[4096];
-
- for (l = slide_config->items; l; l = l->next)
- {
- ci = l->data;
- if (!ci->id)
- continue;
- if (!strcmp (ci->id, id))
- return ci;
- }
-
- snprintf (buf, sizeof (buf), "%s/.e/e/backgrounds", e_user_homedir_get ());
-
- ci = E_NEW (Config_Item, 1);
- ci->id = evas_stringshare_add (id);
- ci->poll_time = 60.0;
- ci->disable_timer = 0;
- ci->dir = evas_stringshare_add (buf);
-
- slide_config->items = evas_list_append (slide_config->items, ci);
- return ci;
-}
-
-EAPI E_Module_Api e_modapi = {
- E_MODULE_API_VERSION,
- "Slideshow"
+ E_MODULE_API_VERSION, "Slideshow"
};
EAPI void *
-e_modapi_init (E_Module * m)
+e_modapi_init(E_Module *m)
{
- bindtextdomain (PACKAGE, LOCALEDIR);
- bind_textdomain_codeset (PACKAGE, "UTF-8");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset(PACKAGE, "UTF-8");
- conf_item_edd = E_CONFIG_DD_NEW ("Slideshow_Config_Item", Config_Item);
+ conf_item_edd = E_CONFIG_DD_NEW("Slideshow_Config_Item", Config_Item);
#undef T
#undef D
#define T Config_Item
#define D conf_item_edd
- E_CONFIG_VAL (D, T, id, STR);
- E_CONFIG_VAL (D, T, dir, STR);
- E_CONFIG_VAL (D, T, poll_time, DOUBLE);
- E_CONFIG_VAL (D, T, disable_timer, INT);
+ E_CONFIG_VAL(D, T, id, STR);
+ E_CONFIG_VAL(D, T, dir, STR);
+ E_CONFIG_VAL(D, T, poll_time, DOUBLE);
+ E_CONFIG_VAL(D, T, disable_timer, INT);
+ E_CONFIG_VAL(D, T, random_order, INT);
- conf_edd = E_CONFIG_DD_NEW ("Slideshow_Config", Config);
+ conf_edd = E_CONFIG_DD_NEW("Slideshow_Config", Config);
#undef T
#undef D
#define T Config
#define D conf_edd
- E_CONFIG_LIST (D, T, items, conf_item_edd);
+ E_CONFIG_LIST(D, T, items, conf_item_edd);
- slide_config = e_config_domain_load ("module.slideshow", conf_edd);
- if (!slide_config)
- {
- Config_Item *ci;
- char buf[4096];
-
- snprintf (buf, sizeof (buf), "%s/.e/e/backgrounds",
- e_user_homedir_get ());
- slide_config = E_NEW (Config, 1);
- ci = E_NEW (Config_Item, 1);
-
- ci->id = evas_stringshare_add ("0");
- ci->dir = evas_stringshare_add (buf);
- ci->poll_time = 60.0;
- ci->disable_timer = 0;
- slide_config->items = evas_list_append (slide_config->items, ci);
- }
- slide_config->module = m;
- e_gadcon_provider_register (&_gc_class);
- return m;
+ slide_config = e_config_domain_load("module.slideshow", conf_edd);
+ if (!slide_config)
+ {
+ Config_Item *ci;
+ char buf[4096];
+
+ snprintf(buf, sizeof (buf), "%s/.e/e/backgrounds",
e_user_homedir_get());
+ slide_config = E_NEW(Config, 1);
+ ci = E_NEW(Config_Item, 1);
+
+ ci->id = evas_stringshare_add("0");
+ ci->dir = evas_stringshare_add(buf);
+ ci->poll_time = 60.0;
+ ci->disable_timer = 0;
+ ci->random_order = 0;
+ slide_config->items = evas_list_append(slide_config->items, ci);
+ }
+ slide_config->module = m;
+ e_gadcon_provider_register(&_gc_class);
+ return m;
}
EAPI int
-e_modapi_shutdown (E_Module * m)
+e_modapi_shutdown(E_Module *m)
{
- slide_config->module = NULL;
- e_gadcon_provider_unregister (&_gc_class);
+ slide_config->module = NULL;
+ e_gadcon_provider_unregister(&_gc_class);
- if (slide_config->config_dialog)
- e_object_del (E_OBJECT (slide_config->config_dialog));
- if (slide_config->menu)
- {
- e_menu_post_deactivate_callback_set (slide_config->menu, NULL, NULL);
- e_object_del (E_OBJECT (slide_config->menu));
- slide_config->menu = NULL;
- }
- while (slide_config->items)
- {
- Config_Item *ci;
-
- ci = slide_config->items->data;
- slide_config->items =
- evas_list_remove_list (slide_config->items, slide_config->items);
- if (ci->id)
- evas_stringshare_del (ci->id);
- if (ci->dir)
- evas_stringshare_del (ci->dir);
- free (ci);
- }
- free (slide_config);
- slide_config = NULL;
- E_CONFIG_DD_FREE (conf_item_edd);
- E_CONFIG_DD_FREE (conf_edd);
- return 1;
+ if (slide_config->config_dialog)
+ e_object_del(E_OBJECT(slide_config->config_dialog));
+ if (slide_config->menu)
+ {
+ e_menu_post_deactivate_callback_set(slide_config->menu, NULL, NULL);
+ e_object_del(E_OBJECT(slide_config->menu));
+ slide_config->menu = NULL;
+ }
+ while (slide_config->items)
+ {
+ Config_Item *ci;
+
+ ci = slide_config->items->data;
+ slide_config->items = evas_list_remove_list(slide_config->items,
slide_config->items);
+ if (ci->id) evas_stringshare_del(ci->id);
+ if (ci->dir) evas_stringshare_del(ci->dir);
+ E_FREE(ci);
+ }
+ E_FREE(slide_config);
+ slide_config = NULL;
+ E_CONFIG_DD_FREE(conf_item_edd);
+ E_CONFIG_DD_FREE(conf_edd);
+ return 1;
}
EAPI int
-e_modapi_save (E_Module * m)
+e_modapi_save(E_Module *m)
{
- Evas_List *l;
+ Evas_List *l;
- for (l = slide_config->instances; l; l = l->next)
- {
- Instance *inst;
- Config_Item *ci;
-
- inst = l->data;
- ci = _slide_config_item_get (inst->gcc->id);
- if (ci->id)
- evas_stringshare_del (ci->id);
- ci->id = evas_stringshare_add (inst->gcc->id);
- }
- e_config_domain_save ("module.slideshow", conf_edd, slide_config);
- return 1;
+ for(l = slide_config->instances; l; l = l->next)
+ {
+ Instance *inst;
+ Config_Item *ci;
+
+ inst = l->data;
+ ci = _slide_config_item_get(inst->gcc->id);
+ if (ci->id) evas_stringshare_del(ci->id);
+ ci->id = evas_stringshare_add(inst->gcc->id);
+ }
+ e_config_domain_save("module.slideshow", conf_edd, slide_config);
+ return 1;
}
EAPI int
-e_modapi_about (E_Module * m)
+e_modapi_about(E_Module *m)
{
- e_module_dialog_show (m, D_ ("Enlightenment Slide Show Module"),
- D_
- ("This module is VERY simple and is used to cycle
desktop backgrounds"));
- return 1;
+ e_module_dialog_show(m, D_ ("Enlightenment Slide Show Module"),
+ D_("This module is VERY simple and is used to cycle
desktop backgrounds"));
+ return 1;
}
static Slideshow *
-_slide_new (Evas * evas)
+_slide_new(Evas *evas)
{
- Slideshow *ss;
- char buf[4096];
+ Slideshow *ss;
+ char buf[4096];
- ss = E_NEW (Slideshow, 1);
- snprintf (buf, sizeof (buf), "%s/slideshow.edj",
- e_module_dir_get (slide_config->module));
- ss->img_obj = e_livethumb_add (evas);
- e_livethumb_vsize_set (ss->img_obj, 16, 16);
- evas_object_show (ss->img_obj);
-
- ss->slide_obj = edje_object_add (evas);
- if (!e_theme_edje_object_set
- (ss->slide_obj, "base/theme/modules/slideshow",
- "modules/slideshow/main"))
- edje_object_file_set (ss->slide_obj, buf, "modules/slideshow/main");
- evas_object_show (ss->slide_obj);
+ ss = E_NEW(Slideshow, 1);
+ snprintf(buf, sizeof (buf), "%s/slideshow.edj", e_module_dir_get
(slide_config->module));
+ ss->img_obj = e_livethumb_add(evas);
+ e_livethumb_vsize_set(ss->img_obj, 16, 16);
+ evas_object_show(ss->img_obj);
+
+ ss->slide_obj = edje_object_add(evas);
+ if (!e_theme_edje_object_set
+ (ss->slide_obj, "base/theme/modules/slideshow",
+ "modules/slideshow/main"))
+ edje_object_file_set(ss->slide_obj, buf, "modules/slideshow/main");
+ evas_object_show(ss->slide_obj);
- edje_object_part_swallow (ss->slide_obj, "item", ss->img_obj);
- return ss;
+ edje_object_part_swallow(ss->slide_obj, "item", ss->img_obj);
+ return ss;
}
static void
-_slide_free (Slideshow * ss)
+_slide_free(Slideshow *ss)
{
- evas_object_del (ss->img_obj);
- evas_object_del (ss->bg_obj);
- evas_object_del (ss->slide_obj);
- free (ss);
+ evas_object_del(ss->img_obj);
+ evas_object_del(ss->bg_obj);
+ evas_object_del(ss->slide_obj);
+ E_FREE(ss);
}
static int
-_slide_cb_check (void *data)
+_slide_cb_check(void *data)
{
- Instance *inst;
- Config_Item *ci;
- char *bg;
-
- inst = data;
- ci = _slide_config_item_get (inst->gcc->id);
-
- _slide_get_bg_count (inst);
-
- if (inst->index > inst->bg_count)
- inst->index = 0;
- if (inst->index <= inst->bg_count)
- {
- bg = ecore_list_goto_index (inst->bg_list, inst->index);
- if (bg == NULL)
- {
- inst->index = 0;
- bg = ecore_list_goto_index (inst->bg_list, inst->index);
- }
- if (bg != NULL)
- {
- _slide_set_bg (inst, bg);
- inst->index++;
- _slide_set_preview (inst);
- }
- }
- return 1;
+ Instance *inst;
+ Config_Item *ci;
+ char *bg;
+
+ inst = data;
+ ci = _slide_config_item_get(inst->gcc->id);
+
+ _slide_get_bg_count(inst);
+
+ if (inst->index > inst->bg_count) inst->index = 0;
+ if (inst->index <= inst->bg_count)
+ {
+ bg = ecore_list_goto_index(inst->bg_list, inst->index);
+ if (bg == NULL)
+ {
+ inst->index = 0;
+ bg = ecore_list_goto_index(inst->bg_list, inst->index);
+ }
+ if (bg != NULL)
+ {
+ _slide_set_bg(inst, bg);
+ if(ci->random_order)
+ {
+ srand(time(NULL));
+ inst->index = (rand() % (inst->bg_count+1));
+ }
+ else
+ inst->index++;
+ _slide_set_preview(inst);
+ }
+ }
+ return 1;
+}
+
+static void
+_slide_get_bg_subdirs(void *data, char *localPath)
+{
+ Ecore_List *dirListing;
+ char fullPath[4096];
+ char itemFullPath[4096];
+ char itemLocalPath[4096];
+ char *item;
+ Instance *inst;
+ Config_Item *ci;
+
+ inst = data;
+ ci = _slide_config_item_get(inst->gcc->id);
+ if(!ci->dir)
+ return;
+
+ snprintf(fullPath, sizeof(fullPath), "%s/%s", ci->dir, localPath);
+ dirListing = ecore_file_ls(fullPath);
+
+ while((item = ecore_list_next(dirListing)) != NULL)
+ {
+ snprintf(itemFullPath, sizeof(itemFullPath), "%s/%s", fullPath, item);
+ snprintf(itemLocalPath, sizeof(itemLocalPath), "%s/%s", localPath,
item);
+
+ if(ecore_file_is_dir(itemFullPath))
+ _slide_get_bg_subdirs(inst, itemLocalPath);
+ else
+ ecore_list_append(inst->bg_list, strdup(itemLocalPath));
+ }
+
+ ecore_list_destroy(dirListing);
}
static void
-_slide_get_bg_count (void *data)
+_slide_get_bg_count(void *data)
{
- Instance *inst;
- Config_Item *ci;
- char *item;
-
- inst = data;
- ci = _slide_config_item_get (inst->gcc->id);
- if (!ci->dir)
- return;
-
- inst->bg_count = 0;
- if (inst->bg_list)
- ecore_list_destroy (inst->bg_list);
- inst->bg_list = ecore_file_ls (ci->dir);
- ecore_list_goto_first (inst->bg_list);
- while ((item = (char *) ecore_list_next (inst->bg_list)) != NULL)
- inst->bg_count++;
+ Instance *inst;
+ Config_Item *ci;
+ char *item;
+ Ecore_List *dirListing;
+ char itemFullPath[4096];
+
+ inst = data;
+ ci = _slide_config_item_get(inst->gcc->id);
+ if (!ci->dir) return;
+
+ inst->bg_count = 0;
+ if (inst->bg_list) ecore_list_destroy(inst->bg_list);
+
+ inst->bg_list = ecore_list_new();
+ ecore_list_set_free_cb(inst->bg_list, free);
+
+ dirListing = ecore_file_ls(ci->dir);
+
+ while((item = ecore_list_next(dirListing)) != NULL)
+ {
+ snprintf(itemFullPath, sizeof(itemFullPath), "%s/%s", ci->dir, item);
+
+ if(ecore_file_is_dir(itemFullPath))
+ _slide_get_bg_subdirs(inst, item);
+ else
+ ecore_list_append(inst->bg_list, strdup(item));
+ }
+
+ ecore_list_destroy(dirListing);
+
+ inst->bg_list = ecore_file_ls(ci->dir);
+ ecore_list_goto_first(inst->bg_list);
+ while ((item = (char *)ecore_list_next(inst->bg_list)) != NULL)
+ inst->bg_count++;
}
static void
-_slide_set_bg (void *data, const char *bg)
+_slide_set_bg(void *data, const char *bg)
{
- Instance *inst;
- Config_Item *ci;
- char buf[4096];
-
- inst = data;
- ci = _slide_config_item_get (inst->gcc->id);
- snprintf (buf, sizeof (buf), "enlightenment_remote -default-bg-set %s/%s",
- ci->dir, bg);
- system (buf);
+ Instance *inst;
+ Config_Item *ci;
+ char buf[4096];
+
+ inst = data;
+ ci = _slide_config_item_get(inst->gcc->id);
+ snprintf (buf, sizeof (buf), "enlightenment_remote -default-bg-set %s/%s",
+ ci->dir, bg);
+ system(buf);
}
static void
-_slide_set_preview (void *data)
+_slide_set_preview(void *data)
{
- Instance *inst;
- Config_Item *ci;
- Slideshow *ss;
- char buf[4096];
- char *bg;
-
- inst = data;
- ci = _slide_config_item_get (inst->gcc->id);
- ss = inst->slide;
-
- bg = ecore_list_goto_index (inst->bg_list, inst->index);
- snprintf (buf, sizeof (buf), "%s/%s", ci->dir, bg);
- if (!e_util_edje_collection_exists (buf, "desktop/background"))
- return;
- if (ss->bg_obj)
- evas_object_del (ss->bg_obj);
- ss->bg_obj = edje_object_add (e_livethumb_evas_get (ss->img_obj));
- edje_object_file_set (ss->bg_obj, buf, "desktop/background");
- e_livethumb_thumb_set (ss->img_obj, ss->bg_obj);
+ Instance *inst;
+ Config_Item *ci;
+ Slideshow *ss;
+ char buf[4096];
+ char *bg;
+
+ inst = data;
+ ci = _slide_config_item_get(inst->gcc->id);
+ ss = inst->slide;
+
+ bg = ecore_list_goto_index(inst->bg_list, inst->index);
+ snprintf(buf, sizeof (buf), "%s/%s", ci->dir, bg);
+ if (!e_util_edje_collection_exists (buf, "desktop/background")) return;
+ if (ss->bg_obj) evas_object_del(ss->bg_obj);
+ ss->bg_obj = edje_object_add(e_livethumb_evas_get (ss->img_obj));
+ edje_object_file_set(ss->bg_obj, buf, "desktop/background");
+ e_livethumb_thumb_set(ss->img_obj, ss->bg_obj);
}
===================================================================
RCS file: /cvs/e/e_modules/slideshow/e_mod_config.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- e_mod_config.c 18 Jul 2006 00:01:37 -0000 1.26
+++ e_mod_config.c 28 Jul 2006 00:02:17 -0000 1.27
@@ -4,6 +4,7 @@
struct _E_Config_Dialog_Data
{
int disable_timer;
+ int random_order;
double poll_time;
char *dir;
};
@@ -46,6 +47,7 @@
cfdata->poll_time = ci->poll_time;
cfdata->disable_timer = ci->disable_timer;
+ cfdata->random_order = ci->random_order;
if (ci->dir)
cfdata->dir = strdup (ci->dir);
else
@@ -91,8 +93,8 @@
e_widget_check_add (evas, D_ ("Disable Timer"), &(cfdata->disable_timer));
e_widget_framelist_object_append (of, ob);
ob =
- e_widget_slider_add (evas, 1, 0, D_ ("%3.0f seconds"), 5.0, 60.0, 1.0, 0,
- &(cfdata->poll_time), NULL, 200);
+ e_widget_slider_add (evas, 1, 0, D_ ("%3.0f seconds"), 5.0, 300.0, 1.0, 0,
+ &(cfdata->poll_time), NULL, 200);
e_widget_framelist_object_append (of, ob);
e_widget_list_object_append (o, of, 1, 1, 0.5);
@@ -105,6 +107,11 @@
e_widget_framelist_object_append (of, ot);
e_widget_list_object_append (o, of, 1, 1, 0.5);
+ of = e_widget_framelist_add (evas, D_ ("Extra"), 0);
+ ob = e_widget_check_add (evas, D_ ("Randomize order"),
&(cfdata->random_order));
+ e_widget_framelist_object_append (of, ob);
+ e_widget_list_object_append (o, of, 1, 1, 0.5);
+
return o;
}
@@ -117,6 +124,7 @@
ci = cfd->data;
ci->poll_time = cfdata->poll_time;
ci->disable_timer = cfdata->disable_timer;
+ci->random_order = cfdata->random_order;
if (ci->dir)
evas_stringshare_del (ci->dir);
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs