forked from enlightenment/efl
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:
parent
f49cb8000d
commit
dd763025d8
|
@ -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.
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue