Introduce current_name_{set|get}

Summary:
When fileselector is opened, it would be nice to be able to provide initial filename.
Like "Untitled Document" in Gedit, when save for the first time.

More details in Gedit,
Gedit provies default name, "Untitled Document" and does not change default name
while navigating directories.
Once we selected any file, Gedit changes value of name entry to selected filename and
it is not also changed while navigating directories.

@feature

Reviewers: seoz, yakov-g

Reviewed By: yakov-g

Subscribers: seoz

Maniphest Tasks: T1664

Differential Revision: https://phab.enlightenment.org/D1504
This commit is contained in:
Ryuan Choi 2014-10-06 08:08:24 +09:00
parent 671cab1854
commit 9ddd97c7ff
5 changed files with 55 additions and 9 deletions

View File

@ -550,6 +550,9 @@ test_fileselector(void *data EINA_UNUSED,
/* start the fileselector in the home dir */
elm_fileselector_path_set(fs, getenv("HOME"));
/* provides suggested name (just for showing) */
elm_fileselector_current_name_set(fs, "No name");
/* add filesters */
elm_fileselector_mime_types_filter_append(fs, "text/*", "Text Files");
elm_fileselector_mime_types_filter_append(fs, "image/*", "Image Files");

View File

@ -553,7 +553,6 @@ _signal_first(Listing_Request *lreq)
elm_gengrid_clear(lreq->sd->files_view);
eina_stringshare_replace(&lreq->sd->path, lreq->path);
_anchors_do(lreq->obj, lreq->path);
elm_object_text_set(lreq->sd->name_entry, "");
}
lreq->first = EINA_FALSE;
@ -690,6 +689,11 @@ _populate(Evas_Object *obj,
_ls_done_cb, _ls_error_cb, lreq);
elm_progressbar_pulse(sd->spinner, EINA_TRUE);
elm_layout_signal_emit(lreq->obj, "elm,action,spinner,show", "elm");
// Clear name entry not in case of save mode.
if (elm_object_disabled_get(sd->name_entry))
elm_object_text_set(sd->name_entry, "");
}
static void
@ -874,15 +878,10 @@ _on_item_selected(void *data,
evas_object_smart_callback_call(data, SIG_SELECTED, (void *)path);
}
else
else if (sd->multi && is_dir && sd->double_tap_navigation)
{
if (sd->multi && is_dir && sd->double_tap_navigation)
{
_clear_selections(sd, it);
sd->dir_selected = EINA_TRUE;
}
elm_object_text_set(sd->name_entry, "");
_clear_selections(sd, it);
sd->dir_selected = EINA_TRUE;
}
/* We need to populate, if path is directory and:
@ -1946,6 +1945,35 @@ _elm_fileselector_elm_interface_fileselector_selected_paths_get(Eo *obj EINA_UNU
return NULL;
}
EAPI const char *
elm_fileselector_current_name_get(const Evas_Object *obj)
{
ELM_FILESELECTOR_INTERFACE_CHECK(obj, NULL);
const char *ret = NULL;
eo_do((Eo *) obj, ret = elm_interface_fileselector_current_name_get());
return ret;
}
EOLIAN static const char *
_elm_fileselector_elm_interface_fileselector_current_name_get(Eo *obj EINA_UNUSED, Elm_Fileselector_Data *sd)
{
return elm_object_text_get(sd->name_entry);
}
EAPI void
elm_fileselector_current_name_set(Evas_Object *obj,
const char *name)
{
ELM_FILESELECTOR_INTERFACE_CHECK(obj);
eo_do((Eo *) obj, elm_interface_fileselector_current_name_set(name));
}
EOLIAN static void
_elm_fileselector_elm_interface_fileselector_current_name_set(Eo *obj EINA_UNUSED, Elm_Fileselector_Data *sd, const char *name)
{
elm_object_text_set(sd->name_entry, name);
}
static Elm_Fileselector_Filter *
_filter_add(Elm_Fileselector_Data *sd, const char *filter_name)
{

View File

@ -245,6 +245,9 @@ EAPI Eina_Bool elm_fileselector_selected_set(Evas_Object *obj, const
*/
EAPI const char *elm_fileselector_selected_get(const Evas_Object *obj);
EAPI void elm_fileselector_current_name_set(Evas_Object *obj, const char *name);
EAPI const char *elm_fileselector_current_name_get(const Evas_Object *obj);
/**
* Get a list of selected paths in the file selector.
*

View File

@ -62,6 +62,7 @@ class Elm_Fileselector (Elm_Layout, Elm_Interface_Fileselector,
Elm_Interface_Fileselector.multi_select;
Elm_Interface_Fileselector.folder_only;
Elm_Interface_Fileselector.mode;
Elm_Interface_Fileselector.current_name;
Elm_Interface_Atspi_Widget_Action.elm_actions.get;
}
events {

View File

@ -123,6 +123,17 @@ interface Elm_Interface_Fileselector ()
const(list)* ret;
}
}
current_name {
set {
/*@ Set, */
}
get {
/*@ Get */
}
values {
const(char)* name;
}
}
}
methods {
custom_filter_append {