ryuan pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=ecdacf03537f210f17c3c572e13f20023f32992f

commit ecdacf03537f210f17c3c572e13f20023f32992f
Author: Ryuan Choi <ryuan.c...@gmail.com>
Date:   Mon Oct 6 08:08:24 2014 +0900

    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
---
 src/bin/test_fileselector.c           |  3 +++
 src/lib/elc_fileselector.c            | 46 ++++++++++++++++++++++++++++-------
 src/lib/elc_fileselector_legacy.h     |  3 +++
 src/lib/elm_fileselector.eo           |  1 +
 src/lib/elm_interface_fileselector.eo | 11 +++++++++
 5 files changed, 55 insertions(+), 9 deletions(-)

diff --git a/src/bin/test_fileselector.c b/src/bin/test_fileselector.c
index b32cd87..18dcae6 100644
--- a/src/bin/test_fileselector.c
+++ b/src/bin/test_fileselector.c
@@ -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");
diff --git a/src/lib/elc_fileselector.c b/src/lib/elc_fileselector.c
index 7a83cd1..9ca2563 100644
--- a/src/lib/elc_fileselector.c
+++ b/src/lib/elc_fileselector.c
@@ -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)
 {
diff --git a/src/lib/elc_fileselector_legacy.h 
b/src/lib/elc_fileselector_legacy.h
index 9aa97d1..2c7fcd6 100644
--- a/src/lib/elc_fileselector_legacy.h
+++ b/src/lib/elc_fileselector_legacy.h
@@ -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.
  *
diff --git a/src/lib/elm_fileselector.eo b/src/lib/elm_fileselector.eo
index 9b85ae4..ea68eb2 100644
--- a/src/lib/elm_fileselector.eo
+++ b/src/lib/elm_fileselector.eo
@@ -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 {
diff --git a/src/lib/elm_interface_fileselector.eo 
b/src/lib/elm_interface_fileselector.eo
index 401e33e..c239cf6 100644
--- a/src/lib/elm_interface_fileselector.eo
+++ b/src/lib/elm_interface_fileselector.eo
@@ -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 {

-- 


Reply via email to