rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=ad0a6c839532bb76261580477e8b70b933db5aec

commit ad0a6c839532bb76261580477e8b70b933db5aec
Author: Vitalii Vorobiov <[email protected]>
Date:   Wed Jun 29 19:01:13 2016 +0300

    workspace: use combobox for zoom
---
 data/themes/default/widgets/combobox.edc | 25 ++++++++++++++++
 src/bin/ui/workspace/workspace.c         | 51 +++++++++++++++++++++++++++-----
 2 files changed, 69 insertions(+), 7 deletions(-)

diff --git a/data/themes/default/widgets/combobox.edc 
b/data/themes/default/widgets/combobox.edc
index ea71d8d..3808f6c 100644
--- a/data/themes/default/widgets/combobox.edc
+++ b/data/themes/default/widgets/combobox.edc
@@ -204,6 +204,31 @@ group { name: "elm/button/base/combobox_vertical/default";
    }
 }
 
+/* special style for zoom because it can't be strong in toolbar */
+group { name: "elm/button/base/combobox_vertical/zoom";
+   inherit: "elm/button/base/combobox_vertical/default";
+   parts {
+      part { name: "elm.swallow.content";
+         type: SWALLOW;
+         clip_to: "icon_clip";
+         description { state: "default" 0.0;
+            align: 0.0 0.5;
+            min: 40 19;
+            rel1 {
+               relative: 1.0 0.0;
+               to_x: "left.offset";
+               to_y: "base";
+            }
+            rel2 {
+               relative: 0.0 1.0;
+               to_x: "right.offset";
+               to_y: "base";
+            }
+         }
+      }
+   }
+}
+
 group { name: "elm/button/base/combobox_vertical/color_class";
    images {
       image: "dropdown-bg.png" COMP;
diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index 21f165e..bfd266f 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -41,6 +41,12 @@
 
 #if !HAVE_TIZEN
 static int zoom_values[] = { 20, 50, 100, 200, 500, 0 };
+
+typedef struct
+{
+   int index;
+   Eina_Stringshare *data;
+} Combobox_Item;
 #endif
 
 /* As the workspace can manage the one drag in one time, and only one workspace
@@ -78,6 +84,7 @@ struct _Workspace_Data
       Evas_Object *obj;
       Evas_Object *history;
       struct {
+         Elm_Genlist_Item_Class *itc;
          Evas_Object *fit;
          Evas_Object *cmb_zoom;
          Evas_Object *slider;
@@ -299,7 +306,7 @@ _slider_zoom_cb(void *data,
 #else
    Eina_Stringshare *text;
    text = eina_stringshare_printf("%d%%", (int)(wd->zoom_factor * 100));
-   ewe_combobox_text_set(wd->toolbar.zoom.cmb_zoom, text);
+   elm_object_text_set(wd->toolbar.zoom.cmb_zoom, text);
    eina_stringshare_del(text);
 #endif
    _members_zoom_set(wd);
@@ -328,13 +335,33 @@ _spinner_zoom_cb(void *data,
    _members_zoom_set(wd);
 }
 #else
+static char *
+_combobox_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part 
__UNUSED__)
+{
+   Combobox_Item *item = (Combobox_Item *)data;
+   return strdup(item->data);
+}
+
+static void
+_combobox_item_del(void *data,
+                   Evas_Object *obj __UNUSED__)
+{
+   Combobox_Item *item = (Combobox_Item *)data;
+   eina_stringshare_del(item->data);
+   free(item);
+}
+
 static void
 _zoom_selected_cb(void *data,
                   Evas_Object *obj __UNUSED__,
                   void *event_info)
 {
    Workspace_Data *wd = data;
-   Ewe_Combobox_Item *item = event_info;
+   Combobox_Item *item = elm_object_item_data_get(event_info);
+
+   elm_object_text_set(obj, item->data);
+   elm_combobox_hover_end(obj);
+   elm_entry_cursor_end_set(obj);
 
    wd->zoom_factor = zoom_values[item->index] / 100.0;
    elm_slider_value_set(wd->toolbar.zoom.slider, zoom_values[item->index]);
@@ -392,16 +419,26 @@ _zoom_controls_add(Workspace_Data *wd)
 #else
    int i = 0;
    Eina_Stringshare *text;
-   EWE_COMBOBOX_ADD(wd->toolbar.obj, wd->toolbar.zoom.cmb_zoom);
+   Combobox_Item *combobox_item;
+   COMBOBOX_ADD(wd->toolbar.obj, wd->toolbar.zoom.cmb_zoom);
+   elm_object_style_set(wd->toolbar.zoom.cmb_zoom, "zoom");
+   wd->toolbar.zoom.itc = elm_genlist_item_class_new();
+   wd->toolbar.zoom.itc->item_style = "default";
+   wd->toolbar.zoom.itc->func.text_get = _combobox_text_get;
+   wd->toolbar.zoom.itc->func.del = _combobox_item_del;
    evas_object_size_hint_min_set(wd->toolbar.zoom.cmb_zoom, 70, 0);
-   ewe_combobox_text_set(wd->toolbar.zoom.cmb_zoom, _("100%"));
-   evas_object_smart_callback_add(wd->toolbar.zoom.cmb_zoom, "selected", 
_zoom_selected_cb, wd);
+   elm_object_text_set(wd->toolbar.zoom.cmb_zoom, _("100%"));
+   evas_object_smart_callback_add(wd->toolbar.zoom.cmb_zoom, "item,pressed", 
_zoom_selected_cb, wd);
    while (zoom_values[i])
     {
       text = eina_stringshare_printf("%d%%", zoom_values[i]);
-      ewe_combobox_item_add(wd->toolbar.zoom.cmb_zoom, text);
+      combobox_item = mem_malloc(sizeof(Combobox_Item));
+      combobox_item->data = eina_stringshare_add(text);
+      combobox_item->index = i++;
+      elm_genlist_item_append(wd->toolbar.zoom.cmb_zoom, wd->toolbar.zoom.itc,
+                              combobox_item, NULL,
+                              ELM_GENLIST_ITEM_NONE, NULL, NULL);
       eina_stringshare_del(text);
-      i++;
     }
    tb_it = elm_toolbar_item_append(wd->toolbar.obj, NULL, NULL, NULL, NULL);
    elm_object_item_part_content_set(tb_it, NULL, wd->toolbar.zoom.cmb_zoom);

-- 


Reply via email to