rimmed pushed a commit to branch master.

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

commit 194c4fb17a8d2761e6c28a56a8c87fca7acc5ef2
Author: Vitalii Vorobiov <vi.vorob...@samsung.com>
Date:   Fri Dec 18 12:47:42 2015 +0200

    demo_text: organize property text changes between stuff
---
 src/bin/common/signals.h                | 16 ++++++
 src/bin/project_manager/group_manager.c |  1 +
 src/bin/project_manager/group_manager.h |  1 +
 src/bin/ui/demo_group.c                 |  6 +++
 src/bin/ui/live_view/demo.c             | 16 ++++++
 src/bin/ui/property.c                   | 39 +++++++++++++-
 src/bin/ui/property_demo_text.c         | 95 ++++++++++++++++++++++++++++++++-
 src/bin/ui/property_private.h           |  7 +++
 src/bin/ui/workspace/workspace.c        |  3 ++
 9 files changed, 180 insertions(+), 4 deletions(-)

diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h
index b7735e0..8e1f861 100644
--- a/src/bin/common/signals.h
+++ b/src/bin/common/signals.h
@@ -315,6 +315,14 @@ typedef struct {
 #define SIGNAL_COLOR_EDITOR_TAB_CLICKED "SIGNAL_COLOR_EDITOR_TAB_CLICKED"
 
 /**
+ * emited when text part in demo is clicked.
+ * eventinfo - NULL
+ *
+ * @ingroup Window
+ */
+#define SIGNAL_DEMO_TEXT_PART_CLICKED "SIGNAL_DEMO_TEXT_PART_CLICKED"
+
+/**
  * emited when style/styles in style editor is/are selected.
  * eventinfo - NULL
  *
@@ -330,4 +338,12 @@ typedef struct {
  */
 #define SIGNAL_COLOR_SELECTED "SIGNAL_COLOR_SELECTED"
 
+/**
+ * emited when part text is set with data in demo.
+ * eventinfo - NULL
+ *
+ * @ingroup Window
+ */
+#define SIGNAL_DEMO_TEXT_SET "SIGNAL_DEMO_TEXT_SET"
+
 #endif /* SIGNALS_H*/
diff --git a/src/bin/project_manager/group_manager.c 
b/src/bin/project_manager/group_manager.c
index cd8d6ce..2115801 100644
--- a/src/bin/project_manager/group_manager.c
+++ b/src/bin/project_manager/group_manager.c
@@ -632,6 +632,7 @@ gm_part_del(Project *pro, Part_* part)
    part->used_in = eina_list_free(part->used_in);
    part->group->parts = eina_list_remove(part->group->parts, part);
    eina_stringshare_del(part->name);
+   eina_stringshare_del(part->content);
    free(part);
 }
 
diff --git a/src/bin/project_manager/group_manager.h 
b/src/bin/project_manager/group_manager.h
index c6258f1..8a7c819 100644
--- a/src/bin/project_manager/group_manager.h
+++ b/src/bin/project_manager/group_manager.h
@@ -70,6 +70,7 @@ struct _Part_
    Eina_Stringshare * current_item_name; /**< name of selected item */
    Group *group;              /**< pointer to group */
    Eina_Bool visible;         /**< is part visible on workspace*/
+   Eina_Stringshare *content; /**< content for demo */
 };
 
 struct _Group
diff --git a/src/bin/ui/demo_group.c b/src/bin/ui/demo_group.c
index 9243761..88a0912 100644
--- a/src/bin/ui/demo_group.c
+++ b/src/bin/ui/demo_group.c
@@ -142,6 +142,12 @@ _selected_cb(void *data __UNUSED__,
              Evas_Object *o __UNUSED__,
              void *event_info __UNUSED__)
 {
+   Elm_Object_Item *glit = (Elm_Object_Item *)event_info;
+   Part_ *part = (Part_ *)elm_object_item_data_get(glit);
+
+   if ((part->type == EDJE_PART_TYPE_TEXT) ||
+       (part->type == EDJE_PART_TYPE_TEXTBLOCK))
+     evas_object_smart_callback_call(ap.win, SIGNAL_DEMO_TEXT_PART_CLICKED, 
part);
 }
 
 Evas_Object *
diff --git a/src/bin/ui/live_view/demo.c b/src/bin/ui/live_view/demo.c
index 83b2f6d..2ee526f 100644
--- a/src/bin/ui/live_view/demo.c
+++ b/src/bin/ui/live_view/demo.c
@@ -20,6 +20,19 @@
 #include "live_view.h"
 #include "live_view_prop.h"
 
+#include "signals.h"
+
+static void
+_set_text(void *data,
+          Evas_Object *obj __UNUSED__,
+          void *event_info)
+{
+   Part_ *part = (Part_ *) event_info;
+   Evas_Object *object = (Evas_Object *) data;
+
+   elm_object_part_text_set(object, part->name, part->content);
+}
+
 Evas_Object *
 demo_add(Evas_Object *parent, Group *group)
 {
@@ -50,5 +63,8 @@ demo_add(Evas_Object *parent, Group *group)
              "and need to restart Eflete.");
      }
 
+
+   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_SET, _set_text, 
obj);
+
    return obj;
 }
diff --git a/src/bin/ui/property.c b/src/bin/ui/property.c
index 1adac4a..146e4c7 100644
--- a/src/bin/ui/property.c
+++ b/src/bin/ui/property.c
@@ -80,7 +80,8 @@ enum _Property_Type {
    IMAGE_PROPERTY,
    SOUND_PROPERTY,
    STYLE_PROPERTY,
-   COLOR_PROPERTY
+   COLOR_PROPERTY,
+   DEMO_TEXT_PROPERTY
 };
 typedef enum _Property_Type Property_Type;
 
@@ -91,6 +92,7 @@ struct _Prop_Data
    Evas_Object *sound_property;
    Evas_Object *style_property;
    Evas_Object *color_property;
+   Evas_Object *demo_text_property;
    Evas_Object *colorclass_property;
    Evas_Object *layout;
 
@@ -116,6 +118,8 @@ _on_different_clicked(void *data,
    evas_object_hide(pd->sound_property);
    evas_object_hide(pd->style_property);
    evas_object_hide(pd->color_property);
+   evas_object_hide(pd->demo_text_property);
+
    pd->type = PROPERTY;
 }
 
@@ -136,6 +140,7 @@ _on_image_editor_clicked(void *data,
    evas_object_hide(pd->sound_property);
    evas_object_hide(pd->style_property);
    evas_object_hide(pd->color_property);
+   evas_object_hide(pd->demo_text_property);
    evas_object_show(pd->image_property);
 
    pd->type = IMAGE_PROPERTY;
@@ -158,6 +163,7 @@ _on_sound_editor_clicked(void *data,
    evas_object_hide(pd->image_property);
    evas_object_hide(pd->style_property);
    evas_object_hide(pd->color_property);
+   evas_object_hide(pd->demo_text_property);
    evas_object_show(pd->sound_property);
 
    pd->type = SOUND_PROPERTY;
@@ -180,6 +186,7 @@ _on_style_editor_clicked(void *data,
    evas_object_hide(pd->image_property);
    evas_object_hide(pd->sound_property);
    evas_object_hide(pd->color_property);
+   evas_object_hide(pd->demo_text_property);
    evas_object_show(pd->style_property);
 
    pd->type = STYLE_PROPERTY;
@@ -208,6 +215,31 @@ _on_color_editor_clicked(void *data,
 }
 
 static void
+_on_text_part_clicked(void *data,
+                      Evas_Object *obj __UNUSED__,
+                      void *event_info __UNUSED__)
+{
+   Evas_Object *property = data;
+   PROP_DATA_GET()
+   Part_ *part = (Part_ *) event_info;
+
+   assert(pd != NULL);
+
+   ui_property_group_unset(pd->group_property);
+   elm_object_content_unset(pd->layout);
+   elm_object_content_set(pd->layout, pd->demo_text_property);
+   evas_object_hide(pd->group_property);
+   evas_object_hide(pd->image_property);
+   evas_object_hide(pd->sound_property);
+   evas_object_hide(pd->style_property);
+   evas_object_show(pd->demo_text_property);
+
+   ui_property_demo_text_part_set(pd->demo_text_property, part);
+
+   pd->type = DEMO_TEXT_PROPERTY;
+}
+
+static void
 _on_tab_changed(void *data,
                 Evas_Object *obj __UNUSED__,
                 void *event_info)
@@ -234,7 +266,7 @@ _on_tab_changed(void *data,
        pd->type == STYLE_PROPERTY ||
        pd->type == SOUND_PROPERTY ||
        pd->type == COLOR_PROPERTY ||
-       pd->type == PROPERTY)
+       pd->type == PROPERTY || pd->type == DEMO_TEXT_PROPERTY)
      {
         elm_object_content_unset(pd->layout);
         elm_object_content_set(pd->layout, pd->group_property);
@@ -242,6 +274,7 @@ _on_tab_changed(void *data,
         evas_object_hide(pd->sound_property);
         evas_object_hide(pd->style_property);
         evas_object_hide(pd->color_property);
+        evas_object_hide(pd->demo_text_property);
      }
 
    //evas_object_hide(elm_object_content_unset(pd->layout));
@@ -274,12 +307,14 @@ ui_property_add(Evas_Object *parent)
    pd->sound_property = ui_property_sound_add(pd->layout);
    pd->style_property = ui_property_style_add(pd->layout);
    pd->color_property = ui_property_color_add(pd->layout);
+   pd->demo_text_property = ui_property_demo_text_add(pd->layout);
    /* register global callbacks */
    evas_object_smart_callback_add(ap.win, SIGNAL_TAB_CHANGED, _on_tab_changed, 
pd->layout);
    evas_object_smart_callback_add(ap.win, SIGNAL_IMAGE_EDITOR_TAB_CLICKED, 
_on_image_editor_clicked, pd->layout);
    evas_object_smart_callback_add(ap.win, SIGNAL_SOUND_EDITOR_TAB_CLICKED, 
_on_sound_editor_clicked, pd->layout);
    evas_object_smart_callback_add(ap.win, SIGNAL_STYLE_EDITOR_TAB_CLICKED, 
_on_style_editor_clicked, pd->layout);
    evas_object_smart_callback_add(ap.win, SIGNAL_COLOR_EDITOR_TAB_CLICKED, 
_on_color_editor_clicked, pd->layout);
+   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_PART_CLICKED, 
_on_text_part_clicked, pd->layout);
    evas_object_smart_callback_add(ap.win, SIGNAL_DIFFERENT_TAB_CLICKED, 
_on_different_clicked, pd->layout);
 
    return pd->layout;
diff --git a/src/bin/ui/property_demo_text.c b/src/bin/ui/property_demo_text.c
index 7d2f73a..84cdbe4 100644
--- a/src/bin/ui/property_demo_text.c
+++ b/src/bin/ui/property_demo_text.c
@@ -24,7 +24,6 @@
 #include "common_macro.h"
 #include "new_history.h"
 #include "editor.h"
-#include "validator.h"
 
 #include "signals.h"
 
@@ -37,10 +36,102 @@
 
 struct _Demo_Text_Prop_Data
 {
+   Part_ *part;
+
+   Evas_Object *box;
    Evas_Object *name;
-   Evas_Object *visibility;
    Evas_Object *text;
 };
 typedef struct _Demo_Text_Prop_Data Demo_Text_Prop_Data;
 
+static Evas_Object *
+prop_item_label_add(Evas_Object *parent,
+                    Evas_Object **label,
+                    const char *lab_text,
+                    const char *text)
+{
+   assert(parent != NULL);
+   assert(label != NULL);
+
+   PROPERTY_ITEM_ADD(parent, lab_text, "1swallow")
+   LABEL_ADD(item, *label, text)
+   elm_object_part_content_set(item, "elm.swallow.content", *label);
+   return item;
+}
+
+static void
+_on_part_name_change(void *data,
+                     Evas_Object *obj __UNUSED__,
+                     void *ei __UNUSED__)
+{
+   Demo_Text_Prop_Data *pd = (Demo_Text_Prop_Data *)data;
+   const char *text;
+   char *value;
+   assert(pd != NULL);
+   text = elm_entry_entry_get(obj);
+   value = elm_entry_markup_to_utf8(text);
+
+   if (pd->part->content)
+     eina_stringshare_del(pd->part->content);
+   pd->part->content = eina_stringshare_add(value);
+
+   evas_object_smart_callback_call(ap.win, SIGNAL_DEMO_TEXT_SET, pd->part);
+
+   free(value);
+}
+
+static Evas_Object *
+prop_part_content_add(Evas_Object *parent, Demo_Text_Prop_Data *pd)
+{
+   assert(parent != NULL);
+   assert(pd != NULL);
+
+   PROPERTY_ITEM_ADD(parent,  _("content"), "1swallow");
+   ENTRY_ADD(parent, pd->text, true);
+   elm_object_tooltip_text_set(pd->text, _("Set text"));
+   evas_object_smart_callback_add(pd->text, "changed,user", 
_on_part_name_change, pd);
+   elm_layout_content_set(item, "elm.swallow.content", pd->text);
+
+   return item;
+}
+
+void
+ui_property_demo_text_part_set(Evas_Object *property, Part_ *part)
+{
+   DEMO_TEXT_PROP_DATA_GET()
+
+   /* setting */
+   if (part)
+     elm_object_text_set(pd->name, part->name);
+
+   pd->part = part;
+
+   /* showing */
+   evas_object_show(property);
+}
+
+Evas_Object *
+ui_property_demo_text_add(Evas_Object *parent)
+{
+   Demo_Text_Prop_Data *pd;
+   Evas_Object *item;
+
+   assert(parent != NULL);
+
+   pd = mem_calloc(1, sizeof(Demo_Text_Prop_Data));
+
+   /* editors */
+   BOX_ADD(parent, pd->box, false, false);
+   elm_box_align_set(pd->box, 0.5, 0.0);
+   evas_object_hide(pd->box);
+   evas_object_data_set(pd->box, DEMO_TEXT_PROP_DATA, pd);
+
+   /* Frame with info */
+   elm_box_align_set(pd->box, 0.5, 0.0);
+   item = prop_item_label_add(pd->box, &pd->name, _("name"), _(" - "));
+   elm_box_pack_end(pd->box, item);
+   item = prop_part_content_add(pd->box, pd);
+   elm_box_pack_end(pd->box, item);
 
+   return pd->box;
+}
diff --git a/src/bin/ui/property_private.h b/src/bin/ui/property_private.h
index a5bb4e3..23e2314 100644
--- a/src/bin/ui/property_private.h
+++ b/src/bin/ui/property_private.h
@@ -66,4 +66,11 @@ ui_property_style_add(Evas_Object *parent);
 
 Evas_Object *
 ui_property_color_add(Evas_Object *parent);
+
+Evas_Object *
+ui_property_demo_text_add(Evas_Object *parent);
+
+void
+ui_property_demo_text_part_set(Evas_Object *property, Part_ *part);
+
 #endif /* UI_PROPERTY_1_H */
diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index 657a190..d6856ee 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -1015,6 +1015,8 @@ _mode_changed(void *data,
             elm_object_part_content_set(sd->panes, "right", sd->demo_group);
             evas_object_show(sd->demo_group);
 
+            evas_object_smart_callback_call(ap.win, 
SIGNAL_DIFFERENT_TAB_CLICKED, NULL);
+
             break;
          }
       default: break;
@@ -1027,6 +1029,7 @@ _mode_changed(void *data,
         evas_object_hide(sd->demo_group);
         elm_object_part_content_set(sd->panes, "right", sd->group_navigator);
         evas_object_show(sd->group_navigator);
+        evas_object_smart_callback_call(ap.win, SIGNAL_TAB_CHANGED, sd->group);
      }
 
    sd->active_mode = mode;

-- 


Reply via email to