[elm] Gengrid now a scrollable layout.

SVN revision: 73541
This commit is contained in:
Gustavo Lima Chaves 2012-07-10 21:40:38 +00:00
parent ce361dca42
commit 363cdf94c3
5 changed files with 2734 additions and 2040 deletions

View File

@ -74,16 +74,16 @@ set_api_state(api_data *api)
break;
case GRID_NO_BOUNCE: /* 3 */
elm_gengrid_bounce_set(grid, EINA_TRUE, EINA_FALSE);
elm_scroller_bounce_set(grid, EINA_TRUE, EINA_FALSE);
break;
case GRID_PAGE_RELATIVE: /* 4 */
elm_gengrid_bounce_set(grid, EINA_TRUE, EINA_TRUE);
elm_gengrid_page_relative_set(grid, 0.5, 0.5);
elm_scroller_bounce_set(grid, EINA_TRUE, EINA_TRUE);
elm_scroller_page_relative_set(grid, 0.5, 0.5);
break;
case GRID_PAGE_SIZE: /* 5 */
elm_gengrid_page_size_set(grid, 50, 25);
elm_scroller_page_size_set(grid, 50, 25);
break;
case GRID_TOOLTIP_SET_TEXT: /* 6 */

View File

@ -59,26 +59,26 @@ external_gengrid_state_set(void *data __UNUSED__, Evas_Object *obj, const void *
if (p->h_bounce_exists)
{
Eina_Bool h_bounce, v_bounce;
elm_gengrid_bounce_get(obj, &h_bounce, &v_bounce);
elm_gengrid_bounce_set(obj, p->h_bounce, v_bounce);
elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
elm_scroller_bounce_set(obj, p->h_bounce, v_bounce);
}
if (p->v_bounce_exists)
{
Eina_Bool h_bounce, v_bounce;
elm_gengrid_bounce_get(obj, &h_bounce, &v_bounce);
elm_gengrid_bounce_set(obj, h_bounce, p->v_bounce);
elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
elm_scroller_bounce_set(obj, h_bounce, p->v_bounce);
}
if (p->h_pagerel_exists)
{
double h_pagerel, v_pagerel;
elm_gengrid_page_relative_get(obj, &h_pagerel, &v_pagerel);
elm_gengrid_page_relative_set(obj, h_pagerel, p->v_pagerel);
elm_scroller_page_relative_get(obj, &h_pagerel, &v_pagerel);
elm_scroller_page_relative_set(obj, h_pagerel, p->v_pagerel);
}
if (p->v_pagerel_exists)
{
double h_pagerel, v_pagerel;
elm_gengrid_page_relative_get(obj, &h_pagerel, &v_pagerel);
elm_gengrid_page_relative_set(obj, p->h_pagerel, v_pagerel);
elm_scroller_page_relative_get(obj, &h_pagerel, &v_pagerel);
elm_scroller_page_relative_set(obj, p->h_pagerel, v_pagerel);
}
if (p->h_itemsize_exists)
{
@ -145,8 +145,8 @@ external_gengrid_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_E
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
Eina_Bool h_bounce, v_bounce;
elm_gengrid_bounce_get(obj, &h_bounce, &v_bounce);
elm_gengrid_bounce_set(obj, param->i, v_bounce);
elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
elm_scroller_bounce_set(obj, param->i, v_bounce);
return EINA_TRUE;
}
}
@ -155,8 +155,8 @@ external_gengrid_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_E
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
Eina_Bool h_bounce, v_bounce;
elm_gengrid_bounce_get(obj, &h_bounce, &v_bounce);
elm_gengrid_bounce_set(obj, h_bounce, param->i);
elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
elm_scroller_bounce_set(obj, h_bounce, param->i);
return EINA_TRUE;
}
}
@ -165,8 +165,8 @@ external_gengrid_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_E
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
{
double h_pagerel, v_pagerel;
elm_gengrid_page_relative_get(obj, &h_pagerel, &v_pagerel);
elm_gengrid_page_relative_set(obj, param->d, v_pagerel);
elm_scroller_page_relative_get(obj, &h_pagerel, &v_pagerel);
elm_scroller_page_relative_set(obj, param->d, v_pagerel);
return EINA_TRUE;
}
}
@ -175,8 +175,8 @@ external_gengrid_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_E
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
{
double h_pagerel, v_pagerel;
elm_gengrid_page_relative_get(obj, &h_pagerel, &v_pagerel);
elm_gengrid_page_relative_set(obj, h_pagerel, param->d);
elm_scroller_page_relative_get(obj, &h_pagerel, &v_pagerel);
elm_scroller_page_relative_set(obj, h_pagerel, param->d);
return EINA_TRUE;
}
}
@ -270,7 +270,7 @@ external_gengrid_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_E
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
Eina_Bool h_bounce, v_bounce;
elm_gengrid_bounce_get(obj, &h_bounce, &v_bounce);
elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
param->i = h_bounce;
return EINA_TRUE;
}
@ -280,7 +280,7 @@ external_gengrid_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_E
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
Eina_Bool h_bounce, v_bounce;
elm_gengrid_bounce_get(obj, &h_bounce, &v_bounce);
elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
param->i = v_bounce;
return EINA_TRUE;
}
@ -290,7 +290,7 @@ external_gengrid_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_E
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
{
double h_pagerel, v_pagerel;
elm_gengrid_page_relative_get(obj, &h_pagerel, &v_pagerel);
elm_scroller_page_relative_get(obj, &h_pagerel, &v_pagerel);
param->d = h_pagerel;
return EINA_TRUE;
}
@ -300,7 +300,7 @@ external_gengrid_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_E
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
{
double h_pagerel, v_pagerel;
elm_gengrid_page_relative_get(obj, &h_pagerel, &v_pagerel);
elm_scroller_page_relative_get(obj, &h_pagerel, &v_pagerel);
param->d = v_pagerel;
return EINA_TRUE;
}

View File

@ -27,6 +27,8 @@ struct Elm_Gen_Item
{
ELM_WIDGET_ITEM;
EINA_INLIST;
//FIXME: remove it
Widget_Data *wd;
Elm_Gen_Item_Type *item;
const Elm_Gen_Item_Class *itc;
@ -66,6 +68,7 @@ struct Elm_Gen_Item
Eina_Bool flipped : 1; /**< a flag that shows the flip status of the item. */
};
//FIXME: remove it
typedef struct _Pan Pan;
struct _Pan
{

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,9 @@
* @defgroup Gengrid Gengrid (Generic grid)
* @ingroup Elementary
*
* @image html gengrid_inheritance_tree.png
* @image latex gengrid_inheritance_tree.eps
*
* This widget aims to position objects in a grid layout while
* actually creating and rendering only the visible ones, using the
* same idea as the @ref Genlist "genlist": the user defines a @b
@ -13,6 +16,16 @@
* view) or via the keyboard, navigating through item with the
* arrow keys.
*
* This widget implements the @b @ref elm-scrollable-interface
* interface, so that all (non-deprecated) functions for the base @ref
* Scroller widget also work for gengrids.
*
* Some calls on the gengrid's API are marked as @b deprecated, as
* they just wrap the scrollable widgets counterpart functions. Use
* the ones we point you to, for each case of deprecation here,
* instead -- eventually the deprecated ones will be discarded (next
* major release).
*
* @section Gengrid_Layouts Gengrid layouts
*
* Gengrid may layout its items in one of two possible layouts:
@ -386,11 +399,13 @@ EAPI Eina_Bool elm_gengrid_horizontal_get(const Evas_Object
*
* @note By default, gengrids have bouncing enabled on both axis
*
* @see elm_gengrid_bounce_get()
* @deprecated Use elm_scroller_bounce_set() instead.
*
* @see elm_scroller_bounce_set()
*
* @ingroup Gengrid
*/
EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
EINA_DEPRECATED EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
/**
* Get whether bouncing effects are enabled or disabled, for a
@ -402,11 +417,13 @@ EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina
* @param v_bounce Pointer to a variable where to store the
* vertical bouncing flag.
*
* @see elm_gengrid_bounce_set() for more details
* @deprecated Use elm_scroller_bounce_get() instead.
*
* @see elm_scroller_bounce_get()
*
* @ingroup Gengrid
*/
EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
EINA_DEPRECATED EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
/**
* Append a new item in a given gengrid widget.
@ -634,17 +651,22 @@ EAPI Elm_Object_Item *elm_gengrid_last_item_get(const Evas_Object *o
* @param policy_v Vertical scrollbar policy.
*
* This sets the scrollbar visibility policy for the given gengrid
* scroller. #ELM_SCROLLER_POLICY_AUTO means the scrollbar is
* made visible if it is needed, and otherwise kept hidden. #ELM_SCROLLER_POLICY_ON
* turns it on all the time, and #ELM_SCROLLER_POLICY_OFF always keeps it off.
* This applies respectively for the horizontal and vertical scrollbars.
* Default is #ELM_SCROLLER_POLICY_AUTO
* scroller. #ELM_SCROLLER_POLICY_AUTO means the scrollbar is made
* visible if it is needed, and otherwise kept
* hidden. #ELM_SCROLLER_POLICY_ON turns it on all the time, and
* #ELM_SCROLLER_POLICY_OFF always keeps it off. This applies
* respectively for the horizontal and vertical scrollbars. Default
* is #ELM_SCROLLER_POLICY_AUTO.
*
* @deprecated Use elm_scroller_policy_set() instead.
*
* @see elm_scroller_policy_set()
*
* @see elm_gengrid_scroller_policy_get()
*
* @ingroup Gengrid
*/
EAPI void elm_gengrid_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
EINA_DEPRECATED EAPI void elm_gengrid_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
/**
* Get the scrollbar policy
@ -653,11 +675,15 @@ EAPI void elm_gengrid_scroller_policy_set(Evas_Object *
* @param policy_h Pointer to store the horizontal scrollbar policy.
* @param policy_v Pointer to store the vertical scrollbar policy.
*
* @deprecated Use elm_scroller_policy_get() instead.
*
* @see elm_scroller_policy_get()
*
* @see elm_gengrid_scroller_policy_set()
*
* @ingroup Gengrid
*/
EAPI void elm_gengrid_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
EINA_DEPRECATED EAPI void elm_gengrid_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
/**
* Get the @b next item in a gengrid widget's internal list of items,
@ -1317,11 +1343,13 @@ EAPI Eina_Bool elm_gengrid_reorder_mode_get(const Evas_Objec
* values, too -- elm_gengrid_page_size_set(). Naturally, its use
* is mutually exclusive to this one.
*
* @see elm_gengrid_page_relative_get()
* @deprecated Use elm_scroller_page_relative_set() instead.
*
* @see elm_scroller_page_relative_set()
*
* @ingroup Gengrid
*/
EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel);
EINA_DEPRECATED EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel);
/**
* Get a given gengrid widget's scrolling page size, relative to
@ -1333,11 +1361,13 @@ EAPI void elm_gengrid_page_relative_set(Evas_Object *ob
* @param v_pagerel Pointer to a variable where to store the
* vertical page (relative) size
*
* @see elm_gengrid_page_relative_set() for more details
* @deprecated Use elm_scroller_page_relative_get() instead.
*
* @see elm_scroller_page_relative_get()
*
* @ingroup Gengrid
*/
EAPI void elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel);
EINA_DEPRECATED EAPI void elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel);
/**
* Set a given gengrid widget's scrolling page size
@ -1363,9 +1393,13 @@ EAPI void elm_gengrid_page_relative_get(const Evas_Obje
* values, too -- elm_gengrid_page_relative_set(). Naturally, its
* use is mutually exclusive to this one.
*
* @deprecated Use elm_scroller_page_size_set() instead.
*
* @see elm_scroller_page_size_set()
*
* @ingroup Gengrid
*/
EAPI void elm_gengrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize);
EINA_DEPRECATED EAPI void elm_gengrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize);
/**
* @brief Get gengrid current page number.
@ -1379,11 +1413,15 @@ EAPI void elm_gengrid_page_size_set(Evas_Object *obj, E
* If there are two or more pages in the viewport, it returns the number of page
* which meet the top-left of the viewport.
*
* @deprecated Use elm_scroller_current_page_set() instead.
*
* @see elm_scroller_current_page_set()
*
* @see elm_gengrid_last_page_get()
* @see elm_gengrid_page_show()
* @see elm_gengrid_page_bring_in()
*/
EAPI void elm_gengrid_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
EINA_DEPRECATED EAPI void elm_gengrid_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
/**
* @brief Get gengrid last page number.
@ -1395,11 +1433,15 @@ EAPI void elm_gengrid_current_page_get(const Evas_Objec
* The page number starts from 0. 0 is the first page.
* This returns the last page number among the pages.
*
* @deprecated Use elm_scroller_last_page_set() instead.
*
* @see elm_scroller_last_page_set()
*
* @see elm_gengrid_current_page_get()
* @see elm_gengrid_page_show()
* @see elm_gengrid_page_bring_in()
*/
EAPI void elm_gengrid_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
EINA_DEPRECATED EAPI void elm_gengrid_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
/**
* Show a specific virtual region within the gengrid content object by page number.
@ -1445,9 +1487,13 @@ EAPI void elm_gengrid_page_show(const Evas_Object *obj,
* elm_gengrid_page_bring_in(sc, h_page, v_page);
* @endcode
*
* @deprecated Use elm_scroller_page_bring_in() instead.
*
* @see elm_scroller_page_bring_in()
*
* @see elm_gengrid_page_show()
*/
EAPI void elm_gengrid_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
EINA_DEPRECATED EAPI void elm_gengrid_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
/**
* Get a given gengrid item's position, relative to the whole