rimmed pushed a commit to branch master.

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

commit c75aba2fb7ff2d578714131cfc8a6faf7a1eabe2
Author: Vitalii Vorobiov <vi.vorob...@samsung.com>
Date:   Fri Jan 15 15:58:15 2016 +0000

    property_group: use editor for program target add and remove (with history)
---
 src/bin/ui/property_group.c | 72 ++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 68 insertions(+), 4 deletions(-)

diff --git a/src/bin/ui/property_group.c b/src/bin/ui/property_group.c
index 32f1d70..3ffed41 100644
--- a/src/bin/ui/property_group.c
+++ b/src/bin/ui/property_group.c
@@ -336,6 +336,9 @@ prop_program_state_update(Group_Prop_Data *pd);
 static void
 prop_program_state2_update(Group_Prop_Data *pd);
 
+static void
+prop_program_targets_update(Group_Prop_Data *pd);
+
 static Eina_Bool
 ui_property_state_obj_area_set(Evas_Object *property);
 
@@ -961,6 +964,8 @@ _on_editor_attribute_changed(void *data,
          break;
       case ATTRIBUTE_PROGRAM_VALUE2:
          COMMON_1SPINNER_UPDATE(program, value2, program, double, 1, 
PROGRAM_ARGS)
+      case ATTRIBUTE_PROGRAM_TARGET:
+         prop_program_targets_update(pd);
          break;
       case ATTRIBUTE_PROGRAM_TRANSITION_TYPE:
       case ATTRIBUTE_PROGRAM_TRANSITION_FROM_CURRENT:
@@ -981,7 +986,6 @@ _on_editor_attribute_changed(void *data,
       case ATTRIBUTE_PROGRAM_SAMPLE_NAME:
       case ATTRIBUTE_PROGRAM_TONE_NAME:
       case ATTRIBUTE_PROGRAM_NAME:
-      case ATTRIBUTE_PROGRAM_TARGET:
       case ATTRIBUTE_PROGRAM_AFTER:
          TODO("implement");
          break;
@@ -1751,13 +1755,15 @@ prop_program_action_add(Evas_Object *parent, 
Group_Prop_Data *pd)
 static void
 _add_target(void *data, Evas_Object *obj, void *event_info);
 
+#define COMBOBOX_TARGET "Combobox_Target"
+
 static void
 _del_target(void *data,
             Evas_Object *obj __UNUSED__,
             void *event_info __UNUSED__)
 {
    Evas_Object *item = (Evas_Object *)data;
-   Evas_Object *ic, *button, *new_item;
+   Evas_Object *ic, *button, *new_item, *target_combo;
    Group_Prop_Data *pd = evas_object_data_get(item, GROUP_PROP_DATA);
    Eina_List *items = elm_box_children_get(pd->attributes.program.target_box);
    /* check the first item, if deleted object the first in the list, we need to
@@ -1775,6 +1781,23 @@ _del_target(void *data,
      }
 
    elm_box_unpack(pd->attributes.program.target_box, item);
+   target_combo = elm_layout_content_get(item, NULL);
+   Eina_Stringshare *value = evas_object_data_get(target_combo, 
COMBOBOX_TARGET);
+   if (value)
+     {
+        Eina_Stringshare *msg = eina_stringshare_printf(_("removed target %s 
from program %s"),
+                                                        value,
+                                                        
pd->attributes.program.program);
+        Change *change = change_add(msg);
+        eina_stringshare_del(msg);
+        editor_program_target_del(pd->group->edit_object, change, false,
+                                  pd->attributes.program.program,
+                                  value);
+        history_change_add(pd->group->history, change);
+
+        evas_object_data_del(target_combo, COMBOBOX_TARGET);
+        eina_stringshare_del(value);
+     }
    evas_object_del(item);
    items = elm_box_children_get(pd->attributes.program.target_box);
    if (eina_list_count(items) == 1)
@@ -1784,6 +1807,41 @@ _del_target(void *data,
      }
 }
 static void
+_on_target_change(void *data,
+                  Evas_Object *obj,
+                  void *ei)
+{
+   Group_Prop_Data *pd = (Group_Prop_Data *)data;
+   Ewe_Combobox_Item *item = ei;
+
+   Eina_Stringshare *old_val = evas_object_data_get(obj, COMBOBOX_TARGET);
+   if ((old_val) && (item->title == old_val))
+     {
+       eina_stringshare_del(old_val);
+       return;
+     }
+
+   Eina_Stringshare *msg = eina_stringshare_printf(_("changing target from %s 
to %s in program %s"),
+                                                   old_val, item->title,
+                                                   
pd->attributes.program.program);
+   Change *change = change_add(msg);
+   if (old_val)
+     {
+        eina_stringshare_del(msg);
+        editor_program_target_del(pd->group->edit_object, change, false,
+                                  pd->attributes.program.program,
+                                  old_val);
+        evas_object_data_del(obj, COMBOBOX_TARGET);
+        eina_stringshare_del(old_val);
+     }
+
+   editor_program_target_add(pd->group->edit_object, change, false,
+                             pd->attributes.program.program,
+                             item->title);
+   evas_object_data_set(obj, COMBOBOX_TARGET, 
eina_stringshare_add(item->title));
+   history_change_add(pd->group->history, change);
+}
+static void
 _add_target(void *data,
             Evas_Object *obj __UNUSED__,
             void *event_info __UNUSED__)
@@ -1828,6 +1886,8 @@ _add_target(void *data,
    evas_object_smart_callback_add(button, "clicked", _del_target, item);
    elm_layout_content_set(item, "swallow.button_del", button);
 
+   evas_object_smart_callback_add(target_combo, "selected",
+                                  _on_target_change, pd);
    elm_box_pack_end(pd->attributes.program.target_box, item);
 }
 
@@ -1856,10 +1916,12 @@ prop_program_targets_update(Group_Prop_Data *pd)
         target_combo = elm_layout_content_get(item, NULL);
         target = eina_list_data_get(targets);
         ewe_combobox_text_set(target_combo, target);
+        evas_object_data_set(target_combo, COMBOBOX_TARGET, 
eina_stringshare_add(target));
         targets = eina_list_next(targets);
      }
 }
 
+
 static Evas_Object *
 prop_program_target_add(Evas_Object *parent, Group_Prop_Data *pd)
 {
@@ -1901,12 +1963,14 @@ prop_program_target_add(Evas_Object *parent, 
Group_Prop_Data *pd)
    evas_object_smart_callback_add(button, "clicked", _del_target, item);
    elm_object_disabled_set(button, true);
 
-//   evas_object_smart_callback_add(item, "selected",
-//                                  _on_##MEMBER##_##VALUE1##_change, pd);
+   evas_object_smart_callback_add(target_combo, "selected",
+                                  _on_target_change, pd);
 
    return item;
 }
 
+#undef COMBOBOX_TARGET
+
 static void
 _ui_property_program_set(Evas_Object *property, const char *program)
 {

-- 


Reply via email to