Earlier this month, there was a svn commit
(http://trac.enlightenment.org/e/changeset/62496) which added a few
page-related APIs to the elm scroller.  These should probably also be
added to gengrid, genlist and maybe even grid and list.  Right now,
though, I need them for gengrid.  So I propose this patch, based
entirely on the change that went in before.  I've built it and I'm
using these new gengrid APIs in my code now.

------------------------

diff -x '*.svn*' -rupN elementary-orig/src/lib/Elementary.h.in
elementary/src/lib/Elementary.h.in
--- elementary-orig/src/lib/Elementary.h.in     2011-08-29
21:32:41.018459430 -0700
+++ elementary/src/lib/Elementary.h.in  2011-08-29 20:17:09.326458551 -0700
@@ -8350,6 +8350,87 @@ extern "C" {
   EAPI void               elm_gengrid_page_size_set(Evas_Object
*obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize)
EINA_ARG_NONNULL(1);

   /**
+    * @brief Get gengrid current page number.
+    *
+    * @param obj The gengrid object
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * The page number starts from 0. 0 is the first page.
+    * Current page means the page which meet the top-left of the viewport.
+    * If there are two or more pages in the viewport, it returns the
number of page
+    * which meet the top-left of the viewport.
+    *
+    * @see elm_gengrid_last_page_get()
+    * @see elm_gengrid_page_show()
+    * @see elm_gengrid_page_brint_in()
+    */
+   EAPI void         elm_gengrid_current_page_get(Evas_Object *obj,
int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
+
+   /**
+    * @brief Get scroll last page number.
+    *
+    * @param obj The gengrid object
+    * @param h_pagenumber The horizoptal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * The page number starts from 0. 0 is the first page.
+    * This returns the last page number among the pages.
+    *
+    * @see elm_gengrid_current_page_get()
+    * @see elm_gengrid_page_show()
+    * @see elm_gengrid_page_brint_in()
+    */
+   EAPI void         elm_gengrid_last_page_get(Evas_Object *obj, int
*h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
+   /**
+    * Show a specific virtual region within the gengrid content
object by page number.
+    *
+    * @param obj The gengrid object
+    * @param h_pagenumber The horizoptal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * 0, 0 of the indicated page is located at the top-left of the viewport.
+    * This will jump to the page directly without animation.
+    *
+    * Example of usage:
+    *
+    * @code
+    * sc = elm_gengrid_add(win);
+    * elm_gengrid_content_set(sc, content);
+    * elm_gengrid_page_relative_set(sc, 1, 0);
+    * elm_gengrid_current_page_get(sc, &h_page, &v_page);
+    * elm_gengrid_page_show(sc, h_page + 1, v_page);
+    * @endcode
+    *
+    * @see elm_gengrid_page_bring_in()
+    */
+   EAPI void         elm_gengrid_page_show(Evas_Object *obj, int
h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+
+   /**
+    * Show a specific virtual region within the gengrid content
object by page number.
+    *
+    * @param obj The gengrid object
+    * @param h_pagenumber The horizoptal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * 0, 0 of the indicated page is located at the top-left of the viewport.
+    * This will slide to the page with animation.
+    *
+    * Example of usage:
+    *
+    * @code
+    * sc = elm_gengrid_add(win);
+    * elm_gengrid_content_set(sc, content);
+    * elm_gengrid_page_relative_set(sc, 1, 0);
+    * elm_gengrid_last_page_get(sc, &h_page, &v_page);
+    * elm_gengrid_page_bring_in(sc, h_page, v_page);
+    * @endcode
+    *
+    * @see elm_gengrid_page_show()
+    */
+    EAPI void         elm_gengrid_page_bring_in(Evas_Object *obj, int
h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+
+   /**
    * Set for what direction a given gengrid widget will expand while
    * placing its items.
    *
diff -x '*.svn*' -rupN elementary-orig/src/lib/elm_gengrid.c
elementary/src/lib/elm_gengrid.c
--- elementary-orig/src/lib/elm_gengrid.c       2011-08-29
21:32:41.014459430 -0700
+++ elementary/src/lib/elm_gengrid.c    2011-08-29 20:17:53.646458559 -0700
@@ -2471,6 +2471,46 @@ elm_gengrid_page_size_set(Evas_Object *o
                                 v_pagesize);
 }

+EAPI void
+elm_gengrid_current_page_get(Evas_Object *obj, int *h_pagenumber, int
*v_pagenumber)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if (wd->scr)
+     elm_smart_scroller_current_page_get(wd->scr, h_pagenumber, v_pagenumber);
+}
+
+EAPI void
+elm_gengrid_last_page_get(Evas_Object *obj, int *h_pagenumber, int
*v_pagenumber)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if (wd->scr)
+     elm_smart_scroller_last_page_get(wd->scr, h_pagenumber, v_pagenumber);
+}
+
+EAPI void
+elm_gengrid_page_show(Evas_Object *obj, int h_pagenumber, int v_pagenumber)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if (wd->scr)
+     elm_smart_scroller_page_show(wd->scr, h_pagenumber, v_pagenumber);
+}
+
+EAPI void
+elm_gengrid_page_bring_in(Evas_Object *obj, int h_pagenumber, int v_pagenumber)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if (wd->scr)
+     elm_smart_scroller_page_bring_in(wd->scr, h_pagenumber, v_pagenumber);
+}
+
 EAPI Elm_Gengrid_Item *
 elm_gengrid_first_item_get(const Evas_Object *obj)
 {

------------------------------------------------------------------------------
Special Offer -- Download ArcSight Logger for FREE!
Finally, a world-class log management solution at an even better 
price-free! And you'll get a free "Love Thy Logs" t-shirt when you
download Logger. Secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsisghtdev2dev
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to