rimmed pushed a commit to branch master.

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

commit 82ff669a3c1e27ba36e85bbc2252bfd05a676c51
Author: Vitalii Vorobiov <vi.vorob...@samsung.com>
Date:   Mon Sep 12 18:02:20 2016 +0300

    resource_manager2: add IMAGE and IMAGE TWEEN dependency update
---
 src/bin/editor/editor_macro.h                     | 13 +++++-
 src/bin/editor/editor_states.c                    | 18 ++++++++-
 src/bin/resource_manager/resource_manager_react.c | 48 ++++++++++++++++++++++-
 3 files changed, 73 insertions(+), 6 deletions(-)

diff --git a/src/bin/editor/editor_macro.h b/src/bin/editor/editor_macro.h
index c6cdfed..78ba1f1 100644
--- a/src/bin/editor/editor_macro.h
+++ b/src/bin/editor/editor_macro.h
@@ -159,13 +159,18 @@ editor_state_## FUNC ##_set(Evas_Object *edit_object, 
Change *change, Eina_Bool
 { \
    Diff *diff; \
    Editor_Attribute_Change send; \
-   send.attribute = RM_ATTRIBUTE; \
    assert(edit_object != NULL); \
    assert(part_name != NULL); \
    assert(state_name != NULL); \
+   Eina_Stringshare *old_value = edje_edit_state_## FUNC ##_get(edit_object, 
part_name, state_name, state_val); \
+   send.attribute = RM_ATTRIBUTE; \
+   send.part_name = eina_stringshare_add(part_name); \
+   send.state_name = eina_stringshare_add(state_name); \
+   send.state_value = state_val; \
+   send.old_value = eina_stringshare_add(old_value); \
+   send.value = eina_stringshare_add(new_val); \
    if (change) \
      { \
-        Eina_Stringshare *old_value = edje_edit_state_## FUNC 
##_get(edit_object, part_name, state_name, state_val); \
         diff = mem_calloc(1, sizeof(Diff)); \
         diff->redo.type = FUNCTION_TYPE_STRING_STRING_DOUBLE_STRING; \
         diff->redo.function = editor_state_## FUNC ##_set; \
@@ -192,6 +197,10 @@ editor_state_## FUNC ##_set(Evas_Object *edit_object, 
Change *change, Eina_Bool
       if (!new_val) editor_state_## RESET ##_reset(edit_object, change, apply, 
part_name, state_name, state_val); \
       if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, 
SIGNAL_EDITOR_RM_ATTRIBUTE_CHANGED, &send); \
    } \
+   eina_stringshare_del(send.part_name); \
+   eina_stringshare_del(send.state_name); \
+   eina_stringshare_del(send.old_value); \
+   eina_stringshare_del(send.value); \
    return true; \
 }
 
diff --git a/src/bin/editor/editor_states.c b/src/bin/editor/editor_states.c
index b5bb54c..0927f58 100644
--- a/src/bin/editor/editor_states.c
+++ b/src/bin/editor/editor_states.c
@@ -554,10 +554,14 @@ editor_state_tween_add(Evas_Object *edit_object, Change 
*change, Eina_Bool merge
 {
    Diff *diff;
    Editor_Attribute_Change send;
-   send.attribute = RM_ATTRIBUTE_STATE_IMAGE_TWEEN;
    assert(edit_object != NULL);
    assert(part_name != NULL);
    assert(state_name != NULL);
+   send.attribute = RM_ATTRIBUTE_STATE_IMAGE_TWEEN;
+   send.part_name = eina_stringshare_add(part_name);
+   send.state_name = eina_stringshare_add(state_name);
+   send.state_value = state_val;
+   send.value = eina_stringshare_add(name); /* field for add tween */
    if (change)
      {
         diff = mem_calloc(1, sizeof(Diff));
@@ -585,6 +589,9 @@ editor_state_tween_add(Evas_Object *edit_object, Change 
*change, Eina_Bool merge
         if (!_editor_signals_blocked)
           evas_object_smart_callback_call(ap.win, 
SIGNAL_EDITOR_RM_ATTRIBUTE_CHANGED, &send);
      }
+   eina_stringshare_del(send.part_name);
+   eina_stringshare_del(send.state_name);
+   eina_stringshare_del(send.value);
    return true;
 }
 Eina_Bool
@@ -594,10 +601,14 @@ editor_state_tween_del(Evas_Object *edit_object, Change 
*change, Eina_Bool merge
 {
    Diff *diff;
    Editor_Attribute_Change send;
-   send.attribute = RM_ATTRIBUTE_STATE_IMAGE_TWEEN;
    assert(edit_object != NULL);
    assert(part_name != NULL);
    assert(state_name != NULL);
+   send.attribute = RM_ATTRIBUTE_STATE_IMAGE_TWEEN;
+   send.part_name = eina_stringshare_add(part_name);
+   send.state_name = eina_stringshare_add(state_name);
+   send.state_value = state_val;
+   send.old_value = eina_stringshare_add(name); /* field for del tween */
    if (change)
      {
         diff = mem_calloc(1, sizeof(Diff));
@@ -625,6 +636,9 @@ editor_state_tween_del(Evas_Object *edit_object, Change 
*change, Eina_Bool merge
         if (!_editor_signals_blocked)
           evas_object_smart_callback_call(ap.win, 
SIGNAL_EDITOR_RM_ATTRIBUTE_CHANGED, &send);
      }
+   eina_stringshare_del(send.part_name);
+   eina_stringshare_del(send.state_name);
+   eina_stringshare_del(send.old_value);
    return true;
 }
 
diff --git a/src/bin/resource_manager/resource_manager_react.c 
b/src/bin/resource_manager/resource_manager_react.c
index e0b6fa4..8117b0d 100644
--- a/src/bin/resource_manager/resource_manager_react.c
+++ b/src/bin/resource_manager/resource_manager_react.c
@@ -139,8 +139,6 @@ _property_attribute_changed(void *data,
       case RM_ATTRIBUTE_STATE_TEXT_MIN_Y:
       case RM_ATTRIBUTE_STATE_FIXED_H:
       case RM_ATTRIBUTE_STATE_FIXED_W:
-      case RM_ATTRIBUTE_STATE_IMAGE:
-      case RM_ATTRIBUTE_STATE_IMAGE_TWEEN:
       case RM_ATTRIBUTE_STATE_REL1_TO_X:
       case RM_ATTRIBUTE_STATE_REL1_TO_Y:
       case RM_ATTRIBUTE_STATE_REL2_TO_X:
@@ -215,6 +213,52 @@ _property_attribute_changed(void *data,
       case RM_ATTRIBUTE_PART_ITEM_PADDING_TOP:
       case RM_ATTRIBUTE_PART_ITEM_PADDING_BOTTOM:
          break;
+      case RM_ATTRIBUTE_STATE_IMAGE:
+         part = resource_manager_find(group->parts, change->part_name);
+         state = resource_manager_v_find(((Part2 *)part)->states, 
change->state_name, change->state_value);
+
+         if (change->old_value && strcmp(change->old_value, 
EFLETE_DUMMY_IMAGE_NAME))
+           {
+              old_source = resource_manager_find(pro->RM.images, 
change->old_value);
+              /* in case if not implemented image set was set up as tween, need
+                 to remove it and never come back (until image sets will be
+                 implemented of course) */
+              if (!old_source)
+                old_source = resource_manager_find(pro->RM.image_sets, 
change->old_value);
+              _resource_usage_resource_del(state, old_source);
+           }
+         TODO("Support some image sets here");
+         if (change->value && strcmp(change->value, EFLETE_DUMMY_IMAGE_NAME))
+           {
+              source = resource_manager_find(pro->RM.images, change->value);
+              _resource_usage_resource_add(state, source);
+           }
+         eina_stringshare_del(((State2 *)state)->normal);
+         ((State2 *)state)->normal = eina_stringshare_add(change->value);
+         break;
+      case RM_ATTRIBUTE_STATE_IMAGE_TWEEN:
+         part = resource_manager_find(group->parts, change->part_name);
+         state = resource_manager_v_find(((Part2 *)part)->states, 
change->state_name, change->state_value);
+
+         if (change->old_value)
+           {
+              old_source = resource_manager_find(pro->RM.images, 
change->old_value);
+              /* in case if not implemented image set was set up as tween, need
+                 to remove it and never come back (until image sets will be
+                 implemented of course) */
+              if (!old_source)
+                old_source = resource_manager_find(pro->RM.image_sets, 
change->old_value);
+              _resource_usage_resource_del(state, old_source);
+              ((State2 *)state)->tweens = eina_list_remove(((State2 
*)state)->tweens, old_source);
+           }
+         TODO("Support some image sets here");
+         if (change->value)
+           {
+              source = resource_manager_find(pro->RM.images, change->value);
+              _resource_usage_resource_add(state, source);
+              ((State2 *)state)->tweens = eina_list_append(((State2 
*)state)->tweens, source);
+           }
+         break;
       case RM_ATTRIBUTE_PROGRAM_SAMPLE_NAME:
          program = resource_manager_find(group->programs, 
change->program_name);
 

-- 


Reply via email to