Scroller: Add step size set API
authorHosang Kim <hosang12.kim@samsung.com>
Thu, 20 Nov 2014 08:48:36 +0000 (17:48 +0900)
committerDaniel Juyung Seo <seojuyung2@gmail.com>
Thu, 20 Nov 2014 11:29:41 +0000 (20:29 +0900)
Summary:
Application do not change step size because only interface API is existed.

@feature

Test Plan: elementary_test -> scroller -> change step size

Reviewers: seoz, Hermet

Differential Revision: https://phab.enlightenment.org/D1677

src/bin/test_scroller.c
src/lib/elm_scroller.c
src/lib/elm_scroller_legacy.h

index de73879..8628ca2 100644 (file)
@@ -140,6 +140,14 @@ _sc_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_inf
    evas_object_resize(data, w, h);
 }
 
+static void
+_size_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+   Evas_Object *sc = data;
+   int size = elm_spinner_value_get(obj);
+   elm_scroller_step_size_set(sc, ELM_SCALE_SIZE(size), ELM_SCALE_SIZE(size));
+}
+
 void
 test_scroller(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
@@ -249,6 +257,16 @@ test_scroller(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_
                                   sc);
    evas_object_smart_callback_add(ck5, "changed", my_bt_snap_to_pages, sc);
 
+   bt = elm_spinner_add(win);
+   elm_spinner_min_max_set(bt, 0, 500);
+   elm_scroller_step_size_get(sc, &x, &y);
+   elm_spinner_value_set(bt, x);
+   elm_spinner_editable_set(bt, EINA_TRUE);
+   elm_spinner_label_format_set(bt, "Step size: %.0f");
+   evas_object_smart_callback_add(bt, "changed", _size_changed, sc);
+   elm_box_pack_end(bx, bt);
+   evas_object_show(bt);
+
    tb2 = elm_table_add(win);
 
    bt = elm_button_add(win);
index c59c0fb..b48bb08 100644 (file)
@@ -1105,6 +1105,26 @@ elm_scroller_movement_block_get(const Evas_Object *obj)
    return block;
 }
 
+EAPI void
+elm_scroller_step_size_set(Evas_Object *obj,
+                           Evas_Coord x,
+                           Evas_Coord y)
+{
+   ELM_SCROLLABLE_CHECK(obj);
+
+   eo_do(obj, elm_interface_scrollable_step_size_set(x, y));
+}
+
+EAPI void
+elm_scroller_step_size_get(const Evas_Object *obj,
+                           Evas_Coord *x,
+                           Evas_Coord *y)
+{
+   ELM_SCROLLABLE_CHECK(obj);
+
+   eo_do((Eo *) obj, elm_interface_scrollable_step_size_get(x, y));
+}
+
 EOLIAN static void
 _elm_scroller_propagate_events_set(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED, Eina_Bool propagation)
 {
index 235a3c1..b0d87b6 100644 (file)
@@ -462,4 +462,36 @@ EAPI void                         elm_scroller_movement_block_set(Evas_Object *o
  */
 EAPI Elm_Scroller_Movement_Block  elm_scroller_movement_block_get(const Evas_Object *obj);
 
+/**
+ * @brief Set scroll step size.
+ *
+ * @param obj The scroller object
+ * @param x The horizontal step size
+ * @param y The vertical step size
+ *
+ * This sets the step size to move scroller by key event.
+ *
+ * @see elm_scroller_step_size_get() for more details
+ *
+ * @since 1.13
+ *
+ * @ingroup Scroller
+ */
+EAPI void                          elm_scroller_step_size_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+
+/**
+ * @brief Get the current step size of the scroller object.
+ *
+ * @param obj The scroller object
+ * @param x Where to store its x axis step size
+ * @param y Where to store its y axis step size
+ *
+ * @see elm_scroller_step_size_set() for more details
+ *
+ * @since 1.13
+ *
+ * @ingroup Scroller
+ */
+EAPI void                          elm_scroller_step_size_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
+
 #include "elm_scroller.eo.legacy.h"