2013-09-11 Daniel Juyung Seo (SeoZ)
* flip : Added support for focus direction.
+
+2013-09-12 Ryuan Choi (ryuan)
+
+ * elc_fileselector : Added "selected,invalid" smart callbacks.
* Add support for more than one progress status in a progressbar.
* Add elm_table_child_get().
* Add support for flip focus direction.
+ * Add "selected,invalid" smart callback for fileselector.
Improvements:
}
static void
+_popup_close_cb(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ evas_object_del(data);
+}
+
+static void
+my_fileselector_invalid(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED,
+ void *event_info)
+{
+ Evas_Object *popup;
+ Evas_Object *btn;
+ char error_msg[256];
+
+ snprintf(error_msg, 256, "No such file or directory: %s", (char *)event_info);
+
+ popup = elm_popup_add(data);
+ elm_popup_content_text_wrap_type_set(popup, ELM_WRAP_CHAR);
+ elm_object_part_text_set(popup, "title,text", "Error");
+ elm_object_text_set(popup, error_msg);
+
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, "OK");
+ elm_object_part_content_set(popup, "button1", btn);
+ evas_object_smart_callback_add(btn, "clicked", _popup_close_cb, popup);
+
+ evas_object_show(popup);
+}
+
+static void
_is_save_clicked(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
/* the 'selected' cb is called when the user click on a file/dir */
evas_object_smart_callback_add(fs, "selected", my_fileselector_selected,
win);
+ evas_object_smart_callback_add(fs, "selected,invalid",
+ my_fileselector_invalid, win);
/* test buttons */
sep = elm_separator_add(win);
#define ELM_PRIV_FILESELECTOR_SIGNALS(cmd) \
cmd(SIG_DIRECTORY_OPEN, "directory,open", "s") \
cmd(SIG_DONE, "done", "s") \
- cmd(SIG_SELECTED, "selected", "s")
+ cmd(SIG_SELECTED, "selected", "s") \
+ cmd(SIG_SELECTED_INVALID, "selected,invalid", "s")
ELM_PRIV_FILESELECTOR_SIGNALS(ELM_PRIV_STATIC_VARIABLE_DECLARE);
path = elm_object_text_get(obj);
- // FIXME: Needs some feedback to user like alert.
- if (!ecore_file_exists(path)) goto end;
+ if (!ecore_file_exists(path))
+ {
+ evas_object_smart_callback_call(fs, SIG_SELECTED, (void *)path);
+ evas_object_smart_callback_call(fs, SIG_SELECTED_INVALID, (void *)path);
+ goto end;
+ }
if (ecore_file_is_dir(path))
{
p = eina_stringshare_add(path);
_populate(fs, p, NULL, NULL);
eina_stringshare_del(p);
+
+ if (sd->only_folder)
+ evas_object_smart_callback_call(fs, SIG_SELECTED, (void *)path);
+
goto end;
}
if (!dir) goto end;
if (strcmp(dir, sd->path))
- _populate(fs, dir, NULL, path);
+ {
+ _populate(fs, dir, NULL, path);
+
+ if (sd->only_folder)
+ evas_object_smart_callback_call(fs, SIG_SELECTED, (void *)path);
+ }
else
{
if (sd->mode == ELM_FILESELECTOR_LIST)
* @ref Layout:
* - @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
+ * which does not exist.
* - @c "directory,open" - the list has been populated with new
* content (@c event_info is a pointer to the directory's
* path, a @b stringshared string)