From bd1ed51ead2a425025d3c3c7af0d8eb89522be32 Mon Sep 17 00:00:00 2001 From: Nicolas Aguirre Date: Mon, 13 Sep 2010 17:02:32 +0000 Subject: [PATCH] Add a callback when a new directory is selected : "directory,changed". SVN revision: 52193 --- src/bin/ephoto.h | 2 ++ src/bin/ephoto_main.c | 24 ++++++++++++++++++++++-- src/bin/ephoto_thumb_browser.c | 2 ++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/bin/ephoto.h b/src/bin/ephoto.h index c10aad0..32a453c 100644 --- a/src/bin/ephoto.h +++ b/src/bin/ephoto.h @@ -44,6 +44,7 @@ Evas_Object *ephoto_create_thumb_browser(Evas_Object *parent, const char *direct void ephoto_populate_thumbnails(Evas_Object *obj); /* smart callbacks called: * "selected" - an item in the thumb browser is selected. The selected file is passed as event_info argument. + * "directory,changed" - the user selected a new directory. The selected directory is passed as event_info argument. */ typedef enum _Ephoto_State Ephoto_State; @@ -68,6 +69,7 @@ struct _Ephoto Evas_Object *thumb_browser; Eina_List *images; Ephoto_State state; + const char *cur_directory; }; typedef struct _Ephoto Ephoto; diff --git a/src/bin/ephoto_main.c b/src/bin/ephoto_main.c index 2d4d41b..7755365 100644 --- a/src/bin/ephoto_main.c +++ b/src/bin/ephoto_main.c @@ -7,17 +7,21 @@ Ephoto *em; static void _ephoto_delete_main_window(void *data, Evas_Object *obj, void *event_info); static void _ephoto_flow_browser_delete_cb(void *data, Evas_Object *obj, void *event_info); static void _ephoto_thumb_browser_selected_cb(void *data, Evas_Object *obj, void *event_info); - +static void _ephoto_thumb_browser_directory_changed_cb(void *data, Evas_Object *obj, void *event_info); /* Objects Callbacks */ static void _ephoto_flow_browser_delete_cb(void *data, Evas_Object *obj, void *event_info) { - em->thumb_browser = ephoto_create_thumb_browser(em->layout, NULL/*ecore_file_dir_get(ef->cur_image)*/); + em->thumb_browser = ephoto_create_thumb_browser(em->layout, em->cur_directory); elm_layout_content_set(em->layout, "ephoto.content.swallow", em->thumb_browser); evas_object_smart_callback_add(em->thumb_browser, "selected", _ephoto_thumb_browser_selected_cb, NULL); + evas_object_smart_callback_add(em->thumb_browser, + "directory,changed", + _ephoto_thumb_browser_directory_changed_cb, + NULL); em->state = EPHOTO_STATE_THUMB; } @@ -37,6 +41,16 @@ _ephoto_thumb_browser_selected_cb(void *data, Evas_Object *obj, void *event_info em->state = EPHOTO_STATE_FLOW; } +static void +_ephoto_thumb_browser_directory_changed_cb(void *data, Evas_Object *obj, void *event_info) +{ + const char *dir = event_info; + + eina_stringshare_del(em->cur_directory); + em->cur_directory = eina_stringshare_add(dir); + printf("Directory changed : %s\n", em->cur_directory); +} + /*Create the main ephoto window*/ void ephoto_create_main_window(const char *directory, const char *image) @@ -77,6 +91,7 @@ ephoto_create_main_window(const char *directory, const char *image) { em->flow_browser = ephoto_create_flow_browser(em->layout); ephoto_flow_browser_image_set(em->flow_browser, image); + em->cur_directory = eina_stringshare_add(ecore_file_dir_get(image)); eina_stringshare_del(image); elm_layout_content_set(em->layout, "ephoto.content.swallow", em->flow_browser); evas_object_smart_callback_add(em->flow_browser, @@ -88,12 +103,17 @@ ephoto_create_main_window(const char *directory, const char *image) else { em->thumb_browser = ephoto_create_thumb_browser(em->layout, directory); + em->cur_directory = eina_stringshare_add(directory); evas_object_show(em->thumb_browser); elm_layout_content_set(em->layout, "ephoto.content.swallow", em->thumb_browser); evas_object_smart_callback_add(em->thumb_browser, "selected", _ephoto_thumb_browser_selected_cb, NULL); + evas_object_smart_callback_add(em->thumb_browser, + "directory,changed", + _ephoto_thumb_browser_directory_changed_cb, + NULL); em->state = EPHOTO_STATE_THUMB; } diff --git a/src/bin/ephoto_thumb_browser.c b/src/bin/ephoto_thumb_browser.c index 71d868b..5d5cc2c 100644 --- a/src/bin/ephoto_thumb_browser.c +++ b/src/bin/ephoto_thumb_browser.c @@ -455,6 +455,8 @@ _ephoto_directory_chosen(void *data, Evas_Object *obj, void *event_info) elm_win_title_set(em->win, "Ephoto"); } } + printf("before callback\n"); + evas_object_smart_callback_call(tb->layout, "directory,changed", tb->current_directory); evas_object_del(tb->fsel_win); elm_toolbar_item_unselect_all(tb->toolbar);