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; --