aul_open -> aul_launch. scroll access added
[platform/framework/web/livebox-viewer.git] / include / livebox.h
index daaf920..a08e31a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2013  Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -40,19 +40,13 @@ enum content_event_type {
        CONTENT_EVENT_MOUSE_MOVE        = 0x00000004, /*!< LB mouse move event for livebox */
        CONTENT_EVENT_MOUSE_ENTER       = 0x00000008, /*!< LB mouse enter event for livebox */
        CONTENT_EVENT_MOUSE_LEAVE       = 0x00000010, /*!< LB mouse leave event for livebox */
-
-       CONTENT_EVENT_ACCESS_READ       = 0x00000100, /*!< LB accessibility read for livebox */
-       CONTENT_EVENT_ACCESS_READ_NEXT  = 0x00000200, /*!< LB accessibility read next for livebox */
-       CONTENT_EVENT_ACCESS_READ_PREV  = 0x00000400, /*!< LB accessibility read prev for livebox */
-       CONTENT_EVENT_ACCESS_ACTIVATE   = 0x00000800, /*!< LB accessibility activate */
-       CONTENT_EVENT_ACCESS_UP         = 0x00001000, /*!< LB accessibility up */
-       CONTENT_EVENT_ACCESS_DOWN       = 0x00002000, /*!< LB accessibility down */
+       CONTENT_EVENT_MOUSE_SET         = 0x00000020, /*!< LB mouse set auto event for livebox */
+       CONTENT_EVENT_MOUSE_UNSET       = 0x00000040, /*!< LB mouse unset auto event for livebox */
 
        CONTENT_EVENT_KEY_DOWN          = 0x00100000, /*!< LB key press */
        CONTENT_EVENT_KEY_UP            = 0x00200000, /*!< LB key release */
 
        CONTENT_EVENT_KEY_MASK          = 0x80000000,
-       CONTENT_EVENT_ACCESS_MASK       = 0x40000000,
        CONTENT_EVENT_MOUSE_MASK        = 0x20000000,
        CONTENT_EVENT_PD_MASK           = 0x10000000,
        CONTENT_EVENT_LB_MASK           = 0x00000000,
@@ -62,26 +56,16 @@ enum content_event_type {
        LB_MOUSE_MOVE                   = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_MOVE,
        LB_MOUSE_ENTER                  = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_ENTER,
        LB_MOUSE_LEAVE                  = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_LEAVE,
+       LB_MOUSE_SET                    = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_SET,
+       LB_MOUSE_UNSET                  = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_UNSET,
 
        PD_MOUSE_DOWN                   = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_DOWN,
        PD_MOUSE_UP                     = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_UP,
        PD_MOUSE_MOVE                   = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_MOVE,
        PD_MOUSE_ENTER                  = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_ENTER,
        PD_MOUSE_LEAVE                  = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_LEAVE,
-
-       LB_ACCESS_READ                  = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ,
-       LB_ACCESS_READ_NEXT             = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ_NEXT,
-       LB_ACCESS_READ_PREV             = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ_PREV,
-       LB_ACCESS_ACTIVATE              = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_ACTIVATE,
-       LB_ACCESS_UP                    = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_UP,
-       LB_ACCESS_DOWN                  = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_DOWN,
-
-       PD_ACCESS_READ                  = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ,
-       PD_ACCESS_READ_NEXT             = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ_NEXT,
-       PD_ACCESS_READ_PREV             = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ_PREV,
-       PD_ACCESS_ACTIVATE              = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_ACTIVATE,
-       PD_ACCESS_UP                    = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_UP,
-       PD_ACCESS_DOWN                  = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_DOWN,
+       PD_MOUSE_SET                    = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_SET,
+       PD_MOUSE_UNSET                  = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_UNSET,
 
        LB_KEY_DOWN                     = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_KEY_MASK | CONTENT_EVENT_KEY_DOWN,
        LB_KEY_UP                       = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_KEY_MASK | CONTENT_EVENT_KEY_UP,
@@ -92,6 +76,41 @@ enum content_event_type {
        CONTENT_EVENT_MAX       = 0xFFFFFFFF,
 };
 
+enum access_event_type {
+       ACCESS_EVENT_PD_MASK            = 0x10000000,
+       ACCESS_EVENT_LB_MASK            = 0x00000000,
+
+       ACCESS_EVENT_HIGHLIGHT          = 0x00000100, /*!< LB accessibility: Hightlight a object */
+       ACCESS_EVENT_HIGHLIGHT_NEXT     = 0x00000200, /*!< LB accessibility: Set highlight to next object */
+       ACCESS_EVENT_HIGHLIGHT_PREV     = 0x00000400, /*!< LB accessibility: Set highlight to prev object */
+       ACCESS_EVENT_ACTIVATE           = 0x00000800, /*!< LB accessibility activate */
+       ACCESS_EVENT_VALUE_CHANGE       = 0x00001000, /*!< LB accessibility value changed */
+       ACCESS_EVENT_UNHIGHLIGHT        = 0x00002000, /*!< LB accessibility unhighlight */
+       ACCESS_EVENT_SCROLL_DOWN        = 0x00004000, /*!< LB accessibility scroll down */
+       ACCESS_EVENT_SCROLL_MOVE        = 0x00008000, /*!< LB accessibility scroll move */
+       ACCESS_EVENT_SCROLL_UP          = 0x00010000, /*!< LB accessibility scroll up */
+
+       LB_ACCESS_HIGHLIGHT             = ACCESS_EVENT_LB_MASK | ACCESS_EVENT_HIGHLIGHT,
+       LB_ACCESS_HIGHLIGHT_NEXT        = ACCESS_EVENT_LB_MASK | ACCESS_EVENT_HIGHLIGHT_NEXT,
+       LB_ACCESS_HIGHLIGHT_PREV        = ACCESS_EVENT_LB_MASK | ACCESS_EVENT_HIGHLIGHT_PREV,
+       LB_ACCESS_ACTIVATE              = ACCESS_EVENT_LB_MASK | ACCESS_EVENT_ACTIVATE,
+       LB_ACCESS_VALUE_CHANGE          = ACCESS_EVENT_LB_MASK | ACCESS_EVENT_VALUE_CHANGE,
+       LB_ACCESS_UNHIGHLIGHT           = ACCESS_EVENT_LB_MASK | ACCESS_EVENT_UNHIGHLIGHT,
+       LB_ACCESS_SCROLL_DOWN           = ACCESS_EVENT_LB_MASK | ACCESS_EVENT_SCROLL_DOWN,
+       LB_ACCESS_SCROLL_MOVE           = ACCESS_EVENT_LB_MASK | ACCESS_EVENT_SCROLL_MOVE,
+       LB_ACCESS_SCROLL_UP             = ACCESS_EVENT_LB_MASK | ACCESS_EVENT_SCROLL_UP,
+
+       PD_ACCESS_HIGHLIGHT             = ACCESS_EVENT_PD_MASK | ACCESS_EVENT_HIGHLIGHT,
+       PD_ACCESS_HIGHLIGHT_NEXT        = ACCESS_EVENT_PD_MASK | ACCESS_EVENT_HIGHLIGHT_NEXT,
+       PD_ACCESS_HIGHLIGHT_PREV        = ACCESS_EVENT_PD_MASK | ACCESS_EVENT_HIGHLIGHT_PREV,
+       PD_ACCESS_ACTIVATE              = ACCESS_EVENT_PD_MASK | ACCESS_EVENT_ACTIVATE,
+       PD_ACCESS_VALUE_CHANGE          = ACCESS_EVENT_PD_MASK | ACCESS_EVENT_VALUE_CHANGE,
+       PD_ACCESS_UNHIGHLIGHT           = ACCESS_EVENT_PD_MASK | ACCESS_EVENT_UNHIGHLIGHT,
+       PD_ACCESS_SCROLL_DOWN           = ACCESS_EVENT_PD_MASK | ACCESS_EVENT_SCROLL_DOWN,
+       PD_ACCESS_SCROLL_MOVE           = ACCESS_EVENT_PD_MASK | ACCESS_EVENT_SCROLL_MOVE,
+       PD_ACCESS_SCROLL_UP             = ACCESS_EVENT_PD_MASK | ACCESS_EVENT_SCROLL_UP,
+};
+
 /* Exported to user app */
 enum livebox_lb_type {
        LB_TYPE_IMAGE = 0x01, /*!< Contents of a livebox is based on the image file */
@@ -121,9 +140,23 @@ enum livebox_event_type { /*!< livebox_event_handler_set Event list */
        LB_EVENT_PINUP_CHANGED, /*!< PINUP status is changed */
        LB_EVENT_PERIOD_CHANGED, /*!< Update period is changed */
 
+       LB_EVENT_LB_SIZE_CHANGED, /*!< Livebox size is changed */
+       LB_EVENT_PD_SIZE_CHANGED, /*!< PD size is changed */
+
        LB_EVENT_PD_CREATED, /*!< If a PD is created even if you didn't call the livebox_create_pd API */
        LB_EVENT_PD_DESTROYED, /*!< If a PD is destroyed even if you didn't call the livebox_destroy_pd API */
 
+       LB_EVENT_HOLD_SCROLL, /*!< If the screen should be freezed */
+       LB_EVENT_RELEASE_SCROLL, /*!< If the screen can be scrolled */
+
+       LB_EVENT_LB_UPDATE_BEGIN,
+       LB_EVENT_LB_UPDATE_END,
+
+       LB_EVENT_PD_UPDATE_BEGIN,
+       LB_EVENT_PD_UPDATE_END,
+
+       LB_EVENT_UPDATE_MODE_CHANGED,
+
        LB_EVENT_IGNORED, /*!< Request is ignored */
 };
 
@@ -154,7 +187,7 @@ struct livebox_script_operators {
         * Listed functions will be called when parser meets each typed component
         */
        int (*update_text)(struct livebox *handle, const char *id, const char *part, const char *data); /*!< Update text content */
-       int (*update_image)(struct livebox *handle, const char *id, const char *part, const char *data); /*!< Update image content */
+       int (*update_image)(struct livebox *handle, const char *id, const char *part, const char *data, const char *option); /*!< Update image content */
        int (*update_script)(struct livebox *handle, const char *id, const char *part, const char *file, const char *group); /*!< Update script content */
        int (*update_signal)(struct livebox *handle, const char *id, const char *emission, const char *signal); /*!< Update signal */
        int (*update_drag)(struct livebox *handle, const char *id, const char *part, double dx, double dy); /*!< Update drag info */
@@ -173,25 +206,42 @@ typedef void (*ret_cb_t)(struct livebox *handle, int ret, void *data);
 
 /*!
  * \brief Initialize the livebox system
- * \param[in] disp
- * \return int
+ * \param[in] disp If you have X Display connection object, you can re-use it. but you should care its life cycle.
+ *                 It must be alive before call the livebox_fini
+ * \return int 0 if success or < 0 (errno)
+ * \sa livebox_fini
  */
 extern int livebox_init(void *disp);
 
 /*!
  * \brief Finalize the livebox system
- * \return int
+ * \return int 0 if success, -EINVAL if livebox_init is not called.
+ * \sa livebox_init
  */
 extern int livebox_fini(void);
 
 /*!
+ * \brief Client is paused.
+ * \return int 0 if success, -EFAULT if it failed to send state(paused) info
+ * \sa livebox_client_resumed
+ */
+extern int livebox_client_paused(void);
+
+/*!
+ * \brief Client is rfesumed.
+ * \return int 0 if success, -EFAULT if it failed to send state(resumed) info
+ * \sa livebox_client_paused
+ */
+extern int livebox_client_resumed(void);
+
+/*!
  * \brief Add a new livebox
- * \param[in] pkgname
- * \param[in] content
+ * \param[in] pkgname Livebox Id
+ * \param[in] content Will be passed to the livebox.
  * \param[in] cluster
  * \param[in] category
- * \param[in] period
- * \param[in] cb
+ * \param[in] period Update period. if you set DEFAULT_PERIOD, the provider will use the default period which is described in the manifest.
+ * \param[in] cb After send the request to the provider, its result will be passed
  * \param[in] data
  * \return handle
  */
@@ -450,10 +500,23 @@ extern int livebox_pdfb_bufsz(struct livebox *handler);
  * \param[in] type
  * \param[in] x
  * \param[in] y
+ * \return
  */
 extern int livebox_content_event(struct livebox *handler, enum content_event_type type, double x, double y);
 
 /*!
+ * \brief Send the access event(for buffer type) to provider(livebox).
+ * \param[in] handler
+ * \param[in] access_event_type
+ * \param[in] x
+ * \param[in] y
+ * \param[in] cb
+ * \param[in] data
+ * \return
+ */
+extern int livebox_access_event(struct livebox *handler, enum access_event_type type, double x, double y, ret_cb_t cb, void *data);
+
+/*!
  * \brief Do pin up or not.
  * \param[in] handler
  * \param[in] flag
@@ -505,6 +568,15 @@ extern int livebox_create_pd(struct livebox *handler, ret_cb_t cb, void *data);
 extern int livebox_create_pd_with_position(struct livebox *handler, double x, double y, ret_cb_t cb, void *data);
 
 /*!
+ * \brief PD position is updated.
+ * \param[in] handler
+ * \param[in] x 0.0 ~ 1.0
+ * \param[in] y 0.0 ~ 1.0
+ * \return int 0 if succeed to send request for updating position of the PD.
+ */
+extern int livebox_move_pd(struct livebox *handler, double x, double y);
+
+/*!
  * \brief Destroy the PD of given handler if it is created.
  * \param[in] handler
  * \param[in] cb
@@ -685,6 +757,26 @@ extern int livebox_set_visibility(struct livebox *handler, enum livebox_visible_
  */
 extern enum livebox_visible_state livebox_visibility(struct livebox *handler);
 
+/*!
+ * \brief Set the update mode of current livebox
+ *        if you set 1 for active update mode, you should get buffer without updated event from provider.
+ *       But is passive mode, you have to update content of a box when you get updated event.
+ *       Default is Passive mode.
+ * \param[in] handler Handler of a livebox
+ * \param[in] active_update 1 means active update, 0 means passive update (default)
+ * \param[in] cb Result callback function
+ * \param[in] data Callback data
+ * \return int
+ */
+extern int livebox_set_update_mode(struct livebox *handler, int active_update, ret_cb_t cb, void *data);
+
+/*!
+ * \brief Is this box in the active update mode?
+ * \param[in] handler HAndler of a livebox
+ * \return int 0 if passive mode or 1 if active mode or error code
+ */
+extern int livebox_is_active_update(struct livebox *handler);
+
 #ifdef __cplusplus
 }
 #endif