I think that it should be improved little bit more.
For example, what do you think about below scenarios?
1) Calls elm_colorselector_palette_item_selected_set(unselected_item,
EINA_FALSE);
Shouled we send "elm,state,unselected" signal? with clearing
sd->selected?
2) When elm_colorselector_palette_clear is called, should we send signals
for selected item?
Best Regards,
Ryuan Choi
2014-02-08 13:37 GMT+09:00 Shilpa Singh <[email protected]>:
> raster pushed a commit to branch master.
>
>
> http://git.enlightenment.org/core/elementary.git/commit/?id=68f2f6e7f2a8fc432d2b1e455839022f20e71e34
>
> commit 68f2f6e7f2a8fc432d2b1e455839022f20e71e34
> Author: Shilpa Singh <[email protected]>
> Date: Sat Feb 8 13:33:58 2014 +0900
>
> Colorselector: Item Selection/Unselection logic changes and
> corresponding API additions.
>
> SUMMARY
> Item should remain selected once pressed.
> When one item is selected other items should be unselected.
> No special behavior on long press, item gets selected on mouse up.
> APIs added are to get current selected item and to programmatically
> control the selection/unselection of an item.
>
> This is patch D515 (had to do by hand).
> ---
> src/bin/test_colorselector.c | 5 ++-
> src/lib/elm_colorselector.c | 87
> ++++++++++++++++++++++++++++++++------
> src/lib/elm_colorselector_common.h | 21 +++++++++
> src/lib/elm_colorselector_eo.h | 13 ++++++
> src/lib/elm_colorselector_legacy.h | 11 +++++
> src/lib/elm_widget_colorselector.h | 1 -
> 6 files changed, 124 insertions(+), 14 deletions(-)
>
> diff --git a/src/bin/test_colorselector.c b/src/bin/test_colorselector.c
> index 411d7a0..5947632 100644
> --- a/src/bin/test_colorselector.c
> +++ b/src/bin/test_colorselector.c
> @@ -84,6 +84,7 @@ test_colorselector(void *data EINA_UNUSED, Evas_Object
> *obj EINA_UNUSED,
> const Eina_List *item_list, *last_item_list;
> Elm_Object_Item *color_item;
> int r, g, b, a;
> + Elm_Object_Item *item;
>
> win = elm_win_util_standard_add("colorselector", "ColorSelector");
> elm_win_autodel_set(win, EINA_TRUE);
> @@ -113,7 +114,9 @@ test_colorselector(void *data EINA_UNUSED, Evas_Object
> *obj EINA_UNUSED,
> evas_object_show(fr);
>
> cs = elm_colorselector_add(fr);
> - elm_colorselector_palette_color_add(cs, 255, 90, 18, 128);
> + item = elm_colorselector_palette_color_add(cs, 255, 90, 18, 128);
> + elm_colorselector_palette_item_selected_set(item, EINA_TRUE);
> +
> elm_colorselector_palette_color_add(cs, 255, 213, 0, 255);
> elm_colorselector_palette_color_add(cs, 146, 255, 11, 255);
> elm_colorselector_palette_color_add(cs, 9, 186, 10, 255);
> diff --git a/src/lib/elm_colorselector.c b/src/lib/elm_colorselector.c
> index 714cd79..daf3261 100644
> --- a/src/lib/elm_colorselector.c
> +++ b/src/lib/elm_colorselector.c
> @@ -1272,7 +1272,7 @@ _on_color_long_press(void *data)
> ELM_COLORSELECTOR_DATA_GET(WIDGET(item), sd);
>
> sd->longpress_timer = NULL;
> - sd->longpressed = EINA_TRUE;
> +
> evas_object_smart_callback_call
> (WIDGET(item), SIG_COLOR_ITEM_LONGPRESSED, item);
>
> @@ -1293,8 +1293,6 @@ _on_color_pressed(void *data,
> ELM_COLORSELECTOR_DATA_GET(WIDGET(item), sd);
>
> if (ev->button != 1) return;
> - elm_object_signal_emit(VIEW(item), "elm,state,selected", "elm");
> - sd->longpressed = EINA_FALSE;
>
> ecore_timer_del(sd->longpress_timer);
> sd->longpress_timer = ecore_timer_add
> @@ -1317,15 +1315,17 @@ _on_color_released(void *data,
>
> if (ev->button != 1) return;
> ELM_SAFE_FREE(sd->longpress_timer, ecore_timer_del);
> - elm_object_signal_emit(VIEW(item), "elm,state,unselected", "elm");
> - if (!sd->longpressed)
> - {
> - elm_colorselector_color_set
> - (WIDGET(item), item->color->r, item->color->g, item->color->b,
> - item->color->a);
> - evas_object_smart_callback_call
> - (WIDGET(item), SIG_COLOR_ITEM_SELECTED, item);
> - }
> +
> + elm_object_signal_emit(VIEW(item), "elm,state,selected", "elm");
> + elm_colorselector_color_set(WIDGET(item), item->color->r,
> item->color->g,
> + item->color->b, item->color->a);
> + evas_object_smart_callback_call(WIDGET(item), SIG_COLOR_ITEM_SELECTED,
> + item);
> +
> + temp_item = eina_list_data_get(sd->selected);
> + if (temp_item && (temp_item != item))
> + elm_object_signal_emit(VIEW(temp_item), "elm,state,unselected",
> "elm");
> +
> EINA_LIST_FOREACH(sd->items, l, temp_item)
> if (item == temp_item) sd->selected = l;
> sd->focused = ELM_COLORSELECTOR_PALETTE;
> @@ -2167,6 +2167,67 @@ _palette_items_get(Eo *obj EINA_UNUSED, void *_pd,
> va_list *list)
> }
>
> EAPI void
> +elm_colorselector_palette_item_selected_set(Elm_Object_Item *it,
> + Eina_Bool selected)
> +{
> + Elm_Color_Item *temp_item, *item;
> + item = (Elm_Color_Item *)it;
> + Eina_List *l;
> +
> + ELM_COLORSELECTOR_DATA_GET(WIDGET(item), sd);
> + ELM_COLORSELECTOR_ITEM_CHECK_OR_RETURN(it);
> +
> + if (selected)
> + {
> + temp_item = eina_list_data_get(sd->selected);
> + if (item == temp_item) return;
> + elm_object_signal_emit(VIEW(item), "elm,state,selected", "elm");
> + elm_colorselector_color_set(WIDGET(item), item->color->r,
> item->color->g,
> + item->color->b, item->color->a);
> + if (temp_item)
> + elm_object_signal_emit(VIEW(temp_item), "elm,state,unselected",
> "elm");
> +
> + EINA_LIST_FOREACH(sd->items, l, temp_item)
> + if (item == temp_item) sd->selected = l;
> + }
> + else
> + {
> + elm_object_signal_emit(VIEW(item), "elm,state,unselected", "elm");
> + sd->selected = NULL;
> + }
> +}
> +
> +EAPI Eina_Bool
> +elm_colorselector_palette_item_selected_get(const Elm_Object_Item *it)
> +{
> + Elm_Color_Item *temp_item, *item;
> + item = (Elm_Color_Item *)it;
> + ELM_COLORSELECTOR_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
> + ELM_COLORSELECTOR_DATA_GET(WIDGET(item), sd);
> +
> + temp_item = eina_list_data_get(sd->selected);
> + if (item == temp_item) return EINA_TRUE;
> + else return EINA_FALSE;
> +}
> +
> +EAPI Elm_Object_Item *
> +elm_colorselector_palette_selected_item_get(const Evas_Object *obj)
> +{
> + ELM_COLORSELECTOR_CHECK(obj) NULL;
> + Elm_Object_Item *ret = NULL;
> + eo_do((Eo *) obj,
> elm_obj_colorselector_palette_selected_item_get(&ret));
> + return ret;
> +}
> +
> +static void
> +_palette_selected_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
> +{
> + Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
> + Elm_Colorselector_Smart_Data *sd = _pd;
> + *ret = eina_list_data_get(sd->selected);
> +}
> +
> +EAPI void
> elm_colorselector_palette_name_set(Evas_Object *obj,
> const char *palette_name)
> {
> @@ -2230,6 +2291,7 @@ _class_constructor(Eo_Class *klass)
>
> EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_MODE_GET),
> _mode_get),
>
>
> EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_COLOR_ADD),
> _palette_color_add),
>
>
> EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_CLEAR),
> _palette_clear),
> +
>
> EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_SELECTED_ITEM_GET),
> _palette_selected_item_get),
>
>
> EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_ITEMS_GET),
> _palette_items_get),
>
>
> EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_SET),
> _palette_name_set),
>
>
> EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_GET),
> _palette_name_get),
> @@ -2249,6 +2311,7 @@ static const Eo_Op_Description op_desc[] = {
> EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_MODE_GET, "Get
> Colorselector's mode."),
> EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_COLOR_ADD,
> "Add a new color item to palette."),
> EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_CLEAR, "Clear
> the palette items."),
> +
> EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_SELECTED_ITEM_GET,
> "Get Palette's current selected item"),
> EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_ITEMS_GET,
> "Get palette's item list"),
> EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_SET,
> "Set current palette's name."),
> EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_GET,
> "Get current palette's name."),
> diff --git a/src/lib/elm_colorselector_common.h
> b/src/lib/elm_colorselector_common.h
> index d39cf56..801b416 100644
> --- a/src/lib/elm_colorselector_common.h
> +++ b/src/lib/elm_colorselector_common.h
> @@ -56,3 +56,24 @@ EAPI void
> elm_colorselector_palette_item_color_get(const Elm_Object_Item *it, in
> */
> EAPI void elm_colorselector_palette_item_color_set(Elm_Object_Item *it,
> int r, int g, int b, int a);
>
> +/**
> + * Get the selected state of color palette item.
> + *
> + * @param it The Colorpalette item
> + * @return EINA_TRUE if the item is selected, EINA_FALSE otherwise.
> + *
> + * @since 1.9
> + * @ingroup Colorselector
> + */
> +EAPI Eina_Bool elm_colorselector_palette_item_selected_get(const
> Elm_Object_Item *it);
> +
> +/**
> + * Set the selected state of color palette item
> + *
> + * @param it The Colorpalette item
> + * @param selected if it's EINA_TRUE, select the item otherwise, unselect
> the item
> + *
> + * @since 1.9
> + * @ingroup Colorselector
> + */
> +EAPI void elm_colorselector_palette_item_selected_set(Elm_Object_Item
> *it, Eina_Bool selected);
> diff --git a/src/lib/elm_colorselector_eo.h
> b/src/lib/elm_colorselector_eo.h
> index b7ac81a..b8cc88e 100644
> --- a/src/lib/elm_colorselector_eo.h
> +++ b/src/lib/elm_colorselector_eo.h
> @@ -12,6 +12,7 @@ enum
> ELM_OBJ_COLORSELECTOR_SUB_ID_MODE_GET,
> ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_COLOR_ADD,
> ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_CLEAR,
> + ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_SELECTED_ITEM_GET,
> ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_ITEMS_GET,
> ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_SET,
> ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_GET,
> @@ -127,6 +128,18 @@ enum
> #define elm_obj_colorselector_palette_items_get(ret)
> ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_ITEMS_GET),
> EO_TYPECHECK(const Eina_List **, ret)
>
> /**
> + * @def elm_obj_colorselector_palette_selected_item_get
> + * @since 1.9
> + *
> + * Get current selected palette item
> + *
> + * @param[out] ret
> + *
> + * @ingroup Colorselector
> + */
> +#define elm_obj_colorselector_palette_selected_item_get(ret)
> ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_SELECTED_ITEM_GET),
> EO_TYPECHECK(Elm_Object_Item **, ret)
> +
> +/**
> * @def elm_obj_colorselector_palette_name_set
> * @since 1.8
> *
> diff --git a/src/lib/elm_colorselector_legacy.h
> b/src/lib/elm_colorselector_legacy.h
> index b366056..7a7dd03 100644
> --- a/src/lib/elm_colorselector_legacy.h
> +++ b/src/lib/elm_colorselector_legacy.h
> @@ -95,6 +95,17 @@ EAPI void elm_colorselector_palette_clear(Evas_Object
> *obj);
> EAPI const Eina_List *elm_colorselector_palette_items_get(const
> Evas_Object *obj);
>
> /**
> + * Get the selected item in colorselector palette.
> + *
> + * @param obj The Colorselector object
> + * @return The selected item, or NULL if none is selected.
> + *
> + * @since 1.9
> + * @ingroup Colorselector
> + */
> +EAPI Elm_Object_Item *elm_colorselector_palette_selected_item_get(const
> Evas_Object *obj);
> +
> +/**
> * Set current palette's name
> *
> * @param obj The Colorselector object
> diff --git a/src/lib/elm_widget_colorselector.h
> b/src/lib/elm_widget_colorselector.h
> index 4dbc4ac..7b1c5ed 100644
> --- a/src/lib/elm_widget_colorselector.h
> +++ b/src/lib/elm_widget_colorselector.h
> @@ -56,7 +56,6 @@ struct _Elm_Colorselector_Smart_Data
> Elm_Colorselector_Mode mode, focused;
> int sel_color_type;
>
> - Eina_Bool longpressed : 1;
> Eina_Bool config_load : 1;
> };
>
>
> --
>
>
>
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel