forked from enlightenment/efl
elc_fileselector: Added support to show/hide hidden files/directories.
Added elm_fileselector_hidden_visible_set/get to show or hide hidden resources.
This commit is contained in:
parent
024ee1241e
commit
d5c6eaa50e
|
@ -1708,3 +1708,6 @@
|
||||||
|
|
||||||
* Default theme is now dark.
|
* Default theme is now dark.
|
||||||
|
|
||||||
|
2013-10-18 Ryuan Choi (ryuan)
|
||||||
|
|
||||||
|
* fileselector : Add support visibility control of hidden files/directories.
|
||||||
|
|
|
@ -98,6 +98,7 @@ Additions:
|
||||||
* Add "activated" smart callback for fileselector.
|
* Add "activated" smart callback for fileselector.
|
||||||
* Add elm_object_item_signal_emit support in hoversel. This works only when the item is created.
|
* Add elm_object_item_signal_emit support in hoversel. This works only when the item is created.
|
||||||
* Add elm_fileselector_multi_select_set/get() and elm_fileselector_selected_paths_get to support multi-selection.
|
* Add elm_fileselector_multi_select_set/get() and elm_fileselector_selected_paths_get to support multi-selection.
|
||||||
|
* Add elm_fileselector_hidden_visible_set/get() to show or hide hidden files/directories.
|
||||||
|
|
||||||
Improvements:
|
Improvements:
|
||||||
|
|
||||||
|
|
|
@ -155,6 +155,19 @@ _buttons_clicked(void *data,
|
||||||
elm_fileselector_buttons_ok_cancel_set(fs, EINA_TRUE);
|
elm_fileselector_buttons_ok_cancel_set(fs, EINA_TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_hidden_clicked(void *data,
|
||||||
|
Evas_Object *obj EINA_UNUSED,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Evas_Object *fs = data;
|
||||||
|
printf("Toggle visibility of hidden files/directories\n");
|
||||||
|
if (elm_fileselector_hidden_visible_get(fs))
|
||||||
|
elm_fileselector_hidden_visible_set(fs, EINA_FALSE);
|
||||||
|
else
|
||||||
|
elm_fileselector_hidden_visible_set(fs, EINA_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_sel_get_clicked(void *data,
|
_sel_get_clicked(void *data,
|
||||||
Evas_Object *obj EINA_UNUSED,
|
Evas_Object *obj EINA_UNUSED,
|
||||||
|
@ -224,6 +237,13 @@ _option_create(Evas_Object *parent, Evas_Object *fs)
|
||||||
elm_box_pack_end(hbox, bt);
|
elm_box_pack_end(hbox, bt);
|
||||||
evas_object_show(bt);
|
evas_object_show(bt);
|
||||||
|
|
||||||
|
bt = elm_check_add(hbox);
|
||||||
|
elm_object_text_set(bt, "hidden");
|
||||||
|
elm_check_state_set(bt, elm_fileselector_hidden_visible_get(fs));
|
||||||
|
evas_object_smart_callback_add(bt, "changed", _hidden_clicked, fs);
|
||||||
|
elm_box_pack_end(hbox, bt);
|
||||||
|
evas_object_show(bt);
|
||||||
|
|
||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
* - child elements focusing support
|
* - child elements focusing support
|
||||||
* - user defined icon/label cb
|
* - user defined icon/label cb
|
||||||
* - show/hide/add buttons ???
|
* - show/hide/add buttons ???
|
||||||
* - show/hide hidden files
|
|
||||||
* - make variable/function names that are sensible
|
* - make variable/function names that are sensible
|
||||||
* - Pattern Filter support
|
* - Pattern Filter support
|
||||||
* - Custom Filter support
|
* - Custom Filter support
|
||||||
|
@ -314,7 +313,7 @@ _ls_filter_cb(void *data,
|
||||||
{
|
{
|
||||||
Listing_Request *lreq = data;
|
Listing_Request *lreq = data;
|
||||||
|
|
||||||
if (info->path[info->name_start] == '.')
|
if (!lreq->sd->hidden_visible && info->path[info->name_start] == '.')
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
|
|
||||||
if (lreq->sd->only_folder && info->type != EINA_FILE_DIR)
|
if (lreq->sd->only_folder && info->type != EINA_FILE_DIR)
|
||||||
|
@ -538,7 +537,7 @@ _populate(Evas_Object *obj,
|
||||||
{
|
{
|
||||||
const char *filename;
|
const char *filename;
|
||||||
|
|
||||||
if (file->path[file->name_start] == '.') continue;
|
if (!sd->hidden_visible && file->path[file->name_start] == '.') continue;
|
||||||
|
|
||||||
filename = eina_stringshare_add(file->path);
|
filename = eina_stringshare_add(file->path);
|
||||||
if (file->type == EINA_FILE_DIR)
|
if (file->type == EINA_FILE_DIR)
|
||||||
|
@ -1818,6 +1817,45 @@ _filters_clear(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
||||||
_populate(obj, sd->path, NULL, NULL);
|
_populate(obj, sd->path, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
elm_fileselector_hidden_visible_set(Evas_Object *obj, Eina_Bool visible)
|
||||||
|
{
|
||||||
|
ELM_FILESELECTOR_CHECK(obj);
|
||||||
|
eo_do(obj, elm_obj_fileselector_hidden_visible_set(visible));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_hidden_visible_set(Eo *obj __UNUSED__, void *_pd, va_list *list EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Eina_Bool visible = va_arg(*list, int);
|
||||||
|
Elm_Fileselector_Smart_Data *sd = _pd;
|
||||||
|
|
||||||
|
visible = !!visible;
|
||||||
|
if (sd->hidden_visible == visible) return;
|
||||||
|
sd->hidden_visible = visible;
|
||||||
|
|
||||||
|
_clear_selections(sd, NULL);
|
||||||
|
_populate(obj, sd->path, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
elm_fileselector_hidden_visible_get(const Evas_Object *obj)
|
||||||
|
{
|
||||||
|
ELM_FILESELECTOR_CHECK(obj) EINA_FALSE;
|
||||||
|
Eina_Bool ret = EINA_FALSE;
|
||||||
|
eo_do((Eo *) obj, elm_obj_fileselector_hidden_visible_get(&ret));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_hidden_visible_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
|
||||||
|
Elm_Fileselector_Smart_Data *sd = _pd;
|
||||||
|
|
||||||
|
*ret = sd->hidden_visible;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_elm_fileselector_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
|
_elm_fileselector_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
|
||||||
{
|
{
|
||||||
|
@ -1898,6 +1936,8 @@ _class_constructor(Eo_Class *klass)
|
||||||
EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_SELECTED_PATHS_GET), _selected_paths_get),
|
EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_SELECTED_PATHS_GET), _selected_paths_get),
|
||||||
EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_MIME_TYPES_FILTER_APPEND), _mime_types_filter_append),
|
EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_MIME_TYPES_FILTER_APPEND), _mime_types_filter_append),
|
||||||
EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR), _filters_clear),
|
EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR), _filters_clear),
|
||||||
|
EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_SET), _hidden_visible_set),
|
||||||
|
EO_OP_FUNC(ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET), _hidden_visible_get),
|
||||||
EO_OP_FUNC_SENTINEL
|
EO_OP_FUNC_SENTINEL
|
||||||
};
|
};
|
||||||
eo_class_funcs_set(klass, func_desc);
|
eo_class_funcs_set(klass, func_desc);
|
||||||
|
@ -1958,6 +1998,8 @@ static const Eo_Op_Description op_desc[] = {
|
||||||
EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_SELECTED_PATHS_GET, "Get the currently selected item's (full) path, in the given file selector widget."),
|
EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_SELECTED_PATHS_GET, "Get the currently selected item's (full) path, in the given file selector widget."),
|
||||||
EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_MIME_TYPES_FILTER_APPEND, "Append mime type filter"),
|
EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_MIME_TYPES_FILTER_APPEND, "Append mime type filter"),
|
||||||
EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR, "Clear filters"),
|
EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR, "Clear filters"),
|
||||||
|
EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_SET, "Enable or disable visibility of hidden files/directories in the file selector widget."),
|
||||||
|
EO_OP_DESCRIPTION(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET, "Get if visibility of hidden files/directories in the file selector widget is enabled or disabled."),
|
||||||
EO_OP_DESCRIPTION_SENTINEL
|
EO_OP_DESCRIPTION_SENTINEL
|
||||||
};
|
};
|
||||||
static const Eo_Class_Description class_desc = {
|
static const Eo_Class_Description class_desc = {
|
||||||
|
|
|
@ -30,6 +30,8 @@ enum
|
||||||
ELM_OBJ_FILESELECTOR_SUB_ID_SELECTED_PATHS_GET,
|
ELM_OBJ_FILESELECTOR_SUB_ID_SELECTED_PATHS_GET,
|
||||||
ELM_OBJ_FILESELECTOR_SUB_ID_MIME_TYPES_FILTER_APPEND,
|
ELM_OBJ_FILESELECTOR_SUB_ID_MIME_TYPES_FILTER_APPEND,
|
||||||
ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR,
|
ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR,
|
||||||
|
ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_SET,
|
||||||
|
ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET,
|
||||||
ELM_OBJ_FILESELECTOR_SUB_ID_LAST
|
ELM_OBJ_FILESELECTOR_SUB_ID_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -273,6 +275,31 @@ enum
|
||||||
*/
|
*/
|
||||||
#define elm_obj_fileselector_filters_clear() ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR)
|
#define elm_obj_fileselector_filters_clear() ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_FILTERS_CLEAR)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @def elm_obj_fileselector_hidden_visible_set
|
||||||
|
* @since 1.8
|
||||||
|
*
|
||||||
|
* Enable or disable visibility of hidden files/directories
|
||||||
|
* in the file selector widget.
|
||||||
|
*
|
||||||
|
* @param[in] visible
|
||||||
|
*
|
||||||
|
* @see elm_fileselector_hidden_visible_get
|
||||||
|
*/
|
||||||
|
#define elm_obj_fileselector_hidden_visible_set(multi) ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_SET), EO_TYPECHECK(Eina_Bool, multi)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @def elm_obj_fileselector_hidden_visible_get
|
||||||
|
* @since 1.8
|
||||||
|
*
|
||||||
|
* Get if hiden files/directories in the file selector are visible or not.
|
||||||
|
*
|
||||||
|
* @param[out] visible
|
||||||
|
*
|
||||||
|
* @see elm_fileselector_hidden_visible_set
|
||||||
|
*/
|
||||||
|
#define elm_obj_fileselector_hidden_visible_get(ret) ELM_OBJ_FILESELECTOR_ID(ELM_OBJ_FILESELECTOR_SUB_ID_HIDDEN_VISIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -333,3 +333,32 @@ EAPI Eina_Bool elm_fileselector_mime_types_filter_append(Evas_Object
|
||||||
* @ingroup Fileselector
|
* @ingroup Fileselector
|
||||||
*/
|
*/
|
||||||
EAPI void elm_fileselector_filters_clear(Evas_Object *obj);
|
EAPI void elm_fileselector_filters_clear(Evas_Object *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable or disable visibility of hidden files/directories
|
||||||
|
* in the file selector widget.
|
||||||
|
*
|
||||||
|
* @param obj The file selector object
|
||||||
|
* @param visible Visibility of hidden files/directories. Default is disabled.
|
||||||
|
*
|
||||||
|
* This enables (@c EINA_TRUE) or disables (@c EINA_FALSE) visibility of hidden
|
||||||
|
* files/directories in the list/grid of the file selector widget.
|
||||||
|
*
|
||||||
|
* @since 1.8
|
||||||
|
* @ingroup Fileselector
|
||||||
|
*/
|
||||||
|
EAPI void elm_fileselector_hidden_visible_set(Evas_Object *obj, Eina_Bool visible);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get if hiden files/directories in the file selector widget are visible or not.
|
||||||
|
*
|
||||||
|
* @param obj The file selector object
|
||||||
|
* @return Visibility of hidden files/directories
|
||||||
|
* (@c EINA_TRUE = enabled/@c EINA_FALSE = disabled). Default is @c EINA_FALSE.
|
||||||
|
*
|
||||||
|
* @see elm_fileselector_hidden_visible_set()
|
||||||
|
*
|
||||||
|
* @since 1.8
|
||||||
|
* @ingroup Fileselector
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool elm_fileselector_hidden_visible_get(const Evas_Object *obj);
|
||||||
|
|
|
@ -64,6 +64,8 @@ struct _Elm_Fileselector_Smart_Data
|
||||||
* so that fileselector will clear current selection when user clicked
|
* so that fileselector will clear current selection when user clicked
|
||||||
* another item. */
|
* another item. */
|
||||||
Eina_Bool dir_selected : 1;
|
Eina_Bool dir_selected : 1;
|
||||||
|
|
||||||
|
Eina_Bool hidden_visible : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct sel_data
|
struct sel_data
|
||||||
|
|
Loading…
Reference in New Issue