summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Zaoui <daniel.zaoui@samsung.com>2014-03-30 10:34:05 +0300
committerDaniel Zaoui <daniel.zaoui@samsung.com>2014-03-31 08:14:05 +0300
commitc3398674b94ea2c874dd144e0c5481425dfab374 (patch)
tree0502e277a8237c497571bd38d8e735b90552839c
parent33e6e14b03b08e21b400f52042ea8ac0b96d4b78 (diff)
downloadelementary-c3398674b94ea2c874dd144e0c5481425dfab374.tar.gz
Eolian: Integration of Flip Selector
-rw-r--r--src/lib/Makefile.am4
-rw-r--r--src/lib/elm_flipselector.c340
-rw-r--r--src/lib/elm_flipselector.eo216
-rw-r--r--src/lib/elm_flipselector_eo.h8
-rw-r--r--src/lib/elm_widget_flipselector.h6
5 files changed, 301 insertions, 273 deletions
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 7dee6ea56..20e9d90fc 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -591,6 +591,8 @@ BUILT_SOURCES = \
elc_fileselector_button.eo.h \
elc_fileselector_entry.eo.c \
elc_fileselector_entry.eo.h \
+ elm_flipselector.eo.c \
+ elm_flipselector.eo.h \
elm_flip.eo.c \
elm_flip.eo.h \
elm_gesture_layer.eo.c \
@@ -710,6 +712,7 @@ EXTRA_DIST += \
elc_fileselector.eo \
elc_fileselector_button.eo \
elc_fileselector_entry.eo \
+ elm_flipselector.eo \
elm_flip.eo \
elm_gesture_layer.eo \
elm_glview.eo \
@@ -787,6 +790,7 @@ nodist_includesunstable_HEADERS = \
elc_fileselector.eo.h \
elc_fileselector_button.eo.h \
elc_fileselector_entry.eo.h \
+ elm_flipselector.eo.h \
elm_flip.eo.h \
elm_gesture_layer.eo.h \
elm_glview.eo.h \
diff --git a/src/lib/elm_flipselector.c b/src/lib/elm_flipselector.c
index 8fdd84dd3..e1c98a7cf 100644
--- a/src/lib/elm_flipselector.c
+++ b/src/lib/elm_flipselector.c
@@ -6,8 +6,6 @@
#include "elm_priv.h"
#include "elm_widget_flipselector.h"
-EAPI Eo_Op ELM_OBJ_FLIPSELECTOR_BASE_ID = EO_NOOP;
-
#define MY_CLASS ELM_OBJ_FLIPSELECTOR_CLASS
#define MY_CLASS_NAME "Elm_Flipselector"
@@ -49,13 +47,12 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{NULL, NULL}
};
-static void
-_elm_flipselector_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_flipselector_elm_layout_sizing_eval(Eo *obj, Elm_Flipselector_Data *sd)
{
char *tmp = NULL;
Evas_Coord minw = -1, minh = -1, w, h;
- Elm_Flipselector_Smart_Data *sd = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
if (sd->evaluating) return;
@@ -163,7 +160,7 @@ _item_signal_emit_hook(Elm_Object_Item *it,
}
static inline void
-_flipselector_walk(Elm_Flipselector_Smart_Data *sd)
+_flipselector_walk(Elm_Flipselector_Data *sd)
{
if (sd->walking < 0)
{
@@ -174,7 +171,7 @@ _flipselector_walk(Elm_Flipselector_Smart_Data *sd)
}
static void
-_sentinel_eval(Elm_Flipselector_Smart_Data *sd)
+_sentinel_eval(Elm_Flipselector_Data *sd)
{
Elm_Flipselector_Item *it;
Eina_List *l;
@@ -197,7 +194,7 @@ _sentinel_eval(Elm_Flipselector_Smart_Data *sd)
/* TODO: create a flag to avoid looping here all times */
static void
-_flipselector_process_deletions(Elm_Flipselector_Smart_Data *sd)
+_flipselector_process_deletions(Elm_Flipselector_Data *sd)
{
Eina_List *l;
Elm_Flipselector_Item *it;
@@ -238,7 +235,7 @@ _flipselector_process_deletions(Elm_Flipselector_Smart_Data *sd)
}
static inline void
-_flipselector_unwalk(Elm_Flipselector_Smart_Data *sd)
+_flipselector_unwalk(Elm_Flipselector_Data *sd)
{
sd->walking--;
@@ -253,7 +250,7 @@ _flipselector_unwalk(Elm_Flipselector_Smart_Data *sd)
}
static void
-_on_item_changed(Elm_Flipselector_Smart_Data *sd)
+_on_item_changed(Elm_Flipselector_Data *sd)
{
Elm_Flipselector_Item *item;
@@ -269,7 +266,7 @@ _on_item_changed(Elm_Flipselector_Smart_Data *sd)
}
static void
-_send_msg(Elm_Flipselector_Smart_Data *sd,
+_send_msg(Elm_Flipselector_Data *sd,
int flipside,
char *label)
{
@@ -359,20 +356,16 @@ _item_new(Evas_Object *obj,
return it;
}
-static void
-_elm_flipselector_smart_theme(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_flipselector_elm_widget_theme_apply(Eo *obj, Elm_Flipselector_Data *sd)
{
const char *max_len;
- Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Eina_Bool int_ret = EINA_FALSE;
- if (ret) *ret = EINA_FALSE;
-
- Elm_Flipselector_Smart_Data *sd = _pd;
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&int_ret));
- if (!int_ret) return;
+ if (!int_ret) return EINA_FALSE;
max_len = edje_object_data_get(wd->resize_obj, "max_len");
if (!max_len) sd->max_len = MAX_LEN_DEFAULT;
@@ -386,11 +379,11 @@ _elm_flipselector_smart_theme(Eo *obj, void *_pd, va_list *list)
_update_view(obj);
elm_layout_sizing_eval(obj);
- if (ret) *ret = EINA_TRUE;
+ return EINA_TRUE;
}
static void
-_flip_up(Elm_Flipselector_Smart_Data *sd)
+_flip_up(Elm_Flipselector_Data *sd)
{
Elm_Flipselector_Item *item;
@@ -413,7 +406,7 @@ _flip_up(Elm_Flipselector_Smart_Data *sd)
}
static void
-_flip_down(Elm_Flipselector_Smart_Data *sd)
+_flip_down(Elm_Flipselector_Data *sd)
{
Elm_Flipselector_Item *item;
@@ -434,27 +427,22 @@ _flip_down(Elm_Flipselector_Smart_Data *sd)
_send_msg(sd, MSG_FLIP_DOWN, (char *)item->label);
}
-static void
-_elm_flipselector_smart_event(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_flipselector_elm_widget_event(Eo *obj, Elm_Flipselector_Data *sd, Evas_Object *src, Evas_Callback_Type type, void *event_info)
{
- Evas_Object *src = va_arg(*list, Evas_Object *);
- Evas_Callback_Type type = va_arg(*list, Evas_Callback_Type);
- Evas_Event_Key_Down *ev = va_arg(*list, void *);
- Eina_Bool *ret = va_arg(*list, Eina_Bool *);
- Elm_Flipselector_Smart_Data *sd = _pd;
Eina_Bool is_up = EINA_TRUE;
- if (ret) *ret = EINA_FALSE;
+ Evas_Event_Key_Down *ev = event_info;
(void) src;
- if (elm_widget_disabled_get(obj)) return;
- if (type != EVAS_CALLBACK_KEY_DOWN) return;
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
+ if (elm_widget_disabled_get(obj)) return EINA_FALSE;
+ if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
if ((!strcmp(ev->key, "Down")) || (!strcmp(ev->key, "KP_Down")))
is_up = EINA_FALSE;
else if ((strcmp(ev->key, "Up")) && (strcmp(ev->key, "KP_Up")))
- return;
+ return EINA_FALSE;
ELM_SAFE_FREE(sd->spin, ecore_timer_del);
@@ -468,7 +456,7 @@ _elm_flipselector_smart_event(Eo *obj, void *_pd, va_list *list)
_flipselector_unwalk(sd);
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- if (ret) *ret = EINA_TRUE;
+ return EINA_TRUE;
}
static Eina_Bool
@@ -549,11 +537,9 @@ _signal_val_change_stop(void *data,
ELM_SAFE_FREE(sd->spin, ecore_timer_del);
}
-static void
-_elm_flipselector_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_flipselector_evas_smart_add(Eo *obj, Elm_Flipselector_Data *priv)
{
- Elm_Flipselector_Smart_Data *priv = _pd;
-
eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
elm_widget_sub_object_parent_add(obj);
@@ -577,11 +563,9 @@ _elm_flipselector_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
eo_do(obj, elm_obj_widget_theme_apply(NULL));
}
-static void
-_elm_flipselector_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_flipselector_evas_smart_del(Eo *obj, Elm_Flipselector_Data *sd)
{
- Elm_Flipselector_Smart_Data *sd = _pd;
-
sd->deleting = EINA_TRUE;
if (sd->walking) ERR("flipselector deleted while walking.\n");
@@ -603,10 +587,9 @@ elm_flipselector_add(Evas_Object *parent)
return obj;
}
-static void
-_constructor(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_flipselector_eo_base_constructor(Eo *obj, Elm_Flipselector_Data *sd)
{
- Elm_Flipselector_Smart_Data *sd = _pd;
sd->obj = obj;
eo_do_super(obj, MY_CLASS, eo_constructor());
eo_do(obj,
@@ -614,18 +597,9 @@ _constructor(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL));
}
-EAPI void
-elm_flipselector_flip_next(Evas_Object *obj)
+EOLIAN static void
+_elm_flipselector_flip_next(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd)
{
- ELM_FLIPSELECTOR_CHECK(obj);
- eo_do(obj, elm_obj_flipselector_flip_next());
-}
-
-static void
-_flip_next(Eo *obj EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
-{
- Elm_Flipselector_Smart_Data *sd = _pd;
-
ELM_SAFE_FREE(sd->spin, ecore_timer_del);
_flipselector_walk(sd);
@@ -633,18 +607,9 @@ _flip_next(Eo *obj EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
_flipselector_unwalk(sd);
}
-EAPI void
-elm_flipselector_flip_prev(Evas_Object *obj)
+EOLIAN static void
+_elm_flipselector_flip_prev(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd)
{
- ELM_FLIPSELECTOR_CHECK(obj);
- eo_do(obj, elm_obj_flipselector_flip_prev());
-}
-
-static void
-_flip_prev(Eo *obj EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
-{
- Elm_Flipselector_Smart_Data *sd = _pd;
-
ELM_SAFE_FREE(sd->spin, ecore_timer_del);
_flipselector_walk(sd);
@@ -652,33 +617,13 @@ _flip_prev(Eo *obj EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
_flipselector_unwalk(sd);
}
-EAPI Elm_Object_Item *
-elm_flipselector_item_append(Evas_Object *obj,
- const char *label,
- void (*func)(void *, Evas_Object *, void *),
- const void *data)
+EOLIAN static Elm_Object_Item *
+_elm_flipselector_item_append(Eo *obj, Elm_Flipselector_Data *sd, const char *label, flipselector_func_type func, const void *data)
{
- Elm_Flipselector_Item *ret = NULL;
- ELM_FLIPSELECTOR_CHECK(obj) NULL;
- eo_do((Eo *) obj, elm_obj_flipselector_item_append(label, func, data, &ret));
- return (Elm_Object_Item *)ret;
-}
-
-static void
-_item_append(Eo *obj, void *_pd, va_list *list)
-{
- const char *label = va_arg(*list, const char *);
- flipselector_func_type func = va_arg(*list, flipselector_func_type);
- void *data = va_arg(*list, void *);
- Elm_Flipselector_Item **ret = va_arg(*list, Elm_Flipselector_Item **);
- *ret = NULL;
-
Elm_Flipselector_Item *item;
- Elm_Flipselector_Smart_Data *sd = _pd;
-
item = _item_new(obj, label, func, data);
- if (!item) return;
+ if (!item) return NULL;
sd->items = eina_list_append(sd->items, item);
if (!sd->current)
@@ -698,36 +643,16 @@ _item_append(Eo *obj, void *_pd, va_list *list)
if (eina_list_count(sd->items) > 1)
elm_layout_signal_emit(obj, "elm,state,button,visible", "elm");
- *ret = item;
+ return (Elm_Object_Item *)item;
}
-EAPI Elm_Object_Item *
-elm_flipselector_item_prepend(Evas_Object *obj,
- const char *label,
- void (*func)(void *, Evas_Object *, void *),
- void *data)
-{
- Elm_Flipselector_Item *ret = NULL;
- ELM_FLIPSELECTOR_CHECK(obj) NULL;
- eo_do((Eo *) obj, elm_obj_flipselector_item_prepend(label, func, data, &ret));
- return (Elm_Object_Item *)ret;
-}
-
-static void
-_item_prepend(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Elm_Object_Item *
+_elm_flipselector_item_prepend(Eo *obj, Elm_Flipselector_Data *sd, const char *label, flipselector_func_type func, void *data)
{
- const char *label = va_arg(*list, const char *);
- flipselector_func_type func = va_arg(*list, flipselector_func_type);
- void *data = va_arg(*list, void *);
- Elm_Flipselector_Item **ret = va_arg(*list, Elm_Flipselector_Item **);
- *ret = NULL;
-
Elm_Flipselector_Item *item;
- Elm_Flipselector_Smart_Data *sd = _pd;
-
item = _item_new(obj, label, func, data);
- if (!item) return;
+ if (!item) return NULL;
sd->items = eina_list_prepend(sd->items, item);
if (!sd->current)
@@ -747,101 +672,52 @@ _item_prepend(Eo *obj, void *_pd, va_list *list)
if (eina_list_count(sd->items) >= 2)
elm_layout_signal_emit(obj, "elm,state,button,visible", "elm");
- *ret = item;
+ return (Elm_Object_Item *)item;
}
-EAPI const Eina_List *
-elm_flipselector_items_get(const Evas_Object *obj)
+EOLIAN static const Eina_List*
+_elm_flipselector_items_get(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd)
{
- ELM_FLIPSELECTOR_CHECK(obj) NULL;
- const Eina_List *ret = NULL;
- eo_do((Eo *) obj, elm_obj_flipselector_items_get(&ret));
- return ret;
+ return sd->items;
}
-static void
-_items_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Elm_Object_Item*
+_elm_flipselector_first_item_get(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd)
{
- const Eina_List **ret = va_arg(*list, const Eina_List **);
- Elm_Flipselector_Smart_Data *sd = _pd;
- *ret = sd->items;
-}
-
-EAPI Elm_Object_Item *
-elm_flipselector_first_item_get(const Evas_Object *obj)
-{
- ELM_FLIPSELECTOR_CHECK(obj) NULL;
- Elm_Object_Item *ret = NULL;
- eo_do((Eo *) obj, elm_obj_flipselector_first_item_get(&ret));
- return ret;
-}
-
-static void
-_first_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
- Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
- *ret = NULL;
-
Elm_Flipselector_Item *it;
Eina_List *l;
- Elm_Flipselector_Smart_Data *sd = _pd;
-
- if (!sd->items) return;
+ if (!sd->items) return NULL;
EINA_LIST_FOREACH(sd->items, l, it)
{
if (it->deleted) continue;
- *ret = (Elm_Object_Item *)it;
- return;
+ return (Elm_Object_Item *)it;
}
-}
-EAPI Elm_Object_Item *
-elm_flipselector_last_item_get(const Evas_Object *obj)
-{
- ELM_FLIPSELECTOR_CHECK(obj) NULL;
- Elm_Object_Item *ret = NULL;
- eo_do((Eo *) obj, elm_obj_flipselector_last_item_get(&ret));
- return ret;
+ return NULL;
}
-static void
-_last_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Elm_Object_Item*
+_elm_flipselector_last_item_get(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd)
{
- Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
- *ret = NULL;
-
Elm_Flipselector_Item *it;
Eina_List *l;
- Elm_Flipselector_Smart_Data *sd = _pd;
-
- if (!sd->items) return;
+ if (!sd->items) return NULL;
EINA_LIST_REVERSE_FOREACH(sd->items, l, it)
{
if (it->deleted) continue;
- *ret = (Elm_Object_Item *)it;
- return;
+ return (Elm_Object_Item *)it;
}
+ return NULL;
}
-EAPI Elm_Object_Item *
-elm_flipselector_selected_item_get(const Evas_Object *obj)
-{
- ELM_FLIPSELECTOR_CHECK(obj) NULL;
- Elm_Object_Item *ret = NULL;
- eo_do((Eo *) obj, elm_obj_flipselector_selected_item_get(&ret));
- return ret;
-}
-
-static void
-_selected_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Elm_Object_Item*
+_elm_flipselector_selected_item_get(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd)
{
- Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
- Elm_Flipselector_Smart_Data *sd = _pd;
- *ret = DATA_GET(sd->current);
+ return DATA_GET(sd->current);
}
EAPI void
@@ -939,106 +815,34 @@ elm_flipselector_item_next_get(const Elm_Object_Item *it)
return NULL;
}
-EAPI void
-elm_flipselector_first_interval_set(Evas_Object *obj,
- double interval)
+EOLIAN static void
+_elm_flipselector_first_interval_set(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd, double interval)
{
- ELM_FLIPSELECTOR_CHECK(obj);
- eo_do(obj, elm_obj_flipselector_first_interval_set(interval));
-}
-
-static void
-_first_interval_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
- double interval = va_arg(*list, double);
- Elm_Flipselector_Smart_Data *sd = _pd;
sd->first_interval = interval;
}
-EAPI double
-elm_flipselector_first_interval_get(const Evas_Object *obj)
+EOLIAN static double
+_elm_flipselector_first_interval_get(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd)
{
- ELM_FLIPSELECTOR_CHECK(obj) 0;
- double ret = 0;
- eo_do((Eo *) obj, elm_obj_flipselector_first_interval_get(&ret));
- return ret;
+ return sd->first_interval;
}
-static void
-_first_interval_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_flipselector_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd EINA_UNUSED)
{
- double *ret = va_arg(*list, double *);
- Elm_Flipselector_Smart_Data *sd = _pd;
- *ret = sd->first_interval;
+ return EINA_FALSE;
}
-static void
-_elm_flipselector_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
-{
- Eina_Bool *ret = va_arg(*list, Eina_Bool *);
- *ret = EINA_FALSE;
-}
-
-static void
-_elm_flipselector_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_flipselector_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Flipselector_Data *sd EINA_UNUSED)
{
- Eina_Bool *ret = va_arg(*list, Eina_Bool *);
- *ret = EINA_FALSE;
+ return EINA_FALSE;
}
-static void
-_class_constructor(Eo_Class *klass)
+EOLIAN static void
+_elm_flipselector_class_constructor(Eo_Class *klass)
{
- const Eo_Op_Func_Description func_desc[] = {
- EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
-
- EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_flipselector_smart_add),
- EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_flipselector_smart_del),
-
- EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_flipselector_smart_theme),
- EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_EVENT), _elm_flipselector_smart_event),
- EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_flipselector_smart_focus_next_manager_is),
- EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_flipselector_smart_focus_direction_manager_is),
-
- EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIZING_EVAL), _elm_flipselector_smart_sizing_eval),
-
- EO_OP_FUNC(ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_FLIP_NEXT), _flip_next),
- EO_OP_FUNC(ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_FLIP_PREV), _flip_prev),
- EO_OP_FUNC(ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_ITEM_APPEND), _item_append),
- EO_OP_FUNC(ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_ITEM_PREPEND), _item_prepend),
- EO_OP_FUNC(ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_ITEMS_GET), _items_get),
- EO_OP_FUNC(ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_FIRST_ITEM_GET), _first_item_get),
- EO_OP_FUNC(ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_LAST_ITEM_GET), _last_item_get),
- EO_OP_FUNC(ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_SELECTED_ITEM_GET), _selected_item_get),
- EO_OP_FUNC(ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_FIRST_INTERVAL_SET), _first_interval_set),
- EO_OP_FUNC(ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_FIRST_INTERVAL_GET), _first_interval_get),
- EO_OP_FUNC_SENTINEL
- };
- eo_class_funcs_set(klass, func_desc);
-
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
}
-static const Eo_Op_Description op_desc[] = {
- EO_OP_DESCRIPTION(ELM_OBJ_FLIPSELECTOR_SUB_ID_FLIP_NEXT, "Programmatically select the next item of a flip selector widget."),
- EO_OP_DESCRIPTION(ELM_OBJ_FLIPSELECTOR_SUB_ID_FLIP_PREV, "Programmatically select the previous item of a flip selector widget."),
- EO_OP_DESCRIPTION(ELM_OBJ_FLIPSELECTOR_SUB_ID_ITEM_APPEND, "Append a (text) item to a flip selector widget."),
- EO_OP_DESCRIPTION(ELM_OBJ_FLIPSELECTOR_SUB_ID_ITEM_PREPEND, "Prepend a (text) item to a flip selector widget."),
- EO_OP_DESCRIPTION(ELM_OBJ_FLIPSELECTOR_SUB_ID_ITEMS_GET, "Get the internal list of items in a given flip selector widget."),
- EO_OP_DESCRIPTION(ELM_OBJ_FLIPSELECTOR_SUB_ID_FIRST_ITEM_GET, "Get the first item in the given flip selector widget's list of items."),
- EO_OP_DESCRIPTION(ELM_OBJ_FLIPSELECTOR_SUB_ID_LAST_ITEM_GET, "Get the last item in the given flip selector widget's list of items."),
- EO_OP_DESCRIPTION(ELM_OBJ_FLIPSELECTOR_SUB_ID_SELECTED_ITEM_GET, "Get the currently selected item in a flip selector widget."),
- EO_OP_DESCRIPTION(ELM_OBJ_FLIPSELECTOR_SUB_ID_FIRST_INTERVAL_SET, "Set the interval on time updates for a user mouse button hold on a flip selector widget."),
- EO_OP_DESCRIPTION(ELM_OBJ_FLIPSELECTOR_SUB_ID_FIRST_INTERVAL_GET, "Get the interval on time updates for a user mouse button hold on a flip selector widget."),
- EO_OP_DESCRIPTION_SENTINEL
-};
-static const Eo_Class_Description class_desc = {
- EO_VERSION,
- MY_CLASS_NAME,
- EO_CLASS_TYPE_REGULAR,
- EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_FLIPSELECTOR_BASE_ID, op_desc, ELM_OBJ_FLIPSELECTOR_SUB_ID_LAST),
- NULL,
- sizeof(Elm_Flipselector_Smart_Data),
- _class_constructor,
- NULL
-};
-EO_DEFINE_CLASS(elm_obj_flipselector_class_get, &class_desc, ELM_OBJ_LAYOUT_CLASS, NULL);
+
+#include "elm_flipselector.eo.c"
diff --git a/src/lib/elm_flipselector.eo b/src/lib/elm_flipselector.eo
new file mode 100644
index 000000000..e4d22a5f3
--- /dev/null
+++ b/src/lib/elm_flipselector.eo
@@ -0,0 +1,216 @@
+class Elm_Flipselector (Elm_Layout)
+{
+ eo_prefix: elm_obj_flipselector;
+ properties {
+ first_interval {
+ set {
+ /*@
+ Set the interval on time updates for a user mouse button hold
+ on a flip selector widget.
+
+ This interval value is @b decreased while the user holds the
+ mouse pointer either flipping up or flipping down a given flip
+ selector.
+
+ This helps the user to get to a given item distant from the
+ current one easier/faster, as it will start to flip quicker and
+ quicker on mouse button holds.
+
+ The calculation for the next flip interval value, starting from
+ the one set with this call, is the previous interval divided by
+ 1.05, so it decreases a little bit.
+
+ The default starting interval value for automatic flips is
+ @b 0.85 seconds.
+
+ @see elm_flipselector_first_interval_get()
+
+ @ingroup Flipselector */
+ }
+ get {
+ /*@
+ Get the interval on time updates for an user mouse button hold
+ on a flip selector widget.
+
+ @return The (first) interval value, in seconds, set on it
+
+ @see elm_flipselector_first_interval_set() for more details
+
+ @ingroup Flipselector */
+ }
+ values {
+ double interval; /*@ The (first) interval value in seconds */
+ }
+ }
+ items {
+ get {
+ /*@
+ Get the internal list of items in a given flip selector widget.
+
+ @return The list of items (#Elm_Object_Item as data) or
+ @c NULL on errors.
+
+ This list is @b not to be modified in any way and must not be
+ freed. Use the list members with functions like
+ elm_object_item_text_set(),
+ elm_object_item_text_get(),
+ elm_object_item_del(),
+ elm_flipselector_item_selected_get(),
+ elm_flipselector_item_selected_set().
+
+ @warning This list is only valid until @p obj object's internal
+ items list is changed. It should be fetched again with another
+ call to this function when changes happen.
+
+ @ingroup Flipselector */
+ return const Eina_List *;
+ }
+ }
+ first_item {
+ get {
+ /*@
+ Get the first item in the given flip selector widget's list of
+ items.
+
+ @return The first item or @c NULL, if it has no items (and on
+ errors)
+
+ @see elm_flipselector_item_append()
+ @see elm_flipselector_last_item_get()
+
+ @ingroup Flipselector */
+ return Elm_Object_Item *;
+ }
+ }
+ last_item {
+ get {
+ /*@
+ Get the last item in the given flip selector widget's list of
+ items.
+
+ @return The last item or @c NULL, if it has no items (and on
+ errors)
+
+ @see elm_flipselector_item_prepend()
+ @see elm_flipselector_first_item_get()
+
+ @ingroup Flipselector */
+ return Elm_Object_Item *;
+ }
+ }
+ selected_item {
+ get {
+ /*@
+ Get the currently selected item in a flip selector widget.
+
+ @return The selected item or @c NULL, if the widget has no items
+ (and on errors)
+
+ @ingroup Flipselector */
+ return Elm_Object_Item *;
+ }
+ }
+ }
+ methods {
+ item_prepend {
+ /*@
+ Prepend a (text) item to a flip selector widget
+
+ @return A handle to the item added or @c NULL, on errors
+
+ The widget's list of labels to show will be prepended with the
+ given value. If the user wishes so, a callback function pointer
+ can be passed, which will get called when this same item is
+ selected.
+
+ @note The current selection @b won't be modified by prepending
+ an element to the list.
+
+ @note The maximum length of the text label is going to be
+ determined <b>by the widget's theme</b>. Strings larger than
+ that value are going to be @b truncated.
+
+ @ingroup Flipselector */
+
+ return Elm_Object_Item *;
+ params {
+ @in const char *label; /*@ The (text) label of the new item */
+ @in flipselector_func_type func; /*@ Convenience callback function to take place when
+ item is selected */
+ @in void *data; /*@ Data passed to @p func, above */
+ }
+ }
+ flip_next {
+ /*@
+ Programmatically select the next item of a flip selector widget
+
+ @note The selection will be animated. Also, if it reaches the
+ end of its list of member items, it will continue with the first
+ one onwards.
+
+ @ingroup Flipselector */
+
+ }
+ item_append {
+ /*@
+ Append a (text) item to a flip selector widget
+
+ @return A handle to the item added or @c NULL, on errors
+
+ The widget's list of labels to show will be appended with the
+ given value. If the user wishes so, a callback function pointer
+ can be passed, which will get called when this same item is
+ selected.
+
+ @note The current selection @b won't be modified by appending an
+ element to the list.
+
+ @note The maximum length of the text label is going to be
+ determined <b>by the widget's theme</b>. Strings larger than
+ that value are going to be @b truncated.
+
+ @ingroup Flipselector */
+
+ return Elm_Object_Item *;
+ params {
+ @in const char *label; /*@ The (text) label of the new item */
+ @in flipselector_func_type func; /*@ Convenience callback function to take place when
+ item is selected */
+ @in const void *data; /*@ Data passed to @p func, above */
+ }
+ }
+ flip_prev {
+ /*@
+ Programmatically select the previous item of a flip selector
+ widget
+
+ @note The selection will be animated. Also, if it reaches the
+ beginning of its list of member items, it will continue with the
+ last one backwards.
+
+ @ingroup Flipselector */
+
+ }
+ }
+ implements {
+ class::constructor;
+ Eo_Base::constructor;
+ Evas_Smart::add;
+ Evas_Smart::del;
+ Elm_Widget::theme_apply;
+ Elm_Widget::focus_next_manager_is;
+ Elm_Widget::focus_direction_manager_is;
+ Elm_Widget::event;
+ Elm_Layout::sizing_eval;
+ }
+ events {
+ selected;
+ underflowed;
+ overflowed;
+ language,changed;
+ access,changed;
+ focused;
+ unfocused;
+ }
+
+}
diff --git a/src/lib/elm_flipselector_eo.h b/src/lib/elm_flipselector_eo.h
index d9526c5e7..ced54fefa 100644
--- a/src/lib/elm_flipselector_eo.h
+++ b/src/lib/elm_flipselector_eo.h
@@ -1,11 +1,14 @@
+typedef void (*flipselector_func_type)(void *, Evas_Object *, void *);
+
+#include "elm_flipselector.eo.h"
+
+#if 0
#define ELM_OBJ_FLIPSELECTOR_CLASS elm_obj_flipselector_class_get()
const Eo_Class *elm_obj_flipselector_class_get(void) EINA_CONST;
extern EAPI Eo_Op ELM_OBJ_FLIPSELECTOR_BASE_ID;
-typedef void (*flipselector_func_type)(void *, Evas_Object *, void *);
-
enum
{
ELM_OBJ_FLIPSELECTOR_SUB_ID_FLIP_NEXT,
@@ -169,3 +172,4 @@ enum
* @ingroup Flipselector
*/
#define elm_obj_flipselector_first_interval_get(ret) ELM_OBJ_FLIPSELECTOR_ID(ELM_OBJ_FLIPSELECTOR_SUB_ID_FIRST_INTERVAL_GET), EO_TYPECHECK(double *, ret)
+#endif
diff --git a/src/lib/elm_widget_flipselector.h b/src/lib/elm_widget_flipselector.h
index bc640b2d9..79696043d 100644
--- a/src/lib/elm_widget_flipselector.h
+++ b/src/lib/elm_widget_flipselector.h
@@ -17,8 +17,8 @@
/**
* Base layout smart data extended with flipselector instance data.
*/
-typedef struct _Elm_Flipselector_Smart_Data Elm_Flipselector_Smart_Data;
-struct _Elm_Flipselector_Smart_Data
+typedef struct _Elm_Flipselector_Data Elm_Flipselector_Data;
+struct _Elm_Flipselector_Data
{
Evas_Object *obj;
Eina_List *items;
@@ -46,7 +46,7 @@ struct _Elm_Flipselector_Item
};
#define ELM_FLIPSELECTOR_DATA_GET(o, sd) \
- Elm_Flipselector_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_FLIPSELECTOR_CLASS)
+ Elm_Flipselector_Data * sd = eo_data_scope_get(o, ELM_OBJ_FLIPSELECTOR_CLASS)
#define ELM_FLIPSELECTOR_DATA_GET_OR_RETURN(o, ptr) \
ELM_FLIPSELECTOR_DATA_GET(o, ptr); \