From 033e68302755ffdc60a1bf76e96f50dab6928cb7 Mon Sep 17 00:00:00 2001 From: Hosang Kim Date: Thu, 20 Nov 2014 17:48:36 +0900 Subject: [PATCH] Scroller: Add step size set API 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 | 18 ++++++++++++++++++ src/lib/elm_scroller.c | 20 ++++++++++++++++++++ src/lib/elm_scroller_legacy.h | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) diff --git a/src/bin/test_scroller.c b/src/bin/test_scroller.c index de73879..8628ca2 100644 --- a/src/bin/test_scroller.c +++ b/src/bin/test_scroller.c @@ -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); diff --git a/src/lib/elm_scroller.c b/src/lib/elm_scroller.c index c59c0fb..b48bb08 100644 --- a/src/lib/elm_scroller.c +++ b/src/lib/elm_scroller.c @@ -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) { diff --git a/src/lib/elm_scroller_legacy.h b/src/lib/elm_scroller_legacy.h index 235a3c1..b0d87b6 100644 --- a/src/lib/elm_scroller_legacy.h +++ b/src/lib/elm_scroller_legacy.h @@ -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" -- 2.7.4