gengrid: Support different color with bezel 02/230302/2
authorHyukSoon Choi <hs619.choi@samsung.com>
Thu, 9 Apr 2020 07:50:08 +0000 (16:50 +0900)
committerHyukSoon Choi <hs619.choi@samsung.com>
Thu, 9 Apr 2020 07:56:23 +0000 (16:56 +0900)
Change-Id: I7ff46ded4d28b218e1d89bd936cb9866390240c7
Signed-off-by: HyukSoon Choi <hs619.choi@samsung.com>
inc/wearable/circle/efl_extension_circle_private.h
src/wearable/circle/efl_extension_circle_object_gengrid.c

index 9de0f57f6a28850acf4d8cd9007f9ff33ac6b26b..ee7a2705e689a977f1ab949c1add67038ec80941 100644 (file)
@@ -322,6 +322,11 @@ struct _Eext_Circle_Object_Gengrid_Data {
    Eext_Circle_Color bg_color;
    Eext_Circle_Color disabled_color;
    Eext_Circle_Color disabled_bg_color;
+   //ONEUI1.5(20200409): Support different color with bezel
+   Eext_Circle_Color bezel_color;
+   Eina_Stringshare *bezel_scrollbar_color_class;
+   Eina_Bool bezel_on : 1;
+   //
 
 
    int              current_phase;
index 4c4cb7a47f91f32a2455d55287400e32cc8b402f..92fec703444e2bd3d53313b5525eea7779e5fe18 100644 (file)
@@ -23,7 +23,6 @@
 #define VERTICAL_BAR_ANGLE_RANGE 60.0
 #define VERTICAL_BAR_ANGLE_MAX_SIZE 60.0
 #define VERTICAL_BAR_ANGLE_MIN_SIZE 6.0
-#define VERTICAL_BAR_TRANSIT_TIME 0.2
 #define VERTICAL_BAR_HIDE_WAITTING_TIME 0.2
 #define VERTICAL_BAR_HIDE_WAITTING_TIME_ON_INITIALIZING 1.0
 #define VERTICAL_BAR_WIDTH_SIZE 10
 #define HORIZONTAL_BAR_ANGLE_RANGE 60.0
 #define HORIZONTAL_BAR_ANGLE_MAX_SIZE 60.0
 #define HORIZONTAL_BAR_ANGLE_MIN_SIZE 6.0
-#define HORIZONTAL_BAR_TRANSIT_TIME 0.2
 #define HORIZONTAL_BAR_HIDE_WAITTING_TIME 0.2
 #define HORIZONTAL_BAR_HIDE_WAITTING_TIME_ON_INITIALIZING 1.0
 #define HORIZONTAL_BAR_WIDTH_SIZE 10
 #define HORIZONTAL_BAR_RADIUS_SIZE 174 // (180 - 6)
 
+//ONEUI1.5(20200409): Support different color with bezel
+#define SCROLL_BAR_TRANSIT_TIME 0.2
+//
+
 #define DETENT_SCROLL_DISTANCE_RATE 0.4
 #define ROTARY_EVENT_TIME_STAMP_THRESHOLD 500
 
@@ -88,6 +90,9 @@ static const char SIG_BRING_IN_ITEM_ADJUSTED[] = "bring_in,item,adjusted";
 
 #define GENGRID_ITEM_NAME "default"
 #define GENGRID_BG_ITEM_NAME "scroll,bg"
+//ONEUI1.5(20200409): Support different color with bezel
+#define STR_DUP(x) x ? (char *)eina_stringshare_add(x) : NULL
+//
 
 static void
 _eext_circle_object_gengrid_region_show(Eext_Circle_Object *circle_obj,
@@ -267,6 +272,9 @@ _rotary_changed_cb(void *data,
 
         return EINA_TRUE;
      }
+   //ONEUI1.5(20200409): Support different color with bezel
+   widget_data->bezel_on = EINA_TRUE;
+   //
 
    if (obj == circle_obj->main_obj)
      {
@@ -299,6 +307,7 @@ static void
 _eext_circle_object_gengrid_bg_color_set(Eext_Circle_Object *circle_obj)
 {
    EEXT_CIRCLE_OBJECT_GENGRID_DATA_GET(circle_obj, widget_data) return;
+   int a;
 
    edje_object_color_class_get(elm_layout_edje_get(circle_obj->widget_object),
                                widget_data->scrollbar_bg_color_class,
@@ -307,17 +316,33 @@ _eext_circle_object_gengrid_bg_color_set(Eext_Circle_Object *circle_obj)
                                &widget_data->bg_color.b,
                                &widget_data->bg_color.a,
                                NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-   _eext_circle_object_item_color_set(widget_data->bg_item,
-                                      widget_data->bg_color.r,
-                                      widget_data->bg_color.g,
-                                      widget_data->bg_color.b,
-                                      widget_data->bg_color.a);
+
+   //ONEUI1.5(20200409): Fix VI effect logic about hide
+   _eext_circle_object_item_color_get(widget_data->bg_item, NULL, NULL, NULL, &a);
+   if (!a)
+     {
+        _eext_circle_object_item_color_set(widget_data->bg_item,
+                                           widget_data->bg_color.r,
+                                           widget_data->bg_color.g,
+                                           widget_data->bg_color.b,
+                                           0);
+     }
+   //
+   else
+     {
+        _eext_circle_object_item_color_set(widget_data->bg_item,
+                                           widget_data->bg_color.r,
+                                           widget_data->bg_color.g,
+                                           widget_data->bg_color.b,
+                                           widget_data->bg_color.a);
+     }
 }
 
 static void
 _eext_circle_object_gengrid_line_color_set(Eext_Circle_Object *circle_obj)
 {
    EEXT_CIRCLE_OBJECT_GENGRID_DATA_GET(circle_obj, widget_data) return;
+   int a;
 
    edje_object_color_class_get(elm_layout_edje_get(circle_obj->widget_object),
                                widget_data->scrollbar_color_class,
@@ -326,11 +351,26 @@ _eext_circle_object_gengrid_line_color_set(Eext_Circle_Object *circle_obj)
                                &widget_data->color.b,
                                &widget_data->color.a,
                                NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-   _eext_circle_object_item_color_set(widget_data->item,
-                                      widget_data->color.r,
-                                      widget_data->color.g,
-                                      widget_data->color.b,
-                                      widget_data->color.a);
+
+   //ONEUI1.5(20200409): Fix VI effect logic about hide
+   _eext_circle_object_item_color_get(widget_data->item, NULL, NULL, NULL, &a);
+   if (!a)
+     {
+        _eext_circle_object_item_color_set(widget_data->item,
+                                           widget_data->color.r,
+                                           widget_data->color.g,
+                                           widget_data->color.b,
+                                           0);
+     }
+   //
+   else
+     {
+        _eext_circle_object_item_color_set(widget_data->item,
+                                           widget_data->color.r,
+                                           widget_data->color.g,
+                                           widget_data->color.b,
+                                           widget_data->color.a);
+     }
 }
 
 static void
@@ -342,9 +382,21 @@ _eext_circle_object_gengrid_change_color_signal_cb(void *data,
    Eext_Circle_Object *circle_obj = data;
    EEXT_CIRCLE_OBJECT_GENGRID_DATA_GET(circle_obj, widget_data) return;
 
-   if(!strcmp(source, widget_data->scrollbar_bg_color_class))
+   //ONEUI1.5(20200409): Support different color with bezel
+   if (widget_data->bezel_scrollbar_color_class && !strcmp(source, widget_data->bezel_scrollbar_color_class))
+     {
+        edje_object_color_class_get(elm_layout_edje_get(circle_obj->widget_object),
+                                    widget_data->bezel_scrollbar_color_class,
+                                    &widget_data->bezel_color.r,
+                                    &widget_data->bezel_color.g,
+                                    &widget_data->bezel_color.b,
+                                    &widget_data->bezel_color.a,
+                                    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+     }
+   //
+   else if (widget_data->scrollbar_bg_color_class && !strcmp(source, widget_data->scrollbar_bg_color_class))
      _eext_circle_object_gengrid_bg_color_set(circle_obj);
-   else if (!strcmp(source, widget_data->scrollbar_color_class))
+   else if (widget_data->scrollbar_color_class && !strcmp(source, widget_data->scrollbar_color_class))
      _eext_circle_object_gengrid_line_color_set(circle_obj);
 }
 
@@ -456,21 +508,38 @@ _eext_circle_object_gengrid_scrollbar_policy_hide_cb(void *data)
 
    if (!widget_data->scrollbar_initializing)
      {
-        EINA_LIST_FOREACH(circle_obj->items, l, item)
+        //ONEUI1.5(20200409): Fix VI effect logic about hide
+        if ((!horizontal && widget_data->bar_size_y > 0.0) || (horizontal && widget_data->bar_size_x > 0.0))
           {
-             if (!horizontal && widget_data->bar_size_y > 0.0)
-               _eext_circle_object_item_color_transit_set(item,
-                                                          VERTICAL_BAR_TRANSIT_TIME,
-                                                          0, 0, 0, 0,
-                                                          EINA_TRUE,
-                                                          0.25, 0.46, 0.45, 1.0);
-             else if (horizontal && widget_data->bar_size_x > 0.0)
-               _eext_circle_object_item_color_transit_set(item,
-                                                          HORIZONTAL_BAR_TRANSIT_TIME,
-                                                          0, 0, 0, 0,
-                                                          EINA_TRUE,
-                                                          0.25, 0.46, 0.45, 1.0);
+             if (widget_data->bezel_on)
+               {
+                  _eext_circle_object_item_color_transit_set(widget_data->item, SCROLL_BAR_TRANSIT_TIME,
+                                                             widget_data->bezel_color.r,
+                                                             widget_data->bezel_color.g,
+                                                             widget_data->bezel_color.b,
+                                                             0,
+                                                             EINA_TRUE,
+                                                             0.0, 0.0, 1.0, 1.0);
+               }
+             else
+               {
+                  _eext_circle_object_item_color_transit_set(widget_data->item, SCROLL_BAR_TRANSIT_TIME,
+                                                             widget_data->color.r,
+                                                             widget_data->color.g,
+                                                             widget_data->color.b,
+                                                             0,
+                                                             EINA_TRUE,
+                                                             0.0, 0.0, 1.0, 1.0);
+               }
+             _eext_circle_object_item_color_transit_set(widget_data->bg_item, SCROLL_BAR_TRANSIT_TIME,
+                                                        widget_data->bg_color.r,
+                                                        widget_data->bg_color.g,
+                                                        widget_data->bg_color.b,
+                                                        0,
+                                                        EINA_TRUE,
+                                                        0.0, 0.0, 1.0, 1.0);
           }
+        //
      }
 
    if (widget_data->bar_hide_timer)
@@ -492,11 +561,28 @@ _eext_circle_object_gengrid_scrollbar_showing(Eext_Circle_Object *circle_obj,
    if ((horizontal && (widget_data->bar_size_x <= 0)) ||
        (!horizontal && (widget_data->bar_size_y <= 0))) return;
 
-   _eext_circle_object_item_color_set(widget_data->item,
-                                      widget_data->color.r,
-                                      widget_data->color.g,
-                                      widget_data->color.b,
-                                      widget_data->color.a);
+   //ONEUI1.5(20200409): Support different color with bezel
+   if (widget_data->bezel_on)
+     {
+        _eext_circle_object_item_color_transit_set(widget_data->item, SCROLL_BAR_TRANSIT_TIME,
+                                                   widget_data->bezel_color.r,
+                                                   widget_data->bezel_color.g,
+                                                   widget_data->bezel_color.b,
+                                                   widget_data->bezel_color.a,
+                                                   EINA_TRUE,
+                                                   0.0, 0.0, 1.0, 1.0);
+     }
+   else
+     {
+        _eext_circle_object_item_color_transit_set(widget_data->item, SCROLL_BAR_TRANSIT_TIME,
+                                                   widget_data->color.r,
+                                                   widget_data->color.g,
+                                                   widget_data->color.b,
+                                                   widget_data->color.a,
+                                                   EINA_TRUE,
+                                                   0.0, 0.0, 1.0, 1.0);
+     }
+   //
    _eext_circle_object_item_color_set(widget_data->bg_item,
                                       widget_data->bg_color.r,
                                       widget_data->bg_color.g,
@@ -727,7 +813,7 @@ _eext_circle_object_gengrid_item_deleted_cb(void *data,
 
    Elm_Object_Item* delted_item = (Elm_Object_Item*)event_info;
 
-   if(widget_data->current_item == delted_item)
+   if (widget_data->current_item == delted_item)
      {
         widget_data->current_item = NULL;
      }
@@ -744,6 +830,20 @@ _eext_circle_object_gengrid_bring_in_item_adjusted_cb(void *data,
    widget_data->current_item = (Elm_Object_Item*)event_info;
 }
 
+//ONEUI1.5(20200409): Support different color with bezel
+static void
+_eext_circle_object_gengrid_drag_cb(void *data,
+                                            Evas *evas,
+                                            Evas_Object *widget_obj,
+                                            void *event_info)
+{
+   Eext_Circle_Object *circle_obj = data;
+   EEXT_CIRCLE_OBJECT_GENGRID_DATA_GET(circle_obj, widget_data) return;
+
+   widget_data->bezel_on = EINA_FALSE;
+}
+//
+
 static void
 _eext_circle_object_gengrid_del_cb(Eext_Circle_Object *circle_obj)
 {
@@ -759,9 +859,22 @@ _eext_circle_object_gengrid_del_cb(Eext_Circle_Object *circle_obj)
    evas_object_smart_callback_del_full(circle_obj->widget_object, SIGNAL_LOADED, _eext_circle_object_gengrid_loaded_cb, circle_obj);
    evas_object_smart_callback_del_full(circle_obj->widget_object, SIGNAL_ITEM_DELETED, _eext_circle_object_gengrid_item_deleted_cb, circle_obj);
    evas_object_smart_callback_del_full(circle_obj->widget_object, SIG_BRING_IN_ITEM_ADJUSTED, _eext_circle_object_gengrid_bring_in_item_adjusted_cb, circle_obj);
+   //ONEUI1.5(20200409): Support different color with bezel
+   evas_object_event_callback_del(circle_obj->widget_object, EVAS_CALLBACK_MOUSE_MOVE, _eext_circle_object_gengrid_drag_cb);
+   //
    edje_object_signal_callback_del(elm_layout_edje_get(circle_obj->widget_object), "color_class,set", widget_data->scrollbar_color_class, _eext_circle_object_gengrid_change_color_signal_cb);
    edje_object_signal_callback_del(elm_layout_edje_get(circle_obj->widget_object), "color_class,set", widget_data->scrollbar_bg_color_class, _eext_circle_object_gengrid_change_color_signal_cb);
 
+   //ONEUI1.5(20200409): Support different color with bezel
+   if (widget_data->scrollbar_color_class) eina_stringshare_del(widget_data->scrollbar_color_class);
+   if (widget_data->scrollbar_bg_color_class) eina_stringshare_del(widget_data->scrollbar_bg_color_class);
+
+   edje_object_signal_callback_del(elm_layout_edje_get(circle_obj->widget_object), "color_class,set",
+                                                       widget_data->bezel_scrollbar_color_class,
+                                                       _eext_circle_object_gengrid_change_color_signal_cb);
+   if (widget_data->bezel_scrollbar_color_class) eina_stringshare_del(widget_data->bezel_scrollbar_color_class);
+   //
+
    if (widget_data->bar_hide_timer)
      {
         ecore_timer_del(widget_data->bar_hide_timer);
@@ -779,7 +892,6 @@ _eext_circle_object_gengrid_del_cb(Eext_Circle_Object *circle_obj)
         widget_data->change_flag_timer = NULL;
      }
 
-
    EINA_LIST_FREE(widget_data->rotary_times, rotary_time)
      free(rotary_time);
 
@@ -824,6 +936,23 @@ _update_color_info(Eext_Circle_Object *obj)
    widget_data->bg_color.g = g;
    widget_data->bg_color.b = b;
    widget_data->bg_color.a = a;
+
+   //ONEUI1.5(20200409): Support different color with bezel
+   if (!edje_object_color_class_get(elm_layout_edje_get(obj->widget_object),
+                                    widget_data->bezel_scrollbar_color_class,
+                                    &r, &g, &b, &a,
+                                    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL))
+     {
+        r = SCROLL_BAR_COLOR_R;
+        g = SCROLL_BAR_COLOR_G;
+        b = SCROLL_BAR_COLOR_B;
+        a = SCROLL_BAR_COLOR_A;
+     }
+   widget_data->bezel_color.r = r;
+   widget_data->bezel_color.g = g;
+   widget_data->bezel_color.b = b;
+   widget_data->bezel_color.a = a;
+   //
 }
 
 static void
@@ -846,15 +975,26 @@ _eext_circle_object_gengrid_init(Eext_Circle_Object *circle_obj,
 
    widget_data->policy_v = ELM_SCROLLER_POLICY_AUTO;
    widget_data->scrollbar_initializing = EINA_FALSE;
-   widget_data->scrollbar_color_class = edje_object_data_get(elm_layout_edje_get(gengrid), "bar_color_class");
-   widget_data->scrollbar_bg_color_class = edje_object_data_get(elm_layout_edje_get(gengrid), "bar_bg_color_class");
-
+   //ONEUI1.5(20200409): Support different color with bezel
+   widget_data->bezel_scrollbar_color_class = STR_DUP(edje_object_data_get(elm_layout_edje_get(gengrid), "bezel_bar_color_class"));
+   widget_data->scrollbar_color_class = STR_DUP(edje_object_data_get(elm_layout_edje_get(gengrid), "bar_color_class"));
+   widget_data->scrollbar_bg_color_class = STR_DUP(edje_object_data_get(elm_layout_edje_get(gengrid), "bar_bg_color_class"));
+
+   evas_object_event_callback_priority_add(gengrid, EVAS_CALLBACK_MOUSE_MOVE, EVAS_CALLBACK_PRIORITY_BEFORE,
+                                           _eext_circle_object_gengrid_drag_cb, circle_obj);
+   //
    circle_obj->widget_data = (void *)widget_data;
    _update_color_info(circle_obj);
 
    widget_data->bg_item = _eext_circle_object_item_new();
    _eext_circle_object_item_name_set(widget_data->bg_item, GENGRID_BG_ITEM_NAME);
-   _eext_circle_object_item_color_set(widget_data->bg_item, 0, 0, 0, 0);
+   //ONEUI1.5(20200409): Support different color with bezel
+   _eext_circle_object_item_color_set(widget_data->bg_item,
+                               widget_data->bg_color.r,
+                               widget_data->bg_color.g,
+                               widget_data->bg_color.b,
+                               0);
+   //
    if (elm_gengrid_horizontal_get(gengrid))
      {
         _eext_circle_object_item_angle_set(widget_data->bg_item, HORIZONTAL_BAR_ANGLE_MAX_SIZE);
@@ -873,7 +1013,13 @@ _eext_circle_object_gengrid_init(Eext_Circle_Object *circle_obj,
 
    widget_data->item = _eext_circle_object_item_new();
    _eext_circle_object_item_name_set(widget_data->item, GENGRID_ITEM_NAME);
-   _eext_circle_object_item_color_set(widget_data->item, 0, 0, 0, 0);
+   //ONEUI1.5(20200409): Support different color with bezel
+   _eext_circle_object_item_color_set(widget_data->item,
+                               widget_data->color.r,
+                               widget_data->color.g,
+                               widget_data->color.b,
+                               0);
+   //
    if (elm_gengrid_horizontal_get(gengrid))
      {
         _eext_circle_object_item_angle_set(widget_data->item, HORIZONTAL_BAR_ANGLE_MAX_SIZE);
@@ -903,6 +1049,12 @@ _eext_circle_object_gengrid_init(Eext_Circle_Object *circle_obj,
    evas_object_smart_callback_add(circle_obj->widget_object, SIG_BRING_IN_ITEM_ADJUSTED, _eext_circle_object_gengrid_bring_in_item_adjusted_cb, circle_obj);
    edje_object_signal_callback_add(elm_layout_edje_get(circle_obj->widget_object), "color_class,set", widget_data->scrollbar_color_class, _eext_circle_object_gengrid_change_color_signal_cb, circle_obj);
    edje_object_signal_callback_add(elm_layout_edje_get(circle_obj->widget_object), "color_class,set", widget_data->scrollbar_bg_color_class, _eext_circle_object_gengrid_change_color_signal_cb, circle_obj);
+   //ONEUI1.5(20200409): Support different color with bezel
+   edje_object_signal_callback_add(elm_layout_edje_get(circle_obj->widget_object), "color_class,set",
+                                                       widget_data->bezel_scrollbar_color_class,
+                                                       _eext_circle_object_gengrid_change_color_signal_cb,
+                                                       circle_obj);
+   //
 
    eext_rotary_object_event_callback_add(circle_obj->widget_object, _rotary_changed_cb, circle_obj);
 }