Added elm_fileselector_hidden_visible_set/get to show or hide hidden resources.
* Default theme is now dark.
+2013-10-18 Ryuan Choi (ryuan)
+
+ * fileselector : Add support visibility control of hidden files/directories.
* 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_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:
static void
_buttons_clicked(void *data,
- Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
+ Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
{
Evas_Object *fs = data;
printf("Toggle Buttons\n");
}
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
_sel_get_clicked(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
elm_box_pack_end(hbox, 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;
}
* - child elements focusing support
* - user defined icon/label cb
* - show/hide/add buttons ???
- * - show/hide hidden files
* - make variable/function names that are sensible
* - Pattern Filter support
* - Custom Filter support
{
Listing_Request *lreq = data;
- if (info->path[info->name_start] == '.')
+ if (!lreq->sd->hidden_visible && info->path[info->name_start] == '.')
return EINA_FALSE;
if (lreq->sd->only_folder && info->type != EINA_FILE_DIR)
{
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);
if (file->type == EINA_FILE_DIR)
_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
_elm_fileselector_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
{
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_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_class_funcs_set(klass, func_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_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_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
};
static const Eo_Class_Description class_desc = {
ELM_OBJ_FILESELECTOR_SUB_ID_SELECTED_PATHS_GET,
ELM_OBJ_FILESELECTOR_SUB_ID_MIME_TYPES_FILTER_APPEND,
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
};
#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)
+
+/**
* @}
*/
* @ingroup Fileselector
*/
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);
* so that fileselector will clear current selection when user clicked
* another item. */
Eina_Bool dir_selected : 1;
+
+ Eina_Bool hidden_visible : 1;
};
struct sel_data