From adaaed49cab83e935b331209d17745544fece7bf Mon Sep 17 00:00:00 2001 From: Daniel Juyung Seo Date: Mon, 4 Nov 2013 01:15:58 +0900 Subject: [PATCH] gengrid/genlist: added Eo compatibles for elm_genlist/gengrid_multi_select_mode_set/get() APIs. --- src/lib/elm_gengrid.c | 32 ++++++++++++++++++++++++++++---- src/lib/elm_gengrid_eo.h | 36 ++++++++++++++++++++++++++++++++++++ src/lib/elm_genlist.c | 32 ++++++++++++++++++++++++++++---- src/lib/elm_genlist_eo.h | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 128 insertions(+), 8 deletions(-) diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index 3587374..645cb58 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -3034,18 +3034,38 @@ elm_gengrid_multi_select_mode_set(Evas_Object *obj, Elm_Object_Multi_Select_Mode mode) { ELM_GENGRID_CHECK(obj); - ELM_GENGRID_DATA_GET(obj, sd); + eo_do(obj, elm_obj_gengrid_multi_select_mode_set(mode)); +} + +static void +_multi_select_mode_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Object_Multi_Select_Mode mode = va_arg(*list, Elm_Object_Multi_Select_Mode); + Elm_Gengrid_Smart_Data *sd = _pd; + + if (mode >= ELM_OBJECT_MULTI_SELECT_MODE_MAX) + return; - sd->multi_select_mode = mode; + if (sd->multi_select_mode != mode) + sd->multi_select_mode = mode; } EAPI Elm_Object_Multi_Select_Mode elm_gengrid_multi_select_mode_get(const Evas_Object *obj) { ELM_GENGRID_CHECK(obj) ELM_OBJECT_MULTI_SELECT_MODE_MAX; - ELM_GENGRID_DATA_GET(obj, sd); + Elm_Object_Multi_Select_Mode ret = ELM_OBJECT_MULTI_SELECT_MODE_MAX; + eo_do((Eo *)obj, elm_obj_gengrid_multi_select_mode_get(&ret)); + return ret; +} + +static void +_multi_select_mode_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Object_Multi_Select_Mode *ret = va_arg(*list, Elm_Object_Multi_Select_Mode *); + Elm_Gengrid_Smart_Data *sd = _pd; - return sd->multi_select_mode; + *ret = sd->multi_select_mode; } EAPI Elm_Object_Item * @@ -4075,6 +4095,8 @@ _class_constructor(Eo_Class *klass) EO_OP_FUNC(ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_CLEAR), _clear), EO_OP_FUNC(ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_SET), _multi_select_set), EO_OP_FUNC(ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_GET), _multi_select_get), + EO_OP_FUNC(ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_MODE_SET), _multi_select_mode_set), + EO_OP_FUNC(ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_MODE_GET), _multi_select_mode_get), EO_OP_FUNC(ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_SELECTED_ITEM_GET), _selected_item_get), EO_OP_FUNC(ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_SELECTED_ITEMS_GET), _selected_items_get), EO_OP_FUNC(ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_REALIZED_ITEMS_GET), _realized_items_get), @@ -4120,6 +4142,8 @@ static const Eo_Op_Description op_desc[] = { EO_OP_DESCRIPTION(ELM_OBJ_GENGRID_SUB_ID_CLEAR, "Remove all items from a given gengrid widget."), EO_OP_DESCRIPTION(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_SET, "Enable or disable multi-selection in a given gengrid widget."), EO_OP_DESCRIPTION(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_GET, "Get whether multi-selection is enabled or disabled for a given gengrid widget."), + EO_OP_DESCRIPTION(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_MODE_SET, "Set the gengrid multi select mode."), + EO_OP_DESCRIPTION(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_MODE_GET, "Get the gengrid multi select mode."), EO_OP_DESCRIPTION(ELM_OBJ_GENGRID_SUB_ID_SELECTED_ITEM_GET, "Get the selected item in a given gengrid widget."), EO_OP_DESCRIPTION(ELM_OBJ_GENGRID_SUB_ID_SELECTED_ITEMS_GET, "Get a list of selected items in a given gengrid."), EO_OP_DESCRIPTION(ELM_OBJ_GENGRID_SUB_ID_REALIZED_ITEMS_GET, "Get a list of realized items in gengrid."), diff --git a/src/lib/elm_gengrid_eo.h b/src/lib/elm_gengrid_eo.h index 94f0dc6..0ee1ed2 100644 --- a/src/lib/elm_gengrid_eo.h +++ b/src/lib/elm_gengrid_eo.h @@ -31,6 +31,8 @@ enum ELM_OBJ_GENGRID_SUB_ID_CLEAR, ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_SET, ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_GET, + ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_MODE_SET, + ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_MODE_GET, ELM_OBJ_GENGRID_SUB_ID_SELECTED_ITEM_GET, ELM_OBJ_GENGRID_SUB_ID_SELECTED_ITEMS_GET, ELM_OBJ_GENGRID_SUB_ID_REALIZED_ITEMS_GET, @@ -280,6 +282,40 @@ enum #define elm_obj_gengrid_multi_select_get(ret) ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_GET), EO_TYPECHECK(Eina_Bool *, ret) /** + * @def elm_obj_gengrid_multi_select_mode_set + * @since 1.8 + * + * Set the gengrid multi select mode. + * + * @param[in] mode + * + * - ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever each + * item is clicked. + * - ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only one item will be selected + * although multi-selection is enabled, if clicked without pressing control + * key. This mode is only available with multi-selection. + * + * @see elm_gengrid_multi_select_set() + * @see elm_gengrid_multi_select_mode_get() + */ +#define elm_obj_gengrid_multi_select_mode_set(mode) ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_MODE_SET), EO_TYPECHECK(Elm_Object_Multi_Select_Mode, mode) + +/** + * @def elm_obj_gengrid_multi_select_mode_get + * @since 1.8 + * + * Get the gengrid multi select mode. + * + * @param[out] ret + * + * (If getting mode is failed, it returns ELM_OBJECT_MULTI_SELECT_MODE_MAX) + * + * @see elm_gengrid_multi_select_set() + * @see elm_gengrid_multi_select_mode_set() + */ +#define elm_obj_gengrid_multi_select_mode_get(ret) ELM_OBJ_GENGRID_ID(ELM_OBJ_GENGRID_SUB_ID_MULTI_SELECT_MODE_GET), EO_TYPECHECK(Elm_Object_Multi_Select_Mode *, ret) + +/** * @def elm_obj_gengrid_selected_item_get * @since 1.8 * diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 6111994..d0d13ce 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -5811,18 +5811,38 @@ elm_genlist_multi_select_mode_set(Evas_Object *obj, Elm_Object_Multi_Select_Mode mode) { ELM_GENLIST_CHECK(obj); - ELM_GENLIST_DATA_GET(obj, sd); + eo_do(obj, elm_obj_genlist_multi_select_mode_set(mode)); +} + +static void +_multi_select_mode_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Object_Multi_Select_Mode mode = va_arg(*list, Elm_Object_Multi_Select_Mode); + Elm_Genlist_Smart_Data *sd = _pd; + + if (mode >= ELM_OBJECT_MULTI_SELECT_MODE_MAX) + return; - sd->multi_select_mode = mode; + if (sd->multi_select_mode != mode) + sd->multi_select_mode = mode; } EAPI Elm_Object_Multi_Select_Mode elm_genlist_multi_select_mode_get(const Evas_Object *obj) { ELM_GENLIST_CHECK(obj) ELM_OBJECT_MULTI_SELECT_MODE_MAX; - ELM_GENLIST_DATA_GET(obj, sd); + Elm_Object_Multi_Select_Mode ret = ELM_OBJECT_MULTI_SELECT_MODE_MAX; + eo_do((Eo *)obj, elm_obj_genlist_multi_select_mode_get(&ret)); + return ret; +} + +static void +_multi_select_mode_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Object_Multi_Select_Mode *ret = va_arg(*list, Elm_Object_Multi_Select_Mode *); + Elm_Genlist_Smart_Data *sd = _pd; - return sd->multi_select_mode; + *ret = sd->multi_select_mode; } EAPI Elm_Object_Item * @@ -7550,6 +7570,8 @@ _class_constructor(Eo_Class *klass) EO_OP_FUNC(ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_CLEAR), _clear_eo), EO_OP_FUNC(ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_SET), _multi_select_set), EO_OP_FUNC(ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_GET), _multi_select_get), + EO_OP_FUNC(ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_MODE_SET), _multi_select_mode_set), + EO_OP_FUNC(ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_MODE_GET), _multi_select_mode_get), EO_OP_FUNC(ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_SELECTED_ITEM_GET), _selected_item_get), EO_OP_FUNC(ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_SELECTED_ITEMS_GET), _selected_items_get), EO_OP_FUNC(ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_REALIZED_ITEMS_GET), _realized_items_get), @@ -7598,6 +7620,8 @@ static const Eo_Op_Description op_desc[] = { EO_OP_DESCRIPTION(ELM_OBJ_GENLIST_SUB_ID_CLEAR, "Remove all items from a given genlist widget."), EO_OP_DESCRIPTION(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_SET, "Enable or disable multi-selection in the genlist."), EO_OP_DESCRIPTION(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_GET, "Get if multi-selection in genlist is enabled or disabled."), + EO_OP_DESCRIPTION(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_MODE_SET, "Set the genlist multi select mode."), + EO_OP_DESCRIPTION(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_MODE_GET, "Get the genlist multi select mode."), EO_OP_DESCRIPTION(ELM_OBJ_GENLIST_SUB_ID_SELECTED_ITEM_GET, "Get the selected item in the genlist."), EO_OP_DESCRIPTION(ELM_OBJ_GENLIST_SUB_ID_SELECTED_ITEMS_GET, "Get a list of selected items in the genlist."), EO_OP_DESCRIPTION(ELM_OBJ_GENLIST_SUB_ID_REALIZED_ITEMS_GET, "Get a list of realized items in genlist."), diff --git a/src/lib/elm_genlist_eo.h b/src/lib/elm_genlist_eo.h index d25bafc..2f8c2d0 100644 --- a/src/lib/elm_genlist_eo.h +++ b/src/lib/elm_genlist_eo.h @@ -24,6 +24,8 @@ enum ELM_OBJ_GENLIST_SUB_ID_CLEAR, ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_SET, ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_GET, + ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_MODE_SET, + ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_MODE_GET, ELM_OBJ_GENLIST_SUB_ID_SELECTED_ITEM_GET, ELM_OBJ_GENLIST_SUB_ID_SELECTED_ITEMS_GET, ELM_OBJ_GENLIST_SUB_ID_REALIZED_ITEMS_GET, @@ -199,6 +201,40 @@ enum #define elm_obj_genlist_multi_select_get(ret) ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_GET), EO_TYPECHECK(Eina_Bool *, ret) /** + * @def elm_obj_genlist_multi_select_mode_set + * @since 1.8 + * + * Set the genlist multi select mode. + * + * @param[in] mode + * + * - ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever each + * item is clicked. + * - ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only one item will be selected + * although multi-selection is enabled, if clicked without pressing control + * key. This mode is only available with multi-selection. + * + * @see elm_genlist_multi_select_set() + * @see elm_genlist_multi_select_mode_get() + */ +#define elm_obj_genlist_multi_select_mode_set(mode) ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_MODE_SET), EO_TYPECHECK(Elm_Object_Multi_Select_Mode, mode) + +/** + * @def elm_obj_genlist_multi_select_mode_get + * @since 1.8 + * + * Get the genlist multi select mode. + * + * @param[out] ret + * + * (If getting mode is failed, it returns ELM_OBJECT_MULTI_SELECT_MODE_MAX) + * + * @see elm_genlist_multi_select_set() + * @see elm_genlist_multi_select_mode_set() + */ +#define elm_obj_genlist_multi_select_mode_get(ret) ELM_OBJ_GENLIST_ID(ELM_OBJ_GENLIST_SUB_ID_MULTI_SELECT_MODE_GET), EO_TYPECHECK(Elm_Object_Multi_Select_Mode *, ret) + +/** * @def elm_obj_genlist_selected_item_get * @since 1.8 * -- 2.7.4