elementary/colorselector - event hook opensource patch

Elm_colorselector: _elm_colorselector_smart_event function added.
  
Thanks & Regards
Shilpa Singh 

Signed-Off-By:ShilpaOnkar Singh <shilpa.singh@samsung.com>




SVN revision: 70925
This commit is contained in:
ChunEon Park 2012-05-11 07:25:07 +00:00
parent a2abcee06d
commit a49270e385
2 changed files with 141 additions and 8 deletions

View File

@ -386,6 +386,20 @@ group { name: "elm/colorselector/item/default";
action: STATE_SET "default" 0.0;
target: "focus_color";
}
program {
name: "item_pressed_anim";
signal: "elm,anim,activate";
source: "elm";
action: STATE_SET "focused" 0.0;
target: "focus_color";
after: "item_unpressed_anim";
}
program {
name: "item_unpressed_anim";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.2;
target: "focus_color";
}
}
}

View File

@ -44,7 +44,7 @@ struct _Elm_Colorselector_Smart_Data
Evas_Object *col_bars_area;
Evas_Object *palette_box;
Eina_List *items;
Eina_List *items, *selected;
Color_Bar_Data *cb_data[4];
Ecore_Timer *longpress_timer;
@ -58,7 +58,8 @@ struct _Elm_Colorselector_Smart_Data
int lr, lg, lb;
double h, s, l;
Elm_Colorselector_Mode mode;
Elm_Colorselector_Mode mode, focused;
int sel_color_type;
Eina_Bool longpressed : 1;
Eina_Bool config_load : 1;
@ -137,6 +138,7 @@ _items_del(Elm_Colorselector_Smart_Data *sd)
}
sd->items = NULL;
sd->selected = NULL;
}
static void
@ -393,6 +395,7 @@ _colorbar_cb(void *data,
Color_Bar_Data *cb_data = data;
double arrow_x = 0, arrow_y;
Evas_Coord x, y, w, h;
ELM_COLORSELECTOR_DATA_GET(cb_data->parent, sd);
evas_object_geometry_get(cb_data->bar, &x, &y, &w, &h);
edje_object_part_drag_value_get
@ -408,6 +411,8 @@ _colorbar_cb(void *data,
evas_object_smart_callback_call(cb_data->parent, SIG_CHANGED, NULL);
evas_event_feed_mouse_cancel(e, 0, NULL);
evas_event_feed_mouse_down(e, 1, EVAS_BUTTON_NONE, 0, NULL);
sd->sel_color_type = cb_data->color_type;
sd->focused = ELM_COLORSELECTOR_COMPONENTS;
}
static void
@ -418,7 +423,7 @@ _button_clicked_cb(void *data,
Eina_Bool is_right = EINA_FALSE;
Color_Bar_Data *cb_data = data;
double x, y, step;
char buf[1024];
ELM_COLORSELECTOR_DATA_GET(cb_data->parent, sd);
if (obj == cb_data->rbt)
{
@ -427,11 +432,6 @@ _button_clicked_cb(void *data,
}
else step = -1.0;
snprintf(buf, sizeof(buf), "elm,state,%s,button,down", is_right ? "right" :
"left");
edje_object_signal_emit
(cb_data->lbt, buf, is_right ? "right_button" : "left_button");
edje_object_part_drag_value_get(cb_data->colorbar, "elm.arrow", &x, &y);
switch (cb_data->color_type)
@ -468,6 +468,8 @@ _button_clicked_cb(void *data,
edje_object_part_drag_value_set(cb_data->colorbar, "elm.arrow", x, y);
_rectangles_redraw(data, x);
evas_object_smart_callback_call(cb_data->parent, SIG_CHANGED, NULL);
sd->sel_color_type = cb_data->color_type;
sd->focused = ELM_COLORSELECTOR_COMPONENTS;
}
static void
@ -879,6 +881,8 @@ _on_color_released(void *data,
void *event_info __UNUSED__)
{
Elm_Color_Item *item = (Elm_Color_Item *)data;
Eina_List *l;
Elm_Color_Item *temp_item;
Evas_Event_Mouse_Down *ev = event_info;
if (!item) return;
@ -899,6 +903,9 @@ _on_color_released(void *data,
(WIDGET(item), item->color->r, item->color->g, item->color->b,
item->color->a);
}
EINA_LIST_FOREACH (sd->items, l, temp_item)
if (item == temp_item) sd->selected = l;
sd->focused = ELM_COLORSELECTOR_PALETTE;
}
static Elm_Color_Item *
@ -1138,6 +1145,9 @@ _elm_colorselector_smart_add(Evas_Object *obj)
elm_layout_content_set(obj, "selector", priv->col_bars_area);
priv->mode = ELM_COLORSELECTOR_BOTH;
priv->focused = ELM_COLORSELECTOR_PALETTE;
priv->sel_color_type = HUE;
priv->selected = priv->items;
priv->er = 255;
priv->eg = 0;
priv->eb = 0;
@ -1150,6 +1160,7 @@ _elm_colorselector_smart_add(Evas_Object *obj)
_color_bars_add(obj);
elm_layout_sizing_eval(obj);
elm_widget_can_focus_set(obj, EINA_TRUE);
}
static void
@ -1169,6 +1180,104 @@ _elm_colorselector_smart_del(Evas_Object *obj)
ELM_WIDGET_CLASS(_elm_colorselector_parent_sc)->base.del(obj);
}
static Eina_Bool
_elm_colorselector_smart_event(Evas_Object *obj,
Evas_Object *src __UNUSED__,
Evas_Callback_Type type,
void *event_info)
{
Eina_List *cl = NULL;
Elm_Color_Item *item = NULL;
char colorbar_s[128];
if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
Evas_Event_Key_Down *ev = event_info;
ELM_COLORSELECTOR_DATA_GET(obj, sd);
if (!sd) return EINA_FALSE;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
if (elm_widget_disabled_get(obj)) return EINA_FALSE;
if (!sd->selected) sd->selected = sd->items;
if ((!strcmp(ev->keyname, "Left")) ||
((!strcmp(ev->keyname, "KP_Left")) && (!ev->string)))
{
if (sd->focused == ELM_COLORSELECTOR_PALETTE && sd->selected)
cl = eina_list_prev(sd->selected);
else if (sd->focused == ELM_COLORSELECTOR_COMPONENTS)
_button_clicked_cb(sd->cb_data[sd->sel_color_type], sd->cb_data[sd->sel_color_type]->lbt, NULL);
else return EINA_FALSE;
}
else if ((!strcmp(ev->keyname, "Right")) ||
((!strcmp(ev->keyname, "KP_Right")) && (!ev->string)))
{
if (sd->focused == ELM_COLORSELECTOR_PALETTE && sd->selected)
cl = eina_list_next(sd->selected);
else if (sd->focused == ELM_COLORSELECTOR_COMPONENTS)
_button_clicked_cb(sd->cb_data[sd->sel_color_type], sd->cb_data[sd->sel_color_type]->rbt, NULL);
else return EINA_FALSE;
}
else if ((!strcmp(ev->keyname, "Up")) ||
((!strcmp(ev->keyname, "KP_Up")) && (!ev->string)))
{
if (sd->focused == ELM_COLORSELECTOR_COMPONENTS)
{
sd->sel_color_type = sd->sel_color_type - 1;
if (sd->sel_color_type < HUE)
{
if (sd->mode == ELM_COLORSELECTOR_BOTH)
{
sd->focused = ELM_COLORSELECTOR_PALETTE;
/*when focus is shifted to palette start from first item*/
sd->selected = sd->items;
cl = sd->selected;
}
else
{
sd->sel_color_type = HUE;
return EINA_FALSE;
}
}
}
else if (sd->focused == ELM_COLORSELECTOR_PALETTE)
return EINA_FALSE;
}
else if ((!strcmp(ev->keyname, "Down")) ||
((!strcmp(ev->keyname, "KP_Down")) && (!ev->string)))
{
if (sd->focused == ELM_COLORSELECTOR_PALETTE)
{
if (sd->mode == ELM_COLORSELECTOR_BOTH)
{
sd->focused = ELM_COLORSELECTOR_COMPONENTS;
/*when focus is shifted to component start from first color type*/
sd->sel_color_type = HUE;
}
else return FALSE;
}
else if (sd->focused == ELM_COLORSELECTOR_COMPONENTS)
{
snprintf(colorbar_s, sizeof(colorbar_s), "elm.colorbar_%d", (sd->sel_color_type + 1));
/*Append color type only if next color bar is available*/
if (edje_object_part_swallow_get(sd->col_bars_area, colorbar_s))
sd->sel_color_type = sd->sel_color_type + 1;
else return FALSE;
}
}
else return EINA_FALSE;
if (cl)
{
item = eina_list_data_get(cl);
elm_object_signal_emit(VIEW(item), "elm,anim,activate", "elm");
evas_object_smart_callback_call(WIDGET(item), SIG_COLOR_ITEM_SELECTED, item);
elm_colorselector_color_set(WIDGET(item), item->color->r, item->color->g, item->color->b, item->color->a);
sd->selected = cl;
}
else if (!cl && sd->focused == ELM_COLORSELECTOR_PALETTE)
return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
static void
_elm_colorselector_smart_set_user(Elm_Layout_Smart_Class *sc)
{
@ -1180,6 +1289,7 @@ _elm_colorselector_smart_set_user(Elm_Layout_Smart_Class *sc)
ELM_WIDGET_CLASS(sc)->focus_direction = NULL;
ELM_WIDGET_CLASS(sc)->theme = _elm_colorselector_smart_theme;
ELM_WIDGET_CLASS(sc)->event = _elm_colorselector_smart_event;
sc->sizing_eval = _elm_colorselector_smart_sizing_eval;
}
@ -1249,17 +1359,23 @@ elm_colorselector_mode_set(Evas_Object *obj,
case ELM_COLORSELECTOR_PALETTE:
elm_layout_content_set(obj, "palette", sd->palette_box);
elm_layout_signal_emit(obj, "elm,state,palette", "elm");
sd->focused = ELM_COLORSELECTOR_PALETTE;
sd->selected = sd->items;
break;
case ELM_COLORSELECTOR_COMPONENTS:
elm_layout_content_set(obj, "selector", sd->col_bars_area);
elm_layout_signal_emit(obj, "elm,state,components", "elm");
sd->focused = ELM_COLORSELECTOR_COMPONENTS;
sd->sel_color_type = HUE;
break;
case ELM_COLORSELECTOR_BOTH:
elm_layout_content_set(obj, "palette", sd->palette_box);
elm_layout_content_set(obj, "selector", sd->col_bars_area);
elm_layout_signal_emit(obj, "elm,state,both", "elm");
sd->focused = ELM_COLORSELECTOR_PALETTE;
sd->selected = sd->items;
break;
default:
@ -1371,8 +1487,11 @@ EAPI void
elm_colorselector_palette_clear(Evas_Object *obj)
{
ELM_COLORSELECTOR_CHECK(obj);
ELM_COLORSELECTOR_DATA_GET(obj, sd);
_colors_remove(obj);
if (sd->mode == ELM_COLORSELECTOR_BOTH)
sd->focused = ELM_COLORSELECTOR_COMPONENTS;
}
EAPI void