seoz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=ae03d3cef36abd27ff530e350e39ae401f4f389e

commit ae03d3cef36abd27ff530e350e39ae401f4f389e
Author: Daniel Juyung Seo <seojuyu...@gmail.com>
Date:   Sun Nov 3 23:58:57 2013 +0900

    Genlist/Gengrid: Added multi select mode for genlist/gengrid.
    
    elm_genlist_multi_select_mode_set/get()
    elm_gengrid_multi_select_mode_set/get()
---
 ChangeLog                    | 10 ++++------
 NEWS                         |  2 +-
 src/lib/elm_general.h        |  8 +++++++-
 src/lib/elm_gengrid.c        | 21 ++++++++++++++++++++-
 src/lib/elm_gengrid_legacy.h | 39 +++++++++++++++++++++++++++++++++++----
 src/lib/elm_genlist.c        | 21 ++++++++++++++++++++-
 src/lib/elm_genlist_legacy.h | 39 +++++++++++++++++++++++++++++++++++----
 src/lib/elm_widget_gengrid.h |  1 +
 src/lib/elm_widget_genlist.h |  1 +
 9 files changed, 124 insertions(+), 18 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 434f65f..9207326 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1736,12 +1736,10 @@
 
         * 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)
 
         * Popup - Added elm_popup_move() api.
+
+2013-10-03  Daniel Juyung Seo (SeoZ)
+
+        * Genlist/Gengrid: Added multi select mode.
diff --git a/NEWS b/NEWS
index fece1e7..2eac992 100644
--- a/NEWS
+++ b/NEWS
@@ -101,8 +101,8 @@ Additions:
    * 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 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 multi select mode for genlist/gengrid.
 
 Improvements:
 
diff --git a/src/lib/elm_general.h b/src/lib/elm_general.h
index 9f5e140..7876af4 100644
--- a/src/lib/elm_general.h
+++ b/src/lib/elm_general.h
@@ -126,10 +126,16 @@ typedef enum
    ELM_OBJECT_SELECT_MODE_ALWAYS, /**< always 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_MULTIPLE_SELECT_MODE_WITH_CONTROL, /**< disallow mutiple 
selection when clicked without control key pressed */
    ELM_OBJECT_SELECT_MODE_MAX
 } 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. */
 
 extern EAPI double _elm_startup_time;
diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index 883d4fb..3587374 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -597,7 +597,7 @@ _item_mouse_up_cb(void *data,
      }
    if (elm_widget_item_disabled_get(it) || (dragged)) return;
    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"))))
      {
         if (!it->selected)
@@ -3029,6 +3029,25 @@ _multi_select_get(Eo *obj EINA_UNUSED, void *_pd, 
va_list *list)
    *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 *
 elm_gengrid_selected_item_get(const Evas_Object *obj)
 {
diff --git a/src/lib/elm_gengrid_legacy.h b/src/lib/elm_gengrid_legacy.h
index 0f09c70..773372e 100644
--- a/src/lib/elm_gengrid_legacy.h
+++ b/src/lib/elm_gengrid_legacy.h
@@ -69,6 +69,41 @@ EAPI void                          
elm_gengrid_multi_select_set(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
  * 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
  *      entirely and they will neither appear selected nor call selected
  *      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_multi_select_set()
  *
  * @ingroup Gengrid
  */
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index cdb27be..6111994 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -4221,7 +4221,7 @@ _item_mouse_up_cb(void *data,
 
    if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
    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"))))
      {
         if (!it->selected)
@@ -5806,6 +5806,25 @@ _multi_select_get(Eo *obj EINA_UNUSED, void *_pd, 
va_list *list)
    *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 *
 elm_genlist_selected_item_get(const Evas_Object *obj)
 {
diff --git a/src/lib/elm_genlist_legacy.h b/src/lib/elm_genlist_legacy.h
index d1a02fc..ddaa799 100644
--- a/src/lib/elm_genlist_legacy.h
+++ b/src/lib/elm_genlist_legacy.h
@@ -59,6 +59,41 @@ EAPI void                          
elm_genlist_multi_select_set(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.
  *
  * @param obj The genlist object
@@ -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
  *      entirely and they will neither appear selected nor call selected
  *      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_multi_select_set()
  *
  * @ingroup Genlist
  */
diff --git a/src/lib/elm_widget_gengrid.h b/src/lib/elm_widget_gengrid.h
index 5460193..7ad6fed 100644
--- a/src/lib/elm_widget_gengrid.h
+++ b/src/lib/elm_widget_gengrid.h
@@ -49,6 +49,7 @@ struct _Elm_Gengrid_Smart_Data
    unsigned int                          item_count;
    Evas_Coord                            pan_x, pan_y;
    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                              clear_cb;
diff --git a/src/lib/elm_widget_genlist.h b/src/lib/elm_widget_genlist.h
index 20ba4c2..db87119 100644
--- a/src/lib/elm_widget_genlist.h
+++ b/src/lib/elm_widget_genlist.h
@@ -54,6 +54,7 @@ struct _Elm_Genlist_Smart_Data
    unsigned int                          item_count;
    Evas_Coord                            pan_x, pan_y;
    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
                                                   * blocks. a block

-- 


Reply via email to