fileselector: fileselector: Add "activated" smart callback

It can be used to execute a file activated by double-clicking or
pressing Enter key.
This commit is contained in:
Ryuan Choi 2013-10-02 12:35:23 +09:00
parent f49cb8000d
commit dd763025d8
5 changed files with 40 additions and 1 deletions

View File

@ -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.

View File

@ -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:

View File

@ -74,6 +74,14 @@ my_fileselector_invalid(void *data EINA_UNUSED,
evas_object_show(popup);
}
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,
@ -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);

View File

@ -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") \
@ -711,6 +711,25 @@ _on_item_double_clicked(void *data,
sd->populate_idler = ecore_idler_add(_populate_do, sdata);
}
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__,
@ -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);

View File

@ -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