forked from enlightenment/efl
Genlist/Gengrid: Added multi select mode for genlist/gengrid.
elm_genlist_multi_select_mode_set/get() elm_gengrid_multi_select_mode_set/get()
This commit is contained in:
parent
16b4279656
commit
6a0f47d120
|
@ -1736,12 +1736,10 @@
|
||||||
|
|
||||||
* slider: Added elm_slider_step_get(), elm_slider_step_set().
|
* slider: Added elm_slider_step_get(), elm_slider_step_set().
|
||||||
|
|
||||||
2013-10-02 Ryuan Choi (ryuan)
|
|
||||||
|
|
||||||
* genlist , gengrid: Add ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL.
|
|
||||||
It disallow multiple selection when clicked without control pressed although
|
|
||||||
multiple selection is enabled.
|
|
||||||
|
|
||||||
2013-10-03 Abhinandan Aryadipta (aryarockstar)
|
2013-10-03 Abhinandan Aryadipta (aryarockstar)
|
||||||
|
|
||||||
* Popup - Added elm_popup_move() api.
|
* Popup - Added elm_popup_move() api.
|
||||||
|
|
||||||
|
2013-10-03 Daniel Juyung Seo (SeoZ)
|
||||||
|
|
||||||
|
* Genlist/Gengrid: Added multi select mode.
|
||||||
|
|
|
@ -101,8 +101,8 @@ Additions:
|
||||||
* Add support for "clicked" callback on Return/space/KP_Enter key press for image.
|
* Add support for "clicked" callback on Return/space/KP_Enter key press for image.
|
||||||
* Add "virtualkeypad,size,changed" callback on virtualkeypad min size change for conformant.
|
* Add "virtualkeypad,size,changed" callback on virtualkeypad min size change for conformant.
|
||||||
* Add elm_slider_step_get(), elm_slider_step_set() for slider.
|
* Add elm_slider_step_get(), elm_slider_step_set() for slider.
|
||||||
* Add ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL select mode for genlist/gengrid.
|
|
||||||
* Add support elm_popup_move() for popup.
|
* Add support elm_popup_move() for popup.
|
||||||
|
* Add multi select mode for genlist/gengrid.
|
||||||
|
|
||||||
Improvements:
|
Improvements:
|
||||||
|
|
||||||
|
|
|
@ -126,10 +126,16 @@ typedef enum
|
||||||
ELM_OBJECT_SELECT_MODE_ALWAYS, /**< always select mode */
|
ELM_OBJECT_SELECT_MODE_ALWAYS, /**< always select mode */
|
||||||
ELM_OBJECT_SELECT_MODE_NONE, /**< no select mode */
|
ELM_OBJECT_SELECT_MODE_NONE, /**< no select mode */
|
||||||
ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, /**< no select mode with no finger size rule*/
|
ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, /**< no select mode with no finger size rule*/
|
||||||
ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL, /**< disallow mutiple selection when clicked without control key pressed */
|
|
||||||
ELM_OBJECT_SELECT_MODE_MAX
|
ELM_OBJECT_SELECT_MODE_MAX
|
||||||
} Elm_Object_Select_Mode;
|
} Elm_Object_Select_Mode;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT = 0, /**< default multiple select mode */
|
||||||
|
ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL, /**< disallow mutiple selection when clicked without control key pressed */
|
||||||
|
ELM_OBJECT_MULTI_SELECT_MODE_MAX
|
||||||
|
} Elm_Object_Multi_Select_Mode;
|
||||||
|
|
||||||
typedef Eina_Bool (*Elm_Event_Cb)(void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); /**< Function prototype definition for callbacks on input events happening on Elementary widgets. @a data will receive the user data pointer passed to elm_object_event_callback_add(). @a src will be a pointer to the widget on which the input event took place. @a type will get the type of this event and @a event_info, the struct with details on this event. */
|
typedef Eina_Bool (*Elm_Event_Cb)(void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); /**< Function prototype definition for callbacks on input events happening on Elementary widgets. @a data will receive the user data pointer passed to elm_object_event_callback_add(). @a src will be a pointer to the widget on which the input event took place. @a type will get the type of this event and @a event_info, the struct with details on this event. */
|
||||||
|
|
||||||
extern EAPI double _elm_startup_time;
|
extern EAPI double _elm_startup_time;
|
||||||
|
|
|
@ -597,7 +597,7 @@ _item_mouse_up_cb(void *data,
|
||||||
}
|
}
|
||||||
if (elm_widget_item_disabled_get(it) || (dragged)) return;
|
if (elm_widget_item_disabled_get(it) || (dragged)) return;
|
||||||
if (sd->multi &&
|
if (sd->multi &&
|
||||||
((sd->select_mode != ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL) ||
|
((sd->multi_select_mode != ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL) ||
|
||||||
(evas_key_modifier_is_set(ev->modifiers, "Control"))))
|
(evas_key_modifier_is_set(ev->modifiers, "Control"))))
|
||||||
{
|
{
|
||||||
if (!it->selected)
|
if (!it->selected)
|
||||||
|
@ -3029,6 +3029,25 @@ _multi_select_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
|
||||||
*ret = sd->multi;
|
*ret = sd->multi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
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);
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
return sd->multi_select_mode;
|
||||||
|
}
|
||||||
|
|
||||||
EAPI Elm_Object_Item *
|
EAPI Elm_Object_Item *
|
||||||
elm_gengrid_selected_item_get(const Evas_Object *obj)
|
elm_gengrid_selected_item_get(const Evas_Object *obj)
|
||||||
{
|
{
|
||||||
|
|
|
@ -68,6 +68,41 @@ EAPI void elm_gengrid_multi_select_set(Evas_Object *obj
|
||||||
*/
|
*/
|
||||||
EAPI Eina_Bool elm_gengrid_multi_select_get(const Evas_Object *obj);
|
EAPI Eina_Bool elm_gengrid_multi_select_get(const Evas_Object *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the gengrid multi select mode.
|
||||||
|
*
|
||||||
|
* @param obj The gengrid object
|
||||||
|
* @param mode The multi select 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()
|
||||||
|
*
|
||||||
|
* @ingroup Gengrid
|
||||||
|
* @since 1.8
|
||||||
|
*/
|
||||||
|
EAPI void elm_gengrid_multi_select_mode_set(Evas_Object *obj, Elm_Object_Multi_Select_Mode mode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the gengrid multi select mode.
|
||||||
|
*
|
||||||
|
* @param obj The gengrid object
|
||||||
|
* @return The multi select mode
|
||||||
|
* (If getting mode if failed, it returns ELM_OBJECT_MULTI_SELECT_MODE_MAX)
|
||||||
|
*
|
||||||
|
* @see elm_gengrid_multi_select_set()
|
||||||
|
* @see elm_gengrid_multi_select_mode_set()
|
||||||
|
*
|
||||||
|
* @ingroup Gengrid
|
||||||
|
* @since 1.8
|
||||||
|
*/
|
||||||
|
EAPI Elm_Object_Multi_Select_Mode elm_gengrid_multi_select_mode_get(const Evas_Object *obj);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the direction in which a given gengrid widget will expand while
|
* Set the direction in which a given gengrid widget will expand while
|
||||||
* placing its items.
|
* placing its items.
|
||||||
|
@ -799,12 +834,8 @@ EAPI Eina_Bool elm_gengrid_filled_get(const Evas_Object *obj
|
||||||
* - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
|
* - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
|
||||||
* entirely and they will neither appear selected nor call selected
|
* entirely and they will neither appear selected nor call selected
|
||||||
* callback functions.
|
* callback functions.
|
||||||
* - ELM_OBJECT_MULTIPLE_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_select_mode_get()
|
* @see elm_gengrid_select_mode_get()
|
||||||
* @see elm_gengrid_multi_select_set()
|
|
||||||
*
|
*
|
||||||
* @ingroup Gengrid
|
* @ingroup Gengrid
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -4221,7 +4221,7 @@ _item_mouse_up_cb(void *data,
|
||||||
|
|
||||||
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
|
||||||
if (sd->multi &&
|
if (sd->multi &&
|
||||||
((sd->select_mode != ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL) ||
|
((sd->multi_select_mode != ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL) ||
|
||||||
(evas_key_modifier_is_set(ev->modifiers, "Control"))))
|
(evas_key_modifier_is_set(ev->modifiers, "Control"))))
|
||||||
{
|
{
|
||||||
if (!it->selected)
|
if (!it->selected)
|
||||||
|
@ -5806,6 +5806,25 @@ _multi_select_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
|
||||||
*ret = sd->multi;
|
*ret = sd->multi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
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);
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
return sd->multi_select_mode;
|
||||||
|
}
|
||||||
|
|
||||||
EAPI Elm_Object_Item *
|
EAPI Elm_Object_Item *
|
||||||
elm_genlist_selected_item_get(const Evas_Object *obj)
|
elm_genlist_selected_item_get(const Evas_Object *obj)
|
||||||
{
|
{
|
||||||
|
|
|
@ -58,6 +58,41 @@ EAPI void elm_genlist_multi_select_set(Evas_Object *obj
|
||||||
*/
|
*/
|
||||||
EAPI Eina_Bool elm_genlist_multi_select_get(const Evas_Object *obj);
|
EAPI Eina_Bool elm_genlist_multi_select_get(const Evas_Object *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the genlist multi select mode.
|
||||||
|
*
|
||||||
|
* @param obj The genlist object
|
||||||
|
* @param mode The multi select 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()
|
||||||
|
*
|
||||||
|
* @ingroup Genlist
|
||||||
|
* @since 1.8
|
||||||
|
*/
|
||||||
|
EAPI void elm_genlist_multi_select_mode_set(Evas_Object *obj, Elm_Object_Multi_Select_Mode mode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the genlist multi select mode.
|
||||||
|
*
|
||||||
|
* @param obj The genlist object
|
||||||
|
* @return The multi select mode
|
||||||
|
* (If getting mode if failed, it returns ELM_OBJECT_MULTI_SELECT_MODE_MAX)
|
||||||
|
*
|
||||||
|
* @see elm_genlist_multi_select_set()
|
||||||
|
* @see elm_genlist_multi_select_mode_set()
|
||||||
|
*
|
||||||
|
* @ingroup Genlist
|
||||||
|
* @since 1.8
|
||||||
|
*/
|
||||||
|
EAPI Elm_Object_Multi_Select_Mode elm_genlist_multi_select_mode_get(const Evas_Object *obj);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This sets the horizontal stretching mode.
|
* This sets the horizontal stretching mode.
|
||||||
*
|
*
|
||||||
|
@ -575,12 +610,8 @@ EAPI Eina_Bool elm_genlist_tree_effect_enabled_get(const Evas_Object *o
|
||||||
* - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
|
* - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
|
||||||
* entirely and they will neither appear selected nor call selected
|
* entirely and they will neither appear selected nor call selected
|
||||||
* callback functions.
|
* callback functions.
|
||||||
* - ELM_OBJECT_MULTIPLE_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_select_mode_get()
|
* @see elm_genlist_select_mode_get()
|
||||||
* @see elm_genlist_multi_select_set()
|
|
||||||
*
|
*
|
||||||
* @ingroup Genlist
|
* @ingroup Genlist
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -49,6 +49,7 @@ struct _Elm_Gengrid_Smart_Data
|
||||||
unsigned int item_count;
|
unsigned int item_count;
|
||||||
Evas_Coord pan_x, pan_y;
|
Evas_Coord pan_x, pan_y;
|
||||||
Elm_Object_Select_Mode select_mode;
|
Elm_Object_Select_Mode select_mode;
|
||||||
|
Elm_Object_Multi_Select_Mode multi_select_mode; /**< select mode for multiple selection */
|
||||||
|
|
||||||
Ecore_Cb calc_cb;
|
Ecore_Cb calc_cb;
|
||||||
Ecore_Cb clear_cb;
|
Ecore_Cb clear_cb;
|
||||||
|
|
|
@ -54,6 +54,7 @@ struct _Elm_Genlist_Smart_Data
|
||||||
unsigned int item_count;
|
unsigned int item_count;
|
||||||
Evas_Coord pan_x, pan_y;
|
Evas_Coord pan_x, pan_y;
|
||||||
Elm_Object_Select_Mode select_mode;
|
Elm_Object_Select_Mode select_mode;
|
||||||
|
Elm_Object_Multi_Select_Mode multi_select_mode; /**< select mode for multiple selection */
|
||||||
|
|
||||||
Eina_Inlist *blocks; /* an inlist of all
|
Eina_Inlist *blocks; /* an inlist of all
|
||||||
* blocks. a block
|
* blocks. a block
|
||||||
|
|
Loading…
Reference in New Issue