Gengrid scrolling callbacks
This code snippet demonstrates a few basic scrolling events that can be used for gengrid object.
//return an icon (defined by data)
static Evas_Object *_item_content_get(void *data, Evas_Object *obj, const char *part) {
Evas_Object *icon = elm_icon_add(obj);
elm_icon_standard_set(icon, data);
evas_object_show(icon);
return icon;
}
//calbacks definitions
static void _edge_left_cb(void *data, Evas_Object *obj, void *event_info) {
dlog_print(DLOG_INFO, LOG_TAG, "Left edge reached.");
}
static void _edge_right_cb(void *data, Evas_Object *obj, void *event_info) {
dlog_print(DLOG_INFO, LOG_TAG, "Right edge reached.");
}
static void _scroll_anim_start_cb(void *data, Evas_Object *obj, void *event_info) {
dlog_print(DLOG_INFO, LOG_TAG, "Scroll animation started.");
}
static void _scroll_anim_stop_cb(void *data, Evas_Object *obj, void *event_info) {
dlog_print(DLOG_INFO, LOG_TAG, "Scroll animation stopped.");
}
static void gengrid_test(Evas_Object *parent) {
Evas_Object *grid = elm_gengrid_add(parent);
evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(parent, grid);
evas_object_show(grid);
elm_gengrid_horizontal_set(grid, EINA_TRUE);
elm_gengrid_item_size_set(grid, 150, 150);
Elm_Gengrid_Item_Class *gic;
gic = elm_gengrid_item_class_new();
gic->func.content_get = _item_content_get;
//create some items
for (int i = 0; i < 15; i++) {
elm_gengrid_item_append(grid, gic, "refresh", NULL, NULL);
elm_gengrid_item_append(grid, gic, "home", NULL, NULL);
}
//callbacks triggered when grid reaches it's left or right edge
evas_object_smart_callback_add(grid, "edge,left", _edge_left_cb, NULL);
evas_object_smart_callback_add(grid, "edge,right", _edge_right_cb, NULL);
//callbacks triggered for scrolling animation
evas_object_smart_callback_add(grid, "scroll,anim,start", _scroll_anim_start_cb, NULL);
evas_object_smart_callback_add(grid, "scroll,anim,stop", _scroll_anim_stop_cb, NULL);
}