*
* Copyright (C) 2008 Nokia Corporation, all rights reserved.
*
- * Contact: Karl Lattimer <karl.lattimer@nokia.com>
+ * Contact: Rodrigo Novo <rodrigo.novo@nokia.com>
*
* This widget is based on MokoFingerScroll from libmokoui
* OpenMoko Application Framework UI Library
#ifndef _HILDON_PANNABLE_AREA
#define _HILDON_PANNABLE_AREA
-#include <glib-object.h>
#include <gtk/gtk.h>
G_BEGIN_DECLS
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
HILDON_TYPE_PANNABLE_AREA, HildonPannableAreaClass))
-GType
-hildon_pannable_area_mode_get_type (void) G_GNUC_CONST;
+/**
+ * HildonPannableAreaMode:
+ * @HILDON_PANNABLE_AREA_MODE_PUSH: Areaing follows pointer
+ * @HILDON_PANNABLE_AREA_MODE_ACCEL: Areaing uses physics to "spin" the widget
+ * @HILDON_PANNABLE_AREA_MODE_AUTO: Automatically chooses between push and accel
+ * modes, depending on input.
+ *
+ * Used to change the behaviour of the pannable areaing
+ */
+typedef enum {
+ HILDON_PANNABLE_AREA_MODE_PUSH,
+ HILDON_PANNABLE_AREA_MODE_ACCEL,
+ HILDON_PANNABLE_AREA_MODE_AUTO
+} HildonPannableAreaMode;
-#define HILDON_TYPE_PANNABLE_AREA_MODE \
- (hildon_pannable_area_mode_get_type())
+/**
+ * HildonMovementMode:
+ * @HILDON_MOVEMENT_MODE_HORIZ:
+ * @HILDON_MOVEMENT_MODE_VERT:
+ * @HILDON_MOVEMENT_MODE_BOTH:
+ *
+ * Used to control the movement of the pannable, we can allow or
+ * disallow horizontal or vertical movement. This way the applications
+ * can control the movement using scroll_to and jump_to functions
+ */
+typedef enum {
+ HILDON_MOVEMENT_MODE_HORIZ = 1 << 1,
+ HILDON_MOVEMENT_MODE_VERT = 1 << 2,
+ HILDON_MOVEMENT_MODE_BOTH = 0x000006
+} HildonMovementMode;
-GType
-hildon_pannable_area_indicator_mode_get_type (void) G_GNUC_CONST;
+/**
+ * HildonMovementDirection:
+ * @HILDON_MOVEMENT_UP:
+ * @HILDON_MOVEMENT_DOWN:
+ * @HILDON_MOVEMENT_LEFT:
+ * @HILDON_MOVEMENT_RIGHT:
+ *
+ * Used to point out the direction of the movement
+ */
+typedef enum {
+ HILDON_MOVEMENT_UP,
+ HILDON_MOVEMENT_DOWN,
+ HILDON_MOVEMENT_LEFT,
+ HILDON_MOVEMENT_RIGHT
+} HildonMovementDirection;
-#define HILDON_TYPE_PANNABLE_AREA_INDICATOR_MODE \
- (hildon_pannable_area_indicator_mode_get_type())
+/**
+ * HildonSizeRequestPolicy:
+ * @HILDON_SIZE_REQUEST_MINIMUM: The minimum size the widget could use
+ * to paint itself
+ * @HILDON_SIZE_REQUEST_CHILDREN: The minimum size of the children of
+ * the widget
+ *
+ * Used to control the size request policy of the widget
+ */
+typedef enum {
+ HILDON_SIZE_REQUEST_MINIMUM,
+ HILDON_SIZE_REQUEST_CHILDREN
+} HildonSizeRequestPolicy;
/**
* HildonPannableArea:
*/
typedef struct _HildonPannableArea HildonPannableArea;
typedef struct _HildonPannableAreaClass HildonPannableAreaClass;
+typedef struct _HildonPannableAreaPrivate HildonPannableAreaPrivate;
struct _HildonPannableArea
{
- GtkEventBox parent;
+ GtkBin parent;
+
+ /* private */
+ HildonPannableAreaPrivate *priv;
};
struct _HildonPannableAreaClass
{
- GtkEventBoxClass parent_class;
+ GtkBinClass parent_class;
+
+ void (* horizontal_movement) (HildonPannableArea *area,
+ HildonMovementDirection direction,
+ gdouble x, gdouble y);
+ void (* vertical_movement) (HildonPannableArea *area,
+ HildonMovementDirection direction,
+ gdouble x, gdouble y);
};
-/**
- * HildonPannableAreaMode:
- * @HILDON_PANNABLE_AREA_MODE_PUSH: Areaing follows pointer
- * @HILDON_PANNABLE_AREA_MODE_ACCEL: Areaing uses physics to "spin" the widget
- * @HILDON_PANNABLE_AREA_MODE_AUTO: Automatically chooses between push and accel
- * modes, depending on input.
- *
- * Used to change the behaviour of the pannable areaing
- */
-typedef enum {
- HILDON_PANNABLE_AREA_MODE_PUSH,
- HILDON_PANNABLE_AREA_MODE_ACCEL,
- HILDON_PANNABLE_AREA_MODE_AUTO
-} HildonPannableAreaMode;
-
-typedef enum {
- HILDON_PANNABLE_AREA_INDICATOR_MODE_AUTO,
- HILDON_PANNABLE_AREA_INDICATOR_MODE_SHOW,
- HILDON_PANNABLE_AREA_INDICATOR_MODE_HIDE
-} HildonPannableAreaIndicatorMode;
-
GType hildon_pannable_area_get_type (void);
GtkWidget* hildon_pannable_area_new (void);
gdouble decel, guint sps);
void hildon_pannable_area_add_with_viewport (HildonPannableArea *area,
GtkWidget *child);
+void hildon_pannable_area_scroll_to (HildonPannableArea *area,
+ const gint x, const gint y);
+void hildon_pannable_area_jump_to (HildonPannableArea *area,
+ const gint x, const gint y);
+void hildon_pannable_area_scroll_to_child (HildonPannableArea *area,
+ GtkWidget *child);
+void hildon_pannable_area_jump_to_child (HildonPannableArea *area,
+ GtkWidget *child);
+GtkWidget* hildon_pannable_get_child_widget_at (HildonPannableArea *area,
+ gdouble x, gdouble y);
+HildonSizeRequestPolicy hildon_pannable_area_get_size_request_policy (HildonPannableArea *area);
+void hildon_pannable_area_set_size_request_policy (HildonPannableArea *area,
+ HildonSizeRequestPolicy size_request_policy);
+GtkAdjustment* hildon_pannable_area_get_hadjustment (HildonPannableArea *area);
+GtkAdjustment* hildon_pannable_area_get_vadjustment (HildonPannableArea *area);
G_END_DECLS
#endif /* _HILDON_PANNABLE_AREA */
-