From dd763025d80d326a2e01fe36fc1641dc8a2ff3da Mon Sep 17 00:00:00 2001 From: Ryuan Choi Date: Wed, 2 Oct 2013 12:35:23 +0900 Subject: [PATCH] fileselector: fileselector: Add "activated" smart callback It can be used to execute a file activated by double-clicking or pressing Enter key. --- legacy/elementary/ChangeLog | 4 ++++ legacy/elementary/NEWS | 1 + legacy/elementary/src/bin/test_fileselector.c | 10 ++++++++++ legacy/elementary/src/lib/elc_fileselector.c | 23 ++++++++++++++++++++++- legacy/elementary/src/lib/elc_fileselector.h | 3 +++ 5 files changed, 40 insertions(+), 1 deletion(-) diff --git a/legacy/elementary/ChangeLog b/legacy/elementary/ChangeLog index e3bce08..1017722 100644 --- a/legacy/elementary/ChangeLog +++ b/legacy/elementary/ChangeLog @@ -1664,3 +1664,7 @@ * fileselector: Add the configuration fileselector_double_tap_navigation_enable. It makes fileselector navigate folder using double tap instead of single tap. + +2013-10-02 Ryuan Choi (ryuan) + * fileselector: Add "activated" smart callback. It can be used to execute + a file activated by double-clicking or pressing Enter key. diff --git a/legacy/elementary/NEWS b/legacy/elementary/NEWS index 72139a0..417f1f8 100644 --- a/legacy/elementary/NEWS +++ b/legacy/elementary/NEWS @@ -95,6 +95,7 @@ Additions: * Add "dismissed" smart callback for menu. * Add elm_menu_item_subitems_clear(). * Add the configuration fileselector_double_tap_navigation_enable. + * Add "activated" smart callback for fileselector. Improvements: diff --git a/legacy/elementary/src/bin/test_fileselector.c b/legacy/elementary/src/bin/test_fileselector.c index c85f255..a7b1c9b 100644 --- a/legacy/elementary/src/bin/test_fileselector.c +++ b/legacy/elementary/src/bin/test_fileselector.c @@ -75,6 +75,14 @@ my_fileselector_invalid(void *data EINA_UNUSED, } static void +my_fileselector_activated(void *data EINA_UNUSED, + Evas_Object *obj EINA_UNUSED, + void *event_info) +{ + printf("Activated file: %s\n", (char *)event_info); +} + +static void _is_save_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -205,6 +213,8 @@ test_fileselector(void *data EINA_UNUSED, win); evas_object_smart_callback_add(fs, "selected,invalid", my_fileselector_invalid, win); + evas_object_smart_callback_add(fs, "activated", my_fileselector_activated, + win); /* test buttons */ sep = elm_separator_add(win); diff --git a/legacy/elementary/src/lib/elc_fileselector.c b/legacy/elementary/src/lib/elc_fileselector.c index b0ae946..cb96372 100644 --- a/legacy/elementary/src/lib/elc_fileselector.c +++ b/legacy/elementary/src/lib/elc_fileselector.c @@ -4,7 +4,6 @@ * - user defined icon/label cb * - show/hide/add buttons ??? * - show/hide hidden files - * - double click to choose a file * - multi-selection * - make variable/function names that are sensible * - Pattern Filter support @@ -31,6 +30,7 @@ static Elm_Genlist_Item_Class *list_itc[ELM_FILE_LAST]; static Elm_Gengrid_Item_Class *grid_itc[ELM_FILE_LAST]; #define ELM_PRIV_FILESELECTOR_SIGNALS(cmd) \ + cmd(SIG_ACTIVATED, "activated", "s") \ cmd(SIG_DIRECTORY_OPEN, "directory,open", "s") \ cmd(SIG_DONE, "done", "s") \ cmd(SIG_SELECTED, "selected", "s") \ @@ -712,6 +712,25 @@ _on_item_double_clicked(void *data, } static void +_on_item_activated(void *data, + Evas_Object *obj __UNUSED__, + void *event_info) +{ + //This event_info could be a list or gengrid item + Elm_Object_Item *it = event_info; + const char *path; + Eina_Bool is_dir; + + path = elm_object_item_data_get(it); + if (!path) return; + + is_dir = ecore_file_is_dir(path); + if (is_dir) return; + + evas_object_smart_callback_call(data, SIG_ACTIVATED, (void *)path); +} + +static void _on_item_selected(void *data, Evas_Object *obj __UNUSED__, void *event_info) @@ -1065,6 +1084,7 @@ _elm_fileselector_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) evas_object_smart_callback_add(li, "selected", _on_item_selected, obj); evas_object_smart_callback_add(li, "clicked,double", _on_item_double_clicked, obj); + evas_object_smart_callback_add(li, "activated", _on_item_activated, obj); evas_object_smart_callback_add (li, "expand,request", _on_list_expand_req, obj); evas_object_smart_callback_add @@ -1073,6 +1093,7 @@ _elm_fileselector_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) evas_object_smart_callback_add(li, "contracted", _on_list_contracted, obj); evas_object_smart_callback_add(grid, "selected", _on_item_selected, obj); evas_object_smart_callback_add(grid, "clicked,double", _on_item_double_clicked, obj); + evas_object_smart_callback_add(grid, "activated", _on_item_activated, obj); elm_widget_sub_object_add(obj, li); elm_widget_sub_object_add(obj, grid); diff --git a/legacy/elementary/src/lib/elc_fileselector.h b/legacy/elementary/src/lib/elc_fileselector.h index 6d465c2..7a6d7f0 100644 --- a/legacy/elementary/src/lib/elc_fileselector.h +++ b/legacy/elementary/src/lib/elc_fileselector.h @@ -39,6 +39,9 @@ * * This widget emits the following signals, besides the ones sent from * @ref Layout: + * - @c "activated" - the user activated a file. This can happen by + * double-clicking or pressing Enter key. (@c event_info is a + * pointer to the activated file path) * - @c "selected" - the user has clicked on a file (when not in * folders-only mode) or directory (when in folders-only mode) * - @c "selected,invalid" - the user has tried to access wrong path -- 2.7.4