Add two apis to limit page size of gengrid's scroller : elm_gengrid_page_relative_set and elm_gengrid_page_size_set.

These functions work exactly as those in elm_scroller.



SVN revision: 52895
This commit is contained in:
Nicolas Aguirre 2010-09-29 16:59:35 +00:00
parent 52e3df6faf
commit 62772bdb32
4 changed files with 77 additions and 0 deletions

View File

@ -665,6 +665,8 @@ extern "C" {
EAPI Eina_Bool elm_gengrid_multi_select_get(const Evas_Object *obj);
EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel);
EAPI void elm_grngrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize);
EAPI void elm_gengrid_horizontal_set(Evas_Object *obj, Eina_Bool setting);
EAPI void elm_gengrid_item_tooltip_text_set(Elm_Gengrid_Item *item, const char *text);
EAPI void elm_gengrid_item_tooltip_content_cb_set(Elm_Gengrid_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);

View File

@ -1884,6 +1884,70 @@ elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v
*
* @ingroup Gengrid
*/
/**
* Set gengrid scroll page size relative to viewport size.
*
* The gengrid scroller is capable of limiting scrolling by the user to "pages"
* That is to jump by and only show a "whole page" at a time as if the
* continuous area of the scroller content is split into page sized pieces.
* This sets the size of a page relative to the viewport of the scroller. 1.0 is
* "1 viewport" is size (horizontally or vertically). 0.0 turns it off in that
* axis. This is mutually exclusive with page size
* (see elm_gengrid_page_size_set() for more information). Likewise 0.5
* is "half a viewport". Sane usable valus are normally between 0.0 and 1.0
* including 1.0. If you only want 1 axis to be page "limited", use 0.0 for
* the other axis.
*
* @param obj The gengrid object
* @param h_pagerel The horizontal page relative size
* @param v_pagerel The vertical page relative size
*
* @ingroup Gengrid
*/
EAPI void
elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel)
{
Evas_Coord pagesize_h;
Evas_Coord pagesize_v;
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
elm_smart_scroller_paging_get(wd->scr, NULL, NULL, &pagesize_h, &pagesize_v);
elm_smart_scroller_paging_set(wd->scr, h_pagerel, v_pagerel, pagesize_h, pagesize_v);
}
/**
* Set gengrid scroll page size.
*
* See also elm_gengrid_page_relative_set(). This, instead of a page size
* being relative to the viewport, sets it to an absolute fixed value, with
* 0 turning it off for that axis.
*
* @param obj The gengrid object
* @param h_pagesize The horizontal page size
* @param v_pagesize The vertical page size
*
* @ingroup Gengrid
*/
EAPI void
elm_gengrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize)
{
double pagerel_h;
double pagerel_v;
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
elm_smart_scroller_paging_get(wd->scr, &pagerel_h, &pagerel_v, NULL, NULL);
elm_smart_scroller_paging_set(wd->scr, pagerel_h, pagerel_v, h_pagesize, v_pagesize);
}
EAPI const Eina_List *
elm_gengrid_items_get(const Evas_Object *obj)
{

View File

@ -1045,6 +1045,16 @@ elm_smart_scroller_paging_set(Evas_Object *obj, double pagerel_h, double pagerel
_smart_page_adjust(sd);
}
void
elm_smart_scroller_paging_get(Evas_Object *obj, double *pagerel_h, double *pagerel_v, Evas_Coord *pagesize_h, Evas_Coord *pagesize_v)
{
API_ENTRY return;
if(pagerel_h) *pagerel_h = sd->pagerel_h;
if(pagerel_v) *pagerel_v = sd->pagerel_v;
if(pagesize_h) *pagesize_h = sd->pagesize_h;
if(pagesize_v) *pagesize_v = sd->pagesize_v;
}
void
elm_smart_scroller_region_bring_in(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
{

View File

@ -29,5 +29,6 @@ void elm_smart_scroller_freeze_set (Evas_Object *obj, Eina_Bool fre
void elm_smart_scroller_bounce_allow_set (Evas_Object *obj, Eina_Bool horiz, Eina_Bool vert);
void elm_smart_scroller_bounce_allow_get (const Evas_Object *obj, Eina_Bool *horiz, Eina_Bool *vert);
void elm_smart_scroller_paging_set (Evas_Object *obj, double pagerel_h, double pagerel_v, Evas_Coord pagesize_h, Evas_Coord pagesize_v);
void elm_smart_scroller_paging_get (Evas_Object *obj, double *pagerel_h, double *pagerel_v, Evas_Coord *pagesize_h, Evas_Coord *pagesize_v);
void elm_smart_scroller_region_bring_in (Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
void elm_smart_scroller_widget_set (Evas_Object *obj, Evas_Object *wid);