summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthe81.kim@samsung.com <ohpowel@gmail.com>2014-11-21 14:58:21 +0900
committerTae-Hwan Kim <ohpowel@gmail.com>2014-11-21 14:58:21 +0900
commit31d66c58f6f0d2cc9577375d1f8f7e105a7e1d4a (patch)
treedf3e018881577aca9a7281fd6294356f84437dbb
parentb79f923652a67b4c83954af4677fa595729807b9 (diff)
downloadelementary-devs/bluezery/doc.tar.gz
Documentation from Tizendevs/bluezery/doc
-rw-r--r--src/lib/elc_ctxpopup.h228
-rw-r--r--src/lib/elc_fileselector.h285
-rw-r--r--src/lib/elc_fileselector_button.h269
-rw-r--r--src/lib/elc_fileselector_entry.h303
-rw-r--r--src/lib/elc_hoversel.h205
-rw-r--r--src/lib/elc_multibuttonentry.h328
-rw-r--r--src/lib/elc_naviframe.h437
-rw-r--r--src/lib/elc_popup.h298
-rw-r--r--src/lib/elm_access.h311
-rw-r--r--src/lib/elm_actionslider.h114
-rw-r--r--src/lib/elm_app.h343
-rw-r--r--src/lib/elm_authors.h104
-rw-r--r--src/lib/elm_bg.h191
-rw-r--r--src/lib/elm_box.h501
-rw-r--r--src/lib/elm_bubble.h75
-rw-r--r--src/lib/elm_button.h146
-rw-r--r--src/lib/elm_cache.h31
-rw-r--r--src/lib/elm_calendar.h508
-rw-r--r--src/lib/elm_check.h101
-rw-r--r--src/lib/elm_clock.h269
-rw-r--r--src/lib/elm_cnp.h476
-rw-r--r--src/lib/elm_colorselector.h220
-rw-r--r--src/lib/elm_config.h1684
-rw-r--r--src/lib/elm_conform.h55
-rw-r--r--src/lib/elm_cursor.h120
-rw-r--r--src/lib/elm_datetime.h516
-rw-r--r--src/lib/elm_dayselector.h146
-rw-r--r--src/lib/elm_debug.h20
-rw-r--r--src/lib/elm_deprecated.h1567
-rw-r--r--src/lib/elm_diskselector.h404
-rw-r--r--src/lib/elm_entry.h2143
-rw-r--r--src/lib/elm_entry_common.h93
-rw-r--r--src/lib/elm_finger.h57
-rw-r--r--src/lib/elm_flip.h315
-rw-r--r--src/lib/elm_flipselector.h301
-rw-r--r--src/lib/elm_focus.h351
-rw-r--r--src/lib/elm_font.h87
-rw-r--r--src/lib/elm_frame.h100
-rw-r--r--src/lib/elm_gen.h50
-rw-r--r--src/lib/elm_general.h391
-rw-r--r--src/lib/elm_gengrid.h1791
-rw-r--r--src/lib/elm_genlist.h2042
-rw-r--r--src/lib/elm_gesture_layer.h664
-rw-r--r--src/lib/elm_getting_started.h71
-rw-r--r--src/lib/elm_glview.h325
-rw-r--r--src/lib/elm_grid.h125
-rw-r--r--src/lib/elm_hover.h162
-rw-r--r--src/lib/elm_icon.h577
-rw-r--r--src/lib/elm_image.h520
-rw-r--r--src/lib/elm_index.h478
-rw-r--r--src/lib/elm_interface_scrollable.h508
-rw-r--r--src/lib/elm_inwin.h118
-rw-r--r--src/lib/elm_label.h352
-rw-r--r--src/lib/elm_layout.h931
-rw-r--r--src/lib/elm_list.h837
-rw-r--r--src/lib/elm_macros.h12
-rw-r--r--src/lib/elm_map.h1732
-rw-r--r--src/lib/elm_mapbuf.h182
-rw-r--r--src/lib/elm_menu.h277
-rw-r--r--src/lib/elm_mirroring.h57
-rw-r--r--src/lib/elm_need.h112
-rw-r--r--src/lib/elm_notify.h165
-rw-r--r--src/lib/elm_object.h731
-rw-r--r--src/lib/elm_object_item.h949
-rw-r--r--src/lib/elm_panel.h174
-rw-r--r--src/lib/elm_panes.h198
-rw-r--r--src/lib/elm_photo.h120
-rw-r--r--src/lib/elm_photocam.h339
-rw-r--r--src/lib/elm_plug.h98
-rw-r--r--src/lib/elm_progressbar.h289
-rw-r--r--src/lib/elm_radio.h156
-rw-r--r--src/lib/elm_route.h55
-rw-r--r--src/lib/elm_scale.h38
-rw-r--r--src/lib/elm_scroll.h151
-rw-r--r--src/lib/elm_scroller.h693
-rw-r--r--src/lib/elm_segment_control.h277
-rw-r--r--src/lib/elm_separator.h47
-rw-r--r--src/lib/elm_slider.h418
-rw-r--r--src/lib/elm_slideshow.h482
-rw-r--r--src/lib/elm_spinner.h446
-rw-r--r--src/lib/elm_store.h326
-rw-r--r--src/lib/elm_table.h179
-rw-r--r--src/lib/elm_theme.h587
-rw-r--r--src/lib/elm_thumb.h232
-rw-r--r--src/lib/elm_toolbar.h1066
-rw-r--r--src/lib/elm_tooltip.h227
-rw-r--r--src/lib/elm_transit.h963
-rw-r--r--src/lib/elm_video.h230
-rw-r--r--src/lib/elm_web.h954
-rw-r--r--src/lib/elm_win.h1963
90 files changed, 31094 insertions, 7475 deletions
diff --git a/src/lib/elc_ctxpopup.h b/src/lib/elc_ctxpopup.h
index dc93ffa5b..e68ff687a 100644
--- a/src/lib/elc_ctxpopup.h
+++ b/src/lib/elc_ctxpopup.h
@@ -1,16 +1,12 @@
/**
* @defgroup Ctxpopup Ctxpopup
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html ctxpopup_inheritance_tree.png
* @image latex ctxpopup_inheritance_tree.eps
*
- * @image html img/widget/ctxpopup/preview-00.png
- * @image latex img/widget/ctxpopup/preview-00.eps
+ * @brief A ctxpopup is a widget that, when shown, pops up a list of items.
*
- * @brief Context popup widget.
- *
- * A ctxpopup is a widget that, when shown, pops up a list of items.
* It automatically chooses an area inside its parent object's view
* (set via elm_ctxpopup_add() and elm_ctxpopup_hover_parent_set()) to
* optimally fit into it. In the default theme, it will also point an
@@ -18,19 +14,16 @@
* items have a label and/or an icon. It is intended for a small
* number of items (hence the use of list, not genlist).
*
- * This widget inherits from the Layout one, so that all the
- * functions acting on it also work for context popup objects (since 1.8).
+ * This widget inherits from the @ref Layout one, so that all the
+ * functions acting on it also work for context popup objects
+ * (@since 1.8).
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * - @c "dismissed" - This is called when 1. the outside of ctxpopup was clicked
- * or 2. its parent area is changed or 3. the language is changed and also when
- * 4. the parent object is resized due to the window rotation. Then ctxpopup is
+ * @ref Layout :
+ * - @c "dismissed" - this is called when the outside of ctxpopup was clicked or
+ * it's parent area is changed or the language is changed. and then ctxpopup is
* dismissed.
- * - @c "language,changed" - This is called when the program's language is
- * changed.
- * - @c "focused" - When the ctxpopup has received focus. (since 1.8)
- * - @c "unfocused" - When the ctxpopup has lost focus. (since 1.8)
+ *
* Default content parts of the ctxpopup widget that you can use for are:
* @li "default" - A content of the ctxpopup
*
@@ -38,14 +31,13 @@
* @li "icon" - An icon in the title area
*
* Default text parts of the ctxpopup items that you can use for are:
- * @li "default" - A title label in the title area
+ * @li "default" - Title label in the title area
*
* Supported elm_object common APIs.
* @li @ref elm_object_disabled_set
* @li @ref elm_object_disabled_get
*
* Supported elm_object_item common APIs.
- * @li @ref elm_object_item_del
* @li @ref elm_object_item_disabled_set
* @li @ref elm_object_item_disabled_get
* @li @ref elm_object_item_part_text_set
@@ -54,17 +46,201 @@
* @li @ref elm_object_item_part_content_get
* @li @ref elm_object_item_signal_emit
*
- * @ref tutorial_ctxpopup shows the usage of a good deal of the API.
* @{
*/
-#include "elc_ctxpopup_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elc_ctxpopup_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elc_ctxpopup_legacy.h"
-#endif
+/**
+ * @brief Enumeration of ctxpopup direction type
+ */
+typedef enum
+{
+ ELM_CTXPOPUP_DIRECTION_DOWN, /**< ctxpopup show appear below clicked area */
+ ELM_CTXPOPUP_DIRECTION_RIGHT, /**< ctxpopup show appear to the right of the clicked area */
+ ELM_CTXPOPUP_DIRECTION_LEFT, /**< ctxpopup show appear to the left of the clicked area */
+ ELM_CTXPOPUP_DIRECTION_UP, /**< ctxpopup show appear above the clicked area */
+ ELM_CTXPOPUP_DIRECTION_UNKNOWN, /**< ctxpopup does not determine it's direction yet*/
+} Elm_Ctxpopup_Direction; /**< Direction in which to show the popup */
+
+/**
+ * @brief Add a new Ctxpopup object to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent Parent object
+ * @return New object or @c NULL, if it cannot be created
+ */
+EAPI Evas_Object *elm_ctxpopup_add(Evas_Object *parent);
+
+/**
+ * @brief Set the Ctxpopup's parent object
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks elm_ctxpopup_add() will automatically call this function
+ * with its @c parent argument.
+ *
+ * @param[in] obj The ctxpopup object
+ * @param[in] parent The parent to use
+ *
+ * @see elm_ctxpopup_add()
+ * @see elm_hover_parent_set()
+ */
+EAPI void elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent);
+
+/**
+ * @brief Get the Ctxpopup's parent
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The ctxpopup object
+ * @return The parent object
+ *
+ * @see elm_ctxpopup_hover_parent_set() for more information
+ */
+EAPI Evas_Object *elm_ctxpopup_hover_parent_get(const Evas_Object *obj);
+
+/**
+ * @brief Clear all items in the given ctxpopup object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj Ctxpopup object
+ */
+EAPI void elm_ctxpopup_clear(Evas_Object *obj);
+
+/**
+ * @brief Change the ctxpopup's orientation to horizontal or vertical.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj Ctxpopup object
+ * @param[in] horizontal @c EINA_TRUE for horizontal mode, @c EINA_FALSE for vertical
+ */
+EAPI void elm_ctxpopup_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Get the value of current ctxpopup object's orientation.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj Ctxpopup object
+ * @return @c EINA_TRUE for horizontal mode, @c EINA_FALSE for vertical mode (or errors)
+ *
+ * @see elm_ctxpopup_horizontal_set()
+ */
+EAPI Eina_Bool elm_ctxpopup_horizontal_get(const Evas_Object *obj);
+
+/**
+ * @brief Add a new item to a ctxpopup object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj Ctxpopup object
+ * @param[in] label The Label of the new item
+ * @param[in] icon Icon to be set on new item
+ * @param[in] func Convenience function called when item selected
+ * @param[in] data Data passed to @p func
+ * @return A handle to the item added or @c NULL, on errors
+ *
+ * @warning Ctxpopup can't hold both an item list and a content at the same
+ * time. When an item is added, any previous content will be removed.
+ *
+ * @see elm_object_content_set()
+ */
+EAPI Elm_Object_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Set the direction priority of a ctxpopup.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj Ctxpopup object
+ * @param[in] first 1st priority of direction
+ * @param[in] second 2nd priority of direction
+ * @param[in] third 3th priority of direction
+ * @param[in] fourth 4th priority of direction
+ *
+ * This functions gives a chance to user to set the priority of ctxpopup
+ * showing direction. This doesn't guarantee the ctxpopup will appear in the
+ * requested direction.
+ *
+ * @see Elm_Ctxpopup_Direction
+ */
+EAPI void elm_ctxpopup_direction_priority_set(Evas_Object *obj, Elm_Ctxpopup_Direction first, Elm_Ctxpopup_Direction second, Elm_Ctxpopup_Direction third, Elm_Ctxpopup_Direction fourth);
+
+/**
+ * @brief Get the direction priority of a ctxpopup.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj Ctxpopup object
+ * @param[out] first 1st priority of direction to be returned
+ * @param[out] second 2nd priority of direction to be returned
+ * @param[out] third 3th priority of direction to be returned
+ * @param[out] fourth 4th priority of direction to be returned
+ *
+ * @see elm_ctxpopup_direction_priority_set() for more information.
+ */
+EAPI void elm_ctxpopup_direction_priority_get(Evas_Object *obj, Elm_Ctxpopup_Direction *first, Elm_Ctxpopup_Direction *second, Elm_Ctxpopup_Direction *third, Elm_Ctxpopup_Direction *fourth);
+
+/**
+ * @brief Get the current direction of a ctxpopup.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj Ctxpopup object
+ * @return current direction of a ctxpopup
+ *
+ * @warning Once the ctxpopup showed up, the direction would be determined
+ */
+EAPI Elm_Ctxpopup_Direction elm_ctxpopup_direction_get(const Evas_Object *obj);
+
+/**
+ * @brief Dismiss a ctxpopup object
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The ctxpopup object
+ * Use this function to simulate clicking outside the ctxpopup to dismiss it.
+ * In this way, the ctxpopup will be hidden and the "clicked" signal will be
+ * emitted.
+ */
+EAPI void elm_ctxpopup_dismiss(Evas_Object *obj);
+
+/**
+ * brief Get the possibility that the direction would be available
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The ctxpopup object
+ * @param[in] direction A direction user wants to check
+ *
+ * Use this function to check whether input direction is proper for ctxpopup.
+ * If ctxpopup cannot be at the direction since there is no sufficient area it can be,
+ *
+ * @return @c EINA_FALSE if you cannot put it in the direction.
+ * @c EINA_TRUE if it's possible.
+ */
+EAPI Eina_Bool elm_ctxpopup_direction_available_get(Evas_Object *obj, Elm_Ctxpopup_Direction direction);
+
+/**
+ * @brief Set whether ctxpopup hide automatically or not when parent of ctxpopup is resized
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj Ctxpopup object
+ * @param[in] disabled @c EINA_TRUE for not hiding, @c EINA_FALSE for hiding automatically
+ *
+ * Use this function when user wants ctxpopup not to hide automatically.
+ * In default, ctxpopup is dismissed whenever mouse clicked its background area, language is changed,
+ * and its parent geometry is updated(changed).
+ * Not to hide ctxpopup automatically, disable auto hide function by calling this API,
+ * then ctxpopup won't be dismissed in those scenarios.
+ *
+ * Default value of disabled is EINA_FALSE.
+ */
+EAPI void elm_ctxpopup_auto_hide_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
/**
* @}
*/
diff --git a/src/lib/elc_fileselector.h b/src/lib/elc_fileselector.h
index 9ecd5610e..ff76b30e5 100644
--- a/src/lib/elc_fileselector.h
+++ b/src/lib/elc_fileselector.h
@@ -1,6 +1,7 @@
/**
+ * @internal
* @defgroup Fileselector File Selector
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html fileselector_inheritance_tree.png
* @image latex fileselector_inheritance_tree.eps
@@ -34,47 +35,279 @@
* library, the second form of view will display preview thumbnails
* of files which it supports.
*
- * This widget inherits from the Layout one, so that all the
+ * This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for file selector objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * - @c "activated" - the user activated a file. This can happen by
- * double-clicking or pressing Enter key. (@p event_info is a
- * pointer to the activated file path)
+ * @ref Layout :
* - @c "selected" - the user has clicked on a file (when not in
* folders-only mode) or directory (when in folders-only mode)
- * - @c "selected,invalid" - the user has tried to access wrong path
- * which does not exist.
* - @c "directory,open" - the list has been populated with new
- * content (@p event_info is a pointer to the directory's
+ * content (@c event_info is a pointer to the directory's
* path, a @b stringshared string)
* - @c "done" - the user has clicked on the "ok" or "cancel"
- * buttons (@p event_info is a pointer to the selection's
+ * buttons (@c event_info is a pointer to the selection's
* path, a @b stringshared string)
- * - @c "focused" - When the fileselector has received focus. (since 1.9)
- * - @c "unfocused" - When the fileselector has lost focus. (since 1.9)
*
- * For text, elm_layout_text_set() will work here on:
- * @li @c "ok" - OK button label if the ok button is set. @since 1.8
- * @li @c "cancel" - Cancel button label if the cancel button is set. @since 1.8
+ * @{
+ */
+
+/**
+ * Defines how a file selector widget is to layout its contents
+ * (file system entries).
+ */
+typedef enum
+{
+ ELM_FILESELECTOR_LIST = 0, /**< layout as a list */
+ ELM_FILESELECTOR_GRID, /**< layout as a grid */
+ ELM_FILESELECTOR_LAST /**< sentinel (helper) value, not used */
+} Elm_Fileselector_Mode;
+
+/**
+ * Add a new file selector widget to the given parent Elementary
+ * (container) object
*
- * Here is an example on its usage:
- * @li @ref fileselector_example
+ * @param[in] parent The parent object
+ * @return a new file selector widget handle or @c NULL, on errors
+ *
+ * This function inserts a new file selector widget on the canvas.
+ *
+ * @ingroup Fileselector
*/
+EAPI Evas_Object *elm_fileselector_add(Evas_Object *parent);
/**
- * @addtogroup Fileselector
- * @{
+ * Enable/disable the file name entry box where the user can type
+ * in a name for a file, in a given file selector widget
+ *
+ * @param[in] obj The file selector object
+ * @param[in] is_save @c EINA_TRUE to make the file selector a "saving
+ * dialog", @c EINA_FALSE otherwise
+ *
+ * Having the entry editable is useful on file saving dialogs on
+ * applications, where one gives a file name to save contents to,
+ * in a given directory in the system. This custom file name will
+ * be reported on the @c "done" smart callback.
+ *
+ * @see elm_fileselector_is_save_get()
+ *
+ * @ingroup Fileselector
+ */
+EAPI void elm_fileselector_is_save_set(Evas_Object *obj, Eina_Bool is_save);
+
+/**
+ * Get whether the given file selector is in "saving dialog" mode
+ *
+ * @param[in] obj The file selector object
+ * @return @c EINA_TRUE, if the file selector is in "saving dialog"
+ * mode, @c EINA_FALSE otherwise (and on errors)
+ *
+ * @see elm_fileselector_is_save_set() for more details
+ *
+ * @ingroup Fileselector
+ */
+EAPI Eina_Bool elm_fileselector_is_save_get(const Evas_Object *obj);
+
+/**
+ * Enable/disable folder-only view for a given file selector widget
+ *
+ * @param[in] obj The file selector object
+ * @param[in] only @c EINA_TRUE to make @p obj only display
+ * directories, @c EINA_FALSE to make files to be displayed in it
+ * too
+ *
+ * If enabled, the widget's view will only display folder items,
+ * naturally.
+ *
+ * @see elm_fileselector_folder_only_get()
+ *
+ * @ingroup Fileselector
+ */
+EAPI void elm_fileselector_folder_only_set(Evas_Object *obj, Eina_Bool only);
+
+/**
+ * Get whether folder-only view is set for a given file selector
+ * widget
+ *
+ * @param[in] obj The file selector object
+ * @return only @c EINA_TRUE if @p obj is only displaying
+ * directories, @c EINA_FALSE if files are being displayed in it
+ * too (and on errors)
+ *
+ * @see elm_fileselector_folder_only_get()
+ *
+ * @ingroup Fileselector
+ */
+EAPI Eina_Bool elm_fileselector_folder_only_get(const Evas_Object *obj);
+
+/**
+ * Enable/disable the "ok" and "cancel" buttons on a given file
+ * selector widget
+ *
+ * @param[in] obj The file selector object
+ * @param[in] buttons @c EINA_TRUE to show buttons, @c EINA_FALSE to hide.
+ *
+ * @note A file selector without those buttons will never emit the
+ * @c "done" smart event, and is only usable if one is just hooking
+ * to the other two events.
+ *
+ * @see elm_fileselector_buttons_ok_cancel_get()
+ *
+ * @ingroup Fileselector
+ */
+EAPI void elm_fileselector_buttons_ok_cancel_set(Evas_Object *obj, Eina_Bool buttons);
+
+/**
+ * Get whether the "ok" and "cancel" buttons on a given file
+ * selector widget are being shown.
+ *
+ * @param[in] obj The file selector object
+ * @return @c EINA_TRUE if they are being shown, @c EINA_FALSE
+ * otherwise (and on errors)
+ *
+ * @see elm_fileselector_buttons_ok_cancel_set() for more details
+ *
+ * @ingroup Fileselector
+ */
+EAPI Eina_Bool elm_fileselector_buttons_ok_cancel_get(const Evas_Object *obj);
+
+/**
+ * Enable/disable a tree view in the given file selector widget,
+ * <b>if it's in @c #ELM_FILESELECTOR_LIST mode</b>
+ *
+ * @param[in] obj The file selector object
+ * @param[in] expand @c EINA_TRUE to enable tree view, @c EINA_FALSE to
+ * disable
+ *
+ * In a tree view, arrows are created on the sides of directories,
+ * allowing them to expand in place.
+ *
+ * @note If it's in other mode, the changes made by this function
+ * will only be visible when one switches back to "list" mode.
+ *
+ * @see elm_fileselector_expandable_get()
+ *
+ * @ingroup Fileselector
+ */
+EAPI void elm_fileselector_expandable_set(Evas_Object *obj, Eina_Bool expand);
+
+/**
+ * Get whether tree view is enabled for the given file selector
+ * widget
+ *
+ * @param[in] obj The file selector object
+ * @return @c EINA_TRUE if @p obj is in tree view, @c EINA_FALSE
+ * otherwise (and or errors)
+ *
+ * @see elm_fileselector_expandable_set() for more details
+ *
+ * @ingroup Fileselector
+ */
+EAPI Eina_Bool elm_fileselector_expandable_get(const Evas_Object *obj);
+
+/**
+ * Set, programmatically, the @b directory that a given file
+ * selector widget will display contents from
+ *
+ * @param[in] obj The file selector object
+ * @param[in] path The path to display in @p obj
+ *
+ * This will change the @b directory that @p obj is displaying. It
+ * will also clear the text entry area on the @p obj object, which
+ * displays select files' names.
+ *
+ * @see elm_fileselector_path_get()
+ *
+ * @ingroup Fileselector
+ */
+EAPI void elm_fileselector_path_set(Evas_Object *obj, const char *path);
+
+/**
+ * Get the parent directory's path that a given file selector
+ * widget is displaying
+ *
+ * @param[in] obj The file selector object
+ * @return The (full) path of the directory the file selector is
+ * displaying, a @b stringshared string
+ *
+ * @see elm_fileselector_path_set()
+ *
+ * @ingroup Fileselector
+ */
+EAPI const char *elm_fileselector_path_get(const Evas_Object *obj);
+
+/**
+ * Set, programmatically, the currently selected file/directory in
+ * the given file selector widget
+ *
+ * @param[in] obj The file selector object
+ * @param[in] path The (full) path to a file or directory
+ * @return @c EINA_TRUE on success, @c EINA_FALSE on failure. The
+ * latter case occurs if the directory or file pointed to do not
+ * exist.
+ *
+ * @see elm_fileselector_selected_get()
+ *
+ * @ingroup Fileselector
+ */
+EAPI Eina_Bool elm_fileselector_selected_set(Evas_Object *obj, const char *path);
+
+/**
+ * Get the currently selected item's (full) path, in the given file
+ * selector widget
+ *
+ * @param[in] obj The file selector object
+ * @return The absolute path of the selected item, a @b
+ * stringshared string
+ *
+ * @note Custom editions on @p obj object's text entry, if made,
+ * will appear on the return string of this function, naturally.
+ *
+ * @see elm_fileselector_selected_set() for more details
+ *
+ * @ingroup Fileselector
+ */
+EAPI const char *elm_fileselector_selected_get(const Evas_Object *obj);
+
+/**
+ * Set the mode in which a given file selector widget will display
+ * (layout) file system entries in its view
+ *
+ * @param[in] obj The file selector object
+ * @param[in] mode The mode of the fileselector, being it one of #ELM_FILESELECTOR_LIST
+ * (default) or #ELM_FILESELECTOR_GRID. The first one, naturally, will display
+ * the files in a list. The latter will make the widget to display its entries
+ * in a grid form.
+ *
+ * @note By using elm_fileselector_expandable_set(), the user may
+ * trigger a tree view for that list.
+ *
+ * @note If Elementary is built with support of the Ethumb
+ * thumbnailing library, the second form of view will display
+ * preview thumbnails of files which it supports. You must have
+ * elm_need_ethumb() called in your Elementary for thumbnailing to
+ * work, though.
+ *
+ * @see elm_fileselector_expandable_set().
+ * @see elm_fileselector_mode_get().
+ *
+ * @ingroup Fileselector
+ */
+EAPI void elm_fileselector_mode_set(Evas_Object *obj, Elm_Fileselector_Mode mode);
+
+/**
+ * Get the mode in which a given file selector widget is displaying
+ * (layouting) file system entries in its view
+ *
+ * @param[in] obj The fileselector object
+ * @return The mode in which the fileselector is at
+ *
+ * @see elm_fileselector_mode_set() for more details
+ *
+ * @ingroup Fileselector
*/
+EAPI Elm_Fileselector_Mode elm_fileselector_mode_get(const Evas_Object *obj);
-#include "elc_fileselector_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elc_fileselector_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elc_fileselector_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elc_fileselector_button.h b/src/lib/elc_fileselector_button.h
index c7b268a47..c4d40925f 100644
--- a/src/lib/elc_fileselector_button.h
+++ b/src/lib/elc_fileselector_button.h
@@ -1,6 +1,7 @@
/**
+ * @internal
* @defgroup File_Selector_Button File Selector Button
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html fileselector_button_inheritance_tree.png
* @image latex fileselector_button_inheritance_tree.eps
@@ -16,7 +17,7 @@
* window (or inner window) <b> with a @ref Fileselector "file
* selector widget" within</b>. When a file is chosen, the (inner)
* window is closed and the button emits a signal having the
- * selected file as it's @p event_info.
+ * selected file as it's @c event_info.
*
* This widget encapsulates operations on its internal file
* selector on its own API. There is less control over its file
@@ -32,17 +33,15 @@
* functions acting on it also work for file selector button objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Button:
+ * @ref Button :
* - @c "file,chosen" - the user has selected a path, whose string
- * pointer comes as the @p event_info data (a stringshared
+ * pointer comes as the @c event_info data (a stringshared
* string)
* - @c "language,changed" - the program's language changed
- * - @c "focused" - When the fileselector button has received focus. (since 1.8)
- * - @c "unfocused" - When the fileselector button has lost focus. (since 1.8)
*
* Default text parts of the fileselector_button widget that you can use for
* are:
- * @li "default" - A label of the fileselector_button
+ * @li "default" - Label of the fileselector_button
*
* Default content parts of the fileselector_button widget that you can use for
* are:
@@ -57,19 +56,257 @@
* @li @ref elm_object_disabled_set
* @li @ref elm_object_disabled_get
*
- * Here is an example on its usage:
- * @li @ref fileselector_button_example
- *
* @see @ref File_Selector_Entry for a similar widget.
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include "elc_fileselector_button_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elc_fileselector_button_legacy.h"
-#endif
+/**
+ * Add a new file selector button widget to the given parent
+ * Elementary (container) object
+ *
+ * @param[in] parent The parent object
+ * @return a new file selector button widget handle or @c NULL, on
+ * errors
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI Evas_Object *elm_fileselector_button_add(Evas_Object *parent);
+
+/**
+ * Set the title for a given file selector button widget's window
+ *
+ * @param[in] obj The file selector button widget
+ * @param[in] title The title string
+ *
+ * This will change the popup window's title, when the file selector pops
+ * out after a click on the button. Those windows have the default
+ * (unlocalized) value of @c "Select a file" as titles.
+ *
+ * @note It will only take effect if the file selector
+ * button widget is @b not under "inwin mode".
+ *
+ * @see elm_fileselector_button_window_title_get()
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI void elm_fileselector_button_window_title_set(Evas_Object *obj, const char *title);
+
+/**
+ * Get the title for a given file selector button widget's
+ * window
+ *
+ * @param[in] obj The file selector button widget
+ * @return Title of the file selector button's window
+ *
+ * @see elm_fileselector_button_window_title_set() for more details
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI const char *elm_fileselector_button_window_title_get(const Evas_Object *obj);
+
+/**
+ * Set the size of a given file selector button widget's window,
+ * holding the file selector itself.
+ *
+ * @param[in] obj The file selector button widget
+ * @param[in] width The window's width
+ * @param[in] height The window's height
+ *
+ * @note it will only take any effect if the file selector button
+ * widget is @b not under "inwin mode". The default size for the
+ * window (when applicable) is 400x400 pixels.
+ *
+ * @see elm_fileselector_button_window_size_get()
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI void elm_fileselector_button_window_size_set(Evas_Object *obj, Evas_Coord width, Evas_Coord height);
+
+/**
+ * Get the size of a given file selector button widget's window,
+ * holding the file selector itself.
+ *
+ * @param[in] obj The file selector button widget
+ * @param[out] width Pointer into which to store the width value
+ * @param[out] height Pointer into which to store the height value
+ *
+ * @note Use @c NULL pointers on the size values you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_fileselector_button_window_size_set(), for more details
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI void elm_fileselector_button_window_size_get(const Evas_Object *obj, Evas_Coord *width, Evas_Coord *height);
+
+/**
+ * Set the initial file system path for a given file selector
+ * button widget
+ *
+ * @param[in] obj The file selector button widget
+ * @param[in] path The path string
+ *
+ * It must be a <b>directory</b> path, which will have the contents
+ * displayed initially in the file selector's view, when invoked
+ * from @p obj. The default initial path is the @c "HOME"
+ * environment variable's value.
+ *
+ * @see elm_fileselector_button_path_get()
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI void elm_fileselector_button_path_set(Evas_Object *obj, const char *path);
+
+/**
+ * Get the initial file system path set for a given file selector
+ * button widget
+ *
+ * @param[in] obj The file selector button widget
+ * @return path The path string
+ *
+ * @see elm_fileselector_button_path_set() for more details
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI const char *elm_fileselector_button_path_get(const Evas_Object *obj);
+
+/**
+ * Enable/disable a tree view in the given file selector button
+ * widget's internal file selector
+ *
+ * @param[in] obj The file selector button widget
+ * @param[in] value @c EINA_TRUE to enable tree view, @c EINA_FALSE to
+ * disable
+ *
+ * This has the same effect as elm_fileselector_expandable_set(),
+ * but now applied to a file selector button's internal file
+ * selector.
+ *
+ * @note There's no way to put a file selector button's internal
+ * file selector in "grid mode", as one may do with "pure" file
+ * selectors.
+ *
+ * @see elm_fileselector_expandable_get()
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI void elm_fileselector_button_expandable_set(Evas_Object *obj, Eina_Bool value);
+
+/**
+ * Get whether tree view is enabled for the given file selector
+ * button widget's internal file selector
+ *
+ * @param[in] obj The file selector button widget
+ * @return @c EINA_TRUE if @p obj widget's internal file selector
+ * is in tree view, @c EINA_FALSE otherwise (and or errors)
+ *
+ * @see elm_fileselector_expandable_set() for more details
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI Eina_Bool elm_fileselector_button_expandable_get(const Evas_Object *obj);
+
+/**
+ * Set whether a given file selector button widget's internal file
+ * selector is to display folders only or the directory contents,
+ * as well.
+ *
+ * @param[in] obj The file selector button widget
+ * @param[in] value @c EINA_TRUE to make @p obj widget's internal file
+ * selector only display directories, @c EINA_FALSE to make files
+ * to be displayed in it too
+ *
+ * This has the same effect as elm_fileselector_folder_only_set(),
+ * but now applied to a file selector button's internal file
+ * selector.
+ *
+ * @see elm_fileselector_folder_only_get()
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI void elm_fileselector_button_folder_only_set(Evas_Object *obj, Eina_Bool value);
+
+/**
+ * Get whether a given file selector button widget's internal file
+ * selector is displaying folders only or the directory contents,
+ * as well.
+ *
+ * @param[in] obj The file selector button widget
+ * @return @c EINA_TRUE if @p obj widget's internal file
+ * selector is only displaying directories, @c EINA_FALSE if files
+ * are being displayed in it too (and on errors)
+ *
+ * @see elm_fileselector_button_folder_only_set() for more details
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI Eina_Bool elm_fileselector_button_folder_only_get(const Evas_Object *obj);
+
+/**
+ * Enable/disable the file name entry box where the user can type
+ * in a name for a file, in a given file selector button widget's
+ * internal file selector.
+ *
+ * @param[in] obj The file selector button widget
+ * @param[in] value @c EINA_TRUE to make @p obj widget's internal
+ * file selector a "saving dialog", @c EINA_FALSE otherwise
+ *
+ * This has the same effect as elm_fileselector_is_save_set(),
+ * but now applied to a file selector button's internal file
+ * selector.
+ *
+ * @see elm_fileselector_is_save_get()
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI void elm_fileselector_button_is_save_set(Evas_Object *obj, Eina_Bool value);
+
+/**
+ * Get whether the given file selector button widget's internal
+ * file selector is in "saving dialog" mode
+ *
+ * @param[in] obj The file selector button widget
+ * @return @c EINA_TRUE, if @p obj widget's internal file selector
+ * is in "saving dialog" mode, @c EINA_FALSE otherwise (and on
+ * errors)
+ *
+ * @see elm_fileselector_button_is_save_set() for more details
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI Eina_Bool elm_fileselector_button_is_save_get(const Evas_Object *obj);
+
+/**
+ * Set whether a given file selector button widget's internal file
+ * selector will raise an Elementary "inner window", instead of a
+ * dedicated Elementary window. By default, it won't.
+ *
+ * @param[in] obj The file selector button widget
+ * @param[in] value @c EINA_TRUE to make it use an inner window, @c
+ * EINA_TRUE to make it use a dedicated window
+ *
+ * @see elm_win_inwin_add() for more information on inner windows
+ * @see elm_fileselector_button_inwin_mode_get()
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI void elm_fileselector_button_inwin_mode_set(Evas_Object *obj, Eina_Bool value);
+
+/**
+ * Get whether a given file selector button widget's internal file
+ * selector will raise an Elementary "inner window", instead of a
+ * dedicated Elementary window.
+ *
+ * @param[in] obj The file selector button widget
+ * @return @c EINA_TRUE if will use an inner window, @c EINA_TRUE
+ * if it will use a dedicated window
+ *
+ * @see elm_fileselector_button_inwin_mode_set() for more details
+ *
+ * @ingroup File_Selector_Button
+ */
+EAPI Eina_Bool elm_fileselector_button_inwin_mode_get(const Evas_Object *obj);
+
/**
* @}
*/
diff --git a/src/lib/elc_fileselector_entry.h b/src/lib/elc_fileselector_entry.h
index 49e0f18df..1a679ac58 100644
--- a/src/lib/elc_fileselector_entry.h
+++ b/src/lib/elc_fileselector_entry.h
@@ -1,6 +1,7 @@
/**
+ * @internal
* @defgroup File_Selector_Entry File Selector Entry
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html fileselector_entry_inheritance_tree.png
* @image latex fileselector_entry_inheritance_tree.eps
@@ -21,7 +22,8 @@
* a smart event and as the new text on the entry.
*
* This widget inherits from the @ref Layout one, so that all the
- * functions acting on it also work for file selector entry objects (since 1.8).
+ * functions acting on it also work for file selector entry objects
+ * (@since 1.8).
*
* This widget encapsulates operations on its internal file
* selector on its own API. There is less control over its file
@@ -36,8 +38,8 @@
* couple seconds
* - @c "clicked" - The entry has been clicked
* - @c "clicked,double" - The entry has been double clicked
- * - @c "focused" - The entry has received focus (since 1.8)
- * - @c "unfocused" - The entry has lost focus (since 1.8)
+ * - @c "focused" - The entry has received focus
+ * - @c "unfocused" - The entry has lost focus
* - @c "selection,paste" - A paste action has occurred on the
* entry
* - @c "selection,copy" - A copy action has occurred on the entry
@@ -46,16 +48,16 @@
* after being pressed.
* - @c "file,chosen" - The user has selected a path via the file
* selector entry's internal file selector, whose string pointer
- * comes as the @p event_info data (a stringshared string)
+ * comes as the @c event_info data (a stringshared string)
* - @c "language,changed" - the program's language changed
*
* Default text parts of the fileselector_button widget that you can use for
* are:
- * @li "default" - A label of the fileselector_button
+ * @li "default" - Label of the fileselector_button
*
* Default content parts of the fileselector_entry widget that you can use for
* are:
- * @li "button icon" - A button icon of the fileselector_entry
+ * @li "button icon" - Button icon of the fileselector_entry
*
* Supported elm_object common APIs.
* @li @ref elm_object_part_text_set
@@ -66,19 +68,288 @@
* @li @ref elm_object_disabled_set
* @li @ref elm_object_disabled_get
*
- * Here is an example on its usage:
- * @li @ref fileselector_entry_example
- *
* @see @ref File_Selector_Button for a similar widget.
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include "elc_fileselector_entry_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elc_fileselector_entry_legacy.h"
-#endif
+/**
+ * Add a new file selector entry widget to the given parent
+ * Elementary (container) object
+ *
+ * @param[in] parent The parent object
+ * @return a new file selector entry widget handle or @c NULL, on
+ * errors
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI Evas_Object *elm_fileselector_entry_add(Evas_Object *parent);
+
+/**
+ * @brief Set the title for a given file selector entry widget's window
+ *
+ * @param[in] obj The fileselector entry object
+ * @param[in] title The title string
+ *
+ * This will change the window's title, when the file selector pops
+ * out after a click on the entry's button. Those windows have the
+ * default (unlocalized) value of @c "Select a file" as titles.
+ *
+ * @note It will only take any effect if the file selector
+ * entry widget is @b not under "inwin mode".
+ *
+ * @see elm_fileselector_entry_window_title_get()
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI void elm_fileselector_entry_window_title_set(Evas_Object *obj, const char *title);
+
+/**
+ * Get the title set for a given file selector entry widget's
+ * window
+ *
+ * @param[in] obj The file selector entry widget
+ * @return Title of the file selector entry's window
+ *
+ * @see elm_fileselector_entry_window_title_get() for more details
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI const char *elm_fileselector_entry_window_title_get(const Evas_Object *obj);
+
+/**
+ * Set the size of a given file selector entry widget's window,
+ * holding the file selector itself.
+ *
+ * @param[in] obj The file selector entry widget
+ * @param[in] width The window's width
+ * @param[in] height The window's height
+ *
+ * @note it will only take any effect if the file selector entry
+ * widget is @b not under "inwin mode". The default size for the
+ * window (when applicable) is 400x400 pixels.
+ *
+ * @see elm_fileselector_entry_window_size_get()
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI void elm_fileselector_entry_window_size_set(Evas_Object *obj, Evas_Coord width, Evas_Coord height);
+
+/**
+ * Get the size of a given file selector entry widget's window,
+ * holding the file selector itself.
+ *
+ * @param[in] obj The file selector entry widget
+ * @param[out] width Pointer into which to store the width value
+ * @param[out] height Pointer into which to store the height value
+ *
+ * @note Use @c NULL pointers on the size values you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_fileselector_entry_window_size_set(), for more details
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI void elm_fileselector_entry_window_size_get(const Evas_Object *obj, Evas_Coord *width, Evas_Coord *height);
+
+/**
+ * Set the initial file system path and the entry's path string for
+ * a given file selector entry widget
+ *
+ * @param[in] obj The file selector entry widget
+ * @param[in] path The path string
+ *
+ * It must be a <b>directory</b> path, which will have the contents
+ * displayed initially in the file selector's view, when invoked
+ * from @p obj. The default initial path is the @c "HOME"
+ * environment variable's value.
+ *
+ * @see elm_fileselector_entry_path_get()
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI void elm_fileselector_entry_path_set(Evas_Object *obj, const char *path);
+
+/**
+ * Get the entry's path string for a given file selector entry
+ * widget
+ *
+ * @param[in] obj The file selector entry widget
+ * @return path The path string
+ *
+ * @see elm_fileselector_entry_path_set() for more details
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI const char *elm_fileselector_entry_path_get(const Evas_Object *obj);
+
+/**
+ * Enable/disable a tree view in the given file selector entry
+ * widget's internal file selector
+ *
+ * @param[in] obj The file selector entry widget
+ * @param[in] value @c EINA_TRUE to enable tree view, @c EINA_FALSE to disable
+ *
+ * This has the same effect as elm_fileselector_expandable_set(),
+ * but now applied to a file selector entry's internal file
+ * selector.
+ *
+ * @note There's no way to put a file selector entry's internal
+ * file selector in "grid mode", as one may do with "pure" file
+ * selectors.
+ *
+ * @see elm_fileselector_expandable_get()
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI void elm_fileselector_entry_expandable_set(Evas_Object *obj, Eina_Bool value);
+
+/**
+ * Get whether tree view is enabled for the given file selector
+ * entry widget's internal file selector
+ *
+ * @param[in] obj The file selector entry widget
+ * @return @c EINA_TRUE if @p obj widget's internal file selector
+ * is in tree view, @c EINA_FALSE otherwise (and or errors)
+ *
+ * @see elm_fileselector_expandable_set() for more details
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI Eina_Bool elm_fileselector_entry_expandable_get(const Evas_Object *obj);
+
+/**
+ * Set whether a given file selector entry widget's internal file
+ * selector is to display folders only or the directory contents,
+ * as well.
+ *
+ * @param[in] obj The file selector entry widget
+ * @param[in] value @c EINA_TRUE to make @p obj widget's internal file
+ * selector only display directories, @c EINA_FALSE to make files
+ * to be displayed in it too
+ *
+ * This has the same effect as elm_fileselector_folder_only_set(),
+ * but now applied to a file selector entry's internal file
+ * selector.
+ *
+ * @see elm_fileselector_folder_only_get()
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI void elm_fileselector_entry_folder_only_set(Evas_Object *obj, Eina_Bool value);
+
+/**
+ * Get whether a given file selector entry widget's internal file
+ * selector is displaying folders only or the directory contents,
+ * as well.
+ *
+ * @param[in] obj The file selector entry widget
+ * @return @c EINA_TRUE if @p obj widget's internal file
+ * selector is only displaying directories, @c EINA_FALSE if files
+ * are being displayed in it too (and on errors)
+ *
+ * @see elm_fileselector_entry_folder_only_set() for more details
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI Eina_Bool elm_fileselector_entry_folder_only_get(const Evas_Object *obj);
+
+/**
+ * Enable/disable the file name entry box where the user can type
+ * in a name for a file, in a given file selector entry widget's
+ * internal file selector.
+ *
+ * @param[in] obj The file selector entry widget
+ * @param[in] value @c EINA_TRUE to make @p obj widget's internal
+ * file selector a "saving dialog", @c EINA_FALSE otherwise
+ *
+ * This has the same effect as elm_fileselector_is_save_set(),
+ * but now applied to a file selector entry's internal file
+ * selector.
+ *
+ * @see elm_fileselector_is_save_get()
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI void elm_fileselector_entry_is_save_set(Evas_Object *obj, Eina_Bool value);
+
+/**
+ * Get whether the given file selector entry widget's internal
+ * file selector is in "saving dialog" mode
+ *
+ * @param[in] obj The file selector entry widget
+ * @return @c EINA_TRUE, if @p obj widget's internal file selector
+ * is in "saving dialog" mode, @c EINA_FALSE otherwise (and on
+ * errors)
+ *
+ * @see elm_fileselector_entry_is_save_set() for more details
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI Eina_Bool elm_fileselector_entry_is_save_get(const Evas_Object *obj);
+
+/**
+ * Set whether a given file selector entry widget's internal file
+ * selector will raise an Elementary "inner window", instead of a
+ * dedicated Elementary window. By default, it won't.
+ *
+ * @param[in] obj The file selector entry widget
+ * @param[in] value @c EINA_TRUE to make it use an inner window, @c
+ * EINA_TRUE to make it use a dedicated window
+ *
+ * @see elm_win_inwin_add() for more information on inner windows
+ * @see elm_fileselector_entry_inwin_mode_get()
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI void elm_fileselector_entry_inwin_mode_set(Evas_Object *obj, Eina_Bool value);
+
+/**
+ * Get whether a given file selector entry widget's internal file
+ * selector will raise an Elementary "inner window", instead of a
+ * dedicated Elementary window.
+ *
+ * @param[in] obj The file selector entry widget
+ * @return @c EINA_TRUE if will use an inner window, @c EINA_TRUE
+ * if it will use a dedicated window
+ *
+ * @see elm_fileselector_entry_inwin_mode_set() for more details
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI Eina_Bool elm_fileselector_entry_inwin_mode_get(const Evas_Object *obj);
+
+/**
+ * Set the initial file system path for a given file selector entry
+ * widget
+ *
+ * @param[in] obj The file selector entry widget
+ * @param[in] path The path string
+ *
+ * It must be a <b>directory</b> path, which will have the contents
+ * displayed initially in the file selector's view, when invoked
+ * from @p obj. The default initial path is the @c "HOME"
+ * environment variable's value.
+ *
+ * @see elm_fileselector_entry_path_get()
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI void elm_fileselector_entry_selected_set(Evas_Object *obj, const char *path);
+
+/**
+ * Get the parent directory's path to the latest file selection on
+ * a given filer selector entry widget
+ *
+ * @param[in] obj The file selector object
+ * @return The (full) path of the directory of the last selection
+ * on @p obj widget, a @b stringshared string
+ *
+ * @see elm_fileselector_entry_path_set()
+ *
+ * @ingroup File_Selector_Entry
+ */
+EAPI const char *elm_fileselector_entry_selected_get(const Evas_Object *obj);
+
/**
* @}
*/
diff --git a/src/lib/elc_hoversel.h b/src/lib/elc_hoversel.h
index ef52aca45..8b91fab75 100644
--- a/src/lib/elc_hoversel.h
+++ b/src/lib/elc_hoversel.h
@@ -1,6 +1,7 @@
/**
+ * @internal
* @defgroup Hoversel Hoversel
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html hoversel_inheritance_tree.png
* @image latex hoversel_inheritance_tree.eps
@@ -19,22 +20,18 @@
* functions acting on it also work for hoversel objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Button:
+ * @ref Button :
* - @c "clicked" - the user clicked the hoversel button and popped up
* the sel
* - @c "selected" - an item in the hoversel list is selected. event_info
- * is the selected item
+ * is the item
* - @c "dismissed" - the hover is dismissed
- * - @c "expanded" - This is called on clicking hoversel and elm_hoversel_hover_begin().
- * - @c "language,changed" - the program's language changed (since 1.9)
- * - @c "item,focused" - When the hoversel item has received focus. (since 1.10)
- * - @c "item,unfocused" - When the hoversel item has lost focus. (since 1.10)
*
* Default content parts of the hoversel widget that you can use for are:
* @li "icon" - An icon of the hoversel
*
* Default text parts of the hoversel widget that you can use for are:
- * @li "default" - A label of the hoversel
+ * @li "default" - Label of the hoversel
*
* Supported elm_object common APIs.
* @li @ref elm_object_disabled_set
@@ -45,22 +42,192 @@
* @li @ref elm_object_part_content_unset
*
* Supported elm_object_item common APIs.
- * @li elm_object_item_del
* @li elm_object_item_part_text_get
- * @li elm_object_item_signal_emit - this works only when the item is created.
- * @li elm_object_item_style_set - this works only when the item is created.
- * @li elm_object_item_style_get - this works only when the item is created.
*
- * See @ref tutorial_hoversel for an example.
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include "elc_hoversel_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elc_hoversel_legacy.h"
-#endif
+/**
+ * @brief Add a new Hoversel object
+ *
+ * @param[in] parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Hoversel
+ */
+EAPI Evas_Object *elm_hoversel_add(Evas_Object *parent);
+
+/**
+ * @brief This sets the hoversel to expand horizontally.
+ *
+ * @param[in] obj The hoversel object
+ * @param[in] horizontal If true, the hover will expand horizontally to the
+ * right.
+ *
+ * @note The initial button will display horizontally regardless of this
+ * setting.
+ *
+ * @ingroup Hoversel
+ */
+EAPI void elm_hoversel_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief This returns whether the hoversel is set to expand horizontally.
+ *
+ * @param[in] obj The hoversel object
+ * @return If true, the hover will expand horizontally to the right.
+ *
+ * @see elm_hoversel_horizontal_set()
+ *
+ * @ingroup Hoversel
+ */
+EAPI Eina_Bool elm_hoversel_horizontal_get(const Evas_Object *obj);
+
+/**
+ * @brief Set the Hover parent
+ *
+ * @param[in] obj The hoversel object
+ * @param[in] parent The parent to use
+ *
+ * Sets the hover parent object, the area that will be darkened when the
+ * hoversel is clicked. Should probably be the window that the hoversel is
+ * in. See @ref Hover objects for more information.
+ *
+ * @ingroup Hoversel
+ */
+EAPI void elm_hoversel_hover_parent_set(Evas_Object *obj, Evas_Object *parent);
+
+/**
+ * @brief Get the Hover parent
+ *
+ * @param[in] obj The hoversel object
+ * @return The used parent
+ *
+ * Gets the hover parent object.
+ *
+ * @see elm_hoversel_hover_parent_set()
+ *
+ * @ingroup Hoversel
+ */
+EAPI Evas_Object *elm_hoversel_hover_parent_get(const Evas_Object *obj);
+
+/**
+ * @brief This triggers the hoversel popup from code, the same as if the user
+ * had clicked the button.
+ *
+ * @param[in] obj The hoversel object
+ *
+ * @ingroup Hoversel
+ */
+EAPI void elm_hoversel_hover_begin(Evas_Object *obj);
+
+/**
+ * @brief This dismisses the hoversel popup as if the user had clicked
+ * outside the hover.
+ *
+ * @param[in] obj The hoversel object
+ *
+ * @ingroup Hoversel
+ */
+EAPI void elm_hoversel_hover_end(Evas_Object *obj);
+
+/**
+ * @brief Returns whether the hoversel is expanded.
+ *
+ * @param[in] obj The hoversel object
+ * @return This will return EINA_TRUE if the hoversel is expanded or
+ * EINA_FALSE if it is not expanded.
+ *
+ * @ingroup Hoversel
+ */
+EAPI Eina_Bool elm_hoversel_expanded_get(const Evas_Object *obj);
+
+/**
+ * @brief This will remove all the children items from the hoversel.
+ *
+ * @param[in] obj The hoversel object
+ *
+ * @warning Should @b not be called while the hoversel is active; use
+ * elm_hoversel_expanded_get() to check first.
+ *
+ * @see elm_object_item_del()
+ *
+ * @ingroup Hoversel
+ */
+EAPI void elm_hoversel_clear(Evas_Object *obj);
+
+/**
+ * @brief Get the list of items within the given hoversel.
+ *
+ * @param[in] obj The hoversel object
+ * @return Returns a list of Elm_Object_Item*
+ *
+ * @see elm_hoversel_item_add()
+ *
+ * @ingroup Hoversel
+ */
+EAPI const Eina_List *elm_hoversel_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Add an item to the hoversel button
+ *
+ * @param[in] obj The hoversel object
+ * @param[in] label The text label to use for the item (NULL if not desired)
+ * @param[in] icon_file An image file path on disk to use for the icon or standard
+ * icon name (NULL if not desired)
+ * @param[in] icon_type The icon type if relevant
+ * @param[in] func Convenience function to call when this item is selected
+ * @param[in] data Data to pass to item-related functions
+ * @return A handle to the item added.
+ *
+ * This adds an item to the hoversel to show when it is clicked. Note: if you
+ * need to use an icon from an edje file then use
+ * elm_hoversel_item_icon_set() right after this function, and set
+ * icon_file to NULL here.
+ *
+ * For more information on what @p icon_file and @p icon_type are, see the
+ * @ref Icon "icon documentation".
+ *
+ * @ingroup Hoversel
+ */
+EAPI Elm_Object_Item *elm_hoversel_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief This sets the icon for the given hoversel item.
+ *
+ * @param[in] it The item to set the icon
+ * @param[in] icon_file An image file path on disk to use for the icon or standard
+ * icon name
+ * @param[in] icon_group The edje group to use if @p icon_file is an edje file. Set this
+ * to NULL if the icon is not an edje file
+ * @param[in] icon_type The icon type
+ *
+ * The icon can be loaded from the standard set, from an image file, or from
+ * an edje file.
+ *
+ * @see elm_hoversel_item_add()
+ *
+ * @ingroup Hoversel
+ */
+EAPI void elm_hoversel_item_icon_set(Elm_Object_Item *it, const char *icon_file, const char *icon_group, Elm_Icon_Type icon_type);
+
+/**
+ * @brief Get the icon object of the hoversel item
+ *
+ * @param[in] it The item to get the icon from
+ * @param[out] icon_file The image file path on disk used for the icon or standard
+ * icon name
+ * @param[out] icon_group The edje group used if @p icon_file is an edje file. NULL
+ * if the icon is not an edje file
+ * @param[out] icon_type The icon type
+ *
+ * @see elm_hoversel_item_icon_set()
+ * @see elm_hoversel_item_add()
+ *
+ * @ingroup Hoversel
+ */
+EAPI void elm_hoversel_item_icon_get(const Elm_Object_Item *it, const char **icon_file, const char **icon_group, Elm_Icon_Type *icon_type);
+
/**
* @}
*/
diff --git a/src/lib/elc_multibuttonentry.h b/src/lib/elc_multibuttonentry.h
index 32b590de6..47251469b 100644
--- a/src/lib/elc_multibuttonentry.h
+++ b/src/lib/elc_multibuttonentry.h
@@ -1,14 +1,15 @@
/**
* @defgroup Multibuttonentry Multibuttonentry
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html multibuttonentry_inheritance_tree.png
* @image latex multibuttonentry_inheritance_tree.eps
*
- * A multi-button entry is a widget letting an user enter text and
- * each chunk of text managed as a set of buttons. Each text button is
- * inserted by pressing the "return" key. If there is no space in the
- * current row, a new button is added to the next row. When a text
+ * @brief A multi-button entry is a widget letting an user enter text and
+ * each chunk of text managed as a set of buttons.
+ *
+ * Each text button is inserted by pressing the "return" key. If there is no
+ * space in the current row, a new button is added to the next row. When a text
* button is pressed, it will become focused. Backspace removes the
* focus. When the multi-button entry loses focus, items longer than
* one line are shrunk to one line.
@@ -18,10 +19,11 @@
* that can be clicked for further actions.
*
* This widget inherits from the @ref Layout one, so that all the
- * functions acting on it also work for multi-button entry objects (since 1.8).
+ * functions acting on it also work for multi-button entry objects
+ * (@since 1.8).
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* - @c "item,selected" - this is called when an item is selected by
* api, user interaction, and etc. this is also called when a
* user press back space while cursor is on the first field of
@@ -37,6 +39,7 @@
* - @c "contracted" - when multi-button entry is contracted.
* - @c "expand,state,changed" - when shrink mode state of
* multi-button entry is changed.
+ * - @c "longpressed" - when multi-button entry is pressed for a long time.
*
* Default text parts of the multi-button entry widget that you can use are:
* @li "default" - A label of the multi-button entry
@@ -45,24 +48,315 @@
* @li "default" - A label of the multi-button entry item
*
* Supported elm_object_item common APIs.
- * @li @ref elm_object_item_del
* @li @ref elm_object_item_part_text_set
* @li @ref elm_object_item_part_text_get
+ *
+ * @{
*/
+/**
+ * @brief Callback to be invoked when an item is added to the multibuttonentry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The parent object
+ * @param[in] item_label The label corresponding to the added item.
+ * @param[in] item_data data specific to this item.
+ * @param[in] data data specific to the multibuttonentry.
+ *
+ * @return EINA_TRUE
+ * EINA_FALSE otherwise.
+ */
+typedef Eina_Bool (*Elm_Multibuttonentry_Item_Filter_Cb)(Evas_Object *obj, const char *item_label, const void *item_data, const void *data);
/**
- * @addtogroup Multibuttonentry
- * @{
+ * @brief Add a new multibuttonentry to the parent
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object or NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_multibuttonentry_add(Evas_Object *parent);
+
+
+/**
+ * @brief Get the entry of the multibuttonentry object
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @return The entry object, or NULL if none
+ */
+EAPI Evas_Object *elm_multibuttonentry_entry_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the value of expanded state.
+ *
+ e @since_tizen 2.3
+ *
+ * @remarks In expanded state, the complete entry will be displayed.
+ * Otherwise, only single line of the entry will be displayed.
+ *
+ * @param[in] obj The multibuttonentry object
+ * @return EINA_TRUE if the widget is in expanded state. EINA_FALSE if not.
+ */
+EAPI Eina_Bool elm_multibuttonentry_expanded_get(const Evas_Object *obj);
+
+/**
+ * @brief Set/Unset the multibuttonentry to expanded state.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks In expanded state, the complete entry will be displayed.
+ * Otherwise, only single line of the entry will be displayed.
+ *
+ * @param[in] obj The multibuttonentry object
+ * @param[in] expanded the value of expanded state.
+ * Set this to EINA_TRUE for expanded state.
+ * Set this to EINA_FALSE for single line state.
+ */
+EAPI void elm_multibuttonentry_expanded_set(Evas_Object *obj, Eina_Bool expanded);
+
+/**
+ * @brief Prepend a new item to the multibuttonentry
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @param[in] label The label of new item
+ * @param[in] func The callback function to be invoked when this item is pressed.
+ * @param[in] data The pointer to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @see Use elm_object_item_del() to delete the item.
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Append a new item to the multibuttonentry
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @param[in] label The label of new item
+ * @param[in] func The callback function to be invoked when this item is pressed.
+ * @param[in] data The pointer to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @see Use elm_object_item_del() to delete the item.
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Add a new item to the multibuttonentry before the indicated object
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @param[in] before The item before which to add it
+ * @param[in] label The label of new item
+ * @param[in] func The callback function to be invoked when this item is pressed.
+ * @param[in] data The pointer to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @see Use elm_object_item_del() to delete the item.
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Add a new item to the multibuttonentry after the indicated object
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @param[in] after The item after which to add it
+ * @param[in] label The label of new item
+ * @param[in] func The callback function to be invoked when this item is pressed.
+ * @param[in] data The pointer to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @see Use elm_object_item_del() to delete the item.
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Get a list of items in the multibuttonentry
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @return The list of items, or NULL if none
+ */
+EAPI const Eina_List *elm_multibuttonentry_items_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the base object of the item.
+ *
+ * @remarks Base object is the @c Evas_Object that represents that item.
+ *
+ * @param[in] it The multibuttonentry item
+ * @return The base object associated with @p item
+ */
+EAPI Evas_Object *elm_multibuttonentry_item_object_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Get the first item in the multibuttonentry
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @return The first item, or NULL if none
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_first_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the last item in the multibuttonentry
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @return The last item, or NULL if none
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_last_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the selected item in the multibuttonentry
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @return The selected item, or NULL if none
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_selected_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Set the selected state of an item
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item
+ * @param[in] selected if it's EINA_TRUE, select the item otherwise, unselect the item
+ */
+EAPI void elm_multibuttonentry_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+
+/**
+ * @brief Get the selected state of an item
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item
+ * @return EINA_TRUE if the item is selected, EINA_FALSE otherwise.
+ */
+EAPI Eina_Bool elm_multibuttonentry_item_selected_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Remove all items in the multibuttonentry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ */
+EAPI void elm_multibuttonentry_clear(Evas_Object *obj);
+
+/**
+ * @brief Get the previous item in the multibuttonentry
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item
+ * @return The item before the item @p it
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_item_prev_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Get the next item in the multibuttonentry
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item
+ * @return The item after the item @p it
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_item_next_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Append an item filter function for text inserted in the Multibuttonentry
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Append the given callback to the list. This functions will be
+ * called whenever any text is inserted into the Multibuttonentry,
+ * with the text to be inserted as a parameter. The callback function
+ * is free to alter the text in any way it wants, but it must remember
+ * to free the given pointer and update it. If the new text is to be
+ * discarded, the function can free it and set it text parameter
+ * to NULL. This will also prevent any following filters from being
+ * called.
+ *
+ * @param[in] obj The multibuttonentry object
+ * @param[in] func The function to use as item filter
+ * @param[in] data User data to pass to @p func
+ */
+EAPI void elm_multibuttonentry_item_filter_append(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, const void *data);
+
+/**
+ * @brief Prepend a filter function for text inserted in the Multibuttonentry
+ *
+ * @details Prepend the given callback to the list.
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_multibuttonentry_item_filter_append()
+ *
+ * @param[in] obj The multibuttonentry object
+ * @param[in] func The function to use as text filter
+ * @param[in] data User data to pass to @p func
+ */
+EAPI void elm_multibuttonentry_item_filter_prepend(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, const void *data);
+
+/**
+ * @brief Remove a filter from the list
+ *
+ * @details Removes the given callback from the filter list.
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_multibuttonentry_item_filter_append()
+ *
+ * @param[in] obj The multibuttonentry object
+ * @param[in] func The filter function to remove
+ * @param[in] data The user data passed when adding the function
+ */
+EAPI void elm_multibuttonentry_item_filter_remove(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, const void *data);
+
+/**
+ * @brief Sets if the multibuttonentry is to be editable or not.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @param[in] editable If EINA_TRUE, user can add/delete item in multibuttonentry, if not, the multibuttonentry is non-editable.
+ *
+ * @since 1.7
+ */
+EAPI void elm_multibuttonentry_editable_set(Evas_Object *obj, Eina_Bool editable);
+
+/**
+ * @brief Gets whether the multibuttonentry is editable or not.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The multibuttonentry object
+ * @return EINA_TRUE if the multibuttonentry is editable by the user. EINA_FALSE if not.
+ *
+ * @since 1.7
*/
+EAPI Eina_Bool elm_multibuttonentry_editable_get(const Evas_Object *obj);
-#include "elc_multibuttonentry_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elc_multibuttonentry_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elc_multibuttonentry_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elc_naviframe.h b/src/lib/elc_naviframe.h
index f4c4a2700..1b07ebcc1 100644
--- a/src/lib/elc_naviframe.h
+++ b/src/lib/elc_naviframe.h
@@ -1,6 +1,6 @@
/**
* @defgroup Naviframe Naviframe
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html naviframe_inheritance_tree.png
* @image latex naviframe_inheritance_tree.eps
@@ -10,11 +10,9 @@
*
* A naviframe holds views (or pages) as its items. Those items are
* organized in a stack, so that new items get pushed on top of the
- * old, and only the topmost view is displayed at one time. Due to the
- * characteristics of a stack, even though you push a new item, previous item
- * is not deleted. Previous item will be shown when you pop new item. The
- * transition between views is animated, depending on the theme applied to the
- * widget.
+ * old, and only the topmost view is displayed at one time. The
+ * transition between views is animated, depending on the theme
+ * applied to the widget.
*
* Naviframe views hold spaces to various elements, which are:
* - back button, used to navigate to previous views,
@@ -24,10 +22,12 @@
* - title icon and
* - content area.
*
- * One can use @ref elm_object_item_part_content_set,
- * @ref elm_object_item_part_content_get,
- * @ref elm_object_item_part_content_unset functions to handle the contents.
- * The swallow part name should be one of these:
+ * This widget inherits from the @ref Layout one, so that all the
+ * functions acting on it also work for naviframe objects.
+ *
+ * Because this widget is a layout, one places content on those areas
+ * by using elm_layout_content_set() on the right swallow part names
+ * expected for each, which are:
* @li @c "default" - The main content of the current page
* @li @c "icon" - An icon in the title area of the current page
* @li @c "prev_btn" - A button of the current page to go to the
@@ -35,11 +35,10 @@
* @li @c "next_btn" - A button of the current page to go to the next
* page
*
- * One can use @ref elm_object_item_part_text_set,
- * @ref elm_object_item_part_text_get to handle the text parts.
- * The swallow part name should be one of these:
- * @li @c "default" - A title label in the title area of the current page
- * @li @c "subtitle" - A sub-title label in the title area of the
+ * For text, elm_layout_text_set() will work here on:
+ * @li @c "default" - Title label in the title area of the current
+ * page
+ * @li @c "subtitle" - Sub-title label in the title area of the
* current page
*
* Most of those content objects can be passed at the time of an item
@@ -55,20 +54,16 @@
*
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* @li @c "transition,finished" - When the transition is finished in
* changing the item
- * @li @c "title,transition,finished" - When the title area's transition
- * is finished in changing the state
- * of the title
+ * @li @c "title,transition,finished" - When the title transition is
+ * finished in changing enabled
+ * state of the title
* @li @c "title,clicked" - User clicked title area
- * @li @c "focused" - When the naviframe has received focus. (since 1.8)
- * @li @c "unfocused" - When the naviframe has lost focus. (since 1.8)
- * @li @c "language,changed" - the program's language changed (since 1.9)
*
* All the parts, for content and text, described here will also be
* reachable by naviframe @b items direct calls:
- * @li @ref elm_object_item_del
* @li @ref elm_object_item_part_text_set
* @li @ref elm_object_item_part_text_get
* @li @ref elm_object_item_part_content_set
@@ -80,22 +75,396 @@
* widget's target layout, when accessed directly. Items lying below
* the top one can be interacted with this way.
*
- * Here is an example on its usage:
- * @li @ref naviframe_example
+ * @{
*/
/**
- * @addtogroup Naviframe
- * @{
+ * @typedef Elm_Naviframe_Item_Pop_Cb
+ *
+ * @since_tizen 2.3
+ *
+ * Pop callback called when @c it is going to be popped. @c data is user
+ * specific data. If it returns the @c EINA_FALSE in the callback, item popping
+ * will be cancelled.
+ *
+ * @see elm_naviframe_item_pop_cb_set()
+ *
+ * @since 1.8
+ */
+typedef Eina_Bool (*Elm_Naviframe_Item_Pop_Cb)(void *data, Elm_Object_Item *it);
+
+/**
+ * @brief Add a new Naviframe object to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent Parent object
+ * @return New object or @c NULL, if it cannot be created
+ */
+EAPI Evas_Object *elm_naviframe_add(Evas_Object *parent);
+
+/**
+ * @brief Push a new item to the top of the naviframe stack (and show it).
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @param[in] title_label The label in the title area. The name of the title
+ * label part is "elm.text.title"
+ * @param[in] prev_btn The button to go to the previous item. If it is NULL,
+ * then naviframe will create a back button automatically. The name of
+ * the prev_btn part is "elm.swallow.prev_btn"
+ * @param[in] next_btn The button to go to the next item. Or It could be just an
+ * extra function button. The name of the next_btn part is
+ * "elm.swallow.next_btn"
+ * @param[in] content The main content object. The name of content part is
+ * "elm.swallow.content"
+ * @param[in] item_style The current item style name. @c NULL would be default.
+ * @return The created item or @c NULL upon failure.
+ *
+ * The item pushed becomes one page of the naviframe, this item will be
+ * deleted when it is popped.
+ *
+ * @see also elm_naviframe_item_style_set()
+ * @see also elm_naviframe_item_insert_before()
+ * @see also elm_naviframe_item_insert_after()
+ *
+ * The following styles are available for this item:
+ * @li @c "default"
+ */
+EAPI Elm_Object_Item *elm_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style);
+
+/**
+ * @brief Insert a new item into the naviframe before item @p before.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @param[in] before The naviframe item to insert before.
+ * @param[in] title_label The label in the title area. The name of the title
+ * label part is "elm.text.title"
+ * @param[in] prev_btn The button to go to the previous item. If it is NULL,
+ * then naviframe will create a back button automatically. The name of
+ * the prev_btn part is "elm.swallow.prev_btn"
+ * @param[in] next_btn The button to go to the next item. Or It could be just an
+ * extra function button. The name of the next_btn part is
+ * "elm.swallow.next_btn"
+ * @param[in] content The main content object. The name of content part is
+ * "elm.swallow.content"
+ * @param[in] item_style The current item style name. @c NULL would be default.
+ * @return The created item or @c NULL upon failure.
+ *
+ * The item is inserted into the naviframe straight away without any
+ * transition operations. This item will be deleted when it is popped.
+ *
+ * @see also elm_naviframe_item_style_set()
+ * @see also elm_naviframe_item_push()
+ * @see also elm_naviframe_item_insert_after()
+ *
+ * The following styles are available for this item:
+ * @li @c "default"
+ */
+EAPI Elm_Object_Item *elm_naviframe_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style);
+
+/**
+ * @brief Insert a new item into the naviframe after item @p after.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @param[in] after The naviframe item to insert after.
+ * @param[in] title_label The label in the title area. The name of the title
+ * label part is "elm.text.title"
+ * @param[in] prev_btn The button to go to the previous item. If it is NULL,
+ * then naviframe will create a back button automatically. The name of
+ * the prev_btn part is "elm.swallow.prev_btn"
+ * @param[in] next_btn The button to go to the next item. Or It could be just an
+ * extra function button. The name of the next_btn part is
+ * "elm.swallow.next_btn"
+ * @param[in] content The main content object. The name of content part is
+ * "elm.swallow.content"
+ * @param[in] item_style The current item style name. @c NULL would be default.
+ * @return The created item or @c NULL upon failure.
+ *
+ * The item is inserted into the naviframe straight away without any
+ * transition operations. This item will be deleted when it is popped.
+ *
+ * @see also elm_naviframe_item_style_set()
+ * @see also elm_naviframe_item_push()
+ * @see also elm_naviframe_item_insert_before()
+ *
+ * The following styles are available for this item:
+ * @li @c "default"
+ */
+EAPI Elm_Object_Item *elm_naviframe_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style);
+
+/**
+ * @brief Pop an item that is on top of the stack
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @return @c NULL or the content object(if the
+ * elm_naviframe_content_preserve_on_pop_get is true).
+ *
+ * This pops an item that is on the top(visible) of the naviframe, makes it
+ * disappear, then deletes the item. The item that was underneath it on the
+ * stack will become visible.
+ *
+ * @see also elm_naviframe_content_preserve_on_pop_get()
+ * @see also elm_naviframe_item_pop_cb_set()
+ */
+EAPI Evas_Object *elm_naviframe_item_pop(Evas_Object *obj);
+
+/**
+ * @brief Pop the items between the top and the above one on the given item.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The naviframe item
+ */
+EAPI void elm_naviframe_item_pop_to(Elm_Object_Item *it);
+
+/**
+ * @brief Promote an item already in the naviframe stack to the top of the stack
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This will take the indicated item and promote it to the top of
+ * the stack as if it had been pushed there. The item must already
+ * be inside the naviframe stack to work.
+ *
+ * @param[in] it The naviframe item
+ */
+EAPI void elm_naviframe_item_promote(Elm_Object_Item *it);
+
+/**
+ * @brief preserve the content objects when items are popped.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @param[in] preserve Enable the preserve mode if EINA_TRUE, disable otherwise
+ *
+ * @see also elm_naviframe_content_preserve_on_pop_get()
+ */
+EAPI void elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, Eina_Bool preserve);
+
+/**
+ * @brief Get a value whether preserve mode is enabled or not.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @return If @c EINA_TRUE, preserve mode is enabled
+ *
+ * @see also elm_naviframe_content_preserve_on_pop_set()
+ */
+EAPI Eina_Bool elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj);
+
+/**
+ * @brief Get a top item on the naviframe stack
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @return The top item on the naviframe stack or @c NULL, if the stack is
+ * empty
+ */
+EAPI Elm_Object_Item *elm_naviframe_top_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Get a bottom item on the naviframe stack
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @return The bottom item on the naviframe stack or @c NULL, if the stack is
+ * empty
*/
+EAPI Elm_Object_Item *elm_naviframe_bottom_item_get(const Evas_Object *obj);
-#include "elc_naviframe_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elc_naviframe_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elc_naviframe_legacy.h"
-#endif
+/**
+ * @brief Set an item style
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The following styles are available for this item: @li @c "default"
+ *
+ * @param[in] it The naviframe item
+ * @param[in] item_style The current item style name. @c NULL would be default
+ *
+ * @see also elm_naviframe_item_style_get()
+ */
+EAPI void elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style);
+
+/**
+ * @brief Get an item style
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The naviframe item
+ * @return The current item style name
+ *
+ * @see also elm_naviframe_item_style_set()
+ */
+EAPI const char *elm_naviframe_item_style_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Enable/Disable the title area with transition effect
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When the title area is disabled, then the controls would be hidden
+ * so as to expand the content area to full-size.
+ *
+ * @param[in] it The naviframe item
+ * @param[in] enabled If @c EINA_TRUE, title area will be enabled, disabled
+ * otherwise
+ * @param[in] transition If @c EINA_TRUE, transition effect of the title will be
+ * visible, invisible otherwise
+ *
+ * @see also elm_naviframe_item_title_enabled_get()
+ * @see also elm_naviframe_item_title_visible_set()
+ */
+EAPI void elm_naviframe_item_title_enabled_set(Elm_Object_Item *it, Eina_Bool enabled, Eina_Bool transition);
+
+/**
+ * @brief Get a value whether title area is enabled or not.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The naviframe item
+ * @return If @c EINA_TRUE, title area is enabled
+ *
+ * @see also elm_naviframe_item_title_enabled_set()
+ */
+EAPI Eina_Bool elm_naviframe_item_title_enabled_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Set a function to be called when @c it of the naviframe is going to
+ * be popped.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Don't set "clicked" callback to the prev button additionally if the
+ * function does a exact same logic with this @c func. When hardware back key is
+ * pressed then both callbacks will be called.
+ *
+ * @param[in] it The item to set the callback on
+ * @param[in] func the callback function.
+ * @param[in] data user data
+ */
+EAPI void elm_naviframe_item_pop_cb_set(Elm_Object_Item *it, Elm_Naviframe_Item_Pop_Cb func, void *data);
+
+/**
+ * @brief Set creating prev button automatically or not
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @param[in] auto_pushed If @c EINA_TRUE, the previous button(back button) will
+ * be created internally when you pass the @c NULL to the prev_btn
+ * parameter in elm_naviframe_item_push
+ *
+ * @see also elm_naviframe_item_push()
+ */
+EAPI void elm_naviframe_prev_btn_auto_pushed_set(Evas_Object *obj, Eina_Bool auto_pushed);
+
+/**
+ * @brief Get a value whether prev button(back button) will be auto pushed or
+ * not.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @return If @c EINA_TRUE, prev button will be auto pushed.
+ *
+ * @see also elm_naviframe_item_push()
+ * elm_naviframe_prev_btn_auto_pushed_set()
+ */
+EAPI Eina_Bool elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj);
+
+/**
+ * @brief Get a list of all the naviframe items.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The returned list MUST be freed.
+ *
+ * @param[in] obj The naviframe object
+ * @return An Eina_List of naviframe items, #Elm_Object_Item,
+ * or @c NULL on failure.
+ */
+EAPI Eina_List *elm_naviframe_items_get(const Evas_Object *obj) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
+
+/**
+ * @brief Set the event enabled when pushing/popping items
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If @c enabled is EINA_TRUE, the contents of the naviframe item will
+ * receives events from mouse and keyboard during view changing such as
+ * item push/pop.
+ *
+ * @remarks Events will be blocked by calling evas_object_freeze_events_set()
+ * internally. So don't call the API whiling pushing/popping items.
+ *
+ * @param[in] obj The naviframe object
+ * @param[in] enabled Events are received when enabled is @c EINA_TRUE, and
+ * ignored otherwise.
+ *
+ * @see elm_naviframe_event_enabled_get()
+ * @see evas_object_freeze_events_set()
+ */
+EAPI void elm_naviframe_event_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @brief Get the value of event enabled status.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @return EINA_TRUE, when event is enabled
+ *
+ * @see elm_naviframe_event_enabled_set()
+ */
+EAPI Eina_Bool elm_naviframe_event_enabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Simple version of item_push.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The naviframe object
+ * @param[in] content The main content object. The name of content part is
+ * "elm.swallow.content"
+ * @return The created item or @c NULL upon failure.
+ *
+ * @see elm_naviframe_item_push
+ */
+static inline Elm_Object_Item *
+elm_naviframe_item_simple_push(Evas_Object *obj, Evas_Object *content)
+{
+ Elm_Object_Item *it;
+ it = elm_naviframe_item_push(obj, NULL, NULL, NULL, content, NULL);
+ elm_naviframe_item_title_enabled_set(it, EINA_FALSE, EINA_FALSE);
+ return it;
+}
+
+/**
+ * @brief Simple version of item_promote.
+ *
+ * @since_tizen 2.3
+ * @param[in] obj The naviframe object
+ * @param[in] content The main content object. The name of content part is
+ * "elm.swallow.content"
+ *
+ * @see elm_naviframe_item_promote
+ */
+EAPI void elm_naviframe_item_simple_promote(Evas_Object *obj, Evas_Object *content);
/**
* @}
diff --git a/src/lib/elc_popup.h b/src/lib/elc_popup.h
index 5183a6fa4..9f41ee6aa 100644
--- a/src/lib/elc_popup.h
+++ b/src/lib/elc_popup.h
@@ -1,28 +1,28 @@
/**
* @defgroup Popup Popup
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html popup_inheritance_tree.png
* @image latex popup_inheritance_tree.eps
*
- * This widget is an enhancement of @ref Notify. In addition to
- * content area, there are two optional sections, namely title area and
- * action area.
+ * @brief This widget is an enhancement of @ref Notify. In addition to
+ * content area, there are two optional sections, namely title area and
+ * action area.
*
* The popup widget displays its content with a particular orientation in
* the parent area. This orientation can be one among top, center,
* bottom, left, top-left, top-right, bottom-left and bottom-right.
* Content part of Popup can be an Evas Object set by application or
* it can be Text set by application or set of items containing an
- * icon and/or text. The content/item-list can be removed using
+ * icon and/or text. The content/item-list can be removed using
* elm_object_content_set with second parameter passed as NULL.
*
* The following figures show the textual layouts of popup in which Title
- * Area and Action area are optional ones. Action area can have
+ * Area and Action area area are optional ones. Action area can have
* up to 3 buttons handled using elm_object common APIs mentioned
* below. If user wants to have more than 3 buttons then these buttons
- * can be put inside the items of a list as content. User needs to
- * handle the clicked signal of these action buttons if required. No
+ * can be put inside the items of a list as content. User needs to
+ * handle the clicked signal of these action buttons if required. No
* event is processed by the widget automatically when clicked on
* these action buttons.
*
@@ -52,34 +52,26 @@
* </pre>
*
* Timeout can be set on expiry of which popup instance hides and
- * sends a smart signal "timeout" to the user. The visible region of
+ * sends a smart signal "timeout" to the user. The visible region of
* popup is surrounded by a translucent region called Blocked Event
- * area. By clicking on Blocked Event area, the signal
+ * area. By clicking on Blocked Event area, the signal
* "block,clicked" is sent to the application. This block event area
- * can be avoided by using API elm_popup_allow_events_set. When gets
+ * can be avoided by using API elm_popup_allow_events_set. When gets
* hidden, popup does not get destroyed automatically, application
- * should destroy the popup instance after use. To control the
+ * should destroy the popup instance after use. To control the
* maximum height of the internal scroller for item, we use the height
* of the action area which is passed by theme based on the number of
* buttons currently set to popup.
*
- * Popup sets the focus to itself when evas_object_show is called on popup.
- * To set the focus into popup's contents and buttons automatically,
- * evas_object_show on popup should be called after setting all the contents
- * and buttons of popup.
- *
* This widget inherits from the @ref Layout one, so that all the
- * functions acting on it also work for popup objects (since 1.8).
+ * functions acting on it also work for popup objects (@since 1.8).
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* @li @c "timeout" - whenever popup is closed as a result of timeout.
* @li @c "block,clicked" - whenever user taps on Blocked Event area.
- * @li @c "focused" - When the popup has received focus. (since 1.8)
- * @li @c "unfocused" - When the popup has lost focus. (since 1.8)
- * @li "language,changed" - the program's language changed (since 1.8)
- * @li "item,focused" - When the popup item has recieved focus. (since 1.10)
- * @li "item,unfocused" - When the popup item has lost focus. (since 1.10)
+ * @li @c "language,changed" - The program's language changed. (@since 1.8)
+ * @li @c "show,finished" - When the popup transition is finished in showing.
*
* Styles available for Popup
* @li "default"
@@ -92,35 +84,257 @@
* @li "button3" - 3rd button of the action area
*
* Default text parts of the popup widget that you can use are:
- * @li "title,text" - A title area's label
- * @li "default" - A content-text set in the content area of the widget
+ * @li "title,text" - This operates on Title area's label
+ * @li "default" - content-text set in the content area of the widget
*
* Default contents parts of the popup items that you can use are:
- * @li "default" - An item's icon
+ * @li "default" -Item's icon
*
* Default text parts of the popup items that you can use are:
- * @li "default" - An item's label
+ * @li "default" - Item's label
*
* Supported elm_object_item common APIs.
+ * @li @ref elm_object_item_disabled_set
+ * @li @ref elm_object_item_disabled_get
* @li @ref elm_object_item_part_text_set
* @li @ref elm_object_item_part_text_get
* @li @ref elm_object_item_part_content_set
* @li @ref elm_object_item_part_content_get
- * @li @ref elm_object_item_disabled_set
- * @li @ref elm_object_item_disabled_get
- * @li @ref elm_object_item_del
* @li @ref elm_object_item_signal_emit
+ * @li @ref elm_object_item_del
+ *
+ * @{
+ */
+
+/**
+ * @brief Possible orient values for popup.
+ *
+ * These values should be used in conjunction to elm_popup_orient_set() to
+ * set the position in which the popup should appear(relative to its parent)
+ * and in conjunction with elm_popup_orient_get() to know where the popup
+ * is appearing.
+ */
+typedef enum
+{
+ ELM_POPUP_ORIENT_TOP = 0, /**< Popup should appear in the top of parent, default */
+ ELM_POPUP_ORIENT_CENTER, /**< Popup should appear in the center of parent */
+ ELM_POPUP_ORIENT_BOTTOM, /**< Popup should appear in the bottom of parent */
+ ELM_POPUP_ORIENT_LEFT, /**< Popup should appear in the left of parent */
+ ELM_POPUP_ORIENT_RIGHT, /**< Popup should appear in the right of parent */
+ ELM_POPUP_ORIENT_TOP_LEFT, /**< Popup should appear in the top left of parent */
+ ELM_POPUP_ORIENT_TOP_RIGHT, /**< Popup should appear in the top right of parent */
+ ELM_POPUP_ORIENT_BOTTOM_LEFT, /**< Popup should appear in the bottom left of parent */
+ ELM_POPUP_ORIENT_BOTTOM_RIGHT, /**< Notify should appear in the bottom right of parent */
+ ELM_POPUP_ORIENT_LAST /**< Sentinel value, @b don't use */
+ } Elm_Popup_Orient;
+
+/**
+ * @brief Adds a new Popup to the parent
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object or NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_popup_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+/**
+ * @brief Add a new item to a Popup object
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Both an item list and a content could not be set at the same time!
+ * once you add an item, the previous content will be removed.
+ *
+ * @remarks When the first item is appended to popup object, any previous
+ * content of the content area is deleted. At a time, only one of
+ * content, content-text and item(s) can be there in a popup content
+ * area.
+ *
+ * @param[in] obj popup object
+ * @param[in] icon Icon to be set on new item
+ * @param[in] label The Label of the new item
+ * @param[in] func Convenience function called when item selected
+ * @param[in] data Data passed to @p func above
+ * @return A handle to the item added or @c NULL, on errors
+ */
+EAPI Elm_Object_Item *elm_popup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
+
+/**
+ * @brief Sets the wrapping type of content text packed in content
+ * area of popup object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Popup object
+ * @param[in] wrap wrapping type of type Elm_Wrap_Type
+ * @see elm_popup_content_text_wrap_type_get()
+ */
+EAPI void elm_popup_content_text_wrap_type_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
+
+/**
+ * @brief Returns the wrapping type of content text packed in content area of
+ * popup object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Popup object
+ * @return wrap type of the content text
+ * @see elm_popup_content_text_wrap_type_set
+ */
+EAPI Elm_Wrap_Type elm_popup_content_text_wrap_type_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+/**
+ * @brief Sets the orientation of the popup in the parent region
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The popup object
+ * @param[in] orient the orientation of the popup
*
- * Here are some sample code to illustrate Popup usage:
- * @li @ref popup_example_01_c
- * @li @ref popup_example_02_c
- * @li @ref popup_example_03_c
+ * Sets the position in which popup will appear in its parent
+ * @see @ref Elm_Popup_Orient for possible values.
*/
+EAPI void elm_popup_orient_set(Evas_Object *obj, Elm_Popup_Orient orient) EINA_ARG_NONNULL(1);
-#include "elc_popup_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elc_popup_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elc_popup_legacy.h"
-#endif
+/**
+ * @brief Returns the orientation of Popup
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The popup object
+ * @return the orientation of the popup
+ *
+ * @see elm_popup_orient_set()
+ * @see Elm_Popup_Orient
+ */
+EAPI Elm_Popup_Orient elm_popup_orient_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+/**
+ * @brief Sets a timeout to hide popup automatically
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The popup object
+ * @param[in] timeout The timeout in seconds
+ *
+ * @details This function sets a timeout and starts the timer controlling when
+ * the popup is hidden.
+ *
+ * @remarks Since calling evas_object_show() on a popup restarts
+ * the timer controlling when it is hidden, setting this before the
+ * popup is shown will in effect mean starting the timer when the
+ * popup is shown. Smart signal "timeout" is called afterwards which
+ * can be handled if needed.
+ *
+ * @remarks Set a value <= 0.0 to disable a running timer.
+ *
+ * @remarks If the value > 0.0 and the popup is previously visible, the
+ * timer will be started with this value, canceling any running timer.
+ */
+EAPI void elm_popup_timeout_set(Evas_Object *obj, double timeout) EINA_ARG_NONNULL(1);
+
+/**
+ * @brief Returns the timeout value set to the popup (in seconds)
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The popup object
+ * @return the timeout value
+ *
+ * @see elm_popup_timeout_set()
+ */
+EAPI double elm_popup_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+/**
+ * @brief Sets whether events should be passed to by a click outside.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The popup object
+ * @param[in] allow EINA_TRUE Events are passed to lower objects, else not
+ *
+ * @remarks Enabling allow event will remove the Blocked event area and events
+ * will pass to the lower layer objects otherwise they are blocked.
+ *
+ * @remarks The default value is EINA_FALSE.
+ *
+ * @see elm_popup_allow_events_get()
+ */
+EAPI void elm_popup_allow_events_set(Evas_Object *obj, Eina_Bool allow);
+
+/**
+ * @brief Returns value indicating whether allow event is enabled or not
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The popup object
+ * @return EINA_FALSE if Blocked event area is present else EINA_TRUE
+ *
+ * @see elm_popup_allow_events_set()
+ * @note By default the Blocked event area is present
+ */
+EAPI Eina_Bool elm_popup_allow_events_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Set the popup's parent
+ *
+ * @param[in] obj The popup object
+ * @param[in] parent The new parent
+ *
+ * Once the parent object is set, a previously set one will be disconnected
+ * and replaced.
+ */
+EAPI void elm_popup_parent_set(Evas_Object *obj, Evas_Object *parent);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Get the popup's parent
+ *
+ * @param[in] obj The popup object
+ * @return The parent
+ *
+ * @see elm_popup_parent_set()
+ */
+EAPI Evas_Object *elm_popup_parent_get(Evas_Object *obj);
+
+/**
+ * @brief Set the alignment of the popup object
+ *
+ * @details Sets the alignment in which the popup will appear in its parent.
+ *
+ * @since 1.9
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj popup object
+ * @param[in] horizontal The horizontal alignment of the popup
+ * @param[in] vertical The vertical alignment of the popup
+ *
+ * @see elm_popup_align_get()
+ */
+EAPI void elm_popup_align_set(Evas_Object *obj, double horizontal, double vertical);
+
+/**
+ * @brief Get the alignment of the popup object
+ *
+ * @since 1.9
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The popup object
+ * @param[out] horizontal The horizontal alignment of the popup
+ * @param[out] vertical The vertical alignment of the popup
+ *
+ * @see elm_popup_align_set()
+ */
+EAPI void elm_popup_align_get(const Evas_Object *obj, double *horizontal, double *vertical);
+
+/**
+ * @}
+ */
diff --git a/src/lib/elm_access.h b/src/lib/elm_access.h
index a4ffba986..bb15d6e43 100644
--- a/src/lib/elm_access.h
+++ b/src/lib/elm_access.h
@@ -1,275 +1,328 @@
/**
+ * @internal
* @defgroup Access Access
- * @ingroup Elementary
- *
- * WARNING! this API is not finalized. It is unstable. - do not use it if
- * you want no breaks in future.
+ * @ingroup elm_infra_group
*
* TODO: description
*
+ * @{
*/
-#include "elm_access.eo.h"
+#define MSG_DOMAIN_CONTROL_ACCESS (int)ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL
enum _Elm_Access_Info_Type
{
ELM_ACCESS_INFO_FIRST = -1,
- ELM_ACCESS_INFO, /* next read is info - this is
- * normally label */
- ELM_ACCESS_TYPE, /* when reading out widget or item
+ ELM_ACCESS_INFO, /* Next read is info - this is
+ * normally the label */
+ ELM_ACCESS_TYPE, /* When reading out the widget or item
* this is read first */
- ELM_ACCESS_STATE, /* if there is a state (eg checkbox)
- * then read state out */
- ELM_ACCESS_CONTEXT_INFO, /* to give contextual information */
+ ELM_ACCESS_STATE, /* If there is a state (eg checkbox)
+ * then read the state out */
+ ELM_ACCESS_CONTEXT_INFO, /* To give contextual information */
ELM_ACCESS_INFO_LAST
};
/**
- * @since 1.8
* @typedef Elm_Access_Info_Type
*/
typedef enum _Elm_Access_Info_Type Elm_Access_Info_Type;
+typedef char *(*Elm_Access_Info_Cb)(void *data, Evas_Object *obj);
+typedef void (*Elm_Access_Activate_Cb)(void *data, Evas_Object *part_obj, Elm_Object_Item *item);
+
/**
* @enum _Elm_Access_Action_Type
- * Enum of supported access action types.
+ * @brief Enumerations of the supported access action types.
*/
enum _Elm_Access_Action_Type
{
ELM_ACCESS_ACTION_FIRST = -1,
- ELM_ACCESS_ACTION_HIGHLIGHT, /* highlight an object */
- ELM_ACCESS_ACTION_UNHIGHLIGHT, /* unhighlight an object */
- ELM_ACCESS_ACTION_HIGHLIGHT_NEXT, /* set highlight to next object */
- ELM_ACCESS_ACTION_HIGHLIGHT_PREV, /* set highlight to previous object */
- ELM_ACCESS_ACTION_ACTIVATE, /* activate a highlight object */
- ELM_ACCESS_ACTION_SCROLL, /* scroll if one of highlight object parents
+ ELM_ACCESS_ACTION_HIGHLIGHT, /**< Highlight an object */
+ ELM_ACCESS_ACTION_UNHIGHLIGHT, /**< Unhighlight an object */
+ ELM_ACCESS_ACTION_HIGHLIGHT_NEXT, /**< Set highlight to the next object */
+ ELM_ACCESS_ACTION_HIGHLIGHT_PREV, /**< Set highlight to the previous object */
+ ELM_ACCESS_ACTION_ACTIVATE, /**< Activate a highlight object */
+ ELM_ACCESS_ACTION_VALUE_CHANGE, /**< TODO: deprecate this */
+ ELM_ACCESS_ACTION_SCROLL, /**< Scroll if one of the highlight object parents
* is scrollable */
- ELM_ACCESS_ACTION_UP, /* change value up of highlight object */
- ELM_ACCESS_ACTION_DOWN, /* change value down of highlight object */
- ELM_ACCESS_ACTION_BACK, /* go back to a previous view
+ ELM_ACCESS_ACTION_ZOOM, /**< Send the signal of the zoom gesture
+ * by a callback function */
+ ELM_ACCESS_ACTION_MOUSE, /**< Give the mouse event to the highlight object */
+ ELM_ACCESS_ACTION_UP, /**< Change the value up of the highlight object */
+ ELM_ACCESS_ACTION_DOWN, /**< Change the value down of the highlight object */
+ ELM_ACCESS_ACTION_BACK, /**< Go back to a previous view
ex: pop naviframe item */
- ELM_ACCESS_ACTION_READ, /* highlight an object */
+ ELM_ACCESS_ACTION_OVER, /**< Mouse over an object */
+ ELM_ACCESS_ACTION_READ, /**< Highlight an object */
+ ELM_ACCESS_ACTION_ENABLE, /**< Enable highlight and read ability */
+ ELM_ACCESS_ACTION_DISABLE, /**< Disable highlight and read ability */
ELM_ACCESS_ACTION_LAST
};
/**
- * @since 1.8
* @typedef Elm_Access_Action_Type
*/
typedef enum _Elm_Access_Action_Type Elm_Access_Action_Type;
+enum _Elm_Highlight_Direction
+{
+ ELM_HIGHLIGHT_DIR_FIRST = -1,
+ ELM_HIGHLIGHT_DIR_NEXT,
+ ELM_HIGHLIGHT_DIR_PREVIOUS
+};
+/**
+ * @typedef Elm_Access_Action_Type
+ */
+typedef enum _Elm_Highlight_Direction Elm_Highlight_Direction;
+
+enum _Elm_Access_Sound_Type
+{
+ ELM_ACCESS_SOUND_FIRST = -1,
+ ELM_ACCESS_SOUND_HIGHLIGHT,
+ ELM_ACCESS_SOUND_SCROLL,
+ ELM_ACCESS_SOUND_END,
+ ELM_ACCESS_SOUND_LAST
+};
+/**
+ * @typedef Elm_Access_Sound_Type
+ */
+typedef enum _Elm_Access_Sound_Type Elm_Access_Sound_Type;
+
struct _Elm_Access_Action_Info
{
+ double zoom;
+ double angle;
Evas_Coord x;
Evas_Coord y;
- unsigned int mouse_type; /* 0: mouse down
+ unsigned int mouse_type; /**< 0: mouse down
1: mouse move
2: mouse up */
Elm_Access_Action_Type action_type;
Elm_Access_Action_Type action_by;
Eina_Bool highlight_cycle : 1;
+ Eina_Bool highlight_end : 1;
};
-/**
- * @since 1.8
- * @typedef Elm_Access_Action_Info
- */
typedef struct _Elm_Access_Action_Info Elm_Access_Action_Info;
-enum _Elm_Highlight_Direction
-{
- ELM_HIGHLIGHT_DIR_FIRST = -1,
- ELM_HIGHLIGHT_DIR_NEXT,
- ELM_HIGHLIGHT_DIR_PREVIOUS
-};
-
/**
- * @since 1.8
- * @typedef Elm_Highlight_Direction
- */
-typedef enum _Elm_Highlight_Direction Elm_Highlight_Direction;
-
-/**
- * @since 1.8
* @typedef Elm_Access_Action_Cb
+ * @brief Called to make an access object do specific actions.
*
- * User callback to make access object do specific action
- *
- * @param data user data
- * @param action_info information to classify the action
- * Returns @c EINA_TRUE on success, @c EINA FALSE otherwise
+ * @param[in] data The user data
+ * @param[in] action_info The information to classify the action
+ * @return @c EINA_TRUE on success, otherwise @c EINA FALSE
*
*/
typedef Eina_Bool (*Elm_Access_Action_Cb)(void *data, Evas_Object *obj, Elm_Access_Action_Info *action_info);
-typedef char *(*Elm_Access_Info_Cb)(void *data, Evas_Object *obj);
-typedef void (*Elm_Access_Activate_Cb)(void *data, Evas_Object *part_obj, Elm_Object_Item *item);
-
-
/**
- * @brief Register evas object as an accessible object.
- * @since 1.8
+ * @brief Registers the evas object as an accessible object.
*
- * @param obj The evas object to register as an accessible object.
- * @param parent The elementary object which is used for creating
- * accessible object.
+ * @since 1.8
*
- * @ingroup Access
+ * @param[in] obj The evas object to register as an accessible object
+ * @param[in] parent The elementary object which is used for creating
+ * an accessible object
*/
EAPI Evas_Object *elm_access_object_register(Evas_Object *obj, Evas_Object *parent);
/**
- * @brief Unregister accessible object.
- * @since 1.8
+ * @brief Unregister the accessible object.
*
- * @param obj The Evas object to unregister accessible object.
+ * @since 1.8
*
- * @ingroup Access
+ * @param[in] obj The Evas object to unregister an accessible object
*/
EAPI void elm_access_object_unregister(Evas_Object *obj);
/**
- * @brief Get an accessible object of the evas object.
- * @since 1.8
+ * @brief Gets an accessible object of the evas object.
*
- * @param obj The evas object.
- * @return Accessible object of the evas object or NULL for any error
+ * @since 1.8
*
- * @ingroup Access
+ * @param[in] obj The evas object
+ * @return The accessible object of the evas object, otherwise @c NULL in case of an error
*/
EAPI Evas_Object *elm_access_object_get(const Evas_Object *obj);
/**
- * @brief Set text to give information for specific type.
+ * @brief Sets text to give information for a specific type.
+ *
* @since 1.8
*
- * @param obj Accessible object.
- * @param type The type of content that will be read
- * @param text The text information that will be read
+ * @param[in] obj The accessible object
+ * @param[in] type The type of content that is read
+ * @param[in] text The text information that is read
*
* @see elm_access_info_cb_set
- * @ingroup Access
*/
EAPI void elm_access_info_set(Evas_Object *obj, int type, const char *text);
/**
- * @brief Set text to give information for specific type.
+ * @brief Sets text to give information for a specific type.
+ *
* @since 1.8
*
- * @param obj Accessible object.
- * @param type The type of content that will be read
+ * @param[in] obj The accessible object
+ * @param[in] type The type of content that is read
*
* @see elm_access_info_cb_set
- * @ingroup Access
*/
EAPI char *elm_access_info_get(const Evas_Object *obj, int type);
/**
- * @brief Set content callback to give information for specific type.
- * @since 1.8
+ * @brief Sets a content callback to give information for a specific type.
*
- * @param obj Accessible object.
- * @param type The type of content that will be read
- * @param func The function to be called when the content is read
- * @param data The data pointer to be passed to @p func
+ * @since 1.8
*
- * The type would be one of ELM_ACCESS_TYPE, ELM_ACCESS_INFO,
- * ELM_ACCESS_STATE, ELM_ACCESS_CONTEXT_INFO.
+ * @remarks The type would be one from @c ELM_ACCESS_TYPE, @c ELM_ACCESS_INFO,
+ * @c ELM_ACCESS_STATE, or @c ELM_ACCESS_CONTEXT_INFO.
*
- * In the case of button widget, the content of ELM_ACCESS_TYPE would be
- * "button". The label of button such as "ok", "cancel" is for ELM_ACCESS_INFO.
- * If the button is disabled, content of ELM_ACCESS_STATE would be "disabled".
- * And if there is contextual information, use ELM_ACCESS_CONTEXT_INFO.
+ * @remarks In the case of button widget, the content of @c ELM_ACCESS_TYPE would be
+ * "button". The label of the button such as "ok", "cancel" is for @c ELM_ACCESS_INFO.
+ * If the button is disabled, content of @c ELM_ACCESS_STATE would be "disabled".
+ * And if there is contextual information, use @c ELM_ACCESS_CONTEXT_INFO.
*
- * @ingroup Access
+ * @param[in] obj The accessible object
+ * @param[in] type The type of content that is read
+ * @param[in] func The function to be called when the content is read
+ * @param[in] data The data pointer to be passed to @a func
*/
EAPI void elm_access_info_cb_set(Evas_Object *obj, int type, Elm_Access_Info_Cb func, const void *data);
/**
- * @brief Set activate callback to activate highlight object.
- * @since 1.8
+ * @brief Sets an activate callback to activate the highlight object.
*
- * @param obj Accessible object.
- * @param func The function to be called when the activate gesture is detected
- * @param data The data pointer to be passed to @p func
+ * @since 1.8
*
- * @ingroup Access
+ * @param[in] obj The accessible object
+ * @param[in] func The function to be called when the activate gesture is detected
+ * @param[in] data The data pointer to be passed to @a func
*/
EAPI void elm_access_activate_cb_set(Evas_Object *obj, Elm_Access_Activate_Cb func, void *data);
/**
- * @brief Read out text information directly.
+ * @brief Reads out text information directly.
+ *
* @since 1.8
*
- * @param text The text information that will be read
+ * @remarks This function does not free the @a text internally.
*
+ * @param[in] text The text information that is read
+ */
+EAPI void elm_access_say(const char *text);
+
+/**
+ * @brief Read out text information forcibly and directly.
+ * @since 1.11
+ *
+ * @param[in] text The text information that will be read
+ *
+ * This text isn't interupted any other elm_access_say.
+ * Don't use this API continuous and repeatedly
* This function will not free the @p text internally.
*
* @ingroup Access
*/
-EAPI void elm_access_say(const char *text);
+EAPI void elm_access_force_say(const char *text);
/**
- * @brief Give the highlight to the object directly.
+ * @brief Gives the highlight to the object directly.
+ *
* @since 1.8
*
- * @param obj The object that will have the highlight and its information be read.
+ * @remarks The object should be an elementary object or an access object.
*
- * The object should be an elementary object or an access object.
+ * @param[in] obj The object that has the highlight and its information to be read
*
* @see elm_access_object_get
- * @ingroup Access
*/
EAPI void elm_access_highlight_set(Evas_Object* obj);
/**
+ * @brief Gives the highlight to the item directly.
+ *
+ * @since 1.8
+ *
+ * @remarks This API works like elm_access_highlight_set().
+ * Just the given parameter is different.
+ *
+ * @param[in] item The item that has the highlight and its information to be read
+ *
+ * @see elm_access_highlight_set
+ */
+EAPI void elm_access_item_highlight_set(Elm_Object_Item *item);
+
+/**
+ * @brief Sets the next access object for the highlight.
+ *
+ * @since 1.8
+ *
+ * @remarks Currently the focus chain is used for accessing the highlight direction. Use this API
+ * to customize the focus chain. If the focus chain is already established, you can
+ * change one object's highlight chain and not break the other object's
+ * focus chain. If you use elm_object_focus_custom_chain_append(), it
+ * resets another object's custom chain also.
+ *
+ * @param[in] obj The object which is a previous access or widget object of the next object for highlight
+ * @param[in] dir The access direction which is same as the focus direction
+ * @param[in] next The object which is a next access object of @a obj for highlight
+ *
+ * @see elm_object_focus_custom_chain_append
+ */
+EAPI void
+elm_access_highlight_next_set(Evas_Object *obj, Elm_Highlight_Direction dir, Evas_Object *next);
+
+/**
+ * @brief Set the end of whole acces chain.
+ * @since 1.9
+ *
+ * @remarks If the access highlight reaches to start or end of an access chain,
+ * it should notice the situation. In some case, the application can change
+ * the order of access chain. In that case, the application have to set
+ * the end of access chain.
+ *
+ * @param[in] obj The object is in the end of access chain.
+ * @param[in] dir Access direction same as Focus direction
+ */
+EAPI void elm_access_chain_end_set(Evas_Object *obj, Elm_Highlight_Direction dir);
+
+/**
* @brief Do the accessibility action base on given object.
* @since 1.8
*
- * @param obj The object that could be an any object. it would be useful to use a container widget.
- * @param type The type of accessibility action.
- * @param action_info The action information of action @p type to give more specific information.
+ * @param[in] obj The object that could be an any object. it would be useful to use a container widget.
+ * @param[in] type The type of accessibility action.
+ * @param[in] action_info The action information of action @p type to give more specific information.
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*
* The return value would be useful, when the @p type is ELM_ACCESS_ACTION_HIGHLIGHT_NEXT
* or ELM_ACCESS_ACTION_HIGHLIGHT_PREV. If there is no way to give a highlight,
* @c EINA_FALSE will be returned.
- *
- * @ingroup Access
*/
-EAPI Eina_Bool elm_access_action(Evas_Object *obj, const Elm_Access_Action_Type type, Elm_Access_Action_Info *action_info);
+EAPI Eina_Bool elm_access_action(Evas_Object *obj, const Elm_Access_Action_Type type, void *action_info);
/**
* @brief Set a callback function to a given accessibility action type
* @since 1.8
*
- * @param obj The object to attach a callback to
- * @param type The type of accessibility action.
- * @param cb The callback function to be called when the accessibility action is triggered.
- * @param data The data pointer to be passed to @p cb
- *
- * @ingroup Access
+ * @param[in] obj The object to attach a callback to
+ * @param[in] type The type of accessibility action.
+ * @param[in] cb The callback function to be called when the accessibility action is triggered.
+ * @param[in] data The data pointer to be passed to @p cb
*/
EAPI void elm_access_action_cb_set(Evas_Object *obj, const Elm_Access_Action_Type type, const Elm_Access_Action_Cb cb, const void *data);
+//TODO: remvoe below - use elm_access_text_set(); or elm_access_cb_set();
+EINA_DEPRECATED EAPI void elm_access_external_info_set(Evas_Object *obj, const char *text);
+EINA_DEPRECATED EAPI char *elm_access_external_info_get(const Evas_Object *obj);
+
/**
- * @brief Set the next access object for highlight.
- * @since 1.8
- *
- * @param obj The object is previous access object of next for hilight.
- * @param dir Access direction same as Focus direction
- * @param next The object is next access object of obj for hilight.
- *
- * Currently focus chain is used for access highlight chain. Use this API to
- * customize highlight chain. If highlight chain is already established, you can
- * change one object's highlight chain and do not break the other object's
- * highlight chain.
- *
- * @ingroup Access
+ * @}
*/
-EAPI void
-elm_access_highlight_next_set(Evas_Object *obj, Elm_Highlight_Direction dir, Evas_Object *next);
diff --git a/src/lib/elm_actionslider.h b/src/lib/elm_actionslider.h
index ed7bd5444..6246c1236 100644
--- a/src/lib/elm_actionslider.h
+++ b/src/lib/elm_actionslider.h
@@ -1,5 +1,6 @@
/**
- * @addtogroup Actionslider Actionslider
+ * @internal
+ * @defgroup Actionslider Actionslider
* @ingroup Elementary
*
* @image html actionslider_inheritance_tree.png
@@ -8,10 +9,10 @@
* @image html img/widget/actionslider/preview-00.png
* @image latex img/widget/actionslider/preview-00.eps
*
- * An actionslider is a switcher for 2 or 3 labels with customizable magnet
+ * An actionslider is a switcher for @c 2 or @c 3 labels with customizable magnet
* properties. The user drags and releases the indicator, to choose a label.
*
- * Labels occupy the following positions.
+ * Labels occupy the following positions:
* a. Left
* b. Right
* c. Center
@@ -20,43 +21,110 @@
*
* Magnets can be set on the above positions.
*
- * When the indicator is released, it will move to its nearest
+ * When the indicator is released, it moves to its nearest
* "enabled and magnetized" position.
*
- * @note By default all positions are set as enabled.
+ * By default, all positions are set as enabled.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for actionslider objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li @c "selected" - when user selects an enabled position (the
+ * @ref Layout :
+ * @li @c "selected" - When the user selects an enabled position (the
* label is passed as event info).
- * @li @c "pos_changed" - when the indicator reaches any of the
+ * @li @c "pos_changed" - When the indicator reaches any of the
* positions("left", "right" or "center").
- * @li @c "language,changed" - the program's language changed (since 1.9)
*
- * Default text parts of the actionslider widget that you can use for are:
- * @li "indicator" - An indicator label of the actionslider
- * @li "left" - A left label of the actionslider
- * @li "right" - A right label of the actionslider
- * @li "center" - A center label of the actionslider
+ * The default text parts of the actionslider widget that you can use are:
+ * @li "indicator" - An indicator label of the actionslider.
+ * @li "left" - A left label of the actionslider.
+ * @li "right" - A right label of the actionslider.
+ * @li "center" - A center label of the actionslider.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_part_text_set
* @li @ref elm_object_part_text_get
*
- * See an example of actionslider usage @ref actionslider_example_page "here"
* @{
*/
+typedef enum
+{
+ ELM_ACTIONSLIDER_NONE = 0,
+ ELM_ACTIONSLIDER_LEFT = 1 << 0,
+ ELM_ACTIONSLIDER_CENTER = 1 << 1,
+ ELM_ACTIONSLIDER_RIGHT = 1 << 2,
+ ELM_ACTIONSLIDER_ALL = (1 << 3) - 1
+} Elm_Actionslider_Pos;
+
+/**
+ * @brief Adds a new actionslider to the parent.
+ *
+ * @param[in] parent The parent object
+ * @return The new actionslider object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_actionslider_add(Evas_Object *parent);
+
+/**
+ * @brief Gets the actionslider selected label.
+ *
+ * @param[in] obj The actionslider object
+ * @return The selected label
+ */
+EAPI const char *elm_actionslider_selected_label_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the actionslider indicator position.
+ *
+ * @param[in] obj The actionslider object
+ * @param[in] pos The position of the indicator
+ */
+EAPI void elm_actionslider_indicator_pos_set(Evas_Object *obj, Elm_Actionslider_Pos pos);
+
+/**
+ * @brief Gets the actionslider indicator position.
+ *
+ * @param[in] obj The actionslider object
+ * @return The position of the indicator
+ */
+EAPI Elm_Actionslider_Pos elm_actionslider_indicator_pos_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the actionslider magnet position. To make multiple positions magnets as enabled @c or
+ * them together(e.g.: @c ELM_ACTIONSLIDER_LEFT | @c ELM_ACTIONSLIDER_RIGHT).
+ *
+ * @param[in] obj The actionslider object
+ * @param[in] pos The bit mask indicating the magnet positions
+ */
+EAPI void elm_actionslider_magnet_pos_set(Evas_Object *obj, Elm_Actionslider_Pos pos);
+
+/**
+ * @brief Gets the actionslider magnet position.
+ *
+ * @param[in] obj The actionslider object
+ * @return The positions with the magnet property
+ */
+EAPI Elm_Actionslider_Pos elm_actionslider_magnet_pos_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the actionslider enabled position. To set multiple positions as enabled OR
+ * them together(e.g.: @c ELM_ACTIONSLIDER_LEFT | @c ELM_ACTIONSLIDER_RIGHT).
+ *
+ * @remarks All the positions are enabled by default.
+ *
+ * @param[in] obj The actionslider object
+ * @param[in] pos The bit mask indicating the enabled positions
+ */
+EAPI void elm_actionslider_enabled_pos_set(Evas_Object *obj, Elm_Actionslider_Pos pos);
+
+/**
+ * @brief Gets the actionslider enabled position.
+ *
+ * @param[in] obj The actionslider object
+ * @return The enabled positions
+ */
+EAPI Elm_Actionslider_Pos elm_actionslider_enabled_pos_get(const Evas_Object *obj);
-#include "elm_actionslider_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_actionslider_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_actionslider_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_app.h b/src/lib/elm_app.h
index 76c663b92..75bf48197 100644
--- a/src/lib/elm_app.h
+++ b/src/lib/elm_app.h
@@ -1,76 +1,78 @@
/**
* @defgroup App App
- * @ingroup Elementary
- * Provide information in order to make Elementary determine the @b
- * run time location of the software in question, so other data files
- * such as images, sound files, executable utilities, libraries,
- * modules and locale files can be found.
- */
-
-/**
- * @addtogroup App
+ * @ingroup elm_infra_group
+ * @brief This group provides functions to get the application information.
+ *
* @{
*/
/**
- * Re-locate the application somewhere else after compilation, if the developer
- * wishes for easier distribution of pre-compiled binaries.
- *
- * @param mainfunc This is your application's main function name,
- * whose binary's location is to be found. Providing @c NULL
- * will make Elementary not to use it
- * @param dom This will be used as the application's "domain", in the
- * form of a prefix to any environment variables that may
- * override prefix detection and the directory name, inside the
- * standard share or data directories, where the software's
- * data files will be looked for.
- * @param checkfile This is an (optional) magic file's path to check
- * for existence (and it must be located in the data directory,
- * under the share directory provided above). Its presence will
- * help determine the prefix found was correct. Pass @c NULL if
- * the check is not to be done.
- *
- * The prefix system is designed to locate where the given software is
- * installed (under a common path prefix) at run time and then report
- * specific locations of this prefix and common directories inside
- * this prefix like the binary, library, data and locale directories,
- * through the @c elm_app_*_get() family of functions.
- *
- * Call elm_app_info_set() early on before you change working
- * directory or anything about @c argv[0], so it gets accurate
- * information.
- *
- * It will then try and trace back which file @p mainfunc comes from,
- * if provided, to determine the application's prefix directory.
- *
- * The @p dom parameter provides a string prefix to prepend before
- * environment variables, allowing a fallback to @b specific
- * environment variables to locate the software. You would most
- * probably provide a lowercase string there, because it will also
- * serve as directory domain, explained next. For environment
- * variables purposes, this string is made uppercase. For example if
- * @c "myapp" is provided as the prefix, then the program would expect
- * @c "MYAPP_PREFIX" as a master environment variable to specify the
- * exact install prefix for the software, or more specific environment
- * variables like @c "MYAPP_BIN_DIR", @c "MYAPP_LIB_DIR", @c
- * "MYAPP_DATA_DIR" and @c "MYAPP_LOCALE_DIR", which could be set by
- * the user or scripts before launching. If not provided (@c NULL),
- * environment variables will not be used to override compiled-in
- * defaults or auto detections.
- *
- * The @p dom string also provides a subdirectory inside the system
- * shared data directory for data files. For example, if the system
- * directory is @c /usr/local/share, then this directory name is
- * appended, creating @c /usr/local/share/myapp, if it @p was @c
- * "myapp". It is expected that the application installs data files in
- * this directory.
- *
- * The @p checkfile is a file name or path of something inside the
- * share or data directory to be used to test that the prefix
- * detection worked. For example, your app will install a wallpaper
- * image as @c /usr/local/share/myapp/images/wallpaper.jpg and so to
- * check that this worked, provide @c "images/wallpaper.jpg" as the @p
- * checkfile string.
+ * @brief Provides information in order to make Elementary determine the @b
+ * run time location of the software in question, so other data files
+ * such as images, sound files, executable utilities, libraries,
+ * modules and locale files can be found.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This function allows one to re-locate the application somewhere
+ * else after compilation, if the developer wishes for easier
+ * distribution of pre-compiled binaries.
+ *
+ * @remarks The prefix system is designed to locate where the given software is
+ * installed (under a common path prefix) at run time and then report
+ * specific locations of this prefix and common directories inside
+ * this prefix like the binary, library, data, and locale directories,
+ * through the @c elm_app_*_get() family of functions.
+ *
+ * @remarks Call elm_app_info_set() early, before you change the working
+ * directory or anything about @c argv[0], so it gets accurate
+ * information.
+ *
+ * It then tries to trace back which file @a mainfunc comes from,
+ * if provided, to determine the application's prefix directory.
+ *
+ * @remarks The @a dom parameter provides a string prefix to prepend before
+ * environment variables, allowing a fallback to @b specific
+ * environment variables to locate the software. You would most
+ * probably provide a lowercase string there, because it also
+ * serves as the directory domain, explained next. For environment
+ * variables purposes, this string is made uppercase. For example if
+ * @c "myapp" is provided as the prefix, then the program would expect
+ * @c "MYAPP_PREFIX" as a master environment variable to specify the
+ * exact install prefix for the software, or more specific environment
+ * variables like @c "MYAPP_BIN_DIR", @c "MYAPP_LIB_DIR", @c
+ * "MYAPP_DATA_DIR", and @c "MYAPP_LOCALE_DIR", which could be set by
+ * the user or scripts before launching. If not provided (@c NULL),
+ * environment variables are not used to override compiled-in
+ * defaults or auto detections.
+ *
+ * The @a dom string also provides a subdirectory inside the system
+ * shared data directory for data files. For example, if the system
+ * directory is @c /usr/local/share, then this directory name is
+ * appended, creating @c /usr/local/share/myapp, if it @b is @c
+ * "myapp". It is expected that the application installs data files in
+ * this directory.
+ *
+ * @remarks The @a checkfile is a file name or path of something inside the
+ * share or data directory to be used to test if the prefix
+ * detection worked. For example, your app installs a wallpaper
+ * image as @c /usr/local/share/myapp/images/wallpaper.jpg and so to
+ * check that this worked, provide @c "images/wallpaper.jpg" as the @a
+ * checkfile string.
+ *
+ * @param[in] mainfunc This is your application's main function name,
+ * whose binary's location is to be found \n
+ * Providing @c NULL makes Elementary not use it
+ * @param[in] dom This is used as the application's "domain", in the
+ * form of a prefix to any environment variables that may
+ * override prefix detection and the directory name, inside the
+ * standard share or data directories, where the software's
+ * data files are looked for
+ * @param[in] checkfile This is an (optional) magic file's path to check
+ * for existence (and it must be located in the data directory,
+ * under the share directory provided above) \n
+ * Its presence helps determine whther the prefix found is correct \n
+ * Pass @c NULL if the check is not to be done.
*
* @see elm_app_compile_bin_dir_set()
* @see elm_app_compile_lib_dir_set()
@@ -81,214 +83,183 @@
* @see elm_app_lib_dir_get()
* @see elm_app_data_dir_get()
* @see elm_app_locale_dir_get()
- *
- * @ingroup App
*/
EAPI void elm_app_info_set(void *mainfunc, const char *dom, const char *checkfile);
/**
- * Set a formal name to be used with the elm application.
+ * @brief Set a formal name to be used with the elm application.
*
- * @param name Application name.
+ * @since_tizen 2.3
*
- * @ingroup App
- * @since 1.8
+ * @param[in] name Application name.
*/
EAPI void elm_app_name_set(const char *name);
/**
- * Set the path to the '.desktop' file to be associated
- * with the elm application.
- *
- * @param path The path to the '.desktop' file
- *
- * @warning Since this path is very environment dependent,
- * this will hold whatever value is passed to it.
- *
- * @ingroup App
- * @since 1.8
- */
-EAPI void elm_app_desktop_entry_set(const char *path);
-
-/**
- * Provide information on the @b fallback application's binaries
- * directory, in scenarios where they get overridden by
- * elm_app_info_set().
+ * @brief Provides information on the @b fallback application's binaries
+ * directory, in scenarios where they get overridden by
+ * elm_app_info_set().
*
- * @param dir The path to the default binaries directory (compile time
- * one)
+ * @since_tizen 2.3
*
- * @note Elementary will as well use this path to determine actual
- * names of binaries' directory paths, maybe changing it to be @c
- * something/local/bin instead of @c something/bin, only, for
- * example.
+ * @remarks Elementary also uses this path to determine the actual
+ * names of binaries' directory paths, maybe changing it to be @c
+ * something/local/bin instead of @c something/bin, only, for
+ * example.
*
- * @warning You should call this function @b before
- * elm_app_info_set().
+ * @remarks You should call this function @b before
+ * elm_app_info_set().
*
- * @ingroup App
+ * @param[in] dir The path to the default binaries directory (compile time
+ * one)
*/
EAPI void elm_app_compile_bin_dir_set(const char *dir);
/**
- * Provide information on the @b fallback application's libraries
- * directory, on scenarios where they get overridden by
- * elm_app_info_set().
+ * @brief Provides information on the @b fallback application's libraries
+ * directory, on scenarios where they get overridden by
+ * elm_app_info_set().
*
- * @param dir The path to the default libraries directory (compile
- * time one)
+ * @since_tizen 2.3
*
- * @note Elementary will as well use this path to determine actual
- * names of libraries' directory paths, maybe changing it to be @c
- * something/lib32 or @c something/lib64 instead of @c something/lib,
- * only, for example.
+ * @remarks Elementary also uses this path to determine the actual
+ * names of libraries' directory paths, maybe changing it to be @c
+ * something/lib32 or @c something/lib64 instead of @c something/lib
+ * only, for example.
*
- * @warning You should call this function @b before
- * elm_app_info_set().
+ * @remarks You should call this function @b before
+ * elm_app_info_set().
*
- * @ingroup App
+ * @param[in] dir The path to the default libraries directory (compile
+ * time one)
*/
EAPI void elm_app_compile_lib_dir_set(const char *dir);
/**
- * Provide information on the @b fallback application's data
- * directory, on scenarios where they get overridden by
- * elm_app_info_set().
+ * @brief Provides information on the @b fallback application's data
+ * directory, on scenarios where they get overridden by
+ * elm_app_info_set().
*
- * @param dir The path to the default data directory (compile time
- * one)
+ * @since_tizen 2.3
*
- * @note Elementary will as well use this path to determine actual
- * names of data directory paths, maybe changing it to be @c
- * something/local/share instead of @c something/share, only, for
- * example.
+ * @remarks Elementary also uses this path to determine the actual
+ * names of data directory paths, maybe changing it to be @c
+ * something/local/share instead of @c something/share only, for
+ * example.
*
- * @warning You should call this function @b before
- * elm_app_info_set().
+ * @remarks You should call this function @b before
+ * elm_app_info_set().
*
- * @ingroup App
+ * @param[in] dir The path to the default data directory (compile time
+ * one)
*/
EAPI void elm_app_compile_data_dir_set(const char *dir);
/**
- * Provide information on the @b fallback application's locale
- * directory, on scenarios where they get overridden by
- * elm_app_info_set().
+ * @brief Provides information on the @b fallback application's locale
+ * directory, on scenarios where they get overridden by
+ * elm_app_info_set().
*
- * @param dir The path to the default locale directory (compile time
- * one)
+ * @since_tizen 2.3
*
- * @warning You should call this function @b before
- * elm_app_info_set().
+ * @remarks You should call this function @b before
+ * elm_app_info_set().
*
- * @ingroup App
+ * @param[in] dir The path to the default locale directory (compile time
+ * one)
*/
EAPI void elm_app_compile_locale_set(const char *dir);
/**
- * Get the application formal name, as set by elm_app_name_set().
+ * @brief Retrieve the application formal name, as set by elm_app_name_set().
*
- * @return The application formal name.
+ * @since_tizen 2.3
*
- * @ingroup App
- * @since 1.8
+ * @return The application formal name.
*/
EAPI const char *elm_app_name_get(void);
/**
- * Get the path to the '.desktop' file, as set by
- * elm_app_desktop_entry_set().
- *
- * @return The '.desktop' file path.
- *
- * @ingroup App
- * @since 1.8
- */
-EAPI const char *elm_app_desktop_entry_get(void);
-
-/**
- * Get the application's run time prefix directory, as set by
- * elm_app_info_set() and the way (environment) the application was
- * run from.
+ * @brief Retrieves the application's run time prefix directory, as set by
+ * elm_app_info_set() and the way (environment) the application is
+ * run from it.
*
- * @return The directory prefix the application is actually using.
+ * @since_tizen 2.3
*
- * @ingroup App
+ * @return The directory prefix that the application is actually using
*/
EAPI const char *elm_app_prefix_dir_get(void);
/**
- * Get the application's run time binaries prefix directory, as
- * set by elm_app_info_set() and the way (environment) the application
- * was run from.
+ * @brief Retrieves the application's run time binaries prefix directory, as
+ * set by elm_app_info_set() and the way (environment) the application
+ * is run from it.
*
- * @return The binaries directory prefix the application is actually
- * using.
+ * @since_tizen 2.3
*
- * @ingroup App
+ * @return The binaries directory prefix that the application is actually
+ * using
*/
EAPI const char *elm_app_bin_dir_get(void);
/**
- * Get the application's run time libraries prefix directory, as
- * set by elm_app_info_set() and the way (environment) the application
- * was run from.
+ * @brief Retrieves the application's run time libraries prefix directory, as
+ * set by elm_app_info_set() and the way (environment) the application
+ * is run from it.
*
- * @return The libraries directory prefix the application is actually
- * using.
+ * @since_tizen 2.3
*
- * @ingroup App
+ * @return The libraries directory prefix that the application is actually
+ * using
*/
EAPI const char *elm_app_lib_dir_get(void);
/**
- * Get the application's run time data prefix directory, as
- * set by elm_app_info_set() and the way (environment) the application
- * was run from.
+ * @brief Retrieves the application's run time data prefix directory, as
+ * set by elm_app_info_set() and the way (environment) the application
+ * is run from it.
*
- * @return The data directory prefix the application is actually
- * using.
+ * @since_tizen 2.3
*
- * @ingroup App
+ * @return The data directory prefix that the application is actually
+ * using
*/
EAPI const char *elm_app_data_dir_get(void);
/**
- * Get the application's run time locale prefix directory, as
- * set by elm_app_info_set() and the way (environment) the application
- * was run from.
+ * @brief Retrieves the application's run time locale prefix directory, as
+ * set by elm_app_info_set() and the way (environment) the application
+ * is run from it.
*
- * @return The locale directory prefix the application is actually
- * using.
+ * @since_tizen 2.3
*
- * @ingroup App
+ * @return The locale directory prefix the application is actually
+ * using
*/
EAPI const char *elm_app_locale_dir_get(void);
/**
- * Set the base scale of the application.
+ * @brief Set the base scale of the application.
*
* @param base_scale The scale that the application is made on the basis of.
*
- * @note The scale is used for the application to be scaled.
- * If the application isn't made on the basis of scale 1.0,
- * the application layout will be scaled inappositely. So if the application set
- * the base scale, it is applied when the application is scaled.
+ * @remarks The scale is used for the application to be scaled.
+ * if the application isn't made on the basis of scale 1.0,
+ * the application layout will be break. So if the application set
+ * the base scale, it is applied when the application is scaled.
*
- * @note You should call this function @b before using ELM_SCALE_SIZE macro.
+ * @remarks You should call this function @b before using ELM_SCALE_SIZE macro.
*
- * @ingroup App
- * @since 1.12
+ * @since_tizen 2.3
*/
EAPI void elm_app_base_scale_set(double base_scale);
/**
- * Get the base scale of the application.
+ * @brief Get the base scale of the application.
*
* @return The base scale which the application sets.
*
- * @ingroup App
- * @since 1.12
+ * @since_tizen 2.3
*/
EAPI double elm_app_base_scale_get(void);
diff --git a/src/lib/elm_authors.h b/src/lib/elm_authors.h
index 10e91930c..45db56475 100644
--- a/src/lib/elm_authors.h
+++ b/src/lib/elm_authors.h
@@ -1,6 +1,6 @@
/**
* @page authors Authors
- * @author The Rasterman (Carsten Haitzler) <raster@@rasterman.com>
+ * @author Carsten Haitzler <raster@@rasterman.com>
* @author Gustavo Sverzut Barbieri <barbieri@@profusion.mobi>
* @author Cedric Bail <cedric.bail@@free.fr>
* @author Vincent Torri <vtorri@@univ-evry.fr>
@@ -18,7 +18,7 @@
* @author Brett Nash <nash@@nash.id.au>
* @author Bruno Dilly <bdilly@@profusion.mobi>
* @author Rafael Fonseca <rfonseca@@profusion.mobi>
- * @author Hermet (Chuneon Park) <hermet@@hermet.pe.kr>
+ * @author Chuneon Park <hermet@@hermet.pe.kr>
* @author Woohyun Jung <wh0705.jung@@samsung.com>
* @author Jaehwan Kim <jae.hwan.kim@@samsung.com>
* @author Wonguk Jeong <wonguk.jeong@@samsung.com>
@@ -38,17 +38,18 @@
* @author Jeonghyun Yun (arosis) <jh0506.yun@@samsung.com>
* @author Tom Hacohen <tom@@stosb.com>
* @author Aharon Hillel <a.hillel@@samsung.com>
+ * @author Jonathan Atton (Watchwolf) <jonathan.atton@@gmail.com>
* @author Shinwoo Kim <kimcinoo@@gmail.com>
* @author Govindaraju SM <govi.sm@@samsung.com> <govism@@gmail.com>
* @author Prince Kumar Dubey <prince.dubey@@samsung.com> <prince.dubey@@gmail.com>
* @author Sung W. Park <sungwoo@@gmail.com>
* @author Thierry el Borgi <thierry@@substantiel.fr>
* @author Shilpa Singh <shilpa.singh@@samsung.com> <shilpasingh.o@@gmail.com>
- * @author Chanwook Jung <joey.jung@@samsung.com> <jchanwook@gmail.com>
+ * @author Chanwook Jung <joey.jung@@samsung.com>
* @author Hyoyoung Chang <hyoyoung.chang@@samsung.com>
* @author Guillaume "Kuri" Friloux <guillaume.friloux@@asp64.com>
* @author Kim Yunhan <spbear@@gmail.com>
- * @author Tae-Hwan Kim (Bluezery) <the81.kim@samsung.com> <ohpowel@@gmail.com>
+ * @author Bluezery <ohpowel@@gmail.com>
* @author Nicolas Aguirre <aguirre.nicolas@@gmail.com>
* @author Sanjeev BA <iamsanjeev@@gmail.com>
* @author Hyunsil Park <hyunsil.park@@samsung.com>
@@ -57,7 +58,7 @@
* @author Doyoun Kang <doyoun.kang@@samsung.com>
* @author M.V.K. Sumanth <sumanth.m@@samsung.com> <mvksumanth@@gmail.com>
* @author Jérôme Pinot <ngc891@@gmail.com>
- * @author Davide Andreoli <dave@@gurumeditation.it>
+ * @author Davide Andreoli (davemds) <dave@@gurumeditation.it>
* @author Michal Pakula vel Rutka <m.pakula@@samsung.com>
* @author Thiep Ha <thiep.ha@@samsung.com>
* @author Artem Popov <artem.popov@@samsung.com>
@@ -67,99 +68,6 @@
* @author Flavio Ceolin <flavio.ceolin@@profusion.mobi>
* @author Igor Murzov <e-mail@@date.by>
* @author Jiyoun Park <jy0703.park@@samsung.com>
- * @author KoziarekBeata <b.koziarek@@samsung.com>
- * @author Daniel Zaoui <daniel.zaoui@@samsung.com>
- * @author Yakov Goldberg <yakov.g@@samsung.com>
- * @author Murilo Belluzzo <murilo.belluzzo@@profusion.mobi>
- * @author Ricardo de Almeida Gonzaga <ricardo@@profusion.mobi>
- * @author Gwanglim Lee <gl77.lee@@samsung.com> <gwanglim@@gmail.com>
- * @author JaeHyun Cho <jae_hyun_cho@@naver.com>
- * @author Bora Hwang <bora1.hwang@@samsung.com>
- * @author Jiyoung Choi <jychoi7.choi@@samsung.com>
- * @author Arvind R <arvino55@@gmail.com>
- * @author Paulo Cavalcanti <paulo.cavalcanti@@linux.intel.com>
- * @author Stefan Schmidt <stefan@@datenfreihafen.org>
- * @author Ryuan Choi (ryuan) <ryuan.choi@@samsung.com> <ryuan.choi@@gmail.com>
- * @author Hosang Kim <hosang12.kim@@samsung.com>
- * @author Youngbok Shin <youngb.shin@@samsung.com>
- * @author Niraj Kumar <niraj.kr@@samsung.com> <niraj.kumar.ait@@gmail.com>
- * @author Amitesh Singh <singh.amitesh@@gmail.com>
- * @author Abhinandan Aryadipta <a.aryadipta@@samsung.com>
- * @author Sanghyeon Lee <sh10233.lee@@samsung.com>
- * @author Anil Kumar Nahak <ak.nahak@@samsung.com>
- * @author Michal Jagiello <m.jagiello@@samsung.com>
- * @author Chinmaya Panigrahi <c.panigrahi@@samsung.com>
- * @author Mohammad Irfan <mohammad.i@@samsung.com>
- * @author ajwillia.ms (Andrew Williams) <andy@@andywilliams.me>
- * @author Iván Briano <sachieru@@gmail.com>
- * @author Jonas M. Gastal <jgastal@@profusion.mobi>
- * @author Rafael Antognolli <antognolli@@gmail.com>
- * @author Mike McCormack <mike@@atratus.org>
- * @author Massimo Maiurana <maiurana@@gmail.com>
- * @author Henrique Dante de Almeida <hdante@@profusion.mobi>
- * @author Lucas De Marchi <lucas.demarchi@@profusion.mobi>
- * @author Boris Faure <billiob@@gmail.com>
- * @author Sebastian Dransfeld <sd@@tango.flipp.net>
- * @author Daniel Willmann <daniel@@totalueberwachung.de>
- * @author maxerba <maiurana@@gmail.com>
- * @author Youness Alaoui <kakaroto@@kakaroto.homelinux.net>
- * @author Rui Seabra <rms@@1407.org>
- * @author Andreas Volz <linux@@brachttal.net>
- * @author Jaeun Choi <jaeun12.choi@@samsung.com>
- * @author Doug Newgard <scimmia22@@outlook.com>
- * @author José Roberto de Souza <zehortigoza@@profusion.mobi>
- * @author Luis Felipe Strano Moraes <lfelipe@@profusion.mobi>
- * @author Thiago Thamada <tiba@@profusion.mobi>
- * @author U. Artie Eoff <ullysses.a.eoff@@intel.com>
- * @author Daniel Hirt <daniel.hirt@@samsung.com>
- * @author Eduardo Lima <eduardo.lima@@intel.com>
- * @author Leif Middelschulte <leif.middelschulte@@gmail.com>
- * @author Lukasz Stanislawski <l.stanislaws@@samsung.com>
- * @author Stephen Houston <smhouston88@@gmail.com>
- * @author Andrii Kroitor <an.kroitor@@samsung.com>
- * @author Joao Paulo Fernandes Ventura <ventura@@profusion.mobi>
- * @author Pau Espin Pedrol <pespin.shar@@gmail.com>
- * @author Jérémy Zurcher <jeremy@@asynk.ch>
- * @author Kai Huuhko <kai.huuhko@@gmail.com>
- * @author Leandro Dorileo <dorileo@@profusion.mobi>
- * @author Michael Jennings <mej@@kainx.org>
- * @author Myungjae Lee <mjae.lee@@samsung.com>
- * @author Tristan Lelong <tristan.lelong@@blunderer.org>
- * @author Yossi Kantor <yossi.kantor@@samsung.com>
- * @author cabelitos <guilherme.iscaro@@intel.com>
- * @author Alex Wu <zhiwen.wu@@linux.intel.com>
- * @author Alex-P. Natsios <drakevr@@linuxteam.teilar.gr>
- * @author Aron Xu <happyaron.xu@@gmail.com>
- * @author Chidambar Zinnoury <illogict@@online.fr>
- * @author Christophe Sadoine <chris@@indefini.org>
- * @author Daniel Vieira Franzolin <daniel@@profusion.mobi>
- * @author Daniele Ricci <daniele.athome@@gmail.com>
- * @author David Walter Seikel <onefang@@gmail.com>
- * @author Dennis Schridde <devurandom@@gmx.net>
- * @author Hannes Janetzek <hannes.janetzek@@gmail.com>
- * @author Lionel Landwerlin <llandwerlin@@gmail.com>
- * @author Mariusz Bialonczyk <manio@@skyboo.net>
- * @author Martin Jansa <Martin.Jansa@@gmail.com>
- * @author Michael Lauer <mlauer@@vanille-media.de>
- * @author Mike Frysinger <vapier@@gentoo.org>
- * @author Rodrigo Cesar Lopes Belem <rclbelem@@gmail.com>
- * @author Seong-ho Cho <darkcircle.0426@@gmail.com>
- * @author Seunghun Lee <shiin.lee@@samsung.com>
- * @author Thanatermesis <thanatermesis.ecvs@@gmail.com>
- * @author Viacheslav Lvov <v.lvov@@samsung.com>
- * @author Deasung Kim <deasung.kim@@samsung.com>
- * @author Jeonghoon Park <jh1979.park@@samsung.com>
- * @author Prashant <pb.ingale@@samsung.com>
- * @author suxia li <suxia.li@@samsung.com>
- * @author yan.wang <yan.wang@@linux.intel.com>
- * @author Anand <anand.km@@samsung.com>
- * @author Subhransu Sekhar Mohanty <sub.mohanty@@samsung.com>
- * @author Rajesh P S <rajeshps@@samsung.com>
- * @author Srivardhan Hebbar <sri.hebbar@@samsung.com>
- * @author Savio Sena <savio@@expertisesolutions.com.br>
- * @author Jae Yong Hwang <j_yong.hwang@@samsung.com>
- * @author Kabeer Khan <kabeer.khan@@samsung.com>
- * @author yinsc <shouchen.yin@@samsung.com>
*
* Please contact <enlightenment-devel@lists.sourceforge.net> to get in
* contact with the developers and maintainers.
diff --git a/src/lib/elm_bg.h b/src/lib/elm_bg.h
index 4fc0fbb58..bed2b53cc 100644
--- a/src/lib/elm_bg.h
+++ b/src/lib/elm_bg.h
@@ -1,41 +1,194 @@
/**
* @defgroup Bg Background
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html bg_inheritance_tree.png
* @image latex bg_inheritance_tree.eps
*
- * @image html img/widget/bg/preview-00.png
- * @image latex img/widget/bg/preview-00.eps
- *
- * @brief Background object, used for setting a solid color, image or
+ * @brief Background object, used for setting a solid color, image, or
* Edje group as a background to a window or any container object.
*
* The bg (background) widget is used for setting (solid) background
* decorations to a window (unless it has transparency enabled) or to
* any container object. It works just like an image, but has some
* properties useful to a background, like setting it to tiled,
- * centered, scaled or stretched.
+ * centered, scaled, or stretched.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for background objects.
*
- * Default content parts of the bg widget that you can use for are:
- * @li @c "overlay" - overlay of the bg
+ * The default content parts of the bg widget that you can use are:
+ * @li @c "overlay" - Overlay of the bg.
+ *
+ * @{
+ */
+
+/**
+ * @brief Enumeration of identifiers on how a background widget is to display its image,
+ * if it is set to use an image file.
+ *
+ * @see elm_bg_option_set()
+ * @see elm_bg_option_get()
+ */
+typedef enum
+{
+ ELM_BG_OPTION_CENTER, /**< Center the background image */
+ ELM_BG_OPTION_SCALE, /**< Scale the background image, retaining the aspect ratio */
+ ELM_BG_OPTION_STRETCH, /**< Stretch the background image to fill the widget's area */
+ ELM_BG_OPTION_TILE, /**< Tile background image at its original size */
+ ELM_BG_OPTION_LAST /**< Sentinel value, also used to indicate errors */
+} Elm_Bg_Option;
+
+/**
+ * @brief Adds a new background to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @ingroup Bg
+ */
+EAPI Evas_Object *elm_bg_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the file (image or edje collection) to give life for the
+ * background.
+ *
+ * @details This sets the image file used in the background object. If the
+ * image comes from an Edje group, it is stretched to completely
+ * fill the background object. If it comes from a traditional image file, it
+ * by default is centered in this widget's area (thus retaining
+ * its aspect), what could lead to some parts being not visible. You
+ * may change the mode of exhibition for a real image file with
+ * elm_bg_option_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once the image of @a obj is set, a previously set one is
+ * deleted, even if @a file is @c NULL.
+ *
+ * @remarks This only affects the content of one of the background's
+ * swallow spots, namely @c "elm.swallow.background". If you want to
+ * achieve the @c Layout's file setting behavior, you have to call
+ * that method on this object.
+ *
+ * @param[in] obj The background object handle
+ * @param[in] file The file path
+ * @param[in] group The optional key (group in Edje) within the file
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_bg_file_set(Evas_Object *obj, const char *file, const char *group);
+
+/**
+ * @brief Gets the file (image or edje collection) set on a given background
+ * widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use @c NULL pointers on the file components you're not
+ * interested in, they are ignored by the function.
+ *
+ * @param[in] obj The background object handle
+ * @param[out] file The location to store the requested file's path
+ * @param[out] group The group to store the optional key within @a file, @b if
+ * it's an Edje file
+ */
+EAPI void elm_bg_file_get(const Evas_Object *obj, const char **file, const char **group);
+
+/**
+ * @brief Sets the mode of display for a given background widget's image
+ *
+ * @details This sets how the background widget displays its image. This
+ * only works if the elm_bg_file_set() was previously called with
+ * an image file on @a obj. The image can be display tiled, scaled,
+ * centered or stretched.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The background object handle
+ * @param[in] option The desired background option (see #Elm_Bg_Option)
+ *
+ * @see elm_bg_option_get()
+ */
+EAPI void elm_bg_option_set(Evas_Object *obj, Elm_Bg_Option option);
+
+/**
+ * @brief Gets the mode of display for a given background widget's image.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The background object handle
+ * @return The image displaying mode in use for @a obj or #ELM_BG_OPTION_LAST,
+ * on errors
+ *
+ * @see elm_bg_option_set()
+ */
+EAPI Elm_Bg_Option elm_bg_option_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the color on a given background widget.
+ *
+ * @details This sets the color used for the background rectangle, in RGB
+ * format. Each color component's range is from @c 0 to @c 255.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks You probably only want to use this function if you haven't
+ * previously called elm_bg_file_set(), so that you just want a solid
+ * color background.
+ *
+ * @param[in] obj The background object handle
+ * @param[in] r The red color component's value
+ * @param[in] g The green color component's value
+ * @param[in] b The blue color component's value
+ *
+ * @see elm_bg_color_get()
+ */
+EAPI void elm_bg_color_set(Evas_Object *obj, int r, int g, int b);
+
+/**
+ * @brief Gets the color set on a given background widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use @c NULL pointers on the file components you're not
+ * interested in, they are ignored by the function.
+ *
+ * @param[in] obj The background object handle
+ * @param[out] r The location to store the red color component's value
+ * @param[out] g The location to store the green color component's value
+ * @param[out] b The location to store the blue color component's value
+ *
+ * @see elm_bg_color_get()
+ */
+EAPI void elm_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b);
+
+/**
+ * @brief Sets the size of the pixmap representation of the image set on a
+ * given background widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This function just makes sense if an image file is set on
+ * @a obj, with elm_bg_file_set().
+ *
+ * @remarks This function sets a new size for pixmap representation of the
+ * given bg image. It allows for the image to be loaded in advance in the
+ * specified size, reducing the memory usage and load time (for
+ * example, when loading a big image file with its load size set to a
+ * smaller size)
+ *
+ * @remarks This is just a hint for the underlying system. The real size
+ * of the pixmap may differ depending on the type of image being
+ * loaded, being bigger than requested.
*
- * Here is some sample code using it:
- * @li @ref bg_01_example_page
- * @li @ref bg_02_example_page
- * @li @ref bg_03_example_page
+ * @param[in] obj The background object handle
+ * @param[in] w The new width of the image pixmap representation
+ * @param[in] h The new height of the image pixmap representation
*/
+EAPI void elm_bg_load_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
-#include "elm_bg_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_bg_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_bg_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_box.h b/src/lib/elm_box.h
index 3f47987b7..47c42f759 100644
--- a/src/lib/elm_box.h
+++ b/src/lib/elm_box.h
@@ -1,84 +1,503 @@
/**
* @defgroup Box Box
- * @ingroup Elementary
+ * @ingroup elm_container_group
*
* @image html box_inheritance_tree.png
* @image latex box_inheritance_tree.eps
*
- * @image html img/widget/box/preview-00.png
- * @image latex img/widget/box/preview-00.eps width=\textwidth
- *
* @image html img/box.png
- * @image latex img/box.eps width=\textwidth
+ * @image latex img/box.eps "box" width=\textwidth
*
- * A box arranges objects in a linear fashion, governed by a layout function
- * that defines the details of this arrangement.
+ * @brief A box arranges objects in a linear fashion, governed by a layout
+ * function that defines the details of this arrangement.
*
- * By default, the box will use an internal function to set the layout to
+ * By default, the box uses an internal function to set the layout to
* a single row, either vertical or horizontal. This layout is affected
* by a number of parameters, such as the homogeneous flag set by
* elm_box_homogeneous_set(), the values given by elm_box_padding_set() and
- * elm_box_align_set() and the hints set to each object in the box.
+ * elm_box_align_set(), and the hints set to each object in the box.
*
* For this default layout, it's possible to change the orientation with
- * elm_box_horizontal_set(). The box will start in the vertical orientation,
+ * elm_box_horizontal_set(). The box starts in the vertical orientation,
* placing its elements ordered from top to bottom. When horizontal is set,
- * the order will go from left to right. If the box is set to be
- * homogeneous, every object in it will be assigned the same space, that
+ * the order goes from left to right. If the box is set to be
+ * homogeneous, every object in it is assigned the same space, which is that
* of the largest object. Padding can be used to set some spacing between
* the cell given to each object. The alignment of the box, set with
* elm_box_align_set(), determines how the bounding box of all the elements
- * will be placed within the space given to the box widget itself.
+ * is placed within the space given to the box widget itself.
*
* The size hints of each object also affect how they are placed and sized
- * within the box. evas_object_size_hint_min_set() will give the minimum
- * size the object can have, and the box will use it as the basis for all
+ * within the box. evas_object_size_hint_min_set() gives the minimum
+ * size that the object can have, and the box uses it as the basis for all
* latter calculations. Elementary widgets set their own minimum size as
* needed, so there's rarely any need to use it manually.
*
- * evas_object_size_hint_weight_set(), when not in homogeneous mode, is
- * used to tell whether the object will be allocated the minimum size it
+ * evas_object_size_hint_weight_set(), when not in the homogeneous mode, is
+ * used to tell whether the object is allocated the minimum size it
* needs or if the space given to it should be expanded. It's important
* to realize that expanding the size given to the object is not the same
* thing as resizing the object. It could very well end being a small
* widget floating in a much larger empty space. If not set, the weight
- * for objects will normally be 0.0 for both axis, meaning the widget will
- * not be expanded. To take as much space possible, set the weight to
- * EVAS_HINT_EXPAND (defined to 1.0) for the desired axis to expand.
- *
- * Besides how much space each object is allocated, it's possible to control
- * how the widget will be placed within that space using
- * evas_object_size_hint_align_set(). By default, this value will be 0.5
- * for both axis, meaning the object will be centered, but any value from
- * 0.0 (left or top, for the @c x and @c y axis, respectively) to 1.0
+ * for objects normally is @c 0.0 for both axis, meaning the widget is
+ * not expanded. To take as much space as possible, set the weight to
+ * EVAS_HINT_EXPAND (defined to @c 1.0) for the desired axis to expand.
+ *
+ * Besides how much space is allocated for each object, it's possible to control
+ * how the widget is placed within that space using
+ * evas_object_size_hint_align_set(). By default, this value is @c 0.5
+ * for both axes, meaning the object is centered, but any value from
+ * @c 0.0 (left or top, for the @c x and @c y axis, respectively) to @c 1.0
* (right or bottom) can be used. The special value EVAS_HINT_FILL, which
- * is -1.0, means the object will be resized to fill the entire space it
- * was allocated.
+ * is @c -1.0, means the object is resized to fill the entire space it
+ * is allocated.
*
* In addition, customized functions to define the layout can be set, which
* allow the application developer to organize the objects within the box
- * in any number of ways.
+ * in a number of ways.
*
* The special elm_box_layout_transition() function can be used
* to switch from one layout to another, animating the motion of the
* children of the box.
*
- * @note Objects should not be added to box objects using _add() calls.
- *
- * Some examples on how to use boxes follow:
- * @li @ref box_example_01
- * @li @ref box_example_02
+ * @remarks Objects should not be added to box objects using _add() calls.
*
* @{
*/
-#include "elm_box_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_box_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_box_legacy.h"
-#endif
+/**
+ * @typedef Elm_Box_Transition
+ *
+ * @brief The structure type which is an opaque handler containing the parameters to perform an animated
+ * transition of the layout that the box uses.
+ *
+ * @see elm_box_transition_new()
+ * @see elm_box_layout_set()
+ * @see elm_box_layout_transition()
+ */
+typedef struct _Elm_Box_Transition Elm_Box_Transition;
+
+/**
+ * @brief Adds a new box to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, the box is in the vertical mode and is non-homogeneous.
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_box_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the horizontal orientation.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, the box object arranges their contents vertically from top to
+ * bottom.
+ *
+ * @remarks By calling this function with @a horizontal as @c EINA_TRUE, the box
+ * becomes horizontal, arranging contents from left to right.
+ *
+ * @remarks This flag is ignored if a custom layout function is set.
+ *
+ * @param[in] obj The box object
+ * @param[in] horizontal The horizontal flag (@c EINA_TRUE = horizontal,
+ * @c EINA_FALSE = vertical)
+ */
+EAPI void elm_box_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Gets the horizontal orientation.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The box object
+ * @return @c EINA_TRUE if the box is set to the horizontal mode, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_box_horizontal_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the box to arrange its children homogeneously.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If enabled, homogeneous layout makes all items of the same size, according
+ * to the size of the largest of its children.
+ *
+ * @remarks This flag is ignored if a custom layout function is set.
+ *
+ * @param[in] obj The box object
+ * @param[in] homogeneous The homogeneous flag
+ */
+EAPI void elm_box_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous);
+
+/**
+ * @brief Gets whether the box is using the homogeneous mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The box object
+ * @return @c EINA_TRUE if it's homogeneous, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_box_homogeneous_get(const Evas_Object *obj);
+
+/**
+ * @brief Adds an object to the beginning of the pack list.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This packs @a subobj into the box @a obj, placing it first in the list of
+ * children objects. The actual position that the object gets on screen
+ * depends on the layout used. If no custom layout is set, it is at
+ * the top or left, depending on whether the box is vertical or horizontal,
+ * respectively.
+ *
+ * @param[in] obj The box object
+ * @param[in] subobj The object to add to the box
+ *
+ * @see elm_box_pack_end()
+ * @see elm_box_pack_before()
+ * @see elm_box_pack_after()
+ * @see elm_box_unpack()
+ * @see elm_box_unpack_all()
+ * @see elm_box_clear()
+ */
+EAPI void elm_box_pack_start(Evas_Object *obj, Evas_Object *subobj);
+
+/**
+ * @brief Adds an object at the end of the pack list.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This packs @a subobj into the box @a obj, placing it last in the list of
+ * children objects. The actual position that the object gets on screen
+ * depends on the layout used. If no custom layout is set, it is at
+ * the bottom or right, depending on whether the box is vertical or horizontal,
+ * respectively.
+ *
+ * @param obj The box object
+ * @param subobj The object to add to the box
+ *
+ * @see elm_box_pack_start()
+ * @see elm_box_pack_before()
+ * @see elm_box_pack_after()
+ * @see elm_box_unpack()
+ * @see elm_box_unpack_all()
+ * @see elm_box_clear()
+ */
+EAPI void elm_box_pack_end(Evas_Object *obj, Evas_Object *subobj);
+
+/**
+ * @brief Adds an object to the box before the indicated object.
+ *
+ * @details This adds @a subobj to the box indicated before the object
+ * indicated with @a before. If @a before is not already in the box, the results
+ * are undefined. Before means either to the left of the indicated object or
+ * above it depending on the orientation.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The box object
+ * @param[in] subobj The object to add to the box
+ * @param[in] before The object before which to add it
+ *
+ * @see elm_box_pack_start()
+ * @see elm_box_pack_end()
+ * @see elm_box_pack_after()
+ * @see elm_box_unpack()
+ * @see elm_box_unpack_all()
+ * @see elm_box_clear()
+ */
+EAPI void elm_box_pack_before(Evas_Object *obj, Evas_Object *subobj, Evas_Object *before);
+
+/**
+ * @brief Adds an object to the box after the indicated object.
+ *
+ * @details This adds @a subobj to the box indicated after the object
+ * indicated with @a after. If @a after is not already in the box, the results
+ * are undefined. After means either to the right of the indicated object or
+ * below it depending on the orientation.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The box object
+ * @param[in] subobj The object to add to the box
+ * @param[in] after The object after which to add it
+ *
+ * @see elm_box_pack_start()
+ * @see elm_box_pack_end()
+ * @see elm_box_pack_before()
+ * @see elm_box_unpack()
+ * @see elm_box_unpack_all()
+ * @see elm_box_clear()
+ */
+EAPI void elm_box_pack_after(Evas_Object *obj, Evas_Object *subobj, Evas_Object *after);
+
+/**
+ * @brief Clears the box of all its children.
+ *
+ * @details This removes all the elements contained by the box, deleting the respective
+ * objects.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The box object
+ *
+ * @see elm_box_unpack()
+ * @see elm_box_unpack_all()
+ */
+EAPI void elm_box_clear(Evas_Object *obj);
+
+/**
+ * @brief Unpacks a box item.
+ *
+ * @details This removes the object given by @a subobj from the box @a obj without
+ * deleting it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The box object
+ * @param[in] subobj The object to unpack
+ *
+ * @see elm_box_unpack_all()
+ * @see elm_box_clear()
+ */
+EAPI void elm_box_unpack(Evas_Object *obj, Evas_Object *subobj);
+
+/**
+ * @brief Removes all the items from the box, without deleting them.
+ *
+ * @details This clears the box from all its children, but doesn't delete the respective objects.
+ * If no other references of the box children exist, the objects is never
+ * deleted, and thus the application leaks the memory. Make sure
+ * when using this function that you hold a reference to all the objects
+ * in the box @a obj.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The box object
+ *
+ * @see elm_box_clear()
+ * @see elm_box_unpack()
+ */
+EAPI void elm_box_unpack_all(Evas_Object *obj);
+
+/**
+ * @brief Retrieves a list of the objects packed into the box.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This returns a new @c Eina_List with a pointer to @c Evas_Object in its nodes.
+ * The order of the list corresponds to the packing order that the box uses.
+ *
+ * @remarks You must free this list with eina_list_free() once you are done with it.
+ *
+ * @param[in] obj The box object
+ * @return The children objects list
+ */
+EAPI Eina_List *elm_box_children_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the space (padding) between the box's elements.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This gives the extra space in pixels that is added between a box child and its
+ * neighbors after its containing cell has been calculated. This padding
+ * is set for all elements in the box, besides any possible padding that
+ * individual elements may have through their size hints.
+ *
+ * @param[in] obj The box object
+ * @param[in] horizontal The horizontal space between elements
+ * @param[in] vertical The vertical space between elements
+ */
+EAPI void elm_box_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical);
+
+/**
+ * @brief Gets the space (padding) between the box's elements.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The box object
+ * @param[out] horizontal The horizontal space between elements
+ * @param[out] vertical The vertical space between elements
+ *
+ * @see elm_box_padding_set()
+ */
+EAPI void elm_box_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical);
+
+/**
+ * @brief Sets the alignment of the whole bounding box of contents.
+ *
+ * @details This sets how the bounding box containing all the elements of the box, after
+ * their sizes and position has been calculated, is aligned within
+ * the space given for the whole box widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The box object
+ * @param[in] horizontal The horizontal alignment of elements
+ * @param[in] vertical The vertical alignment of elements
+ */
+EAPI void elm_box_align_set(Evas_Object *obj, double horizontal, double vertical);
+
+/**
+ * @brief Gets the alignment of the whole bounding box of contents.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The box object
+ * @param[out] horizontal The horizontal alignment of elements
+ * @param[out] vertical The vertical alignment of elements
+ *
+ * @see elm_box_align_set()
+ */
+EAPI void elm_box_align_get(const Evas_Object *obj, double *horizontal, double *vertical);
+
+/**
+ * @brief Forces the box to recalculate its children packing.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If any child is added or removed, the box does not calculate the
+ * values immediately rather it leaves it to the next main loop
+ * iteration. While this is great as it would save lots of
+ * recalculation, whenever you need to get the position of a recently
+ * added item you must force recalculation before doing so.
+ *
+ * @param[in] obj The box object
+ */
+EAPI void elm_box_recalculate(Evas_Object *obj);
+
+/**
+ * @brief Sets the layout defining function to be used by the box.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Whenever anything changes that requires the box in @a obj to recalculate
+ * the size and position of its elements, the function @a cb is called
+ * to determine what the layout of the children is.
+ *
+ * @remarks Once a custom function is set, everything about the children layout
+ * is defined by it. The flags set by elm_box_horizontal_set() and
+ * elm_box_homogeneous_set() no longer have any meaning, and the values
+ * given by elm_box_padding_set() and elm_box_align_set() are up to the
+ * layout function to decide whether they are used and how. These last two
+ * are found in the @a priv parameter, of type @c Evas_Object_Box_Data,
+ * passed to @a cb. The @c Evas_Object that the function receives is not the
+ * Elementary widget, but the internal Evas Box it uses, so none of the
+ * functions described here can be used on it.
+ *
+ * @remarks Any of the layout functions in @c Evas can be used here, as well as the
+ * special elm_box_layout_transition().
+ *
+ * @remarks The final @a data argument received by @a cb is the same @a data passed
+ * here, and the @a free_data function is called to free it
+ * whenever the box is destroyed or another layout function is set.
+ *
+ * @remarks Setting @a cb to @c NULL reverts back to the default layout function.
+ *
+ * @param[in] obj The box object
+ * @param[in] cb The callback function used for the layout
+ * @param[in] data The data that is passed to the layout function
+ * @param[in] free_data The function called to free @a data
+ *
+ * @see elm_box_layout_transition()
+ */
+EAPI void elm_box_layout_set(Evas_Object *obj, Evas_Object_Box_Layout cb, const void *data, Ecore_Cb free_data);
+
+/**
+ * @brief Special layout function that animates the transition from one layout to another.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Normally, when switching the layout function for a box, this
+ * reflects immediately on screen on the next render, but it's also
+ * possible to do this through an animated transition.
+ *
+ * @remarks This is done by creating an ::Elm_Box_Transition and setting the box
+ * layout to this function.
+ *
+ * For example:
+ * @code
+ * Elm_Box_Transition *t = elm_box_transition_new(1.0,
+ * evas_object_box_layout_vertical, // start
+ * NULL, // data for initial layout
+ * NULL, // free function for initial data
+ * evas_object_box_layout_horizontal, // end
+ * NULL, // data for final layout
+ * NULL, // free function for final data
+ * anim_end, // will be called when animation ends
+ * NULL); // data for anim_end function\
+ * elm_box_layout_set(box, elm_box_layout_transition, t,
+ * elm_box_transition_free);
+ * @endcode
+ *
+ * @remarks This function can only be used with elm_box_layout_set(). Calling
+ * it directly does not have the expected results.
+ *
+ * @param[in] obj The box object
+ * @param[in] priv The smart data of the @p obj
+ * @param[in] data The data pointer passed
+ *
+ * @see elm_box_transition_new
+ * @see elm_box_transition_free
+ * @see elm_box_layout_set
+ */
+EAPI void elm_box_layout_transition(Evas_Object *obj, Evas_Object_Box_Data *priv, void *data);
+
+/**
+ * @brief Creates a new ::Elm_Box_Transition to animate the switch of the layouts.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If you want to animate the change from one layout to another, you need
+ * to set the layout function of the box to elm_box_layout_transition(),
+ * passing user data to it as an instance of ::Elm_Box_Transition with the
+ * necessary information to perform this animation. The free function to
+ * set the layout is elm_box_transition_free().
+ *
+ * @remarks The parameters to create an ::Elm_Box_Transition sum up to how long
+ * it is, in seconds, a layout function to describe the initial point,
+ * another for the final position of the children and one function to be
+ * called when the whole animation ends. This last function is useful to
+ * set the definitive layout for the box, usually it is same as the end
+ * layout for the animation, but could be used to start another transition.
+ *
+ * @param[in] duration The duration of the transition in seconds
+ * @param[in] start_layout The layout function that is used to start the animation
+ * @param[in] start_layout_data The data to be passed to the @a start_layout function
+ * @param[in] start_layout_free_data The function to free @a start_layout_data
+ * @param[in] end_layout The layout function that is used to end the animation
+ * @param[in] end_layout_data The data parameter passed to @a end_layout
+ * @param end_layout_free_data The data to be passed to the @a end_layout function
+ * @param end_layout_free_data The function to free @a end_layout_data
+ * @param[in] transition_end_cb The callback function called when the animation ends
+ * @param[in] transition_end_data The data to be passed to @a transition_end_cb
+ * @return An instance of ::Elm_Box_Transition
+ *
+ * @see elm_box_transition_new
+ * @see elm_box_layout_transition
+ */
+EAPI Elm_Box_Transition *elm_box_transition_new(const double duration, Evas_Object_Box_Layout start_layout, void *start_layout_data, Ecore_Cb start_layout_free_data, Evas_Object_Box_Layout end_layout, void *end_layout_data, Ecore_Cb end_layout_free_data, Ecore_Cb transition_end_cb, void *transition_end_data);
+
+/**
+ * @brief Frees an Elm_Box_Transition instance created with elm_box_transition_new().
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This function is mostly useful as the @a free_data parameter in
+ * elm_box_layout_set() with elm_box_layout_transition().
+ *
+ * @param[in] data The Elm_Box_Transition instance to be freed
+ *
+ * @see elm_box_transition_new
+ * @see elm_box_layout_transition
+ */
+EAPI void elm_box_transition_free(void *data);
+
/**
* @}
*/
diff --git a/src/lib/elm_bubble.h b/src/lib/elm_bubble.h
index 853cf7b8b..8eaf37ebc 100644
--- a/src/lib/elm_bubble.h
+++ b/src/lib/elm_bubble.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Bubble Bubble
* @ingroup Elementary
*
@@ -13,17 +14,17 @@
* @image latex img/widget/bubble/preview-02.eps
*
* @brief The Bubble is a widget to show text similar to how speech is
- * represented in comics.
+ * represented in comics.
*
* The bubble widget contains 5 important visual elements:
* @li The frame is a rectangle with rounded edjes and an "arrow".
- * @li The @p icon is an image to which the frame's arrow points to.
- * @li The @p label is a text which appears to the right of the icon if the
+ * @li The @a icon is an image to which the frame's arrow points to.
+ * @li The @a label is a text which appears to the right of the icon if the
* corner is "top_left" or "bottom_left" and is right aligned to the frame
* otherwise.
- * @li The @p info is a text which appears to the right of the label. Info's
+ * @li The @a info is a text which appears to the right of the label. Info's
* font is of a lighter color than label.
- * @li The @p content is an evas object that is shown inside the frame.
+ * @li The @a content is an evas object that is shown inside the frame.
*
* The position of the arrow, icon, label and info depends on which corner is
* selected. The four available corners are:
@@ -36,18 +37,16 @@
* functions acting on it also work for bubble objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* @li @c "clicked" - This is called when a user has clicked the bubble.
- * @li @c "focused" - When the bubble has received focus. (since 1.8)
- * @li @c "unfocused" - When the bubble has lost focus. (since 1.8)
*
* Default content parts of the bubble that you can use for are:
* @li "default" - A content of the bubble
* @li "icon" - An icon of the bubble
*
* Default text parts of the button widget that you can use for are:
- * @li "default" - A label of the bubble
- * @li "info" - An info of the bubble
+ * @li "default" - Label of the bubble
+ * @li "info" - info of the bubble
*
* Supported elm_object common APIs.
* @li @ref elm_object_part_text_set
@@ -56,18 +55,56 @@
* @li @ref elm_object_part_content_get
* @li @ref elm_object_part_content_unset
*
- * For an example of using a bubble see @ref bubble_01_example_page "this".
- *
* @{
*/
-#include "elm_bubble_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_bubble_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_bubble_legacy.h"
-#endif
+/**
+ * @brief Defines the corner values for a bubble.
+ *
+ * @remarks The corner is used to determine where the arrow of the
+ * bubble points to.
+ */
+typedef enum
+{
+ ELM_BUBBLE_POS_INVALID = -1,
+ ELM_BUBBLE_POS_TOP_LEFT,
+ ELM_BUBBLE_POS_TOP_RIGHT,
+ ELM_BUBBLE_POS_BOTTOM_LEFT,
+ ELM_BUBBLE_POS_BOTTOM_RIGHT,
+} Elm_Bubble_Pos;
+
+/**
+ * @brief Adds a new bubble to the parent
+ *
+ * @details This function adds a text bubble to the given parent evas object
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_bubble_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the corner of the bubble
+ *
+ * @details This function sets the corner of the bubble. The corner is used to
+ * determine where the arrow in the frame points to and where label, icon, and
+ * info are shown.
+ *
+ * @param[in] obj The bubble object
+ * @param[in] pos The given corner for the bubble
+ */
+EAPI void elm_bubble_pos_set(Evas_Object *obj, Elm_Bubble_Pos pos);
+
+/**
+ * @brief Gets the corner of the bubble.
+ *
+ * @details This function gets the selected corner of the bubble.
+ *
+ * @param[in] obj The bubble object
+ * @return The given corner for the bubble
+ */
+EAPI Elm_Bubble_Pos elm_bubble_pos_get(const Evas_Object *obj);
+
/**
* @}
*/
diff --git a/src/lib/elm_button.h b/src/lib/elm_button.h
index 72b6c749e..6b8a536f9 100644
--- a/src/lib/elm_button.h
+++ b/src/lib/elm_button.h
@@ -1,53 +1,46 @@
/**
* @defgroup Button Button
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html button_inheritance_tree.png
* @image latex button_inheritance_tree.eps
*
- * @image html img/widget/button/preview-00.png
- * @image latex img/widget/button/preview-00.eps
- * @image html img/widget/button/preview-01.png
- * @image latex img/widget/button/preview-01.eps
- * @image html img/widget/button/preview-02.png
- * @image latex img/widget/button/preview-02.eps
- *
- * This is a push-button. Press it and run some function. It can contain
- * a simple label and icon object and it also has an autorepeat feature.
+ * @brief This is a push-button. Press it and run some function. It can contain
+ * a simple label and icon object and it also has an autorepeat feature.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for button objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li "clicked": the user clicked the button (press/release).
- * @li "repeated": the user pressed the button without releasing it.
- * @li "pressed": button was pressed.
- * @li "unpressed": button was released after being pressed.
- * @li @c "focused" : When the button has received focus. (since 1.8)
- * @li @c "unfocused" : When the button has lost focus. (since 1.8)
- * In all cases, the @c event parameter of the callback will be
+ * @ref Layout :
+ * @li "clicked": The user clicked the button (press/release).
+ * @li "repeated": The user pressed the button without releasing it.
+ * @li "pressed": The button is pressed.
+ * @li "unpressed": The button is released after being pressed.
+ * In all cases, the @a event parameter of the callback is
* @c NULL.
*
* Also, defined in the default theme, the button has the following styles
* available:
- * @li default: a normal button.
+ * @li default: A normal button.
* @li anchor: Like default, but the button fades away when the mouse is not
* over it, leaving only the text or icon.
+ * @internal
* @li hoversel_vertical: Internally used by @ref Hoversel to give a
* continuous look across its options.
* @li hoversel_vertical_entry: Another internal for @ref Hoversel.
+ * @endinternal
* @li naviframe: Internally used by @ref Naviframe for its back button.
* @li colorselector: Internally used by @ref Colorselector
* for its left and right buttons.
*
- * Default content parts of the button widget that you can use for are:
- * @li "icon" - An icon of the button
+ * The default content parts of the button widget that you can use are:
+ * @li "icon" - An icon of the button.
*
- * Default text parts of the button widget that you can use for are:
- * @li "default" - A label of the button
+ * The default text parts of the button widget that you can use are:
+ * @li "default" - Label of the button.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_part_text_set
* @li @ref elm_object_part_text_get
* @li @ref elm_object_part_content_set
@@ -57,22 +50,105 @@
* @li @ref elm_object_signal_callback_add
* @li @ref elm_object_signal_callback_del
*
- * Here is some sample code using it:
- * @li @ref button_example_00
- * @li @ref button_example_01
+ * @{
*/
/**
- * @addtogroup Button
- * @{
+ * @brief Adds a new button to the parent's canvas
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_button_add(Evas_Object *parent);
+
+/**
+ * @brief Turns on/off the autorepeat event generated when the button is kept pressed.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When off, no autorepeat is performed and buttons emit a normal @c clicked
+ * signal when they are clicked.
+ *
+ * @remarks When on, keeping a button pressed continuously emits a @c repeated
+ * signal until the button is released. The time it takes until it starts
+ * emitting the signal is given by
+ * elm_button_autorepeat_initial_timeout_set(), and the time between each
+ * new emission is given by elm_button_autorepeat_gap_timeout_set().
+ *
+ * @param[in] obj The button object
+ * @param[in] on The boolean value to turn on/off the event
+ */
+EAPI void elm_button_autorepeat_set(Evas_Object *obj, Eina_Bool on);
+
+/**
+ * @brief Gets whether the autorepeat feature is enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The button object
+ * @return @c EINA_TRUE if autorepeat is on, otherwise @c EINA_FALSE
+ *
+ * @see elm_button_autorepeat_set()
+ */
+EAPI Eina_Bool elm_button_autorepeat_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the initial timeout before the autorepeat event is generated.
+ *
+ * @details This sets the timeout, in seconds, since the button is pressed until the
+ * first @c repeated signal is emitted. If @a t is @c 0.0 or less, there
+ * won't be any delay and the event is fired the moment the button is
+ * pressed.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The button object
+ * @param[in] t The timeout in seconds
+ *
+ * @see elm_button_autorepeat_set()
+ * @see elm_button_autorepeat_gap_timeout_set()
+ */
+EAPI void elm_button_autorepeat_initial_timeout_set(Evas_Object *obj, double t);
+
+/**
+ * @brief Gets the initial timeout before the autorepeat event is generated.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The button object
+ * @return The timeout in seconds
+ *
+ * @see elm_button_autorepeat_initial_timeout_set()
+ */
+EAPI double elm_button_autorepeat_initial_timeout_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the interval between each generated autorepeat event.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks After the first @c repeated event is fired, all subsequent ones
+ * follow after a delay of @a t seconds for each.
+ *
+ * @param[in] obj The button object
+ * @param[in] t The interval in seconds
+ *
+ * @see elm_button_autorepeat_initial_timeout_set()
+ */
+EAPI void elm_button_autorepeat_gap_timeout_set(Evas_Object *obj, double t);
+
+/**
+ * @brief Gets the interval between each generated autorepeat event.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The button object
+ * @return The interval in seconds
*/
+EAPI double elm_button_autorepeat_gap_timeout_get(const Evas_Object *obj);
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_button_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_button_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_cache.h b/src/lib/elm_cache.h
index 7546f6b48..9c3c2612e 100644
--- a/src/lib/elm_cache.h
+++ b/src/lib/elm_cache.h
@@ -1,28 +1,29 @@
/**
* @defgroup Caches Caches
- * @ingroup Elementary
+ * @ingroup elm_infra_group
*
- * These are functions which let one fine-tune some cache values for
- * Elementary applications, thus allowing for performance adjustments.
+ * @brief These are functions which let one fine-tune some cache values for
+ * Elementary applications, thus allowing for performance adjustments.
*
* @{
*/
/**
- * @brief Flush all caches.
+ * @brief Flushes all caches.
*
- * Frees all data that was in cache and is not currently being used to reduce
- * memory usage. This frees Edje's, Evas' and Eet's cache. This is equivalent
- * to calling all of the following functions:
- * @li edje_file_cache_flush()
- * @li edje_collection_cache_flush()
- * @li eet_clearcache()
- * @li evas_image_cache_flush()
- * @li evas_font_cache_flush()
- * @li evas_render_dump()
- * @note Evas caches are flushed for every canvas associated with a window.
+ * @details This frees all data that is in the cache and is not currently being used, in order to reduce
+ * memory usage. This frees Edje's, Evas', and Eet's cache. This is equivalent
+ * to calling all of the following functions:
+ * @li edje_file_cache_flush()
+ * @li edje_collection_cache_flush()
+ * @li eet_clearcache()
+ * @li evas_image_cache_flush()
+ * @li evas_font_cache_flush()
+ * @li evas_render_dump()
*
- * @ingroup Caches
+ * @since_tizen 2.3
+ *
+ * @remarks Evas caches are flushed for every canvas associated with a window.
*/
EAPI void elm_cache_all_flush(void);
diff --git a/src/lib/elm_calendar.h b/src/lib/elm_calendar.h
index 4f1e00e71..d033c94f4 100644
--- a/src/lib/elm_calendar.h
+++ b/src/lib/elm_calendar.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Calendar Calendar
* @ingroup Elementary
*
@@ -6,55 +7,508 @@
* @image latex calendar_inheritance_tree.eps
*
* This is a calendar widget. It helps applications to flexibly
- * display a calender with day of the week, date, year and
+ * display a calender with days of the week, date, year, and
* month. Applications are able to set specific dates to be reported
* back, when selected, in the smart callbacks of the calendar
* widget. The API of this widget lets the applications perform other
* functions, like:
*
- * - placing marks on specific dates
- * - setting the bounds for the calendar (minimum and maximum years)
- * - setting the day names of the week (e.g. "Thu" or "Thursday")
+ * - placing marks on specific dates.
+ * - setting the bounds for the calendar (minimum and maximum years).
+ * - setting the day names of the week (e.g. "Thu" or "Thursday").
* - setting the year and month format.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for calendar objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * - @c "changed" - emitted when the date in the calendar is changed.
- * - @c "display,changed" - emitted when the current month displayed in the
+ * @ref Layout :
+ * - @c "changed" - Emitted when the date in the calendar is changed.
+ * - @c "display,changed" - Emitted when the current month displayed in the
* calendar is changed.
- * - @c "focused" - When the calendar has received focus. (since 1.8)
- * - @c "unfocused" - When the calendar has lost focus. (since 1.8)
- * - @c "language,changed" - the program's language changed (since 1.9)
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_signal_emit
* @li @ref elm_object_signal_callback_add
* @li @ref elm_object_signal_callback_del
*
- * Here is some sample code using it:
- * @li @ref calendar_example_01
- * @li @ref calendar_example_02
- * @li @ref calendar_example_03
- * @li @ref calendar_example_04
- * @li @ref calendar_example_05
- * @li @ref calendar_example_06
+ * @{
*/
/**
- * @addtogroup Calendar
- * @{
+ * Enumeration of Elm Calendar Mark Repeat Type
+ */
+typedef enum
+{
+ ELM_CALENDAR_UNIQUE, /**< Default value. Marks are displayed only on the event day */
+ ELM_CALENDAR_DAILY, /**< Marks are displayed every day after the event day (inclusive) */
+ ELM_CALENDAR_WEEKLY, /**< Marks are displayed every week after the event day (inclusive) - i.e. every seven days */
+ ELM_CALENDAR_MONTHLY, /**< Marks are displayed every month day that coincides with the event day. E.g.: if an event is set to 30th Jan, no marks are displayed on Feb, but are displayed on 30th Mar */
+ ELM_CALENDAR_ANNUALLY, /**< Marks are displayed every year that coincides with the event day (and month). E.g. an event added to 30th Jan 2012 is repeated on 30th Jan 2013 */
+ ELM_CALENDAR_LAST_DAY_OF_MONTH /**< Marks are displayed every last day of the month after the event day (inclusive) @since 1.7 */
+} _Elm_Calendar_Mark_Repeat_Type;
+
+/**
+ * @enum _Elm_Calendar_Mark_Repeat_Type
+ * @typedef Elm_Calendar_Mark_Repeat_Type
+ *
+ * @brief Enumeration that shows an event's periodicity, used to define whether a mark should be repeated
+ * @a beyond the event's day. It's set when a mark is added.
+ *
+ * @remarks So, for a mark added to 13th May with periodicity set to WEEKLY,
+ * there are marks every week after this date. Marks are displayed
+ * at 13th, 20th, 27th, 3rd June ...
+ *
+ * @remarks Values don't work as bitmask, only one can be chosen.
+ *
+ * @see elm_calendar_mark_add()
+ */
+typedef _Elm_Calendar_Mark_Repeat_Type Elm_Calendar_Mark_Repeat_Type;
+
+typedef enum
+{
+ ELM_DAY_SUNDAY,
+ ELM_DAY_MONDAY,
+ ELM_DAY_TUESDAY,
+ ELM_DAY_WEDNESDAY,
+ ELM_DAY_THURSDAY,
+ ELM_DAY_FRIDAY,
+ ELM_DAY_SATURDAY,
+ ELM_DAY_LAST
+} _Elm_Calendar_Weekday;
+
+/**
+ * @enum _Elm_Calendar_Weekday
+ * @typedef Elm_Calendar_Weekday
+ *
+ * @brief Enumeration that defines the select mode for a weekday calendar.
+ *
+ * @see elm_calendar_first_day_of_week_set()
+ */
+typedef _Elm_Calendar_Weekday Elm_Calendar_Weekday;
+
+/**
+ * @brief Enumeration of Elm Calendar Select Mode
+ */
+typedef enum
+{
+ ELM_CALENDAR_SELECT_MODE_DEFAULT = 0, /**< Default value. A day is always selected */
+ ELM_CALENDAR_SELECT_MODE_ALWAYS, /**< A day is always selected */
+ ELM_CALENDAR_SELECT_MODE_NONE, /**< None of the days can be selected */
+ ELM_CALENDAR_SELECT_MODE_ONDEMAND /**< User may have selected a day or maybe not */
+} _Elm_Calendar_Select_Mode;
+
+/**
+ * @enum _Elm_Calendar_Select_Mode
+ * @typedef Elm_Calendar_Select_Mode
+ *
+ * @brief Enumeration that defines the mode, which determine how a user could select a day.
+ *
+ * @see elm_calendar_select_mode_set()
+ */
+typedef _Elm_Calendar_Select_Mode Elm_Calendar_Select_Mode;
+
+typedef enum
+{
+ ELM_CALENDAR_SELECTABLE_NONE = 0,
+ ELM_CALENDAR_SELECTABLE_YEAR = (1 << 0),
+ ELM_CALENDAR_SELECTABLE_MONTH = (1 << 1),
+ ELM_CALENDAR_SELECTABLE_DAY = (1 << 2)
+} _Elm_Calendar_Selectable;
+
+/**
+ * @enum _Elm_Calendar_Selectable
+ * @typedef Elm_Calendar_Selectable
+ *
+ * @brief The structure type that is a bitmask used to define which fields of a @b tm struct are taken into
+ * account, when elm_calendar_selected_time_set() is invoked.
+ *
+ * @since 1.8
+ *
+ * @see elm_calendar_selectable_set()
+ * @see elm_calendar_selected_time_set()
+ */
+typedef _Elm_Calendar_Selectable Elm_Calendar_Selectable;
+
+typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark; /**< Item handle for a calendar mark. Created with elm_calendar_mark_add() and deleted with elm_calendar_mark_del() */
+
+/**
+ * @typedef Elm_Calendar_Format_Cb
+ *
+ * @brief Called to format the string that is used
+ * to display the month and year.
+ *
+ * @param[in] stime The struct representing the time
+ * @return The string representing the time that is set to the calendar's text
+ *
+ * @see elm_calendar_format_function_set()
+ */
+typedef char * (*Elm_Calendar_Format_Cb)(struct tm *stime);
+
+/**
+ * @brief Adds a new calendar widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new calendar widget on the canvas.
+ *
+ * @param[in] parent The parent object
+ * @return The new calendar widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_calendar_add(Evas_Object *parent);
+
+/**
+ * @brief Gets weekdays names displayed by the calendar.
+ *
+ * @remarks By default, weekdays abbreviations obtained from the system are displayed:
+ * E.g. for an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat"
+ * The first string is related to Sunday, the second to Monday, and so on.
+ *
+ * @param[in] obj The calendar object
+ * @return The array of seven strings to be used as weekday names
+ *
+ * @see elm_calendar_weekdays_name_set()
+ */
+EAPI const char **elm_calendar_weekdays_names_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets weekdays names to be displayed by the calendar.
+ *
+ * @remarks It must have @c 7 elements, or it accesses invalid memory.
+ * @remarks The strings must be @c NULL terminated ('@\0').
+ *
+ * @remarks By default, weekdays abbreviations obtained from the system are displayed:
+ * E.g. for an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat"
+ * The first string should be related to Sunday, the second to Monday, and so on.
+ *
+ * The usage should be like this:
+ * @code
+ * const char *weekdays[] =
+ * {
+ * "Sunday", "Monday", "Tuesday", "Wednesday",
+ * "Thursday", "Friday", "Saturday"
+ * };
+ * elm_calendar_weekdays_names_set(calendar, weekdays);
+ * @endcode
+ *
+ * @param[in] obj The calendar object
+ * @param[in] weekdays The array of seven strings to be used as weekday names
+ *
+ * @see elm_calendar_weekdays_name_get()
+ */
+EAPI void elm_calendar_weekdays_names_set(Evas_Object *obj, const char *weekdays[]);
+
+/**
+ * @brief Sets the minimum and maximum values for the year.
+ *
+ * @remarks Maximum must be greater than minimum, except if you don't want to set the
+ * maximum year. Default values are @c 1902 and @c -1.
+ *
+ * @remarks If the maximum year is a negative value, it is limited depending
+ * on the platform architecture (year @c 2037 for @c 32 bits).
+ *
+ * @param[in] obj The calendar object
+ * @param[in] min The minimum year, greater than @c 1901
+ * @param[in] max The maximum year
+ *
+ * @see elm_calendar_min_max_year_get()
+ */
+EAPI void elm_calendar_min_max_year_set(Evas_Object *obj, int min, int max);
+
+/**
+ * @brief Gets the minimum and maximum values for the year.
+ *
+ * @remarks Default values are @c 1902 and @c -1.
+ *
+ * @param[in] obj The calendar object
+ * @param[out] min The minimum year
+ * @param[out] max The maximum year
+ *
+ * @see elm_calendar_min_max_year_get()
+ */
+EAPI void elm_calendar_min_max_year_get(const Evas_Object *obj, int *min, int *max);
+
+/**
+ * @brief Sets the select day mode to use.
+ *
+ * @details This sets the day selection mode that is used.
+ *
+ * @param[in] obj The calendar object
+ * @param[in] mode The select mode to use
+ */
+EAPI void elm_calendar_select_mode_set(Evas_Object *obj, Elm_Calendar_Select_Mode mode);
+
+/**
+ * @brief Gets the select day mode used.
+ *
+ * @details This sets the day selection mode that is used.
+ *
+ * @param[in] obj The calendar object
+ *
+ * @return The selected mode
+ *
+ * @see elm_calendar_select_mode_set()
+ */
+EAPI Elm_Calendar_Select_Mode elm_calendar_select_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the selected date to be highlighted on the calendar.
+ *
+ * @details This sets the selected date, changing the displayed month if needed.
+ * Selected date changes when the user goes to the next/previous month or
+ * selects a day by pressing it on the calendar.
+ *
+ * @param[in] obj The calendar object
+ * @param[in] selected_time A @b tm struct to represent the selected date
+ *
+ * @see elm_calendar_selected_time_get()
+ */
+EAPI void elm_calendar_selected_time_set(Evas_Object *obj, struct tm *selected_time);
+
+/**
+ * @brief Get the selected date.
+ *
+ * @details This gets the date selected by the user or set by the function
+ * elm_calendar_selected_time_set().
+ * Selected date changes when the user goes to the next/previous month or
+ * selects a day by pressing it on the calendar.
+ *
+ * @param[in] obj The calendar object
+ * @param[out] selected_time A @b tm struct to point to the selected date
+ * @return @c EINA_FALSE means an error occurred and the returned time shouldn't
+ * be considered, otherwise @c EINA_FALSE
+ *
+ * @see elm_calendar_selected_time_get()
+ */
+EAPI Eina_Bool elm_calendar_selected_time_get(const Evas_Object *obj, struct tm *selected_time);
+
+/**
+ * @brief Sets a function to format the string that is used to display the
+ * month and year.
+ *
+ * @remarks By default it uses strftime with the "%B %Y" format string.
+ * It should allocate the memory that is used by the string,
+ * that is freed by the widget after usage.
+ * A pointer to the string and a pointer to the time struct is provided.
+ *
+ * Example:
+ * @code
+ * static char *
+ * _format_month_year(struct tm *selected_time)
+ * {
+ * char buf[32];
+ * if (!strftime(buf, sizeof(buf), "%B %Y", selected_time)) return NULL;
+ * return strdup(buf);
+ * }
+ *
+ * elm_calendar_format_function_set(calendar, _format_month_year);
+ * @endcode
+ *
+ * @param[in] obj The calendar object
+ * @param[in] format_func The function to set the month-year string given that
+ * the selected date is provided
+ */
+EAPI void elm_calendar_format_function_set(Evas_Object *obj, Elm_Calendar_Format_Cb format_func);
+
+/**
+ * @brief Adds a new mark to the calendar.
+ *
+ * @details This adds a mark that is drawn in the calendar with respect to the insertion
+ * time and periodicity. It emits the type as a signal to the widget theme.
+ * Default theme supports "holiday" and "checked", but it can be extended.
+ *
+ * @remarks It won't immediately update the calendar, drawing the marks.
+ * For this, call elm_calendar_marks_draw(). However, when the user selects the
+ * next or previous month, the calendar forces marks to be drawn.
+ *
+ * @remarks Marks created with this method can be deleted with
+ * elm_calendar_mark_del().
+ *
+ * Example
+ * @code
+ * struct tm selected_time;
+ * time_t current_time;
+ *
+ * current_time = time(NULL) + 5 * 84600;
+ * localtime_r(&current_time, &selected_time);
+ * elm_calendar_mark_add(cal, "holiday", selected_time,
+ * ELM_CALENDAR_ANNUALLY);
+ *
+ * current_time = time(NULL) + 1 * 84600;
+ * localtime_r(&current_time, &selected_time);
+ * elm_calendar_mark_add(cal, "checked", selected_time, ELM_CALENDAR_UNIQUE);
+ *
+ * elm_calendar_marks_draw(cal);
+ * @endcode
+ *
+ * @param[in] obj The calendar object
+ * @param[in] mark_type A string used to define the type of mark \n
+ * It is emitted to the theme, that should display a related modification on this
+ * day's representation.
+ * @param[in] mark_time A time struct to represent the date of inclusion of the mark \n
+ * For marks that repeats it is just displayed after the inclusion
+ * date in the calendar.
+ * @param[in] repeat Repeats the event following this periodicity \n
+ * Can be a unique mark (that doesn't repeat), daily, weekly, monthly, or annually.
+ * @return The created mark, otherwise @c NULL on failure
+ *
+ * @see elm_calendar_marks_draw()
+ * @see elm_calendar_mark_del()
+ */
+EAPI Elm_Calendar_Mark *elm_calendar_mark_add(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat_Type repeat);
+
+/**
+ * @brief Deletes a mark from the calendar.
+ *
+ * @remarks If deleting all calendar marks is required, elm_calendar_marks_clear()
+ * should be used instead of getting the marks list and deleting on by one.
+ *
+ * @param[in] mark The mark to be deleted
+ *
+ * @see elm_calendar_mark_add()
+ *
+ * @ingroup Calendar
+ */
+EAPI void elm_calendar_mark_del(Elm_Calendar_Mark *mark);
+
+/**
+ * @brief Removes all calendar marks.
+ *
+ * @param[in] obj The calendar object
+ *
+ * @see elm_calendar_mark_add()
+ * @see elm_calendar_mark_del()
+ */
+EAPI void elm_calendar_marks_clear(Evas_Object *obj);
+
+/**
+ * @brief Gets a list of all the calendar marks.
+ *
+ * @param[in] obj The calendar object
+ * @return An @c Eina_List of calendar marks objects, otherwise @c NULL on failure
+ *
+ * @see elm_calendar_mark_add()
+ * @see elm_calendar_mark_del()
+ * @see elm_calendar_marks_clear()
+ */
+EAPI const Eina_List *elm_calendar_marks_get(const Evas_Object *obj);
+
+/**
+ * @brief Draws calendar marks.
+ *
+ * @remarks Should be used after adding, removing, or clearing marks.
+ * It goes through the entire marks list, updating the calendar.
+ * If lots of marks are added, add all the marks and then call
+ * this function.
+ *
+ * @remarks When the month is changed, i.e. the user selects the next or previous month,
+ * marks are drawn.
+ *
+ * @param[in] obj The calendar object
+ *
+ * @see elm_calendar_mark_add()
+ * @see elm_calendar_mark_del()
+ * @see elm_calendar_marks_clear()
+ */
+EAPI void elm_calendar_marks_draw(Evas_Object *obj);
+
+/**
+ * @brief Sets the interval on time updates for an user's mouse button hold
+ * on the calendar widgets' month selection.
+ *
+ * @remarks This interval value is @b decreased while the user holds the
+ * mouse pointer either by selecting the next or previous month.
+ *
+ * @remarks This helps the user to get to a given month distant from the
+ * current one in an easier/faster way, as it starts to change quicker and
+ * quicker on mouse button holds.
+ *
+ * @remarks The calculation for the next change interval value, starting from
+ * the one set with this call, is the previous interval divided by
+ * @c 1.05, so it decreases a little bit.
+ *
+ * @remarks The default starting interval value for automatic changes is
+ * @b 0.85 seconds.
+ *
+ * @param[in] obj The calendar object
+ * @param[in] interval The (first) interval value in seconds
+ *
+ * @see elm_calendar_interval_get()
+ */
+EAPI void elm_calendar_interval_set(Evas_Object *obj, double interval);
+
+/**
+ * @brief Gets the interval on time updates for a user's mouse button hold
+ * on the calendar widgets' month selection.
+ *
+ * @param[in] obj The calendar object
+ * @return The (first) interval value, in seconds, set on it
+ *
+ * @see elm_calendar_interval_set()
+ */
+EAPI double elm_calendar_interval_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the first day of the week to use on the calendar widgets'.
+ *
+ * @param[in] obj The calendar object
+ * @param[in] day An integer which corresponds to the first day of the week (Sunday = 0, monday = 1,
+ * ..., saturday = 6)
+ */
+EAPI void elm_calendar_first_day_of_week_set(Evas_Object *obj, Elm_Calendar_Weekday day);
+
+/**
+ * @brief Gets the first day of the week that is used on calendar widgets'.
+ *
+ * @param[in] obj The calendar object
+ * @return An integer which corresponds to the first day of the week (Sunday = 0, monday = 1,
+ * ..., saturday = 6)
+ *
+ * @see elm_calendar_first_day_of_week_set()
+ */
+EAPI Elm_Calendar_Weekday elm_calendar_first_day_of_week_get(const Evas_Object *obj);
+
+/**
+ * @brief Defines which fields of a @b tm struct are taken into account, when
+ * elm_calendar_selected_time_set() is invoked.
+ *
+ * @since 1.8
+ *
+ * @remarks By default the bitmask is set to use all fields of a @b tm struct (year,
+ * month, and day of the month).
+ *
+ * @param[in] obj The calendar object
+ * @param[in] selectable A bitmask of Elm_Calendar_Selectable
+ *
+ * @see elm_calendar_selected_time_set
+ */
+EAPI void elm_calendar_selectable_set(Evas_Object *obj, Elm_Calendar_Selectable selectable);
+
+
+/**
+ * @brief Gets how elm_calendar_selected_time_set() manages a date.
+ *
+ * @since 1.8
+ *
+ * @param[in] obj The calendar object
+ * @return The flag used to manage a date with elm_calendar_selected_time_set()
+ *
+ * @see elm_calendar_selectable_set()
+ * @see elm_calendar_selected_time_set()
+ */
+EAPI Elm_Calendar_Selectable elm_calendar_selectable_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the current time displayed in the widget.
+ *
+ * @since 1.8
+ *
+ * @param[in] obj The calendar object
+ * @param[out] displayed_time A @b tm struct to point to the displayed date
+ * @return @c EINA_FALSE means an error has occurred, otherwise @c EINA_FALSE if the returned
+ * time is zero filled
*/
+EAPI Eina_Bool elm_calendar_displayed_time_get(const Evas_Object *obj, struct tm *displayed_time);
-#include "elm_calendar_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_calendar_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_calendar_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_check.h b/src/lib/elm_check.h
index 51a57f286..d071eed90 100644
--- a/src/lib/elm_check.h
+++ b/src/lib/elm_check.h
@@ -1,24 +1,17 @@
/**
* @defgroup Check Check
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html check_inheritance_tree.png
* @image latex check_inheritance_tree.eps
*
- * @image html img/widget/check/preview-00.png
- * @image latex img/widget/check/preview-00.eps
- * @image html img/widget/check/preview-01.png
- * @image latex img/widget/check/preview-01.eps
- * @image html img/widget/check/preview-02.png
- * @image latex img/widget/check/preview-02.eps
+ * @brief The check widget allows for toggling a value between @c true
+ * and @c false.
*
- * @brief The check widget allows for toggling a value between true
- * and false.
- *
- * Check objects are a lot like radio objects in layout and
- * functionality, except they do not work as a group, but
- * independently, and only toggle the value of a boolean between false
- * and true. elm_check_state_set() sets the boolean state and
+ * Check objects are a lot like radio objects in the layout and
+ * functionality, except that they do not work as a group, but
+ * independently, and only toggle the value of a boolean between @c false
+ * and @c true. elm_check_state_set() sets the boolean state and
* elm_check_state_get() returns the current state. For convenience,
* like the radio objects, you can set a pointer to a boolean directly
* with elm_check_state_pointer_set() for it to modify.
@@ -27,22 +20,19 @@
* functions acting on it also work for check objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* - @c "changed" - This is called whenever the user changes the state of
- * the check objects (@p event_info is always @c NULL).
- * - @c "focused" - When the check has received focus. (since 1.8)
- * - @c "unfocused" - When the check has lost focus. (since 1.8)
- * - @c "language,changed" - the program's language changed (since 1.9)
+ * the check objects (@a event_info is always @c NULL).
*
- * Default content parts of the check widget that you can use for are:
- * @li "icon" - An icon of the check
+ * The default content parts of the check widget that you can use are:
+ * @li "icon" - An icon of the check.
*
- * Default text parts of the check widget that you can use for are:
- * @li "default" - A label of the check
- * @li "on" - On state label of the check (only valid for "toggle" style.)
- * @li "off" - Off state label of the check (only valid for "toggle" style.)
+ * The default text parts of the check widget that you can use are:
+ * @li "default" - A label of the check.
+ * @li "on" - On state label of the check.
+ * @li "off" - Off state label of the check.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_disabled_set
* @li @ref elm_object_disabled_get
* @li @ref elm_object_part_text_set
@@ -54,17 +44,60 @@
* @li @ref elm_object_signal_callback_add
* @li @ref elm_object_signal_callback_del
*
- * @ref tutorial_check should give you a firm grasp of how to use this widget.
- *
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_check_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_check_legacy.h"
-#endif
+/**
+ * @brief Adds a new Check object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object * elm_check_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the on/off state of the check object.
+ *
+ * @details This sets the state of the check. If set with elm_check_state_pointer_set()
+ * the state of that variable is also changed. Calling this @b doesn't cause
+ * the "changed" signal to be emitted.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The check object
+ * @param[in] state The state to use (@c 1 == on, @c 0 == off)
+ */
+EAPI void elm_check_state_set(Evas_Object *obj, Eina_Bool state);
+
+/**
+ * @brief Gets the state of the check object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The check object
+ * @return The boolean state
+ */
+EAPI Eina_Bool elm_check_state_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets a convenience pointer to a boolean to change.
+ *
+ * @details This sets a pointer to a boolean, that, in addition to the check objects
+ * state is also modified directly. To stop setting the object
+ * to simply use @c NULL as the @a statep parameter. If @a statep is not @c NULL,
+ * then when this is called, the check objects state is also modified to
+ * reflect the value of the boolean that @a statep points to, just like calling
+ * elm_check_state_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The check object
+ * @param[in] statep A pointer to the boolean to modify
+ */
+EAPI void elm_check_state_pointer_set(Evas_Object *obj, Eina_Bool *statep);
+
/**
* @}
*/
diff --git a/src/lib/elm_clock.h b/src/lib/elm_clock.h
index 04633cd8f..06a5814c5 100644
--- a/src/lib/elm_clock.h
+++ b/src/lib/elm_clock.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Clock Clock
* @ingroup Elementary
*
@@ -9,61 +10,269 @@
* @image latex img/widget/clock/preview-00.eps
*
* This is a @b digital clock widget. In its default theme, it has a
- * vintage "flipping numbers clock" appearance, which will animate
- * sheets of individual algorisms individually as time goes by.
+ * vintage "flipping numbers clock" appearance, which animates
+ * sheets of individual algarisms individually as time goes by.
*
- * A newly created clock will fetch system's time (already
- * considering local time adjustments) to start with, and will tick
+ * A newly created clock fetches the system's time (already
+ * considering local time adjustments) to start with, and tick
* accordingly. It may or may not show seconds.
*
- * Clocks have an @b edition mode. When in it, the sheets will
+ * Clocks have an @b edition mode. When in it, the sheets
* display extra arrow indications on the top and bottom and the
* user may click on them to raise or lower the time values. After
- * it's told to exit edition mode, it will keep ticking with that
- * new time set (it keeps the difference from local time).
+ * it's told to exit the edition mode, it keeps ticking with that
+ * new time set (it keeps the difference from the local time).
*
- * Also, when under edition mode, user clicks on the cited arrows
- * which are @b held for some time will make the clock to flip the
+ * Also, when under the edition mode, the user clicks on the cited arrows
+ * which are @b held for some time making the clock flip the
* sheet, thus editing the time, continuously and automatically for
- * the user. The interval between sheet flips will keep reducing in
+ * the user. The interval between sheet flips keeps growing with
* time, so that it helps the user to reach a time which is distant
* from the one set.
*
- * The time display is, by default, in military mode (24h), but an
- * am/pm indicator may be optionally shown, too, when it will
- * switch to 12h.
+ * The time display is, by default, in the military mode (24h), but an
+ * am/pm indicator may be optionally shown, too, when it
+ * switches to 12h.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for clock objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * - @c "changed" - the clock's user changed the time
- * - @c "focused" - When the clock ehas received focus. (since 1.8)
- * - @c "unfocused" - When the clock has lost focus. (since 1.8)
- * - @c "language,changed" - the program's language changed (since 1.9)
+ * @ref Layout :
+ * - @c "changed" - The clock's user changed the time.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_signal_emit
* @li @ref elm_object_signal_callback_add
* @li @ref elm_object_signal_callback_del
*
- * Here is an example on its usage:
- * @li @ref clock_example
+ * @{
*/
/**
- * @addtogroup Clock
- * @{
+ * @brief Enumeration of the identifiers for which clock digits should be editable, when a
+ * clock widget is in the edition mode. Values may be OR-ed together to
+ * make a mask, naturally.
+ *
+ * @see elm_clock_edit_set()
+ * @see elm_clock_edit_mode_set()
+ */
+typedef enum
+{
+ ELM_CLOCK_EDIT_DEFAULT = 0, /**< Default value. Means that all digits are editable, when in the edition mode */
+ ELM_CLOCK_EDIT_HOUR_DECIMAL = 1 << 0, /**< Decimal algarism of hours value should be editable */
+ ELM_CLOCK_EDIT_HOUR_UNIT = 1 << 1, /**< Unit algarism of hours value should be editable */
+ ELM_CLOCK_EDIT_MIN_DECIMAL = 1 << 2, /**< Decimal algarism of minutes value should be editable */
+ ELM_CLOCK_EDIT_MIN_UNIT = 1 << 3, /**< Unit algarism of minutes value should be editable */
+ ELM_CLOCK_EDIT_SEC_DECIMAL = 1 << 4, /**< Decimal algarism of seconds value should be editable */
+ ELM_CLOCK_EDIT_SEC_UNIT = 1 << 5, /**< Unit algarism of seconds value should be editable */
+ ELM_CLOCK_EDIT_ALL = (1 << 6) - 1 /**< All digits should be editable */
+} Elm_Clock_Edit_Mode;
+
+/**
+ * @brief Adds a new clock widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new clock widget on the canvas.
+ *
+ * @param[in] parent The parent object
+ * @return A new clock widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_clock_add(Evas_Object *parent);
+
+/**
+ * @brief Sets a clock widget's time, programmatically.
+ *
+ * @details This function updates the time that is shown by the clock
+ * widget.
+ *
+ * @remarks Values @b must be set within the following ranges:
+ * - 0 - 23, for hours
+ * - 0 - 59, for minutes
+ * - 0 - 59, for seconds,
+ *
+ * even if the clock is not in the "military" mode.
+ *
+ * @remarks The behavior for the values set out of those ranges is @b
+ * undefined.
+ *
+ * @param[in] obj The clock widget object
+ * @param[in] hrs The hours to set
+ * @param[in] min The minutes to set
+ * @param[in] sec The seconds to set
+ */
+EAPI void elm_clock_time_set(Evas_Object *obj, int hrs, int min, int sec);
+
+/**
+ * @brief Gets a clock widget's time values.
+ *
+ * @details This function gets the time set for @a obj, returning
+ * it on the variables passed as the arguments to the function.
+ *
+ * @remarks Use @c NULL pointers on the time values you're not
+ * interested in, they are ignored by the function.
+ *
+ * @param[in] obj The clock object
+ * @param[out] hrs A pointer to the variable to get the hours value
+ * @param[out] min A pointer to the variable to get the minutes value
+ * @param[out] sec A pointer to the variable to get the seconds value
+ */
+EAPI void elm_clock_time_get(const Evas_Object *obj, int *hrs, int *min, int *sec);
+
+/**
+ * @brief Sets whether a given clock widget is under the <b>edition mode</b> or
+ * under the (default) displaying-only mode.
+ *
+ * @details This function allows a clock's time to be editable or not <b>by
+ * user interaction</b>. When in the edition mode, clocks @b stop
+ * ticking, until one brings them back to the canonical mode. The
+ * elm_clock_edit_mode_set() function influences which digits
+ * of the clock are editable.
+ *
+ * @remarks am/pm sheets, if being shown, are @b always editable
+ * under the edition mode.
+ *
+ * @param[in] obj The clock object
+ * @param[in] edit If @c EINA_TRUE it is put in the edition mode,
+ * otherwise @c EINA_FALSE to put it back to the "displaying only" mode
+ *
+ * @see elm_clock_edit_get()
+ */
+EAPI void elm_clock_edit_set(Evas_Object *obj, Eina_Bool edit);
+
+/**
+ * @brief Retrieves whether a given clock widget is under the editing mode
+ * or under the (default) displaying-only mode.
+ *
+ * @details This function retrieves whether the clock's time can be edited
+ * or not by user interaction.
+ *
+ * @param[in] obj The clock object
+ * @return @c EINA_TRUE if it's in the edition mode, otherwise @c EINA_FALSE
+ *
+ * @see elm_clock_edit_set()
+ */
+EAPI Eina_Bool elm_clock_edit_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets what digits of the given clock widget should be editable
+ * when in the edition mode.
+ *
+ * @param[in] obj The clock object
+ * @param[in] digedit The bit mask indicating the digits to be editable
+ * (values in #Elm_Clock_Edit_Mode)
+ *
+ * @see elm_clock_edit_mode_get()
+ */
+EAPI void elm_clock_edit_mode_set(Evas_Object *obj, Elm_Clock_Edit_Mode digedit);
+
+/**
+ * @brief Retrieves what digits of the given clock widget should be
+ * editable when in the edition mode.
+ *
+ * @param[in] obj The clock object
+ * @return The bit mask indicating the digits to be editable
+ * (values in #Elm_Clock_Edit_Mode)
+ *
+ * @see elm_clock_edit_mode_set()
+ */
+EAPI Elm_Clock_Edit_Mode elm_clock_edit_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether the given clock widget must show hours in the military or the
+ * am/pm mode.
+ *
+ * @details This function sets if the clock must show hours in the military or
+ * am/pm mode. In some countries like Brazil, the military mode
+ * (00-24h-format) is used, in opposition to USA, where the
+ * am/pm mode is more commonly used.
+ *
+ * @param[in] obj The clock object
+ * @param[in] am_pm If @c EINA_TRUE it is put in the am/pm mode, otherwise @c EINA_FALSE
+ * to put it in the military mode
+ *
+ * @see elm_clock_show_am_pm_get()
+ */
+EAPI void elm_clock_show_am_pm_set(Evas_Object *obj, Eina_Bool am_pm);
+
+/**
+ * @brief Gets whether the given clock widget shows hours in the military or am/pm
+ * mode.
+ *
+ * @details This function gets if the clock shows hours in the military or am/pm
+ * mode.
+ *
+ * @param[in] obj The clock object
+ * @return @c EINA_TRUE, if in the am/pm mode, otherwise @c EINA_FALSE if in
+ * the military mode
+ *
+ * @see elm_clock_show_am_pm_set()
+ */
+EAPI Eina_Bool elm_clock_show_am_pm_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether the given clock widget must show time in seconds.
+ *
+ * @details This function sets if the given clock must show the elapsed
+ * seconds or not. By default, they are @b not shown.
+ *
+ * @param[in] obj The clock object
+ * @param[in] seconds If @c EINA_TRUE it shows seconds, otherwise @c EINA_FALSE
+ *
+ * @see elm_clock_show_seconds_get()
+ */
+EAPI void elm_clock_show_seconds_set(Evas_Object *obj, Eina_Bool seconds);
+
+/**
+ * @brief Gets whether the given clock widget is showing time in seconds.
+ *
+ * @details This function gets whether @a obj is showing the elapsed
+ * seconds or not.
+ *
+ * @param[in] obj The clock object
+ * @return @c EINA_TRUE if it's showing seconds, otherwise @c EINA_FALSE
+ *
+ * @see elm_clock_show_seconds_set()
+ */
+EAPI Eina_Bool elm_clock_show_seconds_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the first interval on time updates for a user's mouse button hold
+ * on the clock widgets' time edition.
+ *
+ * @remarks This interval value is @b decreased while the user holds the
+ * mouse pointer either by incrementing or decrementing a given the
+ * clock digit's value.
+ *
+ * @remarks This helps the user to get to a given time, which is distant from the
+ * current one, in an easier/faster way, as it starts to flip quicker and
+ * quicker on mouse button holds.
+ *
+ * @remarks The calculation for the next flip interval value, starting from
+ * the one set with this call, is the previous interval divided by
+ * @c 1.05, so it decreases a little bit.
+ *
+ * @remarks The default starting interval value for automatic flips is
+ * @b 0.85 seconds.
+ *
+ * @param[in] obj The clock object
+ * @param[in] interval The first interval value in seconds
+ *
+ * @see elm_clock_first_interval_get()
+ */
+EAPI void elm_clock_first_interval_set(Evas_Object *obj, double interval);
+
+/**
+ * @brief Gets the first interval on time updates for a user's mouse button hold
+ * on the clock widgets' time edition.
+ *
+ * @param[in] obj The clock object
+ * @return The first interval value, in seconds, set on it
+ *
+ * @see elm_clock_first_interval_set()
*/
+EAPI double elm_clock_first_interval_get(const Evas_Object *obj);
-#include "elm_clock_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_clock_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_clock_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_cnp.h b/src/lib/elm_cnp.h
index dceab77e1..0479d3c16 100644
--- a/src/lib/elm_cnp.h
+++ b/src/lib/elm_cnp.h
@@ -1,13 +1,14 @@
+#ifndef _ELM_CNP_H
+#define _ELM_CNP_H
/**
+ * @internal
* @defgroup CopyPaste CopyPaste
- * @ingroup Elementary
+ * @ingroup elm_infra_group
*
- * Copy and paste feature implementations.
- *
- * Implements the following functionality
- * a. select, copy/cut and paste
- * b. clipboard
- * c. drag and drop
+ * Implements the following functionality:
+ * a. select, copy/cut, and paste
+ * b. clipboard
+ * c. drag and drop
* in order to share data across application windows.
*
* Contains functions to select text or a portion of data,
@@ -18,35 +19,34 @@
* but some terms and behavior are common.
* Currently the X11 window system is widely used, and only X11 functionality is implemented.
*
- * In X11R6 window system, CopyPaste works like a peer-to-peer communication.
+ * In the X11R6 window system, CopyPaste works like peer-to-peer communication.
* Copying is an operation on an object in an X server.
- * X11 calls those objects 'selections' which have names.
+ * X11 calls those objects as 'selections' which have names.
* Generally, two selection types are needed for copy and paste:
* The Primary selection and the Clipboard selection.
* Primary selection is for selecting text (that means highlighted text).
* Clipboard selection is for explicit copying behavior
* (such as ctrl+c, or 'copy' in a menu).
- * Thus, in applications most cases only use the clipboard selection.
+ * Thus, in applications, most cases only use the clipboard selection.
* As stated before, taking ownership of a selection doesn't move any actual data.
* Copying and Pasting is described as follows:
- * 1. Copy text in Program A : Program A takes ownership of the selection
- * 2. Paste text in Program B : Program B notes that Program A owns the selection
- * 3. Program B asks A for the text
- * 4. Program A responds and sends the text to program B
- * 5. Program B pastes the response
+ * 1. Copy text in Program A : Program A takes ownership of the selection.
+ * 2. Paste text in Program B : Program B notes that Program A owns the selection.
+ * 3. Program B asks A for the text.
+ * 4. Program A responds and sends the text to Program B.
+ * 5. Program B pastes the response.
* More information is on
* - http://www.jwz.org/doc/x-cut-and-paste.html
* - X11R6 Inter-Client Communication Conventions Manual, section 2
*
- * TODO: add for other window system.
+ * TODO: Add for other window system.
*
* @{
*/
/**
- * Defines the types of selection property names.
- * @see http://www.x.org/docs/X11/xlib.pdf
- * for more details.
+ * @brief Enumeration that defines the types of selection property names.
+ * @see http://www.x.org/docs/X11/xlib.pdf for more details.
*/
typedef enum
{
@@ -57,11 +57,11 @@ typedef enum
} Elm_Sel_Type;
/**
- * Defines the types of content.
+ * @brief Enumeration that defines the types of content.
*/
typedef enum
{
- /** For matching every possible atom */
+ /** For matching every possible item */
ELM_SEL_FORMAT_TARGETS = -1,
/** Content is from outside of Elementary */
ELM_SEL_FORMAT_NONE = 0x0,
@@ -78,7 +78,7 @@ typedef enum
} Elm_Sel_Format;
/**
- * Defines the kind of action associated with the drop data if for XDND
+ * @brief Enumeration that defines the kind of action associated with drop data, if for XDND.
* @since 1.8
*/
typedef enum
@@ -86,7 +86,7 @@ typedef enum
ELM_XDND_ACTION_UNKNOWN, /**< Action type is unknown */
ELM_XDND_ACTION_COPY, /**< Copy the data */
ELM_XDND_ACTION_MOVE, /**< Move the data */
- ELM_XDND_ACTION_PRIVATE, /**< Pricate action type */
+ ELM_XDND_ACTION_PRIVATE, /**< Private action type */
ELM_XDND_ACTION_ASK, /**< Ask the user what to do */
ELM_XDND_ACTION_LIST, /**< List the data */
ELM_XDND_ACTION_LINK, /**< Link the data */
@@ -94,7 +94,7 @@ typedef enum
} Elm_Xdnd_Action;
/**
- * Structure holding the info about selected data.
+ * @brief The structure type holding information about selected data.
*/
struct _Elm_Selection_Data
{
@@ -107,109 +107,119 @@ struct _Elm_Selection_Data
typedef struct _Elm_Selection_Data Elm_Selection_Data;
/**
- * Callback invoked in when the selected data is 'dropped' at its destination.
+ * @brief Called when the selected data is 'dropped' at its destination.
+ *
+ * @remarks FIXME: This should probably be a smart callback.
*
- * @param data Application specific data
- * @param obj The evas object where selected data is 'dropped'.
- * @param ev struct holding information about selected data
- * FIXME: this should probably be a smart callback
+ * @param[in] data The application specific data
+ * @param[in] obj The evas object where the selected data is 'dropped'
+ * @param[in] ev The struct holding information about the selected data
*/
typedef Eina_Bool (*Elm_Drop_Cb)(void *data, Evas_Object *obj, Elm_Selection_Data *ev);
/**
- * Callback invoked to find out what object is under (x,y) coords
+ * @brief Called to find out what object is under (x,y) coordinates.
*
- * @param obj The container object
- * @param x cord to check
- * @param y cord to check
- * @param xposret Position relative to item (left (-1), middle (0), right (1)
- * @param yposret Position relative to item (upper (-1), middle (0), bottom (1)
- * @return object under x,y cords or NULL if not found.
+ * @param[in] obj The container object
+ * @param[in] x The coordinate to check
+ * @param[in] y The coordinate to check
+ * @param[in] xposret The position relative to the item (left (-1), middle (0), right (1))
+ * @param[in] yposret The position relative to the item (upper (-1), middle (0), bottom (1))
+ * @return The object under x,y cordinates, otherwise @c NULL if not found
*/
typedef Elm_Object_Item *(*Elm_Xy_Item_Get_Cb)(Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *xposret, int *yposret);
/**
- * Callback invoked in when the selection ownership for a given selection is lost.
+ * @brief Called when the selection ownership for a given selection is lost.
*
- * @param data Application specific data
- * @param selection The selection that is lost
* @since 1.7
+ *
+ * @param[in] data The application specific data
+ * @param[in] selection The selection that is lost
*/
typedef void (*Elm_Selection_Loss_Cb)(void *data, Elm_Sel_Type selection);
/**
- * Callback called to create a drag icon object
+ * @brief Called to create a drag icon object.
*
- * @param data Application specific data
- * @param win The window to create the objects relative to
- * @param xoff A return coordinate for the X offset at which to place the drag icon object relative to the source drag object
- * @param yoff A return coordinate for the Y offset at which to place the drag icon object relative to the source drag object
- * @return An object to fill the drag window with or NULL if not needed
* @since 1.8
+ *
+ * @param[in] data The application specific data
+ * @param[in] win The window to create the relative objects
+ * @param[out] xoff The return coordinate for the X offset at which to place the drag icon object relative to the source drag object
+ * @param[out] yoff The return coordinate for the Y offset at which to place the drag icon object relative to the source drag object
+ * @return The object to fill the drag window with, otherwise @c NULL if not needed
*/
typedef Evas_Object *(*Elm_Drag_Icon_Create_Cb) (void *data, Evas_Object *win, Evas_Coord *xoff, Evas_Coord *yoff);
/**
- * Callback called when a drag is finished, enters, or leaves an object
- *
- * @param data Application specific data
- * @param obj The object where the drag started
+ * @brief Called when a drag finishes, enters, or leaves an object.
+ *
* @since 1.8
+ *
+ * @param[in] data The application specific data
+ * @param[in] obj The object where the drag started
*/
typedef void (*Elm_Drag_State) (void *data, Evas_Object *obj);
/**
- * Callback called when a drag is finished.
+ * @brief Called when a drag is finished.
*
- * @param data Application specific data
- * @param obj The object where the drag started
- * @param accepted TRUE if the droppped-data is accepted on drop
* @since 1.8
+ *
+ * @param[in] data The application specific data
+ * @param[in] obj The object where the drag started
+ * @param[in] accepted If @c true the dropped data is accepted on drop,
+ * otherwise @c false
*/
typedef void (*Elm_Drag_Done) (void *data, Evas_Object *obj, Eina_Bool accepted);
/**
- * Callback called when a drag is responded to with an accept or deny
+ * @brief Called when a drag is responded to with an accept or deny.
*
- * @param data Application specific data
- * @param obj The object where the drag started
- * @param doaccept A boolean as to if the target accepts the drag or not
* @since 1.8
+ *
+ * @param[in] data The application specific data
+ * @param[in] obj The object where the drag started
+ * @param[in] doaccept The boolean value that indicates whether the target accepts the drag
*/
typedef void (*Elm_Drag_Accept) (void *data, Evas_Object *obj, Eina_Bool doaccept);
/**
- * Callback called when a drag is over an object, and gives object-relative coordinates
- *
- * @param data Application specific data
- * @param obj The object where the drag started
- * @param x The X coordinate relative to the top-left of the object
- * @param y The Y coordinate relative to the top-left of the object
+ * @brief Called when a drag is over an object, and gives object-relative coordinates.
+ *
* @since 1.8
+ *
+ * @param[in] data The application specific data
+ * @param[in] obj The object where the drag started
+ * @param[in] x The X coordinate relative to the top-left corner of the object
+ * @param[in] y The Y coordinate relative to the top-left corner of the object
*/
typedef void (*Elm_Drag_Pos) (void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y, Elm_Xdnd_Action action);
/**
- * Callback called when a drag starts from an item container
+ * @brief Called when a drag starts from an item container.
*
- * @param data Application specific data
- * @param obj The object where the drag started
* @since 1.8
+ *
+ * @param[in] data The application specific data
+ * @param[in] obj The object where the drag started
*/
typedef void (*Elm_Drag_Start) (void *data, Evas_Object *obj);
/**
- * @brief Set copy data for a widget.
+ * @brief Sets the copy data for a widget.
*
- * Set copy data and take ownership of selection. Format is used for specifying the selection type,
- * and this is used during pasting.
+ * @details This sets the copy data and takes ownership of the selection. Format is used for specifying the selection type,
+ * and this is used during pasting.
*
- * @param selection Selection type for copying and pasting
- * @param obj The source widget pointer
- * @param format Selection format
- * @param buf The data selected
- * @param buflen The size of @p buf
- * @return If @c EINA_TRUE, setting data was successful.
+ * @param[in] selection The selection type for copying and pasting
+ * @param[in] obj The source widget pointer
+ * @param[in] format The selection format
+ * @param[in] buf The data selected
+ * @param[in] buflen The size of @a buf
+ * @return @c EINA_TRUE if setting data is successful,
+ * otherwise @c EINA_FALSE
*
* @ingroup CopyPaste
*
@@ -219,22 +229,22 @@ EAPI Eina_Bool elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection,
const void *buf, size_t buflen);
/**
- * @brief Get data from a widget that has a selection.
+ * @brief Gets data from a widget that has a selection.
*
- * Get the current selection data from a widget.
- * The widget input here will usually be elm_entry,
- * in which case @p datacb and @p udata can be NULL.
- * If a different widget is passed, @p datacb and @p udata are used for retrieving data.
- *
- * @see also elm_cnp_selection_set()
+ * @details This gets the current selection data from a widget.
+ * The widget input here is usually elm_entry,
+ * in which case @a datacb and @a udata can be @c NULL.
+ * If a different widget is passed, @a datacb and @a udata are used for retrieving data.
*
- * @param selection Selection type for copying and pasting
- * @param format Selection format
- * @param obj The source widget
- * @param datacb The user data callback if the target widget isn't elm_entry
- * @param udata The user data pointer for @p datacb
- * @return If @c EINA_TRUE, getting selection data was successful.
+ * @param[in] selection The selection type for copying and pasting
+ * @param[in] format The selection format
+ * @param[in] obj The source widget
+ * @param[in] datacb The user data callback if the target widget isn't elm_entry
+ * @param[in] udata The user data pointer for @a datacb
+ * @return @c EINA_TRUE if getting the selection data is successful,
+ * otherwise @c EINA_FALSE
*
+ * @see elm_cnp_selection_set()
* @ingroup CopyPaste
*/
EAPI Eina_Bool elm_cnp_selection_get(Evas_Object *obj, Elm_Sel_Type selection,
@@ -242,16 +252,16 @@ EAPI Eina_Bool elm_cnp_selection_get(Evas_Object *obj, Elm_Sel_Type selection,
Elm_Drop_Cb datacb, void *udata);
/**
- * @brief Clear the selection data of a widget.
+ * @brief Clears the selection data of a widget.
*
- * Clear all data from the selection which is owned by a widget.
+ * @details It clears all the data from the selection which is owned by a widget.
*
- * @see also elm_cnp_selection_set()
- *
- * @param obj The source widget
- * @param selection Selection type for copying and pasting
- * @return If @c EINA_TRUE, clearing data was successful.
+ * @param[in] obj The source widget
+ * @param[in] selection The selection type for copying and pasting
+ * @return @c EINA_TRUE if clearing data is successful,
+ * otherwise @c EINA_FALSE
*
+ * @see also elm_cnp_selection_set()
* @ingroup CopyPaste
*
*/
@@ -260,79 +270,81 @@ EAPI Eina_Bool elm_object_cnp_selection_clear(Evas_Object *obj,
/**
- * @brief Set a function to be called when a selection is lost
- *
- * The function @p func is set of be called when selection @p selection is lost
- * to another process or when elm_cnp_selection_set() is called. If @p func
- * is NULL then it is not called. @p data is passed as the data parameter to
- * the callback functions and selection is passed in as the selection that
- * has been lost.
+ * @brief Sets a function to be called when a selection is lost.
*
- * elm_cnp_selection_set() and elm_object_cnp_selection_clear() automatically
- * set this los callback to NULL when called. If you wish to take the selection
- * and then be notified of loss please do this (for example):
+ * @since 1.7
*
+ * @remarks The function @a func is set to be called when selection @a selection is lost
+ * to another process or when elm_cnp_selection_set() is called. If @a func
+ * is @c NULL then it is not called. @a data is passed as the data parameter to
+ * the callback functions and @a selection is passed in as the selection that
+ * has been lost.
+ *
+ * @remarks elm_cnp_selection_set() and elm_object_cnp_selection_clear() automatically
+ * set this callback to @c NULL when called. If you wish to take the selection
+ * and then be notified of loss please this (for example):
+ *
* @code
* elm_cnp_selection_set(obj, ELM_SEL_TYPE_PRIMARY, ELM_SEL_FORMAT_TEXT, "hello", strlen(hello));
* elm_cnp_selection_loss_callback_set(obj, ELM_SEL_TYPE_PRIMARY, loss_cb, NULL);
* @endcode
*
- * @see also elm_cnp_selection_set()
*
- * @param obj The object to indicate the window target/display system.
- * @param selection Selection to be notified of for loss
- * @param func The function to call
- * @param data The data pointer passed to the function.
+ * @param[in] obj The object to indicate the window target/display system
+ * @param[in] selection The selection to be notified of loss
+ * @param[in] func The function to call
+ * @param[in] data The data pointer passed to the function
*
+ * @see also elm_cnp_selection_set()
* @ingroup CopyPaste
- *
- * @since 1.7
*/
EAPI void elm_cnp_selection_loss_callback_set(Evas_Object *obj, Elm_Sel_Type selection, Elm_Selection_Loss_Cb func, const void *data);
/**
- * @brief Set the given object as a target for drops for drag-and-drop
+ * @brief Sets the given object as a target for drops from drag-and-drop.
*
- * @param obj The target object
- * @param format The formats supported for dropping
- * @param entercb The function to call when the object is entered with a drag
- * @param enterdata The application data to pass to enterdata
- * @param leavecb The function to call when the object is left with a drag
- * @param leavedata The application data to pass to leavedata
- * @param poscb The function to call when the object has a drag over it
- * @param posdata The application data to pass to posdata
- * @param dropcb The function to call when a drop has occurred
- * @param dropdata The application data to pass to dropcb
- * @return Returns @c EINA_TRUE, if successful, or @c EINA_FALSE if not.
+ * @since 1.8
*
- * @ingroup CopyPaste
+ * @param[in] obj The target object
+ * @param[in] format The formats supported for dropping
+ * @param[in] entercb The function to call when the object is entered with a drag
+ * @param[in] enterdata The application data to pass to enterdata
+ * @param[in] leavecb The function to call when the object is left with a drag
+ * @param[in] leavedata The application data to pass to leavedata
+ * @param[in] poscb The function to call when the object has a drag over it
+ * @param[in] posdata The application data to pass to posdata
+ * @param[in] dropcb The function to call when a drop has occurred
+ * @param[in] dropdata The application data to pass to dropcb
+ * @return @c EINA_TRUE if successful,
+ * otherwise @c EINA_FALSE if not
*
- * @since 1.8
+ * @ingroup CopyPaste
*/
-EAPI Eina_Bool elm_drop_target_add(Evas_Object *obj, Elm_Sel_Format format,
+EAPI Eina_Bool elm_drop_target_add(Evas_Object *obj, Elm_Sel_Format format,
Elm_Drag_State entercb, void *enterdata,
Elm_Drag_State leavecb, void *leavedata,
Elm_Drag_Pos poscb, void *posdata,
Elm_Drop_Cb dropcb, void *dropdata);
/**
- * @brief Deletes the drop target status of an object
+ * @brief Deletes the drop target status of an object.
*
- * @param obj The target object
- * @param format The formats supported for dropping
- * @param entercb The function to call when the object is entered with a drag
- * @param enterdata The application data to pass to enterdata
- * @param leavecb The function to call when the object is left with a drag
- * @param leavedata The application data to pass to leavedata
- * @param poscb The function to call when the object has a drag over it
- * @param posdata The application data to pass to posdata
- * @param dropcb The function to call when a drop has occurred
- * @param dropdata The application data to pass to dropcb
- * @return Returns @c EINA_TRUE, if successful, or @c EINA_FALSE if not.
+ * @since 1.8
*
- * @ingroup CopyPaste
+ * @param[in] obj The target object
+ * @param[in] format The formats supported for dropping
+ * @param[in] entercb The function to call when the object is entered with a drag
+ * @param[in] enterdata The application data to pass to @a enterdata
+ * @param[in] leavecb The function to call when the object is left with a drag
+ * @param[in] leavedata The application data to pass to @a leavedata
+ * @param[in] poscb The function to call when the object has a drag over it
+ * @param[in] posdata The application data to pass to @a posdata
+ * @param[in] dropcb The function to call when a drop has occurred
+ * @param[in] dropdata The application data to pass to @a dropcb
+ * @return @c EINA_TRUE if successful,
+ * otherwise @c EINA_FALSE if not
*
- * @since 1.8
+ * @ingroup CopyPaste
*/
EAPI Eina_Bool elm_drop_target_del(Evas_Object *obj, Elm_Sel_Format format,
Elm_Drag_State entercb, void *enterdata,
@@ -341,26 +353,27 @@ EAPI Eina_Bool elm_drop_target_del(Evas_Object *obj, Elm_Sel_Format format,
Elm_Drop_Cb dropcb, void *dropdata);
/**
- * @brief Begins a drag given a source object
+ * @brief Begins a drag given a source object is provided.
*
- * @param obj The source object
- * @param format The drag formats supported by the data
- * @param data The drag data itself (a string)
- * @param action The drag action to be done
- * @param createicon Function to call to create a drag object, or NULL if not wanted
- * @param createdata Application data passed to @p createicon
- * @param dragpos Function called with each position of the drag, x, y being screen coordinates if possible, and action being the current action.
- * @param dragdata Application data passed to @p dragpos
- * @param acceptcb Function called indicating if drop target accepts (or does not) the drop data while dragging
+ * @since 1.8
*
- * @param acceptdata Application data passed to @p acceptcb
- * @param dragdone Function to call when drag is done
- * @param donecbdata Application data to pass to @p dragdone
- * @return Returns @c EINA_TRUE, if successful, or @c EINA_FALSE if not.
+ * @param[in] obj The source object
+ * @param[in] format The drag formats supported by the data
+ * @param[in] data The drag data itself (a string)
+ * @param[in] action The drag action to be done
+ * @param[in] createicon The function to call to create a drag object, otherwise @c NULL if not wanted
+ * @param[in] createdata The application data passed to @a createicon
+ * @param[in] dragpos The function called with each position of the drag, x, y being screen coordinates if possible, and @a action being the current action
+ * @param[in] dragdata The application data passed to @a dragpos
+ * @param[in] acceptcb The function called indicating if the drop target accepts (or does not) the drop data while dragging
+ *
+ * @param[in] acceptdata The application data passed to @a acceptcb
+ * @param[in] dragdone The function to call when drag is done
+ * @param[in] donecbdata The application data to pass to @a dragdone
+ * @return @c EINA_TRUE if successful,
+ * otherwise @c EINA_FALSE if not
*
* @ingroup CopyPaste
- *
- * @since 1.8
*/
EAPI Eina_Bool elm_drag_start(Evas_Object *obj, Elm_Sel_Format format,
const char *data, Elm_Xdnd_Action action,
@@ -371,74 +384,77 @@ EAPI Eina_Bool elm_drag_start(Evas_Object *obj, Elm_Sel_Format format,
Elm_Drag_State dragdone, void *donecbdata);
/**
- * @brief Cancels the current drag operation
+ * @brief Cancels the current drag operation.
+ *
+ * @since 1.9
*
- * It can only be initiated from the source window.
+ * @remarks It can only be initiated from the source window.
*
- * @param obj The source of the current drag.
- * @return Returns @c EINA_TRUE, if successful, or @c EINA_FALSE if not.
+ * @param[in] obj The source of the current drag
+ * @return @c EINA_TRUE if successful,
+ * otherwise @c EINA_FALSE if not
*
* @ingroup CopyPaste
- *
- * @since 1.9
*/
EAPI Eina_Bool elm_drag_cancel(Evas_Object *obj);
/**
- * @brief Changes the current drag action
+ * @brief Changes the current drag action.
*
- * @param obj The source of a drag if a drag is underway
- * @param action The drag action to be done
- * @return Returns @c EINA_TRUE, if successful, or @c EINA_FALSE if not.
+ * @since 1.8
*
- * @ingroup CopyPaste
+ * @param[in] obj The source of a drag, if a drag is underway
+ * @param[in] action The drag action to be done
+ * @return @c EINA_TRUE if successful,
+ * otherwise @c EINA_FALSE if not
*
- * @since 1.8
+ * @ingroup CopyPaste
*/
EAPI Eina_Bool elm_drag_action_set(Evas_Object *obj, Elm_Xdnd_Action action);
/**
- * Callback called when a drag is over an object
+ * @brief Called when a drag is over an object.
*
- * @param data Application specific data
- * @param cont The container object where the drag started
- * @param it The object item in container where mouse-over
- * @param x The X coordinate relative to the top-left of the object
- * @param y The Y coordinate relative to the top-left of the object
- * @param xposret Position relative to item (left (-1), middle (0), right (1)
- * @param yposret Position relative to item (upper (-1), middle (0), bottom (1)
- * @param action The drag action to be done
* @since 1.8
+ *
+ * @param[in] data The application specific data
+ * @param[in] cont The container object where the drag started
+ * @param[in] it The object item in the container where the mouse-over happened
+ * @param[in] x The X coordinate relative to the top-left corner of the object
+ * @param[in] y The Y coordinate relative to the top-left corner of the object
+ * @param[in] xposret The position relative to the item (left (-1), middle (0), right (1))
+ * @param[in] yposret The position relative to the item (upper (-1), middle (0), bottom (1))
+ * @param[in] action The drag action to be done
*/
typedef void (*Elm_Drag_Item_Container_Pos) (void *data, Evas_Object *cont, Elm_Object_Item *it, Evas_Coord x, Evas_Coord y, int xposret, int yposret, Elm_Xdnd_Action action);
/**
- * Callback invoked in when the selected data is 'dropped' on container.
+ * @brief Called when the selected data is 'dropped' on the container.
*
- * @param data Application specific data
- * @param obj The evas object where selected data is 'dropped'.
- * @param it The item in container where drop-cords
- * @param ev struct holding information about selected data
- * @param xposret Position relative to item (left (-1), middle (0), right (1)
- * @param yposret Position relative to item (upper (-1), middle (0), bottom (1)
+ * @param[in] data The application specific data
+ * @param[in] obj The evas object where the selected data is 'dropped'
+ * @param[in] it The item in the container where the drop-cords are present
+ * @param[in] ev The struct holding information about the selected data
+ * @param[in] xposret The position relative to the item (left (-1), middle (0), right (1))
+ * @param[in] yposret The position relative to the item (upper (-1), middle (0), bottom (1))
*/
typedef Eina_Bool (*Elm_Drop_Item_Container_Cb)(void *data, Evas_Object *obj, Elm_Object_Item *it, Elm_Selection_Data *ev, int xposret, int yposret);
/**
- * Structure describing user information for the drag process.
+ * @brief The structure type describing user information for the drag process.
*
* @param format The drag formats supported by the data (output)
* @param data The drag data itself (a string) (output)
- * @param icons if value not NULL, play default anim (output)
+ * @param icons If the value is not @c NULL, play default anim (output)
* @param action The drag action to be done (output)
- * @param createicon Function to call to create a drag object, or NULL if not wanted (output)
- * @param createdata Application data passed to @p createicon (output)
- * @param dragpos Function called with each position of the drag, x, y being screen coordinates if possible, and action being the current action. (output)
- * @param dragdata Application data passed to @p dragpos (output)
- * @param acceptcb Function called indicating if drop target accepts (or does not) the drop data while dragging (output)
- * @param acceptdata Application data passed to @p acceptcb (output)
- * @param dragdone Function to call when drag is done (output)
- * @param donecbdata Application data to pass to @p dragdone (output)
+ * @param createicon The function to call to create a drag object, otherwise @c NULL if not wanted (output)
+ * @param createdata The application data passed to @a createicon (output)
+ * @param dragpos The function called with each position of the drag, x, y being screen coordinates if possible, and action being the current action (output)
+ * @param dragdata The application data passed to @a dragpos (output)
+ * @param acceptcb The function called indicating if the drop target accepts (or does not) the drop data while dragging (output)
+ * @param acceptdata The application data passed to @a acceptcb (output)
+ * @param dragdone The function to call when the drag is done (output)
+ * @param donecbdata The application data to pass to @a dragdone (output)
*/
typedef struct _Elm_Drag_User_Info Elm_Drag_User_Info;
@@ -461,11 +477,12 @@ struct _Elm_Drag_User_Info
};
/**
- * Callback invoked when starting to drag for a container.
+ * @brief Called when starting to drag for a container.
*
* @param obj The container object
- * @param it The Elm_Object_Item pointer where drag-start
- * @return Returns @c EINA_TRUE, if successful, or @c EINA_FALSE if not.
+ * @param it The Elm_Object_Item pointer where the drag starts
+ * @return @c EINA_TRUE if successful,
+ * otherwise @c EINA_FALSE if not
*/
typedef Eina_Bool (*Elm_Item_Container_Data_Get_Cb)(
Evas_Object *obj,
@@ -473,52 +490,55 @@ typedef Eina_Bool (*Elm_Item_Container_Data_Get_Cb)(
Elm_Drag_User_Info *info);
/**
- * @brief Set a item container (list, genlist, grid) as source of drag
+ * @brief Sets an item container (list, genlist, grid) as the source of the drag.
*
- * @param obj The container object.
- * @param tm_to_anim Time period to wait before start animation.
- * @param tm_to_drag Time period to wait before start dragging.
- * @param itemgetcb Callback to get Evas_Object pointer for item at (x,y)
- * @param data_get Callback to get drag info
- * @return Returns @c EINA_TRUE, if successful, or @c EINA_FALSE if not.
+ * @since 1.8
*
- * @ingroup CopyPaste
+ * @param[in] obj The container object
+ * @param[in] tm_to_anim The time period to wait before starting the animation
+ * @param[in] tm_to_drag The time period to wait before starting dragging
+ * @param[in] itemgetcb Callback to get the Evas_Object pointer for the item at (x,y)
+ * @param[in] data_get Callback to get drag information
+ * @return @c EINA_TRUE if successful,
+ * otherwise @c EINA_FALSE if not
*
- * @since 1.8
+ * @ingroup CopyPaste
*/
EAPI Eina_Bool elm_drag_item_container_add(Evas_Object *obj, double tm_to_anim, double tm_to_drag, Elm_Xy_Item_Get_Cb itemgetcb, Elm_Item_Container_Data_Get_Cb data_get);
/**
- * @brief Deletes a item container from drag-source list
+ * @brief Deletes a item container from the drag-source list.
*
- * @param obj The target object
- * @return Returns @c EINA_TRUE, if successful, or @c EINA_FALSE if not.
+ * @since 1.8
*
- * @ingroup CopyPaste
+ * @param[in] obj The target object
+ * @return @c EINA_TRUE if successful,
+ * otherwise @c EINA_FALSE if not
*
- * @since 1.8
+ * @ingroup CopyPaste
*/
EAPI Eina_Bool elm_drag_item_container_del(Evas_Object *obj);
/**
- * @brief Set a item container (list, genlist, grid) as target for drop.
+ * @brief Sets an item container (list, genlist, grid) as the target for the drop.
+ *
+ * @since 1.8
*
- * @param obj The container object.
+ * @param obj The container object
* @param format The formats supported for dropping
- * @param itemgetcb Callback to get Evas_Object pointer for item at (x,y)
+ * @param itemgetcb Callback to get the Evas_Object pointer for the item at (x,y)
* @param entercb The function to call when the object is entered with a drag
- * @param enterdata The application data to pass to enterdata
+ * @param enterdata The application data to pass to @a enterdata
* @param leavecb The function to call when the object is left with a drag
- * @param leavedata The application data to pass to leavedata
+ * @param leavedata The application data to pass to @a leavedata
* @param poscb The function to call when the object has a drag over it
- * @param posdata The application data to pass to posdata
+ * @param posdata The application data to pass to @a posdata
* @param dropcb The function to call when a drop has occurred
- * @param dropdata The application data to pass to dropcb
- * @return Returns @c EINA_TRUE, if successful, or @c EINA_FALSE if not.
+ * @param dropdata The application data to pass to @a dropcb
+ * @return @c EINA_TRUE if successful,
+ * otherwise @c EINA_FALSE if not
*
* @ingroup CopyPaste
- *
- * @since 1.8
*/
EAPI Eina_Bool elm_drop_item_container_add(Evas_Object *obj,
Elm_Sel_Format format,
@@ -529,17 +549,19 @@ EAPI Eina_Bool elm_drop_item_container_add(Evas_Object *obj,
Elm_Drop_Item_Container_Cb dropcb, void *dropdata);
/**
- * @brief Removes a container from list of drop targets.
+ * @brief Removes a container from the list of drop targets.
*
- * @param obj The container object
- * @return Returns EINA_TRUE, if successful, or @c EINA_FALSE if not.
+ * @since 1.8
*
- * @ingroup CopyPaste
+ * @param[in] obj The container object
+ * @return @c EINA_TRUE if successful,
+ * otherwise @c EINA_FALSE if not
*
- * @since 1.8
+ * @ingroup CopyPaste
*/
EAPI Eina_Bool elm_drop_item_container_del(Evas_Object *obj);
/**
* @}
*/
+#endif
diff --git a/src/lib/elm_colorselector.h b/src/lib/elm_colorselector.h
index b98f4146a..896651be0 100644
--- a/src/lib/elm_colorselector.h
+++ b/src/lib/elm_colorselector.h
@@ -1,48 +1,214 @@
/**
* @defgroup Colorselector Colorselector
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html colorselector_inheritance_tree.png
* @image latex colorselector_inheritance_tree.eps
*
- * @image html img/widget/colorselector/preview-00.png
- * @image latex img/widget/colorselector/preview-00.eps
+ * @brief A ColorSelector is a color selection widget.
*
- * A ColorSelector is a color selection widget. It allows application
- * to set a series of colors.It also allows to load/save colors
- * from/to config with a unique identifier, by default, the colors are
- * loaded/saved from/to config using "default" identifier. The colors
- * can be picked by user from the color set by clicking on individual
- * color item on the palette or by selecting it from selector.
+ * It allows an application to set a series of colors.It also allows to
+ * load/save colors from/to config with a unique identifier, by default,
+ * the colors are loaded/saved from/to config using a "default" identifier.
+ * The colors can be picked by the user from the color set by clicking on
+ * individual color items on the palette or by selecting it from the selector.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for check objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * - @c "changed" - When the color value changes on selector
- * event_info is NULL.
- * - @c "color,item,selected" - When user clicks on color item. The
- * event_info parameter of the callback will be the selected color
+ * @ref Layout :
+ * - @c "changed" - When the color value changes on the selector.
+ * @a event_info is @c NULL.
+ * - @c "color,item,selected" - When the user clicks on a color item. The
+ * @a event_info parameter of the callback is the selected color
* item.
- * - @c "color,item,longpressed" - When user long presses on color
- * item. The event info parameter of the callback contains selected
+ * - @c "color,item,longpressed" - When user long presses on a color
+ * item. The @a event_info parameter of the callback contains the selected
* color item.
- * - @c "focused" - When the colorselector has received focus. (since 1.8)
- * - @c "unfocused" - When the colorselector has lost focus. (since 1.8)
- * - @c "language,changed" - the program's language changed (since 1.9)
*
- * See @ref tutorial_colorselector.
* @{
*/
-#include "elm_colorselector_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_colorselector_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_colorselector_legacy.h"
-#endif
+typedef struct _Elm_Color_RGBA
+{
+ unsigned int r;
+ unsigned int g;
+ unsigned int b;
+ unsigned int a;
+ const char *color_name;
+} Elm_Color_RGBA;
+
+typedef struct _Elm_Custom_Palette
+{
+ const char *palette_name;
+ Eina_List *color_list;
+} Elm_Custom_Palette;
+
+/**
+ * @enum Elm_Colorselector_Mode
+ * @typedef Elm_Colorselector_Mode
+ *
+ * @brief Enumeration that defines the different modes supported by Colorselector.
+ *
+ * @see elm_colorselector_mode_set()
+ * @see elm_colorselector_mode_get()
+ */
+typedef enum
+{
+ ELM_COLORSELECTOR_PALETTE = 0, /**< Only the color palette is displayed */
+ ELM_COLORSELECTOR_COMPONENTS, /**< Only the color selector is displayed */
+ ELM_COLORSELECTOR_BOTH, /**< Both the Palette and the selector is displayed, default */
+ ELM_COLORSELECTOR_PICKER, /**< Only the color picker is displayed */
+ ELM_COLORSELECTOR_PLANE, /**< Only the color plane is displayed */
+ ELM_COLORSELECTOR_PALETTE_PLANE, /**< Both the palette and the plane is displayed */
+ ELM_COLORSELECTOR_ALL /**< All possible color selectors are displayed */
+} Elm_Colorselector_Mode;
+
+/**
+ * @brief Adds a new colorselector to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_colorselector_add(Evas_Object *parent);
+
+/**
+ * @brief Sets a color to the colorselector.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The colorselector object
+ * @param[in] r The r-value of color
+ * @param[in] g The g-value of color
+ * @param[in] b The b-value of color
+ * @param[in] a The a-value of color
+ */
+EAPI void elm_colorselector_color_set(Evas_Object *obj, int r, int g, int b, int a);
+
+/**
+ * @brief Gets the current color from the colorselector.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The colorselector object
+ * @param[out] r An integer pointer for the r-value of color
+ * @param[out] g An integer pointer for the g-value of color
+ * @param[out] b An integer pointer for the b-value of color
+ * @param[out] a An integer pointer for the a-value of color
+ */
+EAPI void elm_colorselector_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a);
+
+/**
+ * @brief Sets the Colorselector mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Colorselector supports three modes: palette only, selector only, and both.
+ *
+ * @param[in] obj The colorselector object
+ * @param[in] mode The Elm_Colorselector_Mode
+ */
+EAPI void elm_colorselector_mode_set(Evas_Object *obj, Elm_Colorselector_Mode mode);
+
+/**
+ * @brief Gets the Colorselector mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Colorselector object
+ * @return mode The current mode of the colorselector
+ */
+EAPI Elm_Colorselector_Mode elm_colorselector_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the Palette item's color.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The color palette item
+ * @param[out] r An integer pointer for the r-value of color
+ * @param[out] g An integer pointer for the g-value of color
+ * @param[out] b An integer pointer for the b-value of color
+ * @param[out] a An integer pointer for the a-value of color
+ */
+EAPI void elm_colorselector_palette_item_color_get(const Elm_Object_Item *it, int *r, int *g, int *b, int *a);
+
+/**
+ * @brief Sets the palette item's color.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The color palette item
+ * @param[in] r The r-value of color
+ * @param[in] g The g-value of color
+ * @param[in] b The b-value of color
+ * @param[in] a The a-value of color
+ */
+EAPI void elm_colorselector_palette_item_color_set(Elm_Object_Item *it, int r, int g, int b, int a);
+
+/**
+ * @brief Adds a new color item to the palette.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Colorselector object
+ * @param[in] r The r-value of color
+ * @param[in] g The g-value of color
+ * @param[in] b The b-value of color
+ * @param[in] a The a-value of color
+ * @return A new color palette Item
+ */
+EAPI Elm_Object_Item *elm_colorselector_palette_color_add(Evas_Object *obj, int r, int g, int b, int a);
+
+/**
+ * @brief Clears the palette items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Colorselector object
+ */
+EAPI void elm_colorselector_palette_clear(Evas_Object *obj);
+
+/**
+ * @brief Gets the list of palette items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Colorselector object
+ * @return The list of color items
+ */
+EAPI Eina_List *elm_colorselector_palette_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the current palette's name.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When the colorpalette name is set, colors are loaded from and saved to the config
+ * using the set name. If no name is set then colors are loaded from or
+ * saved to the "default" config.
+ *
+ * @param[in] obj The Colorselector object
+ * @param[in] palette_name The name of the palette
+ */
+EAPI void elm_colorselector_palette_name_set(Evas_Object *obj, const char *palette_name);
+
+/**
+ * @brief Gets the current palette's name.
+ *
+ * @since_tizen 2.3
+ *
+ * @details This returns the currently set palette name using which colors are
+ * saved/loaded into the config.
+ *
+ * @param[in] obj The Colorselector object
+ * @return The name of the palette
+ */
+EAPI const char *elm_colorselector_palette_name_get(const Evas_Object *obj);
+
/**
* @}
*/
diff --git a/src/lib/elm_config.h b/src/lib/elm_config.h
index ae16b4dc4..51920614a 100644
--- a/src/lib/elm_config.h
+++ b/src/lib/elm_config.h
@@ -1,11 +1,12 @@
/**
* @defgroup Config Elementary Config
- * @ingroup Elementary
+ * @ingroup elm_infra_group
+ * @brief Elementary configuration is formed by a set of options bounded to a
+ * given @ref Profile profile, like @ref Theme theme, @ref Fingers
+ * "finger size", etc.
*
- * Elementary configuration is formed by a set options bounded to a
- * given @ref Profile profile, like @ref Theme theme, @ref Fingers
- * "finger size", etc. These are functions with which one synchronizes
- * changes made to those values to the configuration storing files, de
+ * These are functions with which one can synchronize
+ * the changes made to those values into the configuration storing files, de
* facto. You most probably don't want to use the functions in this
* group unless you're writing an elementary configuration manager.
*
@@ -13,39 +14,39 @@
*/
/**
- * Save back Elementary's configuration, so that it will persist on
- * future sessions.
+ * @brief Saves back Elementary's configuration, so that it persists on
+ * future sessions.
*
- * @return @c EINA_TRUE, when successful. @c EINA_FALSE, otherwise.
- * @ingroup Config
+ * @details This function takes effect so do I/O immediately. Use
+ * it when you want to save all the configuration changes at once. The
+ * current configuration set gets saved onto the current profile
+ * configuration file.
*
- * This function will take effect -- thus, do I/O -- immediately. Use
- * it when you want to save all configuration changes at once. The
- * current configuration set will get saved onto the current profile
- * configuration file.
+ * @since_tizen 2.3
*
+ * @return @c EINA_TRUE if successful, otherwise @c EINA_FALSE
*/
EAPI Eina_Bool elm_config_save(void);
/**
- * Reload Elementary's configuration, bounded to current selected
- * profile.
+ * @brief Reloads Elementary's configuration, bounded to the current selected
+ * profile.
*
- * @return @c EINA_TRUE, when successful. @c EINA_FALSE, otherwise.
- * @ingroup Config
+ * @since_tizen 2.3
*
- * Useful when you want to force reloading of configuration values for
- * a profile. If one removes user custom configuration directories,
- * for example, it will force a reload with system values instead.
+ * @remarks It is useful when you want to force reloading of the configuration values for
+ * a profile. If one removes the user custom configuration directories,
+ * it forces a reload with system values instead.
*
+ * @return @c EINA_TRUE if successful, otherwise @c EINA_FALSE
*/
EAPI void elm_config_reload(void);
/**
- * Flush all config settings then apply those settings to all applications
- * using elementary on the current display.
+ * @brief Flushes all config settings and then applies those settings to all applications
+ * using elementary on the current display.
*
- * @ingroup Config
+ * @since_tizen 2.3
*/
EAPI void elm_config_all_flush(void);
@@ -55,565 +56,582 @@ EAPI void elm_config_all_flush(void);
/**
* @defgroup Profile Elementary Profile
- * @ingroup Elementary
+ * @ingroup elm_infra_group *
+ * @brief Profiles are pre-set options that affect the whole look-and-feel of
+ * Elementary-based applications.
*
- * Profiles are pre-set options that affect the whole look-and-feel of
- * Elementary-based applications. There are, for example, profiles
- * aimed at desktop computer applications and others aimed at mobile,
- * touchscreen-based ones. You most probably don't want to use the
- * functions in this group unless you're writing an elementary
+ * There are, for example, profiles aimed at desktop computer applications and
+ * others aimed at mobile, touchscreen-based ones. You most probably don't want
+ * to use the functions in this group unless you're writing an elementary
* configuration manager.
*
* @{
*/
/**
- * Get Elementary's profile in use.
+ * @brief Gets Elementary's profile in use.
*
- * This gets the global profile that is applied to all Elementary
- * applications.
+ * @details This gets the global profile that is applied to all Elementary
+ * applications.
*
- * @return The profile's name
- * @ingroup Profile
+ * @since_tizen 2.3
+ *
+ * @return The profile name
*/
EAPI const char *elm_config_profile_get(void);
/**
- * Get an Elementary's profile directory path in the filesystem. One
- * may want to fetch a system profile's dir or a user one (fetched
- * inside $HOME).
+ * @brief Gets an Elementary's profile directory path in the filesystem. One
+ * may want to fetch a system profile dir or a user one (fetched
+ * inside $HOME).
*
- * @param profile The profile's name
- * @param is_user Whether to lookup for a user profile (@c EINA_TRUE)
- * or a system one (@c EINA_FALSE)
- * @return The profile's directory path.
- * @ingroup Profile
+ * @since_tizen 2.3
*
- * @note You must free it with elm_config_profile_dir_free().
+ * @remarks You must free it using elm_config_profile_dir_free().
+ *
+ * @param[in] profile The profile name
+ * @param[in] is_user The boolean value that indicates whether to lookup for a user profile (@c EINA_TRUE)
+ * or a system one (@c EINA_FALSE)
+ * @return The profile's directory path
*/
EAPI const char *elm_config_profile_dir_get(const char *profile, Eina_Bool is_user);
/**
- * Free an Elementary's profile directory path, as returned by
- * elm_config_profile_dir_get().
+ * @brief Frees an Elementary's profile directory path, as returned by
+ * elm_config_profile_dir_get().
*
- * @param p_dir The profile's path
- * @ingroup Profile
+ * @since_tizen 2.3
+ *
+ * @param[in] p_dir The profile path
*
*/
EAPI void elm_config_profile_dir_free(const char *p_dir);
/**
- * Get Elementary's list of available profiles.
+ * @brief Gets an Elementary's list of available profiles.
+ *
+ * @since_tizen 2.3
*
- * @return The profiles list. List node data are the profile name
- * strings.
- * @ingroup Profile
+ * @remarks One must free this list, after usage, using the function
+ * elm_config_profile_list_free().
*
- * @note One must free this list, after usage, with the function
- * elm_config_profile_list_free().
+ * @return The profiles list \n
+ * List node data are the profile name strings.
*/
EAPI Eina_List *elm_config_profile_list_get(void);
/**
- * Free Elementary's list of available profiles.
+ * @brief Frees an Elementary's list of available profiles.
*
- * @param l The profiles list, as returned by elm_config_profile_list_get().
- * @ingroup Profile
+ * @since_tizen 2.3
*
+ * @param[in] l The profile list, as returned by elm_config_profile_list_get()
*/
EAPI void elm_config_profile_list_free(Eina_List *l);
/**
- * Set Elementary's profile.
+ * @brief Sets an Elementary's profile.
*
- * This sets the global profile that is applied to Elementary
- * applications. Just the process the call comes from will be
- * affected.
+ * @details This sets the global profile that is applied to Elementary
+ * applications. Only the process that the call comes from is
+ * affected.
*
- * @param profile The profile's name
- * @ingroup Profile
+ * @since_tizen 2.3
*
+ * @param[in] profile The profile name
*/
EAPI void elm_config_profile_set(const char *profile);
/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Checks whether the given Elementary's profile exists.
+ *
+ * @param[in] profile The profile name
+ * @return @c EINA_TRUE if the profile exists, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_config_profile_exists(const char *profile);
+
+/**
* @}
*/
/**
* @defgroup Scrolling Elementary Scrolling
- * @ingroup Elementary
- *
- * These are functions setting how scrollable views in Elementary
- * widgets should behave on user interaction.
+ * @ingroup elm_infra_group
+ * @brief These are functions that set how scrollable views in Elementary
+ * widgets should behave on user interaction.
*
* @{
*/
/**
- * Get whether scrollers should bounce when they reach their
- * viewport's edge during a scroll.
+ * @brief Gets whether scrollers should bounce when they reach their
+ * viewport's edge during a scroll.
+ *
+ * @since_tizen 2.3
*
- * @return the thumb scroll bouncing state
+ * @remarks This is the default behavior for touch screens, in general.
*
- * This is the default behavior for touch screens, in general.
- * @ingroup Scrolling
+ * @return The thumb scroll bouncing state
*/
EAPI Eina_Bool elm_config_scroll_bounce_enabled_get(void);
/**
- * Set whether scrollers should bounce when they reach their
- * viewport's edge during a scroll.
+ * @brief Sets whether scrollers should bounce when they reach their
+ * viewport's edge during a scroll.
+ *
+ * @since_tizen 2.3
*
- * @param enabled the thumb scroll bouncing state
+ * @param[in] enabled The thumb scroll bouncing state
*
* @see elm_config_scroll_bounce_enabled_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_bounce_enabled_set(Eina_Bool enabled);
/**
- * Get the amount of inertia a scroller will impose at bounce
- * animations.
+ * @brief Gets the amount of inertia a scroller imposes during bounce
+ * animations.
*
- * @return the thumb scroll bounce friction
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The thumb scroll bounce friction
*/
EAPI double elm_config_scroll_bounce_friction_get(void);
/**
- * Set the amount of inertia a scroller will impose at bounce
- * animations.
+ * @brief Sets the amount of inertia a scroller imposes during bounce
+ * animations.
*
- * @param friction the thumb scroll bounce friction
+ * @since_tizen 2.3
+ *
+ * @param[in] friction The thumb scroll bounce friction
*
* @see elm_config_scroll_bounce_friction_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_bounce_friction_set(double friction);
/**
- * Get the amount of inertia a <b>paged</b> scroller will impose at
- * page fitting animations.
+ * @brief Gets the amount of inertia a <b>paged</b> scroller imposes during
+ * page fitting animations.
*
- * @return the page scroll friction
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The page scroll friction
*/
EAPI double elm_config_scroll_page_scroll_friction_get(void);
/**
- * Set the amount of inertia a <b>paged</b> scroller will impose at
- * page fitting animations.
+ * @brief Sets the amount of inertia a <b>paged</b> scroller imposes during
+ * page fitting animations.
+ *
+ * @since_tizen 2.3
*
- * @param friction the page scroll friction
+ * @param[in] friction The page scroll friction
*
* @see elm_config_scroll_page_scroll_friction_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_page_scroll_friction_set(double friction);
/**
- * Get the amount of inertia a scroller will impose at region bring
- * animations.
+ * @brief Gets the amount of inertia a scroller imposes during region bring
+ * animations.
*
- * @return the bring in scroll friction
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The bring in scroll friction
*/
EAPI double elm_config_scroll_bring_in_scroll_friction_get(void);
/**
- * Set the amount of inertia a scroller will impose at region bring
- * animations.
+ * @brief Sets the amount of inertia a scroller imposes during region bring
+ * animations.
*
- * @param friction the bring in scroll friction
+ * @since_tizen 2.3
+ *
+ * @param[in] friction The bring in scroll friction
*
* @see elm_config_scroll_bring_in_scroll_friction_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_bring_in_scroll_friction_set(double friction);
/**
- * Get the amount of inertia scrollers will impose at animations
- * triggered by Elementary widgets' zooming API.
+ * @brief Gets the amount of inertia scrollers impose during animations
+ * triggered by Elementary widgets' zooming API.
*
- * @return the zoom friction
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The zoom friction
*/
EAPI double elm_config_scroll_zoom_friction_get(void);
/**
- * Set the amount of inertia scrollers will impose at animations
- * triggered by Elementary widgets' zooming API.
+ * @brief Sets the amount of inertia scrollers impose during animations
+ * triggered by Elementary widgets' zooming API.
+ *
+ * @since_tizen 2.3
*
- * @param friction the zoom friction
+ * @param[in] friction The zoom friction
*
* @see elm_config_scroll_zoom_friction_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_zoom_friction_set(double friction);
/**
- * Get whether scrollers should be draggable from any point in their
- * views.
+ * @brief Gets whether scrollers should be draggable from any point in their
+ * views.
*
- * @return the thumb scroll state
+ * @since_tizen 2.3
*
- * @note This is the default behavior for touch screens, in general.
- * @note All other functions namespaced with "thumbscroll" will only
- * have effect if this mode is enabled.
+ * @remarks This is the default behavior for touch screens, in general.
+ * @remarks All other functions namespaced with "thumbscroll" are only
+ * going to have effect if this mode is enabled.
*
- * @ingroup Scrolling
+ * @return The thumb scroll state
*/
EAPI Eina_Bool elm_config_scroll_thumbscroll_enabled_get(void);
/**
- * Set whether scrollers should be draggable from any point in their
- * views.
+ * @brief Sets whether scrollers should be draggable from any point in their
+ * views.
*
- * @param enabled the thumb scroll state
+ * @since_tizen 2.3
+ *
+ * @param[in] enabled The thumb scroll state
*
* @see elm_config_scroll_thumbscroll_enabled_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_enabled_set(Eina_Bool enabled);
/**
- * Get the number of pixels one should travel while dragging a
- * scroller's view to actually trigger scrolling.
+ * @brief Gets the number of pixels one should travel while dragging a
+ * scroller's view to actually trigger scrolling.
+ *
+ * @since_tizen 2.3
*
- * @return the thumb scroll threshold
+ * @remarks One would use higher values for touch screens, in general, because
+ * of their inherent imprecision.
*
- * One would use higher values for touch screens, in general, because
- * of their inherent imprecision.
- * @ingroup Scrolling
+ * @return The thumb scroll threshold
*/
EAPI unsigned int elm_config_scroll_thumbscroll_threshold_get(void);
/**
- * Set the number of pixels one should travel while dragging a
- * scroller's view to actually trigger scrolling.
+ * @brief Sets the number of pixels one should travel while dragging a
+ * scroller's view to actually trigger scrolling.
+ *
+ * @since_tizen 2.3
*
- * @param threshold the thumb scroll threshold
+ * @param[in] threshold The thumb scroll threshold
*
* @see elm_config_thumbscroll_threshold_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_threshold_set(unsigned int threshold);
/**
- * Get the number of pixels the range which can be scrolled,
- * while the scroller is holded.
+ * @brief Gets the number of pixels in the range that can be scrolled,
+ * while the scroller is held.
*
- * @return the thumb scroll hold threshold
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The thumb scroll hold threshold
*/
EAPI unsigned int elm_config_scroll_thumbscroll_hold_threshold_get(void);
/**
- * Set the number of pixels the range which can be scrolled,
- * while the scroller is holded.
+ * @brief Sets the number of pixels in the range that can be scrolled,
+ * while the scroller is held.
*
- * @param threshold the thumb scroll hold threshold
+ * @since_tizen 2.3
+ *
+ * @param[in] threshold The thumb scroll hold threshold
*
* @see elm_config_thumbscroll_hold_threshold_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_hold_threshold_set(unsigned int threshold);
/**
- * Get the minimum speed of mouse cursor movement which will trigger
- * list self scrolling animation after a mouse up event
- * (pixels/second).
+ * @brief Gets the minimum speed of the mouse cursor movement that triggers
+ * the list self scrolling animation after a mouse up event
+ * (pixels/second).
*
- * @return the thumb scroll momentum threshold
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The thumb scroll momentum threshold
*/
EAPI double elm_config_scroll_thumbscroll_momentum_threshold_get(void);
/**
- * Set the minimum speed of mouse cursor movement which will trigger
- * list self scrolling animation after a mouse up event
- * (pixels/second).
+ * @brief Sets the minimum speed of the mouse cursor movement that triggers
+ * the list self scrolling animation after a mouse up event
+ * (pixels/second).
+ *
+ * @since_tizen 2.3
*
- * @param threshold the thumb scroll momentum threshold
+ * @param[in] threshold The thumb scroll momentum threshold
*
* @see elm_config_thumbscroll_momentum_threshold_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_momentum_threshold_set(double threshold);
/**
- * Get the number of pixels the maximum distance which can be flicked.
- * If it is flicked more than this,
- * the flick distance is same with maximum distance.
+ * @brief Gets the number of pixels by which the maximum distance can be flicked.
+ * If it is flicked more than this,
+ * the flick distance is same as the maximum distance.
*
- * @return the thumb scroll maximum flick distance
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The maximum thumb scroll flick distance
*/
EAPI unsigned int elm_config_scroll_thumbscroll_flick_distance_tolerance_get(void);
/**
- * Set the number of pixels the maximum distance which can be flicked.
- * If it is flicked more than this,
- * the flick distance is same with maximum distance.
+ * @brief Sets the number of pixels by which the maximum distance can be flicked.
+ * If it is flicked more than this,
+ * the flick distance is same as the maximum distance.
*
- * @param distance the thumb scroll maximum flick distance
+ * @since_tizen 2.3
+ *
+ * @param[in] distance The maximum thumb scroll flick distance
*
* @see elm_config_thumbscroll_flick_distance_tolerance_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_flick_distance_tolerance_set(unsigned int distance);
/**
- * Get the amount of inertia a scroller will impose at self scrolling
- * animations.
+ * @brief Gets the amount of inertia a scroller imposes during self scrolling
+ * animations.
*
- * @return the thumb scroll friction
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The thumb scroll friction
*/
EAPI double elm_config_scroll_thumbscroll_friction_get(void);
/**
- * Set the amount of inertia a scroller will impose at self scrolling
- * animations.
+ * @brief Sets the amount of inertia a scroller imposes during self scrolling
+ * animations.
+ *
+ * @since_tizen 2.3
*
- * @param friction the thumb scroll friction
+ * @param[in] friction The thumb scroll friction
*
* @see elm_config_thumbscroll_friction_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_friction_set(double friction);
/**
- * Get the min amount of inertia a scroller will impose at self scrolling
- * animations.
+ * @brief Gets the minimum amount of inertia a scroller imposes durin self scrolling
+ * animations.
*
- * @return the thumb scroll min friction
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The minimum thumb scroll friction
*/
EAPI double elm_config_scroll_thumbscroll_min_friction_get(void);
/**
- * Set the min amount of inertia a scroller will impose at self scrolling
- * animations.
+ * @brief Sets the minimum amount of inertia a scroller imposes during self scrolling
+ * animations.
*
- * @param friction the thumb scroll min friction
+ * @since_tizen 2.3
+ *
+ * @param[in] friction The minimum thumb scroll friction
*
* @see elm_config_thumbscroll_min_friction_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_min_friction_set(double friction);
/**
- * Get the standard velocity of the scroller. The scroll animation time is
- * same with thumbscroll friction, if the velocity is same with standard
- * velocity.
+ * @brief Gets the standard velocity of the scroller. The scroll animation time is
+ * same as the thumbscroll friction, if the velocity is same as the standard
+ * velocity.
*
- * @return the thumb scroll friction
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The thumb scroll friction
*/
EAPI double elm_config_scroll_thumbscroll_friction_standard_get(void);
/**
- * Set the standard velocity of the scroller. The scroll animation time is
- * same with thumbscroll friction, if the velocity is same with standard
- * velocity.
+ * @brief Sets the standard velocity of the scroller. The scroll animation time is
+ * same as the thumbscroll friction, if the velocity is same as the standard
+ * velocity.
+ *
+ * @since_tizen 2.3
*
- * @param standard the thumb scroll friction standard
+ * @param[in] standard The standard thumb scroll friction
*
* @see elm_config_thumbscroll_friction_standard_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_friction_standard_set(double standard);
/**
- * Get the amount of lag between your actual mouse cursor dragging
- * movement and a scroller's view movement itself, while pushing it
- * into bounce state manually.
+ * @brief Gets the amount of lag between your actual mouse cursor dragging
+ * movement and a scroller's view movement itself, while pushing it
+ * into the bounce state manually.
*
- * @return the thumb scroll border friction
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The thumb scroll border friction
*/
EAPI double elm_config_scroll_thumbscroll_border_friction_get(void);
/**
- * Set the amount of lag between your actual mouse cursor dragging
- * movement and a scroller's view movement itself, while pushing it
- * into bounce state manually.
+ * @brief Sets the amount of lag between your actual mouse cursor dragging
+ * movement and a scroller's view movement itself, while pushing it
+ * into the bounce state manually.
*
- * @param friction the thumb scroll border friction. @c 0.0 for
- * perfect synchrony between two movements, @c 1.0 for maximum
- * lag.
+ * @since_tizen 2.3
*
- * @see elm_config_thumbscroll_border_friction_get()
- * @note parameter value will get bound to 0.0 - 1.0 interval, always
+ * @remarks The parameter value gets bound to the 0.0 - 1.0 interval at all times.
*
- * @ingroup Scrolling
+ * @param[in] friction The thumb scroll border friction \n
+ * @c 0.0 for perfect synchrony between two movements,
+ * @c 1.0 for maximum lag.
+ *
+ * @see elm_config_thumbscroll_border_friction_get()
*/
EAPI void elm_config_scroll_thumbscroll_border_friction_set(double friction);
/**
- * Get the sensitivity amount which is be multiplied by the length of
- * mouse dragging.
+ * @brief Gets the amount of sensitivity that is to be multiplied by the length of
+ * mouse dragging.
*
- * @return the thumb scroll sensitivity friction
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The thumb scroll sensitivity friction
*/
EAPI double elm_config_scroll_thumbscroll_sensitivity_friction_get(void);
/**
- * Set the sensitivity amount which is be multiplied by the length of
- * mouse dragging.
+ * @brief Sets the amount of sensitivity that is be multiplied by the length of
+ * mouse dragging.
*
- * @param friction the thumb scroll sensitivity friction. @c 0.1 for
- * minimum sensitivity, @c 1.0 for maximum sensitivity. 0.25
- * is proper.
+ * @since_tizen 2.3
*
- * @see elm_config_thumbscroll_sensitivity_friction_get()
- * @note parameter value will get bound to 0.1 - 1.0 interval, always
+ * @remarks The parameter value gets bound to the 0.1 - 1.0 interval at all times
+ *
+ * @param[in] friction The thumb scroll sensitivity friction \n
+ * @c 0.1 for minimum sensitivity,
+ * @c 1.0 for maximum sensitivity, @c 0.25 is proper.
*
- * @ingroup Scrolling
+ * @see elm_config_thumbscroll_sensitivity_friction_get()
*/
EAPI void elm_config_scroll_thumbscroll_sensitivity_friction_set(double friction);
/**
- * Get the minimum speed of mouse cursor movement which will accelerate
- * scrolling velocity after a mouse up event
- * (pixels/second).
+ * @brief Gets the minimum speed of the mouse cursor movement that accelerates
+ * scrolling velocity after a mouse up event
+ * (pixels/second).
*
- * @return the thumb scroll acceleration threshold
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The thumb scroll acceleration threshold
*/
EAPI double elm_config_scroll_thumbscroll_acceleration_threshold_get(void);
/**
- * Set the minimum speed of mouse cursor movement which will accelerate
- * scrolling velocity after a mouse up event
- * (pixels/second).
+ * @brief Sets the minimum speed of the mouse cursor movement that accelerates
+ * scrolling velocity after a mouse up event
+ * (pixels/second).
+ *
+ * @since_tizen 2.3
*
- * @param threshold the thumb scroll acceleration threshold
+ * @param[in] threshold The thumb scroll acceleration threshold
*
* @see elm_config_thumbscroll_acceleration_threshold_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_acceleration_threshold_set(double threshold);
/**
- * Get the time limit for accelerating velocity.
+ * @brief Gets the time limit for accelerating velocity.
*
- * @return the thumb scroll acceleration time limit
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The thumb scroll acceleration time limit
*/
EAPI double elm_config_scroll_thumbscroll_acceleration_time_limit_get(void);
/**
- * Set the time limit for accelerating velocity.
+ * @brief Sets the time limit for accelerating velocity.
+ *
+ * @since_tizen 2.3
*
- * @param time_limit the thumb scroll acceleration time limit
+ * @param[in] time_limit The thumb scroll acceleration time limit
*
* @see elm_config_thumbscroll_acceleration_time_limit_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_acceleration_time_limit_set(double time_limit);
/**
- * Get the weight for the acceleration.
+ * @brief Gets the weight for acceleration.
*
- * @return the thumb scroll acceleration weight
+ * @since_tizen 2.3
*
- * @ingroup Scrolling
+ * @return The thumb scroll acceleration weight
*/
EAPI double elm_config_scroll_thumbscroll_acceleration_weight_get(void);
/**
- * Set the weight for the acceleration.
+ * @brief Sets the weight for acceleration.
*
- * @param weight the thumb scroll acceleration weight
+ * @since_tizen 2.3
+ *
+ * @param[in] weight The thumb scroll acceleration weight
*
* @see elm_config_thumbscroll_acceleration_weight_get()
- * @ingroup Scrolling
*/
EAPI void elm_config_scroll_thumbscroll_acceleration_weight_set(double weight);
/**
- * Focus Autoscroll Mode
- *
- * @since 1.10
- * @ingroup Focus
+ * @}
*/
-typedef enum
-{
- ELM_FOCUS_AUTOSCROLL_MODE_SHOW, /**< directly show the focused region or item automatically */
- ELM_FOCUS_AUTOSCROLL_MODE_NONE, /**< do not show the focused region or item automatically */
- ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN /**< bring_in the focused region or item automatically which might invole the scrolling */
-} Elm_Focus_Autoscroll_Mode;
/**
- * Get focus auto scroll mode.
+ * @defgroup longpress_group Longpress
+ * @ingroup elm_infra_group
*
- * When a region or an item is focused and it resides inside any scroller,
- * elementary will automatically scroll the focused area to the visible
- * viewport.
+ * @brief Configuration for longpress events.
*
- * @see elm_config_focus_autoscroll_mode_set()
- * @ingroup Focus
- * @since 1.10
+ * @{
*/
-EAPI Elm_Focus_Autoscroll_Mode elm_config_focus_autoscroll_mode_get(void);
/**
- * Set focus auto scroll mode.
+ * @brief Gets the duration for the occurrence of a long press event.
*
- * @param mode focus auto scroll mode. This can be one of the
- * Elm_Focus_Autoscroll_Mode enum values.
+ * @since_tizen 2.3
*
- * When a region or an item is focused and it resides inside any scroller,
- * elementary will automatically scroll the focused area to the visible
- * viewport.
- * Focus auto scroll mode is set to #ELM_FOCUS_AUTOSCROLL_MODE_SHOW by
- * default historically.
+ * @return The timeout for a long press event
+ */
+EAPI double elm_config_longpress_timeout_get(void);
+
+/**
+ * @brief Sets the duration for the occurrence of a long press event.
*
- * @see elm_config_focus_autoscroll_mode_get()
- * @ingroup Focus
- * @since 1.10
+ * @since_tizen 2.3
+ *
+ * @param[in] longpress_timeout The timeout for a long press event
*/
-EAPI void elm_config_focus_autoscroll_mode_set(Elm_Focus_Autoscroll_Mode mode);
+EAPI void elm_config_longpress_timeout_set(double longpress_timeout);
/**
* @}
*/
/**
- * Get the duration for occurring long press event.
+ * @defgroup softcursor_group SotfCursor
+ * @ingroup elm_infra_group
*
- * @return Timeout for long press event
- * @ingroup Longpress
+ * @brief Configuration for softcursor.
+ *
+ * @{
*/
-EAPI double elm_config_longpress_timeout_get(void);
/**
- * Set the duration for occurring long press event.
- *
- * @param lonpress_timeout Timeout for long press event
- * @ingroup Longpress
+ * @brief Enumeration of Elm Softcursor Mode
*/
-EAPI void elm_config_longpress_timeout_set(double longpress_timeout);
-
typedef enum _Elm_Softcursor_Mode
{
ELM_SOFTCURSOR_MODE_AUTO, /**< Auto-detect if a software cursor should be used (default) */
@@ -622,147 +640,197 @@ typedef enum _Elm_Softcursor_Mode
} Elm_Softcursor_Mode; /**< @since 1.7 */
/**
- * Set the mode used for software provided mouse cursors inline in the window
- * canvas.
+ * @brief Sets the mode used for software provided mouse cursors inline with the window
+ * canvas.
*
- * A software rendered cursor can be provided for rendering inline inside the
- * canvas windows in the event the native display system does not provide one
- * or the native one is not wanted.
+ * @since 1.7
*
- * @param lonpress_timeout Timeout for long press event
- * @ingroup Softcursor
+ * @since_tizen 2.3
+ *
+ * @remarks A software rendered cursor can be provided for rendering inline inside the
+ * canvas window in the event that the native display system does not provide one
+ * or the native one is not needed.
+ *
+ * @param[in] mode The mode used for software cursor
*
* @see elm_config_softcursor_mode_get()
- * @since 1.7
*/
EAPI void elm_config_softcursor_mode_set(Elm_Softcursor_Mode mode);
/**
- * Get the software cursor mode
+ * @brief Gets the software cursor mode.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
*
* @return The mode used for software cursors
- * @ingroup Softcursor
*
* @see elm_config_softcursor_mode_set()
- * @since 1.7
*/
EAPI Elm_Softcursor_Mode elm_config_softcursor_mode_get(void);
/**
- * Get the duration after which tooltip will be shown.
+ * @}
+ */
+
+/**
+ * @ingroup Tooltips
+ * @{
+ */
+
+/**
+ * @brief Gets the duration after which a tooltip is shown.
+ *
+ * @since_tizen 2.3
*
- * @return Duration after which tooltip will be shown.
+ * @return The duration after which a tooltip is shown
*/
EAPI double elm_config_tooltip_delay_get(void);
/**
- * Set the duration after which tooltip will be shown.
+ * @brief Sets the duration after which a tooltip is shown.
+ *
+ * @since_tizen 2.3
*
- * @return @c EINA_TRUE if value is set.
+ * @param[in] delay The delay duration
+ * @return @c EINA_TRUE if the value is set, otherwise @c EINA_FALSE
*/
EAPI void elm_config_tooltip_delay_set(double delay);
/**
- * Get the configured cursor engine only usage
+ * @}
+ */
+
+/**
+ * @ingroup Cursors
+ * @{
+ */
+
+/**
+ * @brief Gets only the usage of the configured cursor engine.
*
- * This gets the globally configured exclusive usage of engine cursors.
+ * @details This gets the globally configured exclusive usage of the engine cursors.
*
- * @return 1 if only engine cursors should be used
- * @ingroup Cursors
+ * @since_tizen 2.3
+ *
+ * @return @c 1 if only engine cursors should be used,
+ * otherwise @c 0
*/
EAPI Eina_Bool elm_config_cursor_engine_only_get(void);
/**
- * Set the configured cursor engine only usage
+ * @brief Sets only the usage of the configured cursor engine.
*
- * This sets the globally configured exclusive usage of engine cursors.
- * It won't affect cursors set before changing this value.
+ * @details This sets the globally configured exclusive usage of the engine cursors.
+ * It won't affect the cursors set until this value is changed.
*
- * @param engine_only If 1 only engine cursors will be enabled, if 0 will
- * look for them on theme before.
- * @ingroup Cursors
+ * @since_tizen 2.3
+ *
+ * @param[in] engine_only If @c 1 only engine cursors are enabled,
+ * otherwise @c 0 if they are looked for on the theme
*/
EAPI void elm_config_cursor_engine_only_set(Eina_Bool engine_only);
/**
- * Get the global scaling factor
+ * @}
+ */
+
+/**
+ * @ingroup Scaling
+ * @{
+ */
+
+/**
+ * @brief Gets the global scaling factor.
+ *
+ * @details This gets the globally configured scaling factor that is applied to all
+ * objects.
*
- * This gets the globally configured scaling factor that is applied to all
- * objects.
+ * @since_tizen 2.3
*
* @return The scaling factor
- * @ingroup Scaling
*/
EAPI double elm_config_scale_get(void);
/**
- * Set the global scaling factor
+ * @brief Sets the global scaling factor.
*
- * This sets the globally configured scaling factor that is applied to all
- * objects.
+ * @details This sets the globally configured scaling factor that is applied to all
+ * objects.
*
- * @param scale The scaling factor to set
- * @ingroup Scaling
+ * @since_tizen 2.3
+ *
+ * @param[in] scale The scaling factor to set
*/
EAPI void elm_config_scale_set(double scale);
/**
+ * @}
+ */
+
+/**
* @defgroup Password_last_show Password show last
- * @ingroup Elementary
+ * @ingroup elm_infra_group
+ *
+ * @brief Showing the last feature of the password mode enables users to view
+ * the last input entered for a few seconds before it is masked.
*
- * Show last feature of password mode enables user to view
- * the last input entered for few seconds before masking it.
- * These functions allow to set this feature in password mode
- * of entry widget and also allow to manipulate the duration
+ * These functions allow to set this feature in the password mode
+ * of the entry widget and also allow to manipulate the duration
* for which the input has to be visible.
*
* @{
*/
/**
- * Get the "show last" setting of password mode.
+ * @brief Gets the "show last" setting of the password mode.
*
- * This gets the "show last" setting of password mode which might be
- * enabled or disabled.
+ * @details This gets the "show last" setting of the password mode which might be
+ * enabled or disabled.
*
- * @return @c EINA_TRUE, if the "show last" setting is enabled,
- * @c EINA_FALSE if it's disabled.
+ * @since_tizen 2.3
*
- * @ingroup Password_last_show
+ * @return @c EINA_TRUE if the "show last" setting is enabled,
+ * otherwise @c EINA_FALSE if it's disabled
*/
EAPI Eina_Bool elm_config_password_show_last_get(void);
/**
- * Set show last setting in password mode.
+ * @brief Sets the show last setting of the password mode.
*
- * This enables or disables show last setting of password mode.
+ * @details This enables or disables the show last setting of the password mode.
*
- * @param password_show_last If @c EINA_TRUE, enables "show last" in password mode.
+ * @since_tizen 2.3
+ *
+ * @param[in] password_show_last If @c EINA_TRUE it enables "show last" in the password mode,
+ * otherwise @c EINA_FALSE
* @see elm_config_password_show_last_timeout_set()
- * @ingroup Password_last_show
*/
EAPI void elm_config_password_show_last_set(Eina_Bool password_show_last);
/**
- * Get the timeout value in "show last" password mode.
+ * @brief Gets the timeout value of the "show last" password mode.
+ *
+ * @details This gets the timeout value for which the last input entered in the password
+ * mode is visible.
*
- * This gets the time out value for which the last input entered in password
- * mode will be visible.
+ * @since_tizen 2.3
*
- * @return The timeout value of "show last" password mode.
- * @ingroup Password_last_show
+ * @return The timeout value of the "show last" password mode
*/
EAPI double elm_config_password_show_last_timeout_get(void);
/**
- * Set's the timeout value in "show last" password mode.
+ * @brief Sets the timeout value of the "show last" password mode.
+ *
+ * @details This sets the timeout value for which the last input entered in the password
+ * mode is visible.
*
- * This sets the time out value for which the last input entered in password
- * mode will be visible.
+ * @since_tizen 2.3
*
- * @param password_show_last_timeout The timeout value.
+ * @param[in] password_show_last_timeout The timeout value
* @see elm_config_password_show_last_set()
- * @ingroup Password_last_show
*/
EAPI void elm_config_password_show_last_timeout_set(double password_show_last_timeout);
@@ -772,10 +840,10 @@ EAPI void elm_config_password_show_last_timeout_set(double password_show_la
/**
* @defgroup Engine Elementary Engine
- * @ingroup Elementary
+ * @ingroup elm_infra_group
*
- * These are functions setting and querying which rendering engine
- * Elementary will use for drawing its windows' pixels.
+ * @brief These are functions that set and query the rendering engine that
+ * Elementary uses for drawing its windows' pixels.
*
* The following are the available engines:
* @li "fb"
@@ -783,58 +851,69 @@ EAPI void elm_config_password_show_last_timeout_set(double password_show_la
* @li "ews"
* @li NULL - no engine config
*
- * @deprecated Please use elm_config_accel_preference_override_set() instead
+ * @note Please use @ref elm_config_accel_preference_override_set() instead
*
* @{
*/
/**
- * @brief Get Elementary's rendering engine in use.
+ * @brief Gets Elementary's rendering engine in use.
+ *
+ * @details This gets the global rendering engine that is applied to all Elementary
+ * applications.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks There's no need to free the returned string, here.
*
- * @return The rendering engine's name
- * @note there's no need to free the returned string, here.
*
- * This gets the global rendering engine that is applied to all Elementary
- * applications.
+ * @return The rendering engine name
*
* @see elm_config_engine_set()
*/
EAPI const char *elm_config_engine_get(void);
/**
- * @brief Set Elementary's rendering engine for use.
+ * @brief Sets Elementary's rendering engine for use.
*
- * @param engine The rendering engine's name
+ * @since_tizen 2.3
*
- * Note that it will take effect only to Elementary windows created after
- * this is called.
+ * @remarks Note that it takes effect only on Elementary windows created after
+ * this is called.
+ *
+ * @param[in] engine The rendering engine name
*
* @see elm_win_add()
*/
EAPI void elm_config_engine_set(const char *engine);
/**
- * @brief Get Elementary's preferred engine to use.
+ * @brief Gets Elementary's preferred engine to use.
*
- * @return The rendering engine's name
- * @note there's no need to free the returned string, here.
+ * @details This gets the global rendering engine that is applied to all Elementary
+ * applications and is PREFERRED by the application. This can (and will)
+ * override the engine that is configured for all applications.
*
- * This gets the global rendering engine that is applied to all Elementary
- * applications and is PREFERRED by the application. This can (and will)
- * override the engine configured for all applications which.
+ * @since_tizen 2.3
+ *
+ * @remarks There's no need to free the returned string, here.
+ *
+ * @return The rendering engine name
*
* @see elm_config_preferred_engine_set()
*/
EAPI const char *elm_config_preferred_engine_get(void);
/**
- * @brief Set Elementary's preferred rendering engine for use.
+ * @brief Sets Elementary's preferred rendering engine for use.
*
- * @param engine The rendering engine's name
+ * @since_tizen 2.3
*
- * Note that it will take effect only to Elementary windows created after
- * this is called. This overrides the engine set by configuration at
- * application startup. Note that it is a hint and may not be honored.
+ * @remarks Note that it takes effect only on Elementary windows created after
+ * this is called. This overrides the engine set by the configuration at
+ * application startup. Note that it is a hint and may not be honored.
+ *
+ * @param[in] engine The rendering engine name
*
* @see elm_win_add()
*/
@@ -846,9 +925,11 @@ EAPI void elm_config_preferred_engine_set(const char *engine);
* @return The acceleration preference hint string
* @note there's no need to free the returned string, here.
*
- * See elm_config_accel_preference_set() for more information, but this simply
- * returns what was set by this call, nothing more.
- *
+ * @details See elm_config_accel_preference_set() for more information, but
+ * this simply returns what was set by this call, nothing more.
+ *
+ * @since_tizen 2.3
+ *
* @see elm_config_accel_preference_set()
* @since 1.10
*/
@@ -857,25 +938,60 @@ EAPI const char *elm_config_accel_preference_get(void);
/**
* @brief Set Elementary's acceleration preferences for new windows.
*
- * @param pref The preference desired as a normal C string
- *
- * Note that it will take effect only to Elementary windows created after
- * this is called. The @p pref string is a freeform C string that indicates
- * what kind of acceleration is preferred. This may or may not be honored,
- * but a best attempt will be made. Known strings are as follows:
- *
- * "gl", "opengl" - try use opengl.
- * "3d" - try and use a 3d acceleration unit.
- * "hw", "hardware", "accel" - try any acceleration unit (best possible)
- *
- * This takes precedence over engine preferences set with
- * elm_config_preferred_engine_set().
- *
+ * @param[in] pref The preference desired as a normal C string
+ *
+ * @details Note that it will take effect only to Elementary windows created after
+ * this is called. The @p pref string is a freeform C string that indicates
+ * what kind of acceleration is preferred. This may or may not be honored,
+ * but a best attempt will be made. Known strings are as follows:
+ * @li "gl", "opengl" - try use opengl.
+ * @li "3d" - try and use a 3d acceleration unit.
+ * @li "hw", "hardware", "accel" - try any acceleration unit (best possible)
+ *
+ * @note This takes precedence over engine preferences set with
+ * @ref elm_config_preferred_engine_set().
+ *
+ * @since_tizen 2.3
+ *
* @see elm_win_add()
* @since 1.10
*/
EAPI void elm_config_accel_preference_set(const char *pref);
+/**
+ * @brief Get the acceleration override preference flag
+ *
+ * @since_tizen 2.3
+ *
+ * @details This gets the acceleration override preference. This is a flag that
+ * has the global system acceleration preference configuration forcibly
+ * override whatever acceleration preference the application may want.
+ *
+ * @return If acceleration override is enabled
+ *
+ * @since 1.11
+ */
+EAPI Eina_Bool elm_config_accel_preference_override_get(void);
+
+/**
+ * @brief Set the acceleration override preference flag
+ *
+ * @since_tizen 2.3
+ *
+ * @details This sets the acceleration override preference. This is a flag that
+ * has the global system acceleration preference configuration forcibly
+ * override whatever acceleration preference the application may want.
+ *
+ * @param[in] enabled This should be @c EINA_TRUE if enabled, or @c EINA_FALSE if
+ * not.
+ *
+ * @since 1.11
+ */
+EAPI void elm_config_accel_preference_override_set(Eina_Bool enabled);
+
+/**
+ * @}
+ */
typedef struct _Elm_Text_Class
{
@@ -883,6 +999,10 @@ typedef struct _Elm_Text_Class
const char *desc;
} Elm_Text_Class;
+/**
+ * @brief Structure of Elm Font Overlay
+ * @ingroup Fonts
+ */
typedef struct _Elm_Font_Overlay
{
const char *text_class;
@@ -891,53 +1011,61 @@ typedef struct _Elm_Font_Overlay
} Elm_Font_Overlay;
/**
- * Get Elementary's list of supported text classes.
- *
- * @return The text classes list, with @c Elm_Text_Class blobs as data.
* @ingroup Fonts
*
- * Release the list with elm_text_classes_list_free().
+ * @{
+ */
+
+/**
+ * @brief Gets Elementary's list of supported text classes.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Release the list with elm_text_classes_list_free().
+ *
+ * @return The text classes list with @c Elm_Text_Class blobs as data
*/
EAPI Eina_List *elm_config_text_classes_list_get(void);
/**
- * Free Elementary's list of supported text classes.
+ * @brief Frees Elementary's list of supported text classes.
*
- * @ingroup Fonts
+ * @param[in] list The text classes list to be freed.
+ *
+ * @since_tizen 2.3
*
* @see elm_config_text_classes_list_get().
*/
EAPI void elm_config_text_classes_list_free(Eina_List *list);
/**
- * Get Elementary's list of font overlays, set with
- * elm_config_font_overlay_set().
+ * @brief Gets Elementary's list of font overlays, set using
+ * elm_config_font_overlay_set().
*
- * @return The font overlays list, with @c Elm_Font_Overlay blobs as
- * data.
+ * @since_tizen 2.3
*
- * @ingroup Fonts
+ * @remarks For each text class, one can set a <b>font overlay</b>,
+ * overriding the default font properties for that class coming from
+ * the theme in use. There is no need to free this list.
*
- * For each text class, one can set a <b>font overlay</b> for it,
- * overriding the default font properties for that class coming from
- * the theme in use. There is no need to free this list.
+ * @return The font overlays list with #Elm_Font_Overlay blobs as data
*
- * @see elm_config_font_overlay_set() and elm_config_font_overlay_unset().
+ * @see elm_config_font_overlay_set()
+ * @see elm_config_font_overlay_unset()
*/
EAPI const Eina_List *elm_config_font_overlay_list_get(void);
/**
- * Set a font overlay for a given Elementary text class.
+ * @brief Sets a font overlay for a given Elementary text class.
*
- * @param text_class Text class name
- * @param font Font name and style string
- * @param size Font size.
+ * @since_tizen 2.3
*
- * @note If the @p size is lower than zero, the value will be the amount of the size percentage. ex) -50: half of the current size, -100: current size, -10: 1/10 size.
+ * @remarks @a font has to be in the format returned by elm_font_fontconfig_name_get().
*
- * @ingroup Fonts
+ * @param[in] text_class The text class name
+ * @param[in] font The font name and style string
+ * @param[in] size The font size
*
- * @p font has to be in the format returned by elm_font_fontconfig_name_get().
* @see elm_config_font_overlay_list_get()
* @see elm_config_font_overlay_unset()
* @see edje_object_text_class_set()
@@ -945,563 +1073,498 @@ EAPI const Eina_List *elm_config_font_overlay_list_get(void);
EAPI void elm_config_font_overlay_set(const char *text_class, const char *font, Evas_Font_Size size);
/**
- * Get access mode
- *
- * @return the access mode bouncing state
+ * @}
+ */
+
+/**
+ * @ingroup Access
+ * @{
+ */
+
+/**
+ * @brief Gets the access mode.
*
* @since 1.7
*
- * @ingroup Access
+ * @return The access mode bouncing state
*
* @see elm_config_access_set()
*/
EAPI Eina_Bool elm_config_access_get(void);
/**
- * Set access mode
- *
- * @param is_access If @c EINA_TRUE, enables access mode
- *
- * @note Elementary objects may have information (e.g. label on the elm_button)
- * to be read. This information is read by access module when an object
- * receives EVAS_CALLBACK_MOUSE_IN event
+ * @brief Sets the access mode.
*
* @since 1.7
*
- * @ingroup Access
+ * @remarks Elementary objects may have information (e.g. label on the elm_button)
+ * to be read. This information is read by the access module when an object
+ * receives the EVAS_CALLBACK_MOUSE_IN event.
+ *
+ * @param[in] is_access If @c EINA_TRUE it enables the access mode, otherwise @c EINA_FALSE
*
* @see elm_config_access_get()
*/
EAPI void elm_config_access_set(Eina_Bool is_access);
/**
- * Get whether selection should be cleared when entry widget is unfocused.
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets whether reading the password on accessibiliy is enabled.
+ *
+ * @since 1.8
+ *
+ * @return @c EINA_TRUE if the reading the password on accessibility is enabled,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_config_access_password_read_enabled_set()
+ */
+EAPI Eina_Bool elm_config_access_password_read_enabled_get(void);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sets whether reading the password on accessibiliy is enabled.
+ *
+ * @since 1.8
+ *
+ * @param[in] enabled If @c EINA_TRUE it enables reading the password on accessibility,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_config_access_password_read_enabled_get()
+ */
+EAPI void elm_config_access_password_read_enabled_set(Eina_Bool enabled);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Selection Elementary Selection
+ * @ingroup elm_infra_group
*
- * @return if the selection would be cleared on unfocus.
+ * @brief Elementary Selection configuration
+ *
+ * @{
+ */
+
+/**
+ * @brief Gets whether the selection should be cleared when entry widget is unfocused.
*
* @since 1.7
*
- * @ingroup Selection
+ * @since_tizen 2.3
+ *
+ * @return @c EINA_TRUE if the selection would be cleared when unfocused,
+ * otherwise @c EINA_FALSE
*
* @see elm_config_selection_unfocused_clear_set()
*/
EAPI Eina_Bool elm_config_selection_unfocused_clear_get(void);
/**
- * Set whether selection should be cleared when entry widget is unfocused.
- *
- * @param enabled If @c EINA_TRUE, clear selection when unfocus,
- * otherwise does not clear selection when unfocus.
+ * @brief Sets whether the selection should be cleared when entry widget is unfocused.
*
* @since 1.7
*
- * @ingroup Selection
+ * @since_tizen 2.3
+ *
+ * @param[in] enabled If @c EINA_TRUE clear the selection when unfocused,
+ * otherwise @c EINA_FALSE to not clear the selection when unfocused
*
* @see elm_config_selection_unfocused_clear_get()
*/
EAPI void elm_config_selection_unfocused_clear_set(Eina_Bool enabled);
/**
- * Unset a font overlay for a given Elementary text class.
+ * @}
+ */
+
+/**
+ * @ingroup Fonts
+ * @{
+ */
+
+/**
+ * @brief Unsets a font overlay for a given Elementary text class.
*
- * @param text_class Text class name
+ * @since_tizen 2.3
*
- * @ingroup Fonts
+ * @remarks This brings back text elements belonging to the text class
+ * @a text_class back to their default font settings.
*
- * This will bring back text elements belonging to text class
- * @p text_class back to their default font settings.
+ * @param[in] text_class The text class name
*/
EAPI void elm_config_font_overlay_unset(const char *text_class);
/**
- * Apply the changes made with elm_config_font_overlay_set() and
- * elm_config_font_overlay_unset() on the current Elementary window.
+ * @brief Applies the changes made with elm_config_font_overlay_set() and
+ * elm_config_font_overlay_unset() on the current Elementary window.
*
- * @ingroup Fonts
+ * @since_tizen 2.3
*
- * This applies all font overlays set to all objects in the UI.
+ * @details This applies all font overlays set to all objects in the UI.
*/
EAPI void elm_config_font_overlay_apply(void);
/**
- * Apply the specified font hinting type.
- * EVAS_FONT_HINTING_NONE < No font hinting
- * EVAS_FONT_HINTING_AUTO < Automatic font hinting
- * EVAS_FONT_HINTING_BYTECODE < Bytecode font hinting
- *
- * @ingroup Fonts
- *
- * This applies font hint changes to all windows of the current application.
- *
- * @since 1.13
+ * @}
+ */
+
+/**
+ * @ingroup Fingers
+ * @{
*/
-EAPI void elm_config_font_hint_type_set(int type);
/**
- * Get the configured "finger size"
+ * @brief Gets the configured "finger size".
*
- * @return The finger size
+ * @details This gets the globally configured finger size, <b>in pixels</b>.
*
- * This gets the globally configured finger size, <b>in pixels</b>
+ * @since_tizen 2.3
*
- * @ingroup Fingers
+ * @return The finger size
*/
EAPI Evas_Coord elm_config_finger_size_get(void);
/**
- * Set the configured finger size
+ * @brief Sets the configured finger size.
*
- * This sets the globally configured finger size in pixels
+ * @details This sets the globally configured finger size in pixels.
*
- * @param size The finger size
- * @ingroup Fingers
+ * @since_tizen 2.3
+ *
+ * @param[in] size The finger size
*/
EAPI void elm_config_finger_size_set(Evas_Coord size);
/**
- * Get the configured cache flush interval time
+ * @}
+ */
+
+/**
+ * @ingroup Caches
+ * @{
+ */
+
+/**
+ * @brief Gets the configured cache flush interval time.
*
- * This gets the globally configured cache flush interval time, in
- * ticks
+ * @details This gets the globally configured cache flush interval time, in
+ * ticks.
+ *
+ * @since_tizen 2.3
*
* @return The cache flush interval time
- * @ingroup Caches
*
* @see elm_cache_all_flush()
*/
EAPI int elm_config_cache_flush_interval_get(void);
/**
- * Set the configured cache flush interval time
+ * @brief Sets the configured cache flush interval time.
*
- * This sets the globally configured cache flush interval time, in ticks
+ * @details This sets the globally configured cache flush interval time, in ticks.
*
- * @param size The cache flush interval time
+ * @since_tizen 2.3
*
- * @note The @p size must be greater than 0. if not, the cache flush will be
- * ignored.
+ * @remarks The @a size must be greater than @c 0. If not, the cache flush is
+ * ignored.
*
- * @ingroup Caches
+ * @param[in] size The cache flush interval time
*
* @see elm_cache_all_flush()
*/
EAPI void elm_config_cache_flush_interval_set(int size);
/**
- * Get the configured cache flush enabled state
+ * @brief Gets the configured cache flush enabled state.
+ *
+ * @details This gets the globally configured cache flush state - whether it is enabled
+ * or not. When cache flushing is enabled, elementary regularly
+ * (see elm_config_cache_flush_interval_get() ) flushes caches and dumps data out of
+ * memory and allows usage to re-seed caches and data in memory where it
+ * can do so. An idle application thus minimizes its memory usage as
+ * data is freed from memory and does not re-load as it is idle and
+ * not rendering or doing anything graphically right now.
*
- * This gets the globally configured cache flush state - if it is enabled
- * or not. When cache flushing is enabled, elementary will regularly
- * (see elm_config_cache_flush_interval_get() ) flush caches and dump data out of
- * memory and allow usage to re-seed caches and data in memory where it
- * can do so. An idle application will thus minimize its memory usage as
- * data will be freed from memory and not be re-loaded as it is idle and
- * not rendering or doing anything graphically right now.
+ * @since_tizen 2.3
*
* @return The cache flush state
- * @ingroup Caches
*
* @see elm_cache_all_flush()
*/
EAPI Eina_Bool elm_config_cache_flush_enabled_get(void);
/**
- * Set the configured cache flush enabled state
+ * @brief Sets the configured cache flush enabled state.
*
- * This sets the globally configured cache flush enabled state.
+ * @details This sets the globally configured cache flush enabled state.
*
- * @param enabled The cache flush enabled state
- * @ingroup Caches
+ * @since_tizen 2.3
+ *
+ * @param[in] enabled The cache flush enabled state
*
* @see elm_cache_all_flush()
*/
EAPI void elm_config_cache_flush_enabled_set(Eina_Bool enabled);
/**
- * Get the configured font cache size
+ * @brief Gets the configured font cache size.
*
- * This gets the globally configured font cache size, in kilo bytes.
+ * @details This gets the globally configured font cache size, in bytes.
+ *
+ * @since_tizen 2.3
*
* @return The font cache size
- * @ingroup Caches
*/
EAPI int elm_config_cache_font_cache_size_get(void);
/**
- * Set the configured font cache size
+ * @brief Sets the configured font cache size
*
- * This sets the globally configured font cache size, in kilo bytes
+ * @details This sets the globally configured font cache size, in bytes
*
- * @param size The font cache size
- * @ingroup Caches
+ * @since_tizen 2.3
+ *
+ * @param[in] size The font cache size
*/
EAPI void elm_config_cache_font_cache_size_set(int size);
/**
- * Get the configured image cache size
+ * @brief Gets the configured image cache size.
+ *
+ * @details This gets the globally configured image cache size, in bytes
*
- * This gets the globally configured image cache size, in kilo bytes
+ * @since_tizen 2.3
*
* @return The image cache size
- * @ingroup Caches
*/
EAPI int elm_config_cache_image_cache_size_get(void);
/**
- * Set the configured image cache size
+ * @brief Sets the configured image cache size.
*
- * This sets the globally configured image cache size, in kilo bytes
+ * @details This sets the globally configured image cache size, in bytes.
*
- * @param size The image cache size
- * @ingroup Caches
+ * @since_tizen 2.3
+ *
+ * @param[in] size The image cache size
*/
EAPI void elm_config_cache_image_cache_size_set(int size);
+
/**
- * Get the configured edje file cache size.
+ * @brief Gets the configured edje file cache size.
*
- * This gets the globally configured edje file cache size, in number
- * of files.
+ * @details This gets the globally configured edje file cache size, in number
+ * of files.
+ *
+ * @since_tizen 2.3
*
* @return The edje file cache size
- * @ingroup Caches
*/
EAPI int elm_config_cache_edje_file_cache_size_get(void);
/**
- * Set the configured edje file cache size
+ * @brief Sets the configured edje file cache size.
*
- * This sets the globally configured edje file cache size, in number
- * of files.
+ * @details This sets the globally configured edje file cache size, in number
+ * of files.
*
- * @param size The edje file cache size
- * @ingroup Caches
+ * @since_tizen 2.3
+ *
+ * @param[in] size The edje file cache size
*/
EAPI void elm_config_cache_edje_file_cache_size_set(int size);
/**
- * Get the configured edje collections (groups) cache size.
+ * @brief Gets the configured edje collections (groups) cache size.
+ *
+ * @details This gets the globally configured edje collections cache size, in
+ * number of collections.
*
- * This gets the globally configured edje collections cache size, in
- * number of collections.
+ * @since_tizen 2.3
*
* @return The edje collections cache size
- * @ingroup Caches
*/
EAPI int elm_config_cache_edje_collection_cache_size_get(void);
/**
- * Set the configured edje collections (groups) cache size
+ * @brief Sets the configured edje collections (groups) cache size.
*
- * This sets the globally configured edje collections cache size, in
- * number of collections.
+ * @details This sets the globally configured edje collections cache size, in
+ * number of collections.
*
- * @param size The edje collections cache size
- * @ingroup Caches
- */
-EAPI void elm_config_cache_edje_collection_cache_size_set(int size);
-
-/**
- * Get the configured vsync flag
- *
- * This gets the globally configured vsync flag that asks some backend
- * engines to use vsync display if possible.
+ * @since_tizen 2.3
*
- * @return If vsync is enabled
- *
- * @since 1.11
+ * @param[in] size The edje collections cache size
*/
-EAPI Eina_Bool elm_config_vsync_get(void);
+EAPI void elm_config_cache_edje_collection_cache_size_set(int size);
/**
- * Set the configured vsync flag
- *
- * This sets the globally configured vsync flag that asks some backend
- * engines to use vsync display if possible.
- *
- * @param enabled This should be @c EINA_TRUE if enabled, or @c EINA_FALSE if
- * not.
- *
- * @since 1.11
+ * @}
*/
-EAPI void elm_config_vsync_set(Eina_Bool enabled);
/**
- * Get the acceleration override preference flag
- *
- * This gets the acceleration override preference. This is a flag that
- * has the global system acceleration preference configuration forcibly
- * override whatever acceleration preference the application may want.
- *
- * @return If acceleration override is enabled
- *
- * @since 1.11
+ * @ingroup Focus
+ * @{
*/
-EAPI Eina_Bool elm_config_accel_preference_override_get(void);
/**
- * Set the acceleration override preference flag
+ * @brief Gets the enable status of the focus highlight.
*
- * This sets the acceleration override preference. This is a flag that
- * has the global system acceleration preference configuration forcibly
- * override whatever acceleration preference the application may want.
- *
- * @param enabled This should be @c EINA_TRUE if enabled, or @c EINA_FALSE if
- * not.
- *
- * @since 1.11
- */
-EAPI void elm_config_accel_preference_override_set(Eina_Bool enabled);
-
-/**
- * Get the enable status of the focus highlight
+ * @details This gets whether the highlight on the focused objects is enabled.
*
- * This gets whether the highlight on focused objects is enabled or not
+ * @return The status of the focus highlight
*
- * @return enable @c EINA_TRUE if the focus highlight is enabled, @c EINA_FALSE
- * otherwise.
+ * @since_tizen 2.3
*
* @see elm_config_focus_highlight_enabled_set()
- * @ingroup Focus
*/
EAPI Eina_Bool elm_config_focus_highlight_enabled_get(void);
/**
- * Set the enable status of the focus highlight
+ * @brief Sets the enable status of the focus highlight.
*
- * @param enable Enable highlight if @c EINA_TRUE, disable otherwise
+ * @details This sets whether to show the highlight on focused objects or not.
*
- * Set whether to show or not the highlight on focused objects
+ * @since_tizen 2.3
*
- * Note that it will take effect only to Elementary windows created after
- * this is called.
+ * @remarks Note that it takes effect only on Elementary windows created after
+ * this is called.
*
- * @see elm_config_focus_highlight_enabled_get()
- * @ingroup Focus
+ * @param[in] enable If @c EINA_TRUE it enables highlight,
+ * otherwise @c EINA_FALSE disables highlight
+ *
+ * @see elm_win_add()
*/
EAPI void elm_config_focus_highlight_enabled_set(Eina_Bool enable);
/**
- * Get the enable status of the focus highlight animation
+ * @brief Gets the enable status of the highlight animation.
*
- * @return animate @c EINA_TRUE if the focus highlight animation is enabled, @c
- * EINA_FALSE otherwise.
+ * @details This gets whether the focus highlight, if enabled, animates its switch from
+ * one object to the next.
*
- * Get whether the focus highlight, if enabled, will animate its switch from
- * one object to the next
+ * @since_tizen 2.3
*
- * @see elm_config_focus_highlight_animate_set()
- * @ingroup Focus
+ * @return The focus highlight mode set
*/
EAPI Eina_Bool elm_config_focus_highlight_animate_get(void);
/**
- * Set the enable status of the highlight animation
+ * @brief Sets the enable status of the highlight animation.
*
- * @param animate Enable animation if @c EINA_TRUE, disable otherwise
+ * @details This sets whether the focus highlight, if enabled, animates its switch from
+ * one object to the next.
*
- * Set whether the focus highlight, if enabled, will animate its switch from
- * one object to the next
+ * @since_tizen 2.3
*
- * Note that it will take effect only to Elementary windows created after
- * this is called.
+ * @remarks Note that it takes effect only on Elementary windows created after
+ * this is called.
*
- * @see elm_config_focus_highlight_animate_get()
- * @ingroup Focus
- */
-EAPI void elm_config_focus_highlight_animate_set(Eina_Bool animate);
-
-/**
- * Get the disable status of the focus highlight clip feature.
+ * @param[in] animate If @c EINA_TRUE it enables animation,
+ * otherwise @c EINA_FALSE disables it
*
- * @return The focus highlight clip disable status
- *
- * Get whether the focus highlight clip feature is disabled. If disabled return
- * @c EINA_TRUE, else return @c EINA_FALSE. If the return is @c EINA_TRUE, focus
- * highlight clip feature is not disabled so the focus highlight can be clipped.
- *
- * @see elm_config_focus_highlight_clip_disabled_set()
- * @since 1.10
- * @ingroup Focus
- */
-EAPI Eina_Bool elm_config_focus_highlight_clip_disabled_get(void);
-
-/**
- * Set the disable status of the focus highlight clip feature.
- *
- * @param disable Disable focus highlight clip feature if @c EINA_TRUE, enable
- * it otherwise.
- *
- * @see elm_config_focus_highlight_clip_disabled_get()
- * @since 1.10
- * @ingroup Focus
+ * @see elm_win_add()
*/
-EAPI void elm_config_focus_highlight_clip_disabled_set(Eina_Bool disable);
+EAPI void elm_config_focus_highlight_animate_set(Eina_Bool animate);
/**
- * Focus Movement Policy
- *
- * @since 1.10
- * @ingroup Focus
+ * @}
*/
-typedef enum
-{
- ELM_FOCUS_MOVE_POLICY_CLICK, /**< move focus by mouse click or touch. Elementary focus is set on mouse click and this is checked at mouse up time. (default) */
- ELM_FOCUS_MOVE_POLICY_IN /**< move focus by mouse in. Elementary focus is set on mouse move when the mouse pointer is moved into an object. */
-} Elm_Focus_Move_Policy;
/**
- * Get the focus movement policy
+ * @brief Gets the system mirrored mode. This determines the default mirrored mode
+ * of widgets.
*
- * @return The focus movement policy
+ * @since_tizen 2.3
*
- * Get how the focus is moved to another object. It can be
- * #ELM_FOCUS_MOVE_POLICY_CLICK or #ELM_FOCUS_MOVE_POLICY_IN. The first means
- * elementary focus is moved on elementary object click. The second means
- * elementary focus is moved on elementary object mouse in.
- *
- * @see elm_config_focus_move_policy_set()
- * @since 1.10
- * @ingroup Focus
+ * @return @c EINA_TRUE if mirrored mode is set,
+ * otherwise @c EINA_FALSE
+ * @ingroup Mirroring
*/
-EAPI Elm_Focus_Move_Policy elm_config_focus_move_policy_get(void);
-
-/**
- * Set elementary focus movement policy
- *
- * @param policy A policy to apply for the focus movement
- *
- * @see elm_config_focus_move_policy_get()
- * @since 1.10
- * @ingroup Focus
- */
-EAPI void elm_config_focus_move_policy_set(Elm_Focus_Move_Policy policy);
+EAPI Eina_Bool elm_config_mirrored_get(void);
/**
- * Get disable status of item select on focus feature.
+ * @brief Sets the system mirrored mode. This determines the default mirrored mode
+ * of widgets.
*
- * @return The item select on focus disable status
+ * @since_tizen 2.3
*
- * @see elm_config_item_select_on_focus_disabled_set
- * @since 1.10
- * @ingroup Focus
+ * @param[in] mirrored If @c EINA_TRUE the mirrored mode is set,
+ * otherwise @c EINA_FALSE to unset it
+ * @ingroup Mirroring
*/
-EAPI Eina_Bool elm_config_item_select_on_focus_disabled_get(void);
+EAPI void elm_config_mirrored_set(Eina_Bool mirrored);
/**
- * Set the disable status of the item select on focus feature.
- *
- * @param disabled Disable item select on focus if @c EINA_TRUE, enable otherwise
+ * @brief Gets the indicator service name according to the rotation degree.
*
- * @see elm_config_item_select_on_focus_disabled_get
- * @since 1.10
- * @ingroup Focus
- */
-EAPI void elm_config_item_select_on_focus_disabled_set(Eina_Bool disabled);
-
-/**
- * Get status of first item focus on first focusin feature.
+ * @since_tizen 2.3
*
- * @return The first item focus on first focusin status
+ * @param[in] rotation The rotation that is related to the indicator service name, in degrees (0-360)
*
- * @see elm_config_first_item_focus_on_first_focusin_set
- * @since 1.11
- * @ingroup Focus
+ * @return The indicator service name according to the rotation degree
+ * @ingroup Conformant
*/
-EAPI Eina_Bool elm_config_first_item_focus_on_first_focusin_get(void);
+EAPI const char *elm_config_indicator_service_get(int rotation);
/**
- * Set the first item focus on first focusin feature.
- *
- * @param enabled first_item_focus_on_first_focusin if @c EINA_TRUE, enable otherwise
- *
- * @see elm_config_first_item_focus_on_first_focusin_get
- * @since 1.11
- * @ingroup Focus
+ * @ingroup Elm_Gesture_Layer
+ * @{
*/
-EAPI void elm_config_first_item_focus_on_first_focusin_set(Eina_Bool enabled);
/**
- * Get the system mirrored mode. This determines the default mirrored mode
- * of widgets.
+ * @brief Gets the duration for occurrence of the long tap event of the gesture layer.
*
- * @return @c EINA_TRUE if mirrored is set, @c EINA_FALSE otherwise
- */
-EAPI Eina_Bool elm_config_mirrored_get(void);
-
-/**
- * Set the system mirrored mode. This determines the default mirrored mode
- * of widgets.
+ * @since_tizen 2.3
*
- * @param mirrored @c EINA_TRUE to set mirrored mode, @c EINA_FALSE to unset it.
+ * @return The timeout for the long tap event of the gesture layer
*/
-EAPI void elm_config_mirrored_set(Eina_Bool mirrored);
+EAPI double elm_config_glayer_long_tap_start_timeout_get(void);
/**
- * Get the clouseau state. @c EINA_TRUE if clouseau was tried to be run.
+ * @brief Sets the duration for occurrence of the long tap event of the gesture layer.
*
- * @since 1.8
- * @return @c EINA_TRUE if clouseau was tried to run, @c EINA_FALSE otherwise
- */
-EAPI Eina_Bool elm_config_clouseau_enabled_get(void);
-
-/**
- * Get the clouseau state. @c EINA_TRUE if clouseau should be attempted to be run.
+ * @since_tizen 2.3
*
- * @since 1.8
- * @param enabled @c EINA_TRUE to try and run clouseau, @c EINA_FALSE otherwise.
+ * @param[in] long_tap_timeout The timeout for the long tap event of the gesture layer
*/
-EAPI void elm_config_clouseau_enabled_set(Eina_Bool enabled);
+EAPI void elm_config_glayer_long_tap_start_timeout_set(double long_tap_timeout);
/**
- * Get the indicator service name according to the rotation degree.
+ * @brief Gets the duration for occurrence of the double tap event of the gesture layer.
*
- * @param rotation The rotation which related with the indicator service name,
- * in degrees (0-360),
+ * @since_tizen 2.3
*
- * @return The indicator service name according to the rotation degree. The
- * indicator service name can be either @c "elm_indicator_portrait" or
- * @c "elm_indicator_landscape".
- *
- * @note Do not free the return string.
+ * @return The timeout for the double tap event of the gesture layer
*/
-EAPI const char *elm_config_indicator_service_get(int rotation);
+EAPI double elm_config_glayer_double_tap_timeout_get(void);
/**
- * Get the duration for occurring long tap event of gesture layer.
+ * @brief Sets the duration for occurrence of the double tap event of the gesture layer.
*
- * @return Timeout for long tap event of gesture layer.
- * @ingroup Elm_Gesture_Layer
- * @since 1.8
- */
-EAPI double elm_config_glayer_long_tap_start_timeout_get(void);
-
-/**
- * Set the duration for occurring long tap event of gesture layer.
+ * @since_tizen 2.3
*
- * @param long_tap_timeout Timeout for long tap event of gesture layer.
- * @ingroup Elm_Gesture_Layer
- * @since 1.8
+ * @param[in] double_tap_timeout The timeout for the double tap event of the gesture layer
*/
-EAPI void elm_config_glayer_long_tap_start_timeout_set(double long_tap_timeout);
+EAPI void elm_config_glayer_double_tap_timeout_set(double double_tap_timeout);
/**
- * Get the duration for occurring double tap event of gesture layer.
- *
- * @return Timeout for double tap event of gesture layer.
- * @ingroup Elm_Gesture_Layer
- * @since 1.8
+ * @}
*/
-EAPI double elm_config_glayer_double_tap_timeout_get(void);
/**
- * Set the duration for occurring double tap event of gesture layer.
+ * @defgroup colors_group Elementary Colors
+ * @ingroup elm_infra_group
+ * @brief Configuration for Elementary colors.
*
- * @param double_tap_timeout Timeout for double tap event of gesture layer.
- * @ingroup Elm_Gesture_Layer
- * @since 1.8
+ * @{
*/
-EAPI void elm_config_glayer_double_tap_timeout_set(double double_tap_timeout);
typedef struct _Elm_Color_Class
{
@@ -1518,79 +1581,84 @@ typedef struct _Elm_Color_Overlay
} Elm_Color_Overlay;
/**
- * Get Elementary's list of supported color classes.
+ * @brief Gets Elementary's list of supported color classes.
*
- * @return The color classes list, with @c Elm_Color_Class blobs as data.
- * @ingroup Colors
* @since 1.10
*
- * Release the list with elm_color_classes_list_free().
+ * @since_tizen 2.3
+ *
+ * @remarks Release the list with elm_color_classes_list_free().
+ *
+ * @return The color classes list with @c Elm_Color_Class blobs as data
*/
EAPI Eina_List *elm_config_color_classes_list_get(void);
/**
- * Free Elementary's list of supported color classes.
+ * @brief Frees Elementary's list of supported color classes.
*
- * @ingroup Colors
* @since 1.10
*
+ * @since_tizen 2.3
+ *
+ * @param[in] list The color classes list
+ *
* @see elm_config_color_classes_list_get().
*/
EAPI void elm_config_color_classes_list_free(Eina_List *list);
/**
- * Get Elementary's list of color overlays, set with
- * elm_config_color_overlay_set().
- *
- * @return The color overlays list, with @c Elm_Color_Overlay blobs as
- * data.
+ * @brief Gets Elementary's list of color overlays, set with
+ * elm_config_color_overlay_set().
*
- * @ingroup Colors
* @since 1.10
*
- * For each color class, one can set a <b>color overlay</b> for it,
- * overriding the default color properties for that class coming from
- * the theme in use. There is no need to free this list.
+ * @since_tizen 2.3
+ *
+ * @remarks For each color class, one can set a <b>color overlay</b> for it,
+ * overriding the default color properties for that class coming from
+ * the theme in use. There is no need to free this list.
+ *
+ * @return The color overlays list with @c Elm_Color_Overlay blobs as data
*
* @see elm_config_color_overlay_set()
- * @see elm_config_color_overlay_unset().
+ * @see elm_config_color_overlay_unset()
*/
EAPI const Eina_List *elm_config_color_overlay_list_get(void);
/**
- * Set a color overlay for a given Elementary color class.
+ * @brief Sets a color overlay for a given Elementary color class.
*
- * @param color_class Color class name
- * @param r Object Red value
- * @param g Object Green value
- * @param b Object Blue value
- * @param a Object Alpha value
- * @param r2 Text outline Red value
- * @param g2 Text outline Green value
- * @param b2 Text outline Blue value
- * @param a2 Text outline Alpha value
- * @param r3 Text shadow Red value
- * @param g3 Text shadow Green value
- * @param b3 Text shadow Blue value
- * @param a3 Text shadow Alpha value
- *
- * @ingroup Colors
* @since 1.10
-
- * The first color is for the object itself, the second color is for the text
- * outline, and the third color is for the text shadow.
*
- * @note The second two color are only for texts.
-
- * Setting color emits a signal "color_class,set" with source being
- * the given color class in all edje objects.
+ * @since_tizen 2.3
+ *
+ * @remarks The first color is the object, the second is the text outline, and
+ * the third is the text shadow. (Note that the second two only apply
+ * to text parts).
+ *
+ * @remarks Setting color emits a signal "color_class,set" with source being
+ * the given color class in all edje objects.
+ *
+ * @remarks Unlike Evas, Edje colors are @b not pre-multiplied. That is,
+ * half-transparent white is 255 255 255 128.
+ *
+ * @param[in] color_class The color class name
+ * @param[in] r The object red value
+ * @param[in] g The object green value
+ * @param[in] b The object blue value
+ * @param[in] a The object alpha value
+ * @param[in] r2 The outline red value
+ * @param[in] g2 The outline green value
+ * @param[in] b2 The outline blue value
+ * @param[in] a2 The outline alpha value
+ * @param[in] r3 The shadow red value
+ * @param[in] g3 The shadow green value
+ * @param[in] b3 The shadow blue value
+ * @param[in] a3 The shadow alpha value
*
* @see elm_config_color_overlay_list_get()
* @see elm_config_color_overlay_unset()
* @see edje_color_class_set()
-
- * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
- * half-transparent white is 255 255 255 128.
*/
EAPI void elm_config_color_overlay_set(const char *color_class,
int r, int g, int b, int a,
@@ -1598,121 +1666,61 @@ EAPI void elm_config_color_overlay_set(const char *color_class,
int r3, int g3, int b3, int a3);
/**
- * Unset a color overlay for a given Elementary color class.
- *
- * @param color_class Color class name
+ * @brief Unsets a color overlay for a given Elementary color class.
*
- * @ingroup Colors
* @since 1.10
*
- * This will bring back color elements belonging to color class
- * @p color_class back to their default color settings.
- */
-EAPI void elm_config_color_overlay_unset(const char *color_class);
-
-/**
- * Apply the changes made with elm_config_color_overlay_set() and
- * elm_config_color_overlay_unset() on the current Elementary window.
- *
- * @ingroup Colors
- * @since 1.10
- *
- * This applies all color overlays set to all objects in the UI.
- */
-EAPI void elm_config_color_overlay_apply(void);
-
-/**
- * Get the magnifier enabled state for entries
+ * @since_tizen 2.3
*
- * @return The enabled state for magnifier
- * @since 1.9
- */
-EAPI Eina_Bool elm_config_magnifier_enable_get(void);
-
-/**
- * Set the magnifier enabled state for entires
+ * @remarks This brings back color elements belonging to the color class
+ * @p color_class back to their default color settings.
*
- * @param enable The magnifier config state
- * @since 1.9
+ * @param[in] color_class The color class name
*/
-EAPI void elm_config_magnifier_enable_set(Eina_Bool enable);
+EAPI void elm_config_color_overlay_unset(const char *color_class);
/**
- * Get the amount of scaling the magnifer does
+ * @brief Applies the changes made with elm_config_color_overlay_set() and
+ * elm_config_color_overlay_unset() on the current Elementary window.
*
- * @return The scaling amount (1.0 is none, 2.0 is twice as big etc.)
- * @since 1.9
- */
-EAPI double elm_config_magnifier_scale_get(void);
-
-/**
- * Set the amount of scaling the magnifier does
+ * @details This applies to all color overlays set to all objects in the UI.
*
- * @param scale The scaling amount for magnifiers
- * @since 1.9
- */
-EAPI void elm_config_magnifier_scale_set(double scale);
-
-/**
- * Get the mute state of an audio channel for effects
+ * @since 1.10
*
- * @param channel The channel to get the mute state of
- * @return The mute state
- * @since 1.9
+ * @since_tizen 2.3
*/
-EAPI Eina_Bool elm_config_audio_mute_get(Edje_Channel channel);
+EAPI void elm_config_color_overlay_apply(void);
/**
- * Set the mute state of the specified channel
- *
- * @param channel The channel to set the mute state of
- * @param mute The mute state to set
- * @since 1.9
+ * @}
*/
-EAPI void elm_config_audio_mute_set(Edje_Channel channel, Eina_Bool mute);
/**
- * @defgroup ATSPI AT-SPI2 Accessibility
- * @ingroup Elementary
- *
- * Elementary widgets support Linux Accessibility standard. For more
- * information please visit:
- * http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus
+ * @internal
+ * @defgroup fps_group Elementary FPS
+ * @ingroup elm_infra_group
*
* @{
*/
/**
- * Gets ATSPI mode
- *
- * @return the ATSPI mode
- *
- * @since 1.10
+ * @internal
+ * @remarks Tizen only feature
*
- * @ingroup ATSPI
+ * @brief Gets the FPS value for ecore_animator_frametime and edje_frametime calculation.
*
- * @see elm_config_atspi_mode_set()
+ * @return The fps value
*/
-EAPI Eina_Bool elm_config_atspi_mode_get(void);
+EAPI double elm_config_fps_get(void);
/**
- * Sets ATSPI mode
+ * @internal
+ * @remarks Tizen only feature
+ * @brief Sets the FPS value for ecore_animator_frametime and edje_frametime calculation.
*
- * @param is_atspi If @c EINA_TRUE, enables ATSPI2 mode
- *
- * @note Enables Linux Accessibility support for Elementary widgets.
- *
- * @since 1.10
- *
- * @ingroup ATSPI
- *
- * @see elm_config_atspi_mode_get()
- */
-EAPI void elm_config_atspi_mode_set(Eina_Bool is_atspi);
-
-/**
- * @}
+ * @param[in] fps The fps value to set
*/
+EAPI void elm_config_fps_set(double fps);
/**
* @}
diff --git a/src/lib/elm_conform.h b/src/lib/elm_conform.h
index e61c9f1a5..5589509db 100644
--- a/src/lib/elm_conform.h
+++ b/src/lib/elm_conform.h
@@ -1,21 +1,18 @@
/**
* @defgroup Conformant Conformant
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html conformant_inheritance_tree.png
* @image latex conformant_inheritance_tree.eps
*
- * @image html img/widget/conformant/preview-00.png
- * @image latex img/widget/conformant/preview-00.eps width=\textwidth
- *
* @image html img/conformant.png
- * @image latex img/conformant.eps width=\textwidth
+ * @image latex img/conformant.eps "conformant" width=\textwidth
*
- * The aim is to provide a widget that can be used in elementary apps to
- * account for space taken up by the indicator, virtual keypad & softkey
- * windows when running the illume2 module of E17.
+ * @brief The aim is to provide a widget that can be used in elementary apps to
+ * account for space taken up by the indicator, virtual keypad & softkey
+ * windows when running the illume2 module of E17.
*
- * So conformant content will be sized and positioned considering the
+ * So conformant content is sized and positioned considering the
* space required for such stuff, and when they popup, as a keyboard
* shows when an entry is selected, conformant content won't change.
*
@@ -23,39 +20,33 @@
* functions acting on it also work for conformant objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li "virtualkeypad,state,on": if virtualkeypad state is switched to "on".
- * (since 1.8)
- * @li "virtualkeypad,state,off": if virtualkeypad state is switched to "off".
- * (since 1.8)
- * @li "clipboard,state,on": if clipboard state is switched to "on".
- * (since 1.8)
- * @li "clipboard,state,off": if clipboard state is switched to "off".
- * (since 1.8)
- * In all cases, the @c event parameter of the callback will be
- * @c NULL.
+ * @ref Layout :
+ * @li "virtualkeypad,size,changed": This is called when the virtualkeypad size is
+ * changed. @c event_info parameter is the virtualkeypad size in
+ * Evas_Coord_Rectangle structure. (@since 1.8)
*
* Available styles for it:
* - @c "default"
*
- * Default content parts of the conformant widget that you can use for are:
- * @li "default" - A content of the conformant
+ * The default content parts of the conformant widget that you can use are:
+ * @li "default" - Content of the conformant.
*
- * See how to use this widget in this example:
- * @ref conformant_example
+ * @{
*/
/**
- * @addtogroup Conformant
- * @{
+ * @brief Adds a new conformant widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new conformant widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new conformant widget handle, otherwise @c NULL in case of an error
*/
+EAPI Evas_Object *elm_conformant_add(Evas_Object *parent);
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_conform_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_conform_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_cursor.h b/src/lib/elm_cursor.h
index d5f7d24b0..7103a5d35 100644
--- a/src/lib/elm_cursor.h
+++ b/src/lib/elm_cursor.h
@@ -1,117 +1,121 @@
/**
* @defgroup Cursors Cursors
- * @ingroup Elementary
- *
- * The Elementary cursor is an internal smart object used to
- * customize the mouse cursor displayed over objects (or
- * widgets). In the most common scenario, the cursor decoration
- * comes from the graphical @b engine Elementary is running
- * on. Those engines may provide different decorations for cursors,
+ * @ingroup elm_infra_group
+ * @brief The Elementary cursor is an internal smart object used to
+ * customize the mouse cursor displayed over objects (or
+ * widgets).
+ *
+ * In the most common scenario, the cursor decoration
+ * comes from the graphical @b engine Elementary that is running.
+ * Those engines may provide different decorations for cursors,
* and Elementary provides functions to choose them (think of X11
* cursors, as an example).
*
* By default, Elementary searches cursors only from engine.
* There's also the possibility of, besides using engine provided
- * cursors, also use the ones coming from Edje theme files. Both
+ * cursors, to also use the ones coming from Edje theme files. Both
* globally and per widget, Elementary makes it possible for one to
* make the cursors lookup to be held on engines only or on
- * Elementary's theme file, too. To set cursor's hot spot,
- * two data items should be added to cursor's theme: "hot_x" and
- * "hot_y", that are the offset from upper-left corner of the cursor
- * (coordinates 0,0).
+ * Elementary's theme file, too. To set the cursor's hot spot,
+ * two data items should be added to the cursor's theme: "hot_x" and
+ * "hot_y", that are the offset from the upper-left corner of the cursor
+ * (coordinates (0,0)).
*
* @{
*/
/**
- * Set the cursor to be shown when mouse is over the object
+ * @brief Sets the cursor to be shown when the mouse is over the object.
+ *
+ * @details This sets the cursor that is displayed when the mouse is over the
+ * object. The object can have only one cursor set to it, so if
+ * this function is called twice for an object, the previous set
+ * is unset.
*
- * Set the cursor that will be displayed when mouse is over the
- * object. The object can have only one cursor set to it, so if
- * this function is called twice for an object, the previous set
- * will be unset.
- * If using X cursors, a definition of all the valid cursor names
- * is listed on Elementary_Cursors.h. If an invalid name is set
- * the default cursor will be used.
+ * If using X cursors, a definition of all the valid cursor names
+ * is listed on Elementary_Cursors.h. If an invalid name is set
+ * the default cursor is used.
*
- * @param obj the object being set a cursor.
- * @param cursor the cursor name to be used.
+ * @since_tizen 2.3
*
- * @ingroup Cursors
+ * @param[in] obj The object being set as a cursor
+ * @param[in] cursor The cursor name to be used
*/
EAPI void elm_object_cursor_set(Evas_Object *obj, const char *cursor);
/**
- * Get the cursor to be shown when mouse is over the object
+ * @brief Gets the cursor to be shown when the mouse is over the object.
*
- * @param obj an object with cursor already set.
- * @return the cursor name.
+ * @since_tizen 2.3
*
- * @ingroup Cursors
+ * @param[in] obj The object with the cursor already set
+ * @return The cursor name
*/
EAPI const char *elm_object_cursor_get(const Evas_Object *obj);
/**
- * Unset cursor for object
+ * @brief Unsets the cursor for an object.
*
- * Unset cursor for object, and set the cursor to default if the mouse
- * was over this object.
+ * @details This unsets the cursor for an object, and sets the cursor to default if the mouse
+ * is over this object.
*
- * @param obj Target object
- * @see elm_object_cursor_set()
+ * @since_tizen 2.3
*
- * @ingroup Cursors
+ * @param[in] obj The target object
+ * @see elm_object_cursor_set()
*/
EAPI void elm_object_cursor_unset(Evas_Object *obj);
/**
- * Sets a different style for this object cursor.
+ * @brief Sets a different style for this object cursor.
*
- * @note before you set a style you should define a cursor with
- * elm_object_cursor_set()
+ * @remarks Before you set a style you should define a cursor with
+ * elm_object_cursor_set().
*
- * @param obj an object with cursor already set.
- * @param style the theme style to use (default, transparent, ...)
+ * @since_tizen 2.3
*
- * @ingroup Cursors
+ * @param[in] obj An object with the cursor already set
+ * @param[in] style The theme style to use (default, transparent, ...)
*/
EAPI void elm_object_cursor_style_set(Evas_Object *obj, const char *style);
/**
- * Get the style for this object cursor.
+ * @brief Gets the style for this object cursor.
*
- * @param obj an object with cursor already set.
- * @return style the theme style in use, defaults to "default". If the
- * object does not have a cursor set, then NULL is returned.
+ * @since_tizen 2.3
*
- * @ingroup Cursors
+ * @param[in] obj An object with the cursor already set
+ * @return style The theme style in use, defaults to "default" \n
+ * If the object does not have a cursor set, then @c NULL is returned.
*/
EAPI const char *elm_object_cursor_style_get(const Evas_Object *obj);
/**
- * Set if the cursor set should be searched on the theme or should use
- * the provided by the engine, only.
+ * @brief Sets whether the cursor set should be searched on the theme or should use
+ * the theme provided by the engine, only.
*
- * @note before you set theme_search you should define a cursor with
- * elm_object_cursor_set(). By default it will only look for cursors
- * provided by the engine.
+ * @remarks Before you set engine_only you should define a cursor with
+ * elm_object_cursor_set(). By default it only looks for cursors
+ * provided by the engine.
*
- * @param obj an object with cursor already set.
- * @param theme_search boolean to define if cursors should be searched
- * on widget's theme.
+ * @since_tizen 2.3
*
- * @ingroup Cursors
+ * @param[in] obj An object with the cursor already set
+ * @param[in] theme_search The boolean value to define if cursors should be looked for only
+ * from the theme provided by the engine or should be searched on the widget's theme as well
*/
EAPI void elm_object_cursor_theme_search_enabled_set(Evas_Object *obj, Eina_Bool theme_search);
/**
- * Get if the cursor set should be searched on the theme for this object cursor.
+ * @brief Gets the cursor engine only usage for this object cursor.
*
- * @param obj an object with cursor already set.
- * @return @c EINA_TRUE if the cursor set should be searched on widget's theme,
- * @c EINA_FALSE otherwise.
+ * @since_tizen 2.3
*
- * @ingroup Cursors
+ * @param[in] obj An object with the cursor already set
+ * @return engine_only A boolean value to define if cursors should be
+ * looked for only from the theme provided by the engine or should be searched on
+ * the widget's theme as well \n
+ * If the object does not have a cursor set, then @c EINA_FALSE is returned.
*/
EAPI Eina_Bool elm_object_cursor_theme_search_enabled_get(const Evas_Object *obj);
diff --git a/src/lib/elm_datetime.h b/src/lib/elm_datetime.h
index cf4bc3e83..d2f06eb4b 100644
--- a/src/lib/elm_datetime.h
+++ b/src/lib/elm_datetime.h
@@ -1,20 +1,12 @@
/**
* @defgroup Datetime Datetime
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html datetime_inheritance_tree.png
* @image latex datetime_inheritance_tree.eps
*
- * @image html img/widget/datetime/preview-00.png
- * @image latex img/widget/datetime/preview-00.eps
+ * @brief The Datetime widget is used to display the input date & time values.
*
- * @image html img/widget/datetime/preview-01.png
- * @image latex img/widget/datetime/preview-01.eps
- *
- * @image html img/widget/datetime/preview-02.png
- * @image latex img/widget/datetime/preview-02.eps
- *
- * Datetime widget is used to display and input date & time values.
* This widget displays date and time as per the <b>system's locale</b> settings (Date
* includes Day, Month & Year along with the defined separators and
* Time includes Hour, Minute & AM/PM fields. Separator for AM/PM field is ignored.
@@ -22,15 +14,15 @@
* The corresponding Month, AM/PM strings are displayed according to the
* system’s language settings.
*
- * Datetime format is a combination of LIBC standard characters like
+ * The Datetime format is a combination of LIBC standard characters like
* “%%d %%b %%Y %%I : %%M %%p” which, as a whole represents both Date as well as Time
* format.
*
- * Elm_datetime supports only the following sub set of libc date format specifiers:
+ * Elm_datetime supports only the following sub set of LIBC date format specifiers:
*
* @b %%Y : The year as a decimal number including the century (example: 2011).
*
- * @b %%y : The year as a decimal number without a century (range 00 to 99)
+ * @b %%y : The year as a decimal number without a century (range 00 to 99).
*
* @b %%m : The month as a decimal number (range 01 to 12).
*
@@ -42,17 +34,17 @@
*
* @b %%d : The day of the month as a decimal number (range 01 to 31).
*
- * @b %%e : The day of the month as a decimal number (range 1 to 31). single
+ * @b %%e : The day of the month as a decimal number (range 1 to 31). Single
* digits are preceded by a blank.
*
* @b %%I : The hour as a decimal number using a 12-hour clock (range 01 to 12).
*
* @b %%H : The hour as a decimal number using a 24-hour clock (range 00 to 23).
*
- * @b %%k : The hour (24-hour clock) as a decimal number (range 0 to 23). single
+ * @b %%k : The hour (24-hour clock) as a decimal number (range 0 to 23). Single
* digits are preceded by a blank.
*
- * @b %%l : The hour (12-hour clock) as a decimal number (range 1 to 12); single
+ * @b %%l : The hour (12-hour clock) as a decimal number (range 1 to 12). Single
* digits are preceded by a blank.
*
* @b %%M : The minute as a decimal number (range 00 to 59).
@@ -61,7 +53,7 @@
* corresponding strings for the current locale. Noon is treated as 'PM'
* and midnight as 'AM'
*
- * @b %%P : Like %p but in lower case: 'am' or 'pm' or a corresponding string for
+ * @b %%P : Like %p, but in lower case: 'am' or 'pm' or a corresponding string for
* the current locale.
*
* @b %%c : The preferred date and time representation for the current locale.
@@ -74,7 +66,7 @@
*
* @b %%R : The hour and minute in decimal numbers using the format %H:%M.
*
- * @b %%T : The time of day in decimal numbers using the format %H:%M:%S.
+ * @b %%T : The time of the day in decimal numbers using the format %H:%M:%S.
*
* @b %%D : The date using the format %%m/%%d/%%y.
*
@@ -84,32 +76,32 @@
* visit the link:
* http://www.gnu.org/s/hello/manual/libc.html#Formatting-Calendar-Time )
*
- * Datetime widget can provide Unicode @b separators in between its fields
+ * The Datetime widget can provide Unicode @b separators in between its fields
* except for AM/PM field.
* A separator can be any <b>Unicode character</b> other than the LIBC standard
- * date format specifiers.( Example: In the format %%b %%d @b , %%y %%H @b : %%M
- * comma(,) is separator for date field %%d and colon(:) is separator for
- * hour field %%H ).
+ * date format specifiers.( Example: In the format %%b %%d , %%y %%H : %%M
+ * comma(,) is a separator for the date field %%d and colon(:) is a separator for
+ * the hour field %%H ).
*
* The default format is a predefined one, based on the system Locale.
*
- * Hour format 12hr(1-12) or 24hr(0-23) display can be selected by setting
+ * The Hour format 12hr(1-12) or 24hr(0-23) display can be selected by setting
* the corresponding user format.
*
* Datetime supports six fields: Year, Month, Date, Hour, Minute, AM/PM.
* Depending on the Datetime module that is loaded, the user can see
- * different UI to select the individual field values.
+ * different UIs to select the individual field values.
*
* The individual fields of Datetime can be arranged in any order according to the format
- * set by application.
+ * set by the application.
*
* There is a provision to set the visibility of a particular field as TRUE/ FALSE
- * so that <b>only time/ only date / only required fields</b> will be displayed.
+ * so that <b>only time/ only date / only required fields</b> are displayed.
*
- * Each field is having a default minimum and maximum values just like the daily
+ * Each field has default minimum and maximum values just like the daily
* calendar information. These min/max values can be modified as per the application usage.
*
- * User can enter the values only in between the range of maximum and minimum.
+ * A user can enter the values only in between the range of the maximum and minimum values.
* Apart from these APIs, there is a provision to display only a limited set of
* values out of the possible values. APIs to select the individual field limits
* are intended for this purpose.
@@ -119,7 +111,7 @@
*
* Datetime individual field selection is implemented in a modular style.
* Module can be implemented as a Ctxpopup based selection or an ISE based
- * selection or even a spinner like selection etc.
+ * selection, or even a spinner like selection.
*
* <b>Datetime Module design:</b>
*
@@ -166,43 +158,465 @@
*
* Any module can use the following shared functions that are implemented in elm_datetime.c :
*
- * <b>field_format_get()</b> - gives the field format.
- *
- * <b>field_limit_get()</b> - gives the field minimum, maximum limits.
- *
- * To enable a module, set the ELM_MODULES environment variable as shown:
+ * <b>field_format_get()</b> - Gives the field format.
*
- * <b>export ELM_MODULES="datetime_input_ctxpopup>datetime/api"</b>
+ * <b>field_limit_get()</b> - Gives the field minimum and maximum limits.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for datetime objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li @b "changed" - whenever Datetime field value is changed, this
+ * @ref Layout :
+ * @li @b "changed" - Whenever the Datetime field value is changed, this
* signal is sent.
- * @li @b "language,changed" - whenever system locale changes, this
+ *
+ * @li @b "language,changed" - Whenever the system locale changes, this
* signal is sent.
- * @li @c "focused" - When the datetime has received focus. (since 1.8)
- * @li @c "unfocused" - When the datetime has lost focus. (since 1.8)
*
- * Here is an example on its usage:
- * @li @ref datetime_example
+ * @{
+ */
+
+/**
+ * @brief Enumeration that identifies a Datetime field, the widget supports 6 fields : Year, Month,
+ * Date, Hour, Minute, AM/PM
*
*/
+typedef enum _Elm_Datetime_Field_Type
+{
+ ELM_DATETIME_YEAR = 0, /**< Indicates the Year field */
+ ELM_DATETIME_MONTH = 1, /**< Indicates the Month field */
+ ELM_DATETIME_DATE = 2, /**< Indicates the Date field */
+ ELM_DATETIME_HOUR = 3, /**< Indicates the Hour field */
+ ELM_DATETIME_MINUTE = 4, /**< Indicates the Minute field */
+ ELM_DATETIME_AMPM = 5, /**< Indicates the AM/PM field */
+ ELM_DATETIME_LAST = 6
+} Elm_Datetime_Field_Type;
+
+typedef enum _Elm_Datetime_Picker_Type
+{
+ ELM_DATETIME_DATE_PICKER = 0,
+ ELM_DATETIME_TIME_PICKER = 1
+} Elm_Datetime_Picker_Type;
/**
- * @addtogroup Datetime
- * @{
+ * @brief Adds a new datetime widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The default datetime format and corresponding strings are based on the current locale.
+ *
+ * @remarks This function inserts a new datetime widget on the canvas.
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_datetime_add(Evas_Object *parent);
+
+/**
+ * @brief Gets the datetime format. Format is a combination of allowed LIBC date format
+ * specifiers like: "%b %d, %Y %I : %M %p".
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The maximum allowed format length is @c 64 chars.
+ *
+ * @remarks The format can include separators for each individual datetime field except
+ * for the AM/PM field.
+ *
+ * @remarks Each separator can be a maximum of @c 6 UTF-8 bytes.
+ * Space is also taken as a separator.
+ *
+ * @remarks Following are the allowed set of format specifiers for each datetime field.
+ *
+ * @b %%Y : The year as a decimal number including the century.
+ *
+ * @b %%y : The year as a decimal number without a century (range 00 to 99).
+ *
+ * @b %%m : The month as a decimal number (range 01 to 12).
+ *
+ * @b %%b : The abbreviated month name according to the current locale.
+ *
+ * @b %%B : The full month name according to the current locale.
+ *
+ * @b %%h : The abbreviated month name according to the current locale(same as %%b).
+ *
+ * @b %%d : The day of the month as a decimal number (range 01 to 31).
+ *
+ * @b %%e : The day of the month as a decimal number (range 1 to 31). Single
+ * digits are preceded by a blank.
+ *
+ * @b %%I : The hour as a decimal number using a 12-hour clock (range 01 to 12).
+ *
+ * @b %%H : The hour as a decimal number using a 24-hour clock (range 00 to 23).
+ *
+ * @b %%k : The hour (24-hour clock) as a decimal number (range 0 to 23). Single
+ * digits are preceded by a blank.
+ *
+ * @b %%l : The hour (12-hour clock) as a decimal number (range 1 to 12). Single
+ * digits are preceded by a blank.
+ *
+ * @b %%M : The minute as a decimal number (range 00 to 59).
+ *
+ * @b %%p : Either 'AM' or 'PM' according to the given time value, or the
+ * corresponding strings for the current locale. Noon is treated as 'PM'
+ * and midnight as 'AM'.
+ *
+ * @b %%P : Like %p, but in lower case: 'am' or 'pm' or a corresponding string for
+ * the current locale.
+ *
+ * @b %%c : The preferred date and time representation for the current locale.
+ *
+ * @b %%x : The preferred date representation for the current locale without the time.
+ *
+ * @b %%X : The preferred time representation for the current locale without the date.
+ *
+ * @b %%r : The complete calendar time using the AM/PM format of the current locale.
+ *
+ * @b %%R : The hour and minute in decimal numbers using the format %H:%M.
+ *
+ * @b %%T : The time of the day in decimal numbers using the format %H:%M:%S.
+ *
+ * @b %%D : The date using the format %%m/%%d/%%y.
+ *
+ * @b %%F : The date using the format %%Y-%%m-%%d.
+ *
+ * @remarks These specifiers can be arranged in any order and the widget displays the
+ * fields accordingly.
+ *
+ * @remarks The default format is taken as per the system locale settings.
+ *
+ * @param[in] obj The datetime object
+ * @return The datetime format string \n
+ * Example: "%b %d, %Y %I : %M %p".
+ *
+ * @see elm_datetime_format_set()
+ */
+ EAPI const char *elm_datetime_format_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the datetime format. Format is a combination of allowed LIBC date format
+ * specifiers like: "%b %d, %Y %I : %M %p".
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The maximum allowed format length is @c 64 chars.
+ *
+ * @remarks The format can include separators for each individual datetime field except
+ * for the AM/PM field.
+ *
+ * @remarks Each separator can be a maximum of @c 6 UTF-8 bytes.
+ * Space is also taken as a separator.
+ *
+ * @remarks Following are the allowed set of format specifiers for each datetime field.
+ *
+ * @b %%Y : The year as a decimal number including the century.
+ *
+ * @b %%y : The year as a decimal number without a century (range 00 to 99).
+ *
+ * @b %%m : The month as a decimal number (range 01 to 12).
+ *
+ * @b %%b : The abbreviated month name according to the current locale.
+ *
+ * @b %%B : The full month name according to the current locale.
+ *
+ * @b %%h : The abbreviated month name according to the current locale(same as %%b).
+ *
+ * @b %%d : The day of the month as a decimal number (range 01 to 31).
+ *
+ * @b %%e : The day of the month as a decimal number (range 1 to 31). Single
+ * digits are preceded by a blank.
+ *
+ * @b %%I : The hour as a decimal number using a 12-hour clock (range 01 to 12).
+ *
+ * @b %%H : The hour as a decimal number using a 24-hour clock (range 00 to 23).
+ *
+ * @b %%k : The hour (24-hour clock) as a decimal number (range 0 to 23). Single
+ * digits are preceded by a blank.
+ *
+ * @b %%l : The hour (12-hour clock) as a decimal number (range 1 to 12). Single
+ * digits are preceded by a blank.
+ *
+ * @b %%M : The minute as a decimal number (range 00 to 59).
+ *
+ * @b %%p : Either 'AM' or 'PM' according to the given time value, or the
+ * corresponding strings for the current locale. Noon is treated as 'PM'
+ * and midnight as 'AM'.
+ *
+ * @b %%P : Like %p, but in lower case: 'am' or 'pm' or a corresponding string for
+ * the current locale.
+ *
+ * @b %%c : The preferred date and time representation for the current locale.
+ *
+ * @b %%x : The preferred date representation for the current locale without the time.
+ *
+ * @b %%X : The preferred time representation for the current locale without the date.
+ *
+ * @b %%r : The complete calendar time using the AM/PM format of the current locale.
+ *
+ * @b %%R : The hour and minute in decimal numbers using the format %H:%M.
+ *
+ * @b %%T : The time of the day in decimal numbers using the format %H:%M:%S.
+ *
+ * @b %%D : The date using the format %%m/%%d/%%y.
+ *
+ * @b %%F : The date using the format %%Y-%%m-%%d.
+ *
+ * @remarks These specifiers can be arranged in any order and the widget displays the
+ * fields accordingly.
+ *
+ * @remarks The default format is taken as per the system locale settings.
+ *
+ * @param[in] obj The datetime object
+ * @param[in] fmt The datetime format
+ *
+ * @see elm_datetime_format_get()
+ */
+EAPI void elm_datetime_format_set(Evas_Object *obj, const char *fmt);
+
+/**
+ * @brief Gets the upper boundary of a field.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Year: years since 1900. Negative value represents a year below 1900 (year
+ * value -30 represents 1870). Year default range is from 70 to 137.
+ *
+ * @remarks Month: default value range is from 0 to 11.
+ *
+ * @remarks Date: default value range is from 1 to 31 according to the month value.
+ *
+ * @remarks Hour: default value is in terms of the 24 hr format (0~23).
+ *
+ * @remarks Minute: default value range is from 0 to 59.
+ *
+ * @param[in] obj The datetime object
+ * @param[out] maxtime The time structure containing the maximum time value
+ * @return @c EINA_TRUE if the maximum value is returned successfully,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_datetime_value_max_set()
+ */
+EAPI Eina_Bool elm_datetime_value_max_get(const Evas_Object *obj, struct tm *maxtime);
+
+/**
+ * @brief Sets the upper boundary of a field.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Year: years since 1900. Negative value represents a year below 1900 (year
+ * value -30 represents 1870). Year default range is from 70 to 137.
+ *
+ * @remarks Month: default value range is from 0 to 11.
+ *
+ * @remarks Date: default value range is from 1 to 31 according to the month value.
+ *
+ * @remarks Hour: default value is in terms of the 24 hr format (0~23).
+ *
+ * @remarks Minute: default value range is from 0 to 59.
+ *
+ * @param[in] obj The datetime object
+ * @param[in] maxtime The time structure containing the maximum time value.
+ * @return @c EINA_TRUE if the maximum value is accepted,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_datetime_value_max_get()
+ */
+EAPI Eina_Bool elm_datetime_value_max_set(Evas_Object *obj, const struct tm *maxtime);
+
+/**
+ * @brief Gets the lower boundary of a field.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Year: years since 1900. Negative value represents a year below 1900 (year
+ * value -30 represents 1870). Year default range is from 70 to 137.
+ *
+ * @remarks Month: default value range is from 0 to 11.
+ *
+ * @remarks Date: default value range is from 1 to 31 according to the month value.
+ *
+ * @remarks Hour: default value is in terms of the 24 hr format (0~23).
+ *
+ * @remarks Minute: default value range is from 0 to 59.
+ *
+ * @param[in] obj The datetime object
+ * @param[out] mintime The time structure
+ * @return @c EINA_TRUE if the minimum value is successfully returned,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_datetime_value_min_set()
+ */
+EAPI Eina_Bool elm_datetime_value_min_get(const Evas_Object *obj, struct tm *mintime);
+
+/**
+ * @brief Sets the lower boundary of a field.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Year: years since 1900. Negative value represents a year below 1900 (year
+ * value -30 represents 1870). Year default range is from 70 to 137.
+ *
+ * @remarks Month: default value range is from 0 to 11.
+ *
+ * @remarks Date: default value range is from 1 to 31 according to the month value.
+ *
+ * @remarks Hour: default value is in terms of 24 hr format (0~23)
+ *
+ * @remarks Minute: default value range is from 0 to 59.
+ *
+ * @param[in] obj The datetime object
+ * @param[in] mintime The time structure containing the minimum time value
+ * @return @c EINA_TRUE if the minimum value is accepted,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_datetime_value_min_get()
+ */
+EAPI Eina_Bool elm_datetime_value_min_set(Evas_Object *obj, const struct tm *mintime);
+
+/**
+ * @brief Gets the field limits of a field.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Limits can be set to individual fields, independently, except for the AM/PM field.
+ * Any field can display values only in between these Minimum and Maximum limits unless
+ * the corresponding time value is restricted from MinTime to MaxTime.
+ * That is, Min/ Max field limits always work under the limitations of MinTime/ MaxTime.
+ *
+ * @remarks There is no provision to set the limits of the AM/PM field.
+ *
+ * @param[in] obj The datetime object
+ * @param[in] fieldtype The type of the field, @c ELM_DATETIME_YEAR
+ * @param[out] min A reference to the field's minimum value
+ * @param[out] max A reference to field's maximum value
+ *
+ * @see elm_datetime_field_limit_set()
+ */
+EAPI void elm_datetime_field_limit_get(const Evas_Object *obj, Elm_Datetime_Field_Type fieldtype, int *min, int *max);
+
+/**
+ * @brief Sets the field limits of a field.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Limits can be set to individual fields, independently, except for the AM/PM field.
+ * Any field can display values only in between these Minimum and Maximum limits unless
+ * the corresponding time value is restricted from MinTime to MaxTime.
+ * That is, Min/ Max field limits always work under the limitations of MinTime/ MaxTime.
+ *
+ * @remarks There is no provision to set the limits of the AM/PM field.
+ *
+ * @param[in] obj The datetime object
+ * @param[in] fieldtype The type of the field, @c ELM_DATETIME_YEAR
+ * @param[in] min A reference to the field's minimum value
+ * @param[in] max A reference to thr field's maximum value
+ *
+ * @see elm_datetime_field_limit_set()
+ */
+EAPI void elm_datetime_field_limit_set(Evas_Object *obj, Elm_Datetime_Field_Type fieldtype, int min, int max);
+
+/**
+ * @brief Gets the current value of a field.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Year: years since 1900. Negative value represents a year below 1900 (year
+ * value -30 represents 1870). Year default range is from 70 to 137.
+ *
+ * @remarks Month: default value range is from 0 to 11.
+ *
+ * @remarks Date: default value range is from 1 to 31 according to the month value.
+ *
+ * @remarks Hour: default value is in terms of the 24 hr format (0~23).
+ *
+ * @remarks Minute: default value range is from 0 to 59.
+ *
+ * @param[in] obj The datetime object
+ * @param[in] currtime The time structure
+ * @return @c EINA_TRUE if the current time is returned successfully,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_datetime_field_value_set()
+ */
+EAPI Eina_Bool elm_datetime_value_get(const Evas_Object *obj, struct tm *currtime);
+
+/**
+ * @brief Sets the current value of the Datetime object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Year: years since 1900. Negative value represents a year below 1900 (year
+ * value -30 represents 1870). Year default range is from 70 to 137.
+ *
+ * @remarks Month: default value range is from 0 to 11.
+ *
+ * @remarks Date: default value range is from 1 to 31 according to the month value.
+ *
+ * @remarks Hour: default value is in terms of the 24 hr format (0~23)
+ *
+ * @remarks Minute: default value range is from 0 to 59.
+ *
+ *
+ * @param[in] obj The datetime object
+ * @param[in] newtime The time structure filled with values to be set
+ * @return @c EINA_TRUE if the current time is set successfully,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_datetime_value_set()
+ */
+EAPI Eina_Bool elm_datetime_value_set(Evas_Object *obj, const struct tm *newtime);
+
+/**
+ * @brief Gets whether a field can be visible.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The datetime object
+ * @param[in] fieldtype The type of the field, @c ELM_DATETIME_YEAR
+ * @return @c EINA_TRUE if the field can be visible,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_datetime_field_visible_set()
+ */
+EAPI Eina_Bool elm_datetime_field_visible_get(const Evas_Object *obj, Elm_Datetime_Field_Type fieldtype);
+
+/**
+ * @brief Sets a field to be visible.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Setting this API to @c true does not ensure that the field is visible, apart from
+ * this, the field's format must be present in the Datetime overall format.
+ * If a field's visibility is set to @c false then it won't appear even though
+ * its format is present in the overall format.
+ * So if and only if this API is set to @c true and the corresponding field's format
+ * is present in the Datetime format, the field is visible.
+ *
+ * @remarks By default the field visibility is set to @c true.
+ *
+ * @param[in] obj The datetime object
+ * @param[in] fieldtype The type of the field, @c ELM_DATETIME_YEAR
+ * @param[in] visible If @c EINA_TRUE the field can be visible,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_datetime_field_visible_get()
+ */
+EAPI void elm_datetime_field_visible_set(Evas_Object *obj, Elm_Datetime_Field_Type fieldtype, Eina_Bool visible);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief This API is used to get the picker layout.
+.* @details Based on the format of the datetime date and time picker layouts are created.
+ * If format set for date or time then get the date or picker layout passing approprite type
+ * respectively else it will return null.This picker layout can be used in any widget or layout.
+ *
+ * @param obj The datetime object
+ * @param type Type of the field.ELM_DATETIME_DATE_PICKER or ELM_DATETIME_TIME_PICKER
*/
+EAPI Evas_Object* elm_datetime_picker_get(Evas_Object *obj, Elm_Datetime_Picker_Type type);
-#include "elm_datetime_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_datetime_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_datetime_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_dayselector.h b/src/lib/elm_dayselector.h
index 9000997d1..de77d6ccb 100644
--- a/src/lib/elm_dayselector.h
+++ b/src/lib/elm_dayselector.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Dayselector Dayselector
* @ingroup Elementary
*
@@ -13,27 +14,27 @@
*"elm_dayselector" is a day selection widget. It displays all seven days of
* the week and allows the user to select multiple days.
*
- * The selection can be toggle by just clicking on the day.
+ * The selection can be toggled by just clicking on the day.
*
* Dayselector also provides the functionality to check whether a day is
* selected or not.
*
- * First day of the week is taken from config settings by default. It can be
- * altered by using the API elm_dayselector_week_start_set() API.
+ * First day of the week is taken from the config settings by default. It can be
+ * altered by using the elm_dayselector_week_start_set() API.
*
* APIs are provided for setting the duration of weekend
* elm_dayselector_weekend_start_set() and elm_dayselector_weekend_length_set()
* does this job.
*
* Two styles of weekdays and weekends are supported in Dayselector.
- * Application can emit signals on individual check objects for setting the
+ * Applications can emit signals on individual check objects for setting the
* weekday, weekend styles.
*
* Once the weekend start day or weekend length changes, all the weekday &
- * weekend styles will be reset to default style. It's the application's
- * responsibility to set the styles again by sending corresponding signals.
+ * weekend styles are reset to the default style. It's the application's
+ * responsibility to set the styles again by the sending corresponding signals.
*
- * Supported elm_object_item common APIs.
+ * Supported common elm_object_item APIs.
*
* @li @ref elm_object_part_text_set,
* @li @ref elm_object_part_text_get,
@@ -58,30 +59,133 @@
* functions acting on it also work for dayselector objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li @c "dayselector,changed" - when the user changes the state of a day.
- * @li @c "language,changed" - the program's language changed
+ * @ref Layout :
+ * @li @c "dayselector,changed" - When the user changes the state of a day.
+ * @li @c "language,changed" - The program's language is changed.
*
* Available styles for dayselector are:
* @li default
*
- * This example shows the usage of the widget.
- * @li @ref dayselector_example
+ * @{
+ */
+
+/**
+ * @brief Enumeration that identifies the day of the week.
+ * @remarks This API can call the selection/unselection of a day with this as a parameter.
*
+ * @see elm_dayselector_day_selected_set()
+ * @see elm_dayselector_day_selected_get()
*/
+typedef enum
+{
+ ELM_DAYSELECTOR_SUN = 0,/**< Indicates Sunday */
+ ELM_DAYSELECTOR_MON, /**< Indicates Monday */
+ ELM_DAYSELECTOR_TUE, /**< Indicates Tuesday */
+ ELM_DAYSELECTOR_WED, /**< Indicates Wednesday */
+ ELM_DAYSELECTOR_THU, /**< Indicates Thursday */
+ ELM_DAYSELECTOR_FRI, /**< Indicates Friday */
+ ELM_DAYSELECTOR_SAT, /**< Indicates Saturday */
+ ELM_DAYSELECTOR_MAX /**< Sentinel value, @b don't use */
+} Elm_Dayselector_Day;
/**
- * @addtogroup Dayselector
- * @{
+ * @brief Adds the dayselector.
+ *
+ * @param[in] parent The parent object
+ * @return A new dayselector object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_dayselector_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the state of a given Dayselector_Day.
+ *
+ * @param[in] obj The Dayselector object
+ * @param[in] day The Dayselector_Day that the user want to set state of
+ * @param[in] selected The state of the day, @c EINA_TRUE is selected
+ *
+ * @see Elm_Dayselector_Day
+ * @see elm_dayselector_day_selected_get()
+ */
+EAPI void elm_dayselector_day_selected_set(Evas_Object *obj, Elm_Dayselector_Day day, Eina_Bool selected);
+
+/**
+ * @brief Gets the state of a given Dayselector_Day.
+ *
+ * @param[in] obj The Dayselector object
+ * @param[in] day The Dayselector_Day that the user want to know state of
+ * @return @c EINA_TRUE if the day is selected,
+ * otherwise @c EINA_FALSE
+ *
+ * @see Elm_Dayselector_Day
+ * @see elm_dayselector_day_selected_set()
+ */
+EAPI Eina_Bool elm_dayselector_day_selected_get(const Evas_Object *obj, Elm_Dayselector_Day day);
+
+/**
+ * @brief Sets the starting day of Dayselector.
+ *
+ * @param[in] obj The Dayselector object
+ * @param[in] day The Dayselector_Day whose first day the user wants to display
+ *
+ * @see Elm_Dayselector_Day
+ * @see elm_dayselector_week_start_get()
+ */
+EAPI void elm_dayselector_week_start_set(Evas_Object *obj, Elm_Dayselector_Day day);
+
+/**
+ * @brief Gets the starting day of Dayselector.
+ *
+ * @param[in] obj The Dayselector object
+ * @return The day from where the Dayselector displays all the weekdays in order
+ *
+ * @see Elm_Dayselector_Day
+ * @see elm_dayselector_week_start_set()
+ */
+EAPI Elm_Dayselector_Day elm_dayselector_week_start_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the weekend starting day of Dayselector.
+ *
+ * @param[in] obj The Dayselector object
+ * @param[in] day The Dayselector_Day which is the first day from where weekend starts
+ *
+ * @see Elm_Dayselector_Day
+ * @see elm_dayselector_weekend_start_get()
+ */
+EAPI void elm_dayselector_weekend_start_set(Evas_Object *obj, Elm_Dayselector_Day day);
+
+/**
+ * @brief Gets the weekend starting day of Dayselector.
+ *
+ * @param[in] obj The Dayselector object
+ * @return The Elm_Dayselector_Day Day from where the weekend starts
+ *
+ * @see Elm_Dayselector_Day
+ * @see elm_dayselector_weekend_start_set()
+ */
+EAPI Elm_Dayselector_Day elm_dayselector_weekend_start_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the weekend length of Dayselector.
+ *
+ * @param[in] obj The Dayselector object
+ * @param[in] length The weekend length, number of days as an integer
+ *
+ * @see elm_dayselector_weekend_length_get()
+ */
+EAPI void elm_dayselector_weekend_length_set(Evas_Object *obj, unsigned int length);
+
+/**
+ * @brief Gets the weekend length of Dayselector.
+ *
+ * @param[in] obj The Dayselector object
+ * @return The number of days marked as a weekend
+ *
+ * @see Elm_Dayselector_Day
+ * @see elm_dayselector_weekend_length_set()
*/
+EAPI unsigned int elm_dayselector_weekend_length_get(const Evas_Object *obj);
-#include "elm_dayselector_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_dayselector_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_dayselector_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_debug.h b/src/lib/elm_debug.h
index f5de943ec..41e611c62 100644
--- a/src/lib/elm_debug.h
+++ b/src/lib/elm_debug.h
@@ -1,25 +1,27 @@
/**
* @defgroup Debug Debug
- * @ingroup Elementary
- * Don't use it unless you are sure.
+ * @ingroup elm_infra_group
+ * @brief Don't use it unless you are sure.
*
* @{
*/
/**
- * Print Tree object hierarchy in stdout
+ * @brief Prints the Tree object hierarchy in stdout.
*
- * @param top The root object
- * @ingroup Debug
+ * @since_tizen 2.3
+ *
+ * @param[in] top The root object
*/
EAPI void elm_object_tree_dump(const Evas_Object *top);
/**
- * Print Elm Objects tree hierarchy in file as dot(graphviz) syntax.
+ * @brief Prints the Elm Objects tree hierarchy in a file as dot(graphviz) syntax.
+ *
+ * @since_tizen 2.3
*
- * @param top The root object
- * @param file The path of output file
- * @ingroup Debug
+ * @param[in] top The root object
+ * @param[in] file The path of the output file
*/
EAPI void elm_object_tree_dot_dump(const Evas_Object *top, const char *file);
diff --git a/src/lib/elm_deprecated.h b/src/lib/elm_deprecated.h
index 2ad95a9b5..6b1f53051 100644
--- a/src/lib/elm_deprecated.h
+++ b/src/lib/elm_deprecated.h
@@ -1,4 +1,3 @@
-
EINA_DEPRECATED EAPI Evas_Object *elm_scrolled_entry_add(Evas_Object *parent);
EINA_DEPRECATED EAPI void elm_scrolled_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line);
EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_single_line_get(const Evas_Object *obj);
@@ -63,286 +62,289 @@ EINA_DEPRECATED EAPI void elm_scrolled_entry_cnp_textonly_set(Evas_Objec
EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_cnp_textonly_get(Evas_Object *obj);
/**
- * Convert a pixel coordinate (x,y) into a geographic coordinate
- * (longitude, latitude).
- *
- * @param obj The map object.
- * @param x the coordinate.
- * @param y the coordinate.
- * @param size the size in pixels of the map.
- * The map is a square and generally his size is : pow(2.0, zoom)*256.
- * @param lon Pointer to store the longitude that correspond to x.
- * @param lat Pointer to store the latitude that correspond to y.
+ * @brief Converts a pixel coordinate (x,y) into a geographic coordinate
+ * (longitude, latitude).
*
- * @note Origin pixel point is the top left corner of the viewport.
- * Map zoom and size are taken on account.
+ * @remarks The origin pixel point is the top left corner of the viewport.
+ * Map zoom and size are taken into account.
*
- * @see elm_map_utils_convert_geo_into_coord() if you need the inverse.
+ * @param obj The map object
+ * @param x The coordinate
+ * @param y The coordinate
+ * @param size The size in pixels of the map \n
+ * The map is a square and generally its size is : pow(2.0, zoom)*256.
+ * @param lon The pointer to store the longitude that corresponds to @a x
+ * @param lat The pointer to store the latitude that corresponds to @a y
*
* @deprecated Use elm_map_canvas_to_geo_convert() instead
+ *
+ * @see elm_map_utils_convert_geo_into_coord() if you need the inverse.
*/
EINA_DEPRECATED EAPI void elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int size, double *lon, double *lat);
/**
- * Convert a geographic coordinate (longitude, latitude) into a pixel
- * coordinate (x, y).
- *
- * @param obj The map object.
- * @param lon the longitude.
- * @param lat the latitude.
- * @param size the size in pixels of the map. The map is a square
- * and generally his size is : pow(2.0, zoom)*256.
- * @param x Pointer to store the horizontal pixel coordinate that
- * correspond to the longitude.
- * @param y Pointer to store the vertical pixel coordinate that
- * correspond to the latitude.
- *
- * @note Origin pixel point is the top left corner of the viewport.
- * Map zoom and size are taken on account.
+ * @brief Converts a geographic coordinate (longitude, latitude) into a pixel
+ * coordinate (x, y).
*
- * @see elm_map_utils_convert_coord_into_geo() if you need the inverse.
+ * @remarks The origin pixel point is the top left corner of the viewport.
+ * Map zoom and size are taken into account.
+ *
+ * @param obj The map object
+ * @param lon The longitude
+ * @param lat The latitude
+ * @param size The size in pixels of the map \n
+ * The map is a square
+ * and generally its size is : pow(2.0, zoom)*256.
+ * @param x The pointer to store the horizontal pixel coordinate that
+ * corresponds to the longitude
+ * @param y The pointer to store the vertical pixel coordinate that
+ * corresponds to the latitude.
+ *
+ * @deprecated Use Use elm_map_canvas_to_geo_convert() instead
*
- * @deprecatedUse Use elm_map_canvas_to_geo_convert() instead
+ * @see elm_map_utils_convert_coord_into_geo() if you need the inverse.
*/
EINA_DEPRECATED EAPI void elm_map_utils_convert_geo_into_coord(const Evas_Object *obj, double lon, double lat, int size, int *x, int *y);
/**
- * Get the information of downloading status.
+ * @brief Gets information on the downloading status.
*
- * @param obj The map object.
- * @param try_num Pointer to store number of tiles being downloaded.
- * @param finish_num Pointer to store number of tiles successfully
- * downloaded.
+ * @details This gets the current downloading status for the map object, the number
+ * of tiles being downloaded, and the number of tiles already downloaded.
*
- * This gets the current downloading status for the map object, the number
- * of tiles being downloaded and the number of tiles already downloaded.
+ * @param obj The map object
+ * @param try_num The pointer to store the number of tiles being downloaded
+ * @param finish_num The pointer to store the number of tiles that are successfully downloaded
*
- * @deprecatedUse Use elm_map_tile_load_status_get() instead
+ * @deprecated Use Use elm_map_tile_load_status_get() instead.
*/
EINA_DEPRECATED EAPI void elm_map_utils_downloading_status_get(const Evas_Object *obj, int *try_num, int *finish_num);
/**
- * Convert a geographic coordinate (longitude, latitude) into a name
- * (address).
+ * @brief Converts a geographic coordinate (longitude, latitude) into a name
+ * (address).
+ *
+ * @remarks To get the string for this address, elm_map_name_address_get()
+ * should be used.
*
- * @param obj The map object.
- * @param lon the longitude.
- * @param lat the latitude.
- * @return name A #Elm_Map_Name handle for this coordinate.
+ * @param obj The map object
+ * @param lon The longitude
+ * @param lat The latitude
+ * @return name A #Elm_Map_Name handle for this coordinate
*
- * To get the string for this address, elm_map_name_address_get()
- * should be used.
+ * @deprecated Use elm_map_name_add() instead.
*
- * @see elm_map_utils_convert_name_into_coord() if you need the inverse.
- * @deprecatedUse Use elm_map_name_add() instead
+ * @see elm_map_utils_convert_name_into_coord() if you need to do an inverse.
*
*/
EINA_DEPRECATED EAPI Elm_Map_Name *elm_map_utils_convert_coord_into_name(const Evas_Object *obj, double lon, double lat);
/**
- * Convert a name (address) into a geographic coordinate
- * (longitude, latitude).
+ * @brief Converts a name (address) into a geographic coordinate
+ * (longitude, latitude).
*
- * @param obj The map object.
- * @param address The address.
- * @return name A #Elm_Map_Name handle for this address.
+ * @remarks To get the longitude and latitude, elm_map_name_region_get()
+ * should be used.
*
- * To get the longitude and latitude, elm_map_name_region_get()
- * should be used.
+ * @param obj The map object
+ * @param address The address
+ * @return name A #Elm_Map_Name handle for this address
*
- * @see elm_map_utils_convert_coord_into_name() if you need the inverse.
- * @deprecatedUse Use elm_map_name_geo_request() instead
+ * @deprecated Use elm_map_name_geo_request() instead.
+ *
+ * @see elm_map_utils_convert_coord_into_name() if you need to do an inverse.
*
*/
EINA_DEPRECATED EAPI Elm_Map_Name *elm_map_utils_convert_name_into_coord(const Evas_Object *obj, char *address);
/**
- * Add a new marker to the map object.
+ * @brief Adds a new marker to the map object.
+ *
+ * @remarks A marker is created and shown at a specific point of the map, defined
+ * by @a lon and @a lat.
*
- * @param obj The map object.
- * @param lon The longitude of the marker.
- * @param lat The latitude of the marker.
- * @param clas The class, to use when marker @b isn't grouped to others.
- * @param clas_group The class group, to use when marker is grouped to others
- * @param data The data passed to the callbacks.
+ * @remarks It is displayed using a style defined by @a clas when this marker
+ * is displayed alone (not grouped). A new class can be created with
+ * elm_map_marker_class_new().
*
- * @return The created marker or @c NULL upon failure.
+ * @remarks If the marker is grouped to other markers, it is displayed with a
+ * style defined by the @a clas_group. Markers with the same group are grouped
+ * if they are close. A new group class can be created with
+ * elm_map_marker_group_class_new().
*
- * A marker will be created and shown in a specific point of the map, defined
- * by @p lon and @p lat.
+ * @remarks Markers created with this method can be deleted with
+ * elm_map_marker_remove().
*
- * It will be displayed using style defined by @p class when this marker
- * is displayed alone (not grouped). A new class can be created with
- * elm_map_marker_class_new().
+ * @remarks A marker can have associated content displayed as a bubble,
+ * when a user clicks on it, or as an icon. These objects
+ * are fetched using class' callback functions.
*
- * If the marker is grouped to other markers, it will be displayed with
- * style defined by @p class_group. Markers with the same group are grouped
- * if they are close. A new group class can be created with
- * elm_map_marker_group_class_new().
+ * @param obj The map object
+ * @param lon The longitude of the marker
+ * @param lat The latitude of the marker
+ * @param clas The class to use when the marker @b isn't grouped to others
+ * @param clas_group The class group to use when the marker is grouped to others
+ * @param data The data passed to the callbacks
*
- * Markers created with this method can be deleted with
- * elm_map_marker_remove().
+ * @return The created marker, otherwise @c NULL on failure
*
- * A marker can have associated content to be displayed by a bubble,
- * when a user click over it, as well as an icon. These objects will
- * be fetch using class' callback functions.
+ * @deprecated Use Elm_Map_Overlay instead
*
* @see elm_map_marker_class_new()
* @see elm_map_marker_group_class_new()
* @see elm_map_marker_remove()
- *
- * @deprecated Use Elm_Map_Overlay instead
*/
EINA_DEPRECATED EAPI Elm_Map_Marker *elm_map_marker_add(Evas_Object *obj, double lon, double lat, Elm_Map_Marker_Class *clas, Elm_Map_Group_Class *clas_group, void *data);
/**
- * Remove a marker from the map.
- *
- * @param marker The marker to remove.
+ * @brief Removes a marker from the map.
*
- * @see elm_map_marker_add()
+ * @param marker The marker to remove
*
* @deprecated Use Elm_Map_Overlay instead
+ *
+ * @see elm_map_marker_add()
*/
EINA_DEPRECATED EAPI void elm_map_marker_remove(Elm_Map_Marker *marker);
/**
- * Get the current coordinates of the marker.
- *
- * @param marker marker.
- * @param lat Pointer to store the marker's latitude.
- * @param lon Pointer to store the marker's longitude.
+ * @brief Gets the current coordinates of the marker.
*
- * These values are set when adding markers, with function
- * elm_map_marker_add().
+ * @remarks These values are set when adding markers using the function
+ * elm_map_marker_add().
*
- * @see elm_map_marker_add()
+ * @param marker The marker
+ * @param lat The pointer to store the marker's latitude
+ * @param lon The pointer to store the marker's longitude
*
* @deprecated Use Elm_Map_Overlay instead
+ *
+ * @see elm_map_marker_add()
*/
EINA_DEPRECATED EAPI void elm_map_marker_region_get(const Elm_Map_Marker *marker, double *lon, double *lat);
/**
- * Animatedly bring in given marker to the center of the map.
+ * @brief Animatedly brings the given marker to the center of the map.
+ *
+ * @remarks This causes the map to jump to the given @a marker coordinates
+ * and display it (by scrolling) in the center of the viewport, if it is not
+ * already centered. This uses animation to do so and takes a period
+ * of time to complete.
*
- * @param marker The marker to center at.
+ * @param marker The marker to bring to the center
*
- * This causes map to jump to the given @p marker's coordinates
- * and show it (by scrolling) in the center of the viewport, if it is not
- * already centered. This will use animation to do so and take a period
- * of time to complete.
+ * @deprecated Use Elm_Map_Overlay instead
*
* @see elm_map_marker_show() for a function to avoid animation.
* @see elm_map_marker_region_get()
- *
- * @deprecated Use Elm_Map_Overlay instead
*/
EINA_DEPRECATED EAPI void elm_map_marker_bring_in(Elm_Map_Marker *marker);
/**
- * Show the given marker at the center of the map, @b immediately.
+ * @brief Shows the given marker at the center of the map, @b immediately.
+ *
+ * @remarks This causes the map to @b redraw its viewport's contents to the
+ * region containing the given @a marker coordinates, that are
+ * moved to the center of the map.
*
- * @param marker The marker to center at.
+ * @param marker The marker to show at the center
*
- * This causes map to @b redraw its viewport's contents to the
- * region containing the given @p marker's coordinates, that will be
- * moved to the center of the map.
+ * @deprecated Use Elm_Map_Overlay instead
*
* @see elm_map_marker_bring_in() for a function to move with animation.
- * @see elm_map_markers_list_show() if more than one marker need to be
- * displayed.
+ * @see elm_map_markers_list_show() if more than one marker needs to be
+ * displayed.
* @see elm_map_marker_region_get()
- *
- * @deprecated Use Elm_Map_Overlay instead
*/
EINA_DEPRECATED EAPI void elm_map_marker_show(Elm_Map_Marker *marker);
/**
- * Move and zoom the map to display a list of markers.
+ * @brief Moves and zooms the map to display a list of markers.
*
- * @param markers A list of #Elm_Map_Marker handles.
+ * @remarks The map is centered at the center point of the markers in the list.
+ * Then the map is zoomed in order to fit the markers using the maximum
+ * zoom which allows display of all the markers.
*
- * The map will be centered on the center point of the markers in the list.
- * Then the map will be zoomed in order to fit the markers using the maximum
- * zoom which allows display of all the markers.
+ * @remarks All the markers should belong to the same map object.
*
- * @warning All the markers should belong to the same map object.
+ * @param markers A list of #Elm_Map_Marker handles
+ *
+ * @deprecated Use Elm_Map_Overlay instead
*
* @see elm_map_marker_show() to show a single marker.
* @see elm_map_marker_bring_in()
- *
- * @deprecated Use Elm_Map_Overlay instead
*/
EINA_DEPRECATED EAPI void elm_map_markers_list_show(Eina_List *markers);
/**
- * Get the Evas object returned by the Elm_Map_Marker_Get_Func callback
+ * @brief Gets the Evas object returned by the Elm_Map_Marker_Get_Func callback.
*
- * @param marker The marker which content should be returned.
- * @return Return the evas object if it exists, else @c NULL.
+ * @remarks To set callback function #Elm_Map_Marker_Get_Func for the marker class,
+ * elm_map_marker_class_get_cb_set() should be used.
*
- * To set callback function #Elm_Map_Marker_Get_Func for the marker class,
- * elm_map_marker_class_get_cb_set() should be used.
+ * @remarks This content is what is inside the bubble that is displayed
+ * when a user clicks over the marker.
*
- * This content is what will be inside the bubble that will be displayed
- * when an user clicks over the marker.
+ * @remarks This returns the actual Evas object to be placed inside
+ * the bubble. This may be @c NULL, as it may
+ * not have been created or may have been deleted, at any time, by
+ * the map. <b>Do not modify this object</b> (move, resize,
+ * show, hide, etc.), as the map is controlling it. This
+ * function is for querying, emitting custom signals or hooking
+ * lower level callbacks for events on that object. Do not delete
+ * this object under any circumstances.
*
- * This returns the actual Evas object used to be placed inside
- * the bubble. This may be @c NULL, as it may
- * not have been created or may have been deleted, at any time, by
- * the map. <b>Do not modify this object</b> (move, resize,
- * show, hide, etc.), as the map is controlling it. This
- * function is for querying, emitting custom signals or hooking
- * lower level callbacks for events on that object. Do not delete
- * this object under any circumstances.
+ * @param marker The marker with content to be returned
+ * @return The evas object if it exists, otherwise @c NULL
*
* @deprecated Use Elm_Map_Overlay instead
*/
EINA_DEPRECATED EAPI Evas_Object *elm_map_marker_object_get(const Elm_Map_Marker *marker);
/**
- * Update the marker
+ * @brief Updates the marker.
*
- * @param marker The marker to be updated.
+ * @remarks If content is set for this marker, it calls the function #Elm_Map_Marker_Del_Func to delete it,
+ * and then it fetches the content again with #Elm_Map_Marker_Get_Func.
*
- * If a content is set to this marker, it will call function to delete it,
- * #Elm_Map_Marker_Del_Func, and then will fetch the content again with
- * #Elm_Map_Marker_Get_Func.
+ * @remarks These functions are set for the marker class with
+ * elm_map_marker_class_get_cb_set() and elm_map_marker_class_del_cb_set().
*
- * These functions are set for the marker class with
- * elm_map_marker_class_get_cb_set() and elm_map_marker_class_del_cb_set().
+ * @param marker The marker to be updated
*
* @deprecated Use Elm_Map_Overlay instead
*/
EINA_DEPRECATED EAPI void elm_map_marker_update(Elm_Map_Marker *marker);
/**
- * Create a new group class.
+ * @brief Creates a new group class.
+ *
+ * @remarks Each marker must be associated to a group class. Markers in the same
+ * group are grouped if they are close.
*
- * @param obj The map object.
- * @return Returns the new group class.
+ * @remarks The group class defines the style of the marker when a marker is grouped
+ * to others markers. When it is alone, another class is used.
*
- * Each marker must be associated to a group class. Markers in the same
- * group are grouped if they are close.
+ * @remarks A group class needs to be provided when creating a marker with
+ * elm_map_marker_add().
*
- * The group class defines the style of the marker when a marker is grouped
- * to others markers. When it is alone, another class will be used.
+ * @remarks Some properties and functions that can be set by the class are:
+ * - style - With elm_map_group_class_style_set().
+ * - data - To be associated to the group class. It can be set using
+ * elm_map_group_class_data_set().
+ * - min zoom - To display markers, set using
+ * elm_map_group_class_zoom_displayed_set().
+ * - max zoom - To group markers, set using
+ * elm_map_group_class_zoom_grouped_set().
+ * - visibility - To set if markers are visible or not, set using
+ * elm_map_group_class_hide_set().
+ * - #Elm_Map_Group_Icon_Get_Func - Used to fetch the icon for the markers group classes.
+ * It can be set using elm_map_group_class_icon_cb_set().
*
- * A group class will need to be provided when creating a marker with
- * elm_map_marker_add().
+ * @param obj The map object
+ * @return The new group class
*
- * Some properties and functions can be set by class, as:
- * - style, with elm_map_group_class_style_set()
- * - data - to be associated to the group class. It can be set using
- * elm_map_group_class_data_set().
- * - min zoom to display markers, set with
- * elm_map_group_class_zoom_displayed_set().
- * - max zoom to group markers, set using
- * elm_map_group_class_zoom_grouped_set().
- * - visibility - set if markers will be visible or not, set with
- * elm_map_group_class_hide_set().
- * - #Elm_Map_Group_Icon_Get_Func - used to fetch icon for markers group classes.
- * It can be set using elm_map_group_class_icon_cb_set().
+ * @deprecated Use Elm_Map_Overlay instead
*
* @see elm_map_marker_add()
* @see elm_map_group_class_style_set()
@@ -351,53 +353,52 @@ EINA_DEPRECATED EAPI void elm_map_marker_update(Elm_Map_Marker
* @see elm_map_group_class_zoom_grouped_set()
* @see elm_map_group_class_hide_set()
* @see elm_map_group_class_icon_cb_set()
- *
- * @deprecated Use Elm_Map_Overlay instead
*/
EINA_DEPRECATED EAPI Elm_Map_Group_Class *elm_map_group_class_new(Evas_Object *obj);
/**
- * Create a new marker class.
+ * @brief Creates a new marker class.
+ *
+ * @remarks Each marker must be associated to a class.
*
- * @param obj The map object.
- * @return Returns the new group class.
+ * @remarks The marker class defines the style of the marker when a marker is
+ * displayed alone, i.e., not grouped to others markers. When grouped
+ * it uses the group class style.
*
- * Each marker must be associated to a class.
+ * @remarks A marker class needs to be provided when creating a marker using
+ * elm_map_marker_add().
*
- * The marker class defines the style of the marker when a marker is
- * displayed alone, i.e., not grouped to to others markers. When grouped
- * it will use group class style.
+ * @remarks Some properties and functions that can be set by the class are:
+ * - style - With elm_map_marker_class_style_set().
+ * - #Elm_Map_Marker_Icon_Get_Func - Used to fetch the icon for the markers classes.
+ * It can be set using elm_map_marker_class_icon_cb_set().
+ * - #Elm_Map_Marker_Get_Func - Used to fetch bubble content for marker classes.
+ * Set using elm_map_marker_class_get_cb_set().
+ * - #Elm_Map_Marker_Del_Func - Used to delete bubble content for marker classes.
+ * Set using elm_map_marker_class_del_cb_set().
*
- * A marker class will need to be provided when creating a marker with
- * elm_map_marker_add().
+ * @param obj The map object
+ * @return The new group class
*
- * Some properties and functions can be set by class, as:
- * - style, with elm_map_marker_class_style_set()
- * - #Elm_Map_Marker_Icon_Get_Func - used to fetch icon for markers classes.
- * It can be set using elm_map_marker_class_icon_cb_set().
- * - #Elm_Map_Marker_Get_Func - used to fetch bubble content for marker classes.
- * Set using elm_map_marker_class_get_cb_set().
- * - #Elm_Map_Marker_Del_Func - used to delete bubble content for marker classes.
- * Set using elm_map_marker_class_del_cb_set().
+ * @deprecated Use Elm_Map_Overlay instead
*
* @see elm_map_marker_add()
* @see elm_map_marker_class_style_set()
* @see elm_map_marker_class_icon_cb_set()
* @see elm_map_marker_class_get_cb_set()
* @see elm_map_marker_class_del_cb_set()
- *
- * @deprecated Use Elm_Map_Overlay instead
*/
EINA_DEPRECATED EAPI Elm_Map_Marker_Class *elm_map_marker_class_new(Evas_Object *obj);
/**
- * Remove a route from the map.
+ * @brief Removes a route from the map.
*
- * @param route The route to remove.
+ * @param route The route to remove
*
- * @see elm_map_route_add()
* @deprecated Use elm_map_route_del() instead
*
+ * @see elm_map_route_add()
+ *
*/
EINA_DEPRECATED EAPI void elm_map_route_remove(Elm_Map_Route *route);
@@ -422,24 +423,24 @@ EINA_DEPRECATED EAPI void elm_calendar_day_selection_disabled_se
EINA_DEPRECATED EAPI Eina_Bool elm_calendar_day_selection_disabled_get(const Evas_Object *obj);
/**
- * @deprecated Possible orient values for notify.
+ * @brief Enumeration of values that should be used in conjunction with elm_notify_orient_set() to
+ * set the position in which the notification should appear(relative to its parent)
+ * and in conjunction with elm_notify_orient_get() to know where the notification
+ * is appearing.
*
- * This values should be used in conjunction to elm_notify_orient_set() to
- * set the position in which the notify should appear(relative to its parent)
- * and in conjunction with elm_notify_orient_get() to know where the notify
- * is appearing.
+ * @deprecated Possible orient values for a notification.
*/
typedef enum
{
- ELM_NOTIFY_ORIENT_TOP, /**< Notify should appear in the top of parent, default */
- ELM_NOTIFY_ORIENT_CENTER, /**< Notify should appear in the center of parent */
- ELM_NOTIFY_ORIENT_BOTTOM, /**< Notify should appear in the bottom of parent */
- ELM_NOTIFY_ORIENT_LEFT, /**< Notify should appear in the left of parent */
- ELM_NOTIFY_ORIENT_RIGHT, /**< Notify should appear in the right of parent */
- ELM_NOTIFY_ORIENT_TOP_LEFT, /**< Notify should appear in the top left of parent */
- ELM_NOTIFY_ORIENT_TOP_RIGHT, /**< Notify should appear in the top right of parent */
- ELM_NOTIFY_ORIENT_BOTTOM_LEFT, /**< Notify should appear in the bottom left of parent */
- ELM_NOTIFY_ORIENT_BOTTOM_RIGHT, /**< Notify should appear in the bottom right of parent */
+ ELM_NOTIFY_ORIENT_TOP, /**< Notification should appear at the top of the parent, default */
+ ELM_NOTIFY_ORIENT_CENTER, /**< Notification should appear in the center of the parent */
+ ELM_NOTIFY_ORIENT_BOTTOM, /**< Notification should appear at the bottom of the parent */
+ ELM_NOTIFY_ORIENT_LEFT, /**< Notification should appear on the left of the parent */
+ ELM_NOTIFY_ORIENT_RIGHT, /**< Notification should appear on the right of the parent */
+ ELM_NOTIFY_ORIENT_TOP_LEFT, /**< Notification should appear in the top left corner of the parent */
+ ELM_NOTIFY_ORIENT_TOP_RIGHT, /**< Notification should appear in the top right corner of the parent */
+ ELM_NOTIFY_ORIENT_BOTTOM_LEFT, /**< Notification should appear in the bottom left corner of the parent */
+ ELM_NOTIFY_ORIENT_BOTTOM_RIGHT, /**< Notification should appear in the bottom right corner of the parent */
ELM_NOTIFY_ORIENT_LAST /**< Sentinel value, @b don't use */
} Elm_Notify_Orient;
@@ -455,54 +456,52 @@ EINA_DEPRECATED EAPI void elm_notify_orient_set(Evas_Obj
EINA_DEPRECATED EAPI Elm_Notify_Orient elm_notify_orient_get(const Evas_Object *obj);
/**
- * @brief Set slide effect of label widget.
+ * @brief Sets the slide effect for the label widget.
*
- * @param obj The label object
- * @param slide If true, slide effect will be shown
+ * @remarks If set to @c true, the text of the label slides/scrolls through the length of the
+ * label.
*
- * If set to true, the text of the label will slide/scroll through the length of
- * label.
+ * @remarks This only works with the themes "slide_short", "slide_long", and
+ * "slide_bounce".
*
- * @warning This only works with the themes "slide_short", "slide_long" and
- * "slide_bounce".
- * @warning This doesn't work if the line wrap(elm_label_line_wrap_set()) or
- * ellipsis(elm_label_ellipsis_set()) is set.
+ * @remarks This doesn't work if the line wrap(elm_label_line_wrap_set()) or
+ * ellipsis(elm_label_ellipsis_set()) is set.
*
- * @deprecated see elm_label_slide_mode_set() instead.
+ * @param obj The label object
+ * @param slide If @c true slide effect is shown, otherwise @c false
*
- * @ingroup Label
+ * @deprecated see elm_label_slide_mode_set() instead.
*/
EINA_DEPRECATED EAPI void elm_label_slide_set(Evas_Object *obj, Eina_Bool slide);
/**
- * @brief Get whether slide effect is shown or not.
+ * @brief Gets the whether slide effect is shown.
*
* @param obj The label object
- * @return If true, slide effect is shown.
- *
- * @see elm_label_slide_set()
+ * @return @c true if the slide effect is shown,
+ * otherwise @c false
*
- * @deprecated see elm_label_slide_mode_get() instead.
+ * @deprecated use elm_label_slide_mode_get() instead.
*
- * @ingroup Label
+ * @see elm_label_slide_set()
*/
EINA_DEPRECATED EAPI Eina_Bool elm_label_slide_get(const Evas_Object *obj);
/**
- * Set the text for an object's part, marking it as translatable.
+ * @brief Sets the text for an object's part, marking it as translatable.
*
- * The string to set as @p text must be the original one. Do not pass the
- * return of @c gettext() here. Elementary will translate the string
- * internally and set it on the object using elm_object_part_text_set(),
- * also storing the original string so that it can be automatically
- * translated when the language is changed with elm_language_set().
+ * @remarks The string to set as @a text must be the original one. Do not pass the
+ * return of gettext() here. Elementary translates the string
+ * internally and sets it on the object using elm_object_part_text_set(),
+ * also storing the original string so that it can be automatically
+ * translated when the language is changed with elm_language_set().
*
- * The @p domain will be stored along to find the translation in the
- * correct catalog. It can be NULL, in which case it will use whatever
- * domain was set by the application with @c textdomain(). This is useful
- * in case you are building a library on top of Elementary that will have
- * its own translatable strings, that should not be mixed with those of
- * programs using the library.
+ * @remarks The @a domain is also stored to find the translation in the
+ * correct catalog. It can be @c NULL, in which case it uses whatever
+ * domain is set by the application with textdomain(). This is useful
+ * in case you are building a library on top of Elementary that is going to have
+ * its own translatable strings, that should not be mixed with those of
+ * programs using the library.
*
* @param obj The object containing the text part
* @param part The name of the part to set
@@ -510,1133 +509,51 @@ EINA_DEPRECATED EAPI Eina_Bool elm_label_slide_get(const Evas_
* @param text The original, non-translated text to set
*
* @deprecated Use elm_object_domain_translatable_part_text_set() instead.
- *
- * @ingroup General
*/
EINA_DEPRECATED EAPI void elm_object_domain_translatable_text_part_set(Evas_Object *obj, const char *part, const char *domain, const char *text);
/**
- * Get the original string set as translatable for an object
+ * @brief Gets the original string set as translatable for an object.
*
- * When setting translated strings, the function elm_object_part_text_get()
- * will return the translation returned by @c gettext(). To get the
- * original string use this function.
+ * @remarks When setting translated strings, the function elm_object_part_text_get()
+ * returns the translation returned by gettext(). To get the
+ * original string use this function.
*
* @param obj The object
- * @param part The name of the part that was set
+ * @param part The name of the part that is set
*
* @return The original, untranslated string
*
* @deprecated Use elm_object_translatable_part_text_get() instead.
- *
- * @ingroup General
*/
EINA_DEPRECATED EAPI const char *elm_object_translatable_text_part_get(const Evas_Object *obj, const char *part);
/**
- * @brief Show/Hide the title area
+ * @brief Shows or hides the title area.
*
- * @param it The naviframe item
- * @param visible If @c EINA_TRUE, title area will be visible, hidden
- * otherwise
+ * @remarks When the title area is invisible, then the controls are hidden so as
+ * to expand the content area to full-size.
*
- * When the title area is invisible, then the controls would be hidden so as
- * to expand the content area to full-size.
+ * @param it The naviframe item
+ * @param visible If @c EINA_TRUE, the title area is visible, otherwise if @c EINA_FALSE it is hidden
*
* @deprecated Use elm_naviframe_item_title_enabled_set() instead.
*
* @see also elm_naviframe_item_title_visible_get()
* @see also elm_naviframe_item_title_enabled_get()
- *
- * @ingroup Naviframe
*/
EINA_DEPRECATED EAPI void elm_naviframe_item_title_visible_set(Elm_Object_Item *it, Eina_Bool visible);
/**
- * @brief Get a value whether title area is visible or not.
+ * @brief Gets a value that indicates whether the title area is visible.
*
* @param it The naviframe item
- * @return If @c EINA_TRUE, title area is visible
+ * @return @c EINA_TRUE if the title area is visible,
+ * otherwise @c EINA_FALSE
*
* @deprecated Use elm_naviframe_item_title_enabled_get() instead.
*
- * @see also elm_naviframe_item_title_visible_set()
- *
- * @ingroup Naviframe
+ * @see elm_naviframe_item_title_visible_set()
*/
EINA_DEPRECATED EAPI Eina_Bool elm_naviframe_item_title_visible_get(const Elm_Object_Item *it);
-/**
- * Enable/disable horizontal and vertical bouncing effect.
- *
- * @param obj The genlist object
- * @param h_bounce Allow bounce horizontally (@c EINA_TRUE = on, @c
- * EINA_FALSE = off). Default is @c EINA_FALSE.
- * @param v_bounce Allow bounce vertically (@c EINA_TRUE = on, @c
- * EINA_FALSE = off). Default is @c EINA_TRUE.
- *
- * This will enable or disable the scroller bouncing effect for the
- * genlist. See elm_scroller_bounce_set() for details.
- *
- * @deprecated Use elm_scroller_bounce_set() instead.
- *
- * @see elm_scroller_bounce_set()
- * @see elm_genlist_bounce_get()
- *
- * @ingroup Genlist
- */
-EINA_DEPRECATED EAPI void elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
-
-/**
- * Get whether the horizontal and vertical bouncing effect is enabled.
- *
- * @param obj The genlist object
- * @param h_bounce Pointer to a bool to receive if the bounce horizontally
- * option is set.
- * @param v_bounce Pointer to a bool to receive if the bounce vertically
- * option is set.
- *
- * @deprecated Use elm_scroller_bounce_get() instead.
- *
- * @see elm_scroller_bounce_get()
- * @see elm_genlist_bounce_set()
- *
- * @ingroup Genlist
- */
-EINA_DEPRECATED EAPI void elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
-
-/**
- * Set the scrollbar policy
- *
- * @param obj The genlist object
- * @param policy_h Horizontal scrollbar policy.
- * @param policy_v Vertical scrollbar policy.
- *
- * This sets the scrollbar visibility policy for the given genlist
- * 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()
- *
- * @ingroup Genlist
- */
-EINA_DEPRECATED EAPI void elm_genlist_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
-
-/**
- * Get the scrollbar policy
- *
- * @param obj The genlist 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()
- *
- * @ingroup Genlist
- */
-EINA_DEPRECATED EAPI void elm_genlist_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
-
-/**
- * This sets the entry's scrollbar policy (i.e. enabling/disabling
- * them).
- *
- * Setting an entry to single-line mode with elm_entry_single_line_set()
- * will automatically disable the display of scrollbars when the entry
- * moves inside its scroller.
- *
- * @param obj The entry object
- * @param h The horizontal scrollbar policy to apply
- * @param v The vertical scrollbar policy to apply
- *
- * @deprecated Use elm_scroller_policy_set() instead.
- *
- * @ingroup Entry
- */
-EINA_DEPRECATED EAPI void elm_entry_scrollbar_policy_set(Evas_Object *obj, Elm_Scroller_Policy h, Elm_Scroller_Policy v);
-
-/**
- * This enables/disables bouncing within the entry.
- *
- * This function sets whether the entry will bounce when scrolling reaches
- * the end of the contained entry.
- *
- * @param obj The entry object
- * @param h_bounce The horizontal bounce state
- * @param v_bounce The vertical bounce state
- *
- * @deprecated Use elm_scroller_bounce_set() instead.
- *
- * @ingroup Entry
- */
-EINA_DEPRECATED EAPI void elm_entry_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
-
-/**
- * Get the bounce mode
- *
- * @param obj The Entry object
- * @param h_bounce Allow bounce horizontally
- * @param v_bounce Allow bounce vertically
- *
- * @deprecated Use elm_scroller_bounce_get() instead.
- *
- * @ingroup Entry
- */
-EINA_DEPRECATED EAPI void elm_entry_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
-
-/**
- * @brief Set the photocam scrolling bouncing.
- *
- * @param obj The photocam object
- * @param h_bounce set this to @c EINA_TRUE for horizontal bouncing
- * @param v_bounce set this to @c EINA_TRUE for vertical bouncing
- *
- * @deprecated Use elm_scroller_bounce_set() instead.
- *
- * @ingroup Photocam
- */
-EINA_DEPRECATED EAPI void elm_photocam_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
-
-/**
- * @brief Get the photocam scrolling bouncing.
- *
- * @param obj The photocam object
- * @param h_bounce horizontal bouncing
- * @param v_bounce vertical bouncing
- *
- * @see elm_photocam_bounce_set()
- *
- * @deprecated Use elm_scroller_bounce_get() instead.
- *
- * @ingroup Photocam
- */
-EINA_DEPRECATED EAPI void elm_photocam_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
-
-/**
- * Set bouncing behaviour when the scrolled content reaches an edge.
- *
- * Tell the internal scroller object whether it should bounce or not
- * when it reaches the respective edges for each axis.
- *
- * @param obj The list object
- * @param h_bounce Whether to bounce or not in the horizontal axis.
- * @param v_bounce Whether to bounce or not in the vertical axis.
- *
- * @deprecated Use elm_scroller_bounce_set() instead.
- *
- * @see elm_scroller_bounce_set()
- *
- * @ingroup List
- */
-EINA_DEPRECATED EAPI void elm_list_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
-
-/**
- * Get the bouncing behaviour of the internal scroller.
- *
- * Get whether the internal scroller should bounce when the edge of each
- * axis is reached scrolling.
- *
- * @param obj The list object.
- * @param h_bounce Pointer to store the bounce state of the horizontal
- * axis.
- * @param v_bounce Pointer to store the bounce state of the vertical
- * axis.
- *
- * @deprecated Use elm_scroller_bounce_get() instead.
- *
- * @see elm_scroller_bounce_get()
- * @see elm_list_bounce_set()
- *
- * @ingroup List
- */
-EINA_DEPRECATED EAPI void elm_list_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
-
-/**
- * Set the scrollbar policy.
- *
- * @param obj The list object
- * @param policy_h Horizontal scrollbar policy.
- * @param policy_v Vertical scrollbar policy.
- *
- * This sets the scrollbar visibility policy for the given
- * 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.
- *
- * The both are disabled by default, i.e., are set to
- * #ELM_SCROLLER_POLICY_OFF.
- *
- * @deprecated Use elm_scroller_policy_set() instead.
- *
- * @ingroup List
- */
-EINA_DEPRECATED EAPI void elm_list_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
-
-/**
- * Get the scrollbar policy.
- *
- * @see elm_list_scroller_policy_get() for details.
- *
- * @param obj The list object.
- * @param policy_h Pointer to store horizontal scrollbar policy.
- * @param policy_v Pointer to store vertical scrollbar policy.
- *
- * @deprecated Use elm_scroller_policy_get() instead.
- *
- * @ingroup List
- */
-EINA_DEPRECATED EAPI void elm_list_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
-
-/**
- * @brief Set custom theme elements for the scroller
- *
- * @param obj The scroller object
- * @param widget The widget name to use (default is "scroller")
- * @param base The base name to use (default is "base")
- *
- * @deprecated Use elm_layout_theme_set() instead.
- *
- * @ingroup Scroller
- */
-EINA_DEPRECATED EAPI void elm_scroller_custom_widget_base_theme_set(Evas_Object *obj, const char *widget, const char *base);
-
-/**
- * Set bouncing behaviour when the scrolled content reaches an edge.
- *
- * Tell the internal scroller object whether it should bounce or not
- * when it reaches the respective edges for each axis.
- *
- * @param obj The diskselector object.
- * @param h_bounce Whether to bounce or not in the horizontal axis.
- * @param v_bounce Whether to bounce or not in the vertical axis.
- *
- * @deprecated Use elm_scroller_bounce_set() instead.
- *
- * @see elm_scroller_bounce_set()
- *
- * @ingroup Diskselector
- */
-EINA_DEPRECATED EAPI void elm_diskselector_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
-
-/**
- * Get the bouncing behaviour of the internal scroller.
- *
- * Get whether the internal scroller should bounce when the edge of each
- * axis is reached scrolling.
- *
- * @param obj The diskselector object.
- * @param h_bounce Pointer to store the bounce state of the horizontal
- * axis.
- * @param v_bounce Pointer to store the bounce state of the vertical
- * axis.
- *
- * @deprecated Use elm_scroller_bounce_get() instead.
- *
- * @see elm_scroller_bounce_get()
- * @see elm_diskselector_bounce_set()
- *
- * @ingroup Diskselector
- */
-EINA_DEPRECATED EAPI void elm_diskselector_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
-
-/**
- * Get the scrollbar policy.
- *
- * @see elm_diskselector_scroller_policy_get() for details.
- *
- * @param obj The diskselector object.
- * @param policy_h Pointer to store horizontal scrollbar policy.
- * @param policy_v Pointer to store vertical scrollbar policy.
- *
- * @deprecated Use elm_scroller_policy_get() instead.
- *
- * @see elm_scroller_policy_get()
- *
- * @ingroup Diskselector
- */
-EINA_DEPRECATED EAPI void elm_diskselector_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
-
-/**
- * Set the scrollbar policy.
- *
- * @param obj The diskselector object.
- * @param policy_h Horizontal scrollbar policy.
- * @param policy_v Vertical scrollbar policy.
- *
- * This sets the scrollbar visibility policy for the given
- * 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.
- *
- * The both are disabled by default, i.e., are set to #ELM_SCROLLER_POLICY_OFF.
- *
- * @deprecated Use elm_scroller_policy_set() instead.
- *
- * @see elm_scroller_policy_set()
- *
- * @ingroup Diskselector
- */
-EINA_DEPRECATED EAPI void elm_diskselector_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
-
-/**
- * Set the file that will be used as icon.
- *
- * @param obj The icon object
- * @param file The path to file that will be used as icon image
- * @param group The group that the icon belongs to an edje file
- *
- * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
- *
- * @note The icon image set by this function can be changed by
- * elm_icon_standard_set().
- *
- * @see elm_icon_file_get()
- *
- * @deprecated Use elm_image_file_set() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_icon_file_set(Evas_Object *obj, const char *file, const char *group);
-
-/**
- * Set a location in memory to be used as an icon
- *
- * @param obj The icon object
- * @param img The binary data that will be used as an image
- * @param size The size of binary data @p img
- * @param format Optional format of @p img to pass to the image loader
- * @param key Optional key of @p img to pass to the image loader (eg. if @p img is an edje file)
- *
- * The @p format string should be something like "png", "jpg", "tga",
- * "tiff", "bmp" etc. if it is provided (NULL if not). This improves
- * the loader performance as it tries the "correct" loader first before
- * trying a range of other possible loaders until one succeeds.
- *
- * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
- *
- * @note The icon image set by this function can be changed by
- * elm_icon_standard_set().
- *
- * @deprecated Use elm_image_memfile_set() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_icon_memfile_set(Evas_Object *obj, const void *img, size_t size, const char *format, const char *key);
-
-/**
- * Get the file that will be used as icon.
- *
- * @param obj The icon object
- * @param file The path to file that will be used as the icon image
- * @param group The group that the icon belongs to, in edje file
- *
- * @see elm_image_file_set()
- *
- * @deprecated Use elm_image_file_get() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI void elm_icon_file_get(const Evas_Object *obj, const char **file, const char **group);
-
-/**
- * Set the smooth scaling for an icon object.
- *
- * @param obj The icon object
- * @param smooth @c EINA_TRUE if smooth scaling should be used, @c EINA_FALSE
- * otherwise. Default is @c EINA_TRUE.
- *
- * Set the scaling algorithm to be used when scaling the icon image. Smooth
- * scaling provides a better resulting image, but is slower.
- *
- * The smooth scaling should be disabled when making animations that change
- * the icon size, since they will be faster. Animations that don't require
- * resizing of the icon can keep the smooth scaling enabled (even if the icon
- * is already scaled, since the scaled icon image will be cached).
- *
- * @see elm_icon_smooth_get()
- *
- * @deprecated Use elm_image_smooth_set() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI void elm_icon_smooth_set(Evas_Object *obj, Eina_Bool smooth);
-
-/**
- * Get whether smooth scaling is enabled for an icon object.
- *
- * @param obj The icon object
- * @return @c EINA_TRUE if smooth scaling is enabled, @c EINA_FALSE otherwise.
- *
- * @see elm_icon_smooth_set()
- *
- * @deprecated Use elm_image_smooth_get() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_icon_smooth_get(const Evas_Object *obj);
-
-/**
- * Disable scaling of this object.
- *
- * @param obj The icon object.
- * @param no_scale @c EINA_TRUE if the object is not scalable, @c EINA_FALSE
- * otherwise. Default is @c EINA_FALSE.
- *
- * This function disables scaling of the icon object through the function
- * elm_object_scale_set(). However, this does not affect the object
- * size/resize in any way. For that effect, take a look at
- * elm_icon_resizable_set().
- *
- * @see elm_icon_no_scale_get()
- * @see elm_icon_resizable_set()
- * @see elm_object_scale_set()
- *
- * @deprecated Use elm_image_no_scale_set() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI void elm_icon_no_scale_set(Evas_Object *obj, Eina_Bool no_scale);
-
-/**
- * Get whether scaling is disabled on the object.
- *
- * @param obj The icon object
- * @return @c EINA_TRUE if scaling is disabled, @c EINA_FALSE otherwise
- *
- * @see elm_icon_no_scale_set()
- *
- * @deprecated Use elm_image_no_scale_get() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_icon_no_scale_get(const Evas_Object *obj);
-
-/**
- * Set if the object is (up/down) resizable.
- *
- * @param obj The icon object
- * @param size_up A bool to set if the object is resizable up. Default is
- * @c EINA_TRUE.
- * @param size_down A bool to set if the object is resizable down. Default
- * is @c EINA_TRUE.
- *
- * This function limits the icon object resize ability. If @p size_up is set to
- * @c EINA_FALSE, the object can't have its height or width resized to a value
- * higher than the original icon size. Same is valid for @p size_down.
- *
- * @see elm_icon_resizable_get()
- *
- * @deprecated Use elm_image_resizable_set() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI void elm_icon_resizable_set(Evas_Object *obj, Eina_Bool size_up, Eina_Bool size_down);
-
-/**
- * Get if the object is (up/down) resizable.
- *
- * @param obj The icon object
- * @param size_up A bool to set if the object is resizable up
- * @param size_down A bool to set if the object is resizable down
- *
- * @see elm_icon_resizable_set()
- *
- * @deprecated Use elm_image_resizable_get() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI void elm_icon_resizable_get(const Evas_Object *obj, Eina_Bool *size_up, Eina_Bool *size_down);
-
-/**
- * Get the object's image size
- *
- * @param obj The icon object
- * @param w A pointer to store the width in
- * @param h A pointer to store the height in
- *
- * @deprecated Use elm_image_object_size_get() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI void elm_icon_size_get(const Evas_Object *obj, int *w, int *h);
-
-/**
- * Set if the icon fill the entire object area.
- *
- * @param obj The icon object
- * @param fill_outside @c EINA_TRUE if the object is filled outside,
- * @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
- *
- * When the icon object is resized to a different aspect ratio from the
- * original icon image, the icon image will still keep its aspect. This flag
- * tells how the image should fill the object's area. They are: keep the
- * entire icon inside the limits of height and width of the object (@p
- * fill_outside is @c EINA_FALSE) or let the extra width or height go outside
- * of the object, and the icon will fill the entire object (@p fill_outside
- * is @c EINA_TRUE).
- *
- * @note Unlike @ref Image, there's no option in icon to set the aspect ratio
- * retain property to false. Thus, the icon image will always keep its
- * original aspect ratio.
- *
- * @see elm_icon_fill_outside_get()
- *
- * @deprecated Use elm_image_fill_outside_set() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI void elm_icon_fill_outside_set(Evas_Object *obj, Eina_Bool fill_outside);
-
-/**
- * Get if the object is filled outside.
- *
- * @param obj The icon object
- * @return @c EINA_TRUE if the object is filled outside, @c EINA_FALSE
- * otherwise.
- *
- * @see elm_icon_fill_outside_set()
- *
- * @deprecated Use elm_image_fill_outside_get() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_icon_fill_outside_get(const Evas_Object *obj);
-
-/**
- * Set the prescale size for the icon.
- *
- * @param obj The icon object
- * @param size The prescale size. This value is used for both width and
- * height.
- *
- * This function sets a new size for pixmap representation of the given
- * icon. It allows the icon to be loaded already in the specified size,
- * reducing the memory usage and load time when loading a big icon with load
- * size set to a smaller size.
- *
- * It's equivalent to the elm_bg_load_size_set() function for bg.
- *
- * @note this is just a hint, the real size of the pixmap may differ
- * depending on the type of icon being loaded, being bigger than requested.
- *
- * @see elm_icon_prescale_get()
- * @see elm_bg_load_size_set()
- *
- * @deprecated Use elm_image_prescale_set() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI void elm_icon_prescale_set(Evas_Object *obj, int size);
-
-/**
- * Get the prescale size for the icon.
- *
- * @param obj The icon object
- * @return The prescale size
- *
- * @see elm_icon_prescale_set()
- *
- * @deprecated Use elm_image_prescale_get() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI int elm_icon_prescale_get(const Evas_Object *obj);
-
-/**
- * Get the image object of the icon. DO NOT MODIFY THIS.
- *
- * @param obj The icon object
- * @return The internal icon object
- *
- * @deprecated Use elm_image_object_get() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI Evas_Object *elm_icon_object_get(Evas_Object *obj);
-
-/**
- * Enable or disable preloading of the icon
- *
- * @param obj The icon object
- * @param disabled If EINA_TRUE, preloading will be disabled
- * @ingroup Icon
- *
- * @deprecated Use elm_image_preload_disabled_set() instead.
- *
- */
-EINA_DEPRECATED EAPI void elm_icon_preload_disabled_set(Evas_Object *obj, Eina_Bool disabled);
-
-/**
- * Get if the icon supports animation or not.
- *
- * @param obj The icon object
- * @return @c EINA_TRUE if the icon supports animation,
- * @c EINA_FALSE otherwise.
- *
- * Return if this elm icon's image can be animated. Currently Evas only
- * supports gif animation. If the return value is EINA_FALSE, other
- * elm_icon_animated_xxx APIs won't work.
- * @ingroup Icon
- *
- * @deprecated Use elm_image_animated_available_get() instead.
- *
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_icon_animated_available_get(const Evas_Object *obj);
-
-/**
- * Set animation mode of the icon.
- *
- * @param obj The icon object
- * @param animated @c EINA_TRUE if the object do animation job,
- * @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
- *
- * Since the default animation mode is set to EINA_FALSE,
- * the icon is shown without animation. Files like animated GIF files
- * can animate, and this is supported if you enable animated support
- * on the icon.
- * Set it to EINA_TRUE when the icon needs to be animated.
- * @ingroup Icon
- *
- * @deprecated Use elm_image_animated_set() instead.
- *
- */
-EINA_DEPRECATED EAPI void elm_icon_animated_set(Evas_Object *obj, Eina_Bool animated);
-
-/**
- * Get animation mode of the icon.
- *
- * @param obj The icon object
- * @return The animation mode of the icon object
- * @see elm_icon_animated_set
- * @ingroup Icon
- *
- * @deprecated Use elm_image_animated_get() instead.
- *
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_icon_animated_get(const Evas_Object *obj);
-
-/**
- * Set animation play mode of the icon.
- *
- * @param obj The icon object
- * @param play @c EINA_TRUE the object play animation images,
- * @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
- *
- * To play elm icon's animation, set play to EINA_TRUE.
- * For example, you make gif player using this set/get API and click event.
- * This literally lets you control current play or paused state. To have
- * this work with animated GIF files for example, you first, before
- * setting the file have to use elm_icon_animated_set() to enable animation
- * at all on the icon.
- *
- * 1. Click event occurs
- * 2. Check play flag using elm_icon_animated_play_get
- * 3. If elm icon was playing, set play to EINA_FALSE.
- * Then animation will be stopped and vice versa
- * @ingroup Icon
- *
- * @deprecated Use elm_image_animated_play_set() instead.
- *
- */
-EINA_DEPRECATED EAPI void elm_icon_animated_play_set(Evas_Object *obj, Eina_Bool play);
-
-/**
- * Get animation play mode of the icon.
- *
- * @param obj The icon object
- * @return The play mode of the icon object
- *
- * @see elm_icon_animated_play_get
- * @ingroup Icon
- *
- * @deprecated Use elm_image_animated_play_get() instead.
- *
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_icon_animated_play_get(const Evas_Object *obj);
-
-/**
- * Set whether the original aspect ratio of the icon should be kept on resize.
- *
- * @param obj The icon object.
- * @param fixed @c EINA_TRUE if the icon should retain the aspect,
- * @c EINA_FALSE otherwise.
- *
- * The original aspect ratio (width / height) of the icon is usually
- * distorted to match the object's size. Enabling this option will retain
- * this original aspect, and the way that the icon is fit into the object's
- * area depends on the option set by elm_icon_fill_outside_set().
- *
- * @see elm_icon_aspect_fixed_get()
- * @see elm_icon_fill_outside_set()
- *
- * @ingroup Icon
- *
- * @deprecated Use elm_image_aspect_fixed_set() instead.
- *
- */
-EINA_DEPRECATED EAPI void elm_icon_aspect_fixed_set(Evas_Object *obj, Eina_Bool fixed);
-
-/**
- * Get if the object retains the original aspect ratio.
- *
- * @param obj The icon object.
- * @return @c EINA_TRUE if the object keeps the original aspect, @c EINA_FALSE
- * otherwise.
- *
- * @deprecated Use elm_image_aspect_fixed_get() instead.
- *
- * @ingroup Icon
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_icon_aspect_fixed_get(const Evas_Object *obj);
-
-/**
- * Set the initial file system path for a given file selector
- * button widget
- *
- * @param obj The file selector button widget
- * @param path The path string
- *
- * It must be a <b>directory</b> path, which will have the contents
- * displayed initially in the file selector's view, when invoked
- * from @p obj. The default initial path is the @c "HOME"
- * environment variable's value.
- *
- * @see elm_fileselector_path_get()
- *
- * @deprecated Use elm_fileselector_path_set() instead.
- *
- * @ingroup File_Selector_Button
- */
-EINA_DEPRECATED EAPI void elm_fileselector_button_path_set(Evas_Object *obj, const char *path);
-
-/**
- * Get the initial file system path set for a given file selector
- * button widget
- *
- * @param obj The file selector button widget
- * @return path The path string
- *
- * @see elm_fileselector_path_set() for more details
- *
- * @deprecated Use elm_fileselector_path_get() instead.
- *
- * @ingroup File_Selector_Button
- */
-EINA_DEPRECATED EAPI const char *elm_fileselector_button_path_get(const Evas_Object *obj);
-
-/**
- * Enable/disable a tree view in the given file selector button
- * widget's internal file selector
- *
- * @param obj The file selector button widget
- * @param value @c EINA_TRUE to enable tree view, @c EINA_FALSE to
- * disable
- *
- * This has the same effect as elm_fileselector_expandable_set(),
- * but now applied to a file selector button's internal file
- * selector.
- *
- * @note There's no way to put a file selector button's internal
- * file selector in "grid mode", as one may do with "pure" file
- * selectors.
- *
- * @see elm_fileselector_expandable_get()
- *
- * @deprecated Use elm_fileselector_expandable_set() instead.
- *
- * @ingroup File_Selector_Button
- */
-EINA_DEPRECATED EAPI void elm_fileselector_button_expandable_set(Evas_Object *obj, Eina_Bool value);
-
-/**
- * Get whether tree view is enabled for the given file selector
- * button widget's internal file selector
- *
- * @param obj The file selector button widget
- * @return @c EINA_TRUE if @p obj widget's internal file selector
- * is in tree view, @c EINA_FALSE otherwise (and or errors)
- *
- * @see elm_fileselector_expandable_set() for more details
- *
- * @deprecated Use elm_fileselector_expandable_get() instead.
- *
- * @ingroup File_Selector_Button
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_fileselector_button_expandable_get(const Evas_Object *obj);
-
-/**
- * Set whether a given file selector button widget's internal file
- * selector is to display folders only or the directory contents,
- * as well.
- *
- * @param obj The file selector button widget
- * @param value @c EINA_TRUE to make @p obj widget's internal file
- * selector only display directories, @c EINA_FALSE to make files
- * to be displayed in it too
- *
- * This has the same effect as elm_fileselector_folder_only_set(),
- * but now applied to a file selector button's internal file
- * selector.
- *
- * @see elm_fileselector_folder_only_get()
- *
- * @deprecated Use elm_fileselector_folder_only_set() instead.
- *
- * @ingroup File_Selector_Button
- */
-EINA_DEPRECATED EAPI void elm_fileselector_button_folder_only_set(Evas_Object *obj, Eina_Bool value);
-
-/**
- * Get whether a given file selector button widget's internal file
- * selector is displaying folders only or the directory contents,
- * as well.
- *
- * @param obj The file selector button widget
- * @return @c EINA_TRUE if @p obj widget's internal file
- * selector is only displaying directories, @c EINA_FALSE if files
- * are being displayed in it too (and on errors)
- *
- * @see elm_fileselector_folder_only_set() for more details
- *
- * @deprecated Use elm_fileselector_folder_only_get() instead.
- *
- * @ingroup File_Selector_Button
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_fileselector_button_folder_only_get(const Evas_Object *obj);
-
-/**
- * Enable/disable the file name entry box where the user can type
- * in a name for a file, in a given file selector button widget's
- * internal file selector.
- *
- * @param obj The file selector button widget
- * @param value @c EINA_TRUE to make @p obj widget's internal
- * file selector a "saving dialog", @c EINA_FALSE otherwise
- *
- * This has the same effect as elm_fileselector_is_save_set(),
- * but now applied to a file selector button's internal file
- * selector.
- *
- * @see elm_fileselector_is_save_get()
- *
- * @deprecated Use elm_fileselector_is_save_set() instead.
- *
- * @ingroup File_Selector_Button
- */
-EINA_DEPRECATED EAPI void elm_fileselector_button_is_save_set(Evas_Object *obj, Eina_Bool value);
-
-/**
- * Get whether the given file selector button widget's internal
- * file selector is in "saving dialog" mode
- *
- * @param obj The file selector button widget
- * @return @c EINA_TRUE, if @p obj widget's internal file selector
- * is in "saving dialog" mode, @c EINA_FALSE otherwise (and on
- * errors)
- *
- * @see elm_fileselector_is_save_set() for more details
- *
- * @deprecated Use elm_fileselector_is_save_get() instead.
- *
- * @ingroup File_Selector_Button
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_fileselector_button_is_save_get(const Evas_Object *obj);
-
-/**
- * Set the initial file system path and the entry's path string for
- * a given file selector entry widget
- *
- * @param obj The file selector entry widget
- * @param path The path string
- *
- * It must be a <b>directory</b> path, which will have the contents
- * displayed initially in the file selector's view, when invoked
- * from @p obj. The default initial path is the @c "HOME"
- * environment variable's value.
- *
- * @see elm_fileselector_path_get()
- *
- * @deprecated Use elm_fileselector_path_set() instead.
- *
- * @ingroup File_Selector_Entry
- */
-EINA_DEPRECATED EAPI void elm_fileselector_entry_path_set(Evas_Object *obj, const char *path);
-
-/**
- * Get the entry's path string for a given file selector entry
- * widget
- *
- * @param obj The file selector entry widget
- * @return path The path string
- *
- * @see elm_fileselector_path_set() for more details
- *
- * @deprecated Use elm_fileselector_path_get() instead.
- * @ingroup File_Selector_Entry
- */
-EINA_DEPRECATED EAPI const char *elm_fileselector_entry_path_get(const Evas_Object *obj);
-
-/**
- * Enable/disable a tree view in the given file selector entry
- * widget's internal file selector
- *
- * @param obj The file selector entry widget
- * @param value @c EINA_TRUE to enable tree view, @c EINA_FALSE to disable
- *
- * This has the same effect as elm_fileselector_expandable_set(),
- * but now applied to a file selector entry's internal file
- * selector.
- *
- * @note There's no way to put a file selector entry's internal
- * file selector in "grid mode", as one may do with "pure" file
- * selectors.
- *
- * @see elm_fileselector_expandable_get()
- *
- * @deprecated Use elm_fileselector_expandable_set() instead.
- *
- * @ingroup File_Selector_Entry
- */
-EINA_DEPRECATED EAPI void elm_fileselector_entry_expandable_set(Evas_Object *obj, Eina_Bool value);
-
-/**
- * Get whether tree view is enabled for the given file selector
- * entry widget's internal file selector
- *
- * @param obj The file selector entry widget
- * @return @c EINA_TRUE if @p obj widget's internal file selector
- * is in tree view, @c EINA_FALSE otherwise (and or errors)
- *
- * @see elm_fileselector_expandable_set() for more details
- *
- * @deprecated Use elm_fileselector_expandable_get() instead.
- *
- * @ingroup File_Selector_Entry
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_fileselector_entry_expandable_get(const Evas_Object *obj);
-
-/**
- * Set whether a given file selector entry widget's internal file
- * selector is to display folders only or the directory contents,
- * as well.
- *
- * @param obj The file selector entry widget
- * @param value @c EINA_TRUE to make @p obj widget's internal file
- * selector only display directories, @c EINA_FALSE to make files
- * to be displayed in it too
- *
- * This has the same effect as elm_fileselector_folder_only_set(),
- * but now applied to a file selector entry's internal file
- * selector.
- *
- * @see elm_fileselector_folder_only_get()
- *
- * @deprecated Use elm_fileselector_folder_only_set() instead.
- *
- * @ingroup File_Selector_Entry
- */
-EINA_DEPRECATED EAPI void elm_fileselector_entry_folder_only_set(Evas_Object *obj, Eina_Bool value);
-
-/**
- * Get whether a given file selector entry widget's internal file
- * selector is displaying folders only or the directory contents,
- * as well.
- *
- * @param obj The file selector entry widget
- * @return @c EINA_TRUE if @p obj widget's internal file
- * selector is only displaying directories, @c EINA_FALSE if files
- * are being displayed in it too (and on errors)
- *
- * @see elm_fileselector_folder_only_set() for more details
- *
- * @deprecated Use elm_fileselector_folder_only_get() instead.
- *
- * @ingroup File_Selector_Entry
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_fileselector_entry_folder_only_get(const Evas_Object *obj);
-
-/**
- * Enable/disable the file name entry box where the user can type
- * in a name for a file, in a given file selector entry widget's
- * internal file selector.
- *
- * @param obj The file selector entry widget
- * @param value @c EINA_TRUE to make @p obj widget's internal
- * file selector a "saving dialog", @c EINA_FALSE otherwise
- *
- * This has the same effect as elm_fileselector_is_save_set(),
- * but now applied to a file selector entry's internal file
- * selector.
- *
- * @see elm_fileselector_is_save_get()
- *
- * @deprecated Use elm_fileselector_is_save_set() instead.
- *
- * @ingroup File_Selector_Entry
- */
-EINA_DEPRECATED EAPI void elm_fileselector_entry_is_save_set(Evas_Object *obj, Eina_Bool value);
-
-/**
- * Get whether the given file selector entry widget's internal
- * file selector is in "saving dialog" mode
- *
- * @param obj The file selector entry widget
- * @return @c EINA_TRUE, if @p obj widget's internal file selector
- * is in "saving dialog" mode, @c EINA_FALSE otherwise (and on
- * errors)
- *
- * @see elm_fileselector_is_save_set() for more details
- *
- * @deprecated Use elm_fileselector_is_save_get() instead.
- *
- * @ingroup File_Selector_Entry
- */
-EINA_DEPRECATED EAPI Eina_Bool elm_fileselector_entry_is_save_get(const Evas_Object *obj);
-
-/**
- * Set the initial file system path for a given file selector entry
- * widget
- *
- * @param obj The file selector entry widget
- * @param path The path string
- *
- * It must be a <b>directory</b> path, which will have the contents
- * displayed initially in the file selector's view, when invoked
- * from @p obj. The default initial path is the @c "HOME"
- * environment variable's value.
- *
- * @see elm_fileselector_path_get()
- *
- * @deprecated Use elm_fileselector_selected_set() instead.
- *
- * @ingroup File_Selector_Entry
- */
-EINA_DEPRECATED EAPI void elm_fileselector_entry_selected_set(Evas_Object *obj, const char *path);
-
-/**
- * Get the parent directory's path to the latest file selection on
- * a given filer selector entry widget
- *
- * @param obj The file selector object
- * @return The (full) path of the directory of the last selection
- * on @p obj widget, a @b stringshared string
- *
- * @see elm_fileselector_path_set()
- *
- * @deprecated Use elm_fileselector_selected_get() instead.
- *
- * @ingroup File_Selector_Entry
- */
-EINA_DEPRECATED EAPI const char *elm_fileselector_entry_selected_get(const Evas_Object *obj);
-
-//TODO: remvoe below - use elm_access_text_set(); or elm_access_cb_set();
-EINA_DEPRECATED EAPI void elm_access_external_info_set(Evas_Object *obj, const char *text);
-EINA_DEPRECATED EAPI char *elm_access_external_info_get(const Evas_Object *obj);
diff --git a/src/lib/elm_diskselector.h b/src/lib/elm_diskselector.h
index 3f0a431d0..10935968c 100644
--- a/src/lib/elm_diskselector.h
+++ b/src/lib/elm_diskselector.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Diskselector Diskselector
* @ingroup Elementary
*
@@ -9,70 +10,401 @@
* @image latex img/widget/diskselector/preview-00.eps
*
* A diskselector is a kind of list widget. It scrolls horizontally,
- * and can contain label and icon objects. Three items are displayed
+ * and can contain labels and icon objects. Three items are displayed
* with the selected one in the middle.
*
- * It can act like a circular list with round mode and labels can be
+ * It can act like a circular list with a round mode and labels can be
* reduced for a defined length for side items.
*
- * This widget implements the @b @ref elm-scrollable-interface
+ * This widget implements the @ref elm-scrollable-interface
* interface, so that all (non-deprecated) functions for the base @ref
* Scroller widget also work for diskselectors.
*
* Some calls on the diskselector'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
+ * as they just wrap the scrollable widget's counterpart functions. Use
+ * the ones mentioned here for each case of deprecation.
+ * Eventually, the deprecated ones are discarded (next
* major release).
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li @c "selected" - when item is selected, i.e. scroller stops.
- * @li @c "clicked" - This is called when a user clicks an item (since 1.8)
- * @li @c "scroll,anim,start" - scrolling animation has started
- * @li @c "scroll,anim,stop" - scrolling animation has stopped
- * @li @c "scroll,drag,start" - dragging the diskselector has started
- * @li @c "scroll,drag,stop" - dragging the diskselector has stopped
- * @li @c "focused" - When the diskselector has received focus. (since 1.8)
- * @li @c "unfocused" - When the diskselector has lost focus. (since 1.8)
- * @li @c "language,changed" - the program's language changed (since 1.9)
- *
- * @note The "scroll,anim,*" and "scroll,drag,*" signals are only emitted by
+ * @ref Layout :
+ * @li @c "selected" - When the item is selected, i.e. scroller stops.
+ * @li @c "clicked" - This is called when a user clicks an item (@since 1.8).
+ * @li @c "scroll,anim,start" - Scrolling animation has started.
+ * @li @c "scroll,anim,stop" - Scrolling animation has stopped.
+ * @li @c "scroll,drag,start" - Dragging the diskselector has started.
+ * @li @c "scroll,drag,stop" - Dragging the diskselector has stopped.
+ * @remarks The "scroll,anim,*" and "scroll,drag,*" signals are only emitted by
* user intervention.
*
* Available styles for it:
* - @c "default"
*
- * Default content parts of the diskselector items that you can use for are:
- * @li "icon" - An icon in the diskselector item
+ * The default content parts of the diskselector items that you can use are:
+ * @li "icon" - An icon in the diskselector item.
*
- * Default text parts of the diskselector items that you can use for are:
- * @li "default" - A label of the diskselector item
+ * The default text parts of the diskselector items that you can use are:
+ * @li "default" - The label of the diskselector item.
*
- * Supported elm_object_item common APIs.
- * @li @ref elm_object_item_del
+ * Supported common elm_object_item APIs.
* @li @ref elm_object_item_part_text_set
* @li @ref elm_object_item_part_text_get
* @li @ref elm_object_item_part_content_set
* @li @ref elm_object_item_part_content_get
*
- * List of examples:
- * @li @ref diskselector_example_01
- * @li @ref diskselector_example_02
+ * @{
*/
/**
- * @addtogroup Diskselector
- * @{
+ * @brief Adds a new diskselector widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new diskselector widget on the canvas.
+ *
+ * @param[in] parent The parent object
+ * @return A new diskselector widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_diskselector_add(Evas_Object *parent);
+
+/**
+ * @brief Enables or disables the round mode.
+ *
+ * @remarks This is disabled by default. If the round mode is enabled, the items list
+ * works like a circular list, so when the user reaches the last item,
+ * the first one pops up.
+ *
+ * @param[in] obj The diskselector object
+ * @param[in] enabled If @c EINA_TRUE the round mode is enabled, otherwise @c EINA_FALSE to disable it
+ *
+ * @see elm_diskselector_round_enabled_get()
+ */
+EAPI void elm_diskselector_round_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @brief Gets a value that indicates whether the round mode is enabled.
+ *
+ * @param[in] obj The diskselector object
+ * @return @c EINA_TRUE if the round mode is enabled, otherwise @c EINA_FALSE if it is disabled \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_diskselector_round_enabled_set()
+ */
+EAPI Eina_Bool elm_diskselector_round_enabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the side labels maximum length.
+ *
+ * @param[in] obj The diskselector object
+ * @return The maximum length defined for side labels, otherwise @c 0 if it is not a valid diskselector
+ *
+ * @see elm_diskselector_side_text_max_length_set()
+ */
+EAPI int elm_diskselector_side_text_max_length_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the side labels maximum length.
+ *
+ * @remarks Length is the number of characters of items' label that are
+ * visible when it's set on side positions. It just crops
+ * the string after the defined size. E.g.:
+ *
+ * An item with label "January" would be displayed on the side position as
+ * "Jan" if the maximum length is set to @c 3, or "Janu", if this property
+ * is set to @c 4.
+ *
+ * @remarks When it's selected, the entire label is displayed, except for the
+ * width restrictions. In this case, the label is cropped and "..."
+ * is concatenated.
+ *
+ * @remarks The default side label maximum length is 3.
+ *
+ * @remarks This property is applied over all items, included before or
+ * after this function call.
+ *
+ * @param[in] obj The diskselector object
+ * @param[in] len The maximum length defined for side labels
+ */
+EAPI void elm_diskselector_side_text_max_length_set(Evas_Object *obj, int len);
+
+/**
+ * @brief Sets the number of items to be displayed.
+ *
+ * @remarks The default value is @c 3, and also it's the minimum value. If @a num is less
+ * than @c 3, it is set to @c 3.
+ *
+ * @remarks Also, it can be set on the theme, using data item @c display_item_num
+ * on the group "elm/diskselector/item/X", where X is the style set.
+ * E.g.:
+ *
+ * group { name: "elm/diskselector/item/X";
+ * data {
+ * item: "display_item_num" "5";
+ * }
+ *
+ * @param[in] obj The diskselector object
+ * @param[in] num The number of items the diskselector displays
+ */
+EAPI void elm_diskselector_display_item_num_set(Evas_Object *obj, int num);
+
+/**
+ * @brief Gets the number of items in the diskselector object.
+ *
+ * @param[in] obj The diskselector object
+ */
+EAPI int elm_diskselector_display_item_num_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the bouncing behaviour when the scrolled content reaches an edge.
+ *
+ * @details This tells the internal scroller object whether it should bounce or not
+ * when it reaches the respective edges of each axis.
+ *
+ * @param[in] obj The diskselector object
+ * @param[in] h_bounce The boolean value that indicates whether to bounce in the horizontal axis
+ * @param[in] v_bounce The boolean value that indicates whether to bounce in the vertical axis
+ *
+ * @deprecated Use elm_scroller_bounce_set() instead.
+ *
+ * @see elm_scroller_bounce_set()
+ */
+EINA_DEPRECATED EAPI void elm_diskselector_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
+
+/**
+ * @brief Gets the bouncing behaviour of the internal scroller.
+ *
+ * @details This sets whether the internal scroller should bounce when the edge of each
+ * axis is reached by scrolling.
+ *
+ * @param[in] obj The diskselector object
+ * @param[in] h_bounce The pointer to store the bounce state of the horizontal axis
+ * @param[in] v_bounce The pointer to store the bounce state of the vertical axis
+ *
+ * @deprecated Use elm_scroller_bounce_get() instead.
+ *
+ * @see elm_scroller_bounce_get()
+ * @see elm_diskselector_bounce_set()
+ */
+EINA_DEPRECATED EAPI void elm_diskselector_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
+
+/**
+ * @brief Gets the scrollbar policy.
+ *
+ * @param[in] obj The diskselector object
+ * @param[out] policy_h The pointer to store the horizontal scrollbar policy
+ * @param[out] policy_v The pointer to store the vertical scrollbar policy
+ *
+ * @deprecated Use elm_scroller_policy_get() instead.
+ *
+ * @see elm_diskselector_scroller_policy_get()
+ * @see elm_scroller_policy_get()
+ */
+EINA_DEPRECATED EAPI void elm_diskselector_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
+
+/**
+ * @brief Sets the scrollbar policy.
+ *
+ * @details This sets the scrollbar visibility policy for the given
+ * scroller. #ELM_SCROLLER_POLICY_AUTO means the scrollbar is made visible if
+ * needed, and otherwise kept hidden. #ELM_SCROLLER_POLICY_ON turns
+ * it on at all times, and #ELM_SCROLLER_POLICY_OFF always keeps it off.
+ * This applies for the horizontal and vertical scrollbars respectively.
+ *
+ * @remarks Both are disabled by default, i.e., they are set to #ELM_SCROLLER_POLICY_OFF.
+ *
+ * @param[in] obj The diskselector object
+ * @param[in] policy_h The horizontal scrollbar policy
+ * @param[in] policy_v The vertical scrollbar policy
+ *
+ * @deprecated Use elm_scroller_policy_set() instead.
+ *
+ * @see elm_scroller_policy_set()
+ */
+EINA_DEPRECATED EAPI void elm_diskselector_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
+
+/**
+ * @brief Removes all the diskselector items.
+ *
+ * @param[in] obj The diskselector object
+ *
+ * @see elm_object_item_del()
+ * @see elm_diskselector_item_append()
+ */
+EAPI void elm_diskselector_clear(Evas_Object *obj);
+
+/**
+ * @brief Gets a list of all the diskselector items.
+ *
+ * @param[in] obj The diskselector object
+ * @return An @c Eina_List of diskselector items, #Elm_Object_Item, otherwise @c NULL on failure
+ *
+ * @see elm_diskselector_item_append()
+ * @see elm_object_item_del()
+ * @see elm_diskselector_clear()
+ */
+EAPI const Eina_List *elm_diskselector_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Appends a new item to the diskselector object.
+ *
+ * @remarks A new item is created and appended to the diskselector, i.e., it is
+ * set as the last item. Also, if there is no selected item, it is
+ * selected. This always happens for the first appended item.
+ *
+ * @remarks If no icon is set, the label is centered at the item position, otherwise
+ * the icon is placed on the left of the label, that is shifted
+ * to the right.
+ *
+ * @remarks Items created with this method can be deleted with
+ * elm_object_item_del().
+ *
+ * @remarks Associated @a data can be properly freed when the item is deleted if a
+ * callback function is set with elm_object_item_del_cb_set().
+ *
+ * @remarks If a function is passed as an argument, it is called every time this item
+ * is selected, i.e., the user stops the diskselector with this
+ * item at the center position. If such a function isn't needed, just passing
+ * @c NULL as @a func is enough. The same should be done for @a data.
+ *
+ * Simple example (with no function callback or data is associated):
+ * @code
+ * disk = elm_diskselector_add(win);
+ * ic = elm_icon_add(win);
+ * elm_image_file_set(ic, "path/to/image", NULL);
+ * elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
+ * elm_diskselector_item_append(disk, "label", ic, NULL, NULL);
+ * @endcode
+ *
+ * @param[in] obj The diskselector object
+ * @param[in] label The label of the diskselector item
+ * @param[in] icon The icon object to use on the left side of the item \n
+ * An icon can be any Evas object, but usually it is an icon created with elm_icon_add().
+ * @param[in] func The function to call when the item is selected
+ * @param[in] data The data to associate with the item for related callbacks
+ *
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_object_item_del()
+ * @see elm_diskselector_clear()
+ * @see elm_icon_add()
+ */
+EAPI Elm_Object_Item *elm_diskselector_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Gets the selected item.
+ *
+ * @remarks The selected item can be unselected with function
+ * elm_diskselector_item_selected_set(), and the first item of the
+ * diskselector is selected.
+ *
+ * @remarks The selected item is always centered on the diskselector, with the
+ * entire label displayed, i.e., maximum length set to side labels won't
+ * apply on the selected item. For more details, see
+ * elm_diskselector_side_text_max_length_set().
+ *
+ * @param[in] obj The diskselector object
+ * @return The selected diskselector item
+ */
+EAPI Elm_Object_Item *elm_diskselector_selected_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the selected state of an item.
+ *
+ * @details This sets the selected state of the given item @a it.
+ * @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
+ *
+ * @remarks If a new item is selected the previously selected is unselected.
+ * Previously selected item can be obtained with the function
+ * elm_diskselector_selected_item_get().
+ *
+ * @remarks If the item @a it is unselected, the first item of diskselector is selected.
+ *
+ * @remarks Selected items are visible at the center position of the diskselector.
+ * So if it is at another position before getting selected, or is invisible,
+ * the diskselector animates the items until the selected item reaches the center
+ * position.
+ *
+ * @param[in] it The diskselector item
+ * @param[in] selected The selected state
+ *
+ * @see elm_diskselector_item_selected_get()
+ * @see elm_diskselector_selected_item_get()
+ */
+EAPI void elm_diskselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * @brief Gets whether the @a item is selected.
+ *
+ * @param[in] it The diskselector item
+ * @return @c EINA_TRUE indicates that the item is selected, otherwise @c EINA_FALSE if it is not \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_diskselector_selected_item_set()
+ * @see elm_diskselector_item_selected_get()
+ */
+EAPI Eina_Bool elm_diskselector_item_selected_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the first item of the diskselector.
+ *
+ * @remarks The list of items follows an append order. So it returns the first
+ * item appended to the widget that isn't deleted.
+ *
+ * @param[in] obj The diskselector object
+ * @return The first item, otherwise @c NULL if none are present
+ *
+ * @see elm_diskselector_item_append()
+ * @see elm_diskselector_items_get()
+ */
+EAPI Elm_Object_Item *elm_diskselector_first_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the last item of the diskselector.
+ *
+ * @remarks The list of items follows an append order. So it returns the last
+ * item appended to the widget that isn't deleted.
+ *
+ * @param[in] obj The diskselector object
+ * @return The last item, otherwise @c NULL if none are present
+ *
+ * @see elm_diskselector_item_append()
+ * @see elm_diskselector_items_get()
+ */
+EAPI Elm_Object_Item *elm_diskselector_last_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the item before @a item in the diskselector.
+ *
+ * @remarks The list of items follows an append order. So it returns the item appended
+ * just before @a item which isn't deleted.
+ *
+ * @remarks If it is the first item, @c NULL is returned.
+ * First item can be obtained by elm_diskselector_first_item_get().
+ *
+ * @param[in] it The diskselector item
+ * @return The item before @a item, otherwise @c NULL if none are present or on failure
+ *
+ * @see elm_diskselector_item_append()
+ * @see elm_diskselector_items_get()
+ */
+EAPI Elm_Object_Item *elm_diskselector_item_prev_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the item after @a item in the diskselector.
+ *
+ * @remarks The list of items follows an append order. So it returns the item appended
+ * just after @a item which isn't deleted.
+ *
+ * @remarks If it is the last item, @c NULL is returned.
+ * Last item can be obtained by elm_diskselector_last_item_get().
+ *
+ * @param[in] it The diskselector item
+ * @return The item after @a item, otherwise @c NULL if none are present or on failure
+ *
+ * @see elm_diskselector_item_append()
+ * @see elm_diskselector_items_get()
*/
+EAPI Elm_Object_Item *elm_diskselector_item_next_get(const Elm_Object_Item *it);
-#include "elm_diskselector_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_diskselector_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_diskselector_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_entry.h b/src/lib/elm_entry.h
index c38adf801..55e570990 100644
--- a/src/lib/elm_entry.h
+++ b/src/lib/elm_entry.h
@@ -1,165 +1,133 @@
/**
* @defgroup Entry Entry
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html entry_inheritance_tree.png
* @image latex entry_inheritance_tree.eps
*
- * @image html img/widget/entry/preview-00.png
- * @image latex img/widget/entry/preview-00.eps width=\textwidth
- * @image html img/widget/entry/preview-01.png
- * @image latex img/widget/entry/preview-01.eps width=\textwidth
- * @image html img/widget/entry/preview-02.png
- * @image latex img/widget/entry/preview-02.eps width=\textwidth
- * @image html img/widget/entry/preview-03.png
- * @image latex img/widget/entry/preview-03.eps width=\textwidth
+ * @brief An entry is a convenience widget that shows a box in which the user
+ * can enter text.
*
- * An entry is a convenience widget which shows a box that the user can
- * enter text into. Entries by default don't scroll, so they grow to
- * accommodate the entire text, resizing the parent window as needed. This
- * can be changed with the elm_entry_scrollable_set() function.
+ * Entries by default don't scroll, so they grow to accommodate the entire
+ * text, resizing the parent window as needed. This can be changed with the
+ * elm_entry_scrollable_set() function.
*
* They can also be single line or multi line (the default) and when set
- * to multi line mode they support text wrapping in any of the modes
+ * to the multi line mode they support text wrapping in any of the modes
* indicated by #Elm_Wrap_Type.
*
- * Other features include password mode, filtering of inserted text with
+ * Other features include the password mode, filtering of inserted text with
* elm_entry_markup_filter_append() and related functions, inline "items" and
* formatted markup text.
*
* This widget inherits from the @ref Layout one, so that all the
- * functions acting on it also work for entry objects (since 1.8).
+ * functions acting on it also work for entry objects (@since 1.8).
*
- * This widget implements the @b @ref elm-scrollable-interface
+ * This widget implements the elm-scrollable-interface
* interface, so that all (non-deprecated) functions for the base
- * @ref Scroller widget also work for entries (since 1.8).
+ * @ref Scroller widget also work for entries (@since 1.8).
*
* Some calls on the entry'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
+ * ones mentioned for each case of deprecation here.
+ * Eventually the deprecated ones are discarded (next major
* release).
*
* @section entry-markup Formatted text
*
* The markup tags supported by the Entry are defined by the theme, but
- * even when writing new themes or extensions it's a good idea to stick to
+ * even while writing new themes or extensions it's a good idea to stick to
* a sane default, to maintain coherency and avoid application breakages.
- * Currently defined by the default theme are the following tags:
+ * Currently the tags defined by the default theme are as follows:
* @li \<br\>: Inserts a line break.
* @li \<ps\>: Inserts a paragraph separator. This is preferred over line
* breaks.
* @li \<tab\>: Inserts a tab.
- * @li \<em\>...\</em\>: Emphasis. Sets the @em oblique style for the
+ * @li \<em\>...\</em\>: Emphasizes text. Sets the @em oblique style for the
* enclosed text.
* @li \<b\>...\</b\>: Sets the @b bold style for the enclosed text.
* @li \<link\>...\</link\>: Underlines the enclosed text.
* @li \<hilight\>...\</hilight\>: Highlights the enclosed text.
- * @li \<title\>...\</title\>: Main title.
- * @li \<subtitle\>...\</subtitle\>: Secondary level title.
- * @li \<bigger\>...\</bigger\>: A really big text, not so big as the titles.
- * @li \<big\>...\</big\>: Big text.
- * @li \<small\>...\</small\>: Small text.
- * @li \<smaller\>...\</smaller\>: Really small text, at the point of unreadability.
- *
- * Entry also support tags for code syntax highlight. Note that this does not
- * mean that the entry will automatically perform code highlight, application
- * are responsable of applying the correct tag to code blocks.
- * The default theme define the following tags:
- * @li \<code\>...\</code\>: Monospace font without shadows.
- * @li \<comment\>...\</comment\>: Code comments.
- * @li \<string\>...\</string\>: Strings of text.
- * @li \<number\>...\</number\>: Numeric expression (ex: 1, 2, 0.34, etc)
- * @li \<brace\>...\</brace\>: Braces used for code syntax.
- * @li \<type\>...\</type\>: Variables types (ex: int, float, char, Evas_Object, etc)
- * @li \<class\>...\</class\>: Class names, when defined, not when used.
- * @li \<function\>...\</function\>: Function names, when defined, not called.
- * @li \<param\>...\</param\>: Generic parameters.
- * @li \<keyword\>...\</keyword\>: Language keywords (ex: return, NULL, while, for, etc)
- * @li \<preprocessor\>...\</preprocessor\>: Preprocessors definitions.
- * @li \<line_added\>...\</line_added\>: Diff addeded lines.
- * @li \<line_removed\>...\</line_removed\>: Diff removed lines.
- * @li \<line_changed\>...\</line_changed\>: Diff changed lines.
*
* @section entry-special Special markups
*
* Besides those used to format text, entries support two special markup
- * tags used to insert click-able portions of text or items inlined within
- * the text.
+ * tags used to insert clickable portions of text or items inlined within
+ * text.
*
* @subsection entry-anchors Anchors
*
* Anchors are similar to HTML anchors. Text can be surrounded by \<a\> and
- * \</a\> tags and an event will be generated when this text is clicked,
- * like this:
+ * \</a\> and an event is generated when this text is clicked,
+ * for example:
*
* @code
* This text is outside <a href=anc-01>but this one is an anchor</a>
* @endcode
*
- * The @c href attribute in the opening tag gives the name that will be
- * used to identify the anchor and it can be any valid utf8 string.
+ * The @c href attribute in the opening tag gives the name that is
+ * used to identify the anchor. It can be any valid UTF8 string.
*
* When an anchor is clicked, an @c "anchor,clicked" signal is emitted with
- * an #Elm_Entry_Anchor_Info in the @p event_info parameter for the
- * callback function. The same applies for "anchor,in" (mouse in), "anchor,out"
+ * #Elm_Entry_Anchor_Info in the @a event_info parameter for the
+ * callback function. The same applies for the "anchor,in" (mouse in), "anchor,out"
* (mouse out), "anchor,down" (mouse down), and "anchor,up" (mouse up) events on
* an anchor.
*
* @subsection entry-items Items
*
* Inlined in the text, any other @c Evas_Object can be inserted by using
- * \<item\> tags this way:
+ * \<item\> tags, for example:
*
* @code
* <item size=16x16 vsize=full href=emoticon/haha></item>
* @endcode
*
- * Just like with anchors, the @c href identifies each item, but these need,
- * in addition, to indicate their size, which is done using any one of
- * @c size, @c absize or @c relsize attributes. These attributes take their
- * value in the WxH format, where W is the width and H the height of the
+ * Just like with anchors, the @c href identifies each item. However, these need
+ * to additionally indicate their size, which is done using either the
+ * @c size, @c absize, or @c relsize attribute. These attributes take their
+ * value in the WxH format, where W is the width and H is the height of the
* item.
*
- * @li absize: Absolute pixel size for the item. Whatever value is set will
- * be the item's size regardless of any scale value the object may have
- * been set to. The final line height will be adjusted to fit larger items.
+ * @li absize: Absolute pixel size for the item. Whatever value is set
+ * becomes the item's size regardless of any scale value the object may have
+ * been set to. The final line height is adjusted to fit larger items.
* @li size: Similar to @c absize, but it's adjusted to the scale value set
* for the object.
* @li relsize: Size is adjusted for the item to fit within the current
* line height.
*
- * Besides their size, items are specified a @c vsize value that affects
- * how their final size and position are calculated. The possible values
+ * Besides their size, items are given a @c vsize value that affects
+ * how their final size and position is calculated. The possible values
* are:
- * @li ascent: Item will be placed within the line's baseline and its
+ * @li ascent: Item is placed within the line's baseline and its
* ascent. That is, the height between the line where all characters are
* positioned and the highest point in the line. For @c size and @c absize
- * items, the descent value will be added to the total line height to make
- * them fit. @c relsize items will be adjusted to fit within this space.
- * @li full: Items will be placed between the descent and ascent, or the
- * lowest point in the line and its highest.
+ * items, the descent value is added to the total line height to make
+ * them fit. @c relsize items are adjusted to fit within this space.
+ * @li full: Items are placed between the descent and ascent, or the
+ * lowest and highest point in the line.
*
* The next image shows different configurations of items and how
* the previously mentioned options affect their sizes. In all cases,
- * the green line indicates the ascent, blue for the baseline and red for
+ * the green line indicates the ascent, blue indicates the baseline, and red indicates
* the descent.
*
* @image html entry_item.png
- * @image latex entry_item.eps width=\textwidth
+ * @image latex entry_item.eps "entry item" width=\textwidth
*
- * And another one to show how size differs from absize. In the first one,
- * the scale value is set to 1.0, while the second one is using one of 2.0.
+ * And another one to show how size differs from @c absize. In the first one,
+ * the scale value is set to @c 1.0, while the second one is using @c 2.0.
*
* @image html entry_item_scale.png
- * @image latex entry_item_scale.eps width=\textwidth
+ * @image latex entry_item_scale.eps "entry item scale" width=\textwidth
*
- * After the size for an item is calculated, the entry will request an
+ * After the size for an item is calculated, the entry requests an
* object to place in its space. For this, the functions set with
- * elm_entry_item_provider_append() and related functions will be called
- * in order until one of them returns a @c non-NULL value. If no providers
+ * elm_entry_item_provider_append() and other related functions are called
+ * in order until one of them returns a non-NULL value. If no providers
* are available, or all of them return @c NULL, then the entry falls back
- * to one of the internal defaults, provided the name matches with one of
+ * to one of the internal defaults, provided the name matches one of
* them.
*
* All of the following are currently supported:
@@ -206,84 +174,75 @@
* - emoticon/wtf
*
* Alternatively, an item may reference an image by its path, using
- * the URI form @c file:///path/to/an/image.png and the entry will then
- * use that image for the item.
+ * the URI form @c file:///path/to/an/image.png and the entry then
+ * uses that image for the item.
*
* @section entry-style-set Setting entry's style
*
* There are 2 major ways to change the entry's style:
- * - Theme - set the "base" field to the desired style.
- * - User style - Pushing overrides to the theme style to the textblock object by using evas_object_textblock_style_user_push().
+ * - Theme - Set the "base" field to the desired style.
+ * - User style - Pushing overrides the theme style to the textblock object by using evas_object_textblock_style_user_push().
*
- * You should modify the theme when you would like to change the style for
- * aesthetic reasons. While the user style should be changed when you would
- * like to change the style to something specific defined at run-time, e.g,
+ * You should modify the theme when you want to change the style for
+ * aesthetic reasons. While the user style should be changed when you want
+ * to change the style to something specifically defined at run-time, e.g,
* setting font or font size in a text editor.
*
* @section entry-files Loading and saving files
*
* Entries have convenience functions to load text from a file and save
* changes back to it after a short delay. The automatic saving is enabled
- * by default, but can be disabled with elm_entry_autosave_set() and files
- * can be loaded directly as plain text or have any markup in them
- * recognized. See elm_entry_file_set() for more details.
+ * by default, but can be disabled with elm_entry_autosave_set(). Files
+ * can be loaded directly as plain text or can have any recognized markup in them.
+ * See elm_entry_file_set() for more details.
*
* @section entry-signals Emitted signals
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li "aborted": The escape key was pressed on a single line entry. (since 1.7)
- * @li "activated": The enter key was pressed on a single line entry.
- * @li "anchor,clicked": An anchor has been clicked. The event_info
- * parameter for the callback will be an #Elm_Entry_Anchor_Info.
- * @li "anchor,down": Mouse button has been pressed on an anchor. The event_info
- * parameter for the callback will be an #Elm_Entry_Anchor_Info.
- * @li "anchor,hover,opened": The anchor is clicked.
- * @li "anchor,in": Mouse cursor has moved into an anchor. The event_info
- * parameter for the callback will be an #Elm_Entry_Anchor_Info.
- * @li "anchor,out": Mouse cursor has moved out of an anchor. The event_info
- * parameter for the callback will be an #Elm_Entry_Anchor_Info.
- * @li "anchor,up": Mouse button has been unpressed on an anchor. The event_info
- * parameter for the callback will be an #Elm_Entry_Anchor_Info.
- * @li "changed": The text within the entry was changed.
- * @li "changed,user": The text within the entry was changed because of user interaction.
+ * @ref Layout :
+ * @li "changed": The text within the entry is changed.
+ * @li "changed,user": The text within the entry is changed because of user interaction.
+ * @li "activated": The enter key is pressed on a single line entry.
+ * @li "aborted": The escape key is pressed on a single line entry. (since 1.7)
+ * @li "press": A mouse button has been pressed on the entry.
+ * @li "longpressed": A mouse button has been pressed and held for a couple of
+ * seconds.
* @li "clicked": The entry has been clicked (mouse press and release).
* @li "clicked,double": The entry has been double clicked.
* @li "clicked,triple": The entry has been triple clicked.
- * @li "cursor,changed": The cursor has changed position.
- * @li "cursor,changed,manual": The cursor has changed position manually.
* @li "focused": The entry has received focus.
* @li "unfocused": The entry has lost focus.
- * @li "language,changed": Program language changed.
- * @li "longpressed": A mouse button has been pressed and held for a couple
- * @li "maxlength,reached": Called when a maximum length is reached.
- * @li "preedit,changed": The preedit string has changed.
- * @li "press": A mouse button has been pressed on the entry.
- * seconds.
- * @li "redo,request": Called on redo request.
- * @li "selection,changed": The current selection has changed.
- * @li "selection,cleared": The current selection has been cleared.
- * @li "selection,copy": A copy of the selected text into the clipboard was
+ * @li "selection,paste": A paste of the clipboard contents has been requested.
+ * @li "selection,copy": A copy of the selected text into the clipboard has been
* requested.
- * @li "selection,cut": A cut of the selected text into the clipboard was
+ * @li "selection,cut": A cut of the selected text into the clipboard has been
* requested.
- * @li "selection,paste": A paste of the clipboard contents was requested.
* @li "selection,start": A selection has begun and no previous selection
* existed.
- * @li "text,set,done": Whole text has been set to the entry.
- * @li "theme,changed": Called when the theme is changed.
- * @li "undo,request": Called on undo request.
- * @li "rejected": Called when some of inputs are rejected by the filter. (since 1.9)
+ * @li "selection,changed": The current selection has changed.
+ * @li "selection,cleared": The current selection has been cleared.
+ * @li "cursor,changed": The cursor has changed position.
+ * @li "anchor,clicked": An anchor has been clicked. The @a event_info
+ * parameter for the callback is #Elm_Entry_Anchor_Info.
+ * @li "anchor,in": The mouse cursor has moved into an anchor. The @a event_info
+ * parameter for the callback is #Elm_Entry_Anchor_Info.
+ * @li "anchor,out": The mouse cursor has moved out of an anchor. The @a event_info
+ * parameter for the callback is #Elm_Entry_Anchor_Info.
+ * @li "anchor,up": The mouse button has been unpressed on an anchor. The @a event_info
+ * parameter for the callback is #Elm_Entry_Anchor_Info.
+ * @li "anchor,down": The muse button has been pressed on an anchor. The @a event_info
+ * parameter for the callback is #Elm_Entry_Anchor_Info.
+ * @li "preedit,changed": The preedit string has changed.
+ * @li "language,changed": The program language has changed.
*
- * Default content parts of the entry items that you can use for are:
+ * The default content parts of the entry items that you can use are:
* @li "icon" - An icon in the entry
- * @li "end" - A content in the end of the entry
+ * @li "end" - Content at the end of the entry
*
- * Default text parts of the entry that you can use for are:
- * @li "default" - A text of the entry
- * @li "guide" - A placeholder of the entry
+ * The default text parts of the entry that you can use are:
+ * @li "default" - Text of the entry
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_signal_emit
* @li @ref elm_object_part_text_set
* @li @ref elm_object_part_text_get
@@ -295,20 +254,1924 @@
* @li @ref elm_object_disabled_set
* @li @ref elm_object_disabled_get
*
- * @section entry-examples
+ * @{
+ */
+
+/**
+ * @typedef Elm_Text_Format
+ *
+ * @brief Enumeration that defines the text format types.
*
- * An overview of the Entry API can be seen in @ref entry_example
+ * @see elm_entry_file_set()
+ */
+typedef enum
+{
+ ELM_TEXT_FORMAT_PLAIN_UTF8, /**< Plain UTF8 type */
+ ELM_TEXT_FORMAT_MARKUP_UTF8 /**< Markup UTF8 type */
+} Elm_Text_Format;
+
+/**
+ * @typedef Elm_Wrap_Type
*
- * @{
+ * @brief Enumeration that defines the line wrapping types.
+ *
+ * @see elm_entry_line_wrap_set()
+ */
+typedef enum
+{
+ ELM_WRAP_NONE = 0, /**< No wrap - value is zero */
+ ELM_WRAP_CHAR, /**< Char wrap - wrap between characters */
+ ELM_WRAP_WORD, /**< Word wrap - wrap within the allowed wrapping points (as defined in the unicode standard) */
+ ELM_WRAP_MIXED, /**< Mixed wrap - Word wrap, if that fails, char wrap */
+ ELM_WRAP_LAST
+} Elm_Wrap_Type; /**< Type of word or character wrapping to use */
+
+/**
+ * @typedef Elm_Input_Panel_Layout
+ *
+ * @brief Enumeration that defines the input panel (virtual keyboard) layout types.
+ *
+ * @see elm_entry_input_panel_layout_set()
+ */
+typedef enum
+{
+ ELM_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */
+ ELM_INPUT_PANEL_LAYOUT_NUMBER, /**< Number layout */
+ ELM_INPUT_PANEL_LAYOUT_EMAIL, /**< Email layout */
+ ELM_INPUT_PANEL_LAYOUT_URL, /**< URL layout */
+ ELM_INPUT_PANEL_LAYOUT_PHONENUMBER, /**< Phone number layout */
+ ELM_INPUT_PANEL_LAYOUT_IP, /**< IP layout */
+ ELM_INPUT_PANEL_LAYOUT_MONTH, /**< Month layout */
+ ELM_INPUT_PANEL_LAYOUT_NUMBERONLY, /**< Number only layout */
+ ELM_INPUT_PANEL_LAYOUT_INVALID, /**< Invalid layout(not recommended) */
+ ELM_INPUT_PANEL_LAYOUT_HEX, /**< Hexadecimal layout */
+ ELM_INPUT_PANEL_LAYOUT_TERMINAL, /**< Command-line terminal layout including the esc, alt, ctrl key and so on (no auto-correct, no auto-capitalization) */
+ ELM_INPUT_PANEL_LAYOUT_PASSWORD, /**< Like normal, but no auto-correct, no auto-capitalization */
+ ELM_INPUT_PANEL_LAYOUT_DATETIME, /**< Date and time layout @since 1.8 */
+ ELM_INPUT_PANEL_LAYOUT_EMOTICON /**< Emoticon layout @since 1.10 */
+} Elm_Input_Panel_Layout; /**< Type of input panel (virtual keyboard) to use - this is a hint and may not provide exactly what is desired */
+
+/**
+ * @typedef Elm_Input_Hints
+ * @brief Enumeration that defines the types of Input Hints.
+ * @since 1.12
+ */
+typedef enum
+{
+ ELM_INPUT_HINT_NONE = 0, /**< No active hints @since 1.12 */
+ ELM_INPUT_HINT_AUTO_COMPLETE = 1 << 0, /**< suggest word auto completion @since 1.12 */
+ ELM_INPUT_HINT_SENSITIVE_DATA = 1 << 1, /**< typed text should not be stored. @since 1.12 */
+} Elm_Input_Hints;
+
+enum
+{
+ ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_NORMAL, /**< The plain normal layout @since 1.12 */
+ ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_FILENAME, /**< Filename layout. Symbols such as '/' should be disabled. @since 1.12 */
+ ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_PERSON_NAME /**< The name of a person. @since 1.12 */
+};
+
+enum
+{
+ ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL, /**< The plain normal number layout @since 1.8 */
+ ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED, /**< The number layout to allow a positive or negative sign at the start @since 1.8 */
+ ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_DECIMAL, /**< The number layout to allow decimal point to provide fractional value @since 1.8 */
+ ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED_AND_DECIMAL /**< The number layout to allow decimal point and negative sign @since 1.8 */
+};
+
+enum
+{
+ ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NORMAL, /**< The normal password layout @since 1.12 */
+ ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY /**< The password layout to allow only number @since 1.12 */
+};
+
+/**
+ * @typedef Elm_Input_Panel_Lang
+ *
+ * @brief Enumeration that defines the input panel (virtual keyboard) language modes.
+ *
+ * @see elm_entry_input_panel_language_set()
+ */
+typedef enum
+{
+ ELM_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic language mode */
+ ELM_INPUT_PANEL_LANG_ALPHABET /**< Alphabet language mode */
+} Elm_Input_Panel_Lang;
+
+/**
+ * @typedef Elm_Autocapital_Type
+ *
+ * @brief Enumeration that defines the autocapitalization types.
+ *
+ * @see elm_entry_autocapital_type_set()
+ */
+typedef enum
+{
+ ELM_AUTOCAPITAL_TYPE_NONE, /**< No autocapitalization when typing */
+ ELM_AUTOCAPITAL_TYPE_WORD, /**< Autocapitalize each typed word */
+ ELM_AUTOCAPITAL_TYPE_SENTENCE, /**< Autocapitalize the start of each sentence */
+ ELM_AUTOCAPITAL_TYPE_ALLCHARACTER, /**< Autocapitalize all letters */
+} Elm_Autocapital_Type; /**< Choose a method of autocapitalization */
+
+/**
+ * @typedef Elm_Input_Panel_Return_Key_Type
+ *
+ * @brief Enumeration that defines the "Return" key types on the input panel (virtual keyboard).
+ *
+ * @see elm_entry_input_panel_return_key_type_set()
+ */
+typedef enum
+{
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT, /**< Default key type */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE, /**< Done key type */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_GO, /**< Go key type */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_JOIN, /**< Join key type */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN, /**< Login key type */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_NEXT, /**< Next key type */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH, /**< Search string or magnifier icon key type */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEND, /**< Send key type */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN /**< Sign-in key type @since 1.8 */
+} Elm_Input_Panel_Return_Key_Type;
+
+/**
+ * @typedef Elm_Entry_Anchor_Info
+ *
+ * @brief The information sent in the callback for the "anchor,clicked" signals emitted
+ * by entries.
+ */
+typedef struct _Elm_Entry_Anchor_Info Elm_Entry_Anchor_Info;
+
+/**
+ * @struct _Elm_Entry_Anchor_Info
+ *
+ * @brief The information sent in the callback for the "anchor,clicked" signals emitted
+ * by entries.
+ */
+struct _Elm_Entry_Anchor_Info
+{
+ const char *name; /**< Name of the anchor, as stated in its href */
+ int button; /**< Mouse button used to click on it */
+ Evas_Coord x, /**< Anchor geometry, relative to canvas */
+ y, /**< Anchor geometry, relative to canvas */
+ w, /**< Anchor geometry, relative to canvas */
+ h; /**< Anchor geometry, relative to canvas */
+};
+
+/**
+ * @typedef Elm_Entry_Anchor_Hover_Info
+ *
+ * @brief The information sent in the callback for "anchor,clicked" signals emitted by
+ * the Anchor_Hover widget.
+ */
+typedef struct _Elm_Entry_Anchor_Hover_Info Elm_Entry_Anchor_Hover_Info;
+
+/**
+ * @struct _Elm_Entry_Anchor_Hover_Info
+ *
+ * @brief The information sent in the callback for "anchor,clicked" signals emitted by
+ * the Anchor_Hover widget.
+ */
+struct _Elm_Entry_Anchor_Hover_Info
+{
+ const Elm_Entry_Anchor_Info *anchor_info; /**< Actual anchor info */
+ Evas_Object *hover; /**< Hover object to use for the popup */
+ struct
+ {
+ Evas_Coord x, y, w, h;
+ } hover_parent; /**< Geometry of the object used as the parent by the
+ hover */
+ Eina_Bool hover_left : 1; /**< Hint indicating whether there's space
+ for content on the left side of
+ the hover. Before calling the
+ callback, the widget makes the
+ necessary calculations to check
+ which sides are fit to be set with
+ content, based on the position where
+ hover is activated and its distance
+ to the edges of its parent object
+ */
+ Eina_Bool hover_right : 1; /**< Hint indicating whether content fits on
+ the right side of the hover.
+ See @ref hover_left */
+ Eina_Bool hover_top : 1; /**< Hint indicating whether content fits on top
+ of the hover. See @ref hover_left */
+ Eina_Bool hover_bottom : 1; /**< Hint indicating whether content fits
+ below the hover. See @ref
+ hover_left */
+};
+
+/**
+ * @typedef Elm_Entry_Item_Provider_Cb
+ * @brief Called to provide items.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If it returns an object handle other than @c NULL (it should create an
+ * object to do this), then this object is used to replace the current item.
+ * If not, then the next provider is called until it provides an item object, or the
+ * default provider in entry does.
+ *
+ * @param[in] data The data specified as the last parameter when adding the provider
+ * @param[in] entry The entry object
+ * @param[in] text A pointer to the item href string in the text
+ *
+ * @return The object to be placed in the entry like an icon, or another element
+ *
+ * @see elm_entry_item_provider_append
+ * @see elm_entry_item_provider_prepend
+ * @see elm_entry_item_provider_remove
+ */
+typedef Evas_Object * (*Elm_Entry_Item_Provider_Cb)(void *data, Evas_Object *entry, const char *item);
+
+/**
+ * @typedef Elm_Entry_Filter_Cb
+ * @brief Called by entry filters to modify text.
+ *
+ * @since_tizen 2.3
+ *
+ * @param data The data specified as the last parameter when adding the filter
+ * @param entry The entry object
+ * @param text A pointer to the location of the text being filtered \n
+ * The type of text is always markup \n
+ * This data can be modified, but any additional allocations must be managed by the user.
+ *
+ * @see elm_entry_markup_filter_append
+ * @see elm_entry_markup_filter_prepend
+ * @see elm_entry_markup_filter_remove
+ */
+typedef void (*Elm_Entry_Filter_Cb)(void *data, Evas_Object *entry, char **text);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature (20140625)
+ *
+ * @typedef Elm_Entry_Anchor_Access_Provider_Cb
+ * @brief This callback type is used to provide TTS string of an anchor.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If it returns a string other than NULL,
+ * then this string is used to replace the current anchor's TTS string.
+ * @remarks If not the next provider is called until one provides a string, or the
+ * default string will be read.
+ *
+ * @param data The data specified as the last param when adding the provider
+ * @param entry The entry object
+ * @param name A pointer to the anchor href string in the text
+ * @param text A pointer to the text inside of the anchor's range.
+ * @return TTS string for the anchor.
+ *
+ * @see elm_entry_anchor_access_provider_append
+ * @see elm_entry_anchor_access_provider_prepend
+ * @see elm_entry_anchor_access_provider_remove
+ */
+typedef char * (*Elm_Entry_Anchor_Access_Provider_Cb)(void *data, Evas_Object * entry, const char *name, const char *text);
+
+/**
+ * @typedef Elm_Entry_Change_Info
+ * @brief This corresponds to Edje_Entry_Change_Info. It includes information about
+ * a change in the entry.
+ */
+typedef Edje_Entry_Change_Info Elm_Entry_Change_Info;
+
+/**
+ * @brief Adds an entry to the @a parent object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, entries are as follows:
+ * @li not scrolled
+ * @li multi-line
+ * @li word wrapped
+ * @li autosave is enabled
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_entry_add(Evas_Object *parent);
+
+/**
+ * @brief Pushes the style to the top of the user style stack.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If there are styles in the user style stack, the properties in the top style
+ * of the user style stack replace the properties in the current theme.
+ * The input style is specified in the format tag='property=value' (i.e. DEFAULT='font=Sans font_size=60'hilight=' + font_weight=Bold').
+ *
+ * @param[in] obj The entry object
+ * @param[in] style The style user to push
+ *
+ * @since 1.7
+ */
+EAPI void elm_entry_text_style_user_push(Evas_Object *obj, const char *style);
+
+/**
+ * @brief Removes the style at the top of the user style stack.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param [in] obj The entry object
+ *
+ * @see elm_entry_text_style_user_push()
+ */
+EAPI void elm_entry_text_style_user_pop(Evas_Object *obj);
+
+/**
+ * @brief Retrieves the style on the top of the user style stack.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The style on the top of the user style stack if it exists, otherwise @c NULL
+ *
+ * @see elm_entry_text_style_user_push()
+ */
+EAPI const char* elm_entry_text_style_user_peek(const Evas_Object *obj);
+
+/**
+ * @brief Sets the entry to the single line mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks In the single line mode, entries don't wrap when the text reaches the
+ * edge, instead they keep growing horizontally. Pressing the Enter
+ * key generates an @c "activate" event instead of adding a new line.
+ *
+ * @remarks When @a single_line is @c EINA_FALSE, line wrapping takes effect again
+ * and pressing enter breaks the text into a different line
+ * without generating any events.
+ *
+ * @param[in] obj The entry object
+ * @param[in] single_line If @c true, the text in the entry is on a single line,
+ * otherwise @c false
+ */
+EAPI void elm_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line);
+
+/**
+ * @brief Gets whether the entry is set to be on a single line.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return single_line @c true if the text in the entry is set to display on a single line,
+ * otherwise @c false
+ *
+ * @see elm_entry_single_line_set()
+ */
+EAPI Eina_Bool elm_entry_single_line_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the entry to the password mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks In the password mode, entries are implicitly on a single line and the display of
+ * any text in them is replaced with asterisks (*).
+ *
+ * @param[in] obj The entry object
+ * @param[in] password If @c true the password mode is enabled,
+ * otherwise @c false to disable it
+ */
+EAPI void elm_entry_password_set(Evas_Object *obj, Eina_Bool password);
+
+/**
+ * @brief Gets whether the entry is set to the password mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c true if the entry is set to display all characters
+ * as asterisks (*), otherwise @c false
+ *
+ * @see elm_entry_password_set()
+ */
+EAPI Eina_Bool elm_entry_password_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the text displayed within the entry to @a entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Using this function bypasses text filters
+ *
+ * @param[in] obj The entry object
+ * @param[in] entry The text to be displayed
+ */
+EAPI void elm_entry_entry_set(Evas_Object *obj, const char *entry);
+
+/**
+ * @brief Returns the text currently shown in the object @a entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The currently displayed text, otherwise @c NULL on failure
+ *
+ * @see elm_entry_entry_set()
+ */
+EAPI const char *elm_entry_entry_get(const Evas_Object *obj);
+
+/**
+ * @brief Appends @a entry to the text of the entry.
+ *
+ * @details This adds the text in @a entry to the end of any text already present in the
+ * widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The appended text is subject to any filters set for the widget.
+ *
+ * @param[in] obj The entry object
+ * @param[in] entry The text to be displayed
+ *
+ * @see elm_entry_markup_filter_append()
+ */
+EAPI void elm_entry_entry_append(Evas_Object *obj, const char *entry);
+
+/**
+ * @brief Gets whether the entry is empty.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Empty means no text at all. If there are any markup tags, like an item
+ * tag for which no provider finds anything, and no text is displayed, this
+ * function still returns @c EINA_FALSE.
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE if the entry is empty, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_entry_is_empty(const Evas_Object *obj);
+
+/**
+ * @brief Gets any selected text within the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If there's any selected text in the entry, this function returns it as
+ * a string in the markup format. @c NULL is returned if no selection exists or
+ * if an error occurs.
+ *
+ * @remarks The returned value points to an internal string should not be freed
+ * or modified in any way. If the @a entry object is deleted or its
+ * contents are changed, the returned pointer should be considered invalid.
+ *
+ * @param[in] obj The entry object
+ * @return The selected text within the entry, otherwise @c NULL on failure
+ */
+EAPI const char *elm_entry_selection_get(const Evas_Object *obj);
+
+/**
+ * @brief Returns the actual textblock object of the entry.
+ *
+ * @details This function exposes the internal textblock object that actually
+ * contains and draws the text. This should be used for low-level
+ * manipulations that are otherwise not possible.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Changing the textblock directly from here does not notify edje/elm to
+ * recalculate the textblock size automatically, so any modifications
+ * done to the textblock and returned by this function should be followed by
+ * a call to elm_entry_calc_force().
+ *
+ * @remarks The return value is marked as const so as to serve as an additional warning.
+ * One should not use the returned object with any of the generic evas
+ * functions (geometry_get/resize/move and so on), but only with the textblock
+ * functions; the former either does not work at all, or breaks the correct
+ * functionality.
+ *
+ * @remarks IMPORTANT: Many functions may change (i.e delete and create a new one)
+ * the internal textblock object. Do NOT cache the returned object, and try
+ * not to mix calls on this object with regular elm_entry calls (which may
+ * change the internal textblock object). This applies to all cursors
+ * returned from textblock calls, and all the other derivative values.
+ *
+ * @param[in] obj The entry object
+ * @return The textblock object
+ */
+EAPI Evas_Object * elm_entry_textblock_get(Evas_Object *obj);
+
+/**
+ * @brief Forces calculation of the entry size and text layouting.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This should be used after modifying the textblock object directly. See
+ * elm_entry_textblock_get() for more information.
+ *
+ * @param[in] obj The entry object
+ *
+ * @see elm_entry_textblock_get()
+ */
+EAPI void elm_entry_calc_force(Evas_Object *obj);
+
+/**
+ * @brief Inserts the given text into the entry at the current cursor position.
+ *
+ * @details This inserts text at the cursor position as if it is typed
+ * by the user (note that this also allows markup which a user
+ * can't just "type" as it would be converted to escaped text, so this
+ * call can be used to insert things like emoticon items or bold push/pop
+ * tags, other font and color change tags etc.)
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If any selection exists, it is replaced by the inserted text.
+ *
+ * @remarks The inserted text is subject to any filters set for the widget.
+ *
+ * @param[in] obj The entry object
+ * @param[in] entry The text to insert
+ *
+ * @see elm_entry_markup_filter_append()
+ */
+EAPI void elm_entry_entry_insert(Evas_Object *obj, const char *entry);
+
+/**
+ * @brief Sets the line wrap type to use on multi-line entries.
+ *
+ * @details This sets the wrap type used by the entry of any of the specified
+ * Elm_Wrap_Type. This tells how the text is implicitly cut into a new
+ * line (without inserting a line break or paragraph separator) when it
+ * reaches the far edge of the widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Note that this only makes sense for multi-line entries. A widget set
+ * to be a single line never wraps.
+ *
+ * @param[in] obj The entry object
+ * @param[in] wrap The wrap mode to use \n
+ * For more details, see Elm_Wrap_Type
+ */
+EAPI void elm_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap);
+
+/**
+ * @brief Gets the wrap mode that the entry is set to use.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The wrap type
+ *
+ * @see elm_entry_line_wrap_set()
+ */
+EAPI Elm_Wrap_Type elm_entry_line_wrap_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether the entry is editable.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, entries are editable and when focused, any text input by the
+ * user is inserted at the current cursor position. But calling this
+ * function with @a editable as @c EINA_FALSE prevents the user from
+ * inputing text into the entry.
+ *
+ * @remarks The only way to change the text of a non-editable entry is to use
+ * elm_object_text_set(), elm_entry_entry_insert(), and other related
+ * functions.
+ *
+ * @param[in] obj The entry object
+ * @param[in] editable If @c EINA_TRUE user input is inserted in the entry,
+ * otherwise @c EINA_FALSE if the entry is read-only and no user input is allowed
+ */
+EAPI void elm_entry_editable_set(Evas_Object *obj, Eina_Bool editable);
+
+/**
+ * @brief Gets whether the entry is editable.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c true if the entry is editable by the user,
+ * otherwise @ false if it is not editable by the user
+ *
+ * @see elm_entry_editable_set()
+ */
+EAPI Eina_Bool elm_entry_editable_get(const Evas_Object *obj);
+
+/**
+ * @brief Drops any existing text selection within the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_select_none(Evas_Object *obj);
+
+/**
+ * @brief Selects all the text within the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_select_all(Evas_Object *obj);
+
+/**
+ * @brief Moves the cursor by one position to the right within the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_entry_cursor_next(Evas_Object *obj);
+
+/**
+ * @brief Moves the cursor one place to the left within the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_entry_cursor_prev(Evas_Object *obj);
+
+/**
+ * @brief Moves the cursor one line up within the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_entry_cursor_up(Evas_Object *obj);
+
+/**
+ * @brief Moves the cursor one line down within the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_entry_cursor_down(Evas_Object *obj);
+
+/**
+ * @brief Moves the cursor to the beginning of the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_cursor_begin_set(Evas_Object *obj);
+
+/**
+ * @brief Moves the cursor to the end of the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_cursor_end_set(Evas_Object *obj);
+
+/**
+ * @brief Moves the cursor to the beginning of the current line.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_cursor_line_begin_set(Evas_Object *obj);
+
+/**
+ * @brief Moves the cursor to the end of the current line.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_cursor_line_end_set(Evas_Object *obj);
+
+/**
+ * @brief Begins a selection within the entry as though
+ * the user were holding down the mouse button to make a selection.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_cursor_selection_begin(Evas_Object *obj);
+
+/**
+ * @brief Ends a selection within the entry as though
+ * the user had just released the mouse button while making a selection.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_cursor_selection_end(Evas_Object *obj);
+
+/**
+ * @brief Gets whether a format node exists at the current cursor position.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A format node is anything that defines how the text is rendered. It can
+ * be a visible format node, such as a line break or a paragraph separator,
+ * or an invisible one, such as bold begin or end tag.
+ * This function returns whether any format node exists at the current
+ * cursor position.
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE if the current cursor position contains a format node,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_entry_cursor_is_visible_format_get()
+ */
+EAPI Eina_Bool elm_entry_cursor_is_format_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets if the current cursor position holds a visible format node.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE if the current cursor is a visible format,
+ * otherwise @c EINA_FALSE if it's an invisible one or no format exists
+ *
+ * @see elm_entry_cursor_is_format_get()
+ */
+EAPI Eina_Bool elm_entry_cursor_is_visible_format_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the character pointed by the cursor at its current position.
+ *
+ * @details This function returns a string with the UTF8 character stored at the
+ * current cursor position.
+ * Only the text is returned, any format that may exist is not going to be a part
+ * of the return value. The string must be released with free() by you.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The text pointed by the cursor
+ */
+EAPI char *elm_entry_cursor_content_get(const Evas_Object *obj);
+
+/**
+ * @brief Returns the geometry of the cursor.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It's useful if you want to draw something on the cursor (or where it is),
+ * or for example in case of a scrolled entry where you want to show the
+ * cursor.
+ *
+ * @param[in] obj The entry object
+ * @param[out] x The returned geometry
+ * @param[out] y The returned geometry
+ * @param[out] w The returned geometry
+ * @param[out] h The returned geometry
+ * @return @c EINA_TRUE upon success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_entry_cursor_geometry_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @brief Sets the cursor position in the entry to the given value.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The value in @a pos is the index of the character position within the
+ * content of the string as returned by elm_entry_cursor_pos_get().
+ *
+ * @param[in] obj The entry object
+ * @param[in] pos The position of the cursor
+ */
+EAPI void elm_entry_cursor_pos_set(Evas_Object *obj, int pos);
+
+/**
+ * @brief Retrieves the current position of the cursor in the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The cursor position
+ */
+EAPI int elm_entry_cursor_pos_get(const Evas_Object *obj);
+
+/**
+ * @brief Executes a "cut" action on the selected text in the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_selection_cut(Evas_Object *obj);
+
+/**
+ * @brief Executes a "copy" action on the selected text in the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_selection_copy(Evas_Object *obj);
+
+/**
+ * @brief Executes a "paste" action in the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_selection_paste(Evas_Object *obj);
+
+/**
+ * @brief Clears and frees the items in a entry's contextual (longpress)
+ * menu.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ *
+ * @see elm_entry_context_menu_item_add()
+ */
+EAPI void elm_entry_context_menu_clear(Evas_Object *obj);
+
+/**
+ * @brief Adds an item to the entry's contextual menu.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A longpress on an entry makes the contextual menu show up, if this
+ * hasn't been disabled with elm_entry_context_menu_disabled_set().
+ * By default, this menu provides a few options like enabling the selection mode,
+ * which is useful on embedded devices that need to be explicit about it,
+ * and when a selection exists, it also shows the copy and cut actions.
+ *
+ * @remarks With this function, developers can add other options to this menu to
+ * perform any action they deem necessary.
+ *
+ * @param[in] obj The entry object
+ * @param[in] label The item's text label
+ * @param[in] icon_file The item's icon file
+ * @param[in] icon_type The item's icon type
+ * @param[in] func The callback to execute when the item is clicked
+ * @param[in] data The data to associate with the item for related functions
+ */
+EAPI void elm_entry_context_menu_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Disables the entry's contextual (longpress) menu.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] disabled If @c true the menu is disabled,
+ * otherwise @c false to enable it
+ */
+EAPI void elm_entry_context_menu_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @brief Returns whether the entry's contextual (longpress) menu is
+ * disabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c true if the menu is disabled,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_entry_context_menu_disabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Appends a custom item provider to the list for that entry.
+ *
+ * @details This appends the given callback. The list is walked through from beginning till the end
+ * with each function being called, given the item href string in the text. If the
+ * function returns an object handle other than @c NULL (it should create an
+ * object to do this), then this object is used to replace that item. If
+ * not, then the next provider is called until it provides an item object, or the
+ * default provider in the entry does.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] func The function that is called to provide the item object
+ * @param[in] data The data passed to @a func
+ *
+ * @see @ref entry-items
+ */
+EAPI void elm_entry_item_provider_append(Evas_Object *obj, Elm_Entry_Item_Provider_Cb func, void *data);
+
+/**
+ * @brief Prepends a custom item provider to the list for that entry.
+ *
+ * @details This prepends the given callback. For more details, see elm_entry_item_provider_append().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] func The function that is called to provide the item object
+ * @param[in] data The data passed to @a func
+ *
+ * @see elm_entry_item_provider_append()
+ */
+EAPI void elm_entry_item_provider_prepend(Evas_Object *obj, Elm_Entry_Item_Provider_Cb func, void *data);
+
+/**
+ * @brief Removes a custom item provider to the list for that entry.
+ *
+ * @details This removes the given callback. For more details, see elm_entry_item_provider_append().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] func The function that is called to provide the item object
+ * @param[in] data The data passed to @a func
+ */
+EAPI void elm_entry_item_provider_remove(Evas_Object *obj, Elm_Entry_Item_Provider_Cb func, void *data);
+
+/**
+ * @brief Appends a markup filter function for text inserted in the entry.
+ *
+ * @details This appends the given callback to the list. This functions is called
+ * whenever any text is inserted into the entry, provided the text to be inserted
+ * is a parameter. The type of the given text is always markup.
+ * The callback function is free to alter the text in any way it wants, but
+ * it must remember to free the given pointer and update it.
+ * If the new text is to be discarded, the function can free it and set its
+ * text parameter to @c NULL. This prevents any future filters from
+ * being called.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] func The function to use as a text filter
+ * @param[in] data The data to pass to @a func
+ */
+EAPI void elm_entry_markup_filter_append(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
+
+/**
+ * @brief Prepends a markup filter function for text inserted in the entry.
+ *
+ * @details This prepends the given callback to the list. For more details, see elm_entry_markup_filter_append().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] func The function to use as a text filter
+ * @param[in] data The data to pass to @a func
+ */
+EAPI void elm_entry_markup_filter_prepend(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
+
+/**
+ * @brief Removes a markup filter from the list.
+ *
+ * @details This removes the given callback from the filter list. For more details,
+ * see elm_entry_markup_filter_append().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] func The filter function to remove
+ * @param[in] data The data to pass to @a func
+ */
+EAPI void elm_entry_markup_filter_remove(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
+
+/**
+ * @brief Converts a markup (HTML-like) string into UTF-8.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The returned string is a malloc'ed buffer and it should be freed when
+ * not needed.
+ *
+ * @param[in] s The string (in markup) to be converted
+ * @return The converted string (in UTF-8) \n
+ * It should be freed.
*/
+EAPI char *elm_entry_markup_to_utf8(const char *s);
+
+/**
+ * @brief Converts a UTF-8 string into markup (HTML-like).
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The returned string is a malloc'ed buffer and it should be freed when
+ * not needed.
+ *
+ * @param[in] s The string (in UTF-8) to be converted
+ * @return The converted string (in markup) \n
+ * It should be freed.
+ */
+EAPI char *elm_entry_utf8_to_markup(const char *s);
+
+/**
+ * @brief Sets the file (and implicitly loads it) for the text to display and
+ * then allow edit. All changes are written back to the file after a short delay if
+ * the entry object is set to autosave (which is the default).
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If the entry has any other file set previously, any changes made to it
+ * are saved if the autosave feature is enabled, otherwise, the file
+ * is silently discarded and any non-saved changes are lost.
+ *
+ * @param[in] obj The entry object
+ * @param[in] file The path to the file to load and save
+ * @param[in] format The file format
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format);
+
+/**
+ * @brief Gets the file being edited by the entry.
+ *
+ * @details This function can be used to retrieve any file set on the entry for
+ * edition, along with the format used to load and save it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[out] file The path to the file to load and save
+ * @param[out] format The file format
+ */
+EAPI void elm_entry_file_get(const Evas_Object *obj, const char **file, Elm_Text_Format *format);
+
+/**
+ * @brief Writes any changes made to the file that is set by
+ * elm_entry_file_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_file_save(Evas_Object *obj);
+
+/**
+ * @brief Sets the entry object to 'autosave' the loaded text file.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] autosave The boolean value that indicates whether the loaded file is autosaved
+ *
+ * @see elm_entry_file_set()
+ */
+EAPI void elm_entry_autosave_set(Evas_Object *obj, Eina_Bool autosave);
+
+/**
+ * @brief Gets the entry object's 'autosave' status.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The boolean value that indicates whether the loaded file is autosaved
+ *
+ * @see elm_entry_file_set()
+ */
+EAPI Eina_Bool elm_entry_autosave_get(const Evas_Object *obj);
+
+/**
+ * @brief Enables or disables scrolling in the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Normally, the entry is not scrollable unless you enable it with this call.
+ *
+ * @param[in] obj The entry object
+ * @param[in] scroll If @c EINA_TRUE it is scrollable, otherwise @c EINA_FALSE
+ */
+EAPI void elm_entry_scrollable_set(Evas_Object *obj, Eina_Bool scroll);
+
+/**
+ * @brief Gets the scrollable state of the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Normally, the entry is not scrollable. This gets the scrollable state
+ * of the entry. For more details, see elm_entry_scrollable_set().
+ *
+ * @param[in] obj The entry object
+ * @return The scrollable state
+ */
+EAPI Eina_Bool elm_entry_scrollable_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the visibility of the left-side widget of the entry that is
+ * set by elm_object_part_content_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] setting If @c EINA_TRUE the object should be displayed,
+ * otherwise @c EINA_FALSE if not
+ */
+EAPI void elm_entry_icon_visible_set(Evas_Object *obj, Eina_Bool setting);
+
+/**
+ * @internal
+ * @remarks This API is unusable.
+ *
+ * @brief Sets the visibility of the end widget of the entry, set by
+ * elm_object_part_content_set(ent, "end", content).
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] setting @c EINA_TRUE if the object should be displayed,
+ * otherwise @c EINA_FALSE if not
+ */
+EAPI void elm_entry_end_visible_set(Evas_Object *obj, Eina_Bool setting);
+
+/**
+ * @internal
+ *
+ * @brief Sets the entry's scrollbar policy (i.e. enabling/disabling
+ * them).
+ *
+ * @remarks Setting an entry to the single-line mode with elm_entry_single_line_set()
+ * automatically disables the display of scrollbars when the entry
+ * moves inside its scroller.
+ *
+ * @param obj The entry object
+ * @param h The horizontal scrollbar policy to apply
+ * @param v The vertical scrollbar policy to apply
+ *
+ * @deprecated Use elm_scroller_policy_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_entry_scrollbar_policy_set(Evas_Object *obj, Elm_Scroller_Policy h, Elm_Scroller_Policy v);
+
+/**
+ * @internal
+ *
+ * @brief Enables or disables bouncing within the entry.
+ *
+ * @remarks This function sets whether the entry bounces when scrolling reaches
+ * the end of the contained entry.
+ *
+ * @param obj The entry object
+ * @param h_bounce The horizontal bounce state
+ * @param v_bounce The vertical bounce state
+ *
+ * @deprecated Use elm_scroller_bounce_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_entry_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
+
+/**
+ * @internal
+ *
+ * @brief Gets the bounce mode.
+ *
+ * @param obj The entry object
+ * @param h_bounce The boolean value that indicates whether horizontal bounce is allowed
+ * @param v_bounce The boolean value that indicates whether vertical bounce is allowed
+ *
+ * @deprecated Use elm_scroller_bounce_get() instead.
+ */
+EINA_DEPRECATED EAPI void elm_entry_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
+
+/**
+ * @brief Sets the input panel layout of the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] layout The layout type
+ */
+EAPI void elm_entry_input_panel_layout_set(Evas_Object *obj, Elm_Input_Panel_Layout layout);
+
+/**
+ * @brief Gets the input panel layout of the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The layout type
+ *
+ * @see elm_entry_input_panel_layout_set
+ */
+EAPI Elm_Input_Panel_Layout elm_entry_input_panel_layout_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the input panel layout variation of the entry.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] variation The layout variation type
+ */
+EAPI void elm_entry_input_panel_layout_variation_set(Evas_Object *obj, int variation);
+
+/**
+ * @brief Gets the input panel layout variation of the entry.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The layout variation type
+ *
+ * @see elm_entry_input_panel_layout_variation_set
+ */
+EAPI int elm_entry_input_panel_layout_variation_get(const Evas_Object *obj);
+
+
+/**
+ * @brief Sets the autocapitalization type on the immodule.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] autocapital_type The type of autocapitalization
+ */
+EAPI void elm_entry_autocapital_type_set(Evas_Object *obj, Elm_Autocapital_Type autocapital_type);
+
+/**
+ * @brief Retrieves the autocapitalization type on the immodule.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The autocapitalization type
+ */
+EAPI Elm_Autocapital_Type elm_entry_autocapital_type_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the attribute to show the input panel automatically.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] enabled If @c true the input panel appears when the entry is clicked or has focus,
+ * otherwise @c false
+ */
+EAPI void elm_entry_input_panel_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @brief Retrieves the attribute to show the input panel automatically.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE if the input panel appears when the entry is clicked or has a focus,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_entry_input_panel_enabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Shows the input panel (virtual keyboard) based on the input panel property of the entry such as layout, autocapital types, and so on.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Note that the input panel is shown or hidden automatically according to the focus state of the entry widget.
+ * This API can be used in case of manually controlling by using elm_entry_input_panel_enabled_set(en, EINA_FALSE).
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_input_panel_show(Evas_Object *obj);
+
+/**
+ * @brief Hides the input panel (virtual keyboard).
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Note that the input panel is shown or hidden automatically according to the focus state of the entry widget.
+ * This API can be used in case of manually controlling by using elm_entry_input_panel_enabled_set(en, EINA_FALSE)
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_input_panel_hide(Evas_Object *obj);
+
+/**
+ * @brief Sets the language mode of the input panel.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This API can be used if you want to show the alphabet keyboard mode.
+ *
+ * @param[in] obj The entry object
+ * @param[in] lang The language to be set for the input panel
+ */
+EAPI void elm_entry_input_panel_language_set(Evas_Object *obj, Elm_Input_Panel_Lang lang);
+
+/**
+ * @brief Gets the language mode of the input panel.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The input panel language type
+ *
+ * @see @ref elm_entry_input_panel_language_set
+ */
+EAPI Elm_Input_Panel_Lang elm_entry_input_panel_language_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the input panel specific data to deliver to the input panel.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This API is used by applications to deliver specific data to the input panel.
+ * The data format MUST be negotiated by both the application and the input panel.
+ * The size and format of data is defined by the input panel.
+ *
+ * @param[in] obj The entry object
+ * @param[in] data The specific data to be set for the input panel
+ * @param[in] len The length of the data, in bytes, to send to the input panel
+ */
+EAPI void elm_entry_input_panel_imdata_set(Evas_Object *obj, const void *data, int len);
+
+/**
+ * @brief Gets the specific data of the current input panel.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[out] data The specific data to be obtained from the input panel
+ * @param[out] len The length of the data
+ *
+ * @see @ref elm_entry_input_panel_imdata_set
+ */
+EAPI void elm_entry_input_panel_imdata_get(const Evas_Object *obj, void *data, int *len);
+
+/**
+ * @brief Sets the "return" key type. This type is used to set the string or icon on the "return" key of the input panel.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks An input panel displays the string or icon associated with this type.
+ *
+ * @param[in] obj The entry object
+ * @param[in] return_key_type The type of "return" key on the input panel
+ */
+EAPI void elm_entry_input_panel_return_key_type_set(Evas_Object *obj, Elm_Input_Panel_Return_Key_Type return_key_type);
+
+/**
+ * @brief Gets the "return" key type.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The type of "return" key on the input panel
+ *
+ * @see elm_entry_input_panel_return_key_type_set()
+ */
+EAPI Elm_Input_Panel_Return_Key_Type elm_entry_input_panel_return_key_type_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the return key to be disabled on the input panel.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] disabled If @c EINA_TRUE the return key is disabled,
+ * otherwise @c EINA_FALSE if it is enabled
+ */
+EAPI void elm_entry_input_panel_return_key_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @brief Gets whether the return key on the input panel should be disabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE if the return key should be disabled,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_entry_input_panel_return_key_disabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether the return key on the input panel is disabled automatically when the entry has no text.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If @a enabled is @c EINA_TRUE, the return key on the input panel is disabled when the entry has no text.
+ * The return key on the input panel is automatically enabled when the entry has text.
+ * The default value is @c EINA_FALSE.
+ *
+ * @param[in] obj The entry object
+ * @param[in] enabled If @a enabled is @c EINA_TRUE, the return key is automatically disabled when the entry has no text,
+ * otherwise @c EINA_FALSE
+ */
+EAPI void elm_entry_input_panel_return_key_autoenabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @brief Sets the attribute to show the input panel in case of a user's explicit Mouse Up event.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It doesn't request to show the input panel even though it has focus.
+ * @param[in] obj The entry object
+ * @param[in] ondemand If @c true, the input panel is shown in case of a Mouse up event
+ * (Focus event is ignored), otherwise @c false
+ */
+EAPI void elm_entry_input_panel_show_on_demand_set(Evas_Object *obj, Eina_Bool ondemand);
+
+/**
+ * @brief Gets the attribute to show the input panel in case of a user's explicit Mouse Up event.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE if the input panel is shown in case of a Mouse up event,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_entry_input_panel_show_on_demand_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the input hint which allows input methods to fine-tune their behavior.
+ *
+ * @since 1.12
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] hints input hint
+ */
+EAPI void elm_entry_input_hint_set(Evas_Object *obj, Elm_Input_Hints hints);
+
+/**
+ * @brief Gets the value of input hint.
+ *
+ * @since 1.12
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return the value of input hint.
+ */
+EAPI Elm_Input_Hints elm_entry_input_hint_get(const Evas_Object *obj);
+
+/**
+ * @brief Resets the input method context of the entry if needed.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This can be necessary in a case where modifying the buffer would confuse an on-going input method behavior.
+ * This typically causes the Input Method Context to clear the pre-edit state.
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_imf_context_reset(Evas_Object *obj);
+
+/**
+ * @brief Sets whether the entry should allow the use of text prediction.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] prediction The boolean value that indicates whether the entry should allow the use of text prediction
+ */
+EAPI void elm_entry_prediction_allow_set(Evas_Object *obj, Eina_Bool prediction);
+
+/**
+ * @brief Gets whether the entry should allow the use of text prediction.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return @c EINA_TRUE if it allows the use of text prediction,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_entry_prediction_allow_get(const Evas_Object *obj);
+
+/* Pre-made filters for entries */
+
+/**
+ * @typedef Elm_Entry_Filter_Limit_Size
+ *
+ * @brief The data for the elm_entry_filter_limit_size() entry filter.
+ */
+typedef struct _Elm_Entry_Filter_Limit_Size Elm_Entry_Filter_Limit_Size;
+
+/**
+ * @struct _Elm_Entry_Filter_Limit_Size
+ *
+ * @brief The data for the elm_entry_filter_limit_size() entry filter.
+ */
+struct _Elm_Entry_Filter_Limit_Size
+{
+ int max_char_count; /**< Maximum number of characters allowed */
+ int max_byte_count; /**< Maximum number of bytes allowed */
+};
+
+/**
+ * @brief Filters the inserted text based on user defined character and byte limits.
+ *
+ * @details This adds this filter to an entry to limit the characters that it accepts
+ * based on the content of the provided #Elm_Entry_Filter_Limit_Size.
+ * The function works on the UTF-8 representation of the string, converting
+ * it from the set markup, thus not accounting for any format in it.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The user must create an #Elm_Entry_Filter_Limit_Size structure and pass
+ * it as data when setting the filter. Within it, it's possible to set limits
+ * based character count or bytes (any of them is disabled if @c 0), and both can
+ * be set at the same time. In that case, it first checks for characters,
+ * then bytes. The #Elm_Entry_Filter_Limit_Size structure must be alive and
+ * valid for as long as the entry is alive AND the elm_entry_filter_limit_size
+ * filter is set.
+ *
+ * @remarks The function cuts the inserted text in order to allow only the first
+ * few characters that are still allowed. The cut is made in
+ * characters, even when limiting by bytes, in order to always contain
+ * valid ones and avoid half unicode characters.
+ *
+ * @remarks This filter, like any other, does not apply when setting the entry text
+ * directly using elm_object_text_set().
+ *
+ * @remarks Do not call this function directly. This function should be used for
+ * parameterfor as Elm_Entry_Filter_Cb.
+ *
+ * @param data The data specified as the last parameter when adding the filter
+ * @param entry The entry object
+ * @param text A pointer to the location of the text being filtered \n
+ * The type of text is always markup \n
+ * This data can be modified, but any additional allocations must be managed by the user
+ *
+ * @see elm_entry_markup_filter_append()
+ */
+EAPI void elm_entry_filter_limit_size(void *data, Evas_Object *entry, char **text);
+
+/**
+ * @typedef Elm_Entry_Filter_Accept_Set
+ *
+ * @brief The data for the elm_entry_filter_accept_set() entry filter.
+ */
+typedef struct _Elm_Entry_Filter_Accept_Set Elm_Entry_Filter_Accept_Set;
+
+/**
+ * @struct _Elm_Entry_Filter_Accept_Set
+ *
+ * @brief The data for the elm_entry_filter_accept_set() entry filter.
+ */
+struct _Elm_Entry_Filter_Accept_Set
+{
+ const char *accepted; /**< Set of characters accepted in the entry */
+ const char *rejected; /**< Set of characters rejected from the entry */
+};
+
+/**
+ * @brief Filters inserted text based on accepted or rejected sets of characters.
+ *
+ * @details This adds this filter to an entry to restrict the set of accepted characters
+ * based on sets in the provided #Elm_Entry_Filter_Accept_Set.
+ * This structure contains both accepted and rejected sets, but they are
+ * mutually exclusive. This structure must be available for as long as
+ * the entry is alive AND the elm_entry_filter_accept_set is being used.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The @c accepted set takes preference, so if it is set, the filter
+ * only works based on the accepted characters, ignoring anything in the
+ * @c rejected value. If @c accepted is @c NULL, then @c rejected is used.
+ *
+ * @remarks In both cases, the function filters by matching UTF8 characters with the
+ * raw markup text, so it can be used to remove formatted tags.
+ *
+ * @remarks This filter, like any other, does not apply when setting the entry text
+ * directly using elm_object_text_set().
+ *
+ * @remarks Do not call this function directly. This function should be used for
+ * parameterfor as Elm_Entry_Filter_Cb.
+ *
+ * @param data The data specified as the last parameter when adding the filter
+ * @param entry The entry object
+ * @param text A pointer to the location of the text being filtered \n
+ * The type of text is always markup \n
+ * This data can be modified, but any additional allocations must be managed by the user
+ *
+ * @see elm_entry_markup_filter_append()
+ */
+EAPI void elm_entry_filter_accept_set(void *data, Evas_Object *entry, char **text);
+
+/**
+ * @brief Returns the input method context of the entry.
+ *
+ * @details This function exposes the internal input method context.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks IMPORTANT: Many functions may change (i.e delete and create a new one)
+ * the internal input method context. Do NOT cache the returned object.
+ *
+ * @param[in] obj The entry object
+ * @return The input method context (Ecore_IMF_Context *) in the entry
+ */
+EAPI void *elm_entry_imf_context_get(Evas_Object *obj);
+
+/**
+ * @typedef Elm_Cnp_Mode
+ * @brief Enumeration that defines the entry's copy & paste policy.
+ *
+ * @see elm_entry_cnp_mode_set()
+ * @see elm_entry_cnp_mode_get()
+ */
+typedef enum {
+ ELM_CNP_MODE_MARKUP, /**< Copy & paste text with markup tag */
+ ELM_CNP_MODE_NO_IMAGE, /**< Copy & paste text without item(image) tag */
+ ELM_CNP_MODE_PLAINTEXT /**< Copy & paste text without markup tag */
+} Elm_Cnp_Mode;
+
+/**
+ * @brief Controls pasting of text and images for the widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Normally the entry allows both text and images to be pasted.
+ * Setting cnp_mode to #ELM_CNP_MODE_NO_IMAGE, prevents images from being copied or pasted.
+ * Setting cnp_mode to #ELM_CNP_MODE_PLAINTEXT, removes all tags in the text.
+ *
+ * @param[in] obj The entry object
+ * @param[in] cnp_mode One #Elm_Cnp_Mode: #ELM_CNP_MODE_MARKUP, #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT
+ *
+ * @remarks This only changes the behaviour of the text.
+ */
+EAPI void elm_entry_cnp_mode_set(Evas_Object *obj, Elm_Cnp_Mode cnp_mode);
+
+/**
+ * @brief Gets the elm_entry text paste/drop mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Normally the entry allows both text and images to be pasted.
+ * This gets the copy & paste mode of the entry.
+ *
+ * @param[in] obj The entry object
+ * @return mode One #Elm_Cnp_Mode: #ELM_CNP_MODE_MARKUP, #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT.
+ */
+EAPI Elm_Cnp_Mode elm_entry_cnp_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the parent of the hover popup.
+ *
+ * @details This sets the parent object to use the hover created by the entry
+ * when an anchor is clicked.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] parent The object to use as a parent for the hover
+ *
+ * @see Hover
+ */
+EAPI void elm_entry_anchor_hover_parent_set(Evas_Object *obj, Evas_Object *parent);
+
+/**
+ * @brief Gets the parent of the hover popup.
+ *
+ * @details This gets the object used as parent for the hover created by the entry
+ * widget.
+ * If no parent is set, the same entry object is used.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The object used as parent for the hover, otherwise @c NULL if none are set
+ * @see Hover
+ */
+EAPI Evas_Object *elm_entry_anchor_hover_parent_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the style that the hover should use.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When creating the popup hover, the entry requests that it be
+ * themed according to @a style.
+ *
+ * @remarks Setting @a style to @c NULL means disabling automatic hover.
+ *
+ * @param[in] obj The entry object
+ * @param[in] style The style to use for the underlying hover
+ *
+ * @see elm_object_style_set()
+ */
+EAPI void elm_entry_anchor_hover_style_set(Evas_Object *obj, const char *style);
+
+/**
+ * @brief Gets the style that the hover should use.
+ *
+ * @details This gets the style that the hover created by the entry uses.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @return The style to use by the hover \n
+ * @c NULL means the default is used.
+ *
+ * @see elm_object_style_set()
+ */
+EAPI const char *elm_entry_anchor_hover_style_get(const Evas_Object *obj);
+
+/**
+ * @brief Ends the hover popup in the entry.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When an anchor is clicked, the entry widget creates a hover
+ * object to use as a popup with user provided content. This function
+ * terminates this popup, returning the entry to its normal state.
+ *
+ * @param[in] obj The entry object
+ */
+EAPI void elm_entry_anchor_hover_end(Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature
+ *
+ * @brief Enables selection in the entry.
+ *
+ * @param obj The entry object
+ * @param allow If @c true selection is enabled,
+ * otherwise @c false if selection is disabled
+ */
+EAPI void elm_entry_select_allow_set(Evas_Object *obj, Eina_Bool allow);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature
+ *
+ * @brief Returns whether selection in the entry is allowed.
+ *
+ * @param obj The entry object
+ * @return @c true if selection is enabled,
+ * otherwise @c false if selection is disabled
+ */
+EAPI Eina_Bool elm_entry_select_allow_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature
+ *
+ * @brief Disables the entry's cursor handler.
+ *
+ * @param obj The entry object
+ * @param disabled If @c true the cursor handler is disabled,
+ * otherwise @c false to enable it
+ */
+EAPI void elm_entry_cursor_handler_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature
+ *
+ * @brief Returns whether the entry's cursor handler is disabled.
+ *
+ * @param obj The entry object
+ * @return @c true if the cursor handler is disabled,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_entry_cursor_handler_disabled_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature
+ *
+ * @brief Disables the entry's magnifier feature.
+ *
+ * @param obj The entry object
+ * @param disabled If @c true the magnifier is not displayed,
+ * otherwise @c false
+ */
+EAPI void elm_entry_magnifier_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+/**
+ * @internal
+ * @remarks Tizen Only Feature
+ *
+ * @brief Returns whether the entry's magnifier feature is disabled.
+ *
+ * @param obj The entry object
+ * @return @c true if the feature is disabled,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_entry_magnifier_disabled_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature
+ *
+ * @brief Disables the default drag action in the entry.
+ *
+ * @param obj The entry object
+ * @param disabled If @c true, disable the default drag action in the entry,
+ * otherwise @c false
+ */
+EAPI void elm_entry_drag_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature
+ *
+ * @brief Gets whether the default drag action in the entry is disabled.
+ *
+ * @param obj The entry object
+ * @return @c true if the default drag action in the entry is disabled,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_entry_drag_disabled_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature
+ *
+ * @brief Disables the default drop callback in the entry.
+ *
+ * @param obj The entry object
+ * @param disabled If @c true the default drop callback in the entry is disabled,
+ * otherwise @c false
+ */
+EAPI void elm_entry_drop_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature
+ *
+ * @brief Gets whether the default drop callback in the entry is disabled.
+ *
+ * @param obj The entry object
+ * @return @c true if the default drop callback in the entry is disabled,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_entry_drop_disabled_get(Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature (20140625)
+ *
+ * This appends a custom anchor access provider to the list for that entry
+ *
+ * This appends the given callback. The list is walked from beginning to end
+ * with each function called given the anchor href string in the text. If the
+ * function returns a string other than NULL, then this string is used
+ * to replace that TTS string.
+ * If not the next provider is called until one provides a string, or the
+ * default TTS string will be read.
+ *
+ * @param obj The entry object
+ * @param func The function called to provide the TTS string
+ * @param data The data passed to @p func
+ *
+ * @see @ref entry-anchors
+ */
+EAPI void elm_entry_anchor_access_provider_append(Evas_Object *obj, Elm_Entry_Anchor_Access_Provider_Cb func, void *data);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature (20140625)
+ *
+ * @brief This prepends a custom anchor access provider to the list for that entry
+ *
+ * @remarks This prepends the given callback.
+ *
+ * @see elm_entry_anchor_access_provider_append()
+ *
+ * @param obj The entry object
+ * @param func The function called to provide the TTS string
+ * @param data The data passed to @p func
+ */
+EAPI void elm_entry_anchor_access_provider_prepend(Evas_Object *obj, Elm_Entry_Anchor_Access_Provider_Cb func, void *data);
+
+/**
+ * @internal
+ * @remarks Tizen Only Feature(20140625)
+ *
+ * @brief This removes a custom anchor access provider to the list for that entry
+ *
+ * @remarks This removes the given callback.
+ *
+ * @see elm_entry_anchor_access_provider_append()
+ *
+ * @param obj The entry object
+ * @param func The function called to provide the TTS string
+ * @param data The data passed to @p func
+ */
+EAPI void elm_entry_anchor_access_provider_remove(Evas_Object *obj, Elm_Entry_Anchor_Access_Provider_Cb func, void *data);
+
+/**
+ * @brief This selects a region of text within the entry.
+ *
+ * @ingroup Entry
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The entry object
+ * @param[in] start The starting position
+ * @param[in] end The end position
+ *
+ */
+EAPI void elm_entry_select_region_set(Evas_Object *obj, int start, int end);
+
-#include "elm_entry_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_entry_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_entry_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_entry_common.h b/src/lib/elm_entry_common.h
index 4b5215d36..013f5c31d 100644
--- a/src/lib/elm_entry_common.h
+++ b/src/lib/elm_entry_common.h
@@ -1,9 +1,14 @@
/**
- * @typedef Elm_Text_Format
+ * @addtogroup Entry
*
+ * @{
+ */
+
+/**
* Text Format types.
*
* @see elm_entry_file_set()
+ * @ingroup Entry
*/
typedef enum
{
@@ -12,11 +17,11 @@ typedef enum
} Elm_Text_Format;
/**
- * @typedef Elm_Wrap_Type
- *
- * Line wrapping types.
- *
+ * @enum Elm_Wrap_Type
+ * aAbrief Line wrapping types.
+ * @details Type of word or character wrapping to use
* @see elm_entry_line_wrap_set()
+ * @ingroup Entry
*/
typedef enum
{
@@ -24,12 +29,10 @@ typedef enum
ELM_WRAP_CHAR, /**< Char wrap - wrap between characters */
ELM_WRAP_WORD, /**< Word wrap - wrap in allowed wrapping points (as defined in the unicode standard) */
ELM_WRAP_MIXED, /**< Mixed wrap - Word wrap, and if that fails, char wrap. */
- ELM_WRAP_LAST
-} Elm_Wrap_Type; /**< Type of word or character wrapping to use */
+ ELM_WRAP_LAST /**< WTF */
+} Elm_Wrap_Type;
/**
- * @typedef Elm_Input_Panel_Layout
- *
* Input panel (virtual keyboard) layout types.
*
* @see elm_entry_input_panel_layout_set()
@@ -74,8 +77,6 @@ enum
};
/**
- * @typedef Elm_Input_Panel_Lang
- *
* Input panel (virtual keyboard) language modes.
*
* @see elm_entry_input_panel_language_set()
@@ -87,8 +88,6 @@ typedef enum
} Elm_Input_Panel_Lang;
/**
- * @typedef Elm_Autocapital_Type
- *
* Autocapitalization Types.
*
* @see elm_entry_autocapital_type_set()
@@ -102,8 +101,6 @@ typedef enum
} Elm_Autocapital_Type; /**< Choose method of auto-capitalization */
/**
- * @typedef Elm_Input_Panel_Return_Key_Type
- *
* "Return" Key types on the input panel (virtual keyboard).
*
* @see elm_entry_input_panel_return_key_type_set()
@@ -121,10 +118,16 @@ typedef enum
ELM_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN /**< Sign-in @since 1.8 */
} Elm_Input_Panel_Return_Key_Type;
+
+/**
+ * @}
+ */
+
/**
- * @typedef Elm_Input_Hints
* @brief Enumeration that defines the types of Input Hints.
* @since 1.12
+ *
+ * @ingroup Entry
*/
typedef enum
{
@@ -134,18 +137,18 @@ typedef enum
} Elm_Input_Hints;
/**
- * @typedef Elm_Entry_Anchor_Info
- *
* The info sent in the callback for the "anchor,clicked" signals emitted
* by entries.
+ *
+ * @ingroup Entry
*/
typedef struct _Elm_Entry_Anchor_Info Elm_Entry_Anchor_Info;
/**
- * @struct _Elm_Entry_Anchor_Info
- *
* The info sent in the callback for the "anchor,clicked" signals emitted
* by entries.
+ *
+ * @ingroup Entry
*/
struct _Elm_Entry_Anchor_Info
{
@@ -158,26 +161,26 @@ struct _Elm_Entry_Anchor_Info
};
/**
- * @typedef Elm_Entry_Anchor_Hover_Info
- *
* The info sent in the callback for "anchor,clicked" signals emitted by
* the Anchor_Hover widget.
+ *
+ * @ingroup Entry
*/
typedef struct _Elm_Entry_Anchor_Hover_Info Elm_Entry_Anchor_Hover_Info;
/**
- * @typedef Elm_Entry_Context_Menu_Item
- *
* Type of contextual item that can be added in to long press menu.
* @since 1.8
+ *
+ * @ingroup Entry
*/
typedef struct _Elm_Entry_Context_Menu_Item Elm_Entry_Context_Menu_Item;
/**
- * @struct _Elm_Entry_Anchor_Hover_Info
- *
* The info sent in the callback for "anchor,clicked" signals emitted by
* the Anchor_Hover widget.
+ *
+ * @ingroup Entry
*/
struct _Elm_Entry_Anchor_Hover_Info
{
@@ -209,7 +212,6 @@ struct _Elm_Entry_Anchor_Hover_Info
};
/**
- * @typedef Elm_Entry_Item_Provider_Cb
* This callback type is used to provide items.
* If it returns an object handle other than NULL (it should create an
* object to do this), then this object is used to replace the current item.
@@ -222,11 +224,12 @@ struct _Elm_Entry_Anchor_Hover_Info
* @see elm_entry_item_provider_append
* @see elm_entry_item_provider_prepend
* @see elm_entry_item_provider_remove
+ *
+ * @ingroup Entry
*/
typedef Evas_Object * (*Elm_Entry_Item_Provider_Cb)(void *data, Evas_Object * entry, const char *item);
/**
- * @typedef Elm_Entry_Filter_Cb
* This callback type is used by entry filters to modify text.
* @param data The data specified as the last param when adding the filter
* @param entry The entry object
@@ -234,13 +237,16 @@ typedef Evas_Object * (*Elm_Entry_Item_Provider_Cb)(void *data, Evas_Object * en
* @see elm_entry_markup_filter_append
* @see elm_entry_markup_filter_prepend
* @see elm_entry_markup_filter_remove
+ *
+ * @ingroup Entry
*/
typedef void (*Elm_Entry_Filter_Cb)(void *data, Evas_Object *entry, char **text);
/**
- * @typedef Elm_Entry_Change_Info
* This corresponds to Edje_Entry_Change_Info. Includes information about
* a change in the entry.
+ *
+ * @ingroup Entry
*/
typedef Edje_Entry_Change_Info Elm_Entry_Change_Info;
@@ -280,16 +286,16 @@ EAPI char *elm_entry_utf8_to_markup(const char *s);
/* pre-made filters for entries */
/**
- * @typedef Elm_Entry_Filter_Limit_Size
- *
* Data for the elm_entry_filter_limit_size() entry filter.
+ *
+ * @ingroup Entry
*/
typedef struct _Elm_Entry_Filter_Limit_Size Elm_Entry_Filter_Limit_Size;
/**
- * @struct _Elm_Entry_Filter_Limit_Size
- *
* Data for the elm_entry_filter_limit_size() entry filter.
+ *
+ * @ingroup Entry
*/
struct _Elm_Entry_Filter_Limit_Size
{
@@ -326,16 +332,16 @@ struct _Elm_Entry_Filter_Limit_Size
EAPI void elm_entry_filter_limit_size(void *data, Evas_Object *entry, char **text);
/**
- * @typedef Elm_Entry_Filter_Accept_Set
- *
* Data for the elm_entry_filter_accept_set() entry filter.
+ *
+ * @ingroup Entry
*/
typedef struct _Elm_Entry_Filter_Accept_Set Elm_Entry_Filter_Accept_Set;
/**
- * @struct _Elm_Entry_Filter_Accept_Set
- *
* Data for the elm_entry_filter_accept_set() entry filter.
+ *
+ * @ingroup Entry
*/
struct _Elm_Entry_Filter_Accept_Set
{
@@ -367,11 +373,12 @@ struct _Elm_Entry_Filter_Accept_Set
EAPI void elm_entry_filter_accept_set(void *data, Evas_Object *entry, char **text);
/**
- * @typedef Elm_Cnp_Mode
* Enum of entry's copy & paste policy.
*
* @see elm_entry_cnp_mode_set()
* @see elm_entry_cnp_mode_get()
+ *
+ * @ingroup Entry
*/
typedef enum {
ELM_CNP_MODE_MARKUP, /**< copy & paste text with markup tag */
@@ -380,22 +387,19 @@ typedef enum {
} Elm_Cnp_Mode;
/**
- * Get the text of the contextual menu item.
- *
* Get the text of the contextual menu item of entry.
*
* @param item The item to get the label
* @return The text of contextual menu item
*
* @see elm_entry_context_menu_item_add()
- * @ingroup Entry
* @since 1.8
+ *
+ * @ingroup Entry
*/
EAPI const char *elm_entry_context_menu_item_label_get(const Elm_Entry_Context_Menu_Item *item);
/**
- * Get the icon object of the contextual menu item.
- *
* Get the icon object packed in the contextual menu item of entry.
*
* @param item The item to get the icon from
@@ -406,8 +410,9 @@ EAPI const char *elm_entry_context_menu_item_label_get(const El
* @param icon_type The icon type
*
* @see elm_entry_context_menu_item_add()
- * @ingroup Entry
* @since 1.8
+ *
+ * @ingroup Entry
*/
EAPI void elm_entry_context_menu_item_icon_get(const Elm_Entry_Context_Menu_Item *item, const char **icon_file, const char **icon_group, Elm_Icon_Type *icon_type);
diff --git a/src/lib/elm_finger.h b/src/lib/elm_finger.h
index 17d3be5d9..1e140e2e5 100644
--- a/src/lib/elm_finger.h
+++ b/src/lib/elm_finger.h
@@ -1,42 +1,39 @@
/**
* @defgroup Fingers Fingers
- * @ingroup Elementary
+ * @ingroup elm_infra_group
*
- * Elementary is designed to be finger-friendly for touchscreens,
- * and so in addition to scaling for display resolution, it can
- * also scale based on finger "resolution" (or size). You can then
- * customize the granularity of the areas meant to receive clicks
- * on touchscreens.
+ * @brief Elementary is designed to be finger-friendly for touchscreens,
+ * and so in addition to scaling for display resolution, it can
+ * also scale based on finger "resolution" (or size). You can then
+ * customize the granularity of the areas meant to receive clicks
+ * on touchscreens.
*
- * Different profiles may have pre-set values for finger sizes.
- *
- * @ref general_functions_example_page "This" example contemplates
- * some of these functions.
+ * @remarks Different profiles may have pre-set values for finger sizes.
*
* @{
*/
/**
- * Adjust size of an element for finger usage.
- *
- * @param times_w How many fingers should fit horizontally
- * @param w Pointer to the width size to adjust
- * @param times_h How many fingers should fit vertically
- * @param h Pointer to the height size to adjust
- *
- * This takes width and height sizes (in pixels) as input and a
- * size multiple (which is how many fingers you want to place
- * within the area, being "finger" the size set by
- * elm_config_finger_size_set()), and adjusts the size to be large enough
- * to accommodate the resulting size -- if it doesn't already
- * accommodate it. On return the @p w and @p h sizes pointed to by
- * these parameters will be modified, on those conditions.
- *
- * @note This is kind of low level Elementary call, most useful
- * on size evaluation times for widgets. An external user wouldn't
- * be calling, most of the time.
- *
- * @ingroup Fingers
+ * @brief Adjusts the size of an element for finger usage.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This takes width and height sizes (in pixels) as input and a
+ * size multiple (which is how many fingers you want to place
+ * within the area, with "finger" as the size set by
+ * elm_finger_size_set()), and adjusts the size to be large enough
+ * to accommodate the resulting size, if it doesn't already
+ * accommodate it. On return the @a w and @a h sizes pointed to by
+ * these parameters are modified, on those conditions.
+ *
+ * @remarks This is a kind of low level Elementary call, most useful
+ * on size evaluation times for widgets. An external user wouldn't
+ * be calling, most of the time.
+ *
+ * @param[in] times_w The number of fingers that fit horizontally
+ * @param[out] w A pointer to the width size to adjust
+ * @param[in] times_h The number of fingers that fit vertically
+ * @param[out] h A pointer to the height size to adjust
*/
EAPI void elm_coords_finger_size_adjust(int times_w, Evas_Coord *w, int times_h, Evas_Coord *h);
diff --git a/src/lib/elm_flip.h b/src/lib/elm_flip.h
index 7a38602b3..b66fd357b 100644
--- a/src/lib/elm_flip.h
+++ b/src/lib/elm_flip.h
@@ -1,50 +1,315 @@
/**
* @defgroup Flip Flip
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html flip_inheritance_tree.png
* @image latex flip_inheritance_tree.eps
*
- * @image html img/widget/flip/preview-00.png
- * @image latex img/widget/flip/preview-00.eps
+ * @brief This widget holds @c 2 content objects(Evas_Object): one on the front
+ * and one on the back. It allows you to flip from front to back and
+ * vice-versa using various animations.
*
- * This widget holds 2 content objects(Evas_Object): one on the front and one
- * on the back. It allows you to flip from front to back and vice-versa using
- * various animations.
- *
- * If either the front or back contents are not set the flip will treat that
- * as transparent. So if you wore to set the front content but not the back,
+ * If either the front or back contents are not set, the flip treats that
+ * as transparent. So if you were to set the front content but not the back,
* and then call elm_flip_go() you would see whatever is below the flip.
*
* For a list of supported animations see elm_flip_go().
*
* Signals that you can add callbacks for are:
- * "animate,begin" - when a flip animation was started
- * "animate,done" - when a flip animation is finished
+ * "animate,begin" - When a flip animation is started
+ * "animate,done" - When a flip animation is finished
*
- * Default content parts of the flip widget that you can use for are:
- * @li "front" - A front content of the flip
- * @li "back" - A back content of the flip
+ * The default content parts of the flip widget that you can use are:
+ * @li "front" - The front content of the flip.
+ * @li "back" - The back content of the flip.
*
- * This widget inherits from @ref elm-container-class, so that the
- * functions meant to act on it will work for mapbuf objects:
+ * The functions meant to act on it works for mapbuf objects:
*
* @li @ref elm_object_part_content_set
* @li @ref elm_object_part_content_get
* @li @ref elm_object_part_content_unset
*
- * @ref tutorial_flip show how to use most of the API.
- *
* @{
*/
+typedef enum
+{
+ ELM_FLIP_ROTATE_Y_CENTER_AXIS,
+ ELM_FLIP_ROTATE_X_CENTER_AXIS,
+ ELM_FLIP_ROTATE_XZ_CENTER_AXIS,
+ ELM_FLIP_ROTATE_YZ_CENTER_AXIS,
+ ELM_FLIP_CUBE_LEFT,
+ ELM_FLIP_CUBE_RIGHT,
+ ELM_FLIP_CUBE_UP,
+ ELM_FLIP_CUBE_DOWN,
+ ELM_FLIP_PAGE_LEFT,
+ ELM_FLIP_PAGE_RIGHT,
+ ELM_FLIP_PAGE_UP,
+ ELM_FLIP_PAGE_DOWN
+} Elm_Flip_Mode;
+
+typedef enum
+{
+ ELM_FLIP_INTERACTION_NONE,
+ ELM_FLIP_INTERACTION_ROTATE,
+ ELM_FLIP_INTERACTION_CUBE,
+ ELM_FLIP_INTERACTION_PAGE
+} Elm_Flip_Interaction;
+
+/**
+ * Enumeration of Elm Flip Direction type
+ */
+typedef enum
+{
+ ELM_FLIP_DIRECTION_UP, /**< Allows interaction with the top of the widget */
+ ELM_FLIP_DIRECTION_DOWN, /**< Allows interaction with the bottom of the widget */
+ ELM_FLIP_DIRECTION_LEFT, /**< Allows interaction with the left portion of the widget */
+ ELM_FLIP_DIRECTION_RIGHT /**< Allows interaction with the right portion of the widget */
+} Elm_Flip_Direction;
+
+/**
+ * @brief Adds a new flip to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_flip_add(Evas_Object *parent);
+
+/**
+ * @brief Gets the flip front visibility state.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The flip object
+ * @return @c EINA_TRUE if the front is showing, otherwise @c EINA_FALSE if the back is
+ * showing
+ */
+Eina_Bool elm_flip_front_visible_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the flip perspective.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This function currently does nothing.
+ *
+ * @param[in] obj The flip object
+ * @param[in] foc The coordinate to set the focus on
+ * @param[in] x The X coordinate
+ * @param[in] y The Y coordinate
+ */
+EAPI void elm_flip_perspective_set(Evas_Object *obj, Evas_Coord foc, Evas_Coord x, Evas_Coord y);
+
+/**
+ * @brief Runs the flip animation.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Flips the front and back contents using the @a mode animation. This
+ * effectively hides the currently visible content and shows the hidden one.
+ *
+ * @remarks There are a number of possible animations to use for flipping:
+ * @li ELM_FLIP_ROTATE_X_CENTER_AXIS - Rotates the currently visible content
+ * around a horizontal axis in the middle of its height, the other content
+ * is shown as the other side of the flip.
+ * @li ELM_FLIP_ROTATE_Y_CENTER_AXIS - Rotates the currently visible content
+ * around a vertical axis in the middle of its width, the other content is
+ * shown as the other side of the flip.
+ * @li ELM_FLIP_ROTATE_XZ_CENTER_AXIS - Rotates the currently visible content
+ * around a diagonal axis in the middle of its width, the other content is
+ * shown as the other side of the flip.
+ * @li ELM_FLIP_ROTATE_YZ_CENTER_AXIS - Rotates the currently visible content
+ * around a diagonal axis in the middle of its height, the other content is
+ * shown as the other side of the flip.
+ * @li ELM_FLIP_CUBE_LEFT - Rotates the currently visible content to the left
+ * as if the flip is a cube, the other content is shown as the right face of
+ * the cube.
+ * @li ELM_FLIP_CUBE_RIGHT - Rotates the currently visible content to the
+ * right as if the flip is a cube, the other content is shown as the left
+ * face of the cube.
+ * @li ELM_FLIP_CUBE_UP - Rotates the currently visible content up as if the
+ * flip is a cube, the other content is shown as the bottom face of the cube.
+ * @li ELM_FLIP_CUBE_DOWN - Rotates the currently visible content down as if
+ * the flip is a cube, the other content is shown as the upper face of the
+ * cube.
+ * @li ELM_FLIP_PAGE_LEFT - Moves the currently visible content to the left as
+ * if the flip is a book, the other content is shown as the page below that.
+ * @li ELM_FLIP_PAGE_RIGHT - Moves the currently visible content to the right
+ * as if the flip is a book, the other content is shown as the page below
+ * that.
+ * @li ELM_FLIP_PAGE_UP - Moves the currently visible content up as if the
+ * flip is a book, the other content is shown as the page below that.
+ * @li ELM_FLIP_PAGE_DOWN - Moves the currently visible content down as if the
+ * flip is a book, the other content is shown as the page below that.
+ *
+ * @image html elm_flip.png
+ * @image latex elm_flip.eps "elm flip" width=\textwidth
+ *
+ * @param[in] obj The flip object
+ * @param[in] mode The mode type
+ *
+ * @see elm_flip_go_to()
+ */
+EAPI void elm_flip_go(Evas_Object *obj, Elm_Flip_Mode mode);
+
+/**
+ * @brief Runs the flip animation to the front or back.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Flips the front and back contents using the @a mode animation. This
+ * effectively hides the currently visible content and shows the hidden one.
+ *
+ * @remarks There are a number of possible animations to use for flipping:
+ * @li ELM_FLIP_ROTATE_X_CENTER_AXIS - Rotates the currently visible content
+ * around a horizontal axis in the middle of its height, the other content
+ * is shown as the other side of the flip.
+ * @li ELM_FLIP_ROTATE_Y_CENTER_AXIS - Rotates the currently visible content
+ * around a vertical axis in the middle of its width, the other content is
+ * shown as the other side of the flip.
+ * @li ELM_FLIP_ROTATE_XZ_CENTER_AXIS - Rotates the currently visible content
+ * around a diagonal axis in the middle of its width, the other content is
+ * shown as the other side of the flip.
+ * @li ELM_FLIP_ROTATE_YZ_CENTER_AXIS - Rotates the currently visible content
+ * around a diagonal axis in the middle of its height, the other content is
+ * shown as the other side of the flip.
+ * @li ELM_FLIP_CUBE_LEFT - Rotates the currently visible content to the left
+ * as if the flip is a cube, the other content is shown as the right face of
+ * the cube.
+ * @li ELM_FLIP_CUBE_RIGHT - Rotates the currently visible content to the
+ * right as if the flip is a cube, the other content is shown as the left
+ * face of the cube.
+ * @li ELM_FLIP_CUBE_UP - Rotates the currently visible content up as if the
+ * flip is a cube, the other content is shown as the bottom face of the cube.
+ * @li ELM_FLIP_CUBE_DOWN - Rotates the currently visible content down as if
+ * the flip is a cube, the other content is shown as the upper face of the
+ * cube.
+ * @li ELM_FLIP_PAGE_LEFT - Moves the currently visible content to the left as
+ * if the flip is a book, the other content is shown as the page below that.
+ * @li ELM_FLIP_PAGE_RIGHT - Moves the currently visible content to the right
+ * as if the flip is a book, the other content is shown as the page below
+ * that.
+ * @li ELM_FLIP_PAGE_UP - Moves the currently visible content up as if the
+ * flip is a book, the other content is shown as the page below that.
+ * @li ELM_FLIP_PAGE_DOWN - Moves the currently visible content down as if the
+ * flip is a book, the other content is shown as the page below that.
+ *
+ * @image html elm_flip.png
+ * @image latex elm_flip.eps "elm flip" width=\textwidth
+ *
+ * @param[in] obj The flip object
+ * @param[in] front If @c EINA_TRUE it makes the front visible,
+ * otherwise @c EINA_FALSE to make the back visible
+ * @param[in] mode The mode type
+ */
+EAPI void elm_flip_go_to(Evas_Object *obj, Eina_Bool front, Elm_Flip_Mode mode);
+
+/**
+ * @brief Sets the interactive flip mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This sets if the flip should be interactive (allow a user to click and
+ * drag a side of the flip to reveal the back page and cause it to flip).
+ * By default a flip is not interactive. You may also need to set which
+ * sides of the flip are "active" for flipping and how much space they use
+ * (a minimum of a finger size) with elm_flip_interaction_direction_enabled_set()
+ * and elm_flip_interaction_direction_hitsize_set().
+ *
+ * @remarks The four available modes of interaction are:
+ * @li ELM_FLIP_INTERACTION_NONE - No interaction is allowed.
+ * @li ELM_FLIP_INTERACTION_ROTATE - Interaction causes rotate animation.
+ * @li ELM_FLIP_INTERACTION_CUBE - Interaction causes cube animation.
+ * @li ELM_FLIP_INTERACTION_PAGE - Interaction causes page animation.
+ *
+ * @remarks ELM_FLIP_INTERACTION_ROTATE won't cause
+ * ELM_FLIP_ROTATE_XZ_CENTER_AXIS or ELM_FLIP_ROTATE_YZ_CENTER_AXIS to
+ * happen, they can only be achieved with elm_flip_go().
+ *
+ * @param[in] obj The flip object
+ * @param[in] mode The interactive flip mode to use
+ */
+EAPI void elm_flip_interaction_set(Evas_Object *obj, Elm_Flip_Interaction mode);
+
+/**
+ * @brief Gets the interactive flip mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This returns the interactive flip mode set by elm_flip_interaction_set().
+ *
+ * @param[in] obj The flip object
+ * @return The interactive flip mode
+ */
+EAPI Elm_Flip_Interaction elm_flip_interaction_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets which directions of the flip respond to the interactive flip.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, all the directions are disabled, so you may want to enable the
+ * desired directions for flipping if you need interactive flipping. You must
+ * call this function once for each direction that should be enabled.
+ *
+ * @param[in] obj The flip object
+ * @param[in] dir The direction to change
+ * @param[in] enabled The boolean value that indicates whether that direction is enabled
+ *
+ * @see elm_flip_interaction_set()
+ */
+EAPI void elm_flip_interaction_direction_enabled_set(Evas_Object *obj, Elm_Flip_Direction dir, Eina_Bool enabled);
+
+/**
+ * @brief Gets the enabled state of that flip direction.
+ *
+ * @details This gets the enabled state set by elm_flip_interaction_direction_enabled_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The flip object
+ * @param[in] dir The direction to check
+ * @return The boolean value that indicates whether that direction is enabled
+ *
+ * @see elm_flip_interaction_set()
+ */
+EAPI Eina_Bool elm_flip_interaction_direction_enabled_get(Evas_Object *obj, Elm_Flip_Direction dir);
+
+/**
+ * @brief Sets the amount of the flip that is sensitive to the interactive flip.
+ *
+ * @details This sets the amount of the flip that is sensitive to the interactive flip, with @c 0
+ * representing no area in the flip and @c 1 representing the entire flip. There
+ * is however a consideration to be made. Basically, the area should never be
+ * smaller than the finger size set(as set in your Elementary configuration).
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The flip object
+ * @param[in] dir The direction to modify
+ * @param[in] hitsize The amount of that dimension (@c 0.0 to @c 1.0) to use
+ *
+ * @see elm_flip_interaction_set()
+ */
+EAPI void elm_flip_interaction_direction_hitsize_set(Evas_Object *obj, Elm_Flip_Direction dir, double hitsize);
+
+/**
+ * @brief Gets the amount of the flip that is sensitive to the interactive flip.
+ *
+ * @details This returns the amount of sensitive area set by
+ * elm_flip_interaction_direction_hitsize_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The flip object
+ * @param[in] dir The direction to check
+ * @return The size set for that direction
+ */
+EAPI double elm_flip_interaction_direction_hitsize_get(Evas_Object *obj, Elm_Flip_Direction dir);
-#include "elm_flip_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_flip_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_flip_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_flipselector.h b/src/lib/elm_flipselector.h
index c63a3de4e..134bfba02 100644
--- a/src/lib/elm_flipselector.h
+++ b/src/lib/elm_flipselector.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Flipselector Flip Selector
* @ingroup Elementary
*
@@ -11,11 +12,11 @@
* A flip selector is a widget to show a set of @b text items, one
* at a time, with the same sheet switching style as the @ref Clock
* "clock" widget, when one changes the current displaying sheet
- * (thus, the "flip" in the name).
+ * (thus, the word "flip" in the name).
*
- * User clicks to flip sheets which are @b held for some time will
+ * User clicks to flip sheets which are @b held for some time which
* make the flip selector to flip continuously and automatically for
- * the user. The interval between flips will keep growing in time,
+ * the user. The interval between flips keep growing with time,
* so that it helps the user to reach an item which is distant from
* the current selection.
*
@@ -23,49 +24,289 @@
* functions acting on it also work for flip selector objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * - @c "selected" - when the widget's selected text item is changed. The @c
- * event_info parameter is the item that was selected.
- * - @c "overflowed" - when the widget's current selection is changed
- * from the first item in its list to the last
- * - @c "underflowed" - when the widget's current selection is changed
- * from the last item in its list to the first
- * - @c "focused" - When the flip selector has received focus. (since 1.8)
- * - @c "unfocused" - When the flip selector has lost focus. (since 1.8)
- * - @c "language,changed" - the program's language changed (since 1.9)
+ * @ref Layout :
+ * - @c "selected" - When the widget's selected text item is changed.
+ * - @c "overflowed" - When the widget's current selection is changed
+ * from the first item in its list to the last.
+ * - @c "underflowed" - When the widget's current selection is changed
+ * from the last item in its list to the first.
*
* Available styles for it:
* - @c "default"
*
- * Default text parts of the flipselector items that you can use for are:
- * @li "default" - A label of the flipselector item
+ * The default text parts of the flipselector items that you can use are:
+ * @li "default" - Label of the flipselector item.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_disabled_set
* @li @ref elm_object_disabled_get
*
- * Supported elm_object_item common APIs.
- * @li @ref elm_object_item_del
+ * Supported common elm_object_item APIs.
+ * @li @ref elm_object_item_text_set
* @li @ref elm_object_item_part_text_set
- * @li @ref elm_object_item_part_text_get
* @li @ref elm_object_item_signal_emit
*
- * Here is an example on its usage:
- * @li @ref flipselector_example
+ * @{
*/
/**
- * @addtogroup Flipselector
- * @{
+ * @brief Adds a new flip selector widget to the given parent Elementary
+ * (container) widget.
+ *
+ * @details This function inserts a new flip selector widget on the canvas.
+ *
+ * @param[in] parent The parent object
+ * @return A new flip selector widget handle, otherwise @c NULL in case of an error
+ *
+ * @ingroup Flipselector
+ */
+EAPI Evas_Object *elm_flipselector_add(Evas_Object *parent);
+
+/**
+ * @brief Programmatically selects the next item of a flip selector widget.
+ *
+ * @remarks The selection is animated. Also, if it reaches the
+ * end of its list of member items, it continues with the first
+ * one onwards.
+ *
+ * @param[in] obj The flipselector object
+ *
+ * @ingroup Flipselector
+ */
+EAPI void elm_flipselector_flip_next(Evas_Object *obj);
+
+/**
+ * @brief Programmatically selects the previous item of a flip selector
+ * widget.
+ *
+ * @remarks The selection is animated. Also, if it reaches the
+ * beginning of its list of member items, it continues with the
+ * last one backwards.
+ *
+ * @param[in] obj The flipselector object
+ *
+ * @ingroup Flipselector
+ */
+EAPI void elm_flipselector_flip_prev(Evas_Object *obj);
+
+/**
+ * @brief Appends a (text) item to a flip selector widget.
+ *
+ * @remarks The widget's list of labels to show are appended with the
+ * given value. If the user wishes so, a callback function pointer
+ * can be passed, which gets called when this same item is
+ * selected.
+ *
+ * @remarks The current selection @b won't be modified by appending an
+ * element to the list.
+ *
+ * @remarks The maximum length of the text label is going to be
+ * determined <b>by the widget's theme</b>. Strings larger than
+ * that value are going to be @b truncated.
+ *
+ * @param[in] obj The flipselector object
+ * @param[in] label The (text) label of the new item
+ * @param[in] func The convenience callback function to take place when the
+ * item is selected
+ * @param[in] data The data passed to @a func mentioned above
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ *
+ * @ingroup Flipselector
+ */
+EAPI Elm_Object_Item *elm_flipselector_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data);
+
+/**
+ * @brief Prepends a (text) item to a flip selector widget.
+ *
+ * @remarks The widget's list of labels to show are prepended with the
+ * given value. If the user wishes so, a callback function pointer
+ * can be passed, which gets called when this same item is
+ * selected.
+ *
+ * @remarks The current selection @b won't be modified by prepending
+ * an element to the list.
+ *
+ * @remarks The maximum length of the text label is going to be
+ * determined <b>by the widget's theme</b>. Strings larger than
+ * that value are going to be @b truncated.
+ *
+ * @param[in] obj The flipselector object
+ * @param[in] label The (text) label of the new item
+ * @param[in] func The convenience callback function to take place when the
+ * item is selected
+ * @param[in] data The data passed to @a func mentioned above
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ *
+ * @ingroup Flipselector
+ */
+EAPI Elm_Object_Item *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data);
+
+/**
+ * @brief Gets the internal list of items in a given flip selector widget.
+ *
+ * @remarks This list is @b not to be modified in any way and must not be
+ * freed. Use the list members with functions like
+ * elm_object_item_text_set(),
+ * elm_object_item_text_get(),
+ * elm_object_item_del(),
+ * elm_flipselector_item_selected_get(),
+ * elm_flipselector_item_selected_set().
+ *
+ * @remarks This list is only valid until @a obj object's internal
+ * items list is changed. It should be fetched again with another
+ * call to this function when changes happen.
+ *
+ * @param[in] obj The flipselector object
+ * @return The list of items (#Elm_Object_Item as data),
+ * otherwise @c NULL on errors
+ *
+ * @ingroup Flipselector
+ */
+EAPI const Eina_List *elm_flipselector_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the first item in the given flip selector widget's list of
+ * items.
+ *
+ * @param[in] obj The flipselector object
+ * @return The first item, otherwise @c NULL if it has no items (and on
+ * errors)
+ *
+ * @see elm_flipselector_item_append()
+ * @see elm_flipselector_last_item_get()
+ *
+ * @ingroup Flipselector
+ */
+EAPI Elm_Object_Item *elm_flipselector_first_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the last item in the given flip selector widget's list of
+ * items.
+ *
+ * @param[in] obj The flipselector object
+ * @return The last item, otherwise @c NULL if it has no items (and on
+ * errors)
+ *
+ * @see elm_flipselector_item_prepend()
+ * @see elm_flipselector_first_item_get()
+ *
+ * @ingroup Flipselector
+ */
+EAPI Elm_Object_Item *elm_flipselector_last_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the currently selected item in a flip selector widget.
+ *
+ * @param[in] obj The flipselector object
+ * @return The selected item, otherwise @c NULL if the widget has no items
+ * (and on errors)
+ *
+ * @ingroup Flipselector
+ */
+EAPI Elm_Object_Item *elm_flipselector_selected_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether a given flip selector widget's item should be the
+ * currently selected one.
+ *
+ * @details This sets whether @a it is or is not the selected (thus, under
+ * display) one. If @a it is different from the one under display,
+ * the latter is unselected. If the @a it is set to be
+ * unselected, on the other hand, the @b first item in the widget's
+ * internal members list is the new selected one.
+ *
+ * @param[in] it The flip selector item
+ * @param[in] selected If @c EINA_TRUE it is selected, otherwise @c EINA_FALSE to unselect it
+ *
+ * @see elm_flipselector_item_selected_get()
+ *
+ * @ingroup Flipselector
+ */
+EAPI void elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * @brief Gets whether a given flip selector widget's item is the currently
+ * selected one.
+ *
+ * @param[in] it The flip selector item
+ * @return @c EINA_TRUE if it's selected, otherwise @c EINA_FALSE
+ * (or on errors)
+ *
+ * @see elm_flipselector_item_selected_set()
+ *
+ * @ingroup Flipselector
+ */
+EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the item before @a it in a flip selector widget's internal list of
+ * items.
+ *
+ * @param[in] it The item to fetch previous from
+ * @return The item before the @a it, in its parent's list \n
+ * If there is no previous item for @a it or there's an error, @c NULL is returned.
+ *
+ * @see elm_flipselector_item_next_get()
+ *
+ * @ingroup Flipselector
+ */
+EAPI Elm_Object_Item *elm_flipselector_item_prev_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the item after @a it in a flip selector widget's
+ * internal list of items.
+ *
+ * @param[in] it The item to fetch next from
+ * @return The item after the @a it, in its parent's list \n
+ * If there is no next item for @a it or there's an error, @c NULL is returned.
+ *
+ * @see elm_flipselector_item_prev_get()
+ *
+ * @ingroup Flipselector
+ */
+EAPI Elm_Object_Item *elm_flipselector_item_next_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the interval on time updates for a user's mouse button hold
+ * on a flip selector widget.
+ *
+ * @remarks This interval value is @b decreased while the user holds the
+ * mouse pointer either by flipping up or flipping down a given flip
+ * selector.
+ *
+ * @remarks This helps the user to get to a given item, which is distant from the
+ * current one, in an easier/faster way, as it start to flip quicker and
+ * quicker on mouse button holds.
+ *
+ * @remarks The calculation for the next flip interval value, starting from
+ * the one set with this call, is the previous interval divided by
+ * @c 1.05, so it decreases a little bit.
+ *
+ * @remarks The default starting interval value for automatic flips is
+ * @b 0.85 seconds.
+ *
+ * @param[in] obj The flip selector object
+ * @param[in] interval The (first) interval value in seconds
+ *
+ * @see elm_flipselector_first_interval_get()
+ *
+ * @ingroup Flipselector
+ */
+EAPI void elm_flipselector_first_interval_set(Evas_Object *obj, double interval);
+
+/**
+ * @brief Gets the interval on time updates for a user's mouse button hold
+ * on a flip selector widget.
+ *
+ * @param[in] obj The flip selector object
+ * @return The (first) interval value, in seconds, set on it
+ *
+ * @see elm_flipselector_first_interval_set()
+ *
+ * @ingroup Flipselector
*/
+EAPI double elm_flipselector_first_interval_get(const Evas_Object *obj);
-#include "elm_flipselector_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_flipselector_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_flipselector_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_focus.h b/src/lib/elm_focus.h
index 3aad5e94c..4f160cc1e 100644
--- a/src/lib/elm_focus.h
+++ b/src/lib/elm_focus.h
@@ -1,6 +1,7 @@
/**
* @defgroup Focus Focus
- * @ingroup Elementary
+ * @ingroup elm_infra_group
+ * @brief This group provides functions to handle Elementary Focus.
*
* An Elementary application has, at all times, one (and only one)
* @b focused object. This is what determines where the input
@@ -11,327 +12,293 @@
* Elementary applications also have the concept of <b>focus
* chain</b>: one can cycle through all the windows' focusable
* objects by input (tab key) or programmatically. The default
- * focus chain for an application is the one define by the order in
- * which the widgets where added in code. One will cycle through
- * top level widgets, and, for each one containing sub-objects, cycle
+ * focus chain for an application is the one defined by the order in
+ * which the widgets are added in the code. One cycles through the
+ * top level widgets, and, for each one containing sub-object, cycle
* through them all, before returning to the level
* above. Elementary also allows one to set @b custom focus chains
* for their applications.
*
- * Besides the focused decoration a widget may exhibit, when it
+ * Besides the focused decoration that a widget may exhibit, when it
* gets focus, Elementary has a @b global focus highlight object
* that can be enabled for a window. If one chooses to do so, this
- * extra highlight effect will surround the current focused object,
+ * extra highlight effect surrounds the current focused object,
* too.
*
- * @note Some Elementary widgets are @b unfocusable, after
+ * @remarks Some Elementary widgets are @b unfocusable, after
* creation, by their very nature: they are not meant to be
* interacted with input events, but are there just for visual
- * purposes.
+ * purposes. *
*
- * @ref general_functions_example_page "This" example contemplates
- * some of these functions.
+ * @{
*/
/**
- * Focus directions.
- *
- * @ingroup Focus
+ * @brief Enumeration that defines the focus directions.
*/
typedef enum
{
- ELM_FOCUS_PREVIOUS, /**< previous direction */
- ELM_FOCUS_NEXT, /**< next direction */
- ELM_FOCUS_UP, /**< up direction */
- ELM_FOCUS_DOWN, /**< down direction */
- ELM_FOCUS_RIGHT, /**< right direction */
- ELM_FOCUS_LEFT /**< left direction */
+ ELM_FOCUS_PREVIOUS, /**< Previous direction */
+ ELM_FOCUS_NEXT, /**< Next direction */
+ ELM_FOCUS_UP, /**< Up direction */
+ ELM_FOCUS_DOWN, /**< Down direction */
+ ELM_FOCUS_RIGHT, /**< Right direction */
+ ELM_FOCUS_LEFT, /**< Left direction */
+ ELM_FOCUS_NONE
} Elm_Focus_Direction;
/**
- * Get the whether an Elementary object has the focus or not.
+ * @typedef Elm_Focus_Info
*
- * @param obj The Elementary object to get the information from
- * @return @c EINA_TRUE, if the object is focused, @c EINA_FALSE if
- * not (and on errors).
+ * @brief The structure type containing the info sent in the callback for the "focused" signals.
+ */
+typedef struct _Elm_Focus_Info Elm_Focus_Info;
+
+struct _Elm_Focus_Info
+{
+ Evas_Object *prev_focused;
+ Elm_Focus_Direction dir;
+};
+
+/**
+ * @brief Gets whether an Elementary object has the focus.
*
- * @see elm_object_focus_set()
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Elementary object to get the information from
+ * @return @c EINA_TRUE if the object is focused, otherwise @c EINA_FALSE if
+ * not (and on errors)
*
- * @ingroup Focus
+ * @see elm_object_focus_set()
*/
EAPI Eina_Bool elm_object_focus_get(const Evas_Object *obj);
/**
- * Set/unset focus to a given Elementary object.
+ * @brief Sets or unsets focus to a given Elementary object.
*
- * @param obj The Elementary object to operate on.
- * @param focus @c EINA_TRUE Set focus to a given object,
- * @c EINA_FALSE Unset focus to a given object.
+ * @since_tizen 2.3
*
- * @note When you set focus to this object, if it can handle focus, will
- * take the focus away from the one who had it previously and will, for
- * now on, be the one receiving input events. Unsetting focus will remove
- * the focus from @p obj, passing it back to the previous element in the
- * focus chain list.
+ * @remarks When you set focus to this object, if it can handle focus, it
+ * takes the focus away from the one who had it previously and, from
+ * now on, becomes the one receiving input events. Unsetting focus removes
+ * the focus from @a obj, passing it back to the previous element in the
+ * focus chain list.
*
- * @warning Only visible object can get a focus. Call evas_object_show(o) before
- * calling this API, if you want to give a focus to the evas object.
+ * @param[in] obj The Elementary object to operate on
+ * @param[in] focus If @c EINA_TRUE the focus to a given object is set,
+ * otherwise @c EINA_FALSE to unset the focus to a given object
*
- * @see elm_object_focus_get(), elm_object_focus_custom_chain_get()
- *
- * @ingroup Focus
+ * @see elm_object_focus_get()
+ * @see elm_object_focus_custom_chain_get()
*/
EAPI void elm_object_focus_set(Evas_Object *obj, Eina_Bool focus);
/**
- * Set the ability for an Elementary object to be focused
+ * @brief Sets the ability for an Elementary object to be focused.
*
- * @param obj The Elementary object to operate on
- * @param enable @c EINA_TRUE if the object can be focused, @c
- * EINA_FALSE if not (and on errors)
+ * @details This sets whether the object @a obj is able to take focus or
+ * not. Unfocusable objects do nothing when programmatically
+ * focused, being the nearest focusable parent object, the one
+ * really getting focus. Also, when they receive mouse input, they
+ * get the event, but do not take away the focus from where it
+ * is previously.
*
- * This sets whether the object @p obj is able to take focus or
- * not. Unfocusable objects do nothing when programmatically
- * focused, being the nearest focusable parent object the one
- * really getting focus. Also, when they receive mouse input, they
- * will get the event, but not take away the focus from where it
- * was previously.
+ * @since_tizen 2.3
*
- * @ingroup Focus
+ * @param[in] obj The Elementary object to operate on
+ * @param[in] enable If @c EINA_TRUE the object can be focused,
+ * otherwise @c EINA_FALSE if it cannot (and on errors)
*/
EAPI void elm_object_focus_allow_set(Evas_Object *obj, Eina_Bool enable);
/**
- * Get whether an Elementary object is focusable or not
+ * @brief Gets whether an Elementary object is focusable.
*
- * @param obj The Elementary object to operate on
- * @return @c EINA_TRUE if the object is allowed to be focused, @c
- * EINA_FALSE if not (and on errors)
+ * @since_tizen 2.3
*
- * @note Objects which are meant to be interacted with by input
- * events are created able to be focused, by default. All the
- * others are not.
+ * @remarks Objects which are meant to be interacted with by input
+ * events are created to be able to be focused, by default. All the
+ * others are not.
*
- * @ingroup Focus
+ * @param[in] obj The Elementary object to operate on
+ * @return @c EINA_TRUE if the object is allowed to be focused,
+ * otherwise @c EINA_FALSE if it is not (and on errors)
*/
EAPI Eina_Bool elm_object_focus_allow_get(const Evas_Object *obj);
/**
- * Set custom focus chain.
+ * @brief Sets the custom focus chain.
+ *
+ * @details This function overwrites any previous custom focus chain within
+ * the list of objects. The previous list is deleted and this list
+ * is managed by elementary. After it is set, don't modify it.
*
- * This function overwrites any previous custom focus chain within
- * the list of objects. The previous list will be deleted and this list
- * will be managed by elementary. After it is set, don't modify it.
+ * @since_tizen 2.3
*
- * @note On focus cycle, only will be evaluated children of this container.
+ * @remarks On the focus cycle, there are only evaluated children of this container.
*
- * @param obj The container object
- * @param objs Chain of objects to pass focus
- * @ingroup Focus
+ * @param[in] obj The container object
+ * @param[in] objs The chain of objects to pass focus to
*/
EAPI void elm_object_focus_custom_chain_set(Evas_Object *obj, Eina_List *objs);
/**
- * Unset a custom focus chain on a given Elementary widget
+ * @brief Unsets a custom focus chain on a given Elementary widget.
*
- * @param obj The container object to remove focus chain from
+ * @since_tizen 2.3
*
- * Any focus chain previously set on @p obj (for its child objects)
- * is removed entirely after this call.
+ * @remarks Any focus chain previously set on @a obj (for its child objects)
+ * is removed entirely after this call.
*
- * @ingroup Focus
+ * @param[in] obj The container object to remove the focus chain from
*/
EAPI void elm_object_focus_custom_chain_unset(Evas_Object *obj);
/**
- * Get custom focus chain
+ * @brief Gets the custom focus chain.
*
- * @param obj The container object
- * @ingroup Focus
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The container object
+ * @return The focus custom chain list
*/
EAPI const Eina_List *elm_object_focus_custom_chain_get(const Evas_Object *obj);
/**
- * Append object to custom focus chain.
+ * @brief Appends an object to the custom focus chain.
+ *
+ * @since_tizen 2.3
*
- * @note If relative_child equal to NULL or not in custom chain, the object
- * will be added in end.
+ * @remarks If @a relative_child is equal to @c NULL or not in the custom chain, the object
+ * is added in the end.
*
- * @note On focus cycle, only will be evaluated children of this container.
+ * @remarks On the focus cycle, there are only evaluated children of this container.
*
- * @param obj The container object
- * @param child The child to be added in custom chain
- * @param relative_child The relative object to position the child
- * @ingroup Focus
+ * @param[in] obj The container object
+ * @param[in] child The child to be added in the custom chain
+ * @param[in] relative_child The relative object to position the child
*/
EAPI void elm_object_focus_custom_chain_append(Evas_Object *obj, Evas_Object *child, Evas_Object *relative_child);
/**
- * Prepend object to custom focus chain.
+ * @brief Prepends an object to the custom focus chain.
+ *
+ * @since_tizen 2.3
*
- * @note If relative_child equal to NULL or not in custom chain, the object
- * will be added in begin.
+ * @remarks If @a relative_child is equal to @c NULL or not in custom chain, the object
+ * is added in the beginning.
*
- * @note On focus cycle, only will be evaluated children of this container.
+ * @remarks On the focus cycle, there are only evaluated children of this container.
*
- * @param obj The container object
- * @param child The child to be added in custom chain
- * @param relative_child The relative object to position the child
- * @ingroup Focus
+ * @param[in] obj The container object
+ * @param[in] child The child to be added in the custom chain
+ * @param[in] relative_child The relative object to position the child
*/
EAPI void elm_object_focus_custom_chain_prepend(Evas_Object *obj, Evas_Object *child, Evas_Object *relative_child);
/**
- * Give focus to next object in object tree.
+ * @brief Gives focus to the next object in the object tree.
*
- * Give focus to next object in focus chain of one object sub-tree.
- * If the last object of chain already have focus, the focus will go to the
- * first object of chain.
+ * @details This gives focus to the next object in the focus chain of one the object sub-tree.
+ * If the last object of the chain already has focus, the focus goes to the
+ * first object of the chain.
*
- * @param obj The object root of sub-tree
- * @param dir Direction to move the focus
+ * @param[in] obj The object root of the sub-tree
+ * @param[in] dir The direction to move the focus
*
- * @see elm_object_focus_next_object_get(), elm_object_focus_next_object_set()
- *
- * @ingroup Focus
+ * @see elm_object_focus_next_object_get()
+ * @see elm_object_focus_next_object_set()
*/
EAPI void elm_object_focus_next(Evas_Object *obj, Elm_Focus_Direction dir);
/**
- * Get next object which was set with specific focus direction.
+ * @brief Gets the next object that is set with a specific focus direction.
*
- * Get next object which was set by elm_object_focus_next_object_set
- * with specific focus direction.
+ * @details This gets the next object that is set by elm_object_focus_next_object_set()
+ * with a specific focus direction.
*
- * @param obj The Elementary object
- * @param dir Focus direction
- * @return Focus next object or @c NULL, if there is no focus next object.
+ * @since 1.8
*
- * @see elm_object_focus_next_object_set(), elm_object_focus_next()
+ * @since_tizen 2.3
*
- * @since 1.8
+ * @param[in] obj The Elementary object
+ * @param[in] dir The focus direction
+ * @return The focus next object, otherwise @c NULL if there is no focus next object
*
- * @ingroup Focus
+ * @see elm_object_focus_next_object_set()
+ * @see elm_object_focus_next()
*/
EAPI Evas_Object * elm_object_focus_next_object_get(const Evas_Object *obj, Elm_Focus_Direction dir);
/**
- * Set next object with specific focus direction.
+ * @brief Sets the next object with a specific focus direction.
*
- * When focus next object is set with specific focus direction, this object
- * will be the first candidate when finding next focusable object.
- * Focus next object can be registered with six directions that are previous,
- * next, up, down, right, and left.
+ * @since 1.8
*
- * @param obj The Elementary object
- * @param next Focus next object
- * @param dir Focus direction
+ * @since_tizen 2.3
*
- * @see elm_object_focus_next_object_get(), elm_object_focus_next()
+ * @remarks When the focus next object is set with a specific focus direction, this object
+ * is the first candidate when finding the next focusable object.
+ * The focus next object can be registered with six directions that are previous,
+ * next, up, down, right, and left.
*
- * @since 1.8
+ * @param[in] obj The Elementary object
+ * @param[in] next The focus next object
+ * @param[in] dir The focus direction
*
- * @ingroup Focus
+ * @see elm_object_focus_next_object_get()
+ * @see elm_object_focus_next()
*/
EAPI void elm_object_focus_next_object_set(Evas_Object *obj, Evas_Object *next, Elm_Focus_Direction dir);
/**
- * Get focused object in object tree.
- *
- * This function returns current focused object in one object sub-tree.
+ * @brief Gets the focused object in the object tree.
*
- * @param obj The object root of sub-tree
- * @return Current focused or @c NULL, if there is no focused object.
+ * @details This function returns the current focused object in one object sub-tree.
*
* @since 1.8
*
- * @ingroup Focus
+ * @param obj The object root of the sub-tree
+ * @return The current focused object, otherwise @c NULL if there is no focused object
*/
EAPI Evas_Object *elm_object_focused_object_get(const Evas_Object *obj);
/**
- * Make the elementary object and its children to be focusable
- * (or unfocusable).
+ * @brief Makes the elementary object and its children to be focusable
+ * (or unfocusable).
*
- * @param obj The Elementary object to operate on
- * @param focusable @c EINA_TRUE for focusable,
- * @c EINA_FALSE for unfocusable.
+ * @details This sets whether the object @a obj and its children objects
+ * are able to take focus or not. If the tree is set as unfocusable, the
+ * newest focused object which is not in this tree gets focus.
+ * This API can be helpful for an object to be deleted.
+ * When an object is deleted soon, the object and its children may not
+ * want to get focus (by focus reverting or by other focus controls).
+ * Then, just use this API before deleting.
*
- * This sets whether the object @p obj and its children objects
- * are able to take focus or not. If the tree is set as unfocusable,
- * newest focused object which is not in this tree will get focus.
- * This API can be helpful for an object to be deleted.
- * When an object will be deleted soon, it and its children may not
- * want to get focus (by focus reverting or by other focus controls).
- * Then, just use this API before deleting.
+ * @since_tizen 2.3
*
- * @see elm_object_tree_focus_allow_get()
+ * @param[in] obj The Elementary object to operate on
+ * @param[in] focusable If @c EINA_TRUE it is focusable,
+ * otherwise @c EINA_FALSE if it is unfocusable
*
- * @ingroup Focus
+ * @see elm_object_tree_focus_allow_get()
*
*/
EAPI void elm_object_tree_focus_allow_set(Evas_Object *obj, Eina_Bool focusable);
/**
- * Get whether an Elementary object and its children are focusable or not.
+ * @brief Gets whether an Elementary object and its children are focusable.
*
- * @param obj The Elementary object to get the information from
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Elementary object to get the information from
* @return @c EINA_TRUE, if the tree is focusable,
- * @c EINA_FALSE if not (and on errors).
+ * otherwise @c EINA_FALSE if it is not (and on errors)
*
* @see elm_object_tree_focus_allow_set()
- *
- * @ingroup Focus
*/
EAPI Eina_Bool elm_object_tree_focus_allow_get(const Evas_Object *obj);
/**
- * Set the focus highlight style to be used by a given widget.
- *
- * @param obj The Elementary widget for which focus style needs to be set.
- * @param style The name of the focus style to use on it.
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
- *
- * @note This overrides the style which is set
- * by elm_win_focus_highlight_style_set().
- *
- * @see elm_object_focus_highlight_style_get
- *
- * @since 1.9
- *
- * @ingroup Focus
- */
-EAPI Eina_Bool elm_object_focus_highlight_style_set(Evas_Object *obj, const char *style);
-
-/**
- * Get the focus highlight style to be used by a given widget.
- *
- * @param obj The Elementary widget to query for its focus highlight style.
- * @return The focus highlight style name used by widget.
- *
- * @see elm_object_focus_highlight_style_set()
- *
- * @since 1.9
- *
- * @ingroup Focus
- */
-EAPI const char *elm_object_focus_highlight_style_get(const Evas_Object *obj);
-
-/**
- * Get the focused object item
- *
- * This returns the focused object item.
- *
- * @param obj The container object
- * @return The focused item, or @c NULL if none
- *
- * The focused item can be unfocused with function
- * elm_object_item_focus_set().
- *
- * see @elm_object_item_focus_set()
- * see @elm_object_item_focus_get()
- *
- * @ingroup Focus
- * @since 1.10
+ * @}
*/
-EAPI Elm_Object_Item *elm_object_focused_item_get(const Evas_Object *obj);
diff --git a/src/lib/elm_font.h b/src/lib/elm_font.h
index cf21df753..3b0b2b5d0 100644
--- a/src/lib/elm_font.h
+++ b/src/lib/elm_font.h
@@ -1,15 +1,18 @@
/**
* @defgroup Fonts Elementary Fonts
- * @ingroup Elementary
+ * @ingroup elm_infra_group
*
- * These are functions dealing with font rendering, selection and the
- * like for Elementary applications. One might fetch which system
- * fonts are there to use and set custom fonts for individual classes
- * of UI items containing text (text classes).
+ * @brief These are functions dealing with font rendering, selection, and the
+ * like for Elementary applications. One might fetch which system
+ * fonts are there to use and set custom fonts for individual classes
+ * of UI items containing text (text classes).
*
* @{
*/
+/**
+ * @brief Structure of Elm Font Property
+ */
typedef struct _Elm_Font_Properties
{
const char *name;
@@ -17,80 +20,80 @@ typedef struct _Elm_Font_Properties
} Elm_Font_Properties;
/**
- * Translate a font (family) name string in fontconfig's font names
- * syntax into an @c Elm_Font_Properties struct.
+ * @brief Translates a font (family) name string in the fontconfig's font names
+ * syntax into an #Elm_Font_Properties struct.
*
- * @param font The font name and styles string
- * @return the font properties struct
+ * @since_tizen 2.3
*
- * @ingroup Fonts
+ * @remarks The reverse translation can be achieved with
+ * elm_font_fontconfig_name_get(), for one style only (single font
+ * instance, not family).
*
- * @note The reverse translation can be achieved with
- * elm_font_fontconfig_name_get(), for one style only (single font
- * instance, not family).
+ * @param[in] font The font name and styles string
+ * @return The font properties struct
*/
EAPI Elm_Font_Properties *elm_font_properties_get(const char *font);
/**
- * Free font properties return by elm_font_properties_get().
+ * @brief Frees the font properties returned by elm_font_properties_get().
*
- * @param efp the font properties struct
+ * @since_tizen 2.3
*
- * @ingroup Fonts
+ * @param[in] efp The font properties struct
*/
EAPI void elm_font_properties_free(Elm_Font_Properties *efp);
/**
- * Translate a font name, bound to a style, into fontconfig's font names
- * syntax.
+ * @brief Translates a font name, bound to a style, into the fontconfig's font names
+ * syntax.
*
- * @param name The font (family) name
- * @param style The given style (may be @c NULL)
+ * @since_tizen 2.3
*
- * @return the font name and style string
+ * @remarks The reverse translation can be achieved with
+ * elm_font_properties_get(), for one style only (single font
+ * instance, not family).
*
- * @ingroup Fonts
+ * @param[in] name The font (family) name
+ * @param[in] style The given style (may be @c NULL)
*
- * @note The reverse translation can be achieved with
- * elm_font_properties_get(), for one style only (single font
- * instance, not family).
+ * @return The font name and style string
*/
EAPI char *elm_font_fontconfig_name_get(const char *name, const char *style);
/**
- * Free the font string return by elm_font_fontconfig_name_get().
+ * @brief Frees the font string returned by elm_font_fontconfig_name_get().
*
- * @param name the font properties struct
+ * @since_tizen 2.3
*
- * @ingroup Fonts
+ * @param[in] name The font properties struct
*/
EAPI void elm_font_fontconfig_name_free(char *name);
/**
- * Create a font hash table of available system fonts.
+ * @brief Creates a font hash table of available system fonts.
*
- * One must call it with @p list being the return value of
- * evas_font_available_list(). The hash will be indexed by font
- * (family) names, being its values @c Elm_Font_Properties blobs.
+ * @since_tizen 2.3
*
- * @param list The list of available system fonts, as returned by
- * evas_font_available_list().
- * @return the font hash.
+ * @remarks One must call it with @a list being the return value of
+ * evas_font_available_list(). The hash is indexed by font
+ * (family) names that are its values @c Elm_Font_Properties blobs.
*
- * @ingroup Fonts
+ * @remarks The user is supposed to get it populated at least with @c 3
+ * default font families (Sans, Serif, Monospace), which should be
+ * present on most systems.
*
- * @note The user is supposed to get it populated at least with 3
- * default font families (Sans, Serif, Monospace), which should be
- * present on most systems.
+ * @param[in] list The list of available system fonts, as returned by
+ * evas_font_available_list()
+ * @return The font hash
*/
EAPI Eina_Hash *elm_font_available_hash_add(Eina_List *list);
/**
- * Free the hash returned by elm_font_available_hash_add().
+ * @brief Frees the hash returned by elm_font_available_hash_add().
*
- * @param hash the hash to be freed.
+ * @since_tizen 2.3
*
- * @ingroup Fonts
+ * @param[in] hash The hash to be freed
*/
EAPI void elm_font_available_hash_del(Eina_Hash *hash);
diff --git a/src/lib/elm_frame.h b/src/lib/elm_frame.h
index a7dad2bf7..4f38821fb 100644
--- a/src/lib/elm_frame.h
+++ b/src/lib/elm_frame.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Frame Frame
* @ingroup Elementary
*
@@ -20,40 +21,105 @@
* @li outdent_top
* @li outdent_bottom
*
- * Of all this styles only default shows the title.
+ * Of all these styles only default shows the title.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for frame objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * - @c "clicked" - The user has clicked the frame's label
- * - @c "language,changed" - the program's language changed (since 1.9)
+ * @ref Layout :
+ * - @c "clicked" - The user has clicked the frame's label.
*
- * Default content parts of the frame widget that you can use for are:
- * @li "default" - A content of the frame
+ * The default content parts of the frame widget that you can use are:
+ * @li "default" - Content of the frame.
*
- * Default text parts of the frame widget that you can use for are:
- * @li "default" - A label of the frame
+ * The default text parts of the frame widget that you can use are:
+ * @li "default" - Label of the frame.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_part_text_set
* @li @ref elm_object_part_text_get
* @li @ref elm_object_part_content_set
* @li @ref elm_object_part_content_get
* @li @ref elm_object_part_content_unset
*
- * For a detailed example see the @ref tutorial_frame.
- *
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_frame_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_frame_legacy.h"
-#endif
+/**
+ * @brief Adds a new frame to the parent.
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @ingroup Frame
+ */
+EAPI Evas_Object *elm_frame_add(Evas_Object *parent);
+
+/**
+ * @brief Toggles autocollapsing of a frame.
+ *
+ * @remarks When @a enable is @c EINA_TRUE, clicking a frame's label collapses the frame
+ * vertically, shrinking it to the height of the label.
+ * By default, this is DISABLED.
+ *
+ * @param[in] obj The frame
+ * @param[in] autocollapse The boolean value that indicates whether to enable autocollapse
+ *
+ * @ingroup Frame
+ */
+EAPI void elm_frame_autocollapse_set(Evas_Object *obj, Eina_Bool autocollapse);
+
+/**
+ * @brief Determines autocollapsing of a frame.
+ *
+ * @remarks When this returns @c EINA_TRUE, clicking a frame's label collapses the frame
+ * vertically, shrinking it to the height of the label.
+ * By default, this is DISABLED.
+ *
+ * @param[in] obj The frame
+ * @return The boolean value that indicates whether autocollapse is enabled
+ *
+ * @ingroup Frame
+ */
+EAPI Eina_Bool elm_frame_autocollapse_get(const Evas_Object *obj);
+
+/**
+ * @brief Manually collapses a frame without animations.
+ *
+ * @remarks Use this to toggle the collapsed state of a frame, bypassing animations.
+ *
+ * @param[in] obj The frame
+ * @param[in] collapse If @c true the frame collapses, otherwise @c false to expand it
+ *
+ * @ingroup Frame
+ */
+EAPI void elm_frame_collapse_set(Evas_Object *obj, Eina_Bool collapse);
+
+/**
+ * @brief Determines the collapse state of a frame.
+ *
+ * @remarks Use this to determine the collapse state of a frame.
+ *
+ * @param[in] obj The frame
+ * @return @c true if collapsed, otherwise @c false
+ *
+ * @ingroup Frame
+ */
+EAPI Eina_Bool elm_frame_collapse_get(const Evas_Object *obj);
+
+/**
+ * @brief Manually collapses a frame with animations.
+ *
+ * @remarks Use this to toggle the collapsed state of a frame, triggering animations.
+ *
+ * @param[in] obj The frame
+ * @param[in] collapse If @c true the frame collapses, otherwise @c false to expand it
+ *
+ * @ingroup Frame
+ */
+EAPI void elm_frame_collapse_go(Evas_Object *obj, Eina_Bool collapse);
+
/**
* @}
*/
diff --git a/src/lib/elm_gen.h b/src/lib/elm_gen.h
index 8bef0e04b..98d6c8f84 100644
--- a/src/lib/elm_gen.h
+++ b/src/lib/elm_gen.h
@@ -3,69 +3,61 @@ typedef struct Elm_Gen_Item Elm_Gen_Item;
/**
* @struct Elm_Gen_Item_Class
*
- * Gengrid or Genlist item class definition.
- * field details.
+ * @brief The structure type that represents the Gengrid or Genlist item class definition field details.
*/
typedef struct _Elm_Gen_Item_Class Elm_Gen_Item_Class;
/**
- * Text fetching class function for Elm_Gen_Item_Class.
+ * @brief The character type that represents the text fetching class function for Elm_Gen_Item_Class.
* @param data The data passed in the item creation function
* @param obj The base widget object
* @param part The part name of the swallow
* @return The allocated (NOT stringshared) string to set as the text
*/
-typedef char *(*Elm_Gen_Item_Text_Get_Cb)(void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for gen item classes. */
+typedef char *(*Elm_Gen_Item_Text_Get_Cb)(void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for gen item classes */
/**
- * Content (swallowed object) fetching class function for Elm_Gen_Item_Class.
+ * @brief Content (swallowed object) fetching class function for Elm_Gen_Item_Class.
* @param data The data passed in the item creation function
* @param obj The base widget object
* @param part The part name of the swallow
* @return The content object to swallow
*/
-typedef Evas_Object *(*Elm_Gen_Item_Content_Get_Cb)(void *data, Evas_Object *obj, const char *part); /**< Content(swallowed object) fetching class function for gen item classes. */
+typedef Evas_Object *(*Elm_Gen_Item_Content_Get_Cb)(void *data, Evas_Object *obj, const char *part); /**< Content(swallowed object) fetching class function for gen item classes */
/**
- * State fetching class function for Elm_Gen_Item_Class.
+ * @brief The boolean type that represents the state fetching class function for Elm_Gen_Item_Class.
* @param data The data passed in the item creation function
* @param obj The base widget object
* @param part The part name of the swallow
- * @return The hell if I know
+ * @return The state object to swallow
*/
-typedef Eina_Bool (*Elm_Gen_Item_State_Get_Cb)(void *data, Evas_Object *obj, const char *part); /**< State fetching class function for gen item classes. */
+typedef Eina_Bool (*Elm_Gen_Item_State_Get_Cb)(void *data, Evas_Object *obj, const char *part); /**< State fetching class function for gen item classes */
/**
- * Deletion class function for Elm_Gen_Item_Class.
+ * @brief The void type that represents the deletion class function for Elm_Gen_Item_Class.
* @param data The data passed in the item creation function
* @param obj The base widget object
*/
-typedef void (*Elm_Gen_Item_Del_Cb)(void *data, Evas_Object *obj); /**< Deletion class function for gen item classes. */
+typedef void (*Elm_Gen_Item_Del_Cb)(void *data, Evas_Object *obj); /**< Deletion class function for gen item classes */
struct _Elm_Gen_Item_Class
{
- int version; /**< Set by elementary if you alloc an item class using elm_genlist/gengrid_item_class_new(), or if you set your own class (must be const) then set it to ELM_GENLIST/GENGRID_ITEM_CLASS_VERSION */
- unsigned int refcount; /**< Set it to 0 if you use your own const class, or its managed for you by class ref/unref calls */
- Eina_Bool delete_me : 1; /**< Leave this alone - set it to 0 if you have a const class of your own */
- const char *item_style; /**< Name of the visual style to use for this item. If you don't know use "default" */
- const char *decorate_item_style; /**< Style used if item is set to a decorate mode. @see elm_genlist_item_decorate_mode_set() or NULL if you don't care. currently it's used only in genlist. */
- const char *decorate_all_item_style; /**< Style to use when in edit mode, or NULL if you don't care. currently it's used only in genlist. */
+ int version; /**< Set by elementary if you allocate an item class using elm_genlist/gengrid_item_class_new(), or if you set your own class (must be const) then set it to ELM_GENLIST/GENGRID_ITEM_CLASS_VERSION */
+ unsigned int refcount; /**< Set it to @c 0 if you use your own const class, or it is managed for you by class ref/unref calls */
+ Eina_Bool delete_me : 1; /**< Leave this alone - set it to @c 0 if you have a const class of your own */
+ Eina_Bool homogeneous : 1; /**< Set it to @c EINA_TRUE if you use homogeneous mode at each item class */
+ const char *item_style; /**< Name of the visual style to use for this item. If you don't know, use "default" */
+ const char *decorate_item_style; /**< Style used if item is set to the decorate mode. @see elm_genlist_item_decorate_mode_set() or @c NULL if you don't care. Currently it's used only in genlist */
+ const char *decorate_all_item_style; /**< Style to use when in the edit mode, or @c NULL if you don't care. Currently it's used only in genlist */
struct
{
- Elm_Gen_Item_Text_Get_Cb text_get; /**< Text fetching class function for genlist/gengrid item classes.*/
- Elm_Gen_Item_Content_Get_Cb content_get; /**< Content fetching class function for genlist/gengrid item classes. */
- Elm_Gen_Item_State_Get_Cb state_get; /**< State fetching class function for genlist/gengrid item classes. */
- Elm_Gen_Item_Del_Cb del; /**< Deletion class function for genlist/gengrid item classes. */
+ Elm_Gen_Item_Text_Get_Cb text_get; /**< Text fetching class function for genlist/gengrid item classes */
+ Elm_Gen_Item_Content_Get_Cb content_get; /**< Content fetching class function for genlist/gengrid item classes */
+ Elm_Gen_Item_State_Get_Cb state_get; /**< State fetching class function for genlist/gengrid item classes */
+ Elm_Gen_Item_Del_Cb del; /**< Deletion class function for genlist/gengrid item classes */
} func;
}; /**< #Elm_Gen_Item_Class member definitions */
#define ELM_GEN_ITEM_CLASS_VERSION 2
#define ELM_GEN_ITEM_CLASS_HEADER ELM_GEN_ITEM_CLASS_VERSION, 0, 0
-
-typedef enum
-{
- ELM_GLOB_MATCH_NO_ESCAPE = (1 << 0), /**< Treat backslash as an ordinary character instead of escape */
- ELM_GLOB_MATCH_PATH = (1 << 1), /**< Match a slash in string only with a slash in pattern and not by an asterisk (*) or a question mark (?) metacharacter, nor by a bracket expression ([]) containing a slash. */
- ELM_GLOB_MATCH_PERIOD = (1 << 2), /**< Leading period in string has to be matched exactly by a period in pattern. A period is considered to be leading if it is the first character in string, or if both ELM_GLOB_MATCH_PATH is set and the period immediately follows a slash. */
- ELM_GLOB_MATCH_NOCASE = (1 << 3) /**< The pattern is matched case-insensitively. */
-} Elm_Glob_Match_Flags; /**< Glob matching bitfiled flags. @since 1.11 */
diff --git a/src/lib/elm_general.h b/src/lib/elm_general.h
index 86eba3bef..504764c42 100644
--- a/src/lib/elm_general.h
+++ b/src/lib/elm_general.h
@@ -1,398 +1,399 @@
/**
* @defgroup General General
- * @ingroup Elementary
+ * @ingroup elm_infra_group
*
* @brief General Elementary API. Functions that don't relate to
- * Elementary objects specifically.
+ * Elementary objects specifically.
*
- * Here are documented functions which init/shutdown the library,
+ * These are documented functions that init/shutdown the library,
* that apply to generic Elementary objects, that deal with
- * configuration, et cetera.
+ * configuration, etc.
*
- * @ref general_functions_example_page "This" example contemplates
- * some of these functions.
- */
-
-/**
- * @addtogroup General
* @{
*/
/**
- * Defines couple of standard Evas_Object layers to be used
- * with evas_object_layer_set().
+ * @brief Enumeration that defines a couple of standard Evas_Object layers to be used
+ * with evas_object_layer_set().
*
- * @note whenever extending with new values, try to keep some padding
- * to siblings so there is room for further extensions.
+ * @remarks Whenever extending with new values, try to keep some padding
+ * to siblings so that there is room for further extensions.
*/
typedef enum
{
- ELM_OBJECT_LAYER_BACKGROUND = EVAS_LAYER_MIN + 64, /**< where to place backgrounds */
+ ELM_OBJECT_LAYER_BACKGROUND = EVAS_LAYER_MIN + 64, /**< Where to place backgrounds */
ELM_OBJECT_LAYER_DEFAULT = 0, /**< Evas_Object default layer (and thus for Elementary) */
- ELM_OBJECT_LAYER_FOCUS = EVAS_LAYER_MAX - 128, /**< where focus object visualization is */
- ELM_OBJECT_LAYER_TOOLTIP = EVAS_LAYER_MAX - 64, /**< where to show tooltips */
- ELM_OBJECT_LAYER_CURSOR = EVAS_LAYER_MAX - 32, /**< where to show cursors */
- ELM_OBJECT_LAYER_LAST /**< last layer known by Elementary */
+ ELM_OBJECT_LAYER_FOCUS = EVAS_LAYER_MAX - 128, /**< Where the focus object visualization is */
+ ELM_OBJECT_LAYER_TOOLTIP = EVAS_LAYER_MAX - 64, /**< Where to show tooltips */
+ ELM_OBJECT_LAYER_CURSOR = EVAS_LAYER_MAX - 32, /**< Where to show cursors */
+ ELM_OBJECT_LAYER_LAST /**< The last layer known by Elementary */
} Elm_Object_Layer;
/**************************************************************************/
EAPI extern int ELM_ECORE_EVENT_ETHUMB_CONNECT;
/**
- * Emitted when the application has reconfigured elementary settings due
- * to an external configuration tool asking it to.
+ * @brief Emitted when the application has reconfigured the elementary settings because
+ * an external configuration tool asked it to.
*/
EAPI extern int ELM_EVENT_CONFIG_ALL_CHANGED;
/**
- * Emitted when any Elementary's policy value is changed.
+ * @brief Emitted when any Elementary's policy value is changed.
*/
EAPI extern int ELM_EVENT_POLICY_CHANGED;
/**
- * Emitted when nothing is visible and the process as a whole should go into
- * a background state.
- * @since 1.12
- */
-EAPI extern int ELM_EVENT_PROCESS_BACKGROUND;
-
-/**
- * Emitted when going from nothing being visible to at least one window
- * being visible.
- * @since 1.12
- */
-EAPI extern int ELM_EVENT_PROCESS_FOREGROUND;
-
-/**
* @typedef Elm_Event_Policy_Changed
*
- * Data on the event when an Elementary policy has changed
+ * @brief The structure type containing data on the event when an Elementary policy has changed.
*/
typedef struct _Elm_Event_Policy_Changed Elm_Event_Policy_Changed;
/**
* @struct _Elm_Event_Policy_Changed
*
- * Data on the event when an Elementary policy has changed
+ * @brief The structure type containing data on the event when an Elementary policy has changed.
*/
struct _Elm_Event_Policy_Changed
{
- unsigned int policy; /**< the policy identifier */
- int new_value; /**< value the policy had before the change */
- int old_value; /**< new value the policy got */
+ unsigned int policy; /**< The policy identifier */
+ int new_value; /**< The value that the policy had before the change */
+ int old_value; /**< The new value that the policy got */
};
/**
- * Policy identifiers.
+ * @brief Enumeration that defines the policy identifiers.
*/
typedef enum
{
- ELM_POLICY_QUIT, /**< under which circumstances the application
+ ELM_POLICY_QUIT, /**< Under which circumstances the application
* should quit automatically. @see
- * Elm_Policy_Quit.
+ * Elm_Policy_Quit
*/
- ELM_POLICY_EXIT, /**< defines elm_exit() behaviour. @see Elm_Policy_Exit.
+ ELM_POLICY_EXIT, /**< Defines the elm_exit() behaviour. @see Elm_Policy_Exit
* @since 1.8
*/
- ELM_POLICY_THROTTLE, /**< defines how throttling should work @see Elm_Policy_Throttle
+ ELM_POLICY_THROTTLE, /**< Defines how throttling should work @see Elm_Policy_Throttle
* @since 1.8
*/
ELM_POLICY_LAST
} Elm_Policy; /**< Elementary policy identifiers/groups enumeration. @see elm_policy_set() */
/**
- * Possible values for the #ELM_POLICY_QUIT policy
+ * @brief Enumeration that defines the possible values for the #ELM_POLICY_QUIT policy.
*/
typedef enum
{
- ELM_POLICY_QUIT_NONE = 0, /**< never quit the application
+ ELM_POLICY_QUIT_NONE = 0, /**< Never quit the application
* automatically */
- ELM_POLICY_QUIT_LAST_WINDOW_CLOSED /**< quit when the
+ ELM_POLICY_QUIT_LAST_WINDOW_CLOSED /**< Quit when the
* application's last
* window is closed */
} Elm_Policy_Quit;
/**
- * Possible values for the #ELM_POLICY_EXIT policy.
+ * @brief Enumeration that defines the possible values for the #ELM_POLICY_EXIT policy.
* @since 1.8
*/
typedef enum
{
- ELM_POLICY_EXIT_NONE = 0, /**< just quit the main loop on elm_exit() */
- ELM_POLICY_EXIT_WINDOWS_DEL /**< delete all the windows after quitting
+ ELM_POLICY_EXIT_NONE = 0, /**< Just quit the main loop on elm_exit() */
+ ELM_POLICY_EXIT_WINDOWS_DEL /**< Delete all the windows after quitting
* the main loop */
} Elm_Policy_Exit;
/**
- * Possible values for the #ELM_POLICY_THROTTLE policy.
+ * @brief Enumeration that defines the possible values for the #ELM_POLICY_THROTTLE policy.
* @since 1.8
*/
typedef enum
{
- ELM_POLICY_THROTTLE_CONFIG = 0, /**< do whatever elementary config is configured to do */
- ELM_POLICY_THROTTLE_HIDDEN_ALWAYS, /**< always throttle when all windows are no longer visible */
- ELM_POLICY_THROTTLE_NEVER /**< never throttle when windows are all hidden, regardless of config settings */
+ ELM_POLICY_THROTTLE_CONFIG = 0, /**< Do whatever elementary config is configured to do */
+ ELM_POLICY_THROTTLE_HIDDEN_ALWAYS, /**< Always throttle when all windows are no longer visible */
+ ELM_POLICY_THROTTLE_NEVER /**< Never throttle when windows are hidden, regardless of the config settings */
} Elm_Policy_Throttle;
/**
- * Possible values for the #ELM_OBJECT_SELECT_MODE policy.
- * @since 1.7
+ * @brief Enumeration of Elm Object Select mode
*/
typedef enum
{
- ELM_OBJECT_SELECT_MODE_DEFAULT = 0, /**< default select mode. Once an item is selected, it would stay highlighted and not going to call selected callback again even it was clicked. Items can get focus. */
- ELM_OBJECT_SELECT_MODE_ALWAYS, /**< always select mode. Item selected callbacks will be called every time for click events, even after the item was already selected. Items can get focus. */
- ELM_OBJECT_SELECT_MODE_NONE, /**< no select mode. Items will never be highlighted and selected but the size will be adjusted by the finger size configuration. Items can't get focus. */
- ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, /**< no select mode with no finger size rule. Items will never be highlighted and selected and ignore the finger size. So the item size can be reduced below than the finger size configuration. Items can't get focus. */
- ELM_OBJECT_SELECT_MODE_MAX /**< canary value: any value greater or equal to ELM_OBJECT_SELECT_MODE_MAX is forbidden. */
+ ELM_OBJECT_SELECT_MODE_DEFAULT = 0, /**< Default select mode */
+ ELM_OBJECT_SELECT_MODE_ALWAYS, /**< Always select mode */
+ ELM_OBJECT_SELECT_MODE_NONE, /**< No select mode */
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, /**< No select mode with no finger size rule */
+ ELM_OBJECT_SELECT_MODE_MAX
} Elm_Object_Select_Mode;
/**
- * Possible values for the #ELM_OBJECT_MULTI_SELECT_MODE policy.
- * @since 1.8
+ * @typedef Elm_Object_Item
+ * @brief An Elementary Object item handle.
*/
-typedef enum
-{
- ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT = 0, /**< default multiple select mode */
- ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL, /**< disallow mutiple selection when clicked without control key pressed */
- ELM_OBJECT_MULTI_SELECT_MODE_MAX /**< canary value: any value greater or equal to ELM_OBJECT_MULTI_SELECT_MODE_MAX is forbidden. */
-} Elm_Object_Multi_Select_Mode;
+typedef struct _Elm_Object_Item Elm_Object_Item;
-typedef Eina_Bool (*Elm_Event_Cb)(void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); /**< Function prototype definition for callbacks on input events happening on Elementary widgets. @a data will receive the user data pointer passed to elm_object_event_callback_add(). @a src will be a pointer to the widget on which the input event took place. @a type will get the type of this event and @a event_info, the struct with details on this event. */
-
-extern EAPI double _elm_startup_time;
+typedef Eina_Bool (*Elm_Event_Cb)(void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); /**< Function prototype definition for callbacks on input events happening on Elementary widgets. @a data receives the user data pointer passed to elm_object_event_callback_add(). @a src is a pointer to the widget on which the input event took place. @a type gets the type of this event and @a event_info, the struct with details on this event */
#ifndef ELM_LIB_QUICKLAUNCH
-#define ELM_MAIN() int main(int argc, char **argv) { int ret; _elm_startup_time = ecore_time_unix_get(); elm_init(argc, argv); ret = elm_main(argc, argv); elm_shutdown(); return ret; } /**< macro to be used after the elm_main() function */
+#define ELM_MAIN() int main(int argc, char **argv) {elm_init(argc, argv); return elm_main(argc, argv); } /**< Macro to be used after the elm_main() function */
#else
-/** @deprecated macro to be used after the elm_main() function.
- * Do not define ELM_LIB_QUICKLAUNCH
- * Compile your programs with -fpie and -pie -rdynamic instead, to generate a single binary (linkable executable).
- */
-#define ELM_MAIN() int main(int argc, char **argv) { int ret; _elm_startup_time = ecore_time_unix_get(); ret = elm_quicklaunch_fallback(argc, argv); elm_shutdown(); return ret; }
+#define ELM_MAIN() int main(int argc, char **argv) {return elm_quicklaunch_fallback(argc, argv); } /**< Macro to be used after the elm_main() function */
#endif
/**************************************************************************/
/* General calls */
/**
- * Initialize Elementary
- *
- * @param[in] argc System's argument count value
- * @param[in] argv System's pointer to array of argument strings
- * @return The init counter value.
+ * @brief Initializes Elementary.
*
- * This function initializes Elementary and increments a counter of
- * the number of calls to it. It returns the new counter's value.
+ * @details This function initializes Elementary and increments a counter of
+ * the number of calls to it. It returns the new counter's value.
*
- * @warning This call is exported only for use by the @c ELM_MAIN()
- * macro. There is no need to use this if you use this macro (which
- * is highly advisable). An elm_main() should contain the entry
- * point code for your application, having the same prototype as
- * elm_init(), and @b not being static (putting the @c EAPI_MAIN symbol
- * in front of its type declaration is advisable). The @c
- * ELM_MAIN() call should be placed just after it.
+ * @since_tizen 2.3
*
- * Example:
- * @dontinclude bg_example_01.c
- * @skip static void
- * @until ELM_MAIN
+ * @remarks This call is exported only for use by the ELM_MAIN()
+ * macro. There is no need to use this if you use this macro (which
+ * is highly advisable). An elm_main() should contain the entry
+ * point code for your application, having the same prototype as
+ * elm_init(), and @b not being static (putting the @c EAPI_MAIN symbol
+ * in front of its type declaration is advisable). The
+ * ELM_MAIN() call should be placed just after it.
*
- * See the full @ref bg_example_01_c "example".
+ * @param[in] argc The system's argument count value
+ * @param[in] argv The system's pointer to the array of argument strings
+ * @return The init counter value
*
- * @see elm_shutdown().
- * @ingroup General
+ * @see elm_shutdown()
*/
EAPI int elm_init(int argc, char **argv);
/**
- * Shut down Elementary
+ * @brief Shuts down Elementary.
*
- * @return The init counter value.
+ * @since_tizen 2.3
*
- * This should be called at the end of your application, just
- * before it ceases to do any more processing. This will clean up
- * any permanent resources your application may have allocated via
- * Elementary that would otherwise persist.
+ * @remarks This should be called at the end of your application, just
+ * before it ceases to do any more processing. This cleans up
+ * any permanent resources that your application may have allocated via
+ * Elementary that would otherwise persist.
*
- * @see elm_init() for an example
+ * @remarks elm_shutdown() iterates the main loop until all ecore_evas are freed.
+ * There is a possibility to call your ecore callbacks(timer, animator, event,
+ * job, and etc.) in elm_shutdown().
*
- * @note elm_shutdown() will iterate main loop until all ecore_evas are freed.
- * There is a possibility to call your ecore callbacks(timer, animator, event,
- * job, and etc.) in elm_shutdown()
+ * @return The init counter value
*
- * @ingroup General
+ * @see elm_init()
*/
EAPI int elm_shutdown(void);
/**
- * Run Elementary's main loop
+ * @brief Runs Elementary's main loop.
*
- * This call should be issued just after all initialization is
- * completed. This function will not return until elm_exit() is
- * called. It will keep looping, running the main
- * (event/processing) loop for Elementary.
+ * @since_tizen 2.3
*
- * @see elm_init() for an example
+ * @remarks This call should be issued just after all initialization is
+ * completed. This function returns until elm_exit() is
+ * called. It keeps looping, running the main
+ * (event/processing) loop for Elementary.
*
- * @ingroup General
+ * @see elm_init()
*/
EAPI void elm_run(void);
/**
- * Ask to exit Elementary's main loop
+ * @brief Asks to exit Elementary's main loop.
*
- * If this call is issued, it will flag the main loop to cease
- * processing and return back to its parent function (usually your
- * elm_main() function). This does not mean the main loop instantly quits.
- * So your ecore callbacks(timer, animator, event, job, and etc.) have chances
- * to be called even after elm_exit().
+ * @since_tizen 2.3
*
- * @see elm_init() for an example. There, just after a request to
- * close the window comes, the main loop will be left.
+ * @remarks If this call is issued, it flags the main loop to cease
+ * processing and returns back to its parent function (usually your
+ * elm_main() function). This does not mean that the main loop instantly quits.
+ * So your ecore callbacks(timer, animator, event, job, and etc.) have chances
+ * to be called even after elm_exit().
*
- * @note By using the appropriate #ELM_POLICY_QUIT on your Elementary
- * applications, you'll be able to get this function called automatically for you.
+ * @remarks Just after a request to
+ * close the window comes, the main loop is left.
*
- * @ingroup General
+ * @remarks By using the appropriate #ELM_POLICY_QUIT on your Elementary
+ * applications, you are able to get this function called automatically for you.
+ *
+ * @see elm_init()
*/
EAPI void elm_exit(void);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @param[in] ql_on The quicklaunch mode to be set.
+ *
+ * @since_tizen 2.3
*/
EAPI void elm_quicklaunch_mode_set(Eina_Bool ql_on);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @return #EINA_TRUE if mode is on, otherwise #EINA_FALSE.
+ *
+ * @since_tizen 2.3
*/
EAPI Eina_Bool elm_quicklaunch_mode_get(void);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @param[in] argc The system's argument count value
+ * @param[in] argv The system's pointer to the array of argument strings
+ * @return The init counter value
+ *
+ * @since_tizen 2.3
*/
EAPI int elm_quicklaunch_init(int argc, char **argv);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @param[in] argc The system's argument count value
+ * @param[in] argv The system's pointer to the array of argument strings
+ * @return The init counter value
+ *
+ * @since_tizen 2.3
*/
EAPI int elm_quicklaunch_sub_init(int argc, char **argv);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @return The init counter value
+ *
+ * @since_tizen 2.3
*/
EAPI int elm_quicklaunch_sub_shutdown(void);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @return The init counter value
+ *
+ * @since_tizen 2.3
*/
EAPI int elm_quicklaunch_shutdown(void);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @since_tizen 2.3
*/
EAPI void elm_quicklaunch_seed(void);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @param[in] argc The system's argument count value
+ * @param[in] argv The system's pointer to the array of argument strings
+ * @return #EINA_TRUE if succeed, otherwise #EINA_FALSE.
+ *
+ * @since_tizen 2.3
*/
-EAPI Eina_Bool elm_quicklaunch_prepare(int argc, char **argv, const char *cwd);
+EAPI Eina_Bool elm_quicklaunch_prepare(int argc, char **argv);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @param[in] argc The system's argument count value
+ * @param[in] argv The system's pointer to the array of argument strings
+ * @param[in] cwd The current working directory
+ * @param[in] postfork_func The function will be called after fork
+ * @param[in] postfork_data The used data for postfork_func
+ * @return #EINA_TRUE if succeed, otherwise #EINA_FALSE
+ *
+ * @since_tizen 2.3
*/
EAPI Eina_Bool elm_quicklaunch_fork(int argc, char **argv, char *cwd, void (*postfork_func) (void *data), void *postfork_data);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @since_tizen 2.3
*/
EAPI void elm_quicklaunch_cleanup(void);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @param[in] argc The system's argument count value
+ * @param[in] argv The system's pointer to the array of argument strings
+ * @return The return value from main function
+ *
+ * @since_tizen 2.3
*/
EAPI int elm_quicklaunch_fallback(int argc, char **argv);
/**
- * Exposed symbol used only by macros and should not be used by apps
+ * @brief Exposed symbol used only by macros and should not be used by apps.
+ *
+ * @param[in] exe The executable path
+ * @return The exectuable path
+ *
+ * @since_tizen 2.3
*/
-EAPI char *elm_quicklaunch_exe_path_get(const char *exe, const char *cwd);
+EAPI char *elm_quicklaunch_exe_path_get(const char *exe);
/**
- * Set a new policy's value (for a given policy group/identifier).
+ * @brief Sets a new policy's value (for a given policy group/identifier).
*
- * @param policy policy identifier, as in @ref Elm_Policy.
- * @param value policy value, which depends on the identifier
+ * @since_tizen 2.3
*
- * @return @c EINA_TRUE on success or @c EINA_FALSE, on error.
+ * @remarks Elementary policies define an applications' behavior,
+ * somehow. These behaviors are divided into policy groups
+ * (see #Elm_Policy enumeration). This call emits the Ecore
+ * event #ELM_EVENT_POLICY_CHANGED, which can be hooked with
+ * handlers. An #Elm_Event_Policy_Changed struct is passed,
+ * after that.
*
- * Elementary policies define applications' behavior,
- * somehow. These behaviors are divided in policy groups
- * (see #Elm_Policy enumeration). This call will emit the Ecore
- * event #ELM_EVENT_POLICY_CHANGED, which can be hooked at with
- * handlers. An #Elm_Event_Policy_Changed struct will be passed,
- * then.
+ * @remarks Currently, we have only one policy identifier/group
+ * (#ELM_POLICY_QUIT), which has two possible values.
*
- * @note Currently, we have only one policy identifier/group
- * (#ELM_POLICY_QUIT), which has two possible values.
+ * @param[in] policy The policy identifier, as in @ref Elm_Policy
+ * @param[in] value The policy value, which depends on the identifier
*
- * @ingroup General
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on error
*/
EAPI Eina_Bool elm_policy_set(unsigned int policy, int value);
/**
- * Get the policy value for given policy identifier.
+ * @brief Gets the policy value for the given policy identifier.
*
- * @param policy policy identifier, as in #Elm_Policy.
- * @return The currently set policy value, for that
- * identifier. Will be @c 0 if @p policy passed is invalid.
+ * @since_tizen 2.3
*
- * @ingroup General
+ * @param[in] policy The policy identifier, as in #Elm_Policy
+ * @return The currently set policy value for that identifier \n
+ * It is @c 0 if the @a policy passed is invalid.
*/
EAPI int elm_policy_get(unsigned int policy);
/**
- * Change the language of the current application
+ * @brief Changes the language of the current application.
*
- * The @p lang passed must be the full name of the locale to use, for
- * example "en_US.utf8" or "es_ES@euro".
+ * @since_tizen 2.3
*
- * Changing language with this function will make Elementary run through
- * all its widgets, translating strings set with
- * elm_object_domain_translatable_part_text_set(). This way, an entire
- * UI can have its language changed without having to restart the program.
+ * @remarks The @a lang passed must be the full name of the locale to use, for
+ * example "en_US.utf8" or "es_ES@euro".
*
- * For more complex cases, like having formatted strings that need
- * translation, widgets will also emit a "language,changed" signal that
- * the user can listen to and manually translate the text.
+ * @remarks Changing the language with this function makes Elementary run through
+ * all its widgets, translating strings set with
+ * elm_object_domain_translatable_text_part_set(). This way, an entire
+ * UI can have its language changed without having to restart the program.
*
- * @param lang Language to set, must be the full name of the locale
+ * @remarks For more complex cases, like having formatted strings that need
+ * translation, widgets also emit a @c "language,changed" signal that
+ * the user can listen to, in order to manually translate the text.
*
- * @ingroup General
+ * @param[in] lang The language to set, must be the full name of the locale
*/
EAPI void elm_language_set(const char *lang);
-typedef enum _Elm_Process_State
-{
- ELM_PROCESS_STATE_FOREGROUND, /*< The process is in a foreground/active/running state - work as normal. @since 1.12 */
- ELM_PROCESS_STATE_BACKGROUND /*< The process is in the bacgkround, so you may want to stop animating, fetching data as often etc. @since 1.12 */
-} Elm_Process_State; /** The state of the process as a whole. @since 1.12 */
-
-/**
- * Get the process state as a while
- *
- * @return The current process state
- *
- * The process may logically be some runnable state. a "foreground" application
- * runs as normal and may be user-visible or "active" in some way. A
- * background application is not user-visible or otherwise important and
- * likely should release resources and not wake up often or process much.
- *
- * @ingroup General
- * @since 1.12
- */
-EAPI Elm_Process_State elm_process_state_get(void);
-
/**
* @}
*/
diff --git a/src/lib/elm_gengrid.h b/src/lib/elm_gengrid.h
index 2184ac395..367d3e128 100644
--- a/src/lib/elm_gengrid.h
+++ b/src/lib/elm_gengrid.h
@@ -1,68 +1,69 @@
/**
* @defgroup Gengrid Gengrid (Generic grid)
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @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
- * class for each item, specifying functions that will be called at
+ * @brief This widget aims to position objects in a grid layout while
+ * actually creating and rendering only the visible ones.
+ *
+ * Gengrid using the same idea as the @ref Genlist "genlist": the user defines
+ * a @b class for each item, specifying functions that are called at
* object creation, deletion, etc. When those items are selected by
* the user, a callback function is issued. Users may interact with
- * a gengrid via the mouse (by clicking on items to select them and
+ * the gengrid via a mouse (by clicking on items to select them and
* clicking on the grid's viewport and swiping to pan the whole
- * view) or via the keyboard, navigating through item with the
+ * view) or via the keyboard, navigating through items using the
* arrow keys.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for gengrid objects.
*
- * This widget implements the @b @ref elm-scrollable-interface
+ * This widget implements the 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
+ * the ones mentioned for each case of deprecation here,
+ * Eventually the deprecated ones are discarded (next
* major release).
*
* @section Gengrid_Layouts Gengrid layouts
*
- * Gengrid may layout its items in one of two possible layouts:
- * - horizontal or
- * - vertical.
+ * Gengrid may layout its items in one of the following two possible layouts:
+ * - horizontal
+ * - vertical
*
- * When in "horizontal mode", items will be placed in @b columns,
- * from top to bottom and, when the space for a column is filled,
+ * When in the "horizontal mode", items are placed in @b columns
+ * from top to bottom and when the space for a column is filled,
* another one is started on the right, thus expanding the grid
- * horizontally, making for horizontal scrolling. When in "vertical
- * mode" , though, items will be placed in @b rows, from left to
- * right and, when the space for a row is filled, another one is
- * started below, thus expanding the grid vertically (and making
- * for vertical scrolling).
+ * horizontally and allowing horizontal scrolling. When in the "vertical
+ * mode", though items are placed in @b rows from left to
+ * right, and when the space for a row is filled, another one is
+ * started below, thus expanding the grid vertically (and allowing
+ * vertical scrolling).
*
* @section Gengrid_Items Gengrid items
*
- * An item in a gengrid can have 0 or more texts (they can be
+ * An item in a gengrid can have @c 0 or more texts (they can be
* regular text or textblock Evas objects - that's up to the style
- * to determine), 0 or more contents (which are simply objects
- * swallowed into the gengrid item's theming Edje object) and 0 or
- * more <b>boolean states</b>, which have the behavior left to the
+ * to determine), @c 0 or more contents (which are simply objects
+ * swallowed into the gengrid item's theming Edje object) and @c 0 or
+ * more <b>boolean states</b>, which have their behavior left to the
* user to define. The Edje part names for each of these properties
- * will be looked up, in the theme file for the gengrid, under the
- * Edje (string) data items named @c "texts", @c "contents" and @c
- * "states", respectively. For each of those properties, if more
- * than one part is provided, they must have names listed separated
- * by spaces in the data fields. For the default gengrid item
+ * are looked up in the theme file for the gengrid, under the
+ * Edje (string) data items named @c "texts", @c "contents", and @c
+ * "states", respectively. For each of these properties, if more
+ * than one part is provided, they must have names listed and separated
+ * by spaces in the data fields. By default, in a gengrid item
* theme, we have @b one text part (@c "elm.text"), @b two content
- * parts (@c "elm.swalllow.icon" and @c "elm.swallow.end") and @b
+ * parts (@c "elm.swalllow.icon" and @c "elm.swallow.end"), and @b
* no state parts.
*
- * A gengrid item may be at one of several styles. Elementary
- * provides one by default - "default", but this can be extended by
+ * A gengrid item may have one of the several styles. Elementary
+ * provides one by default - "default", but this can be extended by the
* system or application custom themes/overlays/extensions (see
* @ref Theme "themes" for more details).
*
@@ -71,120 +72,124 @@
* In order to have the ability to add and delete items on the fly,
* gengrid implements a class (callback) system where the
* application provides a structure with information about that
- * type of item (gengrid may contain multiple different items with
- * different classes, states and styles). Gengrid will call the
+ * type of item (gengrid may contain multiple items of different types with
+ * different classes, states, and styles). Gengrid calls the
* functions in this struct (methods) when an item is "realized"
* (i.e., created dynamically, while the user is scrolling the
- * grid). All objects will simply be deleted when no longer needed
+ * grid). All objects are simply deleted when no longer needed
* with evas_object_del(). The #Elm_Gengrid_Item_Class structure
* contains the following members:
* - @c item_style - This is a constant string and simply defines
* the name of the item style. It @b must be specified and the
* default should be @c "default".
* - @c func.text_get - This function is called when an item
- * object is actually created. The @c data parameter will point to
- * the same data passed to elm_gengrid_item_append() and related
- * item creation functions. The @c obj parameter is the gengrid
+ * object is actually created. The @a data parameter points to
+ * the same data passed to elm_gengrid_item_append() and other related
+ * item creation functions. The @a obj parameter is the gengrid
* object itself, while the @c part one is the name string of one
* of the existing text parts in the Edje group implementing the
* item's theme. This function @b must return a strdup'()ed string,
- * as the caller will free() it when done.
+ * as the caller uses free() to free it when done.
* See #Elm_Gengrid_Item_Text_Get_Cb.
* - @c func.content_get - This function is called when an item object
- * is actually created. The @c data parameter will point to the
- * same data passed to elm_gengrid_item_append() and related item
- * creation functions. The @c obj parameter is the gengrid object
+ * is actually created. The @a data parameter points to the
+ * same data passed to elm_gengrid_item_append() and other related item
+ * creation functions. The @a obj parameter is the gengrid object
* itself, while the @c part one is the name string of one of the
* existing (content) swallow parts in the Edje group implementing the
- * item's theme. It must return @c NULL, when no content is desired,
- * or a valid object handle, otherwise. The object will be deleted
+ * item's theme. It must return @c NULL when no content is desired,
+ * otherwise, a valid object handle. The object is deleted
* by the gengrid on its deletion or when the item is "unrealized".
* See #Elm_Gengrid_Item_Content_Get_Cb.
* - @c func.state_get - This function is called when an item
- * object is actually created. The @c data parameter will point to
- * the same data passed to elm_gengrid_item_append() and related
- * item creation functions. The @c obj parameter is the gengrid
+ * object is actually created. The @a data parameter points to
+ * the same data passed to elm_gengrid_item_append() and other related
+ * item creation functions. The @a obj parameter is the gengrid
* object itself, while the @c part one is the name string of one
* of the state parts in the Edje group implementing the item's
* theme. Return @c EINA_FALSE for false/off or @c EINA_TRUE for
- * true/on. Gengrids will emit a signal to its theming Edje object
+ * true/on. Gengrids emit a signal to its theming Edje object
* with @c "elm,state,xxx,active" and @c "elm" as "emission" and
- * "source" arguments, respectively, when the state is true (the
+ * "source" arguments respectively, when the state is @c true (the
* default is false), where @c xxx is the name of the (state) part.
* See #Elm_Gengrid_Item_State_Get_Cb.
* - @c func.del - This is called when elm_object_item_del() is
* called on an item or elm_gengrid_clear() is called on the
* gengrid. This is intended for use when gengrid items are
- * deleted, so any data attached to the item (e.g. its data
+ * deleted, so any data attached to the item (e.g. its @a data
* parameter on creation) can be deleted. See #Elm_Gengrid_Item_Del_Cb.
*
* @section Gengrid_Usage_Hints Usage hints
*
* If the user wants to have multiple items selected at the same
- * time, elm_gengrid_multi_select_set() will permit it. If the
+ * time, elm_gengrid_multi_select_set() permits it. If the
* gengrid is single-selection only (the default), then
- * elm_gengrid_select_item_get() will return the selected item or
- * @c NULL, if none is selected. If the gengrid is under
- * multi-selection, then elm_gengrid_selected_items_get() will
- * return a list (that is only valid as long as no items are
- * modified (added, deleted, selected or unselected) of child items
+ * elm_gengrid_select_item_get() returns the selected item, otherwise
+ * it returns @c NULL, if no item is selected. If the gengrid is under
+ * multi-selection, then elm_gengrid_selected_items_get()
+ * returns a list (that is only valid as long as no items are
+ * modified (added, deleted, selected, or unselected) from the child items
* on a gengrid.
*
- * If an item changes (internal (boolean) state, text or content
+ * If an item changes (internal (boolean) state, text, or content
* changes), then use elm_gengrid_item_update() to have gengrid
- * update the item with the new state. A gengrid will re-"realize"
+ * update the item with the new state. A gengrid re-realizes
* the item, thus calling the functions in the #Elm_Gengrid_Item_Class
* set for that item.
*
* To programmatically (un)select an item, use
* elm_gengrid_item_selected_set(). To get its selected state use
- * elm_gengrid_item_selected_get(). To make an item disabled
+ * elm_gengrid_item_selected_get(). To disable an item
* (unable to be selected and appear differently) use
* elm_object_item_disabled_set() to set this and
* elm_object_item_disabled_get() to get the disabled state.
*
- * Grid cells will only have their selection smart callbacks called
- * when firstly getting selected. Any further clicks will do
+ * Grid cells only have their selection smart callbacks called
+ * when getting selected for the first time. Any further clicks do
* nothing, unless you enable the "always select mode", with
- * elm_gengrid_select_mode_set() as ELM_OBJECT_SELECT_MODE_ALWAYS,
+ * elm_gengrid_select_mode_set() as @c ELM_OBJECT_SELECT_MODE_ALWAYS,
* thus making every click to issue selection callbacks.
- * elm_gengrid_select_mode_set() as ELM_OBJECT_SELECT_MODE_NONE will
- * turn off the ability to select items entirely in the widget and
- * they will neither appear selected nor call the selection smart
+ * elm_gengrid_select_mode_set() as @c ELM_OBJECT_SELECT_MODE_NONE
+ * turns off the ability to select items entirely in the widget and
+ * they neither appear selected nor call the selection smart
* callbacks.
*
* Remember that you can create new styles and add your own theme
- * augmentation per application with elm_theme_extension_add(). If
+ * augmentation for each application using elm_theme_extension_add(). If
* you absolutely must have a specific style that overrides any
- * theme the user or system sets up you can use
+ * theme the user or system sets up, you can use
* elm_theme_overlay_add() to add such a file.
*
* @section Gengrid_Smart_Events Gengrid smart events
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* - @c "activated" - The user has double-clicked or pressed
- * (enter|return|spacebar) on an item. The @p event_info parameter
- * is the gengrid item that was activated.
- * - @c "pressed" - The user pressed the an item. The @p event_info
- * parameter is the item that was pressed.
- * - @c "released" - The user released the an item. The @p event_info
- * parameter is the item that was released.
+ * (enter|return|spacebar) on an item. The @a event_info parameter
+ * is the gengrid item that is activated.
+ * - @c "pressed" - The user pressed an item. The @a event_info
+ * parameter is the item that is pressed.
+ * - @c "released" - The user released an item. The @a event_info
+ * parameter is the item that is released.
* - @c "clicked,double" - The user has double-clicked an item.
- * The @p event_info parameter is the gengrid item that was double-clicked.
+ * The @a event_info parameter is the gengrid item that is double-clicked.
* - @c "longpressed" - This is called when the item is pressed for a certain
- * amount of time. By default it's 1 second.
- * - @c "selected" - The user has made an item selected. The
- * @p event_info parameter is the gengrid item that was selected.
- * - @c "unselected" - The user has made an item unselected. The
- * @p event_info parameter is the gengrid item that was unselected.
+ * amount of time. By default it's @c 1 second.
+ * - @c "selected" - The user has selected an item. The
+ * @a event_info parameter is the gengrid item that is selected.
+ * - @c "unselected" - The user has unselected an item. The
+ * @a event_info parameter is the gengrid item that is unselected.
* - @c "realized" - This is called when the item in the gengrid
- * has its implementing Evas object instantiated, de facto. @c
- * event_info is the gengrid item that was created.
+ * has its implementing Evas object instantiated, de facto. @a
+ * event_info is the gengrid item that is created. The object
+ * may be deleted at any time, so it is highly advised to the
+ * caller @b not to use the object pointer returned from
+ * elm_gengrid_item_object_get(), because it may point to freed
+ * objects.
* - @c "unrealized" - This is called when the implementing Evas
- * object for this item is deleted. @p event_info is the gengrid
- * item that was deleted.
- * - @c "changed" - Called when an item is added, removed, resized
+ * object for this item is deleted. @a event_info is the gengrid
+ * item that is deleted.
+ * - @c "changed" - Called when an item is added, removed, resized,
* or moved and when the gengrid is resized or gets "horizontal"
* property changes.
* - @c "scroll,anim,start" - This is called when scrolling animation has
@@ -203,83 +208,1579 @@
* stopped being dragged.
* - @c "drag" - Called when the item in the gengrid is being
* dragged.
- * - @c "scroll" - called when the content has been scrolled
+ * - @c "scroll" - Called when the content has been scrolled
* (moved).
- * - @c "scroll,drag,start" - called when dragging the content has
+ * - @c "scroll,drag,start" - Called when dragging the content has
* started.
- * - @c "scroll,drag,stop" - called when dragging the content has
+ * - @c "scroll,drag,stop" - Called when dragging the content has
* stopped.
- * - @c "scroll,page,changed" - called when the visible page has
- * changed.
- * - @c "edge,top" - This is called when the gengrid is scrolled until
+ * - @c "edge,top" - Called when the gengrid is scrolled till
* the top edge.
- * - @c "edge,bottom" - This is called when the gengrid is scrolled
+ * - @c "edge,bottom" - Called when the gengrid is scrolled
* until the bottom edge.
- * - @c "edge,left" - This is called when the gengrid is scrolled
- * until the left edge.
- * - @c "edge,right" - This is called when the gengrid is scrolled
- * until the right edge.
- * - @c "moved" - This is called when a gengrid item is moved by a user
- * interaction in a reorder mode. The @p event_info parameter is the item that
- * was moved.
- * - @c "index,update" - This is called when a gengrid item index is changed.
- * Note that this callback is called while each item is being realized.
- * - @c "highlighted" - an item in the list is highlighted. This is called when
- * the user presses an item or keyboard selection is done so the item is
- * physically highlighted. The @p event_info parameter is the item that was
- * highlighted.
- * - @c "unhighlighted" - an item in the list is unhighlighted. This is called
- * when the user releases an item or keyboard selection is moved so the item
- * is physically unhighlighted. The @p event_info parameter is the item that
- * was unhighlighted.
- * - @c "language,changed" - This is called when the program's language is
- * changed. Call the elm_gengrid_realized_items_update() if items text should
+ * - @c "edge,left" - Called when the gengrid is scrolled
+ * till the left edge.
+ * - @c "edge,right" - Called when the gengrid is scrolled
+ * till the right edge.
+ * - @c "highlighted" - Called when an item in the list is pressed and highlighted.
+ * The @a event_info parameter is the item that is highlighted.
+ * - @c "unhighlighted" - an item in the list is unpressed and unhighlighted.
+ * The @a event_info parameter is the item that is unhighlighted.
+ * - @c "language,changed" - Called when the program's language is
+ * changed. Call elm_gengrid_realized_items_update() if items text needs to
* be translated.
- * - @c "focused" - When the gengrid has received focus. (since 1.8)
- * - @c "unfocused" - When the gengrid has lost focus. (since 1.8)
- * - @c "item,focused" - When the gengrid item has received focus. (since 1.10)
- * - @c "item,unfocused" - When the gengrid item has lost focus. (since 1.10)
- * - @c "item,reorder,anim,start" - This is called when a gengrid item movement
- has just started by keys in reorder mode. The @p event_info parameter
- * is the item that is going to move. (since 1.10)
- * - @c "item,reorder,anim,stop" - This is called when a gengrid item movement just
- stopped in reorder mode. The @p event_info parameter is the item
- that was moved. (since 1.10)
- *
- * Supported elm_object common APIs
+ *
+ * Supported common elm_object APIs.
* @li elm_object_signal_emit()
*
- * Supported elm_object_item common APIs
- * @li elm_object_item_part_content_get
- * @li elm_object_item_part_text_get
- * @li elm_object_item_disabled_set
- * @li elm_object_item_disabled_get
- * @li elm_object_item_del
- * @li elm_object_item_signal_emit
- *
- * Unsupported elm_object_item common APIs due to the gengrid concept.
- * Gengrid fills content/text according to the appropriate callback functions.
- * Please use elm_gengrid_item_update() instead.
+ * Supported common elm_object_item APIs.
+ * @li elm_object_item_part_content_get()
* @li elm_object_item_part_content_set()
* @li elm_object_item_part_content_unset()
* @li elm_object_item_part_text_set()
+ * @li elm_object_item_part_text_get()
+ * @li elm_object_item_disabled_set()
+ * @li elm_object_item_disabled_get()
*
- * List of gengrid examples:
- * @li @ref gengrid_example
+ * @{
*/
+#define ELM_GENGRID_ITEM_CLASS_VERSION ELM_GEN_ITEM_CLASS_VERSION
+#define ELM_GENGRID_ITEM_CLASS_HEADER ELM_GEN_ITEM_CLASS_HEADER
+
/**
- * @addtogroup Gengrid
- * @{
+ * @brief Enumeration that defines the type of item part.
+ * @remarks It is used while updating item parts
+ * @remarks It can be used at updating multi fields.
+ */
+typedef enum
+{
+ ELM_GENGRID_ITEM_FIELD_ALL = 0, /**< The item contains all fields */
+ ELM_GENGRID_ITEM_FIELD_TEXT = (1 << 0), /**< The item contains a text field */
+ ELM_GENGRID_ITEM_FIELD_CONTENT = (1 << 1), /**< The item contains a content field */
+ ELM_GENGRID_ITEM_FIELD_STATE = (1 << 2) /**< The item contains a state field */
+} Elm_Gengrid_Item_Field_Type;
+
+/**
+ * @brief Enumeration that defines where to position the item in the gengrid.
+ */
+typedef enum
+{
+ ELM_GENGRID_ITEM_SCROLLTO_NONE = 0, /**< Scrolls to nowhere */
+ ELM_GENGRID_ITEM_SCROLLTO_IN = (1 << 0), /**< Scrolls to the nearest viewport */
+ ELM_GENGRID_ITEM_SCROLLTO_TOP = (1 << 1), /**< Scrolls to the top of the viewport */
+ ELM_GENGRID_ITEM_SCROLLTO_MIDDLE = (1 << 2) /**< Scrolls to the middle of the viewport */
+} Elm_Gengrid_Item_Scrollto_Type;
+
+
+/**
+ * @see Elm_Gen_Item_Class
+ */
+typedef Elm_Gen_Item_Class Elm_Gengrid_Item_Class;
+
+/**
+ * @see Elm_Gen_Item_Text_Get_Cb
+ */
+typedef Elm_Gen_Item_Text_Get_Cb Elm_Gengrid_Item_Text_Get_Cb;
+
+/**
+ * @see Elm_Gen_Item_Content_Get_Cb
+ */
+typedef Elm_Gen_Item_Content_Get_Cb Elm_Gengrid_Item_Content_Get_Cb;
+
+/**
+ * @see Elm_Gen_Item_State_Get_Cb
+ */
+typedef Elm_Gen_Item_State_Get_Cb Elm_Gengrid_Item_State_Get_Cb;
+
+/**
+ * @see Elm_Gen_Item_Del_Cb
+ */
+typedef Elm_Gen_Item_Del_Cb Elm_Gengrid_Item_Del_Cb;
+
+/**
+ * @brief Adds a new gengrid widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new gengrid widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new gengrid widget handle, otherwise @c NULL in case of an error
+
+ *
+ * @see elm_gengrid_item_size_set()
+ * @see elm_gengrid_group_item_size_set()
+ * @see elm_gengrid_horizontal_set()
+ * @see elm_gengrid_item_append()
+ * @see elm_object_item_del()
+ * @see elm_gengrid_clear()
+ */
+EAPI Evas_Object *elm_gengrid_add(Evas_Object *parent);
+
+/**
+ * @brief Removes all items from a given gengrid widget.
+ *
+ * @details This removes (and deletes) all items in @a obj, making it
+ * empty.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ *
+ * @see elm_object_item_del() to remove just one item.
+ */
+EAPI void elm_gengrid_clear(Evas_Object *obj);
+
+/**
+ * @brief Enables or disables multi-selection in a given gengrid widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Multi-selection is the ability to have @b more than one
+ * item selected, on a given gengrid, simultaneously. When it is
+ * enabled, a sequence of clicks on different items makes them
+ * all selected, progressively. A click on an already selected item
+ * unselects it. If interacting via the keyboard,
+ * multi-selection is enabled while holding the "Shift" key.
+ *
+ * @remarks By default, multi-selection is @b disabled on gengrids.
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] multi If @c EINA_TRUE multi-selection is enabled,
+ * otherwise @c EINA_FALSE to disable it
+ *
+ * @see elm_gengrid_multi_select_get()
+ */
+EAPI void elm_gengrid_multi_select_set(Evas_Object *obj, Eina_Bool multi);
+
+/**
+ * @brief Gets whether multi-selection is enabled or disabled for a given
+ * gengrid widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @return @c EINA_TRUE if multi-selection is enabled,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_gengrid_multi_select_set()
+ */
+EAPI Eina_Bool elm_gengrid_multi_select_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the direction in which a given gengrid widget expands while
+ * placing its items.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When in the @c "horizontal mode" (@c EINA_TRUE), items are placed
+ * in @b columns from top to bottom and when the space for a
+ * column is filled, another one is started on the right, thus
+ * expanding the grid horizontally. When in the @c "vertical mode"
+ * (@c EINA_FALSE), though items are placed in @b rows from left
+ * to right, and when the space for a row is filled, another one is
+ * started below, thus expanding the grid vertically.
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] horizontal If @c EINA_TRUE the gengrid expands horizontally,
+ * otherwise @c EINA_FALSE to expand vertically
+ *
+ * @see elm_gengrid_horizontal_get()
+ */
+EAPI void elm_gengrid_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Gets the direction for which a given gengrid widget expands while
+ * placing its items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @return @c EINA_TRUE if @a obj is set to expand horizontally,
+ * otherwise @c EINA_FALSE if it's set to expand vertically
+ *
+ * @see elm_gengrid_horizontal_set()
+ */
+EAPI Eina_Bool elm_gengrid_horizontal_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Enables or disables bouncing effect for a given gengrid widget.
+ *
+ * @remarks The bouncing effect occurs whenever one reaches the gengrid's
+ * edges while panning it.It scrolls past its limits a
+ * little bit and returns to the edge again, in an animated form,
+ * automatically.
+ *
+ * @remarks By default, gengrids have bouncing enabled on both axis.
+ *
+ * @param obj The gengrid object
+ * @param h_bounce If @c EINA_TRUE @b horizontal bouncing is enabled,
+ * otherwise @c EINA_FALSE to disable it
+ * @param v_bounce If @c EINA_TRUE @b vertical bouncing is enabled,
+ * otherwise @c EINA_FALSE to disable it
+ *
+ * @deprecated Use elm_scroller_bounce_set() instead.
+ *
+ * @see elm_scroller_bounce_set()
+ */
+EINA_DEPRECATED EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
+
+/**
+ * @internal
+ *
+ * @brief Gets whether bouncing effects are enabled or disabled for a
+ * given gengrid widget on each axis.
+ *
+ * @param obj The gengrid object
+ * @param h_bounce The pointer to a variable where the horizontal bouncing flag is stored
+ *
+ * @param v_bounce The pointer to a variable where the vertical bouncing flag is stored
+ *
+ *
+ * @deprecated Use elm_scroller_bounce_get() instead.
+ *
+ * @see elm_scroller_bounce_get()
+ */
+EINA_DEPRECATED EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
+
+/**
+ * @brief Appends a new item to a given gengrid widget.
+ *
+ * @details This adds an item to the beginning of the gengrid.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] gic The item class for the item
+ * @param[in] data The item data
+ * @param[in] func The convenience function that is called when the item is
+ * selected
+ * @param[in] func_data The data to be passed to @a func
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ *
+ * @see elm_gengrid_item_prepend()
+ * @see elm_gengrid_item_insert_before()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_append(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * @brief Prepends a new item to a given gengrid widget.
+ *
+ * @details This adds an item to the end of the gengrid.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] gic The item class for the item
+ * @param[in] data The item data
+ * @param[in] func The convenience function that is called when the item is
+ * selected
+ * @param[in] func_data The data to be passed to @a func
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_insert_before()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_prepend(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * @brief Inserts an item before another in a gengrid widget.
+ *
+ * @details This inserts an item before another in the gengrid.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] gic The item class for the item
+ * @param[in] data The item data
+ * @param[in] relative The item tbefore which to place this new one
+ * @param[in] func The convenience function that is called when the item is
+ * selected
+ * @param[in] func_data The data to be passed to @a func
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_prepend()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_insert_before(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Elm_Object_Item *relative, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * @brief Inserts an item after another in a gengrid widget.
+ *
+ * @details This inserts an item after another in the gengrid.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] gic The item class for the item
+ * @param[in] data The item data
+ * @param[in] relative The item after which to place this new one
+ * @param[in] func The convenience function that is called when the item is
+ * selected
+ * @param[in] func_data The data to be passed to @a func
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_prepend()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_insert_after(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Elm_Object_Item *relative, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * @brief Inserts an item in a gengrid widget using a user-defined sort function.
+ *
+ * @details This inserts an item in the gengrid based on a user defined comparison
+ * function. The two arguments passed to the function @a func are gengrid
+ * item handles to compare.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] gic The item class for the item
+ * @param[in] data The item data
+ * @param[in] comp The user defined comparison function that defines the sort order
+ * based on Elm_Gen_Item and its @a data parameter.
+ * @param[in] func The convenience function that is called when the item is selected
+ * @param[in] func_data The data to be passed to @a func
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_prepend()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_sorted_insert(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * @brief Gets the selected item in a given gengrid widget.
+ *
+ * @details This returns the selected item in @a obj. If multi selection is
+ * enabled on @a obj (@see elm_gengrid_multi_select_set()), only
+ * the first item in the list is selected, which might not be very
+ * useful. In that case, see elm_gengrid_selected_items_get().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @return The selected item's handle, otherwise @c NULL if none are
+ * selected at the moment (and on errors)
+ */
+EAPI Elm_Object_Item *elm_gengrid_selected_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets <b>a list</b> of selected items in a given gengrid.
+ *
+ * @details This returns a list of the selected items, in the order that
+ * they appear in the grid. This list is only valid as long as no
+ * more items are selected or unselected (or unselected implicitly
+ * by deletion). The list contains gengrid item pointers as
+ * data, naturally.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @return The list of selected items, otherwise @c NULL if none are
+ * selected at the moment (and on errors)
+ *
+ * @see elm_gengrid_selected_item_get()
+ */
+EAPI const Eina_List *elm_gengrid_selected_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets a list of realized items in the gengrid.
+ *
+ * @details This returns a list of realized items in the gengrid. The list
+ * contains gengrid item pointers. The list must be freed by the
+ * caller when done using eina_list_free(). The item pointers in the
+ * list are only valid as long as those items are not deleted or the
+ * gengrid is not deleted.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @return The list of realized items, otherwise @c NULL if none are realized
+ *
+ * @see elm_gengrid_realized_items_update()
+ */
+EAPI Eina_List *elm_gengrid_realized_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Updates the contents of all the realized items.
+ *
+ * @details This updates all realized items by calling all the item class functions again
+ * to get the content, text, and states. Use this when the original
+ * item data has changed and the changes are desired to reflect.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks To update just one item, use elm_gengrid_item_update().
+ *
+ * @param[in] obj The gengrid object
+ *
+ * @see elm_gengrid_realized_items_get()
+ * @see elm_gengrid_item_update()
+ */
+EAPI void elm_gengrid_realized_items_update(Evas_Object *obj);
+
+/**
+ * @brief Gets the first item in a given gengrid widget.
+ *
+ * @details This returns the first item in the @a obj internal list of
+ * items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @return The first item's handle, otherwise @c NULL if there are no
+ * items in @a obj (and on errors)
+ *
+ * @see elm_gengrid_last_item_get()
+ */
+EAPI Elm_Object_Item *elm_gengrid_first_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the last item in a given gengrid widget.
+ *
+ * @details This returns the last item in the @a obj internal list of
+ * items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @return The last item's handle, otherwise @c NULL if there are no
+ * items in @a obj (and on errors)
+ *
+ * @see elm_gengrid_first_item_get()
+ */
+EAPI Elm_Object_Item *elm_gengrid_last_item_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ * @brief Set the timeout in seconds for the longpress event.
+ *
+ * @details This option will change how long it takes to send an event
+ * "longpressed" after the mouse down signal is sent to the list.
+ * If this event occurs, no "clicked" event will be sent.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If you set the longpress timeout value with this API, your gengrid
+ * will not be affected by the longpress value of elementary config value
+ * later.
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] timeout timeout in seconds. Default is elm config value(1.0)
+ *
+ * @see elm_gengrid_longpress_timeout_set()
+ */
+EAPI void elm_gengrid_longpress_timeout_set(Evas_Object *obj, double timeout);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the timeout in seconds for the longpress event.
+ *
+ * @param obj The gengrid object
+ * @return The timeout in seconds
+ *
+ * @see elm_gengrid_longpress_timeout_get()
+ */
+EAPI double elm_gengrid_longpress_timeout_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Sets the scrollbar policy.
+ *
+ * @details This sets the scrollbar visibility policy for the given gengrid
+ * scroller. #ELM_SCROLLER_POLICY_AUTO means that the scrollbar is made
+ * visible if needed, and otherwise kept
+ * hidden. #ELM_SCROLLER_POLICY_ON turns it on at all times, and
+ * #ELM_SCROLLER_POLICY_OFF always keeps it off. This applies
+ * for the horizontal and vertical scrollbars respectively. The default value
+ * is #ELM_SCROLLER_POLICY_AUTO.
+ *
+ * @param obj The gengrid object
+ * @param policy_h The horizontal scrollbar policy
+ * @param policy_v The vertical scrollbar policy
+ *
+ * @deprecated Use elm_scroller_policy_set() instead.
+ *
+ * @see elm_scroller_policy_set()
+ *
+ * @see elm_gengrid_scroller_policy_get()
+ */
+EINA_DEPRECATED EAPI void elm_gengrid_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
+
+/**
+ * @internal
+ *
+ * @brief Gets the scrollbar policy.
+ *
+ * @param obj The gengrid object
+ * @param policy_h The pointer to store the horizontal scrollbar policy
+ * @param policy_v The 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()
+ */
+EINA_DEPRECATED EAPI void elm_gengrid_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
+
+/**
+ * @brief Gets the @b next item in a gengrid widget's internal list of items,
+ * given that a handle to one of those items is present.
+ *
+ * @details This returns the item placed after the @a it, on the container
+ * gengrid.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item to fetch next from
+ * @return The item after @a it, otherwise @c NULL if there are none (and
+ * on errors)
+ *
+ * @see elm_gengrid_item_prev_get()
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_next_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the @b previous item in a gengrid widget's internal list of items,
+ * given that a handle to one of those items is present.
+ *
+ * @details This returns the item placed before the @a it, on the container
+ * gengrid.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item to fetch previous from
+ * @return The item before @a it, otherwise @c NULL if there are none (and
+ * on errors)
+ *
+ * @see elm_gengrid_item_next_get()
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_prev_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets whether a given gengrid item is selected.
+ *
+ * @details This sets the selected state of an item. If multi-selection is
+ * not enabled on the containing gengrid and @a selected is @c
+ * EINA_TRUE, any other previously selected items get
+ * unselected in favor of this new one.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item
+ * @param[in] selected If @c EINA_TRUE it is selected,
+ * otherwise @c EINA_FALSE to unselect it
+ *
+ * @see elm_gengrid_item_selected_get()
+ */
+EAPI void elm_gengrid_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * @brief Gets whether a given gengrid item is selected.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This API returns @c EINA_TRUE for all the items selected in the multi-select mode as well.
+ *
+ * @param[in] it The gengrid item
+ * @return @c EINA_TRUE if it's selected, otherwise @c EINA_FALSE
+ *
+ * @see elm_gengrid_item_selected_set()
+ */
+EAPI Eina_Bool elm_gengrid_item_selected_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Shows the portion of a gengrid internal grid containing a given
+ * item @b immediately.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This causes gengrid to @b redraw its viewport's contents to the
+ * region containing the given @a it item, if it is not fully
+ * visible.
+ *
+ * @param[in] it The item to display
+ * @param[in] type The position of the item in the viewport
+ *
+ * @see elm_gengrid_item_bring_in()
+ */
+EAPI void elm_gengrid_item_show(Elm_Object_Item *it, Elm_Gengrid_Item_Scrollto_Type type);
+
+/**
+ * @brief Animatedly brings a given item to the visible area of a gengrid.
+ *
+ * @details This causes gengrid to jump to the given @a it and show
+ * it (by scrolling), if it is not fully visible. This uses
+ * animation to do so and takes a period of time to complete.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item to display
+ * @param[in] type The position of the item in the viewport
+ *
+ * @see elm_gengrid_item_show()
+ */
+EAPI void elm_gengrid_item_bring_in(Elm_Object_Item *it, Elm_Gengrid_Item_Scrollto_Type type);
+
+/**
+ * @brief Updates the content of a given gengrid item.
+ *
+ * @details This updates an item by calling all the item class functions
+ * again to get the content, text, and states. Use this when the
+ * original item data has changed and you want the changes to
+ * reflect.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item
+ */
+EAPI void elm_gengrid_item_update(Elm_Object_Item *it);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Updates the part of an item.
+ *
+ * @details This updates an item's part by calling the item's fetching functions again
+ * to get the content, text, and states. Use this when the original
+ * item data has changed and the changes are desired to reflect.
+ * Second part's argument is used for globbing to match '*', '?', and '.'
+ * It can be used for updating multi fields.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use elm_gengrid_realized_items_update() to update an item's all
+ * property.
+ *
+ * @param it The item
+ * @param parts The name of the item's part
+ * @param itf The type of the item's part
+ *
+ * @see elm_gengrid_item_update()
+ */
+EAPI void elm_gengrid_item_fields_update(Elm_Object_Item *it, const char *parts, Elm_Gengrid_Item_Field_Type itf);
+
+/**
+ * @brief Updates the item class of a gengrid item.
+ *
+ * @details This sets another class of the item, changing the way it is
+ * displayed. After changing the item class, elm_gengrid_item_update() is
+ * called on the item @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item
+ * @param[in] gic The gengrid item class describing the function pointers and the item style
+ */
+EAPI void elm_gengrid_item_item_class_update(Elm_Object_Item *it, const Elm_Gengrid_Item_Class *gic);
+
+/**
+ * @brief Gets the gengrid item class for the given gengrid item.
+ *
+ * @details This returns the Gengrid_Item_Class for the given item. It can be used to examine
+ * the function pointers and item style.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item
+ * @return The item class
+ */
+EAPI const Elm_Gengrid_Item_Class *elm_gengrid_item_item_class_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the index of the item. It is only valid once it is displayed.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item
+ * @return The position inside the list of items
+ */
+EAPI int elm_gengrid_item_index_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Returns the number of items that are currently in a list.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This behavior is O(1) and includes items which may or may not be realized.
+ *
+ * @param[in] obj The list
+ * @return The total number of list items in the list
+ */
+EAPI unsigned int elm_gengrid_items_count(const Evas_Object *obj);
+
+/**
+ * @brief Adds a new gengrid item class in a given gengrid widget.
+ *
+ * @details This adds the gengrid item class for the gengrid widget. When adding an item,
+ * the gengrid_item_{append, prepend, insert} function needs the item class of the item.
+ * Given callback parameters are used for retrieving {text, content} of an
+ * added item. Set as @c NULL if it's not used.
+ * If there's no available memory, it returns @c NULL.
+ *
+ * @since_tizen 2.3
+ *
+ * @return The newly allocated gengrid item class
+ *
+ * @see elm_gengrid_item_class_free()
+ * @see elm_gengrid_item_append()
+ */
+EAPI Elm_Gengrid_Item_Class *elm_gengrid_item_class_new(void);
+
+/**
+ * @brief Removes an item class in a given gengrid widget.
+ *
+ * @details This removes the item class from the gengrid widget.
+ * Whenever it has no more references to it, the item class is freed.
+ * Otherwise it just decreases its reference count.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] itc The itc to be removed
+ *
+ * @see elm_gengrid_item_class_new()
+ * @see elm_gengrid_item_class_ref()
+ * @see elm_gengrid_item_class_unref()
+ */
+EAPI void elm_gengrid_item_class_free(Elm_Gengrid_Item_Class *itc);
+
+/**
+ * @brief Increments the object reference count for the item class.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This API just increases its reference count for item class management.
+ *
+ * @param[in] itc The given item class object to reference
+ *
+ * @see elm_gengrid_item_class_unref()
*/
+EAPI void elm_gengrid_item_class_ref(Elm_Gengrid_Item_Class *itc);
-#include <elm_gengrid_common.h>
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_gengrid_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_gengrid_legacy.h>
-#endif
+/**
+ * @brief Decrements the object reference count for the item class.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This API just decreases its reference count for item class management.
+ * the reference count can't be less than @c 0.
+ *
+ * @param[in] itc The given item class object to reference
+ *
+ * @see elm_gengrid_item_class_ref()
+ * @see elm_gengrid_item_class_free()
+ */
+EAPI void elm_gengrid_item_class_unref(Elm_Gengrid_Item_Class *itc);
+
+/**
+ * @brief Sets the text to be shown in a given gengrid item's tooltips.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This call is used to setup the text to be used as a tooltip for that item
+ * (analogous to elm_object_tooltip_text_set(), but are item
+ * tooltips with higher precedence than object tooltips). It can
+ * have only one tooltip at a time, so any previous tooltip data
+ * is removed.
+ *
+ * @remarks In order to set content or something else as a tooltip, see
+ * elm_gengrid_item_tooltip_content_cb_set().
+ *
+ * @param[in] it The gengrid item
+ * @param[in] text The text to set in the content
+ */
+EAPI void elm_gengrid_item_tooltip_text_set(Elm_Object_Item *it, const char *text);
+
+/**
+ * @brief Sets the content to be shown in a given gengrid item's tooltips.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This call is used to setup the tooltip's content to @a it
+ * (analogous to elm_object_tooltip_content_cb_set(), but are
+ * item tooltips with higher precedence than object tooltips). It
+ * can have only one tooltip at a time, so any previous tooltip
+ * content is removed. @a func (with @a data) is called
+ * every time Elementary needs to display the tooltip. Moreover, it should
+ * return a valid Evas object, which is fully managed by the
+ * tooltip system and gets deleted when the tooltip is gone.
+ *
+ * @remarks In order to set just text as a tooltip, see
+ * elm_gengrid_item_tooltip_text_set().
+ *
+ * @param[in] it The gengrid item
+ * @param[in] func The function returning the tooltip contents
+ * @param[in] data The data to provide to @a func as callback data/context
+ * @param[in] del_cb Called when data is not needed anymore, either when
+ * another callback replaces @a func, the tooltip is unset with
+ * elm_gengrid_item_tooltip_unset() or the owner @a it
+ * dies. This callback receives the given @a data as its first parameter
+ * with @a event_info as the item handle
+ */
+EAPI void elm_gengrid_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
+
+/**
+ * @brief Unsets a tooltip from a given gengrid item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This call removes any tooltip set on @a item. The callback
+ * provided as @a del_cb to
+ * elm_gengrid_item_tooltip_content_cb_set() is called to
+ * notify that it is not used anymore (and have resources cleaned, if
+ * needed).
+ *
+ * @param[in] it The gengrid item from which to remove a previously set tooltip
+ *
+ * @see elm_gengrid_item_tooltip_content_cb_set()
+ */
+EAPI void elm_gengrid_item_tooltip_unset(Elm_Object_Item *it);
+
+/**
+ * @brief Sets a different @b style for a given gengrid item's tooltip.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Tooltips can have <b>alternate styles</b> to be displayed on,
+ * which are defined by the theme set on Elementary. This function
+ * is analogous to elm_object_tooltip_style_set(), but is
+ * applied only to gengrid item objects. The default style for
+ * tooltips is @c "default".
+ *
+ * @remarks Before you set a style, you should define a tooltip with
+ * elm_gengrid_item_tooltip_content_cb_set() or
+ * elm_gengrid_item_tooltip_text_set()
+ *
+ * @param[in] it The gengrid item with a tooltip set
+ * @param[in] style The <b>theme style</b> to use on tooltips (e.g. @c
+ * "default", @c "transparent", etc)
+ *
+ * @see elm_gengrid_item_tooltip_style_get()
+ */
+EAPI void elm_gengrid_item_tooltip_style_set(Elm_Object_Item *it, const char *style);
+
+/**
+ * @brief Gets the style set for a given gengrid item's tooltip.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item on which the tooltip is already set
+ * @return style The theme style in use, whose default value is @c "default" \n
+ * If the object does not have a tooltip set,
+ * then @c NULL is returned.
+ *
+ * @see elm_gengrid_item_tooltip_style_set() for more details
+ */
+EAPI const char *elm_gengrid_item_tooltip_style_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Disables the size restrictions on an object's tooltip.
+ *
+ * @details This function allows a tooltip to expand beyond its parent window's canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It is instead limited only to the size of the display.
+ *
+ * @param[in] it The tooltip's anchor object
+ * @param disable If @c EINA_TRUE size restrictions are disabled,
+ * otherwise @c EINA_FALSE to enable it
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_gengrid_item_tooltip_window_mode_set(Elm_Object_Item *it, Eina_Bool disable);
+
+/**
+ * @brief Retrieves the size restriction state of an object's tooltip.
+ *
+ * @details This function returns a value that indicates whether a tooltip is allowed to expand beyond
+ * its parent window's canvas.
+ * It is instead limited only to the size of the display.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The tooltip's anchor object
+ * @return @c EINA_TRUE if size restrictions are disabled,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_gengrid_item_tooltip_window_mode_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the type of mouse pointer/cursor decoration to be displayed,
+ * when the mouse pointer is over the given gengrid widget item.
+ *
+ * @details This function is analogous to elm_object_cursor_set(), but
+ * the cursor's changing area is restricted to the item's
+ * area, and not the whole widget. Note that item cursors
+ * have precedence over widget cursors, so a mouse over @a
+ * it always shows the @a cursor type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If this function is called twice for an object, a previously set
+ * cursor is unset on the second call
+ *
+ * @param[in] it The gengrid item on which to customize the cursor
+ * @param[in] cursor The cursor type
+ *
+ * @see elm_object_cursor_set()
+ * @see elm_gengrid_item_cursor_get()
+ * @see elm_gengrid_item_cursor_unset()
+ */
+EAPI void elm_gengrid_item_cursor_set(Elm_Object_Item *it, const char *cursor);
+
+/**
+ * @brief Gets the type of mouse pointer/cursor decoration set to be displayed,
+ * when the mouse pointer is over the given gengrid widget item.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item with a custom cursor set
+ * @return The cursor type, otherwise @c NULL if no custom cursors
+ * are set to @a it(and on errors)
+ *
+ * @see elm_object_cursor_get()
+ * @see elm_gengrid_item_cursor_set()
+ * @see elm_gengrid_item_cursor_unset()
+ */
+EAPI const char *elm_gengrid_item_cursor_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Unsets any custom mouse pointer/cursor decoration set to be
+ * displayed, when the mouse pointer is over the given gengrid widget
+ * item, thus making it show the @b default cursor again.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use this call to undo any custom settings on this item's cursor
+ * decoration, bringing it back to the default value (no custom style set).
+ *
+ * @param[in] it The gengrid item
+ *
+ * @see elm_object_cursor_unset()
+ * @see elm_gengrid_item_cursor_set()
+ */
+EAPI void elm_gengrid_item_cursor_unset(Elm_Object_Item *it);
+
+/**
+ * @brief Sets a different @b style for a given custom cursor set for a
+ * gengrid item.
+ *
+ * @details This function only makes sense when one is using customized mouse
+ * cursor decorations <b>defined in a theme file</b> , which can
+ * have, given a cursor name/type, <b>alternate styles</b> on
+ * it. It is analogous to elm_object_cursor_style_set(), but
+ * is applied only to gengrid item objects.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Before you set a cursor style, you should define a
+ * custom cursor on the item using
+ * elm_gengrid_item_cursor_set()
+ *
+ * @param[in] it The gengrid item with a custom cursor set
+ * @param[in] style The <b>theme style</b> to use (e.g. @c "default",
+ * @c "transparent", etc)
+ *
+ * @see elm_gengrid_item_cursor_engine_only_set()
+ * @see elm_gengrid_item_cursor_style_get()
+ */
+EAPI void elm_gengrid_item_cursor_style_set(Elm_Object_Item *it, const char *style);
+
+/**
+ * @brief Gets the current @b style set for a given gengrid item's custom
+ * cursor.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item with a custom cursor set
+ * @return style The cursor style in use \n
+ * If the object does not have a cursor set, then @c NULL is returned.
+ *
+ * @see elm_gengrid_item_cursor_style_set() for more details
+ */
+EAPI const char *elm_gengrid_item_cursor_style_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets whether the (custom) cursor for a given gengrid item should be
+ * searched in its theme or should only rely on the
+ * rendering engine.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This call is used only if you have set a custom cursor
+ * for gengrid items using elm_gengrid_item_cursor_set().
+ *
+ * @remarks By default, cursors are looked for only from those
+ * provided by the rendering engine.
+ *
+ * @param[in] it The item with custom (custom) cursor already set on it
+ * @param[in] engine_only If @c EINA_TRUE look for cursors
+ * only from those provided by the rendering engine,
+ * otherwise @c EINA_FALSE to have them searched on the widget's theme as well
+ */
+EAPI void elm_gengrid_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only);
+
+/**
+ * @brief Gets whether the (custom) cursor for a given gengrid item is being
+ * searched in its theme or is only relying on the rendering
+ * engine.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item
+ * @return @c EINA_TRUE if cursors are being looked for only from
+ * those provided by the rendering engine,
+ * otherwise @c EINA_FALSE if they are being searched on the widget's theme as well
+ *
+ * @see elm_gengrid_item_cursor_engine_only_set()
+ */
+EAPI Eina_Bool elm_gengrid_item_cursor_engine_only_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the size for the items of a given gengrid widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A gengrid, after creation, still has no information on the size
+ * to give to each of its cells. So you most probably end up
+ * with squares of one @ref Fingers "finger" wide, the default
+ * size. Use this function to force a custom size for your items,
+ * making them as big as you wish.
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] w The items width
+ * @param[in] h The items height
+ *
+ * @see elm_gengrid_item_size_get()
+ */
+EAPI void elm_gengrid_item_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+
+/**
+ * @brief Gets the size set for the items of a given gengrid widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use @c NULL pointers for the size values you're not
+ * interested in, they get ignored by the function.
+ *
+ * @param[in] obj The gengrid object
+ * @param[out] w The pointer to a variable that stores the item's width
+ * @param[out] h The pointer to a variable that stores the item's height
+ *
+ * @see elm_gengrid_item_size_get() for more details
+ */
+EAPI void elm_gengrid_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @brief Sets the size of the group items of a given gengrid widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A gengrid, after creation, still has no information on the size
+ * to give to each of its cells. So you most probably end up
+ * with squares of one @ref Fingers "finger" wide, the default
+ * size. Use this function to force a custom size for your group items,
+ * making them as big as you wish.
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] w The group item's width
+ * @param[in] h The group item's height
+ *
+ * @see elm_gengrid_group_item_size_get()
+ */
+EAPI void elm_gengrid_group_item_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+
+/**
+ * @brief Gets the size set for the group items of a given gengrid widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use @c NULL pointers for the size values you're not
+ * interested in, they get ignored by the function.
+ *
+ * @param[in] obj The gengrid object
+ * @param[out] w The pointer to a variable that stores the group item's width
+ * @param[out] h The pointer to a variable that stores the group item's height
+ *
+ * @see elm_gengrid_group_item_size_get()
+ */
+EAPI void elm_gengrid_group_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @brief Sets the item's grid alignment within a given gengrid widget.
+ *
+ * @details This sets the alignment of the whole grid of gengrid items
+ * within its given viewport. By default, those values are both
+ * @c 0.5, meaning that the gengrid has its items grid placed
+ * exactly in the middle of its viewport.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If the given alignment values are out of the cited range,
+ * they are changed to the nearest boundary values on the valid
+ * range.
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] align_x The alignment along the horizontal axis (0 <= align_x <= 1)
+ * @param[in] align_y The alignment along the vertical axis (0 <= align_y <= 1)
+ *
+ * @see elm_gengrid_align_get()
+ */
+EAPI void elm_gengrid_align_set(Evas_Object *obj, double align_x, double align_y);
+
+/**
+ * @brief Gets the item's grid alignment values within a given gengrid
+ * widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use @c NULL pointers for the alignment values you're not
+ * interested in, they get ignored by the function.
+ *
+ * @param[in] obj The gengrid object
+ * @param[out] align_x The pointer to a variable that stores the
+ * horizontal alignment
+ * @param[out] align_y The pointer to a variable that stores the vertical
+ * alignment
+ *
+ * @see elm_gengrid_align_set()
+ */
+EAPI void elm_gengrid_align_get(const Evas_Object *obj, double *align_x, double *align_y);
+
+/**
+ * @brief Sets whether a given gengrid widget is able to have items
+ * @b reordered.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If a gengrid is set to allow reordering, a click held for more
+ * than @c 0.5 over a given item highlights it specially,
+ * signaling the gengrid has entered the reordering state. From
+ * that time on, the user is able to, while still holding the
+ * mouse button down, move the item freely in the gengrid's
+ * viewport, replacing the said item by the locations it goes to.
+ * The replacements are animated and, whenever the user
+ * releases the mouse button, the item being replaced gets a new
+ * definitive place in the grid.
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] reorder_mode If @c EINA_TRUE reordering is turned on,
+ * otherwise @c EINA_FALSE to turn it off
+ *
+ * @see elm_gengrid_reorder_mode_get()
+ */
+EAPI void elm_gengrid_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode);
+
+/**
+ * @brief Gets whether a given gengrid widget is able to have items
+ * @b reordered
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @return @c EINA_TRUE if reordering is on,
+ * otherwise @c EINA_FALSE if it's off
+ *
+ * @see elm_gengrid_reorder_mode_set()
+ */
+EAPI Eina_Bool elm_gengrid_reorder_mode_get(const Evas_Object *obj);
+
+
+/**
+ * @internal
+ *
+ * @brief Sets a given gengrid widget's scrolling page size, relative to
+ * its viewport size.
+ *
+ * @remarks The gengrid's scroller is capable of binding scrolling by the
+ * user to "pages". It means that, while scrolling and, specially
+ * after releasing the mouse button, the grid @b snaps to the
+ * nearest displaying page's area. When page sizes are set, the
+ * grid's continuous content area is split into (equal) page sized
+ * pieces.
+ *
+ * @remarks This function sets the size of a page <b>relatively to the
+ * viewport dimensions</b> of the gengrid, for each axis. A value
+ * @c 1.0 means "the exact viewport's size", in that axis, while @c
+ * 0.0 turns paging off in that axis. Likewise, @c 0.5 means "half
+ * a viewport". Similarly, usable values are between @c 0.0 and @c
+ * 1.0. Values beyond this range make it behave
+ * inconsistently. If you only want one axis to snap to pages, use
+ * the value @c 0.0 for the other one.
+ *
+ * @remarks There is a function that sets page size values in @b absolute
+ * values. This function is elm_gengrid_page_size_set(). Naturally, its use
+ * is mutually exclusive to this one.
+ *
+ * @param obj The gengrid object
+ * @param h_pagerel The horizontal page (relative) size
+ * @param v_pagerel The vertical page (relative) size
+ *
+ * @deprecated Use elm_scroller_page_relative_set() instead.
+ *
+ * @see elm_scroller_page_relative_set()
+ */
+EINA_DEPRECATED EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel);
+
+/**
+ * @internal
+ * @brief Gets a given gengrid widget's scrolling page size, relative to
+ * its viewport size.
+ *
+ * @param obj The gengrid object
+ * @param h_pagerel The pointer to a variable that stores the
+ * horizontal page (relative) size
+ * @param v_pagerel The pointer to a variable that stores the
+ * vertical page (relative) size
+ *
+ * @deprecated Use elm_scroller_page_relative_get() instead.
+ *
+ * @see elm_scroller_page_relative_get()
+ */
+EINA_DEPRECATED EAPI void elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel);
+
+/**
+ * @internal
+ *
+ * @brief Sets a given gengrid widget's scrolling page size.
+ *
+ * @remarks The gengrid's scroller is capable of binding scrolling by the
+ * user to "pages". This means that, while scrolling and, specially
+ * after releasing the mouse button, the grid @b snaps to the
+ * nearest displaying page's area. When page sizes are set, the
+ * grid's continuous content area is split into (equal) page sized
+ * pieces.
+ *
+ * @remarks This function sets the size of a page of the gengrid, in pixels,
+ * for each axis. Similarly, usable values are between @c 0 and the
+ * dimensions of @a obj, for each axis. Values beyond these
+ * make it behave inconsistently. If you only want one axis
+ * to snap to pages, use the value @c 0 for the other one.
+ *
+ * @remarks There is a function that sets page size values in @b relative
+ * values. This function is elm_gengrid_page_relative_set(). Naturally, its
+ * use is mutually exclusive to this one.
+ *
+ * @param obj The gengrid object
+ * @param h_pagesize The horizontal page size in pixels
+ * @param v_pagesize The vertical page size in pixels
+ *
+ * @deprecated Use elm_scroller_page_size_set() instead.
+ *
+ * @see elm_scroller_page_size_set()
+ */
+EINA_DEPRECATED EAPI void elm_gengrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize);
+
+/**
+ * @internal
+ *
+ * @brief Gets the current gengrid page number.
+ *
+ * @remarks The page number starts from @c 0. @c 0 is the first page.
+ * Current page means the page that meets the top-left of the viewport.
+ * If there are two or more pages in the viewport, it returns the number of pages
+ * that meet the top-left of the viewport.
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * @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()
+ */
+EINA_DEPRECATED EAPI void elm_gengrid_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
+
+/**
+ * @internal
+ *
+ * @brief Gets the last gengrid page number.
+ *
+ * @details This returns the last page number among the pages.
+ * @remarks The page number starts from @c 0. @c 0 is the first page.
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * @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()
+ */
+EINA_DEPRECATED EAPI void elm_gengrid_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
+
+/**
+ * @brief Shows a specific virtual region within the gengrid content object by its page number.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks (0, 0) of the indicated page is located at the top-left of the viewport.
+ * This jumps 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
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] h_pagenumber The horizontal page number
+ * @param[in] v_pagenumber The vertical page number
+ *
+ * @see elm_gengrid_page_bring_in()
+ */
+EAPI void elm_gengrid_page_show(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
+
+/**
+ * @internal
+ *
+ * @brief Shows a specific virtual region within the gengrid content object by its page number.
+ *
+ * @remarks (0, 0) of the indicated page is located at the top-left of the viewport.
+ * This slides 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
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * @deprecated Use elm_scroller_page_bring_in() instead.
+ *
+ * @see elm_scroller_page_bring_in()
+ *
+ * @see elm_gengrid_page_show()
+ */
+EINA_DEPRECATED EAPI void elm_gengrid_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
+
+/**
+ * @brief Gets a given gengrid item's position, relative to the whole
+ * gengrid's grid area.
+ *
+ * @details This returns the "logical" position of the item within the
+ * gengrid. For example, @c (0, 1) would stand for the first row and the
+ * second column.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item
+ * @param[out] x The pointer to a variable that stores the item's <b>row number</b>
+ * @param[out] y The pointer to a variable that stores the item's <b>column number</b>
+ */
+EAPI void elm_gengrid_item_pos_get(const Elm_Object_Item *it, unsigned int *x, unsigned int *y);
+
+/**
+ * @brief Sets the manner in which the items grid is filled within a given gengrid widget.
+ *
+ * @details This sets the fill state of the whole grid of items of a gengrid
+ * within its given viewport. By default, this value is @c false, meaning
+ * that if the first line of items grid isn't filled, the items are
+ * centered with the alignment.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] fill If @c true if it is filled, otherwise @c false
+ *
+ * @see elm_gengrid_filled_get()
+ *
+ */
+EAPI void elm_gengrid_filled_set(Evas_Object *obj, Eina_Bool fill);
+
+/**
+ * @brief Gets the manner in which the items grid is filled within a given gengrid widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use @c NULL pointers for the alignment values you're not
+ * interested in, they are ignored by the function.
+ *
+ * @param[in] obj The gengrid object
+ * @return @c EINA_TRUE if filled is on,
+ * otherwise @c EINA_FALSE if it is off
+ *
+ * @see elm_gengrid_align_set() for more details
+ */
+EAPI Eina_Bool elm_gengrid_filled_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gengrid select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks elm_gengrid_select_mode_set() changes the item select mode in the gengrid widget.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : Items only call their selection func and
+ * callback when they get selected for the first time. Any further clicks
+ * do nothing, unless you set the always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click calls the selected callbacks.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This turns off the ability to select items
+ * entirely and they neither appear selected nor call selected
+ * callback functions.
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] mode The select mode
+ *
+ * @see elm_gengrid_select_mode_get()
+ */
+EAPI void elm_gengrid_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode);
+
+/**
+ * @brief Gets the gengrid select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @return The select mode
+ * (If getting the mode fails, it returns @c ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_gengrid_select_mode_set()
+ */
+EAPI Elm_Object_Select_Mode elm_gengrid_select_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether the gengrid items should be highlighted when an item is selected.
+ *
+ * @details This turns on/off the highlight effect when items are selected and
+ * they either get or do not get highlighted. The selected and clicked
+ * callback functions are still called.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Highlighting is enabled by default.
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] highlight If @c EINA_TRUE highlighting is enabled,
+ * otherwise @c EINA_FALSE to disable it
+ *
+ * @see elm_gengrid_highlight_mode_get()
+ */
+
+EAPI void elm_gengrid_highlight_mode_set(Evas_Object *obj, Eina_Bool highlight);
+
+/**
+ * @brief Gets whether the gengrid items should be highlighted when an item is selected.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @return @c EINA_TRUE indicates that items can be highlighted,
+ * otherwise @c EINA_FALSE indicates that they can't \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_gengrid_highlight_mode_set()
+ */
+
+EAPI Eina_Bool elm_gengrid_highlight_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gengrid item's select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks elm_gengrid_select_mode_set() changes the item's select mode.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : Items only call their selection @a func and
+ * callback when they get selected for the first time. Any further clicks
+ * do nothing, unless you set the always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click calls the selected callbacks.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This turns off the ability to select the item
+ * entirely and they neither appear selected nor call selected
+ * callback functions.
+ * - ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY : This applies the no-finger-size rule
+ * with @c ELM_OBJECT_SELECT_MODE_NONE. The no-finger-size rule makes an item
+ * smaller than the lower limit. Clickable objects should be bigger than
+ * the human touch point device (your finger) for some touch or
+ * small screen devices. Once it is enabled, the item can shrink beyond the
+ * predefined finger-size value. And the item gets updated.
+ *
+ * @param[in] it The gengrid item object
+ * @param[in] mode The select mode
+ *
+ * @see elm_gengrid_item_select_mode_get()
+ */
+EAPI void elm_gengrid_item_select_mode_set(Elm_Object_Item *it, Elm_Object_Select_Mode mode);
+
+/**
+ * @brief Gets the gengrid item's select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The gengrid item object
+ * @return The select mode
+ * (If the getting mode fails, it returns @c ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_gengrid_item_select_mode_set()
+ */
+EAPI Elm_Object_Select_Mode elm_gengrid_item_select_mode_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the item that is at the x, y canvas coordinates.
+ *
+ * @details This returns the item at the given coordinates (which is canvas
+ * relative, not object-relative). If an item is at that coordinate,
+ * that item handle is returned, and if @a xposret is not @c NULL, the
+ * integer it points to is set to either @c -1, @c 0, or @c 1, depending on whether
+ * the coordinate is on the left portion of that item (-1), in the
+ * middle section (0), or on the right part (1).
+ * If @a yposret is not @c NULL, the
+ * integer it points to is set to either @c -1, @c 0, or @c 1, depending on whether
+ * the coordinate is at the upper portion of that item (-1), in the
+ * middle section (0), or at the lower part (1). If @c NULL is returned as
+ * an item (no item found there), then posret may indicate @c -1 or @c 1
+ * based on whether the coordinate is above or below the items respectively in
+ * the gengrid.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gengrid object
+ * @param[in] x The input x coordinate
+ * @param[in] y The input y coordinate
+ * @param[out] xposret The position relative to the returned item
+ * @param[out] yposret The position relative to the returned item
+ * @return The item at the coordinates, otherwise @c NULL if no item is present
+ */
+EAPI Elm_Object_Item *elm_gengrid_at_xy_item_get(const Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *xposret, int *yposret);
/**
* @}
diff --git a/src/lib/elm_genlist.h b/src/lib/elm_genlist.h
index c95d472f2..ece8752e7 100644
--- a/src/lib/elm_genlist.h
+++ b/src/lib/elm_genlist.h
@@ -1,37 +1,37 @@
/**
- * @defgroup Genlist Genlist (Generic list)
- * @ingroup Elementary
+ * @defgroup Genlist Genlist
+ * @ingroup elm_widget_group
*
* @image html genlist_inheritance_tree.png
* @image latex genlist_inheritance_tree.eps
*
- * @image html img/widget/genlist/preview-00.png
- * @image latex img/widget/genlist/preview-00.eps
* @image html img/genlist.png
* @image latex img/genlist.eps
*
- * This widget aims to have more expansive list than the simple list in
- * Elementary that could have more flexible items and allow many more entries
- * while still being fast and low on memory usage. At the same time it was
- * also made to be able to do tree structures. But the price to pay is more
- * complexity when it comes to usage. If all you want is a simple list with
- * icons and a single text, use the normal @ref List object.
+ * @brief This widget aims to have a more expansive list than the simple list
+ * in Elementary that could have more flexible items and allow many more
+ * entries while still being fast and low on memory usage.
+ *
+ * At the same time it was also made to be able to do tree structures. But the
+ * price to pay is based on complexity when it comes to usage. If all you want
+ * is a simple list with icons and a single text, use the normal @ref List
+ * object.
*
* Genlist has a fairly large API, mostly because it's relatively complex,
- * trying to be both expansive, powerful and efficient. First we will begin
+ * trying to be expansive, powerful, and efficient. First we begin with
* an overview on the theory behind genlist.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for genlist objects.
*
- * This widget implements the @b @ref elm-scrollable-interface
+ * This widget implements the elm-scrollable-interface
* interface, so that all (non-deprecated) functions for the base @ref
* Scroller widget also work for genlists.
*
* Some calls on the genlist'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
+ * the ones mentioned for each case of deprecation here.
+ * Eventually the deprecated ones are discarded (next
* major release).
*
* @section Genlist_Item_Class Genlist item classes - creating items
@@ -39,103 +39,79 @@
* In order to have the ability to add and delete items on the fly, genlist
* implements a class (callback) system where the application provides a
* structure with information about that type of item (genlist may contain
- * multiple different items with different classes, states and styles).
- * Genlist will call the functions in this struct (methods) when an item is
+ * multiple items of different types with different classes, states, and styles).
+ * Genlist calls the functions in this struct (methods) when an item is
* "realized" (i.e., created dynamically, while the user is scrolling the
- * list). All objects will simply be deleted when no longer needed with
+ * list). All objects are simply deleted when they are no longer needed by
* evas_object_del(). The #Elm_Genlist_Item_Class structure contains the
* following members:
* - @c item_style - This is a constant string and simply defines the name
* of the item style. It @b must be specified and the default should be @c
* "default".
* - @c decorate_item_style - This is a constant string and simply defines the name
- * of the decorate mode item style. It is used to specify decorate mode item style. It can be
- * used when you call elm_genlist_item_decorate_mode_set().
+ * of the decorate mode item style. It is used to specify the decorate mode item style. It can be
+ * used when elm_genlist_item_decorate_mode_set() is called.
* - @c decorate_all_item_style - This is a constant string and simply defines the name
- * of the decorate all item style. It is used to specify decorate all item style. It can be
- * used to set selection, checking and deletion mode. This is used when you
- * call elm_genlist_decorate_mode_set().
- * - @c func - A struct with pointers to functions that will be called when
- * an item is going to be actually created. All of them receive a @c data
- * parameter that will point to the same data passed to
- * elm_genlist_item_append() and related item creation functions, and an @c
+ * of the decorate all item style. It is used to specify the decorate all item style. It can be
+ * used to set the selection, checking, and deletion mode. This is used when
+ * elm_genlist_decorate_mode_set() is called.
+ * - @c func - This is a struct with pointers to functions that are called when
+ * an item is going to actually be created. All of them receive a @c data
+ * parameter that points to the same data that is passed to
+ * elm_genlist_item_append() and other related item creation functions, and an @c
* obj parameter that points to the genlist object itself.
*
* The function pointers inside @c func are @c text_get, @c content_get, @c
- * state_get and @c del. The 3 first functions also receive a @c part
- * parameter described below. A brief description of these functions follows:
+ * state_get, and @c del. The first three functions also receive a @c part
+ * parameter described below. A brief description of these functions is as follows:
*
* - @c text_get - The @c part parameter is the name string of one of the
* existing text parts in the Edje group implementing the item's theme.
- * This function @b must return a strdup'()ed string, as the caller will
+ * This function @b must return a strdup'()ed string, as the caller is going to
* free() it when done. See #Elm_Genlist_Item_Text_Get_Cb.
* - @c content_get - The @c part parameter is the name string of one of the
* existing (content) swallow parts in the Edje group implementing the item's
* theme. It must return @c NULL, when no content is desired, or a valid
- * object handle, otherwise. The object will be deleted by the genlist on
+ * object handle, otherwise. The object is deleted by the genlist on
* its deletion or when the item is "unrealized".
* See #Elm_Genlist_Item_Content_Get_Cb.
* - @c func.state_get - The @c part parameter is the name string of one of
- * the state parts in the Edje group implementing the item's theme. Return
- * @c EINA_FALSE for false/off or @c EINA_TRUE for true/on. Genlists will
+ * the state parts in the Edje group implementing the item's theme. It must return
+ * @c EINA_FALSE for false/off or @c EINA_TRUE for true/on. Genlists
* emit a signal to its theming Edje object with @c "elm,state,xxx,active"
* and @c "elm" as "emission" and "source" arguments, respectively, when
- * the state is true (the default is false), where @c xxx is the name of
+ * the state is @c true (the default is false), where @c xxx is the name of
* the (state) part. See #Elm_Genlist_Item_State_Get_Cb.
* - @c func.del - This is intended for use when genlist items are deleted,
* so any data attached to the item (e.g. its data parameter on creation)
* can be deleted. See #Elm_Genlist_Item_Del_Cb.
*
- * available item styles:
+ * The available item styles are as follows:
* - default
* - default_style - The text part is a textblock
- *
- * @image html img/widget/genlist/preview-04.png
- * @image latex img/widget/genlist/preview-04.eps
- *
* - double_label
- *
- * @image html img/widget/genlist/preview-01.png
- * @image latex img/widget/genlist/preview-01.eps
- *
* - icon_top_text_bottom
- *
- * @image html img/widget/genlist/preview-02.png
- * @image latex img/widget/genlist/preview-02.eps
- *
* - group_index
- *
- * @image html img/widget/genlist/preview-03.png
- * @image latex img/widget/genlist/preview-03.eps
- *
- * - one_icon - Only 1 icon (left) (since 1.7)
- * - end_icon - Only 1 icon (at end/right) (since 1.7)
- * - no_icon - No icon (at end/right) (since 1.7)
- * - full - Only 1 icon, elm.swallow.content, which consumes whole area of
- * genlist itemj (since 1.7)
- *
- * If one wants to use more icons and texts than are offered in theme, there
- * are two solutions. One is to use 'full' style that has one big swallow part.
- * You can swallow anything there. The other solution is to customize genlist
- * item style in application side by using elm_theme_extension_add() and its
- * own edc. Please refer @ref theme_example_01 for that.
+ * - one_icon - Only 1 icon (left) @since 1.7
+ * - end_icon - Only 1 icon (at end/right) @since 1.7
+ * - no_icon - No icon (at end/right) @since 1.7
*
* @section Genlist_Items Structure of items
*
- * An item in a genlist can have 0 or more texts (they can be regular
- * text or textblock Evas objects - that's up to the style to determine), 0
- * or more contents (which are simply objects swallowed into the genlist item's
- * theming Edje object) and 0 or more <b>boolean states</b>, which have the
+ * An item in a genlist can have @c 0 or more texts (they can be regular
+ * text or textblock Evas objects - that's up to the style to determine), @c 0
+ * or more blocks of content (which are simply objects swallowed into the genlist item's
+ * theming Edje object) and @c 0 or more <b>boolean states</b>, which have the
* behavior left to the user to define. The Edje part names for each of
- * these properties will be looked up, in the theme file for the genlist,
- * under the Edje (string) data items named @c "labels", @c "contents" and @c
- * "states", respectively. For each of those properties, if more than one
- * part is provided, they must have names listed separated by spaces in the
+ * these properties are looked up, in the theme file for the genlist,
+ * under the Edje (string) data items named @c "labels", @c "contents", and @c
+ * "states", respectively. For each of these properties, if more than one
+ * part is provided, they must have names listed and separated by spaces in the
* data fields. For the default genlist item theme, we have @b one text
* part (@c "elm.text"), @b two content parts (@c "elm.swalllow.icon" and @c
* "elm.swallow.end") and @b no state parts.
*
- * A genlist item may be at one of several styles. Elementary provides one
+ * A genlist item may be having one of the several styles. Elementary provides one
* by default - "default", but this can be extended by system or application
* custom themes/overlays/extensions (see @ref Theme "themes" for more
* details).
@@ -144,123 +120,123 @@
*
* Items can be added by several calls. All of them return a @ref
* Elm_Object_Item handle that is an internal member inside the genlist.
- * They all take a data parameter that is meant to be used for a handle to
- * the applications internal data (eg. the struct with the original item
+ * They all take a data parameter that is meant to be used as a handle for
+ * the application's internal data (eg. the struct with the original item
* data). The parent parameter is the parent genlist item this belongs to if
- * it is a tree or an indexed group, and NULL if there is no parent. The
- * flags can be a bitmask of #ELM_GENLIST_ITEM_NONE, #ELM_GENLIST_ITEM_TREE
+ * it is a tree or an indexed group, and this value is @c NULL if there is no parent. The
+ * flags can be a bitmask of #ELM_GENLIST_ITEM_NONE, #ELM_GENLIST_ITEM_TREE,
* and #ELM_GENLIST_ITEM_GROUP. If #ELM_GENLIST_ITEM_TREE is set then this
* item is displayed as an item that is able to expand and have child items.
- * If #ELM_GENLIST_ITEM_GROUP is set then this item is group index item that
- * is displayed at the top until the next group comes. The func parameter is
+ * If #ELM_GENLIST_ITEM_GROUP is set then this item is a group index item that
+ * is displayed at the top until the next group comes. The @a func parameter is
* a convenience callback that is called when the item is selected and the
- * data parameter will be the func_data parameter, @c obj be the genlist
- * object and event_info will be the genlist item.
+ * @a data parameter is the @a func_data parameter, @a obj is the genlist
+ * object, and @a event_info is the genlist item.
*
* elm_genlist_item_append() adds an item to the end of the list, or if
- * there is a parent, to the end of all the child items of the parent.
- * elm_genlist_item_prepend() is the same but adds to the beginning of
+ * there is a parent, it adds the item to the end of all the child items of the parent.
+ * elm_genlist_item_prepend() is the same but adds an item to the beginning of
* the list or children list. elm_genlist_item_insert_before() inserts at
- * item before another item and elm_genlist_item_insert_after() inserts after
+ * item before another item and elm_genlist_item_insert_after() inserts an item after
* the indicated item.
*
* The application can clear the list with elm_genlist_clear() which deletes
- * all the items in the list and elm_object_item_del() will delete a specific
- * item. elm_genlist_item_subitems_clear() will clear all items that are
+ * all the items in the list. elm_object_item_del() deletes a specific
+ * item. elm_genlist_item_subitems_clear() clears all items that are
* children of the indicated parent item.
*
* To help inspect list items you can jump to the item at the top of the list
- * with elm_genlist_first_item_get() which will return the item pointer, and
- * similarly elm_genlist_last_item_get() gets the item at the end of the list.
+ * with elm_genlist_first_item_get() which returns the item pointer. Similarly,
+ * elm_genlist_last_item_get() gets the item at the end of the list.
* elm_genlist_item_next_get() and elm_genlist_item_prev_get() get the next
* and previous items respectively relative to the indicated item. Using
- * these calls you can walk the entire item list/tree. Note that as a tree
- * the items are flattened in the list, so elm_genlist_item_parent_get() will
- * let you know which item is the parent (and thus know how to skip them if
- * wanted).
+ * these calls you can walk through the entire item list/tree. Note that as a tree
+ * the items are flattened in the list, so elm_genlist_item_parent_get()
+ * lets you know which item is the parent (and thus helps you skip them if
+ * needed).
*
* @section Genlist_Multi_Selection Multi-selection
*
- * If the application wants multiple items to be able to be selected,
+ * If the application wants to allow multiple items to be selected,
* elm_genlist_multi_select_set() can enable this. If the list is
* single-selection only (the default), then elm_genlist_selected_item_get()
- * will return the selected item, if any, or NULL if none is selected. If the
- * list is multi-select then elm_genlist_selected_items_get() will return a
+ * returns the selected item, if any, or @c NULL if none is selected. If the
+ * list is multi-select then elm_genlist_selected_items_get() returns a
* list (that is only valid as long as no items are modified (added, deleted,
- * selected or unselected)).
+ * selected, or unselected)).
*
* @section Genlist_Usage_Hints Usage hints
*
- * There are also convenience functions. elm_object_item_widget_get() will
- * return the genlist object the item belongs to. elm_genlist_item_show()
- * will make the scroller scroll to show that specific item so its visible.
+ * There are also convenience functions. elm_object_item_widget_get()
+ * returns the genlist object the item belongs to. elm_genlist_item_show()
+ * makes the scroller scroll to show that specific item so that it is visible.
* elm_object_item_data_get() returns the data pointer set by the item
* creation functions.
*
- * If an item changes (state of boolean changes, text or contents change),
+ * If an item changes (state of boolean changes, text or content changes),
* then use elm_genlist_item_update() to have genlist update the item with
- * the new state. Genlist will re-realize the item and thus call the functions
+ * the new state. Genlist re-realizes the item and thus calls the functions
* in the _Elm_Genlist_Item_Class for that item.
*
* To programmatically (un)select an item use elm_genlist_item_selected_set().
- * To get its selected state use elm_genlist_item_selected_get(). Similarly
+ * To get its selected state use elm_genlist_item_selected_get(). Similarly,
* to expand/contract an item and get its expanded state, use
* elm_genlist_item_expanded_set() and elm_genlist_item_expanded_get(). And
- * again to make an item disabled (unable to be selected and appear
+ * again to disable an item (unable to be selected and appear
* differently) use elm_object_item_disabled_set() to set this and
* elm_object_item_disabled_get() to get the disabled state.
*
- * In general to indicate how the genlist should expand items horizontally to
+ * In general, to indicate how the genlist should expand items horizontally to
* fill the list area, use elm_genlist_mode_set(). Valid modes are
- * ELM_LIST_LIMIT, ELM_LIST_COMPRESS and ELM_LIST_SCROLL. The default is
+ * ELM_LIST_LIMIT, ELM_LIST_COMPRESS, and ELM_LIST_SCROLL. The default is
* ELM_LIST_SCROLL. This mode means that if items are too wide to fit, the
- * scroller will scroll horizontally. Otherwise items are expanded to
+ * scroller scrolls horizontally. Otherwise items are expanded to
* fill the width of the viewport of the scroller. If it is
- * ELM_LIST_LIMIT, items will be expanded to the viewport width
- * if larger than the item, but genlist widget witdh is
- * limited to the largest item. Do not use ELM_LIST_LIMIT mode with homogenous
+ * ELM_LIST_LIMIT, items are expanded to the viewport width
+ * if the viewport width is larger than the item, but the genlist widget width is
+ * limited to the largest item. Do not use the ELM_LIST_LIMIT mode with the homogenous
* mode turned on. ELM_LIST_COMPRESS can be combined with a different style
- * that uses edjes' ellipsis feature (cutting text off like this: "tex...").
+ * that uses the edjes' ellipsis feature (cutting text off like this: "tex...").
*
- * Items will call their selection func and callback only once when first becoming
- * selected. Any further clicks will do nothing, unless you enable always
+ * Items call their selection func and callback only once when selected for the
+ * first time. Any further clicks do nothing, unless you enable always
* select with elm_genlist_select_mode_set() as ELM_OBJECT_SELECT_MODE_ALWAYS.
- * This means even if selected, every click will make the selected callbacks
- * be called. elm_genlist_select_mode_set() as ELM_OBJECT_SELECT_MODE_NONE will
- * turn off the ability to select items entirely and they will neither
+ * This means even if selected, every click make the selected callbacks
+ * to be called. elm_genlist_select_mode_set() as ELM_OBJECT_SELECT_MODE_NONE
+ * turns off the ability to select items entirely and they neither
* appear selected nor call selected callback functions.
*
* Remember that you can create new styles and add your own theme augmentation
- * per application with elm_theme_extension_add(). If you absolutely must
- * have a specific style that overrides any theme the user or system sets up
+ * for each application with elm_theme_extension_add(). If you absolutely must
+ * have a specific style that overrides any theme that the user or system sets up,
* you can use elm_theme_overlay_add() to add such a file.
*
* @section Genlist_Implementation Implementation
*
* Evas tracks every object you create. Every time it processes an event
* (mouse move, down, up etc.) it needs to walk through objects and find out
- * what event that affects. Even worse every time it renders display updates,
- * in order to just calculate what to re-draw, it needs to walk through many
- * many many objects. Thus, the more objects you keep active, the more
+ * what event they affect. Further, every time it renders display updates,
+ * in order to just calculate what to re-draw, it needs to walk through a large
+ * number of objects. Thus, the more objects you keep active, the more
* overhead Evas has in just doing its work. It is advisable to keep your
* active objects to the minimum working set you need. Also remember that
* object creation and deletion carries an overhead, so there is a
* middle-ground, which is not easily determined. But don't keep massive lists
* of objects you can't see or use. Genlist does this with list objects. It
* creates and destroys them dynamically as you scroll around. It groups them
- * into blocks so it can determine the visibility etc. of a whole block at
- * once as opposed to having to walk the whole list. This 2-level list allows
- * for very large numbers of items to be in the list (tests have used up to
+ * into blocks so that it can determine the visibility of a whole block at
+ * once as opposed to having to walk through the whole list. This 2-level list allows
+ * for very large numbers of items to be in the list (tests have used upto
* 2,000,000 items). Also genlist employs a queue for adding items. As items
- * may be different sizes, every item added needs to be calculated as to its
+ * maybe of different sizes, every added item needs to be calculated as per its
* size and thus this presents a lot of overhead on populating the list, this
- * genlist employs a queue. Any item added is queued and spooled off over
- * time, actually appearing some time later, so if your list has many members
- * you may find it takes a while for them to all appear, with your process
- * consuming a lot of CPU while it is busy spooling.
+ * genlist employs a queue. Every added item is queued and spooled off over
+ * time, though it appears some time later. So if your list has many members,
+ * you may find that it takes a while for them to appear and this process
+ * consumes a lot of CPU time while it is busy spooling.
*
* Genlist also implements a tree structure for items, but it does so with
- * callbacks to the application, with the application filling in tree
+ * callbacks to the application, with the application filling in tree
* structures when requested (allowing for efficient building of a very
* deep tree that could even be used for file-management).
* See the above smart signal callbacks for details.
@@ -268,45 +244,45 @@
* @section Genlist_Smart_Events Genlist smart events
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* - @c "activated" - The user has double-clicked or pressed
- * (enter|return|spacebar) on an item. The @p event_info parameter is the
- * item that was activated.
- * - @c "pressed" - The user pressed the an item. The @p event_info
- * parameter is the item that was pressed.
- * - @c "released" - The user released the an item. The @p event_info
- * parameter is the item that was released.
- * - @c "clicked,double" - The user has double-clicked an item. The @c
- * event_info parameter is the item that was double-clicked.
- * - @c "selected" - This is called when a user has made an item selected.
- * The event_info parameter is the genlist item that was selected.
- * - @c "unselected" - This is called when a user has made an item
- * unselected. The event_info parameter is the genlist item that was
+ * (enter|return|spacebar) on an item. The @a event_info parameter is the
+ * item that is activated.
+ * - @c "pressed" - The user pressed an item. The @a event_info
+ * parameter is the item that is pressed.
+ * - @c "released" - The user released an item. The @a event_info
+ * parameter is the item that is released.
+ * - @c "clicked,double" - The user has double-clicked an item. The @a
+ * event_info parameter is the item that is double-clicked.
+ * - @c "selected" - This is called when a user has selected an item.
+ * The @a event_info parameter is the genlist item that is selected.
+ * - @c "unselected" - This is called when a user has unselected an item.
+ * The @a event_info parameter is the genlist item that is
* unselected.
* - @c "expanded" - This is called when elm_genlist_item_expanded_set() is
- * called and the item is now meant to be expanded. The event_info
- * parameter is the genlist item that was indicated to expand. It is the
+ * called and the item is now meant to be expanded. The @a event_info
+ * parameter is the genlist item that is indicated to expand. It is the
* job of this callback to then fill in the child items.
* - @c "contracted" - This is called when elm_genlist_item_expanded_set() is
- * called and the item is now meant to be contracted. The event_info
- * parameter is the genlist item that was indicated to contract. It is the
+ * called and the item is now meant to contract. The @a event_info
+ * parameter is the genlist item that is indicated to contract. It is the
* job of this callback to then delete the child items.
- * - @c "expand,request" - This is called when a user has indicated they want
+ * - @c "expand,request" - This is called when a user has indicated that they want
* to expand a tree branch item. The callback should decide if the item can
* expand (has any children) and then call elm_genlist_item_expanded_set()
- * appropriately to set the state. The event_info parameter is the genlist
- * item that was indicated to expand.
- * - @c "contract,request" - This is called when a user has indicated they
+ * appropriately to set the state. The @a event_info parameter is the genlist
+ * item that is indicated to expand.
+ * - @c "contract,request" - This is called when a user has indicated that they
* want to contract a tree branch item. The callback should decide if the
* item can contract (has any children) and then call
* elm_genlist_item_expanded_set() appropriately to set the state. The
- * event_info parameter is the genlist item that was indicated to contract.
+ * event_info parameter is the genlist item that is indicated to contract.
* - @c "realized" - This is called when the item in the list is created as a
- * real evas object. event_info parameter is the genlist item that was
+ * real evas object. @a event_info parameter is the genlist item that is
* created.
* - @c "unrealized" - This is called just before an item is unrealized.
- * After this call content objects provided will be deleted and the item
- * object itself delete or be put into a floating cache.
+ * After this call, the provided content objects are deleted and the item
+ * object itself is deleted or is put into a floating cache.
* - @c "drag,start,up" - This is called when the item in the list has been
* dragged (not scrolled) up.
* - @c "drag,start,down" - This is called when the item in the list has been
@@ -315,11 +291,11 @@
* dragged (not scrolled) left.
* - @c "drag,start,right" - This is called when the item in the list has
* been dragged (not scrolled) right.
- * - @c "drag,stop" - This is called when the item in the list has stopped
+ * - @c "drag,stop" - This is called when the item in the list is stopped
* being dragged.
* - @c "drag" - This is called when the item in the list is being dragged.
* - @c "longpressed" - This is called when the item is pressed for a certain
- * amount of time. By default it's 1 second. The event_info parameter is the
+ * amount of time. By default it's @c 1 second. The @a event_info parameter is the
* longpressed genlist item.
* - @c "scroll,anim,start" - This is called when scrolling animation has
* started.
@@ -350,76 +326,1728 @@
* - @c "multi,pinch,in" - This is called when the genlist is multi-touch
* pinched in.
* - @c "swipe" - This is called when the genlist is swiped.
- * - @c "moved" - This is called when a genlist item is moved by a user
- * interaction in a reorder mode. The @p event_info parameter is the item that
- * was moved.
+ * - @c "moved" - This is called when a genlist item is moved in the reorder mode.
* - @c "moved,after" - This is called when a genlist item is moved after
- * another item in reorder mode. The event_info parameter is the reordered
+ * another item in the reorder mode. The @a event_info parameter is the reordered
* item. To get the relative previous item, use elm_genlist_item_prev_get().
- * This signal is called along with "moved" signal.
+ * This signal is called along with the "moved" signal.
* - @c "moved,before" - This is called when a genlist item is moved before
- * another item in reorder mode. The event_info parameter is the reordered
+ * another item in the reorder mode. The @a event_info parameter is the reordered
* item. To get the relative previous item, use elm_genlist_item_next_get().
- * This signal is called along with "moved" signal.
- * - @c "index,update" - This is called when a genlist item index is changed.
- * Note that this callback is called while each item is being realized.
+ * This signal is called along with the "moved" signal.
* - @c "language,changed" - This is called when the program's language is
- * changed. Call the elm_genlist_realized_items_update() if items text should
+ * changed. Call elm_genlist_realized_items_update() if the item's text should
* be translated.
- * - @c "tree,effect,finished" - This is called when a genlist tree effect is finished.
- * - @c "highlighted" - an item in the list is highlighted. This is called when
- * the user presses an item or keyboard selection is done so the item is
- * physically highlighted. The @p event_info parameter is the item that was
- * highlighted.
- * - @c "unhighlighted" - an item in the list is unhighlighted. This is called
- * when the user releases an item or keyboard selection is moved so the item
- * is physically unhighlighted. The @p event_info parameter is the item that
- * was unhighlighted.
- * - @c "focused" - When the genlist has received focus. (since 1.8)
- * - @c "unfocused" - When the genlist has lost focus. (since 1.8)
- * - @c "item,focused" - When the genlist item has recieved focus. (since 1.10)
- * - @c "item,unfocused" - When the genlist item has lost focus. (since 1.10)
- *
- *
- * Supported elm_object_item common APIs
- * @li @ref elm_object_item_part_content_get
- * @li @ref elm_object_item_part_text_get
- * @li @ref elm_object_item_disabled_set
- * @li @ref elm_object_item_disabled_get
- * @li @ref elm_object_item_signal_emit
- *
- * Unsupported elm_object_item common APIs due to the genlist concept.
+ * - @c "tree,effect,finished" - This is called when the genlist tree effect is finished.
+ * - @c "highlighted" - This is called when an item in the list is pressed and highlighted.
+ * The @a event_info parameter is the item that is highlighted.
+ * - @c "unhighlighted" - This is called when an item in the list is unpressed and unhighlighted.
+ * The @a event_info parameter is the item that is unhighlighted.
+ *
+ *
+ * Supported common elm_object_item APIs.
+ * @li @ref elm_object_item_part_content_get()
+ * @li @ref elm_object_item_part_text_get()
+ * @li @ref elm_object_item_disabled_set()
+ * @li @ref elm_object_item_disabled_get()
+ * @li @ref elm_object_item_signal_emit()
+ *
+ * Unsupported common elm_object_item APIs as per the genlist concept.
* Genlist fills content/text according to the appropriate callback functions.
- * Please use elm_genlist_item_update() or elm_genlist_item_fields_update()
+ * Use elm_genlist_item_update() or elm_genlist_item_fields_update()
* instead.
- * @li @ref elm_object_item_part_content_set
- * @li @ref elm_object_item_part_content_unset
- * @li @ref elm_object_item_part_text_set
+ * @li @ref elm_object_item_part_content_set()
+ * @li @ref elm_object_item_part_content_unset()
+ * @li @ref elm_object_item_part_text_set()
*
- * @section Genlist_Examples Examples
+ * @{
+ */
+
+#define ELM_GENLIST_ITEM_CLASS_VERSION ELM_GEN_ITEM_CLASS_VERSION
+#define ELM_GENLIST_ITEM_CLASS_HEADER ELM_GEN_ITEM_CLASS_HEADER
+
+/**
+ * @brief Enumeration that defines whether the item is of a special type (has subitems or it's the
+ * index of a group), or it is just a simple item.
+ */
+typedef enum
+{
+ ELM_GENLIST_ITEM_NONE = 0, /**< Simple item */
+ ELM_GENLIST_ITEM_TREE = (1 << 0), /**< This may be expanded and may have child items */
+ ELM_GENLIST_ITEM_GROUP = (1 << 1), /**< The index item of a group of items. This item can have child items */
+
+ ELM_GENLIST_ITEM_MAX = (1 << 2)
+} Elm_Genlist_Item_Type;
+
+/**
+ * @brief Enumeration that defines the type of the item field.
+ * @remarks It is used while updating the item field.
+ * @remarks It can be used for updating multi fields.
+ */
+typedef enum
+{
+ ELM_GENLIST_ITEM_FIELD_ALL = 0, /**< The item contains all fields */
+ ELM_GENLIST_ITEM_FIELD_TEXT = (1 << 0), /**< The item contains a text field */
+ ELM_GENLIST_ITEM_FIELD_CONTENT = (1 << 1), /**< The item contains a content field */
+ ELM_GENLIST_ITEM_FIELD_STATE = (1 << 2) /**< The item contains a state field */
+} Elm_Genlist_Item_Field_Type;
+
+/**
+ * @brief Enumeration that defines where to position the item in the genlist.
+ */
+typedef enum
+{
+ ELM_GENLIST_ITEM_SCROLLTO_NONE = 0, /**< Scrolls to nowhere */
+ ELM_GENLIST_ITEM_SCROLLTO_IN = (1 << 0), /**< Scrolls to the nearest viewport */
+ ELM_GENLIST_ITEM_SCROLLTO_TOP = (1 << 1), /**< Scrolls to the top of the viewport */
+ ELM_GENLIST_ITEM_SCROLLTO_MIDDLE = (1 << 2) /**< Scrolls to the middle of the viewport */
+} Elm_Genlist_Item_Scrollto_Type;
+
+/**
+ * @see Elm_Gen_Item_Class
+ */
+typedef Elm_Gen_Item_Class Elm_Genlist_Item_Class;
+
+/**
+ * @see Elm_Gen_Item_Text_Get_Cb
+ */
+typedef Elm_Gen_Item_Text_Get_Cb Elm_Genlist_Item_Text_Get_Cb;
+
+/**
+ * @see Elm_Gen_Item_Content_Get_Cb
+ */
+typedef Elm_Gen_Item_Content_Get_Cb Elm_Genlist_Item_Content_Get_Cb;
+
+/**
+ * @see Elm_Gen_Item_State_Get_Cb
+ */
+typedef Elm_Gen_Item_State_Get_Cb Elm_Genlist_Item_State_Get_Cb;
+
+/**
+ * @see Elm_Gen_Item_Del_Cb
+ */
+typedef Elm_Gen_Item_Del_Cb Elm_Genlist_Item_Del_Cb;
+
+/**
+ * @brief Adds a new genlist widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new genlist widget on the canvas.
+ *
+ * @since_tizen 2.3
*
- * Here is a list of examples that use the genlist, trying to show some of
- * its capabilities:
- * - @ref genlist_example_01
- * - @ref genlist_example_02
- * - @ref genlist_example_03
- * - @ref genlist_example_04
- * - @ref genlist_example_05
+ * @param[in] parent The parent object
+ * @return A new genlist widget handle, otherwise @c NULL in case of an error
+ *
+ * @see elm_genlist_item_append()
+ * @see elm_object_item_del()
+ * @see elm_genlist_clear()
*/
+EAPI Evas_Object *elm_genlist_add(Evas_Object *parent);
/**
- * @addtogroup Genlist
- * @{
+ * @brief Removes all items from a given genlist widget.
+ *
+ * @details This removes (and deletes) all items in @a obj, making it empty.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ *
+ * @see elm_object_item_del() to remove just one item.
+ */
+EAPI void elm_genlist_clear(Evas_Object *obj);
+
+/**
+ * @brief Enables or disables multi-selection in the genlist.
+ *
+ * @details This enables (@c EINA_TRUE) or disables (@c EINA_FALSE) multi-selection in
+ * the list. This allows more than @c 1 item to be selected. To retrieve the list
+ * of selected items, use elm_genlist_selected_items_get().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @param[in] multi The boolean value that enables or disables multi-selection \n
+ * Default is disabled.
+ *
+ * @see elm_genlist_selected_items_get()
+ * @see elm_genlist_multi_select_get()
+ */
+EAPI void elm_genlist_multi_select_set(Evas_Object *obj, Eina_Bool multi);
+
+/**
+ * @brief Gets whether multi-selection in genlist is enabled or disabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return The boolean value that indicates whether multi-selection is enabled or disabled
+ * (@c EINA_TRUE = enabled/@c EINA_FALSE = disabled). Default is @c EINA_FALSE.
+ *
+ * @see elm_genlist_multi_select_set()
+ */
+EAPI Eina_Bool elm_genlist_multi_select_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the horizontal stretching mode.
+ *
+ * @details This sets the mode used for sizing items horizontally. Valid modes
+ * are #ELM_LIST_LIMIT, #ELM_LIST_SCROLL, and #ELM_LIST_COMPRESS. The default is
+ * ELM_LIST_SCROLL. This mode means that if items are too wide to fit,
+ * the scroller scrolls horizontally. Otherwise items are expanded
+ * to fill the width of the viewport of the scroller. If it is
+ * ELM_LIST_LIMIT, items are expanded to the viewport width and
+ * limited to that size. If it is ELM_LIST_COMPRESS, the item width is
+ * fixed (restricted to a minimum of) to the list width when calculating its
+ * size in order to allow the height to be calculated based on it. This allows,
+ * for instance, a text block to wrap lines if the Edje part is configured with
+ * "text.min: 0 1".
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks ELM_LIST_COMPRESS makes list resize slower as it
+ * recalculates every item height again whenever the list width
+ * changes
+ * @remarks The homogeneous mode is so that all items in the genlist are of the same
+ * width/height. With ELM_LIST_COMPRESS, genlist items are initialized fast.
+ * However, there are no sub-objects in the genlist which can be
+ * on the flying resizable (such as TEXTBLOCK). If so, then some dynamic
+ * resizable objects in the genlist would not be diplayed properly.
+ *
+ * @param[in] obj The genlist object
+ * @param[in] mode The mode to use (either #ELM_LIST_SCROLL or #ELM_LIST_LIMIT)
+ *
+ * @see elm_genlist_mode_get()
+ */
+EAPI void elm_genlist_mode_set(Evas_Object *obj, Elm_List_Mode mode);
+
+/**
+ * @brief Gets the horizontal stretching mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return The mode to use
+ * (#ELM_LIST_LIMIT, #ELM_LIST_SCROLL)
+ *
+ * @see elm_genlist_mode_set()
+ */
+EAPI Elm_List_Mode elm_genlist_mode_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Enables or disables horizontal and vertical bouncing effect.
+ *
+ * @details This enables or disables the scroller bouncing effect for the
+ * genlist. See elm_scroller_bounce_set() for details.
+ *
+ * @param obj The genlist object
+ * @param h_bounce The boolean value that allows horizontal bouncing (@c EINA_TRUE = on, @c
+ * EINA_FALSE = off) \n
+ * Default is @c EINA_FALSE.
+ * @param v_bounce The boolean value that allows vertical bouncing (@c EINA_TRUE = on, @c
+ * EINA_FALSE = off) \n
+ * Default is @c EINA_TRUE.
+ *
+ * @deprecated Use elm_scroller_bounce_set() instead.
+ *
+ * @see elm_scroller_bounce_set()
+ * @see elm_genlist_bounce_get()
+ */
+EINA_DEPRECATED EAPI void elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
+
+/**
+ * @internal
+ *
+ * @brief Gets whether the horizontal and vertical bouncing effect is enabled.
+ *
+ * @param obj The genlist object
+ * @param h_bounce The pointer to a bool that indicates if horizontal bouncing is set
+ * @param v_bounce The pointer to a bool that indicates if vertical bouncing is set
+ *
+ * @deprecated Use elm_scroller_bounce_get() instead.
+ *
+ * @see elm_scroller_bounce_get()
+ * @see elm_genlist_bounce_set()
+ */
+EINA_DEPRECATED EAPI void elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
+
+/**
+ * @brief Appends a new item to a given genlist widget.
+ *
+ * @details This adds the given item to the end of the list or the end of
+ * the children list if the @a parent is given.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @param[in] itc The item class for the item
+ * @param[in] data The item data
+ * @param[in] parent The parent item, otherwise @c NULL if there is no parent item
+ * @param[in] type The item type
+ * @param[in] func The convenience function that is called when the item is selected
+ * @param[in] func_data The data passed to @a func mentioned above
+ * @return A handle to the added item, otherwise @c NULL if it is not possible
+ *
+ * @see elm_genlist_item_prepend()
+ * @see elm_genlist_item_insert_before()
+ * @see elm_genlist_item_insert_after()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_genlist_item_append(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * @brief Prepends a new item to a given genlist widget.
+ *
+ * @details This adds an item to the beginning of the list or beginning of the
+ * children of the parent if given.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @param[in] itc The item class for the item
+ * @param[in] data The item data
+ * @param[in] parent The parent item, otherwise @c NULL if there is no parent item
+ * @param[in] type The item type
+ * @param[in] func The convenience function that is called when the item is selected
+ * @param[in] func_data The data passed to @a func mentioned above
+ * @return A handle to the added item, otherwise @c NULL if it is not possible
+ *
+ * @see elm_genlist_item_append()
+ * @see elm_genlist_item_insert_before()
+ * @see elm_genlist_item_insert_after()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_genlist_item_prepend(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * @brief Inserts an item before another in a genlist widget.
+ *
+ * @details This inserts an item before another in the list. It is the
+ * same tree level or group as the item before which it is inserted.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @param[in] itc The item class for the item
+ * @param[in] data The item data
+ * @param[in] parent The parent item, otherwise @c NULL if there is no parent item
+ * @param[in] before The item before which to place this new one
+ * @param[in] type The item type
+ * @param[in] func The convenience function that is called when the item is selected
+ * @param[in] func_data The data passed to @a func mentioned above
+ * @return A handle to the item added, otherwise @c NULL if it is not possible
+ *
+ * @see elm_genlist_item_append()
+ * @see elm_genlist_item_prepend()
+ * @see elm_genlist_item_insert_after()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_genlist_item_insert_before(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Object_Item *before, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * @brief Inserts an item after another in a genlist widget.
+ *
+ * @details This inserts an item after another in the list. It is in the
+ * same tree level or group as the item after which it is inserted.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @param[in] itc The item class for the item
+ * @param[in] data The item data
+ * @param[in] parent The parent item, otherwise @c NULL if there is no parent item
+ * @param[in] after The item after which to place this new one
+ * @param[in] type The item type
+ * @param[in] func The convenience function that is called when the item is selected
+ * @param[in] func_data The data passed to @a func mentioned above
+ * @return A handle to the item added, otherwise @c NULL if it is not possible
+ *
+ * @see elm_genlist_item_append()
+ * @see elm_genlist_item_prepend()
+ * @see elm_genlist_item_insert_before()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_genlist_item_insert_after(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Object_Item *after, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * @brief Inserts a new item into the sorted genlist object.
+ *
+ * @details This inserts an item in the genlist based on a user defined comparison
+ * function. The two arguments passed to the function @a func are genlist item
+ * handles to compare.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @param[in] itc The item class for the item
+ * @param[in] data The item data
+ * @param[in] parent The parent item, otherwise @c NULL if there is no parent item
+ * @param[in] type The item type
+ * @param[in] comp The function called for sorting
+ * @param[in] func The convenience function that is called when the item is selected
+ * @param[in] func_data The data passed to @a func mentioned above
+ * @return A handle to the item added, otherwise @c NULL if it is not possible
+ *
+ * @see elm_genlist_item_append()
+ * @see elm_genlist_item_prepend()
+ * @see elm_genlist_item_insert_after()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_genlist_item_sorted_insert(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Type type, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data);
+
+/* Operations to retrieve existing items */
+/**
+ * @brief Gets the selected item in the genlist.
+ *
+ * @details This gets the selected item in the list (if multi-selection is enabled, only
+ * the item that is first selected in the list is returned, which is not very
+ * useful, so see elm_genlist_selected_items_get() to know when multi-selection is
+ * used).
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If no item is selected, @c NULL is returned.
+ *
+ * @param[in] obj The genlist object
+ * @return The selected item, otherwise @c NULL if none are selected
+ *
+ * @see elm_genlist_selected_items_get()
+ */
+EAPI Elm_Object_Item *elm_genlist_selected_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets a list of selected items in the genlist.
+ *
+ * @details It returns a list of selected items. This list pointer is only valid as
+ * long as the selection doesn't change (no items are selected or unselected, or
+ * unselected implicitly by deletion). The list contains genlist item
+ * pointers. The order of the items in this list is the order in which they were
+ * selected, i.e. the first item in this list is the first item that is
+ * selected, and so on.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If not in the multi-select mode, use
+ * elm_genlist_selected_item_get() instead.
+ *
+ * @param[in] obj The genlist object
+ * @return The list of selected items, otherwise @c NULL if none are selected
+ *
+ * @see elm_genlist_multi_select_set()
+ * @see elm_genlist_selected_item_get()
+ */
+EAPI Eina_List *elm_genlist_selected_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets a list of realized items in the genlist.
+ *
+ * @details This returns a list of realized items in the genlist. The list
+ * contains genlist item pointers. The list must be freed by the
+ * caller when done with eina_list_free(). The item pointers in the
+ * list are only valid as long as those items are not deleted or the
+ * genlist is not deleted.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return The list of realized items, otherwise @c NULL if none are realized
+ *
+ * @see elm_genlist_realized_items_update()
+ */
+EAPI Eina_List *elm_genlist_realized_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the first item in the genlist.
+ *
+ * @details This returns the first item in the list.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return The first item, otherwise @c NULL if there are no items
+ */
+EAPI Elm_Object_Item *elm_genlist_first_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the last item in the genlist.
+ *
+ * @details This returns the last item in the list.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return The last item, otherwise @c NULL if there are no items
+ */
+EAPI Elm_Object_Item *elm_genlist_last_item_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Sets the scrollbar policy.
+ *
+ * @details This sets the scrollbar visibility policy for the given genlist
+ * 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 at all times, and #ELM_SCROLLER_POLICY_OFF always keeps it off.
+ * This applies for the horizontal and vertical scrollbars respectively.
+ * The default is #ELM_SCROLLER_POLICY_AUTO.
+ *
+ * @param obj The genlist object
+ * @param policy_h The horizontal scrollbar policy
+ * @param policy_v The vertical scrollbar policy
+ *
+ * @deprecated Use elm_scroller_policy_set() instead.
+ *
+ * @see elm_scroller_policy_set()
+ */
+EINA_DEPRECATED EAPI void elm_genlist_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
+
+/**
+ * @internal
+ *
+ * @brief Gets the scrollbar policy.
+ *
+ * @param obj The genlist object
+ * @param policy_h The pointer to store the horizontal scrollbar policy
+ * @param policy_v The pointer to store the vertical scrollbar policy
+ *
+ * @deprecated Use elm_scroller_policy_get() instead.
+ *
+ * @see elm_scroller_policy_get()
+ */
+EINA_DEPRECATED EAPI void elm_genlist_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
+
+/**
+ * @brief Gets the @b next item in a genlist widget's internal list of items,
+ * given that a handle to one of those items is present.
+ *
+ * @details This returns the item placed after @a it on the container
+ * genlist.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item to fetch next from
+ * @return The item after @a it, otherwise @c NULL if there are none (and
+ * on errors)
+ *
+ * @see elm_genlist_item_prev_get()
+ */
+EAPI Elm_Object_Item *elm_genlist_item_next_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Get the @b previous item in a genlist widget's internal list of items,
+ * given that a handle to one of those items is present.
+ *
+ * @details This returns the item placed before @a it on the container
+ * genlist.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item to fetch previous from
+ * @return The item before @a it, otherwise @c NULL if there are none (and
+ * on errors)
+ *
+ * @see elm_genlist_item_next_get()
+ */
+EAPI Elm_Object_Item *elm_genlist_item_prev_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets whether a given genlist item is selected.
+ *
+ * @details This sets the selected state of an item. If multi-selection is
+ * not enabled on the containing genlist and @a selected is @c
+ * EINA_TRUE, any previously selected item gets
+ * unselected in favor of this new one.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item
+ * @param[in] selected If @c EINA_TRUE it is selected,
+ * otherwise @c EINA_FALSE to unselect it
+ *
+ * @see elm_genlist_item_selected_get()
+ */
+EAPI void elm_genlist_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * @brief Gets whether a given genlist item is selected.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item
+ * @return @c EINA_TRUE if it's selected, otherwise @c EINA_FALSE
+ *
+ * @see elm_genlist_item_selected_set()
+ */
+EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Shows the portion of a genlist's internal list containing a given
+ * item, immediately.
+ *
+ * @details This causes genlist to jump to the given item @a it and display it (by
+ * jumping to that position), if it is not fully visible.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item to display
+ * @param[in] type The position to bring the given item to
+ * @ref Elm_Genlist_Item_Scrollto_Type
+ *
+ * @see elm_genlist_item_bring_in()
+ */
+EAPI void elm_genlist_item_show(Elm_Object_Item *it, Elm_Genlist_Item_Scrollto_Type type);
+
+/**
+ * @brief Animatedly brings a given item to the visible area of a genlist.
+ *
+ * @details This causes genlist to jump to the given item @a it and display it (by
+ * animatedly scrolling), if it is not fully visible.
+ * This may use animation and may take some time.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item to display
+ * @param[in] type The position to bring the given item to
+ * @ref Elm_Genlist_Item_Scrollto_Type
+ *
+ * @see elm_genlist_item_show()
+ */
+EAPI void elm_genlist_item_bring_in(Elm_Object_Item *it, Elm_Genlist_Item_Scrollto_Type type);
+
+/**
+ * @brief Updates the content of an item.
+ *
+ * @details This updates an item by calling all the item class functions again
+ * to get the content, text, and states. Use this when the original
+ * item data has changed and the changes are desired to reflect.
+ *
+ * Use elm_genlist_realized_items_update() to update already realized
+ * items.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This also updates the internal genlist item object(edje_object as of now).
+ * So when this is called, between mouse down and mouse up, mouse up event is
+ * ignored because edje_object is deleted and created again by this API. If
+ * you want to avoid this, use @ref elm_genlist_item_fields_update.
+ *
+ * @param[in] it The item
+ *
+ * @see elm_genlist_realized_items_update()
+ */
+EAPI void elm_genlist_item_update(Elm_Object_Item *it);
+
+/**
+ * @brief Updates the item class of an item.
+ *
+ * @details This sets another class of the item, changing the way it is
+ * displayed. After changing the item class, elm_genlist_item_update() is
+ * called on the item @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item
+ * @param[in] itc The item class for the item
+ */
+EAPI void elm_genlist_item_item_class_update(Elm_Object_Item *it, const Elm_Genlist_Item_Class *itc);
+
+/**
+ * @brief Gets the genlist item class for the given genlist item.
+ *
+ * @details This returns the Genlist_Item_Class for the given item. It can be used to
+ * examine the function pointers and item style.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item
+ * @return The item class
+ */
+EAPI const Elm_Genlist_Item_Class *elm_genlist_item_item_class_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the index of the item. It is only valid once it is displayed.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item
+ * @return The position inside the list of items
+ */
+EAPI int elm_genlist_item_index_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Updates the content of all the realized items.
+ *
+ * @details This updates all the realized items by calling all the item class functions again
+ * to get the content, text and states. Use this when the original
+ * item data has changed and the changes are desired to reflect.
+ *
+ * To update just one item, use elm_genlist_item_update().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ *
+ * @see elm_genlist_realized_items_get()
+ * @see elm_genlist_item_update()
+ */
+EAPI void elm_genlist_realized_items_update(Evas_Object *obj);
+
+/**
+ * @brief Returns the number of items that are currently in a list.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This behavior is O(1) and includes items which may or may not be realized.
+ *
+ * @param[in] obj The list
+ * @return The total number of items in the list
+ */
+EAPI unsigned int elm_genlist_items_count(const Evas_Object *obj);
+
+/**
+ * @brief Creates a new genlist item class in a given genlist widget.
+ *
+ * @details This adds a genlist item class for the genlist widget. When adding an item,
+ * the genlist_item_{append, prepend, insert} function needs the item class of the item.
+ * Given callback parameters are used for retrieving {text, content} of
+ * an added item. Set as @c NULL if it's not used.
+ * If there's no available memory, it returns @c NULL.
+ *
+ * @since_tizen 2.3
+ *
+ * @return Newly allocated genlist item class
+ *
+ * @see elm_genlist_item_class_free()
+ * @see elm_genlist_item_append()
+ */
+EAPI Elm_Genlist_Item_Class *elm_genlist_item_class_new(void);
+
+/**
+ * @brief Removes an item class from a given genlist widget.
+ *
+ * @details This removes an item class from the genlist widget.
+ * Whenever it has no more references to it, the item class is going to be freed.
+ * Otherwise it just decreases its reference count.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] itc The item class to be removed
+ *
+ * @see elm_genlist_item_class_new()
+ * @see elm_genlist_item_class_ref()
+ * @see elm_genlist_item_class_unref()
*/
+EAPI void elm_genlist_item_class_free(Elm_Genlist_Item_Class *itc);
-#include <elm_genlist_common.h>
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_genlist_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_genlist_legacy.h>
-#endif
+/**
+ * @brief Increments the object reference count for the item class.
+ *
+ * @details This API just increases its reference count for item class management.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] itc The given item class object to reference
+ *
+ * @see elm_genlist_item_class_unref()
+ */
+EAPI void elm_genlist_item_class_ref(Elm_Genlist_Item_Class *itc);
/**
+ * @brief Decrements the object reference count for the item class.
+ *
+ * @details This API just decreases its reference count for item class management.
+ * Reference count can't be less than @c 0.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] itc The given item class object to reference
+ *
+ * @see elm_genlist_item_class_ref()
+ * @see elm_genlist_item_class_free()
+ */
+EAPI void elm_genlist_item_class_unref(Elm_Genlist_Item_Class *itc);
+
+/**
+ * @brief Sets the text to be shown in a given genlist item's tooltips.
+ *
+ * @details This call is used to setup the text to be used as a tooltip for that item
+ * (analogous to elm_object_tooltip_text_set(), but are item
+ * tooltips with higher precedence than object tooltips). It can
+ * have only one tooltip at a time, so any previous tooltip data
+ * gets removed.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks In order to set content or something else as a tooltip, see
+ * elm_genlist_item_tooltip_content_cb_set().
+ *
+ * @param[in] it The genlist item
+ * @param[in] text The text to set in the content
+ */
+EAPI void elm_genlist_item_tooltip_text_set(Elm_Object_Item *it, const char *text);
+
+/**
+ * @brief Sets the content to be shown in a given genlist item's tooltips.
+ *
+ * @details This call is used to setup the tooltip's content to @a it
+ * (analogous to elm_object_tooltip_content_cb_set(), but are
+ * item tooltips with higher precedence than object tooltips). It
+ * can have only one tooltip at a time, so any previous tooltip
+ * content gets removed. @a func (with @a data) is called
+ * every time Elementary needs to display the tooltip. Moreover, it should
+ * return a valid Evas object, which is fully managed by the
+ * tooltip system and gets deleted when the tooltip is gone.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks In order to set just text as a tooltip, see
+ * elm_genlist_item_tooltip_text_set().
+ *
+ * @param[in] it The genlist item
+ * @param[in] func The function returning the tooltip contents
+ * @param[in] data The data to provide to @a func as callback data/context
+ * @param[in] del_cb Called when data is not needed anymore, either when
+ * another callback replaces @a func, the tooltip is unset with
+ * elm_genlist_item_tooltip_unset() or the owner @a it dies \n
+ * This callback receives the given @a data as its first parameter
+ * with @a event_info as the item handle.
+ */
+EAPI void elm_genlist_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
+
+/**
+ * @brief Unsets a tooltip from a given genlist item.
+ *
+ * @details This call removes any tooltip set on @a it. The callback
+ * provided as @a del_cb to
+ * elm_genlist_item_tooltip_content_cb_set() is called to
+ * notify that it is not used anymore (and have resources cleaned, if
+ * needed).
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item from which to remove a previously set tooltip
+ *
+ * @see elm_genlist_item_tooltip_content_cb_set()
+ */
+EAPI void elm_genlist_item_tooltip_unset(Elm_Object_Item *it);
+
+/**
+ * @brief Sets a different @b style for a given genlist item's tooltip.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Tooltips can have <b>alternate styles</b> to be displayed on,
+ * which are defined by the theme set on Elementary. This function
+ * works analogous to elm_object_tooltip_style_set(), but is
+ * applied only to genlist item objects. The default style for
+ * tooltips is @c "default".
+ *
+ * @remarks Before you set a style, you should define a tooltip with
+ * elm_genlist_item_tooltip_content_cb_set() or
+ * elm_genlist_item_tooltip_text_set()
+ *
+ * @param[in] it The genlist item with a tooltip set
+ * @param[in] style The <b>theme style</b> to use on tooltips (e.g. @c
+ * "default", @c "transparent", etc)
+ *
+ * @see elm_genlist_item_tooltip_style_get()
+ */
+EAPI void elm_genlist_item_tooltip_style_set(Elm_Object_Item *it, const char *style);
+
+/**
+ * @brief Gets the style set for a given genlist item's tooltip.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item on which the tooltip is already set
+ * @return style The theme style in use, whose default value is @c "default" \n
+ * If the object does not have a tooltip set,
+ * then @c NULL is returned.
+ *
+ * @see elm_genlist_item_tooltip_style_set()
+ */
+EAPI const char *elm_genlist_item_tooltip_style_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Disables the size restrictions on an object's tooltip.
+ *
+ * @details This function allows a tooltip to expand beyond its parent window's canvas.
+ * It is instead limited only to the size of the display.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The tooltip's anchor object
+ * @param[in] disable If @c EINA_TRUE size restrictions are disabled, otherwise @c EINA_FALSE
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_genlist_item_tooltip_window_mode_set(Elm_Object_Item *it, Eina_Bool disable);
+
+/**
+ * @brief Retrieves the size restriction state of an object's tooltip.
+ *
+ * @details This function returns a value that indicates whether a tooltip is allowed to expand beyond
+ * its parent window's canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It is instead limited only by the size of the display.
+ *
+ * @param[in] it The tooltip's anchor object
+ * @return If @c EINA_TRUE size restrictions are disabled,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_genlist_item_tooltip_window_mode_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the type of mouse pointer/cursor decoration to be displayed
+ * when the mouse pointer is over the given genlist widget item.
+ *
+ * @details This function is analogous to elm_object_cursor_set(), but
+ * the cursor's changing area is restricted to the item's
+ * area, and not the whole widget. Note that item cursors
+ * have precedence over widget cursors, so a mouse over @a
+ * it always shows the @a cursor type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If this function is called twice for an object, a previously set
+ * cursor is unset on the second call.
+ *
+ * @param[in] it The genlist item on which to customize the cursor
+ * @param[in] cursor the cursor type
+ *
+ * @see elm_object_cursor_set()
+ * @see elm_genlist_item_cursor_get()
+ * @see elm_genlist_item_cursor_unset()
+ */
+EAPI void elm_genlist_item_cursor_set(Elm_Object_Item *it, const char *cursor);
+
+/**
+ * @brief Gets the type of mouse pointer/cursor decoration set to be displayed
+ * when the mouse pointer is over the given genlist widget item.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item with a custom cursor set
+ * @return The cursor type, otherwise @c NULL if no custom cursors
+ * are set to @a it (and on errors)
+ *
+ * @see elm_object_cursor_get()
+ * @see elm_genlist_item_cursor_set() for more details
+ * @see elm_genlist_item_cursor_unset()
+ */
+EAPI const char *elm_genlist_item_cursor_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Unsets the custom mouse pointer/cursor decoration set to be
+ * displayed when the mouse pointer is over the given genlist widget
+ * item, thus making it show the @b default cursor again.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use this call to undo any custom settings on this item's cursor
+ * decoration, bringing it back to the default value (no custom style set).
+ *
+ * @param[in] it The genlist item
+ *
+ * @see elm_object_cursor_unset()
+ * @see elm_genlist_item_cursor_set()
+ */
+EAPI void elm_genlist_item_cursor_unset(Elm_Object_Item *it);
+
+/**
+ * @brief Sets a different @b style for a given custom cursor set for a
+ * genlist item.
+ *
+ * @details This function only makes sense when one is using customized mouse
+ * cursor decorations <b>defined in a theme file</b> , which can
+ * have, given a cursor name/type, <b>alternate styles</b> on
+ * it. It is analogous to elm_object_cursor_style_set(), but
+ * is applied only to genlist item objects.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Before you set a cursor style, you should define a
+ * custom cursor on the item using
+ * elm_genlist_item_cursor_set()
+ *
+ * @param[in] it The genlist item with a custom cursor set
+ * @param[in] style The <b>theme style</b> to use (e.g. @c "default",
+ * @c "transparent", etc)
+ *
+ * @see elm_genlist_item_cursor_engine_only_set()
+ * @see elm_genlist_item_cursor_style_get()
+ */
+EAPI void elm_genlist_item_cursor_style_set(Elm_Object_Item *it, const char *style);
+
+/**
+ * @brief Gets the current @b style set for a given genlist item's custom
+ * cursor.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item with custom cursor set
+ * @return style The cursor style in use /n
+ * If the object does not have a cursor set, then @c NULL is returned.
+ *
+ * @see elm_genlist_item_cursor_style_set()
+ */
+EAPI const char *elm_genlist_item_cursor_style_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets whether the (custom) cursor for a given genlist item should be
+ * searched in its theme or should only rely on the
+ * rendering engine.
+ *
+ * @details This call is used only if you have set a custom cursor
+ * for genlist items using elm_genlist_item_cursor_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, cursors are looked for only from those
+ * provided by the rendering engine.
+ *
+ * @param[in] it The item with custom (custom) cursor already set on it
+ * @param[in] engine_only If @c EINA_TRUE look for cursors
+ * only from those provided by the rendering engine,
+ * otherwise @c EINA_FALSE to have them searched on the widget's theme as well
+ */
+EAPI void elm_genlist_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only);
+
+/**
+ * @brief Gets whether the (custom) cursor for a given genlist item is being
+ * searched in its theme or is only relying on the rendering
+ * engine.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item
+ * @return @c EINA_TRUE if cursors are being looked for only from
+ * those provided by the rendering engine,
+ * otherwise @c EINA_FALSE if they are being searched on the widget's theme as well.
+ *
+ * @see elm_genlist_item_cursor_engine_only_set() for more details
+ */
+EAPI Eina_Bool elm_genlist_item_cursor_engine_only_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Enables or disables the homogeneous mode.
+ *
+ * @details This enables the homogeneous mode where items are of the same
+ * height and width so that genlist may perform lazy-loading at its
+ * maximum (which increases the performance for scrolling the list).
+ * In the normal mode, genlist pre-calculates all the items' sizes even
+ * though they are not in use. So items' callbacks are called for more times than
+ * expected. But the homogeneous mode skips the item size pre-calculation
+ * process so items' callbacks are called only when the item is needed.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This also works well with group index.
+ *
+ * @param[in] obj The genlist object
+ * @param[in] homogeneous The boolean value assuming that the items within the genlist are of the
+ * same height and width (@c EINA_TRUE = on, @c EINA_FALSE = off) \n
+ * Default is @c EINA_FALSE.
+ *
+ * @see elm_genlist_mode_set()
+ * @see elm_genlist_homogeneous_get()
+ */
+EAPI void elm_genlist_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous);
+
+/**
+ * @brief Gets whether the homogeneous mode is enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return The boolean value assuming that the items within the genlist are of the same height
+ * and width (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ *
+ * @see elm_genlist_homogeneous_set()
+ */
+EAPI Eina_Bool elm_genlist_homogeneous_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the maximum number of items within an item block.
+ *
+ * @details This configures the block count to tune the target with, for a particular
+ * performance matrix.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A block of objects are used to reduce the number of operations occurring due to
+ * large number of objects on the screen. It can determine the visibility, or if the
+ * object has changed, its theme needs to be updated by doing this kind of
+ * calculation to the entire block, instead of every object.
+ *
+ * @remarks The default value for the block count is enough for most lists, so unless
+ * your sure that you have a lot of objects visible on the screen at the same
+ * time, don't try to change this.
+ *
+ * @param[in] obj The genlist object
+ * @param[in] count The maximum number of items within an item block \n
+ * Default is @c 32.
+ *
+ * @see elm_genlist_block_count_get()
+ * @see @ref Genlist_Implementation
+ */
+EAPI void elm_genlist_block_count_set(Evas_Object *obj, int count);
+
+/**
+ * @brief Gets the maximum number of items within an item block.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return The maximum number of items within an item block
+ *
+ * @see elm_genlist_block_count_set()
+ */
+EAPI int elm_genlist_block_count_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the timeout in seconds for the longpress event.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This option changes the time it takes to send an event @c "longpressed"
+ * after the mouse down signal is sent to the list. If this event occurs, no
+ * @c "clicked" event is sent.
+ *
+ * @remarks If you set the longpress timeout value with this API, your genlist
+ * is not affected by the longpress value of the elementary config value
+ * later.
+ *
+ * @param[in] obj The genlist object
+ * @param[in] timeout The timeout in seconds \n
+ * The default value is elm config value(1.0).
+ *
+ * @see elm_genlist_longpress_timeout_set()
+ */
+EAPI void elm_genlist_longpress_timeout_set(Evas_Object *obj, double timeout);
+
+/**
+ * @brief Gets the timeout in seconds for the longpress event.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return The timeout in seconds
+ *
+ * @see elm_genlist_longpress_timeout_get()
+ */
+EAPI double elm_genlist_longpress_timeout_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the item that is at the x, y canvas coordinates.
+ *
+ * @details This returns the item at the given coordinates (which are canvas
+ * relative, not object-relative). If an item is at that coordinate,
+ * that item handle is returned, and if @a posret is not @c NULL, the
+ * integer it is pointing to is set to either @c -1, @c 0, or @c 1, depending on whether
+ * the coordinate is on the upper portion of that item (-1), in the
+ * middle section (0), or on the lower part (1). If @c NULL is returned as
+ * an item (no item found there), then posret may indicate @c -1 or @c 1
+ * depending on whether the coordinate is above or below the items in
+ * the genlist respectively.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @param[in] x The input x coordinate
+ * @param[in] y The input y coordinate
+ * @param[out] posret The position relative to the returned item
+ * @return The item at the coordinates, otherwise @c NULL if there are none
+ */
+EAPI Elm_Object_Item *elm_genlist_at_xy_item_get(const Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *posret);
+
+/**
+ * @brief Gets the parent item of the given genlist item.
+ *
+ * @details This returns the item that is specified as the parent of the item @a it in
+ * elm_genlist_item_append() and insertion related functions.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item
+ * @return The parent of the item, otherwise @c NULL if it has no parent item
+ */
+EAPI Elm_Object_Item *elm_genlist_item_parent_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Removes all sub-items (children) of the given item.
+ *
+ * @details This removes all items (and their descendants) that are children of the
+ * given item @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item
+ *
+ * @see elm_genlist_clear()
+ * @see elm_object_item_del()
+ */
+EAPI void elm_genlist_item_subitems_clear(Elm_Object_Item *it);
+
+/**
+ * @brief Sets the expanded state of an item.
+ *
+ * @details This function flags the item of type #ELM_GENLIST_ITEM_TREE as
+ * either expanded or not expanded.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The theme responds to this change visually, and a signal @c "expanded" or
+ * @c "contracted" is sent from the genlist with a pointer to the item that
+ * has been expanded/contracted.
+ *
+ * @remarks Calling this function won't show or hide any child of this item (if it is
+ * a parent). You must manually delete and create them on the callbacks of
+ * the @c "expanded" or @c "contracted" signals.
+ *
+ * @param[in] it The genlist item
+ * @param[in] expanded The expanded state (@c EINA_TRUE if expanded, @c EINA_FALSE if not expanded)
+ *
+ * @see elm_genlist_item_expanded_get()
+ */
+EAPI void elm_genlist_item_expanded_set(Elm_Object_Item *it, Eina_Bool expanded);
+
+/**
+ * @brief Gets the expanded state of an item.
+ *
+ * @details This gets the expanded state of an item.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item
+ * @return The expanded state
+ *
+ * @see elm_genlist_item_expanded_set()
+ */
+EAPI Eina_Bool elm_genlist_item_expanded_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the depth of the expanded item
+ *
+ * @param[in] it The genlist item object
+ * @return The depth of the expanded item
+ */
+EAPI int elm_genlist_item_expanded_depth_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Unsets all the content fetched by the item class.
+ *
+ * @details This instructs genlist to release references to content in the item,
+ * meaning that they are longer managed by genlist and are
+ * floating "orphans" that can be re-used elsewhere if the user wants
+ * to.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item
+ * @param[in] l The content list to return
+ */
+EAPI void elm_genlist_item_all_contents_unset(Elm_Object_Item *it, Eina_List **l);
+
+/**
+ * @brief Promotes an item to the top of the list.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item
+ */
+EAPI void elm_genlist_item_promote(Elm_Object_Item *it);
+
+/**
+ * @brief Demotes an item to the end of the list.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item
+ */
+EAPI void elm_genlist_item_demote(Elm_Object_Item *it);
+
+/**
+ * @brief Updates a part of an item.
+ *
+ * @details This updates an item part by calling the item's fetching functions again
+ * to get the content, text, and states. Use this when the original
+ * item data has changed and the changes are desired to reflect.
+ * Second part's argument is used for globbing to match '*', '?', and '.'
+ * It can be used for updating multi fields.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use elm_genlist_realized_items_update() to update an item's all
+ * property.
+ *
+ * @param[in] it The genlist item
+ * @param[in] parts The name of the item part
+ * @param[in] itf The item part type
+ *
+ * @see elm_genlist_item_update()
+ */
+EAPI void elm_genlist_item_fields_update(Elm_Object_Item *it, const char *parts, Elm_Genlist_Item_Field_Type itf);
+
+/**
+ * @internal
+ * @remarks Tizen no feature
+ *
+ * @brief Activates the genlist mode on an item.
+ *
+ * @remarks A genlist mode is a different way of selecting an item. Once a mode is
+ * activated on an item, any other selected item is immediately unselected.
+ * This feature provides an easy way of implementing a new kind of animation
+ * for selecting an item, without having to entirely rewrite the item style
+ * theme. However, the elm_genlist_selected_* API can't be used to get what
+ * item is activated for a mode.
+ *
+ * @remarks The current item style is still being used, but applying a genlist mode to
+ * an item selects it by using a different kind of animation.
+ *
+ * @remarks The current active item for a mode can be found by
+ * elm_genlist_decorated_item_get().
+ *
+ * @remarks The characteristics of a genlist mode are:
+ * - Only one mode can be actived at a time, and for only one item.
+ * - Genlist handles deactivating other items when one item is activated.
+ * - A mode is defined in the genlist theme (edc), and more modes can easily
+ * be added.
+ * - A mode style and the genlist item style are different things. They
+ * can be combined to provide a default style to the item, with some kind
+ * of animation for that item when the mode is activated.
+ *
+ * @remarks When a mode is activated on an item, a new view for that item is created.
+ * The theme of this mode defines the animation that is be used to transit
+ * the item from the old view to the new view. This second (new) view remains
+ * active for that item while the mode is active on the item, and gets
+ * destroyed after the mode is totally deactivated from that item.
+ *
+ * @param[in] it The genlist item
+ * @param[in] decorate_it_type The mode name
+ * @param[in] decorate_it_set The boolean value to define the set or unset mode
+ *
+ * @see elm_genlist_mode_get()
+ * @see elm_genlist_decorated_item_get()
+ */
+EAPI void elm_genlist_item_decorate_mode_set(Elm_Object_Item *it, const char *decorate_it_type, Eina_Bool decorate_it_set);
+
+/**
+ * @internal
+ * @remarks Tizen no feature
+ *
+ * @brief Get the item's decorate mode.
+ *
+ * @details This function just returns the name of the item's decorate mode.
+ *
+ * @param[in] it The genlist item
+ *
+ * @see elm_genlist_item_decorate_mode_set()
+ * @see elm_genlist_decorated_item_get()
+ */
+EAPI const char *elm_genlist_item_decorate_mode_get(const Elm_Object_Item *it);
+
+/**
+ * @internal
+ * @remarks Tizen no feature
+ *
+ * @brief Gets the active genlist mode item.
+ *
+ * @details This function returns the item that is activated with a mode, by the
+ * function elm_genlist_item_decorate_mode_set().
+ *
+ * @param[in] obj The genlist object
+ * @return The active item for that current mode, otherwise @c NULL if no item is
+ * activated with a mode
+ *
+ * @see elm_genlist_item_decorate_mode_set()
+ * @see elm_genlist_mode_get()
+ */
+EAPI Elm_Object_Item *elm_genlist_decorated_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the reorder mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks After turning on the reorder mode, longpress on a normal item triggers
+ * reordering of the item. You can move the item up and down. However, reordering
+ * does not work with group items.
+ *
+ * @param[in] obj The genlist object
+ * @param[in] reorder_mode The reorder mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ */
+EAPI void elm_genlist_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode);
+
+/**
+ * @brief Gets the reorder mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return The reorder mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ */
+EAPI Eina_Bool elm_genlist_reorder_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the item type.
+ *
+ * @details This function returns the item type.
+ * If it fails, the return value is @c ELM_GENLIST_ITEM_MAX
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item
+ * @return The item type
+ */
+EAPI Elm_Genlist_Item_Type elm_genlist_item_type_get(const Elm_Object_Item *it);
+
+/**
+ * @internal
+ * @remarks Tizen no feature
+ *
+ * @brief Sets the genlist decorate mode.
+ *
+ * @details This sets the genlist decorate mode for all items.
+ *
+ * @param obj The genlist object
+ * @param decorated The decorate mode status
+ * (@c EINA_TRUE = decorate mode, @c EINA_FALSE = normal mode
+ */
+EAPI void elm_genlist_decorate_mode_set(Evas_Object *obj, Eina_Bool decorated);
+
+/**
+ * @internal
+ * @remarks Tizen no feature
+ *
+ * @brief Gets the genlist decorate mode.
+ *
+ * @param obj The genlist object
+ * @return The decorate mode status
+ * (@c EINA_TRUE = decorate mode, @c EINA_FALSE = normal mode
+ */
+EAPI Eina_Bool elm_genlist_decorate_mode_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen no feature
+ *
+ * @brief Sets the flip state of a given genlist item.
+ *
+ * @details This function sets the flip state of a given genlist item.
+ * The flip mode overrides the current item object.
+ * It can be used for on-the-fly item replace.
+ * The flip mode can be used with/without the decorate mode.
+ *
+ * @param it The genlist item object
+ * @param flip The flip mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ *
+ * @see elm_genlist_item_flip_get()
+ */
+
+EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool flip);
+
+/**
+ * @internal
+ * @remarks Tizen no feature
+ *
+ * @brief Gets the flip state of a given genlist item.
+ *
+ * @details This function returns the flip state of a given genlist item.
+ * If the parameter is invalid, it returns @c EINA_FALSE.
+ *
+ * @param it The genlist item object
+ *
+ * @see elm_genlist_item_flip_set()
+ */
+
+EAPI Eina_Bool elm_genlist_item_flip_get(const Elm_Object_Item *it);
+
+/**
+ * @internal
+ * @remarks Tizen no feature
+ *
+ * @brief Sets the genlist tree effect.
+ *
+ * @param obj The genlist object
+ * @param enabled The tree effect status
+ * (@c EINA_TRUE = enabled, @c EINA_FALSE = disabled
+ */
+EAPI void elm_genlist_tree_effect_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @internal
+ * @remarks Tizen no feature
+ *
+ * @brief Gets the genlist tree effect.
+ *
+ * @param obj The genlist object
+ * @return The tree effect status
+ * (@c EINA_TRUE = enabled, @c EINA_FALSE = disabled
+ */
+EAPI Eina_Bool elm_genlist_tree_effect_enabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the genlist select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks elm_genlist_select_mode_set() changes the item select mode in the genlist widget.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : Items call their selection @a func and
+ * callback on first getting selected. Any further clicks
+ * do nothing, unless you set the always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click calls the selected callbacks.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This turns off the ability to select items
+ * entirely and they neither appear selected nor call selected
+ * callback functions.
+ *
+ * @param[in] obj The genlist object
+ * @param[in] mode The select mode
+ *
+ * @see elm_genlist_select_mode_get()
+ */
+EAPI void elm_genlist_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode);
+
+/**
+ * @brief Gets the genlist select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return The select mode
+ * (If getting the mode fails, it returns @c ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_genlist_select_mode_set()
+ */
+EAPI Elm_Object_Select_Mode elm_genlist_select_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether the genlist items should be highlighted when an item is selected.
+ *
+ * @details This turns on/off the highlight effect when an item is selected and
+ * it gets or does not get highlighted. The selected and clicked
+ * callback functions are still called.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Highlight is enabled by default.
+ *
+ * @param[in] obj The genlist object
+ * @param[in] highlight If @c EINA_TRUE highlighting is enabled,
+ * otherwise @c EINA_FALSE to disable it
+ *
+ * @see elm_genlist_highlight_mode_get().
+ */
+EAPI void elm_genlist_highlight_mode_set(Evas_Object *obj, Eina_Bool highlight);
+
+/**
+ * @brief Gets whether the genlist items should be highlighted when an item is selected.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @return @c EINA_TRUE indicates that items can be highlighted,
+ * otherwise @c EINA_FALSE indicates that they can't \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_genlist_highlight_mode_set()
+ */
+EAPI Eina_Bool elm_genlist_highlight_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the genlist item select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks elm_genlist_select_mode_set() changes the item select mode.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : The item calls their selection @a func and
+ * callback on first getting selected. Any further clicks
+ * do nothing, unless you set the always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click calls the selected callbacks.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select the item
+ * entirely and they neither appear selected nor call selected
+ * callback functions.
+ * - ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY : This applies the no-finger-size rule
+ * with @c ELM_OBJECT_SELECT_MODE_NONE. The no-finger-size rule makes an item
+ * smaller than lower limit. Clickable objects should be bigger than
+ * a human touch point device (your finger) for some touch or
+ * small screen devices. Once it is enabled, the item can be shrunk to a value more than
+ * the predefined finger-size value. And the item is updated.
+ *
+ * @param[in] it The genlist item object
+ * @param[in] mode The select mode
+ *
+ * @see elm_genlist_item_select_mode_get()
+ */
+EAPI void
+elm_genlist_item_select_mode_set(Elm_Object_Item *it,
+ Elm_Object_Select_Mode mode);
+
+/**
+ * @brief Gets the genlist item select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The genlist item object
+ * @return The select mode
+ * (If getting the mode fails, it returns @c ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_genlist_item_select_mode_set()
+ */
+EAPI Elm_Object_Select_Mode
+elm_genlist_item_select_mode_get(const Elm_Object_Item *it);
+
+
+/**
+ * @brief Gets the nth item in a given genlist widget, placed at position @a nth, in
+ * its internal items list.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The genlist object
+ * @param[in] nth The number of the item to grab (@c 0 being the first)
+ *
+ * @return The item stored in @a obj at position @a nth, otherwise @c NULL if there is
+ * no item with that index (and on errors)
+ */
+EAPI Elm_Object_Item *
+elm_genlist_nth_item_get(const Evas_Object *obj, unsigned int nth);
+
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sets the genlist fx mode.
+ *
+ * @remarks This API can be changed or deleted later.
+ *
+ * @remarks This sets the genlist special effects.
+ * Use this only when the genlist effects have to be disabled.
+ *
+ * @remarks In normal cases, don't use this API.
+ * The fx mode is enabled by default.
+ *
+ * @param obj The genlist object
+ * @param fx_mode The fx status
+ * (@c EINA_TRUE = fx mode, @c EINA_FALSE = normal mode)
+ */
+EAPI void
+elm_genlist_fx_mode_set(Evas_Object *obj, Eina_Bool fx_mode);
+
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the genlist fx mode.
+ *
+ * @remarks This API can be changed or deleted later.
+ *
+ * @param obj The genlist object
+ * @return The fx mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ */
+EAPI Eina_Bool
+elm_genlist_fx_mode_get(const Evas_Object *obj);
+
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sets whether a given genlist item is hidden.
+ *
+ * @details This sets the hidden state of an item.
+ *
+ * @param it The genlist item
+ * @param hide If @c EINA_TRUE it hides the item,
+ * otherwise @c EINA_FALSE to show it
+ */
+EAPI void
+elm_genlist_item_hide_set(const Elm_Object_Item *it, Eina_Bool hide);
+
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the genlist item's hidden mode
+ *
+ * @param it The genlist item object
+ * @return The hidden mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ */
+EAPI Eina_Bool
+elm_genlist_item_hide_get(const Elm_Object_Item *it);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sets the genlist realization mode.
+ *
+ * @remarks By default, genlist disables the realization mode and genlists realize and
+ * unrealize some items when needed. If the realization mode is on,
+ * all items are realized when genlist is created and no items are unrealized.
+ * If this mode is on and the content size is changed, the item size
+ * changes accordingly. By default, genlist does not change item sizes
+ * eventhough they can be changed for performance reasons.
+ * This consumes more memory and decrease performance. So if the application
+ * appends many items, do not use the realization mode.
+ *
+ * @param obj The genlist object
+ * @param mode The realization mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ */
+EAPI void
+elm_genlist_realization_mode_set(Evas_Object *obj, Eina_Bool mode);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the genlist realization mode.
+ *
+ * @param obj The genlist object
+ * @return The realization mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ */
+EAPI Eina_Bool
+elm_genlist_realization_mode_get(Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Starts reordering for a specific item. it moves by move event.
+ *
+ * @param item The genlist item object
+ */
+EAPI void
+elm_genlist_item_reorder_start(Elm_Object_Item *item);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Stop reordering and relocate the item at touch released position.
+ * @param item The genlist item object
+ */
+EAPI void
+elm_genlist_item_reorder_stop(Elm_Object_Item *item);
+/**
* @}
*/
diff --git a/src/lib/elm_gesture_layer.h b/src/lib/elm_gesture_layer.h
index adf7dc09a..c30bca857 100644
--- a/src/lib/elm_gesture_layer.h
+++ b/src/lib/elm_gesture_layer.h
@@ -1,6 +1,8 @@
/**
* @defgroup Elm_Gesture_Layer Gesture Layer
- * @ingroup Elementary
+ * @ingroup elm_infra_group
+ *
+ * @brief This provides basic gesture detection.
*
* @image html gesture_layer_inheritance_tree.png
* @image latex gesture_layer_inheritance_tree.eps
@@ -9,57 +11,57 @@
*
* Use Gesture Layer to detect gestures.
* The advantage is that you don't have to implement
- * gesture detection, just set callbacks of gesture state.
- * By using gesture layer we make standard interface.
+ * gesture detection, just set callbacks of the gesture state.
+ * By using the gesture layer we make a standard interface.
*
* In order to use Gesture Layer you start with @ref elm_gesture_layer_add
- * with a parent object parameter.
- * Next 'activate' gesture layer with a @ref elm_gesture_layer_attach
- * call. Usually with same object as target (2nd parameter).
+ * and a parent object parameter.
+ * Next 'activate' the gesture layer with a call to @ref elm_gesture_layer_attach
+ * Usually with the same object as target (2nd parameter).
*
- * Now you need to tell gesture layer what gestures you follow.
+ * Now you need to tell the gesture layer what gestures you follow.
* This is done with @ref elm_gesture_layer_cb_set call.
- * By setting the callback you actually saying to gesture layer:
+ * By setting the callback you are actually telling the gesture layer:
* I would like to know when the gesture @ref Elm_Gesture_Type
- * switches to state @ref Elm_Gesture_State.
+ * switches to the state @ref Elm_Gesture_State.
*
* Next, you need to implement the actual action that follows the input
* in your callback.
*
* Note that if you like to stop being reported about a gesture, just set
- * all callbacks referring this gesture to NULL.
+ * all callbacks referring to this gesture to @c NULL.
* (again with @ref elm_gesture_layer_cb_set)
*
- * The information reported by gesture layer to your callback is depending
+ * The information reported by the gesture layer to your callback is depending
* on @ref Elm_Gesture_Type :
* @ref Elm_Gesture_Taps_Info is the info reported for tap gestures:
* @ref ELM_GESTURE_N_TAPS, @ref ELM_GESTURE_N_LONG_TAPS,
* @ref ELM_GESTURE_N_DOUBLE_TAPS, @ref ELM_GESTURE_N_TRIPLE_TAPS.
*
- * @ref Elm_Gesture_Momentum_Info is info reported for momentum gestures:
+ * @ref Elm_Gesture_Momentum_Info is the info reported for momentum gestures:
* @ref ELM_GESTURE_MOMENTUM.
*
* @ref Elm_Gesture_Line_Info is the info reported for line gestures:
- * (this also contains @ref Elm_Gesture_Momentum_Info internal structure)
+ * (this also contains the @ref Elm_Gesture_Momentum_Info internal structure)
* @ref ELM_GESTURE_N_LINES, @ref ELM_GESTURE_N_FLICKS.
* Note that we consider a flick as a line-gesture that should be completed
- * in flick-time-limit as defined in @ref Config.
+ * in a flick-time-limit as defined in @ref Config.
*
- * @ref Elm_Gesture_Zoom_Info is the info reported for @ref ELM_GESTURE_ZOOM gesture.
+ * @ref Elm_Gesture_Zoom_Info is the info reported for the @ref ELM_GESTURE_ZOOM gesture.
*
- * @ref Elm_Gesture_Rotate_Info is the info reported for @ref ELM_GESTURE_ROTATE gesture.
+ * @ref Elm_Gesture_Rotate_Info is the info reported for the @ref ELM_GESTURE_ROTATE gesture.
*
*
* Gesture Layer Tweaks:
*
- * Note that line, flick, gestures can start without the need to remove fingers from surface.
- * When user fingers rests on same-spot gesture is ended and starts again when fingers moved.
+ * Note that line, flick, gestures can start without the need to remove fingers from the surface.
+ * When the user's fingers rest on the same-spot, the gesture ends and starts again when the fingers are moved.
*
- * Setting glayer_continues_enable to false in @ref Config will change this behavior
- * so gesture starts when user touches (a *DOWN event) touch-surface
- * and ends when no fingers touches surface (a *UP event).
+ * Setting glayer_continues_enable to @c false in @ref Config changes this behavior,
+ * so the gesture starts when the user touches (a *DOWN event) touch-surface
+ * and ends when no fingers touch the surface (a *UP event).
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_disabled_set
* @li @ref elm_object_disabled_get
*
@@ -67,13 +69,617 @@
*
*/
-#include "elm_gesture_layer_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_gesture_layer_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_gesture_layer_legacy.h"
-#endif
+/**
+ * @enum _Elm_Gesture_Type
+ * @brief Enumeration of supported gesture types.
+ */
+enum _Elm_Gesture_Type
+{
+ ELM_GESTURE_FIRST = 0,
+
+ ELM_GESTURE_N_TAPS, /**< N fingers single taps */
+ ELM_GESTURE_N_LONG_TAPS, /**< N fingers single long-taps */
+ ELM_GESTURE_N_DOUBLE_TAPS, /**< N fingers double-single taps */
+ ELM_GESTURE_N_TRIPLE_TAPS, /**< N fingers triple-single taps */
+
+ ELM_GESTURE_MOMENTUM, /**< Reports momentum in the direction of movement */
+
+ ELM_GESTURE_N_LINES, /**< N fingers line gesture */
+ ELM_GESTURE_N_FLICKS, /**< N fingers flick gesture */
+
+ ELM_GESTURE_ZOOM, /**< Zoom */
+ ELM_GESTURE_ROTATE, /**< Rotate */
+
+ ELM_GESTURE_LAST
+};
+
+/**
+ * @typedef Elm_Gesture_Type
+ * @brief This is a convenient macro around #_Elm_Gesture_Type.
+ */
+typedef enum _Elm_Gesture_Type Elm_Gesture_Type;
+
+/**
+ * @enum _Elm_Gesture_State
+ * @brief Enumeration of gesture states.
+ */
+enum _Elm_Gesture_State
+{
+ ELM_GESTURE_STATE_UNDEFINED = -1, /**< Gesture not STARTed */
+ ELM_GESTURE_STATE_START, /**< Gesture STARTed */
+ ELM_GESTURE_STATE_MOVE, /**< Gesture is ongoing */
+ ELM_GESTURE_STATE_END, /**< Gesture has completed */
+ ELM_GESTURE_STATE_ABORT /**< Ongoing gesture has been ABORTed */
+};
+
+/**
+ * @typedef Elm_Gesture_State
+ * @brief This is a convenient macro around #_Elm_Gesture_State
+ */
+typedef enum _Elm_Gesture_State Elm_Gesture_State;
+
+/**
+ * @struct _Elm_Gesture_Taps_Info
+ * @brief The structure type that holds taps info for the user.
+ */
+struct _Elm_Gesture_Taps_Info
+{
+ Evas_Coord x, y; /**< Holds center point between fingers */
+ unsigned int n; /**< Number of fingers tapped */
+ unsigned int timestamp; /**< Event timestamp */
+};
+
+/**
+ * @typedef Elm_Gesture_Taps_Info
+ * @brief The structure type that holds taps info for the user.
+ */
+typedef struct _Elm_Gesture_Taps_Info Elm_Gesture_Taps_Info;
+
+/**
+ * @struct _Elm_Gesture_Momentum_Info
+ * @brief The structure type that holds momentum info for the user.
+ * x1 and y1 are not necessarily in sync
+ * x1 holds the x value of the x direction starting point
+ * and same holds for y1.
+ * This is noticeable when doing V-shape movement.
+ */
+struct _Elm_Gesture_Momentum_Info /* Report line ends, timestamps, and momentum computed */
+{Evas_Coord x1; /**< Final-swipe direction with starting point on X */
+ Evas_Coord y1; /**< Final-swipe direction with starting point on Y */
+ Evas_Coord x2; /**< Final-swipe direction with ending point on X */
+ Evas_Coord y2; /**< Final-swipe direction with ending point on Y */
+
+ unsigned int tx; /**< Timestamp of the start of the final x-swipe */
+ unsigned int ty; /**< Timestamp of the start of the final y-swipe */
+
+ Evas_Coord mx; /**< Momentum on X */
+ Evas_Coord my; /**< Momentum on Y */
+
+ unsigned int n; /**< Number of fingers */
+};
+
+/**
+ * @typedef Elm_Gesture_Momentum_Info
+ * @brief The structure type that holds momentum info for the user.
+ */
+typedef struct _Elm_Gesture_Momentum_Info Elm_Gesture_Momentum_Info;
+
+/**
+ * @struct _Elm_Gesture_Line_Info
+ * @brief The structure type that holds line info for the user.
+ */
+struct _Elm_Gesture_Line_Info /* Report line ends, timestamps, and momentum computed */
+{Elm_Gesture_Momentum_Info momentum; /**< Line momentum info */
+ double angle; /**< Angle (direction) of the lines */
+};
+
+/**
+ * @typedef Elm_Gesture_Line_Info
+ * @brief The structure type that holds line info for the user.
+ */
+typedef struct _Elm_Gesture_Line_Info Elm_Gesture_Line_Info;
+
+/**
+ * @struct _Elm_Gesture_Zoom_Info
+ * @brief The structure type that holds zoom info for the user.
+ */
+struct _Elm_Gesture_Zoom_Info
+{
+ Evas_Coord x, y; /**< Holds zoom center point reported to the user */
+ Evas_Coord radius; /**< Holds radius between fingers reported to the user */
+ double zoom; /**< Zoom value: @c 1.0 means no zoom */
+ double momentum; /**< Zoom momentum: zoom growth per second (NOT YET SUPPORTED) */
+};
+
+/**
+ * @typedef Elm_Gesture_Zoom_Info
+ * @brief The structure type that holds zoom info for the user.
+ */
+typedef struct _Elm_Gesture_Zoom_Info Elm_Gesture_Zoom_Info;
+
+/**
+ * @struct _Elm_Gesture_Rotate_Info
+ * @brief The structure type that holds rotation info for the user.
+ */
+struct _Elm_Gesture_Rotate_Info
+{
+ Evas_Coord x, y; /**< Holds zoom center point reported to the user */
+ Evas_Coord radius; /**< Holds radius between fingers reported to the user */
+ double base_angle; /**< Holds start-angle */
+ double angle; /**< Rotation value: @c 0.0 means no rotation */
+ double momentum; /**< Rotation momentum: rotation done per second (NOT YET SUPPORTED) */
+};
+
+/**
+ * @typedef Elm_Gesture_Rotate_Info
+ * @brief The structure type that holds rotation info for the user.
+ */
+typedef struct _Elm_Gesture_Rotate_Info Elm_Gesture_Rotate_Info;
+
+/**
+ * @typedef Elm_Gesture_Event_Cb
+ * @brief User callback used to stream gesture info from the gesture layer.
+ *
+ * @remarks You should probably return EVAS_EVENT_FLAG_ON_HOLD if your widget acted
+ * upon the event, in an irreversible way.
+ *
+ * @param data The user data
+ * @param event_info The gesture report info
+ * @return The flag field to be applied on the causing event
+ *
+ */
+typedef Evas_Event_Flags (*Elm_Gesture_Event_Cb)(void *data, void *event_info);
+
+/**
+ * @brief Sets callbacks to be notified about the
+ * change of state of a gesture.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When a user registers a callback with this function
+ * it means this gesture has to be tested.
+ *
+ * @remarks When ALL callbacks for a gesture are set to @c NULL
+ * it means the user isn't interested in gesture-state
+ * and it is not tested.
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] idx The gesture whose state is tracked
+ * @param[in] cb The callback function pointer
+ * @param[in] cb_type The event type this callback tracks: START, MOVE, END, ABORT
+ * @param[in] data The user info to be sent to the callback (usually, Smart Data)
+ *
+ */
+EAPI void elm_gesture_layer_cb_set(Evas_Object *obj, Elm_Gesture_Type idx, Elm_Gesture_State cb_type, Elm_Gesture_Event_Cb cb, void *data);
+
+/**
+ * @brief Called to get repeat-events settings.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ *
+ * @return The repeat events settings
+ * @see elm_gesture_layer_hold_events_set()
+ */
+EAPI Eina_Bool elm_gesture_layer_hold_events_get(const Evas_Object *obj);
+
+/**
+ * @brief Makes gesture-layer repeat events.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Set this if you like to get the raw events only if gestures were not
+ * detected.
+ * @remarks Clear this if you like the gesture layer to forward events as testing gestures.
+ *
+ * @param[in] obj The gesture layer
+ * @param[in] hold_events The boolean value that indicates whether events are held
+ *
+ */
+EAPI void elm_gesture_layer_hold_events_set(Evas_Object *obj, Eina_Bool hold_events);
+
+/**
+ * @brief Sets the step-value for zoom action.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Set the step to any positive value.
+ * @remarks Cancel step setting by setting it to @c 0.
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] step The new zoom step value
+ *
+ * @see elm_gesture_layer_zoom_step_get()
+ */
+EAPI void elm_gesture_layer_zoom_step_set(Evas_Object *obj, double step);
+
+/**
+ * @brief Gets the step-value for zoom action.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The zoom step value
+ *
+ * @see elm_gesture_layer_zoom_step_set()
+ */
+EAPI double elm_gesture_layer_zoom_step_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the step-value for rotate action.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Set the step to any positive value.
+ * @remarks Cancel the step setting by setting to @c 0.
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] step The new rotate step value
+ *
+ */
+EAPI void elm_gesture_layer_rotate_step_set(Evas_Object *obj, double step);
+
+/**
+ * @brief Gets the step-value for rotate action.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The rotate step value
+ *
+ */
+EAPI double elm_gesture_layer_rotate_step_get(const Evas_Object *obj);
+
+/**
+ * @brief Attaches a given gesture layer widget to an Evas object, thus setting
+ * the widget's @b target.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A gesture layer target may be whichever Evas object one
+ * chooses. This is the object @a obj that listens to all mouse and key
+ * events and reports the gestures made upon it.
+ *
+ *
+ * @param[in] obj The gesture layer to attach an object to
+ * @param[in] target The object to attach to @a obj (target)
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ */
+EAPI Eina_Bool elm_gesture_layer_attach(Evas_Object *obj, Evas_Object *target);
+
+/**
+ * @brief Called to construct a new gesture-layer object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This does not activate the gesture layer. You have to
+ * call elm_gesture_layer_attach() in order to 'activate' gesture-layer.
+ *
+ * @param[in] parent The gesture layer's parent widget
+ *
+ * @return A new gesture layer object
+ *
+ */
+EAPI Evas_Object *elm_gesture_layer_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the gesture layer line min length of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] line_min_length The length
+ *
+ */
+EAPI void elm_gesture_layer_line_min_length_set(Evas_Object *obj, int line_min_length);
+
+/**
+ * @brief Gets the gesture layer line min length of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The length
+ *
+ */
+EAPI int elm_gesture_layer_line_min_length_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer zoom distance tolerance of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] zoom_distance_tolerance The zoom distance tolerance
+ *
+ */
+EAPI void elm_gesture_layer_zoom_distance_tolerance_set(Evas_Object *obj, Evas_Coord zoom_distance_tolerance);
+
+/**
+ * @brief Gets the gesture layer zoom distance tolerance of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The zoom distance tolerance
+ *
+ */
+EAPI Evas_Coord elm_gesture_layer_zoom_distance_tolerance_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer line distance tolerance of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] line_distance_tolerance The line distance tolerance
+ *
+ */
+EAPI void elm_gesture_layer_line_distance_tolerance_set(Evas_Object *obj, Evas_Coord line_distance_tolerance);
+
+/**
+ * @brief Gets the gesture layer line distance tolerance of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The line distance tolerance
+ *
+ */
+EAPI Evas_Coord elm_gesture_layer_line_distance_tolerance_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer line angular tolerance of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] line_angular_tolerance The line angular tolerance
+ *
+ */
+EAPI void elm_gesture_layer_line_angular_tolerance_set(Evas_Object *obj, double line_angular_tolerance);
+
+/**
+ * @brief Gets the gesture layer line angular tolerance of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The line angular tolerance
+ *
+ */
+EAPI double elm_gesture_layer_line_angular_tolerance_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer zoom wheel factor of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] zoom_wheel_factor The zoom wheel factor
+ *
+ */
+EAPI void elm_gesture_layer_zoom_wheel_factor_set(Evas_Object *obj, double zoom_wheel_factor);
+
+/**
+ * @brief Gets the gesture layer zoom wheel factor of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The zoom wheel factor
+ *
+ */
+EAPI double elm_gesture_layer_zoom_wheel_factor_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer zoom finger factor of an object
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] zoom_finger_factor The zoom finger factor
+ *
+ */
+EAPI void elm_gesture_layer_zoom_finger_factor_set(Evas_Object *obj, double zoom_finger_factor);
+
+/**
+ * @brief Gets the gesture layer zoom finger factor of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The zoom finger factor
+ *
+ */
+EAPI double elm_gesture_layer_zoom_finger_factor_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer rotate angular tolerance of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] rotate_angular_tolerance The rotate angular tolerance
+ *
+ */
+EAPI void elm_gesture_layer_rotate_angular_tolerance_set(Evas_Object *obj, double rotate_angular_tolerance);
+
+/**
+ * @brief Gets the gesture layer rotate angular tolerance of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The rotate angular tolerance
+ *
+ */
+EAPI double elm_gesture_layer_rotate_angular_tolerance_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer flick time limit (in ms) of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] flick_time_limit_ms The flick time limit (in ms)
+ *
+ */
+EAPI void elm_gesture_layer_flick_time_limit_ms_set(Evas_Object *obj, unsigned int flick_time_limit_ms);
+
+/**
+ * @brief Gets the gesture layer flick time limit (in ms) of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The flick time limit (in ms)
+ *
+ */
+EAPI unsigned int elm_gesture_layer_flick_time_limit_ms_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer long tap start timeout of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] long_tap_start_timeout The long tap start timeout
+ *
+ */
+EAPI void elm_gesture_layer_long_tap_start_timeout_set(Evas_Object *obj, double long_tap_start_timeout);
+
+/**
+ * @brief Gets the gesture layer long tap start timeout of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The long tap start timeout
+ *
+ */
+EAPI double elm_gesture_layer_long_tap_start_timeout_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer continues enable of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] continues_enable The continues enable
+ *
+ */
+EAPI void elm_gesture_layer_continues_enable_set(Evas_Object *obj, Eina_Bool continues_enable);
+
+/**
+ * @brief Gets the gesture layer continues enable of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The continues enable
+ *
+ */
+EAPI Eina_Bool elm_gesture_layer_continues_enable_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer double tap timeout of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] double_tap_timeout The double tap timeout
+ *
+ */
+EAPI void elm_gesture_layer_double_tap_timeout_set(Evas_Object *obj, double double_tap_timeout);
+
+/**
+ * @brief Gets the gesture layer double tap timeout of an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The double tap timeout
+ *
+ */
+EAPI double elm_gesture_layer_double_tap_timeout_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the gesture layer finger-size for taps.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If not set, this size is taken from elm_config.
+ * Set to ZERO if you want GLayer to use system finger size value (default)
+ * It is recommended to not set a very big or small value to avoid weird
+ * behaviors.
+ *
+ * @param[in] obj The gesture-layer
+ * @param[in] sz The finger size
+ *
+ */
+EAPI void elm_gesture_layer_tap_finger_size_set(Evas_Object *obj, Evas_Coord sz);
+
+/**
+ * @brief Gets the gesture layer finger-size for taps.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The gesture-layer
+ * @return The finger size that is currently used by the Gesture Layer for taps
+ *
+ */
+EAPI Evas_Coord elm_gesture_layer_tap_finger_size_get(const Evas_Object *obj);
+
/**
* @}
*/
diff --git a/src/lib/elm_getting_started.h b/src/lib/elm_getting_started.h
index 27f668773..f7522db9e 100644
--- a/src/lib/elm_getting_started.h
+++ b/src/lib/elm_getting_started.h
@@ -1,6 +1,5 @@
/**
- * @defgroup Start Getting Started
- * @ingroup Elementary
+ * @page Start Getting Started
*
* To write an Elementary app, you can get started with the following:
*
@@ -9,17 +8,18 @@
* EAPI_MAIN int
* elm_main(int argc, char **argv)
* {
- * // create window(s) here and do any application init
- * elm_run(); // run main loop
-* return 0; // exit 0 for exit code
+ * // Create window(s) here and do any application init.
+ * elm_run(); // Run main loop
+ * elm_shutdown(); // After mainloop finishes running, shutdown
+ * return 0; // Exit 0 for exit code
* }
* ELM_MAIN()
* @endcode
*
* To use autotools (which helps in many ways in the long run, like being able
* to immediately create releases of your software directly from your tree
- * and ensure everything needed to build it is there) you will need a
- * configure.ac, Makefile.am and autogen.sh file.
+ * and ensure everything needed to build it is there) you need a
+ * configure.ac, Makefile.am, and autogen.sh file.
*
* configure.ac:
*
@@ -66,7 +66,7 @@
* ./autogen.sh
* @endcode
*
- * This will generate Makefile.in's, the configure script and everything else.
+ * This generates Makefile.in's, the configure script and everything else.
* After this it works like all normal autotools projects:
* @code
* ./configure
@@ -74,8 +74,8 @@
* sudo make install
* @endcode
*
- * Note sudo was assumed to get root permissions, as this would install in
- * /usr/local which is system-owned. Use any way you like to gain root, or
+ * Note sudo is assumed to get root permissions, as this would install in
+ * /usr/local which is system-owned. Use it any way you like to gain root, or
* specify a different prefix with configure:
*
* @code
@@ -87,7 +87,7 @@
* make uninstall
* @endcode
*
- * This uninstalls the software after it was installed with "make install".
+ * This uninstalls the software after it is installed with "make install".
* It is very useful to clear up what you built if you wish to clean the
* system.
*
@@ -103,7 +103,7 @@
* This tarball also builds cleanly, has all the sources it needs to build
* included (that is sources for your application, not libraries it depends
* on like Elementary). It builds cleanly in a buildroot and does not
- * contain any files that are temporarily generated like binaries and other
+ * contain any files that are temporarily generated, like binaries and other
* build-generated files, so the tarball is clean, and no need to worry
* about cleaning up your tree before packaging.
*
@@ -117,21 +117,21 @@
* make distclean
* @endcode
*
- * This cleans out all files from the build and from configure's output too.
+ * This cleans out all the files from the build and from configure's output too.
*
* @code
* make maintainer-clean
* @endcode
*
- * This deletes all the files autogen.sh will produce so the tree is clean
- * to be put into a revision-control system (like CVS, SVN or GIT for example).
+ * This deletes all the files autogen.sh produces so the tree is clean
+ * to be put into a revision-control system (like CVS, SVN, or GIT for example).
*
* There is a more advanced way of making use of the quicklaunch infrastructure
- * in Elementary (which will not be covered here due to its more advanced
+ * in Elementary (which is not covered here due to its more advanced
* nature).
*
- * Now let's actually create an interactive "Hello World" gui that you can
- * click the ok button to exit. It's more code because this now does something
+ * Now let's actually create an interactive "Hello World" GUI on which you can
+ * click the OK button to exit. It's more code because this now does something
* much more significant, but it's still very simple:
*
* @code
@@ -140,7 +140,7 @@
* static void
* on_done(void *data, Evas_Object *obj, void *event_info)
* {
- * // quit the mainloop (elm_run function will return)
+ * // Quit the mainloop (elm_run function will return)
* elm_exit();
* }
*
@@ -149,44 +149,45 @@
* {
* Evas_Object *win, *box, *lab, *btn;
*
- * // new window - do the usual and give it a name (hello) and title (Hello)
+ * // New window - do the usual and give it a name (hello) and title (Hello)
* win = elm_win_util_standard_add("hello", "Hello");
- * // when the user clicks "close" on a window there is a request to delete
+ * // When the user clicks "close" on a window there is a request to delete
* evas_object_smart_callback_add(win, "delete,request", on_done, NULL);
*
- * // add a box object - default is vertical. a box holds children in a row,
- * // either horizontally or vertically. nothing more.
+ * // Add a box object - default is vertical. a box holds children in a row,
+ * // Either horizontally or vertically. nothing more.
* box = elm_box_add(win);
- * // make the box horizontal
+ * // Make the box horizontal
* elm_box_horizontal_set(box, EINA_TRUE);
- * // add object as a resize object for the window (controls window minimum
- * // size as well as gets resized if window is resized)
+ * // Add object as a resize object for the window (controls window minimum
+ * // Size as well as gets resized if window is resized)
* elm_win_resize_object_add(win, box);
* evas_object_show(box);
*
- * // add a label widget, set the text and put it in the pad frame
+ * // Add a label widget, set the text and put it in the pad frame
* lab = elm_label_add(win);
- * // set default text of the label
+ * // Set default text of the label
* elm_object_text_set(lab, "Hello out there world!");
- * // pack the label at the end of the box
+ * // Pack the label at the end of the box
* elm_box_pack_end(box, lab);
* evas_object_show(lab);
*
- * // add an ok button
+ * // Add an ok button
* btn = elm_button_add(win);
- * // set default text of button to "OK"
+ * // Set default text of button to "OK"
* elm_object_text_set(btn, "OK");
- * // pack the button at the end of the box
+ * // Pack the button at the end of the box
* elm_box_pack_end(box, btn);
* evas_object_show(btn);
- * // call on_done when button is clicked
+ * // Call on_done when button is clicked
* evas_object_smart_callback_add(btn, "clicked", on_done, NULL);
*
- * // now we are done, show the window
+ * // Now we are done, show the window
* evas_object_show(win);
*
- * // run the mainloop and process events and callbacks
+ * // Run the mainloop and process events and callbacks
* elm_run();
+ * elm_shutdown();
* return 0;
* }
* ELM_MAIN()
diff --git a/src/lib/elm_glview.h b/src/lib/elm_glview.h
index 7a99d55a7..6d53a6182 100644
--- a/src/lib/elm_glview.h
+++ b/src/lib/elm_glview.h
@@ -1,38 +1,329 @@
/**
* @defgroup GLView GLView
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html glview_inheritance_tree.png
* @image latex glview_inheritance_tree.eps
*
- * A GLView widget allows for simple GL rendering in elementary environment.
+ * @brief A GLView widget allows for simple GL rendering in the elementary
+ * environment.
+ *
* GLView hides all the complicated evas_gl details so that the user only
* has to deal with registering a few callback functions for rendering
* to a surface using OpenGL APIs.
*
* This widget emits the following signals, besides the ones sent from
- * @ref GLView:
- * - @c "focused" - when glview has received focus.
- * - @c "unfocused" - when glview has lost focus.
- * - @c "language,changed" - the program's language changed
+ * @ref GLView :
+ * @li @c "language,changed" - The program's language is changed
+ *
+ * Please refer to the page @ref elm_opengl_page for a quick introduction
+ * about OpenGL with EFL.
+ *
+ * @{
+ */
+
+typedef void (*Elm_GLView_Func_Cb)(Evas_Object *obj);
+
+/**
+ * @brief Selects the target surface properties
*
- * Below is an illustrative example of how to use GLView and and OpenGL
- * to render in elementary environment.
- * @ref glview_example_01_page
+ * An OR combination of @c Elm_GLView_Mode values should be passed to
+ * @ref elm_glview_mode_set when setting up a GL widget. These flags will
+ * specify the properties of the rendering target surface; in particular,
+ * the mode can request the surface to support alpha, depth and stencil buffers.
*
+ * @note @c ELM_GLVIEW_CLIENT_SIDE_ROTATION is a special value that indicates
+ * to EFL that the application will handle the view rotation when the
+ * device is rotated. This is needed only when the application requests
+ * direct rendering. Please refer to @ref Evas_GL
+ * for more information about direct rendering.
+ *
+ * @see elm_glview_mode_set
+ * @see @ref elm_opengl_page
+ *
+ * @since_tizen 2.3
*/
+typedef enum _Elm_GLView_Mode
+{
+ ELM_GLVIEW_NONE = 0,
+ // 0x1 is reserved for future use
+ ELM_GLVIEW_ALPHA = (1<<1), /**< Alpha channel enabled rendering mode */
+ ELM_GLVIEW_DEPTH = (1<<2), /**< Depth buffer enabled rendering mode (24 bits by default) */
+ ELM_GLVIEW_STENCIL = (1<<3), /**< Stencil buffer enabled rendering mode (8 bits by default) */
+ ELM_GLVIEW_DIRECT = (1<<4), /**< Request direct rendering, unless there must be a fallback */
+ ELM_GLVIEW_CLIENT_SIDE_ROTATION = (1<<5), /**< Client will handle GL view rotation if direct rendering is enabled */
+ // Depth buffer sizes (3 bits)
+ ELM_GLVIEW_DEPTH_8 = ELM_GLVIEW_DEPTH | (1 << 6), /**< Request min. 8 bits for the depth buffer */
+ ELM_GLVIEW_DEPTH_16 = ELM_GLVIEW_DEPTH | (2 << 6), /**< Request min. 16 bits for the depth buffer */
+ ELM_GLVIEW_DEPTH_24 = ELM_GLVIEW_DEPTH | (3 << 6), /**< Request min. 24 bits for the depth buffer (default) */
+ ELM_GLVIEW_DEPTH_32 = ELM_GLVIEW_DEPTH | (4 << 6), /**< Request min. 32 bits for the depth buffer */
+ // Stencil buffer sizes (3 bits)
+ ELM_GLVIEW_STENCIL_1 = ELM_GLVIEW_STENCIL | (1 << 9), /**< Request min. 1 bits for the stencil buffer */
+ ELM_GLVIEW_STENCIL_2 = ELM_GLVIEW_STENCIL | (2 << 9), /**< Request min. 2 bits for the stencil buffer */
+ ELM_GLVIEW_STENCIL_4 = ELM_GLVIEW_STENCIL | (3 << 9), /**< Request min. 4 bits for the stencil buffer */
+ ELM_GLVIEW_STENCIL_8 = ELM_GLVIEW_STENCIL | (4 << 9), /**< Request min. 8 bits for the stencil buffer (default) */
+ ELM_GLVIEW_STENCIL_16 = ELM_GLVIEW_STENCIL | (5 << 9), /**< Request min. 16 bits for the stencil buffer */
+ // MSAA params (2 bits)
+ ELM_GLVIEW_MULTISAMPLE_LOW = (1 << 12), /**< MSAA with minimum number of samples */
+ ELM_GLVIEW_MULTISAMPLE_MED = (2 << 12), /**< MSAA with half the number of maximum samples */
+ ELM_GLVIEW_MULTISAMPLE_HIGH = (3 << 12) /**< MSAA with maximum number of samples */
+} Elm_GLView_Mode;
/**
- * @ingroup GLView
+ * @brief Enumeration that defines a policy for the GLView resizing.
+ *
+ * @remarks The resizing policy tells GLView what to do with the underlying
+ * surface when resize happens. @c ELM_GLVIEW_RESIZE_POLICY_RECREATE
+ * destroys the current surface and recreates the surface to the
+ * new size. @c ELM_GLVIEW_RESIZE_POLICY_SCALE instead keeps the
+ * current surface but only displays the result at the desired size
+ * scaled.
+ *
+ * @remarks Default is @c ELM_GLVIEW_RESIZE_POLICY_RECREATE
+ *
+ * @since_tizen 2.3
+ */
+typedef enum
+{
+ ELM_GLVIEW_RESIZE_POLICY_RECREATE = 1, /**< Resize the internal surface along with the image */
+ ELM_GLVIEW_RESIZE_POLICY_SCALE = 2 /**< Only resize the internal image and not the surface */
+} Elm_GLView_Resize_Policy;
+
+/**
+ * @brief Enumeration that defines a policy for gl rendering.
+ *
+ * @remarks The rendering policy tells GLView where to run the gl rendering code.
+ * @c ELM_GLVIEW_RENDER_POLICY_ON_DEMAND tells GLView to call the rendering
+ * calls on demand, which means that the rendering code gets called
+ * only when it is visible.
+ *
+ * @remarks Default is @c ELM_GLVIEW_RENDER_POLICY_ON_DEMAND
+ *
+ * @since_tizen 2.3
+ */
+typedef enum
+{
+ ELM_GLVIEW_RENDER_POLICY_ON_DEMAND = 1, /**< Render only when there is a need for redrawing */
+ ELM_GLVIEW_RENDER_POLICY_ALWAYS = 2 /**< Render always even when it is not visible */
+} Elm_GLView_Render_Policy;
+
+/**
+ * @brief Adds a new GLView to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, GLView creates an OpenGL-ES 2.0 context, so only
+ * OpenGL-ES 2.0 APIs can be used (and supported extensions).
+ * Please use @ref elm_glview_version_add instead to create OpenGL-ES 1.1
+ * contexts.
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @see elm_glview_version_add
+ */
+EAPI Evas_Object *elm_glview_add(Evas_Object *parent);
+
+/**
+ * @brief Adds a new GLView to the parent, given an OpenGL-ES context version number.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @param[in] version Requested GL ES version number (default is 2.x, 1.x may also be supported)
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @see elm_glview_add
+ */
+EAPI Evas_Object *elm_glview_version_add(Evas_Object *parent, Evas_GL_Context_Version version);
+
+/**
+ * @brief Sets the size of the GLView.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The GLView object
+ * @param[in] w The width of the GLView object
+ * @param[in] h The height of the GLView object
+ */
+EAPI void elm_glview_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+
+/**
+ * @brief Gets the size of the GLView.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Note that this function returns the actual image size of the
+ * GLView. This means that when the scale policy is set to
+ * @c ELM_GLVIEW_RESIZE_POLICY_SCALE, it returns the non-scaled
+ * size.
+ *
+ * @param[in] obj The GLView object
+ * @param[out] w The width of the GLView object
+ * @param[out] h The height of the GLView object
+ */
+EAPI void elm_glview_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @brief Gets the GL API struct for GL rendering.
+ *
+ * @details Elementary GLView uses Evas GL internally to create a rendering context
+ * and target surfaces. Please refer to the Evas GL documentation for more
+ * information about this GL API structure.
+ *
+ * @note When using an OpenGL-ES 1.1 context, @c elm_glview_gl_api_get will
+ * return a GL-ES 1.1 API.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The GLView object
+ * @return The API object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_GL_API *elm_glview_gl_api_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the mode of the GLView. Supports alpha, depth and stencil.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If direct rendering is enabled, Evas GL will render directly to the back
+ * buffer of the window, unless the window has been rotated. If the window
+ * is rotated and the flag DIRECT is set, the flag CLIENT_SIDE_ROTATION
+ * can be used to avoid falling back to a framebuffer.
+ *
+ * @remarks Here are some conditions that will disable direct rendering and force a
+ * fallback to indirect rendering in a framebuffer:
+ *
+ * @li if the object's color is not (255,255,255,255),
+ * @li if the object has an evas map,
+ * @li if the object size is different from the viewport, (RESIZE_POLICY_SCALE)
+ * @li if the window is rotated and CLIENT_SIDE_ROTATION is not set,
+ * @li if the GLView policy is set to ALWAYS render.
+ *
+ * @param[in] obj The GLView object
+ * @param[in] mode The mode Options OR'ed enabling Alpha, Depth, Stencil, Direct and Client Side Rotation
+ * @return @c true if set properly,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_glview_mode_set(Evas_Object *obj, Elm_GLView_Mode mode);
+
+/**
+ * @brief Sets the resize policy for the GLView object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, the resize policy is set to @c ELM_GLVIEW_RESIZE_POLICY_RECREATE.
+ * When resize is called it destroys the previous surface and recreates the
+ * newly specified size. If the policy is set to
+ * @c ELM_GLVIEW_RESIZE_POLICY_SCALE, however, GLView only scales the image
+ * object and not the underlying GL Surface.
+ *
+ * @param[in] obj The GLView object
+ * @param[in] policy The scaling policy
+ * @return #EINA_TRUE if succeed, otherwise #EINA_FALSE
+ */
+EAPI Eina_Bool elm_glview_resize_policy_set(Evas_Object *obj, Elm_GLView_Resize_Policy policy);
+
+/**
+ * @brief Sets the render policy for the GLView object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, the render policy is set to @c ELM_GLVIEW_RENDER_POLICY_ON_DEMAND.
+ * This policy is set such that during the render loop, GLView is only
+ * redrawn if it needs to be redrawn. (i.e. when it is visible). If the policy
+ * is set to @c ELM_GLVIEWW_RENDER_POLICY_ALWAYS, it redraws regardless of
+ * whether it is visible or needs redrawing.
+ *
+ * @param[in] obj The GLView object
+ * @param[in] policy The render policy
+ * @return #EINA_TRUE if succeed, otherwise #EINA_FALSE
+ */
+EAPI Eina_Bool elm_glview_render_policy_set(Evas_Object *obj, Elm_GLView_Render_Policy policy);
+
+/**
+ * @brief Sets the init function that runs once in the main loop.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The registered init function gets called once during the render loop.
+ * This function allows GLView to hide all the rendering context/surface
+ * details and have the user just call the GL calls that they desire
+ * for initialization GL calls.
+ *
+ * @param[in] obj The GLView object
+ * @param[in] func The init function to be registered
+ */
+EAPI void elm_glview_init_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func);
+
+/**
+ * @brief Sets the delete function that runs when the GLView gets deleted.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The registered del function gets called when GLView object is deleted.
+ * This function allows GLView to hide all the rendering context/surface
+ * details and have the user just call the GL calls that they desire
+ * when delete happens. Called from the main loop.
+ *
+ * @param[in] obj The GLView object
+ * @param[in] func The delete function to be registered
+ */
+EAPI void elm_glview_del_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func);
+
+/**
+ * @brief Sets the resize function that gets called when resize happens.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The resize function gets called during the render loop.
+ * This function allows GLView to hide all the rendering context/surface
+ * details and have the user just call the GL calls that they desire
+ * when resize happens.
+ *
+ * @param[in] obj The GLView object
+ * @param[in] func The resize function to be registered
+ */
+EAPI void elm_glview_resize_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func);
+
+/**
+ * @brief Sets the render function that runs in the main loop.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The render function gets called in the main loop, but whether it runs
+ * depends on the rendering policy and whether elm_glview_changed_set()
+ * gets called.
+ *
+ * @param[in] obj The GLView object
+ * @param[in] func The render function to be registered
+ */
+EAPI void elm_glview_render_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func);
+
+/**
+ * @brief Notifies that there have been changes in the GLView.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The GLView object
+ */
+EAPI void elm_glview_changed_set(Evas_Object *obj);
+
+/**
+ * @brief Get the internal Evas GL attached to this view.
+ *
+ * @note The returned Evas_GL must not be destroyed as it is still owned
+ * by the view. But this pointer can be used then to call all the evas_gl_
+ * functions.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The GLView object
+ *
+ * @return The Evas_GL used by this GLView.
*/
+EAPI Evas_GL *elm_glview_evas_gl_get(Evas_Object *obj);
-#include "elm_glview_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_glview_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_glview_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_grid.h b/src/lib/elm_grid.h
index 1f6e51133..746c1be71 100644
--- a/src/lib/elm_grid.h
+++ b/src/lib/elm_grid.h
@@ -1,28 +1,129 @@
/**
* @defgroup Grid Grid
- * @ingroup Elementary
+ * @ingroup elm_container_group
*
* @image html grid_inheritance_tree.png
* @image latex grid_inheritance_tree.eps
*
- * The grid is a grid layout widget that lays out a series of children as a
- * fixed "grid" of widgets using a given percentage of the grid width and
- * height each using the child object.
+ * @brief The grid is a grid layout widget that lays out a series of children
+ * as a fixed "grid" of widgets using a given percentage of the grid
+ * width and height each using the child object.
*
* The Grid uses a "Virtual resolution" that is stretched to fill the grid
* widgets size itself. The default is 100 x 100, so that means the
- * position and sizes of children will effectively be percentages (0 to 100)
- * of the width or height of the grid widget
+ * position and sizes of children are effectively percentages (0 to 100)
+ * of the width or height of the grid widget.
*
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_grid_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_grid_legacy.h>
-#endif
+/**
+ * @brief Adds a new grid to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_grid_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the virtual size of the grid.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The grid object
+ * @param[in] w The virtual width of the grid
+ * @param[in] h The virtual height of the grid
+ */
+EAPI void elm_grid_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+
+/**
+ * @brief Gets the virtual size of the grid.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The grid object
+ * @param[out] w A pointer to an integer to store the virtual width of the grid
+ * @param[out] h A pointer to an integer to store the virtual height of the grid
+ */
+EAPI void elm_grid_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @brief Packs the child at a given position and size.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The grid object
+ * @param[in] subobj The child to pack
+ * @param[in] x The virtual x coordinate at which to pack it
+ * @param[in] y The virtual y coordinate at which to pack it
+ * @param[in] w The virtual width at which to pack it
+ * @param[in] h The virtual height at which to pack it
+ */
+EAPI void elm_grid_pack(Evas_Object *obj, Evas_Object *subobj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
+
+/**
+ * @brief Unpacks a child from a grid object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The grid object
+ * @param[in] subobj The child to unpack
+ */
+EAPI void elm_grid_unpack(Evas_Object *obj, Evas_Object *subobj);
+
+/**
+ * @brief Removes all child objects from a grid object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The grid object
+ * @param[in] clear If @c true it deletes the just removed children,
+ * otherwise @c false
+ */
+EAPI void elm_grid_clear(Evas_Object *obj, Eina_Bool clear);
+
+/**
+ * @brief Sets packing of an existing child at a given position and size.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] subobj The child to set packing of
+ * @param[in] x The virtual x coordinate at which to pack it
+ * @param[in] y The virtual y coordinate at which to pack it
+ * @param[in] w The virtual width at which to pack it
+ * @param[in] h The virtual height at which to pack it
+ */
+EAPI void elm_grid_pack_set(Evas_Object *subobj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
+
+/**
+ * @brief Gets packing of a child.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] subobj The child to query
+ * @param[out] x A pointer to an integer to store the virtual x coordinate
+ * @param[out] y A pointer to an integer to store the virtual y coordinate
+ * @param[out] w A pointer to an integer to store the virtual width
+ * @param[out] h A pointer to an integer to store the virtual height
+ */
+EAPI void elm_grid_pack_get(Evas_Object *subobj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @brief Gets the list of the children for the grid.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This is a duplicate of the list kept by the grid internally.
+ * It's up to the user to destroy it when it no longer needs it.
+ * It's possible to remove objects from the grid when walking through this
+ * list, but these removals won't be reflected on it.
+ *
+ * @param[in] obj The grid object
+ * @return The children list
+ */
+EAPI Eina_List *elm_grid_children_get(const Evas_Object *obj);
/**
* @}
diff --git a/src/lib/elm_hover.h b/src/lib/elm_hover.h
index 7d6ea0a5f..9c810b072 100644
--- a/src/lib/elm_hover.h
+++ b/src/lib/elm_hover.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Hover Hover
* @ingroup Elementary
*
@@ -8,8 +9,8 @@
* @image html img/widget/hover/preview-00.png
* @image latex img/widget/hover/preview-00.eps
*
- * A Hover object will hover over its @p parent object at the @p target
- * location. Anything in the background will be given a darker coloring to
+ * A Hover object hovers over its @a parent object at the @a target
+ * location. Anything in the background is given a darker coloring to
* indicate that the hover object is on top (at the default theme). When the
* hover is clicked it is dismissed(hidden), if the contents of the hover are
* clicked that @b doesn't cause the hover to be dismissed.
@@ -18,8 +19,8 @@
* and the other parent being the one over which the hover object spans.
*
*
- * @note The hover object will take up the entire space of @p target
- * object.
+ * @remarks The hover object takes up the entire space of the @a target
+ * object.
*
* Elementary has the following styles for the hover widget:
* @li default
@@ -31,15 +32,12 @@
* functions acting on it also work for hover objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li @c "clicked" - the user clicked the empty space in the hover to dismiss
- * @li @c "dismissed" - the user clicked the empty space in the hover to dismiss (since 1.8)
- * @li @c "smart,changed" - a content object placed under the "smart"
- * policy was replaced to a new slot direction.
- * @li @c "focused" - When the hover has received focus. (since 1.8)
- * @li @c "unfocused" - When the hover has lost focus. (since 1.8)
- *
- * Default content parts of the hover widget that you can use for are:
+ * @ref Layout :
+ * @li @c "clicked" - The user clicked the empty space in the hover to dismiss.
+ * @li @c "smart,changed" - A content object placed under the "smart"
+ * policy is replaced to a new slot direction.
+ *
+ * The default content parts of the hover widget that you can use are:
* @li @c "left"
* @li @c "top-left"
* @li @c "top"
@@ -51,23 +49,23 @@
* @li @c "middle"
* @li @c "smart"
*
- * @note These content parts indicates the direction that the content will be
- * displayed
+ * @remarks These content parts indicate the direction in which the content is
+ * displayed.
*
* All directions may have contents at the same time, except for
* "smart". This is a special placement hint and its use case
- * depends of the calculations coming from
+ * depends on the calculations coming from
* elm_hover_best_content_location_get(). Its use is for cases when
* one desires only one hover content, but with a dynamic special
* placement within the hover area. The content's geometry, whenever
- * it changes, will be used to decide on a best location, not
+ * it changes, is used to decide on the best location, not
* extrapolating the hover's parent object view to show it in (still
- * being the hover's target determinant of its medium part -- move and
+ * being the hover's target determinant of its medium part, move and
* resize it to simulate finger sizes, for example). If one of the
- * directions other than "smart" are used, a previously content set
- * using it will be deleted, and vice-versa.
+ * directions other than "smart" are used, a previous content set
+ * using it is deleted, and vice-versa.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_signal_emit
* @li @ref elm_object_signal_callback_add
* @li @ref elm_object_signal_callback_del
@@ -75,18 +73,122 @@
* @li @ref elm_object_part_content_get
* @li @ref elm_object_part_content_unset
*
- * See @ref tutorial_hover for more information.
- *
* @{
*/
-#include "elm_hover_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_hover_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_hover_legacy.h"
-#endif
+/**
+ * @typedef Elm_Hover_Axis
+ *
+ * @brief Enumeration that defines the orientation axis for the hover object.
+ */
+typedef enum
+{
+ ELM_HOVER_AXIS_NONE, /**< ELM_HOVER_AXIS_NONE -- no preferred orientation */
+ ELM_HOVER_AXIS_HORIZONTAL, /**< ELM_HOVER_AXIS_HORIZONTAL -- horizontal */
+ ELM_HOVER_AXIS_VERTICAL, /**< ELM_HOVER_AXIS_VERTICAL -- vertical */
+ ELM_HOVER_AXIS_BOTH /**< ELM_HOVER_AXIS_BOTH -- both */
+} Elm_Hover_Axis;
+
+/**
+ * @brief Adds a hover object to @a parent.
+ *
+ * @param[in] parent The parent object
+ * @return The hover object, otherwise @c NULL if it could not be created
+ *
+ * @ingroup Hover
+ */
+EAPI Evas_Object *elm_hover_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the target object for the hover.
+ *
+ * @details This function causes the hover to be centered on the target object
+ *
+ * @param[in] obj The hover object
+ * @param[in] target The object to center the hover onto
+ *
+ * @ingroup Hover
+ */
+EAPI void elm_hover_target_set(Evas_Object *obj, Evas_Object *target);
+
+/**
+ * @brief Gets the target object for the hover.
+ *
+ * @param[in] obj The hover object
+ * @return The target object for the hover
+ *
+ * @see elm_hover_target_set()
+ *
+ * @ingroup Hover
+ */
+EAPI Evas_Object *elm_hover_target_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the parent object for the hover.
+ *
+ * @details This function causes the hover to take up the entire space that the
+ * parent object fills.
+ *
+ * @param[in] obj The hover object
+ * @param[in] parent The object to locate the hover over
+ *
+ * @ingroup Hover
+ */
+EAPI void elm_hover_parent_set(Evas_Object *obj, Evas_Object *parent);
+
+/**
+ * @brief Gets the parent object for the hover.
+ *
+ * @param[in] obj The hover object
+ * @return The parent object to locate the hover over
+ *
+ * @see elm_hover_parent_set()
+ *
+ * @ingroup Hover
+ */
+EAPI Evas_Object *elm_hover_parent_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the best swallow location for content in the hover.
+ *
+ * @remarks Best is defined here as the location at which the most available
+ * space is present.
+ *
+ * @remarks @a pref_axis may be one of
+ * - @c ELM_HOVER_AXIS_NONE -- no preferred orientation
+ * - @c ELM_HOVER_AXIS_HORIZONTAL -- horizontal
+ * - @c ELM_HOVER_AXIS_VERTICAL -- vertical
+ * - @c ELM_HOVER_AXIS_BOTH -- both
+ *
+ * If @c ELM_HOVER_AXIS_HORIZONTAL is chosen the returned position is
+ * necessarily along the horizontal axis("left" or "right"). If
+ * @c ELM_HOVER_AXIS_VERTICAL is chosen the returned position is necessarily
+ * along the vertical axis("top" or "bottom"). Choosing
+ * @c ELM_HOVER_AXIS_BOTH or @c ELM_HOVER_AXIS_NONE has the same effect and the
+ * returned position may be in either axes.
+ *
+ * @param[in] obj The hover object
+ * @param[in] pref_axis The preferred orientation axis for the hover object to use
+ * @return The edje location to place content into the hover,
+ * otherwise @c NULL in case of an error
+ *
+ * @see elm_object_part_content_set()
+ *
+ * @ingroup Hover
+ */
+EAPI const char *elm_hover_best_content_location_get(const Evas_Object *obj, Elm_Hover_Axis pref_axis);
+
+/**
+ * @brief Dismisses a hover object.
+ *
+ * @remarks Use this function to simulate clicking outside the hover to dismiss it.
+ * In this way, the hover is hidden and the "clicked" signal is emitted.
+ *
+ * @param[in] obj The hover object
+ *
+ * @ingroup Hover
+ */
+EAPI void elm_hover_dismiss(Evas_Object *obj);
/**
* @}
*/
diff --git a/src/lib/elm_icon.h b/src/lib/elm_icon.h
index acd3eed37..50440a006 100644
--- a/src/lib/elm_icon.h
+++ b/src/lib/elm_icon.h
@@ -1,34 +1,31 @@
/**
* @defgroup Icon Icon
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html icon_inheritance_tree.png
* @image latex icon_inheritance_tree.eps
*
- * @image html img/widget/icon/preview-00.png
- * @image latex img/widget/icon/preview-00.eps
- *
- * An icon object is used to display standard icon images ("delete",
- * "edit", "arrows", etc.) or images coming from a custom file (PNG,
- * JPG, EDJE, etc.), on icon contexts.
+ * @brief An icon object is used to display standard icon images ("delete",
+ * "edit", "arrows", etc.) or images coming from a custom file (PNG,
+ * JPG, EDJE, etc.), on icon context.
*
* The icon image requested can be in the Elementary theme in use, or
* in the @c freedesktop.org theme paths. It's possible to set the
- * order of preference from where an image will be fetched.
+ * order of preference from where an image is fetched.
*
* This widget inherits from the @ref Image one, so that all the
* functions acting on it also work for icon objects.
*
* You should be using an icon, instead of an image, whenever one of
* the following apply:
- * - you need a @b thumbnail version of an original image
- * - you need freedesktop.org provided icon images
- * - you need theme provided icon images (Edje groups)
+ * - You need a @b thumbnail version of an original image.
+ * - You need freedesktop.org provided icon images.
+ * - You need theme provided icon images (Edje groups).
*
* Various calls on the icon's API are marked as @b deprecated, as
* they just wrap the image 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
+ * mentioned for each case of deprecation here.
+ * Eventually, the deprecated ones are discarded (next major
* release).
*
* Default images provided by Elementary's default theme are described
@@ -52,7 +49,7 @@
* @li @c "file"
*
* These are names for icons that were designed to be used in menus
- * (but again, you can use them anywhere else):
+ * (but again, you can use them anywhere):
* @li @c "menu/home"
* @li @c "menu/close"
* @li @c "menu/apps"
@@ -79,31 +76,555 @@
* @li @c "media_player/stop"
*
* This widget emits the following signals, besides the ones sent from
- * @ref Image:
+ * @ref Image :
* - @c "thumb,done" - elm_icon_thumb_set() has completed with success
- * (since 1.7)
- * - @c "thumb,error" - elm_icon_thumb_set() has failed (since 1.7)
+ * (@since 1.7)
+ * - @c "thumb,error" - elm_icon_thumb_set() has failed (@since 1.7)
*
* Elementary icon objects support the following API calls:
* @li elm_object_signal_emit()
* @li elm_object_signal_callback_add()
* @li elm_object_signal_callback_del()
- * for emmiting and listening to signals on the object, when the
- * internal image comes from an Edje object. This behavior was added
+ * for emitting and listening to signals on the object, when the
+ * internal image comes from an Edje object. This behavior is added
* unintentionally, though, and is @b deprecated. Expect it to be
* dropped on future releases.
*
- * An example of usage for this API follows:
- * @li @ref tutorial_icon
+ * @{
+ */
+
+typedef enum
+{
+ ELM_ICON_NONE,
+ ELM_ICON_FILE,
+ ELM_ICON_STANDARD
+} Elm_Icon_Type;
+
+/**
+ * @enum Elm_Icon_Lookup_Order
+ * @typedef Elm_Icon_Lookup_Order
+ *
+ * @brief Enumeration that defines the lookup order used by elm_icon_standard_set(). Should look for icons in the
+ * theme, FDO paths, or both.
+ */
+typedef enum
+{
+ ELM_ICON_LOOKUP_FDO_THEME, /**< Icon look up order: freedesktop, theme */
+ ELM_ICON_LOOKUP_THEME_FDO, /**< Icon look up order: theme, freedesktop */
+ ELM_ICON_LOOKUP_FDO, /**< Icon look up order: freedesktop */
+ ELM_ICON_LOOKUP_THEME /**< Icon look up order: theme */
+} Elm_Icon_Lookup_Order;
+
+/**
+ * @brief Adds a new icon object to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @see elm_image_file_set()
+ */
+EAPI Evas_Object *elm_icon_add(Evas_Object *parent);
+
+/**
+ * @internal
+ *
+ * @brief Sets the file that is used as an icon.
+ *
+ * @remarks The icon image set by this function can be changed by
+ * elm_icon_standard_set().
+ *
+ * @param obj The icon object
+ * @param file The path to the file that is used as an icon image
+ * @param group The group that the icon belongs to
+ *
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ *
+ * @deprecated Use elm_image_file_set() instead.
+ *
+ * @see elm_icon_file_get()
+ */
+EINA_DEPRECATED EAPI Eina_Bool elm_icon_file_set(Evas_Object *obj, const char *file, const char *group);
+
+/**
+ * @internal
+ *
+ * @brief Sets a location in the memory to be used as an icon.
+ *
+ * @remarks The @a format string should be something like "png", "jpg", "tga",
+ * "tiff", "bmp" etc., if it is provided (@c NULL if not). This improves
+ * the loader performance as it tries the "correct" loader first before
+ * trying a range of other possible loaders until one succeeds.
+ *
+ * @remarks The icon image set by this function can be changed by
+ * elm_icon_standard_set().
+ *
+ * @param obj The icon object
+ * @param img The binary data that is used as an image
+ * @param size The size of the binary data @a img
+ * @param format The optional format of @a img to pass to the image loader
+ * @param key The optional key of @a img to pass to the image loader (eg. if @a img is an edje file)
+ *
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ *
+ * @deprecated Use elm_image_memfile_set() instead.
+ */
+EINA_DEPRECATED EAPI Eina_Bool elm_icon_memfile_set(Evas_Object *obj, const void *img, size_t size, const char *format, const char *key);
+
+/**
+ * @internal
+ * @brief Gets the file that is used as an icon.
+ *
+ * @param obj The icon object
+ * @param file The path to the file that is used as the icon image
+ * @param group The group that the icon belongs to
+ *
+ * @see elm_image_file_set()
+ *
+ * @deprecated Use elm_image_file_get() instead.
+ */
+EINA_DEPRECATED EAPI void elm_icon_file_get(const Evas_Object *obj, const char **file, const char **group);
+
+/**
+ * @brief Sets the file that is used, but uses a generated thumbnail.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This function is like elm_image_file_set() but requires the Ethumb library
+ * support to be enabled successfully with elm_need_ethumb(). When set,
+ * the file indicated has a thumbnail generated and cached on disk for
+ * future use or directly uses an existing cached thumbnail if it
+ * is valid.
+ *
+ * @param[in] obj The icon object
+ * @param[in] file The path to the file that is used as an icon image
+ * @param[in] group The group that the icon belongs to
+ *
+ * @see elm_image_file_set()
+ */
+EAPI void elm_icon_thumb_set(Evas_Object *obj, const char *file, const char *group);
+
+/**
+ * @brief Sets the icon by icon standard names.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks For example, freedesktop.org defines the standard icon names such as "home",
+ * "network", etc. There can be different icon sets to match those icon
+ * keys. The @a name given as a parameter is one of these "keys", and is
+ * used to look in the freedesktop.org paths and elementary theme. One can
+ * change the lookup order with elm_icon_order_lookup_set().
+ *
+ * @remarks If @a name is not found in any of the expected locations and it is the
+ * absolute path of an image file, this image is used.
+ *
+ * @remarks The icon image set by this function can be changed by
+ * elm_image_file_set().
+ *
+ * @param[in] obj The icon object
+ * @param[in] name The icon name
+ *
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ *
+ * @see elm_icon_standard_get()
+ * @see elm_image_file_set()
+ */
+EAPI Eina_Bool elm_icon_standard_set(Evas_Object *obj, const char *name);
+
+/**
+ * @brief Gets the icon name set by icon standard names.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If the icon image is set using elm_image_file_set() instead of
+ * elm_icon_standard_set(), then this function returns @c NULL.
+ *
+ * @param[in] obj The icon object
+ * @return The icon name
+ *
+ * @see elm_icon_standard_set()
+ */
+EAPI const char *elm_icon_standard_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Sets the smooth scaling for an icon object.
+ *
+ * @details This sets the scaling algorithm to be used when scaling the icon image. Smooth
+ * scaling provides a better resulting image, but is slower.
+ *
+ * @remarks The smooth scaling should be disabled when making animations that change
+ * the icon size, since they are faster. Animations that don't require
+ * resizing of the icon can keep the smooth scaling enabled (even if the icon
+ * is already scaled, since the scaled icon image is cached).
+ *
+ * @param obj The icon object
+ * @param smooth If @c EINA_TRUE smooth scaling should be used, otherwise @c EINA_FALSE \n
+ * Default is @c EINA_TRUE.
+ *
+ * @deprecated Use elm_image_smooth_set() instead.
+ *
+ * @see elm_icon_smooth_get()
+ */
+EINA_DEPRECATED EAPI void elm_icon_smooth_set(Evas_Object *obj, Eina_Bool smooth);
+
+/**
+ * @internal
+ *
+ * @brief Gets whether smooth scaling is enabled for an icon object.
+ *
+ * @param obj The icon object
+ * @return @c EINA_TRUE if smooth scaling is enabled, otherwise @c EINA_FALSE
+ *
+ * @deprecated Use elm_image_smooth_get() instead.
+ *
+ * @see elm_icon_smooth_set()
+ */
+EINA_DEPRECATED EAPI Eina_Bool elm_icon_smooth_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Disables scaling of this object.
+ *
+ * @details This function disables scaling of the icon object through the function
+ * elm_object_scale_set(). However, this does not affect the object
+ * size/resize in any way. For that effect, take a look at
+ * elm_icon_resizable_set().
+ *
+ * @param obj The icon object
+ * @param no_scale If @c EINA_TRUE the object is not scalable, otherwise @c EINA_FALSE \n
+ * Default is @c EINA_FALSE.
+ *
+ * @see elm_icon_no_scale_get()
+ * @see elm_icon_resizable_set()
+ * @see elm_object_scale_set()
+ *
+ * @deprecated Use elm_image_no_scale_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_icon_no_scale_set(Evas_Object *obj, Eina_Bool no_scale);
+
+/**
+ * @internal
+ *
+ * @brief Gets whether scaling is disabled on the object.
+ *
+ * @param obj The icon object
+ * @return @c EINA_TRUE if scaling is disabled, otherwise @c EINA_FALSE
+ *
+ * @see elm_icon_no_scale_set()
+ *
+ * @deprecated Use elm_image_no_scale_get() instead.
+ */
+EINA_DEPRECATED EAPI Eina_Bool elm_icon_no_scale_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Sets whether the object is (up/down) resizable.
+ *
+ * @details This function limits the icon object resize ability. If @a size_up is set to
+ * @c EINA_FALSE, the object can't have its height or width resized to a value
+ * higher than the original icon size. Same is valid for @a size_down.
+ *
+ * @param obj The icon object
+ * @param size_up The boolean to set if the object is resizable upwards \n
+ * Default is @c EINA_TRUE.
+ * @param size_down The boolean to set if the object is resizable downwards \n
+ * Default is @c EINA_TRUE.
+ *
+ * @see elm_icon_resizable_get()
+ *
+ * @deprecated Use elm_image_resizable_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_icon_resizable_set(Evas_Object *obj, Eina_Bool size_up, Eina_Bool size_down);
+
+/**
+ * @internal
+ *
+ * @brief Get if the object is (up/down) resizable.
+ *
+ * @param obj The icon object
+ * @param size_up The boolean to set if the object is resizable upwards
+ * @param size_down The boolean to set if the object is resizable downwards
+ *
+ * @see elm_icon_resizable_set()
+ *
+ * @deprecated Use elm_image_resizable_get() instead.
+ */
+EINA_DEPRECATED EAPI void elm_icon_resizable_get(const Evas_Object *obj, Eina_Bool *size_up, Eina_Bool *size_down);
+
+/**
+ * @internal
+ *
+ * @brief Gets the object's image size.
+ *
+ * @param obj The icon object
+ * @param w The pointer to store the width in
+ * @param h The pointer to store the height in
+ *
+ * @deprecated Use elm_image_object_size_get() instead.
+ */
+EINA_DEPRECATED EAPI void elm_icon_size_get(const Evas_Object *obj, int *w, int *h);
+
+/**
+ * @internal
+ *
+ * @brief Sets whether the icon fills the entire object area.
+ *
+ * @remarks When the icon object is resized to a different aspect ratio from the
+ * original icon image, the icon image still keeps its aspect. This flag
+ * tells how the image should fill the object's area. They are: keep the
+ * entire icon inside the limits of the height and width of the object (@a
+ * fill_outside is @c EINA_FALSE) or let the extra width or height go outside
+ * the object, and the icon fills the entire object (@a fill_outside
+ * is @c EINA_TRUE).
+ *
+ * @remarks Unlike @ref Image, there's no option in the icon to set the aspect ratio
+ * retain property to @c false. Thus, the icon image always keeps its
+ * original aspect ratio.
+ *
+ * @param obj The icon object
+ * @param fill_outside If @c EINA_TRUE the object is filled outside, otherwise @c EINA_FALSE \n
+ * Default is @c EINA_FALSE.
+ *
+ * @deprecated Use elm_image_fill_outside_set() instead.
+ *
+ * @see elm_icon_fill_outside_get()
+ */
+EINA_DEPRECATED EAPI void elm_icon_fill_outside_set(Evas_Object *obj, Eina_Bool fill_outside);
+
+/**
+ * @internal
+ *
+ * @brief Gets whether the object is filled outside.
+ *
+ * @param obj The icon object
+ * @return @c EINA_TRUE if the object is filled outside, otherwise @c EINA_FALSE
+ *
+ * @deprecated Use elm_image_fill_outside_get() instead.
+ *
+ * @see elm_icon_fill_outside_set()
+ */
+EINA_DEPRECATED EAPI Eina_Bool elm_icon_fill_outside_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Sets the prescale size for the icon.
+ *
+ * @details This function sets a new size for the pixmap representation of the given
+ * icon. It allows the icon to be loaded in advance in the specified size,
+ * reducing the memory usage and load time when loading a big icon with load
+ * size set to a smaller size.
+ *
+ * @remarks It's equivalent to the elm_bg_load_size_set() function for bg.
+ *
+ * @remarks This is just a hint, the real size of the pixmap may differ
+ * depending on the type of icon being loaded, being bigger than requested.
+ *
+ * @param obj The icon object
+ * @param size The prescale size \n
+ * This value is used for both width and height.
+ *
+ * @deprecated Use elm_image_prescale_set() instead.
+ *
+ * @see elm_icon_prescale_get()
+ * @see elm_bg_load_size_set()
+ */
+EINA_DEPRECATED EAPI void elm_icon_prescale_set(Evas_Object *obj, int size);
+
+/**
+ * @internal
+ *
+ * @brief Gets the prescale size for the icon.
+ *
+ * @param obj The icon object
+ * @return The prescale size
+ *
+ * @deprecated Use elm_image_prescale_get() instead.
+ *
+ * @see elm_icon_prescale_set()
+ */
+EINA_DEPRECATED EAPI int elm_icon_prescale_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Gets the image object of the icon. DO NOT MODIFY THIS.
+ *
+ * @param obj The icon object
+ * @return The internal icon object
+ *
+ * @deprecated Use elm_image_object_get() instead.
+ */
+EINA_DEPRECATED EAPI Evas_Object *elm_icon_object_get(Evas_Object *obj);
+
+/**
+ * @brief Sets the icon lookup order used by elm_icon_standard_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The icon object
+ * @param[in] order The icon lookup order (can be one of
+ * ELM_ICON_LOOKUP_FDO_THEME, ELM_ICON_LOOKUP_THEME_FDO, ELM_ICON_LOOKUP_FDO,
+ * or ELM_ICON_LOOKUP_THEME)
+ *
+ * @see elm_icon_order_lookup_get()
+ * @see Elm_Icon_Lookup_Order
+ */
+EAPI void elm_icon_order_lookup_set(Evas_Object *obj, Elm_Icon_Lookup_Order order);
+
+/**
+ * @brief Gets the icon lookup order.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The icon object
+ * @return The icon lookup order
+ *
+ * @see elm_icon_order_lookup_set()
+ * @see Elm_Icon_Lookup_Order
+ */
+EAPI Elm_Icon_Lookup_Order elm_icon_order_lookup_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Enables or disables preloading of the icon.
+ *
+ * @param obj The icon object
+ * @param disabled If @c EINA_TRUE preloading is disabled,
+ * otherwise @c EINA_FALSE
+ *
+ * @deprecated Use elm_image_preload_disabled_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_icon_preload_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @internal
+ *
+ * @brief Gets whether the icon supports animation.
+ *
+ * @details This returns whether this elm icon's image can be animated. Currently Evas only
+ * supports gif animation. If the return value is @c EINA_FALSE, other
+ * elm_icon_animated_xxx APIs won't work.
+ *
+ * @param obj The icon object
+ * @return @c EINA_TRUE if the icon supports animation,
+ * otherwise @c EINA_FALSE
+ *
+ * @deprecated Use elm_image_animated_available_get() instead.
+ */
+EINA_DEPRECATED EAPI Eina_Bool elm_icon_animated_available_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Sets the animation mode of the icon.
+ *
+ * @remarks Since the default animation mode is set to @c EINA_FALSE,
+ * the icon is shown without animation. Files like animated GIF files
+ * can animate, and this is supported if you enable animated support
+ * on the icon.
+ * Set it to @c EINA_TRUE when the icon needs to be animated.
+ *
+ * @param obj The icon object
+ * @param animated If @c EINA_TRUE the object does the animation job, otherwise @c EINA_FALSE \n
+ * Default is @c EINA_FALSE.
+ *
+ * @deprecated Use elm_image_animated_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_icon_animated_set(Evas_Object *obj, Eina_Bool animated);
+
+/**
+ * @internal
+ *
+ * @brief Gets the animation mode of the icon.
+ *
+ * @param obj The icon object
+ * @return The animation mode of the icon object
+
+ *
+ * @deprecated Use elm_image_animated_get() instead.
+ *
+ * @see elm_icon_animated_set
+ */
+EINA_DEPRECATED EAPI Eina_Bool elm_icon_animated_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Sets the animation play mode of the icon.
+ *
+ * @remarks To play elm icon's animation, set play to @c EINA_TRUE.
+ * For example, you make gif player using this set/get API and click event.
+ * This literally lets you control the current play or paused state. To have
+ * this work with animated GIF files for example, you first, before
+ * setting the file, have to use elm_icon_animated_set() to enable animation
+ * on the icon.
+ *
+ * 1. Click event occurs.
+ * 2. Check play flag using elm_icon_animated_play_get.
+ * 3. If the elm icon is playing, set play to @c EINA_FALSE.
+ * Then animation is stopped and vice versa
+ *
+ * @param obj The icon object
+ * @param play If @c EINA_TRUE the object plays animation images, otherwise @c EINA_FALSE
+ * Default is @c EINA_FALSE.
+ *
+ * @deprecated Use elm_image_animated_play_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_icon_animated_play_set(Evas_Object *obj, Eina_Bool play);
+
+/**
+ * @internal
+ *
+ * @brief Gets the animation play mode of the icon.
+ *
+ * @param obj The icon object
+ * @return The play mode of the icon object
+ *
+ * @deprecated Use elm_image_animated_play_get() instead.
+ *
+ * @see elm_icon_animated_play_get
+ */
+EINA_DEPRECATED EAPI Eina_Bool elm_icon_animated_play_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Sets whether the original aspect ratio of the icon should be kept on resize.
+ *
+ * @remarks The original aspect ratio (width / height) of the icon is usually
+ * distorted to match the object's size. Enabling this option retains
+ * this original aspect, and the way that the icon is fit into the object's
+ * area depends on the option set by elm_icon_fill_outside_set().
+ *
+ * @param obj The icon object
+ * @param fixed If @c EINA_TRUE the icon should retain the aspect, otherwise @c EINA_FALSE
+ *
+ * @deprecated Use elm_image_aspect_fixed_set() instead.
+ *
+ * @see elm_icon_aspect_fixed_get()
+ * @see elm_icon_fill_outside_set()
+ */
+EINA_DEPRECATED EAPI void elm_icon_aspect_fixed_set(Evas_Object *obj, Eina_Bool fixed);
+
+/**
+ * @internal
+ *
+ * @brief Gets whether the object retains the original aspect ratio.
+ *
+ * @param obj The icon object
+ * @return @c EINA_TRUE if the object keeps the original aspect, otherwise @c EINA_FALSE
+ *
+ * @deprecated Use elm_image_aspect_fixed_get() instead.
*/
+EINA_DEPRECATED EAPI Eina_Bool elm_icon_aspect_fixed_get(const Evas_Object *obj);
-#include "elm_icon_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_icon_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_icon_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_image.h b/src/lib/elm_image.h
index 2041ab1b5..3f7d1ab39 100644
--- a/src/lib/elm_image.h
+++ b/src/lib/elm_image.h
@@ -1,19 +1,17 @@
/**
* @defgroup Image Image
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html image_inheritance_tree.png
* @image latex image_inheritance_tree.eps
*
- * @image html img/widget/image/preview-00.png
- * @image latex img/widget/image/preview-00.eps
+ * @brief Image widget allows one to load and display an @b image
+ * file on it, be it from a disk file or from a memory region.
*
- * An Elementary image object is a direct realization of
- * @ref elm-image-class, and it allows one to load and display an @b image
- * file on it, be it from a disk file or from a memory
- * region. Exceptionally, one may also load an Edje group as the
- * contents of the image. In this case, though, most of the functions
- * of the image API will act as a no-op.
+ * Exceptionally, one may also load an Edje group as the contents of the image.
+ * In this case, though, most of the functions of the image API act as a no-op.
+ *
+ * An Elementary image object is a direct realization of elm-image-class.
*
* One can tune various properties of the image, like:
* - pre-scaling,
@@ -21,33 +19,507 @@
* - orientation,
* - aspect ratio during resizes, etc.
*
- * An image object may also be made valid source and destination for
+ * An image object may also be made a valid source and destination for
* drag and drop actions, through the elm_image_editable_set() call.
*
* Signals that you can add callbacks for are:
*
* @li @c "drop" - This is called when a user has dropped an image
- * typed object onto the object in question -- the
- * event info argument is the path to that image file
- * @li @c "clicked" - This is called when a user has clicked the image
+ * typed object onto the object in question, the
+ * event info argument is the path to that image file.
+ * @li @c "clicked" - This is called when a user has clicked the image.
*
- * An example of usage for this API follows:
- * @li @ref tutorial_image
+ * @{
*/
+/**
+ * @brief Enumeration that defines the possible orientation options for elm_image_orient_set().
+ *
+ * @image html elm_image_orient_set.png
+ * @image latex elm_image_orient_set.eps "elm image orient set" width=\textwidth
+ */
+typedef enum
+{
+ ELM_IMAGE_ORIENT_NONE = 0, /**< No orientation change */
+ ELM_IMAGE_ORIENT_0 = 0, /**< No orientation change */
+ ELM_IMAGE_ROTATE_90 = 1, /**< Rotate 90 degrees clockwise */
+ ELM_IMAGE_ROTATE_180 = 2, /**< Rotate 180 degrees clockwise */
+ ELM_IMAGE_ROTATE_270 = 3, /**< Rotate 90 degrees counter-clockwise (i.e. 270 degrees clockwise) */
+ ELM_IMAGE_FLIP_HORIZONTAL = 4, /**< Flip image horizontally */
+ ELM_IMAGE_FLIP_VERTICAL = 5, /**< Flip image vertically */
+ ELM_IMAGE_FLIP_TRANSPOSE = 6, /**< Flip the image along the y = (width - x) line (bottom-left to top-right) */
+ ELM_IMAGE_FLIP_TRANSVERSE = 7 /**< Flip the image along the y = x line (top-left to bottom-right) */
+} Elm_Image_Orient;
/**
- * @addtogroup Image
- * @{
+ * @brief Adds a new image to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @see elm_image_file_set()
+ */
+EAPI Evas_Object *elm_image_add(Evas_Object *parent);
+
+/**
+ * @brief Sets a location in the memory to be used as an image object's source
+ * bitmap.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This function is handy when the contents of an image file are
+ * mapped into the memory, for example.
+ *
+ * @remarks The @a format string should be something like @c "png", @c "jpg",
+ * @c "tga", @c "tiff", @c "bmp" etc, when provided (@c NULL, on the
+ * contrary). This improves the loader performance as it tries the
+ * "correct" loader first, before trying a range of other possible
+ * loaders until one succeeds.
+ *
+ * @param[in] obj The image object
+ * @param[in] img The binary data that is used as an image source
+ * @param[in] size The size of the binary data blob @a img
+ * @param[in] format The (Optional) expected format of @a img bytes
+ * @param[in] key The optional indexing key of @a img to be passed to the
+ * image loader (eg. if @a img is a memory-mapped EET file)
+ *
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ */
+EAPI Eina_Bool elm_image_memfile_set(Evas_Object *obj, const void *img, size_t size, const char *format, const char *key);
+
+/**
+ * @brief Sets the file that is used as the image's source.
+ *
+ * @details This function triggers the Edje file case based on the
+ * extension of the @a file string (expect @c ".edj", for this
+ * case). If one wants to force this type of file independent of the
+ * extension, elm_image_file_edje_set() must be used, instead.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @param[in] file The path to the file that is used as an image source
+ * @param[in] group The group that the image belongs to, in case it's an
+ * EET (including Edje case) file
+ *
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ *
+ * @see elm_image_file_get()
+ */
+EAPI Eina_Bool elm_image_file_set(Evas_Object *obj, const char *file, const char *group);
+
+/**
+ * @brief Gets the file that is used as an image.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @param[out] file The path to the file
+ * @param[out] group The group that the image belongs to, in edje file
+ *
+ * @see elm_image_file_set()
*/
+EAPI void elm_image_file_get(const Evas_Object *obj, const char **file, const char **group);
-#include <elm_image_common.h>
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_image_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_image_legacy.h>
-#endif
+/**
+ * @brief Sets the smooth effect for an image.
+ *
+ * @details This sets the scaling algorithm to be used when scaling the image. Smooth
+ * scaling provides a better resulting image, but is slower.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The smooth scaling should be disabled when making animations that change
+ * the image size, since it is faster. Animations that don't require
+ * resizing of the image can keep the smooth scaling enabled (even if the
+ * image is already scaled, since the scaled image is cached).
+ *
+ * @param[in] obj The image object
+ * @param[in] smooth If @c EINA_TRUE smooth scaling should be used, otherwise @c EINA_FALSE \n
+ * Default is @c EINA_TRUE.
+ *
+ * @see elm_image_smooth_get()
+ */
+EAPI void elm_image_smooth_set(Evas_Object *obj, Eina_Bool smooth);
+
+/**
+ * @brief Gets the smooth effect for an image.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @return @c EINA_TRUE if smooth scaling is enabled, otherwise @c EINA_FALSE
+ *
+ * @see elm_image_smooth_get()
+ */
+EAPI Eina_Bool elm_image_smooth_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the current size of the image.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This is the real size of the image, not the size of the object.
+ *
+ * @param[in] obj The image object
+ * @param[out] w The pointer to the store width, otherwise @c NULL
+ * @param[out] h The pointer to the store height, otherwise @c NULL
+ */
+EAPI void elm_image_object_size_get(const Evas_Object *obj, int *w, int *h);
+
+/**
+ * @brief Disables scaling of this object.
+ *
+ * @details This function disables scaling of elm_image widget through the
+ * function elm_object_scale_set(). However, this does not affect the widget
+ * size/resize in any way. For that effect, take a look at
+ * elm_image_resizable_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @param[in] no_scale If @c EINA_TRUE the object is not scalable, otherwise @c EINA_FALSE \n
+ * Default is @c EINA_FALSE.
+ *
+ * @see elm_image_no_scale_get()
+ * @see elm_image_resizable_set()
+ * @see elm_object_scale_set()
+ */
+EAPI void elm_image_no_scale_set(Evas_Object *obj, Eina_Bool no_scale);
+
+/**
+ * @brief Gets whether scaling is disabled on the object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @return @c EINA_TRUE if scaling is disabled, otherwise @c EINA_FALSE
+ *
+ * @see elm_image_no_scale_set()
+ */
+EAPI Eina_Bool elm_image_no_scale_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether the object is (up/down) resizeable.
+ *
+ * @details This function limits the image resize ability. If @a size_up is set to
+ * @c EINA_FALSE, the object can't have its height or width resized to a value
+ * higher than the original image size. Same is valid for @a size_down.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @param[in] size_up The boolean value to set if the object is resizeable up \n
+ * Default is @c EINA_TRUE.
+ * @param[in] size_down The boolean value to set if the object is resizeable down \n
+ * Default is @c EINA_TRUE.
+ *
+ * @see elm_image_resizable_get()
+ */
+EAPI void elm_image_resizable_set(Evas_Object *obj, Eina_Bool size_up, Eina_Bool size_down);
+
+/**
+ * @brief Gets whether the object is (up/down) resizable.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @param[out] size_up The boolean value to set if the object is resizable up
+ * @param[out] size_down The boolean to set if the object is resizable down
+ *
+ * @see elm_image_resizable_set()
+ */
+EAPI void elm_image_resizable_get(const Evas_Object *obj, Eina_Bool *size_up, Eina_Bool *size_down);
+
+/**
+ * @brief Sets whether the image fills the entire object area, when keeping the aspect ratio.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When the image should keep its aspect ratio even if resized to another
+ * aspect ratio, there are two possibilities to resize it: keep the entire
+ * image inside the limits of the height and width of the object (@a fill_outside
+ * is @c EINA_FALSE) or let the extra width or height go outside the object,
+ * and the image fills the entire object (@a fill_outside is @c EINA_TRUE).
+ *
+ * @remarks This option has no effect if
+ * elm_image_aspect_fixed_set() is set to @c EINA_FALSE.
+ *
+ * @param[in] obj The image object
+ * @param[in] fill_outside If @c EINA_TRUE the object is filled outside, otherwise @c EINA_FALSE \n
+ * Default is @c EINA_FALSE.
+ *
+ * @see elm_image_fill_outside_get()
+ * @see elm_image_aspect_fixed_set()
+ */
+EAPI void elm_image_fill_outside_set(Evas_Object *obj, Eina_Bool fill_outside);
+
+/**
+ * @brief Gets whether the object is filled outside.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @return @c EINA_TRUE if the object is filled outside, otherwise @c EINA_FALSE
+ *
+ * @see elm_image_fill_outside_set()
+ */
+EAPI Eina_Bool elm_image_fill_outside_get(const Evas_Object *obj);
+
+/**
+ * @brief Enables or disables preloading of the image.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @param[in] disabled If @c EINA_TRUE preloading is disabled, otherwise @c EINA_FALSE
+ */
+EAPI void elm_image_preload_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @brief Sets the prescale size for the image.
+ *
+ * @details This function sets a new size for pixmap representation of the given
+ * image. It allows the image to be loaded in advance in the specified size,
+ * reducing the memory usage and load time when loading a big image with load
+ * size set to a smaller size.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It's equivalent to the elm_bg_load_size_set() function for bg.
+ *
+ * @remarks This is just a hint, the real size of the pixmap may differ
+ * depending on the type of image being loaded, being bigger than requested.
+ *
+ * @param[in] obj The image object
+ * @param[in] size The prescale size \n
+ * This value is used for both width and height.
+ *
+ * @see elm_image_prescale_get()
+ * @see elm_bg_load_size_set()
+ */
+EAPI void elm_image_prescale_set(Evas_Object *obj, int size);
+
+/**
+ * @brief Gets the prescale size for the image.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @return The prescale size
+ *
+ * @see elm_image_prescale_set()
+ */
+EAPI int elm_image_prescale_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the image orientation.
+ *
+ * @details This function allows to rotate or flip the given image.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @param[in] orient The image orientation @ref Elm_Image_Orient \n
+ * Default is #ELM_IMAGE_ORIENT_NONE.
+ *
+ * @see elm_image_orient_get()
+ * @see @ref Elm_Image_Orient
+ */
+EAPI void elm_image_orient_set(Evas_Object *obj, Elm_Image_Orient orient);
+
+/**
+ * @brief Gets the image orientation.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @return The image orientation @ref Elm_Image_Orient
+ *
+ * @see elm_image_orient_set()
+ * @see @ref Elm_Image_Orient
+ */
+EAPI Elm_Image_Orient elm_image_orient_get(const Evas_Object *obj);
+
+/**
+ * @brief Makes the image 'editable'.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This means the image is a valid drag target for drag and drop, and can be
+ * cut or pasted.
+ *
+ * @param[in] obj The image object
+ * @param[in] set The boolean value to turn on or turn off editability \n
+ * Default is @c EINA_FALSE.
+ */
+EAPI void elm_image_editable_set(Evas_Object *obj, Eina_Bool set);
+
+/**
+ * @brief Checks whether the image is 'editable'.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A return value of @c EINA_TRUE means the image is a valid drag target
+ * for drag and drop, and can be cut or pasted.
+ *
+ * @param[in] obj The image object
+ * @return The boolean value to turn on or turn off editability
+ */
+EAPI Eina_Bool elm_image_editable_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the inlined image object of the image widget.
+ *
+ * @details This function allows one to get the underlying @c Evas_Object of type
+ * Image from this elementary widget. It can be useful to do things like get
+ * the pixel data, save the image to a file, etc.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Be careful to not manipulate it, as it is under the control of
+ * elementary.
+ *
+ * @param[in] obj The image object to get the inlined image from
+ * @return The inlined image object, otherwise @c NULL if none exist
+ */
+EAPI Evas_Object *elm_image_object_get(const Evas_Object *obj);
+
+/**
+ * @brief Set whether the original aspect ratio of the image should be kept on resize.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The original aspect ratio (width / height) of the image is usually
+ * distorted to match the object's size. Enabling this option retains
+ * this original aspect, and the way that the image is fit into the object's
+ * area depends on the option set by elm_image_fill_outside_set().
+ *
+ * @param[in] obj The image object
+ * @param[in] fixed If @c EINA_TRUE the image should retain the aspect, otherwise @c EINA_FALSE
+ *
+ * @see elm_image_aspect_fixed_get()
+ * @see elm_image_fill_outside_set()
+ */
+EAPI void elm_image_aspect_fixed_set(Evas_Object *obj, Eina_Bool fixed);
+
+/**
+ * @brief Gets whether the object retains the original aspect ratio.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @return @c EINA_TRUE if the object keeps the original aspect, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_image_aspect_fixed_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets whether an image object supports animation.
+ *
+ * @details This function returns if this Elementary image object's internal
+ * image can be animated. Currently Evas only supports GIF
+ * animation. If the return value is @c EINA_FALSE, other
+ * @c elm_image_animated_xxx API calls won't work.
+ *
+ * @since_tizen 2.3
+ *
+ * @since 1.7
+ *
+ * @param[in] obj The image object
+ * @return @c EINA_TRUE if the image supports animation, otherwise @c EINA_FALSE
+ *
+ * @see elm_image_animated_set()
+ */
+EAPI Eina_Bool elm_image_animated_available_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether an image object (which supports animation) is to
+ * animate itself.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks An image object, even if it supports animation, is displayed
+ * by default without animation. Call this function with @a animated
+ * set to @c EINA_TRUE to enable its animation. To start or stop the
+ * animation, use elm_image_animated_play_set().
+ *
+ * @param[in] obj The image object
+
+ * @param[in] animated If @c EINA_TRUE the object is to animate itself, otherwise @c EINA_FALSE \n
+ * Default is @c EINA_FALSE.
+ *
+ * @see elm_image_animated_get()
+ * @see elm_image_animated_available_get()
+ * @see elm_image_animated_play_set()
+ */
+EAPI void elm_image_animated_set(Evas_Object *obj, Eina_Bool animated);
+
+/**
+ * @brief Gets whether an image object has animation enabled.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ *
+ * @return @c EINA_TRUE if the image has animation enabled, otherwise @c EINA_FALSE
+ *
+ * @see elm_image_animated_set()
+ */
+EAPI Eina_Bool elm_image_animated_get(const Evas_Object *obj);
+
+/**
+ * @brief Starts or stops an image object's animation.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks To actually start playing any image object's animation, if it
+ * supports it, one must do something like:
+ *
+ * @code
+ * if (elm_image_animated_available_get(img))
+ * {
+ * elm_image_animated_set(img, EINA_TRUE);
+ * elm_image_animated_play_set(img, EINA_TRUE);
+ * }
+ * @endcode
+ *
+ * @remarks elm_image_animated_set() enables animation on the image, <b>but does
+ * not start it yet</b>. This is the function one uses to start and
+ * stop animations on image objects.
+ *
+ * @param[in] obj The image object
+ * @param[in] play If @c EINA_TRUE animation is started, otherwise @c EINA_FALSE \n
+ * Default is @c EINA_FALSE.
+ *
+ * @see elm_image_animated_available_get()
+ * @see elm_image_animated_set()
+ * @see elm_image_animated_play_get()
+ */
+EAPI void elm_image_animated_play_set(Evas_Object *obj, Eina_Bool play);
+
+/**
+ * @brief Gets whether an image object is under animation.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The image object
+ * @return @c EINA_TRUE if the image is being animated, otherwise @c EINA_FALSE
+ *
+ * @see elm_image_animated_play_get()
+ */
+EAPI Eina_Bool elm_image_animated_play_get(const Evas_Object *obj);
/**
* @}
diff --git a/src/lib/elm_index.h b/src/lib/elm_index.h
index afd722943..5ed2fcc60 100644
--- a/src/lib/elm_index.h
+++ b/src/lib/elm_index.h
@@ -1,26 +1,25 @@
/**
* @defgroup Index Index
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html index_inheritance_tree.png
* @image latex index_inheritance_tree.eps
*
- * @image html img/widget/index/preview-00.png
- * @image latex img/widget/index/preview-00.eps
+ * @brief An index widget gives you an index for fast access to whichever
+ * group of other UI items one might have.
*
- * An index widget gives you an index for fast access to whichever
- * group of other UI items one might have. It's a list of text
- * items (usually letters, for alphabetically ordered access).
+ * It's a list of text items (usually letters, for alphabetically ordered
+ * access).
*
* Index widgets are by default hidden and just appear when the
* user clicks over it's reserved area in the canvas. In its
- * default theme, it's an area one @ref Fingers "finger" wide on
+ * default theme, it's an area of one @ref Fingers "finger" wide on
* the right side of the index widget's container.
*
* When items on the index are selected, smart callbacks get
* called, so that its user can make other container objects to
* show a given area or child object depending on the index item
- * selected. You'd probably be using an index together with @ref
+ * selected. You would probably be using an index together with @ref
* List "lists", @ref Genlist "generic lists" or @ref Gengrid
* "general grids".
*
@@ -28,47 +27,452 @@
* functions acting on it also work for index objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * - @c "changed" - When the selected index item changes. @c
- * event_info is the selected item's data pointer.
+ * @ref Layout :
+ * - @c "changed" - When the selected index item changes.
+ * @c event_info is the selected item's data pointer.
* - @c "delay,changed" - When the selected index item changes, but
- * after a small idling period. @p event_info is the selected
+ * after a small idling period. @a event_info is the selected
* item's data pointer.
* - @c "selected" - When the user releases a mouse button and
- * selects an item. @p event_info is the selected item's pointer.
- * - @c "level,up" - when the user moves a finger from the first
- * level to the second level
- * - @c "level,down" - when the user moves a finger from the second
- * level to the first level
- * - @c "language,changed" - the program's language changed
- * - @c "focused" - When the index has received focus. (since 1.8)
- * - @c "unfocused" - When the index has lost focus. (since 1.8)
- *
- * The @c "delay,changed" event is so that it'll wait a small time
+ * selects an item. @a event_info is the selected item's data
+ * pointer.
+ * - @c "level,up" - When the user moves a finger from the first
+ * level to the second level.
+ * - @c "level,down" - When the user moves a finger from the second
+ * level to the first level.
+ * - @c "language,changed" - The program's language is changed.
+ *
+ * The @c "delay,changed" event is so that it waits for a small period of time
* before actually reporting those events and, moreover, just the
- * last event happening on those time frames will actually be
+ * last event happening on those time frames is actually
* reported.
*
- * Supported elm_object_item common APIs
- * @li elm_object_item_del
+ * @{
+ */
+
+/**
+ * @brief Adds a new index widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new index widget on the canvas.
*
- * Here are some examples on its usage:
- * @li @ref index_example_01
- * @li @ref index_example_02
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new index widget handle, otherwise @c NULL in case of an error
*/
+EAPI Evas_Object *elm_index_add(Evas_Object *parent);
/**
- * @addtogroup Index
- * @{
+ * @brief Enables or disables the auto hiding feature for a given index widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @param[in] disabled If @c EINA_TRUE auto hiding is disabled, otherwise @c EINA_FALSE to enable it
+ *
+ * @see elm_index_autohide_disabled_get()
+ */
+EAPI void elm_index_autohide_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @brief Gets whether the auto hiding feature is enabled for a given index widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @return @c EINA_TRUE if auto hiding is disabled, otherwise @c EINA_FALSE
+ *
+ * @see elm_index_autohide_disabled_set()
+ */
+EAPI Eina_Bool elm_index_autohide_disabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the items level for a given index widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @param[in] level @c 0 or @c 1, the currently implemented levels
+ *
+ * @see elm_index_item_level_get()
+ */
+EAPI void elm_index_item_level_set(Evas_Object *obj, int level);
+
+/**
+ * @brief Gets the items level set for a given index widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @return @c 0 or @c 1, which are the levels that @a obj might be at
+ *
+ * @see elm_index_item_level_set()
+ */
+EAPI int elm_index_item_level_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the selected state of an item.
+ *
+ * @details This sets the selected state of the given item @a it.
+ * @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If a new item is selected the previously selected is unselected.
+ * Previously selected item can be obtained with function
+ * elm_index_selected_item_get().
+ *
+ * @remarks Selected items are highlighted.
+ *
+ * @param[in] it The index item
+ * @param[in] selected The selected state
+ *
+ * @see elm_index_selected_item_get()
+ */
+EAPI void elm_index_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * @brief Gets the last selected item, for a given index widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @param[in] level @c 0 or @c 1, the currently implemented levels
+ * @return The last item @b selected on @a obj (or @c NULL on errors)
+ */
+EAPI Elm_Object_Item *elm_index_selected_item_get(const Evas_Object *obj, int level);
+
+/**
+ * @brief Appends a new item on a given index widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Despite the fact that the most common usage of the @a letter argument is for
+ * single char strings, one could use arbitrary strings as index
+ * entries.
+ *
+ * @remarks @a it is the pointer returned back on the @c "changed", @c
+ * "delay,changed", and @c "selected" smart events.
+ *
+ * @param[in] obj The index object
+ * @param[in] letter The letter under which the item should be indexed
+ * @param[in] func The function to call when the item is selected
+ * @param[in] data The item data to set for the index's item
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ */
+EAPI Elm_Object_Item *elm_index_item_append(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Prepends a new item on a given index widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Despite the fact that the most common usage of the @a letter argument is for
+ * single char strings, one could use arbitrary strings as index
+ * entries.
+ *
+ * @remarks @a it is the pointer returned back on the @c "changed", @c
+ * "delay,changed", and @c "selected" smart events.
+ *
+ * @param[in] obj The index object
+ * @param[in] letter The letter under which the item should be indexed
+ * @param[in] func The function to call when the item is selected
+ * @param[in] data The item data to set for the index's item
+ * @return A handle to the item added, otherwise @c NULL in case if an error
+ */
+EAPI Elm_Object_Item *elm_index_item_prepend(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Inserts a new item into the index object after the item @a after.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Despite the fact that the most common usage of the @a letter argument is for
+ * single char strings, one could use arbitrary strings as index
+ * entries.
+ *
+ * @remarks @a it is the pointer returned back on the @c "changed", @c
+ * "delay,changed", and @c "selected" smart events.
+ *
+ * @remarks If @a relative is @c NULL this function behaves like
+ * elm_index_item_append().
+ *
+ * @param[in] obj The index object
+ * @param[in] after The index item to insert after
+ * @param[in] letter The letter under which the item should be indexed
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The item data to set for the index's item
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ */
+EAPI Elm_Object_Item *elm_index_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *letter, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Inserts a new item into the index object before the item @a before.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Despite that fact that the most common usage of the @a letter argument is for
+ * single char strings, one could use arbitrary strings as index
+ * entries.
+ *
+ * @remarks @a it is the pointer returned back on the @c "changed", @c
+ * "delay,changed", and @c "selected" smart events.
+ *
+ * @remarks If @a relative is @c NULL this function behave like
+ * elm_index_item_prepend().
+ *
+ * @param[in] obj The index object
+ * @param[in] before The index item to insert after
+ * @param[in] letter The letter under which the item should be indexed
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The item data to set for the index's item
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ */
+EAPI Elm_Object_Item *elm_index_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *letter, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Inserts a new item into the given index widget, using @a cmp_func
+ * function to sort items (by item handles).
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Despite the fact that the most common usage of the @a letter argument is for
+ * single char strings, one could use arbitrary strings as index
+ * entries.
+ *
+ * @remarks @a it is the pointer returned back on the @c "changed", @c
+ * "delay,changed", and @c "selected" smart events.
+ *
+ * @param[in] obj The index object
+ * @param[in] letter The letter under which the item should be indexed
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The item data to set for the index's item
+ * @param[in] cmp_func The comparing function to be used to sort index
+ * items <b>by index item handles</b>
+ * @param[in] cmp_data_func A @b callback function to be called for the
+ * sorting of index items <b>by item data</b>) \n
+ * It is used when @a cmp_func returns @c 0 (equality), which means an index
+ * item with provided item data already exists \n
+ * To decide which data item should be pointed to by the index item in question, @a
+ * cmp_data_func is used \n
+ * If @a cmp_data_func returns a non-negative value, the previous index item data is
+ * replaced by the given @a it pointer \n
+ * If the previous data needs to be freed, it should be done by the @a cmp_data_func function,
+ * because all references to it are lost \n
+ * If this function is not provided (@c NULL is given), index items are @b
+ * duplicated, if @a cmp_func returns @c 0.
+ * @return A handle to the item added, otherwise @c NULL in case of an error
*/
+EAPI Elm_Object_Item *elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func);
-#include <elm_index_common.h>
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_index_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_index_legacy.h>
-#endif
+/**
+ * @brief Finds a given index widget's item, <b>using item data</b>.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @param[in] data The item data pointed to by the desired index item
+ * @return The index item handle if found, otherwise @c NULL
+ */
+EAPI Elm_Object_Item *elm_index_item_find(Evas_Object *obj, const void *data);
+
+/**
+ * @brief Removes @b all items from a given index widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If deletion callbacks are set, via elm_object_item_del_cb_set(),
+ * that callback function is called for each item in @a obj.
+ *
+ * @param[in] obj The index object
+ */
+EAPI void elm_index_item_clear(Evas_Object *obj);
+
+/**
+ * @brief Flushes the changes made to the index items so they work correctly.
+ *
+ * @details This flushes any changes made to items indicating that the object is ready to
+ * go. You should call this before any expected changes work. This
+ * is similar to elm_list_go().
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If not called, it won't display the index properly.
+ *
+ * @param[in] obj The index object
+ * @param[in] level The index level (either @c 0 or @c 1) where changes were made
+ */
+EAPI void elm_index_level_go(Evas_Object *obj, int level);
+
+/**
+ * @brief Gets the letter (string) set on a given index widget item.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] item The index item handle
+ * @return The letter string set on @a it
+ */
+EAPI const char *elm_index_item_letter_get(const Elm_Object_Item *item);
+
+/**
+ * @brief Sets the indicator to be disabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks In the Index widget, Indicator notes the popup text, which shows that a letter has been selected.
+ *
+ * @param[in] obj The index object
+ * @param[in] disabled If @c EINA_TRUE the indicator is disabled,
+ * otherwise @c EINA_FALSE to enable it
+ *
+ * @see elm_index_indicator_disabled_get()
+ */
+EAPI void elm_index_indicator_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @brief Gets the value of the indicator's disabled status.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @return @c EINA_TRUE if the indicator is disabled,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_index_indicator_disabled_set()
+ */
+EAPI Eina_Bool elm_index_indicator_disabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Enables or disables the horizontal mode on the index object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The vertical mode is set by default.
+ *
+ * @remarks On the horizontal mode items are displayed on the index from left to right,
+ * instead of from top to bottom. Also, the index scrolls horizontally.
+ *
+ * @param[in] obj The index object
+ * @param[in] horizontal If @c EINA_TRUE the horizontal is enabled, otherwise @c EINA_FALSE to
+ * disable it, i.e., to enable the vertical mode \n
+ * It's an area of one @ref Fingers "finger" wide at the bottom side of the index widget's container.
+ *
+ * @see elm_index_horizontal_get()
+ */
+EAPI void elm_index_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Gets a value that indicates whether the horizontal mode is enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @return @c EINA_TRUE means the horizontal mode selection is enabled,
+ * otherwise @c EINA_FALSE indicates that it's disabled \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_index_horizontal_set()
+ */
+EAPI Eina_Bool elm_index_horizontal_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets a delay change time for the index object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The delay time is @c 0.2 sec by default.
+ *
+ * @param[in] obj The index object
+ * @param[in] delay_change_time The delay change time to set.
+ *
+ * @see elm_index_delay_change_time_get
+ */
+EAPI void elm_index_delay_change_time_set(Evas_Object *obj, double delay_change_time);
+
+/**
+ * @brief Gets a delay change time for the index object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @return The delay change time in seconds
+ *
+ * @see elm_index_delay_change_time_set
+ */
+EAPI double elm_index_delay_change_time_get(const Evas_Object *obj);
+
+/**
+ * @brief Enables or disables the omit feature for a given index widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @param[in] enabled If @c EINA_TRUE the omit feature is enabled, otherwise @c EINA_FALSE to disable it
+ *
+ * @see elm_index_omit_enabled_get()
+ */
+EAPI void elm_index_omit_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @brief Gets whether the omit feature is enabled for a given index widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The index object
+ * @return @c EINA_TRUE if the omit feature is enabled, otherwise @c EINA_FALSE
+ *
+ * @see elm_index_omit_enabled_set()
+ */
+EAPI Eina_Bool elm_index_omit_enabled_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sets the priority of an item.
+ *
+ * @remarks The priority is @c -1 by default, which means that the item doesn't belong to a group.
+ *
+ * @remarks The value of the priority starts from @c 0.
+ *
+ * @remarks In elm_index_level_go, the items are sorted in ascending order according to priority.
+ * Items of the same priority make a group and the primary group is shown by default.
+ *
+ * @param it The index item
+ * @param priority The priority
+ */
+EAPI void elm_index_item_priority_set(Elm_Object_Item *it, int priority);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Set priority group of index. Priority group will be shown as many items as it can,
+ * and other group will be shown one character only.
+ *
+ * @remarks The value of the priority starts from -1.
+ * Change Index's current priority to target.
+ *
+ * @param obj The index object
+ * @param priority target priority value in index
+ *
+ * @see elm_index_priority_get()
+ */
+EAPI void elm_index_priority_set(Evas_Object *obj, int priority);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Get current priority group of index.
+ *
+ * @param obj The index object
+ * @return priority value in index
+ *
+ * @see elm_index_priority_set()
+ */
+EAPI int elm_index_priority_get(const Evas_Object *obj);
/**
* @}
diff --git a/src/lib/elm_interface_scrollable.h b/src/lib/elm_interface_scrollable.h
index 25f50a14b..16ef2ba62 100644
--- a/src/lib/elm_interface_scrollable.h
+++ b/src/lib/elm_interface_scrollable.h
@@ -2,7 +2,10 @@
#define ELM_INTEFARCE_SCROLLER_H
/**
- * @addtogroup Widget
+ * @internal
+ * @defgroup elm_interface_scroller_group Elm Interface Scroller
+ * @ingroup elm_infra_group
+ *
* @{
*
* @section elm-scrollable-interface The Elementary Scrollable Interface
@@ -14,10 +17,10 @@
* so an interface is also declared.
*
* The scrollable interface comes built with Elementary and is exposed
- * as #ELM_SCROLLABLE_IFACE.
+ * as ELM_SCROLLABLE_IFACE.
*
* The interface API is explained in details at
- * #Elm_Scrollable_Smart_Interface.
+ * Elm_Scrollable_Smart_Interface.
*
* An Elementary scrollable interface will handle an internal @b
* panning object. It has the function of clipping and moving the
@@ -31,7 +34,117 @@
* Elm_Scrollable_Smart_Interface::extern_pan_set.
*/
-#include "elm_pan.eo.h"
+/**
+ * @def ELM_PAN_CLASS
+ *
+ * Use this macro to cast whichever subclass of
+ * #Elm_Pan_Smart_Class into it, so to access its fields.
+ *
+ * @ingroup Widget
+ */
+ #define ELM_PAN_CLASS(x) ((Elm_Pan_Smart_Class *)x)
+
+/**
+ * @def ELM_PAN_SMART_CLASS_VERSION
+ *
+ * Current version for Elementary pan @b base smart class, a value
+ * which goes to _Elm_Pan_Smart_Class::version.
+ *
+ * @ingroup Widget
+ */
+#define ELM_PAN_SMART_CLASS_VERSION 1
+
+/**
+ * @def ELM_PAN_SMART_CLASS_INIT
+ *
+ * Initializer for a whole #Elm_Pan_Smart_Class structure, with
+ * @c NULL values on its specific fields.
+ *
+ * @param smart_class_init initializer to use for the "base" field
+ * (#Evas_Smart_Class).
+ *
+ * @see EVAS_SMART_CLASS_INIT_NULL
+ * @see EVAS_SMART_CLASS_INIT_NAME_VERSION
+ * @see ELM_PAN_SMART_CLASS_INIT_NULL
+ * @see ELM_PAN_SMART_CLASS_INIT_NAME_VERSION
+ *
+ * @ingroup Widget
+ */
+#define ELM_PAN_SMART_CLASS_INIT(smart_class_init) \
+ {smart_class_init, ELM_PAN_SMART_CLASS_VERSION, NULL, NULL, NULL, NULL, \
+ NULL, NULL, NULL}
+
+/**
+ * @def ELM_PAN_SMART_CLASS_INIT_NULL
+ *
+ * Initializer to zero out a whole #Elm_Pan_Smart_Class structure.
+ *
+ * @see ELM_PAN_SMART_CLASS_INIT_NAME_VERSION
+ * @see ELM_PAN_SMART_CLASS_INIT
+ *
+ * @ingroup Widget
+ */
+#define ELM_PAN_SMART_CLASS_INIT_NULL \
+ ELM_PAN_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NULL)
+
+/**
+ * @def ELM_PAN_SMART_CLASS_INIT_NAME_VERSION
+ *
+ * Initializer to zero out a whole #Elm_Pan_Smart_Class structure and
+ * set its name and version.
+ *
+ * This is similar to #ELM_PAN_SMART_CLASS_INIT_NULL, but it will
+ * also set the version field of #Elm_Pan_Smart_Class (base field)
+ * to the latest #ELM_PAN_SMART_CLASS_VERSION and name it to the
+ * specific value.
+ *
+ * It will keep a reference to the name field as a <c>"const char *"</c>,
+ * i.e., the name must be available while the structure is
+ * used (hint: static or global variable!) and must not be modified.
+ *
+ * @see ELM_PAN_SMART_CLASS_INIT_NULL
+ * @see ELM_PAN_SMART_CLASS_INIT
+ *
+ * @ingroup Widget
+ */
+#define ELM_PAN_SMART_CLASS_INIT_NAME_VERSION(name) \
+ ELM_PAN_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
+
+/**
+ * Elementary scroller panning base smart class. This inherits
+ * directly from the Evas smart clipped class (an object clipping
+ * children to its viewport/size). It is exposed here only to build
+ * widgets needing a custom panning behavior.
+ */
+typedef struct _Elm_Pan_Smart_Class Elm_Pan_Smart_Class;
+struct _Elm_Pan_Smart_Class
+{
+ Evas_Smart_Class base; /* it's a clipped smart object */
+
+ int version; /**< Version of this smart class definition */
+
+ void (*pos_set)(Evas_Object *obj,
+ Evas_Coord x,
+ Evas_Coord y);
+ void (*pos_get)(const Evas_Object *obj,
+ Evas_Coord *x,
+ Evas_Coord *y);
+ void (*pos_max_get)(const Evas_Object *obj,
+ Evas_Coord *x,
+ Evas_Coord *y);
+ void (*pos_min_get)(const Evas_Object *obj,
+ Evas_Coord *x,
+ Evas_Coord *y);
+ void (*content_size_get)(const Evas_Object *obj,
+ Evas_Coord *x,
+ Evas_Coord *y);
+ void (*gravity_set)(Evas_Object *obj,
+ double x,
+ double y);
+ void (*gravity_get)(const Evas_Object *obj,
+ double *x,
+ double *y);
+};
/**
* Elementary scroller panning base smart data.
@@ -39,6 +152,10 @@
typedef struct _Elm_Pan_Smart_Data Elm_Pan_Smart_Data;
struct _Elm_Pan_Smart_Data
{
+ Evas_Object_Smart_Clipped_Data base;
+
+ const Elm_Pan_Smart_Class *api; /**< This is the pointer to the object's class, from where we can reach/call its class functions */
+
Evas_Object *self;
Evas_Object *content;
Evas_Coord x, y, w, h;
@@ -47,13 +164,28 @@ struct _Elm_Pan_Smart_Data
Evas_Coord prev_cw, prev_ch, delta_posx, delta_posy;
};
+//TIZEN ONLY : for scroller smooth algorithm
+typedef struct _Elm_Scroll_Pos
+{
+ Evas_Coord x, y;
+ double t;
+} Elm_Scroll_Pos;
+
+typedef struct _Elm_Scroll_History_Item
+{
+ Evas_Coord x, y;
+ double timestamp, localtimestamp;
+} Elm_Scroll_History_Item;
+
+typedef struct _Elm_Scroll_Predict
+{
+ double k[2];
+} Elm_Scroll_Predict;
+#define ELM_SCROLL_HISTORY_SIZE 60
+
/**
* Elementary scrollable interface base data.
*/
-typedef void (*Elm_Interface_Scrollable_Cb)(Evas_Object *, void *data);
-typedef void (*Elm_Interface_Scrollable_Min_Limit_Cb)(Evas_Object *obj, Eina_Bool w, Eina_Bool h);
-typedef void (*Elm_Interface_Scrollable_Resize_Cb)(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
-
typedef struct _Elm_Scrollable_Smart_Interface_Data
Elm_Scrollable_Smart_Interface_Data;
struct _Elm_Scrollable_Smart_Interface_Data
@@ -71,7 +203,7 @@ struct _Elm_Scrollable_Smart_Interface_Data
Elm_Scroller_Policy hbar_flags, vbar_flags;
Elm_Scroller_Single_Direction one_direction_at_a_time;
- Elm_Scroller_Movement_Block block;
+ Elm_Scroller_Movement_Block block;
struct
{
@@ -85,11 +217,8 @@ struct _Elm_Scrollable_Smart_Interface_Data
Evas_Coord b0x, b0y;
Evas_Coord b2x, b2y;
- struct
- {
- Evas_Coord x, y;
- double timestamp, localtimestamp;
- } history[60];
+ //TIZEN ONLY : for scroller smooth algorithm
+ Elm_Scroll_History_Item history[ELM_SCROLL_HISTORY_SIZE];
struct
{
@@ -109,7 +238,6 @@ struct _Elm_Scrollable_Smart_Interface_Data
Evas_Coord locked_x, locked_y;
int hdir, vdir;
- Ecore_Idle_Enterer *hold_enterer;
Ecore_Animator *hold_animator;
Ecore_Animator *onhold_animator;
Ecore_Animator *momentum_animator;
@@ -130,6 +258,23 @@ struct _Elm_Scrollable_Smart_Interface_Data
Eina_Bool dir_y : 1;
Eina_Bool hold : 1;
Eina_Bool now : 1;
+ //TIZEN ONLY : for scroller smooth algorithm
+ double anim_t_prev;
+ int anim_x_prev;
+ int anim_y_prev;
+ double anim_vx_prev;
+ double anim_vy_prev;
+ int anim_x_coord_prev;
+ int anim_y_coord_prev;
+ int anim_count;
+ int anim_skip;
+ int anim_t_dont_adjust;
+ double anim_t_delay;
+ double anim_t_adjusted;
+ double anim_pos_t_prev;
+ int pageflick_h;
+ int pageflick_v;
+ Elm_Scroll_Predict predict;
} down;
struct
@@ -145,29 +290,50 @@ struct _Elm_Scrollable_Smart_Interface_Data
struct
{
- Elm_Interface_Scrollable_Cb drag_start;
- Elm_Interface_Scrollable_Cb drag_stop;
- Elm_Interface_Scrollable_Cb animate_start;
- Elm_Interface_Scrollable_Cb animate_stop;
- Elm_Interface_Scrollable_Cb scroll;
- Elm_Interface_Scrollable_Cb scroll_left;
- Elm_Interface_Scrollable_Cb scroll_right;
- Elm_Interface_Scrollable_Cb scroll_up;
- Elm_Interface_Scrollable_Cb scroll_down;
- Elm_Interface_Scrollable_Cb edge_left;
- Elm_Interface_Scrollable_Cb edge_right;
- Elm_Interface_Scrollable_Cb edge_top;
- Elm_Interface_Scrollable_Cb edge_bottom;
- Elm_Interface_Scrollable_Cb vbar_drag;
- Elm_Interface_Scrollable_Cb vbar_press;
- Elm_Interface_Scrollable_Cb vbar_unpress;
- Elm_Interface_Scrollable_Cb hbar_drag;
- Elm_Interface_Scrollable_Cb hbar_press;
- Elm_Interface_Scrollable_Cb hbar_unpress;
- Elm_Interface_Scrollable_Cb page_change;
-
- Elm_Interface_Scrollable_Min_Limit_Cb content_min_limit;
- Elm_Interface_Scrollable_Resize_Cb content_viewport_resize;
+ void (*drag_start)(Evas_Object *obj,
+ void *data);
+ void (*drag_stop)(Evas_Object *obj,
+ void *data);
+ void (*animate_start)(Evas_Object *obj,
+ void *data);
+ void (*animate_stop)(Evas_Object *obj,
+ void *data);
+ void (*scroll)(Evas_Object *obj,
+ void *data);
+ void (*scroll_left)(Evas_Object *obj,
+ void *data);
+ void (*scroll_right)(Evas_Object *obj,
+ void *data);
+ void (*scroll_up)(Evas_Object *obj,
+ void *data);
+ void (*scroll_down)(Evas_Object *obj,
+ void *data);
+ void (*edge_left)(Evas_Object *obj,
+ void *data);
+ void (*edge_right)(Evas_Object *obj,
+ void *data);
+ void (*edge_top)(Evas_Object *obj,
+ void *data);
+ void (*edge_bottom)(Evas_Object *obj,
+ void *data);
+ void (*vbar_drag)(Evas_Object *obj,
+ void *data);
+ void (*vbar_press)(Evas_Object *obj,
+ void *data);
+ void (*vbar_unpress)(Evas_Object *obj,
+ void *data);
+ void (*hbar_drag)(Evas_Object *obj,
+ void *data);
+ void (*hbar_press)(Evas_Object *obj,
+ void *data);
+ void (*hbar_unpress)(Evas_Object *obj,
+ void *data);
+ void (*content_min_limit)(Evas_Object *obj,
+ Eina_Bool w,
+ Eina_Bool h);
+ void (*content_viewport_resize)(Evas_Object *obj,
+ Evas_Coord w,
+ Evas_Coord h);
} cb_func;
struct
@@ -180,19 +346,13 @@ struct _Elm_Scrollable_Smart_Interface_Data
} x, y;
} scrollto;
+ int pagecount_h, pagecount_v;
double pagerel_h, pagerel_v;
Evas_Coord pagesize_h, pagesize_v;
int page_limit_h, page_limit_v;
- int current_calc;
-
- unsigned char size_adjust_recurse;
- unsigned char size_count;
- Eina_Bool size_adjust_recurse_abort : 1;
Eina_Bool momentum_animator_disabled : 1;
Eina_Bool bounce_animator_disabled : 1;
- Eina_Bool page_snap_horiz : 1;
- Eina_Bool page_snap_vert : 1;
Eina_Bool wheel_disabled : 1;
Eina_Bool hbar_visible : 1;
Eina_Bool vbar_visible : 1;
@@ -210,20 +370,268 @@ struct _Elm_Scrollable_Smart_Interface_Data
Eina_Bool go_right : 1;
Eina_Bool go_up : 1;
Eina_Bool go_down : 1;
+ Eina_Bool loop_h : 1;
+ Eina_Bool loop_v : 1;
+ Eina_Bool origin_x : 1;
+ Eina_Bool origin_y : 1;
};
+typedef struct _Elm_Scrollable_Smart_Interface Elm_Scrollable_Smart_Interface;
+struct _Elm_Scrollable_Smart_Interface
+{
+ Evas_Smart_Interface base;
+
+ void (*objects_set)(Evas_Object *obj,
+ Evas_Object *edje_obj,
+ Evas_Object *hit_rectangle);
+ void (*content_set)(Evas_Object *obj,
+ Evas_Object *content);
+
+ void (*extern_pan_set)(Evas_Object *obj,
+ Evas_Object *pan);
+
+ void (*drag_start_cb_set)(Evas_Object *obj,
+ void (*d_start_cb)(Evas_Object *obj,
+ void *data));
+ void (*drag_stop_cb_set)(Evas_Object *obj,
+ void (*d_stop_cb)(Evas_Object *obj,
+ void *data));
+ void (*animate_start_cb_set)(Evas_Object *obj,
+ void (*a_start_cb)(Evas_Object *obj,
+ void *data));
+ void (*animate_stop_cb_set)(Evas_Object *obj,
+ void (*a_stop_cb)(Evas_Object *obj,
+ void *data));
+ void (*scroll_cb_set)(Evas_Object *obj,
+ void (*s_cb)(Evas_Object *obj,
+ void *data));
+ void (*scroll_left_cb_set)(Evas_Object *obj,
+ void (*s_left_cb)(Evas_Object *obj,
+ void *data));
+ void (*scroll_right_cb_set)(Evas_Object *obj,
+ void (*s_right_cb)(Evas_Object *obj,
+ void *data));
+ void (*scroll_up_cb_set)(Evas_Object *obj,
+ void (*s_up_cb)(Evas_Object *obj,
+ void *data));
+ void (*scroll_down_cb_set)(Evas_Object *obj,
+ void (*s_down_cb)(Evas_Object *obj,
+ void *data));
+ void (*edge_left_cb_set)(Evas_Object *obj,
+ void (*e_left_cb)(Evas_Object *obj,
+ void *data));
+ void (*edge_right_cb_set)(Evas_Object *obj,
+ void (*e_right_cb)(Evas_Object *obj,
+ void *data));
+ void (*edge_top_cb_set)(Evas_Object *obj,
+ void (*e_top_cb)(Evas_Object *obj,
+ void *data));
+ void (*edge_bottom_cb_set)(Evas_Object *obj,
+ void (*e_bottom_cb)(Evas_Object *obj,
+ void *data));
+ void (*vbar_drag_cb_set)(Evas_Object *obj,
+ void (*v_drag_cb)(Evas_Object *obj,
+ void *data));
+ void (*vbar_press_cb_set)(Evas_Object *obj,
+ void (*v_press_cb)(Evas_Object *obj,
+ void *data));
+ void (*vbar_unpress_cb_set)(Evas_Object *obj,
+ void (*v_unpress_cb)(Evas_Object *obj,
+ void *data));
+ void (*hbar_drag_cb_set)(Evas_Object *obj,
+ void (*h_drag_cb)(Evas_Object *obj,
+ void *data));
+ void (*hbar_press_cb_set)(Evas_Object *obj,
+ void (*h_press_cb)(Evas_Object *obj,
+ void *data));
+ void (*hbar_unpress_cb_set)(Evas_Object *obj,
+ void (*h_unpress_cb)(Evas_Object *obj,
+ void *data));
+
+ void (*content_min_limit_cb_set)(Evas_Object *obj,
+ void (*c_limit_cb)(Evas_Object *obj,
+ Eina_Bool w,
+ Eina_Bool h));
+ void (*content_viewport_resize_cb_set)(Evas_Object *obj,
+ void (*c_viewport_resize_cb)(Evas_Object *obj,
+ Evas_Coord w,
+ Evas_Coord h));
+
+ /* set the position of content object inside the scrolling region,
+ * immediately */
+ void (*content_pos_set)(Evas_Object *obj,
+ Evas_Coord x,
+ Evas_Coord y,
+ Eina_Bool sig);
+ void (*content_pos_get)(const Evas_Object *obj,
+ Evas_Coord *x,
+ Evas_Coord *y);
+
+ void (*content_region_show)(Evas_Object *obj,
+ Evas_Coord x,
+ Evas_Coord y,
+ Evas_Coord w,
+ Evas_Coord h);
+ void (*content_region_set)(Evas_Object *obj,
+ Evas_Coord x,
+ Evas_Coord y,
+ Evas_Coord w,
+ Evas_Coord h);
+
+ void (*content_size_get)(const Evas_Object *obj,
+ Evas_Coord *w,
+ Evas_Coord *h);
+
+ /* get the size of the actual viewport area (swallowed into
+ * scroller Edje object) */
+ void (*content_viewport_size_get)(const Evas_Object *obj,
+ Evas_Coord *w,
+ Evas_Coord *h);
+
+ void (*content_viewport_pos_get)(const Evas_Object *obj,
+ Evas_Coord *x,
+ Evas_Coord *y);
+
+ /* this one issues the respective callback, only */
+ void (*content_min_limit)(Evas_Object *obj,
+ Eina_Bool w,
+ Eina_Bool h);
+
+ void (*step_size_set)(Evas_Object *obj,
+ Evas_Coord x,
+ Evas_Coord y);
+ void (*step_size_get)(const Evas_Object *obj,
+ Evas_Coord *x,
+ Evas_Coord *y);
+ void (*page_size_set)(Evas_Object *obj,
+ Evas_Coord x,
+ Evas_Coord y);
+ void (*page_size_get)(const Evas_Object *obj,
+ Evas_Coord *x,
+ Evas_Coord *y);
+ void (*policy_set)(Evas_Object *obj,
+ Elm_Scroller_Policy hbar,
+ Elm_Scroller_Policy vbar);
+ void (*policy_get)(const Evas_Object *obj,
+ Elm_Scroller_Policy *hbar,
+ Elm_Scroller_Policy *vbar);
+
+ void (*single_direction_set)(Evas_Object *obj,
+ Elm_Scroller_Single_Direction single_dir);
+ Elm_Scroller_Single_Direction (*single_direction_get)(const Evas_Object *obj);
+
+ void (*repeat_events_set)(Evas_Object *obj,
+ Eina_Bool repeat_events);
+ Eina_Bool (*repeat_events_get)(const Evas_Object *obj);
+
+ void (*mirrored_set)(Evas_Object *obj,
+ Eina_Bool mirrored);
+
+ void (*hold_set)(Evas_Object *obj,
+ Eina_Bool hold);
+ void (*freeze_set)(Evas_Object *obj,
+ Eina_Bool freeze);
+
+ void (*bounce_allow_set)(Evas_Object *obj,
+ Eina_Bool horiz,
+ Eina_Bool vert);
+ void (*bounce_allow_get)(const Evas_Object *obj,
+ Eina_Bool *horiz,
+ Eina_Bool *vert);
+
+ void (*origin_reverse_set)(Evas_Object *obj,
+ Eina_Bool origin_x, Eina_Bool origin_y);
+ void (*origin_reverse_get)(const Evas_Object *obj,
+ Eina_Bool *origin_x, Eina_Bool *origin_y);
+
+ void (*paging_set)(Evas_Object *obj,
+ double pagerel_h,
+ double pagerel_v,
+ Evas_Coord pagesize_h,
+ Evas_Coord pagesize_v);
+ void (*paging_get)(const Evas_Object *obj,
+ double *pagerel_h,
+ double *pagerel_v,
+ Evas_Coord *pagesize_h,
+ Evas_Coord *pagesize_v);
+ void (*page_scroll_limit_set)(const Evas_Object *obj,
+ int page_limit_h,
+ int page_limit_v);
+ void (*page_scroll_limit_get)(const Evas_Object *obj,
+ int *page_limit_h,
+ int *page_limit_v);
+ void (*current_page_get)(const Evas_Object *obj,
+ int *pagenumber_h,
+ int *pagenumber_v);
+ void (*last_page_get)(const Evas_Object *obj,
+ int *pagenumber_h,
+ int *pagenumber_v);
+ void (*page_show)(Evas_Object *obj,
+ int pagenumber_h,
+ int pagenumber_v);
+ void (*page_bring_in)(Evas_Object *obj,
+ int pagenumber_h,
+ int pagenumber_v);
+
+ void (*region_bring_in)(Evas_Object *obj,
+ Evas_Coord x,
+ Evas_Coord y,
+ Evas_Coord w,
+ Evas_Coord h);
+
+ void (*gravity_set)(Evas_Object *obj,
+ double x,
+ double y);
+ void (*gravity_get)(const Evas_Object *obj,
+ double *x,
+ double *y);
+
+ void (*loop_set)(Evas_Object *obj,
+ Eina_Bool loop_h,
+ Eina_Bool loop_v);
+ void (*loop_get)(const Evas_Object *obj,
+ Eina_Bool *loop_h,
+ Eina_Bool *loop_v);
+
+ Eina_Bool (*momentum_animator_disabled_get)(const Evas_Object *obj);
+ void (*momentum_animator_disabled_set)(Evas_Object *obj,
+ Eina_Bool disabled);
+
+ void (*bounce_animator_disabled_set)(Evas_Object *obj,
+ Eina_Bool disabled);
+ Eina_Bool (*bounce_animator_disabled_get)(const Evas_Object *obj);
+
+ Eina_Bool (*wheel_disabled_get)(const Evas_Object *obj);
+ void (*wheel_disabled_set)(Evas_Object *obj,
+ Eina_Bool disabled);
+
+ void (*movement_block_set)(Evas_Object *obj,
+ Elm_Scroller_Movement_Block block);
+ Elm_Scroller_Movement_Block (*movement_block_get)(const Evas_Object *obj);
+};
+
+EAPI extern const char ELM_SCROLLABLE_IFACE_NAME[];
+EAPI extern const Elm_Scrollable_Smart_Interface ELM_SCROLLABLE_IFACE;
+
+EAPI const Elm_Pan_Smart_Class *elm_pan_smart_class_get(void);
+
+#define ELM_SCROLLABLE_IFACE_GET(obj, iface) \
+ const Elm_Scrollable_Smart_Interface * iface; \
+ iface = evas_object_smart_interface_get(obj, ELM_SCROLLABLE_IFACE_NAME);
+
#define ELM_SCROLLABLE_CHECK(obj, ...) \
+ const Elm_Scrollable_Smart_Interface * s_iface = \
+ evas_object_smart_interface_get(obj, ELM_SCROLLABLE_IFACE_NAME); \
\
- if (!eo_isa(obj, ELM_INTERFACE_SCROLLABLE_MIXIN)) \
+ if (!s_iface) \
{ \
- ERR("The object (%p) doesn't implement the Elementary scrollable" \
- " interface", obj); \
+ ERR("Passing object (%p) of type '%s' in function %s, but it doesn't" \
+ " implement the Elementary scrollable interface.", obj, \
+ elm_widget_type_get(obj), __func__); \
if (getenv("ELM_ERROR_ABORT")) abort(); \
return __VA_ARGS__; \
}
-#include "elm_interface_scrollable.eo.h"
-
/**
* @}
*/
diff --git a/src/lib/elm_inwin.h b/src/lib/elm_inwin.h
index 85335ab42..bdb2e1207 100644
--- a/src/lib/elm_inwin.h
+++ b/src/lib/elm_inwin.h
@@ -5,18 +5,11 @@
* @image html inwin_inheritance_tree.png
* @image latex inwin_inheritance_tree.eps
*
- * @image html img/widget/inwin/preview-00.png
- * @image latex img/widget/inwin/preview-00.eps
- * @image html img/widget/inwin/preview-01.png
- * @image latex img/widget/inwin/preview-01.eps
- * @image html img/widget/inwin/preview-02.png
- * @image latex img/widget/inwin/preview-02.eps
- *
* An inwin is a window inside a window that is useful for a quick popup.
* It does not hover.
*
- * It works by creating an object that will occupy the entire window, so it
- * must be created using an @ref Win "elm_win" as parent only. The inwin
+ * It works by creating an object that occupies the entire window, so it
+ * must be created using an @ref Win "elm_win" as the parent only. The inwin
* object can be hidden or restacked below every other object if it's
* needed to show what's behind it without destroying it. If this is done,
* the elm_win_inwin_activate() function can be used to bring it back to
@@ -25,31 +18,112 @@
* There are three styles available in the default theme. These are:
* @li default: The inwin is sized to take over most of the window it's
* placed in.
- * @li minimal: The size of the inwin will be the minimum necessary to show
+ * @li minimal: The size of the inwin is the minimum size necessary to show
* its contents.
* @li minimal_vertical: Horizontally, the inwin takes as much space as
- * possible, but it's sized vertically the most it needs to fit its\
+ * possible, but it's sized vertically is the most it needs to fit its
* contents.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for inner windown objects. It also
* emits the signals inherited from @ref Layout.
*
- * Default content parts of the inwin that you can use for are:
- * @li "default" A content of the inwin
+ * @{
+ */
+
+/**
+ * @brief Adds an inwin to the current window.
*
- * Some examples of Inwin can be found in the following:
- * @li @ref inwin_example_01
+ * @since_tizen 2.3
*
- * @{
+ * @remarks The @a obj used as a parent @b MUST be an @ref Win "Elementary Window".
+ * Never call this function with anything other than the top-most window
+ * as its parameter, unless you are fond of undefined behavior.
+ *
+ * @remarks After creating the object, the widget sets itself as the resize object
+ * for the window with elm_win_resize_object_add(), so when shown it will
+ * appear to cover almost the entire window (how much of it depends on its
+ * content and the style used). It must not be added into any other container
+ * objects and it need not be moved or resized manually.
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @ingroup Inwin
*/
+EAPI Evas_Object *elm_win_inwin_add(Evas_Object *parent);
+
+/**
+ * @brief Activates an inwin object, ensuring its visibility.
+ *
+ * @details This function makes sure that the inwin @a obj is completely visible
+ * by calling evas_object_show() and evas_object_raise() on it, to bring it
+ * to the front. It also sets the keyboard focus to it, which is passed
+ * onto its content.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The object's theme also receives the signal "elm,action,show" with
+ * source "elm".
+ *
+ * @param[in] obj The inwin to activate
+ *
+ * @ingroup Inwin
+ */
+EAPI void elm_win_inwin_activate(Evas_Object *obj);
+
+/**
+ * @brief Sets the content of an inwin object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once the content object is set, a previously set one is deleted.
+ * If you want to keep that old content object, use the
+ * elm_win_inwin_content_unset() function.
+ *
+ * @param[in] obj The inwin object
+ * @param[in] content The object to set as content
+ *
+ * @ingroup Inwin
+ */
+EAPI void elm_win_inwin_content_set(Evas_Object *obj, Evas_Object *content);
+
+/**
+ * @brief Gets the content of an inwin object.
+ *
+ * @details This returns the content object for this widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The returned object is valid as long as the inwin is still alive and no
+ * other content is set on it. Deleting the object notifies the inwin
+ * about it and this one is left empty.
+ *
+ * @remarks If you need to remove an inwin's content to be reused somewhere else,
+ * see elm_win_inwin_content_unset().
+ *
+ * @param[in] obj The inwin object
+ * @return The content that is being used
+ *
+ * @ingroup Inwin
+ */
+EAPI Evas_Object *elm_win_inwin_content_get(const Evas_Object *obj);
+
+/**
+ * @brief Unsets the content of an inwin object.
+ *
+ * @details This unparents and returns the content object that is set for this widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The inwin object
+ * @return The content that is being used
+ *
+ * @ingroup Inwin
+ */
+EAPI Evas_Object *elm_win_inwin_content_unset(Evas_Object *obj);
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_inwin_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_inwin_legacy.h"
-#endif
/**
* @}
*/
+
diff --git a/src/lib/elm_label.h b/src/lib/elm_label.h
index 3396bf0c2..f9c24d9b9 100644
--- a/src/lib/elm_label.h
+++ b/src/lib/elm_label.h
@@ -1,20 +1,17 @@
/**
* @defgroup Label Label
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html label_inheritance_tree.png
* @image latex label_inheritance_tree.eps
*
- * @image html img/widget/label/preview-00.png
- * @image latex img/widget/label/preview-00.eps
- *
* @brief Widget to display text, with simple html-like markup.
*
* The Label widget @b doesn't allow text to overflow its boundaries, if the
- * text doesn't fit the geometry of the label it will be ellipsized or be
+ * text doesn't fit the geometry of the label, it is ellipsized or
* cut. Elementary provides several styles for this widget:
- * @li default - No animation
- * @li marker - Centers the text in the label and makes it bold by default
+ * @li default - No animation.
+ * @li marker - Centers the text in the label and makes it bold by default.
* @li slide_long - The entire text appears from the right of the screen and
* slides until it disappears in the left of the screen(reappearing on the
* right again).
@@ -25,27 +22,344 @@
* the right to show the overflow. When all of the text has been shown the
* animation reverses, moving the text to the left.
*
- * Custom themes can of course invent new markup tags and style them any way
+ * Custom themes can of course invent new markup tags and style them in any way
* they like.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for label objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li @c "language,changed": The program's language changed.
- * @li @c "slide,end": The slide is end.
+ * @ref Layout :
+ * @li @c "language,changed": The program's language is changed.
+ * @li @c "slide,end": The slide has ended.
*
- * See @ref tutorial_label for a demonstration of how to use a label widget.
* @{
*/
-#include "elm_label_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_label_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_label_legacy.h"
-#endif
+
+/**
+ * Enumeration of Elm Label Slide Mode type
+ */
+typedef enum
+{
+ ELM_LABEL_SLIDE_MODE_NONE = 0, /**< No slide effect */
+ ELM_LABEL_SLIDE_MODE_AUTO, /**< Slide only if the label area is bigger than the text width length */
+ ELM_LABEL_SLIDE_MODE_ALWAYS /**< Slide always */
+} Elm_Label_Slide_Mode;
+
+typedef struct _Elm_Label_Anchor_Info Elm_Label_Anchor_Info;
+struct _Elm_Label_Anchor_Info
+{
+ char *name;
+};
+
+/**
+ * @typedef Elm_Label_Item_Provider_Cb
+ * @brief Called to provide items.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If it returns an object handle other than @c NULL (it should create an
+ * object to do this), then this object is used to replace the current item.
+ * If not, the next provider is called until one provides an item object, or the
+ * default provider in the label does.
+ * @param[in] data The data specified as the last parameter when adding the provider
+ * @param[in] label The label object
+ * @param[in] text A pointer to the item href string in the text
+ * @return The object to be placed in the label like an icon, or another element
+ * @see elm_label_item_provider_append
+ * @see elm_label_item_provider_prepend
+ * @see elm_label_item_provider_remove
+ */
+typedef Evas_Object * (*Elm_Label_Item_Provider_Cb)(void *data, Evas_Object * label, const char *item);
+
+/**
+ * @internal
+ * @remarks Tizen only feature 2014.06.28
+ *
+ * @typedef Elm_Label_Anchor_Access_Provider_Cb
+ * @brief This callback type is used to provide TTS string of an anchor.
+ * @remarks If it returns a string other than NULL,
+ * then this string is used to replace the current anchor's TTS string.
+ * If not the next provider is called until one provides a string, or the
+ * default string will be read.
+ *
+ * @param data The data specified as the last param when adding the provider
+ * @param label The label object
+ * @param name A pointer to the anchor href string in the text
+ * @param text A pointer to the text inside of the anchor's range.
+ * @return TTS string for the anchor.
+ *
+ * @see elm_label_anchor_access_provider_append
+ * @see elm_label_anchor_access_provider_prepend
+ * @see elm_label_anchor_access_provider_remove
+ */
+typedef char * (*Elm_Label_Anchor_Access_Provider_Cb)(void *data, Evas_Object * label, const char *name, const char *text);
+//
+
+/**
+ * @brief Adds a new label to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_label_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the wrapping behavior of the label.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default no wrapping is done. Possible values for @a wrap are:
+ * @li ELM_WRAP_NONE - No wrapping.
+ * @li ELM_WRAP_CHAR - Wrap between characters.
+ * @li ELM_WRAP_WORD - Wrap between words.
+ * @li ELM_WRAP_MIXED - Word wrap, and if that fails, char wrap.
+ *
+ * @param[in] obj The label object
+ * @param[in] wrap The boolean that indicates whether to wrap the text
+ */
+EAPI void elm_label_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap);
+
+/**
+ * @brief Gets the wrapping behavior of the label.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The label object
+ * @return The wrap type
+ *
+ * @see elm_label_line_wrap_set()
+ */
+EAPI Elm_Wrap_Type elm_label_line_wrap_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the wrap width of the label.
+ *
+ * @details This function sets the maximum width size hint of the label.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This is only relevant if the label is inside a container.
+ *
+ * @param[in] obj The label object
+ * @param[in] w The wrap width in pixels at a minimum where words need to wrap
+ */
+EAPI void elm_label_wrap_width_set(Evas_Object *obj, Evas_Coord w);
+
+/**
+ * @brief Gets the wrap width of the label.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The label object
+ * @return The wrap width in pixels at a minimum where words need to wrap
+ *
+ * @see elm_label_wrap_width_set()
+ */
+EAPI Evas_Coord elm_label_wrap_width_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the ellipsis behavior of the label.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If set to @c true and the text doesn't fit in the label, ellipsis("...")
+ * are shown at the end of the widget.
+ *
+ * @remarks This doesn't work with slide(elm_label_slide_set()) or if the
+ * chosen wrap method is #ELM_WRAP_WORD.
+ *
+ * @param[in] obj The label object
+ * @param[in] ellipsis The boolean value that indicates whether to add ellipsis to text
+ */
+EAPI void elm_label_ellipsis_set(Evas_Object *obj, Eina_Bool ellipsis);
+
+/**
+ * @brief Gets the ellipsis behavior of the label.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The label object
+ * @return @c true if ellipsis are shown at the end of the label area,
+ * otherwise @c false
+ *
+ * @see elm_label_ellipsis_set()
+ */
+EAPI Eina_Bool elm_label_ellipsis_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the slide duration (speed) of the label.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The label object
+ * @param[in] duration The duration in seconds in moving text from slide begin position
+ * to slide end position
+ */
+EAPI void elm_label_slide_duration_set(Evas_Object *obj, double duration);
+
+/**
+ * @brief Gets the slide duration(speed) of the label.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The label object
+ * @return The duration time in moving text from slide begin position to slide end position
+ *
+ * @see elm_label_slide_duration_set()
+ */
+EAPI double elm_label_slide_duration_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the slide mode of the label widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks elm_label_slide_mode_set() changes the label slide mode.
+ * By default, the slide mode is none. Possible values for @a mode are:
+ * @li ELM_LABEL_SLIDE_MODE_NONE - No slide effect.
+ * @li ELM_LABEL_SLIDE_MODE_AUTO - Slide only if the label area is bigger than
+ * the text width length.
+ * @li ELM_LABEL_SLIDE_MODE_ALWAYS -Slide always.
+ *
+ * @remarks @c ELM_LABEL_SLIDE_MODE_AUTO and @c ELM_LABEL_SLIDE_MODE_ALWAYS only works
+ * with the themes "slide_short", "slide_long", and "slide_bounce".
+ * @remarks @c ELM_LABEL_SLIDE_MODE_AUTO and @c ELM_LABEL_SLIDE_MODE_ALWAYS don't work
+ * if the line wrap(elm_label_line_wrap_set()) or
+ * ellipsis(elm_label_ellipsis_set()) is set.
+ *
+ * @param[in] obj The label object
+ * @param[in] mode The slide mode
+ *
+ * @see elm_label_slide_mode_get()
+ */
+EAPI void elm_label_slide_mode_set(Evas_Object *obj, Elm_Label_Slide_Mode mode);
+
+/**
+ * @brief Gets the slide mode of the label widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The label object
+ * @return The slide mode
+ *
+ * @see elm_label_slide_mode_set()
+ */
+EAPI Elm_Label_Slide_Mode elm_label_slide_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Starts the slide effect.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The label object
+ *
+ * @see elm_label_slide_mode_set()
+ */
+EAPI void elm_label_slide_go(Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature 2013.10.28: Support item, anchor formats
+ *
+ * @brief Appends a custom item provider to the list for that label.
+ *
+ * @details This appends the given callback. The list is walked from beginning to end
+ * with each function called, given the item href string in the text. If the
+ * function returns an object handle other than @c NULL (it should create an
+ * object to do this), then this object is used to replace that item. If
+ * not, the next provider is called until one provides an item object, or the
+ * default provider in the label does.
+ *
+ * @param obj The label object
+ * @param func The function called to provide the item object
+ * @param data The data passed to @a func
+ */
+EAPI void elm_label_item_provider_append(Evas_Object *obj, Elm_Label_Item_Provider_Cb func, void *data);
+
+/**
+ * @internal
+ * @remarks Tizen only feature 2013.10.28: Support item, anchor formats
+ *
+ * @brief Prepends a custom item provider to the list for that label.
+ *
+ * @details This prepends the given callback. See elm_label_item_provider_append() for
+ * more information.
+ *
+ * @param obj The label object
+ * @param func The function called to provide the item object
+ * @param data The data passed to @a func
+ */
+EAPI void elm_label_item_provider_prepend(Evas_Object *obj, Elm_Label_Item_Provider_Cb func, void *data);
+
+/**
+ * @internal
+ * @remarks Tizen only feature 2013.10.28: Support item, anchor formats
+ *
+ * @brief Removes a custom item provider to the list for that label.
+ *
+ * @details This removes the given callback. See elm_label_item_provider_append() for
+ * more information.
+ *
+ * @param obj The label object
+ * @param func The function called to provide the item object
+ * @param data The data passed to @a func
+ */
+EAPI void elm_label_item_provider_remove(Evas_Object *obj, Elm_Label_Item_Provider_Cb func, void *data);
+
+/**
+ * @internal
+ * @remarks Tizen only feature 2014.06.28
+ *
+ * @brief This appends a custom anchor access provider to the list for that label
+ *
+ * @remarks This appends the given callback. The list is walked from beginning to end
+ * with each function called given the anchor href string in the text. If the
+ * function returns a string other than NULL, then this string is used
+ * to replace that TTS string.
+ * If not the next provider is called until one provides a string, or the
+ * default TTS string will be read.
+ *
+ * @param obj The label object
+ * @param func The function called to provide the TTS string
+ * @param data The data passed to @p func
+ */
+EAPI void elm_label_anchor_access_provider_append(Evas_Object *obj, Elm_Label_Anchor_Access_Provider_Cb func, void *data);
+
+/**
+ * @internal
+ * @remarks Tizen only feature 2014.06.28
+ *
+ * @brief This prepends a custom anchor access provider to the list for that label
+ *
+ * @remarks This prepends the given callback.
+ *
+ * @param obj The label object
+ * @param func The function called to provide the TTS string
+ * @param data The data passed to @p func
+ *
+ * @see elm_label_anchor_access_provider_append().
+ */
+EAPI void elm_label_anchor_access_provider_prepend(Evas_Object *obj, Elm_Label_Anchor_Access_Provider_Cb func, void *data);
+
+/**
+ * @internal
+ * @remarks Tizen only feature 2014.06.28
+ *
+ * @brief This removes a custom anchor access provider to the list for that label
+ *
+ * @remarks This removes the given callback.
+ *
+ * @see elm_label_anchor_access_provider_append().
+ *
+ * @param obj The label object
+ * @param func The function called to provide the TTS string
+ * @param data The data passed to @p func
+ */
+EAPI void elm_label_anchor_access_provider_remove(Evas_Object *obj, Elm_Label_Anchor_Access_Provider_Cb func, void *data);
+
/**
* @}
*/
diff --git a/src/lib/elm_layout.h b/src/lib/elm_layout.h
index bd3b74615..df6bbf4ce 100644
--- a/src/lib/elm_layout.h
+++ b/src/lib/elm_layout.h
@@ -1,178 +1,837 @@
/**
* @defgroup Layout Layout
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html layout_inheritance_tree.png
* @image latex layout_inheritance_tree.eps
*
- * @image html img/widget/layout/preview-00.png
- * @image latex img/widget/layout/preview-00.eps width=\textwidth
- *
* @image html img/layout-predefined.png
- * @image latex img/layout-predefined.eps width=\textwidth
+ * @image latex img/layout-predefined.eps "layout predefined" width=\textwidth
*
- * A Layout is a direct realization of @ref elm-layout-class.
+ * A Layout is a direct realization of elm-layout-class.
*
- * This is a container widget that takes a standard Edje design file
- * and wraps it very thinly in a widget.
+ * @brief This is a container widget that takes a standard Edje design file and
+ * wraps it very thinly in a widget.
*
- * An Edje design (theme) file has a very wide range of possibilities
- * to describe the behavior of elements forming a layout. Check out
- * the Edje documentation and the EDC reference to get more
- * information about what can be done with Edje.
+ * An Edje design (theme) file has a very wide range of possibilities to
+ * describe the behavior of elements added to the Layout. Check out the Edje
+ * documentation and the EDC reference to get more information about what can
+ * be done with Edje.
*
* Just like @ref List, @ref Box, and other container widgets, any
- * object added to the Layout will become its child, meaning that it
- * will be deleted if the Layout is deleted, moved if the Layout is
- * moved, and so on.
- *
- * The layout widget may contain as many parts/children as described
- * in its theme file. Some of these children can have special types,
- * such as content holder ones (swallow spots), boxes or tables. These
- * are parts meant to contain others. For instance, objects can be
- * added to different table parts by specifying the respective table
- * part names. The same is valid for swallows and boxes.
- *
- * The objects added as children of a layout will behave as described
- * in the part description where they were added. There are 3 possible
- * types of parts where a child can be added:
- *
- * @section secContent Content (@c SWALLOW part)
- *
- * Only one object can be added to the @c SWALLOW part at a time (but
- * you still can have many @c SWALLOW parts and one object on each of
- * them). Use the @c elm_layout_content_set()/get/unset functions to
- * set, retrieve and unset objects as content of the @c SWALLOW. After
- * being set to this part, the object's size, position, visibility,
- * clipping and other description properties will be totally
- * controlled by the description of the given part (inside the Edje
- * theme file).
- *
- * One can use @c evas_object_size_hint_* functions on the child to
- * have some kind of control over its behavior, but the resulting
- * behavior will still depend heavily on the @c SWALLOW part's
- * description.
- *
- * The Edje theme also can change the part description, based on
- * signals or scripts running inside the theme. This change can also
- * be animated. All of this will affect the child object set as
- * content accordingly. The object's size will be changed if the part
- * size is changed, it will animate moving accordingly if the part is
- * moving, and so on.
- *
- * The following picture demonstrates a layout widget with a child
- * object added to its @c SWALLOW:
+ * object added to the Layout becomes its child, meaning that it is
+ * deleted if the Layout is deleted, moved if the Layout is moved, and so on.
+ *
+ * The Layout widget can contain as many Contents, Boxes, or Tables as
+ * described in its theme file. For instance, objects can be added to
+ * different Tables by specifying the respective Table part names. The same
+ * is valid for Contents and Boxes.
+ *
+ * The objects added as the child of the Layout behave as described in the
+ * part description where they were added. There are 3 possible types of
+ * parts where a child can be added:
+ *
+ * @section secContent Content (SWALLOW part)
+ *
+ * Only one object can be added to the @c SWALLOW part (but you still can
+ * have many @c SWALLOW parts and one object on each of them). Use the
+ * elm_object_content_set/get/unset functions to set, retrieve, and unset
+ * objects as content of the @c SWALLOW. After being set to this part, the
+ * object size, position, visibility, clipping, and other description
+ * properties are totally controlled by the description of the given part
+ * (inside the Edje theme file).
+ *
+ * One can use @c evas_object_size_hint_* functions on the child to have some
+ * kind of control over its behavior, but the resulting behavior still
+ * depends heavily on the @c SWALLOW part description.
+ *
+ * The Edje theme also can change the part description, based on signals or
+ * scripts running inside the theme. This change can also be animated. All of
+ * this affects the child object set as the content accordingly. The object
+ * size changes if the part size is changed, it animates move if
+ * the part is moving, and so on.
+ *
+ * The following picture demonstrates a Layout widget with a child object
+ * added to its @c SWALLOW:
*
* @image html layout_swallow.png
- * @image latex layout_swallow.eps width=\textwidth
- *
- * @section secBox Box (@c BOX part)
- *
- * An Edje @c BOX part is very similar to the Elementary @ref Box
- * widget. It allows one to add objects to the box and have them
- * distributed along its area, accordingly to the specified @c layout
- * property (now by @c layout we mean the chosen layouting design of
- * the Box, not the layout widget itself).
- *
- * A similar effect for having a box with its position, size and other
- * things controlled by the layout theme would be to create an
- * Elementary @ref Box widget and add it as content in a @c SWALLOW part.
- *
- * The main difference to that, by using the layout box instead, is
- * that its behavior, like layouting format, padding, align, etc.,
- * will <b>all be controlled by the theme</b>. This means, for
- * example, that a signal could be sent to the layout's theme (with
- * elm_layout_signal_emit()) and the signal be handled by changing the
- * box's padding, or alignment, or both. Using the Elementary @ref Box
- * widget is not necessarily harder or easier, it just depends on the
- * circumstances and requirements.
- *
- * The layout box can be used through the @c elm_layout_box_* set of
+ * @image latex layout_swallow.eps "layout swallow" width=\textwidth
+ *
+ * @section secBox Box (BOX part)
+ *
+ * An Edje @c BOX part is very similar to the Elementary @ref Box widget. It
+ * allows one to add objects to the box and have them distributed along its
+ * area, accordingly as per the specified @a layout property (now by @a layout we
+ * mean the chosen layouting design of the Box, not the Layout widget
+ * itself).
+ *
+ * A similar effect for having a box with its position, size, and other things
+ * controlled by the Layout theme would be to create an Elementary @ref Box
+ * widget and add it as Content in the @c SWALLOW part.
+ *
+ * The main difference of using the Layout Box is that its behavior, the box
+ * properties like layouting format, padding, align, etc. is all
+ * controlled by the theme. This means, for example, that a signal could be
+ * sent to the Layout theme (with elm_object_signal_emit()) and the theme
+ * handles the signal by changing the box padding, or alignment, or both. Using
+ * the Elementary @ref Box widget is not necessarily harder or easier, it
+ * just depends on the circumstances and requirements.
+ *
+ * The Layout Box can be used through the @c elm_layout_box_* set of
* functions.
*
- * The following picture demonstrates a Layout widget with many child
- * objects added to its @c BOX part:
+ * The following picture demonstrates a Layout widget with many child objects
+ * added to its @c BOX part:
*
* @image html layout_box.png
- * @image latex layout_box.eps width=\textwidth
+ * @image latex layout_box.eps "layout box" width=\textwidth
*
- * @section secTable Table (@c TABLE part)
+ * @section secTable Table (TABLE part)
*
- * Just like the @ref secBox, the layout table is very similar to the
- * Elementary @ref Table widget. It allows one to add objects to the
- * table by specifying the row and column where the object should be
- * added, and any column or row span, if necessary.
+ * Just like the @ref secBox, the Layout Table is very similar to the
+ * Elementary @ref Table widget. It allows one to add objects to the Table
+ * specifying the row and column where the object should be added, and any
+ * column or row span if necessary.
*
- * Again, we could have this design by adding a @ref table widget to a
- * @c SWALLOW part, using elm_layout_content_set(). The same
- * difference happens here when choosing to use the layout table (a
- * @c TABLE part) instead of the @ref table in a @c SWALLOW part. It's
- * just a matter of convenience.
+ * Again, we could have this design by adding a @ref Table widget to the @c
+ * SWALLOW part using elm_object_part_content_set(). The same difference happens
+ * here when choosing to use the Layout Table (a @c TABLE part) instead of
+ * the @ref Table plus @c SWALLOW part. It's just a matter of convenience.
*
- * The layout table can be used through the @c elm_layout_table_* set of
+ * The Layout Table can be used through the @c elm_layout_table_* set of
* functions.
*
- * The following picture demonstrates a layout widget with many child
- * objects added to its @c TABLE part:
+ * The following picture demonstrates a Layout widget with many child objects
+ * added to its @c TABLE part:
*
* @image html layout_table.png
- * @image latex layout_table.eps width=\textwidth
+ * @image latex layout_table.eps "layout table" width=\textwidth
*
* @section secPredef Predefined Layouts
*
- * Another interesting thing about the layout widget is that it offers
- * some predefined themes that come with the default Elementary
- * theme. These themes can be set by the call elm_layout_theme_set(),
- * and provide some basic functionality depending on the theme used.
- *
- * Most of them already send some signals, some already provide a
- * toolbar or back and next buttons.
- *
- * These are the available predefined theme layouts. All of them have
- * class = @c layout, group = @c application, and style = one of the
- * following options:
- *
- * @li @c toolbar-content - for applications with a toolbar and main
- * content area
- * @li @c toolbar-content-back - for applications with a toolbar and
- * main content (with a back button)
- * and title areas
- * @li @c toolbar-content-back-next - for applications with a toolbar
- * and main content (with back and
- * next buttons) and title areas
- * @li @c content-back - for application with main content (with a
- * back button) and title areas
- * @li @c content-back-next - for applications with main content (with
- * back and next buttons) and title areas
- * @li @c toolbar-vbox - for applications with a toolbar and main
- * content area as a vertical box
- * @li @c toolbar-table - for applications with a toolbar and main
- * content area as a table
+ * Another interesting thing about the Layout widget is that it offers some
+ * predefined themes that come with the default Elementary theme. These
+ * themes can be set by elm_layout_theme_set(), and can provide some
+ * basic functionality depending on the theme used.
+ *
+ * Most of them already send some signals, some already provide a toolbar or
+ * back and next buttons.
+ *
+ * These are available, predefined theme layouts. All of them have class = @c
+ * layout, group = @c application, and style = one of the following options:
+ *
+ * @li @c toolbar-content - Application with a toolbar and main content area.
+ * @li @c toolbar-content-back - Application with a toolbar and main content
+ * area having a back button and title area.
+ * @li @c toolbar-content-back-next - Application with a toolbar and main
+ * content area having back and next buttons and a title area.
+ * @li @c content-back - Application with a main content area having a back
+ * button and title area.
+ * @li @c content-back-next - Application with a main content area having
+ * back and next buttons and a title area.
+ * @li @c toolbar-vbox - Application with a toolbar and main content area as a
+ * vertical box.
+ * @li @c toolbar-table - Application with a toolbar and main content area as a
+ * table.
+ *
+ * Supported common elm_object APIs.
+ * @li @ref elm_object_signal_emit
+ * @li @ref elm_object_signal_callback_add
+ * @li @ref elm_object_signal_callback_del
+ * @li @ref elm_object_part_text_set
+ * @li @ref elm_object_part_text_get
+ * @li @ref elm_object_part_content_set
+ * @li @ref elm_object_part_content_get
+ * @li @ref elm_object_part_content_unset
*
* @section layout-signals Emitted signals
*
* This widget emits the following signals:
*
- * @li "theme,changed" - The theme was changed.
- * @li "language,changed" - the program's language changed
+ * @li "theme,changed" - The theme is changed.
+ * @li "language,changed" - The program's language is changed.
+ *
+ * @{
+ */
+
+/**
+ * @brief Adds a new layout to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @see elm_layout_file_set()
+ * @see elm_layout_theme_set()
+ */
+EAPI Evas_Object *elm_layout_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the file that is used as a layout.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] file The path to the file (edj) that is used as a layout
+ * @param[in] group The group that the layout belongs to in the edje file
+ *
+ * @return (@c 1 = success, @c 0 = error)
+ */
+EAPI Eina_Bool elm_layout_file_set(Evas_Object *obj, const char *file, const char *group);
+
+/**
+ * @brief Freezes the Elementary layout object.
+ *
+ * @details This function puts all changes on hold. Successive freezes are
+ * nested, requiring an equal number of thaws.
+ *
+ * @since_tizen 2.3
*
- * @section secExamples Examples
+ * @param[in] obj A handle to an Elementary layout object
+ * @return The frozen state, otherwise @c 0 on error
*
- * Some examples of the Layout widget can be found here:
- * @li @ref layout_example_01
- * @li @ref layout_example_02
- * @li @ref layout_example_03
- * @li @ref layout_example_edc
+ * @see elm_layout_thaw()
+ */
+EAPI int elm_layout_freeze(Evas_Object *obj);
+
+/**
+ * @brief Thaws the Elementary object.
+ *
+ * @details This function thaws the given Edje object and the Elementary sizing calc.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If sucessive freezes are done, an equal number of
+ * thaws are required.
+ *
+ * @param[in] obj A handle to an Elementary layout object
+ * @return The frozen state, otherwise @c 0 if the object is not frozen or on error
+ *
+ * @see elm_layout_freeze()
+ */
+EAPI int elm_layout_thaw(Evas_Object *obj);
+
+/**
+ * @brief Sets the edje group from the elementary theme that is used as a layout.
+ *
+ * @since_tizen 2.3
*
+ * @remarks Note that @a style is the new style of @a obj too, as in an
+ * elm_object_style_set() call.
+ *
+ * @param[in] obj The layout object
+ * @param[in] clas The class of the group
+ * @param[in] group The group
+ * @param[in] style The style to use
+ *
+ * @return (@c 1 = success, @c 0 = error)
*/
+EAPI Eina_Bool elm_layout_theme_set(Evas_Object *obj, const char *clas, const char *group, const char *style);
-#include <elm_layout_common.h>
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_layout_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_layout_legacy.h>
-#endif
+/**
+ * @brief Sends a (Edje) signal to a given layout widget's underlying Edje
+ * object.
+ *
+ * @details This function sends a signal to the underlying Edje object of @a
+ * obj. An Edje program on that Edje object's definition can respond
+ * to a signal by specifying matching 'signal' and 'source' fields.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object handle
+ * @param[in] emission The signal's name string
+ * @param[in] source The signal's source string
+ */
+EAPI void elm_layout_signal_emit(Evas_Object *obj, const char *emission, const char *source);
+
+/**
+ * @brief Adds a callback for a (Edje) signal emitted by a layout widget's
+ * underlying Edje object.
+ *
+ * @details This function connects a callback function to a signal emitted by
+ * the underlying Edje object of @a obj. Globs are accepted in either
+ * the emission or source strings (see
+ * edje_object_signal_callback_add()).
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object handle
+ * @param[in] emission The signal's name string
+ * @param[in] source The signal's source string
+ * @param[in] func The callback function to be executed when the signal is
+ * emitted
+ * @param[in] data A pointer to data to pass to the callback function
+ */
+EAPI void elm_layout_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
+
+/**
+ * @brief Removes a signal-triggered callback from a given layout widget.
+ *
+ * @details This function removes the @b last callback attached to a signal
+ * emitted by the undelying Edje object of @a obj, with parameters @a
+ * emission, @a source, and @a func matching exactly those passed to a
+ * previous call to elm_object_signal_callback_add(). The data pointer
+ * that is passed to this call is returned.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object handle
+ * @param[in] emission The signal's name string
+ * @param[in] source The signal's source string
+ * @param[in] func The callback function being executed when the signal
+ * is emitted
+ * @return The data pointer of the signal callback (passed on
+ * elm_layout_signal_callback_add()), otherwise @c NULL on errors
+ */
+EAPI void *elm_layout_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
+
+/**
+ * @brief Appends a child to the layout box part.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once the object is appended, it becomes a child of the layout. Its
+ * lifetime is bound to the layout, whenever the layout dies the child
+ * is deleted automatically. One should use elm_layout_box_remove() to
+ * make this layout forget about the object.
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The box part to which the object is appended
+ * @param[in] child The child object to append to the box
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_layout_box_prepend()
+ * @see elm_layout_box_insert_before()
+ * @see elm_layout_box_insert_at()
+ * @see elm_layout_box_remove()
+ */
+EAPI Eina_Bool elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child);
+
+/**
+ * @brief Prepends a child to the layout box part.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once the object is prepended, it becomes the child of the layout. Its
+ * lifetime is bound to the layout, whenever the layout dies the child
+ * is deleted automatically. One should use elm_layout_box_remove() to
+ * make this layout forget about the object.
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The box part to prepend
+ * @param[in] child The child object to prepend to the box
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_layout_box_append()
+ * @see elm_layout_box_insert_before()
+ * @see elm_layout_box_insert_at()
+ * @see elm_layout_box_remove()
+ */
+EAPI Eina_Bool elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child);
+
+/**
+ * @brief Inserts a child to the layout box part before a reference object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once the object is inserted, it becomes the child of the layout. Its
+ * lifetime is bound to the layout, whenever the layout dies the child
+ * is deleted automatically. One should use elm_layout_box_remove() to
+ * make this layout forget about the object.
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The box part to insert
+ * @param[in] child The child object to insert into the box
+ * @param[in] reference Another reference object to insert before in the box
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_layout_box_append()
+ * @see elm_layout_box_prepend()
+ * @see elm_layout_box_insert_before()
+ * @see elm_layout_box_remove()
+ */
+EAPI Eina_Bool elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference);
+
+/**
+ * @brief Inserts a child to the layout box part at a given position.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once the object is inserted, it becomes the child of the layout. Its
+ * lifetime is bound to the layout, whenever the layout dies the child
+ * is deleted automatically. One should use elm_layout_box_remove() to
+ * make this layout forget about the object.
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The box part to insert
+ * @param[in] child The child object to insert into the box
+ * @param[in] pos The numeric position >=0 to insert the child
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_layout_box_append()
+ * @see elm_layout_box_prepend()
+ * @see elm_layout_box_insert_before()
+ * @see elm_layout_box_remove()
+ */
+EAPI Eina_Bool elm_layout_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos);
+
+/**
+ * @brief Removes a child of the given part box.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The object is removed from the box part and its lifetime is
+ * not handled by the layout anymore. This is equivalent to
+ * elm_object_part_content_unset() for the box.
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The box part name from which to remove the child
+ * @param[in] child The object to remove from the box
+ * @return The object that is being used, otherwise @c NULL if not found
+ *
+ * @see elm_layout_box_append()
+ * @see elm_layout_box_remove_all()
+ */
+EAPI Evas_Object *elm_layout_box_remove(Evas_Object *obj, const char *part, Evas_Object *child);
+
+/**
+ * @brief Removes all children of the given part box.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The objects are removed from the box part and their lifetime is
+ * not handled by the layout anymore. This is equivalent to
+ * elm_layout_box_remove() for all box children.
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The box part name from which to remove the child
+ * @param[in] clear If @c EINA_TRUE all objects are deleted as
+ * well, otherwise @c EINA_FALSE if they are just removed and are
+ * dangling on the canvas
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_layout_box_append()
+ * @see elm_layout_box_remove()
+ */
+EAPI Eina_Bool elm_layout_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear);
+
+/**
+ * @brief Inserts a child to the layout table part.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once the object is inserted, it becomes the child of the table. Its
+ * lifetime is bound to the layout, and whenever the layout dies the
+ * child is deleted automatically. One should use
+ * elm_layout_table_remove() to make this layout forget about the object.
+ *
+ * @remarks If @a colspan or @a rowspan are bigger than @c 1, that object occupies
+ * more space than a single cell. For instance, the following code:
+ * @code
+ * elm_layout_table_pack(layout, "table_part", child, 0, 1, 3, 1);
+ * @endcode
+ *
+ * @remarks This would result in an object being added like the following picture:
+ *
+ * @image html layout_colspan.png
+ * @image latex layout_colspan.eps "layout colspan" width=\textwidth
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The box part to pack the child
+ * @param[in] child_obj The child object to pack into the table
+ * @param[in] col The column to which the child should be added (>= 0)
+ * @param[in] row The row to which the child should be added (>= 0)
+ * @param[in] colspan The number of columns that should be used to store this object (>=
+ * 1)
+ * @param[in] rowspan The number of rows that should be used to store this object (>= 1)
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_layout_table_unpack()
+ * @see elm_layout_table_clear()
+ */
+EAPI Eina_Bool elm_layout_table_pack(Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan);
+
+/**
+ * @brief Unpacks (remove) a child of the given part table.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The object is unpacked from the table part and its lifetime
+ * is not handled by the layout anymore. This is equivalent to
+ * elm_object_part_content_unset() for the table.
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The table part name from which to remove the child
+ * @param[in] child_obj The object to remove from the table
+ * @return The object that is being used, otherwise @c NULL if no object is found
+ *
+ * @see elm_layout_table_pack()
+ * @see elm_layout_table_clear()
+ */
+EAPI Evas_Object *elm_layout_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj);
+
+/**
+ * @brief Removes all the child objects of the given part table.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The objects are removed from the table part and their lifetime is
+ * not handled by the layout anymore. This is equivalent to
+ * elm_layout_table_unpack() for all table children.
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The table part name from which to remove the child
+ * @param[in] clear If @c EINA_TRUE all objects are deleted as
+ * well, otherwise @c EINA_FALSE if they are just removed and are
+ * dangling on the canvas
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_layout_table_pack()
+ * @see elm_layout_table_unpack()
+ */
+EAPI Eina_Bool elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear);
+
+/**
+ * @brief Gets the edje layout.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This returns the edje object. It is not expected to be used to then
+ * swallow objects via edje_object_part_swallow() for example. Use
+ * elm_object_part_content_set() instead so child object handling and sizing is
+ * done properly.
+ *
+ * @remarks This function should only be used if you really need to call some
+ * low level Edje function on this edje object. All the common stuff (setting
+ * text, emitting signals, hooking callbacks to signals, etc.) can be done
+ * with proper elementary functions.
+ *
+ * @param[in] obj The layout object
+ *
+ * @return An Evas_Object with the edje layout settings loaded
+ * using function elm_layout_file_set
+ *
+ * @see elm_object_signal_callback_add()
+ * @see elm_object_signal_emit()
+ * @see elm_object_part_text_set()
+ * @see elm_object_part_content_set()
+ * @see elm_layout_box_append()
+ * @see elm_layout_table_pack()
+ * @see elm_layout_data_get()
+ */
+EAPI Evas_Object *elm_layout_edje_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the edje data from the given layout.
+ *
+ * @details This function fetches the data specified inside the edje theme of this layout.
+ * This function returns @c NULL if data is not found.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks In EDC this comes from a data block within the group block that @a
+ * obj is loaded from. E.g.
+ *
+ * @code
+ * collections {
+ * group {
+ * name: "a_group";
+ * data {
+ * item: "key1" "value1";
+ * item: "key2" "value2";
+ * }
+ * }
+ * }
+ * @endcode
+ *
+ * @param[in] obj The layout object
+ * @param[in] key The data key
+ *
+ * @return The edje data string
+ */
+EAPI const char *elm_layout_data_get(const Evas_Object *obj, const char *key);
+
+/**
+ * @brief Re-evaluates Eval sizing.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Manually forces a sizing re-evaluation. This is useful when the minimum
+ * size required by the edje theme of this layout has changed. The change on
+ * the minimum size required by the edje theme is not immediately reported to
+ * the elementary layout, so one needs to call this function in order to tell
+ * the widget (layout) that it needs to re-evaluate its own size.
+ *
+ * @remarks The minimum size of the theme is calculated based on the minimum size of the
+ * parts, the size of the elements inside containers like box and table, etc. All
+ * of this can change due to state changes, and that's when this function
+ * should be called.
+ *
+ * @remarks Also note that a standard signal of "size,eval" "elm" emitted from the
+ * edje object causes this to happen too.
+ *
+ * @param[in] obj The layout object
+ */
+EAPI void elm_layout_sizing_eval(Evas_Object *obj);
+
+/**
+ * @brief Sets a specific cursor for an edje part.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] part_name The part from the loaded edje group
+ * @param[in] cursor The cursor name to use, see Elementary_Cursor.h
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure, that may be a
+ * part not existing or it may have "mouse_events: 0"
+ */
+EAPI Eina_Bool elm_layout_part_cursor_set(Evas_Object *obj, const char *part_name, const char *cursor);
+
+/**
+ * @brief Gets the cursor to be shown when the mouse is over an edje part.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] part_name The part from the loaded edje group
+ * @return The cursor name
+ */
+EAPI const char *elm_layout_part_cursor_get(const Evas_Object *obj, const char *part_name);
+
+/**
+ * @brief Unsets a cursor previously set with elm_layout_part_cursor_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] part_name The part from the loaded edje group, that had a cursor set
+ * with elm_layout_part_cursor_set()
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_layout_part_cursor_unset(Evas_Object *obj, const char *part_name);
+
+/**
+ * @brief Sets a specific cursor style for an edje part.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] part_name The part from the loaded edje group
+ * @param[in] style The theme style to use (default, transparent, ...)
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure, that may be a
+ * part not existing or it may not have a cursor set.
+ */
+EAPI Eina_Bool elm_layout_part_cursor_style_set(Evas_Object *obj, const char *part_name, const char *style);
+
+/**
+ * @brief Gets a specific cursor style for an edje part.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] part_name The part from the loaded edje group
+ *
+ * @return The theme style in use, defaults to "default" \n
+ * If the object does not have a cursor set, then @c NULL is returned
+ */
+EAPI const char *elm_layout_part_cursor_style_get(const Evas_Object *obj, const char *part_name);
+
+/**
+ * @brief Sets whether the cursor set should be searched on the theme or should use what is
+ * provided by the engine, only.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Before you set its look on the theme you should define a
+ * cursor with elm_layout_part_cursor_set(). By default it only
+ * looks for cursors provided by the engine.
+ *
+ * @param[in] obj The layout object
+ * @param[in] part_name The part from the loaded edje group
+ * @param[in] engine_only If cursors should be just provided by the engine (@c EINA_TRUE),
+ * otherwise should also search on the widget's theme as well (@c EINA_FALSE)
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure, that may be a
+ * part not existing or it may not had a cursor set
+ */
+EAPI Eina_Bool elm_layout_part_cursor_engine_only_set(Evas_Object *obj, const char *part_name, Eina_Bool engine_only);
+
+/**
+ * @brief Sets accessibility to all texblock(text) parts in the layout object.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] can_access It makes all textblock(text) parts in the layout @a obj possible
+ * to have accessibility \n
+ * @c EINA_TRUE means textblock(text) parts can be accessible.
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure \n
+ * If @a obj is not a proper layout object, @c EINA_FALSE is returned.
+ */
+EAPI Eina_Bool elm_layout_edje_object_can_access_set(Evas_Object *obj, Eina_Bool can_access);
+
+/**
+ * @brief Gets the accessibility state of the texblock(text) parts in the layout object.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ *
+ * @return @c EINA_TRUE, if all textblock(text) parts in the layout can be accessible,
+ * otherwise @c EINA_FALSE if those cannot be accessible \n
+ * If @a obj is not a proper layout object, @c EINA_FALSE is returned.
+ *
+ * @see elm_layout_edje_object_access_set()
+ */
+EAPI Eina_Bool elm_layout_edje_object_can_access_get(Evas_Object *obj);
+
+/**
+ * @brief Gets a specific cursor engine_only for an edje part.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] part_name The part from the loaded edje group
+ *
+ * @return Whenever the cursor is just provided by the engine or also from the theme
+ */
+EAPI Eina_Bool elm_layout_part_cursor_engine_only_get(const Evas_Object *obj, const char *part_name);
+
+/**
+ * @brief Sets the layout content.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once the content object is set, a previously set one is deleted.
+ * If you want to keep that old content object, use the
+ * elm_object_part_content_unset() function.
+ *
+ * @remarks In an Edje theme, the part used as a content container is called @c
+ * SWALLOW. This is why the parameter name is called @a swallow, but it is
+ * expected to be a part name just like the second parameter of
+ * elm_layout_box_append().
+ *
+ * @param[in] obj The layout object
+ * @param[in] swallow The swallow part name in the edje file
+ * @param[in] content The child that is added in this layout object
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_layout_box_append()
+ * @see elm_object_part_content_get()
+ * @see elm_object_part_content_unset()
+ * @see @ref secBox
+ */
+EAPI Eina_Bool elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content);
+
+/**
+ * @brief Gets the child object in the given content part.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] swallow The SWALLOW part to get its content
+ *
+ * @return The swallowed object, otherwise @c NULL if none are present or an error occurs
+ */
+EAPI Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow);
+
+/**
+ * @brief Unsets the layout content.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Unparent and return the content object which is set for this part.
+ *
+ * @param[in] obj The layout object
+ * @param[in] swallow The swallow part name in the edje file
+ * @return The content that is being used
+ *
+ */
+EAPI Evas_Object *elm_layout_content_unset(Evas_Object *obj, const char *swallow);
+
+/**
+ * @brief Sets the text of the given part.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The TEXT part where to set the text
+ * @param[in] text The text to set
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_layout_text_set(Evas_Object *obj, const char *part, const char *text);
+
+/**
+ * @brief Gets the text set in the given part.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] part The TEXT part to retrieve the text from
+ *
+ * @return The text set in @a part
+ */
+EAPI const char *elm_layout_text_get(const Evas_Object *obj, const char *part);
+
+/**
+ * @def elm_layout_icon_set
+ * @brief Convenience macro to set the icon object in a layout that follows the
+ * Elementary naming convention for its parts.
+ *
+ * @since_tizen 2.3
+ */
+#define elm_layout_icon_set(_ly, _obj) \
+ do { \
+ const char *sig; \
+ elm_object_part_content_set((_ly), "elm.swallow.icon", (_obj)); \
+ if ((_obj)) sig = "elm,state,icon,visible"; \
+ else sig = "elm,state,icon,hidden"; \
+ elm_object_signal_emit((_ly), sig, "elm"); \
+ } while (0)
+
+/**
+ * @def elm_layout_icon_get
+ * @brief Convenience macro to get the icon object from a layout that follows the
+ * Elementary naming convention for its parts.
+ *
+ * @since_tizen 2.3
+ */
+#define elm_layout_icon_get(_ly) \
+ elm_object_part_content_get((_ly), "elm.swallow.icon")
+
+/**
+ * @def elm_layout_end_set
+ * @brief Convenience macro to set the end object in a layout that follows the
+ * Elementary naming convention for its parts.
+ *
+ * @since_tizen 2.3
+ */
+#define elm_layout_end_set(_ly, _obj) \
+ do { \
+ const char *sig; \
+ elm_object_part_content_set((_ly), "elm.swallow.end", (_obj)); \
+ if ((_obj)) sig = "elm,state,end,visible"; \
+ else sig = "elm,state,end,hidden"; \
+ elm_object_signal_emit((_ly), sig, "elm"); \
+ } while (0)
+
+/**
+ * @def elm_layout_end_get
+ * @brief Convenience macro to get the end object in a layout that follows the
+ * Elementary naming convention for its parts.
+ *
+ * @since_tizen 2.3
+ */
+#define elm_layout_end_get(_ly) \
+ elm_object_part_content_get((_ly), "elm.swallow.end")
/**
* @}
diff --git a/src/lib/elm_list.h b/src/lib/elm_list.h
index 141d3dfc6..62f8266c9 100644
--- a/src/lib/elm_list.h
+++ b/src/lib/elm_list.h
@@ -1,68 +1,58 @@
/**
* @defgroup List List
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html list_inheritance_tree.png
* @image latex list_inheritance_tree.eps
*
- * @image html img/widget/list/preview-00.png
- * @image latex img/widget/list/preview-00.eps width=\textwidth
- *
* @image html img/list.png
- * @image latex img/list.eps width=\textwidth
+ * @image latex img/list.eps "list" width=\textwidth
+ *
+ * @brief A list widget is a container whose children are displayed
+ * vertically or horizontally, in order, and can be selected.
*
- * A list widget is a container whose children are displayed
- * vertically or horizontally, in order, and can be selected. The list
- * can accept only one or multiple item selections. Also has many
+ * The list can accept only one or multiple item selections. Also it has many
* modes of items displaying.
*
* A list is a very simple type of list widget. For more robust lists,
- * @ref Genlist should probably be used.
+ * @ref Genlist should be used.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for list objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* - @c "activated" - The user has double-clicked or pressed
- * (enter|return|spacebar) on an item. The @p event_info parameter
- * is the item that was activated.
+ * (enter|return|spacebar) an item. The @a event_info parameter
+ * is the item that is activated.
* - @c "clicked,double" - The user has double-clicked an item.
- * The @p event_info parameter is the item that was double-clicked.
- * - @c "selected" - when the user selected an item
- * - @c "unselected" - when the user unselected an item
- * - @c "longpressed" - an item in the list is long-pressed
- * - @c "edge,top" - the list is scrolled until the top edge
- * - @c "edge,bottom" - the list is scrolled until the bottom edge
- * - @c "edge,left" - the list is scrolled until the left edge
- * - @c "edge,right" - the list is scrolled until the right edge
- * - @c "highlighted" - an item in the list is highlighted. This is called when
- * the user presses an item or keyboard selection is done so the item is
- * physically highlighted. The @p event_info parameter is the item that was
- * highlighted.
- * - @c "unhighlighted" - an item in the list is unhighlighted. This is called
- * when the user releases an item or keyboard selection is moved so the item
- * is physically unhighlighted. The @p event_info parameter is the item that
- * was unhighlighted.
- * - @c "language,changed" - the program's language changed
- * - @c "focused" - When the list has received focus. (since 1.8)
- * - @c "unfocused" - When the list has lost focus. (since 1.8)
- * - @c "item,focused" - When the list item has received focus. (since 1.10)
- * - @c "item,unfocused" - When the list item has lost focus. (since 1.10)
+ * The @a event_info parameter is the item that is double-clicked.
+ * - @c "selected" - When the user selected an item.
+ * - @c "unselected" - When the user unselected an item.
+ * - @c "longpressed" - An item in the list is long-pressed.
+ * - @c "edge,top" - The list is scrolled till the top edge.
+ * - @c "edge,bottom" - The list is scrolled till the bottom edge.
+ * - @c "edge,left" - The list is scrolled till the left edge.
+ * - @c "edge,right" - The list is scrolled till the right edge.
+ * - @c "language,changed" - The program's language is changed.
+ * - @c "highlighted" - An item in the list is pressed and highlighted.
+ * The @a event_info parameter is the item that is highlighted.
+ * - @c "unhighlighted" - An item in the list is unpressed and unhighlighted.
+ * The @a event_info parameter is the item that is unhighlighted.
+ *
+ *
*
* Available styles for it are:
* - @c "default"
*
- * Default content parts of the list items that you can use are:
- * @li @c "start" - A start position object in the list item
- * @li @c "end" - An end position object in the list item
- * Another parts for customized styles are not accepted.
+ * The default content parts of the list items that you can use are:
+ * @li @c "start" - A start position object in the list item.
+ * @li @c "end" - An end position object in the list item.
*
- * Default text parts of the list items that you can use are:
- * @li @c "default" - A label in the list item
- * Another parts for customized styles are not accepted.
+ * The default text parts of the list items that you can use are:
+ * @li @c "default" - The label in the list item.
*
- * Supported @c elm_object_item common APIs.
+ * Supported common @c elm_object_item APIs.
* @li @ref elm_object_item_disabled_set
* @li @ref elm_object_item_disabled_get
* @li @ref elm_object_item_part_text_set
@@ -70,37 +60,766 @@
* @li @ref elm_object_item_part_content_set
* @li @ref elm_object_item_part_content_get
* @li @ref elm_object_item_part_content_unset
- * @li @ref elm_object_item_del
- * @li @ref elm_object_item_signal_emit
*
- * This widget implements the @b @ref elm-scrollable-interface
+ * This widget implements the elm-scrollable-interface
* interface, so that all (non-deprecated) functions for the base @ref
* Scroller widget also work for lists.
*
* Some calls on the list'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
+ * ones mentioned for each case of deprecation here.
+ * Eventually, the deprecated ones are discarded (next major
* release).
*
- * List of examples:
- * @li @ref list_example_01
- * @li @ref list_example_02
- * @li @ref list_example_03
+ * @{
*/
/**
- * @addtogroup List
- * @{
+ * @enum Elm_List_Mode
+ * @typedef Elm_List_Mode
+ *
+ * @brief Enumeration that sets the list's resizing behavior, transverse axis scrolling and items
+ * cropping. See each mode's description for more details.
+ *
+ * @remarks The default value is #ELM_LIST_SCROLL.
+ *
+ * @remarks The values here @b don't work as bitmasks, only one can be chosen at
+ * a time.
+ *
+ * @see elm_list_mode_set()
+ * @see elm_list_mode_get()
+ */
+typedef enum
+{
+ ELM_LIST_COMPRESS = 0, /**< The list @b won't set any of its size hints to inform how a possible container should resize it. If it's not created as a "resize object", it might end with zeroed dimensions. The list respects the container's geometry and if any of its items don't fit into its @b transverse axis, one won't be able to scroll it in that direction */
+ ELM_LIST_SCROLL, /**< The default value. This is the same as #ELM_LIST_COMPRESS, with the exception that if any of its items don't fit into its transverse axis, one @b won't be able to scroll it in that direction */
+ ELM_LIST_LIMIT, /**< Sets a minimum size hint on the list object, so that containers may respect it (and resize itself to fit the child properly). More specifically, a @b minimum size hint is set for its @b transverse axis, so that the @b largest item in that direction fits well. This is naturally bound by the list object's maximum size hints, set externally */
+ ELM_LIST_EXPAND, /**< Besides setting a minimum size on the transverse axis, just like on #ELM_LIST_LIMIT, the list sets a minimum size on the @b longitudinal axis, trying to reserve space for all its children to be visible at a time. This is naturally bound by the list object's maximum size hints, set externally */
+ ELM_LIST_LAST /**< Indicates an error if returned by elm_list_mode_get() */
+} Elm_List_Mode;
+
+/**
+ * @brief Adds a new list widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new list widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new list widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_list_add(Evas_Object *parent);
+
+/**
+ * @brief Starts the list.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Call before running show() on the list object.
+ * @remarks If not called, it won't display the list properly.
+ *
+ * @code
+ * li = elm_list_add(win);
+ * elm_list_item_append(li, "First", NULL, NULL, NULL, NULL);
+ * elm_list_item_append(li, "Second", NULL, NULL, NULL, NULL);
+ * elm_list_go(li);
+ * evas_object_show(li);
+ * @endcode
+ *
+ * @param[in] obj The list object
+ */
+EAPI void elm_list_go(Evas_Object *obj);
+
+/**
+ * @brief Enables or disables multiple items selection on the list object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It is disabled by default. If disabled, the user can select a single item from
+ * the list each time. Selected items are highlighted on the list.
+ * If enabled, many items can be selected.
+ *
+ * @remarks If a selected item is selected again, it is unselected.
+ *
+ * @param[in] obj The list object
+ * @param[in] multi If @c EINA_TRUE multi selection is enabled, otherwise @c EINA_FALSE to
+ * disable it
+ *
+ * @see elm_list_multi_select_get()
+ */
+EAPI void elm_list_multi_select_set(Evas_Object *obj, Eina_Bool multi);
+
+/**
+ * @brief Gets a value that indicates whether multiple items selection is enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The list object
+ * @return @c EINA_TRUE indicates that multiple items selection is enabled,
+ * otherwise @c EINA_FALSE indicates it's disabled \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_list_multi_select_set()
+ */
+EAPI Eina_Bool elm_list_multi_select_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets which mode to use for the list object.
+ *
+ * @details This sets the list's resize behavior, transverse axis scroll and
+ * items cropping. See each mode's description for more details.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This default value is #ELM_LIST_SCROLL.
+ *
+ * @remarks Only one mode at a time can be set. If a previous one is set, it
+ * is changed by the new mode after this call. Bitmasks won't
+ * work here.
+ *
+ * @remarks This function's behavior clashes with those of
+ * elm_scroller_content_min_limit(), so use either one of them, but
+ * not both.
+ *
+ * @param[in] obj The list object
+ * @param[in] mode One of #Elm_List_Mode: #ELM_LIST_COMPRESS,
+ * #ELM_LIST_SCROLL, #ELM_LIST_LIMIT, or #ELM_LIST_EXPAND.
+ *
+ * @see elm_list_mode_get()
+ */
+EAPI void elm_list_mode_set(Evas_Object *obj, Elm_List_Mode mode);
+
+/**
+ * @brief Gets the mode that the list is at.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The list object
+ * @return One of #Elm_List_Mode: #ELM_LIST_COMPRESS,
+ * #ELM_LIST_SCROLL, #ELM_LIST_LIMIT, #ELM_LIST_EXPAND, or #ELM_LIST_LAST on errors
+ *
+ * @see elm_list_mode_set()
+ */
+EAPI Elm_List_Mode elm_list_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Enables or disables horizontal mode on the list object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The vertical mode is set by default.
+ *
+ * @remarks Use this when the horizontal mode items are displayed on the list from left to right,
+ * instead of from top to bottom. Also, the list scrolls horizontally.
+ * Each item presents the left icon on top and the right icon, or end, at
+ * the bottom.
+ *
+ * @param[in] obj The list object
+ * @param[in] horizontal If @c EINA_TRUE horizontal is enabled, otherwise @c EINA_FALSE to
+ * disable it, i.e., to enable the vertical mode
+ *
+ * @see elm_list_horizontal_get()
+ */
+EAPI void elm_list_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Gets a value that indicates whether the horizontal mode is enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The list object
+ * @return @c EINA_TRUE means horizontal mode selection is enabled,
+ * otherwise @c EINA_FALSE indicates it's disabled \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_list_horizontal_set()
+ */
+EAPI Eina_Bool elm_list_horizontal_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the list select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks elm_list_select_mode_set() changes the item select mode in the list widget.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : Items only call their selection @a func and
+ * callback when first becoming selected. Any further clicks
+ * do nothing, unless you set the always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click calls the selected callbacks.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This turns off the ability to select items
+ * entirely and they neither appear selected nor call selected
+ * callback functions.
+ *
+ * @param[in] obj The list object
+ * @param[in] mode The select mode
+ *
+ * @see elm_list_select_mode_get()
+ */
+EAPI void
+elm_list_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode);
+
+/**
+ * @brief Gets the list select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The list object
+ * @return The select mode
+ * (If the getting mode is fails, it returns @c ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_list_select_mode_set()
+ */
+EAPI Elm_Object_Select_Mode
+elm_list_select_mode_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Sets the bouncing behaviour when the scrolled content reaches an edge.
+ *
+ * @remarks It tells the internal scroller object whether it should bounce or not
+ * when it reaches the respective edges for each axis.
+ *
+ * @param obj The list object
+ * @param h_bounce The boolean value that indicates whether to bounce in the horizontal axis
+ * @param v_bounce The boolean value that indicates whether to bounce in the vertical axis
+ *
+ * @deprecated Use elm_scroller_bounce_set() instead.
+ *
+ * @see elm_scroller_bounce_set()
+ */
+EINA_DEPRECATED EAPI void elm_list_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
+
+/**
+ * @internal
+ * @brief Gets the bouncing behaviour of the internal scroller.
+ *
+ * @details This gets whether the internal scroller should bounce when the edge of each
+ * axis has reached scrolling.
+ *
+ * @param obj The list object
+ * @param h_bounce The pointer to store the bounce state of the horizontal
+ * axis
+ * @param v_bounce The pointer to store the bounce state of the vertical
+ * axis
+ *
+ * @deprecated Use elm_scroller_bounce_get() instead.
+ *
+ * @see elm_scroller_bounce_get()
+ * @see elm_list_bounce_set()
+ */
+EINA_DEPRECATED EAPI void elm_list_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
+
+/**
+ * @internal
+ * @brief Sets the scrollbar policy.
+ *
+ * @details This sets the scrollbar visibility policy for the given
+ * 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.
+ *
+ * @remarks Both are disabled by default, i.e., they are set to
+ * #ELM_SCROLLER_POLICY_OFF.
+ *
+ * @param obj The list object
+ * @param policy_h The horizontal scrollbar policy
+ * @param policy_v The vertical scrollbar policy
+ *
+ * @deprecated Use elm_scroller_policy_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_list_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
+
+/**
+ * @internal
+ * @brief Gets the scrollbar policy.
+ *
+ * @param obj The list object
+ * @param policy_h The pointer to store the horizontal scrollbar policy
+ * @param policy_v The pointer to store the vertical scrollbar policy
+ *
+ * @deprecated Use elm_scroller_policy_get() instead.
+ *
+ * @see elm_list_scroller_policy_get()
+ */
+EINA_DEPRECATED EAPI void elm_list_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
+
+/**
+ * @brief Appends a new item to the list object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A new item is created and appended to the list, i.e., it is
+ * set as the @b last item.
+ *
+ * @remarks Items created with this method can be deleted with elm_object_item_del().
+ *
+ * @remarks Associated @a data can be properly freed when the item is deleted if a
+ * callback function is set with elm_object_item_del_cb_set().
+ *
+ * @remarks If a function is passed as an argument, it is called every time this item
+ * is selected, i.e., the user clicks over an unselected item.
+ * If always select is enabled it calls this function every time the
+ * user clicks over an item (already selected or not).
+ * If such a function isn't needed, just passing
+ * @c NULL as @a func is enough. The same should be done for @a data.
+ *
+ * Simple example (with no function callback or data associated):
+ * @code
+ * li = elm_list_add(win);
+ * ic = elm_icon_add(win);
+ * elm_image_file_set(ic, "path/to/image", NULL);
+ * elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
+ * elm_list_item_append(li, "label", ic, NULL, NULL, NULL);
+ * elm_list_go(li);
+ * evas_object_show(li);
+ * @endcode
+ *
+ * @param[in] obj The list object
+ * @param[in] label The label of the list item
+ * @param[in] icon The icon object to use for the left side of the item \n
+ * An icon can be any Evas object, but usually it is an icon created
+ * with elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item \n
+ * An icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The data to associate with the item for related callbacks
+ *
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_list_select_mode_set()
+ * @see elm_object_item_del()
+ * @see elm_object_item_del_cb_set()
+ * @see elm_list_clear()
+ * @see elm_icon_add()
+ */
+EAPI Elm_Object_Item *elm_list_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Prepends a new item to the list object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A new item is created and prepended to the list, i.e., it
+ * is set as the @b first item.
+ *
+ * @remarks Items created with this method can be deleted with elm_object_item_del().
+ *
+ * @remarks Associated @a data can be properly freed when the item is deleted if a
+ * callback function is set with elm_object_item_del_cb_set().
+ *
+ * @remarks If a function is passed as an argument, it is called every time this item
+ * is selected, i.e., the user clicks over an unselected item.
+ * If always select is enabled it calls this function every time the
+ * user clicks over an item (already selected or not).
+ * If such a function isn't needed, just passing
+ * @c NULL as @a func is enough. The same should be done for @a data.
+ *
+ * @param[in] obj The list object
+ * @param[in] label The label of the list item
+ * @param[in] icon The icon object to use for the left side of the item \n
+ * An icon can be any Evas object, but usually it is an icon created
+ * with elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item \n
+ * An icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The data to associate with the item for related callbacks
+ *
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_list_item_append() for a simple code example.
+ * @see elm_list_select_mode_set()
+ * @see elm_object_item_del()
+ * @see elm_object_item_del_cb_set()
+ * @see elm_list_clear()
+ * @see elm_icon_add()
+ */
+EAPI Elm_Object_Item *elm_list_item_prepend(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Inserts a new item into the list object before item @a before.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A new item is created and added to the list. Its position in
+ * this list is just before item @a before.
+ *
+ * @remarks Items created with this method can be deleted with elm_object_item_del().
+ *
+ * @remarks Associated @a data can be properly freed when the item is deleted if a
+ * callback function is set with elm_object_item_del_cb_set().
+ *
+ * @remarks If a function is passed as an argument, it is called every time this item
+ * is selected, i.e., the user clicks over an unselected item.
+ * If always select is enabled it calls this function every time the
+ * user clicks over an item (already selected or not).
+ * If such a function isn't needed, just passing
+ * @c NULL as @a func is enough. The same should be done for @a data.
+ *
+ * @param[in] obj The list object
+ * @param[in] before The list item to insert before
+ * @param[in] label The label of the list item
+ * @param[in] icon The icon object to use for the left side of the item \n
+ * An icon can be any Evas object, but usually it is an icon created
+ * with elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item \n
+ * An icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The data to associate with the item for related callbacks
+ *
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_list_item_append() for a simple code example.
+ * @see elm_list_select_mode_set()
+ * @see elm_object_item_del()
+ * @see elm_object_item_del_cb_set()
+ * @see elm_list_clear()
+ * @see elm_icon_add()
+ */
+EAPI Elm_Object_Item *elm_list_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Inserts a new item into the list object after item @a after.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A new item is created and added to the list. Its position in
+ * this list is just after item @a after.
+ *
+ * @remarks Items created with this method can be deleted with elm_object_item_del().
+ *
+ * @remarks Associated @a data can be properly freed when the item is deleted if a
+ * callback function is set with elm_object_item_del_cb_set().
+ *
+ * @remarks If a function is passed as an argument, it is called every time this item
+ * is selected, i.e., the user clicks over an unselected item.
+ * If always select is enabled it calls this function every time the
+ * user clicks over an item (already selected or not).
+ * If such a function isn't needed, just passing
+ * @c NULL as @a func is enough. The same should be done for @a data.
+ *
+ * @param[in] obj The list object
+ * @param[in] after The list item to insert after
+ * @param[in] label The label of the list item
+ * @param[in] icon The icon object to use for the left side of the item \n
+ * An icon can be any Evas object, but usually it is an icon created
+ * with elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item \n
+ * An icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The data to associate with the item for related callbacks
+ *
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_list_item_append() for a simple code example.
+ * @see elm_list_select_mode_set()
+ * @see elm_object_item_del()
+ * @see elm_object_item_del_cb_set()
+ * @see elm_list_clear()
+ * @see elm_icon_add()
+ */
+EAPI Elm_Object_Item *elm_list_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Inserts a new item into the sorted list object.
+ *
+ * @details This function inserts values into a list object assuming it is
+ * sorted and the result is going to be sorted.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A new item is created and added to the list. Its position in
+ * this list is found by comparing the new item with previously inserted
+ * items using function @a cmp_func.
+ *
+ * @remarks Items created with this method can be deleted with elm_object_item_del().
+ *
+ * @remarks Associated @a data can be properly freed when the item is deleted if a
+ * callback function is set with elm_object_item_del_cb_set().
+ *
+ * @remarks If a function is passed as an argument, it is called every time this item
+ * is selected, i.e., the user clicks over an unselected item.
+ * If always select is enabled it calls this function every time the
+ * user clicks over an item (already selected or not).
+ * If such a function isn't needed, just passing
+ * @c NULL as @a func is enough. The same should be done for @a data.
+ *
+ * @param[in] obj The list object
+ * @param[in] label The label of the list item
+ * @param[in] icon The icon object to use for the left side of the item \n
+ * An icon can be any Evas object, but usually it is an icon created
+ * with elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item \n
+ * An icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The data to associate with the item for related callbacks
+ * @param[in] cmp_func The comparing function to be used to sort list
+ * items <b>by #Elm_Object_Item item handles</b> \n
+ * This function receives two items and compares them, returning a non-negative integer
+ * if the second item should be placed after the first, or a negative value
+ * if it should be placed before.
+ *
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_list_item_append() for a simple code example.
+ * @see elm_list_select_mode_set()
+ * @see elm_object_item_del()
+ * @see elm_object_item_del_cb_set()
+ * @see elm_list_clear()
+ * @see elm_icon_add()
+ */
+EAPI Elm_Object_Item *elm_list_item_sorted_insert(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func);
+
+/**
+ * @brief Removes all list items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The list object
+ *
+ * @see elm_object_item_del()
+ * @see elm_list_item_append()
+ */
+EAPI void elm_list_clear(Evas_Object *obj);
+
+/**
+ * @brief Gets a list of all the list items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The list object
+ * @return An @c Eina_List of the list items, #Elm_Object_Item,
+ * otherwise @c NULL on failure
+ *
+ * @see elm_list_item_append()
+ * @see elm_object_item_del()
+ * @see elm_list_clear()
+ */
+EAPI const Eina_List *elm_list_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the selected item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The selected item can be unselected with function
+ * elm_list_item_selected_set().
+ *
+ * @remarks The selected item is always highlighted on the list.
+ *
+ * @param[in] obj The list object
+ * @return The selected list item
+ *
+ * @see elm_list_selected_items_get()
+ */
+EAPI Elm_Object_Item *elm_list_selected_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Returns a list of the currently selected list items.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Multiple items can be selected if multi select is enabled. It can be
+ * done with elm_list_multi_select_set().
+ *
+ * @param[in] obj The list object
+ * @return An @c Eina_List of list items, #Elm_Object_Item,
+ * otherwise @c NULL on failure
+ *
+ * @see elm_list_selected_item_get()
+ * @see elm_list_multi_select_set()
+ */
+EAPI const Eina_List *elm_list_selected_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the selected state of an item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This sets the selected state of the given item @a it.
+ * @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
+ *
+ * @remarks If a new item is selected the previously selected is unselected,
+ * unless multiple selection is enabled with elm_list_multi_select_set().
+ * Previously selected item can be obtained with function
+ * elm_list_selected_item_get().
+ *
+ * @remarks Selected items are highlighted.
+ *
+ * @param[in] it The list item
+ * @param[in] selected The selected state
+ *
+ * @see elm_list_item_selected_get()
+ * @see elm_list_selected_item_get()
+ * @see elm_list_multi_select_set()
+ */
+EAPI void elm_list_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * @brief Gets whether the @a it is selected.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The list item
+ * @return @c EINA_TRUE indicates that the item is selected, otherwise @c EINA_FALSE indicates it's not \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_list_selected_item_set()
+ * @see elm_list_item_selected_get()
+ */
+EAPI Eina_Bool elm_list_item_selected_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets or unsets an item as a separator.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Items aren't set as a separator by default.
+ *
+ * @remarks If set as a separator it displays the separator theme, so it won't display
+ * icons or labels.
+ *
+ * @param[in] it The list item
+ * @param[in] setting If @c EINA_TRUE it sets the item @a it as a separator,
+ * otherwise @c EINA_FALSE to unset it, i.e., item is used as a regular item
+ *
+ * @see elm_list_item_separator_get()
+ */
+EAPI void elm_list_item_separator_set(Elm_Object_Item *it, Eina_Bool setting);
+
+/**
+ * @brief Gets a value that indicates whether an item is a separator.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The list item
+ * @return @c EINA_TRUE indicates that the item @a it is a separator, otherwise @c EINA_FALSE indicates it's not \n
+ * If @a it is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_list_item_separator_set()
+ */
+EAPI Eina_Bool elm_list_item_separator_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Shows @a it in the list view.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It won't animate the list until an item is visible. If such a behavior is wanted,
+ * use elm_list_bring_in() instead.
+ *
+ * @param[in] it The list item to be shown
+ */
+EAPI void elm_list_item_show(Elm_Object_Item *it);
+
+/**
+ * @brief Brings in the given item to the list view.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This causes the list to jump to the given item @a it and show it
+ * (by scrolling), if it is not fully visible.
+ *
+ * @remarks This may use animation to do so and may take a period of time.
+ *
+ * @remarks If animation isn't wanted, elm_list_item_show() can be used.
+ *
+ * @param[in] it The item
+ */
+EAPI void elm_list_item_bring_in(Elm_Object_Item *it);
+
+/**
+ * @brief Gets the base object of the item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The base object is the @c Evas_Object that represents that item.
+ *
+ * @param[in] it The list item
+ * @return The base object associated with @a it
+ */
+EAPI Evas_Object *elm_list_item_object_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the item before @a it in list.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If it is the first item, @c NULL is returned.
+ *
+ * @param it The list item
+ * @return The item before @a it, otherwise @c NULL if none are present or on failure
+ *
+ * @see elm_list_item_append()
+ * @see elm_list_items_get()
+ */
+EAPI Elm_Object_Item *elm_list_item_prev(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the item after @a it in list.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If it is the last item, @c NULL is returned.
+ *
+ * @param[in] it The list item
+ * @return The item after @a it, otherwise @c NULL if none are present or on failure
+ *
+ * @see elm_list_item_append()
+ * @see elm_list_items_get()
*/
+EAPI Elm_Object_Item *elm_list_item_next(const Elm_Object_Item *it);
-#include <elm_list_common.h>
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_list_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_list_legacy.h>
-#endif
+/**
+ * @brief Gets the first item in the list.
+ *
+ * @details This returns the first item in the list.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The list object
+ * @return The first item, otherwise @c NULL if none are present
+ */
+EAPI Elm_Object_Item *elm_list_first_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the last item in the list.
+ *
+ * @details This returns the last item in the list.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The list object
+ * @return The last item, otherwise @c NULL if none are present
+ */
+EAPI Elm_Object_Item *elm_list_last_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the item that is at the x, y canvas coordinates.
+ *
+ * @details This returns the item at the given coordinates (which are canvas
+ * relative, not object-relative). If an item is at that coordinate,
+ * that item handle is returned, and if @a posret is not @c NULL, the
+ * integer pointed to is set to a value of @c -1, @c 0 or @c 1, depending on whether
+ * the coordinate is at the upper portion of that item (-1), in the
+ * middle section (0) or at the lower part (1). If @c NULL is returned as
+ * an item (no item found there), then @a posret may indicate @c -1 or @c 1
+ * based on whether the coordinate is above or below all items in
+ * the list respectively.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The list object
+ * @param[in] x The input x coordinate
+ * @param[in] y The input y coordinate
+ * @param[out] posret The position relative to the returned item
+ * @return The item at the coordinates, otherwise @c NULL if no item is present
+ */
+EAPI Elm_Object_Item *elm_list_at_xy_item_get(const Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *posret);
/**
* @}
diff --git a/src/lib/elm_macros.h b/src/lib/elm_macros.h
index 859be1324..7dc5ab10a 100644
--- a/src/lib/elm_macros.h
+++ b/src/lib/elm_macros.h
@@ -1,10 +1,8 @@
-/* handy macros */
+/* Handy macros */
#define ELM_RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) (((x) < ((xx) + (ww))) && ((y) < ((yy) + (hh))) && (((x) + (w)) > (xx)) && (((y) + (h)) > (yy)))
#define ELM_PI 3.14159265358979323846
-#define ELM_SCALE_SIZE(x) (((x) / elm_app_base_scale_get()) * elm_config_scale_get())
+#define ELM_ITEM_HIGHLIGHT_TIMER 0.1
+#define ELM_SCALE_SIZE(x) x / elm_app_base_scale_get() * elm_config_scale_get()
-// checks if the point(xx, yy) stays out of the rectangle(x, y, w, h) area.
-#define ELM_RECTS_POINT_OUT(x, y, w, h, xx, yy) (((xx) < (x)) || ((yy) < (y)) || ((xx) > ((x) + (w))) || ((yy) > ((y) + (h))))
-
-// check if the rect (x, y, w, h) includes whole body of rect (xx, yy, ww, hh)
-#define ELM_RECTS_INCLUDE(x, y, w, h, xx, yy, ww, hh) (((x) <= (xx)) && (((x) + (w)) >= ((xx + (ww))) && ((y) <= (yy)) && (((y) + (h)) >= ((yy) + (hh)))))
+// Checks if the point(xx, yy) stays out of the rectangle(x, y, w, h) area.
+#define ELM_RECTS_POINT_OUT(x, y, w, h, xx, yy) (((xx) < (x)) || ((yy) < (y)) || ((xx) > ((x) + (w))) || ((yy) > ((y) + (h)))) \ No newline at end of file
diff --git a/src/lib/elm_map.h b/src/lib/elm_map.h
index 8f2bfdc11..e24252138 100644
--- a/src/lib/elm_map.h
+++ b/src/lib/elm_map.h
@@ -1,43 +1,41 @@
/**
* @defgroup Map Map
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html map_inheritance_tree.png
* @image latex map_inheritance_tree.eps
*
- * @image html img/widget/map/preview-00.png
- * @image latex img/widget/map/preview-00.eps
+ * @brief This is a widget specifically for displaying a map.
*
- * This is a widget specifically for displaying a map. It uses basically
- * OpenStreetMap provider http://www.openstreetmap.org/,
+ * It basically uses the OpenStreetMap provider http://www.openstreetmap.org/,
* but custom providers can be added.
*
- * It supports some basic but yet nice features:
- * @li zooming and scrolling,
- * @li markers with content to be displayed when user clicks over them,
- * @li group of markers and
- * @li routes.
+ * It supports some basic yet nice features:
+ * @li Zooming and scrolling
+ * @li Markers with content to be displayed when a user clicks on them
+ * @li Group of markers and
+ * @li Routes
*
- * This widget implements the @b @ref elm-scrollable-interface
+ * This widget implements the elm-scrollable-interface
* interface, so that all (non-deprecated) functions for the base @ref
* Scroller widget also work for map objects.
*
- * Smart callbacks one can listen to:
+ * Smart callbacks that one can listen to:
* - @c "clicked" - This is called when a user has clicked the map without
- * dragging around.
+ * dragging it around.
* - @c "clicked,double" - This is called when a user has double-clicked
* the map.
* - @c "press" - This is called when a user has pressed down on the map.
* - @c "longpressed" - This is called when a user has pressed down on the map
- * @c for a long time without dragging around.
- * - @c "scroll" - the content has been scrolled (moved).
- * - @c "scroll,drag,start" - dragging the contents around has started.
- * - @c "scroll,drag,stop" - dragging the contents around has stopped.
- * - @c "scroll,anim,start" - scrolling animation has started.
- * - @c "scroll,anim,stop" - scrolling animation has stopped.
- * - @c "zoom,start" - Zoom animation started.
- * - @c "zoom,stop" - Zoom animation stopped.
- * - @c "zoom,change" - Zoom changed when using an auto zoom mode.
+ * for a long time without dragging it around.
+ * - @c "scroll" - The content has been scrolled (moved).
+ * - @c "scroll,drag,start" - Dragging the content around has started.
+ * - @c "scroll,drag,stop" - Dragging the content around has stopped.
+ * - @c "scroll,anim,start" - Scrolling animation has started.
+ * - @c "scroll,anim,stop" - Scrolling animation has stopped.
+ * - @c "zoom,start" - Zoom animation has started.
+ * - @c "zoom,stop" - Zoom animation has stopped.
+ * - @c "zoom,change" - Zoom changed when using the auto zoom mode.
* - @c "tile,load" - A map tile image load begins.
* - @c "tile,loaded" - A map tile image load ends.
* - @c "tile,loaded,fail" - A map tile image load fails.
@@ -47,36 +45,1688 @@
* - @c "name,load" - Name request begins.
* - @c "name,loaded" - Name request ends.
* - @c "name,loaded,fail" - Name request fails.
- * - @c "overlay,clicked" - A overlay is clicked.
- * - @c "loaded" - when a map is finally loaded. (since 1.7)
- * - @c "language,changed" - the program's language changed
- * - @c "focused" - When the map has received focus. (since 1.8)
- * - @c "unfocused" - When the map has lost focus. (since 1.8)
+ * - @c "overlay,clicked" - An overlay is clicked.
+ * - @c "loaded" - The map is finally loaded. @since 1.7
+ * - @c "language,changed" - The program's language has changed.
*
- * Available style for map widget:
+ * Available style for map widgets:
* - @c "default"
*
- * Available style for markers:
+ * Available styles for markers:
* - @c "radio"
* - @c "radio2"
* - @c "empty"
*
- * Available style for marker bubble:
+ * Available style for marker bubbles:
* - @c "default"
*
- * List of examples:
- * @li @ref map_example_01
- * @li @ref map_example_02
- * @li @ref map_example_03
+ * @{
*/
-#include "elm_map_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_map_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_map_legacy.h"
-#endif
+/**
+ * @brief Sets the map's zoom behavior. It can be set to manual or automatic.
+ *
+ * @remarks The default value is #ELM_MAP_ZOOM_MODE_MANUAL.
+ *
+ * @remarks Values <b> don't </b> work as bitmask, only one can be chosen.
+ *
+ * @remarks Valid sizes are 2^zoom, consequently the map may be smaller
+ * than the scroller view.
+ *
+ * @see elm_map_zoom_mode_set()
+ * @see elm_map_zoom_mode_get()
+ */
+typedef enum
+{
+ ELM_MAP_ZOOM_MODE_MANUAL, /**< Zoom controlled manually by elm_map_zoom_set(). It's set by default */
+ ELM_MAP_ZOOM_MODE_AUTO_FIT, /**< Zoom until the map fits inside the scroll frame with no pixels outside this area */
+ ELM_MAP_ZOOM_MODE_AUTO_FILL, /**< Zoom until the map fills the scroll, ensuring that no pixels are left unfilled */
+ ELM_MAP_ZOOM_MODE_LAST
+} Elm_Map_Zoom_Mode;
+
+/**
+ * @brief Enumeration that sets the type of an external source (provider).
+ *
+ * @see elm_map_sources_get()
+ * @see elm_map_source_get()
+ * @see elm_map_source_set()
+ */
+typedef enum
+{
+ ELM_MAP_SOURCE_TYPE_TILE, /**< Map tile provider */
+ ELM_MAP_SOURCE_TYPE_ROUTE, /**< Route service provider */
+ ELM_MAP_SOURCE_TYPE_NAME, /**< Name service provider */
+ ELM_MAP_SOURCE_TYPE_LAST
+} Elm_Map_Source_Type;
+
+/**
+ * @brief Enumeration that sets the type of transport used on a route.
+ *
+ * @see elm_map_route_add()
+ */
+typedef enum
+{
+ ELM_MAP_ROUTE_TYPE_MOTOCAR, /**< Route should consider that an automobile is used */
+ ELM_MAP_ROUTE_TYPE_BICYCLE, /**< Route should consider that a bicycle is used by the user */
+ ELM_MAP_ROUTE_TYPE_FOOT, /**< Route should consider that the user is walking */
+ ELM_MAP_ROUTE_TYPE_LAST
+} Elm_Map_Route_Type;
+
+/**
+ * @brief Enumeration that sets the routing method. It decides what should be prioritized, time or distance.
+ *
+ * @see elm_map_route_add()
+ */
+typedef enum
+{
+ ELM_MAP_ROUTE_METHOD_FASTEST, /**< Route should prioritize time */
+ ELM_MAP_ROUTE_METHOD_SHORTEST, /**< Route should prioritize distance */
+ ELM_MAP_ROUTE_METHOD_LAST
+} Elm_Map_Route_Method;
+
+/**
+ * @brief Enumeration that sets the name search method.
+ *
+ * This is for the name module interface.
+ */
+typedef enum
+{
+ ELM_MAP_NAME_METHOD_SEARCH,
+ ELM_MAP_NAME_METHOD_REVERSE,
+ ELM_MAP_NAME_METHOD_LAST
+} Elm_Map_Name_Method;
+
+/**
+ * @brief Enumeration that sets the overlay type to be used. This type is resolved
+ * when the overlay is created.
+ * @remarks You can get this value by elm_map_overlay_type_get().
+ *
+ * @see elm_map_overlay_type_get()
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ */
+typedef enum _Elm_Map_Overlay_Type
+{
+ ELM_MAP_OVERLAY_TYPE_NONE = 0,
+ ELM_MAP_OVERLAY_TYPE_DEFAULT,
+ ELM_MAP_OVERLAY_TYPE_CLASS,
+ ELM_MAP_OVERLAY_TYPE_GROUP,
+ ELM_MAP_OVERLAY_TYPE_BUBBLE,
+ ELM_MAP_OVERLAY_TYPE_ROUTE,
+ ELM_MAP_OVERLAY_TYPE_LINE,
+ ELM_MAP_OVERLAY_TYPE_POLYGON,
+ ELM_MAP_OVERLAY_TYPE_CIRCLE,
+ ELM_MAP_OVERLAY_TYPE_SCALE,
+ ELM_MAP_OVERLAY_TYPE_POLYLINE
+} Elm_Map_Overlay_Type;
+
+typedef struct _Elm_Map_Marker Elm_Map_Marker; /**< A marker to be shown at a specific point on the map. Can be created with elm_map_marker_add() and deleted with elm_map_marker_remove() */
+typedef struct _Elm_Map_Marker_Class Elm_Map_Marker_Class; /**< Each marker must be associated to a class. It's required to add a mark. The class defines the style of the marker when a marker is displayed alone (not grouped). A new class can be created with elm_map_marker_class_new() */
+typedef struct _Elm_Map_Group_Class Elm_Map_Group_Class; /**< Each marker must be associated to a group class. It's required to add a mark. The group class defines the style of the marker when a marker is grouped to other markers. Markers with the same group are grouped if they are close. A new group class can be created with elm_map_marker_group_class_new() */
+typedef struct _Elm_Map_Route Elm_Map_Route; /**< A route to be shown on the map. Can be created with elm_map_route_add() and deleted with elm_map_route_del() */
+typedef struct _Elm_Map_Name Elm_Map_Name; /**< A handle for specific coordinates */
+typedef struct _Elm_Map_Overlay Elm_Map_Overlay; /**< An overlay to be shown at a specific point on the map. This can be created by elm_map_overlay_add() and other similar functions, and deleted by elm_map_overlay_del() */
+typedef struct _Elm_Map_Region Elm_Map_Region; /**< A geographical point specified by latitude, longitude and altitude values.*/
+
+typedef Evas_Object *(*Elm_Map_Marker_Get_Func)(Evas_Object *obj, Elm_Map_Marker *marker, void *data); /**< Bubble content fetching class function for marker classes. When the user clicks on a marker, a bubble is displayed with content */
+typedef void (*Elm_Map_Marker_Del_Func)(Evas_Object *obj, Elm_Map_Marker *marker, void *data, Evas_Object *o); /**< Function to delete bubble content for marker classes */
+typedef Evas_Object *(*Elm_Map_Marker_Icon_Get_Func)(Evas_Object *obj, Elm_Map_Marker *marker, void *data); /**< Icon fetching class function for marker classes */
+typedef Evas_Object *(*Elm_Map_Group_Icon_Get_Func)(Evas_Object *obj, void *data); /**< Icon fetching class function for marker group classes */
+
+typedef void (*Elm_Map_Overlay_Get_Cb)(void *data, Evas_Object *map, Elm_Map_Overlay *overlay); /**< Get callback function for the overlay */
+typedef void (*Elm_Map_Overlay_Del_Cb)(void *data, Evas_Object *map, Elm_Map_Overlay *overlay); /**< Del callback function for the overlay @since 1.7 */
+typedef void (*Elm_Map_Name_Cb)(void *data, Evas_Object *map, Elm_Map_Name *name); /**< Async-callback function for the name request */
+typedef void (*Elm_Map_Name_List_Cb)(void *data, Evas_Object *map, Eina_List *name_list); /**< Async-callback function for the name list request */
+typedef void (*Elm_Map_Route_Cb)(void *data, Evas_Object *map, Elm_Map_Route *route); /**< Async-callback function for the route request */
+
+typedef void (*Elm_Map_Capture_Result_Cb)(Evas_Object*, void*);/** Async ofscreen map image capture function */
+
+/**
+ * @brief Adds a new map widget to the given parent Elementary (container) object.
+ *
+ * @details This function inserts a new map widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new map widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_map_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the zoom level of the map.
+ *
+ * @details This sets the zoom level.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It respects the limits defined by elm_map_zoom_min_set() and
+ * elm_map_zoom_max_set().
+ *
+ * @remarks By default these values are @c 0 (world map) and @c 18 (maximum zoom).
+ *
+ * @remarks This function should be used when the zoom mode is set to #ELM_MAP_ZOOM_MODE_MANUAL.
+ * This is the default mode, and can be set with elm_map_zoom_mode_set().
+ *
+ *
+ * @param[in] obj The map object
+ * @param[in] zoom The zoom level to set
+ *
+ * @see elm_map_zoom_mode_set()
+ * @see elm_map_zoom_get()
+ */
+EAPI void elm_map_zoom_set(Evas_Object *obj, int zoom);
+
+/**
+ * @brief Gets the zoom level of the map.
+ *
+ * @details This returns the current zoom level of the map object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Note that if you set the fill mode to a value other than #ELM_MAP_ZOOM_MODE_MANUAL
+ * (which is the default), the zoom level may be changed at any time by the
+ * map object itself in order to account for the map size and map viewport size.
+ *
+ * @param[in] obj The map object
+ * @return The current zoom level
+ *
+ * @see elm_map_zoom_set()
+ */
+EAPI int elm_map_zoom_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the zoom mode used by the map object.
+ *
+ * @since_tizen 2.3
+ *
+ * @details This sets the zoom mode to manual or one of the automatic levels.
+ * Manual (#ELM_MAP_ZOOM_MODE_MANUAL) means that zoom is set manually by
+ * elm_map_zoom_set() and stays at that level until changed by code
+ * or until the zoom mode is changed. This is the default mode.
+ *
+ * @remarks The Automatic modes allow the map object to automatically
+ * adjust the zoom mode based on properties. #ELM_MAP_ZOOM_MODE_AUTO_FIT
+ * adjusts the zoom so that the map fits inside the scroll frame with no pixels
+ * outside this area. #ELM_MAP_ZOOM_MODE_AUTO_FILL is similar but
+ * ensure that no pixels within the frame are left unfilled. Do not forget that
+ * the valid sizes are 2^zoom. Consequently, the map may be smaller than
+ * the scroller view.
+ *
+ * @param[in] obj The map object
+ * @param[in] mode The zoom mode of the map, one from #ELM_MAP_ZOOM_MODE_MANUAL
+ * (default), #ELM_MAP_ZOOM_MODE_AUTO_FIT, or #ELM_MAP_ZOOM_MODE_AUTO_FILL
+ *
+ * @see elm_map_zoom_set()
+ */
+EAPI void elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode);
+
+/**
+ * @brief Gets the zoom mode used by the map object.
+ *
+ * @details This function returns the current zoom mode used by the map object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @return The zoom mode of the map, one from #ELM_MAP_ZOOM_MODE_MANUAL
+ * (default), #ELM_MAP_ZOOM_MODE_AUTO_FIT, or #ELM_MAP_ZOOM_MODE_AUTO_FILL
+ *
+ * @see elm_map_zoom_mode_set()
+ */
+EAPI Elm_Map_Zoom_Mode elm_map_zoom_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the minimum zoom of the source.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @param[in] zoom The new minimum zoom value to be used
+ *
+ * @see elm_map_zoom_min_get()
+ */
+EAPI void elm_map_zoom_min_set(Evas_Object *obj, int zoom);
+
+/**
+ * @brief Gets the minimum zoom of the source.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @return The minimum zoom of the source
+ *
+ * @see elm_map_zoom_min_set()
+ */
+EAPI int elm_map_zoom_min_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the maximum zoom of the source.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @param[in] zoom The new maximum zoom value to be used
+ *
+ * @see elm_map_zoom_max_get()
+ */
+EAPI void elm_map_zoom_max_set(Evas_Object *obj, int zoom);
+
+/**
+ * @brief Gets the maximum zoom of the source.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @return The maximum zoom of the source
+ *
+ * @see elm_map_zoom_max_set()
+ */
+EAPI int elm_map_zoom_max_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the current geographic coordinates of the map.
+ *
+ * @details This gets the current center coordinates of the map object. It can be
+ * set by elm_map_region_bring_in() and elm_map_region_show().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @param[out] lon The pointer that stores the longitude
+ * @param[out] lat The pointer that stores the latitude
+ *
+ * @see elm_map_region_bring_in()
+ * @see elm_map_region_show()
+ */
+EAPI void elm_map_region_get(const Evas_Object *obj, double *lon, double *lat);
+
+/**
+ * @brief Animatedly brings the given coordinates to the center of the map.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This causes the map to jump to the given @a lat and @a lon coordinates
+ * and display it (by scrolling) in the center of the viewport, if it is not
+ * already centered. This uses animation to do so and takes a period
+ * of time to complete.
+ *
+ * @param[in] obj The map object
+ * @param[in] lon The longitude to bring to the center
+ * @param[in] lat The latitude to bring to the center
+ *
+ * @see elm_map_region_show() for a function to avoid animation.
+ * @see elm_map_region_get()
+ */
+EAPI void elm_map_region_bring_in(Evas_Object *obj, double lon, double lat);
+
+/**
+ * @brief Shows the given coordinates at the center of the map, @b immediately.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This causes the map to @b redraw its viewport's contents to the
+ * region containing the given @a lat and @a lon, that are moved to the
+ * center of the map.
+ *
+ * @param[in] obj The map object
+ * @param[in] lon The longitude to show at the center
+ * @param[in] lat The latitude to show at the center
+ *
+ * @see elm_map_region_bring_in() for a function to move with animation.
+ * @see elm_map_region_get()
+ */
+EAPI void elm_map_region_show(Evas_Object *obj, double lon, double lat);
+
+/**
+ * @brief Converts the canvas coordinates into geographic coordinates
+ * (longitude, latitude).
+ *
+ * @details This gets the longitude and latitude from the x, y coordinates of the canvas. The canvas
+ * coordinates mean x, y coordinates from the current viewport.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @param[in] x The horizontal coordinate of the point to convert
+ * @param[in] y The vertical coordinate of the point to convert
+ * @param[in] lon A pointer to the longitude
+ * @param[in] lat A pointer to the latitude
+ *
+ * see elm_map_region_to_canvas_convert()
+ */
+EAPI void elm_map_canvas_to_region_convert(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, double *lon, double *lat);
+
+/**
+ * @brief Converts the geographic coordinates (longitude, latitude)
+ * into canvas coordinates.
+ *
+ * @details This gets x, y coordinates of the canvas from the longitude and latitude. The canvas
+ * coordinates mean x, y coordinates from the current viewport.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @param[in] lon The longitude to convert
+ * @param[in] lat The latitude to convert
+ * @param[out] x A pointer to the horizontal coordinate
+ * @param[out] y A pointer to the vertical coordinate
+ *
+ * see elm_map_canvas_to_region_convert()
+ */
+EAPI void elm_map_region_to_canvas_convert(const Evas_Object *obj, double lon, double lat, Evas_Coord *x, Evas_Coord *y);
+
+/**
+ * @brief Pauses or unpauses the map.
+ *
+ * @details This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
+ * for the map.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The default is off.
+ *
+ * @remarks This stops zooming using animation, changing zoom levels
+ * change instantly. This stops any existing animations that are running.
+ *
+ * @param[in] obj The map object
+ * @param[in] paused If @c EINA_TRUE the map @a obj is paused,
+ * otherwise @c EINA_FALSE if it is unpaused
+ *
+ * @see elm_map_paused_get()
+ */
+EAPI void elm_map_paused_set(Evas_Object *obj, Eina_Bool paused);
+
+/**
+ * @brief Gets a value that indicates whether the map is paused.
+ *
+ * @details This gets the current paused state for the map object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @return @c EINA_TRUE means that the map is paused, otherwise @c EINA_FALSE indicates
+ * that it is not
+ *
+ * @see elm_map_paused_set()
+ */
+EAPI Eina_Bool elm_map_paused_get(const Evas_Object *obj);
+
+/**
+ * @brief Rotates the map.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @param[in] degree The angle from @c 0.0 to @c 360.0 to rotate around the Z axis
+ * @param[in] cx The rotation's center horizontal position
+ * @param[in] cy The rotation's center vertical position
+ *
+ * @see elm_map_rotate_get()
+ */
+EAPI void elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy);
+
+/**
+ * @brief Gets the rotate degree of the map.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @param[out] degree The pointer that stores degrees from @c 0.0 to @c 360.0
+ * to rotate around the Z axis
+ * @param[out] cx The pointer that stores the rotation's center horizontal position
+ * @param[out] cy The pointer that stores the rotation's center vertical position
+ *
+ * @see elm_map_rotate_set() to set map rotation.
+ */
+EAPI void elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_Coord *cy);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Enables or disables the perspective feature for 3D view.
+ *
+ * @param[in] obj The map object
+ * @param[in] enabled If @c EINA_TRUE the perspective feature is enabled,
+ * otherwise @c EINA_FALSE if it is disabled
+ *
+ * @see elm_map_perspective_enabled_get()
+ */
+EAPI void elm_map_perspective_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets a value that indicates whether the perspective feature is enabled.
+ *
+ * @param[in] obj The map object
+ * @return @c EINA_TRUE indicates that the perspective feature is enabled, otherwise @c EINA_FALSE indicates
+ * that it is disabled
+ *
+ * @see elm_map_perspective_enabled_set()
+ */
+EAPI Eina_Bool elm_map_perspective_enabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Enables or disables the mouse wheel to be used to zoom in / out the map.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Mouse wheel can be used for the user to zoom in or zoom out of the map.
+ *
+ * @remarks It's disabled by default.
+ *
+ * @param[in] obj The map object
+ * @param[in] disabled If @c EINA_TRUE the mouse wheel is disabled,
+ * otherwise @c EINA_FALSE if it is enabled
+ *
+ * @see elm_map_wheel_disabled_get()
+ */
+EAPI void elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @brief Gets a value that indicates whether the mouse wheel is enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Mouse wheel can be used for the user to zoom in or zoom out of the map.
+ *
+ * @param[in] obj The map object
+ * @return @c EINA_TRUE indicates that the map is disabled, otherwise @c EINA_FALSE indicates
+ * that it is enabled
+ *
+ * @see elm_map_wheel_disabled_set()
+ */
+EAPI Eina_Bool elm_map_wheel_disabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the user agent used by the map object to access routing services.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks User agent is a client application implementing a network protocol used
+ * in communications within a client–server distributed computing system.
+ *
+ * @remarks The @a user_agent identification string is transmitted in a header
+ * field @c User-Agent.
+ *
+ * @param[in] obj The map object
+ * @param[in] user_agent The user agent to be used by the map
+ *
+ * @see elm_map_user_agent_get()
+ */
+EAPI void elm_map_user_agent_set(Evas_Object *obj, const char *user_agent);
+
+/**
+ * @brief Gets the user agent used by the map object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @return The user agent identification string used by the map
+ *
+ * @see elm_map_user_agent_set()
+ */
+EAPI const char *elm_map_user_agent_get(const Evas_Object *obj);
+
+
+/**
+ * @brief Adds a new overlay to the map object. This overlay has a default type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks An overlay is created and shown at a specific point on the map, defined
+ * by @a lon and @a lat.
+ *
+ * @remarks The created overlay has a default style layout before the content or
+ * icon is set.
+ *
+ * @remarks If the content or icon is set, they are displayed instead of the default style
+ * layout.
+ * You can set this by using elm_map_overlay_content_set() or
+ * elm_map_overlay_icon_set(). If @c NULL is set, the default style
+ * is shown again.
+ *
+ * @remarks Overlay created with this method can be deleted by elm_map_overlay_del().
+ *
+ * @param[in] obj The map object to add a new overlay
+ * @param[in] lon The longitude of the overlay
+ * @param[in] lat The latitude of the overlay
+ * @return The created overlay, otherwise @c NULL on failure
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ * @see elm_map_overlay_content_set()
+ * @see elm_map_overlay_icon_set()
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_add(Evas_Object *obj, double lon, double lat);
+
+/**
+ * @brief Returns all overlays in the map object.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This list includes group overlays also.
+ * So this can be changed dynamically while zooming and panning.
+ *
+ * @param[in] obj The map object to return overlays
+ * @return The list of all overlays, otherwise @c NULL on failure
+ */
+EAPI EAPI Eina_List * elm_map_overlays_get(Evas_Object *obj);
+
+/**
+ * @brief Deletes an overlay from the map. This function can delete all types
+ * of overlays.
+ *
+ * @param[in] overlay The overlay to be deleted
+ *
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ */
+EAPI void elm_map_overlay_del(Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Gets the overlay type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This type is resolved when the overlay is created.
+ *
+ * @param[in] overlay The overlay type
+ * @return The overlay type
+ *
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ */
+EAPI Elm_Map_Overlay_Type elm_map_overlay_type_get(const Elm_Map_Overlay *overlay);
+
+ /**
+ * @brief Sets a pointer to the user data of an overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] overlay The overlay to own the user data
+ * @param[in] data A pointer to the user data
+ *
+ * @see elm_map_overlay_data_get()
+ */
+EAPI void elm_map_overlay_data_set(Elm_Map_Overlay *overlay, void *data);
+
+/**
+ * @brief Gets the user data stored on a overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] overlay The overlay to return the user data
+ * @return A pointer to the data stored using elm_map_overlay_data_set(),
+ * otherwise @c NULL if no data has been set
+ *
+ * @see elm_map_overlay_data_set()
+ */
+EAPI void * elm_map_overlay_data_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Sets whether the overlay is hidden.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] overlay The overlay to hide
+ * @param[in] hide If @c EINA_TRUE the overlay is hidden,
+ * otherwise @c EINA_FALSE if it is shown
+ * @see elm_map_overlay_hide_get()
+ */
+EAPI void elm_map_overlay_hide_set(Elm_Map_Overlay *overlay, Eina_Bool hide);
+
+/**
+ * @brief Gets a value that indicates whether the overlay is hidden.
+ *
+ * @details This gets the current hidden state for the overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] overlay The overlay with the hidden state
+ * @return @c EINA_TRUE indicates that the overlay is hidden, otherwise @c EINA_FALSE indicates
+ * that it is not
+ *
+ * @see elm_map_overlay_hide_set()
+ */
+EAPI Eina_Bool elm_map_overlay_hide_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Sets the minimum zoom from where the overlay is displayed.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The overlay is only displayed when the map is displayed at @a zoom
+ * or bigger.
+ *
+ * @param[in] overlay The overlay to set to minimum zoom
+ * @param[in] zoom The minimum zoom
+ *
+ * @see elm_map_overlay_displayed_zoom_min_get()
+ */
+EAPI void elm_map_overlay_displayed_zoom_min_set(Elm_Map_Overlay *overlay, int zoom);
+
+/**
+ * @brief Gets the minimum zoom from where the overlay is displayed.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] overlay The overlay with minimum zoom
+ * @return zoom The minimum zoom
+ *
+ * @see elm_map_overlay_displayed_zoom_min_set()
+ */
+EAPI int elm_map_overlay_displayed_zoom_min_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Pauses or unpauses the overlay.
+ *
+ * @details This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
+ * for the overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The default is off.
+ *
+ * @remarks This stops moving the overlay coordinates instantly,
+ * even if the map is being scrolled or zoomed.
+ *
+ * @param[in] overlay The overlay to be paused
+ * @param[in] paused If @c EINA_TRUE the @a overlay is paused,
+ * otherwise @c EINA_FALSE if it is unpaused
+ *
+ * @see elm_map_overlay_paused_get()
+ */
+EAPI void elm_map_overlay_paused_set(Elm_Map_Overlay *overlay, Eina_Bool paused);
+
+/**
+ * @brief Gets a value that indicates whether the overlay is paused.
+ *
+ * @details This gets the current paused state for the overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] overlay The overlay in the paused state
+ * @return @c EINA_TRUE indicates that the overlay is paused, otherwise @c EINA_FALSE indicates
+ * that it is not
+ *
+ * @see elm_map_overlay_paused_set()
+ */
+EAPI Eina_Bool elm_map_overlay_paused_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Gets a value that indicates whether the overlay is visible.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The visibility of the overlay cannot be set.
+ * @remarks This value can be changed dynamically while zooming and panning.
+ *
+ * @param[in] overlay The overlay in the visible state
+ * @return @c EINA_TRUE indicates that the overlay is visible, otherwise @c EINA_FALSE indicates
+ * that it is not
+ */
+EAPI Eina_Bool elm_map_overlay_visible_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Sets the content object of the overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Only default and class type overlay support this function.
+ *
+ * @remarks The content should be resized or size hints should be set in advance for the overlay.
+ * <b> Do not modify this object</b> (move, show, hide, del, etc.),
+ * after setting.
+ * You can only resize this.
+ *
+ * @remarks This content is what is inside the overlay and is going to be displayed.
+ * If content is set, the icon and default style layout are no more used unless
+ * the content is deleted.
+ *
+ * @remarks If @a obj is @c NULL, the content inside the overlay is deleted.
+ *
+ * @param[in] overlay The overlay whose content is set
+ * @param[in] obj The evas object is used to display the overlay
+ *
+ * @see elm_map_overlay_content_get()
+ */
+EAPI void elm_map_overlay_content_set(Elm_Map_Overlay *overlay, Evas_Object *obj);
+
+/**
+ * @brief Gets the content object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Only default and class type overlay support this function.
+ *
+ * @remarks The returned content is what is inside the overlay and is going to be displayed.
+ *
+ * @remarks <b> Do not modify this object</b> (move, show, hide, del, etc.).
+ * You can only resize this.
+ *
+ * @remarks The content can be set by elm_map_overlay_content_set().
+ *
+ * @param[in] overlay The overlay to return the content
+ * @return The evas object if it exists, otherwise @c NULL
+ *
+ * @see elm_map_overlay_content_set()
+ */
+EAPI const Evas_Object * elm_map_overlay_content_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Sets an icon for the overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Only default and class type overlay support this function.
+ *
+ * @remarks <b> Do not modify this object</b> (move, show, hide, resize, del, etc.),
+ * after it is set.
+ *
+ * @remarks If the @a icon is set, the default style layout is not used.
+ *
+ * @remarks If @a icon is @c NULL, the icon inside the overlay is deleted.
+ *
+ * @param[in] overlay The overlay to set the icon
+ * @param[in] icon The icon used to display the overlay
+ *
+ * @see elm_map_overlay_icon_get()
+ */
+EAPI void elm_map_overlay_icon_set(Elm_Map_Overlay *overlay, Evas_Object *icon);
+
+/**
+ * @brief Gets the icon object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Only default and class type overlay support this function.
+ *
+ * @remarks The returned icon is what is inside the overlay and is going to be displayed.
+ *
+ * @remarks <b> Do not modify this icon </b> (move, show, hide, resize, del, etc.).
+ *
+ * @remarks The icon can be set by elm_map_overlay_icon_set().
+ *
+ * @param[in] overlay The overlay to return the icon
+ * @return The icon object if it exists, otherwise @c NULL
+ *
+ * @see elm_map_overlay_icon_set()
+ */
+EAPI const Evas_Object * elm_map_overlay_icon_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Sets the geographic coordinates of the overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Only default and bubble type overlay support this function.
+ *
+ * @remarks This sets the center coordinates of the overlay. It can be
+ * obtained by elm_map_overlay_region_get().
+ *
+ * @param[in] overlay The overlay for which the geographic coordinates are set
+ * @param[in] lon The longitude to be set
+ * @param[in] lat The latitude to be set
+ *
+ * @see elm_map_overlay_region_get()
+ */
+EAPI void elm_map_overlay_region_set(Elm_Map_Overlay *overlay, double lon, double lat);
+
+/**
+ * @brief Gets the geographic coordinates of the overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Only default and bubble type overlay support this function.
+ *
+ * @remarks This returns the center coordinates of the overlay. It can be
+ * set by elm_map_overlay_region_set().
+ *
+ * @param[in] overlay The overlay to return geographic coordinates
+ * @param[out] lon The pointer to store the longitude
+ * @param[out] lat The pointer to store the latitude
+ *
+ * @see elm_map_overlay_region_set()
+ */
+EAPI void elm_map_overlay_region_get(const Elm_Map_Overlay *overlay, double *lon, double *lat);
+
+
+/**
+ * @brief Sets the object color of the overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It uses an additive color model, so each color channel represents
+ * how much of each primary colors must be used. @c 0 represents
+ * the absence of this color, so if all of the three are set to @c 0,
+ * the color is black.
+ *
+ * @remarks These component values should be integers in the range from @c 0 to @c 255,
+ * (single 8-bit byte).
+ *
+ * @remarks This sets the color used for the overlay. By default, it is set to
+ * solid red (r = 255, g = 0, b = 0, a = 255).
+ *
+ * @remarks For an alpha channel, @c 0 represents complete transparency, and @c 255 represents opacity.
+ *
+ * @remarks This function supports only the @c ELM_MAP_OVERLAY_TYPE_CLASS, @c ELM_MAP_OVERLAY_TYPE_DEFAULT,
+ * and @c ELM_MAP_OVERLAY_TYPE_ROUTE Elm_Map_Overlay_Type types.
+ *
+ * @param[in] overlay The overlay for which to set color
+ * @param[in] r The red channel value, from @c 0 to @c 255
+ * @param[in] g The green channel value, from @c 0 to @c 255
+ * @param[in] b The blue channel value, from @c 0 to @c 255
+ * @param[in] a The alpha channel value, from @c 0 to @c 255
+ *
+ * @see elm_map_overlay_color_get()
+ */
+EAPI void elm_map_overlay_color_set(Elm_Map_Overlay *overlay, int r, int g, int b, int a);
+
+/**
+ * @brief Gets the object color of the overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] overlay The overlay to return color
+ * @param[out] r The pointer that stores the red channel value
+ * @param[out] g The pointer that stores the green channel value
+ * @param[out] b The pointer that stores the blue channel value
+ * @param[out] a The pointer that stores the alpha channel value
+ *
+ * @see elm_map_overlay_color_set()
+ */
+EAPI void elm_map_overlay_color_get(const Elm_Map_Overlay *overlay, int *r, int *g, int *b, int *a);
+
+/**
+ * @brief Shows the given overlay at the center of the map, immediately.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This causes the map to @b redraw its viewport's contents in the
+ * region containing the given @a overlay coordinates, that are
+ * moved to the center of the map.
+ *
+ * @param[in] overlay The overlay to show at the center
+ *
+ * @see elm_map_overlays_show() if more than one overlay needs to be displayed.
+ */
+EAPI void elm_map_overlay_show(Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Moves and zooms the map to display a list of overlays.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The map is centered on the center point of the overlay in the list.
+ * Then the map is zoomed in order to fit the overlay using the maximum
+ * zoom which allows display of all the overlays.
+ *
+ * @remarks All the overlays should belong to the same map object.
+ *
+ * @param[in] overlays A list of #Elm_Map_Overlay handles
+ *
+ * @see elm_map_overlay_show() to show a single overlay.
+ */
+EAPI void elm_map_overlays_show(Eina_List *overlays);
+
+/**
+ * @brief Sets the get callback function of the overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If the overlay is clicked, the callback is called.
+ * The clicked overlay is returned by callback.
+ *
+ * @remarks You can add a callback to the class overlay. If one of the group overlays in this class
+ * is clicked, callback is called and a virtual group overlay is returned.
+ *
+ * @remarks You can delete this callback function by setting @c NULL.
+ *
+ * @param[in] overlay The overlay to own the get callback function
+ * @param[in] get_cb The callback function
+ * @param[in] data The user callback data
+ */
+EAPI void elm_map_overlay_get_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Get_Cb get_cb, void *data);
+
+/**
+ * @brief Sets the get callback function to call when the overlay is deleted.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If the overlay is deleted, the callback is called.
+ * The deleted overlay is returned by the callback.
+ *
+ * @remarks You can delete this callback function by setting @c NULL.
+ *
+ * @param[in] overlay The overlay to own the del callback function
+ * @param[in] del_cb The callback function
+ * @param[in] data The user callback data
+ */
+EAPI void elm_map_overlay_del_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Del_Cb del_cb, void *data);
+
+/**
+ * @brief Adds a new class overlay to the map object.
+ * This overlay has a class type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This overlay is not shown unless overlay members are appended.
+ * If overlay members in the same class are close, group overlays
+ * are created. If they are far away, group overlays are hidden.
+ * When group overlays are shown, they have default style layouts at first.
+ *
+ * @remarks You can change the state (hidden, paused, etc.) or set the content
+ * or icon of the group overlays by chaning the state of the class overlay.
+ * Do not modify the group overlay.
+ *
+ * @remarks Also these changes have an influence on the overlays in the same class
+ * even if each overlay is alone and is not grouped.
+ *
+ * @param[in] obj The map object to add a new overlay
+ * @return The created overlay, otherwise @c NULL on failure
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_bubble_add()
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_class_add(Evas_Object *obj);
+
+/**
+ * @brief Adds a new overlay member to the class overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] clas The class overlay to which to add a new overlay
+ * @param[in] overlay The overlay to be added to the class overlay
+ *
+ * @see elm_map_overlay_class_remove()
+ */
+EAPI void elm_map_overlay_class_append(Elm_Map_Overlay *clas, Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Removes an overlay from the class.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] clas The class overlay from which to delete the overlay
+ * @param[in] overlay The overlay to be deleted from the class overlay
+ *
+ * @see elm_map_overlay_class_append()
+ */
+EAPI void elm_map_overlay_class_remove(Elm_Map_Overlay *clas, Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Sets the maximum zoom from where the overlay members in the class can be
+ * grouped.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Overlay members in the class are only grouped when the map
+ * is displayed at less than @a zoom.
+ *
+ * @param[in] clas The overlay class having overlay members
+ * @param[in] zoom The maximum zoom
+ *
+ * @see elm_map_overlay_class_zoom_max_get()
+ */
+EAPI void elm_map_overlay_class_zoom_max_set(Elm_Map_Overlay *clas, int zoom);
+
+/**
+ * @brief Gets the maximum zoom from where the overlay members in the class can be
+ * grouped.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] clas The overlay class having overlay members
+ *
+ * @return The maximum zoom
+ *
+ * @see elm_map_overlay_class_zoom_max_set()
+ */
+EAPI int elm_map_overlay_class_zoom_max_get(const Elm_Map_Overlay *clas);
+
+/**
+ * @brief Gets the overlay members of the group overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The group overlays are virtual overlays. They are shown and hidden dynamically.
+ * You can add a callback to the class overlay. If one of the group overlays in this class
+ * is clicked, callback is called and a virtual group overlays is returned.
+ *
+ * @remarks You can change the state (hidden, paused, etc.) or set the content
+ * or icon of the group overlays by changing the state of the class overlay.
+ * Do not modify the group overlay.
+ *
+ * @param[in] grp The group overlay having overlay members
+ *
+ * @return The list of group overlay members
+ *
+ * @see elm_map_overlay_class_add()
+ */
+EAPI Eina_List * elm_map_overlay_group_members_get(const Elm_Map_Overlay *grp);
+
+/**
+ * @brief Adds a new bubble overlay to the map object.
+ * This overlay has a bubble type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A bubble is not displayed unless the geographic coordinates are set or
+ * any other overlays are followed.
+ *
+ * @remarks This overlay has a bubble style layout and icon or the content cannot
+ * be set.
+ *
+ * @remarks Overlay created with this method can be deleted by elm_map_overlay_del().
+ *
+ * @param[in] obj The map object to add a new overlay
+ * @return The created overlay, otherwise @c NULL on failure
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_region_set()
+ * @see elm_map_overlay_bubble_follow()
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_bubble_add(Evas_Object *obj);
+
+/**
+ * @brief Follows another overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The bubble overlay follows the parent overlay's movement (hide, show, move).
+ *
+ * @param[in] bubble The bubble overlay to follow a parent overlay
+ * @param[in] parent The parent overlay to be followed by the bubble overlay
+ *
+ * @see elm_map_overlay_bubble_add()
+ */
+EAPI void elm_map_overlay_bubble_follow(Elm_Map_Overlay *bubble, const Elm_Map_Overlay *parent);
+
+/**
+ * @brief Adds a content object to the bubble overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The added content is displayed inside the bubble overlay.
+ *
+ * @param[in] bubble The bubble overlay to add content
+ * @param[in] content The content to be added to the bubble overlay
+ *
+ * @see elm_map_overlay_bubble_content_clear()
+ */
+EAPI void elm_map_overlay_bubble_content_append(Elm_Map_Overlay *bubble, Evas_Object *content);
+
+/**
+ * @brief Clears all the content inside the bubble overlay.
+ *
+ * @details This deletes all the content inside the bubble overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] bubble The bubble overlay whose content is cleared
+ *
+ * @see elm_map_overlay_bubble_content_append()
+ */
+EAPI void elm_map_overlay_bubble_content_clear(Elm_Map_Overlay *bubble);
+
+/**
+ * @brief Adds a new route overlay to the map object.
+ * This overlay has a route type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This overlay has a route style layout and icon or content cannot
+ * be set.
+ *
+ * @remarks The color scheme can be changed by elm_map_overlay_content_set().
+ *
+ * @remarks Overlay created with this method can be deleted by elm_map_overlay_del().
+ *
+ * @param[in] obj The map object to add a new overlay
+ * @param[in] route The route object to make an overlay
+ * @return The created overlay, otherwise @c NULL on failure
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_content_set()
+ * @see elm_map_overlay_content_get()
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_route_add(Evas_Object *obj, const Elm_Map_Route *route);
+
+/**
+ * @brief Adds a new line overlay to the map object.
+ * This overlay has a line type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Overlay created with this method can be deleted by elm_map_overlay_del().
+ *
+ * @param[in] obj The map object to add a new overlay
+ * @param[in] flon The start longitude
+ * @param[in] flat The start latitude
+ * @param[in] tlon The destination longitude
+ * @param[in] tlat The destination latitude
+ * @return The created overlay, otherwise @c NULL on failure
+ *
+ * @see elm_map_overlay_del()
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_line_add(Evas_Object *obj, double flon, double flat, double tlon, double tlat);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Add a new polyline overlay to the map object.
+ * This overlay has a polyline type.
+ *
+ * @remarks At least 2 regions should be added to show the polyline overlay.
+ *
+ * @remarks Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @param obj The map object to add a new overlay.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * @see elm_map_overlay_del()
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_polyline_add(Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Add a geographic coordinates to the polyline overlay.
+ *
+ * @remarks At least 2 regions should be added to show the polyline overlay.
+ *
+ * @remarks Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @param overlay The polyline overlay to add geographic coordinates
+ * @param lon The longitude.
+ * @param lat The latitude.
+ *
+ * @see elm_map_overlay_polyline_add()
+ * @see elm_map_overlay_del()
+ */
+EAPI void elm_map_overlay_polyline_region_add(Elm_Map_Overlay *overlay, double lon, double lat);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sets the width of the polyline overlay.
+ *
+ * @param overlay The polyline overlay to set a width.
+ * @param width The line width in pixels
+ *
+ * @see elm_map_overlay_polyline_width_get()
+ */
+EAPI void elm_map_overlay_polyline_width_set(Elm_Map_Overlay *overlay, int width);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the width of the polyline overlay.
+ *
+ * @param overlay The polyline overlay to get a width.
+ * @return The line width in pixels
+ *
+ * @see elm_map_overlay_polyline_width_set()
+ */
+EAPI int elm_map_overlay_polyline_width_get(Elm_Map_Overlay *overlay);
+
+/**
+ * @brief Adds a new polygon overlay to the map object.
+ * This overlay has a polygon type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks At least 3 regions should be added to show the polygon overlay.
+ *
+ * @remarks Overlay created with this method can be deleted by elm_map_overlay_del().
+ *
+ * @param[in] obj The map object to add a new overlay
+ * @return The created overlay, otherwise @c NULL on failure
+ *
+ * @see elm_map_overlay_polygon_region_add()
+ * @see elm_map_overlay_del()
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_polygon_add(Evas_Object *obj);
+
+/**
+ * @brief Adds geographic coordinates to the polygon overlay.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks At least 3 regions should be added to show the polygon overlay.
+ *
+ * @remarks Overlay created with this method can be deleted by elm_map_overlay_del().
+ *
+ * @param[in] overlay The polygon overlay to add geographic coordinates
+ * @param[in] lon The longitude
+ * @param[in] lat The latitude
+ *
+ * @see elm_map_overlay_polygon_add()
+ * @see elm_map_overlay_del()
+ */
+EAPI void elm_map_overlay_polygon_region_add(Elm_Map_Overlay *overlay, double lon, double lat);
+
+/**
+ * @brief Adds a new circle overlay to the map object.
+ * This overlay has a circle type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Overlay created with this method can be deleted by elm_map_overlay_del().
+ *
+ * @param[in] obj The map object to add a new circle overlay
+ * @param[in] lon The center longitude
+ * @param[in] lat The center latitude
+ * @param[in] radius The pixel length of the radius
+ * @return The created overlay, otherwise @c NULL on failure
+ *
+ * @see elm_map_overlay_del()
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_circle_add(Evas_Object *obj, double lon, double lat, double radius);
+
+/**
+ * @brief Adds a new scale overlay to the map object.
+ * This overlay has a scale type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The scale overlay shows the ratio of a distance on the map to the corresponding distance.
+ *
+ * @remarks Overlay created with this method can be deleted by elm_map_overlay_del().
+ *
+ * @param[in] obj The map object to add a new scale overlay
+ * @param[in] x The horizontal pixel coordinate
+ * @param[in] y The vertical pixel coordinate
+ * @return The created overlay, otherwise @c NULL on failure
+ *
+ * @see elm_map_overlay_del()
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_scale_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+
+/**
+ * @brief Gets information on the tile load status.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This gets the current tile loaded status for the map object.
+ *
+ * @param[in] obj The map object
+ * @param[out] try_num The pointer that stores the number of tile download requests
+ * @param[out] finish_num The pointer that stores the number of tiles successfully downloaded
+ */
+EAPI void elm_map_tile_load_status_get(const Evas_Object *obj, int *try_num, int *finish_num);
+
+/**
+ * @brief Gets the names of available sources for a specific type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It provides a list with all available sources.
+ * Current source can be set by elm_map_source_set(), or obtained by
+ * elm_map_source_get().
+ *
+ * @remarks Available sources of tile type:
+ * @li "Mapnik"
+ * @li "Osmarender"
+ * @li "CycleMap"
+ * @li "Maplint"
+ *
+ * @remarks Available sources of route type:
+ * @li "Yours"
+ *
+ * @remarks Available sources of name type:
+ * @li "Nominatim"
+ *
+ * @param[in] obj The map object
+ * @param[in] type The source type
+ * @return The char pointer array of source names
+ *
+ * @see elm_map_source_set()
+ * @see elm_map_source_get()
+ */
+EAPI const char **elm_map_sources_get(const Evas_Object *obj, Elm_Map_Source_Type type);
+
+/**
+ * @brief Sets the current source of the map for a specific type.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Map widget retrieves tile images that compose of the map from a web service.
+ * This web service can be set by this method
+ * for the @c ELM_MAP_SOURCE_TYPE_TILE type.
+ * A different service can return a different map with different
+ * information and it can use different zoom values.
+ *
+ * @remarks Map widget provides route data based on an external web service.
+ * This web service can be set with this method
+ * for the @c ELM_MAP_SOURCE_TYPE_ROUTE type.
+ *
+ * @remarks Map widget also provides geoname data based on a external web service.
+ * This web service can be set with this method
+ * for the @c ELM_MAP_SOURCE_TYPE_NAME type.
+ *
+ * @remarks The @a source_name needs to match one of the names provided by
+ * elm_map_sources_get().
+ *
+ * @remarks The current source can be obtained by elm_map_source_get().
+ *
+ * @param[in] obj The map object
+ * @param[in] type The source type
+ * @param[in] source_name The source to be used
+ *
+ * @see elm_map_sources_get()
+ * @see elm_map_source_get()
+ */
+EAPI void elm_map_source_set(Evas_Object *obj, Elm_Map_Source_Type type, const char *source_name);
+
+/**
+ * @brief Gets the name of the currently used source for a specific type.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @param[in] type The source type
+ * @return The name of the source in use
+ *
+ * @see elm_map_sources_get()
+ * @see elm_map_source_set()
+ */
+EAPI const char *elm_map_source_get(const Evas_Object *obj, Elm_Map_Source_Type type);
+
+/**
+ * @internal
+ * @remarks Tizen only
+ *
+ * @brief Gets the names of available engines.
+ *
+ * @remarks It provides a list with all the available map engines.
+ * Current engine can be set by elm_map_engine_set(), or obtained by
+ * elm_map_engine_get().
+ *
+ * @remarks By default, the tile engine is implemented.
+ *
+ * @param obj The map object
+ * @return The char pointer array of engine names
+ *
+ * @see elm_map_engine_set()
+ * @see elm_map_engine_get()
+ */
+EAPI const char **elm_map_engines_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sets the current engine of the map.
+ *
+ * @remarks The @a engine_name needs to match one of the names provided by
+ * elm_map_engines_get().
+ *
+ * @remarks The current engine can be obtained by elm_map_engine_get().
+ *
+ * @remarks By default, the tile engine is used.
+ *
+ * @param obj The map object
+ * @param engine_name The engine to be used
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_map_engines_get()
+ * @see elm_map_engine_get()
+ */
+EAPI Eina_Bool elm_map_engine_set(Evas_Object *obj, const char *engine_name);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the name of the currently used engine.
+ *
+ * @param obj The map object
+ * @return The name of the engine in use
+ *
+ * @see elm_map_engines_get()
+ * @see elm_map_engine_set()
+ */
+
+EAPI const char *elm_map_engine_get(const Evas_Object *obj);
+
+
+/**
+ * @brief Adds a new route to the map object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A route is traced by a point at the coordinates (@a flat, @a flon)
+ * to a point at the coordinates (@a tlat, @a tlon), using the route service
+ * set by elm_map_source_set().
+ *
+ * @remarks It takes @a type to be considered to define the route,
+ * depending on whether the user is walking or driving, the route may vary.
+ * One from #ELM_MAP_ROUTE_TYPE_MOTOCAR, #ELM_MAP_ROUTE_TYPE_BICYCLE,
+ * or #ELM_MAP_ROUTE_TYPE_FOOT need to be used.
+ *
+ * @remarks Another parameter is what the route should prioritize, minimum distance
+ * or less time spent on the route. So @a method should be one
+ * from #ELM_MAP_ROUTE_METHOD_SHORTEST or #ELM_MAP_ROUTE_METHOD_FASTEST.
+ *
+ * @remarks Routes created by this method can be deleted by
+ * elm_map_route_del(),
+ * and distance can be obtained by elm_map_route_distance_get().
+ *
+ * @param[in] obj The map object
+ * @param[in] type The type of transport to be considered when tracing a route
+ * @param[in] method The routing method that should be prioritized
+ * @param[in] flon The start longitude
+ * @param[in] flat The start latitude
+ * @param[in] tlon The destination longitude
+ * @param[in] tlat The destination latitude
+ * @param[in] route_cb The route to be traced
+ * @param[in] data A pointer to the user data
+ *
+ * @return The created route, otherwise @c NULL on failure
+ *
+ * @see elm_map_route_del()
+ * @see elm_map_route_distance_get()
+ * @see elm_map_source_set()
+ */
+EAPI Elm_Map_Route *elm_map_route_add(Evas_Object *obj, Elm_Map_Route_Type type, Elm_Map_Route_Method method, double flon, double flat, double tlon, double tlat, Elm_Map_Route_Cb route_cb, void *data);
+
+/**
+ * @brief Removes a route from the map.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] route The route to remove
+ *
+ * @see elm_map_route_add()
+ */
+EAPI void elm_map_route_del(Elm_Map_Route *route);
+
+/**
+ * @brief Gets the route distance in kilometers.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] route The route object
+ * @return The distance of the route (unit : km)
+ */
+EAPI double elm_map_route_distance_get(const Elm_Map_Route *route);
+
+/**
+ * @brief Gets the information of the route nodes.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] route The route object
+ * @return A string with the nodes of the route
+ */
+EAPI const char *elm_map_route_node_get(const Elm_Map_Route *route);
+
+/**
+ * @brief Gets the information of the route waypoint.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] route The route object
+ * @return A string with information about the waypoint of the route
+ */
+EAPI const char *elm_map_route_waypoint_get(const Elm_Map_Route *route);
+
+/**
+ * @brief Requests an address or geographic coordinates(longitude, latitude)
+ * from a given address or geographic coordinates(longitude, latitude).
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If you want to get an address from the geographic coordinates, set the input @a address
+ * as @c NULL and set @a lon and @a lat as you want to convert.
+ * If the address is set to a value other than @c NULL, @a lon and @a lat are checked.
+ *
+ * @remarks To get the string for this address, elm_map_name_address_get()
+ * should be used after callback or the @c "name,loaded" signal is called.
+ *
+ * @remarks To get the longitude and latitude, elm_map_name_region_get()
+ * should be used.
+ *
+ * @param[in] obj The map object
+ * @param[in] address The address
+ * @param[in] lon The longitude
+ * @param[in] lat The latitude
+ * @param[in] name_cb The callback function
+ * @param[in] data The user callback data
+ * @return name A #Elm_Map_Name handle for this coordinate
+ */
+EAPI Elm_Map_Name *elm_map_name_add(const Evas_Object *obj, const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data);
+
+/**
+ * @brief Requests a list of addresses corresponding to a given name.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This is used if you want to search the address from a name.
+ *
+ * @param[in] obj The map object
+ * @param[in] address The address
+ * @param[in] name_cb The callback function
+ * @param[in] data The user callback data
+ */
+EAPI void elm_map_name_search(const Evas_Object *obj, const char *address, Elm_Map_Name_List_Cb name_cb, void *data);
+
+/**
+ * @brief Gets the address of the name.
+ *
+ * @details This gets the coordinates of the @a name created with one of the
+ * conversion functions.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] name The name handle
+ * @return The address string of @a name
+ *
+ * @see elm_map_name_add()
+ */
+EAPI const char *elm_map_name_address_get(const Elm_Map_Name *name);
+
+/**
+ * @brief Gets the current coordinates of the name.
+ *
+ * @details This gets the coordinates of the @a name created with one of the
+ * conversion functions.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] name The name handle
+ * @param[out] lat The pointer to store the latitude
+ * @param[out] lon The pointer to store The longitude
+ *
+ * @see elm_map_name_add()
+ */
+EAPI void elm_map_name_region_get(const Elm_Map_Name *name, double *lon, double *lat);
+
+/**
+ * @brief Removes a name from the map.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Basically the struct handled by @a name is freed, so conversions
+ * between the address and coordinates is lost.
+ *
+ * @param[in] name The name to remove
+ *
+ * @see elm_map_name_add()
+ */
+EAPI void elm_map_name_del(Elm_Map_Name *name);
+
+/**
+ * @brief Adds a track on the map.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @param[in] emap The emap route object
+ * @return The route object \n
+ * This is an elm object of type Route.
+ *
+ * @see elm_route_add()
+ */
+EAPI Evas_Object *elm_map_track_add(Evas_Object *obj, void *emap);
+
+/**
+ * @brief Removes a track from the map.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The map object
+ * @param[in] route The track to remove
+ */
+EAPI void elm_map_track_remove(Evas_Object *obj, Evas_Object *route);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ */
+EAPI void elm_map_engine_key_set(Evas_Object *obj, const char *engine_name, const char *key);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+* @brief Get an offscreen rendered image of the map. The coordinates and zoom level must be set prior to
+* calling this function.
+*
+* @param obj The map object
+* @param w The width of the output image
+* @param h The height of the output image
+* @param map_image_cb The callback function that is called when the map image is ready
+* @param data The user callback data
+* @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+*/
+EAPI Eina_Bool elm_map_image_get(Evas_Object *obj, int w, int h, Elm_Map_Capture_Result_Cb map_image_cb, void *data);
/**
* @}
diff --git a/src/lib/elm_mapbuf.h b/src/lib/elm_mapbuf.h
index b2ef299a9..23fb9a7c9 100644
--- a/src/lib/elm_mapbuf.h
+++ b/src/lib/elm_mapbuf.h
@@ -1,47 +1,185 @@
/**
* @defgroup Mapbuf Mapbuf
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html mapbuf_inheritance_tree.png
* @image latex mapbuf_inheritance_tree.eps
*
- * @image html img/widget/mapbuf/preview-00.png
- * @image latex img/widget/mapbuf/preview-00.eps width=\textwidth
+ * @brief This holds one content object and uses an Evas Map of transformation
+ * points to be later used with this content.
*
- * This holds one content object and uses an Evas Map of transformation
- * points to be later used with this content. So the content will be
- * moved as a single image. So it will improve performance
- * when you have a complex interface, with a lot of elements, and will
- * need to move it frequently (the content object and its
+ * So the content is moved, resized, etc as a single image. So it improves
+ * performance when you have a complex interface, with a lot of elements,
+ * and you need to resize or move it frequently (the content object and its
* children).
*
- * This widget inherits from @ref elm-container-class, so that the
- * functions meant to act on it will work for mapbuf objects:
+ * The functions meant to act on it works for mapbuf objects:
*
* @li @ref elm_object_part_content_set
* @li @ref elm_object_part_content_get
* @li @ref elm_object_part_content_unset
*
- * Default content parts of the mapbuf widget that you can use are:
- * @li "default" - The main content of the mapbuf
+ * The default content parts of the mapbuf widget that you can use are:
+ * @li "default" - The main content of the mapbuf.
*
* To enable map, elm_mapbuf_enabled_set() should be used.
*
- * See how to use this widget in this example:
- * @ref mapbuf_example
+ * @{
*/
/**
- * @addtogroup Mapbuf
- * @{
+ * @brief Adds a new mapbuf widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new mapbuf widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new mapbuf widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_mapbuf_add(Evas_Object *parent);
+
+/**
+ * @brief Enables or disables the map.
+ *
+ * @details This enables the map that is set or disables it. On enable, the object
+ * geometry is saved, and the new geometry changes (position and
+ * size) to reflect the map geometry set.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Also, when enabled, alpha and smooth states are used, so if the
+ * content isn't solid, alpha should be enabled, for example, otherwise
+ * a black rectangle fills the content.
+ *
+ * @remarks When disabled, the stored map is freed and the geometry prior to
+ * enabling the map is restored.
+ *
+ * It's disabled by default.
+ *
+ * @param[in] obj The mapbuf object
+ * @param[in] enabled If @c EINA_TRUE the map is enabled, otherwise @c EINA_FALSE to disable it
+ *
+ * @see elm_mapbuf_alpha_set()
+ * @see elm_mapbuf_smooth_set()
+ */
+EAPI void elm_mapbuf_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @brief Gets a value that indicates whether the map is enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The mapbuf object
+ * @return @c EINA_TRUE means the map is enabled, otherwise @c EINA_FALSE indicates that it's disabled \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_mapbuf_enabled_set()
+ */
+EAPI Eina_Bool elm_mapbuf_enabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Enables or disables smooth map rendering.
+ *
+ * @details This sets smoothing for map rendering. If the object is a type that has
+ * its own smoothing settings, then both the smooth settings for this object
+ * and the map must be turned off.
+ *
+ * By default smooth maps are enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The mapbuf object
+ * @param[in] smooth If @c EINA_TRUE smooth map rendering is enabled,
+ * otherwise @c EINA_FALSE to disable it
+ */
+EAPI void elm_mapbuf_smooth_set(Evas_Object *obj, Eina_Bool smooth);
+
+/**
+ * @brief Gets a value that indicates whether smooth map rendering is enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The mapbuf object
+ * @return @c EINA_TRUE means smooth map rendering is enabled, otherwise @c EINA_FALSE indicates that it's disabled \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_mapbuf_smooth_set()
+ */
+EAPI Eina_Bool elm_mapbuf_smooth_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets or unsets the alpha flag for map rendering.
+ *
+ * @details This sets the alpha flag for map rendering. If the object is a type that has
+ * its own alpha settings, then this takes precedence. Only image objects
+ * have this currently. It stops alpha blending of the map area, and is
+ * useful if you know the object and/or all the sub-objects is 100% solid.
+ *
+ * Alpha is enabled by default.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The mapbuf object
+ * @param[in] alpha If @c EINA_TRUE alpha blending is enabled, otherwise @c EINA_FALSE
+ * to disable it
+ */
+EAPI void elm_mapbuf_alpha_set(Evas_Object *obj, Eina_Bool alpha);
+
+/**
+ * @brief Gets a value that indicates whether alpha blending is enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The mapbuf object
+ * @return @c EINA_TRUE means alpha blending is enabled, otherwise @c EINA_FALSE indicates it's disabled \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_mapbuf_alpha_set()
*/
+EAPI Eina_Bool elm_mapbuf_alpha_get(const Evas_Object *obj);
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_mapbuf_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_mapbuf_legacy.h>
-#endif
+/**
+ * @brief Sets the color of a vertex in the mapbuf.
+ *
+ * @details This sets the color of the vertex in the mapbuf. Colors are linearly
+ * interpolated between vertex points through the mapbuf. Color multiplies
+ * the "texture" pixels (like GL_MODULATE in OpenGL). The default color of
+ * a vertex in a mapbuf is white solid (255, 255, 255, 255) which means it
+ * has no effect on modifying the texture pixels.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The mapbuf object
+ * @param[in] idx The index of the point to change, must be smaller than the mapbuf size
+ * @param[in] r Red (0 - 255)
+ * @param[in] g Green (0 - 255)
+ * @param[in] b Blue (0 - 255)
+ * @param[in] a Alpha (0 - 255)
+ *
+ * @see evas_object_map_set()
+ */
+EAPI void elm_mapbuf_point_color_set(Evas_Object *obj, int idx, int r, int g, int b, int a);
+
+/**
+ * @brief Gets the color set on a vertex in the mapbuf.
+ *
+ * @details This gets the color set by elm_mapbuf_point_color_set() on the given vertex
+ * of the mapbuf.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The mapbuf object
+ * @param[in] idx The index of the point to get, must be smaller than the map size.
+ * @param[out] r A pointer to red
+ * @param[out] g A pointer to green
+ * @param[out] b A pointer to blue
+ * @param[out] a A pointer to alpha
+ *
+ * @see elm_mapbuf_point_color_set()
+ */
+EAPI void elm_mapbuf_point_color_get(Evas_Object *obj, int idx, int *r, int *g, int *b, int *a);
/**
* @}
diff --git a/src/lib/elm_menu.h b/src/lib/elm_menu.h
index 9d3e2af02..cd611b9e9 100644
--- a/src/lib/elm_menu.h
+++ b/src/lib/elm_menu.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Menu Menu
* @ingroup Elementary
*
@@ -9,42 +10,280 @@
* @image latex img/widget/menu/preview-00.eps
*
* A menu is a list of items displayed above its parent. When the menu is
- * showing its parent is darkened. Each item can have a sub-menu. The menu
+ * showing, its parent is darkened. Each item can have a sub-menu. The menu
* object can be used to display a menu on a right click event, in a toolbar,
* anywhere.
*
* Signals that you can add callbacks for are:
- * @li @c "clicked" - the user clicked the empty space in the menu to dismiss.
- * @li @c "dismissed" - the user clicked the empty space in the menu to dismiss (since 1.8)
- * @li @c "language,changed" - the program's language changed (since 1.9)
+ * @li "clicked" - The user clicked the empty space in the menu to dismiss.
*
- * Default content parts of the menu items that you can use for are:
- * @li @c "default" - A main content of the menu item
+ * The default content parts of the menu items that you can use are:
+ * @li "default" - The main content of the menu item.
*
- * Default text parts of the menu items that you can use for are:
- * @li @c "default" - A label in the menu item
+ * The default text parts of the menu items that you can use are:
+ * @li "default" - The label in the menu item.
*
- * Supported elm_object_item common APIs.
- * @li @ref elm_object_item_del
+ * Supported common elm_object_item APIs.
* @li @ref elm_object_item_part_text_set
* @li @ref elm_object_item_part_text_get
* @li @ref elm_object_item_part_content_set
* @li @ref elm_object_item_part_content_get
* @li @ref elm_object_item_disabled_set
* @li @ref elm_object_item_disabled_get
- * @li @ref elm_object_item_signal_emit (since 1.12)
+ * @li @ref elm_object_item_signal_emit
*
- * @see @ref tutorial_menu
* @{
*/
-#include "elm_menu_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_menu_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_menu_legacy.h"
-#endif
+/**
+ * @brief Adds a new menu to the parent.
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @ingroup Menu
+ */
+EAPI Evas_Object *elm_menu_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the parent for the given menu widget.
+ *
+ * @param[in] obj The menu object
+ * @param[in] parent The new parent
+ *
+ * @ingroup Menu
+ */
+EAPI void elm_menu_parent_set(Evas_Object *obj, Evas_Object *parent);
+
+/**
+ * @brief Gets the parent for the given menu widget.
+ *
+ * @param[in] obj The menu object
+ * @return The parent
+ *
+ * @see elm_menu_parent_set()
+ *
+ * @ingroup Menu
+ */
+EAPI Evas_Object *elm_menu_parent_get(const Evas_Object *obj);
+
+/**
+ * @brief Moves the menu to a new position.
+ *
+ * @details This sets the top-left position of the menu to (@a x,@a y).
+ *
+ * @remarks The @a x and @a y coordinates are relative to the parent.
+ *
+ * @param[in] obj The menu object
+ * @param[in] x The new position
+ * @param[in] y The new position
+ *
+ * @ingroup Menu
+ */
+EAPI void elm_menu_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+
+/**
+ * @brief Closes an opened menu.
+ *
+ * @details This hides the menu and all it's sub-menus.
+ *
+ * @param[in] obj The menu object
+ * @return A void value
+ *
+ * @ingroup Menu
+ */
+EAPI void elm_menu_close(Evas_Object *obj);
+
+/**
+ * @brief Gets a list of the @a it items.
+ *
+ * @param[in] obj The menu object
+ * @return An Eina_List* of the @a it items
+ *
+ * @ingroup Menu
+ */
+EAPI const Eina_List *elm_menu_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the Evas_Object of an Elm_Object_Item.
+ *
+ * @remarks Don't manipulate this object.
+ *
+ * @param[in] it The menu item object
+ * @return The edje object containing the swallowed content
+ *
+ * @ingroup Menu
+ */
+EAPI Evas_Object *elm_menu_item_object_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Adds an item at the end of the given menu widget.
+ *
+ * @param[in] obj The menu object
+ * @param[in] parent The parent menu item (optional)
+ * @param[in] icon An icon display on the item \n
+ * The icon is destroyed by the menu.
+ * @param[in] label The label of the item
+ * @param[in] func The function called when the user selects the item
+ * @param[in] data The data sent by the callback
+ * @return The new item
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_item_add(Evas_Object *obj, Elm_Object_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Sets the icon of a menu item to the standard icon with name @a icon.
+ *
+ * @remarks Once this icon is set, any previously set icon is deleted.
+ *
+ * @param[in] it The menu item object
+ * @param[in] icon The name of the icon object to set for the content of @a it
+ *
+ * @ingroup Menu
+ */
+EAPI void elm_menu_item_icon_name_set(Elm_Object_Item *it, const char *icon);
+
+/**
+ * @brief Gets the string representation from the icon of a menu item.
+ *
+ * @param[in] it The menu item object
+ * @return The string representation of the @a it icon, otherwise @c NULL
+ *
+ * @see elm_menu_item_icon_name_set()
+ *
+ * @ingroup Menu
+ */
+EAPI const char *elm_menu_item_icon_name_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the selected state of @a it.
+ *
+ * @param[in] it The menu item object
+ * @param[in] selected The selected/unselected state of the item
+ *
+ * @ingroup Menu
+ */
+EAPI void elm_menu_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * @brief Gets the selected state of @a it.
+ *
+ * @param[in] it The menu item object
+ * @return The selected/unselected state of the item
+ *
+ * @see elm_menu_item_selected_set()
+ *
+ * @ingroup Menu
+ */
+EAPI Eina_Bool elm_menu_item_selected_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Adds a separator item to the menu @a obj under the @a parent.
+ *
+ * @remarks This item is a @ref Separator.
+ *
+ * @param[in] obj The menu object
+ * @param[in] parent The item to add the separator under
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent);
+
+/**
+ * @brief Returns whether @a it is a separator.
+ *
+ * @param[in] it The item to check
+ * @return If @c true @a it is a separator,
+ * otherwise @c false
+ *
+ * @see elm_menu_item_separator_add()
+ *
+ * @ingroup Menu
+ */
+EAPI Eina_Bool elm_menu_item_is_separator(Elm_Object_Item *it);
+
+/**
+ * @brief Returns a list of the @a it subitems.
+ *
+ * @param[in] it The item
+ * @return An Eina_List* of the @a it subitems
+ *
+ * @see elm_menu_add()
+ *
+ * @ingroup Menu
+ */
+EAPI const Eina_List *elm_menu_item_subitems_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the position of a menu item.
+ *
+ * @details This function returns the index position of a menu item in a menu.
+ * For a sub-menu, this number is relative to the first item in the sub-menu.
+ *
+ * @remarks Index values begin with @c 0.
+ *
+ * @param[in] it The menu item
+ * @return The item's index
+ *
+ * @ingroup Menu
+ */
+EAPI unsigned int elm_menu_item_index_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the selected item in the menu.
+ *
+ * @param[in] obj The menu object
+ * @return The selected item, otherwise @c NULL if none are selected
+ *
+ * @see elm_menu_item_selected_get()
+ * @see elm_menu_item_selected_set()
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_selected_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the last item in the menu.
+ *
+ * @param[in] obj The menu object
+ * @return The last item, otherwise @c NULL if none are present
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_last_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the first item in the menu.
+ *
+ * @param[in] obj The menu object
+ * @return The first item, otherwise @c NULL if none are present
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_first_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the next item in the menu.
+ *
+ * @param[in] it The menu item object
+ * @return The item after @a it, otherwise @c NULL if none are present
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_item_next_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the previous item in the menu.
+ *
+ * @param[in] it The menu item object
+ * @return The item before @a it, otherwise @c NULL if none are present
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_item_prev_get(const Elm_Object_Item *it);
+
/**
* @}
*/
diff --git a/src/lib/elm_mirroring.h b/src/lib/elm_mirroring.h
index 815b842d6..df5ed9257 100644
--- a/src/lib/elm_mirroring.h
+++ b/src/lib/elm_mirroring.h
@@ -1,57 +1,58 @@
/**
* @defgroup Mirroring Mirroring
- * @ingroup Elementary
+ * @ingroup elm_infra_group
*
- * These functions allow you to set ui-mirroring on specific
- * widgets or the whole interface. Widgets can be in one of two
- * modes, automatic and manual. Automatic means they'll be changed
- * according to the system mirroring mode and manual means only
- * explicit changes will matter. You are not supposed to change
- * mirroring state of a widget set to automatic, will mostly work,
- * but the behavior is not really defined.
+ * @brief These functions allow you to set UI-mirroring on specific
+ * widgets or the whole interface. Widgets can be in one of the following two
+ * modes, automatic and manual. Automatic means they are changed
+ * according to the system mirroring mode and manual means only
+ * explicit changes matter. You are not supposed to change the
+ * mirroring state of a widget set to automatic, that mostly works,
+ * but the behavior is not really defined.
*
* @{
*/
/**
- * Get the widget's mirrored mode.
+ * @brief Gets the widget's mirrored mode.
*
- * @param obj The widget.
- * @return @c EINA_TRUE if mirrored is set, @c EINA_FALSE otherwise
+ * @since_tizen 2.3
*
- * @ingroup Mirroring
+ * @param[in] obj The widget
+ * @return @c EINA_TRUE if mirrored is set, otherwise @c EINA_FALSE
*/
EAPI Eina_Bool elm_object_mirrored_get(const Evas_Object *obj);
/**
- * Set the widget's mirrored mode.
+ * @brief Sets the widget's mirrored mode.
*
- * @param obj The widget.
- * @param mirrored @c EINA_TRUE to set mirrored mode, @c EINA_FALSE to unset it.
+ * @since_tizen 2.3
*
- * @ingroup Mirroring
+ * @param[in] obj The widget
+ * @param[in] mirrored If @c EINA_TRUE the mirrored mode is set, otherwise @c EINA_FALSE to unset it
*/
EAPI void elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored);
/**
- * Returns the widget's mirrored mode setting.
+ * @brief Gets the widget's mirrored mode setting.
*
- * @param obj The widget.
- * @return mirrored mode setting of the object.
+ * @since_tizen 2.3
*
- * @ingroup Mirroring
+ * @param[in] obj The widget
+ * @return The mirrored mode setting of the object
*/
EAPI Eina_Bool elm_object_mirrored_automatic_get(const Evas_Object *obj);
/**
- * Sets the widget's mirrored mode setting.
- * When widget in automatic mode, it follows the system mirrored mode set by
- * elm_mirrored_set().
- * @param obj The widget.
- * @param automatic @c EINA_TRUE for auto mirrored mode. @c EINA_FALSE for
- * manual.
- *
- * @ingroup Mirroring
+ * @brief Sets the widget's mirrored mode setting.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When the widget is in the automatic mode, it follows the system mirrored mode set by
+ * elm_mirrored_set().
+ *
+ * @param[in] obj The widget
+ * @param[in] automatic If @c EINA_TRUE the auto mirrored mode is set, otherwise @c EINA_FALSE for manual
*/
EAPI void elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic);
diff --git a/src/lib/elm_need.h b/src/lib/elm_need.h
index 6f2e89be4..b7bdba248 100644
--- a/src/lib/elm_need.h
+++ b/src/lib/elm_need.h
@@ -1,109 +1,61 @@
/**
- * Request that your elementary application needs Efreet
+ * @internal
+ * @brief Requests that your elementary application needs Efreet.
*
- * This initializes the Efreet library when called and if support exists
- * it returns @c EINA_TRUE, otherwise returns @c EINA_FALSE. This must be called
- * before any efreet calls.
+ * @details This initializes the Efreet library when called and if support exists
+ * it returns @c EINA_TRUE, otherwise it returns @c EINA_FALSE. This must be called
+ * before any efreet calls.
*
- * @return @c EINA_TRUE if support exists and initialization succeeded.
+ * @since_tizen 2.3
+ *
+ * @return @c EINA_TRUE if support exists and initialization succeeds,
+ * otherwise @c EINA_FALSE
*
* @ingroup Efreet
*/
EAPI Eina_Bool elm_need_efreet(void);
/**
- * Request that your elementary application needs Elm_Systray
- *
- * This initializes the Elm_Systray when called and, if support exists,
- * returns @c EINA_TRUE, otherwise returns @c EINA_FALSE. This must be called
- * before any elm_systray calls.
- *
- * @return @c EINA_TRUE if support exists and initialization succeeded.
- *
- * @ingroup Elm_Systray
- * @since 1.8
- */
-EAPI Eina_Bool elm_need_systray(void);
-
-/**
- * Request that your elementary application needs Elm_Sys_Notify
+ * @internal
*
- * This initializes the Elm_Sys_Notify when called and if support exists
- * it returns @c EINA_TRUE, otherwise returns @c EINA_FALSE. This must be called
- * before any elm_sys_notify calls.
+ * @brief Requests that your elementary application needs e_dbus.
*
- * @return @c EINA_TRUE if support exists and initialization succeeded.
+ * @details This initializes the E_dbus library when called and if support exists
+ * it returns @c EINA_TRUE, otherwise it returns @c EINA_FALSE. This must be called
+ * before any e_dbus calls.
*
- * @ingroup Elm_Sys_Notify
- * @since 1.8
- */
-EAPI Eina_Bool elm_need_sys_notify(void);
-
-/**
- * Request that your elementary application needs e_dbus
- *
- * This initializes the E_dbus library when called and if support exists
- * it returns @c EINA_TRUE, otherwise returns @c EINA_FALSE. This must be called
- * before any e_dbus calls.
- *
- * @return @c EINA_TRUE if support exists and initialization succeeded.
- *
- * @deprecated use elm_need_eldbus() for Eldbus (v2) support. Old API is
- * deprecated.
+ * @return @c EINA_TRUE if support exists and initialization succeeds,
+ * otherwise @c EINA_FALSE
*
* @ingroup E_dbus
*/
-EAPI Eina_Bool elm_need_e_dbus(void) EINA_DEPRECATED;
+EAPI Eina_Bool elm_need_e_dbus(void);
/**
- * Request that your elementary application needs eldbus
- *
- * This initializes the eldbus (aka v2) library when called and if
- * support exists it returns @c EINA_TRUE, otherwise returns
- * @c EINA_FALSE. This must be called before any eldbus calls.
+ * @internal
+ * @brief Requests that your elementary application needs ethumb.
*
- * @return @c EINA_TRUE if support exists and initialization succeeded.
+ * @details This initializes the Ethumb library when called and if support exists
+ * it returns @c EINA_TRUE, otherwise it returns @c EINA_FALSE.
+ * This must be called before any other function that deals with
+ * elm_thumb objects or ethumb_client instances is called.
*
- * @since 1.8.0
- *
- * @ingroup eldbus
- */
-EAPI Eina_Bool elm_need_eldbus(void);
-
-/**
- * Request that your elementary application needs elocation
- *
- * This initializes the elocation library when called and if
- * support exists it returns @c EINA_TRUE, otherwise returns
- * @c EINA_FALSE. This must be called before any elocation usage.
- *
- * @return @c EINA_TRUE if support exists and initialization succeeded.
- *
- * @since 1.8.0
- *
- * @ingroup eldbus
- */
-EAPI Eina_Bool elm_need_elocation(void);
-
-/**
- * Request that your elementary application needs ethumb
- *
- * This initializes the Ethumb library when called and if support exists
- * it returns @c EINA_TRUE, otherwise returns @c EINA_FALSE.
- * This must be called before any other function that deals with
- * elm_thumb objects or ethumb_client instances.
+ * @since_tizen 2.3
*
* @ingroup Thumb
*/
EAPI Eina_Bool elm_need_ethumb(void);
/**
- * Request that your elementary application needs web support
+ * @internal
+ * @brief Requests that your elementary application needs web support.
+ *
+ * @details This initializes the Ewebkit library when called and if support exists
+ * it returns @c EINA_TRUE, otherwise it returns @c EINA_FALSE.
+ * This must be called before any other function that deals with
+ * elm_web objects or ewk_view instances is called.
*
- * This initializes the Ewebkit library when called and if support exists
- * it returns @c EINA_TRUE, otherwise returns @c EINA_FALSE.
- * This must be called before any other function that deals with
- * elm_web objects or ewk_view instances.
+ * @since_tizen 2.3
*
* @ingroup Web
*/
diff --git a/src/lib/elm_notify.h b/src/lib/elm_notify.h
index 170198f48..929d4c8ca 100644
--- a/src/lib/elm_notify.h
+++ b/src/lib/elm_notify.h
@@ -1,44 +1,165 @@
/**
* @defgroup Notify Notify
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html notify_inheritance_tree.png
* @image latex notify_inheritance_tree.eps
*
- * @image html img/widget/notify/preview-00.png
- * @image latex img/widget/notify/preview-00.eps
+ * @brief Display a container in a particular region of the parent(top, bottom,
+ * etc).
*
- * Display a container in a particular region of the parent(top, bottom,
- * etc). A timeout can be set to automatically hide the notify. This is so
- * that, after an evas_object_show() on a notify object, if a timeout was set
- * on it, it will @b automatically get hidden after that time.
+ * A timeout can be set to automatically hide the notify widget. This is so
+ * that, after an evas_object_show() on a notify object, if a timeout is set
+ * on it, it @b automatically gets hidden after that time.
*
* Signals that you can add callbacks for are:
- * @li "timeout" - when timeout happens on notify and it's hidden
- * @li "block,clicked" - when a click outside of the notify happens
+ * @li "timeout" - When timeout happens on a notification and it's hidden.
+ * @li "block,clicked" - When a click outside of the notification happens.
*
- * This widget inherits from @ref elm-container-class, so that the
- * functions meant to act on it will wor work for mapbuf objects:
+ * The functions meant to act on it work for mapbuf objects:
*
* @li @ref elm_object_part_content_set
* @li @ref elm_object_part_content_get
* @li @ref elm_object_part_content_unset
*
- * Default content parts of the notify widget that you can use are:
- * @li @c "default" - The main content of the notify
- *
- * @ref tutorial_notify show usage of the API.
+ * The default content parts of the notify widget that you can use are:
+ * @li @c "default" - The main content of the notify widget.
*
* @{
*/
-#include <elm_notify_common.h>
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_notify_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_notify_legacy.h>
-#endif
+#define ELM_NOTIFY_ALIGN_FILL -1.0 /**< Use with elm_notify_align_set() @since 1.8 */
+
+/**
+ * @brief Adds a new notify widget to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_notify_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the notify parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once the parent object is set, a previously set one is disconnected
+ * and replaced.
+ *
+ * @param[in] obj The notify object
+ * @param[in] parent The new parent
+ */
+EAPI void elm_notify_parent_set(Evas_Object *obj, Evas_Object *parent);
+
+/**
+ * @brief Gets the notify parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The notify object
+ * @return The parent
+ *
+ * @see elm_notify_parent_set()
+ */
+EAPI Evas_Object *elm_notify_parent_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the time interval after which the notify window is going to be
+ * hidden.
+ *
+ * @details This function sets a timeout and starts the timer controlling when the
+ * notification is hidden. Since calling evas_object_show() on a notification restarts
+ * the timer controlling when the notification is hidden, setting this before the
+ * notification is shown means starting the timer when the notification is
+ * shown.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Set a value <= @c 0.0 to disable a running timer.
+ *
+ * @remarks If the value > @c 0.0 and the notification is previously visible, the
+ * timer is started with this value, cancelling any running timer.
+ *
+ * @param[in] obj The notify object
+ * @param[in] timeout The timeout in seconds
+ */
+EAPI void elm_notify_timeout_set(Evas_Object *obj, double timeout);
+
+/**
+ * @brief Gets the timeout value (in seconds).
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The notify object
+ * @return The timeout in seconds
+ *
+ * @see elm_notify_timeout_set()
+ */
+EAPI double elm_notify_timeout_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether events should be passed by a click outside
+ * its area.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When @c true if the user clicks outside the window the events are caught
+ * by the other widgets, else the events are blocked.
+ *
+ * @remarks The default value is @c EINA_TRUE.
+ *
+ * @param[in] obj The notify object
+ * @param[in] allow If @c EINA_TRUE events are allowed,
+ * otherwise @c EINA_FALSE if they are not
+ */
+EAPI void elm_notify_allow_events_set(Evas_Object *obj, Eina_Bool allow);
+
+/**
+ * @brief Gets true if events are allowed below the notify object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The notify object
+ * @return #EINA_TRUE if events are allowed, otherwise #EINA_FALSE.
+ *
+ * @see elm_notify_allow_events_set()
+ */
+EAPI Eina_Bool elm_notify_allow_events_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the alignment of the notify object.
+ *
+ * @details This sets the alignment in which the notify appears in its parent.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks To fill the notify box in the parent area, pass the
+ * @c ELM_NOTIFY_ALIGN_FILL to @a horizontal, @a vertical.
+ *
+ * @param[in] obj The notify object
+ * @param[in] horizontal The horizontal alignment of the notification
+ * @param[in] vertical The vertical alignment of the notification
+ */
+EAPI void elm_notify_align_set(Evas_Object *obj, double horizontal, double vertical);
+
+/**
+ * @brief Gets the alignment of the notify object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The notify object
+ * @param[out] horizontal The horizontal alignment of the notification
+ * @param[out] vertical The vertical alignment of the notification
+ *
+ * @see elm_notify_align_set()
+ */
+EAPI void elm_notify_align_get(const Evas_Object *obj, double *horizontal, double *vertical);
/**
* @}
diff --git a/src/lib/elm_object.h b/src/lib/elm_object.h
index 2efb3e246..546dfcd4b 100644
--- a/src/lib/elm_object.h
+++ b/src/lib/elm_object.h
@@ -1,202 +1,347 @@
/**
- * Set a text of an object
+ * @brief Sets the text of an object.
*
- * @param obj The Elementary object
- * @param part The text part name to set (NULL for the default part)
- * @param text The new text of the part
+ * @since_tizen 2.3
+ *
+ * @remarks Elementary objects may have many text parts (e.g. Action Slider).
*
- * @note Elementary objects may have many text parts (e.g. Action Slider)
+ * @param[in] obj The Elementary object
+ * @param[in] part The text part name to set (@c NULL for the default part)
+ * @param[in] text The new text of the part
*
* @ingroup General
*/
EAPI void elm_object_part_text_set(Evas_Object *obj, const char *part, const char *text);
+/**
+ * @def elm_object_text_set
+ * @brief Convenient macro for elm_object_part_text_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_part_text_set
+ * @ingroup General
+ */
#define elm_object_text_set(obj, text) elm_object_part_text_set((obj), NULL, (text))
/**
- * Get a text of an object
+ * @brief Gets the text of an object.
*
- * @param obj The Elementary object
- * @param part The text part name to get (NULL for the default part)
- * @return text of the part or NULL for any error
+ * @since_tizen 2.3
+ *
+ * @remarks Elementary objects may have many text parts (e.g. Action Slider).
*
- * @note Elementary objects may have many text parts (e.g. Action Slider)
+ * @param[in] obj The Elementary object
+ * @param[in] part The text part name to get (@c NULL for the default part)
+ * @return The text of the part, otherwise @c NULL for any error
*
* @ingroup General
*/
EAPI const char *elm_object_part_text_get(const Evas_Object *obj, const char *part);
+/**
+ * @def elm_object_text_get
+ * @brief Convenient macro for elm_object_part_text_get
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_part_text_get
+ * @ingroup General
+ */
#define elm_object_text_get(obj) elm_object_part_text_get((obj), NULL)
/**
- * Set the text for an object's part, marking it as translatable.
+ * @brief Sets the text for an object's part, marking it translatable.
*
- * The string to set as @p text must be the original one. Do not pass the
- * return of @c gettext() here. Elementary will translate the string
- * internally and set it on the object using elm_object_part_text_set(),
- * also storing the original string so that it can be automatically
- * translated when the language is changed with elm_language_set().
+ * @since 1.8
*
- * The @p domain will be stored along to find the translation in the
- * correct catalog. It can be NULL, in which case it will use whatever
- * domain was set by the application with @c textdomain(). This is useful
- * in case you are building a library on top of Elementary that will have
- * its own translatable strings, that should not be mixed with those of
- * programs using the library.
+ * @since_tizen 2.3
*
- * @param obj The object containing the text part
- * @param part The name of the part to set
- * @param domain The translation domain to use
- * @param text The original, non-translated text to set
+ * @remarks The string to set as @a text must be the original one. Do not pass the
+ * return of gettext() here. Elementary translates the string
+ * internally and sets it on the object using elm_object_part_text_set(),
+ * also stores the original string so that it can be automatically
+ * translated when the language is changed with elm_language_set().
*
- * @since 1.8
+ * @remarks The @a domain is also stored to find the translation in the
+ * correct catalog. It can be @c NULL, in which case it uses whatever
+ * domain is set by the application with textdomain(). This is useful
+ * in case you are building a library on top of Elementary that has
+ * its own translatable strings, that should not be mixed with those of
+ * programs using the library.
+ *
+ * @param[in] obj The object containing the text part
+ * @param[in] part The name of the part to set
+ * @param[in] domain The translation domain to use
+ * @param[in] text The original, non-translated text to set
*
* @ingroup General
*/
EAPI void elm_object_domain_translatable_part_text_set(Evas_Object *obj, const char *part, const char *domain, const char *text);
+/**
+ * @def elm_object_domain_translatable_text_set
+ * @brief Convenient macro for elm_object_domain_translatable_part_text_set.
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_domain_translatable_part_text_set
+ * @ingroup General
+ */
#define elm_object_domain_translatable_text_set(obj, domain, text) elm_object_domain_translatable_part_text_set((obj), NULL, (domain), (text))
+/**
+ * @def elm_object_translatable_text_set
+ * @brief Convenient macro for elm_object_domain_translatable_part_text_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_domain_translatable_part_text_set
+ * @ingroup General
+ */
#define elm_object_translatable_text_set(obj, text) elm_object_domain_translatable_part_text_set((obj), NULL, NULL, (text))
+/**
+ * @def elm_object_translatable_part_text_set
+ * @brief Convenient macro for elm_object_domain_translatable_part_text_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_domain_translatable_part_text_set
+ * @ingroup General
+ */
#define elm_object_translatable_part_text_set(obj, part, text) elm_object_domain_translatable_part_text_set((obj), (part), NULL, (text))
/**
- * Get the original string set as translatable for an object
+ * @brief Gets the original string set as translatable for an object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
*
- * When setting translated strings, the function elm_object_part_text_get()
- * will return the translation returned by @c gettext(). To get the
- * original string use this function.
+ * @remarks When setting translated strings, the function elm_object_part_text_get()
+ * returns the translation returned by gettext(). To get the
+ * original string use this function.
*
- * @param obj The object
- * @param part The name of the part that was set
+ * @param[in] obj The object
+ * @param[in] part The name of the part that is set
*
* @return The original, untranslated string
*
* @see elm_object_translatable_part_text_set()
*
- * @since 1.8
- *
* @ingroup General
*/
EAPI const char *elm_object_translatable_part_text_get(const Evas_Object *obj, const char *part);
+/**
+ * @def elm_object_translatable_text_get
+ * @brief Convenient macro for elm_object_translatable_part_text_get
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_translatable_part_text_get
+ * @ingroup General
+ */
#define elm_object_translatable_text_get(obj) elm_object_translatable_part_text_get((obj), NULL)
/**
- * Mark the part text to be translatable or not.
+ * @brief Marks the part text to be transltable.
+ *
+ * @since 1.8
*
- * Once you mark the part text to be translatable, the text will be translated
- * internally regardless of elm_object_part_text_set() and
- * elm_object_domain_translatable_part_text_set(). In other case, if you set the
- * Elementary policy that all text will be translatable in default, you can set
- * the part text to not be translated by calling this API.
+ * @since_tizen 2.3
*
- * @param obj The object containing the text part
- * @param part The part name of the translatable text
- * @param domain The translation domain to use
- * @param translatable @c EINA_TRUE, the part text will be translated
- * internally. @c EINA_FALSE, otherwise.
+ * @remarks Once you mark the part text to be translatable, the text is translated
+ * internally regardless of elm_object_part_text_set() and
+ * elm_object_domain_translatable_part_text_set(). In other cases, if you set the
+ * Elementary policy that all text should be translatable by default, you can set
+ * the part text to not be translated by calling this API.
*
- * @see elm_object_domain_translatable_part_text_set()
+ * @param[in] obj The object containing the text part
+ * @param[in] part The part name of the translatable text
+ * @param[in] domain The translation domain to use
+ * @param[in] translatable If @c EINA_TRUE the part text is translated internally, otherwise @c EINA_FALSE
+ *
+ * @see elm_object_domain_part_text_translatable_set()
* @see elm_object_part_text_set()
* @see elm_policy()
*
- * @since 1.8
- *
* @ingroup General
*/
EAPI void elm_object_domain_part_text_translatable_set(Evas_Object *obj, const char *part, const char *domain, Eina_Bool translatable);
+/**
+ * @def elm_object_part_text_translatable_set
+ * @brief Convenient macro for elm_object_domain_part_text_translatable_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_domain_part_text_translatable_set
+ * @ingroup General
+ */
#define elm_object_part_text_translatable_set(obj, part, translatable) elm_object_domain_part_text_translatable_set((obj), (part), NULL, (translatable))
+/**
+ * @def elm_object_domain_text_translatable_set
+ * @brief Convenient macro for elm_object_domain_part_text_translatable_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_domain_part_text_translatable_set
+ * @ingroup General
+ */
#define elm_object_domain_text_translatable_set(obj, domain, translatable) elm_object_domain_part_text_translatable_set((obj), NULL, (domain), (translatable))
+
/**
- * Set the content on part of a given container widget
+ * @brief Sets the content at a part of a given container widget.
+ *
+ * @since_tizen 2.3
*
- * @param obj The Elementary container widget
- * @param part The container's part name to set (some might accept
- * @c NULL for the default part)
- * @param content The new content for that part
+ * @remarks All widgets deriving from elm-container-class may hold
+ * child objects as content at given parts. This sets new content to
+ * a given part. If any object is already set as a content object in
+ * the same part, the previous object is deleted automatically
+ * with this call. If you wish to preserve it, issue
+ * elm_object_part_content_unset() on it first.
*
- * All widgets deriving from the @ref elm-container-class may hold
- * child objects as content at given parts. This sets new content to
- * a given part. If any object was already set as a content object in
- * the same part, the previous object will be deleted automatically
- * with this call. If the @p content is NULL, this call will just delete the
- * previous object. If the If you wish to preserve it, issue
- * elm_object_part_content_unset() on it first.
+ * @param[in] obj The Elementary container widget
+ * @param[in] part The container's part name to set (some might accept
+ * @c NULL for the default part)
+ * @param[in] content The new content for that part
*
- * @see elm_object_part_content_get()
+ * @see elm_object_part_content_set()
*
* @ingroup General
*/
EAPI void elm_object_part_content_set(Evas_Object *obj, const char *part, Evas_Object *content);
+/**
+ * @def elm_object_content_set
+ * @brief Convenient macro for elm_object_part_content_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_part_content_set
+ * @ingroup General
+ */
#define elm_object_content_set(obj, content) elm_object_part_content_set((obj), NULL, (content))
/**
- * Get the content on a part of a given container widget
+ * @brief Gets the content at a part of a given container widget.
+ *
+ * @since_tizen 2.3
*
- * @param obj The Elementary container widget
- * @param part The container's part name to get (some might accept
- * @c NULL for the default part)
- * @return content of the object at the given part or @c NULL, on
- * errors
+ * @param[in] obj The Elementary container widget
+ * @param[in] part The container's part name to get (some might accept
+ * @c NULL for the default part)
+ * @return The content of the object at the given part, otherwise @c NULL in case of an error
*
- * @see elm_object_part_content_set() for more details
+ * @see elm_object_part_content_set()
*
* @ingroup General
*/
EAPI Evas_Object *elm_object_part_content_get(const Evas_Object *obj, const char *part);
+/**
+ * @def elm_object_content_get
+ * @brief Convenient macro for elm_object_part_content_get
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_part_content_get
+ * @ingroup General
+ */
#define elm_object_content_get(obj) elm_object_part_content_get((obj), NULL)
/**
- * Unset the content on a part of a given container widget
+ * @brief Unsets the content at a part of a given container widget.
+ *
+ * @since_tizen 2.3
*
- * @param obj The Elementary container widget
- * @param part The container's part name to unset (some might accept
- * @c NULL for the default part)
- * @return content of the object at the given part or @c NULL, on
- * errors
+ * @param[in] obj The Elementary container widget
+ * @param[in] part The container's part name to unset (some might accept
+ * @c NULL for the default part)
+ * @return The content of the object at the given part, otherwise @c NULL in case of an error
*
- * @see elm_object_part_content_set() for more details
+ * @see elm_object_part_content_set()
*
* @ingroup General
*/
EAPI Evas_Object *elm_object_part_content_unset(Evas_Object *obj, const char *part);
+/**
+ * @def elm_object_content_unset
+ * @brief Convenient macro for elm_object_part_content_unset
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_part_content_unset
+ * @ingroup General
+ */
#define elm_object_content_unset(obj) elm_object_part_content_unset((obj), NULL)
/**
- * Set the text to read out when in accessibility mode
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Registers a part of an object as an access object.
+ * @since 1.8
+ *
+ * @param obj The Elementary object
+ * @param part The object's part name to register
+ *
+ * @ingroup General
+ */
+EAPI Evas_Object * elm_object_part_access_register(Evas_Object *obj, const char *part);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Get the access object which is registered to part
+ * @since 1.8
+ *
+ * @param obj The Elementary object
+ * @param part The object's part name to get access object
+ *
+ * @ingroup General
+ */
+EAPI Evas_Object * elm_object_part_access_object_get(const Evas_Object *obj, const char *part);
+
+
+/**
+ * @brief Sets the text to read out when in the accessibility mode.
*
- * @param obj The object which is to be described
- * @param txt The text that describes the widget to people with poor or no vision
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object which is to be described
+ * @param[in] txt The text that describes the widget to people with poor or no vision
*
* @ingroup General
*/
EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt);
/**
- * Get a named object from the children
+ * @brief Gets a named object from the children.
+ *
+ * @details This function searches the children (or recursively children of
+ * children and so on) of the given @a obj object looking for a child with
+ * the name of @a name. If the child is found the object is returned, or
+ * @c NULL is returned. You can set the name of an object with
+ * evas_object_name_set(). If the name is not unique within the child
+ * objects (or the tree is @a recurse or is greater than @c 0) then it is
+ * undefined as to which child of that name is returned, so ensure that the name
+ * is unique amongst children. If recurse is set to @c -1 it recurses
+ * without limit.
*
- * @param obj The parent object whose children to look at
- * @param name The name of the child to find
- * @param recurse Set to the maximum number of levels to recurse (0 == none, 1 is only look at 1 level of children etc.)
- * @return The found object of that name, or NULL if none is found
+ * @since_tizen 2.3
*
- * This function searches the children (or recursively children of
- * children and so on) of the given @p obj object looking for a child with
- * the name of @p name. If the child is found the object is returned, or
- * NULL is returned. You can set the name of an object with
- * evas_object_name_set(). If the name is not unique within the child
- * objects (or the tree is @p recurse is greater than 0) then it is
- * undefined as to which child of that name is returned, so ensure the name
- * is unique amongst children. If recurse is set to -1 it will recurse
- * without limit.
+ * @param[in] obj The parent object whose children to look at
+ * @param[in] name The name of the child to find
+ * @param[in] recurse Set to the maximum number of levels to recurse (@c 0 == none, @c 1 is only to look at one level of children and so on)
+ * @return The found object of that name, otherwise @c NULL if none are found
*
* @ingroup General
*/
@@ -204,246 +349,266 @@ EAPI Evas_Object *elm_object_name_find(const Evas_Object *obj, c
/**
* @defgroup Styles Styles
+ * @ingroup elm_infra_group
*
- * Widgets can have different styles of look. These generic API's
- * set styles of widgets, if they support them (and if the theme(s)
- * do).
+ * @brief Widgets can have different visual styles. These generic API
+ * set styles of widgets, they support them (and the theme(s)
+ * do).
*
- * @ref general_functions_example_page "This" example contemplates
- * some of these functions.
+ * @{
*/
/**
- * Set the style to used by a given widget
+ * @brief Sets the style to be used by a given widget.
*
- * @param obj The Elementary widget to style
- * @param style The name of the style to use on it
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ * @details This sets the style (by name) that defines the appearance of a
+ * widget. Styles vary from widget to widget and may also be defined
+ * by other themes by means of extensions and overlays.
*
- * This sets the style (by name) that will define the appearance of a
- * widget. Styles vary from widget to widget and may also be defined
- * by other themes by means of extensions and overlays.
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Elementary widget to style
+ * @param[in] style The name of the style to use on it
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE
*
* @see elm_theme_extension_add()
* @see elm_theme_extension_del()
* @see elm_theme_overlay_add()
* @see elm_theme_overlay_del()
- *
- * @ingroup Styles
*/
EAPI Eina_Bool elm_object_style_set(Evas_Object *obj, const char *style);
/**
- * Get the style used by the widget
+ * @brief Gets the style used by the widget.
*
- * This gets the style being used for that widget. Note that the string
- * pointer is only valid as long as the object is valid and the style doesn't
- * change.
+ * @details This gets the style being used for that widget. Note that the string
+ * pointer is only valid as long as the object is valid and the style doesn't
+ * change.
*
- * @param obj The Elementary widget to query for its style
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Elementary widget to query for its style
* @return The style name used
*
* @see elm_object_style_set()
- *
- * @ingroup Styles
*/
EAPI const char *elm_object_style_get(const Evas_Object *obj);
/**
- * Set the disabled state of an Elementary object.
+ * @}
+ */
+
+/**
+ * @brief Sets the disabled state of an Elementary object.
*
- * @param obj The Elementary object to operate on
- * @param disabled The state to put in in: @c EINA_TRUE for
- * disabled, @c EINA_FALSE for enabled
+ * @since_tizen 2.3
*
- * Elementary objects can be @b disabled, in which state they won't
- * receive input and, in general, will be themed differently from
- * their normal state, usually greyed out. Useful for contexts
- * where you don't want your users to interact with some of the
- * parts of you interface.
+ * @remarks Elementary objects can be @b disabled, in which state they won't
+ * receive input and, in general, get themed differently from
+ * their normal state, usually greyed out. Useful for contexts
+ * where you don't want your users to interact with some of the
+ * parts of your interface.
*
- * This sets the state for the widget, either disabling it or
- * enabling it back.
+ * @remarks This sets the state for the widget, either disabling it or
+ * enabling it back.
*
+ * @param[in] obj The Elementary object to operate on
+ * @param[in] disabled If @c EINA_TRUE that state is disabled,
+ * otherwise @c EINA_FALSE if it is enabled
* @ingroup General
*/
EAPI void elm_object_disabled_set(Evas_Object *obj, Eina_Bool disabled);
/**
- * Get the disabled state of an Elementary object.
+ * @brief Gets the disabled state of an Elementary object.
*
- * @param obj The Elementary object to operate on
- * @return @c EINA_TRUE, if the widget is disabled, @c EINA_FALSE
- * if it's enabled (or on errors)
+ * @details This gets the state of the widget, which might be enabled or disabled.
*
- * This gets the state of the widget, which might be enabled or disabled.
+ * @since_tizen 2.3
*
+ * @param[in] obj The Elementary object to operate on
+ * @return @c EINA_TRUE if the widget is disabled, otherwise @c EINA_FALSE
+ * if it's enabled (or on errors)
* @ingroup General
*/
EAPI Eina_Bool elm_object_disabled_get(const Evas_Object *obj);
/**
* @defgroup WidgetNavigation Widget Tree Navigation
+ * @ingroup elm_infra_group
+ *
+ * @brief These functions provide checks on whether a Evas_Object is an Elementary widget,
+ * the possibility of getting a widget's parent, top level parent, and getting a
+ * string representation of a widget's type.
*
- * These functions provide checks for if a Evas_Object is an Elementary widget,
- * the possibility of getting a widget's parent, top level parent and getting a
- * string representation of a widget's type.
+ * @{
*/
/**
- * Check if the given Evas Object is an Elementary widget.
+ * @brief Checks whether the given Evas Object is an Elementary widget.
+ *
+ * @since_tizen 2.3
*
- * @param obj the object to query.
+ * @param[in] obj The object to query
* @return @c EINA_TRUE if it is an elementary widget variant,
- * @c EINA_FALSE otherwise
- * @ingroup WidgetNavigation
+ * otherwise @c EINA_FALSE
*/
EAPI Eina_Bool elm_object_widget_check(const Evas_Object *obj);
/**
- * Get the first parent of the given object that is an Elementary
- * widget.
+ * @brief Gets the first parent of the given object that is an Elementary
+ * widget.
*
- * @param obj the Elementary object to query parent from.
- * @return the parent object that is an Elementary widget, or @c
- * NULL, if it was not found.
+ * @since_tizen 2.3
*
- * Use this to query for an object's parent widget.
+ * @remarks Use this to query an object's parent widget.
*
- * @note Most of Elementary users wouldn't be mixing non-Elementary
- * smart objects in the objects tree of an application, as this is
- * an advanced usage of Elementary with Evas. So, except for the
- * application's window, which is the root of that tree, all other
- * objects would have valid Elementary widget parents.
+ * @remarks Most of the Elementary users don't mix non-Elementary
+ * smart objects in the objects tree of an application, as this is
+ * an advanced usage of Elementary with Evas. So, except for the
+ * application's window, which is the root of that tree, all other
+ * objects have valid Elementary widget parents.
*
- * @ingroup WidgetNavigation
+ * @param[in] obj The Elementary object to query the parent from
+ * @return The parent object that is an Elementary widget,
+ * otherwise @c NULL if it is not found
*/
EAPI Evas_Object *elm_object_parent_widget_get(const Evas_Object *obj);
/**
- * Get the top level parent of an Elementary widget.
+ * @brief Gets the top level parent of an Elementary widget.
*
- * @param obj The object to query.
- * @return The top level Elementary widget, or @c NULL if parent cannot be
- * found.
- * @ingroup WidgetNavigation
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object to query
+ * @return The top level Elementary widget, otherwise @c NULL if the parent cannot be found
*/
EAPI Evas_Object *elm_object_top_widget_get(const Evas_Object *obj);
/**
- * Get the string that represents this Elementary widget.
+ * @brief Gets the string that represents this Elementary widget.
+ *
+ * @since_tizen 2.3
*
- * @note Elementary is weird and exposes itself as a single
- * Evas_Object_Smart_Class of type "elm_widget", so
- * evas_object_type_get() always return that, making debug and
- * language bindings hard. This function tries to mitigate this
- * problem, but the solution is to change Elementary to use
- * proper inheritance.
+ * @remarks Elementary is weird and exposes itself as a single
+ * Evas_Object_Smart_Class of type "elm_widget", so
+ * evas_object_type_get() always returns that, making debug and
+ * language bindings hard. This function tries to mitigate this
+ * problem, but the solution is to change Elementary to use
+ * proper inheritance.
*
- * @param obj the object to query.
- * @return Elementary widget name, or @c NULL if not a valid widget.
- * @ingroup WidgetNavigation
+ * @param[in] obj The object to query
+ * @return The Elementary widget name, otherwise @c NULL if it is not a valid widget
*/
EAPI const char *elm_object_widget_type_get(const Evas_Object *obj);
/**
- * Send a signal to the widget edje object.
+ * @}
+ */
+
+/**
+ * @brief Sends a signal to the widget edje object.
+ *
+ * @details This function sends a signal to the edje object of the @a obj. An
+ * edje program can respond to a signal by specifying matching
+ * 'signal' and 'source' fields.
*
- * This function sends a signal to the edje object of the obj. An
- * edje program can respond to a signal by specifying matching
- * 'signal' and 'source' fields.
+ * @since_tizen 2.3
*
- * @param obj The object
- * @param emission The signal's name.
- * @param source The signal's source.
+ * @param[in] obj The object
+ * @param[in] emission The signal name
+ * @param[in] source The signal source
* @ingroup General
*/
EAPI void elm_object_signal_emit(Evas_Object *obj, const char *emission, const char *source);
/**
- * Add a callback for a signal emitted by widget edje object.
+ * @brief Adds a callback for a signal emitted by the widget edje object.
*
- * This function connects a callback function to a signal emitted by the
- * edje object of the obj.
- * Globs can occur in either the emission or source name.
+ * @details This function connects a callback function to a signal emitted by the
+ * edje object of the @a obj.
+ * Globs can occur in either the emission or source name.
*
- * @param obj The object
- * @param emission The signal's name.
- * @param source The signal's source.
- * @param func The callback function to be executed when the signal is
- * emitted.
- * @param data A pointer to data to pass to the callback function.
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object
+ * @param[in] emission The signal name
+ * @param[in] source The signal source
+ * @param[in] func The callback function to be executed when the signal is emitted
+ * @param[in] data A pointer to the data to pass to the callback function
* @ingroup General
*/
EAPI void elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
/**
- * Remove a signal-triggered callback from a widget edje object.
+ * @brief Removes a signal-triggered callback from a widget edje object.
+ *
+ * @details This function removes the @b last callback, previously attached to
+ * a signal emitted by an underlying Edje object of @a obj, whose
+ * parameters @a emission, @a source, and @c func match exactly with
+ * those passed to a previous call to
+ * elm_object_signal_callback_add(). The data pointer that is passed
+ * to this call is returned.
*
- * @param obj The object handle
- * @param emission The signal's name.
- * @param source The signal's source.
- * @param func The callback function to be executed when the signal is
- * emitted.
- * @return The data pointer of the signal callback or @c NULL, on
- * errors.
+ * @since_tizen 2.3
*
- * This function removes the @b last callback, previously attached to
- * a signal emitted by an underlying Edje object of @a obj, whose
- * parameters @a emission, @a source and @c func match exactly with
- * those passed to a previous call to
- * elm_object_signal_callback_add(). The data pointer that was passed
- * to this call will be returned.
+ * @param[in] obj The object handle
+ * @param[in] emission The signal name
+ * @param[in] source The signal source
+ * @param[in] func The callback function to be executed when the signal is emitted
+ * @return The data pointer of the signal callback, otherwise @c NULL in case of an error
*
* @ingroup General
*/
EAPI void *elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
/**
- * Add a callback for input events (key up, key down, mouse wheel)
- * on a given Elementary widget
- *
- * @param obj The widget to add an event callback on
- * @param func The callback function to be executed when the event
- * happens
- * @param data Data to pass in to @p func
- *
- * Every widget in an Elementary interface set to receive focus,
- * with elm_object_focus_allow_set(), will propagate @b all of its
- * key up, key down and mouse wheel input events up to its parent
- * object, and so on. All of the focusable ones in this chain which
- * had an event callback set, with this call, will be able to treat
- * those events. There are two ways of making the propagation of
- * these event upwards in the tree of widgets to @b cease:
- * - Just return @c EINA_TRUE on @p func. @c EINA_FALSE will mean
- * the event was @b not processed, so the propagation will go on.
- * - The @p event_info pointer passed to @p func will contain the
- * event's structure and, if you OR its @c event_flags inner
- * value to @c EVAS_EVENT_FLAG_ON_HOLD, you're telling Elementary
- * one has already handled it, thus killing the event's
- * propagation, too.
- *
- * @note Your event callback will be issued on those events taking
- * place only if no other child widget of @p obj has consumed the
- * event already.
- *
- * @note Not to be confused with @c
- * evas_object_event_callback_add(), which will add event callbacks
- * per type on general Evas objects (no event propagation
- * infrastructure taken in account).
- *
- * @note Not to be confused with @c
- * elm_object_signal_callback_add(), which will add callbacks to @b
- * signals coming from a widget's theme, not input events.
- *
- * @note Not to be confused with @c
- * edje_object_signal_callback_add(), which does the same as
- * elm_object_signal_callback_add(), but directly on an Edje
- * object.
- *
- * @note Not to be confused with @c
- * evas_object_smart_callback_add(), which adds callbacks to smart
- * objects' <b>smart events</b>, and not input events.
+ * @brief Adds a callback for input events (key up, key down, mouse wheel)
+ * on a given Elementary widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Every widget in an Elementary interface is set to receive focus,
+ * with elm_object_focus_allow_set(), propagate @b all of its
+ * key up, key down, and mouse wheel input events up to its parent
+ * object, and so on. All of the focusable ones in this chain that
+ * had an event callback set, with this call, are able to treat
+ * those events. There are two ways of making the propagation of
+ * these event upwards in the tree of widgets to @b cease:
+ * - Just return @c EINA_TRUE on @a func. @c EINA_FALSE means that
+ * the event is @b not processed, so the propagation goes on.
+ * - The @a event_info pointer passed to @p func contains the
+ * event's structure and, if you OR its @a event_flags inner
+ * value to @c EVAS_EVENT_FLAG_ON_HOLD, you're telling Elementary
+ * has already handled it, thus killing the event's
+ * propagation.
+ *
+ * @remarks Your event callback is issued on those events taking
+ * place only if no other child widget of @a obj has consumed the
+ * event already.
+ *
+ * @remarks Not to be confused with
+ * evas_object_event_callback_add(), which adds event callbacks
+ * per type on general Evas objects (no event propagation
+ * infrastructure taken into account).
+ *
+ * @remarks Not to be confused with
+ * elm_object_signal_callback_add(), which adds callbacks to @b
+ * signals coming from a widget's theme, not input events.
+ *
+ * @remarks Not to be confused with
+ * edje_object_signal_callback_add(), which does the same as
+ * elm_object_signal_callback_add(), but directly on an Edje
+ * object.
+ *
+ * @remarks Not to be confused with
+ * evas_object_smart_callback_add(), which adds callbacks to smart
+ * objects' <b>smart events</b>, and not input events.
+ *
+ * @param[in] obj The widget to add an event callback on
+ * @param[in] func The callback function to be executed when the event
+ * happens
+ * @param[in] data The data to pass into @a func
*
* @see elm_object_event_callback_del()
*
@@ -452,54 +617,86 @@ EAPI void *elm_object_signal_callback_del(Evas_Object *obj, const char *e
EAPI void elm_object_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, const void *data);
/**
- * Remove an event callback from a widget.
+ * @brief Removes an event callback from a widget.
*
- * This function removes a callback, previously attached to event emission
- * by the @p obj.
- * The parameters func and data must match exactly those passed to
- * a previous call to elm_object_event_callback_add(). The data pointer that
- * was passed to this call will be returned.
+ * @details This function removes a callback, previously attached to the event emission
+ * by the @a obj.
+ * The parameters @a func and @a data must match exactly those passed to
+ * a previous call to elm_object_event_callback_add(). The data pointer that
+ * is passed to this call is returned.
*
- * @param obj The object
- * @param func The callback function to be executed when the event is
- * emitted.
- * @param data Data to pass in to the callback function.
- * @return The data pointer
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object
+ * @param[in] func The callback function to be executed when the event is
+ * emitted
+ * @param[in] data The data to pass to the callback function
+ * @return A data pointer
* @ingroup General
*/
EAPI void *elm_object_event_callback_del(Evas_Object *obj, Elm_Event_Cb func, const void *data);
/**
- * Disable the orientation mode of a given widget.
+ * @brief Disables the orientation mode of a given widget.
+ *
+ * @since 1.8
*
- * Orientation Mode is used for widgets to change it's styles or to send signals
- * whenever it's window degree is changed. If the orientation mode is enabled
- * and the widget has different looks and styles for the window degree(0, 90,
- * 180, 270), it will apply a style that is readied for the current degree,
- * otherwise, it will send signals to it's own edje to change it's states if
- * the style doesn't be readied.
+ * @since_tizen 2.3
*
- * @param obj The Elementary object to operate on orientation mode.
- * @param disabled The state to put in in: @c EINA_TRUE for disabled,
- * @c EINA_FALSE for enabled.
+ * @remarks Orientation mode is used for widgets to change their styles or to send signals
+ * whenever its window degree is changed. If the orientation mode is enabled
+ * and the widget has different looks and styles for the window degree(0, 90,
+ * 180, 270), it applies a style that is readied for the current degree,
+ * otherwise, it sends signals to its own edje to change its states if
+ * the style is not readied.
*
- * @since 1.8
+ * @param[in] obj The Elementary object to operate in the orientation mode
+ * @param[in] disabled If @c EINA_TRUE the state is disabled,
+ * otherwise @c EINA_FALSE if it is enabled
*
* @ingroup General
*/
EAPI void elm_object_orientation_mode_disabled_set(Evas_Object *obj, Eina_Bool disabled);
/**
- * Get the orientation mode of a given widget.
- *
- * @param obj The Elementary widget to query for its orientation mode.
- * @return @c EINA_TRUE, if the orientation mode is disabled, @c EINA_FALSE
- * if the orientation mode is enabled (or on errors)
- * @see elm_object_orientation_mode_disabled_set()
+ * @brief Gets the orientation mode of a given widget.
*
* @since 1.8
*
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Elementary widget to query for its orientation mode
+ * @return @c EINA_TRUE, if the orientation mode is disabled, otherwise @c EINA_FALSE
+ * if the orientation mode is enabled (or on errors)
+ *
+ * @see elm_object_orientation_mode_disabled_set()
+ *
* @ingroup General
*/
EAPI Eina_Bool elm_object_orientation_mode_disabled_get(const Evas_Object *obj);
+/**
+ * @internal
+ * @remarks Tizen only feature 2013.12.08
+ *
+ * @brief If show_region_repeat_disabled is set,
+ * do not call on_show_region of the parent object.
+ *
+ * Need Documents
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_show_region_repeat_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @internal
+ * @remarks Tizen only feature 2013.12.08
+ *
+ * @brief If show_region_repeat_disabled is set,
+ * do not call on_show_region of the parent object.
+ *
+ * Need Documents
+ *
+ * @ingroup General
+ */
+EAPI Eina_Bool elm_object_show_region_repeat_disabled_get(Evas_Object *obj);
diff --git a/src/lib/elm_object_item.h b/src/lib/elm_object_item.h
index db1986222..a17f614e4 100644
--- a/src/lib/elm_object_item.h
+++ b/src/lib/elm_object_item.h
@@ -1,79 +1,972 @@
/**
- * @typedef Elm_Object_Item
- * An Elementary Object item handle.
+ * @typedef Elm_Object_Item_Signal_Cb
+ *
+ * @brief It is the Elm_Object_Item Signal Callback functions' prototype definition. @a data
+ * is going to have the auxiliary data pointer at the time of the callback registration.
+ * @a it is a pointer to Elm_Object_Item that has the edje object from where
+ * the signal comes. @a emission identifies the exact signal's emission
+ * string and @a source identifies the exact signal's source.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_signal_callback_add()
+ *
* @ingroup General
*/
-typedef Eo Elm_Object_Item;
+typedef void (*Elm_Object_Item_Signal_Cb)(void *data, Elm_Object_Item *it, const char *emission, const char *source);
/**
- * @typedef Elm_Object_Item_Signal_Cb
+ * @brief Gets the widget object's handle which contains a given item.
*
- * Elm_Object_Item Signal Callback functions' prototype definition. @c data
- * will have the auxiliary data pointer at the time the callback registration.
- * @c it will be a pointer the Elm_Object_Item that have the edje object where
- * the signal comes from. @c emission will identify the exact signal's emission
- * string and @c source the exact signal's source one.
+ * @details This returns the widget object itself to which an item belongs.
*
- * @see elm_object_item_signal_callback_add()
- * @since 1.8
+ * @since_tizen 2.3
+ *
+ * @remarks Every elm_object_item supports this API.
+ *
+ * @param[in] it The Elementary object item
+ * @return The widget object
*
* @ingroup General
*/
-typedef void (*Elm_Object_Item_Signal_Cb)(void *data, Elm_Object_Item *it, const char *emission, const char *source);
+EAPI Evas_Object *elm_object_item_widget_get(const Elm_Object_Item *it);
-#include "elm_widget_item.eo.h"
-#include "elm_widget_item.eo.legacy.h"
+/**
+ * @brief Sets the content of an object item.
+ *
+ * @details This sets a new object to an item as a content object. If any object is
+ * already set as a content object in the same part, this previous object is
+ * deleted automatically.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Elementary object items may have many contents.
+ *
+ * @param[in] it The Elementary object item
+ * @param[in] part The content part name to set (@c NULL for the default content)
+ * @param[in] content The new content of the object item
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_part_content_set(Elm_Object_Item *it, const char *part, Evas_Object *content);
+/**
+ * @def elm_object_item_content_set
+ * @brief Convenient macro for elm_object_item_part_content_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_part_content_set
+ * @ingroup General
+ */
#define elm_object_item_content_set(it, content) elm_object_item_part_content_set((it), NULL, (content))
+/**
+ * @brief Gets the content of an object item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Elementary object items may have many contents.
+ *
+ * @param[in] it The Elementary object item
+ * @param[in] part The content part name to unset (@c NULL for the default content)
+ * @return The content of the object item, otherwise @c NULL for any error
+ *
+ * @ingroup General
+ */
+EAPI Evas_Object *elm_object_item_part_content_get(const Elm_Object_Item *it, const char *part);
+
+/**
+ * @def elm_object_item_content_get
+ * @brief Convenient macro for elm_object_item_part_content_get
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_part_content_get
+ * @ingroup General
+ */
#define elm_object_item_content_get(it) elm_object_item_part_content_get((it), NULL)
+/**
+ * @brief Unsets the content of an object item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Elementary object items may have many contents.
+ *
+ * @param[in] it The Elementary object item
+ * @param[in] part The content part name to unset (@c NULL for the default content)
+ * @return #EINA_TRUE if succeed, otherwise #EINA_FALSE.
+ *
+ * @ingroup General
+ */
+EAPI Evas_Object *elm_object_item_part_content_unset(Elm_Object_Item *it, const char *part);
+
+/**
+ * @def elm_object_item_content_unset
+ * @brief Convenient macro for elm_object_item_part_content_unset
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_part_content_unset
+ * @ingroup General
+ */
#define elm_object_item_content_unset(it) elm_object_item_part_content_unset((it), NULL)
/**
- * Macro to set a label of an object item.
+ * @brief Sets the label of an object item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Elementary object items may have many labels.
+ *
+ * @param[in] it The Elementary object item
+ * @param[in] part The text part name to set (@c NULL for the default label)
+ * @param[in] label The new text of the label
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_part_text_set(Elm_Object_Item *it, const char *part, const char *label);
+
+/**
+ * @brief Sets the macro label of an object item.
+ *
+ * @since_tizen 2.3
*
- * @param it The Elementary object item.
- * @param label The new text of the label.
+ * @remarks Elementary object items may have many labels.
*
- * @note Elementary object items may have many labels.
+ * @param[in] it The Elementary object item
+ * @param[in] label The new text of the label
*
* @ingroup General
*/
#define elm_object_item_text_set(it, label) elm_object_item_part_text_set((it), NULL, (label))
+/**
+ * @brief Gets the label of an object item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Elementary object items may have many labels.
+ *
+ * @param[in] it The Elementary object item
+ * @param[in] part The text part name to get (@c NULL for the default label)
+ * @return The text of the label, otherwise @c NULL for any error
+ *
+ * @ingroup General
+ */
+EAPI const char *elm_object_item_part_text_get(const Elm_Object_Item *it, const char *part);
+
+/**
+ * @def elm_object_item_text_get
+ * @brief Convenient macro for elm_object_item_part_text_get
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_part_text_get
+ * @ingroup General
+ */
#define elm_object_item_text_get(it) elm_object_item_part_text_get((it), NULL)
+/**
+ * @brief Sets the text for an object item's part, marking it as translatable.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The string to set as @a text must be the original one. Do not pass the
+ * return of gettext() here. Elementary translates the string
+ * internally and sets it on the object item using
+ * elm_object_item_part_text_set(), also storing the original string so that it
+ * can be automatically translated when the language is changed with
+ * elm_language_set(). The @a domain is stored along with it to find the
+ * translation in the correct catalog. It can be @c NULL, in which case it uses
+ * whatever domain is set by the application with textdomain(). This is
+ * useful in case you are building a library on top of Elementary that should have
+ * its own translatable strings, that should not be mixed with those of programs
+ * using the library.
+ *
+ * @param[in] it The object item containing the text part
+ * @param[in] part The name of the part to set
+ * @param[in] domain The translation domain to use
+ * @param[in] text The original, non-translated text to set
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_domain_translatable_part_text_set(Elm_Object_Item *it, const char *part, const char *domain, const char *text);
+
+/**
+ * @def elm_object_item_domain_translatable_text_set
+ * @brief Convenient macro for elm_object_item_domain_translatable_part_text_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_domain_translatable_part_text_set
+ * @ingroup General
+ */
#define elm_object_item_domain_translatable_text_set(it, domain, text) elm_object_item_domain_translatable_part_text_set((it), NULL, (domain), (text))
+/**
+ * @def elm_object_item_translatable_text_set
+ * @brief Convenient macro for elm_object_item_domain_translatable_part_text_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_domain_translatable_part_text_set
+ * @ingroup General
+ */
#define elm_object_item_translatable_text_set(it, text) elm_object_item_domain_translatable_part_text_set((it), NULL, NULL, (text))
+/**
+ * @def elm_object_item_translatable_part_text_set
+ * @brief Convenient macro for elm_object_item_domain_translatable_part_text_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_domain_translatable_part_text_set
+ * @ingroup General
+ */
#define elm_object_item_translatable_part_text_set(it, part, text) elm_object_item_domain_translatable_part_text_set((it), (part), NULL, (text))
+/**
+ * @brief Gets the original string set as translatable for an object item.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When setting translated strings, the function elm_object_item_part_text_get()
+ * returns the translation returned by gettext(). To get the original
+ * string use this function.
+ *
+ * @param[in] it The object item
+ * @param[in] part The name of the part that is set
+ *
+ * @return The original, untranslated string
+ *
+ * @ingroup General
+ */
+EAPI const char *elm_object_item_translatable_part_text_get(const Elm_Object_Item *it, const char *part);
+
+/**
+ * @def elm_object_item_translatable_text_get
+ * @brief Convenient macro for elm_object_item_translatable_part_text_get
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_translatable_part_text_get
+ * @ingroup General
+ */
#define elm_object_item_translatable_text_get(it) elm_object_item_translatable_part_text_get((it), NULL)
+/**
+ * @brief Marks the part text to be translatable.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once you mark the part text to be translatable, the text is translated
+ * internally regardless of elm_object_item_part_text_set() and
+ * elm_object_item_domain_translatable_part_text_set(). In another case, if you
+ * set the Elementary policy that all text should be translatable by default, you
+ * can set the part text to not be translated by calling this API.
+ *
+ * @param[in] it The object item containing the text part
+ * @param[in] part The part name of the translatable text
+ * @param[in] domain The translation domain to use
+ * @param[in] translatable If @c EINA_TRUE, the part text is translated
+ * internally, otherwise @c EINA_FALSE
+ *
+ * @see elm_object_item_domain_translatable_part_text_set()
+ * @see elm_object_item_part_text_set()
+ * @see elm_policy()
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_domain_part_text_translatable_set(Elm_Object_Item *it, const char *part, const char *domain, Eina_Bool translatable);
+
+/**
+ * @def elm_object_item_part_text_translatable_set
+ * @brief Convenient macro for elm_object_item_domain_part_text_translatable_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_domain_part_text_translatable_set
+ * @ingroup General
+ */
#define elm_object_item_part_text_translatable_set(it, part, translatable) elm_object_item_domain_part_text_translatable_set((it), (part), NULL, (translatable))
+/**
+ * @def elm_object_item_domain_text_translatable_set
+ * @brief Convenient macro for elm_object_item_domain_part_text_translatable_set
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_object_item_domain_part_text_translatable_set
+ * @ingroup General
+ */
#define elm_object_item_domain_text_translatable_set(it, domain, translatable) elm_object_item_domain_part_text_translatable_set((it), NULL, (domain), (translatable))
-#define elm_object_item_text_translatable_set(it, translatable) elm_object_item_domain_part_text_translatable_set((it), NULL, NULL, (translatable))
+/**
+ * @brief Sets the text to read out when in the accessibility mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The object item which is to be described
+ * @param[in] txt The text that describes the widget to people with poor or no vision
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt);
+
+/**
+ * @brief Registers the object item as an accessible object.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] item The elementary object item
+ * @return The accessible object of the object item, otherwise @c NULL for any error
+ *
+ * @ingroup General
+ */
+EAPI Evas_Object *elm_object_item_access_register(Elm_Object_Item *item);
/**
- * Get the data associated with an object item
- * @param it The Elementary object item
- * @return The data associated with @p it
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Registers a part on an object item as an accessible object.
+ * @since 1.8
+ *
+ * @param[in] item The elementary object item
+ * @param[in] part The part name to set
+ * @return The accessible object of the object item, otherwise @c NULL for any error
+ *
+ * @ingroup General
+ */
+EAPI Evas_Object *elm_object_item_part_access_register(Elm_Object_Item *item, const char *part);
+
+/**
+ * @brief Unregisters the accessible object of the object item.
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] item The elementary object item
*
- * @note Every elm_object_item supports this API
* @ingroup General
*/
-EAPI void *elm_object_item_data_get(const Elm_Object_Item *it);
+EAPI void elm_object_item_access_unregister(Elm_Object_Item *item);
/**
- * Set the data associated with an object item
+ * @brief Gets the accessible object of the object item.
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] item The elementary object item
+ * @return The accessible object of the object item, otherwise @c NULL for any error
+ *
+ * @ingroup General
+ */
+EAPI Evas_Object *elm_object_item_access_object_get(const Elm_Object_Item *item);
+
+/**
+ * @brief Sets the highlight order.
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] item The container object item
+ * @param[in] objs The order of objects to pass highlight
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_access_order_set(Elm_Object_Item *item, Eina_List *objs);
+
+/**
+ * @brief Gets the highlight order.
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] item The container object item
+ * @return The order of objects to pass highlight
+ *
+ * @ingroup General
+ */
+EAPI const Eina_List *elm_object_item_access_order_get(const Elm_Object_Item *item);
+
+/**
+ * @brief Unsets the highlight order.
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] item The container object item
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_access_order_unset(Elm_Object_Item *item);
+
+/**
+ * @brief Gets the data associated with an object item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Every elm_object_item supports this API.
+ *
+ * @param[in] it The Elementary object item
+ * @return The data associated with @a it
+ *
+ * @ingroup General
+ */
+EAPI void *elm_object_item_data_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the data associated with an object item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Every elm_object_item supports this API.
+ *
+ * @param[in] it The Elementary object item
+ * @param[in] data The data to be associated with @a it
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_data_set(Elm_Object_Item *it, void *data);
+
+/**
+ * @internal
+ * @remarks Tizen only feature for changeable GUI
+ *
+ * @brief Gets the edje layout.
+ *
+ * @remarks Every elm_object_item supports this API.
+ *
* @param it The Elementary object item
- * @param data The data to be associated with @p it
*
- * @note Every elm_object_item supports this API
+ * @return An Evas_Object with the edje layout created internally.
+ *
+ * @ingroup General
+ */
+EAPI Evas_Object *elm_object_item_edje_get(Elm_Object_Item *it);
+
+/**
+ * @brief Sends a signal to the edje object of the widget item.
+ *
+ * @details This function sends a signal to the edje object of the obj item. An
+ * edje program can respond to a signal by specifying matching
+ * 'signal' and 'source' fields.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The Elementary object item
+ * @param[in] emission The signal name
+ * @param[in] source The signal source
+ * @ingroup General
+ */
+EAPI void elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source);
+
+/**
+ * @brief Adds a callback for a signal emitted by the object item, edje object.
+ *
+ * @details This function connects a callback function to a signal emitted by the
+ * edje object of the object item.
+ * Globs can occur in either the emission or source name.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The elementary object item
+ * @param[in] emission The signal name
+ * @param[in] source The signal source
+ * @param[in] func The callback function to be executed when the signal is
+ * emitted
+ * @param[in] data A pointer to the data to pass to the callback function
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_signal_callback_add(Elm_Object_Item *it, const char *emission, const char *source, Elm_Object_Item_Signal_Cb func, void *data);
+
+/**
+ * @brief Removes a signal-triggered callback from the object item, edje object.
+ *
+ * @details This function removes the @b last callback, previously attached to
+ * a signal emitted by an underlying Edje object of @a it, whose
+ * parameters @a emission, @a source, and @c func match exactly with
+ * those passed to a previous call to
+ * elm_object_item_signal_callback_add(). The data pointer that is passed
+ * to this call is returned.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The elementary object item
+ * @param[in] emission The signal name
+ * @param[in] source The signal source
+ * @param[in] func The callback function to be executed when the signal is
+ * emitted
+ * @return The data pointer of the signal callback, otherwise @c NULL on
+ * errors
+ *
+ * @see elm_object_item_signal_callback_add()
+ *
+ * @ingroup General
+ */
+EAPI void *elm_object_item_signal_callback_del(Elm_Object_Item *it, const char *emission, const char *source, Elm_Object_Item_Signal_Cb func);
+
+/**
+ * @brief Sets the disabled state of a widget item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Elementary object item can be @b disabled, in which state it won't
+ * receive input and, in general, is themed differently from
+ * its normal state, usually greyed out. Useful for contexts
+ * where you don't want your users to interact with some of the
+ * parts of your interface.
+ *
+ * @remarks This sets the state for the widget item, either disabling it or
+ * enabling it back.
+ *
+ * @param[in] it The Elementary object item
+ * @param[in] disabled If @c EINA_TRUE the state is disabled,
+ * otherwise @c EINA_FALSE if it is enabled
+ *
+ * @ingroup Styles
+ */
+EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled);
+
+/**
+ * @brief Gets the disabled state of a widget item.
+ *
+ * @details This gets the state of the widget, which might be enabled or disabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The Elementary object item
+ * @return @c EINA_TRUE if the widget item is disabled,
+ * otherwise @c EINA_FALSE if it's enabled (or on errors)
+ *
+ * @ingroup Styles
+ */
+EAPI Eina_Bool elm_object_item_disabled_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the function to be called when an item from the widget is
+ * freed.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This function receives these parameters:
+ * @li void * item data
+ * @li Evas_Object * widget object
+ * @li Elm_Object_Item * widget item
+ *
+ * @remarks Every elm_object_item supports this API.
+ *
+ * @param[in] it The item to set the callback on
+ * @param[in] del_cb The function called
+ *
+ * @see elm_object_item_del()
+ * @ingroup General
+ */
+EAPI void elm_object_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb del_cb);
+
+/**
+ * @brief Deletes the given item.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item to be deleted
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_del(Elm_Object_Item *it);
+
+/**
+ * @brief Sets the text to be shown in a given object item's tooltips.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Setup the text as a tooltip to the object. The item can have only one tooltip,
+ * so any previous tooltip data that is set with this function or
+ * elm_object_item_tooltip_content_cb_set() is removed.
+ *
+ * @param[in] it The target item
+ * @param[in] text The text to set in the content
+ *
+ * @see elm_object_tooltip_text_set()
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_tooltip_text_set(Elm_Object_Item *it, const char *text);
+
+/**
+ * @brief Disables the size restrictions on an object's tooltip.
+ *
+ * @details This function allows a tooltip to expand beyond its parent window's canvas.
+ * It is instead limited only by the size of the display.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The tooltip's anchor object
+ * @param[in] disable If @c EINA_TRUE size restrictions are disabled,
+ * otherwise @c EINA_FALSE
+ * @return @c EINA_TRUE on success, @c EINA_FALSE on failure
+ * @ingroup General
+ */
+EAPI Eina_Bool elm_object_item_tooltip_window_mode_set(Elm_Object_Item *it, Eina_Bool disable);
+
+/**
+ * @brief Retrieves the size restriction state of an object's tooltip.
+ *
+ * @details This function returns whether a tooltip is allowed to expand beyond
+ * its parent window's canvas.
+ * It is instead limited only by the size of the display.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The tooltip's anchor object
+ * @return @c EINA_TRUE if the size restrictions are disabled,
+ * otherwise @c EINA_FALSE
+ *
+ * @ingroup General
+ */
+EAPI Eina_Bool elm_object_item_tooltip_window_mode_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the content to be shown in the tooltip item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Setup the tooltip to the item. The item can have only one tooltip,
+ * so any previous tooltip data is removed. @a func(with @a data) is
+ * called every time you need show the tooltip and it should
+ * return a valid Evas_Object. This object is then managed fully by the
+ * tooltip system and is deleted when the tooltip is gone.
+ *
+ * @param[in] it The object item being attached as a tooltip
+ * @param[in] func The function used to create the tooltip contents
+ * @param[in] data The data to provide to @a func as callback data/context
+ * @param[in] del_cb Called when data is not needed anymore, either when
+ * another callback replaces @a func, the tooltip is unset with
+ * elm_object_item_tooltip_unset() or the owner @a it
+ * dies. This callback receives as the given @a data as the first parameter
+ * and @a event_info is the item.
+ *
+ * @see elm_object_tooltip_content_cb_set()
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
+
+/**
+ * @brief Unsets the tooltip from the item.
+ *
+ * @details This removes the tooltip from the item. The callback provided as @a del_cb to
+ * elm_object_item_tooltip_content_cb_set() is called to notify that
+ * it is not used anymore.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The object item from which to remove previously set tooltip
+ *
+ * @see elm_object_tooltip_unset()
+ * @see elm_object_item_tooltip_content_cb_set()
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_tooltip_unset(Elm_Object_Item *it);
+
+/**
+ * @brief Sets a different style for this item tooltip.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Before you set a style you should define a tooltip with
+ * elm_object_item_tooltip_content_cb_set() or
+ * elm_object_item_tooltip_text_set()
+ *
+ * @param[in] it The object item with the tooltip already set
+ * @param[in] style The theme style to use (default, transparent, ...)
+ *
+ * @see elm_object_tooltip_style_set()
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_tooltip_style_set(Elm_Object_Item *it, const char *style);
+
+/**
+ * @brief Gets the style for this item tooltip.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The object item with the tooltip already set
+ * @return style The theme style in use, defaults to "default" \n
+ * If the object does not have a tooltip set, then @c NULL is returned.
+ *
+ * @see elm_object_tooltip_style_get()
+ * @see elm_object_item_tooltip_style_set()
+ *
+ * @ingroup General
+ */
+EAPI const char *elm_object_item_tooltip_style_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the type of mouse pointer/cursor decoration to be shown,
+ * when the mouse pointer is over the given item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This function is analogous to elm_object_cursor_set(), but
+ * here the cursor's changing area is restricted to the item's
+ * area, and not the whole widget's. Note that the item cursors
+ * have precedence over widget cursors, so a mouse over an
+ * item with custom cursor set always shows @b that cursor.
+ *
+ * @remarks If this function is called twice for an object, a previously set
+ * cursor is unset on the second call.
+ *
+ * @param[in] it The item to customize the cursor on
+ * @param[in] cursor The cursor type's name
+ *
+ * @see elm_object_cursor_set()
+ * @see elm_object_item_cursor_get()
+ * @see elm_object_item_cursor_unset()
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_cursor_set(Elm_Object_Item *it, const char *cursor);
+
+/**
+ * @brief Gets the type of mouse pointer/cursor decoration set to be shown,
+ * when the mouse pointer is over the given item.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item with the custom cursor set
+ * @return The cursor type's name, otherwise @c NULL if no custom cursors
+ * are set to @a it (and on errors)
+ *
+ * @see elm_object_cursor_get()
+ * @see elm_object_item_cursor_set()
+ * @see elm_object_item_cursor_unset()
+ *
+ * @ingroup General
+ */
+EAPI const char *elm_object_item_cursor_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Unsets any custom mouse pointer/cursor decoration set to be
+ * shown, when the mouse pointer is over the given
+ * item, thus making it show the @b default cursor again.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use this call to undo any custom settings on this item's cursor
+ * decoration, bringing it back to defaults (no custom style set).
+ *
+ * @param[in] it The item
+ *
+ * @see elm_object_cursor_unset()
+ * @see elm_object_item_cursor_set()
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_cursor_unset(Elm_Object_Item *it);
+
+/**
+ * @brief Sets a different @b style for a given custom cursor set of an item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This function only makes sense when one is using custom mouse
+ * cursor decorations <b>defined in a theme file</b>, which can have,
+ * a given cursor name/type and <b>alternate styles</b> on it. It
+ * is analogous to elm_object_cursor_style_set(), but here it
+ * applies only to item objects.
+ *
+ * @remarks Before you set a cursor style you should have defined a
+ * custom cursor previously on the item, with
+ * elm_object_item_cursor_set()
+ *
+ * @param[in] it The item with the custom cursor set
+ * @param[in] style The <b>theme style</b> to use (e.g. @c "default",
+ * @c "transparent", etc)
+ *
+ * @see elm_object_item_cursor_engine_only_set()
+ * @see elm_object_item_cursor_style_get()
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_cursor_style_set(Elm_Object_Item *it, const char *style);
+
+/**
+ * @brief Get the current @b style set for a given item's custom
+ * cursor.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The item with the custom cursor set
+ * @return style The cursor style in use \n
+ * If the object does not have a cursor set, then @c NULL is returned.
+ *
+ * @see elm_object_item_cursor_style_set()
+ *
+ * @ingroup General
+ */
+EAPI const char *elm_object_item_cursor_style_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets whether the (custom)cursor for a given item should be
+ * searched in its theme or should only rely on the
+ * rendering engine.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This call is of use only if you've set a custom cursor
+ * for items using elm_object_item_cursor_set().
+ *
+ * @remarks By default, cursors are only looked for from those
+ * provided by the rendering engine.
+ *
+ * @param[in] it The item with custom (custom) cursor already set on it
+ * @param[in] engine_only If @c EINA_TRUE cursors are looked for
+ * only from those provided by the rendering engine, otherwise @c EINA_FALSE to
+ * have them searched on the widget's theme as well
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only);
+
+/**
+ * @brief Gets whether the (custom) cursor for a given item is being
+ * searched in its theme or is only relying on the rendering
+ * engine.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The object item
+ * @return @c EINA_TRUE, if cursors are being looked for only from
+ * those provided by the rendering engine, otherwise @c EINA_FALSE if they
+ * are being searched on the widget's theme as well.
+ *
+ * @see elm_object_item_cursor_engine_only_set()
+ *
+ * @ingroup General
+ */
+EAPI Eina_Bool elm_object_item_cursor_engine_only_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Returns the track object of the item.
+ *
+ * @details This gets a rectangle object that represents the object item's internal
+ * object. If you want to check the geometry and visibility of the item, you
+ * can call the evas apis, such as evas_object_geometry_get() and
+ * evas_object_visible_get(), to the track object. Note that all of the
+ * widget items may/may not have the internal object so this API may
+ * return @c NULL if the widget item doesn't have it. Additionally, the
+ * widget item is managed/controlled by the widget, the widget item could
+ * be changed(moved, resized even deleted) anytime by its own widget's
+ * decision. So dont' change the track object and don't
+ * keep the track object on your side as far as possible, but get the track object
+ * the moment you need to refer. Otherwise, you need to add some
+ * callbacks to the track object to track it's attributes changes.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks After using the track object, call
+ * elm_object_item_untrack() paired to elm_object_item_track()
+ * without fail to free the track object properly. Don't delete the
+ * track object.
+ *
+ * @param[in] it The Elementary Object Item to be tracked
+ * @return The track object
+ *
+ * @see elm_object_item_untrack()
+ * @see elm_object_item_track_get()
+ *
+ * @ingroup General
+ */
+EAPI Evas_Object *elm_object_item_track(Elm_Object_Item *it);
+
+/**
+ * @brief Retrieves the track object of the item.
+ *
+ * @details This retrieves the track object that is returned from
+ * elm_object_item_track().
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The Elementary Object Item that returned the track object
+ *
+ * @see elm_object_item_track()
+ * @see elm_object_item_track_get()
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_untrack(Elm_Object_Item *it);
+
+/**
+ * @brief Gets the track object reference count.
+ *
+ * @details This gets the reference count for the track object. Whenever you call
+ * elm_object_item_track(), the reference count is increased by
+ * one. Similarly, the reference count is decreased again when you call
+ * the elm_object_item_untrack(). Unless the reference count reaches to
+ * zero, the track object won't be deleted. So be sure to call
+ * elm_object_item_untrack() paired to the elm_object_item_track() call
+ * count.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The Elementary Object Item that returned the track object
+ * @return The track object reference count
+ *
+ * @see elm_object_item_track()
+ * @see elm_object_item_track_get()
+ *
+ * @ingroup General
+ */
+EAPI int elm_object_item_track_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the style of an object item.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The Elementary object item
+ * @param[in] part The style of the object item
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_style_set(Elm_Object_Item *it, const char *part);
+
+/**
+ * @brief Gets the style of an object item.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The Elementary object item
+ * @return The style of the object item
+ *
* @ingroup General
*/
-EAPI void elm_object_item_data_set(Elm_Object_Item *it, void *data);
+EAPI const char *elm_object_item_style_get(Elm_Object_Item *it);
diff --git a/src/lib/elm_panel.h b/src/lib/elm_panel.h
index 175fcc132..c40800912 100644
--- a/src/lib/elm_panel.h
+++ b/src/lib/elm_panel.h
@@ -1,48 +1,166 @@
/**
* @defgroup Panel Panel
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html panel_inheritance_tree.png
* @image latex panel_inheritance_tree.eps
*
- * @image html img/widget/panel/preview-00.png
- * @image latex img/widget/panel/preview-00.eps
- *
* @brief A panel is an animated side-panel that contains a
- * sub-object. It can be expanded or contracted by clicking the
- * button on its edge.
+ * sub-object. It can be expanded or contracted by clicking the
+ * button on its edge.
*
* Orientations are as follows:
- * @li #ELM_PANEL_ORIENT_TOP
- * @li #ELM_PANEL_ORIENT_LEFT
- * @li #ELM_PANEL_ORIENT_RIGHT
- * @li #ELM_PANEL_ORIENT_BOTTOM
+ * @li @c ELM_PANEL_ORIENT_TOP
+ * @li @c ELM_PANEL_ORIENT_LEFT
+ * @li @c ELM_PANEL_ORIENT_RIGHT
+ * @li @c ELM_PANEL_ORIENT_BOTTOM
*
* This widget inherits from the @ref Layout one, so that all the
- * functions acting on it also work for panel objects (since 1.8).
+ * functions acting on it also work for panel objects (@since 1.8).
*
- * This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li @c "scroll" : When the content has been scrolled (moved). (since 1.10)
- * This signal is emitted only when the panel is scrollable.
- * Elm_Panel_Scroll_Info will be passed by @p event_info argument.
- * @li @c "focused" : When the panel has received focus. (since 1.8)
- * @li @c "unfocused" : When the panel has lost focus. (since 1.8)
+ * The default content parts of the panel widget that you can use are:
+ * @li @c "default" - Content of the panel.
*
- * Default content parts of the panel widget that you can use are:
- * @li @c "default" - A content of the panel
+ * This widget emits the following signals, besides the ones sent from
+ * @li @c "scroll" - The content has been scrolled (moved).
*
- * @ref tutorial_panel shows one way to use this widget.
* @{
*/
-#include "elm_panel_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_panel_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_panel_legacy.h"
-#endif
+
+/**
+ * @brief Enumeration of Elm Panel Orient type
+ */
+typedef enum
+{
+ ELM_PANEL_ORIENT_TOP, /**< Panel (dis)appears from the top */
+ ELM_PANEL_ORIENT_BOTTOM, /**< Panel (dis)appears from the bottom */
+ ELM_PANEL_ORIENT_LEFT, /**< Panel (dis)appears from the left */
+ ELM_PANEL_ORIENT_RIGHT, /**< Panel (dis)appears from the right */
+} Elm_Panel_Orient;
+
+/**
+ * @typedef Elm_Panel_Scroll_Info
+ *
+ * @brief The structure type when the panel content is scrolled, if the panel object is scrollable,
+ * this information is passed by the @a event_info argument in the
+ * @c "scroll" smart callback function.
+ */
+typedef struct _Elm_Panel_Scroll_Info
+{
+ double rel_x; /**< Content scrolled position (0.0 ~ 1.0) in the panel */
+ double rel_y; /**< Content scrolled position (0.0 ~ 1.0) in the panel */
+
+} Elm_Panel_Scroll_Info;
+
+/**
+ * @brief Adds a panel object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ *
+ * @return The panel object, otherwise @c NULL on failure
+ */
+EAPI Evas_Object *elm_panel_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the orientation of the panel.
+ *
+ * @details This sets the location from where the panel (dis)appears.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The panel object
+ * @param[in] orient The panel orientation, can be one of the following:
+ * @li ELM_PANEL_ORIENT_TOP
+ * @li ELM_PANEL_ORIENT_LEFT
+ * @li ELM_PANEL_ORIENT_RIGHT
+ */
+EAPI void elm_panel_orient_set(Evas_Object *obj, Elm_Panel_Orient orient);
+
+/**
+ * @brief Gets the orientation of the panel.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The panel object
+ * @return The Elm_Panel_Orient, otherwise @c ELM_PANEL_ORIENT_LEFT on failure
+ */
+EAPI Elm_Panel_Orient elm_panel_orient_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the state of the panel.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The panel object
+ * @param[in] hidden If @c true the panel runs the animation to disappear,
+ * otherwise @c false
+ */
+EAPI void elm_panel_hidden_set(Evas_Object *obj, Eina_Bool hidden);
+
+/**
+ * @brief Gets the state of the panel.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The panel object
+ * @return @c EINA_TRUE if it is the hidden state,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_panel_hidden_get(const Evas_Object *obj);
+
+/**
+ * @brief Toggles the hidden state of the panel from the code.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The panel object
+ */
+EAPI void elm_panel_toggle(Evas_Object *obj);
+
+/**
+ * @remarks Tizen only feature but not internal (will be patched into upstream)
+ *
+ * @brief Enables or disables scrolling in the panel.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Normally the panel is not scrollable unless you enable it with this call.
+ *
+ * @param[in] obj The panel object
+ * @param[in] scrollable If @c EINA_TRUE it is scrollable, otherwise @c EINA_FALSE
+ */
+EAPI void elm_panel_scrollable_set(Evas_Object *obj, Eina_Bool scrollable);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the scrollable state of the panel.
+ *
+ * @remarks Normally the panel is not scrollable. This gets the scrollable state
+ * of the panel.
+ *
+ * @param obj The panel object
+ * @return The scrollable state
+ *
+ * @see elm_panel_scrollable_set()
+ */
+EAPI Eina_Bool elm_panel_scrollable_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Set the size of the content of a scrollable panel
+ *
+ * @param obj The panel object
+ * @param ratio The ratio of the content to the panel. This value ranges from 0 to 1.
+ */
+EAPI void elm_panel_scrollable_content_size_set(Evas_Object *obj, double ratio);
+
/**
* @}
*/
diff --git a/src/lib/elm_panes.h b/src/lib/elm_panes.h
index 1b3d2c48a..f1da54027 100644
--- a/src/lib/elm_panes.h
+++ b/src/lib/elm_panes.h
@@ -1,65 +1,203 @@
/**
* @defgroup Panes Panes
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html panes_inheritance_tree.png
* @image latex panes_inheritance_tree.eps
*
- * @image html img/widget/panes/preview-00.png
- * @image latex img/widget/panes/preview-00.eps width=\textwidth
- *
* @image html img/panes.png
- * @image latex img/panes.eps width=\textwidth
+ * @image latex img/panes.eps "panes" width=\textwidth
*
- * The panes widget adds a draggable bar between two contents. When dragged
- * this bar will resize contents' size.
+ * @brief The panes widget adds a draggable bar between two contents.
+ * When dragged this bar resizes contents' size.
*
- * Panes can be split vertically or horizontally, and contents
+ * Panes can be displayed vertically or horizontally, and contents
* size proportion can be customized (homogeneous by default).
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for panes objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * - @c "press" - The panes has been pressed (button wasn't released yet).
- * - @c "unpress" - The panes was released after being pressed.
- * - @c "clicked" - The panes has been clicked>
- * - @c "clicked,double" - The panes has been double clicked
+ * @ref Layout :
+ * - @c "press" - The panes have been pressed (button isn't released yet).
+ * - @c "unpressed" - The panes are released after being pressed.
+ * - @c "clicked" - The panes have been clicked.
+ * - @c "clicked,double" - The panes have been double clicked.
*
* Available styles for it:
* - @c "default"
*
- * Default content parts of the panes widget that you can use are:
- * @li "left" - A leftside content of the panes
- * @li "right" - A rightside content of the panes
- * @li "top" - A top content of the vertical panes
- * @li "bottom" - A bottom content of the vertical panes
+ * The default content parts of the panes widget that you can use are:
+ * @li "left" - Leftside content of the panes.
+ * @li "right" - Rightside content of the panes.
*
- * If panes are displayed vertically, left content will be displayed on
+ * If panes are displayed vertically, left content is displayed on
* top.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_part_content_set
* @li @ref elm_object_part_content_get
* @li @ref elm_object_part_content_unset
*
- * Here is an example on its usage:
- * @li @ref panes_example
+ * @{
*/
+/**
+ * @brief Adds a new panes widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new panes widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new panes widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_panes_add(Evas_Object *parent);
/**
- * @addtogroup Panes
- * @{
+ * @brief Sets whether the left and right panes resize homogeneously.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default panes are resized homogeneously.
+ *
+ * @param[in] obj The panes object
+ * @param[in] fixed If @c EINA_TRUE @a obj resizes the left and right panes @b homogeneously,
+ * otherwise @c EINA_FALSE to make use of the values specified in
+ * elm_panes_content_left_size_set() and
+ * elm_panes_content_right_size_set()
+ * to resize the left and right panes
+ *
+ * @see elm_panes_fixed_get()
+ * @see elm_panes_content_left_size_set()
+ * @see elm_panes_content_right_size_set()
+ */
+EAPI void elm_panes_fixed_set(Evas_Object *obj, Eina_Bool fixed);
+
+/**
+ * @brief Gets the resize mode for the panes of a given panes widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The panes object
+ * @return @c EINA_TRUE if @a obj is set to be resized @b homogeneously,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_panes_fixed_set()
+ * @see elm_panes_content_left_size_get()
+ * @see elm_panes_content_right_size_get()
+ */
+EAPI Eina_Bool elm_panes_fixed_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the size proportion of panes widget's left side.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The panes object
+ * @return The float value between @c 0.0 and @c 1.0 representing the size proportion
+ * of the left side
+ *
+ * @see elm_panes_content_left_size_set()
+ */
+EAPI double elm_panes_content_left_size_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the size proportion of the panes widget's left side.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default it's homogeneous, i.e., both sides have the same size.
+ *
+ * @remarks If something different is required, it can be set with this function.
+ * For example, if the left content should be displayed over
+ * 75% of the panes size, @a size should be passed as @c 0.75.
+ * This way, the right content is resized to 25% of the panes size.
+ *
+ * @remarks If displayed vertically, left content is displayed at the top, and
+ * right content at the bottom.
+ *
+ * @remarks This proportion changes when the user drags the panes bar.
+ *
+ * @param[in] obj The panes object
+ * @param[in] size The value between @c 0.0 and @c 1.0 representing the size proportion
+ * of the left side
+ *
+ * @see elm_panes_content_left_size_get()
+ */
+EAPI void elm_panes_content_left_size_set(Evas_Object *obj, double size);
+
+/**
+ * @brief Gets the size proportion of the panes widget's right side.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The panes object
+ * @return The float value between @c 0.0 and @c 1.0 representing the size proportion
+ * of the right side
+ *
+ * @see elm_panes_content_right_size_set()
+ */
+EAPI double elm_panes_content_right_size_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the size proportion of the panes widget's right side.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default it's homogeneous, i.e., both sides have the same size.
+ *
+ * @remarks If something different is required, it can be set with this function.
+ * For example, if the right content should be displayed over
+ * 75% of the panes size, @a size should be passed as @c 0.75.
+ * This way, the left content is resized to 25% of the panes size.
+ *
+ * @remarks If displayed vertically, the left content is displayed at the top, and
+ * the right content at the bottom.
+ *
+ * @remarks This proportion changes when the user drags the panes bar.
+ *
+ * @param[in] obj The panes object
+ * @param[in] size The values between @c 0.0 and @c 1.0 representing the size proportion
+ * of the right side
+ *
+ * @see elm_panes_content_right_size_get()
+ */
+EAPI void elm_panes_content_right_size_set(Evas_Object *obj, double size);
+
+
+/**
+ * @brief Sets the orientation of a given panes widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use this function to change how your panes are to be
+ * disposed: vertically or horizontally.
+ *
+ * By default it's displayed horizontally.
+ *
+ * @param[in] obj The panes object
+ * @param[in] horizontal If @c EINA_TRUE @a obj is @b horizontal,
+ * otherwise @c EINA_FALSE to make it @b vertical
+ *
+ * @see elm_panes_horizontal_get()
+ */
+EAPI void elm_panes_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Gets the orientation of a given panes widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The panes object
+ * @return @c EINA_TRUE, if @a obj is set to be @b horizontal,
+ * otherwise @c EINA_FALSE if it's @b vertical (and on errors)
+ *
+ * @see elm_panes_horizontal_set()
*/
+EAPI Eina_Bool elm_panes_horizontal_get(const Evas_Object *obj);
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_panes_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_panes_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_photo.h b/src/lib/elm_photo.h
index db928f07a..ebd58e10e 100644
--- a/src/lib/elm_photo.h
+++ b/src/lib/elm_photo.h
@@ -1,35 +1,125 @@
/**
+ * @internal
* @defgroup Photo Photo
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html photo_inheritance_tree.png
* @image latex photo_inheritance_tree.eps
*
- * The Elementary photo widget is intended for displaying a photo, for
- * ex., a person's image (contact). Simple, yet with a very specific
- * purpose. It has a decorative frame around the inner image itself,
- * on the default theme. If and while no photo is set on it, it
- * displays a person icon, indicating it's a photo placeholder.
+ * @brief The Elementary photo widget is intended for displaying a photo,
+ * for eg., a person's image (contact).
+ *
+ * Simple, yet with a very specific purpose. It has a decorative frame around
+ * the inner image itself, on the default theme. If and while no photo is set
+ * on it, it displays a person icon, indicating it's a photo placeholder.
*
* This widget relies on an internal @ref Icon, so that the APIs of
* these two widgets are similar (drag and drop is also possible here,
* for example).
*
* Signals that you can add callbacks for are:
- * - @c "clicked" - This is called when a user has clicked the photo
+ * - @c "clicked" - This is called when a user has clicked the photo.
* - @c "drag,start" - One has started dragging the inner image out of the
- * photo's frame
- * - @c "drag,end" - One has dropped the dragged image somewhere
+ * photo's frame.
+ * - @c "drag,end" - One has dropped the dragged image somewhere.
*
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_photo_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_photo_legacy.h>
-#endif
+/**
+ * @brief Addw a new photo to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_photo_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the file that is used as the photo widget's image.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use @c NULL on a @a file to set the photo widget back to it's
+ * initial state, which indicates "no photo".
+ *
+ * @param[in] obj The photo object
+ * @param[in] file The path to the file that is used as the @a obj image
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_photo_file_set(Evas_Object *obj, const char *file);
+
+/**
+ * @brief Sets the file that is used as a thumbnail in the photo.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photo object
+ * @param[in] file The path to the file that is used as the thumbnail
+ * @param[in] group The key used in case of an EET file
+ */
+EAPI void elm_photo_thumb_set(const Evas_Object *obj, const char *file, const char *group);
+
+/**
+ * @brief Sets the size that is used on the photo.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photo object
+ * @param[in] size The size of the photo
+ */
+EAPI void elm_photo_size_set(Evas_Object *obj, int size);
+
+/**
+ * @brief Sets whether the photo should be completely visible.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photo object
+ * @param[in] fill If @c true the photo is completely visible,
+ * otherwise @c false
+ */
+EAPI void elm_photo_fill_inside_set(Evas_Object *obj, Eina_Bool fill);
+
+/**
+ * @brief Sets editability of the photo.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks An editable photo can be dragged to or from, and can be cut or
+ * pasted too. Note that pasting an image or dropping an item on
+ * the image deletes the existing content.
+ *
+ * @param[in] obj The photo object
+ * @param[in] set The boolean value that sets or clears editability
+ */
+EAPI void elm_photo_editable_set(Evas_Object *obj, Eina_Bool set);
+
+/**
+ * @brief Sets whether the original aspect ratio of the photo should be kept on resize.
+ *
+ * @remarks The original aspect ratio (width / height) of the photo is usually
+ * distorted to match the object's size. Enabling this option fixes
+ * this original aspect, and the way the photo is fit into
+ * the object's area.
+ *
+ * @param obj The photo object
+ * @param fixed If @c EINA_TRUE the photo should fix the aspect,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_photo_aspect_fixed_get()
+ */
+EAPI void elm_photo_aspect_fixed_set(Evas_Object *obj, Eina_Bool fixed);
+
+/**
+ * @brief Gets whether the object keeps the original aspect ratio.
+ *
+ * @param obj The photo object
+ * @return @c EINA_TRUE if the object keeps the original aspect, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_photo_aspect_fixed_get(const Evas_Object *obj);
/**
* @}
diff --git a/src/lib/elm_photocam.h b/src/lib/elm_photocam.h
index d6b7c98b9..030ca0e22 100644
--- a/src/lib/elm_photocam.h
+++ b/src/lib/elm_photocam.h
@@ -1,19 +1,17 @@
/**
* @defgroup Photocam Photocam
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html photocam_inheritance_tree.png
* @image latex photocam_inheritance_tree.eps
*
- * @image html img/widget/photocam/preview-00.png
- * @image latex img/widget/photocam/preview-00.eps
+ * @brief Photocam is a widget meant specifically for displaying
+ * high-resolution digital camera photos, giving speedy feedback
+ * (fast * load), zooming and panning as well as fitting logic, all with
+ * low memory footprint.
*
- * Photocam is a widget meant specifically for displaying
- * high-resolution digital camera photos, giving speedy feedback (fast
- * load), zooming and panning as well as fitting logic, all with low
- * memory footprint. It is entirely focused on @b jpeg images, and
- * takes advantage of properties of the jpeg format (via Evas loader
- * features in the jpeg loader).
+ * It is entirely focused on @b jpeg images, and takes advantage of the
+ * properties of the jpeg format (via Evas loader features in the jpeg loader).
*
* Signals that you can add callbacks for are:
* @li @c "clicked" - This is called when a user has clicked the photo
@@ -26,79 +24,316 @@
* double-clicked the photo.
* @li @c "load" - Photo load begins.
* @li @c "loaded" - This is called when the image file load is
- * complete for the first view (low resolution blurry version).
- * @li @c "load,detail" - Photo detailed data load begins.
+ * completed for the first view (low resolution blurry version).
+ * @li @c "load,detail" - Detailed photo data load begins.
* @li @c "loaded,detail" - This is called when the image file load is
- * complete for the detailed image data (full resolution
+ * completed with the detailed image data (full resolution
* needed).
* @li @c "zoom,start" - Zoom animation started.
* @li @c "zoom,stop" - Zoom animation stopped.
- * @li @c "zoom,change" - Zoom changed when using an auto zoom mode.
- * @li @c "scroll" - the content has been scrolled (moved)
- * @li @c "scroll,anim,start" - scrolling animation has started
- * @li @c "scroll,anim,stop" - scrolling animation has stopped
- * @li @c "scroll,drag,start" - dragging the contents around has started
- * @li @c "scroll,drag,stop" - dragging the contents around has stopped
- * @li @c "focused" - When the photocam has received focus. (since 1.8)
- * @li @c "unfocused" - When the photocam has lost focus. (since 1.8)
- *
- * This widget implements the @b @ref elm-scrollable-interface
+ * @li @c "zoom,change" - Zoom changed when using the auto zoom mode.
+ * @li @c "scroll" - The content has been scrolled (moved).
+ * @li @c "scroll,anim,start" - Scrolling animation has started.
+ * @li @c "scroll,anim,stop" - Scrolling animation has stopped.
+ * @li @c "scroll,drag,start" - Dragging the contents around has started.
+ * @li @c "scroll,drag,stop" - Dragging the contents around has stopped.
+ *
+ * This widget implements the elm-scrollable-interface
* interface, so that all (non-deprecated) functions for the base @ref
* Scroller widget also work for photocam objects.
*
* Some calls on the photocam'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
+ * they just wrap the scrollable widget's counterpart functions. Use
+ * the ones mentioned for each case of deprecation here.
+ * Eventually, the deprecated ones are discarded (next
* major release).
*
- * @ref tutorial_photocam shows the API in action.
* @{
*/
/**
- * @brief Types of zoom available.
+ * @brief Enumeration that defines the types of zoom available.
*/
typedef enum
{
ELM_PHOTOCAM_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_photocam_zoom_set */
- ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT, /**< Zoom until photo fits in photocam */
- ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL, /**< Zoom until photo fills photocam */
- ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN, /**< Zoom in until photo fits in photocam */
+ ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT, /**< Zoom until the photo fits in the photocam */
+ ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL, /**< Zoom until the photo fills the photocam */
+ ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN, /**< Zoom in until the photo fits in the photocam */
ELM_PHOTOCAM_ZOOM_MODE_LAST
} Elm_Photocam_Zoom_Mode;
/**
- * Structure associated with smart callback 'download,progress'.
- * @since 1.8
+ * @brief Adds a new Photocam object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
*/
-typedef struct _Elm_Photocam_Progress Elm_Photocam_Progress;
+EAPI Evas_Object *elm_photocam_add(Evas_Object *parent);
-struct _Elm_Photocam_Progress
-{
- double now;
- double total;
-};
+/**
+ * @brief Sets the photo file to be shown.
+ *
+ * @details This sets (and shows) the specified file (with a relative or absolute
+ * path) and returns a load error (same error that
+ * evas_object_image_load_error_get() returns). The image changes and
+ * adjusts its size at this point and begins a background load process for this
+ * photo that at some time in the future is displayed at the full
+ * quality needed.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @param[in] file The photo file
+ * @return The return error (see EVAS_LOAD_ERROR_NONE, EVAS_LOAD_ERROR_GENERIC)
+ */
+EAPI Evas_Load_Error elm_photocam_file_set(Evas_Object *obj, const char *file);
+/**
+ * @brief Gets the path of the current image file.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @return The path
+ *
+ * @see elm_photocam_file_set()
+ */
+EAPI const char *elm_photocam_file_get(const Evas_Object *obj);
/**
- * Structre associated with smart callback 'download,error'
- * @since 1.8
+ * @brief Sets the zoom level of the photo.
+ *
+ * @details This sets the zoom level. @c 1 is 1:1 pixel for pixel. @c 2 is 2:1
+ * (that is 2x2 photo pixels displays as 1 on-screen pixel). 4:1 is
+ * 4x4 photo pixels as 1 screen pixel, and so on. The @a zoom parameter must
+ * be greater than @c 0. It is suggested to stick to powers of @c 2. (1, 2, 4, 8,
+ * 16, 32, etc.).
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @param[in] zoom The zoom level to set
*/
-typedef struct _Elm_Photocam_Error Elm_Photocam_Error;
-struct _Elm_Photocam_Error
-{
- int status;
+EAPI void elm_photocam_zoom_set(Evas_Object *obj, double zoom);
- Eina_Bool open_error;
-};
+/**
+ * @brief Gets the zoom level of the photo.
+ *
+ * @details This returns the current zoom level of the photocam object. Note that if
+ * you set the fill mode to a value other than @c ELM_PHOTOCAM_ZOOM_MODE_MANUAL
+ * (which is the default), the zoom level may be changed at any time by the
+ * photocam object itself to account for the photo size and the photocam viewport
+ * size.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @return The current zoom level
+ *
+ * @see elm_photocam_zoom_set()
+ * @see elm_photocam_zoom_mode_set()
+ */
+EAPI double elm_photocam_zoom_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the zoom mode.
+ *
+ * @details This sets the zoom mode to manual or one of the several automatic levels.
+ * Manual (@c ELM_PHOTOCAM_ZOOM_MODE_MANUAL) means that zoom is set manually by
+ * elm_photocam_zoom_set() and stays at that level until changed by code
+ * or until the zoom mode is changed. This is the default mode. The Automatic
+ * modes allow the photocam object to automatically adjust the zoom mode
+ * based on its properties. @c ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT adjusts the zoom so that
+ * the photo fits EXACTLY inside the scroll frame with no pixels outside this
+ * region. @c ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL is similar but ensures that no
+ * pixels within the frame are left unfilled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @param[in] mode The desired mode
+ */
+EAPI void elm_photocam_zoom_mode_set(Evas_Object *obj, Elm_Photocam_Zoom_Mode mode);
+
+/**
+ * @brief Gets the zoom mode.
+ *
+ * @details This gets the current zoom mode of the photocam object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @return The current zoom mode
+ *
+ * @see elm_photocam_zoom_mode_set()
+ */
+EAPI Elm_Photocam_Zoom_Mode elm_photocam_zoom_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the current image pixel's width and height.
+ *
+ * @details This gets the current photo pixel's width and height (for the original).
+ * The size is returned in the integers @a w and @a h that are pointed
+ * to.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @param[out] w A pointer to the width
+ * @param[out] h A pointer to the height
+ */
+EAPI void elm_photocam_image_size_get(const Evas_Object *obj, int *w, int *h);
+
+/**
+ * @brief Gets the region of the image that is currently shown.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @param[out] x A pointer to the X-coordinate of the region
+ * @param[out] y A pointer to the Y-coordinate of the region
+ * @param[out] w A pointer to the width
+ * @param[out] h A pointer to the height
+ *
+ * @see elm_photocam_image_region_show()
+ * @see elm_photocam_image_region_bring_in()
+ */
+EAPI void elm_photocam_image_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h);
+
+/**
+ * @brief Sets the viewed region of the image.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This shows the region of the image without using animation.
+ *
+ * @param[in] obj The photocam object
+ * @param[in] x The X-coordinate of the region in the image's original pixels
+ * @param[in] y The Y-coordinate of the region in the image's original pixels
+ * @param[in] w The width of the region in the image's original pixels
+ * @param[in] h The height of the region in the image's original pixels
+ */
+EAPI void elm_photocam_image_region_show(Evas_Object *obj, int x, int y, int w, int h);
+
+/**
+ * @brief Brings in the viewed portion of the image.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This shows the region of the image using animation.
+ *
+ * @param[in] obj The photocam object
+ * @param[in] x The X-coordinate of the region in the image's original pixels
+ * @param[in] y The Y-coordinate of the region in the image's original pixels
+ * @param[in] w The width of the region in the image's original pixels
+ * @param[in] h The height of the region in the image's original pixels
+ */
+EAPI void elm_photocam_image_region_bring_in(Evas_Object *obj, int x, int y, int w, int h);
+
+/**
+ * @brief Sets the paused state for the photocam.
+ *
+ * @details This sets the paused state to on(@c EINA_TRUE) or off (@c EINA_FALSE) for
+ * the photocam. The default is off. This stops zooming using animation on
+ * zoom level changes and changes instantly. This stops any existing
+ * animations that are running.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @param[in] paused The pause state to set
+ */
+EAPI void elm_photocam_paused_set(Evas_Object *obj, Eina_Bool paused);
+
+/**
+ * @brief Gets the paused state for the photocam.
+ *
+ * @details This gets the current paused state for the photocam object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @return The current paused state
+ *
+ * @see elm_photocam_paused_set()
+ */
+EAPI Eina_Bool elm_photocam_paused_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the internal low-resolution image used for the photocam.
+ *
+ * @details This gets the internal image object inside the photocam. Do not modify it. It
+ * is for inspection only, and hooking callbacks to, nothing else. It may be
+ * deleted at any time.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @return The internal image object handle, otherwise @c NULL if none exist
+ */
+EAPI Evas_Object *elm_photocam_internal_image_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ *
+ * @brief Sets the photocam scrolling bouncing.
+ *
+ * @param[in] obj The photocam object
+ * @param[in] h_bounce If @c EINA_TRUE horizontal bouncing is enabled,
+ * otherwise @c EINA_FALSE to disable it
+ * @param[in] v_bounce If @c EINA_TRUE vertical bouncing is enabled
+ * otherwise @c EINA_FALSE to disable it
+ * @deprecated Use elm_scroller_bounce_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_photocam_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
+
+/**
+ * @internal
+ *
+ * @brief Gets the photocam scrolling bouncing.
+ *
+ * @param[in] obj The photocam object
+ * @param[out] h_bounce If @c EINA_TRUE horizontal bouncing is enabled,
+ * otherwise @c EINA_FALSE to disable it
+ * @param[out] v_bounce If @c EINA_TRUE vertical bouncing is enabled
+ * otherwise @c EINA_FALSE to disable it
+ *
+ * @deprecated Use elm_scroller_bounce_get() instead.
+ *
+ * @see elm_photocam_bounce_set()
+ */
+EINA_DEPRECATED EAPI void elm_photocam_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
+
+/**
+ * @brief Sets the gesture state for the photocam.
+ *
+ * @details This sets the gesture state to on(@c EINA_TRUE) or off (@c EINA_FALSE) for
+ * the photocam. The default is off. This starts multi touch zooming.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @param[in] gesture The gesture state to set
+ */
+EAPI void elm_photocam_gesture_enabled_set(Evas_Object *obj, Eina_Bool gesture);
+
+/**
+ * @brief Gets the gesture state for the photocam.
+ *
+ * @details This gets the current gesture state for the photocam object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The photocam object
+ * @return The current gesture state
+ *
+ * @see elm_photocam_gesture_enabled_set()
+ */
+EAPI Eina_Bool elm_photocam_gesture_enabled_get(const Evas_Object *obj);
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_photocam_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_photocam_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_plug.h b/src/lib/elm_plug.h
index 17ba2962f..88ea23a85 100644
--- a/src/lib/elm_plug.h
+++ b/src/lib/elm_plug.h
@@ -1,42 +1,92 @@
/**
* @defgroup Plug Plug
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html plug_inheritance_tree.png
* @image latex plug_inheritance_tree.eps
*
- * An object that allows one to show an image which other process created.
- * It can be used anywhere like any other elementary widget.
+ * @brief An object that allows one to show an image which the other process created.
+ * It can be used anywhere like any other elementary widget.
*
- * This widget emits the following signals:
- * @li "clicked": the user clicked the image (press/release). The @c
- * event parameter of the callback will be @c NULL.
- * @li "image,deleted": the server side was deleted. The @c event
- * parameter of the callback will be @c NULL.
- * @li "image,resized": the server side was resized. The @c event parameter of
- * the callback will be @c Evas_Coord_Size (two integers).
+ * @{
+ */
+
+/**
+ * @typedef Elm_Plug_Message
*
- * @note the event "image,resized" will be sent whenever the server
- * resized its image and this @b always happen on the first
- * time. Then it can be used to track when the server-side image
- * is fully known (client connected to server, retrieved its
- * image buffer through shared memory and resized the evas
- * object).
+ * @brief The structure type holding the message
+ * which elm plug received from ecore evas.
*
*/
+struct _Elm_Plug_Message
+{
+ int msg_domain;
+ int msg_id;
+ void *data;
+ int size;
+};
+typedef struct _Elm_Plug_Message Elm_Plug_Message;
/**
- * @addtogroup Plug
- * @{
+ * @brief Adds a new plug image to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new plug image object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_plug_add(Evas_Object *parent);
+
+/**
+ * @brief Connects a plug widget to the service provided by the socket image.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Evas_Object where the new image object lives
+ * @param[in] svcname The service name to connect to the set up by the socket
+ * @param[in] svcnum The service number to connect to (set up by socket)
+ * @param[in] svcsys The boolean to set if the service is a system one or not (set up by socket)
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ */
+EAPI Eina_Bool elm_plug_connect(Evas_Object *obj, const char *svcname, int svcnum, Eina_Bool svcsys);
+
+/**
+ * @brief Gets the basic Evas_Image object from this object (widget).
+ *
+ * @details This function allows one to get the underlying @c Evas_Object of type
+ * Image from this elementary widget. It can be useful to do things like getting
+ * the pixel data, saving the image to a file, etc.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Be careful to not manipulate it, as it is under the control of
+ * elementary.
+ *
+ * @param[in] obj The image object to get the inlined image from
+ * @return The inlined image object, otherwise @c NULL if none exist
+ */
+EAPI Evas_Object *elm_plug_image_object_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sends a message to the plug widget's socket.
+ *
+ * @since 1.8.0
+ *
+ * @remarks Support for this depends on the underlying windowing system.
+ *
+ * @param[in] obj The plug object to send a message to
+ * @param[in] msg_domain The domain of the message
+ * @param[in] msg_id The ID of the message
+ * @param[in] data The data of the message
+ * @param[in] size The size of the message data
+ *
*/
+EAPI Eina_Bool elm_plug_msg_send(Evas_Object *obj, int msg_domain, int msg_id, void *data, int size);
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_plug_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_plug_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_progressbar.h b/src/lib/elm_progressbar.h
index cbb1516a1..ee6441e8f 100644
--- a/src/lib/elm_progressbar.h
+++ b/src/lib/elm_progressbar.h
@@ -1,12 +1,12 @@
/**
* @defgroup Progressbar Progress bar
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html progressbar_inheritance_tree.png
* @image latex progressbar_inheritance_tree.eps
*
- * The progress bar is a widget for visually representing the
- * progress status of a given job/task.
+ * @brief The progress bar is a widget for visually representing the progress
+ * status of a given job/task.
*
* A progress bar may be horizontal or vertical. It may display an
* icon besides it, as well as primary and @b units labels. The
@@ -14,7 +14,7 @@
* latter, which is formatted with floating point values (and thus
* accepts a <c>printf</c>-style format string, like <c>"%1.2f
* units"</c>), is meant to label the widget's <b>progress
- * value</b>. Label, icon and unit strings/objects are @b optional
+ * value</b>. Label, icon, and unit strings/objects are @b optional
* for progress bars.
*
* A progress bar may be @b inverted, in which case it gets its
@@ -25,8 +25,8 @@
* The @b span of the progress, as set by
* elm_progressbar_span_size_set(), is its length (horizontally or
* vertically), unless one puts size hints on the widget to expand
- * on desired directions, by any container. That length will be
- * scaled by the object or applications scaling factor.
+ * in desired directions, by any container. That length is
+ * scaled by the object or application's scaling factor.
* Applications can query the progress bar for its value with
* elm_progressbar_value_get().
*
@@ -34,41 +34,280 @@
* functions acting on it also work for progress bar objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li @c "changed" - when the value is changed (since 1.7)
- * @li @c "focused" - When the progressbar has received focus. (since 1.8)
- * @li @c "unfocused" - When the progressbar has lost focus. (since 1.8)
- * @li @c "language,changed" - the program's language changed (since 1.9)
+ * @ref Layout :
+ * @li @c "changed" - When the value is changed.
+ * @since 1.7
*
* This widget has the following styles:
* - @c "default"
* - @c "wheel" (simple style, no text, no progression, only
* "pulse" effect is available)
*
- * Default content parts of the progressbar widget that you can use for are:
- * @li "icon" - An icon of the progressbar
+ * The default text parts of the progressbar widget that you can use are:
+ * @li "default" - Label of the progressbar.
*
- * Default text parts of the progressbar widget that you can use for are:
- * @li "default" - A label of the progressbar
+ * The default content parts of the progressbar widget that you can use are:
+ * @li "icon" - Icon of the progressbar.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_part_text_set
* @li @ref elm_object_part_text_get
* @li @ref elm_object_part_content_set
* @li @ref elm_object_part_content_get
* @li @ref elm_object_part_content_unset
*
- * Here is an example on its usage:
- * @li @ref progressbar_example
+ * @{
*/
-#include "elm_progressbar_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_progressbar_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_progressbar_legacy.h"
-#endif
+/**
+ * @brief Adds a new progress bar widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new progress bar widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new progress bar widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_progressbar_add(Evas_Object *parent);
+
+/**
+ * @brief Sets whether a given progress bar widget is at the "pulsing mode".
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, progress bars display values from low to
+ * high value boundaries. There are, though, contexts in which the
+ * progress of a given task is @b unknown. For such cases,
+ * one can set a progress bar widget to a "pulsing state", to give
+ * the user an idea that some computation is being held, but
+ * without exact progress values. In the default theme, it
+ * animates its bar with the contents filling in constantly and back
+ * to non-filled, in a loop. To start and stop this pulsing
+ * animation, one has to explicitly call elm_progressbar_pulse().
+ *
+ * @param[in] obj The progress bar object
+ * @param[in] pulse If @c EINA_TRUE @a obj is put in the pulsing mode,
+ * otherwise @c EINA_FALSE to put it back to its default one
+ *
+ * @see elm_progressbar_pulse_get()
+ * @see elm_progressbar_pulse()
+ */
+EAPI void elm_progressbar_pulse_set(Evas_Object *obj, Eina_Bool pulse);
+
+/**
+ * @brief Gets whether a given progress bar widget is at the "pulsing mode".
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The progress bar object
+ * @return @c EINA_TRUE if @a obj is in the pulsing mode, otherwise @c EINA_FALSE
+ * if it's in the default one (and on errors)
+ */
+EAPI Eina_Bool elm_progressbar_pulse_get(const Evas_Object *obj);
+
+/**
+ * @brief Starts or stops a given progress bar "pulsing" animation, if its
+ * under that mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This call won't do anything if @a obj is not under the "pulsing mode".
+ *
+ * @param[in] obj The progress bar object
+ * @param[in] state If @c EINA_TRUE, @b start the pulsing animation,
+ * otherwise @c EINA_FALSE to @b stop it
+ *
+ * @see elm_progressbar_pulse_set()
+ */
+EAPI void elm_progressbar_pulse(Evas_Object *obj, Eina_Bool state);
+
+/**
+ * @brief Sets the progress value (in percentage) on a given progress bar
+ * widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use this call to set the progress bar levels.
+ *
+ * @remarks If you pass a value out of the specified range for @a
+ * val, it is interpreted as the @b closest of the @b boundary
+ * values in the range.
+ *
+ * @param[in] obj The progress bar object
+ * @param[in] val The progress value (@b must be between @c 0.0 and @c
+ * 1.0)
+ */
+EAPI void elm_progressbar_value_set(Evas_Object *obj, double val);
+
+/**
+ * @brief Gets the progress value (in percentage) on a given progress bar
+ * widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The progress bar object
+ * @return The value of the progressbar
+ *
+ * @see elm_progressbar_value_set()
+ */
+EAPI double elm_progressbar_value_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the (exact) length of the bar region of a given progress bar
+ * widget.
+ *
+ * @details This sets the minimum width (when in the horizontal mode) or height
+ * (when in the vertical mode) of the actual bar area of the progress
+ * bar @a obj. This in turn affects the object's minimum size. Use
+ * this when you're not setting other size hints expanding in the
+ * given direction (like weight and alignment hints) and you would
+ * like it to have a specific size.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Icon, label, and unit text around @a obj require their
+ * own space, which makes @a obj to require more @a size,
+ * actually.
+ *
+ * @param[in] obj The progress bar object
+ * @param[in] size The length of the progress bar's bar region
+ *
+ * @see elm_progressbar_span_size_get()
+ */
+EAPI void elm_progressbar_span_size_set(Evas_Object *obj, Evas_Coord size);
+
+/**
+ * @brief Gets the length set for the bar region of a given progress bar
+ * widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If that size is not set previously, with
+ * elm_progressbar_span_size_set(), this call returns @c 0.
+ *
+ * @param[in] obj The progress bar object
+ * @return The length of the progress bar's bar region
+ */
+EAPI Evas_Coord elm_progressbar_span_size_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the format string for a given progress bar widget's units
+ * label.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If @c NULL is passed on @a format, it makes @a obj units
+ * area to be hidden completely. If not, it sets the <b>format
+ * string</b> for the units label's @b text. The units label is
+ * provided with a floating point value, so the units text displays
+ * at most one floating point value. Note that the units label is
+ * optional. Use a format string such as "%1.2f meters" for
+ * example.
+ *
+ * @remarks The default format string for a progress bar is an integer
+ * percentage, as in @c "%.0f %%".
+ *
+ * @param[in] obj The progress bar object
+ * @param[in] format The format string for the @a obj units label
+ *
+ * @see elm_progressbar_unit_format_get()
+ */
+EAPI void elm_progressbar_unit_format_set(Evas_Object *obj, const char *format);
+
+/**
+ * @brief Retrieves the format string set for a given progress bar widget's
+ * units label.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The progress bar object
+ * @return The format set string for @a obj units label,
+ * otherwise @c NULL if none are set (and on errors)
+ *
+ * @see elm_progressbar_unit_format_set()
+ */
+EAPI const char *elm_progressbar_unit_format_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the format function pointer for the units label.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This sets the callback function to format the unit string.
+ *
+ * @param[in] obj The progress bar object
+ * @param[in] free_func The freeing function for the format string
+ *
+ * @see elm_progressbar_unit_format_set() for more info on how this works.
+ */
+EAPI void elm_progressbar_unit_format_function_set(Evas_Object *obj, char *(func)(double), void (*free_func) (char *));
+
+/**
+ * @brief Sets the orientation of a given progress bar widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use this function to change how your progress bar is to be
+ * disposed: vertically or horizontally.
+ *
+ * @param[in] obj The progress bar object
+ * @param[in] horizontal If @c EINA_TRUE @a obj is @b horizontal,
+ * otherwise @c EINA_FALSE if @a obj is @b vertical
+ *
+ * @see elm_progressbar_horizontal_get()
+ */
+EAPI void elm_progressbar_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Retrieves the orientation of a given progress bar widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The progress bar object
+ * @return @c EINA_TRUE if @a obj is set to be @b horizontal,
+ * otherwise @c EINA_FALSE if it's @b vertical (and on errors)
+ *
+ * @see elm_progressbar_horizontal_set()
+ */
+EAPI Eina_Bool elm_progressbar_horizontal_get(const Evas_Object *obj);
+
+/**
+ * @brief Inverts a given progress bar widget's displaying values order.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A progress bar may be @b inverted, in which case it gets its
+ * values inverted, with high values being on the left or top and
+ * low values on the right or bottom, as opposed to normally having
+ * low values on the former and high values on the latter,
+ * for horizontal and vertical modes respectively.
+ *
+ * @param[in] obj The progress bar object
+ * @param[in] inverted If @c EINA_TRUE @a obj is inverted,
+ * otherwise @c EINA_FALSE brings it back to the default, non-inverted values
+ *
+ * @see elm_progressbar_inverted_get()
+ */
+EAPI void elm_progressbar_inverted_set(Evas_Object *obj, Eina_Bool inverted);
+
+/**
+ * @brief Gets whether a given progress bar widget's displaying values are
+ * inverted.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The progress bar object
+ * @return @c EINA_TRUE if @a obj has inverted values,
+ * otherwise @c EINA_FALSE (and on errors)
+ *
+ * @see elm_progressbar_inverted_set()
+ */
+EAPI Eina_Bool elm_progressbar_inverted_get(const Evas_Object *obj);
+
/**
* @}
*/
diff --git a/src/lib/elm_radio.h b/src/lib/elm_radio.h
index 88e033388..83117aab9 100644
--- a/src/lib/elm_radio.h
+++ b/src/lib/elm_radio.h
@@ -1,27 +1,24 @@
/**
* @defgroup Radio Radio
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html radio_inheritance_tree.png
* @image latex radio_inheritance_tree.eps
*
- * @image html img/widget/radio/preview-00.png
- * @image latex img/widget/radio/preview-00.eps
- *
- * @brief Radio is a widget that allows for 1 or more options to be displayed
- * and have the user choose only 1 of them.
+ * @brief Radio is a widget that allows for @c 1 or more options to be displayed
+ * and have the user choose only @c 1 of them.
*
* A radio object contains an indicator, an optional Label and an optional
- * icon object. While it's possible to have a group of only one radio they,
- * are normally used in groups of 2 or more.
+ * icon object. While it's possible to have a group of only one radio, they
+ * are normally used in groups of @c 2 or more.
*
- * elm_radio objects are grouped in a slightly different, compared to other
- * UI toolkits. There is no seperate group name/id to remember or manage.
- * The members represent the group, there are the group. To make a group,
- * use elm_radio_group_add() and pass existing radio object and the new radio
+ * elm_radio objects are grouped in a slightly different manner compared to other
+ * UI toolkits. There is no separate group name/id to remember or manage.
+ * The members represent the group there are in. To make a group,
+ * use elm_radio_group_add() and pass an existing radio object and the new radio
* object.
*
- * The radio object(s) will select from one of a set
+ * The radio object(s) select one from a set
* of integer values, so any value they are configuring needs to be mapped to
* a set of integers. To configure what value that radio object represents,
* use elm_radio_state_value_set() to set the integer it represents. To set
@@ -30,28 +27,24 @@
* use elm_radio_value_get(). For convenience the radio objects are also able
* to directly set an integer(int) to the value that is selected. To specify
* the pointer to this integer to modify, use elm_radio_value_pointer_set().
- * The radio objects will modify this directly. That implies the pointer must
- * point to valid memory for as long as the radio objects exist.
+ * The radio objects modify this directly. That implies the pointer must
+ * point to a valid memory for as long as the radio objects exist.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for radio objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li @c "changed" - This is called when the radio object is selected. If you
- * want to trace the state change of a radio group, you should add this callback
- * to all the radio objects in that group.
- * @li @c "focused" - When the radio has received focus. (since 1.8)
- * @li @c "unfocused" - When the radio has lost focus. (since 1.8)
- * @li @c "language,changed" - the program's language changed (since 1.9)
+ * @ref Layout :
+ * @li changed - This is called whenever the user changes the state of one of
+ * the radio objects within the group of radio objects that work together.
*
- * Default content parts of the radio widget that you can use for are:
- * @li "icon" - An icon of the radio
+ * The default text parts of the radio widget that you can use are:
+ * @li "default" - Label of the radio.
*
- * Default text parts of the radio widget that you can use for are:
- * @li "default" - A label of the radio
+ * The default content parts of the radio widget that you can use are:
+ * @li "icon" - An icon of the radio.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_part_text_set
* @li @ref elm_object_part_text_get
* @li @ref elm_object_part_content_set
@@ -60,16 +53,111 @@
* @li @ref elm_object_disabled_set
* @li @ref elm_object_disabled_get
*
- * @ref tutorial_radio show most of this API in action.
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_radio_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_radio_legacy.h"
-#endif
+/**
+ * @brief Adds a new radio to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_radio_add(Evas_Object *parent);
+
+/**
+ * @brief Adds this radio to a group of other radio objects.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Radio objects work in groups. Each member should have a different integer
+ * value assigned. In order to have them work as a group, they need to know
+ * about each other. This adds the given radio object to the group of which
+ * the group object indicated is a member.
+ *
+ * @param[in] obj The radio object
+ * @param[in] group Any object whose group the @a obj is to join
+ */
+EAPI void elm_radio_group_add(Evas_Object *obj, Evas_Object *group);
+
+/**
+ * @brief Sets the integer value that this radio object represents.
+ *
+ * @details This sets the value of the radio.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The radio object
+ * @param[in] value The value to use if this radio object is selected
+ */
+EAPI void elm_radio_state_value_set(Evas_Object *obj, int value);
+
+/**
+ * @brief Gets the integer value that this radio object represents.
+ *
+ * @details This gets the value of the radio.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The radio object
+ * @return The value used if this radio object is selected
+ *
+ * @see elm_radio_value_set()
+ */
+EAPI int elm_radio_state_value_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the value of the radio group.
+ *
+ * @details This sets the value of the radio group and also sets the value if
+ * pointed to, to the value supplied, but does not call any callbacks.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The radio object (any radio object of the group).
+ * @param[in] value The value to use for the group
+ */
+EAPI void elm_radio_value_set(Evas_Object *obj, int value);
+
+/**
+ * @brief Gets the value of the radio group.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The radio object (any radio object of the group)
+ * @return The integer state
+ */
+EAPI int elm_radio_value_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets a convenience pointer to an integer to change when the radio group
+ * value changes.
+ *
+ * @details This sets a pointer to an integer, that, in addition to the radio objects
+ * state is also modified directly. To stop setting the object it points
+ * to simply use @c NULL as the @a valuep argument. If @a valuep is not @c NULL, then
+ * when this is called, the radio objects state is also modified to
+ * reflect the value of the integer that valuep points to, just like calling
+ * elm_radio_value_set().
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The radio object (any object of a group)
+ * @param[out] valuep A pointer to the integer to modify
+ */
+EAPI void elm_radio_value_pointer_set(Evas_Object *obj, int *valuep);
+
+/**
+ * @brief Gets the selected radio object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj Any radio object (any object of a group)
+ * @return The selected radio object
+ */
+EAPI Evas_Object *elm_radio_selected_object_get(Evas_Object *obj);
+
/**
* @}
*/
diff --git a/src/lib/elm_route.h b/src/lib/elm_route.h
index 80ba517c0..e5e045455 100644
--- a/src/lib/elm_route.h
+++ b/src/lib/elm_route.h
@@ -1,21 +1,64 @@
/**
+ * @internal
* @defgroup Route Route
* @ingroup Elementary
*
* @image html route_inheritance_tree.png
* @image latex route_inheritance_tree.eps
*
- * For displaying a route on the map widget.
+ * @brief For displaying a route on the map widget.
*
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_route_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_route_legacy.h"
+/**
+ * @internal
+ *
+ * @brief Adds a new route object to the parent's canvas.
+ *
+ * @param parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @ingroup Route
+ */
+EAPI Evas_Object *elm_route_add(Evas_Object *parent);
+
+#ifdef ELM_EMAP
+EAPI void elm_route_emap_set(Evas_Object *obj, EMap_Route *emap);
#endif
+
+/**
+ * @internal
+ *
+ * @brief Gets the minimum and maximum values along the longitude.
+ *
+ * @remarks If only one value is needed, the other pointer can be passed
+ * as @c NULL.
+ *
+ * @param obj The route object
+ * @param min A pointer to store the minimum value
+ * @param max A pointer to store the maximum value
+ *
+ * @ingroup Route
+ */
+EAPI void elm_route_longitude_min_max_get(const Evas_Object *obj, double *min, double *max);
+
+/**
+ * @internal
+ *
+ * @brief Gets the minimum and maximum values along the latitude.
+ *
+ * @remarks If only one value is needed, the other pointer can be passed
+ * as @c NULL.
+ *
+ * @param obj The route object
+ * @param min A pointer to store the minimum value
+ * @param max A pointer to store the maximum value
+ *
+ * @ingroup Route
+ */
+EAPI void elm_route_latitude_min_max_get(const Evas_Object *obj, double *min, double *max);
+
/**
* @}
*/
diff --git a/src/lib/elm_scale.h b/src/lib/elm_scale.h
index 4332e732c..41e63de71 100644
--- a/src/lib/elm_scale.h
+++ b/src/lib/elm_scale.h
@@ -1,34 +1,36 @@
/**
* @defgroup Scaling Widget Scaling
- * @ingroup Elementary
- *
- * Different widgets can be scaled independently. These functions
- * allow you to manipulate this scaling on a per-widget basis. The
- * object and all its children get their scaling factors multiplied
- * by the scale factor set. This is multiplicative, in that if a
- * child also has a scale size set it is in turn multiplied by its
- * parent's scale size. @c 1.0 means “don't scale”, @c 2.0 is
- * double size, @c 0.5 is half, etc.
- *
- * @ref general_functions_example_page "This" example contemplates
- * some of these functions.
+ * @ingroup elm_infra_group
+ *
+ * @brief Different widgets can be scaled independently. These functions
+ * allow you to manipulate this scaling on a per-widget basis. The
+ * object and all its children get their scaling factors multiplied
+ * by the scale factor set. This is multiplicative, in that if a
+ * child also has a scale size set, it is in turn multiplied by its
+ * parent's scale size. @c 1.0 means “don't scale”, @c 2.0 is
+ * double size, @c 0.5 is half, etc.
+ *
*/
/**
- * Set the scaling factor for a given Elementary object
+ * @brief Sets the scaling factor for a given Elementary object.
*
- * @param obj The Elementary to operate on
- * @param scale Scale factor (from @c 0.0 up, with @c 1.0 meaning
- * no scaling)
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The Elementary to operate on
+ * @param[in] scale The scale factor (from @c 0.0 up, with @c 1.0 meaning
+ * no scaling)
*
* @ingroup Scaling
*/
EAPI void elm_object_scale_set(Evas_Object *obj, double scale);
/**
- * Get the scaling factor for a given Elementary object
+ * @brief Gets the scaling factor for a given Elementary object.
+ *
+ * @since_tizen 2.3
*
- * @param obj The object
+ * @param[in] obj The object
* @return The scaling factor set by elm_object_scale_set()
*
* @ingroup Scaling
diff --git a/src/lib/elm_scroll.h b/src/lib/elm_scroll.h
index feb541c27..1fd424b3e 100644
--- a/src/lib/elm_scroll.h
+++ b/src/lib/elm_scroll.h
@@ -1,167 +1,148 @@
/**
* @defgroup Scrollhints Scrollhints
- * @ingroup Elementary
+ * @ingroup elm_infra_group
+ * @brief This group provides functions to handle scroll behavior of Elementary
+ * Widgets.
*
* Objects when inside a scroller can scroll, but this may not always be
* desirable in certain situations. This allows an object to hint to itself
- * and parents to "not scroll" in one of 2 ways. If any child object of a
+ * and its parents to "not scroll" in one of the following 2 ways. If any child object of a
* scroller has pushed a scroll freeze or hold then it affects all parent
* scrollers until all children have released them.
*
* 1. To hold on scrolling. This means just flicking and dragging may no
- * longer scroll, but pressing/dragging near an edge of the scroller will
- * still scroll. This is automatically used by the entry object when
+ * longer scroll, but pressing/dragging near the edge of the scroller
+ * still scrolls. This is automatically used by the entry object when
* selecting text.
*
- * 2. To totally freeze scrolling. This means it stops. until
+ * 2. To totally freeze scrolling. This means it stops until
* popped/released.
*
* @{
*/
/**
- * Push the scroll hold by 1
+ * @brief Pushes the scroll hold by @c 1.
*
- * This increments the scroll hold count by one. If it is more than 0 it will
- * take effect on the parents of the indicated object.
+ * @details This increments the scroll hold count by one. If it is more than @c 0 it
+ * takes effect on the parents of the indicated object.
*
- * @param obj The object
- * @ingroup Scrollhints
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object
*/
EAPI void elm_object_scroll_hold_push(Evas_Object *obj);
/**
- * Pop the scroll hold by 1
+ * @brief Pops the scroll hold by @c 1.
*
- * This decrements the scroll hold count by one. If it is more than 0 it will
- * take effect on the parents of the indicated object.
+ * @details This decrements the scroll hold count by one. If it is more than @c 0 it
+ * takes effect on the parents of the indicated object.
*
- * @param obj The object
- * @ingroup Scrollhints
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object
*/
EAPI void elm_object_scroll_hold_pop(Evas_Object *obj);
/**
- * Get the scroll hold by 1
+ * @brief Gets the scroll hold by @c 1.
*
- * This gets the scroll hold count by one.
+ * @details This gets the scroll hold count by @c 1.
*
- * @param obj The object
- * @return The scroll hold count
* @since 1.7
- * @ingroup Scrollhints
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object
+ * @return The scroll hold count
*/
EAPI int elm_object_scroll_hold_get(const Evas_Object *obj);
/**
- * Push the scroll freeze by 1
+ * @brief Pushes the scroll freeze by @c 1.
*
- * This increments the scroll freeze count by one. If it is more
- * than 0 it will take effect on the parents of the indicated
- * object.
+ * @details This increments the scroll freeze count by @c 1. If it is more
+ * than @c 0 it takes effect on the parents of the indicated
+ * object.
*
- * @param obj The object
- * @ingroup Scrollhints
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object
*/
EAPI void elm_object_scroll_freeze_push(Evas_Object *obj);
/**
- * Pop the scroll freeze by 1
+ * @brief Pops the scroll freeze by @c 1.
*
- * This decrements the scroll freeze count by one. If it is more
- * than 0 it will take effect on the parents of the indicated
- * object.
+ * @details This decrements the scroll freeze count by @c 1. If it is more
+ * than @c 0 it takes effect on the parents of the indicated
+ * object.
*
- * @param obj The object
- * @ingroup Scrollhints
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object
*/
EAPI void elm_object_scroll_freeze_pop(Evas_Object *obj);
/**
- * Get the scroll freeze by 1
+ * @brief Gets the scroll freeze by @c 1.
*
- * This gets the scroll freeze count by one.
+ * @details This gets the scroll freeze count by @c 1.
*
- * @param obj The object
- * @return The scroll freeze count
* @since 1.7
- * @ingroup Scrollhints
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object
+ * @return The scroll freeze count
*/
EAPI int elm_object_scroll_freeze_get(const Evas_Object *obj);
/**
- * Lock the scrolling of the given widget (and thus all parents)
+ * @brief Locks the scrolling of the given widget (and thus all the parents).
*
- * This locks the given object from scrolling in the X axis (and implicitly
- * also locks all parent scrollers too from doing the same).
+ * @details This locks the given object from scrolling in the X axis (and implicitly
+ * locks all the parent scrollers too from doing the same).
*
* @param obj The object
- * @param lock The lock state (1 == locked, 0 == unlocked)
- * @ingroup Scrollhints
+ * @param lock The lock state (@c 1 == locked, @c 0 == unlocked)
*/
EAPI void elm_object_scroll_lock_x_set(Evas_Object *obj, Eina_Bool lock);
/**
- * Lock the scrolling of the given widget (and thus all parents)
+ * @brief Locks the scrolling of the given widget (and thus all the parents).
*
- * This locks the given object from scrolling in the Y axis (and implicitly
- * also locks all parent scrollers too from doing the same).
+ * @details This locks the given object from scrolling in the Y axis (and implicitly
+ * locks all the parent scrollers too from doing the same).
*
- * @param obj The object
- * @param lock The lock state (1 == locked, 0 == unlocked)
- * @ingroup Scrollhints
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object
+ * @param[in] lock The lock state (@c 1 == locked, @c 0 == unlocked)
*/
EAPI void elm_object_scroll_lock_y_set(Evas_Object *obj, Eina_Bool lock);
/**
- * Get the scrolling lock of the given widget
+ * @brief Gets the scrolling lock of the given widget.
*
- * This gets the lock for X axis scrolling.
+ * @details This gets the lock for the X axis scrolling.
*
- * @param obj The object
- * @ingroup Scrollhints
+ * @param[in] obj The object
+ * @return #EINA_TRUE if it is locked, otherwise #EINA_FALSE
*/
EAPI Eina_Bool elm_object_scroll_lock_x_get(const Evas_Object *obj);
/**
- * Get the scrolling lock of the given widget
+ * @brief Gets the scrolling lock of the given widget.
*
- * This gets the lock for Y axis scrolling.
+ * @details This gets the lock for the Y axis scrolling.
*
- * @param obj The object
- * @ingroup Scrollhints
+ * @param[in] obj The object
+ * @return #EINA_TRUE if it is locked, otherwise #EINA_FALSE
*/
EAPI Eina_Bool elm_object_scroll_lock_y_get(const Evas_Object *obj);
/**
- * Enable item loop feature of the given widget
- *
- * If @p enable is @c EINA_TRUE, item selection/focus will loop internally.
- * This means if arrow keys are pressed at end of scroller's item,
- * screen is moved to opposite side.
- *
- * @param obj The object
- * @param enable item loop feature (@c EINA_TRUE == enable, @c EINA_FALSE == disable)
- *
- * @see elm_object_scroll_item_loop_enabled_get()
- * @since 1.10
- * @ingroup Scrollitem
- */
-EAPI void elm_object_scroll_item_loop_enabled_set(Evas_Object *obj, Eina_Bool enable);
-
-/**
- * Get the item loop enable status of the given widget
- *
- * This gets the item loop enabled status.
- *
- * @param obj The object
- *
- * @see elm_objecdt_scroll_item_enabled_set()
- * @since 1.10
- * @ingroup Scrollitem
- */
-EAPI Eina_Bool elm_object_scroll_item_loop_enabled_get(const Evas_Object *obj);
-
-/**
* @}
*/
diff --git a/src/lib/elm_scroller.h b/src/lib/elm_scroller.h
index 0c36c7415..ee3da8365 100644
--- a/src/lib/elm_scroller.h
+++ b/src/lib/elm_scroller.h
@@ -1,76 +1,683 @@
/**
* @defgroup Scroller Scroller
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html scroller_inheritance_tree.png
* @image latex scroller_inheritance_tree.eps
*
+ * @brief A Scroller can contain a scrollable object.
+ *
* A scroller holds (and clips) a single object and "scrolls it
* around". This means that it allows the user to use a scroll bar (or
* a finger) to drag the viewable region around, moving through a much
- * larger object that is contained in the scroller. The scroller will
- * always have a small minimum size by default as it won't be limited
+ * larger object that is contained in the scroller. The scroller is
+ * always having a small minimum size by default as it is not limited
* by the contents of the scroller.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for scroller objects.
*
* This widget emits the following signals, besides the ones sent from
- * @li @c "edge,left" - the left edge of the content has been reached
- * @li @c "edge,right" - the right edge of the content has been reached
- * @li @c "edge,top" - the top edge of the content has been reached
- * @li @c "edge,bottom" - the bottom edge of the content has been reached
- * @li @c "scroll" - the content has been scrolled (moved)
- * @li @c "scroll,left" - the content has been scrolled (moved) leftwards
- * @li @c "scroll,right" - the content has been scrolled (moved) rightwards
- * @li @c "scroll,up" - the content has been scrolled (moved) upwards
- * @li @c "scroll,down" - the content has been scrolled (moved) downwards
- * @li @c "scroll,anim,start" - scrolling animation has started
- * @li @c "scroll,anim,stop" - scrolling animation has stopped
- * @li @c "scroll,drag,start" - dragging the contents around has started
- * @li @c "scroll,drag,stop" - dragging the contents around has stopped
- * @li @c "vbar,drag" - the vertical scroll bar has been dragged
- * @li @c "vbar,press" - the vertical scroll bar has been pressed
- * @li @c "vbar,unpress" - the vertical scroll bar has been unpressed
- * @li @c "hbar,drag" - the horizontal scroll bar has been dragged
- * @li @c "hbar,press" - the horizontal scroll bar has been pressed
- * @li @c "hbar,unpress" - the horizontal scroll bar has been unpressed
- * @li @c "scroll,page,changed" - the visible page has changed
- * @li @c "focused" - When the scroller has received focus. (since 1.8)
- * @li @c "unfocused" - When the scroller has lost focus. (since 1.8)
- *
- * This widget implements the @ref elm-scrollable-interface interface.
+ * @li @c "edge,left" - The left edge of the content has been reached.
+ * @li @c "edge,right" - The right edge of the content has been reached.
+ * @li @c "edge,top" - The top edge of the content has been reached.
+ * @li @c "edge,bottom" - The bottom edge of the content has been reached.
+ * @li @c "scroll" - The content has been scrolled (moved).
+ * @li @c "scroll,anim,start" - Scrolling animation has started.
+ * @li @c "scroll,anim,stop" - Scrolling animation has stopped.
+ * @li @c "scroll,drag,start" - Dragging the contents around has started.
+ * @li @c "scroll,drag,stop" - Dragging the contents around has stopped.
+ *
+ * This widget implements the elm-scrollable-interface interface.
* Its (non-deprecated) API functions, except for elm_scroller_add(),
* which gives basic scroller objects, are meant to be a basis for all
- * other scrollable widgets (i.e. widgets implementing @ref
- * elm-scrollable-interface). So, they will work both on pristine
+ * other scrollable widgets (i.e. widgets implementing
+ * elm-scrollable-interface). So, they work on both pristine
* scroller widgets and on other "specialized" scrollable widgets.
*
- * @note The @c "scroll,anim,*" and @c "scroll,drag,*" signals are
+ * The @c "scroll,anim,*" and @c "scroll,drag,*" signals are
* only emitted by user intervention.
*
- * @note When Elementary is under its default profile and theme (meant
- * for touch interfaces), scroll bars will @b not be draggable --
+ * When Elementary is under its default profile and theme (meant
+ * for touch interfaces), scroll bars are @b not draggable,
* their function is merely to indicate how much has been scrolled.
*
- * @note When Elementary is under its desktop/standard profile and
+ * When Elementary is under its desktop/standard profile and
* theme, the thumb scroll (a.k.a. finger scroll) won't work.
*
* Default content parts of the scroller widget that you can use are:
- * @li @c "default" - A content of the scroller
+ * @li @c "default" - Content of the scroller.
*
- * In @ref tutorial_scroller you'll find an example on how to use most
- * of this API.
* @{
*/
-#include <elm_scroller_common.h>
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_scroller_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_scroller_legacy.h>
-#endif
+/**
+ * @brief Enumeration that defines types that control when scrollbars should appear.
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_scroller_policy_set()
+ */
+typedef enum
+{
+ ELM_SCROLLER_POLICY_AUTO = 0, /**< Show scrollbars as needed */
+ ELM_SCROLLER_POLICY_ON, /**< Always show scrollbars */
+ ELM_SCROLLER_POLICY_OFF, /**< Never show scrollbars */
+ ELM_SCROLLER_POLICY_LAST
+} Elm_Scroller_Policy;
+
+/**
+ * @brief Enumeration that defines types that control how the content is scrolled.
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_scroller_single_direction_set()
+ */
+typedef enum
+{
+ ELM_SCROLLER_SINGLE_DIRECTION_NONE = 0, /**< Scroll in every direction */
+ ELM_SCROLLER_SINGLE_DIRECTION_SOFT, /**< Scroll in a single direction if the direction is certain */
+ ELM_SCROLLER_SINGLE_DIRECTION_HARD, /**< Scroll only in a single direction */
+ ELM_SCROLLER_SINGLE_DIRECTION_LAST
+} Elm_Scroller_Single_Direction;
+
+/**
+ * @brief Enumeration that defines types that block the scroll movement in one or more directions.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @see elm_scroller_movement_block()
+ */
+typedef enum
+{
+ ELM_SCROLLER_MOVEMENT_NO_BLOCK = 1 << 0, /**< Do not block movements */
+ ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL = 1 << 1, /**< Block vertical movements */
+ ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL = 1 << 2 /**< Block horizontal movements */
+} Elm_Scroller_Movement_Block;
+
+/**
+ * @brief Adds a new scroller to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ */
+EAPI Evas_Object *elm_scroller_add(Evas_Object *parent);
+
+/**
+ * @internal
+ *
+ * @brief Sets the custom theme elements for the scroller.
+ *
+ * @param obj The scroller object
+ * @param widget The widget name to use (default is "scroller")
+ * @param base The base name to use (default is "base")
+ *
+ * @deprecated Use elm_layout_theme_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_scroller_custom_widget_base_theme_set(Evas_Object *obj, const char *widget, const char *base);
+
+/**
+ * @brief Makes the scroller's minimum size limited to the minimum size of the content.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default the scroller is as small as its design allows,
+ * irrespective of its content. This makes the scroller's minimum size the
+ * right size horizontally and/or vertically to perfectly fit its content in
+ * that direction.
+ *
+ * @param[in] obj The scroller object
+ * @param[in] w The boolean value that enables limiting minimum size horizontally
+ * @param[in] h The boolean value that enables limiting minimum size vertically
+ */
+EAPI void elm_scroller_content_min_limit(Evas_Object *obj, Eina_Bool w, Eina_Bool h);
+
+/**
+ * @brief Shows a specific virtual region within the scroller content object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This ensures that all (or part if it does not fit) of the designated
+ * region in the virtual content object ((0, 0) starting at the top-left of the
+ * virtual content object) is shown within the scroller.
+ *
+ * @param[in] obj The scroller object
+ * @param[in] x The x coordinate of the region
+ * @param[in] y The y coordinate of the region
+ * @param[in] w The width of the region
+ * @param[in] h The height of the region
+ */
+EAPI void elm_scroller_region_show(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
+
+/**
+ * @brief Sets the scrollbar visibility policy.
+ *
+ * @details This sets the scrollbar visibility policy for the given scroller.
+ * @c ELM_SCROLLER_POLICY_AUTO means the scrollbar is made visible if it is
+ * needed, and otherwise kept hidden. @c ELM_SCROLLER_POLICY_ON turns it on all
+ * the time, and @c ELM_SCROLLER_POLICY_OFF always keeps it off. This applies
+ * respectively for the horizontal and vertical scrollbars.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @param[in] policy_h The horizontal scrollbar policy
+ * @param[in] policy_v The vertical scrollbar policy
+ */
+EAPI void elm_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
+
+/**
+ * @brief Gets the scrollbar visibility policy.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @param[out] policy_h The horizontal scrollbar policy
+ * @param[out] policy_v The vertical scrollbar policy
+ *
+ * @see elm_scroller_policy_set()
+ */
+EAPI void elm_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
+
+/**
+ * @brief Sets the type of a single direction scroll.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @param[in] single_dir The type of single direction
+ *
+ * @see elm_scroller_single_direction_get()
+ */
+EAPI void elm_scroller_single_direction_set(Evas_Object *obj, Elm_Scroller_Single_Direction single_dir);
+
+/**
+ * @brief Gets the type of a single direction scroll.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @return The type of single direction
+ *
+ * @see elm_scroller_single_direction_get()
+ */
+EAPI Elm_Scroller_Single_Direction elm_scroller_single_direction_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the currently visible content region.
+ *
+ * @details This gets the current region in the content object that is visible through
+ * the scroller. The region co-ordinates are returned in the values that @a x, @a y, @a
+ * w, and @a h point to.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks All the coordinates are relative to the content.
+ *
+ * @param[in] obj The scroller object
+ * @param[out] x The x coordinate of the region
+ * @param[out] y The y coordinate of the region
+ * @param[out] w The width of the region
+ * @param[out] h The height of the region
+ *
+ * @see elm_scroller_region_show()
+ */
+EAPI void elm_scroller_region_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @brief Gets the size of the content object.
+ *
+ * @details This gets the size of the content object of the scroller.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @param[out] w The width of the content object
+ * @param[out] h The height of the content object
+ */
+EAPI void elm_scroller_child_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @brief Sets the bounce behavior.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When scrolling, the scroller may "bounce" when reaching an edge of the
+ * content object. This is a visual way to indicate that the end has been reached.
+ * This is enabled by default for both axis. This API is set if it is enabled
+ * for the given axis with the boolean parameters for each axis.
+ *
+ * @param[in] obj The scroller object
+ * @param[in] h_bounce If @c EINA_TRUE horizontal bouncing is enabled,
+ * otherwise @c EINA_FALSE to disable it
+ * @param[in] v_bounce If @c EINA_TRUE vertical bouncing is enabled
+ * otherwise @c EINA_FALSE to disable it
+ */
+EAPI void elm_scroller_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
+
+/**
+ * @brief Gets the bounce behaviour.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @param[out] h_bounce If @c EINA_TRUE horizontal bouncing is enabled
+ * otherwise @c EINA_FALSE to disable it
+ * @param[out] v_bounce If @c EINA_TRUE vertical bouncing is enabled
+ * otherwise @c EINA_FALSE to disable it
+ *
+ * @see elm_scroller_bounce_set()
+ */
+EAPI void elm_scroller_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
+
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ */
+EAPI void elm_scroller_origin_reverse_set(Evas_Object *obj, Eina_Bool origin_x, Eina_Bool origin_y);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ */
+EAPI void elm_scroller_origin_reverse_get(Evas_Object *obj, Eina_Bool *origin_x, Eina_Bool *origin_y);
+
+/**
+ * @brief Sets the scroll page size relative to the viewport size.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The 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. @c 1.0 is "1
+ * viewport" which is the size (horizontally or vertically). @c 0.0 turns it off in that
+ * axis. This is mutually exclusive with the page size
+ * (see elm_scroller_page_size_set() for more information). Likewise @c 0.5
+ * is "half a viewport". Usable values are normally between @c 0.0 and @c 1.0
+ * including @c 1.0. If you only want @c 1 axis to be page "limited", use @c 0.0 for
+ * the other axis.
+ *
+ * @param[in] obj The scroller object
+ * @param[in] h_pagerel The horizontal page relative size
+ * @param[in] v_pagerel The vertical page relative size
+ */
+EAPI void elm_scroller_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel);
+
+/**
+ * @brief Gets a given scroller widget's scrolling page size, relative to
+ * its viewport size.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @param[out] h_pagerel The pointer to a variable in which to store the
+ * horizontal page (relative) size
+ * @param[out] v_pagerel The pointer to a variable in which to store the
+ * vertical page (relative) size
+ *
+ * @see elm_scroller_page_relative_set()
+ */
+EAPI void elm_scroller_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel);
+
+/**
+ * @brief Sets the scroll page size.
+ *
+ * @details This sets the page size to an absolute fixed value, with @c 0 turning it off
+ * for that axis.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @param[in] h_pagesize The horizontal page size
+ * @param[in] v_pagesize The vertical page size
+ *
+ * @see elm_scroller_page_relative_set()
+ * @see elm_scroller_page_size_get()
+ */
+EAPI void elm_scroller_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize);
+
+/**
+ * @brief Retrieves a scroller widget's current page size.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @param[out] h_pagesize The location to store its horizontal page size
+ * @param[out] v_pagesize The location to store its vertical page size
+ *
+ * @see elm_scroller_page_size_set() for more details
+ * @see elm_scroller_page_relative_set()
+ */
+EAPI void elm_scroller_page_size_get(const Evas_Object *obj, Evas_Coord *h_pagesize, Evas_Coord *v_pagesize);
+
+/**
+ * @brief Sets the maximum limit of the movable page at flicking.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The value of the maximum movable page should be more than @c 1.
+ *
+ * @param[in] obj The scroller object
+ * @param[in] page_limit_h The maximum limit of the movable horizontal page
+ * @param[in] page_limit_v The maximum limit of the movable vertical page
+ *
+ * @see elm_scroller_page_scroll_limit_get()
+ */
+EAPI void elm_scroller_page_scroll_limit_set(Evas_Object *obj, int page_limit_h, int page_limit_v);
+
+/**
+ * @brief Gets the maximum limit of the movable page at flicking.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @param[out] page_limit_h The maximum limit of the movable horizontal page
+ * @param[out] page_limit_v The maximum limit of the movable vertical page
+ *
+ * @see elm_scroller_page_scroll_limit_set()
+ */
+EAPI void elm_scroller_page_scroll_limit_get(Evas_Object *obj, int *page_limit_h, int *page_limit_v);
+
+/**
+ * @brief Gets the scroll's current page number.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The page number starts from @c 0. @c 0 is the first page.
+ * Current page means the page which meets the top-left corner of the viewport.
+ * If there are two or more pages in the viewport, it returns the number of the pages
+ * that meet the top-left corner of the viewport.
+ *
+ * @param[in] obj The scroller object
+ * @param[out] h_pagenumber The horizontal page number
+ * @param[out] v_pagenumber The vertical page number
+ *
+ * @see elm_scroller_last_page_get()
+ * @see elm_scroller_page_show()
+ * @see elm_scroller_page_bring_in()
+ */
+EAPI void elm_scroller_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
+
+/**
+ * @brief Gets the scroll's last page number.
+ *
+ * @details This returns the last page number among the pages.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The page number starts from @c 0. @c 0 is the first page.
+ *
+ * @param[in] obj The scroller object
+ * @param[out] h_pagenumber The horizontal page number
+ * @param[out] v_pagenumber The vertical page number
+ *
+ * @see elm_scroller_current_page_get()
+ * @see elm_scroller_page_show()
+ * @see elm_scroller_page_bring_in()
+ */
+EAPI void elm_scroller_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
+
+/**
+ * @brief Shows a specific virtual region within the scroller content object by the page number.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks (0, 0) of the indicated page is located at the top-left corner of the viewport.
+ * This jumps to the page directly without animation.
+ *
+ * Example of usage:
+ *
+ * @code
+ * sc = elm_scroller_add(win);
+ * elm_object_content_set(sc, content);
+ * elm_scroller_page_relative_set(sc, 1, 0);
+ * elm_scroller_current_page_get(sc, &h_page, &v_page);
+ * elm_scroller_page_show(sc, h_page + 1, v_page);
+ * @endcode
+ *
+ * @param[in] obj The scroller object
+ * @param[in] h_pagenumber The horizontal page number
+ * @param[in] v_pagenumber The vertical page number
+ *
+ * @see elm_scroller_page_bring_in()
+ */
+EAPI void elm_scroller_page_show(Evas_Object *obj, int h_pagenumber, int v_pagenumber);
+
+/**
+ * @brief Shows a specific virtual region within the scroller content object by the page number.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks (0, 0) of the indicated page is located at the top-left corner of the viewport.
+ * This slides to the page with animation.
+ *
+ * Example of usage:
+ *
+ * @code
+ * sc = elm_scroller_add(win);
+ * elm_object_content_set(sc, content);
+ * elm_scroller_page_relative_set(sc, 1, 0);
+ * elm_scroller_last_page_get(sc, &h_page, &v_page);
+ * elm_scroller_page_bring_in(sc, h_page, v_page);
+ * @endcode
+ *
+ * @param[in] obj The scroller object
+ * @param[in] h_pagenumber The horizontal page number
+ * @param[in] v_pagenumber The vertical page number
+ *
+ * @see elm_scroller_page_show()
+ */
+EAPI void elm_scroller_page_bring_in(Evas_Object *obj, int h_pagenumber, int v_pagenumber);
+
+/**
+ * @brief Shows a specific virtual region within the scroller content object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This ensures that all (or part, if it does not fit) of the designated
+ * region in the virtual content object ((0, 0) starting at the top-left of the
+ * virtual content object) is shown within the scroller. Unlike
+ * elm_scroller_region_show(), this allows the scroller to "smoothly slide"
+ * to this location (if configuration in general calls for transitions). It
+ * may not jump immediately to the new location and may take a while and
+ * show other content along the way.
+ *
+ * @param[in] obj The scroller object
+ * @param[in] x The x coordinate of the region
+ * @param[in] y The y coordinate of the region
+ * @param[in] w The width of the region
+ * @param[in] h The height of the region
+ *
+ * @see elm_scroller_region_show()
+ */
+EAPI void elm_scroller_region_bring_in(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
+
+/**
+ * @brief Sets event propagation on a scroller.
+ *
+ * @details This enables or disables event propagation from the scroller
+ * content to the scroller and its parent. By default event
+ * propagation is @b enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @param[in] propagation The boolean value that indicates whether propagation is enabled
+ */
+EAPI void elm_scroller_propagate_events_set(Evas_Object *obj, Eina_Bool propagation);
+
+/**
+ * @brief Gets event propagation for a scroller.
+ *
+ * @details This gets the event propagation for a scroller.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @return The propagation state
+ *
+ * @see elm_scroller_propagate_events_set()
+ */
+EAPI Eina_Bool elm_scroller_propagate_events_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the scrolling gravity on a scroller.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The gravity, defines how the scroller adjusts its view
+ * when the size of the scroller content increases.
+ *
+ * @remarks The scroller adjusts the view to glue itself as follows:
+ *
+ * x=0.0, for showing the left most region of the content.
+ * x=1.0, for showing the right most region of the content.
+ * y=0.0, for showing the bottom most region of the content.
+ * y=1.0, for showing the top most region of the content.
+ *
+ * @remarks Default value for x and y is @c 0.0.
+ *
+ * @param[in] obj The scroller object
+ * @param[in] x The scrolling horizontal gravity
+ * @param[in] y The scrolling vertical gravity
+ */
+EAPI void elm_scroller_gravity_set(Evas_Object *obj, double x, double y);
+
+/**
+ * @brief Gets scrolling gravity values for a scroller.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This gets gravity values for a scroller.
+ *
+ * @param[in] obj The scroller object
+ * @param[out] x The scrolling horizontal gravity
+ * @param[out] y The scrolling vertical gravity
+ *
+ * @see elm_scroller_gravity_set()
+ */
+EAPI void elm_scroller_gravity_get(const Evas_Object *obj, double *x, double *y);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sets the mouse wheel event on a scroller.
+ *
+ * @details This enables or disables the mouse wheel event for a scroller.
+ * By default mouse wheel event is enabled.
+ *
+ * @param obj The scroller object
+ * @param disabled The boolean value that indicates whether the wheel event is disabled
+ */
+EAPI void elm_scroller_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the mouse wheel event for a scroller.
+ *
+ * @remarks This gets whether the mouse wheel event is disabled.
+ *
+ * @param obj The scroller object
+ *
+ * @see elm_scroller_wheel_disabled_set()
+ */
+EAPI Eina_Bool elm_scroller_wheel_disabled_get(const Evas_Object *obj);
+
+/**
+ * @remarks Tizen only feature (but will be patched into upstream)
+ *
+ * @brief Sets the infinite loop for a scroller.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This sets the infinite loop for a scroller.
+ *
+ * @param[in] obj The scroller object
+ * @param[in] loop_h The scrolling horizontal loop
+ * @param[in] loop_v The scrolling vertical loop
+ */
+EAPI void elm_scroller_loop_set(Evas_Object *obj, Eina_Bool loop_h, Eina_Bool loop_v);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the infinite loop for a scroller.
+ *
+ * @since 1.8
+ *
+ * @remarks This gets the infinite loop for a scroller.
+ *
+ * @param[in] obj The scroller object
+ * @param[out] loop_h The scrolling horizontal loop
+ * @param[out] loop_v The scrolling vertical loop
+ *
+ * @see elm_scroller_loop_set()
+ */
+
+EAPI void elm_scroller_loop_get(const Evas_Object *obj, Eina_Bool *loop_h, Eina_Bool *loop_v);
+
+/**
+ * @brief Sets blocking of scrolling (per axis) on a given scroller.
+ *
+ * @details This function blocks the scrolling movement (by input of a user) in
+ * a given direction. One can disable movements in the X axis, the Y
+ * axis, or both. The default value is @c ELM_SCROLLER_MOVEMENT_NO_BLOCK,
+ * where movements are allowed in both directions.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks What makes this function different from
+ * elm_object_scroll_freeze_push(), elm_object_scroll_hold_push(), and
+ * elm_object_scroll_lock_x_set() (or elm_object_scroll_lock_y_set())
+ * is that it @b doesn't propagate its effects to any parent or child
+ * widget of @a obj. Only the target scrollable widget is locked
+ * with regards to scrolling.
+ *
+ * @param[in] obj The scroller object
+ * @param[in] block The axis to block
+ */
+EAPI void elm_scroller_movement_block_set(Evas_Object *obj, Elm_Scroller_Movement_Block block);
+
+/**
+ * @brief Gets a scroller's scroll blocking state.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The scroller object
+ * @return The blocking state
+ *
+ * @see elm_scroller_movement_block_set()
+ */
+EAPI Elm_Scroller_Movement_Block elm_scroller_movement_block_get(const Evas_Object *obj);
+
/**
* @}
diff --git a/src/lib/elm_segment_control.h b/src/lib/elm_segment_control.h
index 4c0a9c52d..4727a1230 100644
--- a/src/lib/elm_segment_control.h
+++ b/src/lib/elm_segment_control.h
@@ -1,73 +1,288 @@
/**
* @defgroup SegmentControl SegmentControl
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html segment_control_inheritance_tree.png
* @image latex segment_control_inheritance_tree.eps
*
- * @image html img/widget/segment_control/preview-00.png
- * @image latex img/widget/segment_control/preview-00.eps width=\textwidth
- *
* @image html img/segment_control.png
- * @image latex img/segment_control.eps width=\textwidth
+ * @image latex img/segment_control.eps "segment control" width=\textwidth
+ *
+ * @brief Segment control widget is a horizontal control made of multiple
+ * segment items, each segment item functioning similar to a discrete
+ * two state button.
*
- * Segment control widget is a horizontal control made of multiple segment
- * items, each segment item functioning similar to discrete two state button.
- * A segment control groups the items together and provides compact
+ * A segment control groups the items together and provides a compact
* single button with multiple equal size segments.
*
* Segment item size is determined by base widget
* size and the number of items added.
- * Only one segment item can be at selected state. A segment item can display
- * combination of Text and any Evas_Object like Images or other widget.
+ * Only one segment item can be at a selected state. A segment item can display
+ * a combination of Text and any Evas_Object like Images or other widgets.
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for segment control objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* - @c "changed" - When the user clicks on a segment item which is not
- * previously selected and get selected. The event_info parameter is the
+ * previously selected and it gets selected. The @a event_info parameter is the
* segment item pointer.
- * - @c "language,changed" - the program's language changed (since 1.9)
*
* Available styles for it:
* - @c "default"
*
- * Default content parts of the segment control items that you can use for are:
- * @li "icon" - An icon in a segment control item
+ * The default content parts of the segment control items that you can use are:
+ * @li "icon" - An icon in a segment control item.
*
- * Default text parts of the segment control items that you can use for are:
- * @li "default" - A title label in a segment control item
+ * The default text parts of the segment control items that you can use are:
+ * @li "default" - Title label in a segment control item.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li elm_object_disabled_set
* @li elm_object_disabled_get
*
- * Supported elm_object_item common APIs.
- * @li @ref elm_object_item_del
+ * Supported common elm_object_item APIs.
* @li @ref elm_object_item_part_text_set
* @li @ref elm_object_item_part_text_get
* @li @ref elm_object_item_part_content_set
* @li @ref elm_object_item_part_content_get
*
- * Here is an example on its usage:
- * @li @ref segment_control_example
+ * @{
+ */
+
+/**
+ * @brief Adds a new segment control widget to the given parent Elementary
+ * (container) object.
*
+ * @details This function inserts a new segment control widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new segment control widget handle, otherwise @c NULL in case of an error
*/
+EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent);
/**
- * @addtogroup SegmentControl
- * @{
+ * @brief Appends a new item to the segment control object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A new item is created and appended to the segment control, i.e., it
+ * is set as the @b last item.
+ *
+ * @remarks If it should be inserted at another position,
+ * elm_segment_control_item_insert_at() should be used instead.
+ *
+ * @remarks Items created with this function can be deleted with function
+ * elm_object_item_del() or elm_object_item_del_at().
+ *
+ * @remarks @a label set to @c NULL is different from an empty string "".
+ * If an item only has icon, it is displayed bigger and it is centered. If it has
+ * an icon and a label, even an empty string, the icon is smaller and
+ * positioned towards the left.
+ *
+ * Simple example:
+ * @code
+ * sc = elm_segment_control_add(win);
+ * ic = elm_icon_add(win);
+ * elm_image_file_set(ic, "path/to/image", NULL);
+ * elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
+ * elm_segment_control_item_add(sc, ic, "label");
+ * evas_object_show(sc);
+ * @endcode
+ *
+ * @param[in] obj The segment control object.
+ * @param[in] icon The icon object to use for the left side of the item \n
+ * An icon can be any Evas object, but usually it is an icon created
+ * with elm_icon_add().
+ * @param[in] label The label of the item \n
+ * Note that, @c NULL is different from an empty string "".
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_segment_control_item_insert_at()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label);
+
+/**
+ * @brief Inserts a new item to the segment control object at the specified position.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Index values must be between @c 0, when the item is prepended to the
+ * segment control, and items count, that can be obtained with
+ * elm_segment_control_item_count_get(), similar to the case when the item is appended
+ * to the segment control, just like elm_segment_control_item_add().
+ *
+ * @remarks Items created with this function can be deleted with function
+ * elm_object_item_del() or elm_segment_control_item_del_at().
+ *
+ * @remarks @a label set to @c NULL is different from an empty string "".
+ * If an item only has an icon, it is displayed bigger and it is centered. If it has
+ * an icon and a label, even an empty string, the icon is smaller and
+ * positioned towards the left.
+ *
+ * @param[in] obj The segment control object
+ * @param[in] icon The icon object to use for the left side of the item \n
+ * An icon can be any Evas object, but usually it is an icon created
+ * with elm_icon_add().
+ * @param[in] label The label of the item
+ * @param[in] index The item position \n
+ * The value should be between @c 0 and the items count.
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_segment_control_item_add()
+ * @see elm_segment_control_item_count_get()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index);
+
+/**
+ * @brief Removes a segment control item at the given index from its parent,
+ * deleting it.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Items can be added with elm_segment_control_item_add() or
+ * elm_segment_control_item_insert_at().
+ *
+ * @param[in] obj The segment control object
+ * @param[in] index The position of the segment control item to be deleted
+ */
+EAPI void elm_segment_control_item_del_at(Evas_Object *obj, int index);
+
+/**
+ * @brief Gets the segment items count from the segment control.
+ *
+ * @details It just returns the number of items added to the segment control @a obj.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The segment control object
+ * @return The segment items count
+ */
+EAPI int elm_segment_control_item_count_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the item placed at the specified index.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Index is the position of an item in the segment control widget. Its
+ * range is from @c 0 to <tt> count - 1 </tt>.
+ * Count is the number of items, that can be obtained with
+ * elm_segment_control_item_count_get().
+ *
+ * @param[in] obj The segment control object
+ * @param[in] index The index of the segment item
+ * @return The segment control item, otherwise @c NULL on failure
+ */
+EAPI Elm_Object_Item *elm_segment_control_item_get(const Evas_Object *obj, int index);
+
+/**
+ * @brief Gets the label of the item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The return value is a pointer to the label associated to the item when
+ * it is created, with function elm_segment_control_item_add(), or later
+ * with function elm_object_item_text_set(). If no label
+ * is passed as an argument, it returns @c NULL.
+ *
+ * @param[in] obj The segment control object
+ * @param[in] index The index of the segment item
+ * @return The label of the item at @a index
+ *
+ * @see elm_object_item_text_set()
+ * @see elm_segment_control_item_add()
+ */
+EAPI const char *elm_segment_control_item_label_get(const Evas_Object *obj, int index);
+
+/**
+ * @brief Gets the icon associated to the item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The return value is a pointer to the icon associated to the item when
+ * it is created, with function elm_segment_control_item_add(), or later
+ * with function elm_object_item_part_content_set(). If no icon
+ * is passed as an argument, it returns @c NULL.
+ *
+ * @param[in] obj The segment control object
+ * @param[in] index The index of the segment item
+ * @return The left side icon associated to the item at @a index
+ *
+ * @see elm_segment_control_item_add()
+ * @see elm_object_item_part_content_set()
+ */
+EAPI Evas_Object *elm_segment_control_item_icon_get(const Evas_Object *obj, int index);
+
+/**
+ * @brief Gets the index of an item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Index is the position of an item in the segment control widget. Its
+ * range is from @c 0 to <tt> count - 1 </tt>.
+ * Count is the number of items, that can be obtained with
+ * elm_segment_control_item_count_get().
+ *
+ * @param[in] it The segment control item
+ * @return The position of the item in the segment control widget
+ */
+EAPI int elm_segment_control_item_index_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the base object of the item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Base object is the @c Evas_Object that represents that item.
+ *
+ * @param[in] it The segment control item
+ * @return The base object associated with @a it
+ */
+EAPI Evas_Object *elm_segment_control_item_object_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the selected item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The selected item can be unselected with the function
+ * elm_segment_control_item_selected_set().
+ *
+ * @remarks The selected item is always highlighted on the segment control.
+ *
+ * @param[in] obj The segment control object
+ * @return The selected item, otherwise @c NULL if none of the segment items are
+ * selected
+ */
+EAPI Elm_Object_Item *elm_segment_control_item_selected_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the selected state of an item.
+ *
+ * @details This sets the selected state of the given item @a it.
+ * @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If a new item is selected the previously selected item is unselected.
+ * Selected item can be obtained with the function
+ * elm_segment_control_item_selected_get().
+ *
+ * @remarks The selected item is always highlighted on the segment control.
+ *
+ * @param[in] it The segment control item
+ * @param[in] select The selected state
+ *
+ * @see elm_segment_control_item_selected_get()
*/
+EAPI void elm_segment_control_item_selected_set(Elm_Object_Item *it, Eina_Bool select);
-#include "elm_segment_control_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_segment_control_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_segment_control_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_separator.h b/src/lib/elm_separator.h
index 6e9768f8a..c96f46ff0 100644
--- a/src/lib/elm_separator.h
+++ b/src/lib/elm_separator.h
@@ -1,29 +1,52 @@
/**
+ * @internal
* @defgroup Separator Separator
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html separator_inheritance_tree.png
* @image latex separator_inheritance_tree.eps
*
* @brief Separator is a very thin object used to separate other objects.
*
- * A separator can be vertical or horizontal.
+ * @remarks A separator can be vertical or horizontal.
*
- * This widget inherits from the @ref Layout one, so that all the
- * functions acting on it also work for separator objects.
+ * @remarks This widget inherits from the @ref Layout one, so that all the
+ * functions acting on it also work for separator objects.
*
- * This widget emits the signals coming from @ref Layout.
+ * @remarks This widget emits the signals coming from @ref Layout.
*
- * @ref tutorial_separator is a good example of how to use a separator.
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_separator_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_separator_legacy.h"
-#endif
+/**
+ * @brief Adds a separator object to @a parent.
+ *
+ * @param[in] parent The parent object
+ *
+ * @return The separator object, otherwise @c NULL on failure
+ */
+EAPI Evas_Object *elm_separator_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the horizontal mode of a separator object.
+ *
+ * @param[in] obj The separator object
+ * @param[in] horizontal If @c true the separator is horizontal,
+ * otherwise @c false
+ */
+EAPI void elm_separator_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Gets the horizontal mode of a separator object.
+ *
+ * @param[in] obj The separator object
+ * @return If @c true the separator is horizontal,
+ * otherwise @c false
+ *
+ * @see elm_separator_horizontal_set()
+ */
+EAPI Eina_Bool elm_separator_horizontal_get(const Evas_Object *obj);
+
/**
* @}
*/
diff --git a/src/lib/elm_slider.h b/src/lib/elm_slider.h
index 5a7d4555b..445f9f090 100644
--- a/src/lib/elm_slider.h
+++ b/src/lib/elm_slider.h
@@ -1,62 +1,56 @@
/**
* @defgroup Slider Slider
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html slider_inheritance_tree.png
* @image latex slider_inheritance_tree.eps
*
- * @image html img/widget/slider/preview-00.png
- * @image latex img/widget/slider/preview-00.eps width=\textwidth
+ * @brief The slider adds a draggable “slider” widget for selecting the value
+ * of something within a range.
*
- * The slider adds a draggable “slider” widget for selecting the value of
- * something within a range.
- *
- * A slider can be horizontal or vertical. It can contain an Icon and has a
+ * A slider can be horizontal or vertical. It can contain an Icon and can have a
* primary label as well as a units label (that is formatted with floating
* point values and thus accepts a printf-style format string, like
* “%1.2f units”. There is also an indicator string that may be somewhere
* else (like on the slider itself) that also accepts a format string like
- * units. Label, Icon Unit and Indicator strings/objects are optional.
+ * units. Label, Icon Unit, and Indicator strings/objects are optional.
*
- * A slider may be inverted which means values invert, with high vales being
+ * A slider may be inverted, which means values invert, with high values being
* on the left or top and low values on the right or bottom (as opposed to
- * normally being low on the left or top and high on the bottom and right).
+ * normally being low on the left or top and high at the bottom and right).
*
* The slider should have its minimum and maximum values set by the
- * application with elm_slider_min_max_set() and value should also be set by
- * the application before use with elm_slider_value_set(). The span of the
- * slider is its length (horizontally or vertically). This will be scaled by
- * the object or applications scaling factor. At any point code can query the
- * slider for its value with elm_slider_value_get().
+ * application with elm_slider_min_max_set() and values should also be set by
+ * the application before it is used with elm_slider_value_set(). The span of the
+ * slider is its length (horizontally or vertically). This is scaled by
+ * the object or applications scaling factor. At any point, the code can query the
+ * slider for its value using elm_slider_value_get().
*
* This widget inherits from the @ref Layout one, so that all the
* functions acting on it also work for slider objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* - @c "changed" - Whenever the slider value is changed by the user.
- * - @c "slider,drag,start" - dragging the slider indicator around has started.
- * - @c "slider,drag,stop" - dragging the slider indicator around has stopped.
+ * - @c "slider,drag,start" - Dragging the slider indicator has started.
+ * - @c "slider,drag,stop" - Dragging the slider indicator has stopped.
* - @c "delay,changed" - A short time after the value is changed by the user.
- * This will be called only when the user stops dragging for
+ * This is called only when the user stops dragging for
* a very short period or when they release their
- * finger/mouse, so it avoids possibly expensive reactions to
+ * finger/mouse, so it avoids the possible expensive reactions to
* the value change.
- * - @c "focused" - When the slider has received focus. (since 1.8)
- * - @c "unfocused" - When the slider has lost focus. (since 1.8)
- * - @c "language,changed" - the program's language changed (since 1.9)
*
* Available styles for it:
* - @c "default"
*
- * Default content parts of the slider widget that you can use for are:
- * @li "icon" - An icon of the slider
- * @li "end" - A end part content of the slider
+ * The default content parts of the slider widget that you can use are:
+ * @li "icon" - An icon of the slider.
+ * @li "end" - An end part content of the slider.
*
- * Default text parts of the slider widget that you can use for are:
- * @li "default" - A label of the slider
+ * The default text parts of the slider widget that you can use are:
+ * @li "default" - Label of the slider.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_disabled_set
* @li @ref elm_object_disabled_get
* @li @ref elm_object_part_text_set
@@ -65,22 +59,366 @@
* @li @ref elm_object_part_content_get
* @li @ref elm_object_part_content_unset
*
- * Here is an example on its usage:
- * @li @ref slider_example
+ * @{
*/
/**
- * @addtogroup Slider
- * @{
+ * @brief Adds a new slider widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new slider widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new slider widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_slider_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the (exact) length of the bar region of a given slider widget.
+ *
+ * @details This sets the minimum width (when in the horizontal mode) or height
+ * (when in the vertical mode) of the actual bar area of the slider
+ * @a obj. This in turn affects the object's minimum size. Use
+ * this when you're not setting other size hints expanding on the
+ * given direction (like weight and alignment hints), and you would
+ * like it to have a specific size.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Icon, end, label, indicator, and unit text around @a obj
+ * require their own space, which makes @a obj require more than @a size,
+ * actually.
+ *
+ * @param[in] obj The slider object
+ * @param[in] size The length of the slider's bar region
+ *
+ * @see elm_slider_span_size_get()
+ */
+EAPI void elm_slider_span_size_set(Evas_Object *obj, Evas_Coord size);
+
+/**
+ * @brief Gets the length set for the bar region of a given slider widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If that size is not set previously, with
+ * elm_slider_span_size_set(), this call returns @c 0.
+ *
+ * @param[in] obj The slider object
+ * @return The length of the slider's bar region
+ */
+EAPI Evas_Coord elm_slider_span_size_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the format string for the unit label.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Unit label is displayed all the time, if set, after the slider's bar.
+ * In the horizontal mode, on the right and in the vertical mode, at the bottom.
+ *
+ * @remarks If @c NULL, the unit label won't be visible. If not, it sets the format
+ * string for the label text. For the label text a floating point value is provided,
+ * so the label text can display up to @c 1 floating point value.
+ * Note that this is optional.
+ *
+ * @remarks Use a format string such as "%1.2f meters" for example, and it
+ * displays values like: "3.14 meters" for a value equal to 3.14159.
+ *
+ * @remarks By default, unit label is disabled.
+ *
+ * @param[in] obj The slider object
+ * @param[in] format The format string for the unit display
+ *
+ * @see elm_slider_indicator_format_get()
+ */
+EAPI void elm_slider_unit_format_set(Evas_Object *obj, const char *format);
+
+/**
+ * @brief Gets the unit label format of the slider.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Unit label is displayed all the time, if set, after the slider's bar.
+ * In the horizontal mode, on the right and in the vertical mode, at the bottom.
+ *
+ * @param[in] obj The slider object
+ * @return The unit label format string in UTF-8
+ *
+ * @see elm_slider_unit_format_set() for more information on how this works.
+ */
+EAPI const char *elm_slider_unit_format_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the format string for the indicator label.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The slider may display its value somewhere other than the unit label,
+ * for example, above the slider knob that is dragged around. This function
+ * sets the format string used for this.
+ *
+ * @remarks If @c NULL, the indicator label won't be visible. If not, it sets the format
+ * string for the label text. For the label text floating point value is provided,
+ * so the label text can display up to @c 1 floating point value.
+ * Note that this is optional.
+ *
+ * @remarks Use a format string such as "%1.2f meters" for example, and it
+ * displays values like: "3.14 meters" for a value equal to 3.14159.
+ *
+ * @remarks By default, the indicator label is disabled.
+ *
+ * @param[in] obj The slider object
+ * @param[in] indicator The format string for the indicator display
+ *
+ * @see elm_slider_indicator_format_get()
+ */
+EAPI void elm_slider_indicator_format_set(Evas_Object *obj, const char *indicator);
+
+/**
+ * @brief Gets the indicator label format of the slider.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The slider may display its value somewhere other than the unit label,
+ * for example, above the slider knob that is dragged around. This function
+ * gets the format string used for this.
+ *
+ * @param[in] obj The slider object
+ * @return The indicator label format string in UTF-8
+ *
+ * @see elm_slider_indicator_format_set() for more information on how this works.
+ */
+EAPI const char *elm_slider_indicator_format_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the format function pointer for the indicator label.
+ *
+ * @details This sets the callback function to format the indicator string.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The slider object
+ * @param[in] func The indicator format function
+ * @param[in] free_func The freeing function for the format string
+ *
+ * @see elm_slider_indicator_format_set() for more info on how this works.
+ */
+EAPI void elm_slider_indicator_format_function_set(Evas_Object *obj, char *(*func)(double val), void (*free_func)(char *str));
+
+/**
+ * @brief Sets the format function pointer for the units label.
+ *
+ * @details This sets the callback function to format the units string.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The slider object
+ * @param[in] func The units format function
+ * @param[in] free_func The freeing function for the format string
+ *
+ * @see elm_slider_unit_format_set() for more info on how this works.
+ */
+EAPI void elm_slider_units_format_function_set(Evas_Object *obj, char *(*func)(double val), void (*free_func)(char *str));
+
+/**
+ * @brief Sets the orientation of a given slider widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Use this function to change how your slider is to be
+ * disposed: vertically or horizontally.
+ *
+ * @remarks By default, it's displayed horizontally.
+ *
+ * @param[in] obj The slider object
+ * @param[in] horizontal If @c EINA_TRUE, it makes @a obj @b horizontal,
+ * otherwise @c EINA_FALSE to make it @b vertical
+ *
+ * @see elm_slider_horizontal_get()
+ */
+EAPI void elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Retrieves the orientation of a given slider widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The slider object
+ * @return @c EINA_TRUE, if @a obj is set to @b horizontal,
+ * otherwise @c EINA_FALSE if it's @b vertical (and on errors)
+ *
+ * @see elm_slider_horizontal_set()
+ */
+EAPI Eina_Bool elm_slider_horizontal_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the minimum and maximum values for the slider.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This defines the allowed range of values to be selected by the user.
+ *
+ * @remarks If the actual value is less than @a min, it is updated to @a min. If it
+ * is bigger then @a max, it is updated to @a max. Actual value can be
+ * obtained with elm_slider_value_get().
+ *
+ * @remarks By default, @a min is equal to @c 0.0, and @a max is equal to @c 1.0.
+ *
+ * @remarks Maximum must be greater than minimum, otherwise the behavior
+ * is undefined.
+ *
+ * @param[in] obj The slider object
+ * @param[in] min The minimum value
+ * @param[in] max The maximum value
+ *
+ * @see elm_slider_min_max_get()
+ */
+EAPI void elm_slider_min_max_set(Evas_Object *obj, double min, double max);
+
+/**
+ * @brief Gets the minimum and maximum values of the slider.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If only one value is needed, the other pointer can be passed
+ * as @c NULL.
+ *
+ * @param[in] obj The slider object
+ * @param[out] min The pointer to store the minimum value
+ * @param[out] max The pointer to store the maximum value
+ *
+ * @see elm_slider_min_max_set()
+ */
+EAPI void elm_slider_min_max_get(const Evas_Object *obj, double *min, double *max);
+
+/**
+ * @brief Sets the value that the slider displays.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The value is presented on the unit label following the format specified with
+ * elm_slider_unit_format_set() and on the indicator with
+ * elm_slider_indicator_format_set().
+ *
+ * @remarks The value must be between the min and max values. These values
+ * are set by elm_slider_min_max_set().
+ *
+ * @param[in] obj The slider object
+ * @param[in] val The value to be displayed
+ *
+ * @see elm_slider_value_get()
+ * @see elm_slider_unit_format_set()
+ * @see elm_slider_indicator_format_set()
+ * @see elm_slider_min_max_set()
+ */
+EAPI void elm_slider_value_set(Evas_Object *obj, double val);
+
+/**
+ * @brief Gets the value displayed by the spinner.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The spinner object
+ * @return The value displayed
+ *
+ * @see elm_spinner_value_set()
+ */
+EAPI double elm_slider_value_get(const Evas_Object *obj);
+
+/**
+ * @brief Inverts a given slider widget's displaying values order.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A slider may be @b inverted, in which case it gets its
+ * values inverted, with high values being on the left or top and
+ * low values on the right or bottom, as opposed to normally have
+ * the low values on the former and high values on the latter,
+ * respectively, for the horizontal and vertical modes.
+ *
+ * @param[in] obj The slider object
+ * @param[in] inverted If @c EINA_TRUE @a obj is inverted,
+ * otherwise @c EINA_FALSE to bring it back to the default, non-inverted value
+ *
+ * @see elm_slider_inverted_get()
+ */
+EAPI void elm_slider_inverted_set(Evas_Object *obj, Eina_Bool inverted);
+
+/**
+ * @brief Gets whether a given slider widget's displaying values are
+ * inverted.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The slider object
+ * @return @c EINA_TRUE, if @a obj has inverted values,
+ * otherwise @c EINA_FALSE (and on errors)
+ *
+ * @see elm_slider_inverted_set()
+ */
+EAPI Eina_Bool elm_slider_inverted_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether to enlarge the slider indicator (augmented knob).
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, the indicator is bigger when dragged by the user.
+ *
+ * @remarks It won't display values set with
+ * elm_slider_indicator_format_set() if you disable the indicator.
+ *
+ * @param[in] obj The slider object
+ * @param[in] show If @c EINA_TRUE the knob is enlarged, otherwise @c EINA_FALSE always lets the
+ * knob of the default size
+ */
+EAPI void elm_slider_indicator_show_set(Evas_Object *obj, Eina_Bool show);
+
+/**
+ * @brief Gets whether a given slider widget is an enlarging indicator.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The slider object
+ * @return @c EINA_TRUE, if @a obj is an enlarging indicator,
+ * otherwise @c EINA_FALSE (and on errors)
+ *
+ * @see elm_slider_indicator_show_set()
+ */
+EAPI Eina_Bool elm_slider_indicator_show_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the step by which the slider indicator moves.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This value is used when the draggable object is moved automatically i.e., in case
+ * of a key event when up/down/left/right key is pressed or in case accessibility is set
+ * and the flick event is used to inc/dec slider values.
+ * By default, the step value is equal to @c 0.05.
+ *
+ * @param[in] obj The slider object
+ * @param[in] step The step value
+ *
+ * @see elm_slider_step_get()
+ */
+EAPI void elm_slider_step_set(Evas_Object *obj, double step);
+
+/**
+ * @brief Gets the step by which the slider indicator moves.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The slider object
+ * @return The step value
+ *
+ * @see elm_slider_step_set()
*/
+EAPI double elm_slider_step_get(const Evas_Object *obj);
-#include "elm_slider_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_slider_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_slider_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_slideshow.h b/src/lib/elm_slideshow.h
index c601878d9..4674b36f0 100644
--- a/src/lib/elm_slideshow.h
+++ b/src/lib/elm_slideshow.h
@@ -1,6 +1,7 @@
/**
+ * @internal
* @defgroup Slideshow Slideshow
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html slideshow_inheritance_tree.png
* @image latex slideshow_inheritance_tree.eps
@@ -8,22 +9,24 @@
* @image html img/widget/slideshow/preview-00.png
* @image latex img/widget/slideshow/preview-00.eps
*
+ * @brief A Slideshow provide a slideshow for pre-made images.
+ *
* This widget, as the name indicates, is a pre-made image
- * slideshow panel, with API functions acting on (child) image
+ * slideshow panel, with API functions acting on the (child) image
* items presentation. Between those actions, are:
- * - advance to next/previous image
- * - select the style of image transition animation
- * - set the exhibition time for each image
- * - start/stop the slideshow
+ * - advance to next/previous image.
+ * - select the style of image transition animation.
+ * - set the exhibition time for each image,
+ * - start/stop the slideshow.
*
- * The transition animations are defined in the widget's theme,
- * consequently new animations can be added without having to
+ * The transition animations are defined in the widget's theme.
+ * Consequently, new animations can be added without having to
* update the widget's code.
*
* @section Slideshow_Items Slideshow items
*
* For slideshow items, just like for @ref Genlist "genlist" ones,
- * the user defines a @b classes, specifying functions that will be
+ * the user defines @b classes, specifying functions that are
* called on the item's creation and deletion times.
*
* The #Elm_Slideshow_Item_Class structure contains the following
@@ -42,9 +45,9 @@
*
* The slideshow provides facilities to have items adjacent to the
* one being displayed <b>already "realized"</b> (i.e. loaded) for
- * you, so that the system does not have to decode image data
- * anymore at the time it has to actually switch images on its
- * viewport. The user is able to set the numbers of items to be
+ * you, so that the system does not have to decode the image data
+ * anymore when it has to actually switch images on its
+ * viewport. The user is able to set the number of items to be
* cached @b before and @b after the current item, in the widget's
* item list.
*
@@ -52,34 +55,447 @@
* functions acting on it also work for slideshow objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * - @c "changed" - when the slideshow switches its view to a new
- * item. event_info parameter in callback contains the current visible item
- * - @c "transition,end" - when a slide transition ends. event_info parameter
- * in callback contains the current visible item
- * - @c "focused" - When the slideshow has received focus. (since 1.8)
- * - @c "unfocused" - When the slideshow has lost focus. (since 1.8)
- * - @c "language,changed" - the program's language changed (since 1.9)
+ * @ref Layout :
+ * - @c "changed" - When the slideshow switches its view to a new
+ * item. The @a event_info parameter in the callback contains the current visible item
+ * - @c "transition,end" - When a slide transition ends. The @a event_info parameter
+ * in the callback contains the current visible item.
*
- * Supported @c elm_object_item common APIs.
- * @li @ref elm_object_item_del
+ * @{
+ */
+
+/**
+ * @brief typedef to struct _Elm_Slideshow_Item_Class
+ */
+typedef struct _Elm_Slideshow_Item_Class Elm_Slideshow_Item_Class;
+typedef struct _Elm_Slideshow_Item_Class_Func Elm_Slideshow_Item_Class_Func; /**< Class functions for slideshow item classes */
+typedef Evas_Object *(*SlideshowItemGetFunc)(void *data, Evas_Object *obj); /**< Image fetching class function for slideshow item classes */
+typedef void (*SlideshowItemDelFunc)(void *data, Evas_Object *obj); /**< Deletion class function for slideshow item classes */
+
+/**
+ * @internal
+ * @struct _Elm_Slideshow_Item_Class
*
- * List of examples for the slideshow widget:
- * @li @ref slideshow_example
+ * @brief The structure type for slideshow item class definition. See @ref Slideshow_Items for
+ * field details.
*/
+struct _Elm_Slideshow_Item_Class
+{
+ struct _Elm_Slideshow_Item_Class_Func
+ {
+ SlideshowItemGetFunc get;
+ SlideshowItemDelFunc del;
+ } func;
+};
/**
- * @addtogroup Slideshow
- * @{
+ * @brief Adds a new slideshow widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new slideshow widget on the canvas.
+ *
+ * @param[in] parent The parent object
+ * @return A new slideshow widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_slideshow_add(Evas_Object *parent);
+
+/**
+ * @brief Adds (appends) a new item to a given slideshow widget.
+ *
+ * @details This adds a new item to the @a obj internal list of items, appending it.
+ * The item's class must contain the function that really fetches the
+ * image object to show for this item, which could be an Evas image
+ * object or an Elementary photo, for example. The @a data
+ * parameter is going to be passed to both class functions of the
+ * item.
+ *
+ * @param[in] obj The slideshow object
+ * @param[in] itc The item class for the item
+ * @param[in] data The item's data
+ * @return A handle to the item added, otherwise @c NULL in case of an error
+ *
+ * @see #Elm_Slideshow_Item_Class
+ * @see elm_slideshow_item_sorted_insert()
+ * @see elm_object_item_data_set()
+ */
+EAPI Elm_Object_Item *elm_slideshow_item_add(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data);
+
+/**
+ * @brief Inserts a new item into the given slideshow widget, using the @a func
+ * function to sort items (by item handles).
+ *
+ * @remarks It adds a new item to the @a obj internal list of items, in a position
+ * determined by the @a func comparing function. The item's class
+ * must contain the function that really fetches the image object to
+ * show for this item, which could be an Evas image object or an
+ * Elementary photo, for example. The @a data parameter is going to
+ * be passed to both class functions of the item.
+ *
+ * @param[in] obj The slideshow object
+ * @param[in] itc The item class for the item
+ * @param[in] data The item data
+ * @param[in] func The comparing function to be used to sort the slideshow
+ * items <b>by #Elm_Slideshow_Item_Class item handles</b>
+ * @return The slideshow item handle on success,
+ * otherwise @c NULL in case of an error
+ *
+ * @see #Elm_Slideshow_Item_Class
+ * @see elm_slideshow_item_add()
+ */
+EAPI Elm_Object_Item *elm_slideshow_item_sorted_insert(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data, Eina_Compare_Cb func);
+
+/**
+ * @brief Displays a given slideshow widget's item, programmatically.
+ *
+ * @remarks The change between the current item and @a it uses the
+ * transition @a obj that is set to use (@see
+ * elm_slideshow_transition_set()).
+ *
+ * @param[in] it The item to display on the @a obj viewport
+ */
+EAPI void elm_slideshow_item_show(Elm_Object_Item *it);
+
+/**
+ * @brief Slides to the @b next item, in a given slideshow widget.
+ *
+ * @remarks The sliding animation @a obj is set to use the
+ * transition effect that is used after this call is issued.
+ *
+ * @remarks If the end of the slideshow's internal list of items is
+ * reached, it wraps around the list's beginning, again.
+ *
+ * @param[in] obj The slideshow object
+ */
+EAPI void elm_slideshow_next(Evas_Object *obj);
+
+/**
+ * @brief Slides to the @b previous item, in a given slideshow widget.
+ *
+ * @remarks The sliding animation @a obj is set to use the
+ * transition effect used after this call is issued.
+ *
+ * @remarks If the beginning of the slideshow's internal list of items
+ * is reached, it wraps around the list's end, again.
+ *
+ * @param[in] obj The slideshow object
+ */
+EAPI void elm_slideshow_previous(Evas_Object *obj);
+
+/**
+ * @brief Returns the list of sliding transition/effect names available, for a
+ * given slideshow widget.
+ *
+ * @remarks The transitions, which come from the @a obj theme, must be an EDC
+ * data item named @c "transitions" on the theme file, with (prefix)
+ * names of EDC programs actually implementing them.
+ *
+ * @remarks The available transitions for slideshows on the default theme are:
+ * - @c "fade" - The current item fades out, while the new one
+ * fades in to the slideshow's viewport.
+ * - @c "black_fade" - The current item fades to black, and just
+ * then, the new item fades in.
+ * - @c "horizontal" - The current item slides horizontally, until
+ * it gets out of the slideshow's viewport, while the new item
+ * comes from the left to take its place.
+ * - @c "vertical" - The current item slides vertically, until it
+ * gets out of the slideshow's viewport, while the new item comes
+ * from the bottom to take its place.
+ * - @c "square" - The new item starts to appear from the middle of
+ * the current one, but with a tiny size, growing until its
+ * target (full) size and covering the old one.
+ *
+ * @remarks The stringshared strings get no new references
+ * exclusive to the user grabbing the list, here, so if you would like
+ * to use them out of this call's context, you would better
+ * eina_stringshare_ref() them. Also the list is an internal list and
+ * is only valid for as long as the slideshow object is valid, and
+ * has not internally changed its list for some reason, so make a
+ * copy if you need it.
+ *
+ * @param[in] obj The slideshow object
+ * @return The list of transitions (list of @b stringshared strings
+ * as data)
+ *
+ * @see elm_slideshow_transition_set()
+ */
+EAPI const Eina_List *elm_slideshow_transitions_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the current slide transition/effect in use for a given
+ * slideshow widget.
+ *
+ * @remarks If @a transition is implemented in the @a obj theme (i.e., is
+ * contained in the list returned by
+ * elm_slideshow_transitions_get()), this new sliding effect is
+ * used on the widget.
+ *
+ * @param[in] obj The slideshow object
+ * @param[in] transition The new transition's name string
+ *
+ * @see elm_slideshow_transitions_get()
+ */
+EAPI void elm_slideshow_transition_set(Evas_Object *obj, const char *transition);
+
+/**
+ * @brief Gets the current slide transition/effect in use for a given
+ * slideshow widget.
+ *
+ * @param[in] obj The slideshow object
+ * @return The current transition's name
+ *
+ * @see elm_slideshow_transition_set()
+ */
+EAPI const char *elm_slideshow_transition_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the interval between each image transition on a given
+ * slideshow widget, <b>and the start of the slideshow, itself</b>
+ *
+ * @remarks After this call, the slideshow widget starts cycling its
+ * view, sequentially and automatically, with the images of the
+ * items that it has. The time between each new image displayed is going
+ * to be @a timeout, in @b seconds. If a different timeout is set
+ * previously and a slideshow is in progress, it continues
+ * with the new time between transitions, after this call.
+ *
+ * @remarks A value less than or equal to @c 0 on @a timeout disables
+ * the widget's internal timer, thus halting any slideshow which
+ * could be happening on @a obj.
+ *
+ * @param[in] obj The slideshow object
+ * @param[in] timeout The new displaying timeout for images
+ *
+ * @see elm_slideshow_timeout_get()
+ */
+EAPI void elm_slideshow_timeout_set(Evas_Object *obj, double timeout);
+
+/**
+ * @brief Gets the interval set for image transitions on a given slideshow
+ * widget.
+ *
+ * @param[in] obj The slideshow object
+ * @return The timeout set on it, otherwise @c -1.0 in case of an error
+ *
+ * @see elm_slideshow_timeout_set()
+ */
+EAPI double elm_slideshow_timeout_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether after a slideshow is started, for a given slideshow
+ * widget, its items should be displayed cyclically.
+ *
+ * @remarks elm_slideshow_next() and elm_slideshow_previous() @b
+ * ignore what is set by this functions, i.e., they @b always
+ * cycle through items. This affects only the "automatic"
+ * slideshow, as set by elm_slideshow_timeout_set().
+ *
+ * @param[in] obj The slideshow object
+ * @param[in] loop If @c EINA_TRUE it cycles through items,
+ * otherwise @c EINA_FALSE for it to stop at the end of the @a obj internal
+ * list of items
+ *
+ * @see elm_slideshow_loop_get()
+ */
+EAPI void elm_slideshow_loop_set(Evas_Object *obj, Eina_Bool loop);
+
+/**
+ * @brief Gets whether after a slideshow is started, for a given slideshow
+ * widget, its items are to be displayed cyclically.
+ *
+ * @param[in] obj The slideshow object
+ * @return @c EINA_TRUE if the items in @a obj are cycled,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_slideshow_loop_set()
+ */
+EAPI Eina_Bool elm_slideshow_loop_get(const Evas_Object *obj);
+
+/**
+ * @brief Removes all items from a given slideshow widget.
+ *
+ * @details This removes (and deletes) all items in @a obj, leaving it
+ * empty.
+ *
+ * @param[in] obj The slideshow object
+ *
+ * @see elm_object_item_del(), to remove just one item.
+ */
+EAPI void elm_slideshow_clear(Evas_Object *obj);
+
+/**
+ * @brief Gets the internal list of items in a given slideshow widget.
+ *
+ * @remarks This list is @b not to be modified in any way and must not be
+ * freed. Use the list members with functions like
+ * elm_object_item_del() and elm_object_item_data_get().
+ *
+ * @remarks This list is only valid until @a obj object's internal
+ * items list is changed. It should be fetched again with another
+ * call to this function when changes happen.
+ *
+ * @param[in] obj The slideshow object
+ * @return The list of items (#Elm_Object_Item as data),
+ * otherwise @c NULL in case of an error
+ */
+EAPI const Eina_List *elm_slideshow_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Returns the currently displayed item, in a given slideshow widget.
+ *
+ * @param[in] obj The slideshow object
+ * @return A handle to the item being displayed in @a obj,
+ * otherwise @c NULL, if none are present (and on errors)
+ */
+EAPI Elm_Object_Item *elm_slideshow_item_current_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the real Evas object created to implement the view of a
+ * given slideshow item.
+ *
+ * @details This returns the actual Evas object used to implement the
+ * specified slideshow item's view. This may be @c NULL, as it may
+ * not have been created or may have been deleted, at any time, by
+ * the slideshow. <b>Do not modify this object</b> (move, resize,
+ * show, hide, etc.), as the slideshow is controlling it. This
+ * function is for querying, emitting custom signals, or hooking
+ * lower level callbacks for events on that object. Do not delete
+ * this object under any circumstances.
+ *
+ * @param[in] it The slideshow item
+ * @return The Evas object implementing this item's view
+ *
+ * @see elm_object_item_data_get()
+ */
+EAPI Evas_Object *elm_slideshow_item_object_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the item, in a given slideshow widget, placed at
+ * position @a nth, in its internal items list.
+ *
+ * @param[in] obj The slideshow object
+ * @param[in] nth The number of the item to grab as a handle (@c 0 being
+ * the first)
+ * @return The item stored in @a obj at position @a nth, otherwise @c NULL,
+ * if there's no item with that index (and on errors)
+ */
+EAPI Elm_Object_Item *elm_slideshow_item_nth_get(const Evas_Object *obj, unsigned int nth);
+
+/**
+ * @brief Sets the current slide layout in use for a given slideshow widget.
+ *
+ * @remarks If @p layout is implemented in the @a obj theme (i.e., it is contained
+ * in the list returned by elm_slideshow_layouts_get()), this new
+ * images layout is used on the widget.
+ *
+ * @param[in] obj The slideshow object
+ * @param[in] layout The new layout's name string
+ *
+ * @see elm_slideshow_layouts_get()
+ */
+EAPI void elm_slideshow_layout_set(Evas_Object *obj, const char *layout);
+
+/**
+ * @brief Gets the current slide layout in use for a given slideshow widget
+ *
+ * @param[in] obj The slideshow object
+ * @return The current layout's name
+ *
+ * @see elm_slideshow_layout_set()
+ */
+EAPI const char *elm_slideshow_layout_get(const Evas_Object *obj);
+
+/**
+ * @brief Returns the list of @b layout names available, for a given
+ * slideshow widget.
+ *
+ * @remarks Slideshow layouts change how the widget is to dispose each
+ * image item in its viewport, with regards to cropping, scaling,
+ * etc.
+ *
+ * @remarks The layouts, which come from the @a obj theme, must be an EDC
+ * data item name @c "layouts" on the theme file, with (prefix)
+ * names of EDC programs actually implementing them.
+ *
+ * @remarks The available layouts for slideshows on the default theme are:
+ * - @c "fullscreen" - Item images with original aspect, scaled to
+ * touch top and down slideshow borders or, if the image's height
+ * is not enough, left and right slideshow borders.
+ * - @c "not_fullscreen" - The same behavior as the @c "fullscreen"
+ * one, but always leaves 10% of the slideshow's dimensions of the
+ * distance between the item image's borders and the slideshow
+ * borders, for each axis.
+ *
+ * @remarks The stringshared strings get no new references
+ * exclusive to the user grabbing the list, here, so if you would like
+ * to use them out of this call's context, you would better
+ * eina_stringshare_ref() them.
+ *
+ * @param[in] obj The slideshow object
+ * @return The list of layouts (list of @b stringshared strings
+ * as data)
+ *
+ * @see elm_slideshow_layout_set()
+ */
+EAPI const Eina_List *elm_slideshow_layouts_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the number of items to cache, on a given slideshow widget,
+ * <b>before the current item</b>.
+ *
+ * @remarks The default value for this property is @c 2. See
+ * @ref Slideshow_Caching "slideshow caching" for more details.
+ *
+ * @param[in] obj The slideshow object
+ * @param[in] count The number of items to cache before the current one
+ *
+ * @see elm_slideshow_cache_before_get()
+ */
+EAPI void elm_slideshow_cache_before_set(Evas_Object *obj, int count);
+
+/**
+ * @brief Retrieves the number of items to cache, on a given slideshow widget,
+ * <b>before the current item</b>.
+ *
+ * @param[in] obj The slideshow object
+ * @return The number of items set to be cached before the current one
+ *
+ * @see elm_slideshow_cache_before_set()
+ */
+EAPI int elm_slideshow_cache_before_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the number of items to cache, on a given slideshow widget,
+ * <b>after the current item</b>.
+ *
+ * @remarks The default value for this property is @c 2. See
+ * @ref Slideshow_Caching "slideshow caching" for more details.
+ *
+ * @param[in] obj The slideshow object
+ * @param[in] count The number of items to cache after the current one
+ *
+ * @see elm_slideshow_cache_after_get()
+ */
+EAPI void elm_slideshow_cache_after_set(Evas_Object *obj, int count);
+
+/**
+ * @brief Retrieves the number of items to cache, on a given slideshow widget,
+ * <b>after the current item</b>.
+ *
+ * @param[in] obj The slideshow object
+ * @return The number of items set to be cached after the current one
+ *
+ * @see elm_slideshow_cache_after_set()
+ */
+EAPI int elm_slideshow_cache_after_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the number of items stored in a given slideshow widget.
+ *
+ * @param[in] obj The slideshow object
+ * @return The number of items on @a obj at the time of this call
*/
+EAPI unsigned int elm_slideshow_count_get(const Evas_Object *obj);
-#include "elm_slideshow_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_slideshow_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_slideshow_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_spinner.h b/src/lib/elm_spinner.h
index a6ced26c5..59ab385f1 100644
--- a/src/lib/elm_spinner.h
+++ b/src/lib/elm_spinner.h
@@ -1,19 +1,16 @@
/**
* @defgroup Spinner Spinner
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html spinner_inheritance_tree.png
* @image latex spinner_inheritance_tree.eps
*
- * @image html img/widget/spinner/preview-00.png
- * @image latex img/widget/spinner/preview-00.eps
+ * @brief A spinner is a widget which allows the user to increase or decrease
+ * numeric values using arrow buttons, or edit values directly by
+ * clicking over it and typing the new value.
*
- * A spinner is a widget which allows the user to increase or decrease
- * numeric values using arrow buttons, or edit values directly, clicking
- * over it and typing the new value.
- *
- * By default the spinner will not wrap and has a label
- * of "%.0f" (just showing the integer value of the double).
+ * By default, the spinner does not wrap and has a label
+ * of "%.0f" (just showing the integer value of double).
*
* A spinner has a label that is formatted with floating
* point values and thus accepts a printf-style format string, like
@@ -25,44 +22,435 @@
* functions acting on it also work for spinner objects.
*
* This widget emits the following signals, besides the ones sent from
- * @ref Layout:
+ * @ref Layout :
* - @c "changed" - Whenever the spinner value is changed.
* - @c "delay,changed" - A short time after the value is changed by
- * the user. This will be called only when the user stops dragging
+ * the user. This is called only when the user stops dragging
* for a very short period or when they release their finger/mouse,
- * so it avoids possibly expensive reactions to the value change.
- * - @c "language,changed" - the program's language changed
- * - @c "focused" - When the spinner has received focus. (since 1.8)
- * - @c "unfocused" - When the spinner has lost focus. (since 1.8)
- * - @c "spinner,drag,start" - When dragging has started. (since 1.8)
- * - @c "spinner,drag,stop" - When dragging has stopped. (since 1.8)
+ * so it avoids the possible expensive reactions to the value change.
+ * - @c "language,changed" - The program's language is changed.
*
* Available styles for it:
* - @c "default";
- * - @c "vertical": up/down buttons at the right side and text left aligned.
+ * - @c "vertical": Up/down buttons on the right side and text aligned to the left.
*
- * Supported elm_object common APIs.
+ * Supported common elm_object APIs.
* @li @ref elm_object_signal_emit
* @li @ref elm_object_signal_callback_add
* @li @ref elm_object_signal_callback_del
* @li @ref elm_object_disabled_set
* @li @ref elm_object_disabled_get
*
- * Here is an example on its usage:
- * @ref spinner_example
+ * @{
*/
/**
- * @addtogroup Spinner
- * @{
+ * @brief Adds a new spinner widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new spinner widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new spinner widget handle, otherwise @c NULL in case of an error
+ *
+ */
+EAPI Evas_Object *elm_spinner_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the format string of the displayed label.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If @c NULL, this sets the format to "%.0f". If not, it sets the format
+ * string for the label text. For label text a floating point value is provided,
+ * so the label text can display up to @c 1 floating point value.
+ * Note that this is optional.
+ *
+ * @remarks Use a format string such as "%1.2f meters" for example, and it
+ * displays values like: "3.14 meters" for a value equal to 3.14159.
+ *
+ * @remarks Default is "%0.f".
+ *
+ * @param[in] obj The spinner object
+ * @param[in] fmt The format string for the label display
+ *
+ * @see elm_spinner_label_format_get()
+ */
+EAPI void elm_spinner_label_format_set(Evas_Object *obj, const char *fmt);
+
+/**
+ * @brief Gets the label format of the spinner.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The spinner object
+ * @return The text label format string in UTF-8
+ *
+ * @see elm_spinner_label_format_set()
*/
+EAPI const char *elm_spinner_label_format_get(const Evas_Object *obj);
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_spinner_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_spinner_legacy.h"
-#endif
+/**
+ * @brief Sets the minimum and maximum values for the spinner.
+ *
+ * @details This defines the allowed range of values to be selected by the user.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If the actual value is less than @a min, it is updated to @a min. If it
+ * is bigger then @a max, it is updated to @a max. Actual value can be
+ * obtained with elm_spinner_value_get().
+ *
+ * @remarks By default, @a min is equal to @c 0, and @a max is equal to @c 100.
+ *
+ * @remarks Maximum must be greater than minimum.
+ *
+ * @param[in] obj The spinner object
+ * @param[in] min The minimum value
+ * @param[in] max The maximum value
+ *
+ * @see elm_spinner_min_max_get()
+ */
+EAPI void elm_spinner_min_max_set(Evas_Object *obj, double min, double max);
+
+/**
+ * @brief Gets the minimum and maximum values of the spinner.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If only one value is needed, the other pointer can be passed
+ * as @c NULL.
+ *
+ * @param[in] obj The spinner object
+ * @param[out] min The pointer to store the minimum value
+ * @param[out] max The pointer to store the maximum value
+ *
+ * @see elm_spinner_min_max_set()
+ */
+EAPI void elm_spinner_min_max_get(const Evas_Object *obj, double *min, double *max);
+
+/**
+ * @brief Sets the step used to increment or decrement the spinner value.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This value is incremented or decremented to the displayed value.
+ * It is incremented while the user keeps the right or top arrow pressed,
+ * and is decremented while the user keeps the left or bottom arrow pressed.
+ *
+ * @remarks The interval to increment / decrement can be set using
+ * elm_spinner_interval_set().
+ *
+ * @remarks By default the step value is equal to @c 1.
+ *
+ * @param[in] obj The spinner object
+ * @param[in] step The step value
+ *
+ * @see elm_spinner_step_get()
+ */
+EAPI void elm_spinner_step_set(Evas_Object *obj, double step);
+
+/**
+ * @brief Gets the step used to increment or decrement the spinner value.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The spinner object
+ * @return The step value
+ *
+ * @see elm_spinner_step_get()
+ */
+EAPI double elm_spinner_step_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the value that the spinner displays.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The value is presented on the label following the format specified by
+ * elm_spinner_format_set().
+ *
+ * @remarks The value must to be between the @a min and @a max values. These values
+ * are set by elm_spinner_min_max_set().
+ *
+ * @param[in] obj The spinner object
+ * @param[in] val The value to be displayed
+ *
+ * @see elm_spinner_value_get()
+ * @see elm_spinner_format_set()
+ * @see elm_spinner_min_max_set()
+ */
+EAPI void elm_spinner_value_set(Evas_Object *obj, double val);
+
+/**
+ * @brief Gets the value displayed by the spinner.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The spinner object
+ * @return The value displayed
+ *
+ * @see elm_spinner_value_set()
+ */
+EAPI double elm_spinner_value_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether the spinner should wrap when it reaches its
+ * minimum or maximum value.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It is disabled by default. If disabled when the user tries to increment the
+ * value, but the displayed value plus the step value is bigger than the maximum value,
+ * the new value is the maximum value.
+ * The same happens when the user tries to decrement it,
+ * but the value less than step is less than the minimum value. In this case,
+ * the new displayed value is the minimum value.
+ *
+ * @remarks If wrap is enabled when the user tries to increment the value,
+ * but the displayed value plus the step value is bigger than the maximum value,
+ * the new value is the minimum value. When the the user tries to
+ * decrement it, but the value less step is less than the minimum value,
+ * the new displayed value is the maximum value.
+ *
+ * E.g.:
+ * @li min value = 10
+ * @li max value = 50
+ * @li step value = 20
+ * @li displayed value = 20
+ *
+ * When the user decrements the value (using left or bottom arrow), it
+ * displays @c 50.
+ *
+ * @param[in] obj The spinner object
+ * @param[in] wrap If @c EINA_TRUE wrap is enabled, otherwise @c EINA_FALSE to
+ * disable it
+ *
+ * @see elm_spinner_wrap_get()
+ */
+EAPI void elm_spinner_wrap_set(Evas_Object *obj, Eina_Bool wrap);
+
+/**
+ * @brief Gets whether the spinner should wrap when it reaches its
+ * minimum or maximum value.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The spinner object
+ * @return @c EINA_TRUE indicates that wrap is enabled, otherwise @c EINA_FALSE indicates that it's disabled \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_spinner_wrap_set()
+ */
+EAPI Eina_Bool elm_spinner_wrap_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether the spinner can be directly edited by the user.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Spinner objects can have an edition @b disabled, in which case they can
+ * be changed only by arrows.
+ * Useful for contexts
+ * where you don't want your users to interact by writing the value.
+ * Specially when using special values, the user can see real values instead
+ * of special labels on the edition.
+ *
+ * @remarks It's enabled by default.
+ *
+ * @param[in] obj The spinner object
+ * @param[in] editable If @c EINA_TRUE allow users to edit it, otherwise @c EINA_FALSE to
+ * not allow users to edit it directly
+ *
+ * @see elm_spinner_editable_get()
+ */
+EAPI void elm_spinner_editable_set(Evas_Object *obj, Eina_Bool editable);
+
+/**
+ * @brief Gets whether the spinner can be directly edited by the user.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The spinner object
+ * @return @c EINA_TRUE indicates that the edition is enabled, otherwise @c EINA_FALSE indicates that it's disabled \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_spinner_editable_set()
+ */
+EAPI Eina_Bool elm_spinner_editable_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets a special string to display in place of the numerical value.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It's useful for cases when a user should select an item that is
+ * better indicated by a label than a value. For example, weekdays or months.
+ *
+ * E.g.:
+ * @code
+ * sp = elm_spinner_add(win);
+ * elm_spinner_min_max_set(sp, 1, 3);
+ * elm_spinner_special_value_add(sp, 1, "January");
+ * elm_spinner_special_value_add(sp, 2, "February");
+ * elm_spinner_special_value_add(sp, 3, "March");
+ * evas_object_show(sp);
+ * @endcode
+ *
+ * @remarks If another label was previously set to @a value, it is replaced
+ * by the new label.
+ *
+ * @param[in] obj The spinner object
+ * @param[in] value The value to be replaced
+ * @param[in] label The label to be used
+ *
+ * @see elm_spinner_special_value_get()
+ * @see elm_spinner_special_value_del()
+ */
+EAPI void elm_spinner_special_value_add(Evas_Object *obj, double value, const char *label);
+
+/**
+ * @brief Deletes the special string displayed in place of the numerical value.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It removes a previously added special value. After this, the spinner
+ * displays the value itself instead of a label.
+ *
+ * @param[in] obj The spinner object
+ * @param[in] value The replaced value
+ *
+ * @see elm_spinner_special_value_add()
+ */
+EAPI void elm_spinner_special_value_del(Evas_Object *obj, double value);
+
+/**
+ * @brief Gets the special string displayed in place of the numerical value.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The spinner object
+ * @param[in] value The replaced value
+ * @return The used label
+ *
+ * @see elm_spinner_special_value_add()
+ */
+EAPI const char *elm_spinner_special_value_get(Evas_Object *obj, double value);
+
+/**
+ * @brief Sets the interval on the time updates for a user's mouse button hold
+ * on the spinner widgets' arrows.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This interval value is @b decreased while the user holds the
+ * mouse pointer either by incrementing or decrementing the spinner's value.
+ *
+ * @remarks This helps the user to get to a given value, which is distant from the
+ * current one, in an easier/faster way, as it updates the value in that set interval time
+ * on mouse button holds.
+ *
+ * @remarks The default starting interval value for automatic changes is
+ * @c 0.85 seconds.
+ *
+ * @param[in] obj The spinner object
+ * @param[in] interval The interval value in seconds
+ *
+ * @see elm_spinner_interval_get()
+ */
+EAPI void elm_spinner_interval_set(Evas_Object *obj, double interval);
+
+/**
+ * @brief Gets the interval on the time updates for a user's mouse button hold
+ * on the spinner widgets' arrows.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The spinner object
+ * @return The interval value, in seconds, set on it
+ *
+ * @see elm_spinner_interval_set()
+ */
+EAPI double elm_spinner_interval_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the base for rounding.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Rounding works as follows:
+ *
+ * rounded_val = base + (double)(((value - base) / round) * round)
+ *
+ * Where rounded_val, value, and base are doubles, and round is an integer.
+ *
+ * This means that things are rounded to increments (or decrements) of
+ * "round" starting from the value @a base. The default base for rounding is @c 0.
+ *
+ * Example: round = 3, base = 2
+ * Values: 3, 6, 9, 12, 15, ...
+ *
+ * Example: round = 2, base = 5.5
+ * Values: 5.5, 7.5, 9.5, 11.5, ...
+ *
+ * @param[in] obj The spinner object
+ * @param[in] base The base value
+ *
+ * @see elm_spinner_round_get()
+ * @see elm_spinner_base_get()
+ */
+EAPI void elm_spinner_base_set(Evas_Object *obj, double base);
+
+/**
+ * @brief Gets the base for rounding.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This returns the base for rounding
+ *
+ * @param[in] obj The spinner object
+ * @return The base rounding value
+ *
+ * @see elm_spinner_round_set()
+ * @see elm_spinner_base_set()
+ */
+EAPI double elm_spinner_base_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the round value for rounding.
+ *
+ * @details This sets the rounding value used for the value rounding in the spinner.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The spinner object
+ * @param[in] rnd The rounding value
+ *
+ * @see elm_spinner_round_get()
+ * @see elm_spinner_base_set()
+ */
+EAPI void elm_spinner_round_set(Evas_Object *obj, int rnd);
+
+/**
+ * @brief Gets the round value for rounding.
+ *
+ * @details This returns the round value for rounding.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The spinner object
+ * @return The rounding value
+ *
+ * @see elm_spinner_round_set()
+ * @see elm_spinner_base_set()
+ */
+EAPI int elm_spinner_round_get(const Evas_Object *obj);
/**
* @}
*/
diff --git a/src/lib/elm_store.h b/src/lib/elm_store.h
index 27053287a..9564c82d4 100644
--- a/src/lib/elm_store.h
+++ b/src/lib/elm_store.h
@@ -1,14 +1,16 @@
/**
+ * @internal
* @defgroup Store Elementary Store
- * @ingroup Elementary
+ * @ingroup elm_container_group
+ * @brief This group provides abstracting APIs to fectch data asynchronously.
*
- * Store is an abstracting API that is intended to farm off fetching of data
+ * Store is an abstracting API that is intended to farm off the fetching of data
* to threads running asynchronously from the mainloop that actually fetch
- * data needed for a genlist (or possibly future other widgets) so scrolling
+ * data needed for a genlist (or possibly other future widgets) so scrolling
* never blocks waiting on IO (though normally this should be the users
- * job - if using genlist, to ensure all data genlist needs is in memory at
+ * job - if using genlist, to ensure that all the data genlist needs is in the memory at
* the time it needs it, and if it isn't to queue and defer a fetch and let
- * genlist know later when its ready. Store actually does this and implements
+ * a genlist know later when its ready. Store actually does this and implements
* the infrastructure of this, leaving the actual fetch and convert up to
* functions provided by the user).
*
@@ -19,36 +21,36 @@
*
* Store works first by creating a store, setting up functions to list items
* and fetch items. Currently the only store type supported is the
- * filesystem store, which will list the files inside a directory (not
- * recursively) and then hand each file it finds (the file path) to the
+ * filesystem store, which lists the files inside a directory (not
+ * recursively) and then hands each file it finds (the file path) to the
* list function for evaluation.
*
- * The list function may look at filename, may open the file or do
+ * The list function may look at a filename, may open the file or do
* anything it likes to determine something about the file. Either it
- * filters it out (returns @c EINA_FALSE) and it is discarded or it
- * returns @c EINA_TRUE and also provides a "sort id" which is a string
- * store uses to figure out sorting. This string could be the filename, or
+ * filters it out (returns @c EINA_FALSE) and discards it or it
+ * returns @c EINA_TRUE and also provides a "sort ID" which is a string
+ * that store uses to figure out sorting. This string could be the filename, or
* some data based on its contents. The strings are sorted alphabetically
* like any normal ASCII strings, with case being important. As this listing
* function runs in a thread, it can do blocking IO and parsing without
* hurting the fluidity of the main loop and GUI. The list function also
* returns information on how to map fields in the source file to elements
* of the genlist item. For example, how the fetcher reads the private
- * data struct of the user (what memory offset in the struct the data is at)
- * and what type is there (it's a label of some sort, an icon, or with a
+ * data struct of the user (what memory offset in the struct is the data at)
+ * and what type is there (is it a label of some sort, an icon, or with a
* custom mapping function that figures it out itself and creates the
* content needed for the genlist item).
*
- * Store then uses this sort id to build (over time) a sorted list of items
+ * Store then uses this sort ID to build (over time) a sorted list of items
* that then map 1:1 to genlist items. When these items are visible and
- * need content, Store calls the fetch function per item, which is responsible
- * for fetching the data from the given item and returning data to store
+ * need content, Store calls the fetch function for each item, which is responsible
+ * for fetching the data from the given item and returning the data to store
* so it can map this to some item content. This function also runs in a
* thread, and thus can do blocking IO work to later return the data. Sorting
- * is optional and can be enabled or disabled too.
+ * is optional and can be enabled or disabled.
*
- * When items are no longer needed, store will cal the unfetch function to
- * free data in memory about that item that is no longer needed. This function
+ * When items are no longer needed, store calls the unfetch function to
+ * free data in the memory about an item that is no longer needed. This function
* is called in the mainloop and is expected to take minimal or almost no time
* to simply free up memory resources.
*
@@ -59,20 +61,19 @@ typedef struct _Elm_Store Elm_Store; /**< A store object */
typedef struct _Elm_Store_Item Elm_Store_Item; /**< A handle of a store item passed to store fetch/unfetch functions */
typedef struct _Elm_Store_Item_Info Elm_Store_Item_Info; /**< Basic information about a store item - always cast into a specific type like Elm_Store_Item_Info_Filesystem */
typedef struct _Elm_Store_Item_Info_Filesystem Elm_Store_Item_Info_Filesystem; /**< Filesystem specific information about a store item */
-typedef struct _Elm_Store_Item_Mapping Elm_Store_Item_Mapping; /**< A basic way of telling Store how to take your return data (string, or something else from your struct) and convert it into something genlist can use */
+typedef struct _Elm_Store_Item_Mapping Elm_Store_Item_Mapping; /**< A basic way of telling Store how to take your return data (string, or something else from your struct) and convert it into something that genlist can use */
typedef struct _Elm_Store_Item_Mapping_Empty Elm_Store_Item_Mapping_Empty; /**< An empty piece of mapping information. Useful for String labels as they get used directly */
-typedef struct _Elm_Store_Item_Mapping_Icon Elm_Store_Item_Mapping_Icon; /***< The data being mapped at the given address is an icon, so use these properties for finding it */
+typedef struct _Elm_Store_Item_Mapping_Icon Elm_Store_Item_Mapping_Icon; /**< The data being mapped at the given address is an icon, so use these properties for finding it */
typedef struct _Elm_Store_Item_Mapping_Photo Elm_Store_Item_Mapping_Photo; /**< The data is a photo, so use these parameters to find it */
-typedef struct _Elm_Store_Item_Mapping_Custom Elm_Store_Item_Mapping_Custom; /**> The item needs a custom mapping which means calling a function and returning a string from it, as opposed to a static lookup. It should not be allocated, and should live in a buffer in memory that survives the return of this function if its a label, or an allocated icon object if its an icon needed etc. */
-
+typedef struct _Elm_Store_Item_Mapping_Custom Elm_Store_Item_Mapping_Custom; /**< The item needs a custom mapping which means calling a function and returning a string from it, as opposed to a static lookup.
+ It should not be allocated, and should live in a buffer in the memory that survives the return of this function if it is a label, or an allocated icon object if it is an icon needed */
typedef Eina_Bool (*Elm_Store_Item_List_Cb)(void *data, Elm_Store_Item_Info *info); /**< Function to call for listing an item */
typedef void (*Elm_Store_Item_Fetch_Cb)(void *data, Elm_Store_Item *sti); /**< Function to call to fetch item data */
typedef void (*Elm_Store_Item_Unfetch_Cb)(void *data, Elm_Store_Item *sti); /**< Function to cal lto un-fetch (free) an item */
typedef void *(*Elm_Store_Item_Mapping_Cb)(void *data, Elm_Store_Item *sti, const char *part); /**< Custom mapping function to call */
/**
- * Possible mappings types.
- * @since 1.7
+ * @brief Enumeration of Elm Store item mapping type
*/
typedef enum
{
@@ -82,7 +83,7 @@ typedef enum
ELM_STORE_ITEM_MAPPING_ICON, /**< char * -> icon path */
ELM_STORE_ITEM_MAPPING_PHOTO, /**< char * -> photo path */
ELM_STORE_ITEM_MAPPING_CUSTOM, /**< item->custom(it->data, it, part) -> void * (-> any) */
- ELM_STORE_ITEM_MAPPING_LAST, /** canary value: any value greater or equal to ELM_STORE_ITEM_MAPPING_LAST is forbidden. */
+ ELM_STORE_ITEM_MAPPING_LAST
} Elm_Store_Item_Mapping_Type;
struct _Elm_Store_Item_Mapping_Icon
@@ -90,7 +91,7 @@ struct _Elm_Store_Item_Mapping_Icon
int w, h; /**< The desired icon size in addition to the file path returned from the mapping */
Elm_Icon_Lookup_Order lookup_order; /**< The order in which to find the icon */
Eina_Bool standard_name : 1; /**< Use a standard name to find it (@c EINA_TRUE) or not */
- Eina_Bool no_scale : 1; /**< @c EINA_TRUE is you don't want the icon scaled */
+ Eina_Bool no_scale : 1; /**< @c EINA_TRUE if you don't want the icon scaled */
Eina_Bool smooth : 1; /**< @c EINA_TRUE if icon is to be smooth scaled */
Eina_Bool scale_up : 1; /**< @c EINA_TRUE if scaling up is allowed */
Eina_Bool scale_down : 1; /**< @c EINA_TRUE if scaling down is allowed */
@@ -113,9 +114,9 @@ struct _Elm_Store_Item_Mapping_Custom
struct _Elm_Store_Item_Mapping
{
- Elm_Store_Item_Mapping_Type type; /**< what kind of mapping is this */
- const char *part; /**< what part name in the genlist item is this filling in */
- int offset; /**< offset in memory (in bytes) relative to base of structure for item data where the data for the mapping lives */
+ Elm_Store_Item_Mapping_Type type; /**< The mapping type */
+ const char *part; /**< The part name in the genlist item that this is filling in */
+ int offset; /**< The offset in the memory (in bytes) relative to the base of the structure for item data where the data for the mapping lives */
union
{
Elm_Store_Item_Mapping_Empty empty;
@@ -129,9 +130,9 @@ struct _Elm_Store_Item_Mapping
struct _Elm_Store_Item_Info
{
Elm_Genlist_Item_Class *item_class; /**< The genlist item class that should be used for the item that has been listed */
- const Elm_Store_Item_Mapping *mapping; /**< What kind of mappings do we use for the fields of this item to fill in the genlist item. Terminate array pointed to here with ELM_STORE_ITEM_MAPPING_END */
- void *data; /**< Pointer to pass to struct data in memory if its already there, of not, NULL */
- char *sort_id; /**< Sort ID string (strduped()) to know how to wort items, or NULL, if you don't care */
+ const Elm_Store_Item_Mapping *mapping; /**< The mapping type to use for the fields of this item to fill in the genlist item. Terminate array pointed to here with ELM_STORE_ITEM_MAPPING_END */
+ void *data; /**< The pointer to pass to struct data in the memory if its already there, if not then @c NULL */
+ char *sort_id; /**< Sort ID string (strduped()) to know how to sort items, or @c NULL if not required */
};
struct _Elm_Store_Item_Info_Filesystem
@@ -141,264 +142,263 @@ struct _Elm_Store_Item_Info_Filesystem
};
#define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } } /**< Use this to end a list of mappings */
-#define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it) /**< Use this to get the offset in bytes in memory for where the data for the mapping lives relative to the item data (a private struct pointed to owned by the user */
+#define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it) /**< Use this to get the offset in bytes in memory from where the data for the mapping lives relative to the item data (a private struct pointed to owned by the user */
/**
- * Create a new store object
+ * @brief Creates a new store object.
*
- * This creates a new store object to then configure so it works.
+ * @details This creates a new store object to configure so that it works.
*
- * @return A new store object, or NULL if creation fails
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @return The new store object, otherwise @c NULL if the creation fails
*/
EAPI Elm_Store *elm_store_filesystem_new(void);
/**
- * Free the store object and all items it manages
+ * @brief Frees the store object and all the items that it manages.
*
- * This frees the given @p st store and all the items it manages. It will
- * clear the List that it populated, but otherwise leave it alone. It will
- * cancel background threads (and may have to wait for them to complete a
- * pending operation to do this).
+ * @details This frees the given @a st store and all the items it manages. It
+ * clears the List that it populated, but otherwise leaves it alone. It
+ * cancels the background threads (and may have to wait for them to complete a
+ * pending operation to do this).
*
- * @param st The store to free
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] st The store to free
*/
EAPI void elm_store_free(Elm_Store *st);
/**
- * Set the path to the directory to scan for a filesystem store
+ * @brief Sets the path to the directory to scan for a filesystem store.
*
- * This sets the directory (@p dir) to scan and begins scanning in the
- * the background in threads (or not if threading is disabled with
- * elm_store_fetch_thread_set()). Note that Listing is always done in a thread
- * but fetching may not be if disabled here. This should be the last thing
- * called after fetch, list and unfetch functions are set, as well as target
- * genlist etc. You also should not change the directory once set. If you
- * need a new directory scanned, create a new store.
+ * @details This sets the directory (@a dir) to scan and begins scanning in the
+ * the background in threads (or not if threading is disabled with
+ * elm_store_fetch_thread_set()). Note that Listing is always done in a thread
+ * but fetching may not happen if disabled here. This should be the last thing
+ * called after fetch, list, and unfetch functions are set, as well as target
+ * genlist etc. You also should not change the directory once it is set. If you
+ * need a new directory scanned, create a new store.
*
- * @param st The store to modify
- * @param dir A string giving the path to the directory to scan
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] st The store to modify
+ * @param[in] dir The string giving the path to the directory to scan
*/
EAPI void elm_store_filesystem_directory_set(Elm_Store *st, const char *dir);
/**
- * Get the directory set on a filesystem store
+ * @brief Gets the directory set on a filesystem store.
*
- * This gets the directory set by elm_store_filesystem_directory_set(). This
- * string returned will be valid until elm_store_filesystem_directory_set()
- * changes it or until the store is freed with elm_store_free().
+ * @details This gets the directory set by elm_store_filesystem_directory_set(). This
+ * string returned is valid until elm_store_filesystem_directory_set()
+ * changes it or until the store is freed with elm_store_free().
*
- * @return A string with the path set, or NULL if none set.
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @return The string with the path set, otherwise @c NULL if none are set
*/
EAPI const char *elm_store_filesystem_directory_get(const Elm_Store *st);
/**
- * Get the path of a specific store item
+ * @brief Gets the path of a specific store item.
*
- * This returns the full path of a store item. This string is valid only
- * during the list function set by elm_store_list_func_set() or during the
- * fetch function set by elm_store_fetch_func_set() or during the unfetch
- * function set by elm_store_unfetch_func_set().
+ * @details This returns the full path of a store item. This string is valid only
+ * during the list function set by elm_store_list_func_set() or during the
+ * fetch function set by elm_store_fetch_func_set(), or during the unfetch
+ * function set by elm_store_unfetch_func_set().
*
- * @param sti The store item to get the path from
- * @return A full path in a string or NULL if none available
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] sti The store item to get the path from
+ * @return The full path in a string, otherwise @c NULL if none are available
*/
EAPI const char *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti);
/**
- * Set the target genlist to fill in from the store
+ * @brief Sets the target genlist to fill from the store
*
- * This tells the store the target genlist to use to fill in content from
- * the store. Once a store starts "going" via elm_store_filesystem_directory_set()
- * The target should never be changed again.
+ * @details This tells the store which target genlist to use to fill content from
+ * the store. Once a store starts "going" via elm_store_filesystem_directory_set(),
+ * the target should never be changed again.
*
- * @param st The store to do the filling.
- * @param obj The genlist object to fill in and control the content of from the store.
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] st The store to do the filling
+ * @param[in] obj The genlist object to fill in and control the content from the store
*/
EAPI void elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj);
/**
- * Set the maximum number of items that are not visible to keep cached
+ * @brief Sets the maximum number of items that are not visible to keep cached.
*
- * Store may keep some items around for caching purposes that cannot be seen,
- * so this controls the maximum number. The default is 128, but may change
- * at any point in time in the future.
+ * @since_tizen 2.3
*
- * @param st The store to modify
- * @param max The number of items to keep (should be greater than or equal to 0)
+ * @remarks Store may keep some items around for caching purposes that cannot be seen,
+ * so this controls the maximum number. The default is @c 128, but may change
+ * at any point in time in the future.
*
- * @ingroup Store
+ * @param[in] st The store to modify
+ * @param[in] max The number of items to keep (should be greater than or equal to @c 0)
*/
EAPI void elm_store_cache_set(Elm_Store *st, int max);
/**
- * Get the maximum number if items to cache
+ * @brief Gets the maximum number of items to cache.
+ *
+ * @details This returns the maximum number of items to cache.
*
- * This returns the number of items at most to cache.
+ * @since_tizen 2.3
*
- * @param st The store to query
+ * @param[in] st The store to query
* @return The maximum number of items to cache (>= 0)
* @see elm_store_cache_set()
- *
- * @ingroup Store
*/
EAPI int elm_store_cache_get(const Elm_Store *st);
/**
- * Set the function used to deal with listing of items
+ * @brief Sets the function used to deal with the listing of items.
*
- * This function is called per item that is found so it can examine the item
- * and discard it (return @c EINA_FALSE to discard, or @c EINA_TRUE to accept),
- * and work out some sorting ID (that may be filename or anything else based on
- * content). This function is always called from a thread.
+ * @details This function is called for each item that is found so it can examine the item
+ * and discard it (return @c EINA_FALSE to discard, or @c EINA_TRUE to accept), and
+ * work out some sorting ID (that may be filename or anything else based on the
+ * content). This function is always called from a thread.
*
- * @param st The store to set the function of
- * @param func The function to be called
- * @param data the data pointer to be passed to the @p func function when called
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] st The store to set the function for
+ * @param[in] func The function to be called
+ * @param[in] data The data pointer to be passed to the @a func function when it is called
*/
EAPI void elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data);
/**
- * Set the function used to deal with fetching of items
+ * @brief Sets the function used to deal with fetching of items.
*
- * This function is called per item that needs data to be fetched when it
- * becomes visible and such data is needed. This function is normally run
- * from a thread (unless elm_store_fetch_thread_set() disables this). The
- * fetch function is to read data from the source and fill a structure
- * allocated for this item with fields and then rely on the mapping setup
- * to tell Store how to take a field in the structure and apply it to a
- * genlist item.
+ * @details This function is called for each item that needs data to be fetched when it
+ * becomes visible and is needed. This function is normally run
+ * from a thread (unless elm_store_fetch_thread_set() disables it). The
+ * fetch function is to read data from the source and fill a structure
+ * allocated for this item with fields and then rely on the mapping setup
+ * to tell Store how to take a field in the structure and apply it to a
+ * genlist item.
*
- * @param st The store to set the function of
- * @param func The function to be called
- * @param data the data pointer to be passed to the @p func function when called
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] st The store to set the function for
+ * @param[in] func The function to be called
+ * @param[in] data The data pointer to be passed to the @a func function when it is called
*/
EAPI void elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data);
/**
- * Set the function used to free the structure allocated for the item
+ * @brief Sets the function used to free the structure allocated for the item.
*
- * This function is called per item when it is not needed in memory anymore
- * and should free the structure allocated in and filled in the function set
- * by elm_store_fetch_func_set().
+ * @details This function is called for each item when it is not needed in the memory anymore
+ * and should free the structure allocated and filled in the function set
+ * by elm_store_fetch_func_set().
*
- * @param st The store to set the function of
- * @param func The function to be called
- * @param data the data pointer to be passed to the @p func function when called
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] st The store to set the function for
+ * @param[in] func The function to be called
+ * @param[in] data The data pointer to be passed to the @a func function when it is called
*/
EAPI void elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data);
/**
- * Enable or disable fetching in a thread for Store
+ * @brief Enables or disable fetching in a thread for Store.
*
- * @param st The store to modify
- * @param use_thread @c EINA_TRUE to use a thread to fetch, @c EINA_FALSE don't
- * use a thread.
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] st The store to modify
+ * @param[in] use_thread If @c EINA_TRUE use a thread to fetch, otherwise @c EINA_FALSE to not use a thread
*/
EAPI void elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread);
/**
- * Get the thread enabled fetching option for Store
+ * @brief Gets the thread enabled fetching option for Store.
*
- * @return The state set currently for the store.
- * @see elm_store_fetch_thread_set()
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @return The state set currently for the store
+ * @see elm_store_fetch_thread_set()
*/
EAPI Eina_Bool elm_store_fetch_thread_get(const Elm_Store *st);
/**
- * Set if items are to be sorted or not.
+ * @brief Sets whether items are to be sorted.
*
- * By default items are not sorted, but read "in order" as they are found. If
- * you want to sort, your list function set by elm_store_list_func_set() must
- * provide a sort ID to sort by, and then Store will take care of sorting when
- * it inserts items. You should set this up before you begin listing items
- * in the store and then never change it again.
+ * @since_tizen 2.3
*
- * @param st The store to modify
- * @param sorted @c EINA_TRUE if we are to sort, @c EINA_FALSE if not.
+ * @remarks By default items are not sorted, but read "in the order" in which they are found. If
+ * you want to sort, your list function set by elm_store_list_func_set() must
+ * provide a sort ID to sort, and then Store should take care of the sorting when
+ * it inserts items. You should set this up before you begin listing items
+ * in the store and then never changing it again.
*
- * @ingroup Store
+ * @param[in] st The store to modify
+ * @param[in] sorted If @c EINA_TRUE we are to sort, otherwise @c EINA_FALSE if not
*/
EAPI void elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted);
/**
- * Get the sorting flag
+ * @brief Gets the sorting flag.
*
- * Get the sorted flag as set by elm_store_sorted_set().
+ * @details This gets the sorted flag as set by elm_store_sorted_set().
*
- * @param st The store to query
- * @return @c EINA_TRUE if sorted, @c EINA_FALSE if not.
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] st The store to query
+ * @return @c EINA_TRUE if sorted, otherwise @c EINA_FALSE if not
*/
EAPI Eina_Bool elm_store_sorted_get(const Elm_Store *st);
/**
- * Set the item data holding item fields to map to item values in genlist
+ * @brief Sets the item data holding item fields to map to item values in the genlist.
*
- * Once you decode an item, allocate a structure for it and fill the structure,
- * you should set the item data with this function (eg in the fetch function).
- * This item pointer is the base offset to use when mapping fields to item
- * values. Once you unfetch, store will handle NULLing the data pointer for you.
+ * @since_tizen 2.3
*
- * @param sti The store item to set the data pointer of
- * @param data The data pointer to set.
+ * @remarks Once you decode an item, allocate a structure for it and fill the structure,
+ * you should set the item data with this function (eg in the fetch function).
+ * This item pointer is the base offset to use when mapping fields to item
+ * values. Once you unfetch, store handles NULLing of the data pointer for you.
*
- * @ingroup Store
+ * @param[in] sti The store item to set the data pointer for
+ * @param[in] data The data pointer to set
*/
EAPI void elm_store_item_data_set(Elm_Store_Item *sti, void *data);
/**
- * Get the item data
+ * @brief Gets the item data.
*
- * This gets the data pointer set by elm_store_item_data_set().
+ * @details This gets the data pointer set by elm_store_item_data_set().
*
- * @param sti The store item to query
- * @return The data pointer set on the item
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] sti The store item to query
+ * @return The data pointer set on the item
*/
EAPI void *elm_store_item_data_get(Elm_Store_Item *sti);
/**
- * Fetch the store than a store item belongs to
+ * @brief Fetches the store than a store item belongs to.
*
- * This fetches the store object that owns the store item.
+ * @details This fetches the store object that owns the store item.
*
- * @param sti The store item to query
- * @return The store the item belongs to
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] sti The store item to query
+ * @return The store that the item belongs to
*/
EAPI const Elm_Store *elm_store_item_store_get(const Elm_Store_Item *sti);
/**
- * Fetch the genlist item that this store item controls
+ * @brief Fetches the genlist item that this store item controls.
*
- * @param sti The store item to query
- * @return The genlist object item handle controlled by this store item
+ * @since_tizen 2.3
*
- * @ingroup Store
+ * @param[in] sti The store item to query
+ * @return The genlist object item handle controlled by this store item
*/
EAPI const Elm_Object_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti);
diff --git a/src/lib/elm_table.h b/src/lib/elm_table.h
index aeef9392f..8ba6d99d2 100644
--- a/src/lib/elm_table.h
+++ b/src/lib/elm_table.h
@@ -1,13 +1,13 @@
/**
* @defgroup Table Table
- * @ingroup Elementary
+ * @ingroup elm_container_group
*
* @image html table_inheritance_tree.png
* @image latex table_inheritance_tree.eps
*
- * A container widget to arrange other widgets in a table where items can
- * span multiple columns or rows - even overlap (and then be raised or
- * lowered accordingly to adjust stacking if they do overlap).
+ * @brief A container widget to arrange other widgets in a table where items
+ * can span multiple columns or rows - even overlap (and then be raised
+ * or lowered accordingly to adjust stacking if they do overlap).
*
* The row and column count is not fixed. The table widget adjusts itself when
* subobjects are added to it dynamically.
@@ -17,24 +17,169 @@
* table = elm_table_add(win);
* evas_object_show(table);
* elm_table_padding_set(table, space_between_columns, space_between_rows);
- * elm_table_pack(table, table_content_object, column, row, colspan, rowspan);
- * elm_table_pack(table, table_content_object, next_column, next_row, colspan, rowspan);
- * elm_table_pack(table, table_content_object, other_column, other_row, colspan, rowspan);
+ * elm_table_pack(table, table_content_object, x_coord, y_coord, colspan, rowspan);
+ * elm_table_pack(table, table_content_object, next_x_coord, next_y_coord, colspan, rowspan);
+ * elm_table_pack(table, table_content_object, other_x_coord, other_y_coord, colspan, rowspan);
* @endcode
*
- * The following are examples of how to use a table:
- * @li @ref tutorial_table_01
- * @li @ref tutorial_table_02
- *
* @{
*/
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_table_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_table_legacy.h"
-#endif
+/**
+ * @brief Adds a new table to the parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @ingroup Table
+ */
+EAPI Evas_Object *elm_table_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the homogeneous layout in the table.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[in] homogeneous The boolean value to set if the layout is homogeneous in the
+ * table (@c EINA_TRUE = homogeneous, @c EINA_FALSE = no homogeneous)
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous);
+
+/**
+ * @brief Gets the current table homogeneous mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The table object
+ * @return The boolean that indicates if the layout is homogeneous in the table
+ * (@c EINA_TRUE = homogeneous, @c EINA_FALSE = no homogeneous)
+ *
+ * @ingroup Table
+ */
+EAPI Eina_Bool elm_table_homogeneous_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets padding between the cells.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Default value is @c 0.
+ *
+ * @param[in] obj The layout object
+ * @param[in] horizontal The horizontal padding
+ * @param[in] vertical The vertical padding
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical);
+
+/**
+ * @brief Gets the padding between cells.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The layout object
+ * @param[out] horizontal The horizontal padding
+ * @param[out] vertical The vertical padding
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical);
+
+/**
+ * @brief Adds a subobject on the table with the coordinates passed.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks All positioning inside the table is relative to rows and columns, so
+ * a value of @c 0 for @a x and @a y, means the top left cell of the table, and a
+ * value of @c 1 for @a w and @a h means @a subobj only takes that @c 1 cell.
+ *
+ * @remarks Note that columns and rows only guarantee 16bit unsigned values at best.
+ * That means that col + colspan AND row + rowspan must fit inside 16bit
+ * unsigned values cleanly. You have been warned once that values exceed 15bit
+ * storage, and attempting to use values that are not able to fit in 16bits
+ * result in failure.
+ *
+ * @param[in] obj The table object
+ * @param[in] subobj The subobject to be added to the table
+ * @param[in] col The column number
+ * @param[in] row The row number
+ * @param[in] colspan The column span
+ * @param[in] rowspan The row span
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_pack(Evas_Object *obj, Evas_Object *subobj, int col, int row, int colspan, int rowspan);
+
+/**
+ * @brief Removes the child from the table.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The table object
+ * @param[in] subobj The subobject
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_unpack(Evas_Object *obj, Evas_Object *subobj);
+
+/**
+ * @brief Removes all child objects from a table object.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The table object
+ * @param[in] clear If @c true, the children are deleted,
+ * otherwise @c false to just remove them from the table
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_clear(Evas_Object *obj, Eina_Bool clear);
+
+/**
+ * @brief Sets the packing location of an existing child of the table.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Modifies the position of an object already in the table.
+ *
+ * @remarks All positioning inside the table is relative to rows and columns, so
+ * a value of @c 0 for @a x and @a y, means the top left cell of the table, and a
+ * value of @c 1 for @a w and @a h means @a subobj only takes that @c 1 cell.
+ *
+ * @param[in] subobj The subobject to be modified in the table
+ * @param[in] x The row number
+ * @param[in] y The column number
+ * @param[in] w The row span
+ * @param[in] h The column span
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_pack_set(Evas_Object *subobj, int x, int y, int w, int h);
+
+/**
+ * @brief Gets the packing location of an existing child of the table.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] subobj The subobject to be modified in the table
+ * @param[out] x The row number
+ * @param[out] y The column number
+ * @param[out] w The row span
+ * @param[out] h The column span
+ *
+ * @see elm_table_pack_set()
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h);
+
/**
* @}
*/
diff --git a/src/lib/elm_theme.h b/src/lib/elm_theme.h
index fbe662420..810f59b7a 100644
--- a/src/lib/elm_theme.h
+++ b/src/lib/elm_theme.h
@@ -1,8 +1,10 @@
/**
* @defgroup Theme Theme
- * @ingroup Elementary
+ * @ingroup elm_infra_group
+ * @brief This group provides functions to handle look and feel of Elementary
+ * Widgets.
*
- * Elementary uses Edje to theme its widgets, naturally. But for the most
+ * Elementary uses Edje to theme its widgets, naturally. But for most of the
* part this is hidden behind a simpler interface that lets the user set
* extensions and choose the style of widgets in a much easier way.
*
@@ -11,575 +13,426 @@
* works so you can add any theme file with extensions or replace the
* main theme at one point in the application, and then just set the style
* of widgets with elm_object_style_set() and related functions. Elementary
- * will then look in its list of themes for a matching group and apply it,
+ * then looks in its list of themes for a matching group and applies it,
* and when the theme changes midway through the application, all widgets
- * will be updated accordingly.
+ * are updated accordingly.
*
* There are three concepts you need to know to understand how Elementary
- * theming works: default theme, extensions and overlays.
+ * themes work: default theme, extensions, and overlays.
*
- * Default theme, obviously enough, is the one that provides the default
- * look of all widgets. End users can change the theme used by Elementary
+ * Default theme, obviously, is the one that provides the default
+ * look for all widgets. End users can change the theme used by Elementary
* by setting the @c ELM_THEME environment variable before running an
* application, or globally for all programs using the @c elementary_config
* utility. Applications can change the default theme using elm_theme_set(),
- * but this can go against the user wishes, so it's not an advised practice.
+ * but this can go against the user's wishes, so it's not an advised practice.
*
* Ideally, applications should find everything they need in the already
* provided theme, but there may be occasions when that's not enough and
- * custom styles are required to correctly express the idea. For this
+ * custom styles are required to correctly express the idea. For such
* cases, Elementary has extensions.
*
* Extensions allow the application developer to write styles of its own
* to apply to some widgets. This requires knowledge of how each widget
- * is themed, as extensions will always replace the entire group used by
+ * is themed, as extensions always replace the entire group used by
* the widget, so important signals and parts need to be there for the
* object to behave properly (see documentation of Edje for details).
* Once the theme for the extension is done, the application needs to add
- * it to the list of themes Elementary will look into, using
+ * it to the list of themes that Elementary will look into, using
* elm_theme_extension_add(), and set the style of the desired widgets as
- * he would normally with elm_object_style_set().
+ * he would normally do using elm_object_style_set().
*
- * Overlays, on the other hand, can replace the look of all widgets by
+ * Overlays, on the other hand, can replace the look of all the widgets by
* overriding the default style. Like extensions, it's up to the application
* developer to write the theme for the widgets it wants, the difference
- * being that when looking for the theme, Elementary will check first the
- * list of overlays, then the set theme and lastly the list of extensions,
+ * being that when looking for the theme, Elementary checks first the
+ * list of overlays, then the set theme, and lastly the list of extensions,
* so with overlays it's possible to replace the default view and every
- * widget will be affected. This is very much alike to setting the whole
- * theme for the application and will probably clash with the end user
- * options, not to mention the risk of ending up with not matching styles
+ * widget is affected. This is very much similar to setting the whole
+ * theme for the application and probably clashing with the end user
+ * options, not to mention the risk of ending up with non-matching styles
* across the program. Unless there's a very special reason to use them,
- * overlays should be avoided for the reasons exposed before.
+ * overlays should be avoided for the reasons mentioned previously.
*
* All these theme lists are handled by ::Elm_Theme instances. Elementary
- * keeps one default internally and every function that receives one of
- * these can be called with NULL to refer to this default (except for
+ * keeps one default theme internally and every function that receives one of
+ * these can be called with @c NULL to refer to this default theme(except for
* elm_theme_free()). It's possible to create a new instance of a
- * ::Elm_Theme to set other theme for a specific widget (and all of its
- * children), but this is as discouraged, if not even more so, than using
+ * ::Elm_Theme to set other themes for a specific widget (and all of its
+ * children), but this is as bad as, if not more than, using
* overlays. Don't use this unless you really know what you are doing.
*
- * But to be less negative about things, you can look at the following
- * examples:
- * @li @ref theme_example_01 "Using extensions"
- * @li @ref theme_example_02 "Using overlays"
- *
* @{
*/
/**
* @typedef Elm_Theme
*
- * Opaque handler for the list of themes Elementary looks for when
- * rendering widgets.
+ * @brief The structure type which is an opaque handler for the list of themes that Elementary looks for when
+ * rendering widgets.
+ *
+ * @since_tizen 2.3
*
- * Stay out of this unless you really know what you are doing. For most
- * cases, sticking to the default is all a developer needs.
+ * @remarks Avoid this unless you really know what you are doing. For most
+ * cases, sticking to the default is all a developer needs.
*/
typedef struct _Elm_Theme Elm_Theme;
/**
- * Create a new specific theme
- *
- * This creates an empty specific theme that only uses the default theme. A
- * specific theme has its own private set of extensions and overlays too
- * (which are empty by default). Specific themes do not fall back to themes
- * of parent objects. They are not intended for this use. Use styles, overlays
- * and extensions when needed, but avoid specific themes unless there is no
- * other way (example: you want to have a preview of a new theme you are
- * selecting in a "theme selector" window. The preview is inside a scroller
- * and should display what the theme you selected will look like, but not
- * actually apply it yet. The child of the scroller will have a specific
- * theme set to show this preview before the user decides to apply it to all
- * applications).
- *
- * @ingroup Theme
+ * @brief Creates a new specific theme.
+ *
+ * @details This creates an empty specific theme that only uses the default theme. A
+ * specific theme has its own private set of extensions and overlays
+ * (which are empty by default). Specific themes do not fall back to themes
+ * of parent objects. They are not intended for this use. Use styles, overlays,
+ * and extensions when needed, but avoid specific themes unless there is no
+ * other way (example: you want to have a preview of a new theme you are
+ * selecting in a "theme selector" window. The preview is inside a scroller
+ * and should display how the theme you selected will look, but should not
+ * actually apply it. The child of the scroller have a specific
+ * theme set to show this preview before the user decides to apply it to all
+ * applications).
+ *
+ * @return A new theme
+ *
+ * @since_tizen 2.3
*/
EAPI Elm_Theme *elm_theme_new(void);
/**
- * Free a specific theme
+ * @brief Frees a specific theme.
*
- * @param th The theme to free
+ * @details This frees a theme created with elm_theme_new().
*
- * This frees a theme created with elm_theme_new().
+ * @since_tizen 2.3
*
- * @ingroup Theme
+ * @param[in] th The theme to free
*/
EAPI void elm_theme_free(Elm_Theme *th);
/**
- * Copy the theme from the source to the destination theme
+ * @brief Copies the theme from the source to the destination theme.
*
- * @param th The source theme to copy from
- * @param thdst The destination theme to copy data to
+ * @since_tizen 2.3
*
- * This makes a one-time static copy of all the theme config, extensions
- * and overlays from @p th to @p thdst. If @p th references a theme, then
- * @p thdst is also set to reference it, with all the theme settings,
- * overlays and extensions that @p th had.
+ * @remarks This makes a one-time static copy of all the theme config, extensions
+ * and overlays from @a th to @a thdst. If @a th references a theme, then
+ * @a thdst is also set to reference it, with all the theme settings,
+ * overlays, and extensions that @a th has.
*
- * @ingroup Theme
+ * @param[in] th The source theme to copy from
+ * @param[out] thdst The destination theme to copy data to
*/
EAPI void elm_theme_copy(Elm_Theme *th, Elm_Theme *thdst);
/**
- * Tell the source theme to reference the ref theme
+ * @brief Sets the source theme to reference the ref theme.
*
- * @param th The theme that will do the referencing
- * @param thref The theme that is the reference source
+ * @since_tizen 2.3
*
- * This clears @p th to be empty and then sets it to refer to @p thref
- * so @p th acts as an override to @p thref, but where its overrides
- * don't apply, it will fall through to @p thref for configuration.
+ * @remarks This clears @a th to be empty and then sets it to refer to @a thref
+ * so @a th acts as an override to @a thref, but where its overriding
+ * doesn't apply, it falls through to @a thref for configuration.
*
- * @ingroup Theme
+ * @param[in] th The theme that does the referencing
+ * @param[out] thref The theme that is the reference source
*/
EAPI void elm_theme_ref_set(Elm_Theme *th, Elm_Theme *thref);
/**
- * Return the theme referred to
+ * @brief Gets the theme referred to.
*
- * @param th The theme to get the reference from
- * @return The referenced theme handle
+ * @details This gets the theme set as the reference theme by elm_theme_ref_set().
+ * If no theme is set as a reference, @c NULL is returned.
*
- * This gets the theme set as the reference theme by elm_theme_ref_set().
- * If no theme is set as a reference, NULL is returned.
+ * @since_tizen 2.3
*
- * @ingroup Theme
+ * @param[in] th The theme to get the reference from
+ * @return The referenced theme handle
*/
EAPI Elm_Theme *elm_theme_ref_get(Elm_Theme *th);
/**
- * Return the default theme
+ * @brief Gets the default theme.
*
- * @return The default theme handle
+ * @since_tizen 2.3
*
- * This returns the internal default theme setup handle that all widgets
- * use implicitly unless a specific theme is set. This is also often use
- * as a shorthand of NULL.
+ * @remarks This returns the internal default theme setup handle that all widgets
+ * use implicitly unless a specific theme is set. This is also often used
+ * as a shorthand for @c NULL.
*
- * @ingroup Theme
+ * @return The default theme handle
*/
EAPI Elm_Theme *elm_theme_default_get(void);
/**
- * Prepends a theme overlay to the list of overlays
+ * @brief Prepends a theme overlay to the list of overlays.
*
- * @param th The theme to add to, or if NULL, the default theme
- * @param item The Edje file path to be used
+ * @since_tizen 2.3
*
- * Use this if your application needs to provide some custom overlay theme
- * (An Edje file that replaces some default styles of widgets) where adding
- * new styles, or changing system theme configuration is not possible. Do
- * NOT use this instead of a proper system theme configuration. Use proper
- * configuration files, profiles, environment variables etc. to set a theme
- * so that the theme can be altered by simple configuration by a user. Using
- * this call to achieve that effect is abusing the API and will create lots
- * of trouble.
+ * @remarks Use this if your application needs to provide some custom overlay theme
+ * (An Edje file that replaces some default styles of widgets) where adding
+ * new styles, or changing system theme configuration is not possible. Do
+ * NOT use this instead of a proper system theme configuration. Use proper
+ * configuration files, profiles, environment variables etc., to set a theme
+ * so that the theme can be altered by simple configuration by a user. Using
+ * this call to achieve that effect is overusing the API and creates lots
+ * of issues.
*
- * @see elm_theme_extension_add()
- * @see elm_theme_overlay_mmap_add()
+ * @param[in] th The theme to add to, otherwise @c NULL for the default theme
+ * @param[in] item The Edje file path to be used
*
- * @ingroup Theme
+ * @see elm_theme_extension_add()
*/
EAPI void elm_theme_overlay_add(Elm_Theme *th, const char *item);
/**
- * Delete a theme overlay from the list of overlays
+ * @brief Deletes a theme overlay from the list of overlays.
*
- * @param th The theme to delete from, or if NULL, the default theme
- * @param item The name of the theme overlay
+ * @since_tizen 2.3
*
- * @see elm_theme_overlay_add()
+ * @param[in] th The theme to delete, otherwise @c NULL for the default theme
+ * @param[in] item The name of the theme overlay
*
- * @ingroup Theme
+ * @see elm_theme_overlay_add()
*/
EAPI void elm_theme_overlay_del(Elm_Theme *th, const char *item);
/**
- * Prepends a theme overlay to the list of overlays
+ * @brief Gets the list of registered overlays for the given theme.
*
- * @param th The theme to add to, or if NULL, the default theme
- * @param f The Edje file handle to be used
+ * @since_tizen 2.3
*
- * Use this if your application needs to provide some custom overlay theme
- * (An Edje file that replaces some default styles of widgets) where adding
- * new styles, or changing system theme configuration is not possible. Do
- * NOT use this instead of a proper system theme configuration. Use proper
- * configuration files, profiles, environment variables etc. to set a theme
- * so that the theme can be altered by simple configuration by a user. Using
- * this call to achieve that effect is abusing the API and will create lots
- * of trouble.
+ * @param[in] th The theme from which to get the overlays
+ * @return The list of theme overlays, do not free it
*
- * @see elm_theme_extension_add()
* @see elm_theme_overlay_add()
- *
- * @ingroup Theme
- */
-EAPI void elm_theme_overlay_mmap_add(Elm_Theme *th, const Eina_File *f);
-
-/**
- * Delete a theme overlay from the list of overlays
- *
- * @param th The theme to delete from, or if NULL, the default theme
- * @param f The file handle of the theme overlay
- *
- * @see elm_theme_overlay_mmap_add()
- *
- * @ingroup Theme
*/
-EAPI void elm_theme_overlay_mmap_del(Elm_Theme *th, const Eina_File *f);
+EAPI const Eina_List *elm_theme_overlay_list_get(const Elm_Theme *th);
/**
- * Get the list of registered overlays for the given theme
+ * @brief Appends a theme extension to the list of extensions.
*
- * @param th The theme from which to get the overlays
- * @return List of theme overlays. Do not free it.
+ * @since_tizen 2.3
*
- * @see elm_theme_overlay_add()
+ * @remarks This is intended when an application needs more styles of widgets or new
+ * widget themes that the default does not provide (or may not provide). The
+ * application has "extended" usage by coming up with new custom style names
+ * for widgets for specific uses, but as these are not "standard", they are
+ * not guaranteed to be provided by a default theme. This means the
+ * application is required to provide these extra elements itself in specific
+ * Edje files. This call adds one of those Edje files to the theme search
+ * path to be search after the default theme. The use of this call is
+ * encouraged when default styles do not meet the needs of the application.
+ * Use this call instead of elm_theme_overlay_add() for almost all cases.
*
- * @ingroup Theme
- */
-EAPI const Eina_List *elm_theme_overlay_list_get(const Elm_Theme *th);
-
-/**
- * Appends a theme extension to the list of extensions.
- *
- * @param th The theme to add to, or if NULL, the default theme
- * @param item The Edje file path to be used
- *
- * This is intended when an application needs more styles of widgets or new
- * widget themes that the default does not provide (or may not provide). The
- * application has "extended" usage by coming up with new custom style names
- * for widgets for specific uses, but as these are not "standard", they are
- * not guaranteed to be provided by a default theme. This means the
- * application is required to provide these extra elements itself in specific
- * Edje files. This call adds one of those Edje files to the theme search
- * path to be search after the default theme. The use of this call is
- * encouraged when default styles do not meet the needs of the application.
- * Use this call instead of elm_theme_overlay_add() for almost all cases.
+ * @param[in] th The theme to add, otherwise @c NULL for the default theme
+ * @param[in] item The Edje file path to be used
*
* @see elm_object_style_set()
- *
- * @ingroup Theme
*/
EAPI void elm_theme_extension_add(Elm_Theme *th, const char *item);
/**
- * Deletes a theme extension from the list of extensions.
+ * @brief Deletes a theme extension from the list of extensions.
*
- * @param th The theme to delete from, or if NULL, the default theme
- * @param item The name of the theme extension
+ * @since_tizen 2.3
*
- * @see elm_theme_extension_add()
+ * @param[in] th The theme to delete, otherwise @c NULL for the default theme
+ * @param[in] item The name of the theme extension
*
- * @ingroup Theme
+ * @see elm_theme_extension_add()
*/
EAPI void elm_theme_extension_del(Elm_Theme *th, const char *item);
/**
- * Appends a theme extension to the list of extensions.
- *
- * @param th The theme to add to, or if NULL, the default theme
- * @param f The Edje file handle to be used
- *
- * This is intended when an application needs more styles of widgets or new
- * widget themes that the default does not provide (or may not provide). The
- * application has "extended" usage by coming up with new custom style names
- * for widgets for specific uses, but as these are not "standard", they are
- * not guaranteed to be provided by a default theme. This means the
- * application is required to provide these extra elements itself in specific
- * Edje files. This call adds one of those Edje files to the theme search
- * path to be search after the default theme. The use of this call is
- * encouraged when default styles do not meet the needs of the application.
- * Use this call instead of elm_theme_overlay_add() for almost all cases.
+ * @brief Gets the list of registered extensions for the given theme.
*
- * @see elm_object_style_set()
- *
- * @ingroup Theme
- */
-EAPI void elm_theme_extension_mmap_add(Elm_Theme *th, const Eina_File *f);
-
-/**
- * Deletes a theme extension from the list of extensions.
- *
- * @param th The theme to delete from, or if NULL, the default theme
- * @param f The file handle of the theme extension
- *
- * @see elm_theme_extension_add()
- *
- * @ingroup Theme
- */
-EAPI void elm_theme_extension_mmap_del(Elm_Theme *th, const Eina_File *f);
-
-/**
- * Get the list of registered extensions for the given theme
+ * @since_tizen 2.3
*
- * @param th The theme from which to get the extensions
- * @return List of theme extensions. Do not free it.
+ * @param[in] th The theme from which to get the extensions
+ * @return The list of theme extensions, do not free it
*
* @see elm_theme_extension_add()
- *
- * @ingroup Theme
*/
EAPI const Eina_List *elm_theme_extension_list_get(const Elm_Theme *th);
/**
- * Set the theme search order for the given theme
+ * @brief Sets the theme search order for the given theme.
*
- * @param th The theme to set the search order, or if NULL, the default theme
- * @param theme Theme search string
+ * @details This sets the search string for the theme in the path-notation from the first
+ * theme to search, till the last, delimited by the : character. Example:
*
- * This sets the search string for the theme in path-notation from first
- * theme to search, to last, delimited by the : character. Example:
+ * "shiny:/path/to/file.edj:default"
*
- * "shiny:/path/to/file.edj:default"
+ * @since_tizen 2.3
*
- * See the ELM_THEME environment variable for more information.
+ * @remarks See the ELM_THEME environment variable for more information.
+ *
+ * @param[in] th The theme to set the search order for, otherwise @c NULL for the default theme
+ * @param[in] theme The theme search string
*
* @see elm_theme_get()
* @see elm_theme_list_get()
- *
- * @ingroup Theme
*/
EAPI void elm_theme_set(Elm_Theme *th, const char *theme);
/**
- * Return the theme search order
+ * @brief Gets the theme search order.
*
- * @param th The theme to get the search order, or if NULL, the default theme
- * @return The internal search order path
+ * @since_tizen 2.3
+ *
+ * @remarks This function returns a colon separated string of theme elements as
+ * returned by elm_theme_list_get().
*
- * This function returns a colon separated string of theme elements as
- * returned by elm_theme_list_get().
+ * @param[in] th The theme to get the search order for, otherwise @c NULL for the default theme
+ * @return The internal search order path
*
* @see elm_theme_set()
* @see elm_theme_list_get()
- *
- * @ingroup Theme
*/
EAPI const char *elm_theme_get(Elm_Theme *th);
/**
- * Return a list of theme elements to be used in a theme.
+ * @brief Gets a list of theme elements to be used in a theme.
*
- * @param th Theme to get the list of theme elements from.
- * @return The internal list of theme elements
+ * @details This returns the internal list of theme elements (will only be valid as
+ * long as the theme is not modified by elm_theme_set() or theme is not
+ * freed by elm_theme_free(). This is a list of strings which must not be
+ * altered as they are also internal. If @a th is @c NULL, then the default
+ * theme element list is returned.
*
- * This returns the internal list of theme elements (will only be valid as
- * long as the theme is not modified by elm_theme_set() or theme is not
- * freed by elm_theme_free(). This is a list of strings which must not be
- * altered as they are also internal. If @p th is NULL, then the default
- * theme element list is returned.
+ * @since_tizen 2.3
*
- * A theme element can consist of a full or relative path to a .edj file,
- * or a name, without extension, for a theme to be searched in the known
- * theme paths for Elementary.
+ * @remarks A theme element can consist of a full or relative path to a .edj file,
+ * or a name, without extension, for a theme to be searched in the known
+ * theme paths for Elementary.
+ *
+ * @param[in] th The theme to get the list of theme elements from
+ * @return The internal list of theme elements
*
* @see elm_theme_set()
* @see elm_theme_get()
- *
- * @ingroup Theme
*/
EAPI const Eina_List *elm_theme_list_get(const Elm_Theme *th);
/**
- * Return the full path for a theme element
- *
- * @param f The theme element name
- * @param in_search_path Pointer to a boolean to indicate if item is in the search path or not
- * @return The full path to the file found.
- *
- * This returns a string you should free with free() on success, NULL on
- * failure. This will search for the given theme element, and if it is a
- * full or relative path element or a simple search-able name. The returned
- * path is the full path to the file, if searched, and the file exists, or it
- * is simply the full path given in the element or a resolved path if
- * relative to home. The @p in_search_path boolean pointed to is set to
- * @c EINA_TRUE if the file was a search-able file and is in the search path,
- * and @c EINA_FALSE otherwise.
- *
- * @ingroup Theme
+ * @brief Gets the full path for a theme element.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This returns a string you should free with free() on success, @c NULL on
+ * failure. This searches for the given theme element, and if it is a
+ * full or relative path element or a simple searchable name. The returned
+ * path is the full path to the file, if searched, and the file exists, or it
+ * is simply the full path given in the element or a resolved path if
+ * relative to home. The @a in_search_path boolean that it is pointing to is set to
+ * @c EINA_TRUE if the file is a searchable file and is in the search path,
+ * otherwise the value is @c EINA_FALSE.
+ *
+ * @param[in] f The theme element name
+ * @param[out] in_search_path The pointer to a boolean that indicate if the item is in the search path
+ * @return The full path to the file found
*/
EAPI char *elm_theme_list_item_path_get(const char *f, Eina_Bool *in_search_path);
/**
- * Flush the current theme.
+ * @brief Flushes the current theme.
*
- * @param th Theme to flush
+ * @details This flushes caches that let elementary know where to find theme elements
+ * in the given theme. If @a th is @c NULL, then the default theme is flushed.
+ * Call this function if the source theme data has changed in such a way so as to
+ * make any caches Elementary invalid.
*
- * This flushes caches that let elementary know where to find theme elements
- * in the given theme. If @p th is NULL, then the default theme is flushed.
- * Call this function if source theme data has changed in such a way as to
- * make any caches Elementary kept invalid.
+ * @since_tizen 2.3
*
- * @ingroup Theme
+ * @param[in] th The theme to flush
*/
EAPI void elm_theme_flush(Elm_Theme *th);
/**
- * This flushes all themes (default and specific ones).
+ * @brief Flushes all themes (default and specific ones).
*
- * This will flush all themes in the current application context, by calling
- * elm_theme_flush() on each of them.
+ * @details This flushes all the themes in the current application context, by calling
+ * elm_theme_flush() on each of them.
*
- * @ingroup Theme
+ * @since_tizen 2.3
*/
EAPI void elm_theme_full_flush(void);
/**
- * Return a list of theme elements in the theme search path
+ * @brief Returns a list of theme elements in the theme search path.
*
- * @return A list of strings that are the theme element names.
+ * @details This lists all the available theme files in the standard Elementary search path
+ * for the theme elements, and returns them in an alphabetical order as theme
+ * element names in a list of strings. Free this with
+ * elm_theme_name_available_list_free() when you are done with the list.
*
- * This lists all available theme files in the standard Elementary search path
- * for theme elements, and returns them in alphabetical order as theme
- * element names in a list of strings. Free this with
- * elm_theme_name_available_list_free() when you are done with the list.
+ * @since_tizen 2.3
*
- * @ingroup Theme
+ * @return The list of strings that are the theme element names
*/
EAPI Eina_List *elm_theme_name_available_list_new(void);
/**
- * Free the list returned by elm_theme_name_available_list_new()
+ * @brief Frees the list returned by elm_theme_name_available_list_new().
+ *
+ * @details This frees the list of themes returned by
+ * elm_theme_name_available_list_new(). Once freed the list should no longer
+ * be used. A new list must be created.
*
- * This frees the list of themes returned by
- * elm_theme_name_available_list_new(). Once freed the list should no longer
- * be used. a new list mys be created.
+ * @param[in] list The list to be freed
*
- * @ingroup Theme
+ * @since_tizen 2.3
*/
EAPI void elm_theme_name_available_list_free(Eina_List *list);
/**
- * Set a specific theme to be used for this object and its children
+ * @brief Sets a specific theme to be used for this object and its children.
*
- * @param obj The object to set the theme on
- * @param th The theme to set
+ * @details This sets a specific theme that is used for the given object and any
+ * child objects it has. If @a th is @c NULL then the theme to be used is
+ * cleared and the object inherits its theme from its parent (which
+ * ultimately uses the default theme if no specific themes are set).
*
- * This sets a specific theme that will be used for the given object and any
- * child objects it has. If @p th is NULL then the theme to be used is
- * cleared and the object will inherit its theme from its parent (which
- * ultimately will use the default theme if no specific themes are set).
+ * @since_tizen 2.3
*
- * Use special themes with great care as this will annoy users and make
- * configuration difficult. Avoid any custom themes at all if it can be
- * helped.
+ * @remarks Use special themes with great care as this annoys users and makes
+ * configuration difficult. Avoid any custom themes if at all possible.
*
- * @ingroup Theme
+ * @param[in] obj The object to set the theme on
+ * @param[in] th The theme to set
*/
EAPI void elm_object_theme_set(Evas_Object *obj, Elm_Theme *th);
/**
- * Get the specific theme to be used
+ * @brief Gets the specific theme to be used.
*
- * @param obj The object to get the specific theme from
- * @return The specific theme set.
+ * @details This returns a specific theme set, otherwise @c NULL if no specific theme is
+ * set on that object. It returns inherited themes from parents, only
+ * the specific theme set for that specific object. See elm_object_theme_set()
+ * for more information.
*
- * This will return a specific theme set, or NULL if no specific theme is
- * set on that object. It will not return inherited themes from parents, only
- * the specific theme set for that specific object. See elm_object_theme_set()
- * for more information.
+ * @since_tizen 2.3
*
- * @ingroup Theme
+ * @param[in] obj The object to get the specific theme from
+ * @return The specific theme set
*/
EAPI Elm_Theme *elm_object_theme_get(const Evas_Object *obj);
/**
- * Get a data item from a theme
+ * @brief Gets a data item from a theme.
*
- * @param th The theme, or NULL for default theme
- * @param key The data key to search with
- * @return The data value, or NULL on failure
+ * @details This function is used to return data items from edc in @a th, an overlay, or an extension.
+ * It works in the same way as edje_file_data_get() except that the returned value is stringshared.
*
- * This function is used to return data items from edc in @p th, an overlay, or an extension.
- * It works the same way as edje_file_data_get() except that the return is stringshared.
+ * @since_tizen 2.3
*
- * @ingroup Theme
+ * @param[in] th The theme, otherwise @c NULL for the default theme
+ * @param[in] key The data key to search with
+ * @return The data value, otherwise @c NULL on failure
*/
EAPI const char *elm_theme_data_get(Elm_Theme *th, const char *key);
/**
- * Get the file path for an edje file for the group and theme given
- *
- * @param th The theme, or NULL for default theme
- * @param group The group in the edje file to look for
- * @return The full path to the file as a string
- *
- * This function looks up the given edje @p group in the set of theme edje
- * files configured for the theme @p th (which if NULL indicates the default
- * theme). If not found in any, NULL wil be returned. If found, the string
- * returned is internal and should not be freed, but will only be valid
- * until the theme is re-configured, or cache flushed, so if the string needs
- * to be kept, duplicate it and store that. The string will be a stringshare
- * string that is returned by functions like eina_stringshare_add() so it can
- * be just references via stringshare functions if desired.
- *
- * If group is NULL, then nothing can be looked up, so it is a non-sensical
- * request.
- *
- * @since 1.8
- * @ingroup Theme
- */
-EAPI const char *elm_theme_group_path_find(Elm_Theme *th, const char *group);
-
-/**
- * Get a list of groups that match the initial base string given within all themes
- *
- * @param th The theme, or NULL for default theme
- * @param base The base string group collection to look for
- * @return A list of collection names (sorted) or NULL if none found
- *
- * This function will walk all theme files configured in the theme @p th (or
- * NULL if its the default) and find all groups that BEGIN with the string
- * @p begin and have that string as at LEAST their start, and then add the
- * fulll group name that matches to the list and return that full group
- * group string.
- *
- * The list returned must be freed by the caller, with each string being a
- * stringshared string to be freed with eina_stringshare_del(). Not doing so
- * may result in a leak.
- *
- * @since 1.8
- * @ingroup Theme
- */
- EAPI Eina_List *elm_theme_group_base_list(Elm_Theme *th, const char *base);
-
-/**
- * Get the file path where elementary system theme files are found
- *
- * @return A string that holds the path where system themes are
- *
- * This returns the location in the filesystem where the system themes are
- * to be found that elementary looks for. This is useful for something
- * that wishes toiterate over the files in this folder and display them, for
- * example a theme selector.
- *
- * @since 1.8
- * @ingroup Theme
- */
-EAPI const char *elm_theme_system_dir_get(void);
-
-/**
- * Get the file path where elementary user theme files are found
- *
- * @return A string that holds the path where user themes are
- *
- * This returns the location in the filesystem where the user themes are
- * to be found that elementary looks for. This is useful for something
- * that wishes toiterate over the files in this folder and display them, for
- * example a theme selector.
- *
- * User themes are always looked for before system themes. The user theme
- * directory is normally expected to be writable by the user.
- *
- * @since 1.8
- * @ingroup Theme
- */
-EAPI const char *elm_theme_user_dir_get(void);
-
-/**
* @}
*/
diff --git a/src/lib/elm_thumb.h b/src/lib/elm_thumb.h
index 15cc8e6f2..2adc4248a 100644
--- a/src/lib/elm_thumb.h
+++ b/src/lib/elm_thumb.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Thumb Thumbnail
* @ingroup Elementary
*
@@ -14,21 +15,17 @@
* auto-activated in order to have thumbnails generated. You must also
* have a @b session bus, not a @b system one.
*
- * Once the thumbnail object becomes visible, it will check if there
+ * Once the thumbnail object becomes visible, it checks if there
* is a previously generated thumbnail image for the file set on
- * it. If not, it will start generating this thumbnail.
+ * it. If not, it starts generating this thumbnail.
*
- * Different configuration settings will cause different thumbnails to
+ * Different configuration settings causes different thumbnails to
* be generated even on the same file.
*
* Generated thumbnails are stored under @c $HOME/.thumbnails/. Check
* Ethumb's documentation to change this path, and to see other
* configuration options.
*
- * If you set formatting features such as, aspect, size, format,
- * orientation, crop, compression, or quality after the thumbnail
- * has been shown, it needs to be reloaded with elm_thumb_reload.
- *
* This widget emits the following signals:
* - @c "clicked" - This is called when a user has clicked the
* thumbnail object without dragging it around.
@@ -45,23 +42,222 @@
* - @c "default"
* - @c "noframe"
*
- * An example of use of thumbnail:
+ * @{
+ */
+
+/**
+ * @enum Elm_Thumb_Animation_Setting
+ * @typedef Elm_Thumb_Animation_Setting
+ *
+ * @brief Enumeration to set if a video thumbnail is animating.
*
- * - @ref thumb_example_01
+ * @ingroup Thumb
*/
+typedef enum
+{
+ ELM_THUMB_ANIMATION_START = 0, /**< Play animation once */
+ ELM_THUMB_ANIMATION_LOOP, /**< Keep playing animation until stop is requested */
+ ELM_THUMB_ANIMATION_STOP, /**< Stop playing the animation */
+ ELM_THUMB_ANIMATION_LAST
+} Elm_Thumb_Animation_Setting;
/**
- * @addtogroup Thumb
- * @{
+ * @brief Adds a new thumb object to the parent.
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @see elm_thumb_file_set()
+ * @see elm_thumb_ethumb_client_get()
+ *
+ * @ingroup Thumb
+ */
+EAPI Evas_Object *elm_thumb_add(Evas_Object *parent);
+
+/**
+ * @brief Reloads a thumbnail if it is generated before.
+ *
+ * @remarks This is useful if the ethumb client configuration changed, like its
+ * size, aspect, or any other property one set in the handle returned
+ * by elm_thumb_ethumb_client_get().
+ *
+ * @remarks If the options didn't change, the thumbnail won't be generated again, but
+ * the old one is still used.
+ *
+ * @param[in] obj The thumb object to reload
+ *
+ * @see elm_thumb_file_set()
+ *
+ * @ingroup Thumb
+ */
+EAPI void elm_thumb_reload(Evas_Object *obj);
+
+/**
+ * @brief Sets the file that is used as a thumbnail @b source.
+ *
+ * @remarks The file can be an image or a video (in that case, acceptable
+ * extensions are: avi, mp4, ogv, mov, mpg and wmv). To start the
+ * video animation, use the function elm_thumb_animate().
+ *
+ * @param[in] obj The thumb object
+ * @param[in] file The path to the file that is used as a thumbnail source
+ * @param[in] key The key used in case of an EET file
+ *
+ * @see elm_thumb_file_get()
+ * @see elm_thumb_reload()
+ * @see elm_thumb_animate()
+ *
+ * @ingroup Thumb
+ */
+EAPI void elm_thumb_file_set(Evas_Object *obj, const char *file, const char *key);
+
+/**
+ * @brief Gets the image or video path and key used to generate the thumbnail.
+ *
+ * @param[in] obj The thumb object
+ * @param[out] file A pointer to the filename
+ * @param[out] key A pointer to the key
+ *
+ * @see elm_thumb_file_set()
+ * @see elm_thumb_path_get()
+ *
+ * @ingroup Thumb
+ */
+EAPI void elm_thumb_file_get(const Evas_Object *obj, const char **file, const char **key);
+
+/**
+ * @brief Gets the path and key to the image or video thumbnail generated by ethumb.
+ *
+ * @remarks One just needs to make sure that the thumbnail is generated before getting
+ * its path, otherwise the path is @c NULL. One way to do that is by asking
+ * for the path when/after the "generate,stop" smart callback is called.
+ *
+ * @param[in] obj The thumb object
+ * @param[out] file A pointer to the thumb path
+ * @param[out] key A pointer to the thumb key
+ *
+ * @see elm_thumb_file_get()
+ *
+ * @ingroup Thumb
+ */
+EAPI void elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key);
+
+/**
+ * @brief Sets the animation state for the thumb object. If its content is an animated
+ * video, you may start/stop the animation or tell it to play continuously and
+ * looping.
+ *
+ * @param[in] obj The thumb object
+ * @param[in] s The animation setting
+ *
+ * @see elm_thumb_file_set()
+ *
+ * @ingroup Thumb
+ */
+EAPI void elm_thumb_animate_set(Evas_Object *obj, Elm_Thumb_Animation_Setting s);
+
+/**
+ * @brief Gets the animation state for the thumb object.
+ *
+ * @param[in] obj The thumb object
+ * @return The animation setting, otherwise @c ELM_THUMB_ANIMATION_LAST
+ * on errors
+ *
+ * @see elm_thumb_animate_set()
+ *
+ * @ingroup Thumb
+ */
+EAPI Elm_Thumb_Animation_Setting elm_thumb_animate_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the ethumb_client handle so that custom configuration can be made.
+ *
+ * @remarks This must be called before the objects are created to be sure that no object is
+ * visible and no generation has started.
+ *
+ * Example of usage:
+ *
+ * @code
+ * #include <Elementary.h>
+ * #ifndef ELM_LIB_QUICKLAUNCH
+ * EAPI_MAIN int
+ * elm_main(int argc, char **argv)
+ * {
+ * Ethumb_Client *client;
+ *
+ * elm_need_ethumb();
+ *
+ * // ... your code
+ *
+ * client = elm_thumb_ethumb_client_get();
+ * if (!client)
+ * {
+ * ERR("could not get ethumb_client");
+ * return 1;
+ * }
+ * ethumb_client_size_set(client, 100, 100);
+ * ethumb_client_crop_align_set(client, 0.5, 0.5);
+ * // ... your code
+ *
+ * // Create elm_thumb objects here
+ *
+ * elm_run();
+ * elm_shutdown();
+ * return 0;
+ * }
+ * #endif
+ * ELM_MAIN()
+ * @endcode
+ *
+ * @remarks There's only one client handle for Ethumb, so once a configuration
+ * change is done to it, any other request for thumbnails (for any thumbnail
+ * object) uses that configuration. Thus, this configuration is global.
+ *
+ * @return An Ethumb_Client instance, otherwise @c NULL
+ *
+ * @ingroup Thumb
+ */
+EAPI void *elm_thumb_ethumb_client_get(void);
+
+/**
+ * @brief Gets the ethumb_client connection state.
+ *
+ * @return @c EINA_TRUE if the client is connected to the server, otherwise @c EINA_FALSE
+ *
+ */
+EAPI Eina_Bool elm_thumb_ethumb_client_connected_get(void);
+
+/**
+ * @brief Makes the thumbnail 'editable'.
+ *
+ * @remarks This means the thumbnail is a valid drag target for drag and drop, and can be
+ * cut or pasted.
+ *
+ * @param[in] obj The thumb object
+ * @param[in] edit The boolean value that turns on or turns off editability \n
+ * Default is @c EINA_FALSE.
+ *
+ * @see elm_thumb_editable_get()
+ *
+ * @ingroup Thumb
+ */
+EAPI Eina_Bool elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit);
+
+/**
+ * @brief Makes the thumbnail 'editable'.
+ *
+ * @remarks This means the thumbnail is a valid drag target for drag and drop, and can be
+ * cut or pasted.
+ *
+ * @param[in] obj The thumb object
+ * @return The boolean value that turns on or turns off editability
+ *
+ * @see elm_thumb_editable_set()
+ *
+ * @ingroup Thumb
*/
+EAPI Eina_Bool elm_thumb_editable_get(const Evas_Object *obj);
-#include "elm_thumb_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_thumb_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_thumb_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_toolbar.h b/src/lib/elm_toolbar.h
index 44777ca78..0aa4de1f1 100644
--- a/src/lib/elm_toolbar.h
+++ b/src/lib/elm_toolbar.h
@@ -1,80 +1,1056 @@
/**
* @defgroup Toolbar Toolbar
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html toolbar_inheritance_tree.png
* @image latex toolbar_inheritance_tree.eps
*
- * @image html img/widget/toolbar/preview-00.png
- * @image latex img/widget/toolbar/preview-00.eps width=\textwidth
- *
* @image html img/toolbar.png
- * @image latex img/toolbar.eps width=\textwidth
+ * @image latex img/toolbar.eps "toolbar" width=\textwidth
+ *
+ * @brief A toolbar is a widget that displays a list of items inside a box.
*
- * A toolbar is a widget that displays a list of items inside
- * a box. It can be scrollable, show a menu with items that don't fit
- * to toolbar size or even crop them.
+ * It can be scrollable, can show a menu with items that don't fit
+ * to the toolbar size or an can even crop those menu items.
*
* Only one item can be selected at a time.
*
* Items can have multiple states, or show menus when selected by the user.
*
- * This widget implements the @b @ref elm-scrollable-interface
+ * This widget implements the elm-scrollable-interface
* interface, so that all (non-deprecated) functions for the base
- * @ref Scroller widget also work for toolbars (since 1.8)
+ * @ref Scroller widget also work for toolbars (@since 1.8)
*
- * Smart callbacks one can listen to:
- * - @c "clicked" - when the user clicks on a toolbar item and becomes
+ * Smart callbacks that one can listen to:
+ * - @c "clicked" - When the user clicks on a toolbar item and it gets
* selected.
- * - @c "longpressed" - when the toolbar is pressed for a certain
+ * - @c "longpressed" - When the toolbar is pressed for a certain
* amount of time.
- * - @c "language,changed" - when the program language changes.
- * - @c "focused" - When the toolbar has received focus. (since 1.8)
- * - @c "unfocused" - When the toolbar has lost focus. (since 1.8)
- * - @c "item,focused" - When the toolbar item has received focus. (since 1.10)
- * - @c "item,unfocused" - When the toolbar item has lost focus. (since 1.10)
- * - @c "selected" - when an item is selected. @p event_info is a selected
- * item. (since 1.11)
- * - @c "unselected" - when an item is unselected. @p event_info is a
- * unselected item. (since 1.11)
+ * - @c "language,changed" - When the program language changes.
*
* Available styles for it:
* - @c "default"
- * - @c "transparent" - no background or shadow, just show the content
+ * - @c "transparent" - No background or shadow, just shows the content.
*
- * Default text parts of the toolbar items that you can use for are:
- * @li "default" - A label of the toolbar item
+ * Default text parts of the toolbar items that you can use are:
+ * @li "default" - Label of the toolbar item
*
- * Supported elm_object_item common APIs.
- * @li @ref elm_object_item_del
+ * Supported common elm_object_item APIs.
* @li @ref elm_object_item_disabled_set
* @li @ref elm_object_item_disabled_get
* @li @ref elm_object_item_part_text_set
* @li @ref elm_object_item_part_text_get
- * @li @ref elm_object_item_part_content_set
- * @li @ref elm_object_item_part_content_get
- * @li @ref elm_object_item_part_content_unset
- * @li @ref elm_object_item_focus_set
- * @li @ref elm_object_item_focus_get
*
- * List of examples:
- * @li @ref toolbar_example_01
- * @li @ref toolbar_example_02
- * @li @ref toolbar_example_03
+ * @{
*/
/**
- * @addtogroup Toolbar
- * @{
+ * @enum Elm_Toolbar_Shrink_Mode
+ * @typedef Elm_Toolbar_Shrink_Mode
+ *
+ * @brief Enumeration that sets the toolbar items display behavior, it can be scrollable,
+ * can show a menu with exceeding items, or simply hide them.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Default value is #ELM_TOOLBAR_SHRINK_MENU. It reads values
+ * from elm config.
+ *
+ * @remarks Values <b> don't </b> work as bitmask, only one can be chosen.
+ *
+ * @see elm_toolbar_shrink_mode_set()
+ * @see elm_toolbar_shrink_mode_get()
+ */
+typedef enum
+{
+ ELM_TOOLBAR_SHRINK_NONE, /**< Sets minimum toolbar size to fit all the items */
+ ELM_TOOLBAR_SHRINK_HIDE, /**< Hides exceeding items */
+ ELM_TOOLBAR_SHRINK_SCROLL, /**< Allows accessing exceeding items through a scroller */
+ ELM_TOOLBAR_SHRINK_MENU, /**< Inserts a button to pop up a menu with exceeding items */
+ ELM_TOOLBAR_SHRINK_EXPAND, /**< Expands all items according to the size of the toolbar */
+ ELM_TOOLBAR_SHRINK_LAST /**< Indicates an error if returned by elm_toolbar_shrink_mode_get() */
+} Elm_Toolbar_Shrink_Mode;
+
+/**
+ * @brief Enumeration that defines where to position the item in the toolbar.
+ *
+ * @since_tizen 2.3
+ */
+typedef enum
+{
+ ELM_TOOLBAR_ITEM_SCROLLTO_NONE = 0, /**< Scroll to nowhere */
+ ELM_TOOLBAR_ITEM_SCROLLTO_IN = (1 << 0), /**< Scroll to the nearest viewport */
+ ELM_TOOLBAR_ITEM_SCROLLTO_FIRST = (1 << 1), /**< Scroll to the first of the viewport */
+ ELM_TOOLBAR_ITEM_SCROLLTO_MIDDLE = (1 << 2), /**< Scroll to the middle of the viewport */
+ ELM_TOOLBAR_ITEM_SCROLLTO_LAST = (1 << 3) /**< Scroll to the last of the viewport */
+} Elm_Toolbar_Item_Scrollto_Type;
+
+typedef struct _Elm_Toolbar_Item_State Elm_Toolbar_Item_State; /**< States of a Elm_Toolbar_Item. Can be created with elm_toolbar_item_state_add() and removed with elm_toolbar_item_state_del() */
+
+/**
+ * @brief Adds a new toolbar widget to the given parent Elementary
+ * (container) object.
+ *
+ * @details This function inserts a new toolbar widget on the canvas.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] parent The parent object
+ * @return A new toolbar widget handle, otherwise @c NULL in case of an error
+ */
+EAPI Evas_Object *elm_toolbar_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the icon size, in pixels, to be used by toolbar items.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The default value is @c 32. It reads values from elm config.
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] icon_size The icon size in pixels
+ *
+ * @see elm_toolbar_icon_size_get()
+ */
+EAPI void elm_toolbar_icon_size_set(Evas_Object *obj, int icon_size);
+
+/**
+ * @brief Gets the icon size, in pixels, to be used by toolbar items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The icon size in pixels
+ *
+ * @see elm_toolbar_icon_size_set()
+ */
+EAPI int elm_toolbar_icon_size_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the icon lookup order, for toolbar item icons.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Icons added before calling this function are not affected.
+ * The default lookup order is #ELM_ICON_LOOKUP_THEME_FDO.
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] order The icon lookup order
+ *
+ * @see elm_toolbar_icon_order_lookup_get()
+ */
+EAPI void elm_toolbar_icon_order_lookup_set(Evas_Object *obj, Elm_Icon_Lookup_Order order);
+
+/**
+ * @brief Gets the icon lookup order.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The icon lookup order
+ *
+ * @see elm_toolbar_icon_order_lookup_set()
+ */
+EAPI Elm_Icon_Lookup_Order elm_toolbar_icon_order_lookup_get(const Evas_Object *obj);
+
+/**
+ * @brief Appends items to the toolbar.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A new item is created and appended to the toolbar, i.e., it
+ * is set as the @b last item.
+ *
+ * @remarks Items created with this method can be deleted with
+ * elm_object_item_del().
+ *
+ * @remarks Associated @a data can be properly freed when an item is deleted if a
+ * callback function is set with elm_object_item_del_cb_set().
+ *
+ * @remarks If a function is passed as an argument, it is called every time this item
+ * is selected, i.e., the user clicks over an unselected item.
+ * If such a function isn't needed, just passing
+ * @c NULL as @a func is enough. The same should be done for @a data.
+ *
+ * @remarks Toolbar loads the icon image from fdo or the current theme.
+ * This behavior can be set by the elm_toolbar_icon_order_lookup_set() function.
+ * If an absolute path is provided it loads it directly from a file.
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] icon A string with the icon name or the absolute path of an image file
+ * @param[in] label The label of the item
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The data to associate with the item for related callbacks
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_toolbar_item_icon_set()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_toolbar_item_append(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Prepends items to the toolbar.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A new item is created and prepended to the toolbar, i.e., it
+ * is set as the @b first item.
+ *
+ * @remarks Items created with this method can be deleted with
+ * elm_object_item_del().
+ *
+ * @remarks Associated @a data can be properly freed when an item is deleted if a
+ * callback function is set with elm_object_item_del_cb_set().
+ *
+ * @remarks If a function is passed as an argument, it is called every time this item
+ * is selected, i.e., the user clicks over an unselected item.
+ * If such a function isn't needed, just passing
+ * @c NULL as @a func is enough. The same should be done for @a data.
+ *
+ * @remarks Toolbar loads the icon image from fdo or the current theme.
+ * This behavior can be set by the elm_toolbar_icon_order_lookup_set() function.
+ * If an absolute path is provided it loads it directly from a file.
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] icon A string with the icon name or the absolute path of an image file
+ * @param[in] label The label of the item
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The data to associate with the item for related callbacks
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_toolbar_item_icon_set()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_toolbar_item_prepend(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Inserts a new item into the toolbar object before item @a before.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A new item is created and added to the toolbar. Its position in
+ * this toolbar is just before item @a before.
+ *
+ * @remarks Items created with this method can be deleted with
+ * elm_object_item_del().
+ *
+ * @remarks Associated @a data can be properly freed when an item is deleted if a
+ * callback function is set with elm_object_item_del_cb_set().
+ *
+ * @remarks If a function is passed as an argument, it is called every time this item
+ * is selected, i.e., the user clicks over an unselected item.
+ * If such a function isn't needed, just passing
+ * @c NULL as @a func is enough. The same should be done for @a data.
+ *
+ * @remarks Toolbar loads the icon image from fdo or the current theme.
+ * This behavior can be set by the elm_toolbar_icon_order_lookup_set() function.
+ * If an absolute path is provided it loads it directly from a file.
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] before The toolbar item to insert before
+ * @param[in] icon A string with the icon name or the absolute path of an image file
+ * @param[in] label The label of the item
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The data to associate with the item for related callbacks
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_toolbar_item_icon_set()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_toolbar_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Inserts a new item into the toolbar object after item @a after.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If new item is created and added to the toolbar, its position in
+ * this toolbar is just after item @a after.
+ *
+ * @remarks Items created with this method can be deleted with
+ * elm_object_item_del().
+ *
+ * @remarks Associated @a data can be properly freed when an item is deleted if a
+ * callback function is set with elm_object_item_del_cb_set().
+ *
+ * @remarks If a function is passed as an argument, it is called every time this item
+ * is selected, i.e., the user clicks over an unselected item.
+ * If such a function isn't needed, just passing
+ * @c NULL as @a func is enough. The same should be done for @a data.
+ *
+ * @remarks Toolbar loads the icon image from fdo or the current theme.
+ * This behavior can be set by the elm_toolbar_icon_order_lookup_set() function.
+ * If an absolute path is provided it loads it directly from a file.
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] after The toolbar item to insert after
+ * @param[in] icon A string with the icon name or the absolute path of an image file
+ * @param[in] label The label of the item
+ * @param[in] func The function to call when the item is clicked
+ * @param[in] data The data to associate with the item for related callbacks
+ * @return The created item, otherwise @c NULL on failure
+ *
+ * @see elm_toolbar_item_icon_set()
+ * @see elm_object_item_del()
+ */
+EAPI Elm_Object_Item *elm_toolbar_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Gets the first item in the given toolbar widget's list of
+ * items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The first item, otherwise @c NULL if it has no items (and on
+ * errors)
+ *
+ * @see elm_toolbar_item_append()
+ * @see elm_toolbar_last_item_get()
+ */
+EAPI Elm_Object_Item *elm_toolbar_first_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the last item in the given toolbar widget's list of
+ * items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The last item, otherwise @c NULL if it has no items (and on
+ * errors)
+ *
+ * @see elm_toolbar_item_prepend()
+ * @see elm_toolbar_first_item_get()
+ */
+EAPI Elm_Object_Item *elm_toolbar_last_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the item after @a it in the toolbar.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If it is the last item, @c NULL is returned.
+ *
+ * @param[in] it The toolbar item
+ * @return The item after @a it, otherwise @c NULL if none are present or on failure
+ *
+ * @see elm_toolbar_item_append()
+ */
+EAPI Elm_Object_Item *elm_toolbar_item_next_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the item before @a it in the toolbar.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If it is the first item, @c NULL is returned.
+ *
+ * @param[in] it The toolbar item
+ * @return The item before @a it, otherwise @c NULL if none are present or on failure
+ *
+ * @see elm_toolbar_item_prepend()
+ */
+EAPI Elm_Object_Item *elm_toolbar_item_prev_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the priority of a toolbar item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This is used only when the toolbar shrink mode is set
+ * to #ELM_TOOLBAR_SHRINK_MENU or #ELM_TOOLBAR_SHRINK_HIDE.
+ * When space is less than required, items with low priority
+ * are removed from the toolbar and added to a dynamically-created menu,
+ * while items with higher priority remain on the toolbar,
+ * in the same order as they were added.
+ *
+ * @param[in] it The toolbar item
+ * @param[in] priority The item priority \n
+ * The default is zero.
+ *
+ * @see elm_toolbar_item_priority_get()
+ */
+EAPI void elm_toolbar_item_priority_set(Elm_Object_Item *it, int priority);
+
+/**
+ * @brief Gets the priority of a toolbar item.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The toolbar item
+ * @return The @a it priority, otherwise @c 0 on failure
+ *
+ * @see elm_toolbar_item_priority_set()
+ */
+EAPI int elm_toolbar_item_priority_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Returns a pointer to a toolbar item by its label.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] label The label of the item to find
+ *
+ * @return The pointer to the toolbar item matching @a label, otherwise @c NULL
+ * on failure
+ */
+EAPI Elm_Object_Item *elm_toolbar_item_find_by_label(const Evas_Object *obj, const char *label);
+
+/**
+ * @brief Gets whether the @a it is selected.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The toolbar item
+ * @return @c EINA_TRUE indicates that the item is selected, otherwise @c EINA_FALSE indicates it's not \n
+ * If @a obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_toolbar_selected_item_set() for details.
+ * @see elm_toolbar_item_selected_get()
+ */
+EAPI Eina_Bool elm_toolbar_item_selected_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the selected state of an item.
+ *
+ * @since_tizen 2.3
+ *
+ * @details This sets the selected state of the given item @a it.
+ * @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
+ *
+ * @remarks If a new item is selected the previously selected item is unselected.
+ * Previously selected items can be obtained with
+ * elm_toolbar_selected_item_get().
+ * Selected items are highlighted.
+ *
+ * @param[in] it The toolbar item
+ * @param[in] selected The selected state
+ *
+ * @see elm_toolbar_item_selected_get()
+ * @see elm_toolbar_selected_item_get()
+ */
+EAPI void elm_toolbar_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * @brief Gets the selected item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The selected item can be unselected with function
+ * elm_toolbar_item_selected_set().
+ * The selected item is highlighted on the toolbar.
+ *
+ * @param[in] obj The toolbar object
+ * @return The selected toolbar item
+ *
+ * @see elm_toolbar_selected_items_get()
+ */
+EAPI Elm_Object_Item *elm_toolbar_selected_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the more item.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The more item can be changed with function
+ * elm_object_item_text_set() and elm_object_item_content_set.
+ *
+ * @param[in] obj The toolbar object
+ * @return The toolbar more item
+ */
+EAPI Elm_Object_Item *elm_toolbar_more_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the icon associated with @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Toolbar loads the icon image from fdo or the current theme.
+ * This behavior can be set by the elm_toolbar_icon_order_lookup_set() function.
+ * If an absolute path is provided it loads it directly from a file.
+ *
+ * @param[in] it The toolbar item
+ * @param[in] icon A string with the icon name or the absolute path of an image file
+ *
+ * @see elm_toolbar_icon_order_lookup_set()
+ * @see elm_toolbar_icon_order_lookup_get()
+ */
+EAPI void elm_toolbar_item_icon_set(Elm_Object_Item *it, const char *icon);
+
+/**
+ * @brief Gets the string used to set the icon of @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The toolbar item
+ * @return The string associated with the icon object
+ *
+ * @see elm_toolbar_item_icon_set()
+ */
+EAPI const char *elm_toolbar_item_icon_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the object of @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The toolbar item
+ * @return The object
+ */
+EAPI Evas_Object *elm_toolbar_item_object_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the icon object of @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The toolbar item
+ * @return The icon object
+ *
+ * @see elm_toolbar_item_icon_set()
+ * @see elm_toolbar_item_icon_file_set()
+ * @see elm_toolbar_item_icon_memfile_set()
+ */
+EAPI Evas_Object *elm_toolbar_item_icon_object_get(Elm_Object_Item *it);
+
+/**
+ * @brief Sets the icon associated with @a it to an image in a binary buffer.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The icon image set by this function can be changed by
+ * elm_toolbar_item_icon_set().
+ *
+ * @param[in] it The toolbar item
+ * @param[in] img The binary data that is used as an image
+ * @param[in] size The size of binary data @a img
+ * @param[in] format The optional format of @a img to pass to the image loader
+ * @param[in] key The optional key of @a img to pass to the image loader (eg. if @a img is an edje file)
+ *
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ */
+EAPI Eina_Bool elm_toolbar_item_icon_memfile_set(Elm_Object_Item *it, const void *img, size_t size, const char *format, const char *key);
+
+/**
+ * @brief Sets the icon associated with @a it to an image in a binary buffer.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The icon image set by this function can be changed by
+ * elm_toolbar_item_icon_set().
+ *
+ * @param[in] it The toolbar item
+ * @param[in] file The file that contains the image
+ * @param[in] key The optional key of @a img to pass to the image loader (eg. if @a img is an edje file)
+ *
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ */
+EAPI Eina_Bool elm_toolbar_item_icon_file_set(Elm_Object_Item *it, const char *file, const char *key);
+
+/**
+ * @brief Sets or unsets item as a separator.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Items aren't set as a separator by default.
+ * If set as a separator it displays a separator theme, so it won't display
+ * icons or labels.
+ *
+ * @param[in] it The toolbar item
+ * @param[in] separator If @c EINA_TRUE set item @a it as a separator,
+ * otherwise @c EINA_FALSE to unset it, i.e., the item is used as a regular item
+ *
+ * @see elm_toolbar_item_separator_get()
*/
+EAPI void elm_toolbar_item_separator_set(Elm_Object_Item *it, Eina_Bool separator);
-#include <elm_toolbar_common.h>
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_toolbar_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_toolbar_legacy.h>
-#endif
+/**
+ * @brief Gets a value that indicates whether the item is a separator.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The toolbar item
+ * @return @c EINA_TRUE indicates that item @a it is a separator, otherwise @c EINA_FALSE indicates it's not \n
+ * If @a it is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_toolbar_item_separator_set()
+ */
+EAPI Eina_Bool elm_toolbar_item_separator_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the item displaying mode of a given toolbar widget @a obj.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The toolbar won't scroll under the #ELM_TOOLBAR_SHRINK_NONE mode, but
+ * it would enforce a minimum size, so that all the items fit
+ * inside it. It won't scroll and won't show the items that don't fit
+ * under the #ELM_TOOLBAR_SHRINK_HIDE mode. Finally, it scrolls under the
+ * #ELM_TOOLBAR_SHRINK_SCROLL mode, and it creates a button to
+ * aggregate items which didn't fit with the #ELM_TOOLBAR_SHRINK_MENU
+ * mode.
+ *
+ * @remarks This function's behavior clashes with that of
+ * elm_scroller_policy_set(), so use either one of them, but not both.
+ *
+ * @param[in] obj The toolbar object handle
+ * @param[in] shrink_mode The toolbar's items display behavior
+ */
+EAPI void elm_toolbar_shrink_mode_set(Evas_Object *obj, Elm_Toolbar_Shrink_Mode shrink_mode);
+
+/**
+ * @brief Gets the shrink mode of the toolbar @a obj.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The toolbar's items display behavior
+ *
+ * @see elm_toolbar_shrink_mode_set()
+ */
+EAPI Elm_Toolbar_Shrink_Mode elm_toolbar_shrink_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the item's transverse expansion of a given toolbar widget @a obj.
+ *
+ * @details This expands the transverse length of the item according to the transverse length of the toolbar.
+ * The default is what the transverse length of the item is set to according to its minimum value.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] transverse_expanded The transverse expansion of the item
+ * (EINA_TRUE = on, EINA_FALSE = off, default = EINA_FALSE)
+ */
+EAPI void elm_toolbar_transverse_expanded_set(Evas_Object *obj, Eina_Bool transverse_expanded);
+
+/**
+ * @brief Gets the transverse expansion of the toolbar @a obj.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The transverse expansion of the item
+ * (EINA_TRUE = on, EINA_FALSE = off, default = EINA_FALSE)
+ *
+ * @see elm_toolbar_transverse_expand_set()
+ */
+EAPI Eina_Bool elm_toolbar_transverse_expanded_get(const Evas_Object *obj);
+
+/**
+ * @brief Enables or disables the homogeneous mode.
+ *
+ * @details This enables the homogeneous mode where items are of the same size.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] homogeneous The boolean value that assumes that the items within the toolbar are of the
+ * same size (EINA_TRUE = on, EINA_FALSE = off) \n
+ * The default is @c EINA_FALSE.
+ *
+ * @see elm_toolbar_homogeneous_get()
+ */
+EAPI void elm_toolbar_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous);
+
+/**
+ * @brief Gets whether the homogeneous mode is enabled.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The boolean value that assumes that the items within the toolbar are of the same height
+ * and width (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * @see elm_toolbar_homogeneous_set()
+ */
+EAPI Eina_Bool elm_toolbar_homogeneous_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the parent object of the toolbar items menus.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Each item can be set as an item menu, with elm_toolbar_item_menu_set().
+ *
+ * @remarks For more details about setting the parent for toolbar menus, see
+ * elm_menu_parent_set().
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] parent The parent of the menu objects
+ *
+ * @see elm_menu_parent_set()
+ * @see elm_toolbar_item_menu_set()
+ */
+EAPI void elm_toolbar_menu_parent_set(Evas_Object *obj, Evas_Object *parent);
+
+/**
+ * @brief Gets the parent object of the toolbar items menus.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The parent of the menu objects
+ *
+ * @see elm_toolbar_menu_parent_set()
+ */
+EAPI Evas_Object *elm_toolbar_menu_parent_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the alignment of the items.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Alignment of the toolbar items, from <tt> 0.0 </tt> that indicates to align
+ * to the left, to <tt> 1.0 </tt>, that indicates to align to the right. <tt> 0.5 </tt> to centralize
+ * items.
+ *
+ * @remarks Items are centered by default.
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] align The new alignment, a float between <tt> 0.0 </tt>
+ * and <tt> 1.0 </tt>
+ *
+ * @see elm_toolbar_align_get()
+ */
+EAPI void elm_toolbar_align_set(Evas_Object *obj, double align);
+
+/**
+ * @brief Gets the alignment of the items.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The toolbar items alignment, a float between <tt> 0.0 </tt> and
+ * <tt> 1.0 </tt>
+ *
+ * @see elm_toolbar_align_set()
+ */
+EAPI double elm_toolbar_align_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks This API is unusable.
+ * @brief Sets whether the toolbar item opens a menu.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A toolbar item can be set to be a menu, using this function.
+ *
+ * @remarks Once it is set to be a menu, it can be manipulated through the
+ * menu-like function elm_toolbar_menu_parent_set() and the other
+ * elm_menu functions, using the Evas_Object @a menu returned by
+ * elm_toolbar_item_menu_get().
+ *
+ * So, items to be displayed in this item's menu should be added with
+ * elm_menu_item_add().
+ *
+ * @remarks The following code exemplifies the most basic usage:
+ * @code
+ * tb = elm_toolbar_add(win)
+ * item = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
+ * elm_toolbar_item_menu_set(item, EINA_TRUE);
+ * elm_toolbar_menu_parent_set(tb, win);
+ * menu = elm_toolbar_item_menu_get(item);
+ * elm_menu_item_add(menu, NULL, "edit-cut", "Cut", NULL, NULL);
+ * menu_item = elm_menu_item_add(menu, NULL, "edit-copy", "Copy", NULL,
+ * NULL);
+ * @endcode
+ *
+ * @param[in] it The toolbar item
+ * @param[in] menu If @c EINA_TRUE @a it opens a menu when selected,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_toolbar_item_menu_get()
+ */
+EAPI void elm_toolbar_item_menu_set(Elm_Object_Item *it, Eina_Bool menu);
+
+/**
+ * @internal
+ * @remarks This API is unusable.
+ *
+ * @brief Gets the toolbar item's menu.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If @a it isn't set as a menu item using elm_toolbar_item_menu_set(),
+ * this function sets it.
+ *
+ * @param[in] it The toolbar item
+ * @return The item's menu object, otherwise @c NULL on failure
+ *
+ * @see elm_toolbar_item_menu_set()
+ */
+EAPI Evas_Object *elm_toolbar_item_menu_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Adds a new state to @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Toolbar loads the icon image from fdo or the current theme.
+ * This behavior can be set by the elm_toolbar_icon_order_lookup_set() function.
+ * If an absolute path is provided it loads it directly from a file.
+ *
+ * @remarks States created with this function can be removed using
+ * elm_toolbar_item_state_del().
+ *
+ * @param[in] it The toolbar item
+ * @param[in] icon A string with the icon name or the absolute path of an image file
+ * @param[in] label The label of the new state
+ * @param[in] func The function to call when the item is clicked and when this
+ * state is selected
+ * @param[in] data The data to associate with the state
+ * @return The toolbar item state, otherwise @c NULL on failure
+ *
+ * @see elm_toolbar_item_state_del()
+ * @see elm_toolbar_item_state_sel()
+ * @see elm_toolbar_item_state_get()
+ */
+EAPI Elm_Toolbar_Item_State *elm_toolbar_item_state_add(Elm_Object_Item *it, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Deletes a previously added state to @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The toolbar item
+ * @param[in] state The state to be deleted
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_toolbar_item_state_add()
+ */
+EAPI Eina_Bool elm_toolbar_item_state_del(Elm_Object_Item *it, Elm_Toolbar_Item_State *state);
+
+/**
+ * @brief Sets @a state as the current state of @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If @a state is @c NULL, it won't select any state and the default item's
+ * icon and label is used. It's the same behaviour as
+ * elm_toolbar_item_state_unset().
+ *
+ * @param[in] it The toolbar item
+ * @param[in] state The state to use
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_toolbar_item_state_unset()
+ */
+EAPI Eina_Bool elm_toolbar_item_state_set(Elm_Object_Item *it, Elm_Toolbar_Item_State *state);
+
+/**
+ * @brief Unsets the state of @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The default icon and label from this item is displayed.
+ *
+ * @param[in] it The toolbar item
+ *
+ * @see elm_toolbar_item_state_set()
+ */
+EAPI void elm_toolbar_item_state_unset(Elm_Object_Item *it);
+
+/**
+ * @brief Gets the current state of @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The toolbar item
+ * @return The selected state, otherwise @c NULL if none are selected or on failure
+ *
+ * @see elm_toolbar_item_state_set() for details.
+ * @see elm_toolbar_item_state_unset()
+ * @see elm_toolbar_item_state_add()
+ */
+EAPI Elm_Toolbar_Item_State *elm_toolbar_item_state_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Gets the state after the selected state in the toolbar's @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If the last state is selected, this function returns the first state.
+ *
+ * @param[in] it The toolbar item to change state
+ * @return The state after the current state, otherwise @c NULL on failure
+ *
+ * @see elm_toolbar_item_state_set()
+ * @see elm_toolbar_item_state_add()
+ */
+EAPI Elm_Toolbar_Item_State *elm_toolbar_item_state_next(Elm_Object_Item *it);
+
+/**
+ * @brief Gets the state before the selected state in the toolbar's @a it.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If the first state is selected, this function returns the last state.
+ *
+ * @param[in] it The toolbar item to change state
+ * @return The state before the current state, otherwise @c NULL on failure
+ *
+ * @see elm_toolbar_item_state_set()
+ * @see elm_toolbar_item_state_add()
+ */
+EAPI Elm_Toolbar_Item_State *elm_toolbar_item_state_prev(Elm_Object_Item *it);
+
+/**
+ * @brief Changes a toolbar's orientation.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, a toolbar is horizontal. Use this function to create a vertical toolbar.
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] horizontal If @c EINA_TRUE the toolbar is horizontal,
+ * otherwise @c EINA_FALSE
+ */
+EAPI void elm_toolbar_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Gets a toolbar's orientation.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, a toolbar is horizontal. Use this function to determine whether a toolbar is vertical.
+ *
+ * @param[in] obj The toolbar object
+ * @return If @c EINA_TRUE, the toolbar is horizontal,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_toolbar_horizontal_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the number of items in a toolbar.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The number of items in the @a obj toolbar
+ */
+EAPI unsigned int elm_toolbar_items_count(const Evas_Object *obj);
+
+/**
+ * @brief Sets the standard priority of visible items in a toolbar.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If the priority of the item is upto the standard priority, it is shown in the basic panel.
+ * The other items are located in the more menu or panel. The more menu or panel can be shown when the more item is clicked.
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] priority The standard priority of visible items
+ *
+ * @see elm_toolbar_standard_priority_get()
+ */
+EAPI void elm_toolbar_standard_priority_set(Evas_Object *obj, int priority);
+
+/**
+ * @brief Gets the standard priority of visible items in a toolbar.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The standard priority of items in the @a obj toolbar
+ *
+ * @see elm_toolbar_standard_priority_set()
+ */
+EAPI int elm_toolbar_standard_priority_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the toolbar select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks elm_toolbar_select_mode_set() changes the item select mode in the toolbar widget.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : Items only call their selection @a func and
+ * callback on first getting selected. Any further clicks
+ * do nothing, unless you set the always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click calls the selected callbacks.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This turns off the ability to select items
+ * entirely and they neither appear selected nor call selected
+ * callback functions.
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] mode The select mode
+ *
+ * @see elm_toolbar_select_mode_get()
+ */
+EAPI void
+elm_toolbar_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode);
+
+/**
+ * @brief Gets the toolbar select mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The select mode
+ * (If the getting mode fails, it returns @c ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_toolbar_select_mode_set()
+ */
+EAPI Elm_Object_Select_Mode
+elm_toolbar_select_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the reorder mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @param[in] reorder_mode The reorder mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ */
+EAPI void elm_toolbar_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode);
+
+/**
+ * @brief Gets the reorder mode.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The toolbar object
+ * @return The reorder mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ */
+EAPI Eina_Bool elm_toolbar_reorder_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Shows a specific item, when the toolbar can be scrolled.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The toolbar item
+ * @param[in] type Item scroll to type
+ *
+ * @see elm_toolbar_item_bring_in()
+ */
+EAPI void elm_toolbar_item_show(Elm_Object_Item *it, Elm_Toolbar_Item_Scrollto_Type type);
+
+/**
+ * @brief Shows a specific item with scroll animation, when the toolbar can be scrolled.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] it The toolbar item
+ * @param[in] type Item scroll to type
+ *
+ * @see elm_toolbar_item_show()
+ */
+EAPI void elm_toolbar_item_bring_in(Elm_Object_Item *it, Elm_Toolbar_Item_Scrollto_Type type);
/**
* @}
diff --git a/src/lib/elm_tooltip.h b/src/lib/elm_tooltip.h
index 2d934d492..8c5a2318a 100644
--- a/src/lib/elm_tooltip.h
+++ b/src/lib/elm_tooltip.h
@@ -1,152 +1,70 @@
/**
* @defgroup Tooltips Tooltips
- * @ingroup Elementary
+ * @ingroup elm_infra_group
*
- * The Tooltip is an (internal, for now) smart object used to show a
- * content in a frame on mouse hover of objects(or widgets), with
- * tips/information about them.
+ * @brief The Tooltip is an (internal, for now) smart object used to show a
+ * content in a frame on mouse hover of objects(or widgets), with
+ * tips/information about them.
*
* @{
*/
/**
- * @brief Possible orient values for tooltip.
+ * @brief Called back when a widget's tooltip is activated and needs content.
*
- * These values should be used in conjunction to elm_object_tooltip_orient_set() to
- * set the position around which the tooltip should appear(relative to its parent)
+ * @since_tizen 2.3
*
- * @ingroup Tooltips
- */
-typedef enum
-{
- ELM_TOOLTIP_ORIENT_NONE = 0, /**< Default value, Tooltip moves with mouse pointer */
- ELM_TOOLTIP_ORIENT_TOP_LEFT, /**< Tooltip should appear at the top left of parent */
- ELM_TOOLTIP_ORIENT_TOP, /**< Tooltip should appear at the top of parent */
- ELM_TOOLTIP_ORIENT_TOP_RIGHT, /**< Tooltip should appear at the top right of parent */
- ELM_TOOLTIP_ORIENT_LEFT, /**< Tooltip should appear at the left of parent */
- ELM_TOOLTIP_ORIENT_CENTER, /**< Tooltip should appear at the center of parent */
- ELM_TOOLTIP_ORIENT_RIGHT, /**< Tooltip should appear at the right of parent */
- ELM_TOOLTIP_ORIENT_BOTTOM_LEFT, /**< Tooltip should appear at the bottom left of parent */
- ELM_TOOLTIP_ORIENT_BOTTOM, /**< Tooltip should appear at the bottom of parent */
- ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT, /**< Tooltip should appear at the bottom right of parent */
- ELM_TOOLTIP_ORIENT_LAST /**< Sentinel value, @b don't use */
- } Elm_Tooltip_Orient;
-
-/**
- * This increments the tooltip movement freeze count by one. If the count
- * is more than 0, the tooltip position will be fixed.
- *
- * @param obj The tooltip's anchor object
- *
- * @ingroup Tooltips
- * @see elm_object_tooltip_move_freeze_pop()
- * @see elm_object_tooltip_move_freeze_get()
- * @since 1.9
- */
-EAPI void elm_object_tooltip_move_freeze_push(Evas_Object *obj);
-
-/**
- * This decrements the tooltip freeze count by one.
- *
- * @param obj The tooltip's anchor object
- *
- * @ingroup Tooltips
- * @see elm_object_tooltip_move_freeze_push()
- * @since 1.9
+ * @param[in] data The user-data given to elm_object_tooltip_content_cb_set()
+ * @param[in] obj The owner widget
+ * @param[in] tooltip The tooltip object (affix content to this!)
*/
-EAPI void elm_object_tooltip_move_freeze_pop(Evas_Object *obj);
-
-/**
- * Get the movement freeze by 1
- *
- * This gets the movement freeze count by one.
- *
- * @param obj The tooltip's anchor object
- * @return The movement freeze count
- *
- * @ingroup Tooltips
- * @see elm_object_tooltip_move_freeze_push()
- * @since 1.9
- */
-EAPI int elm_object_tooltip_move_freeze_get(const Evas_Object *obj);
-
-/**
- * @def elm_object_tooltip_orient_set
- * @since 1.9
- *
- * @brief Sets the orientation of the tooltip around the owner region
- *
- * Sets the position in which tooltip will appear around its owner. By default,
- * #ELM_TOOLTIP_ORIENT_NONE is set.
- *
- * @param[in] obj owner widget.
- * @param[in] orient orientation.
- *
- * @ingroup Tooltips
- * @see @ref Elm_Tooltip_Orient for possible values.
- */
-EAPI void elm_object_tooltip_orient_set(Evas_Object *obj, Elm_Tooltip_Orient orient);
+typedef Evas_Object *(*Elm_Tooltip_Content_Cb)(void *data, Evas_Object *obj, Evas_Object *tooltip);
/**
- * @brief Returns the orientation of Tooltip
+ * @brief Called back when a widget's item tooltip is activated and needs content.
*
- * @param obj The owner object
- * @return The orientation of the tooltip
+ * @since_tizen 2.3
*
- * @ingroup Tooltips
- * @see elm_object_tooltip_orient_set()
- * @ref Elm_Tooltip_Orient for possible values.
- */
-EAPI Elm_Tooltip_Orient elm_object_tooltip_orient_get(const Evas_Object *obj);
-
-/**
- * Called back when a widget's tooltip is activated and needs content.
- * @param data user-data given to elm_object_tooltip_content_cb_set()
- * @param obj owner widget.
- * @param tooltip The tooltip object (affix content to this!)
- */
-typedef Evas_Object *(*Elm_Tooltip_Content_Cb)(void *data, Evas_Object *obj, Evas_Object *tooltip);
-
-/**
- * Called back when a widget's item tooltip is activated and needs content.
- * @param data user-data given to elm_object_tooltip_content_cb_set()
- * @param obj owner widget.
- * @param tooltip The tooltip object (affix content to this!)
- * @param item context dependent item. As an example, if tooltip was
- * set on elm_list item, then it is of this type.
+ * @param[in] data The user-data given to elm_object_tooltip_content_cb_set()
+ * @param[in] obj The owner widget
+ * @param[in] tooltip The tooltip object (affix content to this!)
+ * @param[in] item The context dependent item. As an example, if tooltip was
+ * set on elm_list item, then it is of this type.
*/
typedef Evas_Object *(*Elm_Tooltip_Item_Content_Cb)(void *data, Evas_Object *obj, Evas_Object *tooltip, void *item);
/**
* @brief Force show tooltip of object
*
- * @param obj Target object
+ * @details Force show the tooltip and disable hide on mouse_out.
+ * If another content is set as tooltip, the visible tooltip will hididen and
+ * showed again with new content.
+ * This can force show more than one tooltip at a time.
*
- * Force show the tooltip and disable hide on mouse_out.
- * If another content is set as tooltip, the visible tooltip will be hidden and
- * showed again with new content.
- * This can force show more than one tooltip at a time.
+ * @since_tizen 2.3
*
- * @ingroup Tooltips
+ * @param[in] obj Target object
*/
EAPI void elm_object_tooltip_show(Evas_Object *obj);
/**
* @brief Force hide tooltip of object
*
- * @param obj Target object
+ * @details Force hide the tooltip and (re)enable future mouse interations.
*
- * Force hide the tooltip and (re)enable future mouse interations.
+ * @since_tizen 2.3
*
- * @ingroup Tooltips
+ * @param[in] obj Target object
*/
EAPI void elm_object_tooltip_hide(Evas_Object *obj);
/**
* @brief Set the text to be displayed inside the tooltip.
*
- * @param obj The tooltip object.
- * @param text The text to be displayed.
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The tooltip object
+ * @param[in] text The text to be displayed
*
* @ingroup Tooltips
*/
@@ -157,90 +75,91 @@ EAPI void elm_object_tooltip_domain_translatable_text_set(Evas_Object *ob
/**
* @brief Set the content to be shown in the tooltip object
*
- * @param obj The object being attached a tooltip.
- * @param func The function used to create the tooltip contents.
- * @param data What to provide to @a func as callback data/context.
- * @param del_cb Function called when data is not needed anymore, either when
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The object being attached a tooltip.
+ * @param[in] func The function used to create the tooltip contents.
+ * @param[in] data What to provide to @a func as callback data/context.
+ * @param[in] del_cb Function called when data is not needed anymore, either when
* another callback replaces @p func, the tooltip is unset with
* elm_object_tooltip_unset() or the owner object @a obj
* dies. This callback receives as the first parameter the
- * given @a data, and @p event_info is NULL.
- *
- * Setup the tooltip to object. The object can have only one tooltip,
- * so any previous tooltip data is removed. @p func(with @p data) will
- * be called every time that need show the tooltip and it should
- * return a valid Evas_Object. This object is then managed fully by
- * tooltip system and is deleted when the tooltip is gone.
+ * given @a data, and @c event_info is NULL.
*
- * @ingroup Tooltips
+ * @details Setup the tooltip to object. The object can have only one tooltip,
+ * so any previous tooltip data is removed. @p func(with @p data) will
+ * be called every time that need show the tooltip and it should
+ * return a valid Evas_Object. This object is then managed fully by
+ * tooltip system and is deleted when the tooltip is gone.
*/
EAPI void elm_object_tooltip_content_cb_set(Evas_Object *obj, Elm_Tooltip_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
/**
* @brief Unset tooltip from object
*
- * @param obj Target object
+ * @since_tizen 2.3
+ *
+ * @param[in] obj Target object
*
* Remove tooltip from object. The callback provided as del_cb to
* elm_object_tooltip_content_cb_set() will be called to notify it is
* not used anymore.
*
* @see elm_object_tooltip_content_cb_set()
- *
- * @ingroup Tooltips
*/
EAPI void elm_object_tooltip_unset(Evas_Object *obj);
/**
- * @brief Set a different style for this object tooltip.
+ * @brief Sets a different style for this object tooltip.
*
- * @note before you set a style you should define a tooltip with
- * elm_object_tooltip_content_cb_set() or
- * elm_object_tooltip_text_set().
+ * @since_tizen 2.3
*
- * @param obj an object with tooltip already set.
- * @param style the theme style to use (default, transparent, ...)
+ * @remarks Before you set a style you should define a tooltip with
+ * elm_object_tooltip_content_cb_set() or
+ * elm_object_tooltip_text_set().
*
- * @ingroup Tooltips
+ * @param[in] obj an object with tooltip already set
+ * @param[in] style The theme style to use (default, transparent, ...)
*/
EAPI void elm_object_tooltip_style_set(Evas_Object *obj, const char *style);
/**
- * @brief Get the style for this object tooltip.
+ * @brief Gets the style for this object tooltip.
*
- * @param obj an object with tooltip already set.
- * @return style the theme style in use, defaults to "default". If the
- * object does not have a tooltip set, then NULL is returned.
+ * @since_tizen 2.3
*
- * @ingroup Tooltips
+ * @param[in] obj An object with tooltip already set
+ * @return style The theme style in use, defaults to "default" \n
+ * If the object does not have a tooltip set, then @c NULL is returned.
*/
EAPI const char *elm_object_tooltip_style_get(const Evas_Object *obj);
/**
- * @brief Disable size restrictions on an object's tooltip
+ * @brief Disables size restrictions on an object's tooltip.
*
- * @param obj The tooltip's anchor object
- * @param disable If @c EINA_TRUE, size restrictions are disabled
- * @return @c EINA_FALSE on failure, @c EINA_TRUE on success
+ * @details This function allows a tooltip to expand beyond its parent window's canvas.
+ * It will instead be limited only by the size of the display.
*
- * This function allows a tooltip to expand beyond its parent window's canvas.
- * It will instead be limited only by the size of the display.
+ * @since_tizen 2.3
*
- * @ingroup Tooltips
+ * @param[in] obj The tooltip's anchor object
+ * @param[in] disable If @c EINA_TRUE, size restrictions are disabled,
+ * otherwise @c EINA_FALSE
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
*/
EAPI Eina_Bool elm_object_tooltip_window_mode_set(Evas_Object *obj, Eina_Bool disable);
/**
- * @brief Get size restriction state of an object's tooltip
- *
- * @param obj The tooltip's anchor object
- * @return If @c EINA_TRUE, size restrictions are disabled
+ * @brief Retrieves size restriction state of an object's tooltip
+ * @details This function returns whether a tooltip is allowed to expand beyond
+ * its parent window's canvas.
+ * It will instead be limited only by the size of the display.
*
- * This function returns whether a tooltip is allowed to expand beyond
- * its parent window's canvas.
- * It will instead be limited only by the size of the display.
+ * @since_tizen 2.3
*
- * @ingroup Tooltips
+ * @param[in] obj The tooltip's anchor object
+ * @return @c EINA_TRUE if size restrictions are disabled,
+ * otherwise @c EINA_FALSE
*/
EAPI Eina_Bool elm_object_tooltip_window_mode_get(const Evas_Object *obj);
diff --git a/src/lib/elm_transit.h b/src/lib/elm_transit.h
index 32ffe5982..a990a7e29 100644
--- a/src/lib/elm_transit.h
+++ b/src/lib/elm_transit.h
@@ -1,14 +1,16 @@
/**
* @defgroup Transit Transit
- * @ingroup Elementary
+ * @ingroup elm_infra_group
+ * @brief This group provides functions to handle the effects of transition
+ * of Elementary widgets.
*
* Transit is designed to apply various animated transition effects to @c
- * Evas_Object, such like translation, rotation, etc. For using these
- * effects, create an @ref Elm_Transit and add the desired transition effects.
+ * Evas_Object, such as translation, rotation, etc. For using these
+ * effects, create @ref Elm_Transit and add the desired transition effects.
*
- * Once the effects are added into transit, they will be automatically
- * managed (their callback will be called for the set duration and
- * they will be deleted upon completion).
+ * Once the effects are added into transit, they are automatically
+ * managed (their callback is called for the set duration and
+ * they are deleted upon completion).
*
* Example:
* @code
@@ -41,48 +43,46 @@
* It's also possible to make a transition chain with @ref
* elm_transit_chain_transit_add.
*
- * @warning We strongly recommend to use elm_transit just when edje can not do
+ * @remarks We strongly recommend to use elm_transit just when edje cannot do
* the trick. Edje is better at handling transitions than Elm_Transit.
* Edje has more flexibility and animations can be manipulated inside the theme.
*
- * List of examples:
- * @li @ref transit_example_01_explained
- * @li @ref transit_example_02_explained
- * @li @ref transit_example_03_c
- * @li @ref transit_example_04_c
- *
* @{
*/
/**
* @enum Elm_Transit_Tween_Mode
*
- * The type of acceleration used in the transition.
+ * @brief Enumeration of acceleration used in the transition.
+ *
+ * @since_tizen 2.3
*/
typedef enum
{
ELM_TRANSIT_TWEEN_MODE_LINEAR, /**< Constant speed */
- ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL, /**< Starts slow, increase speed
- over time, then decrease again
- and stop slowly, v1 being a power factor */
- ELM_TRANSIT_TWEEN_MODE_DECELERATE, /**< Starts fast and decrease
+ ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL, /**< Starts slow, increases speed
+ over time, then decreases again
+ and stops slowly, v1 being a power factor */
+ ELM_TRANSIT_TWEEN_MODE_DECELERATE, /**< Starts fast and decreases
speed over time, v1 being a power factor */
- ELM_TRANSIT_TWEEN_MODE_ACCELERATE, /**< Starts slow and increase speed
+ ELM_TRANSIT_TWEEN_MODE_ACCELERATE, /**< Starts slow and increases speed
over time, v1 being a power factor */
- ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP, /**< Start at gradient v1,
- interpolated via power of v2 curve */
- ELM_TRANSIT_TWEEN_MODE_BOUNCE, /**< Start at 0.0 then "drop" like a ball
- bouncing to the ground at 1.0, and
+ ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP, /**< Starts at gradient v1,
+ interpolated via power of the v2 curve */
+ ELM_TRANSIT_TWEEN_MODE_BOUNCE, /**< Starts at @c 0.0 then a "drop" like a ball
+ bouncing to the ground at @c 1.0, and
bounce v2 times, with decay factor of v1 */
- ELM_TRANSIT_TWEEN_MODE_SPRING /**< Start at 0.0 then "wobble" like a spring
- rest position 1.0, and wobble v2 times,
+ ELM_TRANSIT_TWEEN_MODE_SPRING /**< Starts at @c 0.0 then a "wobble" like a spring
+ at rest position @c 1.0, and wobble v2 times,
with decay factor of v1 */
} Elm_Transit_Tween_Mode;
/**
* @enum Elm_Transit_Effect_Flip_Axis
*
- * The axis along which flip effect should be applied.
+ * @brief Enumeration of the axis along which flip effect should be applied.
+ *
+ * @since_tizen 2.3
*/
typedef enum
{
@@ -93,7 +93,9 @@ typedef enum
/**
* @enum Elm_Transit_Effect_Wipe_Dir
*
- * The direction in which the wipe effect should occur.
+ * @brief Enumeration of the direction in which the wipe effect should occur.
+ *
+ * @since_tizen 2.3
*/
typedef enum
{
@@ -105,7 +107,9 @@ typedef enum
/** @enum Elm_Transit_Effect_Wipe_Type
*
- * Whether the wipe effect should show or hide the object.
+ * @brief Enumeration that indicates whether the wipe effect should show or hide the object.
+ *
+ * @since_tizen 2.3
*/
typedef enum
{
@@ -118,10 +122,12 @@ typedef enum
/**
* @typedef Elm_Transit
*
- * The Transit created with elm_transit_add(). This type has the information
- * about the objects which the transition will be applied, and the
- * transition effects that will be used. It also contains info about
- * duration, number of repetitions, auto-reverse, etc.
+ * @brief The Transit structure type created with elm_transit_add(). This type has the information
+ * about the objects to which the transition is applied, and the
+ * transition effects that are used. It also contains info about
+ * duration, number of repetitions, auto-reverse, etc.
+ *
+ * @since_tizen 2.3
*/
typedef struct _Elm_Transit Elm_Transit;
typedef void Elm_Transit_Effect;
@@ -129,62 +135,70 @@ typedef void Elm_Transit_Effect;
/**
* @typedef Elm_Transit_Effect_Transition_Cb
*
- * Transition callback called for this effect on each transition iteration.
+ * @brief Called for this effect on each transition iteration.
+ *
+ * @since_tizen 2.3
*/
typedef void (*Elm_Transit_Effect_Transition_Cb)(Elm_Transit_Effect *effect, Elm_Transit *transit, double progress);
/**
* Elm_Transit_Effect_End_Cb
*
- * Transition callback called for this effect when the transition is over.
+ * @brief Called for this effect when the transition is over.
+ *
+ * @since_tizen 2.3
*/
typedef void (*Elm_Transit_Effect_End_Cb)(Elm_Transit_Effect *effect, Elm_Transit *transit);
/**
* Elm_Transit_Del_Cb
*
- * A callback called when the transit is deleted.
+ * @brief Called when the transit is deleted.
+ *
+ * @since_tizen 2.3
*/
typedef void (*Elm_Transit_Del_Cb)(void *data, Elm_Transit *transit);
/**
- * Create new transit.
+ * @brief Creates a new transit.
*
- * @note It is not necessary to delete the transit object, it will be deleted at
- * the end of its operation.
- * @note The transit will start playing when the program enters the main loop.
+ * @since_tizen 2.3
*
- * @return The transit object.
+ * @remarks It is not necessary to delete the transit object, it is deleted at
+ * the end of its operation.
+ * @remarks The transit starts playing when the program enters the main loop.
*
- * @ingroup Transit
+ * @return The transit object
*/
EAPI Elm_Transit *elm_transit_add(void);
/**
- * Stops the animation and delete the @p transit object.
+ * @brief Stops the animation and deletes the @a transit object.
*
- * Call this function if you want to stop the animation before the
- * transit time. Make sure the @p transit object is still alive with
- * elm_transit_del_cb_set() function.
- * All added effects will be deleted, calling its respective data_free_cb
- * functions. The function set by elm_transit_del_cb_set() will be called.
+ * @since_tizen 2.3
*
- * @see elm_transit_del_cb_set()
+ * @remarks Call this function if you want to stop the animation before the
+ * transit time. Make sure the @a transit object is still alive using the
+ * elm_transit_del_cb_set() function.
+ * All added effects are deleted, calling its respective data_free_cb
+ * functions. The function set by elm_transit_del_cb_set() is called.
*
- * @param transit The transit object to be deleted.
+ * @param[in] transit The transit object to be deleted
*
- * @ingroup Transit
+ * @see elm_transit_del_cb_set()
*/
EAPI void elm_transit_del(Elm_Transit *transit);
/**
- * Add a new effect to the transit.
+ * @brief Adds a new effect to the transit.
+ *
+ * @since_tizen 2.3
*
- * @note The cb function and the data are the key to the effect.
- * If you try to add an existing effect, nothing is done.
- * @note After the first addition of an effect to @p transit, if its
- * effect list become empty again, the @p transit will be killed by
- * elm_transit_del(transit) function.
+ * @remarks The @a cb function and @a data are the key to the effect.
+ * If you try to add an existing effect, nothing is done.
+ * @remarks After the first addition of an effect to @a transit, if its
+ * effect list become empty again, the @a transit is killed by the
+ * elm_transit_del(transit) function.
*
* Example:
* @code
@@ -195,701 +209,719 @@ EAPI void elm_transit_del(Elm_Transit *transit);
* elm_transit_effect_blend_context_free);
* @endcode
*
- * @param transit The transit object.
- * @param transition_cb The operation function. It is called when the
- * animation begins, it is the function that actually performs the animation.
- * It is called with the @p data, @p transit and the time progression of the
- * animation (a double value between 0.0 and 1.0).
- * @param effect The context data of the effect.
- * @param end_cb The function to free the context data, it will be called
- * at the end of the effect, it must finalize the animation and free the
- * @p data.
- *
- * @ingroup Transit
- * @warning The transit will free the context data at the and of the
- * transition with the data_free_cb function.
- * Do not share the context data in between different transit objects.
+ * @remarks The transit frees the context data at the end of the
+ * transition with the @a data_free_cb function.
+ * @remarks Do not share the context data in between different transit objects.
+ *
+ * @param[in] transit The transit object
+ * @param[in] transition_cb The operation function \n
+ * It is called when the
+ * animation begins, it is the function that actually performs the animation \n
+ * It is called with the @a data, @a transit and the time progression of the
+ * animation (a double value between @c 0.0 and @c 1.0).
+ * @param[in] effect The context data of the effect
+ * @param[in] end_cb The function to free the context data, it is called
+ * at the end of the effect, it must finalize the animation and free the
+ * @a data.
*/
EAPI void elm_transit_effect_add(Elm_Transit *transit, Elm_Transit_Effect_Transition_Cb transition_cb, Elm_Transit_Effect *effect, Elm_Transit_Effect_End_Cb end_cb);
/**
- * Delete an added effect.
+ * @brief Deletes an added effect.
*
- * This function will remove the effect from the @p transit, calling the
- * data_free_cb to free the @p data.
+ * @details This function removes the effect from the @a transit, calling the
+ * @a data_free_cb to free the @a data.
*
- * @see elm_transit_effect_add()
+ * @since_tizen 2.3
*
- * @note If the effect is not found, nothing is done.
- * @note If the effect list become empty, this function will call
- * elm_transit_del(transit), i.e., it will kill the @p transit.
+ * @remarks If the effect is not found, nothing is done.
+ * @remarks If the effect list becomes empty, this function calls
+ * elm_transit_del(transit), i.e., it kills the @a transit.
*
- * @param transit The transit object.
- * @param transition_cb The operation function.
- * @param effect The context data of the effect.
+ * @param[in] transit The transit object
+ * @param[in] transition_cb The operation function
+ * @param[in] effect The context data of the effect
*
- * @ingroup Transit
+ * @see elm_transit_effect_add()
*/
EAPI void elm_transit_effect_del(Elm_Transit *transit, Elm_Transit_Effect_Transition_Cb transition_cb, Elm_Transit_Effect *effect);
/**
- * Add new object to apply the effects.
+ * @brief Adds a new object to apply the effects.
*
- * @note After the first addition of an object to @p transit, if its
- * object list become empty again, the @p transit will be killed by
- * elm_transit_del(transit) function.
- * @note If the @p obj belongs to another transit, the @p obj will be
- * removed from it and it will only belong to the other @p transit.
- * If the old transit stays without objects, it will die.
- * @note When you add an object into the @p transit, its state from
- * evas_object_pass_events_get(obj) is saved, and it is applied when the
- * transit ends, if you change this state with evas_object_pass_events_set()
- * after add the object, this state will change again when @p transit stops.
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @param obj Object to be animated.
+ * @remarks After the first addition of an object to @a transit, if its
+ * object list becomes empty again, the @a transit is killed by the
+ * elm_transit_del(transit) function.
+ * @remarks If the @a obj belongs to another transit, the @a obj is
+ * removed from it and it only belongs to the other @a transit.
+ * If the old transit stays without objects, it dies.
+ * @remarks When you add an object into @a transit, its state from
+ * evas_object_pass_events_get(obj) is saved, and it is applied when the
+ * transit ends, if you change this state using evas_object_pass_events_set()
+ * after adding the object, this state changes again when @a transit stops.
+ * @remarks It is not allowed to add a new object after transit begins.
*
- * @ingroup Transit
- * @warning It is not allowed to add a new object after transit begins.
+ * @param[in] transit The transit object
+ * @param[in] obj The object to be animated
*/
EAPI void elm_transit_object_add(Elm_Transit *transit, Evas_Object *obj);
/**
- * Removes an added object from the transit.
+ * @brief Removes an added object from the transit.
*
- * @note If the @p obj is not in the @p transit, nothing is done.
- * @note If the list become empty, this function will call
- * elm_transit_del(transit), i.e., it will kill the @p transit.
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @param obj Object to be removed from @p transit.
+ * @remarks If the @a obj is not in the @a transit, nothing is done.
+ * @remarks If the list becomes empty, this function calls
+ * elm_transit_del(transit), i.e., it kills the @a transit.
+ * @remarks It is not allowed to remove objects after transit begins.
*
- * @ingroup Transit
- * @warning It is not allowed to remove objects after transit begins.
+ * @param[in] transit The transit object
+ * @param[in] obj The object to be removed from @a transit
*/
EAPI void elm_transit_object_remove(Elm_Transit *transit, Evas_Object *obj);
/**
- * Get the objects of the transit.
+ * @brief Gets the objects of the transit.
*
- * @param transit The transit object.
- * @return a Eina_List with the objects from the transit.
+ * @since_tizen 2.3
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @return a The Eina_List with the objects from the transit
*/
EAPI const Eina_List *elm_transit_objects_get(const Elm_Transit *transit);
/**
- * Enable/disable keeping up the objects states.
- * If it is not kept, the objects states will be reset when transition ends.
+ * @brief Enables or disables keeping up the object's states.
+ * If it is not kept, the object's states are reset when transition ends.
*
- * @note @p transit can not be NULL.
- * @note One state includes geometry, color, map data.
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @param state_keep retain the state or not.
+ * @remarks @a transit cannot be @c NULL.
+ * @remarks One state includes geometry, color, and map data.
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @param[in] state_keep The boolean value that indicates whether to retain the state
*/
EAPI void elm_transit_objects_final_state_keep_set(Elm_Transit *transit, Eina_Bool state_keep);
/**
- * Get a value whether the objects states will be reset or not.
+ * @brief Gets a value that indicates whether the object's states are reset.
*
- * @note @p transit can not be NULL
+ * @since_tizen 2.3
*
- * @see elm_transit_objects_final_state_keep_set()
+ * @remarks @a transit cannot be @c NULL
*
- * @param transit The transit object.
- * @return @c EINA_TRUE means the states of the objects will be reset.
- * If @p transit is NULL, @c EINA_FALSE is returned
+ * @param[in] transit The transit object
+ * @return @c EINA_TRUE indicates that the states of the objects are reset \n
+ * If @a transit is @c NULL, @c EINA_FALSE is returned
*
- * @ingroup Transit
+ * @see elm_transit_objects_final_state_keep_set()
*/
EAPI Eina_Bool elm_transit_objects_final_state_keep_get(const Elm_Transit *transit);
/**
- * Set the event enabled when transit is operating.
+ * @brief Sets the events that are enabled when transit is operating.
*
- * If @p enabled is @c EINA_TRUE, the objects of the transit will receive
- * events from mouse and keyboard during the animation.
- * @note When you add an object with elm_transit_object_add(), its state from
- * evas_object_freeze_events_get(obj) is saved, and it is applied when the
- * transit ends. If you change this state with evas_object_freeze_events_set()
- * after adding the object, this state will change again when @p transit stops
- * to run.
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @param enabled Events are received when enabled is @c EINA_TRUE, and
- * ignored otherwise.
+ * @remarks If @a enabled is @c EINA_TRUE, the objects of the transit receive
+ * events from a mouse and keyboard during the animation.
+ * @remarks When you add an object with elm_transit_object_add(), its state from
+ * evas_object_freeze_events_get(obj) is saved, and it is applied when the
+ * transit ends. If you change this state using evas_object_freeze_events_set()
+ * after adding the object, this state changes again when @a transit stops
+ * to run.
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @param[in] enabled Events are received when enabled is @c EINA_TRUE,
+ * otherwise it is ignored
*/
EAPI void elm_transit_event_enabled_set(Elm_Transit *transit, Eina_Bool enabled);
/**
- * Get the value of event enabled status.
+ * @brief Gets the value of the event enabled status.
*
- * @see elm_transit_event_enabled_set()
+ * @since_tizen 2.3
*
- * @param transit The Transit object
- * @return @c EINA_TRUE, when event is enabled. If @p transit is NULL
- * @c EINA_FALSE is returned
+ * @param[in] transit The transit object
+ * @return @c EINA_TRUE if the event is enabled,
+ * otherwise @c EINA_FALSE is returned if @a transit is @c NULL
*
- * @ingroup Transit
+ * @see elm_transit_event_enabled_set()
*/
EAPI Eina_Bool elm_transit_event_enabled_get(const Elm_Transit *transit);
/**
- * Set the user-callback function when the transit is deleted.
+ * @brief Sets the user-callback function when the transit is deleted.
*
- * @note Using this function twice will overwrite the first function set.
- * @note the @p transit object will be deleted after call @p cb function.
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @param cb Callback function pointer. This function will be called before
- * the deletion of the transit.
- * @param data Callback function user data. It is the @p op parameter.
+ * @remarks Using this function twice overwrites the first function set.
+ * @remarks The @a transit object is deleted after calling the @a cb function.
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @param[in] cb The callback function pointer \n
+ * This function is called before the deletion of the transit.
+ * @param[in] data The callback function for user data \n
+ * It is the @a op parameter.
*/
EAPI void elm_transit_del_cb_set(Elm_Transit *transit, Elm_Transit_Del_Cb cb, void *data);
/**
- * Set reverse effect automatically.
+ * @brief Sets the reverse effect automatically.
*
- * If auto reverse is set, after running the effects with the progress
- * parameter from 0 to 1, it will call the effects again with the progress
- * from 1 to 0. The transit will last for a time equal to (2 * duration * repeat),
- * where the duration was set with the function elm_transit_add and
- * the repeat with the function elm_transit_repeat_times_set().
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @param reverse @c EINA_TRUE means the auto_reverse is on.
+ * @remarks If auto reverse is set, after running the effects with the progress
+ * parameter from @c 0 to @c 1, it calls the effects again with the progress
+ * from @c 1 to @c 0. The transit lasts for a time equal to (2 * duration * repeat),
+ * where the duration is set using the function elm_transit_add and
+ * the repeat using the function elm_transit_repeat_times_set().
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @param[in] reverse If @c EINA_TRUE the auto_reverse is on, otherwise @c EINA_FALSE
*/
EAPI void elm_transit_auto_reverse_set(Elm_Transit *transit, Eina_Bool reverse);
/**
- * Get if the auto reverse is on.
+ * @brief Gets whether the auto reverse is on.
*
- * @see elm_transit_auto_reverse_set()
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @return @c EINA_TRUE means auto reverse is on. If @p transit is NULL
- * @c EINA_FALSE is returned
+ * @param[in] transit The transit object
+ * @return @c EINA_TRUE if the auto reverse is on,
+ * otherwise @c EINA_FALSE is returned if @a transit is @c NULL
*
- * @ingroup Transit
+ * @see elm_transit_auto_reverse_set()
*/
EAPI Eina_Bool elm_transit_auto_reverse_get(const Elm_Transit *transit);
/**
- * Set the transit repeat count. Effect will be repeated by repeat count.
+ * @brief Sets the transit repeat count. The effect is repeated as per the repeat count.
*
- * This function sets the number of repetition the transit will run after
- * the first one, i.e., if @p repeat is 1, the transit will run 2 times.
- * If the @p repeat is a negative number, it will repeat infinite times.
+ * @details This function sets the number of repetitions that the transit runs after
+ * the first one, i.e., if @a repeat is @c 1, the transit runs @c 2 times.
+ * If @a repeat is a negative number, it repeats infinite times.
*
- * @note If this function is called during the transit execution, the transit
- * will run @p repeat times, ignoring the times it already performed.
+ * @since_tizen 2.3
*
- * @param transit The transit object
- * @param repeat Repeat count
+ * @remarks If this function is called during the transit execution, the transit
+ * runs @a repeat times, ignoring the times it already performed.
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @param[in] repeat The repeat count
*/
EAPI void elm_transit_repeat_times_set(Elm_Transit *transit, int repeat);
/**
- * Get the transit repeat count.
+ * @brief Gets the transit repeat count.
*
- * @see elm_transit_repeat_times_set()
+ * @since_tizen 2.3
*
- * @param transit The Transit object.
- * @return The repeat count. If @p transit is NULL
- * 0 is returned
+ * @param[in] transit The transit object
+ * @return The repeat count \n
+ * If @a transit is @c NULL, @c 0 is returned
*
- * @ingroup Transit
+ * @see elm_transit_repeat_times_set()
*/
EAPI int elm_transit_repeat_times_get(const Elm_Transit *transit);
/**
- * Set the transit animation acceleration type.
+ * @brief Sets the transit animation acceleration type.
*
- * This function sets the tween mode of the transit that can be:
- * ELM_TRANSIT_TWEEN_MODE_LINEAR - The default mode.
- * ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL - Starts in accelerate mode and ends
- * decelerating with factor.
- * ELM_TRANSIT_TWEEN_MODE_DECELERATE - The animation will be slowed over time
- * with factor.
- * ELM_TRANSIT_TWEEN_MODE_ACCELERATE - The animation will accelerate over time
- * with factor.
- * ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP - Start at gradient v1, interpolated
- * via power of v2 curve.
- * ELM_TRANSIT_TWEEN_MODE_BOUNCE - Start at 0.0 then "drop" like a ball bouncing
- * to the ground at 1.0, and bounce v2 times, with decay factor of v1.
- * ELM_TRANSIT_TWEEN_MODE_SPRING - Start at 0.0 then "wobble" like a spring rest
- * position 1.0, and wobble v2 times, with decay factor of v1.
+ * @details This function sets the tween mode of the transit which can be:
+ * ELM_TRANSIT_TWEEN_MODE_LINEAR - The default mode.
+ * ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL - Starts in the accelerate mode and ends
+ * decelerating with factor.
+ * ELM_TRANSIT_TWEEN_MODE_DECELERATE - The animation is slowed over time
+ * with factor.
+ * ELM_TRANSIT_TWEEN_MODE_ACCELERATE - The animation accelerates over time
+ * with factor.
+ * ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP - Starts at gradient v1, interpolated
+ * via power of the v2 curve.
+ * ELM_TRANSIT_TWEEN_MODE_BOUNCE - Starts at @c 0.0 then a "drop" like a ball bouncing
+ * to the ground at @c 1.0, and bounce v2 times, with decay factor of v1.
+ * ELM_TRANSIT_TWEEN_MODE_SPRING - Starts at @c 0.0 then a "wobble" like a spring in rest
+ * position @c 1.0, and wobble v2 times, with decay factor of v1.
*
- * @param transit The transit object.
- * @param tween_mode The tween type.
+ * @since_tizen 2.3
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @param[in] tween_mode The tween type
*/
EAPI void elm_transit_tween_mode_set(Elm_Transit *transit, Elm_Transit_Tween_Mode tween_mode);
/**
- * Get the transit animation acceleration type.
+ * @brief Gets the transit animation acceleration type.
*
- * @note @p transit can not be NULL
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @return The tween type. If @p transit is NULL
- * ELM_TRANSIT_TWEEN_MODE_LINEAR is returned.
+ * @remarks @a transit cannot be @c NULL.
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @return The tween type \n
+ * If @a transit is @c NULL, @c ELM_TRANSIT_TWEEN_MODE_LINEAR is returned.
*/
EAPI Elm_Transit_Tween_Mode elm_transit_tween_mode_get(const Elm_Transit *transit);
/**
- * Set the transit animation acceleration factor.
- *
- * This function sets the tween mode factor of the transit that can be:
- * If you use the below tween modes, you have to set the factor using this API.
- * ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL - Start slow, speed up then slow down
- * at end, v1 being a power factor, 0.0 being linear, 1.0 being
- * ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL default, 2.0 being much more pronounced
- * sinusoidal(squared), 3.0 being cubed, etc.
- * ELM_TRANSIT_TWEEN_MODE_DECELERATE - Start fast then slow down, v1 being a
- * power factor, 0.0 being linear, 1.0 being ELM_TRANSIT_TWEEN_MODE_DECELERATE
- * default, 2.0 being much more pronounced decelerate (squared), 3.0 being
- * cubed, etc.
- * ELM_TRANSIT_TWEEN_MODE_ACCELERATE - Start slow then speed up, v1 being a
- * power factor, 0.0 being linear, 1.0 being ELM_TRANSIT_TWEEN_MODE_ACCELERATE
- * default, 2.0 being much more pronounced accelerate (squared), 3.0 being
- * cubed, etc.
- * ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP - Start at gradient * v1, interpolated
- * via power of v2 curve
- * ELM_TRANSIT_TWEEN_MODE_BOUNCE - Start at 0.0 then "drop" like a ball bouncing
- * to the ground at 1.0, and bounce v2 times, with decay factor of v1
- * ELM_TRANSIT_TWEEN_MODE_SPRING - Start at 0.0 then "wobble" like a spring rest
- * position 1.0, and wobble v2 times, with decay factor of v1
- *
- * @param transit The transit object.
- * @param v1 A parameter use by the mapping (default is 1.0)
- * @param v2 A parameter use by the mapping (default is 0.0)
+ * @brief Sets the transit animation acceleration factor.
+ *
+ * @details This function sets the tween mode factor of the transit which can be:
+ * If you use the below tween modes, you have to set the factor using this API.
+ * ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL - Starts slow, speeds up then slows down
+ * at the end, v1 being a power factor, @c 0.0 being linear, @c 1.0 being
+ * ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL - Default, @c 2.0 being a much more pronounced
+ * sinusoidal(squared), @c 3.0 being cubed, etc.
+ * ELM_TRANSIT_TWEEN_MODE_DECELERATE - Starts fast then slows down, v1 being a
+ * power factor, @c 0.0 being linear, @c 1.0 being ELM_TRANSIT_TWEEN_MODE_DECELERATE
+ * default, @c 2.0 being a much more pronounced decelerate (squared), @c 3.0 being
+ * cubed, etc.
+ * ELM_TRANSIT_TWEEN_MODE_ACCELERATE - Starts slow then speeds up, v1 being a
+ * power factor, @c 0.0 being linear, @c 1.0 being ELM_TRANSIT_TWEEN_MODE_ACCELERATE
+ * default, @c 2.0 being a much more pronounced accelerate (squared), @c 3.0 being
+ * cubed, etc.
+ * ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP - Starts at gradient * v1, interpolated
+ * via power of the v2 curve.
+ * ELM_TRANSIT_TWEEN_MODE_BOUNCE - Starts at @c 0.0 then a "drop" like a ball bouncing
+ * to the ground at @c 1.0, and bounce v2 times, with decay factor of v1.
+ * ELM_TRANSIT_TWEEN_MODE_SPRING - Starts at @c 0.0 then a "wobble" like a spring in rest
+ * position @c 1.0, and wobble v2 times, with decay factor of v1.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] transit The transit object
+ * @param[in] v1 A parameter used by the mapping (default is @c 1.0)
+ * @param[in] v2 A parameter used by the mapping (default is @c 0.0)
*
* @see elm_transit_tween_mode_factor_get()
- *
- * @ingroup Transit
*/
EAPI void elm_transit_tween_mode_factor_set(Elm_Transit *transit, double v1, double v2);
/**
- * Get the transit animation acceleration factor.
+ * @brief Gets the transit animation acceleration factor.
*
- * @note @p transit can not be NULL
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @param v1 Pointer to an double in which to store the factor value.
- * @param v2 Pointer to an double in which to store the factor value2.
+ * @remarks @a transit cannot be @c NULL.
*
- * @see elm_transit_tween_mode_factor_set()
+ * @param[in] transit The transit object
+ * @param[out] v1 The pointer to a double in which to store the factor value
+ * @param[out] v2 The pointer to a double in which to store the factor value2
*
- * @ingroup Transit
+ * @see elm_transit_tween_mode_factor_set()
*/
EAPI void elm_transit_tween_mode_factor_get(const Elm_Transit *transit, double *v1, double *v2);
/**
- * Set the transit animation time
+ * @brief Sets the transit animation time.
*
- * @note @p transit can not be NULL
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @param duration The animation time.
+ * @remarks @a transit cannot be @c NULL.
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @param[in] duration The animation time
*/
EAPI void elm_transit_duration_set(Elm_Transit *transit, double duration);
/**
- * Get the transit animation time
+ * @brief Gets the transit animation time.
*
- * @note @p transit can not be NULL
+ * @since_tizen 2.3
*
- * @param transit The transit object.
+ * @remarks @a transit cannot be @c NULL.
*
- * @return The transit animation time.
+ * @param[in] transit The transit object
*
- * @ingroup Transit
+ * @return The transit animation time
*/
EAPI double elm_transit_duration_get(const Elm_Transit *transit);
/**
- * Starts the transition.
- * Once this API is called, the transit begins to measure the time.
+ * @brief Starts the transition.
*
- * @note @p transit can not be NULL
+ * @since_tizen 2.3
*
- * @param transit The transit object.
+ * @remarks Once this API is called, the transit begins to measure the time.
*
- * @ingroup Transit
+ * @remarks @a transit cannot be @c NULL.
+ *
+ * @param[in] transit The transit object
*/
EAPI void elm_transit_go(Elm_Transit *transit);
/**
- * Pause/Resume the transition.
+ * @brief Pauses and resumes the transition.
*
- * If you call elm_transit_go again, the transit will be started from the
- * beginning, and will be played.
+ * @since_tizen 2.3
*
- * @note @p transit can not be NULL
+ * @remarks If you call elm_transit_go() again, the transit is started from the
+ * beginning, and is played.
*
- * @param transit The transit object.
- * @param paused Whether the transition should be paused or not.
+ * @remarks @a transit cannot be @c NULL
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @param[in] paused The boolean value that indicates whether the transition should be paused
*/
EAPI void elm_transit_paused_set(Elm_Transit *transit, Eina_Bool paused);
/**
- * Get the value of paused status.
+ * @brief Gets the value of the paused status.
*
- * @see elm_transit_paused_set()
+ * @since_tizen 2.3
*
- * @note @p transit can not be NULL
+ * @remarks @a transit cannot be @c NULL.
*
- * @param transit The transit object.
- * @return @c EINA_TRUE means transition is paused. If @p transit is NULL
- * @c EINA_FALSE is returned
+ * @param[in] transit The transit object
+ * @return @c EINA_TRUE if the transition is paused,
+ * otherwise @c EINA_FALSE is returned if @a transit is @c NULL
*
- * @ingroup Transit
+ * @see elm_transit_paused_set()
*/
EAPI Eina_Bool elm_transit_paused_get(const Elm_Transit *transit);
/**
- * Get the time progression of the animation (a double value between 0.0 and 1.0).
+ * @brief Gets the time progression of the animation (a double value between @c 0.0 and @c 1.0).
*
- * The value returned is a fraction (current time / total time). It
- * represents the progression position relative to the total.
+ * @since_tizen 2.3
*
- * @note @p transit can not be NULL
+ * @remarks The value returned is a fraction (current time / total time). It
+ * represents the progression position relative to the total.
*
- * @param transit The transit object.
+ * @remarks @a transit cannot be @c NULL
*
- * @return The time progression value. If @p transit is NULL
- * 0 is returned
+ * @param[in] transit The transit object
*
- * @ingroup Transit
+ * @return The time progression value \n
+ * If @a transit is @c NULL, @c 0 is returned
*/
EAPI double elm_transit_progress_value_get(const Elm_Transit *transit);
/**
- * Makes the chain relationship between two transits.
+ * @brief Makes the chain relationship between two transits.
*
- * @note @p transit can not be NULL. Transit would have multiple chain transits.
- * @note @p chain_transit can not be NULL. Chain transits could be chained to the only one transit.
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @param chain_transit The chain transit object. This transit will be operated
- * after transit is done.
+ * @remarks This function adds the @a chain_transit transition to a chain after the @a
+ * transit, and is started as soon as @a transit ends.
*
- * This function adds @p chain_transit transition to a chain after the @p
- * transit, and will be started as soon as @p transit ends. See @ref
- * transit_example_02_explained for a full example.
+ * @remarks @a transit cannot be @c NULL. Transit would have multiple chain transits.
+ * @remarks @p chain_transit cannot be @c NULL. Chain transits could be chained to only one transit.
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @param[in] chain_transit The chain transit object \n
+ * This transit is operated after transit is done.
*/
EAPI void elm_transit_chain_transit_add(Elm_Transit *transit, Elm_Transit *chain_transit);
/**
- * Cut off the chain relationship between two transits.
+ * @brief Cuts off the chain relationship between two transits.
*
- * @note @p transit can not be NULL. Transit would have the chain relationship with @p chain transit.
- * @note @p chain_transit can not be NULL. Chain transits should be chained to the @p transit.
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @param chain_transit The chain transit object.
+ * @remarks This function removes the @a chain_transit transition from the @a transit.
*
- * This function remove the @p chain_transit transition from the @p transit.
+ * @remarks @a transit cannot be @c NULL. Transit would have a chain relationship with @a chain transit.
+ * @remarks @a chain_transit cannot be @c NULL. Chain transits should be chained to the @a transit.
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @param[in] chain_transit The chain transit object
*/
EAPI void elm_transit_chain_transit_del(Elm_Transit *transit, Elm_Transit *chain_transit);
/**
- * Get the current chain transit list.
+ * @brief Gets the current chain transit list.
*
- * @note @p transit can not be NULL.
+ * @since_tizen 2.3
*
- * @param transit The transit object.
- * @return chain transit list.
+ * @remarks @a transit cannot be @c NULL.
*
- * @ingroup Transit
+ * @param[in] transit The transit object
+ * @return The chain transit list
*/
EAPI Eina_List *elm_transit_chain_transits_get(const Elm_Transit *transit);
/**
- * Set the smooth effect for a transit.
- *
- * @param transit The transit object
- * @param enabled enable or disable smooth map rendering
+ * @brief Sets the smooth effect for a transit.
*
- * This sets smoothing for transit map rendering. If the object added in a
- * transit is a type that has its own smoothing settings, then both the smooth
- * settings for this object and the map must be turned off. By default smooth
- * maps are enabled.
+ * @details This sets smoothing for transit map rendering. If the object added in a
+ * transit is of a type that has its own smoothing settings, then both the smooth
+ * settings for this object and the map must be turned off. By default, smooth
+ * maps are enabled.
*
- * @see evas_map_smooth_set()
* @since 1.8
*
- * @ingroup Transit
+ * @since_tizen 2.3
+ *
+ * @param[in] transit The transit object
+ * @param[in] smooth enabled The boolean value that enables or disables smooth map rendering
+ *
+ * @see evas_map_smooth_set()
*/
-EAPI void elm_transit_smooth_set(Elm_Transit *transit, Eina_Bool enabled);
+EAPI void elm_transit_smooth_set(Elm_Transit *transit, Eina_Bool smooth);
/**
- * Get the smooth scaling for transit map rendering
+ * @brief Gets smooth scaling for transit map rendering.
+ *
+ * @details This gets smooth scaling for transit map rendering.
+ *
+ * @since 1.8
*
- * This gets smooth scaling for transit map rendering.
+ * @since_tizen 2.3
*
- * @param transit The transit object
- * @return @c EINA_TRUE if the smooth is enabled, @c EINA_FALSE otherwise.
+ * @param[in] transit The transit object
+ * @return @c EINA_TRUE if smooth scaling is enabled, otherwise @c EINA_FALSE
*
* @see elm_transit_smooth_set()
- * @since 1.8
*
*/
Eina_Bool elm_transit_smooth_get(const Elm_Transit *transit);
/**
- * Add the Resizing Effect to Elm_Transit.
+ * @brief Adds the resizing effect to Elm_Transit.
*
- * @note This API is one of the facades. It creates resizing effect context
- * and add it's required APIs to elm_transit_effect_add.
+ * @since_tizen 2.3
*
- * @see elm_transit_effect_add()
+ * @remarks This API is one of the facades. It creates resizing effect context
+ * and adds its required APIs to elm_transit_effect_add().
*
- * @param transit Transit object.
- * @param from_w Object width size when effect begins.
- * @param from_h Object height size when effect begins.
- * @param to_w Object width size when effect ends.
- * @param to_h Object height size when effect ends.
- * @return Resizing effect context data.
+ * @param[in] transit The transit object
+ * @param[in] from_w The object width size when the effect begins
+ * @param[in] from_h The object height size when the effect begins
+ * @param[in] to_w The object width size when the effect ends
+ * @param[in] to_h The object height size when the effect ends
+ * @return The resizing effect context data
*
- * @ingroup Transit
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_resizing_add(Elm_Transit *transit, Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h);
/**
- * Add the Translation Effect to Elm_Transit.
+ * @brief Adds the translation effect to Elm_Transit.
*
- * @note This API is one of the facades. It creates translation effect context
- * and add it's required APIs to elm_transit_effect_add.
+ * @since_tizen 2.3
*
- * @see elm_transit_effect_add()
+ * @remarks This API is one of the facades. It creates translation effect context
+ * and adds its required APIs to elm_transit_effect_add().
+ *
+ * @remarks It is highly recommended to just create a transit with this effect when
+ * the window to which the objects of the transit belong has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window is not created yet, it can get wrong information.
*
- * @param transit Transit object.
- * @param from_dx X Position variation when effect begins.
- * @param from_dy Y Position variation when effect begins.
- * @param to_dx X Position variation when effect ends.
- * @param to_dy Y Position variation when effect ends.
- * @return Translation effect context data.
+ * @param[in] transit The transit object
+ * @param[in] from_dx The x position variation when the effect begins
+ * @param[in] from_dy The y position variation when the effect begins
+ * @param[in] to_dx The x position variation when the effect ends
+ * @param[in] to_dy The y position variation when the effect ends
+ * @return The translation effect context data
*
- * @ingroup Transit
- * @warning It is highly recommended just create a transit with this effect when
- * the window that the objects of the transit belongs has already been created.
- * This is because this effect needs the geometry information about the objects,
- * and if the window was not created yet, it can get a wrong information.
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_translation_add(Elm_Transit *transit, Evas_Coord from_dx, Evas_Coord from_dy, Evas_Coord to_dx, Evas_Coord to_dy);
/**
- * Add the Zoom Effect to Elm_Transit.
+ * @brief Adds the zoom effect to Elm_Transit.
*
- * @note This API is one of the facades. It creates zoom effect context
- * and add it's required APIs to elm_transit_effect_add.
+ * @since_tizen 2.3
*
- * @see elm_transit_effect_add()
+ * @remarks This API is one of the facades. It creates zoom effect context
+ * and adds its required APIs to elm_transit_effect_add().
*
- * @param transit Transit object.
- * @param from_rate Scale rate when effect begins (1 is current rate).
- * @param to_rate Scale rate when effect ends.
- * @return Zoom effect context data.
+ * @remarks It is highly recommended to just create a transit with this effect when
+ * the window to which the objects of the transit belong has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window is not created yet, it can get wrong information.
*
- * @ingroup Transit
- * @warning It is highly recommended just create a transit with this effect when
- * the window that the objects of the transit belongs has already been created.
- * This is because this effect needs the geometry information about the objects,
- * and if the window was not created yet, it can get a wrong information.
+ * @param[in] transit The transit object
+ * @param[in] from_rate The scale rate when the effect begins (@c 1 is the current rate)
+ * @param[in] to_rate The scale rate when the effect ends
+ * @return The zoom effect context data
+ *
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_zoom_add(Elm_Transit *transit, float from_rate, float to_rate);
/**
- * Add the Flip Effect to Elm_Transit.
+ * @brief Adds the flip effect to Elm_Transit.
*
- * @note This API is one of the facades. It creates flip effect context
- * and add it's required APIs to elm_transit_effect_add.
- * @note This effect is applied to each pair of objects in the order they are listed
- * in the transit list of objects. The first object in the pair will be the
- * "front" object and the second will be the "back" object.
+ * @since_tizen 2.3
*
- * @see elm_transit_effect_add()
+ * @remarks This API is one of the facades. It creates flip effect context
+ * and adds its required APIs to elm_transit_effect_add().
+ * @remarks This effect is applied to each pair of objects in the order they are listed
+ * in the transit list of objects. The first object in the pair is the
+ * "front" object and the second is the "back" object.
+ *
+ * @remarks It is highly recommended to just create a transit with this effect when
+ * the window to which the objects of the transit belong has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window is not created yet, it can get wrong information.
*
- * @param transit Transit object.
- * @param axis Flipping Axis(X or Y).
- * @param cw Flipping Direction. @c EINA_TRUE is clock-wise.
- * @return Flip effect context data.
+ * @param[in] transit The transit object
+ * @param[in] axis The flipping axis(x or y)
+ * @param[in] cw The flipping direction \n
+ * @c EINA_TRUE is clock-wise.
+ * @return The flip effect context data
*
- * @ingroup Transit
- * @warning It is highly recommended just create a transit with this effect when
- * the window that the objects of the transit belongs has already been created.
- * This is because this effect needs the geometry information about the objects,
- * and if the window was not created yet, it can get a wrong information.
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_flip_add(Elm_Transit *transit, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw);
/**
- * Add the Resizeable Flip Effect to Elm_Transit.
+ * @brief Adds the resizeable flip effect to Elm_Transit.
*
- * @note This API is one of the facades. It creates resizable flip effect context
- * and add it's required APIs to elm_transit_effect_add.
- * @note This effect is applied to each pair of objects in the order they are listed
- * in the transit list of objects. The first object in the pair will be the
- * "front" object and the second will be the "back" object.
+ * @since_tizen 2.3
*
- * @see elm_transit_effect_add()
+ * @remarks This API is one of the facades. It creates resizable flip effect context
+ * and adds its required APIs to elm_transit_effect_add().
+ * @remarks This effect is applied to each pair of objects in the order they are listed
+ * in the transit list of objects. The first object in the pair is the
+ * "front" object and the second is the "back" object.
+ *
+ * @remarks It is highly recommended to just create a transit with this effect when
+ * the window to which the objects of the transit belong has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window is not created yet, it can get wrong information.
*
- * @param transit Transit object.
- * @param axis Flipping Axis(X or Y).
- * @param cw Flipping Direction. @c EINA_TRUE is clock-wise.
- * @return Resizeable flip effect context data.
+ * @param[in] transit The transit object
+ * @param[in] axis The flipping axis(x or y)
+ * @param[in] cw The flipping direction \n
+ * @c EINA_TRUE is clock-wise.
+ * @return The resizeable flip effect context data
*
- * @ingroup Transit
- * @warning It is highly recommended just create a transit with this effect when
- * the window that the objects of the transit belongs has already been created.
- * This is because this effect needs the geometry information about the objects,
- * and if the window was not created yet, it can get a wrong information.
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_resizable_flip_add(Elm_Transit *transit, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw);
/**
- * Add the Wipe Effect to Elm_Transit.
+ * @brief Adds the wipe effect to Elm_Transit.
*
- * @note This API is one of the facades. It creates wipe effect context
- * and add it's required APIs to elm_transit_effect_add.
+ * @since_tizen 2.3
*
- * @see elm_transit_effect_add()
+ * @remarks This API is one of the facades. It creates wipe effect context
+ * and adds its required APIs to elm_transit_effect_add().
*
- * @param transit Transit object.
- * @param type Wipe type. Hide or show.
- * @param dir Wipe Direction.
- * @return Wipe effect context data.
+ * @remarks It is highly recommended to just create a transit with this effect when
+ * the window to which the objects of the transit belong has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window is not created yet, it can get wrong information.
*
- * @ingroup Transit
- * @warning It is highly recommended just create a transit with this effect when
- * the window that the objects of the transit belongs has already been created.
- * This is because this effect needs the geometry information about the objects,
- * and if the window was not created yet, it can get a wrong information.
+ * @param[in] transit The transit object
+ * @param[in] type The wipe type which is either hide or show
+ * @param[in] dir The wipe direction
+ * @return The wipe effect context data
+ *
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_wipe_add(Elm_Transit *transit, Elm_Transit_Effect_Wipe_Type type, Elm_Transit_Effect_Wipe_Dir dir);
/**
- * Add the Color Effect to Elm_Transit.
+ * @brief Adds the color effect to Elm_Transit.
*
- * @note This API is one of the facades. It creates color effect context
- * and add it's required APIs to elm_transit_effect_add.
+ * @since_tizen 2.3
+ *
+ * @remarks This API is one of the facades. It creates color effect context
+ * and adds its required APIs to elm_transit_effect_add().
*
- * @see elm_transit_effect_add()
*
- * @param transit Transit object.
- * @param from_r RGB R when effect begins.
- * @param from_g RGB G when effect begins.
- * @param from_b RGB B when effect begins.
- * @param from_a RGB A when effect begins.
- * @param to_r RGB R when effect ends.
- * @param to_g RGB G when effect ends.
- * @param to_b RGB B when effect ends.
- * @param to_a RGB A when effect ends.
- * @return Color effect context data.
+ * @param[in] transit The transit object
+ * @param[in] from_r The RGB from R when the effect begins
+ * @param[in] from_g The RGB from G when the effect begins
+ * @param[in] from_b The RGB from B when the effect begins
+ * @param[in] from_a The RGB from A when the effect begins
+ * @param[in] to_r The RGB to R when the effect ends
+ * @param[in] to_g The RGB to G when the effect ends
+ * @param[in] to_b The RGB to B when the effect ends
+ * @param[in] to_a The RGB to A when the effect ends
+ * @return The color effect context data
*
- * @ingroup Transit
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_color_add(Elm_Transit *transit, unsigned int from_r, unsigned int from_g, unsigned int from_b, unsigned int from_a, unsigned int to_r, unsigned int to_g, unsigned int to_b, unsigned int to_a);
/**
- * Add the Fade Effect to Elm_Transit.
+ * @brief Adds the fade effect to Elm_Transit.
*
- * @note This API is one of the facades. It creates fade effect context
- * and add it's required APIs to elm_transit_effect_add.
- * @note This effect is applied to each pair of objects in the order they are listed
- * in the transit list of objects. The first object in the pair will be the
- * "before" object and the second will be the "after" object.
+ * @since_tizen 2.3
*
- * @see elm_transit_effect_add()
+ * @remarks This API is one of the facades. It creates fade effect context
+ * and adds its required APIs to elm_transit_effect_add().
+ * @remarks This effect is applied to each pair of objects in the order they are listed
+ * in the transit list of objects. The first object in the pair is the
+ * "before" object and the second is the "after" object.
+ *
+ * @remarks It is highly recommended to just create a transit with this effect when
+ * the window to which the objects of the transit belong has already been created.
+ * This is because this effect needs the color information about the objects,
+ * and if the window is not created yet, it can get wrong information.
*
- * @param transit Transit object.
- * @return Fade effect context data.
+ * @param[in] transit The transit object
+ * @return The fade effect context data
*
- * @ingroup Transit
- * @warning It is highly recommended just create a transit with this effect when
- * the window that the objects of the transit belongs has already been created.
- * This is because this effect needs the color information about the objects,
- * and if the window was not created yet, it can get a wrong information.
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_fade_add(Elm_Transit *transit);
/**
- * Add the Blend Effect to Elm_Transit.
+ * @brief Adds the blend effect to Elm_Transit.
*
- * @note This API is one of the facades. It creates blend effect context
- * and add it's required APIs to elm_transit_effect_add.
- * @note This effect is applied to each pair of objects in the order they are listed
- * in the transit list of objects. The first object in the pair will be the
- * "before" object and the second will be the "after" object.
+ * @since_tizen 2.3
*
- * @see elm_transit_effect_add()
+ * @remarks This API is one of the facades. It creates blend effect context
+ * and adds its required APIs to elm_transit_effect_add().
+ * @remarks This effect is applied to each pair of objects in the order they are listed
+ * in the transit list of objects. The first object in the pair is the
+ * "before" object and the second is the "after" object.
*
- * @param transit Transit object.
- * @return Blend effect context data.
+ * @remarks It is highly recommended to just create a transit with this effect when
+ * the window that the objects of the transit belongs has already been created.
+ * This is because this effect needs the color information about the objects,
+ * and if the window is not created yet, it can get wrong information.
*
- * @ingroup Transit
- * @warning It is highly recommended just create a transit with this effect when
- * the window that the objects of the transit belongs has already been created.
- * This is because this effect needs the color information about the objects,
- * and if the window was not created yet, it can get a wrong information.
+ * @param[in] transit The transit object
+ * @return The blend effect context data
+ *
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_blend_add(Elm_Transit *transit);
/**
- * Add the Rotation Effect to Elm_Transit.
+ * @brief Adds the rotation effect to Elm_Transit.
*
- * @note This API is one of the facades. It creates rotation effect context
- * and add it's required APIs to elm_transit_effect_add.
+ * @since_tizen 2.3
*
- * @see elm_transit_effect_add()
+ * @remarks This API is one of the facades. It creates rotation effect context
+ * and adds its required APIs to elm_transit_effect_add().
+ *
+ * @remarks It is highly recommended to just create a transit with this effect when
+ * the window to which the objects of the transit belong has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window is not created yet, it can get wrong information.
*
- * @param transit Transit object.
- * @param from_degree Degree when effect begins.
- * @param to_degree Degree when effect is ends.
- * @return Rotation effect context data.
+ * @param[in] transit The transit object
+ * @param[in] from_degree The degree when the effect begins
+ * @param[in] to_degree The degree when the effect is ends
+ * @return The rotation effect context data
*
- * @ingroup Transit
- * @warning It is highly recommended just create a transit with this effect when
- * the window that the objects of the transit belongs has already been created.
- * This is because this effect needs the geometry information about the objects,
- * and if the window was not created yet, it can get a wrong information.
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_rotation_add(Elm_Transit *transit, float from_degree, float to_degree);
/**
- * Add the ImageAnimation Effect to Elm_Transit.
+ * @brief Adds the image animation effect to Elm_Transit.
+ *
+ * @since_tizen 2.3
*
- * @note This API is one of the facades. It creates image animation effect context
- * and add it's required APIs to elm_transit_effect_add.
- * The @p images parameter is a list images paths. This list and
- * its contents will be deleted at the end of the effect by
- * elm_transit_effect_image_animation_context_free() function.
+ * @remarks This API is one of the facades. It creates image animation effect context
+ * and adds its required APIs to elm_transit_effect_add.
+ * The @a images parameter is a list images paths. This list and
+ * its contents is deleted at the end of the effect by the
+ * elm_transit_effect_image_animation_context_free() function.
*
* Example:
* @code
@@ -906,17 +938,18 @@ EAPI Elm_Transit_Effect *elm_transit_effect_rotation_add(Elm_Transit *transit
*
* @endcode
*
- * @see elm_transit_effect_add()
*
- * @param transit Transit object.
- * @param images Eina_List of images file paths. This list and
- * its contents will be deleted at the end of the effect by
- * elm_transit_effect_image_animation_context_free() function.
- * @return Image Animation effect context data.
+ * @param[in] transit The transit object
+ * @param[in] images The Eina_List of images file paths \n
+ * This list and its contents are deleted at the end of the effect by the
+ * elm_transit_effect_image_animation_context_free() function.
+ *
+ * @return The image animation effect context data
*
- * @ingroup Transit
+ * @see elm_transit_effect_add()
*/
EAPI Elm_Transit_Effect *elm_transit_effect_image_animation_add(Elm_Transit *transit, Eina_List *images);
+
/**
* @}
*/
diff --git a/src/lib/elm_video.h b/src/lib/elm_video.h
index 31a8dbd4c..748a6bd96 100644
--- a/src/lib/elm_video.h
+++ b/src/lib/elm_video.h
@@ -1,9 +1,7 @@
/**
+ * @internal
* @defgroup Video Video
- * @ingroup Elementary
- *
- * @addtogroup Video
- * @{
+ * @ingroup elm_widget_group
*
* @image html video_inheritance_tree.png
* @image latex video_inheritance_tree.eps
@@ -11,55 +9,219 @@
* @image html player_inheritance_tree.png
* @image latex player_inheritance_tree.eps
*
- * Elementary comes with two object that help design application that need
- * to display video.
+ * @brief This widget can display a video by using Emotion.
+ *
+ * Elementary comes with two objects that help design applications that need
+ * to display a video.
*
- * The first one, Elm_Video, display a video by using Emotion.
- * It embeds the video inside an Edje object, so you can do some
+ * The first one, Elm_Video, displays a video by using Emotion.
+ * It embeds the video inside an Edje object, so that you can do some
* animation depending on the video state change. It also implements a
* resource management policy to remove this burden from the application.
*
* The second one,
- * Elm_Player is a video player that need to be linked with an Elm_Video.
- * It take care of updating its content according to Emotion event and provide a
+ * Elm_Player is a video player that needs to be linked with an Elm_Video.
+ * It takes care of updating its content according to the Emotion event and provides a
* way to theme itself. It also automatically raises the priority of the
- * linked Elm_Video so it will use the video decoder, if available. It also
+ * linked Elm_Video so it uses the video decoder, if available. It also
* activates the "remember" function on the linked Elm_Video object.
*
* Both widgets inherit from the @ref Layout one, so that all the
* functions acting on it also work for video objects.
*
- * This widget emits the following signals, besides the ones sent from
- * @ref Layout:
- * @li @c "focused" : When the video has received focus. (since 1.8)
- * @li @c "unfocused" : When the video has lost focus. (since 1.8)
- *
* The player widget emits the following signals, besides the ones
- * sent from @ref Layout:
- * - @c "forward,clicked" - the user clicked the forward button.
- * - @c "info,clicked" - the user clicked the info button.
- * - @c "next,clicked" - the user clicked the next button.
- * - @c "pause,clicked" - the user clicked the pause button.
- * - @c "play,clicked" - the user clicked the play button.
- * - @c "prev,clicked" - the user clicked the prev button.
- * - @c "rewind,clicked" - the user clicked the rewind button.
- * - @c "stop,clicked" - the user clicked the stop button.
+ * sent from @ref Layout :
+ * - @c "forward,clicked" - The user clicked the forward button.
+ * - @c "info,clicked" - The user clicked the info button.
+ * - @c "next,clicked" - The user clicked the next button.
+ * - @c "pause,clicked" - The user clicked the pause button.
+ * - @c "play,clicked" - The user clicked the play button.
+ * - @c "prev,clicked" - The user clicked the prev button.
+ * - @c "rewind,clicked" - The user clicked the rewind button.
+ * - @c "stop,clicked" - The user clicked the stop button.
+ *
+ * The default content parts of the player widget that you can use are:
+ * @li "video" - A video of the player.
+ *
+ * @{
+ */
+
+/**
+ * @brief Adds a new Elm_Player object to the given parent Elementary (container) object.
+ *
+ * @details This function inserts a new player widget on the canvas.
+ *
+ * @param[in] parent The parent object
+ * @return A new player widget handle, otherwise @c NULL in case of an error
+ *
+ * @see elm_object_part_content_set()
+ */
+EAPI Evas_Object *elm_player_add(Evas_Object *parent);
+
+/**
+ * @brief Adds a new Elm_Video object to the given parent Elementary (container) object.
+ *
+ * @details This function inserts a new video widget on the canvas.
+ *
+ * @param[in] parent The parent object
+ * @return A new video widget handle, otherwise @c NULL in case of an error
+ *
+ * @see elm_video_file_set()
+ */
+EAPI Evas_Object *elm_video_add(Evas_Object *parent);
+
+/**
+ * @brief Defines the file or URI that is the video source.
+ *
+ * @details This function explicitly defines a file or URI as a source
+ * for the video of the Elm_Video object.
+ *
+ * @param[in] video The video object to define the file or URI for the video
+ * of the Elm_Video object
+ *
+ * @param[in] filename The file or URI to target
+ * Local files can be specified using file:// or by using full file paths.
+ * URI could be a remote source of video, like http:// or a local source like
+ * WebCam (v4l2://). (You can use Emotion API to request and list
+ * the available Webcam on your system).
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_video_add()
+ * @see elm_player_add()
+ */
+EAPI Eina_Bool elm_video_file_set(Evas_Object *video, const char *filename);
+
+/**
+ * @brief Get the underlying Emotion object.
+ *
+ * @param[in] video The video object to proceed the request on
+ * @return The underlying Emotion object
+ */
+EAPI Evas_Object *elm_video_emotion_get(const Evas_Object *video);
+
+/**
+ * @brief Starts to play the video.
+ *
+ * @details This starts to play the video and cancel the all suspend state.
+ *
+ * @param[in] video The video object to proceed the request on
+ */
+EAPI void elm_video_play(Evas_Object *video);
+
+/**
+ * @brief Pauses the video.
+ *
+ * @details This pauses the video and starts a timer to trigger the suspend mode.
+ *
+ * @param[in] video The video object to proceed the request on
+ */
+EAPI void elm_video_pause(Evas_Object *video);
+
+/**
+ * @brief Stops the video.
+ *
+ * @details This stops the video and puts the emotion in the deep sleep mode.
+ *
+ * @param[in] video The video object to proceed the request on
+ */
+EAPI void elm_video_stop(Evas_Object *video);
+
+/**
+ * @brief Gets whether the video is actually playing.
+ *
+ * @remarks You should consider watching an event on the object instead of polling
+ * the object state.
+ *
+ * @param[in] video The video object to proceed the request on
+ * @return @c EINA_TRUE if the video is actually playing,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_video_is_playing_get(const Evas_Object *video);
+
+/**
+ * @brief Gets whether it is possible to seek inside the video.
*
- * Default content parts of the player widget that you can use for are:
- * @li "video" - A video of the player
+ * @param[in] video The video object to proceed the request on
+ * @return #EINA_TRUE if it is possible to seek inside the video,
+ * otherwise #EINA_FALSE
+ */
+EAPI Eina_Bool elm_video_is_seekable_get(const Evas_Object *video);
+
+/**
+ * @brief Gets whether the audio is muted.
+ *
+ * @param[in] video The video object to proceed the request on
+ * @return The current audio level
+ */
+EAPI double elm_video_audio_level_get(const Evas_Object *video);
+
+/**
+ * @brief Sets the audio level of an Elm_Video object.
+ *
+ * @param[in] video The video object to proceed the request on
+ * @param[in] volume The new audio volume
+ */
+EAPI void elm_video_audio_level_set(Evas_Object *video, double volume);
+
+/**
+ * @brief Gets the current position (in seconds) being played in the
+ * Elm_Video object.
*
+ * @param[in] video The video object
+ * @return The time (in seconds) since the beginning of the media file
*/
+EAPI double elm_video_play_position_get(const Evas_Object *video);
/**
- * ELM_PLAYER_CLASS
+ * @brief Sets the current position (in seconds) to be played in the
+ * Elm_Video object.
+ *
+ * @param[in] video The video object
+ * @param[in] position The time (in seconds) since the beginning of the media file
+ */
+EAPI void elm_video_play_position_set(Evas_Object *video, double position);
+
+/**
+ * @brief Gets the total playing time (in seconds) of the Elm_Video object.
+ *
+ * @param[in] video The video object
+ * @return The total duration (in seconds) of the media file
+ */
+EAPI double elm_video_play_length_get(const Evas_Object *video);
+
+/**
+ * @brief Sets whether the object can remember the last played position.
+ *
+ * @remarks This API only serves as an indication. System support is required.
+ *
+ * @param[in] video The video object
+ * @param[in] remember The boolean value that indicates the last played position of the Elm_Video object
+ */
+EAPI void elm_video_remember_position_set(Evas_Object *video, Eina_Bool remember);
+
+/**
+ * @brief Sets whether the object can remember the last played position.
+ *
+ * @remarks This API only serves as an indication. System support is required.
+ *
+ * @param[in] video The video object
+ * @return The boolean value that indicates whether the object remembers the last played position (@c EINA_TRUE)
+ */
+EAPI Eina_Bool elm_video_remember_position_get(const Evas_Object *video);
+
+/**
+ * @brief Gets the title (for instance DVD title) from this emotion object.
+ *
+ * @remarks This function is only useful when playing a DVD.
+ *
+ * @remarks Don't change or free the string returned by this function.
+ *
+ * @param[in] video The Elm_Video object
+ * @return A string containing the title
*/
+EAPI const char *elm_video_title_get(const Evas_Object *video);
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_video_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_video_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_web.h b/src/lib/elm_web.h
index a64001a1e..66e3bf316 100644
--- a/src/lib/elm_web.h
+++ b/src/lib/elm_web.h
@@ -1,4 +1,5 @@
/**
+ * @internal
* @defgroup Web Web
* @ingroup Elementary
*
@@ -14,91 +15,924 @@
*
* Signals that you can add callbacks for are:
* @li "download,request": A file download has been requested. Event info is
- * a pointer to a Elm_Web_Download
- * @li "editorclient,contents,changed": Editor client's contents changed
- * @li "editorclient,selection,changed": Editor client's selection changed
+ * a pointer to Elm_Web_Download.
+ * @li "editorclient,contents,changed": Editor client's content changed.
+ * @li "editorclient,selection,changed": Editor client's selection changed.
* @li "frame,created": A new frame was created. Event info is an
- * Evas_Object which can be handled with WebKit's ewk_frame API
- * @li "icon,received": An icon was received by the main frame
- * @li "inputmethod,changed": Input method changed. Event info is an
- * Eina_Bool indicating whether it's enabled or not
- * @li "js,windowobject,clear": JS window object has been cleared
+ * Evas_Object that can be handled with the WebKit's ewk_frame API.
+ * @li "icon,received": An icon is received by the main frame.
+ * @li "inputmethod,changed": The input method has changed. Event info is an
+ * Eina_Bool indicating whether it's enabled or not.
+ * @li "js,windowobject,clear": JS window object has been cleared.
* @li "link,hover,in": Mouse cursor is hovering over a link. Event info
- * is a char *link[2], where the first string contains the URL the link
- * points to, and the second one the title of the link
- * @li "link,hover,out": Mouse cursor left the link
- * @li "load,document,finished": Loading of a document finished. Event info
- * is the frame that finished loading
- * @li "load,error": Load failed. Event info is a pointer to
- * Elm_Web_Frame_Load_Error
- * @li "load,finished": Load finished. Event info is NULL on success, on
- * error it's a pointer to Elm_Web_Frame_Load_Error
- * @li "load,newwindow,show": A new window was created and is ready to be
- * shown
+ * is a char *link[2], where the first string contains the URL that the link
+ * points to, and the second one is the title of the link.
+ * @li "link,hover,out": Mouse cursor has left the link.
+ * @li "load,document,finished": Loading of a document has finished. Event info
+ * is the frame that finished loading.
+ * @li "load,error": Loading failed. Event info is a pointer to
+ * Elm_Web_Frame_Load_Error.
+ * @li "load,finished": Loading finished. Event info is @c NULL on success, on
+ * error it's a pointer to Elm_Web_Frame_Load_Error.
+ * @li "load,newwindow,show": A new window is created and is ready to be
+ * shown.
* @li "load,progress": Overall load progress. Event info is a pointer to
- * a double containing a value between 0.0 and 1.0
- * @li "load,provisional": Started provisional load
- * @li "load,started": Loading of a document started
+ * a double containing a value between @c 0.0 and @c 1.0.
+ * @li "load,provisional": Started provisional load.
+ * @li "load,started": Loading of a document has started.
* @li "menubar,visible,get": Queries if the menubar is visible. Event info
* is a pointer to Eina_Bool where the callback should set @c EINA_TRUE if
- * the menubar is visible, or @c EINA_FALSE in case it's not
+ * the menubar is visible, or @c EINA_FALSE in case it's not.
* @li "menubar,visible,set": Informs menubar visibility. Event info is
- * an Eina_Bool indicating the visibility
- * @li "popup,created": A dropdown widget was activated, requesting its
- * popup menu to be created. Event info is a pointer to Elm_Web_Menu
+ * an Eina_Bool indicating the visibility.
+ * @li "popup,created": A dropdown widget is activated, requesting its
+ * popup menu to be created. Event info is a pointer to Elm_Web_Menu.
* @li "popup,willdelete": The web object is ready to destroy the popup
- * object created. Event info is a pointer to Elm_Web_Menu
- * @li "ready": Page is fully loaded
+ * object created. Event info is a pointer to Elm_Web_Menu.
+ * @li "ready": Page is fully loaded.
* @li "scrollbars,visible,get": Queries visibility of scrollbars. Event
- * info is a pointer to Eina_Bool where the visibility state should be set
+ * info is a pointer to Eina_Bool where the visibility state should be set.
* @li "scrollbars,visible,set": Informs scrollbars visibility. Event info
- * is an Eina_Bool with the visibility state set
- * @li "statusbar,text,set": Text of the statusbar changed. Even info is
- * a string with the new text
+ * is an Eina_Bool with the visibility state set.
+ * @li "statusbar,text,set": Text of the statusbar has changed. Even info is
+ * a string with the new text.
* @li "statusbar,visible,get": Queries visibility of the status bar.
* Event info is a pointer to Eina_Bool where the visibility state should be
* set.
* @li "statusbar,visible,set": Informs statusbar visibility. Event info is
- * an Eina_Bool with the visibility value
- * @li "title,changed": Title of the main frame changed. Event info is a
- * string with the new title
+ * an Eina_Bool with the visibility value.
+ * @li "title,changed": Title of the main frame has changed. Event info is a
+ * string with the new title.
* @li "toolbars,visible,get": Queries visibility of toolbars. Event info
- * is a pointer to Eina_Bool where the visibility state should be set
+ * is a pointer to Eina_Bool where the visibility state should be set.
* @li "toolbars,visible,set": Informs the visibility of toolbars. Event
- * info is an Eina_Bool with the visibility state
- * @li "tooltip,text,set": Show and set text of a tooltip. Event info is
- * a string with the text to show
- * @li "uri,changed": URI of the main frame changed. Event info is a string (deprecated. use "url,changed" instead)
- * @li "url,changed": URL of the main frame changed. Event info is a string
- * with the new URI
- * @li "view,resized": The web object internal's view changed sized
+ * info is an Eina_Bool with the visibility state.
+ * @li "tooltip,text,set": Shows and sets the text of a tooltip. Event info is
+ * a string with the text to show.
+ * @li "uri,changed": URI of the main frame has changed. Event info is a string
+ * with the new URI.
+ * @li "view,resized": The web object's internal view has changed sized
* @li "windows,close,request": A JavaScript request to close the current
- * window was requested
- * @li "zoom,animated,end": Animated zoom finished
- * @li "focused" : When the web has received focus. (since 1.8)
- * @li "unfocused" : When the web has lost focus. (since 1.8)
+ * window has been requested.
+ * @li "zoom,animated,end": Animated zoom has finished.
*
- * available styles:
+ * Available styles:
* - default
*
- * An example of use of web:
+ * @{
+ */
+
+/**
+ * @brief The structure type used to report load errors.
*
- * - @ref web_example_01
- * - @ref web_example_02
+ * @remarks Load errors are reported as signals by elm_web. All the strings are
+ * temporary references and should @b not be used after the signal
+ * callback returns. If it's required, make copies with strdup() or
+ * eina_stringshare_add() (they are not even guaranteed to be
+ * stringshared, so must use eina_stringshare_add() and not
+ * eina_stringshare_ref()).
*/
+typedef struct _Elm_Web_Frame_Load_Error Elm_Web_Frame_Load_Error;
/**
- * @addtogroup Web
- * @{
+ * @brief The structure type used to report load errors.
+ *
+ * @remarks Load errors are reported as signal by elm_web. All the strings are
+ * temporary references and should @b not be used after the signal
+ * callback returns. If it's required, make copies with strdup() or
+ * eina_stringshare_add() (they are not even guaranteed to be
+ * stringshared, so must use eina_stringshare_add() and not
+ * eina_stringshare_ref()).
+ */
+struct _Elm_Web_Frame_Load_Error
+{
+ int code; /**< Numeric error code */
+ Eina_Bool is_cancellation; /**< Error produced by canceling a request */
+ const char *domain; /**< Error domain name */
+ const char *description; /**< Error description (already localized) */
+ const char *failing_url; /**< The URL that failed to load */
+ Evas_Object *frame; /**< Frame object that produced the error */
+};
+
+/**
+ * @brief The possibles types of items in a menu.
+ */
+typedef enum
+{
+ ELM_WEB_MENU_SEPARATOR,
+ ELM_WEB_MENU_GROUP,
+ ELM_WEB_MENU_OPTION
+} Elm_Web_Menu_Item_Type;
+
+/**
+ * @brief The structure type describing the items in a menu.
+ */
+typedef struct _Elm_Web_Menu_Item Elm_Web_Menu_Item;
+
+/**
+ * @brief The structure describing the items in a menu.
+ */
+struct _Elm_Web_Menu_Item
+{
+ const char *text; /**< The text for the item */
+ Elm_Web_Menu_Item_Type type; /**< The type of the item */
+};
+
+/**
+ * @brief The structure type describing the menu of a popup.
+ *
+ * @remarks This structure is passed as the @a event_info for the @c "popup,create"
+ * signal, which is emitted when a dropdown menu is opened. Users wanting
+ * to handle these popups by themselves should listen to this signal and
+ * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
+ * property as @c EINA_FALSE means that the user does not handle the popup
+ * and the default implementation is used.
+ *
+ * @remarks When the popup is ready to be dismissed, a @c "popup,willdelete" signal
+ * is emitted to notify the user that it can destroy any object and
+ * free all data related to it.
+ *
+ * @see elm_web_popup_selected_set()
+ * @see elm_web_popup_destroy()
+ */
+typedef struct _Elm_Web_Menu Elm_Web_Menu;
+
+/**
+ * @internal
+ * @brief The structure type describing the menu of a popup.
+ *
+ * @remarks This structure is passed as the @a event_info for the @c "popup,create"
+ * signal, which is emitted when a dropdown menu is opened. Users wanting
+ * to handle these popups by themselves should listen to this signal and
+ * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
+ * property as @c EINA_FALSE means that the user does not handle the popup
+ * and the default implementation is used.
+ *
+ * @remarks When the popup is ready to be dismissed, a @c "popup,willdelete" signal
+ * is emitted to notify the user that it can destroy any object and
+ * free all data related to it.
+ *
+ * @see elm_web_popup_selected_set()
+ * @see elm_web_popup_destroy()
+ */
+struct _Elm_Web_Menu
+{
+ Eina_List *items; /**< List of #Elm_Web_Menu_Item */
+ int x; /**< The X position of the popup, relative to elm_web object */
+ int y; /**< The Y position of the popup, relative to elm_web object */
+ int width; /**< Width of the popup menu */
+ int height; /**< Height of the popup menu */
+
+ Eina_Bool handled : 1; /**< Set to @c EINA_TRUE by the user to indicate that the popup has been handled and the default implementation should be ignored. Otherwise leave it as @c EINA_FALSE */
+};
+
+typedef struct _Elm_Web_Download Elm_Web_Download;
+struct _Elm_Web_Download
+{
+ const char *url;
+};
+
+/**
+ * @brief Enumeration for the types of zoom levels available.
+ */
+typedef enum
+{
+ ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_web_zoom_set */
+ ELM_WEB_ZOOM_MODE_AUTO_FIT, /**< Zoom until the content fits in the web object */
+ ELM_WEB_ZOOM_MODE_AUTO_FILL, /**< Zoom until the content fills the web object */
+ ELM_WEB_ZOOM_MODE_LAST /**< Sentinel value that indicates the end */
+} Elm_Web_Zoom_Mode;
+
+/**
+ * @brief The structure type that represents an opaque handler containing the features (such as statusbar, menubar, etc)
+ * that are to be set on a newly requested window.
+ */
+typedef struct _Elm_Web_Window_Features Elm_Web_Window_Features;
+
+
+/**
+ * @brief Enumeration that defines the web window features.
+ */
+typedef enum
+{
+ ELM_WEB_WINDOW_FEATURE_TOOLBAR,
+ ELM_WEB_WINDOW_FEATURE_STATUSBAR,
+ ELM_WEB_WINDOW_FEATURE_SCROLLBARS,
+ ELM_WEB_WINDOW_FEATURE_MENUBAR,
+ ELM_WEB_WINDOW_FEATURE_LOCATIONBAR,
+ ELM_WEB_WINDOW_FEATURE_FULLSCREEN
+} Elm_Web_Window_Feature_Flag;
+
+/**
+ * @brief Called for the create_window hook.
+ *
+ * @param[in] data The user data pointer set when setting the hook function
+ * @param[in] obj The elm_web object requesting the new window
+ * @param[in] js If @c EINA_TRUE the request originated from
+ * JavaScript, otherwise @c EINA_FALSE
+ * @param[in] window_features A pointer of #Elm_Web_Window_Features indicating
+ * the features requested for the new window
+ *
+ * @return The @c elm_web widget where the request is loaded \n
+ * That is, if a new window or tab is created, the @c elm_web widget in it should be
+ * returned, and @b NOT the window object \n
+ * Returning @c NULL should cancel the request.
+ *
+ * @see elm_web_window_create_hook_set()
+ */
+typedef Evas_Object *(*Elm_Web_Window_Open)(void *data, Evas_Object *obj, Eina_Bool js, const Elm_Web_Window_Features *window_features);
+
+/**
+ * @brief Called for the JS alert hook.
+ *
+ * @param[in] data The user data pointer set when setting the hook function
+ * @param[in] obj The elm_web object requesting the new window
+ * @param[in] message The message to show in the alert dialog
+ *
+ * @return The object representing the alert dialog
+ * Elm_Web runs a second main loop to handle the dialog and the normal
+ * flow of the application is restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished \n
+ * If the function returns @c NULL the popup is ignored.
+ *
+ * @see elm_web_dialog_alert_hook_set()
+ */
+typedef Evas_Object *(*Elm_Web_Dialog_Alert)(void *data, Evas_Object *obj, const char *message);
+
+/**
+ * @brief Called for the JS confirm hook.
+ *
+ * @param[in] data The user data pointer set when setting the hook function
+ * @param[in] obj The elm_web object requesting the new window
+ * @param[in] message The message to show in the confirm dialog
+ * @param[out] ret The pointer to store the user selection \n
+ * If @c EINA_TRUE the user selected @c OK, otherwise @c EINA_FALSE
+ *
+ * @return The object representing the confirm dialog \n
+ * Elm_Web runs a second main loop to handle the dialog and normal
+ * flow of the application is restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished \n
+ * If the function returns @c NULL the popup is ignored.
+ *
+ * @see elm_web_dialog_confirm_hook_set()
+ */
+typedef Evas_Object *(*Elm_Web_Dialog_Confirm)(void *data, Evas_Object *obj, const char *message, Eina_Bool *ret);
+
+/**
+ * @brief Called for the JS prompt hook.
+ *
+ * @param[in] data The ser data pointer set when setting the hook function
+ * @param[in] obj The elm_web object requesting the new window
+ * @param[in] message The message to show in the prompt dialog
+ * @param[in] def_value The default value to present the user in the entry
+ * @param[in] value The pointer to store the value given by the user \n
+ * Must be a malloc'ed string or @c NULL if the user canceled the popup
+ * @param[out] ret The pointer to store the user selection \n
+ * If @c EINA_TRUE the user selected @c OK, otherwise @c EINA_FALSE
+ *
+ * @return The object representing the prompt dialog \n
+ * Elm_Web runs a second main loop to handle the dialog and normal
+ * flow of the application is restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished \n
+ * If the function returns @c NULL the popup is ignored.
+ *
+ * @see elm_web_dialog_prompt_hook_set()
+ */
+typedef Evas_Object *(*Elm_Web_Dialog_Prompt)(void *data, Evas_Object *obj, const char *message, const char *def_value, const char **value, Eina_Bool *ret);
+
+/**
+ * @brief Called for the JS file selector hook.
+ *
+ * @param[in] data The user data pointer set when setting the hook function
+ * @param[in] obj The elm_web object requesting the new window
+ * @param[in] allows_multiple If @c EINA_TRUE multiple files can be selected
+ * @param[in] accept_types The MIME types that are accepted
+ * @param[out] selected The pointer to store the list of malloc'ed strings
+ * containing the path to each file selected \n
+ * Must be @c NULL if the file dialog is canceled.
+ * @param[out] ret The pointer to store the user selection \n
+ * If @c EINA_TRUE the user selected @c OK, otherwise @c EINA_FALSE
+ *
+ * @return The object representing the file selector dialog \n
+ * Elm_Web runs a second main loop to handle the dialog and normal
+ * flow of the application is restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished \n
+ * If the function returns @c NULL the popup is ignored.
+ *
+ * @see elm_web_dialog_file selector_hook_set()
+ */
+typedef Evas_Object *(*Elm_Web_Dialog_File_Selector)(void *data, Evas_Object *obj, Eina_Bool allows_multiple, Eina_List *accept_types, Eina_List **selected, Eina_Bool *ret);
+
+/**
+ * @brief Called for the JS console message hook.
+ *
+ * @remarks When a console message is added from JavaScript, any set function to the
+ * console message hook is called for the user to handle. There is no
+ * default implementation of this hook.
+ *
+ * @param[in] data The user data pointer set when setting the hook function
+ * @param[in] obj The elm_web object from which the messsage originated
+ * @param[in] message The message sent
+ * @param[in] line_number The line number
+ * @param[in] source_id The source ID
+ *
+ * @see elm_web_console_message_hook_set()
+ */
+typedef void (*Elm_Web_Console_Message)(void *data, Evas_Object *obj, const char *message, unsigned int line_number, const char *source_id);
+
+/**
+ * @brief Adds a new web object to the parent.
+ *
+ * @param[in] parent The parent object
+ * @return The new object, otherwise @c NULL if it cannot be created
+ *
+ * @see elm_web_uri_set()
+ * @see elm_web_webkit_view_get()
+ */
+EAPI Evas_Object *elm_web_add(Evas_Object *parent);
+
+/**
+ * @brief Changes the user agent of elm_web object.
+ *
+ * @param[in] obj The object
+ * @param[in] user_agent The string for the user agent
+ */
+EAPI void elm_web_useragent_set(Evas_Object *obj, const char *user_agent);
+
+/**
+ * @brief Returns the current user agent of elm_web object.
+ *
+ * @param[in] obj The object
+ * @return The user agent string
+ */
+EAPI const char* elm_web_useragent_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets an internal ewk_view object from the web object.
+ *
+ * @remarks Elementary may not provide some low level features of EWebKit,
+ * instead of cluttering the API with proxy methods we opted to
+ * return the internal reference. Be careful using it as it may
+ * interfere with elm_web behavior.
+ *
+ * @param[in] obj The web object
+ * @return The internal ewk_view object, otherwise @c NULL if it does not
+ * exist (Failure to create or Elementary compiled without
+ * ewebkit)
+ *
+ * @see elm_web_add()
+ */
+EAPI Evas_Object *elm_web_webkit_view_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the function to call when a new window is requested.
+ *
+ * @remarks This hook is called when a request to create a new window is
+ * issued from the web page loaded.
+ * There is no default implementation for this feature, so leaving this
+ * unset or passing @c NULL in @a func prevents new windows from
+ * opening.
+ *
+ * @param[in] obj The web object to set the hook function
+ * @param[in] func The hook function to be called when a window is requested
+ * @param[in] data The user data
+ */
+EAPI void elm_web_window_create_hook_set(Evas_Object *obj, Elm_Web_Window_Open func, void *data);
+
+/**
+ * @brief Sets the function to call when an alert dialog is requested.
+ *
+ * @remarks This hook is called when a JavaScript alert dialog is requested.
+ * If no function is set or @c NULL is passed in @a func, the default
+ * implementation takes place.
+ *
+ * @param[in] obj The web object to set the hook function
+ * @param[in] func The callback function to be used
+ * @param[in] data The user data
+ *
+ * @see elm_web_inwin_mode_set()
+ */
+EAPI void elm_web_dialog_alert_hook_set(Evas_Object *obj, Elm_Web_Dialog_Alert func, void *data);
+
+/**
+ * @brief Sets the function to call when an confirm dialog is requested.
+ *
+ * @remarks This hook is called when a JavaScript confirm dialog is requested.
+ * If no function is set or @c NULL is passed in @a func, the default
+ * implementation takes place.
+ *
+ * @param[in] obj The web object to set the hook function
+ * @param[in] func The callback function to be used
+ * @param[in] data The user data
+ *
+ * @see elm_web_inwin_mode_set()
+ */
+EAPI void elm_web_dialog_confirm_hook_set(Evas_Object *obj, Elm_Web_Dialog_Confirm func, void *data);
+
+/**
+ * @brief Sets the function to call when an prompt dialog is requested.
+ *
+ * @remarks This hook is called when a JavaScript prompt dialog is requested.
+ * If no function is set or @c NULL is passed in @a func, the default
+ * implementation takes place.
+ *
+ * @param[in] obj The web object to set the hook function
+ * @param[in] func The callback function to be used
+ * @param[in] data The user data
+ *
+ * @see elm_web_inwin_mode_set()
+ */
+EAPI void elm_web_dialog_prompt_hook_set(Evas_Object *obj, Elm_Web_Dialog_Prompt func, void *data);
+
+/**
+ * @brief Sets the function to call when an file selector dialog is requested.
+ *
+ * @remarks This hook is called when a JavaScript file selector dialog is
+ * requested.
+ * @remarks If no function is set or @c NULL is passed in @a func, the default
+ * implementation takes place.
+ *
+ * @param[in] obj The web object to set the hook function
+ * @param[in] func The callback function to be used
+ * @param[in] data The user data
+ *
+ * @see elm_web_inwin_mode_set()
+ */
+EAPI void elm_web_dialog_file_selector_hook_set(Evas_Object *obj, Elm_Web_Dialog_File_Selector func, void *data);
+
+/**
+ * @brief Sets the function to call when a console message is emitted from JS.
+ *
+ * @remarks This hook is called when a console message is emitted from
+ * JavaScript. There is no default implementation for this feature.
+ *
+ * @param[in] obj The web object to set the hook function
+ * @param[in] func The callback function to be used
+ * @param[in] data The user data
+ */
+EAPI void elm_web_console_message_hook_set(Evas_Object *obj, Elm_Web_Console_Message func, void *data);
+
+/**
+ * @brief Gets the status of the tab propagation.
+ *
+ * @param[in] obj The web object to query
+ * @return @c EINA_TRUE if tab propagation is enabled, otherwise @c EINA_FALSE
+ *
+ * @see elm_web_tab_propagate_set()
+ */
+EAPI Eina_Bool elm_web_tab_propagate_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether to use tab propagation.
+ *
+ * @remarks If tab propagation is enabled, whenever the user presses the Tab key,
+ * Elementary handles it and switches the focus to the next widget.
+ * The default value is disabled, where WebKit handles the Tab key to
+ * cycle focus through its internal objects and jumping to the next widget
+ * only when that cycle ends.
+ *
+ * @param[in] obj The web object
+ * @param[in] propagate The boolean value that indicates whether to propagate Tab keys to Elementary
+ */
+EAPI void elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool propagate);
+
+/**
+ * @brief Sets the URI for the web object.
+ *
+ * @remarks It must be a full URI, with resource included, in the form
+ * http://www.enlightenment.org or file:///tmp/something.html
+ *
+ * @param[in] obj The web object
+ * @param[in] uri The URI to set
+ * @return @c EINA_TRUE if the URI could be set, otherwise @c EINA_FALSE if an error occurs
+ */
+EAPI Eina_Bool elm_web_uri_set(Evas_Object *obj, const char *uri);
+
+/**
+ * @brief Gets the current URI for the object.
+ *
+ * @remarks The returned string must not be freed and is guaranteed to be
+ * stringshared.
+ *
+ * @param[in] obj The web object
+ * @return A stringshared internal string with the current URI, otherwise @c NULL on
+ * failure
+ */
+EAPI const char *elm_web_uri_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the current title.
+ *
+ * @remarks The returned string must not be freed and is guaranteed to be
+ * stringshared.
+ *
+ * @param[in] obj The web object
+ * @return A stringshared internal string with the current title, otherwise @c NULL on
+ * failure
+ */
+EAPI const char *elm_web_title_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the background color to be used by the web object.
+ *
+ * @remarks This is the color that is used by default when the loaded page
+ * does not set it's own. Color values are pre-multiplied.
+ *
+ * @param[in] obj The web object
+ * @param[in] r The red component
+ * @param[in] g The green component
+ * @param[in] b The blue component
+ * @param[in] a The alpha component
+ */
+EAPI void elm_web_bg_color_set(Evas_Object *obj, int r, int g, int b, int a);
+
+/**
+ * @brief Gets the background color to be used by the web object.
+ *
+ * @remarks This is the color that is used by default when the loaded page
+ * does not set it's own. Color values are pre-multiplied.
+ *
+ * @param[in] obj The web object
+ * @param[out] r The red component
+ * @param[out] g The green component
+ * @param[out] b The blue component
+ * @param[out] a The alpha component
+ */
+EAPI void elm_web_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a);
+
+/**
+ * @brief Gets a copy of the currently selected text.
+ *
+ * @remarks The string returned must be freed by the user when it's done with it.
+ *
+ * @param[in] obj The web object
+ * @return A newly allocated string, otherwise @c NULL if nothing is selected or an
+ * error occurs
+ */
+EAPI const char *elm_web_selection_get(const Evas_Object *obj);
+
+/**
+ * @brief Tells the web object which index in the currently open popup is selected.
+ *
+ * @remarks When the user handles the popup creation from the @c "popup,created" signal,
+ * it needs to tell the web object which item is selected by calling this
+ * function with the index corresponding to the item.
+ *
+ * @param[in] obj The web object
+ * @param[in] index The index selected
+ *
+ * @see elm_web_popup_destroy()
+ */
+EAPI void elm_web_popup_selected_set(Evas_Object *obj, int index);
+
+/**
+ * @brief Dismisses an open dropdown popup.
+ *
+ * @remarks When the popup from a dropdown widget is to be dismissed, either after
+ * selecting an option or to cancel it, this function must be called, which
+ * later emits a @c "popup,willdelete" signal to notify the user that
+ * any memory and objects related to this popup can be freed.
+ *
+ * @param[in] obj The web object
+ * @return @c EINA_TRUE if the menu is successfully destroyed, otherwise @c EINA_FALSE
+ * if there is no menu to destroy
+ */
+EAPI Eina_Bool elm_web_popup_destroy(Evas_Object *obj);
+
+/**
+ * @brief Searches the given string in a document.
+ *
+ * @param[in] obj The web object to search the text
+ * @param[in] string The string to search
+ * @param[in] case_sensitive The boolean value that indicates whether the search should be case sensitive
+ * @param[in] forward The boolean value that indicates whether the search is from forwards or backwards
+ * @param[in] wrap The boolean value that indicates whether the search should wrap at the end
+ *
+ * @return @c EINA_TRUE if the given string is found, otherwise @c EINA_FALSE if it is not
+ */
+EAPI Eina_Bool elm_web_text_search(const Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
+
+/**
+ * @brief Marks matches of the given string in a document.
+ *
+ * @param[in] obj The web object to search text
+ * @param[in] string The string to match
+ * @param[in] case_sensitive The boolean value that indicates whether the match should be case sensitive
+ * @param[in] highlight The boolean value that indicates whether the matches should be highlighted
+ * @param[in] limit Maximum amount of matches, or zero to unlimited
+ *
+ * @return The number of matched @a string
+ */
+EAPI unsigned int elm_web_text_matches_mark(Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
+
+/**
+ * @brief Clears all marked matches in the document.
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_web_text_matches_unmark_all(Evas_Object *obj);
+
+/**
+ * @brief Sets whether to highlight the matched marks.
+ *
+ * @remarks If enabled, marks set with elm_web_text_matches_mark() and
+ * highlights it.
+ *
+ * @param[in] obj The web object
+ * @param[in] highlight The boolean value that indicates whether to highlight the marks
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_web_text_matches_highlight_set(Evas_Object *obj, Eina_Bool highlight);
+
+/**
+ * @brief Gets whether highlighting marks is enabled.
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE indicates that marks are set to be highlighted,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_web_text_matches_highlight_get(const Evas_Object *obj);
+
+/**
+ * @brief Gets the overall loading progress of the page.
+ *
+ * @remarks Returns the estimated loading progress of the page, with a value between
+ * @c 0.0 and @c 1.0. This is an estimated progress accounting for all the frames
+ * included in the page.
+ *
+ * @param[in] obj The web object
+ *
+ * @return A value between @c 0.0 and @c 1.0 indicating the progress, otherwise @c -1.0 on
+ * failure
+ */
+EAPI double elm_web_load_progress_get(const Evas_Object *obj);
+
+/**
+ * @brief Stops loading the current page.
+ *
+ * @remarks Cancels the loading of the current page in the web object. This
+ * causes a @c "load,error" signal to be emitted, with the is_cancellation
+ * flag set to @c EINA_TRUE.
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE if the cancel is successful, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_web_stop(Evas_Object *obj);
+
+/**
+ * @brief Requests a reload of the current document in the object.
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_web_reload(Evas_Object *obj);
+
+/**
+ * @brief Requests a reload of the current document, avoiding any existing caches.
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool elm_web_reload_full(Evas_Object *obj);
+
+/**
+ * @brief Goes back one step in the browsing history.
+ *
+ * @remarks This is equivalent to calling elm_web_object_navigate(obj, -1);
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_web_history_enabled_set()
+ * @see elm_web_back_possible()
+ * @see elm_web_forward()
+ * @see elm_web_navigate()
+ */
+EAPI Eina_Bool elm_web_back(Evas_Object *obj);
+
+/**
+ * @brief Goes forward one step in the browsing history.
+ *
+ * @remarks This is equivalent to calling elm_web_object_navigate(obj, 1);
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on failure
+ *
+ * @see elm_web_history_enabled_set()
+ * @see elm_web_forward_possible_get()
+ * @see elm_web_back()
+ * @see elm_web_navigate()
+ */
+EAPI Eina_Bool elm_web_forward(Evas_Object *obj);
+
+/**
+ * @brief Jumps the given number of steps in the browsing history.
+ *
+ * @remarks The @a steps value can be a negative integer backwards in history, or a
+ * positive to move forward.
+ *
+ * @param[in] obj The web object
+ * @param[in] steps The number of steps to jump
+ *
+ * @return @c EINA_TRUE on success, otherwise @c EINA_FALSE on error or if not enough
+ * history exists to jump the given number of steps
+ *
+ * @see elm_web_history_enabled_set()
+ * @see elm_web_back()
+ * @see elm_web_forward()
+ */
+EAPI Eina_Bool elm_web_navigate(Evas_Object *obj, int steps);
+
+/**
+ * @brief Queries whether it's possible to go back in history.
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE if it's possible to go back in history, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_web_back_possible_get(Evas_Object *obj);
+
+/**
+ * @brief Queries whether it's possible to go forward in history.
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE if it's possible to go forward in history, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_web_forward_possible_get(Evas_Object *obj);
+
+/**
+ * @brief Queries whether it's possible to jump the given number of steps.
+ *
+ * @remarks The @a steps value can be a negative integer backwards in history, or a
+ * positive to move forward.
+ *
+ * @param[in] obj The web object
+ * @param[in] steps The number of steps to check for
+ *
+ * @return @c EINA_TRUE if enough history exists to perform the given jump,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_web_navigate_possible_get(Evas_Object *obj, int steps);
+
+/**
+ * @brief Gets whether browsing history is enabled for the given object.
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE if history is enabled, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_web_history_enabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Enables or disables the browsing history.
+ *
+ * @param[in] obj The web object
+ * @param[in] enabled The boolean value that indicates whether to enable or disable browsing history
+ */
+EAPI void elm_web_history_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @brief Sets the zoom level of the web object.
+ *
+ * @remarks Zoom level matches the Webkit API, so @c 1.0 means normal zoom, with higher
+ * values meaning zoom in and lower meaning zoom out. This function
+ * only affects the zoom level if the mode set with elm_web_zoom_mode_set()
+ * is ::ELM_WEB_ZOOM_MODE_MANUAL.
+ *
+ * @param[in] obj The web object
+ * @param[in] zoom The zoom level to set
+ */
+EAPI void elm_web_zoom_set(Evas_Object *obj, double zoom);
+
+/**
+ * @brief Gets the current zoom level set on the web object.
+ *
+ * @remarks Note that this is the zoom level set on the web object and not that
+ * of the underlying Webkit one. In the ::ELM_WEB_ZOOM_MODE_MANUAL mode,
+ * the two zoom levels should match, but for the other two modes the
+ * Webkit zoom is calculated internally to match the chosen mode without
+ * changing the zoom level set for the web object.
+ *
+ * @param[in] obj The web object
+ *
+ * @return The zoom level set on the object
+ */
+EAPI double elm_web_zoom_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the zoom mode to use.
+ *
+ * @remarks The modes can be any of those defined in ::Elm_Web_Zoom_Mode, except
+ * ::ELM_WEB_ZOOM_MODE_LAST. The default is ::ELM_WEB_ZOOM_MODE_MANUAL.
+ * ::ELM_WEB_ZOOM_MODE_MANUAL means the zoom level is controlled
+ * with the elm_web_zoom_set() function.
+ * ::ELM_WEB_ZOOM_MODE_AUTO_FIT calculates the needed zoom level to
+ * make sure that the entire portion of the web object's content is shown.
+ * ::ELM_WEB_ZOOM_MODE_AUTO_FILL calculates the needed zoom level to
+ * fit the content in the web object's size, without leaving any space
+ * unused.
+ *
+ * @param[in] obj The web object
+ * @param[in] mode The mode to set
+ */
+EAPI void elm_web_zoom_mode_set(Evas_Object *obj, Elm_Web_Zoom_Mode mode);
+
+/**
+ * @brief Gets the currently set zoom mode
+ *
+ * @param[in] obj The web object
+ *
+ * @return The current zoom mode set for the object
+ * or ::ELM_WEB_ZOOM_MODE_LAST on error
+ */
+EAPI Elm_Web_Zoom_Mode elm_web_zoom_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Shows the given region in the web object.
+ *
+ * @param[in] obj The web object
+ * @param[in] x The x coordinate of the region to show
+ * @param[in] y The y coordinate of the region to show
+ * @param[in] w The width of the region to show
+ * @param[in] h The height of the region to show
+ */
+EAPI void elm_web_region_show(Evas_Object *obj, int x, int y, int w, int h);
+
+/**
+ * @brief Brings the region to the visible area.
+ *
+ * @remarks Like elm_web_region_show(), but it animates the scrolling of the object
+ * to show the area.
+ *
+ * @param[in] obj The web object
+ * @param[in] x The x coordinate of the region to show
+ * @param[in] y The y coordinate of the region to show
+ * @param[in] w The width of the region to show
+ * @param[in] h The height of the region to show
+ */
+EAPI void elm_web_region_bring_in(Evas_Object *obj, int x, int y, int w, int h);
+
+/**
+ * @brief Sets the default dialogs to use an Inwin instead of a normal window.
+ *
+ * @remarks If set, then the default implementation for the JavaScript dialogs and
+ * file selector are opened in an Inwin. Otherwise they use a
+ * normal separated window.
+ *
+ * @param[in] obj The web object
+ * @param[in] value If @c EINA_TRUE use Inwin,
+ * otherwise @c EINA_FALSE to use a normal window
+ */
+EAPI void elm_web_inwin_mode_set(Evas_Object *obj, Eina_Bool value);
+
+/**
+ * @brief Gets whether the Inwin mode is set for the current object.
+ *
+ * @param[in] obj The web object
+ *
+ * @return @c EINA_TRUE if the Inwin mode is set, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_web_inwin_mode_get(const Evas_Object *obj);
+
+EAPI void elm_web_window_features_ref(Elm_Web_Window_Features *wf);
+EAPI void elm_web_window_features_unref(Elm_Web_Window_Features *wf);
+
+/**
+ * @brief Gets the boolean properties from Elm_Web_Window_Features
+ * (such as statusbar, menubar, etc) that are on a window.
+ *
+ * @param[in] wf The web window features object
+ * @param[in] flag The web window feature flag whose value is required
+ *
+ * @return @c EINA_TRUE if the flag is set, otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, Elm_Web_Window_Feature_Flag flag);
+
+/**
+ * @brief TODO : Adds documentation.
+ *
+ * @param[in] wf The web window features object
+ * @param[out] x A co-ordinate of the web view window
+ * @param[out] y A co-ordinate of the web view window
+ * @param[out] w A co-ordinate of the web view window
+ * @param[out] h A co-ordinate of the web view window
*/
+EAPI void elm_web_window_features_region_get(const Elm_Web_Window_Features *wf, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
-#include "elm_web_common.h"
-#ifdef EFL_EO_API_SUPPORT
-#include "elm_web_eo.h"
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include "elm_web_legacy.h"
-#endif
/**
* @}
*/
diff --git a/src/lib/elm_win.h b/src/lib/elm_win.h
index cd3d45ebc..f0fcd2e6d 100644
--- a/src/lib/elm_win.h
+++ b/src/lib/elm_win.h
@@ -1,28 +1,20 @@
/**
* @defgroup Win Win
- * @ingroup Elementary
+ * @ingroup elm_widget_group
*
* @image html win_inheritance_tree.png
* @image latex win_inheritance_tree.eps
*
- * @image html img/widget/win/preview-00.png
- * @image latex img/widget/win/preview-00.eps
+ * @brief The window class of Elementary contains functions to manipulate
+ * Windows.
*
- * The window class of Elementary. Contains functions to manipulate
- * windows. The Evas engine used to render the window contents is specified
+ * The Evas engine that is used to render the window contents is specified
* in the system or user elementary config files (whichever is found last),
- * and can be overridden with the ELM_ENGINE environment variable for
+ * and can be overridden by using the ELM_ENGINE environment variable for
* testing. Engines that may be supported (depending on Evas and Ecore-Evas
- * compilation setup and modules actually installed at runtime) are (listed
- * in order of best supported and most likely to be complete and work to
- * lowest quality). Note that ELM_ENGINE is really only needed for special
- * cases and debugging. you should normally use ELM_DISPLAY and ELM_ACCEL
- * environment variables, or core elementary config. ELM_DISPLAY can be set to
- * "x11" or "wl" to indicate the target display system (as on Linux systems
- * you may have both display systems available, so this selects which to use).
- * ELM_ACCEL may also be set to indicate if you want accelerations and which
- * kind to use. see elm_config_accel_preference_set(0 for details on this
- * environment variable values.
+ * compilation setup and modules that are actually installed at runtime) are
+ * (listed in order of best supported and most likely to be complete and work
+ * to lowest quality).
*
* @li "x11", "x", "software-x11", "software_x11" (Software rendering in X11)
* @li "gl", "opengl", "opengl-x11", "opengl_x11" (OpenGL or OpenGL-ES2
@@ -37,28 +29,35 @@
* rendering using SDL as the buffer)
* @li "gdi", "software-gdi", "software_gdi" (Windows WIN32 rendering via
* GDI with software)
+ * @li "dfb", "directfb" (Rendering to a DirectFB window)
+ * @li "x11-8", "x8", "software-8-x11", "software_8_x11" (Rendering in
+ * grayscale using a dedicated 8bit software engine in X11)
+ * @li "x11-16", "x16", "software-16-x11", "software_16_x11" (Rendering in
+ * X11 using a 16bit software engine)
+ * @li "wince-gdi", "software-16-wince-gdi", "software_16_wince_gdi"
+ * (Windows CE rendering via GDI with a 16bit software renderer)
+ * @li "sdl-16", "software-16-sdl", "software_16_sdl" (Rendering to SDL
+ * buffer with a 16bit software renderer)
* @li "ews" (rendering to EWS - Ecore + Evas Single Process Windowing System)
* @li "gl-cocoa", "gl_cocoa", "opengl-cocoa", "opengl_cocoa" (OpenGL rendering in Cocoa)
- * @li "wayland_shm" (Wayland client SHM rendering)
- * @li "wayland_egl" (Wayland client OpenGL/EGL rendering)
- * @li "drm" (Linux drm/kms etc. direct display)
+ * @li "psl1ght" (PS3 rendering using PSL1GHT)
*
* All engines use a simple string to select the engine to render, EXCEPT
* the "shot" engine. This actually encodes the output of the virtual
- * screenshot and how long to delay in the engine string. The engine string
+ * screenshot and the time for which to delay the engine string. The engine string
* is encoded in the following way:
*
* "shot:[delay=XX][:][repeat=DDD][:][file=XX]"
*
- * Where options are separated by a ":" char if more than one option is
- * given, with delay, if provided being the first option and file the last
+ * Where options are separated by a ":" char, if more than one option is
+ * given with delay, if provided being the first option and file the last
* (order is important). The delay specifies how long to wait after the
- * window is shown before doing the virtual "in memory" rendering and then
- * save the output to the file specified by the file option (and then exit).
- * If no delay is given, the default is 0.5 seconds. If no file is given the
- * default output file is "out.png". Repeat option is for continuous
- * capturing screenshots. Repeat range is from 1 to 999 and filename is
- * fixed to "out001.png" Some examples of using the shot engine:
+ * window is displayed before doing the virtual "in memory" rendering and then
+ * saving the output to the file specified by the file option (and then exiting).
+ * If no delay is given, the default value is @c 0.5 seconds. If no file is given the
+ * default output file is "out.png". The repeat option is for continuous
+ * capturing of screenshots. The repeat range is from @c 1 to @c 999 and the filename is
+ * fixed to "out001.png" Some examples of using the shot engine are:
*
* ELM_ENGINE="shot:delay=1.0:repeat=5:file=elm_test.png" elementary_test
* ELM_ENGINE="shot:delay=1.0:file=elm_test.png" elementary_test
@@ -66,47 +65,1885 @@
* ELM_ENGINE="shot:delay=2.0" elementary_test
* ELM_ENGINE="shot:" elementary_test
*
- * Signals that you can add callbacks for are:
+ * Signals for which you can add callbacks are:
*
- * @li "delete,request": the user requested to close the window. See
+ * @li "delete,request": The user requested to close the window. See
* elm_win_autodel_set().
- * @li "focus,in": window got focus (deprecated. use "focused" instead.)
- * @li "focus,out": window lost focus (deprecated. use "unfocused" instead.)
- * @li "moved": window that holds the canvas was moved
- * @li "withdrawn": window is still managed normally but removed from view
- * @li "iconified": window is minimized (perhaps into an icon or taskbar)
- * @li "normal": window is in a normal state (not withdrawn or iconified)
- * @li "stick": window has become sticky (shows on all desktops)
- * @li "unstick": window has stopped being sticky
- * @li "fullscreen": window has become fullscreen
- * @li "unfullscreen": window has stopped being fullscreen
- * @li "maximized": window has been maximized
- * @li "unmaximized": window has stopped being maximized
- * @li "ioerr": there has been a low-level I/O error with the display system
- * @li "indicator,prop,changed": an indicator's property has been changed
- * @li "rotation,changed": window rotation has been changed
- * @li "profile,changed": profile of the window has been changed
- * @li "focused" : When the win has received focus. (since 1.8)
- * @li "unfocused" : When the win has lost focus. (since 1.8)
- *
- * Note that calling evas_object_show() after window contents creation is
- * recommended. It will trigger evas_smart_objects_calculate() and some backend
- * calls directly. For example, XMapWindow is called directly during
- * evas_object_show() in X11 engine.
- *
- * Examples:
- * @li @ref win_example_01
+ * @li "focus,in": The window got focus.
+ * @li "focus,out": The window lost focus.
+ * @li "moved": The window that holds the canvas is moved.
+ * @li "withdrawn": The window is still being managed normally but is removed from the view.
+ * @li "iconified": The window is minimized (perhaps into an icon or a taskbar).
+ * @li "normal": The window is in a normal state (not withdrawn or iconified).
+ * @li "stick": The window has become sticky (shows on all desktops).
+ * @li "unstick": The window has stopped being sticky.
+ * @li "fullscreen": The window has become fullscreen.
+ * @li "unfullscreen": The window has stopped being fullscreen.
+ * @li "maximized": The window has been maximized.
+ * @li "unmaximized": The window has stopped being maximized.
+ * @li "wm,rotation,changed": The rotation of the window has been changed by the Windows Manager.
+ * @li "ioerr": A low-level I/O error has occurred in the display system.
*
* @{
*/
+/**
+ * @brief Enumeration that defines the types of windows that can be created.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks These are hints set on the window so that a running Windows Manager knows
+ * how the window should be handled and/or what kind of decorations it
+ * should have.
+ *
+ * @remarks Currently, only the X11 backed engines use them.
+ */
+typedef enum
+{
+ ELM_WIN_UNKNOWN, /**< Unknown window type */
+ ELM_WIN_BASIC, /**< A normal window. It indicates a normal, top-level
+ window. Almost every window is created with this
+ type */
+ ELM_WIN_DIALOG_BASIC, /**< Used for simple dialog windows */
+ ELM_WIN_DESKTOP, /**< Used for special desktop windows, like a background
+ window holding desktop icons */
+ ELM_WIN_DOCK, /**< The window is used as a dock or panel. Usually would
+ be kept on top of any other window by the Windows
+ Manager */
+ ELM_WIN_TOOLBAR, /**< The window is used to hold a floating toolbar, or
+ something similar */
+ ELM_WIN_MENU, /**< This is similar to #ELM_WIN_TOOLBAR */
+ ELM_WIN_UTILITY, /**< A persistent utility window, like a toolbox or
+ palette */
+ ELM_WIN_SPLASH, /**< A splash window for an application that is starting up */
+ ELM_WIN_DROPDOWN_MENU, /**< The window is a dropdown menu, when an
+ entry in a menubar is clicked. Typically used
+ with elm_win_override_set(). This hint exists
+ for completion only, as the EFL way of
+ implementing a menu would not normally use a
+ separate window for its contents */
+ ELM_WIN_POPUP_MENU, /**< Like #ELM_WIN_DROPDOWN_MENU, but used for the menu
+ triggered by right-clicking an object */
+ ELM_WIN_TOOLTIP, /**< The window is a tooltip. A short piece of
+ explanatory text that typically appears after the
+ mouse cursor hovers over an object for a while.
+ Typically used with elm_win_override_set() and also
+ not very commonly used in EFL */
+ ELM_WIN_NOTIFICATION, /**< A notification window, like a warning about
+ battery life or a new email that is received */
+ ELM_WIN_COMBO, /**< A window holding the contents of a combo box. Not
+ usually used in EFL */
+ ELM_WIN_DND, /**< Used to indicate that the window is a representation of an
+ object being dragged across different windows, or even
+ applications. Typically used with
+ elm_win_override_set() */
+ ELM_WIN_INLINED_IMAGE, /**< The window is rendered onto an image
+ buffer. No actual window is created for this
+ type, instead the window and all of its
+ contents are rendered to an image buffer.
+ This allows to have a children window inside a
+ parent one just like any other object would
+ be, and do other things like applying @c
+ Evas_Map effects to it. This is the only type
+ of window that requires the @a parent
+ parameter of elm_win_add() to be a valid @c
+ Evas_Object */
+ ELM_WIN_SOCKET_IMAGE,/**< The window is rendered onto an image buffer
+ and can be shown another process's plug image object.
+ No actual window is created for this type,
+ instead the window and all of its contents are
+ rendered to an image buffer and can be shown
+ another process's plug image object */
+ // Tizen Only(20131219): Dynamic Box is only supported in the Tizen
+ ELM_WIN_DYNAMIC_BOX,
+} Elm_Win_Type;
+
+/**
+ * @brief Enumeration that defines the different layouts that can be requested for the virtual keyboard.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When the application window is being managed by Illume, it may request
+ * any of the following layouts for the virtual keyboard.
+ */
+typedef enum
+{
+ ELM_WIN_KEYBOARD_UNKNOWN, /**< Unknown keyboard state */
+ ELM_WIN_KEYBOARD_OFF, /**< Request to deactivate the keyboard */
+ ELM_WIN_KEYBOARD_ON, /**< Enable keyboard with default layout */
+ ELM_WIN_KEYBOARD_ALPHA, /**< Alpha (a-z) keyboard layout */
+ ELM_WIN_KEYBOARD_NUMERIC, /**< Numeric keyboard layout */
+ ELM_WIN_KEYBOARD_PIN, /**< PIN keyboard layout */
+ ELM_WIN_KEYBOARD_PHONE_NUMBER, /**< Phone keyboard layout */
+ ELM_WIN_KEYBOARD_HEX, /**< Hexadecimal numeric keyboard layout */
+ ELM_WIN_KEYBOARD_TERMINAL, /**< Full (QWERTY) keyboard layout */
+ ELM_WIN_KEYBOARD_PASSWORD, /**< Password keyboard layout */
+ ELM_WIN_KEYBOARD_IP, /**< IP keyboard layout */
+ ELM_WIN_KEYBOARD_HOST, /**< Host keyboard layout */
+ ELM_WIN_KEYBOARD_FILE, /**< File keyboard layout */
+ ELM_WIN_KEYBOARD_URL, /**< URL keyboard layout */
+ ELM_WIN_KEYBOARD_KEYPAD, /**< Keypad layout */
+ ELM_WIN_KEYBOARD_J2ME /**< J2ME keyboard layout */
+} Elm_Win_Keyboard_Mode;
+
+/**
+ * @brief Enumeration that defines the different indicator states.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks In some environments, like phones, you may have an indicator that
+ * shows the battery status, reception, time etc. This is the indicator.
+ *
+ * @remarks Sometimes you don't want it because you provide the same functionality
+ * inside your app, so this requests that the indicator be hidden in
+ * such a circumstance if you use @c ELM_ILLUME_INDICATOR_HIDE. The default
+ * is to have the indicator shown.
+ */
+typedef enum
+{
+ ELM_WIN_INDICATOR_UNKNOWN, /**< Unknown indicator state */
+ ELM_WIN_INDICATOR_HIDE, /**< Hides the indicator */
+ ELM_WIN_INDICATOR_SHOW /**< Shows the indicator */
+} Elm_Win_Indicator_Mode;
+
+/**
+ * @brief Enumeration that defines the opacity modes of an indicator that can be shown.
+ *
+ * @since_tizen 2.3
+ */
+
+typedef enum
+{
+ ELM_WIN_INDICATOR_OPACITY_UNKNOWN, /**< Unknown indicator opacity mode */
+ ELM_WIN_INDICATOR_OPAQUE, /**< Opacifies the indicator */
+ ELM_WIN_INDICATOR_TRANSLUCENT, /**< Makes the indicator translucent */
+ ELM_WIN_INDICATOR_TRANSPARENT, /**< Transparentizes the indicator */
+ ELM_WIN_INDICATOR_BG_TRANSPARENT /**< Transparentizes the indicator background*/
+} Elm_Win_Indicator_Opacity_Mode;
-#include <elm_win_common.h>
-#ifdef EFL_EO_API_SUPPORT
-#include <elm_win_eo.h>
-#endif
-#ifndef EFL_NOLEGACY_API_SUPPORT
-#include <elm_win_legacy.h>
-#endif
+/**
+ * @brief Enumeration that defines the type modes of an indicator that can be shown.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If the indicator can support several types,
+ * you can use this enum value to deal with different types of indicators.
+ */
+
+typedef enum
+{
+ ELM_WIN_INDICATOR_TYPE_UNKNOWN, /**< Unknown indicator type mode */
+ ELM_WIN_INDICATOR_TYPE_1, /**< Type 0 indicator */
+ ELM_WIN_INDICATOR_TYPE_2, /**< Type 1 indicator */
+} Elm_Win_Indicator_Type_Mode;
+
+/**
+ * @brief Enumeration that defines the available commands that can be sent to the Illume manager.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When running under an Illume session, a window may send commands to the
+ * Illume manager to perform different actions.
+ */
+typedef enum
+{
+ ELM_ILLUME_COMMAND_FOCUS_BACK, /**< Reverts focus to the previous window */
+ ELM_ILLUME_COMMAND_FOCUS_FORWARD, /**< Sends focus to the next window in the list */
+ ELM_ILLUME_COMMAND_FOCUS_HOME, /**< Hides all windows to show the Home screen */
+ ELM_ILLUME_COMMAND_CLOSE, /**< Closes the currently active window */
+} Elm_Illume_Command;
+
+/**
+ * @brief Adds a window object. If this is the first window created, pass @c NULL as
+ * @a parent.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The @a parent parameter can be @c NULL for every window @a type
+ * except @c ELM_WIN_INLINED_IMAGE, which needs a parent to retrieve the
+ * canvas on which the image object is created.
+ *
+ * @param[in] parent The parent object to add the window to, otherwise @c NULL
+ * @param[in] name The name of the window
+ * @param[in] type The window type, one from #Elm_Win_Type
+ *
+ * @return The created object, otherwise @c NULL on failure
+ */
+EAPI Evas_Object *elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type);
+
+/**
+ * @brief Gets the type of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object for which to get the type
+ *
+ * @return The type of a window object \n
+ * If the object is not a window object, return @c -1.
+ */
+EAPI Elm_Win_Type elm_win_type_get(Evas_Object *obj);
+
+/**
+ * @brief Adds a window object with a standard setup.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This creates a window like elm_win_add(), but also puts in a standard
+ * background using elm_bg_add() as well as setting the window title to
+ * @a title. The window type created is of type @c ELM_WIN_BASIC with @c NULL
+ * as the parent widget.
+ *
+ * @param[in] name The name of the window
+ * @param[in] title The title of the window
+ *
+ * @return The created object, otherwise @c NULL on failure
+ *
+ * @see elm_win_add()
+ */
+EAPI Evas_Object *elm_win_util_standard_add(const char *name, const char *title);
+
+/**
+ * @brief Adds @a subobj as a resize object of the window @a obj.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Setting an object as a resize object of the window means that the
+ * @a subobj child's size and position is controlled by the window
+ * directly. That is, the object is resized to match the window size
+ * and should never be moved or resized manually by the developer.
+ *
+ * @remarks In addition, resize objects of the window control the minimum size
+ * of it as well as whether it can or cannot be resized by the user.
+ *
+ * @remarks For the end user to be able to resize a window by dragging the handles
+ * or borders provided by the Windows Manager, or using any other similar
+ * mechanism, all of the resize objects in the window should have their
+ * evas_object_size_hint_weight_set() set to EVAS_HINT_EXPAND.
+ *
+ * @remarks Also notice that the window can get resized to the current size of the
+ * object if EVAS_HINT_EXPAND is set @b after the call to
+ * elm_win_resize_object_add(). So if the object should get resized to the
+ * size of the window, set this hint @b before adding it as a resize object
+ * (this happens because the size of the window and the object are evaluated
+ * as soon as the object is added to the window).
+ *
+ * @param[in] obj The window object
+ * @param[in] subobj The resize object to add
+ */
+EAPI void elm_win_resize_object_add(Evas_Object *obj, Evas_Object *subobj);
+
+/**
+ * @brief Deletes @a subobj as a resize object of the window @a obj.
+ *
+ * @details This function removes the object @a subobj from the resize objects of
+ * the window @a obj. It does not delete the object itself, which is
+ * left unmanaged and should be deleted by the developer, manually handled
+ * or set as the child of some other container.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] subobj The resize object to add
+ */
+EAPI void elm_win_resize_object_del(Evas_Object *obj, Evas_Object *subobj);
+
+/**
+ * @brief Sets the title of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] title The title to set
+ */
+EAPI void elm_win_title_set(Evas_Object *obj, const char *title);
+
+/**
+ * @brief Gets the title of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The returned string is an internal one and should not be freed or
+ * modified. It should also be rendered invalid if a new title is set or if
+ * the window is destroyed.
+ *
+ * @param[in] obj The window object
+ * @return The title
+ */
+EAPI const char *elm_win_title_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the icon name of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] icon_name The icon name to set
+ */
+EAPI void elm_win_icon_name_set(Evas_Object *obj, const char *icon_name);
+
+/**
+ * @brief Gets the icon name of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The returned string is an internal one and should not be freed or
+ * modified. It should also be rendered invalid if a new icon name is set or if
+ * the window is destroyed.
+ *
+ * @param[in] obj The window object
+ * @return The icon name
+ */
+EAPI const char *elm_win_icon_name_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the role of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] role The role to set
+ */
+EAPI void elm_win_role_set(Evas_Object *obj, const char *role);
+
+/**
+ * @brief Gets the role of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The returned string is an internal one and should not be freed or
+ * modified. It should also be rendered invalid if a new role is set or if
+ * the window is destroyed.
+ *
+ * @param[in] obj The window object
+ * @return The role
+ */
+EAPI const char *elm_win_role_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets a window object icon.
+ *
+ * @details This sets an image to be used as the icon for the given window, in
+ * the Windows Manager decoration part. The exact pixel dimensions of
+ * the object (not object size) is used, and the image pixels
+ * are used as-is when this function is called. If the image
+ * object has been updated, then call this function again to source
+ * the image pixels and put them on the window's icon. Note that
+ * <b>only Evas image objects are allowed</b>.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Example of usage:
+ * @code
+ * icon = evas_object_image_add(evas_object_evas_get(elm_window));
+ * evas_object_image_file_set(icon, "/path/to/the/icon", NULL);
+ * elm_win_icon_object_set(elm_window, icon);
+ * evas_object_show(icon);
+ * @endcode
+ *
+ * @param[in] obj The window object used to get an icon
+ * @param[in] icon The Evas image object used as an icon
+ */
+EAPI void elm_win_icon_object_set(Evas_Object *obj, Evas_Object *icon);
+
+/**
+ * @brief Gets the icon object used for the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The object returned is the one marked by elm_win_icon_object_set() as the
+ * object to use for the window icon.
+ *
+ * @param[in] obj The window object
+ * @return The icon object to set
+ */
+EAPI const Evas_Object *elm_win_icon_object_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the window autodel state.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When closing the window in any way outside of the program control, like
+ * pressing the X button in the titlebar or using a command from the
+ * Windows Manager, a @c "delete,request" signal is emitted to indicate that
+ * this event has occurred and the developer can take an action, which may or may not
+ * include destroying the window object.
+ *
+ * @remarks When the @a autodel parameter is set, the window is automatically
+ * destroyed when this event occurs, after the signal is emitted.
+ * If @a autodel is @c EINA_FALSE, then the window is not destroyed
+ * and it is up to the program to decide when to do so if required.
+ *
+ * @param[in] obj The window object
+ * @param[in] autodel If @c true the window automatically deletes itself when closed,
+ * otherwise @c false
+ */
+EAPI void elm_win_autodel_set(Evas_Object *obj, Eina_Bool autodel);
+
+/**
+ * @brief Gets the window autodel state.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window automatically deletes itself when closed,
+ * otherwise @c false
+ *
+ * @see elm_win_autodel_set()
+ */
+EAPI Eina_Bool elm_win_autodel_get(const Evas_Object *obj);
+
+/**
+ * @brief Activates the window object.
+ *
+ * @details This function sends a request to the Windows Manager to activate the
+ * window pointed by @a obj. If honored by the WM, the window receives
+ * the keyboard focus.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This is just a request that a Window Manager may ignore, so calling
+ * this function does not ensure in any way that the window is going to be the
+ * active one after it.
+ *
+ * @param[in] obj The window object
+ */
+EAPI void elm_win_activate(Evas_Object *obj);
+
+/**
+ * @brief Lowers the window object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Places the window pointed by @a obj at the bottom of the stack, so that
+ * no other window is covered by it.
+ *
+ * @remarks If elm_win_override_set() is not set, the Windows Manager may ignore this
+ * request.
+ *
+ * @param[in] obj The window object
+ */
+EAPI void elm_win_lower(Evas_Object *obj);
+
+/**
+ * @brief Raises the window object.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Places the window pointed by @a obj at the top of the stack, so that it's
+ * not covered by any other window.
+ *
+ * @remarks If elm_win_override_set() is not set, the Windows Manager may ignore this
+ * request.
+ *
+ * @param[in] obj The window object
+ */
+EAPI void elm_win_raise(Evas_Object *obj);
+
+/**
+ * @brief Centers a window on its screen.
+ *
+ * @details This function centers a window @a obj horizontally and/or vertically based on the values
+ * of @a h and @a v.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] h If @c true it centers horizontally,
+ * otherwise @c false if it does not change the horizontal location
+ * @param[in] v If @c true it centers vertically,
+ * otherwise @c false if it does not change the vertical location
+ */
+EAPI void elm_win_center(Evas_Object *obj, Eina_Bool h, Eina_Bool v);
+
+/**
+ * @brief Sets the borderless state of a window.
+ *
+ * @details This function requests the Windows Manager to not draw any decoration
+ * around the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] borderless If @c true the window is borderless,
+ * otherwise @c false
+ */
+EAPI void elm_win_borderless_set(Evas_Object *obj, Eina_Bool borderless);
+
+/**
+ * @brief Gets the borderless state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is borderless,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_win_borderless_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the shaped state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Shaped windows, when supported, render the parts of the window that
+ * has no content and is transparent.
+ *
+ * @remarks If @a shaped is @c EINA_FALSE, then it is strongly advised to have some
+ * background object or cover the entire window in any other way, otherwise the
+ * parts of the canvas that have no data show framebuffer artifacts.
+ *
+ * @param[in] obj The window object
+ * @param[in] shaped If @c true the window is shaped,
+ * otherwise @c false
+ *
+ * @see elm_win_alpha_set()
+ */
+EAPI void elm_win_shaped_set(Evas_Object *obj, Eina_Bool shaped);
+
+/**
+ * @brief Gets the shaped state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is shaped,
+ * otherwise @c false
+ *
+ * @see elm_win_shaped_set()
+ */
+EAPI Eina_Bool elm_win_shaped_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the alpha channel state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks If @a alpha is @c EINA_TRUE, the alpha channel of the canvas is enabled
+ * possibly making parts of the window completely or partially transparent.
+ * This is also subject to the underlying system supporting it, like for
+ * example, running under a compositing manager. If no compositing is
+ * available, enabling this option results in using shaped
+ * windows with elm_win_shaped_set().
+ *
+ * @param[in] obj The window object
+ * @param[in] alpha If @c true the window has an alpha channel,
+ * otherwise @c false
+ *
+ * @see elm_win_alpha_set()
+ */
+EAPI void elm_win_alpha_set(Evas_Object *obj, Eina_Bool alpha);
+
+/**
+ * @brief Gets the alpha channel state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window has an alpha channel,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_win_alpha_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the override state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks A window with @a override set to @c EINA_TRUE is not managed by the
+ * Windows Manager. This means that no decorations of any kind are shown
+ * for it, moving and resizing must be handled by the application as well
+ * as the window visibility.
+ *
+ * @remarks This should not be used for normal windows, and even for not so normal
+ * ones, it should only be used with a lot of care and
+ * when there's a good reason. Mishandling override windows may result in situations that
+ * disrupt the normal workflow of the end user.
+ *
+ * @param[in] obj The window object
+ * @param[in] override If @c true the window is overridden,
+ * otherwise @c false
+ */
+EAPI void elm_win_override_set(Evas_Object *obj, Eina_Bool override);
+
+/**
+ * @brief Gets the override state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is overridden,
+ * otherwise @c false
+ *
+ * @see elm_win_override_set()
+ */
+EAPI Eina_Bool elm_win_override_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the fullscreen state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param fullscreen If @c true the window is fullscreen,
+ * otherwise @c false
+ */
+EAPI void elm_win_fullscreen_set(Evas_Object *obj, Eina_Bool fullscreen);
+
+/**
+ * @brief Geta the fullscreen state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is fullscreen,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_win_fullscreen_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the maximized state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] maximized If @c true the window is maximized,
+ * otherwise @c false
+ */
+EAPI void elm_win_maximized_set(Evas_Object *obj, Eina_Bool maximized);
+
+/**
+ * @brief Gets the maximized state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is maximized,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_win_maximized_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the iconified state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] iconified If @c true the window is iconified,
+ * otherwise @c false
+ */
+EAPI void elm_win_iconified_set(Evas_Object *obj, Eina_Bool iconified);
+
+/**
+ * @brief Gets the iconified state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is iconified,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_win_iconified_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the withdrawn state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] withdrawn If @c true the window is withdrawn,
+ * otherwise @c false
+ */
+EAPI void elm_win_withdrawn_set(Evas_Object *obj, Eina_Bool withdrawn);
+
+/**
+ * @brief Gets the withdrawn state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is withdrawn,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_win_withdrawn_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the profile list of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] profiles The list of profile names
+ * @param[in] num_profiles The number of profile names
+ */
+EAPI void elm_win_profiles_set(Evas_Object *obj, const char **profiles, unsigned int num_profiles);
+
+/**
+ * @brief Gets the profile of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The returned string is an internal one and should not be freed or
+ * modified. It is also rendered invalid if a new role is set or if
+ * the window is destroyed.
+ *
+ * @param[in] obj The window object
+ * @return The profile name
+ */
+EAPI const char *elm_win_profile_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the urgent state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] urgent If @c true the window is urgent,
+ * otherwise @c false
+ */
+EAPI void elm_win_urgent_set(Evas_Object *obj, Eina_Bool urgent);
+
+/**
+ * @brief Gets the urgent state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is urgent,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_win_urgent_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the @a demand_attention state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] demand_attention If @c true the window is in the @a demand_attention state,
+ * otherwise @c false
+ */
+EAPI void elm_win_demand_attention_set(Evas_Object *obj, Eina_Bool demand_attention);
+
+/**
+ * @brief Gets the @a demand_attention state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is in the @a demand_attention state,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_win_demand_attention_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the @a modal state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] modal If @c true the window is @a modal,
+ * otherwise @c false
+ */
+EAPI void elm_win_modal_set(Evas_Object *obj, Eina_Bool modal);
+
+/**
+ * @brief Gets the @a modal state of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return If @c true the window is @a modal,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_win_modal_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the aspect ratio of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] aspect If @c 0 the window has no aspect limits,
+ * otherwise it is width divided by height
+ */
+EAPI void elm_win_aspect_set(Evas_Object *obj, double aspect);
+
+/**
+ * @brief Gets the aspect ratio of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The set aspect ratio (@c 0 by default)
+ */
+EAPI double elm_win_aspect_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the base window size used with stepping calculation.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Base size + stepping is what is calculated for window sizing restrictions.
+ *
+ * @param[in] obj The window object
+ * @param[in] w The base width
+ * @param[in] h The base height
+ *
+ * @see elm_win_size_step_set
+ * @see elm_win_size_base_get
+ */
+EAPI void elm_win_size_base_set(Evas_Object *obj, int w, int h);
+
+/**
+ * @brief Gets the base size of a window.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[out] w The pointer that stores the returned base width
+ * @param[out] h The pointer that stores the returned base height
+ *
+ * @see elm_win_size_base_set
+ * @see elm_win_size_step_set
+ */
+EAPI void elm_win_size_base_get(Evas_Object *obj, int *w, int *h);
+
+/**
+ * @brief Sets the window stepping used with sizing calculation.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Base size + stepping is what is calculated for window sizing restrictions.
+ *
+ * @param[in] obj The window object
+ * @param[in] w The stepping width (@c 0 disables)
+ * @param[in] h The stepping height (@c 0 disables)
+ *
+ * @see elm_win_size_step_get
+ * @see elm_win_size_base_set
+ */
+EAPI void elm_win_size_step_set(Evas_Object *obj, int w, int h);
+
+/**
+ * @brief Gets the stepping of a window.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[out] w The pointer that stores the returned stepping width
+ * @param[out] h The pointer that stores the returned stepping height
+ *
+ * @see elm_win_size_base_set
+ * @see elm_win_size_step_set
+ */
+EAPI void elm_win_size_step_get(Evas_Object *obj, int *w, int *h);
+
+/**
+ * @brief Sets the layer of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks What this means exactly depends on the underlying engine used.
+ *
+ * @remarks In case of X11 backed engines, the value in @a layer has one of the
+ * following meanings:
+ * @li < 3: The window is placed below all others.
+ * @li > 5: The window is placed above all others.
+ * @li other: The window is placed in the default layer.
+ *
+ * @param[in] obj The window object
+ * @param[in] layer The layer of the window
+ */
+EAPI void elm_win_layer_set(Evas_Object *obj, int layer);
+
+/**
+ * @brief Gets the layer of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The layer of the window
+ *
+ * @see elm_win_layer_set()
+ */
+EAPI int elm_win_layer_get(const Evas_Object *obj);
+
+/**
+ * @brief Pushes (incriments) the norender counter on the window.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks There are some occasions where you wish to suspend rendering on a window.
+ * You may be "sleeping" and may have nothing to update and do not want animations
+ * or other theme side-effects causing rendering to the window while "asleep".
+ * You can push (and pop) the norender mode to make this work.
+ *
+ * @remarks If combined with evas_render_dump(), evas_image_cache_flush(), and
+ * evas_font_cache_flush() (and maybe edje_file_cache_flush() and
+ * edje_collection_cache_flush()), you can minimize memory footprint
+ * significantly while "asleep", and the pausing of rendering ensures that
+ * evas does not re-load data into memory until needed. When rendering is
+ * resumed, data is re-loaded as needed, which may result in some
+ * lag, but does save memory.
+ *
+ * @param[in] obj The window object
+ *
+ * @see elm_win_norender_pop()
+ * @see elm_win_norender_get()
+ * @see elm_win_render()
+ */
+EAPI void elm_win_norender_push(Evas_Object *obj);
+
+/**
+ * @brief Pops (decrements) the norender counter on the window.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Once norender has gone back to @c 0, automatic rendering continues
+ * in the given window. If it is already at @c 0, this has no effect.
+ *
+ * @param[in] obj The window object
+ *
+ * @see elm_win_norender_push()
+ * @see elm_win_norender_get()
+ * @see elm_win_render()
+ */
+EAPI void elm_win_norender_pop(Evas_Object *obj);
+
+/**
+ * @brief Returns the number of times norender has been pushed on the window.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The number of times norender has been pushed
+ *
+ * @see elm_win_norender_push()
+ * @see elm_win_norender_pop()
+ * @see elm_win_render()
+ */
+EAPI int elm_win_norender_get(Evas_Object *obj);
+
+/**
+ * @brief Manually asks evas to render the window immediately.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks You should NEVER call this unless you really know what you are doing and
+ * why. Never call this unless you are asking for performance degredation
+ * and possibly weird behavior. Windows gets automatically rendered when the
+ * application goes idle so there is never a need to call this UNLESS you
+ * have enabled the "norender" mode.
+ *
+ * @param[in] obj The window object
+ *
+ * @see elm_win_norender_push()
+ * @see elm_win_norender_pop()
+ * @see elm_win_norender_get()
+ */
+EAPI void elm_win_render(Evas_Object *obj);
+
+/**
+ * @brief Sets the rotation of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Most engines only work with multiples of @c 90.
+ *
+ * @remarks This function is used to set the orientation of the window @a obj to
+ * match that of the screen. The window itself is resized to adjust
+ * to the new geometry of its contents. If you want to keep the window size,
+ *
+ * @param[in] obj The window object
+ * @param[in] rotation The rotation of the window, in degrees (0-360),
+ * counter-clockwise
+ *
+ * @see elm_win_rotation_with_resize_set()
+ */
+EAPI void elm_win_rotation_set(Evas_Object *obj, int rotation);
+
+/**
+ * @brief Rotates the window and resizes it.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Like elm_win_rotation_set(), but it also resizes the window's contents so
+ * that they fit inside the current window geometry.
+ *
+ * @param[in] obj The window object
+ * @param[in] rotation The rotation of the window, in degrees (0-360),
+ * counter-clockwise
+ */
+EAPI void elm_win_rotation_with_resize_set(Evas_Object *obj, int rotation);
+
+/**
+ * @brief Gets the rotation of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The rotation of the window in degrees (0-360)
+ *
+ * @see elm_win_rotation_set()
+ * @see elm_win_rotation_with_resize_set()
+ */
+EAPI int elm_win_rotation_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the sticky state of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Hints the Windows Manager that the window in @a obj should be left fixed
+ * at its position even when the virtual desktop that it's on moves or changes.
+ *
+ * @param[in] obj The window object
+ * @param[in] sticky If @c true the window's sticky state is enabled,
+ * otherwise @c false
+ */
+EAPI void elm_win_sticky_set(Evas_Object *obj, Eina_Bool sticky);
+
+/**
+ * @brief Gets the sticky state of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return If @c true the window's sticky state is enabled,
+ * otherwise @c false
+ *
+ * @see elm_win_sticky_set()
+ */
+EAPI Eina_Bool elm_win_sticky_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether this window is an illume conformant window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] conformant The conformant flag (@c 1 = conformant, @c 0 = non-conformant)
+ */
+EAPI void elm_win_conformant_set(Evas_Object *obj, Eina_Bool conformant);
+
+/**
+ * @brief Gets whether this window is an illume conformant window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The boolean value that indicates whether this window is illume conformant
+ */
+EAPI Eina_Bool elm_win_conformant_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets a window to be an illume quickpanel window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks By default, window objects are not quickpanel windows.
+ *
+ * @param[in] obj The window object
+ * @param[in] quickpanel The quickpanel flag (@c 1 = quickpanel, @c 0 = normal window)
+ */
+EAPI void elm_win_quickpanel_set(Evas_Object *obj, Eina_Bool quickpanel);
+
+/**
+ * @brief Gets whether this window is a quickpanel.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return A boolean value that indicates whether this window is a quickpanel
+ */
+EAPI Eina_Bool elm_win_quickpanel_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the major priority of a quickpanel window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] priority The major priority for this quickpanel
+ */
+EAPI void elm_win_quickpanel_priority_major_set(Evas_Object *obj, int priority);
+
+/**
+ * @brief Gets the major priority of a quickpanel window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The major priority of this quickpanel
+ */
+EAPI int elm_win_quickpanel_priority_major_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the minor priority of a quickpanel window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] priority The minor priority for this quickpanel
+ */
+EAPI void elm_win_quickpanel_priority_minor_set(Evas_Object *obj, int priority);
+
+/**
+ * @brief Gets the minor priority of a quickpanel window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The minor priority of this quickpanel
+ */
+EAPI int elm_win_quickpanel_priority_minor_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the zone in which this quickpanel should appear.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] zone The requested zone for this quickpanel
+ */
+EAPI void elm_win_quickpanel_zone_set(Evas_Object *obj, int zone);
+
+/**
+ * @brief Gets the zone in which this should appear.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The requested zone for this quickpanel
+ */
+EAPI int elm_win_quickpanel_zone_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the window to be skipped by keyboard focus.
+ *
+ * @details This sets the window to be skipped by normal keyboard input. This means
+ * the Windows Manager is asked to not focus this window as well as omit
+ * it from things like the taskbar, pager, "alt-tab" list, etc.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks Call this and enable it on a window BEFORE you show it for the first time,
+ * otherwise it may have no effect.
+ *
+ * @remarks Use this for windows that have only output information or might only be
+ * interacted with by a mouse or fingers, and never for typing input.
+ * Be careful that this may have side-effects like making the window
+ * non-accessible in some cases unless the window is specially handled. Use
+ * this with care.
+ *
+ * @param[in] obj The window object
+ * @param[in] skip The skip flag state (@c EINA_TRUE if it is to be skipped)
+ */
+EAPI void elm_win_prop_focus_skip_set(Evas_Object *obj, Eina_Bool skip);
+
+/**
+ * @brief Sends a command to the windowing environment.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This is intended to work in touchscreen or small screen device
+ * environments where there is a more simplistic window management policy in
+ * place. This uses the window object indicated to select which part of the
+ * environment to control (the part that this window lives in), and provides
+ * a command and an optional parameter structure (use @c NULL for this if not
+ * needed).
+ *
+ * @param[in] obj The window object that lives in the environment to control
+ * @param[in] command The command to send
+ * @param[in] params The optional parameters for the command
+ */
+EAPI void elm_win_illume_command_send(Evas_Object *obj, Elm_Illume_Command command, void *params);
+
+/**
+ * @brief Gets the inlined image object handle.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When you create a window with elm_win_add() of type @c ELM_WIN_INLINED_IMAGE,
+ * then the window is in fact an evas image object inlined in the parent
+ * canvas. You can get this object (be careful to not manipulate it as it
+ * is under the control of elementary), and use it to do things like get pixel
+ * data, save the image to a file, etc.
+ *
+ * @param[in] obj The window object from which to get the inlined image
+ * @return The inlined image object, otherwise @c NULL if none exist
+ */
+EAPI Evas_Object *elm_win_inlined_image_object_get(Evas_Object *obj);
+
+/**
+ * @brief Determines whether a window has focus.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window to query
+ * @return @c EINA_TRUE if the window exists and has focus,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_win_focus_get(const Evas_Object *obj);
+
+/**
+ * @brief Limits the maximum width and height of a window to the width and height of its screen.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When @a constrain is @c true, @a obj never resizes to a size larger than the screen.
+ * @param[in] obj The window object
+ * @param[in] constrain @c EINA_TRUE to restrict the window's maximum size,
+ * otherwise @c EINA_FALSE to disable restriction
+ */
+EAPI void elm_win_screen_constrain_set(Evas_Object *obj, Eina_Bool constrain);
+
+/**
+ * @brief Retrieves the constraints on the maximum width and height of a window relative to the width and height of its screen.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks When this function returns @c true, @a obj never resizes to a size larger than the screen.
+ * @param[in] obj The window object
+ * @return @c EINA_TRUE to restrict the window's maximum size,
+ * otherwise @c EINA_FALSE to disable restriction
+ */
+EAPI Eina_Bool elm_win_screen_constrain_get(Evas_Object *obj);
+
+/**
+ * @brief Gets the screen geometry details for the screen that a window is on.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window to query
+ * @param[out] x The coordinate at which to return the horizontal offset value \n
+ * This may be @c NULL.
+ * @param[out] y The coordinate at which to return the vertical offset value \n
+ * This may be @c NULL.
+ * @param[out] w The coordinate at which to return the width value \n
+ * This may be @c NULL.
+ * @param[out] h The coordinate at which to return the height value \n
+ * This may be @c NULL.
+ */
+EAPI void elm_win_screen_size_get(const Evas_Object *obj, int *x, int *y, int *w, int *h);
+
+/**
+ * @brief Gets the screen dpi for the screen that a window is on.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window to query
+ * @param[out] xdpi The pointer to the value that stores the returned horizontal dpi \n
+ * This may be @c NULL.
+ * @param[out] ydpi The pointer to the value that stores the returned vertical dpi \n
+ * This may be @c NULL.
+ */
+EAPI void elm_win_screen_dpi_get(const Evas_Object *obj, int *xdpi, int *ydpi);
+
+/**
+ * @brief Sets the enabled status for the focus highlight in a window.
+ *
+ * @details This function enables or disables the focus highlight only for the
+ * given window, regardless of the global setting for it.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window for which to enable highlight
+ * @param[in] enabled The enabled value for the highlight
+ */
+EAPI void elm_win_focus_highlight_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @brief Gets the enabled value of the focus highlight for this window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window in which to check if the focus highlight is enabled
+ *
+ * @return @c EINA_TRUE if enabled,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_win_focus_highlight_enabled_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the style for the focus highlight on this window.
+ *
+ * @details This sets the style to use for theming the highlight of focused objects on
+ * the given window. If @a style is @c NULL, the default value is used.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window for which to set the style
+ * @param[in] style The style to set
+ */
+EAPI void elm_win_focus_highlight_style_set(Evas_Object *obj, const char *style);
+
+/**
+ * @brief Gets the style set for the focus highlight object.
+ *
+ * @details This gets the style set for this windows highlight object, otherwise @c NULL if no style
+ * is set.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window from which to retrieve the highlight style
+ *
+ * @return The style set, otherwise @c NULL if no style is set \n
+ * The default value is used in that case.
+ */
+EAPI const char *elm_win_focus_highlight_style_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the keyboard mode of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] mode The mode to set, one from #Elm_Win_Keyboard_Mode
+ */
+EAPI void elm_win_keyboard_mode_set(Evas_Object *obj, Elm_Win_Keyboard_Mode mode);
+
+/**
+ * @brief Gets the keyboard mode of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The mode, one from #Elm_Win_Keyboard_Mode
+ */
+EAPI Elm_Win_Keyboard_Mode elm_win_keyboard_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets whether the window is a keyboard.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] is_keyboard If @c true the window is a virtual keyboard,
+ * otherwise @c false
+ */
+EAPI void elm_win_keyboard_win_set(Evas_Object *obj, Eina_Bool is_keyboard);
+
+/**
+ * @brief Gets whether the window is a keyboard.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is a virtual keyboard,
+ * otherwise @c false
+ */
+EAPI Eina_Bool elm_win_keyboard_win_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the indicator mode of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] mode The mode to set, one from #Elm_Win_Indicator_Mode
+ */
+EAPI void elm_win_indicator_mode_set(Evas_Object *obj, Elm_Win_Indicator_Mode mode);
+
+/**
+ * @brief Gets the indicator mode of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The mode, one from #Elm_Win_Indicator_Mode
+ */
+EAPI Elm_Win_Indicator_Mode elm_win_indicator_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the indicator opacity mode of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] mode The mode to set, one from #Elm_Win_Indicator_Opacity_Mode
+ */
+EAPI void elm_win_indicator_opacity_set(Evas_Object *obj, Elm_Win_Indicator_Opacity_Mode mode);
+
+/**
+ * @brief Gets the indicator opacity mode of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The mode, one from #Elm_Win_Indicator_Opacity_Mode
+ */
+EAPI Elm_Win_Indicator_Opacity_Mode elm_win_indicator_opacity_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sets the indicator type mode of the window.
+ *
+ * @param obj The window object
+ * @param mode The mode to set, one from #Elm_Win_Indicator_Type_Mode
+ */
+EAPI void elm_win_indicator_type_set(Evas_Object *obj, Elm_Win_Indicator_Type_Mode mode);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the indicator type mode of the window.
+ *
+ * @param obj The window object
+ * @return The mode, one from #Elm_Win_Indicator_Type_Mode
+ */
+EAPI Elm_Win_Indicator_Type_Mode elm_win_indicator_type_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Enable the indicator fixed style of the window.
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks It's disabled by default.
+ *
+ * @param[in] obj object to enable the fixed style on
+ * @param[in] enabled enabled state
+ */
+EAPI void elm_win_indicator_fixed_style_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Get the indicator fixed style enabled state.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The indicator fixed style enabled state
+ */
+EAPI Eina_Bool elm_win_indicator_fixed_style_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the screen position of a window.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[out] x The integer that stores the x coordinate
+ * @param[out] y The integer that stores the y coordinate
+ */
+EAPI void elm_win_screen_position_get(const Evas_Object *obj, int *x, int *y);
+
+/**
+ * @brief Creates a socket to provide the service for a Plug widget.
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] svcname The name of the service to be advertised \n
+ * Ensure that it is unique (when combined with @a svcnum), otherwise the creation may fail.
+ * @param[in] svcnum A number (any value, @c 0 being the common default) to differentiate multiple instances of services with the same name
+ * @param[in] svcsys If @c true it specifies to create a system-wide service that all users can connect to,
+ * otherwise @c false if the service is private to the user ID that created the service
+ * @return The boolean value that indicates whether the socket creation is successful
+ */
+EAPI Eina_Bool elm_win_socket_listen(Evas_Object *obj, const char *svcname, int svcnum, Eina_Bool svcsys);
+
+/* X specific calls - won't work on non-x engines (return 0) */
+/**
+ * @internal
+ * @remarks X11 only feature
+ *
+ * @brief Gets the Ecore_X_Window of an Evas_Object.
+ *
+ * @param obj The object
+ *
+ * @return The Ecore_X_Window of @a obj
+ */
+EAPI Ecore_X_Window elm_win_xwindow_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Wayland only feature
+ *
+ * @brief Gets the Ecore_Wl_Window of an Evas_Object.
+ *
+ * @remarks Wayland specific call - returns NULL on non-Wayland engines
+ *
+ * @param obj The object
+ * @return The Ecore_Wl_Window of @a obj
+ */
+EAPI Ecore_Wl_Window *elm_win_wl_window_get(const Evas_Object *obj);
+
+/**
+ * @typedef Elm_Win_Trap
+ *
+ * @brief Trap can be set with elm_win_trap_set() and intercepts the
+ * calls to internal ecore_evas with the same name and parameters. If
+ * there is a trap and it returns @c EINA_TRUE then the call is
+ * allowed, otherwise it is ignored.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ */
+typedef struct _Elm_Win_Trap Elm_Win_Trap;
+struct _Elm_Win_Trap
+{
+#define ELM_WIN_TRAP_VERSION (1UL)
+ unsigned long version;
+ void *(*add)(Evas_Object *o); /**< Object is just added. The returned pointer is handled to every other trap call */
+ void (*del)(void *data, Evas_Object *o); /**< Object is deleted */
+ Eina_Bool (*hide)(void *data, Evas_Object *o);
+ Eina_Bool (*show)(void *data, Evas_Object *o);
+ Eina_Bool (*move)(void *data, Evas_Object *o, int x, int y);
+ Eina_Bool (*resize)(void *data, Evas_Object *o, int w, int h);
+ Eina_Bool (*center)(void *data, Evas_Object *o); /* not in ecore_evas, but nice to trap */
+ Eina_Bool (*lower)(void *data, Evas_Object *o);
+ Eina_Bool (*raise)(void *data, Evas_Object *o);
+ Eina_Bool (*activate)(void *data, Evas_Object *o);
+ Eina_Bool (*alpha_set)(void *data, Evas_Object *o, Eina_Bool alpha);
+ Eina_Bool (*aspect_set)(void *data, Evas_Object *o, double aspect);
+ Eina_Bool (*avoid_damage_set)(void *data, Evas_Object *o, Ecore_Evas_Avoid_Damage_Type on);
+ Eina_Bool (*borderless_set)(void *data, Evas_Object *o, Eina_Bool on);
+ Eina_Bool (*demand_attention_set)(void *data, Evas_Object *o, Eina_Bool on);
+ Eina_Bool (*focus_skip_set)(void *data, Evas_Object *o, Eina_Bool skip);
+ Eina_Bool (*fullscreen_set)(void *data, Evas_Object *o, Eina_Bool on);
+ Eina_Bool (*iconified_set)(void *data, Evas_Object *o, Eina_Bool on);
+ Eina_Bool (*layer_set)(void *data, Evas_Object *o, int layer);
+ Eina_Bool (*manual_render_set)(void *data, Evas_Object *o, Eina_Bool manual_render);
+ Eina_Bool (*maximized_set)(void *data, Evas_Object *o, Eina_Bool on);
+ Eina_Bool (*modal_set)(void *data, Evas_Object *o, Eina_Bool on);
+ Eina_Bool (*name_class_set)(void *data, Evas_Object *o, const char *n, const char *c);
+ Eina_Bool (*object_cursor_set)(void *data, Evas_Object *o, Evas_Object *obj, int layer, int hot_x, int hot_y);
+ Eina_Bool (*override_set)(void *data, Evas_Object *o, Eina_Bool on);
+ Eina_Bool (*rotation_set)(void *data, Evas_Object *o, int rot);
+ Eina_Bool (*rotation_with_resize_set)(void *data, Evas_Object *o, int rot);
+ Eina_Bool (*shaped_set)(void *data, Evas_Object *o, Eina_Bool shaped);
+ Eina_Bool (*size_base_set)(void *data, Evas_Object *o, int w, int h);
+ Eina_Bool (*size_step_set)(void *data, Evas_Object *o, int w, int h);
+ Eina_Bool (*size_min_set)(void *data, Evas_Object *o, int w, int h);
+ Eina_Bool (*size_max_set)(void *data, Evas_Object *o, int w, int h);
+ Eina_Bool (*sticky_set)(void *data, Evas_Object *o, Eina_Bool sticky);
+ Eina_Bool (*title_set)(void *data, Evas_Object *o, const char *t);
+ Eina_Bool (*urgent_set)(void *data, Evas_Object *o, Eina_Bool urgent);
+ Eina_Bool (*withdrawn_set)(void *data, Evas_Object *o, Eina_Bool withdrawn);
+};
+
+/**
+ * @brief Sets the trap to be used for internal @c Ecore_Evas management.
+ *
+ * @since 1.7
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks This is an advanced feature that you should avoid using.
+ *
+ * @param[in] trap The trap to be used, otherwise @c NULL to remove traps \n
+ * The pointer is not modified or copied, it is kept alive.
+ * @return @c EINA_TRUE on success,
+ * otherwise @c EINA_FALSE if there is a
+ * problem, such as an invalid version number
+ */
+EAPI Eina_Bool elm_win_trap_set(const Elm_Win_Trap *trap);
+
+/**
+ * @brief Sets the floating mode of a window.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] floating If @c true the window is in the floating mode,
+ * otherwise @c false
+ *
+ * @see elm_win_floating_mode_get()
+ */
+EAPI void elm_win_floating_mode_set(Evas_Object *obj, Eina_Bool floating);
+
+/**
+ * @brief Gets the floating mode of a window.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the window is in the floating mode,
+ * otherwise @c false
+ *
+ * @see elm_win_floating_mode_set()
+ */
+EAPI Eina_Bool elm_win_floating_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Queries whether Windows Manager supports window rotation.
+ *
+ * @since 1.9
+ *
+ * @since_tizen 2.3
+ *
+ * @remarks The Windows Manager rotation allows the WM to control the rotation of application windows.
+ * It is designed to support synchronized rotation for multiple application windows at the same time.
+ *
+ * @param[in] obj The window object
+ * @return @c EINA_TRUE if the Windows Manager rotation is supported,
+ * otherwise @c EINA_FALSE
+ *
+ * @see elm_win_wm_rotation_supported_get()
+ * @see elm_win_wm_rotation_preferred_rotation_set()
+ * @see elm_win_wm_rotation_preferred_rotation_get()
+ * @see elm_win_wm_rotation_available_rotations_set()
+ * @see elm_win_wm_rotation_available_rotations_get()
+ * @see elm_win_wm_rotation_manual_rotation_done_set()
+ * @see elm_win_wm_rotation_manual_rotation_done_get()
+ * @see elm_win_wm_rotation_manual_rotation_done()
+ */
+EAPI Eina_Bool elm_win_wm_rotation_supported_get(const Evas_Object *obj);
+
+/**
+ * @brief Set the preferred rotation value.
+ *
+ * @details This function is used to set the orientation of window @p obj to spicific angle fixed.
+ *
+ * @since 1.9
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] rotation The preferred rotation of the window in degrees (0-360),
+ * counter-clockwise.
+ *
+ * @see elm_win_wm_rotation_preferred_rotation_get()
+ */
+EAPI void elm_win_wm_rotation_preferred_rotation_set(Evas_Object *obj, const int rotation);
+
+/**
+ * @brief Gets the preferred rotation value.
+ *
+ * @details This function is used to get the preferred rotation value.
+ *
+ * @since 1.9
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return The preferred rotation of the window, in degrees (0-360),
+ * counter-clockwise
+ *
+ * @see elm_win_wm_rotation_preferred_rotation_set()
+ */
+EAPI int elm_win_wm_rotation_preferred_rotation_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the array of available window rotations.
+ *
+ * @details This function is used to set the available rotations to give hints to WM.
+ * WM refers these hints and sets the orientation of the window properly.
+ *
+ * @since 1.9
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] rotations The array of rotation values
+ * @param[in] count The number of arrays of rotations
+ *
+ * @see elm_win_wm_rotation_available_rotations_get()
+ */
+EAPI void elm_win_wm_rotation_available_rotations_set(Evas_Object *obj, const int *rotations, unsigned int count);
+
+/**
+ * @brief Gets the array of available window rotations.
+ *
+ * @details This function is used to get the available rotations.
+ *
+ * @since 1.9
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[out] rotations The array of rotation values
+ * @param[out] count The number of arrays of rotations
+ * @return #EINA_TRUE if succeed, otherwise #EINA_FALSE
+ *
+ * @see elm_win_wm_rotation_available_rotations_set()
+ */
+EAPI Eina_Bool elm_win_wm_rotation_available_rotations_get(const Evas_Object *obj, int **rotations, unsigned int *count);
+
+/**
+ * @brief Sets the manual rotation done mode of the window.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @param[in] set If @c true, the Windows Manager does not rotate the window until
+ * the rotation done event is received by elm_win_wm_rotation_manual_rotation_done,
+ * otherwise @c false if the manual rotation mode is disabled
+ *
+ * @see elm_win_wm_rotation_manual_rotation_done_get()
+ * @see elm_win_wm_rotation_manual_rotation_done()
+ */
+EAPI void elm_win_wm_rotation_manual_rotation_done_set(Evas_Object *obj, Eina_Bool set);
+
+/**
+ * @brief Gets the manual rotation done mode of the window.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ * @return @c true if the manual rotation done mode is enabled,
+ * otherwise @c false
+ *
+ * @see elm_win_wm_rotation_manual_rotation_done_set()
+ * @see elm_win_wm_rotation_manual_rotation_done()
+ */
+EAPI Eina_Bool elm_win_wm_rotation_manual_rotation_done_get(const Evas_Object *obj);
+
+/**
+ * @brief Sets the rotation finish manually.
+ *
+ * @since 1.8
+ *
+ * @since_tizen 2.3
+ *
+ * @param[in] obj The window object
+ *
+ * @see elm_win_wm_rotation_manual_rotation_done_set()
+ * @see elm_win_wm_rotation_manual_rotation_done_get()
+ */
+EAPI void elm_win_wm_rotation_manual_rotation_done(Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Sets the desktop layout support state.
+ *
+ * @param obj The window object
+ * @param support If @c true, the Windows Manager provides the desktop layout mode,
+ * otherwise @c false if the Windows Manager sets the window to the normal mode
+ */
+EAPI void elm_win_wm_desktop_layout_support_set(Evas_Object *obj, const Eina_Bool support);
+
+/**
+ * @internal
+ * @remarks Tizen only feature 2013.12.07
+ *
+ * @brief For making unfocusable elm_window to be focusable.
+ */
+EAPI void elm_win_focus_allow_set(Evas_Object *obj, Eina_Bool enable);
+
+/**
+ * @internal
+ * @remarks Tizen only feature 2013.12.07
+ *
+ * @brief For making unfocusable elm_window to be focusable.
+ */
+EAPI Eina_Bool elm_win_focus_allow_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Gets the list of supported auxiliary hint strings.
+ *
+ * @since 1.8
+ *
+ * @remarks Do not change the returned list of contents. Auxiliary hint
+ * strings are internal and should be considered constants, do not free or
+ * modify them.
+ * @remarks Support for this depends on the underlying windowing system.
+ *
+ * @remarks The window auxiliary hint is the value that is used to decide which action should
+ * be made available to the user by the Windows Manager. If you want to set a specific hint
+ * to your window, then you should check whether it exists in the supported auxiliary
+ * hints that are registered in the root window by the Windows Manager. Once you have added
+ * an auxiliary hint, you can get a new ID which is used to change the value and delete the hint.
+ * The Windows Manager sends a response message to the application on receiving the auxiliary
+ * hint change event.
+ *
+ * @param obj The window object
+ * @return The list of supported auxiliary hint strings
+ */
+EAPI const Eina_List *elm_win_aux_hints_supported_get(const Evas_Object *obj);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Creates an auxiliary hint of the window.
+ *
+ * @since 1.8
+ *
+ * @remarks Support for this depends on the underlying windowing system.
+ *
+ * @param obj The window object
+ * @param hint The auxiliary hint string
+ * @param val The value string
+ * @return The ID of the created auxiliary hint,
+ * otherwise @c -1 on failure
+ */
+EAPI int elm_win_aux_hint_add(Evas_Object *obj, const char *hint, const char *val);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Deletes an auxiliary hint of the window.
+ *
+ * @since 1.8
+ *
+ * @remarks Support for this depends on the underlying windowing system.
+ * @param obj The window object
+ * @param id The ID of the auxiliary hint
+ * @return @c EINA_TRUE if no error occurs,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_win_aux_hint_del(Evas_Object *obj, const int id);
+
+/**
+ * @internal
+ * @remarks Tizen only feature
+ *
+ * @brief Changes a value of the auxiliary hint.
+ *
+ * @since 1.8
+ *
+ * @remarks Support for this depends on the underlying windowing system.
+ * @param obj The window object
+ * @param id The auxiliary hint ID
+ * @param val The value string to be set
+ * @return @c EINA_TRUE if no error occurs,
+ * otherwise @c EINA_FALSE
+ */
+EAPI Eina_Bool elm_win_aux_hint_val_set(Evas_Object *obj, const int id, const char *val);
/**
* @}