rotary_selector: set color class parent for all internal objects 10/165310/1
authorYoungbok Shin <youngb.shin@samsung.com>
Thu, 28 Dec 2017 06:19:23 +0000 (15:19 +0900)
committerYoungbok Shin <youngb.shin@samsung.com>
Thu, 28 Dec 2017 06:20:28 +0000 (06:20 +0000)
Change-Id: I6ae6bc9b00a824a0758eeff9e22e9d2d21758f0b

src/wearable/efl_extension_rotary_selector.c

index ceeafe4e5116f5abe8fc62e6d2a64edb9135f126..6d75d4500dac7a60fc9be417a9ead0f3a7166dde 100644 (file)
@@ -82,6 +82,8 @@
                                  if (a) *a = obj->part.state.a; \
                               } while (0)
 
+void _eext_rotary_selector_color_class_parent_set(Evas_Object *obj, Evas_Object *parent);
+
 static double
 _min(const double a, const double b)
 {
@@ -688,11 +690,13 @@ _image_create_icon(void *data, Evas_Object *parent, Evas_Coord *xoff, Evas_Coord
    elm_object_style_set(icon, "rotary_selector_item");
    evas_object_resize(icon, rsd->item_width, rsd->item_height);
    evas_object_show(icon);
+   _eext_rotary_selector_color_class_parent_set(icon, rsd->rotary_selector);
 
    action_bg = elm_layout_add(icon);
    elm_layout_theme_set(action_bg, "rotary_selector", "item", "bg_image");
    evas_object_show(action_bg);
    elm_object_part_content_set(icon, "item,bg_image", action_bg);
+   _eext_rotary_selector_color_class_parent_set(action_bg, rsd->rotary_selector);
 
    start_idx = rsd->current_page * _ROTARY_SELECTOR_PAGE_ITEM_MAX;
    tmp_item->delete_enabled = EINA_FALSE;
@@ -1875,6 +1879,33 @@ static void _back_event_cb(void *data, Evas_Object *obj, void *event_info)
                                        _back_event_cb);
      }
 }
+
+void
+_eext_rotary_selector_color_class_parent_set(Evas_Object *obj, Evas_Object *parent)
+{
+   Evas_Object *edje = NULL, *parent_edje = NULL;
+
+   if (!obj || !parent) return;
+
+   if (eo_isa(obj, ELM_LAYOUT_CLASS))
+     edje =  elm_layout_edje_get(obj);
+   else if (eo_isa(obj, EDJE_OBJECT_CLASS))
+     edje = obj;
+
+   if (eo_isa(parent, ELM_LAYOUT_CLASS))
+     parent_edje =  elm_layout_edje_get(parent);
+   else if (eo_isa(parent, EDJE_OBJECT_CLASS))
+     parent_edje = parent;
+
+   if (!edje || !parent_edje)
+     {
+        ERR("There is a missing edje to have color class relationship... edje[%p], parent_edje[%p]", edje, parent_edje);
+        return;
+     }
+
+   edje_object_color_class_parent_set(edje, parent_edje);
+}
+
 // ----------------------------------------- item API --------------------------------------//
 static void
 _item_coords_update(Eext_Rotary_Selector_Data *rsd, Eext_Rotary_Selector_Item *item)
@@ -2006,6 +2037,7 @@ _layer_items_invalidate(Eext_Rotary_Selector_Data *rsd)
              rsd->prev_page = elm_layout_add(rsd->rotary_selector);
              elm_layout_theme_set(rsd->prev_page, "rotary_selector", "previous_page", "default");
              evas_object_smart_member_add(rsd->prev_page, rsd->rotary_selector);
+             _eext_rotary_selector_color_class_parent_set(rsd->prev_page, rsd->rotary_selector);
           }
         _circle_path_interpolator(rsd, 1, 0, -90, radius, radius, &coord_x, &coord_y, EINA_TRUE);
         evas_object_move(rsd->prev_page, (Evas_Coord)(x + coord_x + rsd->page_item_width * 0.5 + 6),
@@ -2036,6 +2068,7 @@ _layer_items_invalidate(Eext_Rotary_Selector_Data *rsd)
              rsd->next_page = elm_layout_add(rsd->rotary_selector);
              elm_layout_theme_set(rsd->next_page, "rotary_selector", "next_page", "default");
              evas_object_smart_member_add(rsd->next_page, rsd->rotary_selector);
+             _eext_rotary_selector_color_class_parent_set(rsd->next_page, rsd->rotary_selector);
           }
         _circle_path_interpolator(rsd, 1, 0, -90, radius, radius, &coord_x, &coord_y, EINA_TRUE);
         evas_object_move(rsd->next_page, (Evas_Coord)(x + coord_x - rsd->page_item_width * 0.5 - 6),
@@ -2157,12 +2190,14 @@ _item_create(Eext_Rotary_Selector_Data *rsd, Eina_Bool is_add_item)
    evas_object_move(button, -_ROTARY_SELECTOR_SCREEN_WIDTH, -_ROTARY_SELECTOR_SCREEN_HEIGHT);
    evas_object_resize(button, rsd->item_width, rsd->item_height);
    evas_object_smart_member_add(button, rotary_selector);
+   _eext_rotary_selector_color_class_parent_set(button, rotary_selector);
    
    if (!is_add_item)
      {
         Evas_Object *action_bg = elm_layout_add(button);
         elm_layout_theme_set(action_bg, "rotary_selector", "item", "bg_image");
         elm_object_part_content_set(button, "item,bg_image", action_bg);
+        _eext_rotary_selector_color_class_parent_set(action_bg, rotary_selector);
      }
 
    item = (Eext_Rotary_Selector_Item *)calloc(1, sizeof(Eext_Rotary_Selector_Item));
@@ -2405,6 +2440,7 @@ _previous_page_animator_cb(void *data)
                   elm_object_mirrored_automatic_set(rsd->next_page, EINA_FALSE);
                   evas_object_smart_member_add(rsd->next_page, rsd->rotary_selector);
                   evas_object_show(rsd->next_page);
+                  _eext_rotary_selector_color_class_parent_set(rsd->next_page, rsd->rotary_selector);
                }
              evas_object_geometry_get(rsd->rotary_selector, &x, &y, NULL, NULL);
              _circle_path_interpolator(rsd, p, 255.f, 270.f, radius, radius,
@@ -2424,6 +2460,7 @@ _previous_page_animator_cb(void *data)
                   elm_object_mirrored_automatic_set(rsd->prev_page, EINA_FALSE);
                   evas_object_smart_member_add(rsd->prev_page, rsd->rotary_selector);
                   evas_object_show(rsd->prev_page);
+                  _eext_rotary_selector_color_class_parent_set(rsd->prev_page, rsd->rotary_selector);
                }
              evas_object_geometry_get(rsd->rotary_selector, &x, &y, NULL, NULL);
              _circle_path_interpolator(rsd, p, -90.f, -105.f, radius, radius,
@@ -2606,6 +2643,7 @@ _next_page_animator_cb(void *data)
                   elm_object_mirrored_automatic_set(rsd->prev_page, EINA_FALSE);
                   evas_object_smart_member_add(rsd->prev_page, rsd->rotary_selector);
                   evas_object_show(rsd->prev_page);
+                  _eext_rotary_selector_color_class_parent_set(rsd->prev_page, rsd->rotary_selector);
                }
              evas_object_geometry_get(rsd->rotary_selector, &x, &y, NULL, NULL);
              _circle_path_interpolator(rsd, p, 255.f, 270.f, rsd->radius, rsd->radius,
@@ -2625,6 +2663,7 @@ _next_page_animator_cb(void *data)
                   elm_object_mirrored_automatic_set(rsd->next_page, EINA_FALSE);
                   evas_object_smart_member_add(rsd->next_page, rsd->rotary_selector);
                   evas_object_show(rsd->next_page);
+                  _eext_rotary_selector_color_class_parent_set(rsd->next_page, rsd->rotary_selector);
                }
              evas_object_geometry_get(rsd->rotary_selector, &x, &y, NULL, NULL);
              _circle_path_interpolator(rsd, p, 260.f, 245.f, rsd->radius, rsd->radius,
@@ -3003,8 +3042,8 @@ eext_rotary_selector_add(Evas_Object *parent)
      }
 
    elm_layout_theme_set(selector_bg, "rotary_selector", "selector", "selector_bg");
-
    elm_object_part_content_set(rotary_selector, "selector,bg_image", selector_bg);
+   _eext_rotary_selector_color_class_parent_set(selector_bg, rotary_selector);
 
    //default selector content part
    Evas_Object *content = elm_layout_add(rotary_selector);
@@ -3016,6 +3055,7 @@ eext_rotary_selector_add(Evas_Object *parent)
 
    elm_layout_theme_set(content, "rotary_selector", "content", "default");
    elm_object_part_content_set(rotary_selector, "content", content);
+   _eext_rotary_selector_color_class_parent_set(content, rotary_selector);
 
    eext_rotary_object_event_callback_add(rotary_selector, _rotary_selector_rotary_cb, rsd);
    evas_object_event_callback_add(rotary_selector, EVAS_CALLBACK_MOVE, _rotary_selector_move_cb, rsd);