rimmed pushed a commit to branch master.

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

commit 88a17fece7b0bf0dde661d85276093961d079628
Author: Mykyta Biliavskyi <m.biliavs...@samsung.com>
Date:   Tue Jan 3 15:53:04 2017 +0200

    Image manager: add preview for image sets.
    
    Instead of show single image in preview for image sets displayed gengrid
    with images, that uses inside selected image set. This way to
    demonstrate items of image set provide ability to have access to each
    image (and image attributes) inside set.
    
    T5064
---
 src/bin/ui/image_manager.c | 88 ++++++++++++++++++++++++++++++++--------------
 src/bin/ui/main_window.h   |  7 ++++
 2 files changed, 69 insertions(+), 26 deletions(-)

diff --git a/src/bin/ui/image_manager.c b/src/bin/ui/image_manager.c
index bd9da04..a1ec3de 100644
--- a/src/bin/ui/image_manager.c
+++ b/src/bin/ui/image_manager.c
@@ -181,6 +181,40 @@ _grid_content_get(void *data,
    return image_obj;
 }
 
+static inline Evas_Object *
+_image_manager_image_set_grid_create(Evas_Object *parent,
+                                     const Image_Item *it)
+{
+   Resource2 *res = NULL;
+   Image2 *image_res = NULL;
+   Eina_List *l = NULL;
+   Evas_Object *images_set_grid = NULL;
+   Image_Item *image_set_item = NULL;
+
+   assert(parent != NULL);
+   assert(it != NULL);
+
+   images_set_grid = elm_gengrid_add(parent);
+   elm_gengrid_item_size_set(images_set_grid, ITEM_WIDTH, ITEM_HEIGHT);
+   elm_gengrid_align_set(images_set_grid, 0.0, 0.0);
+   elm_scroller_policy_set(images_set_grid, ELM_SCROLLER_POLICY_OFF, 
ELM_SCROLLER_POLICY_AUTO);
+   elm_gengrid_multi_select_mode_set(images_set_grid, 
ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL);
+   elm_gengrid_select_mode_set(images_set_grid, ELM_OBJECT_SELECT_MODE_ALWAYS);
+   evas_object_size_hint_weight_set(mng.image, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(mng.image, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+   res = resource_manager_find(ap.project->RM.image_sets, it->image_name);
+   EINA_LIST_FOREACH(res->common.uses___, l, image_res)
+     {
+        image_set_item = (Image_Item *)mem_calloc(1, sizeof(Image_Item));
+        image_set_item->type = SINGLE_IMAGE;
+        image_set_item->image_name = 
eina_stringshare_add(image_res->common.name);
+        image_set_item->source = eina_stringshare_add(image_res->source);
+        elm_gengrid_item_append(images_set_grid, gic, image_set_item, NULL, 
(void *)it);
+     }
+
+   return images_set_grid;
+}
 /* icon fetching callback */
 static Evas_Object *
 _grid_image_set_content_get(void *data,
@@ -269,14 +303,18 @@ _grid_del(void *data,
 static void
 _image_info_setup(const Image_Item* it)
 {
-   Evas_Object *image;
+   Evas_Object *content = NULL;
 
    assert(it != NULL);
 
-   image = _image_manager_image_create(mng.layout, it);
-   evas_object_show(image);
+   if (it->type == SINGLE_IMAGE)
+     content = _image_manager_image_create(mng.layout, it);
+   else if (it->type == IMAGE_SET)
+     content =  _image_manager_image_set_grid_create(mng.layout, it);
 
-   evas_object_data_set(image, "image_name", it->image_name);
+   evas_object_show(content);
+
+   mng.image = content;
 }
 
 /* item selection change callback */
@@ -289,6 +327,7 @@ _grid_sel_cb(void *data __UNUSED__,
    Eina_List *l;
    Eina_List *sel_list;
    Elm_Object_Item *grid_item = NULL;
+   Evas_Object *to_del  = NULL;
    char buf[PATH_MAX];
 
    sel_list = (Eina_List *)elm_gengrid_selected_items_get(mng.gengrid);
@@ -298,27 +337,21 @@ _grid_sel_cb(void *data __UNUSED__,
    if (selected_images_count != 0)
      elm_object_disabled_set(mng.del_button, true);
 
+#ifdef HAVE_TIZEN
+   to_del = elm_object_part_content_unset(mng.entry_prev, "elm.swallow.entry");
+#else
+   to_del = elm_object_part_content_unset(mng.property_panes, "left");
+#endif
+   evas_object_del(to_del);
    if (selected_images_count == 1)
      {
         item = elm_object_item_data_get(eina_list_data_get(sel_list));
-        _image_info_setup(item);
+
         /* if selected image is not used, we can delete it */
         if (!item->is_used)
           elm_object_disabled_set(mng.del_button, false);
 
-         /* apply picture */
-         if (item->comp_type == EDJE_EDIT_IMAGE_COMP_USER)
-           {
-              if (ecore_file_exists(item->source))
-                elm_image_file_set(mng.image, item->source, NULL);
-              else
-                elm_image_file_set(mng.image, ap.path.theme_edj, 
"elm/image/icon/attention");
-           }
-         else
-           {
-              elm_image_file_set(mng.image, item->source, NULL);
-           }
-         evas_object_image_smooth_scale_set(mng.image, false);
+        _image_info_setup(item);
      }
    else
      {
@@ -333,8 +366,15 @@ _grid_sel_cb(void *data __UNUSED__,
                }
           }
         snprintf(buf, sizeof(buf), "%s"EFLETE_DUMMY_IMAGE_NAME, 
ap.path.image_path);
+        mng.image = elm_image_add(mng.property_panes);
         elm_image_file_set(mng.image, buf, NULL);
+        evas_object_show(mng.image);
      }
+#ifdef HAVE_TIZEN
+   elm_object_part_content_set(mng.entry_prev, "elm.swallow.entry", mng.image);
+#else
+   elm_object_part_content_set(mng.property_panes, "left", mng.image);
+#endif
    evas_object_smart_callback_call(ap.win, SIGNAL_IMAGE_SELECTED, item);
 }
 
@@ -356,6 +396,7 @@ _image_manager_gengrid_item_data_set_create(Evas_Object 
*edje_edit_obj,
    Image2 *res_image = NULL;
    res_image = eina_list_data_get(res->common.uses___);
    it->source = eina_stringshare_add(res_image->source);
+   it->type = IMAGE_SET;
 
    img = _image_manager_image_create(ap.project->global_object, it);
    elm_image_object_size_get(img, &it->width, &it->height);
@@ -381,6 +422,7 @@ _image_manager_gengrid_item_data_create(Evas_Object 
*edje_edit_obj,
    it->quality = edje_edit_image_compression_rate_get(edje_edit_obj,
                                                       it->image_name);
    it->source = eina_stringshare_add(res->source);
+   it->type = SINGLE_IMAGE;
 
    img = _image_manager_image_create(ap.project->global_object, it);
    elm_image_object_size_get(img, &it->width, &it->height);
@@ -631,6 +673,7 @@ _project_closed_cb(void *data __UNUSED__,
                    Evas_Object *obj __UNUSED__,
                    void *event_info __UNUSED__)
 {
+   evas_object_del(mng.image);
    elm_gengrid_clear(mng.gengrid);
 }
 
@@ -673,13 +716,9 @@ image_manager_add(void)
    elm_layout_theme_set(mng.entry_prev, "layout", "manager", "preview");
    evas_object_show(mng.entry_prev);
 
-   mng.image = elm_image_add(mng.panes);
-   evas_object_show(mng.image);
-
    bg = elm_layout_add(mng.layout);
    elm_layout_theme_set(bg, "layout", "workspace", "bg");
    elm_object_part_content_set(mng.entry_prev, "elm.swallow.background", bg);
-   elm_object_part_content_set(mng.entry_prev, "elm.swallow.entry", mng.image);
    elm_object_signal_emit(mng.entry_prev, "entry,show", "eflete");
    elm_object_part_content_set(mng.layout, "elm.swallow.preview", 
mng.entry_prev);
 #else
@@ -690,9 +729,6 @@ image_manager_add(void)
    mng.property_panes = elm_panes_add(mng.win);
    elm_panes_horizontal_set(mng.property_panes, true);
    elm_object_part_content_set(mng.panes, "right", mng.property_panes);
-   mng.image = elm_image_add(mng.panes);
-   evas_object_show(mng.image);
-   elm_object_part_content_set(mng.property_panes, "left", mng.image);
    elm_object_part_content_set(mng.property_panes, "right", 
ap.property.image_manager);
 #endif
 
@@ -721,7 +757,7 @@ image_manager_add(void)
    elm_scroller_policy_set(mng.gengrid, ELM_SCROLLER_POLICY_OFF, 
ELM_SCROLLER_POLICY_AUTO);
    elm_gengrid_multi_select_set(mng.gengrid, true);
    elm_gengrid_multi_select_mode_set(mng.gengrid, 
ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL);
-   elm_gengrid_select_mode_set(mng.gengrid, ELM_OBJECT_SELECT_MODE_ALWAYS);
+   elm_gengrid_select_mode_set(mng.gengrid, ELM_OBJECT_SELECT_MODE_DEFAULT);
    evas_object_smart_callback_add(mng.gengrid, signals.elm.gengrid.unselected, 
_grid_sel_cb, NULL);
    evas_object_show(mng.gengrid);
 
diff --git a/src/bin/ui/main_window.h b/src/bin/ui/main_window.h
index 9c2edfe..7e97ed8 100644
--- a/src/bin/ui/main_window.h
+++ b/src/bin/ui/main_window.h
@@ -111,6 +111,12 @@ typedef enum
    FILE_SAVE_APPEND
 } File_Save;
 
+typedef enum
+{
+   SINGLE_IMAGE = 1,
+   IMAGE_SET
+} Image_Instance_Type;
+
 /**
  * The validation func for popup action.
  *
@@ -492,6 +498,7 @@ struct _Image_Item
    int quality;
    Eina_Bool is_used;
    int height, width;
+   Image_Instance_Type type;
 };
 
 /**

-- 


Reply via email to