rimmed pushed a commit to branch master.

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

commit 8226bc05e877fd3fa6ad05fc2b2407d89ebdc8f2
Author: Vitalii Vorobiov <vi.vorob...@samsung.com>
Date:   Mon Mar 28 15:44:00 2016 +0300

    live_naviframe: set/unset content into swallow parts
---
 src/bin/ui/live_view/elementary/live_naviframe.c | 119 ++++++++++++++++++++---
 1 file changed, 103 insertions(+), 16 deletions(-)

diff --git a/src/bin/ui/live_view/elementary/live_naviframe.c 
b/src/bin/ui/live_view/elementary/live_naviframe.c
index dd592de..627aac4 100644
--- a/src/bin/ui/live_view/elementary/live_naviframe.c
+++ b/src/bin/ui/live_view/elementary/live_naviframe.c
@@ -21,13 +21,105 @@
 
 static const char *item_style_name = NULL;
 
+void
+_pop_page_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info 
__UNUSED__)
+{
+   Evas_Object *nf = data;
+
+   assert(nf != NULL);
+
+   elm_naviframe_item_pop(nf);
+}
+
+void
+_next_page_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info 
__UNUSED__)
+{
+   Evas_Object *nf = (Evas_Object *)data, *bt;
+   Eina_Stringshare *find_part = eina_stringshare_add("elm.swallow.prev_btn");
+
+   bt = elm_button_add(nf);
+   elm_object_text_set(bt, _("Back"));
+   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   evas_object_smart_callback_add(bt, "clicked", _pop_page_cb, nf);
+   evas_object_show(bt);
+
+   elm_naviframe_item_push(nf, _("Page Next"), bt, NULL, NULL, 
item_style_name);
+   eina_stringshare_del(find_part);
+}
+
+void
+_prev_page_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info 
__UNUSED__)
+{
+   Evas_Object *nf = (Evas_Object *)data, *bt;
+   Eina_Stringshare *find_part = eina_stringshare_add("elm.swallow.next_btn");
+
+   bt = elm_button_add(nf);
+   elm_object_text_set(bt, _("Back"));
+   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   evas_object_smart_callback_add(bt, "clicked", _pop_page_cb, nf);
+   evas_object_show(bt);
+
+   elm_naviframe_item_push(nf, _("Page Prev"), NULL, bt, NULL, 
item_style_name);
+   eina_stringshare_del(find_part);
+}
+
 static void
 _on_naviframe_swallow_check(void *data __UNUSED__,
                             Evas_Object *obj __UNUSED__,
                             void *ei __UNUSED__)
 {
-   TODO("Remake on_swallow_check, so that would be used everywhere.")
-   ERR(N_("Complex widgets are not implemented yet."))
+   Demo_Part *part = (Demo_Part *)ei;
+   Evas_Object *object = (Evas_Object *) data;
+   Elm_Object_Item *item_main, *item_current;
+
+   item_current = evas_object_data_get(object, "main_page");
+   item_main = elm_naviframe_top_item_get(object);
+   if (item_current != item_main)
+     elm_naviframe_item_pop(object);
+
+   if (part->change)
+     {
+        if (part->object)
+          {
+             elm_object_part_content_unset(object, part->name);
+             evas_object_del(part->object);
+             part->object = NULL;
+          }
+
+        part->object = object_generate(part, object);
+        evas_object_show(part->object);
+        if ((part->swallow_content == CONTENT_WIDGET) && (part->widget == 
WIDGET_BUTTON))
+          {
+             if (!strcmp(part->name, "elm.swallow.prev_btn"))
+               {
+                  elm_object_text_set(part->object, _("Prev page"));
+                  evas_object_smart_callback_add(part->object, "clicked", 
_prev_page_cb, object);
+               }
+             else if (!strcmp(part->name, "elm.swallow.next_btn"))
+               {
+                  elm_object_text_set(part->object, _("Next page"));
+                  evas_object_smart_callback_add(part->object, "clicked", 
_next_page_cb, object);
+               }
+          }
+        part->change = false;
+        elm_object_part_content_set(object, part->name, part->object);
+     }
+
+   if (part->object)
+     {
+        evas_object_color_set(part->object,
+                              part->r,
+                              part->g,
+                              part->b,
+                              part->a);
+
+        evas_object_size_hint_min_set(part->object,
+                                      part->min_w,
+                                      part->min_h);
+        evas_object_size_hint_max_set(part->object,
+                                      part->max_w,
+                                      part->max_h);
+     }
 }
 
 static void
@@ -41,18 +133,15 @@ _on_naviframe_text_check(void *data __UNUSED__,
 
 static void
 _naviframe_send_signal(void *data,
-                       Evas_Object *obj,
+                       Evas_Object *obj __UNUSED__,
                        void *ei __UNUSED__)
 {
+   Demo_Signal *sig = (Demo_Signal *)ei;
    Evas_Object *object = (Evas_Object *)data;
 
-   assert(object != NULL);
-
-   const char *name = evas_object_data_get(obj, SIGNAL_NAME);
-   const char *source = evas_object_data_get(obj, SIGNAL_SOURCE);
-
-   assert(name != NULL);
-   assert(source != NULL);
+   assert(sig != NULL);
+   assert(sig->sig_name != NULL);
+   assert(sig->source_name != NULL);
 
    Elm_Object_Item *item_main, *item_current;
 
@@ -61,10 +150,9 @@ _naviframe_send_signal(void *data,
    if (item_current != item_main)
      item_current = elm_naviframe_item_pop(object);
 
-   elm_object_item_signal_emit(item_current, name, source);
+   elm_object_item_signal_emit(item_current, sig->sig_name, sig->source_name);
 }
 
-
 Evas_Object *
 widget_naviframe_create(Evas_Object *parent, const Group *group)
 {
@@ -88,7 +176,6 @@ widget_naviframe_create(Evas_Object *parent, const Group 
*group)
 
    Evas_Object *nf = elm_naviframe_add(parent);
    evas_object_size_hint_weight_set(nf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-   elm_win_resize_object_add(parent, nf);
 
    elm_naviframe_prev_btn_auto_pushed_set(nf, false);
 
@@ -97,9 +184,9 @@ widget_naviframe_create(Evas_Object *parent, const Group 
*group)
    elm_object_item_part_text_set(it, "title", _("Main Page"));
    evas_object_data_set(nf, "main_page", it);
 
-   evas_object_data_set(nf, SWALLOW_FUNC, _on_naviframe_swallow_check);
-   evas_object_data_set(nf, TEXT_FUNC, _on_naviframe_text_check);
-   evas_object_data_set(nf, SIGNAL_FUNC, _naviframe_send_signal);
+   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SWALLOW_SET, 
_on_naviframe_swallow_check, nf);
+   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_SET, 
_on_naviframe_text_check, nf);
+   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SIGNAL_SEND, 
_naviframe_send_signal, nf);
 
    elm_object_style_set(nf, style_name);
 

-- 


Reply via email to