Introduce current_name_{set|get}
authorRyuan Choi <ryuan.choi@gmail.com>
Sun, 5 Oct 2014 23:08:24 +0000 (08:08 +0900)
committerRyuan Choi <ryuan.choi@gmail.com>
Sun, 5 Oct 2014 23:08:24 +0000 (08:08 +0900)
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
src/lib/elc_fileselector.c
src/lib/elc_fileselector_legacy.h
src/lib/elm_fileselector.eo
src/lib/elm_interface_fileselector.eo

index b32cd87bdcfeae610ff13dc23c1b60454478fb75..18dcae602bd87bfe68fdef03cc760b0333215afe 100644 (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");
index 7a83cd1774e87606c34bf8b56cb28ef4f5d5ae6f..9ca256314e2a692b9346e55d0116f9d7a281cf67 100644 (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)
 {
index 9aa97d18219a19f81cd73f95866ee18dc0c5c46b..2c7fcd6a5872739e57ff7f96b5ef8d7a6384e6e9 100644 (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.
  *
index 9b85ae4342ff369d89d8c5b3e74b347190873c6f..ea68eb2261aa5bb6e06494d711a2da3c0183bb6d 100644 (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 {
index 401e33e05581c13d2a6f4bb84012db31efb2f4aa..c239cf6ba42e242e830aaf5e2f6bce14b2618cee 100644 (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 {