rimmed pushed a commit to branch master.

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

commit 1bcd00b5342a88d6321e22d7242a2781ceee8c69
Author: Andrii Kroitor <an.kroi...@samsung.com>
Date:   Tue Dec 8 14:25:42 2015 +0200

    group_navigator: implement part_item add
---
 src/bin/common/signals.h     |  8 +++++
 src/bin/ui/group_navigator.c | 73 ++++++++++++++++++++++++++++++++++++++++++--
 src/bin/ui/tabs.c            | 11 +++++++
 3 files changed, 90 insertions(+), 2 deletions(-)

diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h
index 6911b8b..cb4bc7e 100644
--- a/src/bin/common/signals.h
+++ b/src/bin/common/signals.h
@@ -77,6 +77,14 @@
 #define SIGNAL_PART_ADDED "SIGNAL_PART_ADDED"
 
 /**
+ * emited when new part_item is added.
+ * eventinfo - pointer to Part_ structure
+ *
+ * @ingroup Window
+ */
+#define SIGNAL_PART_ITEM_ADDED "SIGNAL_PART_ITEM_ADDED"
+
+/**
  * emited when part is deleted.
  * eventinfo - pointer to Part_ structure
  *
diff --git a/src/bin/ui/group_navigator.c b/src/bin/ui/group_navigator.c
index 62ecb27..c004643 100644
--- a/src/bin/ui/group_navigator.c
+++ b/src/bin/ui/group_navigator.c
@@ -712,6 +712,7 @@ _editor_state_added_cb(void *data,
      }
    state = gm_state_add(ap.project, part, editor_state->state_name);
 
+   TODO("Check this signal")
    /* callback should be called before selection to allow some additional 
loading */
    evas_object_smart_callback_call(ap.win, SIGNAL_STATE_ADDED, (void *)state);
 
@@ -809,11 +810,77 @@ _on_menu_add_state_clicked(void *data __UNUSED__,
 }
 
 static void
-_popup_add_item_ok_clicked(void *data __UNUSED__,
+_popup_add_item_ok_clicked(void *data,
                            Evas_Object *obj __UNUSED__,
                            void *event_info __UNUSED__)
 {
-   printf("_popup_add_item_ok_clicked\n");
+   Ewe_Combobox_Item *item;
+   Part_List *pl = data;
+   Part_ *part;
+   const char *name;
+   Eina_Stringshare *msg;
+   Change *change;
+
+   assert(pl != NULL);
+
+   part = elm_object_item_data_get(pl->selected_part_item);
+   name = elm_entry_entry_get(pl->popup.entry_name);
+   item = ewe_combobox_select_item_get(pl->popup.combobox);
+
+   msg = eina_stringshare_printf(_("added new item \"%s\" to part \"%s\""), 
name, part->name);
+   change = change_add(msg);
+   editor_part_item_append(pl->group->edit_object, change, false, part->name, 
name, item->title);
+
+   history_change_add(pl->group->history, change);
+   eina_stringshare_del(msg);
+   ecore_job_add(_job_popup_del, pl);
+}
+
+static void
+_editor_part_item_added_cb(void *data,
+                           Evas_Object *obj __UNUSED__,
+                           void *event_info)
+{
+   Part_List *pl = data;
+   const Editor_Item *editor_item = event_info;
+   Part_ *part;
+   Elm_Object_Item *items_glit, *glit;
+   const Eina_List *l;
+   Eina_Stringshare *item_name;
+
+   assert(pl != NULL);
+   assert(editor_item != NULL);
+
+   part = elm_object_item_data_get(pl->selected_part_item);
+   if (strcmp(editor_item->part_name, part->name))
+     {
+        part = pm_resource_unsorted_get(part->group->parts, 
editor_item->part_name);
+        group_navigator_part_select(pl->layout, part);
+     }
+
+   assert((part->type == EDJE_PART_TYPE_TABLE) ||
+          (part->type == EDJE_PART_TYPE_BOX));
+
+   item_name = eina_stringshare_add(editor_item->item_name);
+   part->items = eina_list_append(part->items, item_name);
+
+   /* callback should be called before selection to allow some additional 
loading */
+   evas_object_smart_callback_call(ap.win, SIGNAL_PART_ITEM_ADDED, (void 
*)part);
+
+   elm_genlist_item_expanded_set(pl->selected_part_item, true);
+   items_glit = 
eina_list_data_get(eina_list_last(elm_genlist_item_subitems_get(pl->selected_part_item)));
+   elm_genlist_item_update(items_glit);
+   elm_genlist_item_expanded_set(items_glit, false);
+   elm_genlist_item_expanded_set(items_glit, true);
+
+   EINA_LIST_FOREACH(elm_genlist_item_subitems_get(items_glit), l, glit)
+     {
+        if (elm_object_item_data_get(glit) == item_name) /* comparing 
stringshares */
+          {
+             elm_genlist_item_selected_set(glit, true);
+             break;
+          }
+     }
 }
 
 static void
@@ -1211,8 +1278,10 @@ group_navigator_add(Group *group)
 
    pl->name_validator = elm_validator_regexp_new(PART_NAME_REGEX, NULL);
 
+   TODO("Fix multi-tab logic");
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ADDED, 
_editor_part_added_cb, pl);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_DELETED, 
_editor_part_deleted_cb, pl);
+   evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_ADDED, 
_editor_part_item_added_cb, pl);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_STATE_ADDED, 
_editor_state_added_cb, pl);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_STATE_DELETED, 
_editor_state_deleted_cb, pl);
 
diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c
index 60301e2..d54dd9d 100644
--- a/src/bin/ui/tabs.c
+++ b/src/bin/ui/tabs.c
@@ -214,6 +214,16 @@ _part_added(void *data __UNUSED__,
 }
 
 static void
+_part_item_added(void *data __UNUSED__,
+                 Evas_Object *obj __UNUSED__,
+                 void *ei __UNUSED__)
+{
+   assert(tabs.current_workspace != NULL);
+
+   workspace_groupview_hard_update(tabs.current_workspace);
+}
+
+static void
 _part_deleted(void *data __UNUSED__,
               Evas_Object *obj __UNUSED__,
               void *ei)
@@ -408,6 +418,7 @@ tabs_add(void)
    evas_object_smart_callback_add(ap.win, SIGNAL_PART_DELETED, _part_deleted, 
NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_PART_RENAMED, _part_renamed, 
NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_PART_UNSELECTED, 
_part_unselected, NULL);
+   evas_object_smart_callback_add(ap.win, SIGNAL_PART_ITEM_ADDED, 
_part_item_added, NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_PROJECT_CHANGED, 
_project_changed, NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_SAVED, _editor_saved, 
NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_PROJECT_OPENED, 
_project_opened, NULL);

-- 


Reply via email to