diff options
author | Daniel Zaoui <daniel.zaoui@samsung.com> | 2013-04-28 12:58:28 +0300 |
---|---|---|
committer | Daniel Zaoui <daniel.zaoui@samsung.com> | 2013-04-28 13:55:41 +0300 |
commit | 7ca91290f1352ba61e8b6d92e04abb54e72521c9 (patch) | |
tree | 82b37426ffbb3343467c47509ebc58a3d560c7e3 | |
parent | 84eabc932d1806bc36983db68533cc1af3093b50 (diff) | |
download | elementary-7ca91290f1352ba61e8b6d92e04abb54e72521c9.tar.gz |
Elementary: Split headers for Map, Menu, Panel, Panes, Photocam, Plug,
Prefs, ProgressBar, Radio. Route, Segment Control, Separator, Slider,
Slideshow, Spinner, Systray, Table, Thumb, Video, Web.
68 files changed, 11267 insertions, 8624 deletions
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index e96600a75..622942bbb 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -253,43 +253,91 @@ elm_layout.h \ elm_list.h \ elm_macros.h \ elm_map.h \ +elm_map_common.h \ +elm_map_eo.h \ +elm_map_legacy.h \ elm_mapbuf.h \ elm_menu.h \ +elm_menu_common.h \ +elm_menu_eo.h \ +elm_menu_legacy.h \ elm_mirroring.h \ elm_need.h \ elm_notify.h \ elm_object.h \ elm_object_item.h \ elm_panel.h \ +elm_panel_common.h \ +elm_panel_eo.h \ +elm_panel_legacy.h \ elm_panes.h \ +elm_panes_eo.h \ +elm_panes_legacy.h \ elm_photo.h \ elm_photocam.h \ +elm_photocam_eo.h \ +elm_photocam_legacy.h \ elm_plug.h \ +elm_plug_eo.h \ +elm_plug_legacy.h \ elm_prefs.h \ +elm_prefs_common.h \ +elm_prefs_eo.h \ +elm_prefs_legacy.h \ elm_prefs_data.h \ elm_progressbar.h \ +elm_progressbar_eo.h \ +elm_progressbar_legacy.h \ elm_radio.h \ +elm_radio_eo.h \ +elm_radio_legacy.h \ elm_route.h \ +elm_route_eo.h \ +elm_route_legacy.h \ elm_scale.h \ elm_scroll.h \ elm_scroller.h \ elm_segment_control.h \ +elm_segment_control_common.h \ +elm_segment_control_eo.h \ +elm_segment_control_legacy.h \ elm_separator.h \ +elm_separator_eo.h \ +elm_separator_legacy.h \ elm_slider.h \ +elm_slider_eo.h \ +elm_slider_legacy.h \ elm_slideshow.h \ +elm_slideshow_common.h \ +elm_slideshow_eo.h \ +elm_slideshow_legacy.h \ elm_spinner.h \ +elm_spinner_eo.h \ +elm_spinner_legacy.h \ elm_store.h \ elm_systray.h \ +elm_systray_eo.h \ +elm_systray_common.h \ elm_systray_watcher.h \ elm_sys_notify.h \ elm_table.h \ +elm_table_eo.h \ +elm_table_legacy.h \ elm_theme.h \ elm_thumb.h \ +elm_thumb_common.h \ +elm_thumb_eo.h \ +elm_thumb_legacy.h \ elm_toolbar.h \ elm_tooltip.h \ elm_transit.h \ elm_video.h \ +elm_video_eo.h \ +elm_video_legacy.h \ elm_web.h \ +elm_web_common.h \ +elm_web_eo.h \ +elm_web_legacy.h \ elm_win.h includesubdir = $(includedir)/elementary-@VMAJ@/ diff --git a/src/lib/elm_map_common.h b/src/lib/elm_map_common.h new file mode 100644 index 000000000..71e87a67f --- /dev/null +++ b/src/lib/elm_map_common.h @@ -0,0 +1,748 @@ +/** + * Set map's zoom behavior. It can be set to manual or automatic. + * + * Default value is #ELM_MAP_ZOOM_MODE_MANUAL. + * + * Values <b> don't </b> work as bitmask, only one can be chosen. + * + * @note 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() + * + * @ingroup Map + */ +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 map fits inside the scroll frame with no pixels outside this area. */ + ELM_MAP_ZOOM_MODE_AUTO_FILL, /**< Zoom until map fills scroll, ensuring no pixels are left unfilled. */ + ELM_MAP_ZOOM_MODE_LAST +} Elm_Map_Zoom_Mode; + +/** + * Set type of a external source (provider). + * + * @see elm_map_sources_get() + * @see elm_map_source_get() + * @see elm_map_source_set() + * + * @ingroup Map + */ +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; + +/** + * Set type of transport used on route. + * + * @see elm_map_route_add() + * + * @ingroup Map + */ +typedef enum +{ + ELM_MAP_ROUTE_TYPE_MOTOCAR, /**< Route should consider an automobile will be used. */ + ELM_MAP_ROUTE_TYPE_BICYCLE, /**< Route should consider a bicycle will be used by the user. */ + ELM_MAP_ROUTE_TYPE_FOOT, /**< Route should consider user will be walking. */ + ELM_MAP_ROUTE_TYPE_LAST +} Elm_Map_Route_Type; + +/** + * Set the routing method, what should be prioritized, time or distance. + * + * @see elm_map_route_add() + * + * @ingroup Map + */ +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; + +/** + * Set the name search method. + * + * This is for name module interface. + * + * @ingroup Map + */ +typedef enum +{ + ELM_MAP_NAME_METHOD_SEARCH, + ELM_MAP_NAME_METHOD_REVERSE, + ELM_MAP_NAME_METHOD_LAST +} Elm_Map_Name_Method; + +/** + * Set overlay type to be used. This type is resolved + * when the overlay is created. + * 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() + * + * @ingroup Map + */ +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; + +typedef struct _Elm_Map_Marker Elm_Map_Marker; /**< A marker to be shown in a specific point of 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 in 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; /**< A overlay to be shown in a specific point of the map. This can be created by elm_map_overlay_add() and similar functions and deleted by elm_map_overlay_del(). */ + +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 click on a marker, a bubble is displayed with a 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 markers 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); /**< Det 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. */ + +/** + * Delete a overlay from the map. This function can delete all types + * of overlays. + * + * @param overlay The overlay to be deleted. + * + * @see elm_map_overlay_add() + * @see elm_map_overlay_class_add() + * @see elm_map_overlay_bubble_add() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_del(Elm_Map_Overlay *overlay); + +/** + * Get the overlay type. + * + * @param overlay The overlay to return type. + * @return Return the overlay type. + * + * This type is resolved when the overlay is created. + * + * @see elm_map_overlay_add() + * @see elm_map_overlay_class_add() + * @see elm_map_overlay_bubble_add() + * + * @ingroup Map + */ +EAPI Elm_Map_Overlay_Type elm_map_overlay_type_get(const Elm_Map_Overlay *overlay); + + /** + * Set a pointer of user data for a overlay. + * + * @param overlay The overlay to own the user data. + * @param data A pointer of user data + * + * @see elm_map_overlay_data_get() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_data_set(Elm_Map_Overlay *overlay, void *data); + +/** + * Get the user data stored on a overlay. + * + * @param overlay The overlay to return the user data. + * @return A pointer to data stored using elm_map_overlay_data_set(), + * or @c NULL, if none has been set. + * + * @see elm_map_overlay_data_set() + * + * @ingroup Map + */ +EAPI void * elm_map_overlay_data_get(const Elm_Map_Overlay *overlay); + +/** + * Set if the overlay is hidden or not. + * + * @param overlay The overlay to be hidden. + * @param hide Use @c EINA_TRUE to hide the overlay or @c EINA_FALSE to show. + * + * @see elm_map_overlay_hide_get() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_hide_set(Elm_Map_Overlay *overlay, Eina_Bool hide); + +/** + * Get a value whether the overlay is hidden or not. + * + * @param overlay The overlay to return the hidden state. + * @return @c EINA_TRUE means the overlay is hidden. @c EINA_FALSE indicates + * it is not. + * + * This gets the current hidden state for the overlay. + * + * @see elm_map_overlay_hide_set() + * + * @ingroup Map + */ +EAPI Eina_Bool elm_map_overlay_hide_get(const Elm_Map_Overlay *overlay); + +/** + * Set the minimum zoom from where the overlay is displayed. + * + * @param overlay The overlay to be set the minimum zoom. + * @param zoom The minimum zoom. + * + * The overlay only will be displayed when the map is displayed at @p zoom + * or bigger. + * + * @see elm_map_overlay_displayed_zoom_min_get() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_displayed_zoom_min_set(Elm_Map_Overlay *overlay, int zoom); + +/** + * Get the minimum zoom from where the overlay is displayed. + * + * @param overlay The overlay to return the minimum zoom. + * @return zoom The minimum zoom. + * + * @see elm_map_overlay_displayed_zoom_min_set() + * + * @ingroup Map + */ +EAPI int elm_map_overlay_displayed_zoom_min_get(const Elm_Map_Overlay *overlay); + +/** + * Pause or unpause the overlay. + * + * @param overlay The overlay to be paused. + * @param paused Use @c EINA_TRUE to pause the @p overlay or @c EINA_FALSE + * to unpause it. + * + * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE) + * for the overlay. + * + * The default is off. + * + * This will stop moving the overlay coordinates instantly. + * even if map being scrolled or zoomed. + * + * @see elm_map_overlay_paused_get() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_paused_set(Elm_Map_Overlay *overlay, Eina_Bool paused); + +/** + * Get a value whether the overlay is paused or not. + * + * @param overlay The overlay to return paused state. + * @return @c EINA_TRUE means overlay is paused. @c EINA_FALSE indicates + * it is not. + * + * This gets the current paused state for the overlay. + * + * @see elm_map_overlay_paused_set() + * + * @ingroup Map + */ +EAPI Eina_Bool elm_map_overlay_paused_get(const Elm_Map_Overlay *overlay); + +/** + * Get a value whether the overlay is visible or not. + * + * @param overlay The overlay to return visible state. + * @return @c EINA_TRUE means overlay is visible. @c EINA_FALSE indicates + * it is not. + * + * The visible of the overlay can not be set. + * This value can be changed dynamically while zooming and panning + * + * @since 1.7 + * + * @ingroup Map + */ +EAPI Eina_Bool elm_map_overlay_visible_get(const Elm_Map_Overlay *overlay); + +/** + * Set the content object of the overlay. + * + * @param overlay The overlay to be set the content. + * @param obj The evas object will be used to display the overlay. + * + * Only default and class type overlay support this function. + * + * The content should be resized or set size hints before set to the overlay. + * <b> Do not modify this object</b> (move, show, hide, del, etc.), + * after set. + * You can only resize this. + * + * This content is what will be inside the overlay that will be displayed. + * If a content is set, icon and default style layout are no more used before + * the content is deleted. + * + * If @p obj is @c NULL, content inside the overlay is deleted. + * + * @see elm_map_overlay_content_get() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_content_set(Elm_Map_Overlay *overlay, Evas_Object *obj); + +/** + * Get the content object. + * + * @param overlay The overlay to return the content. + * @return Return the evas object if it exists, else @c NULL. + * + * Only default and class type overlay support this function. + * + * Returned content is what being inside the overlay that being displayed. + * + * <b> Do not modify this object</b> (move, show, hide, del, etc.). + * You can only resize this. + * + * The content can be set by elm_map_overlay_content_set(). + * + * @see elm_map_overlay_content_set() + * + * @ingroup Map + */ +EAPI const Evas_Object * elm_map_overlay_content_get(const Elm_Map_Overlay *overlay); + +/** + * Set a icon of the overlay. + * + * @param overlay The overlay to be set the icon. + * @param icon The icon will be used to display the overlay. + * + * Only default and class type overlay support this function. + * + * <b> Do not modify this object</b> (move, show, hide, resize, del, etc.), + * after set. + * + * If icon is set, default style layout will not be used. + * + * If @p icon is @c NULL, icon inside the overlay will be deleted. + * + * @see elm_map_overlay_icon_get() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_icon_set(Elm_Map_Overlay *overlay, Evas_Object *icon); + +/** + * Get the icon object. + * + * @param overlay The overlay to return the icon. + * @return Return the icon object if it exists, else @c NULL. + * + * Only default and class type overlay support this function. + * + * Returned icon is what being inside the overlay that being displayed. + * + * <b> Do not modify this icon </b> (move, show, hide, resize, del, etc.). + * + * The icon can be set by elm_map_overlay_icon_set(). + * + * @see elm_map_overlay_icon_set() + * + * @ingroup Map + */ +EAPI const Evas_Object * elm_map_overlay_icon_get(const Elm_Map_Overlay *overlay); + +/** + * Set the geographic coordinates of the overlay. + * + * @param overlay The overlay to be set geographic coordinates. + * @param lon Longitude to be set. + * @param lat Latitude to be set. + * + * Only default and bubble type overlay support this function. + * + * This sets the center coordinates of the overlay. It can be + * get by elm_map_overlay_region_get(). + * + * @see elm_map_overlay_region_get() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_region_set(Elm_Map_Overlay *overlay, double lon, double lat); + +/** + * Get the geographic coordinates of the overlay. + * + * @param overlay The overlay to return geographic coordinates. + * @param lon Pointer to store longitude. + * @param lat Pointer to store latitude. + * + * Only default and bubble type overlay support this function. + * + * This returns the center coordinates of the overlay. It can be + * set by elm_map_overlay_region_set(). + * + * @see elm_map_overlay_region_set() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_region_get(const Elm_Map_Overlay *overlay, double *lon, double *lat); + + +/** + * Set the object color of the overlay. + * + * @param overlay The overlay to be set color. + * @param r Red channel value, from 0 to 255. + * @param g Green channel value, from 0 to 255. + * @param b Blue channel value, from 0 to 255. + * @param a Alpha channel value, from 0 to 255. + * + * It uses an additive color model, so each color channel represents + * how much of each primary colors must to be used. 0 represents + * absence of this color, so if all of the three are set to 0, + * the color will be black. + * + * These component values should be integers in the range 0 to 255, + * (single 8-bit byte). + * + * This sets the color used for the overlay. By default, it is set to + * solid red (r = 255, g = 0, b = 0, a = 255). + * + * For alpha channel, 0 represents completely transparent, and 255, opaque. + * + * Function supports only ELM_MAP_OVERLAY_TYPE_CLASS, ELM_MAP_OVERLAY_TYPE_DEFAULT + * and ELM_MAP_OVERLAY_TYPE_ROUTE Elm_Map_Overlay_Type types. + * + * @see elm_map_overlay_color_get() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_color_set(Elm_Map_Overlay *overlay, int r, int g, int b, int a); + +/** + * Get the object color of the overlay. + * + * @param overlay The overlay to return color. + * @param r Pointer to store the red channel value. + * @param g Pointer to store the green channel value. + * @param b Pointer to store the blue channel value. + * @param a Pointer to store the alpha channel value. + * + * @see elm_map_overlay_color_set() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_color_get(const Elm_Map_Overlay *overlay, int *r, int *g, int *b, int *a); + +/** + * Show the given overlay at the center of the map, immediately. + * + * @param overlay The overlay to be center at. + * + * This causes map to @b redraw its viewport's contents to the + * region containing the given @p overlay's coordinates, that will be + * moved to the center of the map. + * + * @see elm_map_overlays_show() if more than one overlay need to be displayed. + * + * @ingroup Map + */ +EAPI void elm_map_overlay_show(Elm_Map_Overlay *overlay); + +/** + * Move and zoom the map to display a list of overlays. + * + * @param overlays A list of #Elm_Map_Overlay handles. + * + * The map will be centered on the center point of the overlays in the list. + * Then the map will be zoomed in order to fit the overlays using the maximum + * zoom which allows display of all the overlays. + * + * @warning All the overlays should belong to the same map object. + * + * @see elm_map_overlay_show() to show a single overlay. + * + * @ingroup Map + */ +EAPI void elm_map_overlays_show(Eina_List *overlays); + +/** + * Set the get callback function of the overlay. + * + * @param overlay The overlay to own the get callback function. + * @param get_cb The callback function. + * @param data The user callback data. + * + * If the overlay is clicked, the callback wll be called. + * The clicked overlay is returned by callback. + * + * You can add callback to the class overlay. If one of the group overlays in this class + * is clicked, callback will be called and return a virtual group overlays. + * + * You can delete this callback function by setting @c NULL. + * + * @ingroup Map + */ +EAPI void elm_map_overlay_get_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Get_Cb get_cb, void *data); + +/** + * Set the get callback function to call when the overlay is deleted. + * + * @param overlay The overlay to own the del callback function. + * @param get_cb The callback function. + * @param data The user callback data. + * + * If the overlay is deleted, the callback wll be called. + * The deleted overlay is returned by callback. + * + * You can delete this callback function by setting @c NULL. + * + * @since 1.7 + * + * @ingroup Map + */ +EAPI void elm_map_overlay_del_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Del_Cb del_cb, void *data); + +/** + * Add a new overlay member to the class overlay. + * + * @param clas The class overlay to add a new overlay. + * @param overlay The overlay to be added to the class overlay. + * + * @see elm_map_overlay_class_remove() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_class_append(Elm_Map_Overlay *clas, Elm_Map_Overlay *overlay); + +/** + * Remove a overlay from the class. + * + * @param clas The class overlay to delete the overlay. + * @param overlay The overlay to be deleted from the class overlay. + * + * @see elm_map_overlay_class_append() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_class_remove(Elm_Map_Overlay *clas, Elm_Map_Overlay *overlay); + +/** + * Set the maximum zoom from where the overlay members in the class can be + * grouped. + * + * @param clas The overlay class has overlay members. + * @param zoom The maximum zoom. + * + * Overlay members in the class only will be grouped when the map + * is displayed at less than @p zoom. + * + * @see elm_map_overlay_class_zoom_max_get() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_class_zoom_max_set(Elm_Map_Overlay *clas, int zoom); + +/** + * Get the maximum zoom from where the overlay members in the class can be + * grouped. + * + * @param clas The overlay class has overlay members. + * + * @return The maximum zoom. + * + * @see elm_map_overlay_class_zoom_max_set() + * + * @ingroup Map + */ +EAPI int elm_map_overlay_class_zoom_max_get(const Elm_Map_Overlay *clas); + +/** + * Get the overlay members of the group overlay. + * + * @param grp The group overlay has overlay members. + * + * @return The list of group overlay members. + * + * The group overlays are virtualy overlays. Those are shown and hidden dynamically. + * You can add callback to the class overlay. If one of the group overlays in this class + * is clicked, callback will be called and return a virtual group overlays. + * + * 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 modifty the group overlay itself. + * + * @see elm_map_overlay_class_add() + * + * @ingroup Map + */ +EAPI Eina_List * elm_map_overlay_group_members_get(const Elm_Map_Overlay *grp); + +/** + * Follow a other overlay. + * + * @param bubble The bubble overlay to follow a parent overlay. + * @param parent The parent overlay to be followed by the bubble overlay. + * + * Bubble overlay will follow the parent overlay's movement (hide, show, move). + * + * @see elm_map_overlay_bubble_add() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_bubble_follow(Elm_Map_Overlay *bubble, const Elm_Map_Overlay *parent); + +/** + * Add a content object to the bubble overlay. + * + * @param bubble The bubble overlay to add a content. + * @param content The content to be added to the bubble overlay. + * + * Added contents will be displayed inside the bubble overlay. + * + * @see elm_map_overlay_bubble_content_clear() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_bubble_content_append(Elm_Map_Overlay *bubble, Evas_Object *content); + +/** + * Clear all contents inside the bubble overlay. + * + * @param bubble The bubble overlay to clear the contents. + * + * This will delete all contents inside the bubble overlay. + * + * @see elm_map_overlay_bubble_content_append() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_bubble_content_clear(Elm_Map_Overlay *bubble); + +/** + * Add a geographic coordinates to the polygon overlay. + * + * @param overlay The polygon overlay to get a region. + * @param lon The longitude. + * @param lat The latitude. + * + * At least 3 regions should be added to show the polygon overlay. + * + * Overlay created with this method can be deleted with elm_map_overlay_del(). + * + * @see elm_map_overlay_polygon_add() + * @see elm_map_overlay_del() + * + * @ingroup Map + */ +EAPI void elm_map_overlay_polygon_region_add(Elm_Map_Overlay *overlay, double lon, double lat); + +/** + * Remove a route from the map. + * + * @param route The route to remove. + * + * @see elm_map_route_add() + * + * @ingroup Map + */ +EAPI void elm_map_route_del(Elm_Map_Route *route); + +/** + * Get the route distance in kilometers. + * + * @param route The route object. + * @return The distance of route (unit : km). + * + * @ingroup Map + */ +EAPI double elm_map_route_distance_get(const Elm_Map_Route *route); + +/** + * Get the information of route nodes. + * + * @param route The route object. + * @return Returns a string with the nodes of route. + * + * @ingroup Map + */ +EAPI const char *elm_map_route_node_get(const Elm_Map_Route *route); + +/** + * Get the information of route waypoint. + * + * @param route the route object. + * @return Returns a string with information about waypoint of route. + * + * @ingroup Map + */ +EAPI const char *elm_map_route_waypoint_get(const Elm_Map_Route *route); + +/** + * Get the address of the name. + * + * @param name The name handle. + * @return Returns the address string of @p name. + * + * This gets the coordinates of the @p name, created with one of the + * conversion functions. + * + * @see elm_map_name_add() + * + * @ingroup Map + */ +EAPI const char *elm_map_name_address_get(const Elm_Map_Name *name); + +/** + * Get the current coordinates of the name. + * + * @param name The name handle. + * @param lat Pointer to store the latitude. + * @param lon Pointer to store The longitude. + * + * This gets the coordinates of the @p name, created with one of the + * conversion functions. + * + * @see elm_map_name_add() + * + * @ingroup Map + */ +EAPI void elm_map_name_region_get(const Elm_Map_Name *name, double *lon, double *lat); + +/** + * Remove a name from the map. + * + * @param name The name to remove. + * + * Basically the struct handled by @p name will be freed, so conversions + * between address and coordinates will be lost. + * + * @see elm_map_name_add() + * + * @ingroup Map + */ +EAPI void elm_map_name_del(Elm_Map_Name *name); + diff --git a/src/lib/elm_map_eo.h b/src/lib/elm_map_eo.h new file mode 100644 index 000000000..ea34d632d --- /dev/null +++ b/src/lib/elm_map_eo.h @@ -0,0 +1,631 @@ +#define ELM_OBJ_MAP_PAN_CLASS elm_obj_map_pan_class_get() + +const Eo_Class *elm_obj_map_pan_class_get(void) EINA_CONST; + +#define ELM_OBJ_MAP_CLASS elm_obj_map_class_get() + +const Eo_Class *elm_obj_map_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_MAP_BASE_ID; + +enum +{ + ELM_OBJ_MAP_SUB_ID_ZOOM_SET, + ELM_OBJ_MAP_SUB_ID_ZOOM_GET, + ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_SET, + ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_GET, + ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_SET, + ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_GET, + ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_SET, + ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_GET, + ELM_OBJ_MAP_SUB_ID_REGION_BRING_IN, + ELM_OBJ_MAP_SUB_ID_REGION_SHOW, + ELM_OBJ_MAP_SUB_ID_REGION_GET, + ELM_OBJ_MAP_SUB_ID_PAUSED_SET, + ELM_OBJ_MAP_SUB_ID_PAUSED_GET, + ELM_OBJ_MAP_SUB_ID_ROTATE_SET, + ELM_OBJ_MAP_SUB_ID_ROTATE_GET, + ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_SET, + ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_GET, + ELM_OBJ_MAP_SUB_ID_TILE_LOAD_STATUS_GET, + ELM_OBJ_MAP_SUB_ID_CANVAS_TO_REGION_CONVERT, + ELM_OBJ_MAP_SUB_ID_REGION_TO_CANVAS_CONVERT, + ELM_OBJ_MAP_SUB_ID_USER_AGENT_SET, + ELM_OBJ_MAP_SUB_ID_USER_AGENT_GET, + ELM_OBJ_MAP_SUB_ID_SOURCE_SET, + ELM_OBJ_MAP_SUB_ID_SOURCE_GET, + ELM_OBJ_MAP_SUB_ID_SOURCES_GET, + ELM_OBJ_MAP_SUB_ID_ROUTE_ADD, + ELM_OBJ_MAP_SUB_ID_NAME_ADD, + ELM_OBJ_MAP_SUB_ID_OVERLAY_ADD, + ELM_OBJ_MAP_SUB_ID_OVERLAYS_GET, + ELM_OBJ_MAP_SUB_ID_OVERLAY_CLASS_ADD, + ELM_OBJ_MAP_SUB_ID_OVERLAY_BUBBLE_ADD, + ELM_OBJ_MAP_SUB_ID_OVERLAY_ROUTE_ADD, + ELM_OBJ_MAP_SUB_ID_OVERLAY_LINE_ADD, + ELM_OBJ_MAP_SUB_ID_OVERLAY_POLYGON_ADD, + ELM_OBJ_MAP_SUB_ID_OVERLAY_CIRCLE_ADD, + ELM_OBJ_MAP_SUB_ID_OVERLAY_SCALE_ADD, + ELM_OBJ_MAP_SUB_ID_TRACK_ADD, + ELM_OBJ_MAP_SUB_ID_TRACK_REMOVE, + ELM_OBJ_MAP_SUB_ID_LAST +}; + +#define ELM_OBJ_MAP_ID(sub_id) (ELM_OBJ_MAP_BASE_ID + sub_id) + + +/** + * @def elm_obj_map_zoom_set + * @since 1.8 + * + * Set the zoom level of the map. + * + * @param[in] zoom + * + * @see elm_map_zoom_set + * + * @ingroup Map + */ +#define elm_obj_map_zoom_set(zoom) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_SET), EO_TYPECHECK(int, zoom) + +/** + * @def elm_obj_map_zoom_get + * @since 1.8 + * + * Get the zoom level of the map. + * + * @param[out] ret + * + * @see elm_map_zoom_get + * + * @ingroup Map + */ +#define elm_obj_map_zoom_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_GET), EO_TYPECHECK(int *, ret) + +/** + * @def elm_obj_map_zoom_mode_set + * @since 1.8 + * + * Set the zoom mode used by the map object. + * + * @param[in] mode + * + * @see elm_map_zoom_mode_set + * + * @ingroup Map + */ +#define elm_obj_map_zoom_mode_set(mode) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_SET), EO_TYPECHECK(Elm_Map_Zoom_Mode, mode) + +/** + * @def elm_obj_map_zoom_mode_get + * @since 1.8 + * + * Get the zoom mode used by the map object. + * + * @param[out] ret + * + * @see elm_map_zoom_mode_get + * + * @ingroup Map + */ +#define elm_obj_map_zoom_mode_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_GET), EO_TYPECHECK(Elm_Map_Zoom_Mode *, ret) + +/** + * @def elm_obj_map_zoom_max_set + * @since 1.8 + * + * Set the maximum zoom of the source. + * + * @param[in] zoom + * + * @see elm_map_zoom_max_set + * + * @ingroup Map + */ +#define elm_obj_map_zoom_max_set(zoom) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_SET), EO_TYPECHECK(int, zoom) + +/** + * @def elm_obj_map_zoom_max_get + * @since 1.8 + * + * Get the maximum zoom of the source. + * + * @param[out] ret + * + * @see elm_map_zoom_max_get + * + * @ingroup Map + */ +#define elm_obj_map_zoom_max_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_GET), EO_TYPECHECK(int *, ret) + +/** + * @def elm_obj_map_zoom_min_set + * @since 1.8 + * + * Set the minimum zoom of the source. + * + * @param[in] zoom + * + * @see elm_map_zoom_min_set + * + * @ingroup Map + */ +#define elm_obj_map_zoom_min_set(zoom) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_SET), EO_TYPECHECK(int, zoom) + +/** + * @def elm_obj_map_zoom_min_get + * @since 1.8 + * + * Get the minimum zoom of the source. + * + * @param[out] ret + * + * @see elm_map_zoom_min_get + * + * @ingroup Map + */ +#define elm_obj_map_zoom_min_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_GET), EO_TYPECHECK(int *, ret) + +/** + * @def elm_obj_map_region_bring_in + * @since 1.8 + * + * Animatedly bring in given coordinates to the center of the map. + * + * @param[in] lon + * @param[in] lat + * + * @see elm_map_region_bring_in + * + * @ingroup Map + */ +#define elm_obj_map_region_bring_in(lon, lat) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_BRING_IN), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat) + +/** + * @def elm_obj_map_region_show + * @since 1.8 + * + * Show the given coordinates at the center of the map, immediately. + * + * @param[in] lon + * @param[in] lat + * + * @see elm_map_region_show + * + * @ingroup Map + */ +#define elm_obj_map_region_show(lon, lat) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_SHOW), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat) + +/** + * @def elm_obj_map_region_get + * @since 1.8 + * + * Get the current geographic coordinates of the map. + * + * @param[out] lon + * @param[out] lat + * + * @see elm_map_region_get + * + * @ingroup Map + */ +#define elm_obj_map_region_get(lon, lat) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_GET), EO_TYPECHECK(double *, lon), EO_TYPECHECK(double *, lat) + +/** + * @def elm_obj_map_paused_set + * @since 1.8 + * + * Pause or unpause the map. + * + * @param[in] paused + * + * @see elm_map_paused_set + * + * @ingroup Map + */ +#define elm_obj_map_paused_set(paused) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_PAUSED_SET), EO_TYPECHECK(Eina_Bool, paused) + +/** + * @def elm_obj_map_paused_get + * @since 1.8 + * + * Get a value whether map is paused or not. + * + * @param[out] ret + * + * @see elm_map_paused_get + * + * @ingroup Map + */ +#define elm_obj_map_paused_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_PAUSED_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_map_rotate_set + * @since 1.8 + * + * Rotate the map. + * + * @param[in] degree + * @param[in] cx + * @param[in] cy + * + * @see elm_map_rotate_set + * + * @ingroup Map + */ +#define elm_obj_map_rotate_set(degree, cx, cy) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ROTATE_SET), EO_TYPECHECK(double, degree), EO_TYPECHECK(Evas_Coord, cx), EO_TYPECHECK(Evas_Coord, cy) + +/** + * @def elm_obj_map_rotate_get + * @since 1.8 + * + * Get the rotate degree of the map + * + * @param[out] degree + * @param[out] cx + * @param[out] cy + * + * @see elm_map_rotate_get + * + * @ingroup Map + */ +#define elm_obj_map_rotate_get(degree, cx, cy) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ROTATE_GET), EO_TYPECHECK(double *, degree), EO_TYPECHECK(Evas_Coord *, cx), EO_TYPECHECK(Evas_Coord *, cy) + +/** + * @def elm_obj_map_wheel_disabled_set + * @since 1.8 + * + * Enable or disable mouse wheel to be used to zoom in / out the map. + * + * @param[in] disabled + * + * @see elm_map_wheel_disabled_set + * + * @ingroup Map + */ +#define elm_obj_map_wheel_disabled_set(disabled) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_SET), EO_TYPECHECK(Eina_Bool, disabled) + +/** + * @def elm_obj_map_wheel_disabled_get + * @since 1.8 + * + * Get a value whether mouse wheel is enabled or not. + * + * @param[out] ret + * + * @see elm_map_wheel_disabled_get + * + * @ingroup Map + */ +#define elm_obj_map_wheel_disabled_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_map_tile_load_status_get + * @since 1.8 + * + * Get the information of tile load status. + * + * @param[out] try_num + * @param[out] finish_num + * + * @see elm_map_tile_load_status_get + * + * @ingroup Map + */ +#define elm_obj_map_tile_load_status_get(try_num, finish_num) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_TILE_LOAD_STATUS_GET), EO_TYPECHECK(int *, try_num), EO_TYPECHECK(int *, finish_num) + +/** + * @def elm_obj_map_canvas_to_region_convert + * @since 1.8 + * + * Convert canvas coordinates into geographic coordinates + * + * @param[in] x + * @param[in] y + * @param[out] lon + * @param[out] lat + * + * @see elm_map_canvas_to_region_convert + * + * @ingroup Map + */ +#define elm_obj_map_canvas_to_region_convert(x, y, lon, lat) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_CANVAS_TO_REGION_CONVERT), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(double *, lon), EO_TYPECHECK(double *, lat) + +/** + * @def elm_obj_map_region_to_canvas_convert + * @since 1.8 + * + * Convert geographic coordinates (longitude, latitude) + * + * @param[in] lon + * @param[in] lat + * @param[out] x + * @param[out] y + * + * @see elm_map_region_to_canvas_convert + * + * @ingroup Map + */ +#define elm_obj_map_region_to_canvas_convert(lon, lat, x, y) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_TO_CANVAS_CONVERT), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y) + +/** + * @def elm_obj_map_user_agent_set + * @since 1.8 + * + * Set the user agent used by the map object to access routing services. + * + * @param[in] user_agent + * + * @see elm_map_user_agent_set + * + * @ingroup Map + */ +#define elm_obj_map_user_agent_set(user_agent) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_USER_AGENT_SET), EO_TYPECHECK(const char *, user_agent) + +/** + * @def elm_obj_map_user_agent_get + * @since 1.8 + * + * Get the user agent used by the map object. + * + * @param[out] ret + * + * @see elm_map_user_agent_get + * + * @ingroup Map + */ +#define elm_obj_map_user_agent_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_USER_AGENT_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_map_source_set + * @since 1.8 + * + * Set the current source of the map for a specific type. + * + * @param[in] type + * @param[in] source_name + * + * @see elm_map_source_set + * + * @ingroup Map + */ +#define elm_obj_map_source_set(type, source_name) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_SOURCE_SET), EO_TYPECHECK(Elm_Map_Source_Type, type), EO_TYPECHECK(const char *, source_name) + +/** + * @def elm_obj_map_source_get + * @since 1.8 + * + * Get the name of currently used source for a specific type. + * + * @param[in] type + * @param[out] ret + * + * @see elm_map_source_get + * + * @ingroup Map + */ +#define elm_obj_map_source_get(type, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_SOURCE_GET), EO_TYPECHECK(Elm_Map_Source_Type, type), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_map_sources_get + * @since 1.8 + * + * Get the names of available sources for a specific type. + * + * @param[in] type + * @param[out] ret + * + * @see elm_map_sources_get + * + * @ingroup Map + */ +#define elm_obj_map_sources_get(type, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_SOURCES_GET), EO_TYPECHECK(Elm_Map_Source_Type, type), EO_TYPECHECK(const char ***, ret) + +/** + * @def elm_obj_map_route_add + * @since 1.8 + * + * Add a new route to the map object. + * + * @param[in] type + * @param[in] method + * @param[in] flon + * @param[in] flat + * @param[in] tlon + * @param[in] tlat + * @param[in] route_cb + * @param[in] data + * @param[out] ret + * + * @see elm_map_route_add + * + * @ingroup Map + */ +#define elm_obj_map_route_add(type, method, flon, flat, tlon, tlat, route_cb, data, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ROUTE_ADD), EO_TYPECHECK(Elm_Map_Route_Type, type), EO_TYPECHECK(Elm_Map_Route_Method, method), EO_TYPECHECK(double, flon), EO_TYPECHECK(double, flat), EO_TYPECHECK(double, tlon), EO_TYPECHECK(double, tlat), EO_TYPECHECK(Elm_Map_Route_Cb, route_cb), EO_TYPECHECK(void *, data), EO_TYPECHECK(Elm_Map_Route **, ret) + +/** + * @def elm_obj_map_name_add + * @since 1.8 + * + * Request a address or geographic coordinates(longitude, latitude) + * + * @param[in] address + * @param[in] lon + * @param[in] lat + * @param[in] name_cb + * @param[in] data + * @param[out] ret + * + * @see elm_map_name_add + * + * @ingroup Map + */ +#define elm_obj_map_name_add(address, lon, lat, name_cb, data, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_NAME_ADD), EO_TYPECHECK(const char *, address), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat), EO_TYPECHECK(Elm_Map_Name_Cb, name_cb), EO_TYPECHECK(void *, data), EO_TYPECHECK(Elm_Map_Name **, ret) + +/** + * @def elm_obj_map_overlay_add + * @since 1.8 + * + * Add a new overlay to the map object. This overlay has a default type. + * + * @param[in] lon + * @param[in] lat + * @param[out] ret + * + * @see elm_map_overlay_add + * + * @ingroup Map + */ +#define elm_obj_map_overlay_add(lon, lat, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_ADD), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat), EO_TYPECHECK(Elm_Map_Overlay **, ret) + +/** + * @def elm_obj_map_overlays_get + * @since 1.8 + * + * Return all overlays in the map object. + * + * @param[out] ret + * + * @see elm_map_overlays_get + * + * @ingroup Map + */ +#define elm_obj_map_overlays_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAYS_GET), EO_TYPECHECK(Eina_List **, ret) + +/** + * @def elm_obj_map_overlay_class_add + * @since 1.8 + * + * Add a new class overlay to the map object. + * + * @param[out] ret + * + * @see elm_map_overlay_class_add + * + * @ingroup Map + */ +#define elm_obj_map_overlay_class_add(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_CLASS_ADD), EO_TYPECHECK(Elm_Map_Overlay **, ret) + +/** + * @def elm_obj_map_overlay_bubble_add + * @since 1.8 + * + * Add a new bubble overlay to the map object. + * + * @param[out] ret + * + * @see elm_map_overlay_bubble_add + * + * @ingroup Map + */ +#define elm_obj_map_overlay_bubble_add(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_BUBBLE_ADD), EO_TYPECHECK(Elm_Map_Overlay **, ret) + +/** + * @def elm_obj_map_overlay_route_add + * @since 1.8 + * + * Add a new route overlay to the map object. + * + * @param[in] route + * @param[out] ret + * + * @see elm_map_overlay_route_add + * + * @ingroup Map + */ +#define elm_obj_map_overlay_route_add(route, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_ROUTE_ADD), EO_TYPECHECK(const Elm_Map_Route *, route), EO_TYPECHECK(Elm_Map_Overlay **, ret) + +/** + * @def elm_obj_map_overlay_line_add + * @since 1.8 + * + * Add a new line overlay to the map object. + * + * @param[in] flon + * @param[in] flat + * @param[in] tlon + * @param[in] tlat + * @param[out] ret + * + * @see elm_map_overlay_line_add + * + * @ingroup Map + */ +#define elm_obj_map_overlay_line_add(flon, flat, tlon, tlat, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_LINE_ADD), EO_TYPECHECK(double, flon), EO_TYPECHECK(double, flat), EO_TYPECHECK(double, tlon), EO_TYPECHECK(double, tlat), EO_TYPECHECK(Elm_Map_Overlay **, ret) + +/** + * @def elm_obj_map_overlay_polygon_add + * @since 1.8 + * + * Add a new polygon overlay to the map object. + * + * @param[out] ret + * + * @see elm_map_overlay_polygon_add + * + * @ingroup Map + */ +#define elm_obj_map_overlay_polygon_add(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_POLYGON_ADD), EO_TYPECHECK(Elm_Map_Overlay **, ret) + +/** + * @def elm_obj_map_overlay_circle_add + * @since 1.8 + * + * Add a new circle overlay to the map object. + * + * @param[in] lon + * @param[in] lat + * @param[in] radius + * @param[out] ret + * + * @see elm_map_overlay_circle_add + * + * @ingroup Map + */ +#define elm_obj_map_overlay_circle_add(lon, lat, radius, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_CIRCLE_ADD), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat), EO_TYPECHECK(double, radius), EO_TYPECHECK(Elm_Map_Overlay **, ret) + +/** + * @def elm_obj_map_overlay_scale_add + * @since 1.8 + * + * Add a new scale overlay to the map object. + * + * @param[in] x + * @param[in] y + * @param[out] ret + * + * @see elm_map_overlay_scale_add + * + * @ingroup Map + */ +#define elm_obj_map_overlay_scale_add(x, y, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_SCALE_ADD), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Elm_Map_Overlay **, ret) +#ifdef ELM_EMAP + +/** + * @def elm_obj_map_track_add + * @since 1.8 + * + * Add a track on the map + * + * @param[in] emap + * @param[out] ret + * + * @see elm_map_track_add + * + * @ingroup Map + */ +#define elm_obj_map_track_add(emap, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_TRACK_ADD), EO_TYPECHECK(void *, emap), EO_TYPECHECK(Evas_Object **, ret) + +/** + * @def elm_obj_map_track_remove + * @since 1.8 + * + * Remove a track from the map + * + * @param[in] route + * + * @see elm_map_track_remove + * + * @ingroup Map + */ +#define elm_obj_map_track_remove(route) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_TRACK_REMOVE), EO_TYPECHECK(Evas_Object *, route) diff --git a/src/lib/elm_map_legacy.h b/src/lib/elm_map_legacy.h new file mode 100644 index 000000000..36fb0c338 --- /dev/null +++ b/src/lib/elm_map_legacy.h @@ -0,0 +1,723 @@ +/** + * Set the zoom level of the map. + * + * @param obj The map object. + * @param zoom The zoom level to set. + * + * This sets the zoom level. + * + * It will respect limits defined by elm_map_zoom_min_set() and + * elm_map_zoom_max_set(). + * + * By default these values are 0 (world map) and 18 (maximum zoom). + * + * This function should be used when 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(). + * + * @see elm_map_zoom_mode_set() + * @see elm_map_zoom_get() + * + * @ingroup Map + */ +EAPI void elm_map_zoom_set(Evas_Object *obj, int zoom); + +/** + * Get the zoom level of the map. + * + * @param obj The map object. + * @return The current zoom level. + * + * This returns the current zoom level of the map object. + * + * Note that if you set the fill mode to 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 to account for map size and map viewport size. + * + * @see elm_map_zoom_set() for details. + * + * @ingroup Map + */ +EAPI int elm_map_zoom_get(const Evas_Object *obj); + +/** + * Set the zoom mode used by the map object. + * + * @param obj The map object. + * @param mode The zoom mode of the map, being it one of #ELM_MAP_ZOOM_MODE_MANUAL + * (default), #ELM_MAP_ZOOM_MODE_AUTO_FIT, or #ELM_MAP_ZOOM_MODE_AUTO_FILL. + * + * 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 will stay at that level until changed by code + * or until zoom mode is changed. This is the default mode. + * + * The Automatic modes will allow the map object to automatically + * adjust zoom mode based on properties. #ELM_MAP_ZOOM_MODE_AUTO_FIT will + * adjust zoom so the map fits inside the scroll frame with no pixels + * outside this area. #ELM_MAP_ZOOM_MODE_AUTO_FILL will be similar but + * ensure 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. + * + * @see elm_map_zoom_set() + * + * @ingroup Map + */ +EAPI void elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode); + +/** + * Get the zoom mode used by the map object. + * + * @param obj The map object. + * @return The zoom mode of the map, being it one of #ELM_MAP_ZOOM_MODE_MANUAL + * (default), #ELM_MAP_ZOOM_MODE_AUTO_FIT, or #ELM_MAP_ZOOM_MODE_AUTO_FILL. + * + * This function returns the current zoom mode used by the map object. + * + * @see elm_map_zoom_mode_set() for more details. + * + * @ingroup Map + */ +EAPI Elm_Map_Zoom_Mode elm_map_zoom_mode_get(const Evas_Object *obj); + +/** + * Set the maximum zoom of the source. + * + * @param obj The map object. + * @param zoom New maximum zoom value to be used. + * + * @see elm_map_zoom_max_get() for details. + * + * @ingroup Map + */ +EAPI void elm_map_zoom_max_set(Evas_Object *obj, int zoom); + +/** + * Get the maximum zoom of the source. + * + * @param obj The map object. + * @return Returns the maximum zoom of the source. + * + * @see elm_map_zoom_max_set() for details. + * + * @ingroup Map + */ +EAPI int elm_map_zoom_max_get(const Evas_Object *obj); + +/** + * Set the minimum zoom of the source. + * + * @param obj The map object. + * @param zoom New minimum zoom value to be used. + * + * @see elm_map_zoom_min_get() for details. + * + * @ingroup Map + */ +EAPI void elm_map_zoom_min_set(Evas_Object *obj, int zoom); + +/** + * Get the minimum zoom of the source. + * + * @param obj The map object. + * @return Returns the minimum zoom of the source. + * + * @see elm_map_zoom_min_set() for details. + * + * @ingroup Map + */ +EAPI int elm_map_zoom_min_get(const Evas_Object *obj); + +/** + * Animatedly bring in given coordinates to the center of the map. + * + * @param obj The map object. + * @param lon Longitude to center at. + * @param lat Latitude to center at. + * + * This causes map to jump to the given @p lat and @p lon 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. + * + * @see elm_map_region_show() for a function to avoid animation. + * @see elm_map_region_get() + * + * @ingroup Map + */ +EAPI void elm_map_region_bring_in(Evas_Object *obj, double lon, double lat); + +/** + * Show the given coordinates at the center of the map, @b immediately. + * + * @param obj The map object. + * @param lon Longitude to center at. + * @param lat Latitude to center at. + * + * This causes map to @b redraw its viewport's contents to the + * region containing the given @p lat and @p lon, that will be moved to the + * center of the map. + * + * @see elm_map_region_bring_in() for a function to move with animation. + * @see elm_map_region_get() + * + * @ingroup Map + */ +EAPI void elm_map_region_show(Evas_Object *obj, double lon, double lat); + +/** + * Get the current geographic coordinates of the map. + * + * @param obj The map object. + * @param lon Pointer to store longitude. + * @param lat Pointer to store latitude. + * + * 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(). + * + * @see elm_map_region_bring_in() + * @see elm_map_region_show() + * + * @ingroup Map + */ +EAPI void elm_map_region_get(const Evas_Object *obj, double *lon, double *lat); + +/** + * Pause or unpause the map. + * + * @param obj The map object. + * @param paused Use @c EINA_TRUE to pause the map @p obj or @c EINA_FALSE + * to unpause it. + * + * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE) + * for map. + * + * The default is off. + * + * This will stop zooming using animation, changing zoom levels will + * change instantly. This will stop any existing animations that are running. + * + * @see elm_map_paused_get() + * + * @ingroup Map + */ +EAPI void elm_map_paused_set(Evas_Object *obj, Eina_Bool paused); + +/** + * Get a value whether map is paused or not. + * + * @param obj The map object. + * @return @c EINA_TRUE means map is pause. @c EINA_FALSE indicates + * it is not. + * + * This gets the current paused state for the map object. + * + * @see elm_map_paused_set() for details. + * + * @ingroup Map + */ +EAPI Eina_Bool elm_map_paused_get(const Evas_Object *obj); + +/** + * Rotate the map. + * + * @param obj The map object. + * @param degree Angle from 0.0 to 360.0 to rotate around Z axis. + * @param cx Rotation's center horizontal position. + * @param cy Rotation's center vertical position. + * + * @see elm_map_rotate_get() + * + * @ingroup Map + */ +EAPI void elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy); + +/** + * Get the rotate degree of the map + * + * @param obj The map object + * @param degree Pointer to store degrees from 0.0 to 360.0 + * to rotate around Z axis. + * @param cx Pointer to store rotation's center horizontal position. + * @param cy Pointer to store rotation's center vertical position. + * + * @see elm_map_rotate_set() to set map rotation. + * + * @ingroup Map + */ +EAPI void elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_Coord *cy); + +/** + * Enable or disable mouse wheel to be used to zoom in / out the map. + * + * @param obj The map object. + * @param disabled Use @c EINA_TRUE to disable mouse wheel or @c EINA_FALSE + * to enable it. + * + * Mouse wheel can be used for the user to zoom in or zoom out the map. + * + * It's disabled by default. + * + * @see elm_map_wheel_disabled_get() + * + * @ingroup Map + */ +EAPI void elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled); + +/** + * Get a value whether mouse wheel is enabled or not. + * + * @param obj The map object. + * @return @c EINA_TRUE means map is disabled. @c EINA_FALSE indicates + * it is enabled. + * + * Mouse wheel can be used for the user to zoom in or zoom out the map. + * + * @see elm_map_wheel_disabled_set() for details. + * + * @ingroup Map + */ +EAPI Eina_Bool elm_map_wheel_disabled_get(const Evas_Object *obj); + +/** + * Get the information of tile load status. + * + * @param obj The map object. + * @param try_num Pointer to store number of tiles download requested. + * @param finish_num Pointer to store number of tiles successfully downloaded. + * + * This gets the current tile loaded status for the map object. + * + * @ingroup Map + */ +EAPI void elm_map_tile_load_status_get(const Evas_Object *obj, int *try_num, int *finish_num); + +/** + * Convert canvas coordinates into geographic coordinates + * (longitude, latitude). + * + * @param obj The map object. + * @param x horizontal coordinate of the point to convert. + * @param y vertical coordinate of the point to convert. + * @param lon A pointer to the longitude. + * @param lat A pointer to the latitude. + * + * This gets longitude and latitude from canvas x, y coordinates. The canvas + * coordinates mean x, y coordinate from current viewport. + * + * see elm_map_region_to_canvas_convert() + * + * @ingroup Map + */ +EAPI void elm_map_canvas_to_region_convert(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, double *lon, double *lat); + +/** + * Convert geographic coordinates (longitude, latitude) + * into canvas coordinates. + * + * @param obj The map object. + * @param lon The longitude to convert. + * @param lat The latitude to convert. + * @param x A pointer to horizontal coordinate. + * @param y A pointer to vertical coordinate. + * + * This gets canvas x, y coordinates from longitude and latitude. The canvas + * coordinates mean x, y coordinate from current viewport. + * + * see elm_map_canvas_to_region_convert() + * + * @ingroup Map + */ +EAPI void elm_map_region_to_canvas_convert(const Evas_Object *obj, double lon, double lat, Evas_Coord *x, Evas_Coord *y); + +/** + * Set the user agent used by the map object to access routing services. + * + * @param obj The map object. + * @param user_agent The user agent to be used by the map. + * + * User agent is a client application implementing a network protocol used + * in communications within a client–server distributed computing system + * + * The @p user_agent identification string will transmitted in a header + * field @c User-Agent. + * + * @see elm_map_user_agent_get() + * + * @ingroup Map + */ +EAPI void elm_map_user_agent_set(Evas_Object *obj, const char *user_agent); + +/** + * Get the user agent used by the map object. + * + * @param obj The map object. + * @return The user agent identification string used by the map. + * + * @see elm_map_user_agent_set() for details. + * + * @ingroup Map + */ +EAPI const char *elm_map_user_agent_get(const Evas_Object *obj); + +/** + * Set the current source of the map for a specific type. + * + * @param obj The map object. + * @param type source type. + * @param source_name The source to be used. + * + * Map widget retrieves tile images that composes the map from a web service. + * This web service can be set with this method + * for ELM_MAP_SOURCE_TYPE_TILE type. + * A different service can return a different maps with different + * information and it can use different zoom values. + * + * Map widget provides route data based on a external web service. + * This web service can be set with this method + * for ELM_MAP_SOURCE_TYPE_ROUTE type. + * + * Map widget also provide geoname data based on a external web service. + * This web service can be set with this method + * for ELM_MAP_SOURCE_TYPE_NAME type. + * + * The @p source_name need to match one of the names provided by + * elm_map_sources_get(). + * + * The current source can be get using elm_map_source_get(). + * + * @see elm_map_sources_get() + * @see elm_map_source_get() + * + * @ingroup Map + */ +EAPI void elm_map_source_set(Evas_Object *obj, Elm_Map_Source_Type type, const char *source_name); + +/** + * Get the name of currently used source for a specific type. + * + * @param obj The map object. + * @param type source type. + * @return Returns the name of the source in use. + * + * @see elm_map_sources_get() + * @see elm_map_source_set() + * + * @ingroup Map + */ +EAPI const char *elm_map_source_get(const Evas_Object *obj, Elm_Map_Source_Type type); + +/** + * Get the names of available sources for a specific type. + * + * @param obj The map object. + * @param type source type. + * @return The char pointer array of source names. + * + * It will provide a list with all available sources. + * Current source can be set by elm_map_source_set(), or get with + * elm_map_source_get(). + * + * At least available sources of tile type: + * @li "Mapnik" + * @li "Osmarender" + * @li "CycleMap" + * @li "Maplint" + * + * At least available sources of route type: + * @li "Yours" + * + * At least available sources of name type: + * @li "Nominatim" + * + * @see elm_map_source_set() + * @see elm_map_source_get() + * + * @ingroup Map + */ +EAPI const char **elm_map_sources_get(const Evas_Object *obj, Elm_Map_Source_Type type); + +/** + * Add a new route to the map object. + * + * @param obj The map object. + * @param type The type of transport to be considered when tracing a route. + * @param method The routing method, what should be prioritized. + * @param flon The start longitude. + * @param flat The start latitude. + * @param tlon The destination longitude. + * @param tlat The destination latitude. + * @param route_cb The route to be traced. + * @param data A pointer of user data. + * + * @return The created route or @c NULL upon failure. + * + * A route will be traced by point on coordinates (@p flat, @p flon) + * to point on coordinates (@p tlat, @p tlon), using the route service + * set with elm_map_source_set(). + * + * It will take @p type on consideration to define the route, + * depending if the user will be walking or driving, the route may vary. + * One of #ELM_MAP_ROUTE_TYPE_MOTOCAR, #ELM_MAP_ROUTE_TYPE_BICYCLE, + * or #ELM_MAP_ROUTE_TYPE_FOOT need to be used. + * + * Another parameter is what the route should prioritize, the minor distance + * or the less time to be spend on the route. So @p method should be one + * of #ELM_MAP_ROUTE_METHOD_SHORTEST or #ELM_MAP_ROUTE_METHOD_FASTEST. + * + * Routes created with this method can be deleted with + * elm_map_route_del(), + * and distance can be get with elm_map_route_distance_get(). + * + * @see elm_map_route_del() + * @see elm_map_route_distance_get() + * @see elm_map_source_set() + * + * @ingroup Map + */ +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); + +/** + * Request a address or geographic coordinates(longitude, latitude) + * from a given address or geographic coordinate(longitude, latitude). + * + * @param obj The map object. + * @param address The address. + * @param lon The longitude. + * @param lat The latitude. + * @param name_cb The callback function. + * @param data The user callback data. + * @return name A #Elm_Map_Name handle for this coordinate. + * + * If you want to get address from geographic coordinates, set input @p address + * as @c NULL and set @p lon, @p lat as you want to convert. + * If address is set except NULL, @p lon and @p lat are checked. + * + * To get the string for this address, elm_map_name_address_get() + * should be used after callback or "name,loaded" signal is called. + * + * To get the longitude and latitude, elm_map_name_region_get() + * should be used. + * + * @ingroup Map + */ +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); + +/** + * Add a new overlay to the map object. This overlay has a default type. + * + * @param obj The map object to add a new overlay. + * @param lon The longitude of the overlay. + * @param lat The latitude of the overlay. + * @return The created overlay or @c NULL upon failure. + * + * A overlay will be created and shown in a specific point of the map, defined + * by @p lon and @p lat. + * + * The created overlay has a default style layout before content or + * icon is set. + * If content or icon is set, those are displayed instead of default style + * layout. + * You can set by using elm_map_overlay_content_set() or + * elm_map_overlay_icon_set(). If NULL is set, default style + * is shown again. + * + * Overlay created with this method can be deleted by elm_map_overlay_del(). + * + * @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() + * + * @ingroup Map + */ +EAPI Elm_Map_Overlay * elm_map_overlay_add(Evas_Object *obj, double lon, double lat); + +/** + * Return all overlays in the map object. + * + * @param obj The map object to return overlays. + * @return The list of all overlays or @c NULL upon failure. + * + * This list includes group overlays also. + * So this can be changed dynamically while zooming and panning. + * + * @since 1.7 + * + * @ingroup Map + */ +EAPI EAPI Eina_List * elm_map_overlays_get(Evas_Object *obj); + +/** + * Add a new class overlay to the map object. + * This overlay has a class type. + * + * @param obj The map object to add a new overlay. + * @return The created overlay or @c NULL upon failure. + * + * This overlay is not shown before 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. + * + * 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 itself. + * + * Also these changes have a influence on the overlays in the same class + * even if each overlay is alone and is not grouped. + * + * @see elm_map_overlay_del() + * @see elm_map_overlay_add() + * @see elm_map_overlay_bubble_add() + * + * @ingroup Map + */ +EAPI Elm_Map_Overlay * elm_map_overlay_class_add(Evas_Object *obj); + +/** + * Add a new bubble overlay to the map object. + * This overlay has a bubble type. + * + * @param obj The map object to add a new overlay. + * @return The created overlay or @c NULL upon failure. + * + * A bubble will not be displayed before geographic coordinates are set or + * any other overlays are followed. + * + * This overlay has a bubble style layout and icon or content can not + * be set. + * + * Overlay created with this method can be deleted with elm_map_overlay_del(). + * + * @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() + * + * @ingroup Map + */ +EAPI Elm_Map_Overlay * elm_map_overlay_bubble_add(Evas_Object *obj); + +/** + * Add a new route overlay to the map object. + * This overlay has a route type. + * + * @param obj The map object to add a new overlay. + * @param route The route object to make a overlay. + * @return The created overlay or @c NULL upon failure. + * + * This overlay has a route style layout and icon or content can not + * be set. + * + * The color scheme can be changed by elm_map_overlay_content_set(). + * + * Overlay created with this method can be deleted with elm_map_overlay_del(). + * + * @see elm_map_overlay_del() + * @see elm_map_overlay_class_add() + * @see elm_map_overlay_content_set() + * @see elm_map_overlay_content_get() + * + * @ingroup Map + */ +EAPI Elm_Map_Overlay * elm_map_overlay_route_add(Evas_Object *obj, const Elm_Map_Route *route); + +/** + * Add a new line overlay to the map object. + * This overlay has a line type. + * + * @param obj The map object to add a new overlay. + * @param flon The start longitude. + * @param flat The start latitude. + * @param tlon The destination longitude. + * @param tlat The destination latitude. + * @return The created overlay or @c NULL upon failure. + * + * Overlay created with this method can be deleted with elm_map_overlay_del(). + * + * @see elm_map_overlay_del() + * + * @ingroup Map + */ +EAPI Elm_Map_Overlay * elm_map_overlay_line_add(Evas_Object *obj, double flon, double flat, double tlon, double tlat); + +/** + * Add a new polygon overlay to the map object. + * This overlay has a polygon type. + * + * @param obj The map object to add a new overlay. + * @return The created overlay or @c NULL upon failure. + * + * At least 3 regions should be added to show the polygon overlay. + * + * Overlay created with this method can be deleted with elm_map_overlay_del(). + * + * @see elm_map_overlay_polygon_region_add() + * @see elm_map_overlay_del() + * + * @ingroup Map + */ +EAPI Elm_Map_Overlay * elm_map_overlay_polygon_add(Evas_Object *obj); + +/** + * Add a new circle overlay to the map object. + * This overlay has a circle type. + * + * @param obj The map object to add a new overlay. + * @param lon The center longitude. + * @param lat The center latitude. + * @param radius The pixel length of radius. + * @return The created overlay or @c NULL upon failure. + * + * Overlay created with this method can be deleted with elm_map_overlay_del(). + * + * @see elm_map_overlay_del() + * + * @ingroup Map + */ +EAPI Elm_Map_Overlay * elm_map_overlay_circle_add(Evas_Object *obj, double lon, double lat, double radius); + +/** + * Add a new scale overlay to the map object. + * This overlay has a scale type. + * + * @param obj The map object to add a new overlay. + * @param x horizontal pixel coordinate. + * @param y vertical pixel coordinate + * @return The created overlay or @c NULL upon failure. + * + * The scale overlay shows the ratio of a distance on the map to the corresponding distance. + * + * Overlay created with this method can be deleted with elm_map_overlay_del(). + * + * @see elm_map_overlay_del() + * + * @ingroup Map + */ +EAPI Elm_Map_Overlay * elm_map_overlay_scale_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y); + +/** + * Add a track on the map + * + * @param obj The map object. + * @param emap The emap route object. + * @return The route object. This is an elm object of type Route. + * + * @see elm_route_add() for details. + * + * @ingroup Map + */ +EAPI Evas_Object *elm_map_track_add(Evas_Object *obj, void *emap); + +/** + * Remove a track from the map + * + * @param obj The map object. + * @param route The track to remove. + * + * @ingroup Map + */ +EAPI void elm_map_track_remove(Evas_Object *obj, Evas_Object *route); diff --git a/src/lib/elm_menu.h b/src/lib/elm_menu.h index 46a18f5bd..2a5350f72 100644 --- a/src/lib/elm_menu.h +++ b/src/lib/elm_menu.h @@ -34,381 +34,13 @@ * @{ */ -#define ELM_OBJ_MENU_CLASS elm_obj_menu_class_get() - -const Eo_Class *elm_obj_menu_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_MENU_BASE_ID; - -enum -{ - ELM_OBJ_MENU_SUB_ID_MOVE, - ELM_OBJ_MENU_SUB_ID_CLOSE, - ELM_OBJ_MENU_SUB_ID_ITEM_ADD, - ELM_OBJ_MENU_SUB_ID_ITEM_SEPARATOR_ADD, - ELM_OBJ_MENU_SUB_ID_ITEMS_GET, - ELM_OBJ_MENU_SUB_ID_FIRST_ITEM_GET, - ELM_OBJ_MENU_SUB_ID_LAST_ITEM_GET, - ELM_OBJ_MENU_SUB_ID_SELECTED_ITEM_GET, - ELM_OBJ_MENU_SUB_ID_LAST -}; - -#define ELM_OBJ_MENU_ID(sub_id) (ELM_OBJ_MENU_BASE_ID + sub_id) - - -/** - * @def elm_obj_menu_move - * @since 1.8 - * - * @brief Move the menu to a new position - * - * @param[in] x - * @param[in] y - * - * @see elm_menu_move - */ -#define elm_obj_menu_move(x, y) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_MOVE), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y) - -/** - * @def elm_obj_menu_close - * @since 1.8 - * - * @brief Close a opened menu - * - * - * @see elm_menu_close - */ -#define elm_obj_menu_close() ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_CLOSE) - -/** - * @def elm_obj_menu_item_add - * @since 1.8 - * - * @brief Add an item at the end of the given menu widget - * - * @param[in] parent - * @param[in] icon - * @param[in] label - * @param[in] func - * @param[in] data - * @param[out] ret - * - * @see elm_menu_item_add - */ -#define elm_obj_menu_item_add(parent, icon, label, func, data, ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEM_ADD), EO_TYPECHECK(Elm_Object_Item *, parent), EO_TYPECHECK(const char *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_menu_item_separator_add - * @since 1.8 - * - * @brief Add a separator item to menu obj under @p parent. - * - * @param[in] parent - * @param[out] ret - * - * @see elm_menu_item_separator_add - */ -#define elm_obj_menu_item_separator_add(parent, ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEM_SEPARATOR_ADD), EO_TYPECHECK(Elm_Object_Item *, parent), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_menu_items_get - * @since 1.8 - * - * @brief Returns a list of item's items. - * - * @param[out] ret - * - * @see elm_menu_items_get - */ -#define elm_obj_menu_items_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEMS_GET), EO_TYPECHECK(const Eina_List **, ret) - -/** - * @def elm_obj_menu_first_item_get - * @since 1.8 - * - * @brief Get the first item in the menu - * - * @param[out] ret - * - * @see elm_menu_first_item_get - */ -#define elm_obj_menu_first_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_FIRST_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_menu_last_item_get - * @since 1.8 - * - * @brief Get the last item in the menu - * - * @param[out] ret - * - * @see elm_menu_last_item_get - */ -#define elm_obj_menu_last_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_LAST_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_menu_selected_item_get - * @since 1.8 - * - * @brief Get the selected item in the menu - * - * @param[out] ret - * - * @see elm_menu_selected_item_get - */ -#define elm_obj_menu_selected_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_SELECTED_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @brief Add a new menu to the parent - * - * @param parent The parent object. - * @return The new object or NULL if it cannot be created. - * - * @ingroup Menu - */ -EAPI Evas_Object *elm_menu_add(Evas_Object *parent); - -/** - * @brief Set the parent for the given menu widget - * - * @param obj The menu object. - * @param parent The new parent. - * - * @ingroup Menu - */ -EAPI void elm_menu_parent_set(Evas_Object *obj, Evas_Object *parent); - -/** - * @brief Get the parent for the given menu widget - * - * @param 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 Move the menu to a new position - * - * @param obj The menu object. - * @param x The new position. - * @param y The new position. - * - * Sets the top-left position of the menu to (@p x,@p y). - * - * @note @p x and @p y coordinates are relative to parent. - * - * @ingroup Menu - */ -EAPI void elm_menu_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y); - -/** - * @brief Close a opened menu - * - * @param obj the menu object - * @return void - * - * Hides the menu and all it's sub-menus. - * - * @ingroup Menu - */ -EAPI void elm_menu_close(Evas_Object *obj); - -/** - * @brief Returns a list of @p item's items. - * - * @param obj The menu object - * @return An Eina_List* of @p item's items - * - * @ingroup Menu - */ -EAPI const Eina_List *elm_menu_items_get(const Evas_Object *obj); - -/** - * Get the real Evas(Edje) object created to implement the view of a given - * menu @p item. - * - * @param it The menu item. - * @return The base Edje object containing the swallowed content associated with - * @p it. - * - * @warning Don't manipulate this object! - * - * @ingroup Menu - */ -EAPI Evas_Object *elm_menu_item_object_get(const Elm_Object_Item *it); - -/** - * @brief Add an item at the end of the given menu widget - * - * @param obj The menu object. - * @param parent The parent menu item (optional) - * @param icon An icon display on the item. The icon will be destroyed by the menu. - * @param label The label of the item. - * @param func Function called when the user select the item. - * @param data Data sent by the callback. - * @return Returns the new item. - * - * @note This function does not accept relative icon path. - * - * @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 Set the icon of a menu item to the standard icon with name @p icon - * - * @param it The menu item object. - * @param icon The name of icon object to set for the content of @p item - * - * Once this icon is set, any previously set icon will be deleted. - * - * @ingroup Menu - */ -EAPI void elm_menu_item_icon_name_set(Elm_Object_Item *it, const char *icon); - -/** - * @brief Get the string representation from the icon of a menu item - * - * @param it The menu item object. - * @return The string representation of @p item's icon or 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 Set the selected state of @p item. - * - * @param it The menu item object. - * @param 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 Get the selected state of @p item. - * - * @param 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 Add a separator item to menu @p obj under @p parent. - * - * @param obj The menu object - * @param parent The item to add the separator under - * @return The created item or NULL on failure - * - * This is item is a @ref Separator. - * - * @ingroup Menu - */ -EAPI Elm_Object_Item *elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent); - -/** - * @brief Returns whether @p item is a separator. - * - * @param it The item to check - * @return If true, @p item is a separator - * - * @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 @p item's subitems. - * - * @param it The item - * @return An Eina_List* of @p item's subitems - * - * @see elm_menu_add() - * - * @ingroup Menu - */ -EAPI const Eina_List *elm_menu_item_subitems_get(const Elm_Object_Item *it); - -/** - * @brief Get the position of a menu item - * - * @param it The menu item - * @return The item's index - * - * 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. - * - * @note Index values begin with 0 - * - * @ingroup Menu - */ -EAPI unsigned int elm_menu_item_index_get(const Elm_Object_Item *it); - -/** - * @brief Get the selected item in the menu - * - * @param obj The menu object - * @return The selected item, or NULL if none - * - * @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 Get the last item in the menu - * - * @param obj The menu object - * @return The last item, or NULL if none - * - * @ingroup Menu - */ -EAPI Elm_Object_Item *elm_menu_last_item_get(const Evas_Object *obj); - -/** - * @brief Get the first item in the menu - * - * @param obj The menu object - * @return The first item, or NULL if none - * - * @ingroup Menu - */ -EAPI Elm_Object_Item *elm_menu_first_item_get(const Evas_Object *obj); - -/** - * @brief Get the next item in the menu. - * - * @param it The menu item object. - * @return The item after it, or NULL if none - * - * @ingroup Menu - */ -EAPI Elm_Object_Item *elm_menu_item_next_get(const Elm_Object_Item *it); - -/** - * @brief Get the previous item in the menu. - * - * @param it The menu item object. - * @return The item before it, or NULL if none - * - * @ingroup Menu - */ -EAPI Elm_Object_Item *elm_menu_item_prev_get(const Elm_Object_Item *it); - +#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 /** * @} */ diff --git a/src/lib/elm_menu_common.h b/src/lib/elm_menu_common.h new file mode 100644 index 000000000..c91212444 --- /dev/null +++ b/src/lib/elm_menu_common.h @@ -0,0 +1,119 @@ +/** + * Get the real Evas(Edje) object created to implement the view of a given + * menu @p item. + * + * @param it The menu item. + * @return The base Edje object containing the swallowed content associated with + * @p it. + * + * @warning Don't manipulate this object! + * + * @ingroup Menu + */ +EAPI Evas_Object *elm_menu_item_object_get(const Elm_Object_Item *it); + +/** + * @brief Set the icon of a menu item to the standard icon with name @p icon + * + * @param it The menu item object. + * @param icon The name of icon object to set for the content of @p item + * + * Once this icon is set, any previously set icon will be deleted. + * + * @ingroup Menu + */ +EAPI void elm_menu_item_icon_name_set(Elm_Object_Item *it, const char *icon); + +/** + * @brief Get the string representation from the icon of a menu item + * + * @param it The menu item object. + * @return The string representation of @p item's icon or 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 Set the selected state of @p item. + * + * @param it The menu item object. + * @param 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 Get the selected state of @p item. + * + * @param 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 Returns whether @p item is a separator. + * + * @param it The item to check + * @return If true, @p item is a separator + * + * @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 @p item's subitems. + * + * @param it The item + * @return An Eina_List* of @p item's subitems + * + * @see elm_menu_add() + * + * @ingroup Menu + */ +EAPI const Eina_List *elm_menu_item_subitems_get(const Elm_Object_Item *it); + +/** + * @brief Get the position of a menu item + * + * @param it The menu item + * @return The item's index + * + * 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. + * + * @note Index values begin with 0 + * + * @ingroup Menu + */ +EAPI unsigned int elm_menu_item_index_get(const Elm_Object_Item *it); + +/** + * @brief Get the next item in the menu. + * + * @param it The menu item object. + * @return The item after it, or NULL if none + * + * @ingroup Menu + */ +EAPI Elm_Object_Item *elm_menu_item_next_get(const Elm_Object_Item *it); + +/** + * @brief Get the previous item in the menu. + * + * @param it The menu item object. + * @return The item before it, or NULL if none + * + * @ingroup Menu + */ +EAPI Elm_Object_Item *elm_menu_item_prev_get(const Elm_Object_Item *it); + diff --git a/src/lib/elm_menu_eo.h b/src/lib/elm_menu_eo.h new file mode 100644 index 000000000..e6c8a77e1 --- /dev/null +++ b/src/lib/elm_menu_eo.h @@ -0,0 +1,139 @@ +#define ELM_OBJ_MENU_CLASS elm_obj_menu_class_get() + +const Eo_Class *elm_obj_menu_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_MENU_BASE_ID; + +enum +{ + ELM_OBJ_MENU_SUB_ID_MOVE, + ELM_OBJ_MENU_SUB_ID_CLOSE, + ELM_OBJ_MENU_SUB_ID_ITEM_ADD, + ELM_OBJ_MENU_SUB_ID_ITEM_SEPARATOR_ADD, + ELM_OBJ_MENU_SUB_ID_ITEMS_GET, + ELM_OBJ_MENU_SUB_ID_FIRST_ITEM_GET, + ELM_OBJ_MENU_SUB_ID_LAST_ITEM_GET, + ELM_OBJ_MENU_SUB_ID_SELECTED_ITEM_GET, + ELM_OBJ_MENU_SUB_ID_LAST +}; + +#define ELM_OBJ_MENU_ID(sub_id) (ELM_OBJ_MENU_BASE_ID + sub_id) + + +/** + * @def elm_obj_menu_move + * @since 1.8 + * + * @brief Move the menu to a new position + * + * @param[in] x + * @param[in] y + * + * @see elm_menu_move + * + * @ingroup Menu + */ +#define elm_obj_menu_move(x, y) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_MOVE), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y) + +/** + * @def elm_obj_menu_close + * @since 1.8 + * + * @brief Close a opened menu + * + * + * @see elm_menu_close + * + * @ingroup Menu + */ +#define elm_obj_menu_close() ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_CLOSE) + +/** + * @def elm_obj_menu_item_add + * @since 1.8 + * + * @brief Add an item at the end of the given menu widget + * + * @param[in] parent + * @param[in] icon + * @param[in] label + * @param[in] func + * @param[in] data + * @param[out] ret + * + * @see elm_menu_item_add + * + * @ingroup Menu + */ +#define elm_obj_menu_item_add(parent, icon, label, func, data, ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEM_ADD), EO_TYPECHECK(Elm_Object_Item *, parent), EO_TYPECHECK(const char *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_menu_item_separator_add + * @since 1.8 + * + * @brief Add a separator item to menu obj under @p parent. + * + * @param[in] parent + * @param[out] ret + * + * @see elm_menu_item_separator_add + * + * @ingroup Menu + */ +#define elm_obj_menu_item_separator_add(parent, ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEM_SEPARATOR_ADD), EO_TYPECHECK(Elm_Object_Item *, parent), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_menu_items_get + * @since 1.8 + * + * @brief Returns a list of item's items. + * + * @param[out] ret + * + * @see elm_menu_items_get + * + * @ingroup Menu + */ +#define elm_obj_menu_items_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEMS_GET), EO_TYPECHECK(const Eina_List **, ret) + +/** + * @def elm_obj_menu_first_item_get + * @since 1.8 + * + * @brief Get the first item in the menu + * + * @param[out] ret + * + * @see elm_menu_first_item_get + * + * @ingroup Menu + */ +#define elm_obj_menu_first_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_FIRST_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_menu_last_item_get + * @since 1.8 + * + * @brief Get the last item in the menu + * + * @param[out] ret + * + * @see elm_menu_last_item_get + * + * @ingroup Menu + */ +#define elm_obj_menu_last_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_LAST_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_menu_selected_item_get + * @since 1.8 + * + * @brief Get the selected item in the menu + * + * @param[out] ret + * + * @see elm_menu_selected_item_get + * + * @ingroup Menu + */ +#define elm_obj_menu_selected_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_SELECTED_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret) diff --git a/src/lib/elm_menu_legacy.h b/src/lib/elm_menu_legacy.h new file mode 100644 index 000000000..0282273ae --- /dev/null +++ b/src/lib/elm_menu_legacy.h @@ -0,0 +1,131 @@ +/** + * @brief Add a new menu to the parent + * + * @param parent The parent object. + * @return The new object or NULL if it cannot be created. + * + * @ingroup Menu + */ +EAPI Evas_Object *elm_menu_add(Evas_Object *parent); + +/** + * @brief Set the parent for the given menu widget + * + * @param obj The menu object. + * @param parent The new parent. + * + * @ingroup Menu + */ +EAPI void elm_menu_parent_set(Evas_Object *obj, Evas_Object *parent); + +/** + * @brief Get the parent for the given menu widget + * + * @param 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 Move the menu to a new position + * + * @param obj The menu object. + * @param x The new position. + * @param y The new position. + * + * Sets the top-left position of the menu to (@p x,@p y). + * + * @note @p x and @p y coordinates are relative to parent. + * + * @ingroup Menu + */ +EAPI void elm_menu_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y); + +/** + * @brief Close a opened menu + * + * @param obj the menu object + * @return void + * + * Hides the menu and all it's sub-menus. + * + * @ingroup Menu + */ +EAPI void elm_menu_close(Evas_Object *obj); + +/** + * @brief Add an item at the end of the given menu widget + * + * @param obj The menu object. + * @param parent The parent menu item (optional) + * @param icon An icon display on the item. The icon will be destroyed by the menu. + * @param label The label of the item. + * @param func Function called when the user select the item. + * @param data Data sent by the callback. + * @return Returns the new item. + * + * @note This function does not accept relative icon path. + * + * @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 Add a separator item to menu @p obj under @p parent. + * + * @param obj The menu object + * @param parent The item to add the separator under + * @return The created item or NULL on failure + * + * This is item is a @ref Separator. + * + * @ingroup Menu + */ +EAPI Elm_Object_Item *elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent); + +/** + * @brief Returns a list of @p item's items. + * + * @param obj The menu object + * @return An Eina_List* of @p item's items + * + * @ingroup Menu + */ +EAPI const Eina_List *elm_menu_items_get(const Evas_Object *obj); + +/** + * @brief Get the first item in the menu + * + * @param obj The menu object + * @return The first item, or NULL if none + * + * @ingroup Menu + */ +EAPI Elm_Object_Item *elm_menu_first_item_get(const Evas_Object *obj); + +/** + * @brief Get the last item in the menu + * + * @param obj The menu object + * @return The last item, or NULL if none + * + * @ingroup Menu + */ +EAPI Elm_Object_Item *elm_menu_last_item_get(const Evas_Object *obj); + +/** + * @brief Get the selected item in the menu + * + * @param obj The menu object + * @return The selected item, or NULL if none + * + * @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); diff --git a/src/lib/elm_panel.h b/src/lib/elm_panel.h index bd70b1f8d..749dc4413 100644 --- a/src/lib/elm_panel.h +++ b/src/lib/elm_panel.h @@ -28,159 +28,13 @@ * @{ */ - - -#define ELM_OBJ_PANEL_CLASS elm_obj_panel_class_get() - -const Eo_Class *elm_obj_panel_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_PANEL_BASE_ID; - -enum -{ - ELM_OBJ_PANEL_SUB_ID_ORIENT_SET, - ELM_OBJ_PANEL_SUB_ID_ORIENT_GET, - ELM_OBJ_PANEL_SUB_ID_HIDDEN_SET, - ELM_OBJ_PANEL_SUB_ID_HIDDEN_GET, - ELM_OBJ_PANEL_SUB_ID_TOGGLE, - ELM_OBJ_PANEL_SUB_ID_LAST -}; - -#define ELM_OBJ_PANEL_ID(sub_id) (ELM_OBJ_PANEL_BASE_ID + sub_id) - - -/** - * @def elm_obj_panel_orient_set - * @since 1.8 - * - * @brief Sets the orientation of the panel - * - * @param[in] orient - * - * @see elm_panel_orient_set - */ -#define elm_obj_panel_orient_set(orient) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_ORIENT_SET), EO_TYPECHECK(Elm_Panel_Orient, orient) - -/** - * @def elm_obj_panel_orient_get - * @since 1.8 - * - * @brief Get the orientation of the panel. - * - * @param[out] ret - * - * @see elm_panel_orient_get - */ -#define elm_obj_panel_orient_get(ret) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_ORIENT_GET), EO_TYPECHECK(Elm_Panel_Orient *, ret) - -/** - * @def elm_obj_panel_hidden_set - * @since 1.8 - * - * @brief Set the state of the panel. - * - * @param[in] hidden - * - * @see elm_panel_hidden_set - */ -#define elm_obj_panel_hidden_set(hidden) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_HIDDEN_SET), EO_TYPECHECK(Eina_Bool, hidden) - -/** - * @def elm_obj_panel_hidden_get - * @since 1.8 - * - * @brief Get the state of the panel. - * - * @param[out] ret - * - * @see elm_panel_hidden_get - */ -#define elm_obj_panel_hidden_get(ret) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_HIDDEN_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_panel_toggle - * @since 1.8 - * - * @brief Toggle the hidden state of the panel from code - * - * - * @see elm_panel_toggle - */ -#define elm_obj_panel_toggle() ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_TOGGLE) - -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; - -/** - * @brief Adds a panel object - * - * @param parent The parent object - * - * @return The panel object, or NULL on failure - * - * @ingroup Panel - */ -EAPI Evas_Object *elm_panel_add(Evas_Object *parent); - -/** - * @brief Sets the orientation of the panel - * - * @param obj The panel object - * @param 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 - * - * Sets from where the panel will (dis)appear. - * - * @ingroup Panel - */ -EAPI void elm_panel_orient_set(Evas_Object *obj, Elm_Panel_Orient orient); - -/** - * @brief Get the orientation of the panel. - * - * @param obj The panel object - * @return The Elm_Panel_Orient, or ELM_PANEL_ORIENT_LEFT on failure. - * - * @ingroup Panel - */ -EAPI Elm_Panel_Orient elm_panel_orient_get(const Evas_Object *obj); - -/** - * @brief Set the state of the panel. - * - * @param obj The panel object - * @param hidden If true, the panel will run the animation to disappear. - * - * @ingroup Panel - */ -EAPI void elm_panel_hidden_set(Evas_Object *obj, Eina_Bool hidden); - -/** - * @brief Get the state of the panel. - * - * @param obj The panel object - * @return EINA_TRUE if it is hidden state - * - * @ingroup Panel - */ -EAPI Eina_Bool elm_panel_hidden_get(const Evas_Object *obj); - -/** - * @brief Toggle the hidden state of the panel from code - * - * @param obj The panel object - * - * @ingroup Panel - */ -EAPI void elm_panel_toggle(Evas_Object *obj); - +#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 /** * @} */ diff --git a/src/lib/elm_panel_common.h b/src/lib/elm_panel_common.h new file mode 100644 index 000000000..8c84d1ab1 --- /dev/null +++ b/src/lib/elm_panel_common.h @@ -0,0 +1,8 @@ +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; + diff --git a/src/lib/elm_panel_eo.h b/src/lib/elm_panel_eo.h new file mode 100644 index 000000000..6963d6042 --- /dev/null +++ b/src/lib/elm_panel_eo.h @@ -0,0 +1,87 @@ +#define ELM_OBJ_PANEL_CLASS elm_obj_panel_class_get() + +const Eo_Class *elm_obj_panel_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_PANEL_BASE_ID; + +enum +{ + ELM_OBJ_PANEL_SUB_ID_ORIENT_SET, + ELM_OBJ_PANEL_SUB_ID_ORIENT_GET, + ELM_OBJ_PANEL_SUB_ID_HIDDEN_SET, + ELM_OBJ_PANEL_SUB_ID_HIDDEN_GET, + ELM_OBJ_PANEL_SUB_ID_TOGGLE, + ELM_OBJ_PANEL_SUB_ID_LAST +}; + +#define ELM_OBJ_PANEL_ID(sub_id) (ELM_OBJ_PANEL_BASE_ID + sub_id) + + +/** + * @def elm_obj_panel_orient_set + * @since 1.8 + * + * @brief Sets the orientation of the panel + * + * @param[in] orient + * + * @see elm_panel_orient_set + * + * @ingroup Panel + */ +#define elm_obj_panel_orient_set(orient) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_ORIENT_SET), EO_TYPECHECK(Elm_Panel_Orient, orient) + +/** + * @def elm_obj_panel_orient_get + * @since 1.8 + * + * @brief Get the orientation of the panel. + * + * @param[out] ret + * + * @see elm_panel_orient_get + * + * @ingroup Panel + */ +#define elm_obj_panel_orient_get(ret) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_ORIENT_GET), EO_TYPECHECK(Elm_Panel_Orient *, ret) + +/** + * @def elm_obj_panel_hidden_set + * @since 1.8 + * + * @brief Set the state of the panel. + * + * @param[in] hidden + * + * @see elm_panel_hidden_set + * + * @ingroup Panel + */ +#define elm_obj_panel_hidden_set(hidden) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_HIDDEN_SET), EO_TYPECHECK(Eina_Bool, hidden) + +/** + * @def elm_obj_panel_hidden_get + * @since 1.8 + * + * @brief Get the state of the panel. + * + * @param[out] ret + * + * @see elm_panel_hidden_get + * + * @ingroup Panel + */ +#define elm_obj_panel_hidden_get(ret) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_HIDDEN_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_panel_toggle + * @since 1.8 + * + * @brief Toggle the hidden state of the panel from code + * + * + * @see elm_panel_toggle + * + * @ingroup Panel + */ +#define elm_obj_panel_toggle() ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_TOGGLE) diff --git a/src/lib/elm_panel_legacy.h b/src/lib/elm_panel_legacy.h new file mode 100644 index 000000000..e4ece27ac --- /dev/null +++ b/src/lib/elm_panel_legacy.h @@ -0,0 +1,64 @@ +/** + * @brief Adds a panel object + * + * @param parent The parent object + * + * @return The panel object, or NULL on failure + * + * @ingroup Panel + */ +EAPI Evas_Object *elm_panel_add(Evas_Object *parent); + +/** + * @brief Sets the orientation of the panel + * + * @param obj The panel object + * @param 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 + * + * Sets from where the panel will (dis)appear. + * + * @ingroup Panel + */ +EAPI void elm_panel_orient_set(Evas_Object *obj, Elm_Panel_Orient orient); + +/** + * @brief Get the orientation of the panel. + * + * @param obj The panel object + * @return The Elm_Panel_Orient, or ELM_PANEL_ORIENT_LEFT on failure. + * + * @ingroup Panel + */ +EAPI Elm_Panel_Orient elm_panel_orient_get(const Evas_Object *obj); + +/** + * @brief Set the state of the panel. + * + * @param obj The panel object + * @param hidden If true, the panel will run the animation to disappear. + * + * @ingroup Panel + */ +EAPI void elm_panel_hidden_set(Evas_Object *obj, Eina_Bool hidden); + +/** + * @brief Get the state of the panel. + * + * @param obj The panel object + * @return EINA_TRUE if it is hidden state + * + * @ingroup Panel + */ +EAPI Eina_Bool elm_panel_hidden_get(const Evas_Object *obj); + +/** + * @brief Toggle the hidden state of the panel from code + * + * @param obj The panel object + * + * @ingroup Panel + */ +EAPI void elm_panel_toggle(Evas_Object *obj); diff --git a/src/lib/elm_panes.h b/src/lib/elm_panes.h index 2c458f363..7838cc357 100644 --- a/src/lib/elm_panes.h +++ b/src/lib/elm_panes.h @@ -48,284 +48,18 @@ * @li @ref panes_example */ -#define ELM_OBJ_PANES_CLASS elm_obj_panes_class_get() - -const Eo_Class *elm_obj_panes_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_PANES_BASE_ID; - -enum -{ - ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_GET, - ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_SET, - ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_GET, - ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_SET, - ELM_OBJ_PANES_SUB_ID_HORIZONTAL_SET, - ELM_OBJ_PANES_SUB_ID_HORIZONTAL_GET, - ELM_OBJ_PANES_SUB_ID_FIXED_SET, - ELM_OBJ_PANES_SUB_ID_FIXED_GET, - ELM_OBJ_PANES_SUB_ID_LAST -}; - -#define ELM_OBJ_PANES_ID(sub_id) (ELM_OBJ_PANES_BASE_ID + sub_id) - - -/** - * @def elm_obj_panes_content_left_size_get - * @since 1.8 - * - * Get the size proportion of panes widget's left side. - * - * @param[out] ret - * - * @see elm_panes_content_left_size_get - */ -#define elm_obj_panes_content_left_size_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_panes_content_left_size_set - * @since 1.8 - * - * Set the size proportion of panes widget's left side. - * - * @param[in] size - * - * @see elm_panes_content_left_size_set - */ -#define elm_obj_panes_content_left_size_set(size) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_SET), EO_TYPECHECK(double, size) - -/** - * @def elm_obj_panes_content_right_size_get - * @since 1.8 - * - * Get the size proportion of panes widget's right side. - * - * @param[out] ret - * - * @see elm_panes_content_right_size_get - */ -#define elm_obj_panes_content_right_size_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_GET), EO_TYPECHECK(double *, ret) /** - * @def elm_obj_panes_content_right_size_set - * @since 1.8 - * - * Set the size proportion of panes widget's right side. - * - * @param[in] size - * - * @see elm_panes_content_right_size_set - */ -#define elm_obj_panes_content_right_size_set(size) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_SET), EO_TYPECHECK(double, size) - -/** - * @def elm_obj_panes_horizontal_set - * @since 1.8 - * - * Set how to split and dispose each content. - * - * @param[in] horizontal - * - * @see elm_panes_horizontal_set - */ -#define elm_obj_panes_horizontal_set(horizontal) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal) - -/** - * @def elm_obj_panes_horizontal_get - * @since 1.8 - * - * Retrieve the split direction of a given panes widget. - * - * @param[out] ret - * - * @see elm_panes_horizontal_get - */ -#define elm_obj_panes_horizontal_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_panes_fixed_set - * @since 1.8 - * - * Set whether the left and right panes can be resized by user interaction. - * - * @param[in] fixed - * - * @see elm_panes_fixed_set - */ -#define elm_obj_panes_fixed_set(fixed) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_FIXED_SET), EO_TYPECHECK(Eina_Bool, fixed) - -/** - * @def elm_obj_panes_fixed_get - * @since 1.8 - * - * Retrieve the resize mode for the panes of a given panes widget. - * - * @param[out] ret - * - * @see elm_panes_fixed_get - */ -#define elm_obj_panes_fixed_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_FIXED_GET), EO_TYPECHECK(Eina_Bool *, ret) -/** * @addtogroup Panes * @{ */ -/** - * Add a new panes widget to the given parent Elementary - * (container) object. - * - * @param parent The parent object. - * @return a new panes widget handle or @c NULL, on errors. - * - * This function inserts a new panes widget on the canvas. - * - * @ingroup Panes - */ -EAPI Evas_Object *elm_panes_add(Evas_Object *parent); - -/** - * Set whether the left and right panes can be resized by user interaction. - * - * @param obj The panes object. - * @param fixed Use @c EINA_TRUE to fix the left and right panes sizes and make - * them not to be resized by user interaction. Use @c EINA_FALSE to make them - * resizable. - * - * By default panes' contents are resizable by user interaction. - * - * @see elm_panes_fixed_get() - * @see elm_panes_content_left_size_set() - * @see elm_panes_content_right_size_set() - * - * @ingroup Panes - */ -EAPI void elm_panes_fixed_set(Evas_Object *obj, Eina_Bool fixed); - -/** - * Retrieve the resize mode for the panes of a given panes widget. - * - * @param obj The panes object. - * @return @c EINA_TRUE, if @p obj is set to be resizable by user interaction. - * - * @see elm_panes_fixed_set() for more details. - * @see elm_panes_content_left_size_get() - * @see elm_panes_content_right_size_get() - * - * @ingroup Panes - */ -EAPI Eina_Bool elm_panes_fixed_get(const Evas_Object *obj); - -/** - * Get the size proportion of panes widget's left side. - * - * @param obj The panes object. - * @return float value between 0.0 and 1.0 representing size proportion - * of left side. - * - * @see elm_panes_content_left_size_set() for more details. - * - * @ingroup Panes - */ -EAPI double elm_panes_content_left_size_get(const Evas_Object *obj); - -/** - * Set the size proportion of panes widget's left side. - * - * @param obj The panes object. - * @param size Value between 0.0 and 1.0 representing size proportion - * of left side. - * - * By default it's homogeneous, i.e., both sides have the same size. - * - * 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, @p size should be passed as @c 0.75. - * This way, right content will be resized to 25% of panes size. - * - * If displayed vertically, left content is displayed at top, and - * right content at bottom. - * - * @note This proportion will change when user drags the panes bar. - * - * @see elm_panes_content_left_size_get() - * - * @ingroup Panes - */ -EAPI void elm_panes_content_left_size_set(Evas_Object *obj, double size); - -/** - * Get the size proportion of panes widget's right side. - * - * @param obj The panes object. - * @return float value between 0.0 and 1.0 representing size proportion - * of right side. - * - * @see elm_panes_content_right_size_set() for more details. - * - * @ingroup Panes - */ -EAPI double elm_panes_content_right_size_get(const Evas_Object *obj); - -/** - * Set the size proportion of panes widget's right side. - * - * @param obj The panes object. - * @param size Value between 0.0 and 1.0 representing size proportion - * of right side. - * - * By default it's homogeneous, i.e., both sides have the same size. - * - * 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, @p size should be passed as @c 0.75. - * This way, left content will be resized to 25% of panes size. - * - * If displayed vertically, left content is displayed at top, and - * right content at bottom. - * - * @note This proportion will change when user drags the panes bar. - * - * @see elm_panes_content_right_size_get() - * - * @ingroup Panes - */ -EAPI void elm_panes_content_right_size_set(Evas_Object *obj, double size); - - -/** - * Set how to split and dispose each content. - * - * @param obj The panes object. - * @param horizontal Use @c EINA_TRUE to make @p obj to split panes - * horizontally ("top" and "bottom" contents). @c EINA_FALSE to make it - * vertically ("left" and "right" contents) - * - * Use this function to change how your panes is to be disposed: - * vertically or horizontally. - * Horizontal panes have "top" and "bottom" contents, vertical panes have - * "left" and "right" contents. - * - * By default panes is in a vertical mode. - * - * @see elm_panes_horizontal_get() - * - * @ingroup Panes - */ -EAPI void elm_panes_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); - -/** - * Retrieve the split direction of a given panes widget. - * - * @param obj The panes object. - * @return @c EINA_TRUE, if @p obj is set to be @b horizontal, - * @c EINA_FALSE if it's @b vertical (and on errors). - * - * @see elm_panes_horizontal_set() for more details. - * - * @ingroup Panes - */ -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_panes_eo.h b/src/lib/elm_panes_eo.h new file mode 100644 index 000000000..1b69edec5 --- /dev/null +++ b/src/lib/elm_panes_eo.h @@ -0,0 +1,133 @@ +#define ELM_OBJ_PANES_CLASS elm_obj_panes_class_get() + +const Eo_Class *elm_obj_panes_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_PANES_BASE_ID; + +enum +{ + ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_GET, + ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_SET, + ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_GET, + ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_SET, + ELM_OBJ_PANES_SUB_ID_HORIZONTAL_SET, + ELM_OBJ_PANES_SUB_ID_HORIZONTAL_GET, + ELM_OBJ_PANES_SUB_ID_FIXED_SET, + ELM_OBJ_PANES_SUB_ID_FIXED_GET, + ELM_OBJ_PANES_SUB_ID_LAST +}; + +#define ELM_OBJ_PANES_ID(sub_id) (ELM_OBJ_PANES_BASE_ID + sub_id) + + +/** + * @def elm_obj_panes_content_left_size_get + * @since 1.8 + * + * Get the size proportion of panes widget's left side. + * + * @param[out] ret + * + * @see elm_panes_content_left_size_get + * + * @ingroup Panes + */ +#define elm_obj_panes_content_left_size_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_panes_content_left_size_set + * @since 1.8 + * + * Set the size proportion of panes widget's left side. + * + * @param[in] size + * + * @see elm_panes_content_left_size_set + * + * @ingroup Panes + */ +#define elm_obj_panes_content_left_size_set(size) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_SET), EO_TYPECHECK(double, size) + +/** + * @def elm_obj_panes_content_right_size_get + * @since 1.8 + * + * Get the size proportion of panes widget's right side. + * + * @param[out] ret + * + * @see elm_panes_content_right_size_get + * + * @ingroup Panes + */ +#define elm_obj_panes_content_right_size_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_panes_content_right_size_set + * @since 1.8 + * + * Set the size proportion of panes widget's right side. + * + * @param[in] size + * + * @see elm_panes_content_right_size_set + * + * @ingroup Panes + */ +#define elm_obj_panes_content_right_size_set(size) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_SET), EO_TYPECHECK(double, size) + +/** + * @def elm_obj_panes_horizontal_set + * @since 1.8 + * + * Set how to split and dispose each content. + * + * @param[in] horizontal + * + * @see elm_panes_horizontal_set + * + * @ingroup Panes + */ +#define elm_obj_panes_horizontal_set(horizontal) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal) + +/** + * @def elm_obj_panes_horizontal_get + * @since 1.8 + * + * Retrieve the split direction of a given panes widget. + * + * @param[out] ret + * + * @see elm_panes_horizontal_get + * + * @ingroup Panes + */ +#define elm_obj_panes_horizontal_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_panes_fixed_set + * @since 1.8 + * + * Set whether the left and right panes can be resized by user interaction. + * + * @param[in] fixed + * + * @see elm_panes_fixed_set + * + * @ingroup Panes + */ +#define elm_obj_panes_fixed_set(fixed) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_FIXED_SET), EO_TYPECHECK(Eina_Bool, fixed) + +/** + * @def elm_obj_panes_fixed_get + * @since 1.8 + * + * Retrieve the resize mode for the panes of a given panes widget. + * + * @param[out] ret + * + * @see elm_panes_fixed_get + * + * @ingroup Panes + */ +#define elm_obj_panes_fixed_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_FIXED_GET), EO_TYPECHECK(Eina_Bool *, ret) diff --git a/src/lib/elm_panes_legacy.h b/src/lib/elm_panes_legacy.h new file mode 100644 index 000000000..e9f760b94 --- /dev/null +++ b/src/lib/elm_panes_legacy.h @@ -0,0 +1,155 @@ +/** + * Add a new panes widget to the given parent Elementary + * (container) object. + * + * @param parent The parent object. + * @return a new panes widget handle or @c NULL, on errors. + * + * This function inserts a new panes widget on the canvas. + * + * @ingroup Panes + */ +EAPI Evas_Object *elm_panes_add(Evas_Object *parent); + +/** + * Get the size proportion of panes widget's left side. + * + * @param obj The panes object. + * @return float value between 0.0 and 1.0 representing size proportion + * of left side. + * + * @see elm_panes_content_left_size_set() for more details. + * + * @ingroup Panes + */ +EAPI double elm_panes_content_left_size_get(const Evas_Object *obj); + +/** + * Set the size proportion of panes widget's left side. + * + * @param obj The panes object. + * @param size Value between 0.0 and 1.0 representing size proportion + * of left side. + * + * By default it's homogeneous, i.e., both sides have the same size. + * + * 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, @p size should be passed as @c 0.75. + * This way, right content will be resized to 25% of panes size. + * + * If displayed vertically, left content is displayed at top, and + * right content at bottom. + * + * @note This proportion will change when user drags the panes bar. + * + * @see elm_panes_content_left_size_get() + * + * @ingroup Panes + */ +EAPI void elm_panes_content_left_size_set(Evas_Object *obj, double size); + +/** + * Get the size proportion of panes widget's right side. + * + * @param obj The panes object. + * @return float value between 0.0 and 1.0 representing size proportion + * of right side. + * + * @see elm_panes_content_right_size_set() for more details. + * + * @ingroup Panes + */ +EAPI double elm_panes_content_right_size_get(const Evas_Object *obj); + +/** + * Set the size proportion of panes widget's right side. + * + * @param obj The panes object. + * @param size Value between 0.0 and 1.0 representing size proportion + * of right side. + * + * By default it's homogeneous, i.e., both sides have the same size. + * + * 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, @p size should be passed as @c 0.75. + * This way, left content will be resized to 25% of panes size. + * + * If displayed vertically, left content is displayed at top, and + * right content at bottom. + * + * @note This proportion will change when user drags the panes bar. + * + * @see elm_panes_content_right_size_get() + * + * @ingroup Panes + */ +EAPI void elm_panes_content_right_size_set(Evas_Object *obj, double size); + + +/** + * Set how to split and dispose each content. + * + * @param obj The panes object. + * @param horizontal Use @c EINA_TRUE to make @p obj to split panes + * horizontally ("top" and "bottom" contents). @c EINA_FALSE to make it + * vertically ("left" and "right" contents) + * + * Use this function to change how your panes is to be disposed: + * vertically or horizontally. + * Horizontal panes have "top" and "bottom" contents, vertical panes have + * "left" and "right" contents. + * + * By default panes is in a vertical mode. + * + * @see elm_panes_horizontal_get() + * + * @ingroup Panes + */ +EAPI void elm_panes_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); + +/** + * Retrieve the split direction of a given panes widget. + * + * @param obj The panes object. + * @return @c EINA_TRUE, if @p obj is set to be @b horizontal, + * @c EINA_FALSE if it's @b vertical (and on errors). + * + * @see elm_panes_horizontal_set() for more details. + * + * @ingroup Panes + */ +EAPI Eina_Bool elm_panes_horizontal_get(const Evas_Object *obj); + +/** + * Set whether the left and right panes can be resized by user interaction. + * + * @param obj The panes object. + * @param fixed Use @c EINA_TRUE to fix the left and right panes sizes and make + * them not to be resized by user interaction. Use @c EINA_FALSE to make them + * resizable. + * + * By default panes' contents are resizable by user interaction. + * + * @see elm_panes_fixed_get() + * @see elm_panes_content_left_size_set() + * @see elm_panes_content_right_size_set() + * + * @ingroup Panes + */ +EAPI void elm_panes_fixed_set(Evas_Object *obj, Eina_Bool fixed); + +/** + * Retrieve the resize mode for the panes of a given panes widget. + * + * @param obj The panes object. + * @return @c EINA_TRUE, if @p obj is set to be resizable by user interaction. + * + * @see elm_panes_fixed_set() for more details. + * @see elm_panes_content_left_size_get() + * @see elm_panes_content_right_size_get() + * + * @ingroup Panes + */ +EAPI Eina_Bool elm_panes_fixed_get(const Evas_Object *obj); diff --git a/src/lib/elm_photocam.h b/src/lib/elm_photocam.h index cf5f9935f..80d6eea07 100644 --- a/src/lib/elm_photocam.h +++ b/src/lib/elm_photocam.h @@ -54,465 +54,12 @@ * @{ */ -#define ELM_OBJ_PHOTOCAM_PAN_CLASS elm_obj_photocam_pan_class_get() - -const Eo_Class *elm_obj_photocam_pan_class_get(void) EINA_CONST; - -/** - * @brief 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_LAST -} Elm_Photocam_Zoom_Mode; - -#define ELM_OBJ_PHOTOCAM_CLASS elm_obj_photocam_class_get() - -const Eo_Class *elm_obj_photocam_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_PHOTOCAM_BASE_ID; - -enum -{ - ELM_OBJ_PHOTOCAM_SUB_ID_FILE_SET, - ELM_OBJ_PHOTOCAM_SUB_ID_FILE_GET, - ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_SET, - ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_GET, - ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_SET, - ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_GET, - ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_SIZE_GET, - ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_GET, - ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_SHOW, - ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_SET, - ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_GET, - ELM_OBJ_PHOTOCAM_SUB_ID_INTERNAL_IMAGE_GET, - ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_SET, - ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_GET, - ELM_OBJ_PHOTOCAM_SUB_ID_LAST -}; - -#define ELM_OBJ_PHOTOCAM_ID(sub_id) (ELM_OBJ_PHOTOCAM_BASE_ID + sub_id) - - -/** - * @def elm_obj_photocam_file_set - * @since 1.8 - * - * @brief Set the photo file to be shown - * - * @param[in] file - * @param[out] ret - * - * @see elm_photocam_file_set - */ -#define elm_obj_photocam_file_set(file, ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(Evas_Load_Error *, ret) - -/** - * @def elm_obj_photocam_file_get - * @since 1.8 - * - * @brief Returns the path of the current image file - * - * @param[out] ret - * - * @see elm_photocam_file_get - */ -#define elm_obj_photocam_file_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_photocam_zoom_set - * @since 1.8 - * - * @brief Set the zoom level of the photo - * - * @param[in] zoom - * - * @see elm_photocam_zoom_set - */ -#define elm_obj_photocam_zoom_set(zoom) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_SET), EO_TYPECHECK(double, zoom) - -/** - * @def elm_obj_photocam_zoom_get - * @since 1.8 - * - * @brief Get the zoom level of the photo - * - * @param[out] ret - * - * @see elm_photocam_zoom_get - */ -#define elm_obj_photocam_zoom_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_photocam_zoom_mode_set - * @since 1.8 - * - * @brief Set the zoom mode - * - * @param[in] mode - * - * @see elm_photocam_zoom_mode_set - */ -#define elm_obj_photocam_zoom_mode_set(mode) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_SET), EO_TYPECHECK(Elm_Photocam_Zoom_Mode, mode) - -/** - * @def elm_obj_photocam_zoom_mode_get - * @since 1.8 - * - * @brief Get the zoom mode - * - * @param[out] ret - * - * @see elm_photocam_zoom_mode_get - */ -#define elm_obj_photocam_zoom_mode_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_GET), EO_TYPECHECK(Elm_Photocam_Zoom_Mode *, ret) - -/** - * @def elm_obj_photocam_image_size_get - * @since 1.8 - * - * @brief Get the current image pixel width and height - * - * @param[out] w - * @param[out] h - * - * @see elm_photocam_image_size_get - */ -#define elm_obj_photocam_image_size_get(w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_SIZE_GET), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h) - -/** - * @def elm_obj_photocam_image_region_get - * @since 1.8 - * - * @brief Get the region of the image that is currently shown - * - * @param[out] x - * @param[out] y - * @param[out] w - * @param[out] h - * - * @see elm_photocam_image_region_get - */ -#define elm_obj_photocam_image_region_get(x, y, w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_GET), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h) - -/** - * @def elm_obj_photocam_image_region_show - * @since 1.8 - * - * @brief Set the viewed region of the image - * - * @param[in] x - * @param[in] y - * @param[in] w - * @param[in] h - * - * @see elm_photocam_image_region_show - */ -#define elm_obj_photocam_image_region_show(x, y, w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_SHOW), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h) - -/** - * @def elm_obj_photocam_paused_set - * @since 1.8 - * - * @brief Set the paused state for photocam - * - * @param[in] paused - * - * @see elm_photocam_paused_set - */ -#define elm_obj_photocam_paused_set(paused) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_SET), EO_TYPECHECK(Eina_Bool, paused) - -/** - * @def elm_obj_photocam_paused_get - * @since 1.8 - * - * @brief Get the paused state for photocam - * - * @param[out] ret - * - * @see elm_photocam_paused_get - */ -#define elm_obj_photocam_paused_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_photocam_internal_image_get - * @since 1.8 - * - * @brief Get the internal low-res image used for photocam - * - * @param[out] ret - * - * @see elm_photocam_internal_image_get - */ -#define elm_obj_photocam_internal_image_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_INTERNAL_IMAGE_GET), EO_TYPECHECK(Evas_Object **, ret) - -/** - * @def elm_obj_photocam_gesture_enabled_set - * @since 1.8 - * - * @brief Set the gesture state for photocam. - * - * @param[in] gesture - * - * @see elm_photocam_gesture_enabled_set - */ -#define elm_obj_photocam_gesture_enabled_set(gesture) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_SET), EO_TYPECHECK(Eina_Bool, gesture) - -/** - * @def elm_obj_photocam_gesture_enabled_get - * @since 1.8 - * - * @brief Get the gesture state for photocam. - * - * @param[out] ret - * - * @see elm_photocam_gesture_enabled_get - */ -#define elm_obj_photocam_gesture_enabled_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @brief Add a new Photocam object - * - * @param parent The parent object - * @return The new object or NULL if it cannot be created - * - * @ingroup Photocam - */ -EAPI Evas_Object *elm_photocam_add(Evas_Object *parent); - -/** - * @brief Set the photo file to be shown - * - * @param obj The photocam object - * @param file The photo file - * @return The return error (see EVAS_LOAD_ERROR_NONE, EVAS_LOAD_ERROR_GENERIC etc.) - * - * This sets (and shows) the specified file (with a relative or absolute - * path) and will return a load error (same error that - * evas_object_image_load_error_get() will return). The image will change and - * adjust its size at this point and begin a background load process for this - * photo that at some time in the future will be displayed at the full - * quality needed. - * - * @ingroup Photocam - */ -EAPI Evas_Load_Error elm_photocam_file_set(Evas_Object *obj, const char *file); - -/** - * @brief Returns the path of the current image file - * - * @param obj The photocam object - * @return Returns the path - * - * @see elm_photocam_file_set() - * - * @ingroup Photocam - */ -EAPI const char *elm_photocam_file_get(const Evas_Object *obj); - -/** - * @brief Set the zoom level of the photo - * - * @param obj The photocam object - * @param zoom The zoom level to set - * - * This sets the zoom level. 1 will be 1:1 pixel for pixel. 2 will be 2:1 - * (that is 2x2 photo pixels will display as 1 on-screen pixel). 4:1 will be - * 4x4 photo pixels as 1 screen pixel, and so on. The @p zoom parameter must - * be greater than 0. It is suggested to stick to powers of 2. (1, 2, 4, 8, - * 16, 32, etc.). - * - * @ingroup Photocam - */ -EAPI void elm_photocam_zoom_set(Evas_Object *obj, double zoom); - -/** - * @brief Get the zoom level of the photo - * - * @param obj The photocam object - * @return The current zoom level - * - * This returns the current zoom level of the photocam object. Note that if - * you set the fill mode to other than 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 photo size and photocam viewport - * size. - * - * @see elm_photocam_zoom_set() - * @see elm_photocam_zoom_mode_set() - * - * @ingroup Photocam - */ -EAPI double elm_photocam_zoom_get(const Evas_Object *obj); - -/** - * @brief Set the zoom mode - * - * @param obj The photocam object - * @param mode The desired mode - * - * This sets the zoom mode to manual or one of several automatic levels. - * Manual (ELM_PHOTOCAM_ZOOM_MODE_MANUAL) means that zoom is set manually by - * elm_photocam_zoom_set() and will stay at that level until changed by code - * or until zoom mode is changed. This is the default mode. The Automatic - * modes will allow the photocam object to automatically adjust zoom mode - * based on properties. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT) will adjust zoom so - * the photo fits EXACTLY inside the scroll frame with no pixels outside this - * region. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL will be similar but ensure no - * pixels within the frame are left unfilled. - * - * @ingroup Photocam - */ -EAPI void elm_photocam_zoom_mode_set(Evas_Object *obj, Elm_Photocam_Zoom_Mode mode); - -/** - * @brief Get the zoom mode - * - * @param obj The photocam object - * @return The current zoom mode - * - * This gets the current zoom mode of the photocam object. - * - * @see elm_photocam_zoom_mode_set() - * - * @ingroup Photocam - */ -EAPI Elm_Photocam_Zoom_Mode elm_photocam_zoom_mode_get(const Evas_Object *obj); - -/** - * @brief Get the current image pixel width and height - * - * @param obj The photocam object - * @param w A pointer to the width return - * @param h A pointer to the height return - * - * This gets the current photo pixel width and height (for the original). - * The size will be returned in the integers @p w and @p h that are pointed - * to. - * - * @ingroup Photocam - */ -EAPI void elm_photocam_image_size_get(const Evas_Object *obj, int *w, int *h); - -/** - * @brief Get the region of the image that is currently shown - * - * @param obj - * @param x A pointer to the X-coordinate of region - * @param y A pointer to the Y-coordinate of region - * @param w A pointer to the width - * @param h A pointer to the height - * - * @see elm_photocam_image_region_show() - * @see elm_photocam_image_region_bring_in() - * - * @ingroup Photocam - */ -EAPI void elm_photocam_image_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h); - -/** - * @brief Set the viewed region of the image - * - * @param obj The photocam object - * @param x X-coordinate of region in image original pixels - * @param y Y-coordinate of region in image original pixels - * @param w Width of region in image original pixels - * @param h Height of region in image original pixels - * - * This shows the region of the image without using animation. - * - * @ingroup Photocam - */ -EAPI void elm_photocam_image_region_show(Evas_Object *obj, int x, int y, int w, int h); - -/** - * @brief Bring in the viewed portion of the image - * - * @param obj The photocam object - * @param x X-coordinate of region in image original pixels - * @param y Y-coordinate of region in image original pixels - * @param w Width of region in image original pixels - * @param h Height of region in image original pixels - * - * This shows the region of the image using animation. - * - * @ingroup Photocam - */ -EAPI void elm_photocam_image_region_bring_in(Evas_Object *obj, int x, int y, int w, int h); - -/** - * @brief Set the paused state for photocam - * - * @param obj The photocam object - * @param paused The pause state to set - * - * This sets the paused state to on(EINA_TRUE) or off (EINA_FALSE) for - * photocam. The default is off. This will stop zooming using animation on - * zoom level changes and change instantly. This will stop any existing - * animations that are running. - * - * @ingroup Photocam - */ -EAPI void elm_photocam_paused_set(Evas_Object *obj, Eina_Bool paused); - -/** - * @brief Get the paused state for photocam - * - * @param obj The photocam object - * @return The current paused state - * - * This gets the current paused state for the photocam object. - * - * @see elm_photocam_paused_set() - * - * @ingroup Photocam - */ -EAPI Eina_Bool elm_photocam_paused_get(const Evas_Object *obj); - -/** - * @brief Get the internal low-res image used for photocam - * - * @param obj The photocam object - * @return The internal image object handle, or NULL if none exists - * - * This gets the internal image object inside photocam. Do not modify it. It - * is for inspection only, and hooking callbacks to. Nothing else. It may be - * deleted at any time as well. - * - * @ingroup Photocam - */ -EAPI Evas_Object *elm_photocam_internal_image_get(const Evas_Object *obj); - -/** - * @brief Set the gesture state for photocam. - * - * @param obj The photocam object - * @param gesture The gesture state to set - * - * This sets the gesture state to on(EINA_TRUE) or off (EINA_FALSE) for - * photocam. The default is off. This will start multi touch zooming. - * - * @ingroup Photocam - */ -EAPI void elm_photocam_gesture_enabled_set(Evas_Object *obj, Eina_Bool gesture); - -/** - * @brief Get the gesture state for photocam. - * - * @param obj The photocam object - * @return The current gesture state - * - * This gets the current gesture state for the photocam object. - * - * @see elm_photocam_gesture_enabled_set() - * - * @ingroup Photocam - */ -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_photocam_eo.h b/src/lib/elm_photocam_eo.h new file mode 100644 index 000000000..c98ab8943 --- /dev/null +++ b/src/lib/elm_photocam_eo.h @@ -0,0 +1,247 @@ +#define ELM_OBJ_PHOTOCAM_PAN_CLASS elm_obj_photocam_pan_class_get() + +const Eo_Class *elm_obj_photocam_pan_class_get(void) EINA_CONST; + +/** + * @brief 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_LAST +} Elm_Photocam_Zoom_Mode; + +#define ELM_OBJ_PHOTOCAM_CLASS elm_obj_photocam_class_get() + +const Eo_Class *elm_obj_photocam_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_PHOTOCAM_BASE_ID; + +enum +{ + ELM_OBJ_PHOTOCAM_SUB_ID_FILE_SET, + ELM_OBJ_PHOTOCAM_SUB_ID_FILE_GET, + ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_SET, + ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_GET, + ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_SET, + ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_GET, + ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_SIZE_GET, + ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_GET, + ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_SHOW, + ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_SET, + ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_GET, + ELM_OBJ_PHOTOCAM_SUB_ID_INTERNAL_IMAGE_GET, + ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_SET, + ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_GET, + ELM_OBJ_PHOTOCAM_SUB_ID_LAST +}; + +#define ELM_OBJ_PHOTOCAM_ID(sub_id) (ELM_OBJ_PHOTOCAM_BASE_ID + sub_id) + + +/** + * @def elm_obj_photocam_file_set + * @since 1.8 + * + * @brief Set the photo file to be shown + * + * @param[in] file + * @param[out] ret + * + * @see elm_photocam_file_set + * + * @ingroup Photocam + */ +#define elm_obj_photocam_file_set(file, ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(Evas_Load_Error *, ret) + +/** + * @def elm_obj_photocam_file_get + * @since 1.8 + * + * @brief Returns the path of the current image file + * + * @param[out] ret + * + * @see elm_photocam_file_get + * + * @ingroup Photocam + */ +#define elm_obj_photocam_file_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_photocam_zoom_set + * @since 1.8 + * + * @brief Set the zoom level of the photo + * + * @param[in] zoom + * + * @see elm_photocam_zoom_set + * + * @ingroup Photocam + */ +#define elm_obj_photocam_zoom_set(zoom) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_SET), EO_TYPECHECK(double, zoom) + +/** + * @def elm_obj_photocam_zoom_get + * @since 1.8 + * + * @brief Get the zoom level of the photo + * + * @param[out] ret + * + * @see elm_photocam_zoom_get + * + * @ingroup Photocam + */ +#define elm_obj_photocam_zoom_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_photocam_zoom_mode_set + * @since 1.8 + * + * @brief Set the zoom mode + * + * @param[in] mode + * + * @see elm_photocam_zoom_mode_set + * + * @ingroup Photocam + */ +#define elm_obj_photocam_zoom_mode_set(mode) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_SET), EO_TYPECHECK(Elm_Photocam_Zoom_Mode, mode) + +/** + * @def elm_obj_photocam_zoom_mode_get + * @since 1.8 + * + * @brief Get the zoom mode + * + * @param[out] ret + * + * @see elm_photocam_zoom_mode_get + * + * @ingroup Photocam + */ +#define elm_obj_photocam_zoom_mode_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_GET), EO_TYPECHECK(Elm_Photocam_Zoom_Mode *, ret) + +/** + * @def elm_obj_photocam_image_size_get + * @since 1.8 + * + * @brief Get the current image pixel width and height + * + * @param[out] w + * @param[out] h + * + * @see elm_photocam_image_size_get + * + * @ingroup Photocam + */ +#define elm_obj_photocam_image_size_get(w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_SIZE_GET), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h) + +/** + * @def elm_obj_photocam_image_region_get + * @since 1.8 + * + * @brief Get the region of the image that is currently shown + * + * @param[out] x + * @param[out] y + * @param[out] w + * @param[out] h + * + * @see elm_photocam_image_region_get + * + * @ingroup Photocam + */ +#define elm_obj_photocam_image_region_get(x, y, w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_GET), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h) + +/** + * @def elm_obj_photocam_image_region_show + * @since 1.8 + * + * @brief Set the viewed region of the image + * + * @param[in] x + * @param[in] y + * @param[in] w + * @param[in] h + * + * @see elm_photocam_image_region_show + * + * @ingroup Photocam + */ +#define elm_obj_photocam_image_region_show(x, y, w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_SHOW), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h) + +/** + * @def elm_obj_photocam_paused_set + * @since 1.8 + * + * @brief Set the paused state for photocam + * + * @param[in] paused + * + * @see elm_photocam_paused_set + * + * @ingroup Photocam + */ +#define elm_obj_photocam_paused_set(paused) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_SET), EO_TYPECHECK(Eina_Bool, paused) + +/** + * @def elm_obj_photocam_paused_get + * @since 1.8 + * + * @brief Get the paused state for photocam + * + * @param[out] ret + * + * @see elm_photocam_paused_get + * + * @ingroup Photocam + */ +#define elm_obj_photocam_paused_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_photocam_internal_image_get + * @since 1.8 + * + * @brief Get the internal low-res image used for photocam + * + * @param[out] ret + * + * @see elm_photocam_internal_image_get + * + * @ingroup Photocam + */ +#define elm_obj_photocam_internal_image_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_INTERNAL_IMAGE_GET), EO_TYPECHECK(Evas_Object **, ret) + +/** + * @def elm_obj_photocam_gesture_enabled_set + * @since 1.8 + * + * @brief Set the gesture state for photocam. + * + * @param[in] gesture + * + * @see elm_photocam_gesture_enabled_set + * + * @ingroup Photocam + */ +#define elm_obj_photocam_gesture_enabled_set(gesture) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_SET), EO_TYPECHECK(Eina_Bool, gesture) + +/** + * @def elm_obj_photocam_gesture_enabled_get + * @since 1.8 + * + * @brief Get the gesture state for photocam. + * + * @param[out] ret + * + * @see elm_photocam_gesture_enabled_get + * + * @ingroup Photocam + */ +#define elm_obj_photocam_gesture_enabled_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_GET), EO_TYPECHECK(Eina_Bool *, ret) diff --git a/src/lib/elm_photocam_legacy.h b/src/lib/elm_photocam_legacy.h new file mode 100644 index 000000000..be52b9749 --- /dev/null +++ b/src/lib/elm_photocam_legacy.h @@ -0,0 +1,224 @@ +/** + * @brief Add a new Photocam object + * + * @param parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup Photocam + */ +EAPI Evas_Object *elm_photocam_add(Evas_Object *parent); + +/** + * @brief Set the photo file to be shown + * + * @param obj The photocam object + * @param file The photo file + * @return The return error (see EVAS_LOAD_ERROR_NONE, EVAS_LOAD_ERROR_GENERIC etc.) + * + * This sets (and shows) the specified file (with a relative or absolute + * path) and will return a load error (same error that + * evas_object_image_load_error_get() will return). The image will change and + * adjust its size at this point and begin a background load process for this + * photo that at some time in the future will be displayed at the full + * quality needed. + * + * @ingroup Photocam + */ +EAPI Evas_Load_Error elm_photocam_file_set(Evas_Object *obj, const char *file); + +/** + * @brief Returns the path of the current image file + * + * @param obj The photocam object + * @return Returns the path + * + * @see elm_photocam_file_set() + * + * @ingroup Photocam + */ +EAPI const char *elm_photocam_file_get(const Evas_Object *obj); + +/** + * @brief Set the zoom level of the photo + * + * @param obj The photocam object + * @param zoom The zoom level to set + * + * This sets the zoom level. 1 will be 1:1 pixel for pixel. 2 will be 2:1 + * (that is 2x2 photo pixels will display as 1 on-screen pixel). 4:1 will be + * 4x4 photo pixels as 1 screen pixel, and so on. The @p zoom parameter must + * be greater than 0. It is suggested to stick to powers of 2. (1, 2, 4, 8, + * 16, 32, etc.). + * + * @ingroup Photocam + */ +EAPI void elm_photocam_zoom_set(Evas_Object *obj, double zoom); + +/** + * @brief Get the zoom level of the photo + * + * @param obj The photocam object + * @return The current zoom level + * + * This returns the current zoom level of the photocam object. Note that if + * you set the fill mode to other than 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 photo size and photocam viewport + * size. + * + * @see elm_photocam_zoom_set() + * @see elm_photocam_zoom_mode_set() + * + * @ingroup Photocam + */ +EAPI double elm_photocam_zoom_get(const Evas_Object *obj); + +/** + * @brief Set the zoom mode + * + * @param obj The photocam object + * @param mode The desired mode + * + * This sets the zoom mode to manual or one of several automatic levels. + * Manual (ELM_PHOTOCAM_ZOOM_MODE_MANUAL) means that zoom is set manually by + * elm_photocam_zoom_set() and will stay at that level until changed by code + * or until zoom mode is changed. This is the default mode. The Automatic + * modes will allow the photocam object to automatically adjust zoom mode + * based on properties. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT) will adjust zoom so + * the photo fits EXACTLY inside the scroll frame with no pixels outside this + * region. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL will be similar but ensure no + * pixels within the frame are left unfilled. + * + * @ingroup Photocam + */ +EAPI void elm_photocam_zoom_mode_set(Evas_Object *obj, Elm_Photocam_Zoom_Mode mode); + +/** + * @brief Get the zoom mode + * + * @param obj The photocam object + * @return The current zoom mode + * + * This gets the current zoom mode of the photocam object. + * + * @see elm_photocam_zoom_mode_set() + * + * @ingroup Photocam + */ +EAPI Elm_Photocam_Zoom_Mode elm_photocam_zoom_mode_get(const Evas_Object *obj); + +/** + * @brief Get the current image pixel width and height + * + * @param obj The photocam object + * @param w A pointer to the width return + * @param h A pointer to the height return + * + * This gets the current photo pixel width and height (for the original). + * The size will be returned in the integers @p w and @p h that are pointed + * to. + * + * @ingroup Photocam + */ +EAPI void elm_photocam_image_size_get(const Evas_Object *obj, int *w, int *h); + +/** + * @brief Get the region of the image that is currently shown + * + * @param obj + * @param x A pointer to the X-coordinate of region + * @param y A pointer to the Y-coordinate of region + * @param w A pointer to the width + * @param h A pointer to the height + * + * @see elm_photocam_image_region_show() + * @see elm_photocam_image_region_bring_in() + * + * @ingroup Photocam + */ +EAPI void elm_photocam_image_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h); + +/** + * @brief Set the viewed region of the image + * + * @param obj The photocam object + * @param x X-coordinate of region in image original pixels + * @param y Y-coordinate of region in image original pixels + * @param w Width of region in image original pixels + * @param h Height of region in image original pixels + * + * This shows the region of the image without using animation. + * + * @ingroup Photocam + */ +EAPI void elm_photocam_image_region_show(Evas_Object *obj, int x, int y, int w, int h); + +/** + * @brief Set the paused state for photocam + * + * @param obj The photocam object + * @param paused The pause state to set + * + * This sets the paused state to on(EINA_TRUE) or off (EINA_FALSE) for + * photocam. The default is off. This will stop zooming using animation on + * zoom level changes and change instantly. This will stop any existing + * animations that are running. + * + * @ingroup Photocam + */ +EAPI void elm_photocam_paused_set(Evas_Object *obj, Eina_Bool paused); + +/** + * @brief Get the paused state for photocam + * + * @param obj The photocam object + * @return The current paused state + * + * This gets the current paused state for the photocam object. + * + * @see elm_photocam_paused_set() + * + * @ingroup Photocam + */ +EAPI Eina_Bool elm_photocam_paused_get(const Evas_Object *obj); + +/** + * @brief Get the internal low-res image used for photocam + * + * @param obj The photocam object + * @return The internal image object handle, or NULL if none exists + * + * This gets the internal image object inside photocam. Do not modify it. It + * is for inspection only, and hooking callbacks to. Nothing else. It may be + * deleted at any time as well. + * + * @ingroup Photocam + */ +EAPI Evas_Object *elm_photocam_internal_image_get(const Evas_Object *obj); + +/** + * @brief Set the gesture state for photocam. + * + * @param obj The photocam object + * @param gesture The gesture state to set + * + * This sets the gesture state to on(EINA_TRUE) or off (EINA_FALSE) for + * photocam. The default is off. This will start multi touch zooming. + * + * @ingroup Photocam + */ +EAPI void elm_photocam_gesture_enabled_set(Evas_Object *obj, Eina_Bool gesture); + +/** + * @brief Get the gesture state for photocam. + * + * @param obj The photocam object + * @return The current gesture state + * + * This gets the current gesture state for the photocam object. + * + * @see elm_photocam_gesture_enabled_set() + * + * @ingroup Photocam + */ +EAPI Eina_Bool elm_photocam_gesture_enabled_get(const Evas_Object *obj); diff --git a/src/lib/elm_plug.h b/src/lib/elm_plug.h index 72a78595a..17ba2962f 100644 --- a/src/lib/elm_plug.h +++ b/src/lib/elm_plug.h @@ -25,93 +25,18 @@ * */ -#define ELM_OBJ_PLUG_CLASS elm_obj_plug_class_get() - -const Eo_Class *elm_obj_plug_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_PLUG_BASE_ID; - -enum -{ - ELM_OBJ_PLUG_SUB_ID_IMAGE_OBJECT_GET, - ELM_OBJ_PLUG_SUB_ID_CONNECT, - ELM_OBJ_PLUG_SUB_ID_LAST -}; - -#define ELM_OBJ_PLUG_ID(sub_id) (ELM_OBJ_PLUG_BASE_ID + sub_id) - /** - * @def elm_obj_plug_image_object_get - * @since 1.8 - * - * Get the basic Evas_Image object from this object (widget). - * - * @param[out] ret - * - * @see elm_plug_image_object_get - */ -#define elm_obj_plug_image_object_get(ret) ELM_OBJ_PLUG_ID(ELM_OBJ_PLUG_SUB_ID_IMAGE_OBJECT_GET), EO_TYPECHECK(Evas_Object **, ret) - -/** - * @def elm_obj_plug_connect - * @since 1.8 - * - * Connect a plug widget to service provided by socket image. - * - * @param[in] svcname - * @param[in] svcnum - * @param[in] svcsys - * @param[out] ret - * - * @see elm_plug_connect - */ -#define elm_obj_plug_connect(svcname, svcnum, svcsys, ret) ELM_OBJ_PLUG_ID(ELM_OBJ_PLUG_SUB_ID_CONNECT), EO_TYPECHECK(const char *, svcname), EO_TYPECHECK(int, svcnum), EO_TYPECHECK(Eina_Bool, svcsys), EO_TYPECHECK(Eina_Bool *, ret) -/** * @addtogroup Plug * @{ */ -/** - * Add a new plug image to the parent. - * - * @param parent The parent object - * @return The new plug image object or NULL if it cannot be created - * - * @ingroup Plug - */ -EAPI Evas_Object *elm_plug_add(Evas_Object *parent); - -/** - * Connect a plug widget to service provided by socket image. - * - * @param obj The Evas_Object where the new image object will live. - * @param svcname The service name to connect to set up by the socket. - * @param svcnum The service number to connect to (set up by socket). - * @param svcsys 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) - * - * @ingroup Plug - */ -EAPI Eina_Bool elm_plug_connect(Evas_Object *obj, const char *svcname, int svcnum, Eina_Bool svcsys); - -/** - * Get the basic Evas_Image object from this object (widget). - * - * @param obj The image object to get the inlined image from - * @return The inlined image object, or NULL if none exists - * - * 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. - * - * @note Be careful to not manipulate it, as it is under control of - * elementary. - * - * @ingroup Plug - */ -EAPI Evas_Object *elm_plug_image_object_get(const Evas_Object *obj); - +#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_plug_eo.h b/src/lib/elm_plug_eo.h new file mode 100644 index 000000000..6ea12b2c5 --- /dev/null +++ b/src/lib/elm_plug_eo.h @@ -0,0 +1,46 @@ +#define ELM_OBJ_PLUG_CLASS elm_obj_plug_class_get() + +const Eo_Class *elm_obj_plug_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_PLUG_BASE_ID; + +enum +{ + ELM_OBJ_PLUG_SUB_ID_IMAGE_OBJECT_GET, + ELM_OBJ_PLUG_SUB_ID_CONNECT, + ELM_OBJ_PLUG_SUB_ID_LAST +}; + +#define ELM_OBJ_PLUG_ID(sub_id) (ELM_OBJ_PLUG_BASE_ID + sub_id) + + +/** + * @def elm_obj_plug_image_object_get + * @since 1.8 + * + * Get the basic Evas_Image object from this object (widget). + * + * @param[out] ret + * + * @see elm_plug_image_object_get + * + * @ingroup Plug + */ +#define elm_obj_plug_image_object_get(ret) ELM_OBJ_PLUG_ID(ELM_OBJ_PLUG_SUB_ID_IMAGE_OBJECT_GET), EO_TYPECHECK(Evas_Object **, ret) + +/** + * @def elm_obj_plug_connect + * @since 1.8 + * + * Connect a plug widget to service provided by socket image. + * + * @param[in] svcname + * @param[in] svcnum + * @param[in] svcsys + * @param[out] ret + * + * @see elm_plug_connect + * + * @ingroup Plug + */ +#define elm_obj_plug_connect(svcname, svcnum, svcsys, ret) ELM_OBJ_PLUG_ID(ELM_OBJ_PLUG_SUB_ID_CONNECT), EO_TYPECHECK(const char *, svcname), EO_TYPECHECK(int, svcnum), EO_TYPECHECK(Eina_Bool, svcsys), EO_TYPECHECK(Eina_Bool *, ret) diff --git a/src/lib/elm_plug_legacy.h b/src/lib/elm_plug_legacy.h new file mode 100644 index 000000000..ba0330d80 --- /dev/null +++ b/src/lib/elm_plug_legacy.h @@ -0,0 +1,39 @@ +/** + * Add a new plug image to the parent. + * + * @param parent The parent object + * @return The new plug image object or NULL if it cannot be created + * + * @ingroup Plug + */ +EAPI Evas_Object *elm_plug_add(Evas_Object *parent); + +/** + * Get the basic Evas_Image object from this object (widget). + * + * @param obj The image object to get the inlined image from + * @return The inlined image object, or NULL if none exists + * + * 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. + * + * @note Be careful to not manipulate it, as it is under control of + * elementary. + * + * @ingroup Plug + */ +EAPI Evas_Object *elm_plug_image_object_get(const Evas_Object *obj); + +/** + * Connect a plug widget to service provided by socket image. + * + * @param obj The Evas_Object where the new image object will live. + * @param svcname The service name to connect to set up by the socket. + * @param svcnum The service number to connect to (set up by socket). + * @param svcsys 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) + * + * @ingroup Plug + */ +EAPI Eina_Bool elm_plug_connect(Evas_Object *obj, const char *svcname, int svcnum, Eina_Bool svcsys); diff --git a/src/lib/elm_prefs.h b/src/lib/elm_prefs.h index a813baa16..466065850 100644 --- a/src/lib/elm_prefs.h +++ b/src/lib/elm_prefs.h @@ -1,356 +1,6 @@ #ifndef ELM_PREFS_H #define ELM_PREFS_H -#define ELM_OBJ_PREFS_CLASS elm_obj_prefs_class_get() - -const Eo_Class *elm_obj_prefs_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_PREFS_BASE_ID; - -enum -{ - ELM_OBJ_PREFS_SUB_ID_FILE_SET, - ELM_OBJ_PREFS_SUB_ID_FILE_GET, - ELM_OBJ_PREFS_SUB_ID_DATA_SET, - ELM_OBJ_PREFS_SUB_ID_DATA_GET, - ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_SET, - ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_GET, - ELM_OBJ_PREFS_SUB_ID_RESET, - ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_SET, - ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_GET, - ELM_OBJ_PREFS_SUB_ID_ITEM_OBJECT_GET, - ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_SET, - ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_GET, - ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_SET, - ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_GET, - ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_SET, - ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_GET, - ELM_OBJ_PREFS_SUB_ID_ITEM_SWALLOW, - ELM_OBJ_PREFS_SUB_ID_ITEM_UNSWALLOW, - ELM_OBJ_PREFS_SUB_ID_LAST -}; - -#define ELM_OBJ_PREFS_ID(sub_id) (ELM_OBJ_PREFS_BASE_ID + sub_id) - -/** - * @def elm_obj_prefs_file_set - * - * Set file and page to populate a given prefs widget's interface. - * - * @param[in] file - * @param[in] page - * @param[out] ret - * - * @see elm_prefs_file_set() - * - * @since 1.8 - */ -#define elm_obj_prefs_file_set(file, page, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_FILE_SET), \ - EO_TYPECHECK(const char *, file), \ - EO_TYPECHECK(const char *, page), \ - EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_prefs_file_get - * - * Retrieve file and page bound to a given prefs widget. - * - * @param[out] file - * @param[out] page - * @param[out] ret - * - * @see elm_prefs_file_get() - * - * @since 1.8 - */ -#define elm_obj_prefs_file_get(file, page, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_FILE_GET), \ - EO_TYPECHECK(const char **, file), \ - EO_TYPECHECK(const char **, page), \ - EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_prefs_data_set - * - * Set user data for a given prefs widget - * - * @param[in] data - * @param[out] ret - * - * @see elm_prefs_data_set() - * - * @since 1.8 - */ -#define elm_obj_prefs_data_set(data, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_DATA_SET), \ - EO_TYPECHECK(Elm_Prefs_Data *, data), \ - EO_TYPECHECK(Eina_Bool *, ret) -//FIXME: prefs_data == eobject? - -/** - * @def elm_obj_prefs_data_get - * - * Retrieve user data for a given prefs widget - * - * @param[out] ret - * - * @see elm_prefs_data_get() - * - * @since 1.8 - */ -#define elm_obj_prefs_data_get(ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_DATA_GET), \ - EO_TYPECHECK(Elm_Prefs_Data **, ret) - -/** - * @def elm_obj_prefs_autosave_set - * - * Set whether a given prefs widget should save its values back (on - * the user data file, if set) automatically on every UI element - * changes. - * - * @param[in] autosave - * - * @see elm_prefs_autosave_get() - * - * @since 1.8 - */ -#define elm_obj_prefs_autosave_set(autosave) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_SET), \ - EO_TYPECHECK(Eina_Bool, autosave) - -/** - * @def elm_obj_prefs_autosave_get - * - * Get whether a given prefs widget is saving its values back - * automatically on changes. - * - * @param[out] ret - * - * @see elm_prefs_autosave_set() - * - * @since 1.8 - */ -#define elm_obj_prefs_autosave_get(ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_GET), \ - EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_prefs_reset - * - * Reset the values of a given prefs widget to a previous state. - * - * @param[in] mode - * - * @since 1.8 - */ -#define elm_obj_prefs_reset(mode) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_RESET), \ - EO_TYPECHECK(Elm_Prefs_Reset_Mode, mode) - -/** - * @def elm_obj_prefs_item_value_set - * - * Set the value on a given prefs widget's item. - * - * @param[in] name - * @param[in] value - * @param[out] ret - * - * @see elm_prefs_item_value_get() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_value_set(name, value, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_SET), \ - EO_TYPECHECK(const char *, name), \ - EO_TYPECHECK(const Eina_Value *, value), \ - EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_prefs_item_value_get - * - * Retrieve the value of a given prefs widget's item. - * - * @param[in] name - * @param[out] value - * @param[out] ret - * - * @see elm_prefs_item_value_set() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_value_get(name, value, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_GET), \ - EO_TYPECHECK(const char *, name), \ - EO_TYPECHECK(Eina_Value *, value), \ - EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_prefs_item_object_get - * - * Retrieve the Elementary widget bound to a given prefs widget's - * item. - * - * @param[in] name - * @param[out] ret - * - * @see elm_prefs_item_value_get() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_object_get(name, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_OBJECT_GET), \ - EO_TYPECHECK(const char *, name), \ - EO_TYPECHECK(const Evas_Object **, ret) //FIXME: return EObject? - -/** - * @def elm_obj_prefs_item_visible_set - * - * Set whether the widget bound to given prefs widget's item should be - * visible or not. - * - * @param[in] name - * @param[in] visible - * - * @see elm_prefs_item_visible_set() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_visible_set(name, visible) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_SET), \ - EO_TYPECHECK(const char *, name), \ - EO_TYPECHECK(Eina_Bool, visible) - -/** - * @def elm_obj_prefs_item_visible_get - * - * Retrieve whether the widget bound to a given prefs widget's item is - * visible or not. - * - * @param[in] name - * @param[out] ret - * - * @see elm_prefs_item_visible_get() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_visible_get(name, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_GET), \ - EO_TYPECHECK(const char *,name), \ - EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_prefs_item_disabled_set - * - * Set whether the widget bound to a given prefs widget's item is - * disabled or not. - * - * @param[in] name - * @param[in] disabled - * - * @see elm_prefs_item_disabled_set() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_disabled_set(name, disabled) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_SET), \ - EO_TYPECHECK(const char *, name), \ - EO_TYPECHECK(Eina_Bool, disabled) - -/** - * @def elm_obj_prefs_item_disabled_get - * - * Retrieve whether the widget bound to a given prefs widget's item is - * disabled or not. - * - * @param[in] name - * @param[out] ret - * - * @see elm_prefs_item_disabled_get() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_disabled_get(name, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_GET), \ - EO_TYPECHECK(const char *, name), \ - EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_prefs_item_editable_set - * - * Set whether the widget bound to a given prefs widget's item is - * editable or not. - * - * @param[in] name - * @param[in] editable - * - * @see elm_prefs_item_editable_set() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_editable_set(name, editable) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_SET), \ - EO_TYPECHECK(const char *, name), \ - EO_TYPECHECK(Eina_Bool, editable) - -/** - * @def elm_obj_prefs_item_editable_get - * - * Retrieve whether the widget bound to a given prefs widget's item is - * editable or not. - * - * @param[in] name - * @param[out] ret - * - * @see elm_prefs_item_editable_get() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_editable_get(name, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_GET), \ - EO_TYPECHECK(const char *, name), \ - EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_prefs_item_swallow - * - * "Swallows" an object into a SWALLOW item of a prefs widget. - * - * @param[in] name - * @param[in] child - * @param[out] ret - * - * @see elm_prefs_item_swallow() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_swallow(name, child, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_SWALLOW), \ - EO_TYPECHECK(const char *, name), \ - EO_TYPECHECK(Evas_Object *, child), \ - EO_TYPECHECK(Eina_Bool *, ret) -//FIXME: child == EObject? - -/** - * @def elm_obj_prefs_item_unswallow - * - * Unswallow an object from a SWALLOW item of a prefs widget. - * - * @param[in] name - * @param[out] ret - * - * @see elm_prefs_item_unswallow() - * - * @since 1.8 - */ -#define elm_obj_prefs_item_unswallow(name, ret) \ - ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_UNSWALLOW), \ - EO_TYPECHECK(const char *,name), \ - EO_TYPECHECK(Evas_Object **, ret) -//FIXME: ret == EObject? - /** * @addtogroup Prefs * @{ @@ -423,691 +73,13 @@ enum * @li @ref prefs_example_03 */ -/** - * Modes of resetting a prefs widget. - * - * @see elm_prefs_reset() - * - * @since 1.8 - */ -typedef enum -{ - ELM_PREFS_RESET_DEFAULTS, /** reset to default values, declared in its @b .epb file */ - ELM_PREFS_RESET_LAST /** prefs will keep a small history of changes, so this resets back to last batch of changes on the UI elements. it does @b not work on autosave mode */ -} Elm_Prefs_Reset_Mode; - -/** - * @brief Add a new prefs widget - * - * @param parent The parent widget to hold the new one - * @return The new object or @c NULL, on errors - * - * @since 1.8 - */ -EAPI Evas_Object *elm_prefs_add(Evas_Object *parent); - -/** - * Set file and page to populate a given prefs widget's interface. - * - * @param o A prefs widget handle - * @param file The @b .epb (binary) file to get contents from - * @param page The page, inside @a file, where to get item contents from - * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise - * - * Elm prefs widgets start blank, with no child widgets. It's meant to - * have its viewport populated with child elements coming from a - * declaration file. That file (usually with @b .epb extension), is a - * binary format (Eet) one, coming from a human-readable textual - * declaration. This textual form (usually with @b .epc extension) is - * translated to the binary form by means of the @b prefs_cc compiler. - * - * With this function, one thus populates a prefs widget with UI - * elements. - * - * If @a file is @c NULL, "elm_app_data_dir_get()/preferences.epb" - * will be used, by default. If @a file is a @b relative path, the - * prefix "elm_app_data_dir_get()/" will be implicitly used with it. - * If @a page is @c NULL, it is considered "main", as default. - * - * @warning If your binary is not properly installed and - * elm_app_data_dir_get() can't be figured out, a fallback value of - * "." will be tryed, instead. - * - * @see elm_prefs_file_get() - * - * @since 1.8 - */ -EAPI Eina_Bool elm_prefs_file_set(Evas_Object *o, - const char *file, - const char *page); - -/** - * Retrieve file and page bound to a given prefs widget. - * - * @param o A prefs widget handle - * @param file Where to store the file @a o is bound to - * @param page Where to store the page @a o is bound to - * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise - * - * @note Use @c NULL pointers on the components you're not - * interested in: they'll be ignored by the function. - * - * @see elm_prefs_file_set() for more information - * - * @since 1.8 - */ -EAPI Eina_Bool elm_prefs_file_get(const Evas_Object *o, - const char **file, - const char **page); -/** - * Set user data for a given prefs widget - * - * @param obj A prefs widget handle - * @param prefs_data A valid prefs_data handle - * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise - * - * Once a prefs widget is created, after elm_prefs_file_set() is - * issued on it, all of its UI elements will get default values, when - * declared on that file. To fetch an user's own, personal set of - * those values, one gets to pair a <b>prefs data</b> handle to the - * prefs widget. This is what this call is intended for. - * - * Prefs data values from @a prefs_data with keys matching the ones - * present on the file passed on elm_prefs_file_set() to @a obj will - * have their values applied to the respective UI elements of the - * widget. - * - * When @a obj dies, the values of the elements declared on its @b - * .epb file (the one set on elm_prefs_file_set()) marked as permanent - * <b>will be written back</b> to @a prefs_data, if it is writable. - * One is also able to make this writing event to take place - * automatically after each UI element modification by using - * elm_prefs_autosave_set(). - * - * @note @a obj will keep a reference of its own for @a prefs_data, - * but you should still unreference it by yourself, after the widget - * is gone. - * - * @see elm_prefs_data_get() - * - * @since 1.8 - */ -EAPI Eina_Bool elm_prefs_data_set(Evas_Object *obj, - Elm_Prefs_Data *data); - -/** - * Retrieve user data for a given prefs widget - * - * @param obj A prefs widget handle - * @param prefs_data A valid prefs_data handle - * @return A pointer to the user data of a given prefs widget on success. - * @c NULL otherwise. - * - * @see elm_prefs_data_set() for more details - * - * @since 1.8 - */ -EAPI Elm_Prefs_Data *elm_prefs_data_get(const Evas_Object *o); - -/** - * Set whether a given prefs widget should save its values back (on - * the user data file, if set) automatically on every UI element - * changes. - * - * @param prefs A valid prefs widget handle - * @param autosave @c EINA_TRUE to save automatically, @c EINA_FALSE - * otherwise. - * - * If @a autosave is @c EINA_TRUE, every call to - * elm_prefs_item_value_set(), every - * Elm_Prefs_Data_Event_Type::ELM_PREFS_DATA_EVENT_ITEM_CHANGED event - * coming for its prefs data and every UI element direct value - * changing will implicitly make the prefs values to be flushed back - * to it prefs data. If a prefs data handle with no writing - * permissions or no prefs data is set on @a prefs, naturally nothing - * will happen. - * - * @see elm_prefs_autosave_get() - * - * @since 1.8 - */ -EAPI void elm_prefs_autosave_set(Evas_Object *prefs, - Eina_Bool autosave); - -/** - * Get whether a given prefs widget is saving its values back - * automatically on changes. - * - * @param prefs A valid prefs widget handle - * @return @c EINA_TRUE if @a prefs is saving automatically, - * @c EINA_FALSE otherwise. - * - * @see elm_prefs_autosave_set(), for more details - * - * @since 1.8 - */ -EAPI Eina_Bool elm_prefs_autosave_get(const Evas_Object *prefs); - -/** - * Reset the values of a given prefs widget to a previous state. - * - * @param prefs A valid prefs widget handle - * @param mode The reset mode to apply on @a prefs - * - * As can be seen on #Elm_Prefs_Reset_Mode, there are two possible - * actions to be taken by this call -- either to reset @a prefs' - * values to the defaults (declared on the @c .epb file it is bound - * to) or to reset to the state they were before the last modification - * it got. - * - * @since 1.8 - */ -EAPI void elm_prefs_reset(Evas_Object *prefs, - Elm_Prefs_Reset_Mode mode); - -/** - * Set the value on a given prefs widget's item. - * - * @param prefs A valid prefs widget handle - * @param name The name of the item (as declared in the prefs - * collection) - * @param value The value to set on the item. It should be typed as - * the item expects, preferably, or a conversion will - * take place - * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise - * - * This will change the value of item named @a name programatically. - * - * @see elm_prefs_item_value_get() - * - * @since 1.8 - */ -EAPI Eina_Bool elm_prefs_item_value_set(Evas_Object *prefs, - const char *name, - const Eina_Value *value); - -/** - * Retrieve the value of a given prefs widget's item. - * - * @param prefs A valid prefs widget handle - * @param name The name of the item (as declared in the prefs - * collection) to get value from - * @param value Where to store the value of the item. It will be - * overwritten and setup with the type the item - * is bound to - * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise - * - * This will retrieve the value of item named @a name. - * - * @see elm_prefs_item_value_set() - * - * @since 1.8 - */ -EAPI Eina_Bool elm_prefs_item_value_get(const Evas_Object *prefs, - const char *name, - Eina_Value *value); -/** - * Retrieve the Elementary widget bound to a given prefs widget's - * item. - * - * @param prefs A valid prefs widget handle - * @param name The name of the item (as declared in the prefs - * collection) to get object from - * @return A valid widget handle, on success, or @c NULL, otherwise - * - * This will retrieve a handle to the real widget implementing a given - * item of @a prefs, <b>for read-only</b> actions. - * - * @warning You should @b never modify the state of the returned - * widget, because it's meant to be managed by @a prefs, solely. - * - * @see elm_prefs_item_value_set() - * - * @since 1.8 - */ -EAPI const Evas_Object *elm_prefs_item_object_get(Evas_Object *prefs, - const char *name); - -/** - * Set whether the widget bound to given prefs widget's item should be - * visible or not. - * - * @param prefs A valid prefs widget handle - * @param name The name of the item (as declared in the prefs - * collection) to change visibility of - * @param visible @c EINA_TRUE, to make it visible, @c EINA_FALSE - * otherwise - * - * Each prefs item may have a default visibility state, declared on - * the @c .epb @a prefs it was loaded with. By this call one may alter - * that state, programatically. - * - * @see elm_prefs_item_visible_get() - * - * @since 1.8 - */ -EAPI void elm_prefs_item_visible_set(Evas_Object *prefs, - const char *name, - Eina_Bool visible); - -/** - * Retrieve whether the widget bound to a given prefs widget's item is - * visible or not. - * - * @param prefs A valid prefs widget handle - * @param name The name of the item (as declared in the prefs - * collection) to get visibility state from - * @return @c EINA_TRUE, if it is visible, @c EINA_FALSE - * otherwise - * - * @see elm_prefs_item_visible_set() for more details - * - * @since 1.8 - */ -EAPI Eina_Bool elm_prefs_item_visible_get(const Evas_Object *prefs, - const char *name); - -/** - * Set whether the widget bound to a given prefs widget's item is - * disabled or not. - * - * @param prefs A valid prefs widget handle - * @param name The name of the item (as declared in the prefs - * collection) to act on - * @param disabled @c EINA_TRUE, to make it disabled, @c EINA_FALSE - * otherwise - * - * @see elm_prefs_item_disabled_get() - * - * @since 1.8 - */ -EAPI void elm_prefs_item_disabled_set(Evas_Object *prefs, - const char *name, - Eina_Bool disabled); - -/** - * Retrieve whether the widget bound to a given prefs widget's item is - * disabled or not. - * - * @param prefs A valid prefs widget handle - * @param name The name of the item (as declared in the prefs - * collection) to get disabled state from - * @return @c EINA_TRUE, if it is disabled, @c EINA_FALSE - * otherwise - * - * @see elm_prefs_item_disabled_set() - * - * @since 1.8 - */ -EAPI Eina_Bool elm_prefs_item_disabled_get(const Evas_Object *prefs, - const char *name); - -/** - * Set whether the widget bound to a given prefs widget's item is - * editable or not. - * - * @param prefs A valid prefs widget handle - * @param name The name of the item (as declared in the prefs - * collection) to act on - * @param editable @c EINA_TRUE, to make it editable, @c EINA_FALSE - * otherwise - * - * @note Only @c TEXT or @c TEXTAREA items' default widgets implement - * the 'editable' property. Custom registered widgets may as well - * implement them. - * - * @see elm_prefs_item_editable_get() - * - * @since 1.8 - */ -EAPI void elm_prefs_item_editable_set(Evas_Object *prefs, - const char *name, - Eina_Bool editable); - -/** - * Retrieve whether the widget bound to a given prefs widget's item is - * editable or not. - * - * @param prefs A valid prefs widget handle - * @param name The name of the item (as declared in the prefs - * collection) to get editable state from - * @return @c EINA_TRUE, if it is editable, @c EINA_FALSE - * otherwise - * - * @see elm_prefs_item_editable_set() for more details - * - * @since 1.8 - */ -EAPI Eina_Bool elm_prefs_item_editable_get(const Evas_Object *prefs, - const char *name); - -/** - * "Swallows" an object into a SWALLOW item of a prefs widget. - * - * @param obj A valid prefs widget handle - * @param name the name of the SWALLOW item (as declared in the prefs - * collection) - * @param child The object to occupy the item - * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise - * - * @see elm_prefs_item_swallow() for more details - * - * @since 1.8 - */ -EAPI Eina_Bool elm_prefs_item_swallow(Evas_Object *obj, - const char *name, - Evas_Object *child); - -/** - * Unswallow an object from a SWALLOW item of a prefs widget. - * - * @param obj A valid prefs widget handle - * @param name the name of the SWALLOW item (as declared in the prefs - * collection) - * @return The unswallowed object, or NULL on errors - * - * @see elm_prefs_item_unswallow() for more details - * - * @since 1.8 - */ -EAPI Evas_Object *elm_prefs_item_unswallow(Evas_Object *obj, - const char *name); - -/* API for prefs interface modules, from now on */ - -typedef struct _Elm_Prefs_Item_Spec_Void -{ -} Elm_Prefs_Item_Spec_Void; - -typedef struct _Elm_Prefs_Item_Spec_Bool -{ - Eina_Bool def; -} Elm_Prefs_Item_Spec_Bool; - -typedef struct _Elm_Prefs_Item_Spec_Int -{ - int def, min, max; -} Elm_Prefs_Item_Spec_Int; - -typedef struct _Elm_Prefs_Item_Spec_Float -{ - float def, min, max; -} Elm_Prefs_Item_Spec_Float; - -typedef struct _Elm_Prefs_Item_Spec_String -{ - const char *def; - const char *placeholder; - const char *accept; - const char *deny; - - struct - { - int min, max; - } length; -} Elm_Prefs_Item_Spec_String; - -typedef struct _Elm_Prefs_Item_Spec_Date -{ - struct - { - unsigned char d; /* day*/ - unsigned char m; /* month*/ - unsigned short y; /* year */ - } def; - - struct - { - unsigned char d; /* day*/ - unsigned char m; /* month*/ - unsigned short y; /* year */ - } min; - - struct - { - unsigned char d; /* day*/ - unsigned char m; /* month*/ - unsigned short y; /* year */ - } max; -} Elm_Prefs_Item_Spec_Date; - -typedef struct _Elm_Prefs_Item_Spec_Page -{ - const char *source; -} Elm_Prefs_Item_Spec_Page; - -typedef union _Elm_Prefs_Item_Spec -{ - Elm_Prefs_Item_Spec_Void v; - Elm_Prefs_Item_Spec_Bool b; - Elm_Prefs_Item_Spec_Int i; - Elm_Prefs_Item_Spec_Float f; - Elm_Prefs_Item_Spec_String s; - Elm_Prefs_Item_Spec_Date d; - Elm_Prefs_Item_Spec_Page p; -} Elm_Prefs_Item_Spec; - -typedef struct _Elm_Prefs_Item_Iface Elm_Prefs_Item_Iface; - -/** - * Convenience struct used to mass-register widgets implementing - * prefs @b items interfaces. - * - * To be used with elm_prefs_item_iface_register() and - * elm_prefs_item_iface_unregister(). - */ -struct _Elm_Prefs_Item_Iface_Info -{ - const char *widget_name; /**< The name of the widget implementing the interface, to be exposed on the prefs collections language. */ - const Elm_Prefs_Item_Iface *info; /**< The type interface's implementation. */ -}; -typedef struct _Elm_Prefs_Item_Iface_Info Elm_Prefs_Item_Iface_Info; - -typedef void (*Elm_Prefs_Item_Changed_Cb)(Evas_Object *it_obj); /**< Elementary prefs' item widget changed function signature */ - -/** - * @struct _Elm_Prefs_Item_Iface - * - * @brief Interface between items of the @ref elm-prefs-widget widget - * and the real widgets implementing them. - * - * This structure defines the interface between the - * @ref elm-prefs-widget widget's items (all item types in Elementary prefs - * collections but the @c PAGE one) and Elementary widgets - * implementing them. @c add() is the only mandatory function an - * item widget has to implement. - * - * @note For items of type @c PAGE, refer to #Elm_Prefs_Page_Iface. - * - * @since 1.8 - */ -struct _Elm_Prefs_Item_Iface -{ -#define ELM_PREFS_ITEM_IFACE_ABI_VERSION (1) - unsigned int abi_version; /**< always use: - * - #ELM_PREFS_ITEM_IFACE_ABI_VERSION to declare. - * - elm_prefs_widget_iface_abi_version_get() to check. - */ - - const Elm_Prefs_Item_Type *types; /**< types of prefs items supported by the widget, #ELM_PREFS_TYPE_UNKNOWN terminated */ - - Evas_Object * (*add)(const Elm_Prefs_Item_Iface * iface, - Evas_Object * prefs, - const Elm_Prefs_Item_Type type, - const Elm_Prefs_Item_Spec spec, - Elm_Prefs_Item_Changed_Cb it_changed_cb); /**< Function to instantiate the item widget. It must return the widget handle, which should be the @c obj argument on the functions which follow. That object argument, by the way, should always have their respective #Elm_Prefs_Item_Node handle accessible via a @c "prefs_item" Evas object data value. The return value of the following functions should be @c EINA_TRUE, on success or @c EINA_FALSE, otherwise. */ - - Eina_Bool (*value_set)(Evas_Object *obj, - Eina_Value *value); /**< Function to set the value on the item widget. Note that for items of type #ELM_PREFS_TYPE_SEPARATOR, this function has a special meaning of making the separator widget a @b horizontal one */ - - Eina_Bool (*value_get)(Evas_Object *obj, - Eina_Value *value); /**< Function to set the value on the item widget. Note that for items of type #ELM_PREFS_TYPE_SEPARATOR, this function has a special meaning of making the separator widget a @b vertical one */ - - Eina_Bool (*value_validate)(Evas_Object *obj); /** < Function to validate the value from the item widget before saving it. The return value of the following function should be @c EINA_TRUE, if the value conforms with the expected or @c EINA_FALSE, otherwise. */ - - Eina_Bool (*label_set)(Evas_Object *obj, - const char *label); /**< function to set a label on the item widget */ - - Eina_Bool (*icon_set)(Evas_Object *obj, - const char *icon); /**< function to set an icon on the item widget */ - - Eina_Bool (*editable_set)(Evas_Object *obj, - Eina_Bool val); /**< function to set an item widget as editable or not */ - - Eina_Bool (*editable_get)(Evas_Object *obj); /**< function to retrieve whether an item widget is editable or not */ - - Eina_Bool (*expand_want)(Evas_Object *obj); /**< function to get wether the item implementation needs to be expanded in the page's longitudinal axis or not */ -}; - -/** - * Mass-register widgets implementing prefs @b items interfaces. - * - * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL - * terminated. - * - * This will register all item interfaces declared on @a array in - * Elementary, so that the prefs widget will recognize them on @c .epc - * files @c 'widget:' (item) declarations. - * - * @see elm_prefs_item_iface_unregister() - * - * @since 1.8 - */ -EAPI void elm_prefs_item_iface_register(const Elm_Prefs_Item_Iface_Info *array); - -/** - * Mass-unregister widgets implementing prefs @b items interfaces. - * - * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL - * terminated. - * - * This will unregister all item interfaces declared on @a array in - * Elementary, given they had been previously registered. - * - * @see elm_prefs_item_iface_register() for more details - * - * @since 1.8 - */ -EAPI void elm_prefs_item_iface_unregister(const Elm_Prefs_Item_Iface_Info *array); - -EAPI Eina_Bool elm_prefs_item_widget_common_add(Evas_Object *prefs, - Evas_Object *obj); - -typedef struct _Elm_Prefs_Page_Iface Elm_Prefs_Page_Iface; - -/** - * Convenience struct used to mass-register widgets implementing - * prefs @b pages interfaces. - * - * To be used with elm_prefs_page_iface_register() and - * elm_prefs_page_iface_unregister(). - */ -struct _Elm_Prefs_Page_Iface_Info -{ - const char *widget_name; /**< The name of the widget implementing the interface, to be exposed on the prefs collections language. */ - const Elm_Prefs_Page_Iface *info; /**< The interface's implementation. */ -}; -typedef struct _Elm_Prefs_Page_Iface_Info Elm_Prefs_Page_Iface_Info; - -/** - * @struct _Elm_Prefs_Page_Iface - * - * @brief Interface between pages of the @ref elm-prefs-widget widget - * and the real widgets implementing them. - * - * This structure defines the interface between the - * @ref elm-prefs-widget widget's pages and Elementary widgets - * implementing them. - * - * It is @b mandatory that the following functions be implemented, at - * least, for a page widget: - * - * - #Elm_Prefs_Page_Iface::add - * - #Elm_Prefs_Page_Iface::item_pack - * - #Elm_Prefs_Page_Iface::item_unpack - * - #Elm_Prefs_Page_Iface::item_pack_before - * - #Elm_Prefs_Page_Iface::item_pack_after - * - * @note For regular, non-page prefs items, refer to #Elm_Prefs_Item_Iface. - * - * @since 1.8 - */ -struct _Elm_Prefs_Page_Iface -{ -#define ELM_PREFS_PAGE_IFACE_ABI_VERSION (1) - unsigned int abi_version; /**< always use: - * - #ELM_PREFS_PAGE_IFACE_ABI_VERSION to declare. - * - elm_prefs_widget_iface_abi_version_get() to check. - */ - - Evas_Object * (*add)(const Elm_Prefs_Page_Iface * iface, - Evas_Object * prefs); /**< Function to instantiate the page widget. It must return the widget handle, which should be the @c obj argument on the functions which follow. That object argument, by the way, should always have their respective #Elm_Prefs_Page_Node handle accessible via a @c "prefs_page" Evas object data value. The return value of the following functions should be @c EINA_TRUE, on success or @c EINA_FALSE, otherwise. */ - - Eina_Bool (*title_set)(Evas_Object *obj, - const char *title); /**< function to set a title on the page widget */ - - Eina_Bool (*sub_title_set)(Evas_Object *obj, - const char *sub_title); /**< function to set a sub-title on the page widget */ - - Eina_Bool (*icon_set)(Evas_Object *obj, - const char *icon); /**< function to set an icon on the page widget */ - - Eina_Bool (*item_pack)(Evas_Object *obj, - Evas_Object *it, - const Elm_Prefs_Item_Type type, - const Elm_Prefs_Item_Iface *iface); /**< function to pack an item (widget) on the page widget */ - - - Eina_Bool (*item_unpack)(Evas_Object *obj, - Evas_Object *it); /**< function to unpack an item (widget) on the page widget */ - - Eina_Bool (*item_pack_before)(Evas_Object *obj, - Evas_Object *it, - Evas_Object *it_before, - const Elm_Prefs_Item_Type type, - const Elm_Prefs_Item_Iface *iface); /**< function to pack an item (widget) on the page widget, before a pre-existing, referential, packed one */ - - Eina_Bool (*item_pack_after)(Evas_Object *obj, - Evas_Object *it, - Evas_Object *it_after, /**< function to pack an item (widget) on the page widget, after a pre-existing, referential, packed one */ - const Elm_Prefs_Item_Type type, - const Elm_Prefs_Item_Iface *iface); -}; - -/** - * Mass-register widgets implementing prefs @b pages interfaces. - * - * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL - * terminated. - * - * This will register all page interfaces declared on @a array in - * Elementary, so that the prefs widget will recognize them on @c .epc - * files @c 'widget:' (page) declarations. - * - * @see elm_prefs_page_iface_unregister() - * - * @since 1.8 - */ -EAPI void elm_prefs_page_iface_register(const Elm_Prefs_Page_Iface_Info *array); - -/** - * Mass-unregister widgets implementing prefs @b pages interfaces. - * - * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL - * terminated. - * - * This will unregister all page interfaces declared on @a array in - * Elementary, given they had been previously registered. - * - * @see elm_prefs_page_iface_register() for more details - * - * @since 1.8 - */ -EAPI void elm_prefs_page_iface_unregister(const Elm_Prefs_Page_Iface_Info *array); - -EAPI Eina_Bool elm_prefs_page_widget_common_add(Evas_Object *prefs, - Evas_Object *obj); - +#include "elm_prefs_common.h" +#ifdef EFL_EO_API_SUPPORT +#include "elm_prefs_eo.h" +#endif +#ifndef EFL_NOLEGACY_API_SUPPORT +#include "elm_prefs_legacy.h" +#endif /** * @} */ diff --git a/src/lib/elm_prefs_common.h b/src/lib/elm_prefs_common.h new file mode 100644 index 000000000..70f063aaa --- /dev/null +++ b/src/lib/elm_prefs_common.h @@ -0,0 +1,316 @@ +/** + * Modes of resetting a prefs widget. + * + * @see elm_prefs_reset() + * + * @since 1.8 + */ +typedef enum +{ + ELM_PREFS_RESET_DEFAULTS, /** reset to default values, declared in its @b .epb file */ + ELM_PREFS_RESET_LAST /** prefs will keep a small history of changes, so this resets back to last batch of changes on the UI elements. it does @b not work on autosave mode */ +} Elm_Prefs_Reset_Mode; + +/** + * @brief Add a new prefs widget + * + * @param parent The parent widget to hold the new one + * @return The new object or @c NULL, on errors + * + * @since 1.8 + */ +EAPI Evas_Object *elm_prefs_add(Evas_Object *parent); + + +/* API for prefs interface modules, from now on */ + +typedef struct _Elm_Prefs_Item_Spec_Void +{ +} Elm_Prefs_Item_Spec_Void; + +typedef struct _Elm_Prefs_Item_Spec_Bool +{ + Eina_Bool def; +} Elm_Prefs_Item_Spec_Bool; + +typedef struct _Elm_Prefs_Item_Spec_Int +{ + int def, min, max; +} Elm_Prefs_Item_Spec_Int; + +typedef struct _Elm_Prefs_Item_Spec_Float +{ + float def, min, max; +} Elm_Prefs_Item_Spec_Float; + +typedef struct _Elm_Prefs_Item_Spec_String +{ + const char *def; + const char *placeholder; + const char *accept; + const char *deny; + + struct + { + int min, max; + } length; +} Elm_Prefs_Item_Spec_String; + +typedef struct _Elm_Prefs_Item_Spec_Date +{ + struct + { + unsigned char d; /* day*/ + unsigned char m; /* month*/ + unsigned short y; /* year */ + } def; + + struct + { + unsigned char d; /* day*/ + unsigned char m; /* month*/ + unsigned short y; /* year */ + } min; + + struct + { + unsigned char d; /* day*/ + unsigned char m; /* month*/ + unsigned short y; /* year */ + } max; +} Elm_Prefs_Item_Spec_Date; + +typedef struct _Elm_Prefs_Item_Spec_Page +{ + const char *source; +} Elm_Prefs_Item_Spec_Page; + +typedef union _Elm_Prefs_Item_Spec +{ + Elm_Prefs_Item_Spec_Void v; + Elm_Prefs_Item_Spec_Bool b; + Elm_Prefs_Item_Spec_Int i; + Elm_Prefs_Item_Spec_Float f; + Elm_Prefs_Item_Spec_String s; + Elm_Prefs_Item_Spec_Date d; + Elm_Prefs_Item_Spec_Page p; +} Elm_Prefs_Item_Spec; + +typedef struct _Elm_Prefs_Item_Iface Elm_Prefs_Item_Iface; + +/** + * Convenience struct used to mass-register widgets implementing + * prefs @b items interfaces. + * + * To be used with elm_prefs_item_iface_register() and + * elm_prefs_item_iface_unregister(). + */ +struct _Elm_Prefs_Item_Iface_Info +{ + const char *widget_name; /**< The name of the widget implementing the interface, to be exposed on the prefs collections language. */ + const Elm_Prefs_Item_Iface *info; /**< The type interface's implementation. */ +}; +typedef struct _Elm_Prefs_Item_Iface_Info Elm_Prefs_Item_Iface_Info; + +typedef void (*Elm_Prefs_Item_Changed_Cb)(Evas_Object *it_obj); /**< Elementary prefs' item widget changed function signature */ + +/** + * @struct _Elm_Prefs_Item_Iface + * + * @brief Interface between items of the @ref elm-prefs-widget widget + * and the real widgets implementing them. + * + * This structure defines the interface between the + * @ref elm-prefs-widget widget's items (all item types in Elementary prefs + * collections but the @c PAGE one) and Elementary widgets + * implementing them. @c add() is the only mandatory function an + * item widget has to implement. + * + * @note For items of type @c PAGE, refer to #Elm_Prefs_Page_Iface. + * + * @since 1.8 + */ +struct _Elm_Prefs_Item_Iface +{ +#define ELM_PREFS_ITEM_IFACE_ABI_VERSION (1) + unsigned int abi_version; /**< always use: + * - #ELM_PREFS_ITEM_IFACE_ABI_VERSION to declare. + * - elm_prefs_widget_iface_abi_version_get() to check. + */ + + const Elm_Prefs_Item_Type *types; /**< types of prefs items supported by the widget, #ELM_PREFS_TYPE_UNKNOWN terminated */ + + Evas_Object * (*add)(const Elm_Prefs_Item_Iface * iface, + Evas_Object * prefs, + const Elm_Prefs_Item_Type type, + const Elm_Prefs_Item_Spec spec, + Elm_Prefs_Item_Changed_Cb it_changed_cb); /**< Function to instantiate the item widget. It must return the widget handle, which should be the @c obj argument on the functions which follow. That object argument, by the way, should always have their respective #Elm_Prefs_Item_Node handle accessible via a @c "prefs_item" Evas object data value. The return value of the following functions should be @c EINA_TRUE, on success or @c EINA_FALSE, otherwise. */ + + Eina_Bool (*value_set)(Evas_Object *obj, + Eina_Value *value); /**< Function to set the value on the item widget. Note that for items of type #ELM_PREFS_TYPE_SEPARATOR, this function has a special meaning of making the separator widget a @b horizontal one */ + + Eina_Bool (*value_get)(Evas_Object *obj, + Eina_Value *value); /**< Function to set the value on the item widget. Note that for items of type #ELM_PREFS_TYPE_SEPARATOR, this function has a special meaning of making the separator widget a @b vertical one */ + + Eina_Bool (*value_validate)(Evas_Object *obj); /** < Function to validate the value from the item widget before saving it. The return value of the following function should be @c EINA_TRUE, if the value conforms with the expected or @c EINA_FALSE, otherwise. */ + + Eina_Bool (*label_set)(Evas_Object *obj, + const char *label); /**< function to set a label on the item widget */ + + Eina_Bool (*icon_set)(Evas_Object *obj, + const char *icon); /**< function to set an icon on the item widget */ + + Eina_Bool (*editable_set)(Evas_Object *obj, + Eina_Bool val); /**< function to set an item widget as editable or not */ + + Eina_Bool (*editable_get)(Evas_Object *obj); /**< function to retrieve whether an item widget is editable or not */ + + Eina_Bool (*expand_want)(Evas_Object *obj); /**< function to get wether the item implementation needs to be expanded in the page's longitudinal axis or not */ +}; + +/** + * Mass-register widgets implementing prefs @b items interfaces. + * + * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL + * terminated. + * + * This will register all item interfaces declared on @a array in + * Elementary, so that the prefs widget will recognize them on @c .epc + * files @c 'widget:' (item) declarations. + * + * @see elm_prefs_item_iface_unregister() + * + * @since 1.8 + */ +EAPI void elm_prefs_item_iface_register(const Elm_Prefs_Item_Iface_Info *array); + +/** + * Mass-unregister widgets implementing prefs @b items interfaces. + * + * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL + * terminated. + * + * This will unregister all item interfaces declared on @a array in + * Elementary, given they had been previously registered. + * + * @see elm_prefs_item_iface_register() for more details + * + * @since 1.8 + */ +EAPI void elm_prefs_item_iface_unregister(const Elm_Prefs_Item_Iface_Info *array); + +EAPI Eina_Bool elm_prefs_item_widget_common_add(Evas_Object *prefs, + Evas_Object *obj); + +typedef struct _Elm_Prefs_Page_Iface Elm_Prefs_Page_Iface; + +/** + * Convenience struct used to mass-register widgets implementing + * prefs @b pages interfaces. + * + * To be used with elm_prefs_page_iface_register() and + * elm_prefs_page_iface_unregister(). + */ +struct _Elm_Prefs_Page_Iface_Info +{ + const char *widget_name; /**< The name of the widget implementing the interface, to be exposed on the prefs collections language. */ + const Elm_Prefs_Page_Iface *info; /**< The interface's implementation. */ +}; +typedef struct _Elm_Prefs_Page_Iface_Info Elm_Prefs_Page_Iface_Info; + +/** + * @struct _Elm_Prefs_Page_Iface + * + * @brief Interface between pages of the @ref elm-prefs-widget widget + * and the real widgets implementing them. + * + * This structure defines the interface between the + * @ref elm-prefs-widget widget's pages and Elementary widgets + * implementing them. + * + * It is @b mandatory that the following functions be implemented, at + * least, for a page widget: + * + * - #Elm_Prefs_Page_Iface::add + * - #Elm_Prefs_Page_Iface::item_pack + * - #Elm_Prefs_Page_Iface::item_unpack + * - #Elm_Prefs_Page_Iface::item_pack_before + * - #Elm_Prefs_Page_Iface::item_pack_after + * + * @note For regular, non-page prefs items, refer to #Elm_Prefs_Item_Iface. + * + * @since 1.8 + */ +struct _Elm_Prefs_Page_Iface +{ +#define ELM_PREFS_PAGE_IFACE_ABI_VERSION (1) + unsigned int abi_version; /**< always use: + * - #ELM_PREFS_PAGE_IFACE_ABI_VERSION to declare. + * - elm_prefs_widget_iface_abi_version_get() to check. + */ + + Evas_Object * (*add)(const Elm_Prefs_Page_Iface * iface, + Evas_Object * prefs); /**< Function to instantiate the page widget. It must return the widget handle, which should be the @c obj argument on the functions which follow. That object argument, by the way, should always have their respective #Elm_Prefs_Page_Node handle accessible via a @c "prefs_page" Evas object data value. The return value of the following functions should be @c EINA_TRUE, on success or @c EINA_FALSE, otherwise. */ + + Eina_Bool (*title_set)(Evas_Object *obj, + const char *title); /**< function to set a title on the page widget */ + + Eina_Bool (*sub_title_set)(Evas_Object *obj, + const char *sub_title); /**< function to set a sub-title on the page widget */ + + Eina_Bool (*icon_set)(Evas_Object *obj, + const char *icon); /**< function to set an icon on the page widget */ + + Eina_Bool (*item_pack)(Evas_Object *obj, + Evas_Object *it, + const Elm_Prefs_Item_Type type, + const Elm_Prefs_Item_Iface *iface); /**< function to pack an item (widget) on the page widget */ + + + Eina_Bool (*item_unpack)(Evas_Object *obj, + Evas_Object *it); /**< function to unpack an item (widget) on the page widget */ + + Eina_Bool (*item_pack_before)(Evas_Object *obj, + Evas_Object *it, + Evas_Object *it_before, + const Elm_Prefs_Item_Type type, + const Elm_Prefs_Item_Iface *iface); /**< function to pack an item (widget) on the page widget, before a pre-existing, referential, packed one */ + + Eina_Bool (*item_pack_after)(Evas_Object *obj, + Evas_Object *it, + Evas_Object *it_after, /**< function to pack an item (widget) on the page widget, after a pre-existing, referential, packed one */ + const Elm_Prefs_Item_Type type, + const Elm_Prefs_Item_Iface *iface); +}; + +/** + * Mass-register widgets implementing prefs @b pages interfaces. + * + * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL + * terminated. + * + * This will register all page interfaces declared on @a array in + * Elementary, so that the prefs widget will recognize them on @c .epc + * files @c 'widget:' (page) declarations. + * + * @see elm_prefs_page_iface_unregister() + * + * @since 1.8 + */ +EAPI void elm_prefs_page_iface_register(const Elm_Prefs_Page_Iface_Info *array); + +/** + * Mass-unregister widgets implementing prefs @b pages interfaces. + * + * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL + * terminated. + * + * This will unregister all page interfaces declared on @a array in + * Elementary, given they had been previously registered. + * + * @see elm_prefs_page_iface_register() for more details + * + * @since 1.8 + */ +EAPI void elm_prefs_page_iface_unregister(const Elm_Prefs_Page_Iface_Info *array); + diff --git a/src/lib/elm_prefs_eo.h b/src/lib/elm_prefs_eo.h new file mode 100644 index 000000000..72ebcc389 --- /dev/null +++ b/src/lib/elm_prefs_eo.h @@ -0,0 +1,349 @@ +#define ELM_OBJ_PREFS_CLASS elm_obj_prefs_class_get() + +const Eo_Class *elm_obj_prefs_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_PREFS_BASE_ID; + +enum +{ + ELM_OBJ_PREFS_SUB_ID_FILE_SET, + ELM_OBJ_PREFS_SUB_ID_FILE_GET, + ELM_OBJ_PREFS_SUB_ID_DATA_SET, + ELM_OBJ_PREFS_SUB_ID_DATA_GET, + ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_SET, + ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_GET, + ELM_OBJ_PREFS_SUB_ID_RESET, + ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_SET, + ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_GET, + ELM_OBJ_PREFS_SUB_ID_ITEM_OBJECT_GET, + ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_SET, + ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_GET, + ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_SET, + ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_GET, + ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_SET, + ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_GET, + ELM_OBJ_PREFS_SUB_ID_ITEM_SWALLOW, + ELM_OBJ_PREFS_SUB_ID_ITEM_UNSWALLOW, + ELM_OBJ_PREFS_SUB_ID_LAST +}; + +#define ELM_OBJ_PREFS_ID(sub_id) (ELM_OBJ_PREFS_BASE_ID + sub_id) + +/** + * @def elm_obj_prefs_file_set + * + * Set file and page to populate a given prefs widget's interface. + * + * @param[in] file + * @param[in] page + * @param[out] ret + * + * @see elm_prefs_file_set() + * + * @since 1.8 + */ +#define elm_obj_prefs_file_set(file, page, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_FILE_SET), \ + EO_TYPECHECK(const char *, file), \ + EO_TYPECHECK(const char *, page), \ + EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_prefs_file_get + * + * Retrieve file and page bound to a given prefs widget. + * + * @param[out] file + * @param[out] page + * @param[out] ret + * + * @see elm_prefs_file_get() + * + * @since 1.8 + */ +#define elm_obj_prefs_file_get(file, page, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_FILE_GET), \ + EO_TYPECHECK(const char **, file), \ + EO_TYPECHECK(const char **, page), \ + EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_prefs_data_set + * + * Set user data for a given prefs widget + * + * @param[in] data + * @param[out] ret + * + * @see elm_prefs_data_set() + * + * @since 1.8 + */ +#define elm_obj_prefs_data_set(data, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_DATA_SET), \ + EO_TYPECHECK(Elm_Prefs_Data *, data), \ + EO_TYPECHECK(Eina_Bool *, ret) +//FIXME: prefs_data == eobject? + +/** + * @def elm_obj_prefs_data_get + * + * Retrieve user data for a given prefs widget + * + * @param[out] ret + * + * @see elm_prefs_data_get() + * + * @since 1.8 + */ +#define elm_obj_prefs_data_get(ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_DATA_GET), \ + EO_TYPECHECK(Elm_Prefs_Data **, ret) + +/** + * @def elm_obj_prefs_autosave_set + * + * Set whether a given prefs widget should save its values back (on + * the user data file, if set) automatically on every UI element + * changes. + * + * @param[in] autosave + * + * @see elm_prefs_autosave_get() + * + * @since 1.8 + */ +#define elm_obj_prefs_autosave_set(autosave) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_SET), \ + EO_TYPECHECK(Eina_Bool, autosave) + +/** + * @def elm_obj_prefs_autosave_get + * + * Get whether a given prefs widget is saving its values back + * automatically on changes. + * + * @param[out] ret + * + * @see elm_prefs_autosave_set() + * + * @since 1.8 + */ +#define elm_obj_prefs_autosave_get(ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_GET), \ + EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_prefs_reset + * + * Reset the values of a given prefs widget to a previous state. + * + * @param[in] mode + * + * @since 1.8 + */ +#define elm_obj_prefs_reset(mode) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_RESET), \ + EO_TYPECHECK(Elm_Prefs_Reset_Mode, mode) + +/** + * @def elm_obj_prefs_item_value_set + * + * Set the value on a given prefs widget's item. + * + * @param[in] name + * @param[in] value + * @param[out] ret + * + * @see elm_prefs_item_value_get() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_value_set(name, value, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_SET), \ + EO_TYPECHECK(const char *, name), \ + EO_TYPECHECK(const Eina_Value *, value), \ + EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_prefs_item_value_get + * + * Retrieve the value of a given prefs widget's item. + * + * @param[in] name + * @param[out] value + * @param[out] ret + * + * @see elm_prefs_item_value_set() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_value_get(name, value, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_GET), \ + EO_TYPECHECK(const char *, name), \ + EO_TYPECHECK(Eina_Value *, value), \ + EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_prefs_item_object_get + * + * Retrieve the Elementary widget bound to a given prefs widget's + * item. + * + * @param[in] name + * @param[out] ret + * + * @see elm_prefs_item_value_get() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_object_get(name, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_OBJECT_GET), \ + EO_TYPECHECK(const char *, name), \ + EO_TYPECHECK(const Evas_Object **, ret) //FIXME: return EObject? + +/** + * @def elm_obj_prefs_item_visible_set + * + * Set whether the widget bound to given prefs widget's item should be + * visible or not. + * + * @param[in] name + * @param[in] visible + * + * @see elm_prefs_item_visible_set() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_visible_set(name, visible) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_SET), \ + EO_TYPECHECK(const char *, name), \ + EO_TYPECHECK(Eina_Bool, visible) + +/** + * @def elm_obj_prefs_item_visible_get + * + * Retrieve whether the widget bound to a given prefs widget's item is + * visible or not. + * + * @param[in] name + * @param[out] ret + * + * @see elm_prefs_item_visible_get() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_visible_get(name, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_GET), \ + EO_TYPECHECK(const char *,name), \ + EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_prefs_item_disabled_set + * + * Set whether the widget bound to a given prefs widget's item is + * disabled or not. + * + * @param[in] name + * @param[in] disabled + * + * @see elm_prefs_item_disabled_set() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_disabled_set(name, disabled) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_SET), \ + EO_TYPECHECK(const char *, name), \ + EO_TYPECHECK(Eina_Bool, disabled) + +/** + * @def elm_obj_prefs_item_disabled_get + * + * Retrieve whether the widget bound to a given prefs widget's item is + * disabled or not. + * + * @param[in] name + * @param[out] ret + * + * @see elm_prefs_item_disabled_get() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_disabled_get(name, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_GET), \ + EO_TYPECHECK(const char *, name), \ + EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_prefs_item_editable_set + * + * Set whether the widget bound to a given prefs widget's item is + * editable or not. + * + * @param[in] name + * @param[in] editable + * + * @see elm_prefs_item_editable_set() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_editable_set(name, editable) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_SET), \ + EO_TYPECHECK(const char *, name), \ + EO_TYPECHECK(Eina_Bool, editable) + +/** + * @def elm_obj_prefs_item_editable_get + * + * Retrieve whether the widget bound to a given prefs widget's item is + * editable or not. + * + * @param[in] name + * @param[out] ret + * + * @see elm_prefs_item_editable_get() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_editable_get(name, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_GET), \ + EO_TYPECHECK(const char *, name), \ + EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_prefs_item_swallow + * + * "Swallows" an object into a SWALLOW item of a prefs widget. + * + * @param[in] name + * @param[in] child + * @param[out] ret + * + * @see elm_prefs_item_swallow() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_swallow(name, child, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_SWALLOW), \ + EO_TYPECHECK(const char *, name), \ + EO_TYPECHECK(Evas_Object *, child), \ + EO_TYPECHECK(Eina_Bool *, ret) +//FIXME: child == EObject? + +/** + * @def elm_obj_prefs_item_unswallow + * + * Unswallow an object from a SWALLOW item of a prefs widget. + * + * @param[in] name + * @param[out] ret + * + * @see elm_prefs_item_unswallow() + * + * @since 1.8 + */ +#define elm_obj_prefs_item_unswallow(name, ret) \ + ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_UNSWALLOW), \ + EO_TYPECHECK(const char *,name), \ + EO_TYPECHECK(Evas_Object **, ret) +//FIXME: ret == EObject? diff --git a/src/lib/elm_prefs_legacy.h b/src/lib/elm_prefs_legacy.h new file mode 100644 index 000000000..9638e4fb6 --- /dev/null +++ b/src/lib/elm_prefs_legacy.h @@ -0,0 +1,368 @@ +EAPI Eina_Bool elm_prefs_page_widget_common_add(Evas_Object *prefs, + Evas_Object *obj); +/** + * Set file and page to populate a given prefs widget's interface. + * + * @param o A prefs widget handle + * @param file The @b .epb (binary) file to get contents from + * @param page The page, inside @a file, where to get item contents from + * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise + * + * Elm prefs widgets start blank, with no child widgets. It's meant to + * have its viewport populated with child elements coming from a + * declaration file. That file (usually with @b .epb extension), is a + * binary format (Eet) one, coming from a human-readable textual + * declaration. This textual form (usually with @b .epc extension) is + * translated to the binary form by means of the @b prefs_cc compiler. + * + * With this function, one thus populates a prefs widget with UI + * elements. + * + * If @a file is @c NULL, "elm_app_data_dir_get()/preferences.epb" + * will be used, by default. If @a file is a @b relative path, the + * prefix "elm_app_data_dir_get()/" will be implicitly used with it. + * If @a page is @c NULL, it is considered "main", as default. + * + * @warning If your binary is not properly installed and + * elm_app_data_dir_get() can't be figured out, a fallback value of + * "." will be tryed, instead. + * + * @see elm_prefs_file_get() + * + * @since 1.8 + */ +EAPI Eina_Bool elm_prefs_file_set(Evas_Object *o, + const char *file, + const char *page); + +/** + * Retrieve file and page bound to a given prefs widget. + * + * @param o A prefs widget handle + * @param file Where to store the file @a o is bound to + * @param page Where to store the page @a o is bound to + * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise + * + * @note Use @c NULL pointers on the components you're not + * interested in: they'll be ignored by the function. + * + * @see elm_prefs_file_set() for more information + * + * @since 1.8 + */ +EAPI Eina_Bool elm_prefs_file_get(const Evas_Object *o, + const char **file, + const char **page); +/** + * Set user data for a given prefs widget + * + * @param obj A prefs widget handle + * @param prefs_data A valid prefs_data handle + * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise + * + * Once a prefs widget is created, after elm_prefs_file_set() is + * issued on it, all of its UI elements will get default values, when + * declared on that file. To fetch an user's own, personal set of + * those values, one gets to pair a <b>prefs data</b> handle to the + * prefs widget. This is what this call is intended for. + * + * Prefs data values from @a prefs_data with keys matching the ones + * present on the file passed on elm_prefs_file_set() to @a obj will + * have their values applied to the respective UI elements of the + * widget. + * + * When @a obj dies, the values of the elements declared on its @b + * .epb file (the one set on elm_prefs_file_set()) marked as permanent + * <b>will be written back</b> to @a prefs_data, if it is writable. + * One is also able to make this writing event to take place + * automatically after each UI element modification by using + * elm_prefs_autosave_set(). + * + * @note @a obj will keep a reference of its own for @a prefs_data, + * but you should still unreference it by yourself, after the widget + * is gone. + * + * @see elm_prefs_data_get() + * + * @since 1.8 + */ +EAPI Eina_Bool elm_prefs_data_set(Evas_Object *obj, + Elm_Prefs_Data *data); + +/** + * Retrieve user data for a given prefs widget + * + * @param obj A prefs widget handle + * @param prefs_data A valid prefs_data handle + * @return A pointer to the user data of a given prefs widget on success. + * @c NULL otherwise. + * + * @see elm_prefs_data_set() for more details + * + * @since 1.8 + */ +EAPI Elm_Prefs_Data *elm_prefs_data_get(const Evas_Object *o); + +/** + * Set whether a given prefs widget should save its values back (on + * the user data file, if set) automatically on every UI element + * changes. + * + * @param prefs A valid prefs widget handle + * @param autosave @c EINA_TRUE to save automatically, @c EINA_FALSE + * otherwise. + * + * If @a autosave is @c EINA_TRUE, every call to + * elm_prefs_item_value_set(), every + * Elm_Prefs_Data_Event_Type::ELM_PREFS_DATA_EVENT_ITEM_CHANGED event + * coming for its prefs data and every UI element direct value + * changing will implicitly make the prefs values to be flushed back + * to it prefs data. If a prefs data handle with no writing + * permissions or no prefs data is set on @a prefs, naturally nothing + * will happen. + * + * @see elm_prefs_autosave_get() + * + * @since 1.8 + */ +EAPI void elm_prefs_autosave_set(Evas_Object *prefs, + Eina_Bool autosave); + +/** + * Get whether a given prefs widget is saving its values back + * automatically on changes. + * + * @param prefs A valid prefs widget handle + * @return @c EINA_TRUE if @a prefs is saving automatically, + * @c EINA_FALSE otherwise. + * + * @see elm_prefs_autosave_set(), for more details + * + * @since 1.8 + */ +EAPI Eina_Bool elm_prefs_autosave_get(const Evas_Object *prefs); + +/** + * Reset the values of a given prefs widget to a previous state. + * + * @param prefs A valid prefs widget handle + * @param mode The reset mode to apply on @a prefs + * + * As can be seen on #Elm_Prefs_Reset_Mode, there are two possible + * actions to be taken by this call -- either to reset @a prefs' + * values to the defaults (declared on the @c .epb file it is bound + * to) or to reset to the state they were before the last modification + * it got. + * + * @since 1.8 + */ +EAPI void elm_prefs_reset(Evas_Object *prefs, + Elm_Prefs_Reset_Mode mode); + +/** + * Set the value on a given prefs widget's item. + * + * @param prefs A valid prefs widget handle + * @param name The name of the item (as declared in the prefs + * collection) + * @param value The value to set on the item. It should be typed as + * the item expects, preferably, or a conversion will + * take place + * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise + * + * This will change the value of item named @a name programatically. + * + * @see elm_prefs_item_value_get() + * + * @since 1.8 + */ +EAPI Eina_Bool elm_prefs_item_value_set(Evas_Object *prefs, + const char *name, + const Eina_Value *value); + +/** + * Retrieve the value of a given prefs widget's item. + * + * @param prefs A valid prefs widget handle + * @param name The name of the item (as declared in the prefs + * collection) to get value from + * @param value Where to store the value of the item. It will be + * overwritten and setup with the type the item + * is bound to + * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise + * + * This will retrieve the value of item named @a name. + * + * @see elm_prefs_item_value_set() + * + * @since 1.8 + */ +EAPI Eina_Bool elm_prefs_item_value_get(const Evas_Object *prefs, + const char *name, + Eina_Value *value); +/** + * Retrieve the Elementary widget bound to a given prefs widget's + * item. + * + * @param prefs A valid prefs widget handle + * @param name The name of the item (as declared in the prefs + * collection) to get object from + * @return A valid widget handle, on success, or @c NULL, otherwise + * + * This will retrieve a handle to the real widget implementing a given + * item of @a prefs, <b>for read-only</b> actions. + * + * @warning You should @b never modify the state of the returned + * widget, because it's meant to be managed by @a prefs, solely. + * + * @see elm_prefs_item_value_set() + * + * @since 1.8 + */ +EAPI const Evas_Object *elm_prefs_item_object_get(Evas_Object *prefs, + const char *name); + +/** + * Set whether the widget bound to given prefs widget's item should be + * visible or not. + * + * @param prefs A valid prefs widget handle + * @param name The name of the item (as declared in the prefs + * collection) to change visibility of + * @param visible @c EINA_TRUE, to make it visible, @c EINA_FALSE + * otherwise + * + * Each prefs item may have a default visibility state, declared on + * the @c .epb @a prefs it was loaded with. By this call one may alter + * that state, programatically. + * + * @see elm_prefs_item_visible_get() + * + * @since 1.8 + */ +EAPI void elm_prefs_item_visible_set(Evas_Object *prefs, + const char *name, + Eina_Bool visible); + +/** + * Retrieve whether the widget bound to a given prefs widget's item is + * visible or not. + * + * @param prefs A valid prefs widget handle + * @param name The name of the item (as declared in the prefs + * collection) to get visibility state from + * @return @c EINA_TRUE, if it is visible, @c EINA_FALSE + * otherwise + * + * @see elm_prefs_item_visible_set() for more details + * + * @since 1.8 + */ +EAPI Eina_Bool elm_prefs_item_visible_get(const Evas_Object *prefs, + const char *name); + +/** + * Set whether the widget bound to a given prefs widget's item is + * disabled or not. + * + * @param prefs A valid prefs widget handle + * @param name The name of the item (as declared in the prefs + * collection) to act on + * @param disabled @c EINA_TRUE, to make it disabled, @c EINA_FALSE + * otherwise + * + * @see elm_prefs_item_disabled_get() + * + * @since 1.8 + */ +EAPI void elm_prefs_item_disabled_set(Evas_Object *prefs, + const char *name, + Eina_Bool disabled); + +/** + * Retrieve whether the widget bound to a given prefs widget's item is + * disabled or not. + * + * @param prefs A valid prefs widget handle + * @param name The name of the item (as declared in the prefs + * collection) to get disabled state from + * @return @c EINA_TRUE, if it is disabled, @c EINA_FALSE + * otherwise + * + * @see elm_prefs_item_disabled_set() + * + * @since 1.8 + */ +EAPI Eina_Bool elm_prefs_item_disabled_get(const Evas_Object *prefs, + const char *name); + +/** + * Set whether the widget bound to a given prefs widget's item is + * editable or not. + * + * @param prefs A valid prefs widget handle + * @param name The name of the item (as declared in the prefs + * collection) to act on + * @param editable @c EINA_TRUE, to make it editable, @c EINA_FALSE + * otherwise + * + * @note Only @c TEXT or @c TEXTAREA items' default widgets implement + * the 'editable' property. Custom registered widgets may as well + * implement them. + * + * @see elm_prefs_item_editable_get() + * + * @since 1.8 + */ +EAPI void elm_prefs_item_editable_set(Evas_Object *prefs, + const char *name, + Eina_Bool editable); + +/** + * Retrieve whether the widget bound to a given prefs widget's item is + * editable or not. + * + * @param prefs A valid prefs widget handle + * @param name The name of the item (as declared in the prefs + * collection) to get editable state from + * @return @c EINA_TRUE, if it is editable, @c EINA_FALSE + * otherwise + * + * @see elm_prefs_item_editable_set() for more details + * + * @since 1.8 + */ +EAPI Eina_Bool elm_prefs_item_editable_get(const Evas_Object *prefs, + const char *name); + +/** + * "Swallows" an object into a SWALLOW item of a prefs widget. + * + * @param obj A valid prefs widget handle + * @param name the name of the SWALLOW item (as declared in the prefs + * collection) + * @param child The object to occupy the item + * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise + * + * @see elm_prefs_item_swallow() for more details + * + * @since 1.8 + */ +EAPI Eina_Bool elm_prefs_item_swallow(Evas_Object *obj, + const char *name, + Evas_Object *child); + +/** + * Unswallow an object from a SWALLOW item of a prefs widget. + * + * @param obj A valid prefs widget handle + * @param name the name of the SWALLOW item (as declared in the prefs + * collection) + * @return The unswallowed object, or NULL on errors + * + * @see elm_prefs_item_unswallow() for more details + * + * @since 1.8 + */ +EAPI Evas_Object *elm_prefs_item_unswallow(Evas_Object *obj, + const char *name); diff --git a/src/lib/elm_progressbar.h b/src/lib/elm_progressbar.h index c72706ece..797716c10 100644 --- a/src/lib/elm_progressbar.h +++ b/src/lib/elm_progressbar.h @@ -60,462 +60,12 @@ * @li @ref progressbar_example */ -#define ELM_OBJ_PROGRESSBAR_CLASS elm_obj_progressbar_class_get() - -const Eo_Class *elm_obj_progressbar_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_PROGRESSBAR_BASE_ID; - -typedef char *(*progressbar_func_type)(double); -typedef void (*progressbar_freefunc_type)(char *); - -enum -{ - ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET, - ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_GET, - ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE, - ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_SET, - ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_GET, - ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_SET, - ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_GET, - ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_SET, - ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_GET, - ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_FUNCTION_SET, - ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_SET, - ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_GET, - ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_SET, - ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_GET, - ELM_OBJ_PROGRESSBAR_SUB_ID_LAST -}; - -#define ELM_OBJ_PROGRESSBAR_ID(sub_id) (ELM_OBJ_PROGRESSBAR_BASE_ID + sub_id) - - -/** - * @def elm_obj_progressbar_pulse_set - * @since 1.8 - * - * Set whether a given progress bar widget is at "pulsing mode" or - * not. - * - * @param[in] pulse - * - * @see elm_progressbar_pulse_set - */ -#define elm_obj_progressbar_pulse_set(pulse) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET), EO_TYPECHECK(Eina_Bool, pulse) - -/** - * @def elm_obj_progressbar_pulse_get - * @since 1.8 - * - * Get whether a given progress bar widget is at "pulsing mode" or - * not. - * - * @param[out] ret - * - * @see elm_progressbar_pulse_get - */ -#define elm_obj_progressbar_pulse_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_progressbar_pulse - * @since 1.8 - * - * Start/stop a given progress bar "pulsing" animation, if its - * under that mode - * - * @param[in] state - * - * @see elm_progressbar_pulse - */ -#define elm_obj_progressbar_pulse(state) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE), EO_TYPECHECK(Eina_Bool, state) - -/** - * @def elm_obj_progressbar_value_set - * @since 1.8 - * - * Set the progress value (in percentage) on a given progress bar - * - * @param[in] val - * - * @see elm_progressbar_value_set - */ -#define elm_obj_progressbar_value_set(val) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val) - -/** - * @def elm_obj_progressbar_value_get - * @since 1.8 - * - * Get the progress value (in percentage) on a given progress bar - * - * @param[out] ret - * - * @see elm_progressbar_value_get - */ -#define elm_obj_progressbar_value_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_progressbar_span_size_set - * @since 1.8 - * - * Set the (exact) length of the bar region of a given progress bar - * - * @param[in] size - * - * @see elm_progressbar_span_size_set - */ -#define elm_obj_progressbar_span_size_set(size) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_SET), EO_TYPECHECK(Evas_Coord, size) - -/** - * @def elm_obj_progressbar_span_size_get - * @since 1.8 - * - * Get the length set for the bar region of a given progress bar - * - * @param[out] ret - * - * @see elm_progressbar_span_size_get - */ -#define elm_obj_progressbar_span_size_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_GET), EO_TYPECHECK(Evas_Coord *, ret) - -/** - * @def elm_obj_progressbar_unit_format_set - * @since 1.8 - * - * Set the format string for a given progress bar widget's units - * - * @param[in] units - * - * @see elm_progressbar_unit_format_set - */ -#define elm_obj_progressbar_unit_format_set(units) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_SET), EO_TYPECHECK(const char *, units) - -/** - * @def elm_obj_progressbar_unit_format_get - * @since 1.8 - * - * Retrieve the format string set for a given progress bar widget's - * - * @param[out] ret - * - * @see elm_progressbar_unit_format_get - */ -#define elm_obj_progressbar_unit_format_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_progressbar_unit_format_function_set - * @since 1.8 - * - * Set the format function pointer for the units label - * - * @param[in] func - * @param[in] free_func - * - * @see elm_progressbar_unit_format_function_set - */ -#define elm_obj_progressbar_unit_format_function_set(func, free_func) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_FUNCTION_SET), EO_TYPECHECK(progressbar_func_type, func), EO_TYPECHECK(progressbar_freefunc_type, free_func) - -/** - * @def elm_obj_progressbar_horizontal_set - * @since 1.8 - * - * Set the orientation of a given progress bar widget - * - * @param[in] horizontal - * - * @see elm_progressbar_horizontal_set - */ -#define elm_obj_progressbar_horizontal_set(horizontal) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal) - -/** - * @def elm_obj_progressbar_horizontal_get - * @since 1.8 - * - * Retrieve the orientation of a given progress bar widget - * - * @param[out] ret - * - * @see elm_progressbar_horizontal_get - */ -#define elm_obj_progressbar_horizontal_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_progressbar_inverted_set - * @since 1.8 - * - * Invert a given progress bar widget's displaying values order - * - * @param[in] inverted - * - * @see elm_progressbar_inverted_set - */ -#define elm_obj_progressbar_inverted_set(inverted) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_SET), EO_TYPECHECK(Eina_Bool, inverted) - -/** - * @def elm_obj_progressbar_inverted_get - * @since 1.8 - * - * Get whether a given progress bar widget's displaying values are - * inverted or not - * - * @param[out] ret - * - * @see elm_progressbar_inverted_get - */ -#define elm_obj_progressbar_inverted_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * Add a new progress bar widget to the given parent Elementary - * (container) object - * - * @param parent The parent object - * @return a new progress bar widget handle or @c NULL, on errors - * - * This function inserts a new progress bar widget on the canvas. - * - * @ingroup Progressbar - */ -EAPI Evas_Object *elm_progressbar_add(Evas_Object *parent); - -/** - * Set whether a given progress bar widget is at "pulsing mode" or - * not. - * - * @param obj The progress bar object - * @param pulse @c EINA_TRUE to put @p obj in pulsing mode, - * @c EINA_FALSE to put it back to its default one - * - * By default, progress bars will display values from the 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 will - * animate 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(). - * - * @see elm_progressbar_pulse_get() - * @see elm_progressbar_pulse() - * - * @ingroup Progressbar - */ -EAPI void elm_progressbar_pulse_set(Evas_Object *obj, Eina_Bool pulse); - -/** - * Get whether a given progress bar widget is at "pulsing mode" or - * not. - * - * @param obj The progress bar object - * @return @c EINA_TRUE, if @p obj is in pulsing mode, @c EINA_FALSE - * if it's in the default one (and on errors) - * - * @ingroup Progressbar - */ -EAPI Eina_Bool elm_progressbar_pulse_get(const Evas_Object *obj); - -/** - * Start/stop a given progress bar "pulsing" animation, if its - * under that mode - * - * @param obj The progress bar object - * @param state @c EINA_TRUE, to @b start the pulsing animation, - * @c EINA_FALSE to @b stop it - * - * @note This call won't do anything if @p obj is not under "pulsing mode". - * - * @see elm_progressbar_pulse_set() for more details. - * - * @ingroup Progressbar - */ -EAPI void elm_progressbar_pulse(Evas_Object *obj, Eina_Bool state); - -/** - * Set the progress value (in percentage) on a given progress bar - * widget - * - * @param obj The progress bar object - * @param val The progress value (@b must be between @c 0.0 and @c - * 1.0) - * - * Use this call to set progress bar levels. - * - * @note If you passes a value out of the specified range for @p - * val, it will be interpreted as the @b closest of the @b boundary - * values in the range. - * - * @ingroup Progressbar - */ -EAPI void elm_progressbar_value_set(Evas_Object *obj, double val); - -/** - * Get the progress value (in percentage) on a given progress bar - * widget - * - * @param obj The progress bar object - * @return The value of the progressbar - * - * @see elm_progressbar_value_set() for more details - * - * @ingroup Progressbar - */ -EAPI double elm_progressbar_value_get(const Evas_Object *obj); - -/** - * Set the (exact) length of the bar region of a given progress bar - * widget - * - * @param obj The progress bar object - * @param size The length of the progress bar's bar region - * - * This sets the minimum width (when in horizontal mode) or height - * (when in vertical mode) of the actual bar area of the progress - * bar @p 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. - * - * @note Icon, label and unit text around @p obj will require their - * own space, which will make @p obj to require more the @p size, - * actually. - * - * @see elm_progressbar_span_size_get() - * - * @ingroup Progressbar - */ -EAPI void elm_progressbar_span_size_set(Evas_Object *obj, Evas_Coord size); - -/** - * Get the length set for the bar region of a given progress bar - * widget - * - * @param obj The progress bar object - * @return The length of the progress bar's bar region - * - * If that size was not set previously, with - * elm_progressbar_span_size_set(), this call will return @c 0. - * - * @ingroup Progressbar - */ -EAPI Evas_Coord elm_progressbar_span_size_get(const Evas_Object *obj); - -/** - * Set the format string for a given progress bar widget's units - * label - * - * @param obj The progress bar object - * @param format The format string for @p obj's units label - * - * If @c NULL is passed on @p format, it will make @p obj's units - * area to be hidden completely. If not, it'll set the <b>format - * string</b> for the units label's @b text. The units label is - * provided a floating point value, so the units text is up display - * at most one floating point value. Note that the units label is - * optional. Use a format string such as "%1.2f meters" for - * example. - * - * @note The default format string for a progress bar is an integer - * percentage, as in @c "%.0f %%". - * - * @see elm_progressbar_unit_format_get() - * - * @ingroup Progressbar - */ -EAPI void elm_progressbar_unit_format_set(Evas_Object *obj, const char *format); - -/** - * Retrieve the format string set for a given progress bar widget's - * units label - * - * @param obj The progress bar object - * @return The format set string for @p obj's units label or - * @c NULL, if none was set (and on errors) - * - * @see elm_progressbar_unit_format_set() for more details - * - * @ingroup Progressbar - */ -EAPI const char *elm_progressbar_unit_format_get(const Evas_Object *obj); - -/** - * Set the format function pointer for the units label - * - * @param obj The progress bar object - * @param func The unit format function - * @param free_func The freeing function for the format string. - * - * Set the callback function to format the unit string. - * - * @see elm_progressbar_unit_format_set() for more info on how this works. - * - * @since 1.7 - * - * @ingroup Progressbar - */ -EAPI void elm_progressbar_unit_format_function_set(Evas_Object *obj, char *(func)(double), void (*free_func) (char *)); - -/** - * Set the orientation of a given progress bar widget - * - * @param obj The progress bar object - * @param horizontal Use @c EINA_TRUE to make @p obj to be - * @b horizontal, @c EINA_FALSE to make it @b vertical - * - * Use this function to change how your progress bar is to be - * disposed: vertically or horizontally. - * - * @see elm_progressbar_horizontal_get() - * - * @ingroup Progressbar - */ -EAPI void elm_progressbar_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); - -/** - * Retrieve the orientation of a given progress bar widget - * - * @param obj The progress bar object - * @return @c EINA_TRUE, if @p obj is set to be @b horizontal, - * @c EINA_FALSE if it's @b vertical (and on errors) - * - * @see elm_progressbar_horizontal_set() for more details - * - * @ingroup Progressbar - */ -EAPI Eina_Bool elm_progressbar_horizontal_get(const Evas_Object *obj); - -/** - * Invert a given progress bar widget's displaying values order - * - * @param obj The progress bar object - * @param inverted Use @c EINA_TRUE to make @p obj inverted, - * @c EINA_FALSE to bring it back to default, non-inverted values. - * - * A progress bar may be @b inverted, in which state 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 horizontal and vertical modes. - * - * @see elm_progressbar_inverted_get() - * - * @ingroup Progressbar - */ -EAPI void elm_progressbar_inverted_set(Evas_Object *obj, Eina_Bool inverted); - -/** - * Get whether a given progress bar widget's displaying values are - * inverted or not - * - * @param obj The progress bar object - * @return @c EINA_TRUE, if @p obj has inverted values, - * @c EINA_FALSE otherwise (and on errors) - * - * @see elm_progressbar_inverted_set() for more details - * - * @ingroup Progressbar - */ -EAPI Eina_Bool elm_progressbar_inverted_get(const Evas_Object *obj); - +#ifdef EFL_EO_API_SUPPORT +#include "elm_progressbar_eo.h" +#endif +#ifndef EFL_NOLEGACY_API_SUPPORT +#include "elm_progressbar_legacy.h" +#endif /** * @} */ diff --git a/src/lib/elm_progressbar_eo.h b/src/lib/elm_progressbar_eo.h new file mode 100644 index 000000000..26f30aa96 --- /dev/null +++ b/src/lib/elm_progressbar_eo.h @@ -0,0 +1,231 @@ +#define ELM_OBJ_PROGRESSBAR_CLASS elm_obj_progressbar_class_get() + +const Eo_Class *elm_obj_progressbar_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_PROGRESSBAR_BASE_ID; + +typedef char *(*progressbar_func_type)(double); +typedef void (*progressbar_freefunc_type)(char *); + +enum +{ + ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET, + ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_GET, + ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE, + ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_SET, + ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_GET, + ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_SET, + ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_GET, + ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_SET, + ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_GET, + ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_FUNCTION_SET, + ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_SET, + ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_GET, + ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_SET, + ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_GET, + ELM_OBJ_PROGRESSBAR_SUB_ID_LAST +}; + +#define ELM_OBJ_PROGRESSBAR_ID(sub_id) (ELM_OBJ_PROGRESSBAR_BASE_ID + sub_id) + + +/** + * @def elm_obj_progressbar_pulse_set + * @since 1.8 + * + * Set whether a given progress bar widget is at "pulsing mode" or + * not. + * + * @param[in] pulse + * + * @see elm_progressbar_pulse_set + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_pulse_set(pulse) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET), EO_TYPECHECK(Eina_Bool, pulse) + +/** + * @def elm_obj_progressbar_pulse_get + * @since 1.8 + * + * Get whether a given progress bar widget is at "pulsing mode" or + * not. + * + * @param[out] ret + * + * @see elm_progressbar_pulse_get + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_pulse_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_progressbar_pulse + * @since 1.8 + * + * Start/stop a given progress bar "pulsing" animation, if its + * under that mode + * + * @param[in] state + * + * @see elm_progressbar_pulse + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_pulse(state) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE), EO_TYPECHECK(Eina_Bool, state) + +/** + * @def elm_obj_progressbar_value_set + * @since 1.8 + * + * Set the progress value (in percentage) on a given progress bar + * + * @param[in] val + * + * @see elm_progressbar_value_set + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_value_set(val) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val) + +/** + * @def elm_obj_progressbar_value_get + * @since 1.8 + * + * Get the progress value (in percentage) on a given progress bar + * + * @param[out] ret + * + * @see elm_progressbar_value_get + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_value_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_progressbar_span_size_set + * @since 1.8 + * + * Set the (exact) length of the bar region of a given progress bar + * + * @param[in] size + * + * @see elm_progressbar_span_size_set + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_span_size_set(size) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_SET), EO_TYPECHECK(Evas_Coord, size) + +/** + * @def elm_obj_progressbar_span_size_get + * @since 1.8 + * + * Get the length set for the bar region of a given progress bar + * + * @param[out] ret + * + * @see elm_progressbar_span_size_get + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_span_size_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_GET), EO_TYPECHECK(Evas_Coord *, ret) + +/** + * @def elm_obj_progressbar_unit_format_set + * @since 1.8 + * + * Set the format string for a given progress bar widget's units + * + * @param[in] units + * + * @see elm_progressbar_unit_format_set + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_unit_format_set(units) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_SET), EO_TYPECHECK(const char *, units) + +/** + * @def elm_obj_progressbar_unit_format_get + * @since 1.8 + * + * Retrieve the format string set for a given progress bar widget's + * + * @param[out] ret + * + * @see elm_progressbar_unit_format_get + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_unit_format_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_progressbar_unit_format_function_set + * @since 1.8 + * + * Set the format function pointer for the units label + * + * @param[in] func + * @param[in] free_func + * + * @see elm_progressbar_unit_format_function_set + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_unit_format_function_set(func, free_func) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_FUNCTION_SET), EO_TYPECHECK(progressbar_func_type, func), EO_TYPECHECK(progressbar_freefunc_type, free_func) + +/** + * @def elm_obj_progressbar_horizontal_set + * @since 1.8 + * + * Set the orientation of a given progress bar widget + * + * @param[in] horizontal + * + * @see elm_progressbar_horizontal_set + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_horizontal_set(horizontal) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal) + +/** + * @def elm_obj_progressbar_horizontal_get + * @since 1.8 + * + * Retrieve the orientation of a given progress bar widget + * + * @param[out] ret + * + * @see elm_progressbar_horizontal_get + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_horizontal_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_progressbar_inverted_set + * @since 1.8 + * + * Invert a given progress bar widget's displaying values order + * + * @param[in] inverted + * + * @see elm_progressbar_inverted_set + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_inverted_set(inverted) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_SET), EO_TYPECHECK(Eina_Bool, inverted) + +/** + * @def elm_obj_progressbar_inverted_get + * @since 1.8 + * + * Get whether a given progress bar widget's displaying values are + * inverted or not + * + * @param[out] ret + * + * @see elm_progressbar_inverted_get + * + * @ingroup Progressbar + */ +#define elm_obj_progressbar_inverted_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_GET), EO_TYPECHECK(Eina_Bool *, ret) diff --git a/src/lib/elm_progressbar_legacy.h b/src/lib/elm_progressbar_legacy.h new file mode 100644 index 000000000..492654d1e --- /dev/null +++ b/src/lib/elm_progressbar_legacy.h @@ -0,0 +1,251 @@ +/** + * Add a new progress bar widget to the given parent Elementary + * (container) object + * + * @param parent The parent object + * @return a new progress bar widget handle or @c NULL, on errors + * + * This function inserts a new progress bar widget on the canvas. + * + * @ingroup Progressbar + */ +EAPI Evas_Object *elm_progressbar_add(Evas_Object *parent); + +/** + * Set whether a given progress bar widget is at "pulsing mode" or + * not. + * + * @param obj The progress bar object + * @param pulse @c EINA_TRUE to put @p obj in pulsing mode, + * @c EINA_FALSE to put it back to its default one + * + * By default, progress bars will display values from the 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 will + * animate 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(). + * + * @see elm_progressbar_pulse_get() + * @see elm_progressbar_pulse() + * + * @ingroup Progressbar + */ +EAPI void elm_progressbar_pulse_set(Evas_Object *obj, Eina_Bool pulse); + +/** + * Get whether a given progress bar widget is at "pulsing mode" or + * not. + * + * @param obj The progress bar object + * @return @c EINA_TRUE, if @p obj is in pulsing mode, @c EINA_FALSE + * if it's in the default one (and on errors) + * + * @ingroup Progressbar + */ +EAPI Eina_Bool elm_progressbar_pulse_get(const Evas_Object *obj); + +/** + * Start/stop a given progress bar "pulsing" animation, if its + * under that mode + * + * @param obj The progress bar object + * @param state @c EINA_TRUE, to @b start the pulsing animation, + * @c EINA_FALSE to @b stop it + * + * @note This call won't do anything if @p obj is not under "pulsing mode". + * + * @see elm_progressbar_pulse_set() for more details. + * + * @ingroup Progressbar + */ +EAPI void elm_progressbar_pulse(Evas_Object *obj, Eina_Bool state); + +/** + * Set the progress value (in percentage) on a given progress bar + * widget + * + * @param obj The progress bar object + * @param val The progress value (@b must be between @c 0.0 and @c + * 1.0) + * + * Use this call to set progress bar levels. + * + * @note If you passes a value out of the specified range for @p + * val, it will be interpreted as the @b closest of the @b boundary + * values in the range. + * + * @ingroup Progressbar + */ +EAPI void elm_progressbar_value_set(Evas_Object *obj, double val); + +/** + * Get the progress value (in percentage) on a given progress bar + * widget + * + * @param obj The progress bar object + * @return The value of the progressbar + * + * @see elm_progressbar_value_set() for more details + * + * @ingroup Progressbar + */ +EAPI double elm_progressbar_value_get(const Evas_Object *obj); + +/** + * Set the (exact) length of the bar region of a given progress bar + * widget + * + * @param obj The progress bar object + * @param size The length of the progress bar's bar region + * + * This sets the minimum width (when in horizontal mode) or height + * (when in vertical mode) of the actual bar area of the progress + * bar @p 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. + * + * @note Icon, label and unit text around @p obj will require their + * own space, which will make @p obj to require more the @p size, + * actually. + * + * @see elm_progressbar_span_size_get() + * + * @ingroup Progressbar + */ +EAPI void elm_progressbar_span_size_set(Evas_Object *obj, Evas_Coord size); + +/** + * Get the length set for the bar region of a given progress bar + * widget + * + * @param obj The progress bar object + * @return The length of the progress bar's bar region + * + * If that size was not set previously, with + * elm_progressbar_span_size_set(), this call will return @c 0. + * + * @ingroup Progressbar + */ +EAPI Evas_Coord elm_progressbar_span_size_get(const Evas_Object *obj); + +/** + * Set the format string for a given progress bar widget's units + * label + * + * @param obj The progress bar object + * @param format The format string for @p obj's units label + * + * If @c NULL is passed on @p format, it will make @p obj's units + * area to be hidden completely. If not, it'll set the <b>format + * string</b> for the units label's @b text. The units label is + * provided a floating point value, so the units text is up display + * at most one floating point value. Note that the units label is + * optional. Use a format string such as "%1.2f meters" for + * example. + * + * @note The default format string for a progress bar is an integer + * percentage, as in @c "%.0f %%". + * + * @see elm_progressbar_unit_format_get() + * + * @ingroup Progressbar + */ +EAPI void elm_progressbar_unit_format_set(Evas_Object *obj, const char *format); + +/** + * Retrieve the format string set for a given progress bar widget's + * units label + * + * @param obj The progress bar object + * @return The format set string for @p obj's units label or + * @c NULL, if none was set (and on errors) + * + * @see elm_progressbar_unit_format_set() for more details + * + * @ingroup Progressbar + */ +EAPI const char *elm_progressbar_unit_format_get(const Evas_Object *obj); + +/** + * Set the format function pointer for the units label + * + * @param obj The progress bar object + * @param func The unit format function + * @param free_func The freeing function for the format string. + * + * Set the callback function to format the unit string. + * + * @see elm_progressbar_unit_format_set() for more info on how this works. + * + * @since 1.7 + * + * @ingroup Progressbar + */ +EAPI void elm_progressbar_unit_format_function_set(Evas_Object *obj, char *(func)(double), void (*free_func) (char *)); + +/** + * Set the orientation of a given progress bar widget + * + * @param obj The progress bar object + * @param horizontal Use @c EINA_TRUE to make @p obj to be + * @b horizontal, @c EINA_FALSE to make it @b vertical + * + * Use this function to change how your progress bar is to be + * disposed: vertically or horizontally. + * + * @see elm_progressbar_horizontal_get() + * + * @ingroup Progressbar + */ +EAPI void elm_progressbar_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); + +/** + * Retrieve the orientation of a given progress bar widget + * + * @param obj The progress bar object + * @return @c EINA_TRUE, if @p obj is set to be @b horizontal, + * @c EINA_FALSE if it's @b vertical (and on errors) + * + * @see elm_progressbar_horizontal_set() for more details + * + * @ingroup Progressbar + */ +EAPI Eina_Bool elm_progressbar_horizontal_get(const Evas_Object *obj); + +/** + * Invert a given progress bar widget's displaying values order + * + * @param obj The progress bar object + * @param inverted Use @c EINA_TRUE to make @p obj inverted, + * @c EINA_FALSE to bring it back to default, non-inverted values. + * + * A progress bar may be @b inverted, in which state 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 horizontal and vertical modes. + * + * @see elm_progressbar_inverted_get() + * + * @ingroup Progressbar + */ +EAPI void elm_progressbar_inverted_set(Evas_Object *obj, Eina_Bool inverted); + +/** + * Get whether a given progress bar widget's displaying values are + * inverted or not + * + * @param obj The progress bar object + * @return @c EINA_TRUE, if @p obj has inverted values, + * @c EINA_FALSE otherwise (and on errors) + * + * @see elm_progressbar_inverted_set() for more details + * + * @ingroup Progressbar + */ +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 13c4c7c1b..fec468cdf 100644 --- a/src/lib/elm_radio.h +++ b/src/lib/elm_radio.h @@ -60,212 +60,12 @@ * @{ */ -#define ELM_OBJ_RADIO_CLASS elm_obj_radio_class_get() - -const Eo_Class *elm_obj_radio_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_RADIO_BASE_ID; - -enum -{ - ELM_OBJ_RADIO_SUB_ID_GROUP_ADD, - ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_SET, - ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_GET, - ELM_OBJ_RADIO_SUB_ID_VALUE_SET, - ELM_OBJ_RADIO_SUB_ID_VALUE_GET, - ELM_OBJ_RADIO_SUB_ID_VALUE_POINTER_SET, - ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET, - ELM_OBJ_RADIO_SUB_ID_LAST -}; - -#define ELM_OBJ_RADIO_ID(sub_id) (ELM_OBJ_RADIO_BASE_ID + sub_id) - - -/** - * @def elm_obj_radio_group_add - * @since 1.8 - * - * @brief Add this radio to a group of other radio objects - * - * @param[in] group - * - * @see elm_radio_group_add - */ -#define elm_obj_radio_group_add(group) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_GROUP_ADD), EO_TYPECHECK(Evas_Object *, group) - -/** - * @def elm_obj_radio_state_value_set - * @since 1.8 - * - * @brief Set the integer value that this radio object represents - * - * @param[in] value - * - * @see elm_radio_state_value_set - */ -#define elm_obj_radio_state_value_set(value) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_SET), EO_TYPECHECK(int, value) - -/** - * @def elm_obj_radio_state_value_get - * @since 1.8 - * - * @brief Get the integer value that this radio object represents - * - * @param[out] ret - * - * @see elm_radio_state_value_get - */ -#define elm_obj_radio_state_value_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_GET), EO_TYPECHECK(int *, ret) - -/** - * @def elm_obj_radio_value_set - * @since 1.8 - * - * @brief Set the value of the radio group. - * - * @param[in] value - * - * @see elm_radio_value_set - */ -#define elm_obj_radio_value_set(value) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_SET), EO_TYPECHECK(int, value) - -/** - * @def elm_obj_radio_value_get - * @since 1.8 - * - * @brief Get the value of the radio group - * - * @param[out] ret - * - * @see elm_radio_value_get - */ -#define elm_obj_radio_value_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_GET), EO_TYPECHECK(int *, ret) - -/** - * @def elm_obj_radio_value_pointer_set - * @since 1.8 - * - * @brief Set a convenience pointer to a integer to change when radio group - * - * @param[in] valuep - * - * @see elm_radio_value_pointer_set - */ -#define elm_obj_radio_value_pointer_set(valuep) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_POINTER_SET), EO_TYPECHECK(int *, valuep) - -/** - * @def elm_obj_radio_selected_object_get - * @since 1.8 - * - * @brief Get the selected radio object. - * - * @param[out] ret - * - * @see elm_radio_selected_object_get - */ -#define elm_obj_radio_selected_object_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET), EO_TYPECHECK(Evas_Object **, ret) - -/** - * @brief Add a new radio to the parent - * - * @param parent The parent object - * @return The new object or NULL if it cannot be created - * - * @ingroup Radio - */ -EAPI Evas_Object *elm_radio_add(Evas_Object *parent); - -/** - * @brief Add this radio to a group of other radio objects - * - * @param obj The radio object - * @param group Any object whose group the @p obj is to join. - * - * 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. - * - * @ingroup Radio - */ -EAPI void elm_radio_group_add(Evas_Object *obj, Evas_Object *group); - -/** - * @brief Set the integer value that this radio object represents - * - * @param obj The radio object - * @param value The value to use if this radio object is selected - * - * This sets the value of the radio. - * - * @ingroup Radio - */ -EAPI void elm_radio_state_value_set(Evas_Object *obj, int value); - -/** - * @brief Get the integer value that this radio object represents - * - * @param obj The radio object - * @return The value used if this radio object is selected - * - * This gets the value of the radio. - * @see elm_radio_value_set() - * - * @ingroup Radio - */ -EAPI int elm_radio_state_value_get(const Evas_Object *obj); - -/** - * @brief Set the value of the radio group. - * - * @param obj The radio object (any radio object of the group). - * @param value The value to use for the group - * - * This sets the value of the radio group and will also set the value if - * pointed to, to the value supplied, but will not call any callbacks. - * - * @ingroup Radio - */ -EAPI void elm_radio_value_set(Evas_Object *obj, int value); - -/** - * @brief Get the value of the radio group - * - * @param obj The radio object (any radio object of the group). - * @return The integer state - * - * @ingroup Radio - */ -EAPI int elm_radio_value_get(const Evas_Object *obj); - -/** - * @brief Set a convenience pointer to a integer to change when radio group - * value changes. - * - * @param obj The radio object (any object of a group) - * @param valuep Pointer to the integer to modify - * - * This sets a pointer to a integer, that, in addition to the radio objects - * state will also be modified directly. To stop setting the object pointed - * to simply use NULL as the @p valuep argument. If valuep is not NULL, then - * when this is called, the radio objects state will also be modified to - * reflect the value of the integer valuep points to, just like calling - * elm_radio_value_set(). - * - * @ingroup Radio - */ -EAPI void elm_radio_value_pointer_set(Evas_Object *obj, int *valuep); - -/** - * @brief Get the selected radio object. - * - * @param obj Any radio object (any object of a group) - * @return The selected radio object - * - * @ingroup Radio - */ -EAPI Evas_Object *elm_radio_selected_object_get(Evas_Object *obj); - +#ifdef EFL_EO_API_SUPPORT +#include "elm_radio_eo.h" +#endif +#ifndef EFL_NOLEGACY_API_SUPPORT +#include "elm_radio_legacy.h" +#endif /** * @} */ diff --git a/src/lib/elm_radio_eo.h b/src/lib/elm_radio_eo.h new file mode 100644 index 000000000..c007d2f8b --- /dev/null +++ b/src/lib/elm_radio_eo.h @@ -0,0 +1,118 @@ +#define ELM_OBJ_RADIO_CLASS elm_obj_radio_class_get() + +const Eo_Class *elm_obj_radio_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_RADIO_BASE_ID; + +enum +{ + ELM_OBJ_RADIO_SUB_ID_GROUP_ADD, + ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_SET, + ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_GET, + ELM_OBJ_RADIO_SUB_ID_VALUE_SET, + ELM_OBJ_RADIO_SUB_ID_VALUE_GET, + ELM_OBJ_RADIO_SUB_ID_VALUE_POINTER_SET, + ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET, + ELM_OBJ_RADIO_SUB_ID_LAST +}; + +#define ELM_OBJ_RADIO_ID(sub_id) (ELM_OBJ_RADIO_BASE_ID + sub_id) + + +/** + * @def elm_obj_radio_group_add + * @since 1.8 + * + * @brief Add this radio to a group of other radio objects + * + * @param[in] group + * + * @see elm_radio_group_add + * + * @ingroup Radio + */ +#define elm_obj_radio_group_add(group) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_GROUP_ADD), EO_TYPECHECK(Evas_Object *, group) + +/** + * @def elm_obj_radio_state_value_set + * @since 1.8 + * + * @brief Set the integer value that this radio object represents + * + * @param[in] value + * + * @see elm_radio_state_value_set + * + * @ingroup Radio + */ +#define elm_obj_radio_state_value_set(value) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_SET), EO_TYPECHECK(int, value) + +/** + * @def elm_obj_radio_state_value_get + * @since 1.8 + * + * @brief Get the integer value that this radio object represents + * + * @param[out] ret + * + * @see elm_radio_state_value_get + * + * @ingroup Radio + */ +#define elm_obj_radio_state_value_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_GET), EO_TYPECHECK(int *, ret) + +/** + * @def elm_obj_radio_value_set + * @since 1.8 + * + * @brief Set the value of the radio group. + * + * @param[in] value + * + * @see elm_radio_value_set + * + * @ingroup Radio + */ +#define elm_obj_radio_value_set(value) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_SET), EO_TYPECHECK(int, value) + +/** + * @def elm_obj_radio_value_get + * @since 1.8 + * + * @brief Get the value of the radio group + * + * @param[out] ret + * + * @see elm_radio_value_get + * + * @ingroup Radio + */ +#define elm_obj_radio_value_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_GET), EO_TYPECHECK(int *, ret) + +/** + * @def elm_obj_radio_value_pointer_set + * @since 1.8 + * + * @brief Set a convenience pointer to a integer to change when radio group + * + * @param[in] valuep + * + * @see elm_radio_value_pointer_set + * + * @ingroup Radio + */ +#define elm_obj_radio_value_pointer_set(valuep) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_POINTER_SET), EO_TYPECHECK(int *, valuep) + +/** + * @def elm_obj_radio_selected_object_get + * @since 1.8 + * + * @brief Get the selected radio object. + * + * @param[out] ret + * + * @see elm_radio_selected_object_get + * + * @ingroup Radio + */ +#define elm_obj_radio_selected_object_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET), EO_TYPECHECK(Evas_Object **, ret) diff --git a/src/lib/elm_radio_legacy.h b/src/lib/elm_radio_legacy.h new file mode 100644 index 000000000..807eb37a4 --- /dev/null +++ b/src/lib/elm_radio_legacy.h @@ -0,0 +1,100 @@ +/** + * @brief Add a new radio to the parent + * + * @param parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup Radio + */ +EAPI Evas_Object *elm_radio_add(Evas_Object *parent); + +/** + * @brief Add this radio to a group of other radio objects + * + * @param obj The radio object + * @param group Any object whose group the @p obj is to join. + * + * 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. + * + * @ingroup Radio + */ +EAPI void elm_radio_group_add(Evas_Object *obj, Evas_Object *group); + +/** + * @brief Set the integer value that this radio object represents + * + * @param obj The radio object + * @param value The value to use if this radio object is selected + * + * This sets the value of the radio. + * + * @ingroup Radio + */ +EAPI void elm_radio_state_value_set(Evas_Object *obj, int value); + +/** + * @brief Get the integer value that this radio object represents + * + * @param obj The radio object + * @return The value used if this radio object is selected + * + * This gets the value of the radio. + * @see elm_radio_value_set() + * + * @ingroup Radio + */ +EAPI int elm_radio_state_value_get(const Evas_Object *obj); + +/** + * @brief Set the value of the radio group. + * + * @param obj The radio object (any radio object of the group). + * @param value The value to use for the group + * + * This sets the value of the radio group and will also set the value if + * pointed to, to the value supplied, but will not call any callbacks. + * + * @ingroup Radio + */ +EAPI void elm_radio_value_set(Evas_Object *obj, int value); + +/** + * @brief Get the value of the radio group + * + * @param obj The radio object (any radio object of the group). + * @return The integer state + * + * @ingroup Radio + */ +EAPI int elm_radio_value_get(const Evas_Object *obj); + +/** + * @brief Set a convenience pointer to a integer to change when radio group + * value changes. + * + * @param obj The radio object (any object of a group) + * @param valuep Pointer to the integer to modify + * + * This sets a pointer to a integer, that, in addition to the radio objects + * state will also be modified directly. To stop setting the object pointed + * to simply use NULL as the @p valuep argument. If valuep is not NULL, then + * when this is called, the radio objects state will also be modified to + * reflect the value of the integer valuep points to, just like calling + * elm_radio_value_set(). + * + * @ingroup Radio + */ +EAPI void elm_radio_value_pointer_set(Evas_Object *obj, int *valuep); + +/** + * @brief Get the selected radio object. + * + * @param obj Any radio object (any object of a group) + * @return The selected radio object + * + * @ingroup Radio + */ +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 5a88ff6e2..80ba517c0 100644 --- a/src/lib/elm_route.h +++ b/src/lib/elm_route.h @@ -10,103 +10,12 @@ * @{ */ -#define ELM_OBJ_ROUTE_CLASS elm_obj_route_class_get() - -const Eo_Class *elm_obj_route_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_ROUTE_BASE_ID; - -enum -{ - ELM_OBJ_ROUTE_SUB_ID_EMAP_SET, - ELM_OBJ_ROUTE_SUB_ID_LONGITUDE_MIN_MAX_GET, - ELM_OBJ_ROUTE_SUB_ID_LATITUDE_MIN_MAX_GET, - ELM_OBJ_ROUTE_SUB_ID_LAST -}; - -#define ELM_OBJ_ROUTE_ID(sub_id) (ELM_OBJ_ROUTE_BASE_ID + sub_id) - - -/** - * @def elm_obj_route_emap_set - * @since 1.8 - * - * No description supplied by the EAPI. - * - * @param[in] emap - * - * @see elm_route_emap_set - */ -#define elm_obj_route_emap_set(emap) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_EMAP_SET), EO_TYPECHECK(EMap_Route *, emap) - -/** - * @def elm_obj_route_longitude_min_max_get - * @since 1.8 - * - * Get the minimum and maximum values along the longitude. - * - * @param[out] min - * @param[out] max - * - * @see elm_route_longitude_min_max_get - */ -#define elm_obj_route_longitude_min_max_get(min, max) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_LONGITUDE_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max) - -/** - * @def elm_obj_route_latitude_min_max_get - * @since 1.8 - * - * Get the minimum and maximum values along the latitude. - * - * @param[out] min - * @param[out] max - * - * @see elm_route_latitude_min_max_get - */ -#define elm_obj_route_latitude_min_max_get(min, max) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_LATITUDE_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max) - -/** - * Add a new route object to the parent's canvas - * - * @param parent The parent object - * @return The new object or 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); +#ifdef EFL_EO_API_SUPPORT +#include "elm_route_eo.h" +#endif +#ifndef EFL_NOLEGACY_API_SUPPORT +#include "elm_route_legacy.h" #endif - -/** - * Get the minimum and maximum values along the longitude. - * - * @param obj The route object. - * @param min Pointer to store the minimum value. - * @param max Pointer to store the maximum value. - * - * @note If only one value is needed, the other pointer can be passed - * as @c NULL. - * - * @ingroup Route - */ -EAPI void elm_route_longitude_min_max_get(const Evas_Object *obj, double *min, double *max); - -/** - * Get the minimum and maximum values along the latitude. - * - * @param obj The route object. - * @param min Pointer to store the minimum value. - * @param max Pointer to store the maximum value. - * - * @note If only one value is needed, the other pointer can be passed - * as @c NULL. - * - * @ingroup Route - */ -EAPI void elm_route_latitude_min_max_get(const Evas_Object *obj, double *min, double *max); - /** * @} */ diff --git a/src/lib/elm_route_eo.h b/src/lib/elm_route_eo.h new file mode 100644 index 000000000..aa4cd3f21 --- /dev/null +++ b/src/lib/elm_route_eo.h @@ -0,0 +1,60 @@ +#define ELM_OBJ_ROUTE_CLASS elm_obj_route_class_get() + +const Eo_Class *elm_obj_route_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_ROUTE_BASE_ID; + +enum +{ + ELM_OBJ_ROUTE_SUB_ID_EMAP_SET, + ELM_OBJ_ROUTE_SUB_ID_LONGITUDE_MIN_MAX_GET, + ELM_OBJ_ROUTE_SUB_ID_LATITUDE_MIN_MAX_GET, + ELM_OBJ_ROUTE_SUB_ID_LAST +}; + +#define ELM_OBJ_ROUTE_ID(sub_id) (ELM_OBJ_ROUTE_BASE_ID + sub_id) + + +/** + * @def elm_obj_route_emap_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] emap + * + * @see elm_route_emap_set + * + * @ingroup Route + */ +#define elm_obj_route_emap_set(emap) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_EMAP_SET), EO_TYPECHECK(EMap_Route *, emap) + +/** + * @def elm_obj_route_longitude_min_max_get + * @since 1.8 + * + * Get the minimum and maximum values along the longitude. + * + * @param[out] min + * @param[out] max + * + * @see elm_route_longitude_min_max_get + * + * @ingroup Route + */ +#define elm_obj_route_longitude_min_max_get(min, max) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_LONGITUDE_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max) + +/** + * @def elm_obj_route_latitude_min_max_get + * @since 1.8 + * + * Get the minimum and maximum values along the latitude. + * + * @param[out] min + * @param[out] max + * + * @see elm_route_latitude_min_max_get + * + * @ingroup Route + */ +#define elm_obj_route_latitude_min_max_get(min, max) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_LATITUDE_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max) diff --git a/src/lib/elm_route_legacy.h b/src/lib/elm_route_legacy.h new file mode 100644 index 000000000..330552d73 --- /dev/null +++ b/src/lib/elm_route_legacy.h @@ -0,0 +1,53 @@ +/** + * Add a new route object to the parent's canvas + * + * @param parent The parent object + * @return The new object or 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 + +#ifdef ELM_EMAP +/** + * emap set + * + * @param parent The parent object + * @param emap The emap + * + * @ingroup Route + */ +EAPI void elm_route_emap_set(Evas_Object *obj, EMap_Route *emap); +#endif + +/** + * Get the minimum and maximum values along the longitude. + * + * @param obj The route object. + * @param min Pointer to store the minimum value. + * @param max Pointer to store the maximum value. + * + * @note If only one value is needed, the other pointer can be passed + * as @c NULL. + * + * @ingroup Route + */ +EAPI void elm_route_longitude_min_max_get(const Evas_Object *obj, double *min, double *max); + +/** + * Get the minimum and maximum values along the latitude. + * + * @param obj The route object. + * @param min Pointer to store the minimum value. + * @param max Pointer to store the maximum value. + * + * @note If only one value is needed, the other pointer can be passed + * as @c NULL. + * + * @ingroup Route + */ +EAPI void elm_route_latitude_min_max_get(const Evas_Object *obj, double *min, double *max); diff --git a/src/lib/elm_segment_control.h b/src/lib/elm_segment_control.h index 55afe60fa..6a0d5b11f 100644 --- a/src/lib/elm_segment_control.h +++ b/src/lib/elm_segment_control.h @@ -54,371 +54,18 @@ * */ -#define ELM_OBJ_SEGMENT_CONTROL_CLASS elm_obj_segment_control_class_get() - -const Eo_Class *elm_obj_segment_control_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_SEGMENT_CONTROL_BASE_ID; - -enum -{ - ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ADD, - ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_INSERT_AT, - ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_DEL_AT, - ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_LABEL_GET, - ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ICON_GET, - ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_COUNT_GET, - ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_SELECTED_GET, - ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_GET, - ELM_OBJ_SEGMENT_CONTROL_SUB_ID_LAST -}; - -#define ELM_OBJ_SEGMENT_CONTROL_ID(sub_id) (ELM_OBJ_SEGMENT_CONTROL_BASE_ID + sub_id) - - -/** - * @def elm_obj_segment_control_item_add - * @since 1.8 - * - * Append a new item to the segment control object. - * - * @param[in] icon - * @param[in] label - * @param[out] ret - * - * @see elm_segment_control_item_add - */ -#define elm_obj_segment_control_item_add(icon, label, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ADD), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_segment_control_item_insert_at - * @since 1.8 - * - * Insert a new item to the segment control object at specified position. - * - * @param[in] icon - * @param[in] label - * @param[in] idx - * @param[out] ret - * - * @see elm_segment_control_item_insert_at - */ -#define elm_obj_segment_control_item_insert_at(icon, label, idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_INSERT_AT), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(int, idx), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_segment_control_item_del_at - * @since 1.8 - * - * Remove a segment control item at given index from its parent, - * - * @param[in] idx - * - * @see elm_segment_control_item_del_at - */ -#define elm_obj_segment_control_item_del_at(idx) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_DEL_AT), EO_TYPECHECK(int, idx) - -/** - * @def elm_obj_segment_control_item_label_get - * @since 1.8 - * - * Get the label of item. - * - * @param[in] idx - * @param[out] ret - * - * @see elm_segment_control_item_label_get - */ -#define elm_obj_segment_control_item_label_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_LABEL_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_segment_control_item_icon_get - * @since 1.8 - * - * Get the icon associated to the item. - * - * @param[in] idx - * @param[out] ret - * - * @see elm_segment_control_item_icon_get - */ -#define elm_obj_segment_control_item_icon_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ICON_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(Evas_Object **, ret) - -/** - * @def elm_obj_segment_control_item_count_get - * @since 1.8 - * - * Get the Segment items count from segment control. - * - * @param[out] ret - * - * @see elm_segment_control_item_count_get - */ -#define elm_obj_segment_control_item_count_get(ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_COUNT_GET), EO_TYPECHECK(int *, ret) - -/** - * @def elm_obj_segment_control_item_selected_get - * @since 1.8 - * - * Get the selected item. - * - * @param[out] ret - * - * @see elm_segment_control_item_selected_get - */ -#define elm_obj_segment_control_item_selected_get(ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_SELECTED_GET), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_segment_control_item_get - * @since 1.8 - * - * Get the item placed at specified index. - * - * @param[in] idx - * @param[out] ret - * - * @see elm_segment_control_item_get - */ -#define elm_obj_segment_control_item_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(Elm_Object_Item **, ret) - /** * @addtogroup SegmentControl * @{ */ -/** - * Add a new segment control widget to the given parent Elementary - * (container) object. - * - * @param parent The parent object. - * @return a new segment control widget handle or @c NULL, on errors. - * - * This function inserts a new segment control widget on the canvas. - * - * @ingroup SegmentControl - */ -EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent); - -/** - * Append a new item to the segment control object. - * - * @param obj The segment control object. - * @param icon The icon object to use for the left side of the item. An - * icon can be any Evas object, but usually it is an icon created - * with elm_icon_add(). - * @param label The label of the item. - * Note that, NULL is different from empty string "". - * @return The created item or @c NULL upon failure. - * - * A new item will be created and appended to the segment control, i.e., will - * be set as @b last item. - * - * If it should be inserted at another position, - * elm_segment_control_item_insert_at() should be used instead. - * - * Items created with this function can be deleted with function - * elm_object_item_del() or elm_object_item_del_at(). - * - * @note @p label set to @c NULL is different from empty string "". - * If an item - * only has icon, it will be displayed bigger and centered. If it has - * icon and label, even that an empty string, icon will be smaller and - * positioned at 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 - * - * @see elm_segment_control_item_insert_at() - * @see elm_object_item_del() - * - * @ingroup SegmentControl - */ -EAPI Elm_Object_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label); - -/** - * Insert a new item to the segment control object at specified position. - * - * @param obj The segment control object. - * @param icon The icon object to use for the left side of the item. An - * icon can be any Evas object, but usually it is an icon created - * with elm_icon_add(). - * @param label The label of the item. - * @param index Item position. Value should be between 0 and items count. - * @return The created item or @c NULL upon failure. - - * Index values must be between @c 0, when item will be prepended to - * segment control, and items count, that can be get with - * elm_segment_control_item_count_get(), case when item will be appended - * to segment control, just like elm_segment_control_item_add(). - * - * Items created with this function can be deleted with function - * elm_object_item_del() or elm_segment_control_item_del_at(). - * - * @note @p label set to @c NULL is different from empty string "". - * If an item - * only has icon, it will be displayed bigger and centered. If it has - * icon and label, even that an empty string, icon will be smaller and - * positioned at left. - * - * @see elm_segment_control_item_add() - * @see elm_segment_control_item_count_get() - * @see elm_object_item_del() - * - * @ingroup SegmentControl - */ -EAPI Elm_Object_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index); - -/** - * Remove a segment control item at given index from its parent, - * deleting it. - * - * @param obj The segment control object. - * @param index The position of the segment control item to be deleted. - * - * Items can be added with elm_segment_control_item_add() or - * elm_segment_control_item_insert_at(). - * - * @ingroup SegmentControl - */ -EAPI void elm_segment_control_item_del_at(Evas_Object *obj, int index); - -/** - * Get the Segment items count from segment control. - * - * @param obj The segment control object. - * @return Segment items count. - * - * It will just return the number of items added to segment control @p obj. - * - * @ingroup SegmentControl - */ -EAPI int elm_segment_control_item_count_get(const Evas_Object *obj); - -/** - * Get the item placed at specified index. - * - * @param obj The segment control object. - * @param index The index of the segment item. - * @return The segment control item or @c NULL on failure. - * - * Index is the position of an item in segment control widget. Its - * range is from @c 0 to <tt> count - 1 </tt>. - * Count is the number of items, that can be get with - * elm_segment_control_item_count_get(). - * - * @ingroup SegmentControl - */ -EAPI Elm_Object_Item *elm_segment_control_item_get(const Evas_Object *obj, int index); - -/** - * Get the label of item. - * - * @param obj The segment control object. - * @param index The index of the segment item. - * @return The label of the item at @p index. - * - * The return value is a pointer to the label associated to the item when - * it was created, with function elm_segment_control_item_add(), or later - * with function elm_object_item_text_set. If no label - * was passed as argument, it will return @c NULL. - * - * @see elm_object_item_text_set() for more details. - * @see elm_segment_control_item_add() - * - * @ingroup SegmentControl - */ -EAPI const char *elm_segment_control_item_label_get(const Evas_Object *obj, int index); - -/** - * Get the icon associated to the item. - * - * @param obj The segment control object. - * @param index The index of the segment item. - * @return The left side icon associated to the item at @p index. - * - * The return value is a pointer to the icon associated to the item when - * it was created, with function elm_segment_control_item_add(), or later - * with function elm_object_item_part_content_set(). If no icon - * was passed as argument, it will return @c NULL. - * - * @see elm_segment_control_item_add() - * @see elm_object_item_part_content_set() - * - * @ingroup SegmentControl - */ -EAPI Evas_Object *elm_segment_control_item_icon_get(const Evas_Object *obj, int index); - -/** - * Get the index of an item. - * - * @param it The segment control item. - * @return The position of item in segment control widget. - * - * Index is the position of an item in segment control widget. Its - * range is from @c 0 to <tt> count - 1 </tt>. - * Count is the number of items, that can be get with - * elm_segment_control_item_count_get(). - * - * @ingroup SegmentControl - */ -EAPI int elm_segment_control_item_index_get(const Elm_Object_Item *it); - -/** - * Get the real Evas(Edje) object created to implement the view of a given - * segment_control @p item. - * - * @param it The segment control item. - * @return The base Edje object associated with @p it. - * - * Base object is the @c Evas_Object that represents that item. - * - * @ingroup SegmentControl - */ -EAPI Evas_Object *elm_segment_control_item_object_get(const Elm_Object_Item *it); - -/** - * Get the selected item. - * - * @param obj The segment control object. - * @return The selected item or @c NULL if none of segment items is - * selected. - * - * The selected item can be unselected with function - * elm_segment_control_item_selected_set(). - * - * The selected item always will be highlighted on segment control. - * - * @ingroup SegmentControl - */ -EAPI Elm_Object_Item *elm_segment_control_item_selected_get(const Evas_Object *obj); - -/** - * Set the selected state of an item. - * - * @param it The segment control item - * @param select The selected state - * - * This sets the selected state of the given item @p it. - * @c EINA_TRUE for selected, @c EINA_FALSE for not selected. - * - * If a new item is selected the previously selected will be unselected. - * Selected item can be got with function - * elm_segment_control_item_selected_get(). - * - * The selected item always will be highlighted on segment control. - * - * @see elm_segment_control_item_selected_get() - * - * @ingroup SegmentControl - */ -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_segment_control_common.h b/src/lib/elm_segment_control_common.h new file mode 100644 index 000000000..6b586ec3d --- /dev/null +++ b/src/lib/elm_segment_control_common.h @@ -0,0 +1,49 @@ +/** + * Get the index of an item. + * + * @param it The segment control item. + * @return The position of item in segment control widget. + * + * Index is the position of an item in segment control widget. Its + * range is from @c 0 to <tt> count - 1 </tt>. + * Count is the number of items, that can be get with + * elm_segment_control_item_count_get(). + * + * @ingroup SegmentControl + */ +EAPI int elm_segment_control_item_index_get(const Elm_Object_Item *it); + +/** + * Get the real Evas(Edje) object created to implement the view of a given + * segment_control @p item. + * + * @param it The segment control item. + * @return The base Edje object associated with @p it. + * + * Base object is the @c Evas_Object that represents that item. + * + * @ingroup SegmentControl + */ +EAPI Evas_Object *elm_segment_control_item_object_get(const Elm_Object_Item *it); + +/** + * Set the selected state of an item. + * + * @param it The segment control item + * @param select The selected state + * + * This sets the selected state of the given item @p it. + * @c EINA_TRUE for selected, @c EINA_FALSE for not selected. + * + * If a new item is selected the previously selected will be unselected. + * Selected item can be got with function + * elm_segment_control_item_selected_get(). + * + * The selected item always will be highlighted on segment control. + * + * @see elm_segment_control_item_selected_get() + * + * @ingroup SegmentControl + */ +EAPI void elm_segment_control_item_selected_set(Elm_Object_Item *it, Eina_Bool select); + diff --git a/src/lib/elm_segment_control_eo.h b/src/lib/elm_segment_control_eo.h new file mode 100644 index 000000000..ddcee090c --- /dev/null +++ b/src/lib/elm_segment_control_eo.h @@ -0,0 +1,141 @@ +#define ELM_OBJ_SEGMENT_CONTROL_CLASS elm_obj_segment_control_class_get() + +const Eo_Class *elm_obj_segment_control_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_SEGMENT_CONTROL_BASE_ID; + +enum +{ + ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ADD, + ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_INSERT_AT, + ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_DEL_AT, + ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_LABEL_GET, + ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ICON_GET, + ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_COUNT_GET, + ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_SELECTED_GET, + ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_GET, + ELM_OBJ_SEGMENT_CONTROL_SUB_ID_LAST +}; + +#define ELM_OBJ_SEGMENT_CONTROL_ID(sub_id) (ELM_OBJ_SEGMENT_CONTROL_BASE_ID + sub_id) + + +/** + * @def elm_obj_segment_control_item_add + * @since 1.8 + * + * Append a new item to the segment control object. + * + * @param[in] icon + * @param[in] label + * @param[out] ret + * + * @see elm_segment_control_item_add + * + * @ingroup SegmentControl + */ +#define elm_obj_segment_control_item_add(icon, label, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ADD), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_segment_control_item_insert_at + * @since 1.8 + * + * Insert a new item to the segment control object at specified position. + * + * @param[in] icon + * @param[in] label + * @param[in] idx + * @param[out] ret + * + * @see elm_segment_control_item_insert_at + * + * @ingroup SegmentControl + */ +#define elm_obj_segment_control_item_insert_at(icon, label, idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_INSERT_AT), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(int, idx), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_segment_control_item_del_at + * @since 1.8 + * + * Remove a segment control item at given index from its parent, + * + * @param[in] idx + * + * @see elm_segment_control_item_del_at + * + * @ingroup SegmentControl + */ +#define elm_obj_segment_control_item_del_at(idx) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_DEL_AT), EO_TYPECHECK(int, idx) + +/** + * @def elm_obj_segment_control_item_label_get + * @since 1.8 + * + * Get the label of item. + * + * @param[in] idx + * @param[out] ret + * + * @see elm_segment_control_item_label_get + * + * @ingroup SegmentControl + */ +#define elm_obj_segment_control_item_label_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_LABEL_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_segment_control_item_icon_get + * @since 1.8 + * + * Get the icon associated to the item. + * + * @param[in] idx + * @param[out] ret + * + * @see elm_segment_control_item_icon_get + * + * @ingroup SegmentControl + */ +#define elm_obj_segment_control_item_icon_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ICON_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(Evas_Object **, ret) + +/** + * @def elm_obj_segment_control_item_count_get + * @since 1.8 + * + * Get the Segment items count from segment control. + * + * @param[out] ret + * + * @see elm_segment_control_item_count_get + * + * @ingroup SegmentControl + */ +#define elm_obj_segment_control_item_count_get(ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_COUNT_GET), EO_TYPECHECK(int *, ret) + +/** + * @def elm_obj_segment_control_item_selected_get + * @since 1.8 + * + * Get the selected item. + * + * @param[out] ret + * + * @see elm_segment_control_item_selected_get + * + * @ingroup SegmentControl + */ +#define elm_obj_segment_control_item_selected_get(ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_SELECTED_GET), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_segment_control_item_get + * @since 1.8 + * + * Get the item placed at specified index. + * + * @param[in] idx + * @param[out] ret + * + * @see elm_segment_control_item_get + * + * @ingroup SegmentControl + */ +#define elm_obj_segment_control_item_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(Elm_Object_Item **, ret) diff --git a/src/lib/elm_segment_control_legacy.h b/src/lib/elm_segment_control_legacy.h new file mode 100644 index 000000000..018dd6213 --- /dev/null +++ b/src/lib/elm_segment_control_legacy.h @@ -0,0 +1,184 @@ +/** + * Add a new segment control widget to the given parent Elementary + * (container) object. + * + * @param parent The parent object. + * @return a new segment control widget handle or @c NULL, on errors. + * + * This function inserts a new segment control widget on the canvas. + * + * @ingroup SegmentControl + */ +EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent); + +/** + * Append a new item to the segment control object. + * + * @param obj The segment control object. + * @param icon The icon object to use for the left side of the item. An + * icon can be any Evas object, but usually it is an icon created + * with elm_icon_add(). + * @param label The label of the item. + * Note that, NULL is different from empty string "". + * @return The created item or @c NULL upon failure. + * + * A new item will be created and appended to the segment control, i.e., will + * be set as @b last item. + * + * If it should be inserted at another position, + * elm_segment_control_item_insert_at() should be used instead. + * + * Items created with this function can be deleted with function + * elm_object_item_del() or elm_object_item_del_at(). + * + * @note @p label set to @c NULL is different from empty string "". + * If an item + * only has icon, it will be displayed bigger and centered. If it has + * icon and label, even that an empty string, icon will be smaller and + * positioned at 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 + * + * @see elm_segment_control_item_insert_at() + * @see elm_object_item_del() + * + * @ingroup SegmentControl + */ +EAPI Elm_Object_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label); + +/** + * Insert a new item to the segment control object at specified position. + * + * @param obj The segment control object. + * @param icon The icon object to use for the left side of the item. An + * icon can be any Evas object, but usually it is an icon created + * with elm_icon_add(). + * @param label The label of the item. + * @param index Item position. Value should be between 0 and items count. + * @return The created item or @c NULL upon failure. + + * Index values must be between @c 0, when item will be prepended to + * segment control, and items count, that can be get with + * elm_segment_control_item_count_get(), case when item will be appended + * to segment control, just like elm_segment_control_item_add(). + * + * Items created with this function can be deleted with function + * elm_object_item_del() or elm_segment_control_item_del_at(). + * + * @note @p label set to @c NULL is different from empty string "". + * If an item + * only has icon, it will be displayed bigger and centered. If it has + * icon and label, even that an empty string, icon will be smaller and + * positioned at left. + * + * @see elm_segment_control_item_add() + * @see elm_segment_control_item_count_get() + * @see elm_object_item_del() + * + * @ingroup SegmentControl + */ +EAPI Elm_Object_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index); + +/** + * Remove a segment control item at given index from its parent, + * deleting it. + * + * @param obj The segment control object. + * @param index The position of the segment control item to be deleted. + * + * Items can be added with elm_segment_control_item_add() or + * elm_segment_control_item_insert_at(). + * + * @ingroup SegmentControl + */ +EAPI void elm_segment_control_item_del_at(Evas_Object *obj, int index); + +/** + * Get the label of item. + * + * @param obj The segment control object. + * @param index The index of the segment item. + * @return The label of the item at @p index. + * + * The return value is a pointer to the label associated to the item when + * it was created, with function elm_segment_control_item_add(), or later + * with function elm_object_item_text_set. If no label + * was passed as argument, it will return @c NULL. + * + * @see elm_object_item_text_set() for more details. + * @see elm_segment_control_item_add() + * + * @ingroup SegmentControl + */ +EAPI const char *elm_segment_control_item_label_get(const Evas_Object *obj, int index); + +/** + * Get the icon associated to the item. + * + * @param obj The segment control object. + * @param index The index of the segment item. + * @return The left side icon associated to the item at @p index. + * + * The return value is a pointer to the icon associated to the item when + * it was created, with function elm_segment_control_item_add(), or later + * with function elm_object_item_part_content_set(). If no icon + * was passed as argument, it will return @c NULL. + * + * @see elm_segment_control_item_add() + * @see elm_object_item_part_content_set() + * + * @ingroup SegmentControl + */ +EAPI Evas_Object *elm_segment_control_item_icon_get(const Evas_Object *obj, int index); + +/** + * Get the Segment items count from segment control. + * + * @param obj The segment control object. + * @return Segment items count. + * + * It will just return the number of items added to segment control @p obj. + * + * @ingroup SegmentControl + */ +EAPI int elm_segment_control_item_count_get(const Evas_Object *obj); + +/** + * Get the selected item. + * + * @param obj The segment control object. + * @return The selected item or @c NULL if none of segment items is + * selected. + * + * The selected item can be unselected with function + * elm_segment_control_item_selected_set(). + * + * The selected item always will be highlighted on segment control. + * + * @ingroup SegmentControl + */ +EAPI Elm_Object_Item *elm_segment_control_item_selected_get(const Evas_Object *obj); + +/** + * Get the item placed at specified index. + * + * @param obj The segment control object. + * @param index The index of the segment item. + * @return The segment control item or @c NULL on failure. + * + * Index is the position of an item in segment control widget. Its + * range is from @c 0 to <tt> count - 1 </tt>. + * Count is the number of items, that can be get with + * elm_segment_control_item_count_get(). + * + * @ingroup SegmentControl + */ +EAPI Elm_Object_Item *elm_segment_control_item_get(const Evas_Object *obj, int index); diff --git a/src/lib/elm_separator.h b/src/lib/elm_separator.h index 3aef7cb80..6e9768f8a 100644 --- a/src/lib/elm_separator.h +++ b/src/lib/elm_separator.h @@ -18,79 +18,12 @@ * @{ */ -#define ELM_OBJ_SEPARATOR_CLASS elm_obj_separator_class_get() - -const Eo_Class *elm_obj_separator_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_SEPARATOR_BASE_ID; - -enum -{ - ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_SET, - ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_GET, - ELM_OBJ_SEPARATOR_SUB_ID_LAST -}; - -#define ELM_OBJ_SEPARATOR_ID(sub_id) (ELM_OBJ_SEPARATOR_BASE_ID + sub_id) - - -/** - * @def elm_obj_separator_horizontal_set - * @since 1.8 - * - * @brief Set the horizontal mode of a separator object - * - * @param[in] horizontal - * - * @see elm_separator_horizontal_set - */ -#define elm_obj_separator_horizontal_set(horizontal) ELM_OBJ_SEPARATOR_ID(ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal) - -/** - * @def elm_obj_separator_horizontal_get - * @since 1.8 - * - * @brief Get the horizontal mode of a separator object - * - * @param[out] ret - * - * @see elm_separator_horizontal_get - */ -#define elm_obj_separator_horizontal_get(ret) ELM_OBJ_SEPARATOR_ID(ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @brief Add a separator object to @p parent - * - * @param parent The parent object - * - * @return The separator object, or NULL upon failure - * - * @ingroup Separator - */ -EAPI Evas_Object *elm_separator_add(Evas_Object *parent); - -/** - * @brief Set the horizontal mode of a separator object - * - * @param obj The separator object - * @param horizontal If true, the separator is horizontal - * - * @ingroup Separator - */ -EAPI void elm_separator_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); - -/** - * @brief Get the horizontal mode of a separator object - * - * @param obj The separator object - * @return If true, the separator is horizontal - * - * @see elm_separator_horizontal_set() - * - * @ingroup Separator - */ -EAPI Eina_Bool elm_separator_horizontal_get(const Evas_Object *obj); - +#ifdef EFL_EO_API_SUPPORT +#include "elm_separator_eo.h" +#endif +#ifndef EFL_NOLEGACY_API_SUPPORT +#include "elm_separator_legacy.h" +#endif /** * @} */ diff --git a/src/lib/elm_separator_eo.h b/src/lib/elm_separator_eo.h new file mode 100644 index 000000000..30b60f455 --- /dev/null +++ b/src/lib/elm_separator_eo.h @@ -0,0 +1,43 @@ +#define ELM_OBJ_SEPARATOR_CLASS elm_obj_separator_class_get() + +const Eo_Class *elm_obj_separator_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_SEPARATOR_BASE_ID; + +enum +{ + ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_SET, + ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_GET, + ELM_OBJ_SEPARATOR_SUB_ID_LAST +}; + +#define ELM_OBJ_SEPARATOR_ID(sub_id) (ELM_OBJ_SEPARATOR_BASE_ID + sub_id) + + +/** + * @def elm_obj_separator_horizontal_set + * @since 1.8 + * + * @brief Set the horizontal mode of a separator object + * + * @param[in] horizontal + * + * @see elm_separator_horizontal_set + * + * @ingroup Separator + */ +#define elm_obj_separator_horizontal_set(horizontal) ELM_OBJ_SEPARATOR_ID(ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal) + +/** + * @def elm_obj_separator_horizontal_get + * @since 1.8 + * + * @brief Get the horizontal mode of a separator object + * + * @param[out] ret + * + * @see elm_separator_horizontal_get + * + * @ingroup Separator + */ +#define elm_obj_separator_horizontal_get(ret) ELM_OBJ_SEPARATOR_ID(ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) diff --git a/src/lib/elm_separator_legacy.h b/src/lib/elm_separator_legacy.h new file mode 100644 index 000000000..b9d7604d4 --- /dev/null +++ b/src/lib/elm_separator_legacy.h @@ -0,0 +1,32 @@ +/** + * @brief Add a separator object to @p parent + * + * @param parent The parent object + * + * @return The separator object, or NULL upon failure + * + * @ingroup Separator + */ +EAPI Evas_Object *elm_separator_add(Evas_Object *parent); + +/** + * @brief Set the horizontal mode of a separator object + * + * @param obj The separator object + * @param horizontal If true, the separator is horizontal + * + * @ingroup Separator + */ +EAPI void elm_separator_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); + +/** + * @brief Get the horizontal mode of a separator object + * + * @param obj The separator object + * @return If true, the separator is horizontal + * + * @see elm_separator_horizontal_set() + * + * @ingroup Separator + */ +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 c8f676f37..aea35b19d 100644 --- a/src/lib/elm_slider.h +++ b/src/lib/elm_slider.h @@ -66,599 +66,17 @@ * @li @ref slider_example */ -#define ELM_OBJ_SLIDER_CLASS elm_obj_slider_class_get() - -const Eo_Class *elm_obj_slider_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_SLIDER_BASE_ID; - -typedef char *(*slider_func_type)(double); -typedef void (*slider_freefunc_type)(char *); - -enum -{ - ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_SET, - ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_GET, - ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_SET, - ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_GET, - ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_SET, - ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_GET, - ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_SET, - ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_GET, - ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_SET, - ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_GET, - ELM_OBJ_SLIDER_SUB_ID_VALUE_SET, - ELM_OBJ_SLIDER_SUB_ID_VALUE_GET, - ELM_OBJ_SLIDER_SUB_ID_INVERTED_SET, - ELM_OBJ_SLIDER_SUB_ID_INVERTED_GET, - ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_FUNCTION_SET, - ELM_OBJ_SLIDER_SUB_ID_UNITS_FORMAT_FUNCTION_SET, - ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_SET, - ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET, - ELM_OBJ_SLIDER_SUB_ID_LAST -}; - -#define ELM_OBJ_SLIDER_ID(sub_id) (ELM_OBJ_SLIDER_BASE_ID + sub_id) - - -/** - * @def elm_obj_slider_span_size_set - * @since 1.8 - * - * Set the (exact) length of the bar region of a given slider widget. - * - * @param[in] size - * - * @see elm_slider_span_size_set - */ -#define elm_obj_slider_span_size_set(size) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_SET), EO_TYPECHECK(Evas_Coord, size) - -/** - * @def elm_obj_slider_span_size_get - * @since 1.8 - * - * Get the length set for the bar region of a given slider widget - * - * @param[out] ret - * - * @see elm_slider_span_size_get - */ -#define elm_obj_slider_span_size_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_GET), EO_TYPECHECK(Evas_Coord *, ret) - -/** - * @def elm_obj_slider_unit_format_set - * @since 1.8 - * - * Set the format string for the unit label. - * - * @param[in] units - * - * @see elm_slider_unit_format_set - */ -#define elm_obj_slider_unit_format_set(units) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_SET), EO_TYPECHECK(const char *, units) - -/** - * @def elm_obj_slider_unit_format_get - * @since 1.8 - * - * Get the unit label format of the slider. - * - * @param[out] ret - * - * @see elm_slider_unit_format_get - */ -#define elm_obj_slider_unit_format_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_slider_indicator_format_set - * @since 1.8 - * - * Set the format string for the indicator label. - * - * @param[in] indicator - * - * @see elm_slider_indicator_format_set - */ -#define elm_obj_slider_indicator_format_set(indicator) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_SET), EO_TYPECHECK(const char *, indicator) - -/** - * @def elm_obj_slider_indicator_format_get - * @since 1.8 - * - * Get the indicator label format of the slider. - * - * @param[out] ret - * - * @see elm_slider_indicator_format_get - */ -#define elm_obj_slider_indicator_format_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_slider_horizontal_set - * @since 1.8 - * - * Set the orientation of a given slider widget. - * - * @param[in] horizontal - * - * @see elm_slider_horizontal_set - */ -#define elm_obj_slider_horizontal_set(horizontal) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal) - -/** - * @def elm_obj_slider_horizontal_get - * @since 1.8 - * - * Retrieve the orientation of a given slider widget - * - * @param[out] ret - * - * @see elm_slider_horizontal_get - */ -#define elm_obj_slider_horizontal_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_slider_min_max_set - * @since 1.8 - * - * Set the minimum and maximum values for the slider. - * - * @param[in] min - * @param[in] max - * - * @see elm_slider_min_max_set - */ -#define elm_obj_slider_min_max_set(min, max) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_SET), EO_TYPECHECK(double, min), EO_TYPECHECK(double, max) - -/** - * @def elm_obj_slider_min_max_get - * @since 1.8 - * - * Get the minimum and maximum values of the slider. - * - * @param[out] min - * @param[out] max - * - * @see elm_slider_min_max_get - */ -#define elm_obj_slider_min_max_get(min, max) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max) - -/** - * @def elm_obj_slider_value_set - * @since 1.8 - * - * Set the value the slider displays. - * - * @param[in] val - * - * @see elm_slider_value_set - */ -#define elm_obj_slider_value_set(val) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val) - -/** - * @def elm_obj_slider_value_get - * @since 1.8 - * - * Get the value displayed by the slider. - * - * @param[out] ret - * - * @see elm_slider_value_get - */ -#define elm_obj_slider_value_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_slider_inverted_set - * @since 1.8 - * - * Invert a given slider widget's displaying values order - * - * @param[in] inverted - * - * @see elm_slider_inverted_set - */ -#define elm_obj_slider_inverted_set(inverted) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INVERTED_SET), EO_TYPECHECK(Eina_Bool, inverted) - -/** - * @def elm_obj_slider_inverted_get - * @since 1.8 - * - * Get whether a given slider widget's displaying values are - * inverted or not. - * - * @param[out] ret - * - * @see elm_slider_inverted_get - */ -#define elm_obj_slider_inverted_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INVERTED_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_slider_indicator_format_function_set - * @since 1.8 - * - * Set the format function pointer for the indicator label - * - * @param[in] func - * @param[in] free_func - * - * @see elm_slider_indicator_format_function_set - */ -#define elm_obj_slider_indicator_format_function_set(func, free_func) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_FUNCTION_SET), EO_TYPECHECK(slider_func_type, func), EO_TYPECHECK(slider_freefunc_type, free_func) - -/** - * @def elm_obj_slider_units_format_function_set - * @since 1.8 - * - * Set the format function pointer for the units label - * - * @param[in] func - * @param[in] free_func - * - * @see elm_slider_units_format_function_set - */ -#define elm_obj_slider_units_format_function_set(func, free_func) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNITS_FORMAT_FUNCTION_SET), EO_TYPECHECK(slider_func_type, func), EO_TYPECHECK(slider_freefunc_type, free_func) - -/** - * @def elm_obj_slider_indicator_show_set - * @since 1.8 - * - * Set whether to enlarge slider indicator (augmented knob) or not. - * - * @param[in] show - * - * @see elm_slider_indicator_show_set - */ -#define elm_obj_slider_indicator_show_set(show) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_SET), EO_TYPECHECK(Eina_Bool, show) - -/** - * @def elm_obj_slider_indicator_show_get - * @since 1.8 - * - * Get whether a given slider widget's enlarging indicator or not. - * - * @param[out] ret - * - * @see elm_slider_indicator_show_get - */ -#define elm_obj_slider_indicator_show_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET), EO_TYPECHECK(Eina_Bool *, ret) - - /** * @addtogroup Slider * @{ */ -/** - * Add a new slider widget to the given parent Elementary - * (container) object. - * - * @param parent The parent object. - * @return a new slider widget handle or @c NULL, on errors. - * - * This function inserts a new slider widget on the canvas. - * - * @ingroup Slider - */ -EAPI Evas_Object *elm_slider_add(Evas_Object *parent); - -/** - * Set the (exact) length of the bar region of a given slider widget. - * - * @param obj The slider object. - * @param size The length of the slider's bar region. - * - * This sets the minimum width (when in horizontal mode) or height - * (when in vertical mode) of the actual bar area of the slider - * @p 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. - * - * @note Icon, end, label, indicator and unit text around @p obj - * will require their - * own space, which will make @p obj to require more the @p size, - * actually. - * - * @see elm_slider_span_size_get() - * - * @ingroup Slider - */ -EAPI void elm_slider_span_size_set(Evas_Object *obj, Evas_Coord size); - -/** - * Get the length set for the bar region of a given slider widget - * - * @param obj The slider object. - * @return The length of the slider's bar region. - * - * If that size was not set previously, with - * elm_slider_span_size_set(), this call will return @c 0. - * - * @ingroup Slider - */ -EAPI Evas_Coord elm_slider_span_size_get(const Evas_Object *obj); - -/** - * Set the format string for the unit label. - * - * @param obj The slider object. - * @param format The format string for the unit display. - * - * Unit label is displayed all the time, if set, after slider's bar. - * In horizontal mode, at right and in vertical mode, at bottom. - * - * If @c NULL, unit label won't be visible. If not it sets the format - * string for the label text. To the label text is provided a floating point - * value, so the label text can display up to 1 floating point value. - * Note that this is optional. - * - * Use a format string such as "%1.2f meters" for example, and it will - * display values like: "3.14 meters" for a value equal to 3.14159. - * - * Default is unit label disabled. - * - * @see elm_slider_indicator_format_get() - * - * @ingroup Slider - */ -EAPI void elm_slider_unit_format_set(Evas_Object *obj, const char *format); - -/** - * Get the unit label format of the slider. - * - * @param obj The slider object. - * @return The unit label format string in UTF-8. - * - * Unit label is displayed all the time, if set, after slider's bar. - * In horizontal mode, at right and in vertical mode, at bottom. - * - * @see elm_slider_unit_format_set() for more - * information on how this works. - * - * @ingroup Slider - */ -EAPI const char *elm_slider_unit_format_get(const Evas_Object *obj); - -/** - * Set the format string for the indicator label. - * - * @param obj The slider object. - * @param indicator The format string for the indicator display. - * - * The slider may display its value somewhere else then unit label, - * for example, above the slider knob that is dragged around. This function - * sets the format string used for this. - * - * If @c NULL, indicator label won't be visible. If not it sets the format - * string for the label text. To the label text is provided a floating point - * value, so the label text can display up to 1 floating point value. - * Note that this is optional. - * - * Use a format string such as "%1.2f meters" for example, and it will - * display values like: "3.14 meters" for a value equal to 3.14159. - * - * Default is indicator label disabled. - * - * @see elm_slider_indicator_format_get() - * - * @ingroup Slider - */ -EAPI void elm_slider_indicator_format_set(Evas_Object *obj, const char *indicator); - -/** - * Get the indicator label format of the slider. - * - * @param obj The slider object. - * @return The indicator label format string in UTF-8. - * - * The slider may display its value somewhere else then unit label, - * for example, above the slider knob that is dragged around. This function - * gets the format string used for this. - * - * @see elm_slider_indicator_format_set() for more - * information on how this works. - * - * @ingroup Slider - */ -EAPI const char *elm_slider_indicator_format_get(const Evas_Object *obj); - -/** - * Set the format function pointer for the indicator label - * - * @param obj The slider object. - * @param func The indicator format function. - * @param free_func The freeing function for the format string. - * - * Set the callback function to format the indicator string. - * - * @see elm_slider_indicator_format_set() for more info on how this works. - * - * @ingroup Slider - */ -EAPI void elm_slider_indicator_format_function_set(Evas_Object *obj, char *(*func)(double val), void (*free_func)(char *str)); - -/** - * Set the format function pointer for the units label - * - * @param obj The slider object. - * @param func The units format function. - * @param free_func The freeing function for the format string. - * - * Set the callback function to format the units string. - * - * @see elm_slider_unit_format_set() for more info on how this works. - * - * @ingroup Slider - */ -EAPI void elm_slider_units_format_function_set(Evas_Object *obj, char *(*func)(double val), void (*free_func)(char *str)); - -/** - * Set the orientation of a given slider widget. - * - * @param obj The slider object. - * @param horizontal Use @c EINA_TRUE to make @p obj to be - * @b horizontal, @c EINA_FALSE to make it @b vertical. - * - * Use this function to change how your slider is to be - * disposed: vertically or horizontally. - * - * By default it's displayed horizontally. - * - * @see elm_slider_horizontal_get() - * - * @ingroup Slider - */ -EAPI void elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); - -/** - * Retrieve the orientation of a given slider widget - * - * @param obj The slider object. - * @return @c EINA_TRUE, if @p obj is set to be @b horizontal, - * @c EINA_FALSE if it's @b vertical (and on errors). - * - * @see elm_slider_horizontal_set() for more details. - * - * @ingroup Slider - */ -EAPI Eina_Bool elm_slider_horizontal_get(const Evas_Object *obj); - -/** - * Set the minimum and maximum values for the slider. - * - * @param obj The slider object. - * @param min The minimum value. - * @param max The maximum value. - * - * Define the allowed range of values to be selected by the user. - * - * If actual value is less than @p min, it will be updated to @p min. If it - * is bigger then @p max, will be updated to @p max. Actual value can be - * get with elm_slider_value_get(). - * - * By default, min is equal to 0.0, and max is equal to 1.0. - * - * @warning Maximum must be greater than minimum, otherwise behavior - * is undefined. - * - * @see elm_slider_min_max_get() - * - * @ingroup Slider - */ -EAPI void elm_slider_min_max_set(Evas_Object *obj, double min, double max); - -/** - * Get the minimum and maximum values of the slider. - * - * @param obj The slider object. - * @param min Pointer to store the minimum value. - * @param max Pointer to store the maximum value. - * - * @note If only one value is needed, the other pointer can be passed - * as @c NULL. - * - * @see elm_slider_min_max_set() for details. - * - * @ingroup Slider - */ -EAPI void elm_slider_min_max_get(const Evas_Object *obj, double *min, double *max); - -/** - * Set the value the slider displays. - * - * @param obj The slider object. - * @param val The value to be displayed. - * - * Value will be presented on the unit label following format specified with - * elm_slider_unit_format_set() and on indicator with - * elm_slider_indicator_format_set(). - * - * @warning The value must to be between min and max values. This values - * are set by elm_slider_min_max_set(). - * - * @see elm_slider_value_get() - * @see elm_slider_unit_format_set() - * @see elm_slider_indicator_format_set() - * @see elm_slider_min_max_set() - * - * @ingroup Slider - */ -EAPI void elm_slider_value_set(Evas_Object *obj, double val); - -/** - * Get the value displayed by the slider. - * - * @param obj The slider object. - * @return The value displayed. - * - * @see elm_slider_value_set() for details. - * - * @ingroup Slider - */ -EAPI double elm_slider_value_get(const Evas_Object *obj); - -/** - * Invert a given slider widget's displaying values order - * - * @param obj The slider object. - * @param inverted Use @c EINA_TRUE to make @p obj inverted, - * @c EINA_FALSE to bring it back to default, non-inverted values. - * - * A slider may be @b inverted, in which state it gets its - * values inverted, with high vales 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 horizontal and vertical modes. - * - * @see elm_slider_inverted_get() - * - * @ingroup Slider - */ -EAPI void elm_slider_inverted_set(Evas_Object *obj, Eina_Bool inverted); - -/** - * Get whether a given slider widget's displaying values are - * inverted or not. - * - * @param obj The slider object. - * @return @c EINA_TRUE, if @p obj has inverted values, - * @c EINA_FALSE otherwise (and on errors). - * - * @see elm_slider_inverted_set() for more details. - * - * @ingroup Slider - */ -EAPI Eina_Bool elm_slider_inverted_get(const Evas_Object *obj); - -/** - * Set whether to enlarge slider indicator (augmented knob) or not. - * - * @param obj The slider object. - * @param show @c EINA_TRUE will make it enlarge, @c EINA_FALSE will - * let the knob always at default size. - * - * By default, indicator will be bigger while dragged by the user. - * - * @warning It won't display values set with - * elm_slider_indicator_format_set() if you disable indicator. - * - * @ingroup Slider - */ -EAPI void elm_slider_indicator_show_set(Evas_Object *obj, Eina_Bool show); - -/** - * Get whether a given slider widget's enlarging indicator or not. - * - * @param obj The slider object. - * @return @c EINA_TRUE, if @p obj is enlarging indicator, or - * @c EINA_FALSE otherwise (and on errors). - * - * @see elm_slider_indicator_show_set() for details. - * - * @ingroup Slider - */ -EAPI Eina_Bool elm_slider_indicator_show_get(const Evas_Object *obj); - +#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_slider_eo.h b/src/lib/elm_slider_eo.h new file mode 100644 index 000000000..35872d65a --- /dev/null +++ b/src/lib/elm_slider_eo.h @@ -0,0 +1,291 @@ +#define ELM_OBJ_SLIDER_CLASS elm_obj_slider_class_get() + +const Eo_Class *elm_obj_slider_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_SLIDER_BASE_ID; + +typedef char *(*slider_func_type)(double); +typedef void (*slider_freefunc_type)(char *); + +enum +{ + ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_SET, + ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_GET, + ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_SET, + ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_GET, + ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_SET, + ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_GET, + ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_SET, + ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_GET, + ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_SET, + ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_GET, + ELM_OBJ_SLIDER_SUB_ID_VALUE_SET, + ELM_OBJ_SLIDER_SUB_ID_VALUE_GET, + ELM_OBJ_SLIDER_SUB_ID_INVERTED_SET, + ELM_OBJ_SLIDER_SUB_ID_INVERTED_GET, + ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_FUNCTION_SET, + ELM_OBJ_SLIDER_SUB_ID_UNITS_FORMAT_FUNCTION_SET, + ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_SET, + ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET, + ELM_OBJ_SLIDER_SUB_ID_LAST +}; + +#define ELM_OBJ_SLIDER_ID(sub_id) (ELM_OBJ_SLIDER_BASE_ID + sub_id) + + +/** + * @def elm_obj_slider_span_size_set + * @since 1.8 + * + * Set the (exact) length of the bar region of a given slider widget. + * + * @param[in] size + * + * @see elm_slider_span_size_set + * + * @ingroup Slider + */ +#define elm_obj_slider_span_size_set(size) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_SET), EO_TYPECHECK(Evas_Coord, size) + +/** + * @def elm_obj_slider_span_size_get + * @since 1.8 + * + * Get the length set for the bar region of a given slider widget + * + * @param[out] ret + * + * @see elm_slider_span_size_get + * + * @ingroup Slider + */ +#define elm_obj_slider_span_size_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_GET), EO_TYPECHECK(Evas_Coord *, ret) + +/** + * @def elm_obj_slider_unit_format_set + * @since 1.8 + * + * Set the format string for the unit label. + * + * @param[in] units + * + * @see elm_slider_unit_format_set + * + * @ingroup Slider + */ +#define elm_obj_slider_unit_format_set(units) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_SET), EO_TYPECHECK(const char *, units) + +/** + * @def elm_obj_slider_unit_format_get + * @since 1.8 + * + * Get the unit label format of the slider. + * + * @param[out] ret + * + * @see elm_slider_unit_format_get + * + * @ingroup Slider + */ +#define elm_obj_slider_unit_format_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_slider_indicator_format_set + * @since 1.8 + * + * Set the format string for the indicator label. + * + * @param[in] indicator + * + * @see elm_slider_indicator_format_set + * + * @ingroup Slider + */ +#define elm_obj_slider_indicator_format_set(indicator) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_SET), EO_TYPECHECK(const char *, indicator) + +/** + * @def elm_obj_slider_indicator_format_get + * @since 1.8 + * + * Get the indicator label format of the slider. + * + * @param[out] ret + * + * @see elm_slider_indicator_format_get + * + * @ingroup Slider + */ +#define elm_obj_slider_indicator_format_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_slider_horizontal_set + * @since 1.8 + * + * Set the orientation of a given slider widget. + * + * @param[in] horizontal + * + * @see elm_slider_horizontal_set + * + * @ingroup Slider + */ +#define elm_obj_slider_horizontal_set(horizontal) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal) + +/** + * @def elm_obj_slider_horizontal_get + * @since 1.8 + * + * Retrieve the orientation of a given slider widget + * + * @param[out] ret + * + * @see elm_slider_horizontal_get + * + * @ingroup Slider + */ +#define elm_obj_slider_horizontal_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_slider_min_max_set + * @since 1.8 + * + * Set the minimum and maximum values for the slider. + * + * @param[in] min + * @param[in] max + * + * @see elm_slider_min_max_set + * + * @ingroup Slider + */ +#define elm_obj_slider_min_max_set(min, max) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_SET), EO_TYPECHECK(double, min), EO_TYPECHECK(double, max) + +/** + * @def elm_obj_slider_min_max_get + * @since 1.8 + * + * Get the minimum and maximum values of the slider. + * + * @param[out] min + * @param[out] max + * + * @see elm_slider_min_max_get + * + * @ingroup Slider + */ +#define elm_obj_slider_min_max_get(min, max) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max) + +/** + * @def elm_obj_slider_value_set + * @since 1.8 + * + * Set the value the slider displays. + * + * @param[in] val + * + * @see elm_slider_value_set + * + * @ingroup Slider + */ +#define elm_obj_slider_value_set(val) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val) + +/** + * @def elm_obj_slider_value_get + * @since 1.8 + * + * Get the value displayed by the slider. + * + * @param[out] ret + * + * @see elm_slider_value_get + * + * @ingroup Slider + */ +#define elm_obj_slider_value_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_slider_inverted_set + * @since 1.8 + * + * Invert a given slider widget's displaying values order + * + * @param[in] inverted + * + * @see elm_slider_inverted_set + * + * @ingroup Slider + */ +#define elm_obj_slider_inverted_set(inverted) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INVERTED_SET), EO_TYPECHECK(Eina_Bool, inverted) + +/** + * @def elm_obj_slider_inverted_get + * @since 1.8 + * + * Get whether a given slider widget's displaying values are + * inverted or not. + * + * @param[out] ret + * + * @see elm_slider_inverted_get + * + * @ingroup Slider + */ +#define elm_obj_slider_inverted_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INVERTED_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_slider_indicator_format_function_set + * @since 1.8 + * + * Set the format function pointer for the indicator label + * + * @param[in] func + * @param[in] free_func + * + * @see elm_slider_indicator_format_function_set + * + * @ingroup Slider + */ +#define elm_obj_slider_indicator_format_function_set(func, free_func) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_FUNCTION_SET), EO_TYPECHECK(slider_func_type, func), EO_TYPECHECK(slider_freefunc_type, free_func) + +/** + * @def elm_obj_slider_units_format_function_set + * @since 1.8 + * + * Set the format function pointer for the units label + * + * @param[in] func + * @param[in] free_func + * + * @see elm_slider_units_format_function_set + * + * @ingroup Slider + */ +#define elm_obj_slider_units_format_function_set(func, free_func) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNITS_FORMAT_FUNCTION_SET), EO_TYPECHECK(slider_func_type, func), EO_TYPECHECK(slider_freefunc_type, free_func) + +/** + * @def elm_obj_slider_indicator_show_set + * @since 1.8 + * + * Set whether to enlarge slider indicator (augmented knob) or not. + * + * @param[in] show + * + * @see elm_slider_indicator_show_set + * + * @ingroup Slider + */ +#define elm_obj_slider_indicator_show_set(show) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_SET), EO_TYPECHECK(Eina_Bool, show) + +/** + * @def elm_obj_slider_indicator_show_get + * @since 1.8 + * + * Get whether a given slider widget's enlarging indicator or not. + * + * @param[out] ret + * + * @see elm_slider_indicator_show_get + * + * @ingroup Slider + */ +#define elm_obj_slider_indicator_show_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET), EO_TYPECHECK(Eina_Bool *, ret) diff --git a/src/lib/elm_slider_legacy.h b/src/lib/elm_slider_legacy.h new file mode 100644 index 000000000..a547b5550 --- /dev/null +++ b/src/lib/elm_slider_legacy.h @@ -0,0 +1,330 @@ +/** + * Add a new slider widget to the given parent Elementary + * (container) object. + * + * @param parent The parent object. + * @return a new slider widget handle or @c NULL, on errors. + * + * This function inserts a new slider widget on the canvas. + * + * @ingroup Slider + */ +EAPI Evas_Object *elm_slider_add(Evas_Object *parent); + +/** + * Set the (exact) length of the bar region of a given slider widget. + * + * @param obj The slider object. + * @param size The length of the slider's bar region. + * + * This sets the minimum width (when in horizontal mode) or height + * (when in vertical mode) of the actual bar area of the slider + * @p 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. + * + * @note Icon, end, label, indicator and unit text around @p obj + * will require their + * own space, which will make @p obj to require more the @p size, + * actually. + * + * @see elm_slider_span_size_get() + * + * @ingroup Slider + */ +EAPI void elm_slider_span_size_set(Evas_Object *obj, Evas_Coord size); + +/** + * Get the length set for the bar region of a given slider widget + * + * @param obj The slider object. + * @return The length of the slider's bar region. + * + * If that size was not set previously, with + * elm_slider_span_size_set(), this call will return @c 0. + * + * @ingroup Slider + */ +EAPI Evas_Coord elm_slider_span_size_get(const Evas_Object *obj); + +/** + * Set the format string for the unit label. + * + * @param obj The slider object. + * @param format The format string for the unit display. + * + * Unit label is displayed all the time, if set, after slider's bar. + * In horizontal mode, at right and in vertical mode, at bottom. + * + * If @c NULL, unit label won't be visible. If not it sets the format + * string for the label text. To the label text is provided a floating point + * value, so the label text can display up to 1 floating point value. + * Note that this is optional. + * + * Use a format string such as "%1.2f meters" for example, and it will + * display values like: "3.14 meters" for a value equal to 3.14159. + * + * Default is unit label disabled. + * + * @see elm_slider_indicator_format_get() + * + * @ingroup Slider + */ +EAPI void elm_slider_unit_format_set(Evas_Object *obj, const char *format); + +/** + * Get the unit label format of the slider. + * + * @param obj The slider object. + * @return The unit label format string in UTF-8. + * + * Unit label is displayed all the time, if set, after slider's bar. + * In horizontal mode, at right and in vertical mode, at bottom. + * + * @see elm_slider_unit_format_set() for more + * information on how this works. + * + * @ingroup Slider + */ +EAPI const char *elm_slider_unit_format_get(const Evas_Object *obj); + +/** + * Set the format string for the indicator label. + * + * @param obj The slider object. + * @param indicator The format string for the indicator display. + * + * The slider may display its value somewhere else then unit label, + * for example, above the slider knob that is dragged around. This function + * sets the format string used for this. + * + * If @c NULL, indicator label won't be visible. If not it sets the format + * string for the label text. To the label text is provided a floating point + * value, so the label text can display up to 1 floating point value. + * Note that this is optional. + * + * Use a format string such as "%1.2f meters" for example, and it will + * display values like: "3.14 meters" for a value equal to 3.14159. + * + * Default is indicator label disabled. + * + * @see elm_slider_indicator_format_get() + * + * @ingroup Slider + */ +EAPI void elm_slider_indicator_format_set(Evas_Object *obj, const char *indicator); + +/** + * Get the indicator label format of the slider. + * + * @param obj The slider object. + * @return The indicator label format string in UTF-8. + * + * The slider may display its value somewhere else then unit label, + * for example, above the slider knob that is dragged around. This function + * gets the format string used for this. + * + * @see elm_slider_indicator_format_set() for more + * information on how this works. + * + * @ingroup Slider + */ +EAPI const char *elm_slider_indicator_format_get(const Evas_Object *obj); + +/** + * Set the orientation of a given slider widget. + * + * @param obj The slider object. + * @param horizontal Use @c EINA_TRUE to make @p obj to be + * @b horizontal, @c EINA_FALSE to make it @b vertical. + * + * Use this function to change how your slider is to be + * disposed: vertically or horizontally. + * + * By default it's displayed horizontally. + * + * @see elm_slider_horizontal_get() + * + * @ingroup Slider + */ +EAPI void elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); + +/** + * Retrieve the orientation of a given slider widget + * + * @param obj The slider object. + * @return @c EINA_TRUE, if @p obj is set to be @b horizontal, + * @c EINA_FALSE if it's @b vertical (and on errors). + * + * @see elm_slider_horizontal_set() for more details. + * + * @ingroup Slider + */ +EAPI Eina_Bool elm_slider_horizontal_get(const Evas_Object *obj); + +/** + * Set the minimum and maximum values for the slider. + * + * @param obj The slider object. + * @param min The minimum value. + * @param max The maximum value. + * + * Define the allowed range of values to be selected by the user. + * + * If actual value is less than @p min, it will be updated to @p min. If it + * is bigger then @p max, will be updated to @p max. Actual value can be + * get with elm_slider_value_get(). + * + * By default, min is equal to 0.0, and max is equal to 1.0. + * + * @warning Maximum must be greater than minimum, otherwise behavior + * is undefined. + * + * @see elm_slider_min_max_get() + * + * @ingroup Slider + */ +EAPI void elm_slider_min_max_set(Evas_Object *obj, double min, double max); + +/** + * Get the minimum and maximum values of the slider. + * + * @param obj The slider object. + * @param min Pointer to store the minimum value. + * @param max Pointer to store the maximum value. + * + * @note If only one value is needed, the other pointer can be passed + * as @c NULL. + * + * @see elm_slider_min_max_set() for details. + * + * @ingroup Slider + */ +EAPI void elm_slider_min_max_get(const Evas_Object *obj, double *min, double *max); + +/** + * Set the value the slider displays. + * + * @param obj The slider object. + * @param val The value to be displayed. + * + * Value will be presented on the unit label following format specified with + * elm_slider_unit_format_set() and on indicator with + * elm_slider_indicator_format_set(). + * + * @warning The value must to be between min and max values. This values + * are set by elm_slider_min_max_set(). + * + * @see elm_slider_value_get() + * @see elm_slider_unit_format_set() + * @see elm_slider_indicator_format_set() + * @see elm_slider_min_max_set() + * + * @ingroup Slider + */ +EAPI void elm_slider_value_set(Evas_Object *obj, double val); + +/** + * Get the value displayed by the slider. + * + * @param obj The slider object. + * @return The value displayed. + * + * @see elm_slider_value_set() for details. + * + * @ingroup Slider + */ +EAPI double elm_slider_value_get(const Evas_Object *obj); + +/** + * Invert a given slider widget's displaying values order + * + * @param obj The slider object. + * @param inverted Use @c EINA_TRUE to make @p obj inverted, + * @c EINA_FALSE to bring it back to default, non-inverted values. + * + * A slider may be @b inverted, in which state it gets its + * values inverted, with high vales 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 horizontal and vertical modes. + * + * @see elm_slider_inverted_get() + * + * @ingroup Slider + */ +EAPI void elm_slider_inverted_set(Evas_Object *obj, Eina_Bool inverted); + +/** + * Get whether a given slider widget's displaying values are + * inverted or not. + * + * @param obj The slider object. + * @return @c EINA_TRUE, if @p obj has inverted values, + * @c EINA_FALSE otherwise (and on errors). + * + * @see elm_slider_inverted_set() for more details. + * + * @ingroup Slider + */ +EAPI Eina_Bool elm_slider_inverted_get(const Evas_Object *obj); + +/** + * Set the format function pointer for the indicator label + * + * @param obj The slider object. + * @param func The indicator format function. + * @param free_func The freeing function for the format string. + * + * Set the callback function to format the indicator string. + * + * @see elm_slider_indicator_format_set() for more info on how this works. + * + * @ingroup Slider + */ +EAPI void elm_slider_indicator_format_function_set(Evas_Object *obj, char *(*func)(double val), void (*free_func)(char *str)); + +/** + * Set the format function pointer for the units label + * + * @param obj The slider object. + * @param func The units format function. + * @param free_func The freeing function for the format string. + * + * Set the callback function to format the units string. + * + * @see elm_slider_unit_format_set() for more info on how this works. + * + * @ingroup Slider + */ +EAPI void elm_slider_units_format_function_set(Evas_Object *obj, char *(*func)(double val), void (*free_func)(char *str)); + +/** + * Set whether to enlarge slider indicator (augmented knob) or not. + * + * @param obj The slider object. + * @param show @c EINA_TRUE will make it enlarge, @c EINA_FALSE will + * let the knob always at default size. + * + * By default, indicator will be bigger while dragged by the user. + * + * @warning It won't display values set with + * elm_slider_indicator_format_set() if you disable indicator. + * + * @ingroup Slider + */ +EAPI void elm_slider_indicator_show_set(Evas_Object *obj, Eina_Bool show); + +/** + * Get whether a given slider widget's enlarging indicator or not. + * + * @param obj The slider object. + * @return @c EINA_TRUE, if @p obj is enlarging indicator, or + * @c EINA_FALSE otherwise (and on errors). + * + * @see elm_slider_indicator_show_set() for details. + * + * @ingroup Slider + */ +EAPI Eina_Bool elm_slider_indicator_show_get(const Evas_Object *obj); diff --git a/src/lib/elm_slideshow.h b/src/lib/elm_slideshow.h index d96e2024d..08746c61e 100644 --- a/src/lib/elm_slideshow.h +++ b/src/lib/elm_slideshow.h @@ -67,815 +67,13 @@ * @{ */ - -#define ELM_OBJ_SLIDESHOW_CLASS elm_obj_slideshow_class_get() - -const Eo_Class *elm_obj_slideshow_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_SLIDESHOW_BASE_ID; - -enum -{ - ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_ADD, - ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_SORTED_INSERT, - ELM_OBJ_SLIDESHOW_SUB_ID_NEXT, - ELM_OBJ_SLIDESHOW_SUB_ID_PREVIOUS, - ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITIONS_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUTS_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_SET, - ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_SET, - ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_SET, - ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_SET, - ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_CLEAR, - ELM_OBJ_SLIDESHOW_SUB_ID_ITEMS_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_CURRENT_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_SET, - ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_SET, - ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_NTH_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_COUNT_GET, - ELM_OBJ_SLIDESHOW_SUB_ID_LAST -}; - -#define ELM_OBJ_SLIDESHOW_ID(sub_id) (ELM_OBJ_SLIDESHOW_BASE_ID + sub_id) - - -/** - * @def elm_obj_slideshow_item_add - * @since 1.8 - * - * Add (append) a new item in a given slideshow widget. - * - * @param[in] itc - * @param[in] data - * @param[out] ret - * - * @see elm_slideshow_item_add - */ -#define elm_obj_slideshow_item_add(itc, data, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_ADD), EO_TYPECHECK(const Elm_Slideshow_Item_Class *, itc), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_slideshow_item_sorted_insert - * @since 1.8 - * - * Insert a new item into the given slideshow widget, using the func - * function to sort items (by item handles). - * - * @param[in] itc - * @param[in] data - * @param[in] func - * @param[out] ret - * - * @see elm_slideshow_item_sorted_insert - */ -#define elm_obj_slideshow_item_sorted_insert(itc, data, func, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_SORTED_INSERT), EO_TYPECHECK(const Elm_Slideshow_Item_Class *, itc), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Eina_Compare_Cb, func), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_slideshow_next - * @since 1.8 - * - * Slide to the next item, in a given slideshow widget - * - * - * @see elm_slideshow_next - */ -#define elm_obj_slideshow_next() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_NEXT) - -/** - * @def elm_obj_slideshow_previous - * @since 1.8 - * - * Slide to the previous item, in a given slideshow widget - * - * - * @see elm_slideshow_previous - */ -#define elm_obj_slideshow_previous() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_PREVIOUS) - -/** - * @def elm_obj_slideshow_transitions_get - * @since 1.8 - * - * Returns the list of sliding transition/effect names available, for a - * given slideshow widget. - * - * @param[out] ret - * - * @see elm_slideshow_transitions_get - */ -#define elm_obj_slideshow_transitions_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITIONS_GET), EO_TYPECHECK(const Eina_List **, ret) - -/** - * @def elm_obj_slideshow_layouts_get - * @since 1.8 - * - * Returns the list of layout names available, for a given - * slideshow widget. - * - * @param[out] ret - * - * @see elm_slideshow_layouts_get - */ -#define elm_obj_slideshow_layouts_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUTS_GET), EO_TYPECHECK(const Eina_List **, ret) - -/** - * @def elm_obj_slideshow_transition_set - * @since 1.8 - * - * Set the current slide transition/effect in use for a given - * slideshow widget. - * - * @param[in] transition - * - * @see elm_slideshow_transition_set - */ -#define elm_obj_slideshow_transition_set(transition) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_SET), EO_TYPECHECK(const char *, transition) - -/** - * @def elm_obj_slideshow_transition_get - * @since 1.8 - * - * Get the current slide transition/effect in use for a given - * slideshow widget. - * - * @param[out] ret - * - * @see elm_slideshow_transition_get - */ -#define elm_obj_slideshow_transition_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_slideshow_timeout_set - * @since 1.8 - * - * Set the interval between each image transition on a given - * slideshow widget. - * - * @param[in] timeout - * - * @see elm_slideshow_timeout_set - */ -#define elm_obj_slideshow_timeout_set(timeout) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_SET), EO_TYPECHECK(double, timeout) - -/** - * @def elm_obj_slideshow_timeout_get - * @since 1.8 - * - * Get the interval set for image transitions on a given slideshow - * widget. - * - * @param[out] ret - * - * @see elm_slideshow_timeout_get - */ -#define elm_obj_slideshow_timeout_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_slideshow_loop_set - * @since 1.8 - * - * Set if, after a slideshow is started, for a given slideshow - * widget. - * - * @param[in] loop - * - * @see elm_slideshow_loop_set - */ -#define elm_obj_slideshow_loop_set(loop) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_SET), EO_TYPECHECK(Eina_Bool, loop) - -/** - * @def elm_obj_slideshow_layout_get - * @since 1.8 - * - * Get the current slide layout in use for a given slideshow widget - * - * @param[out] ret - * - * @see elm_slideshow_layout_get - */ -#define elm_obj_slideshow_layout_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_slideshow_layout_set - * @since 1.8 - * - * Set the current slide layout in use for a given slideshow widget - * - * @param[in] layout - * - * @see elm_slideshow_layout_set - */ -#define elm_obj_slideshow_layout_set(layout) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_SET), EO_TYPECHECK(const char *, layout) - -/** - * @def elm_obj_slideshow_loop_get - * @since 1.8 - * - * Get if, after a slideshow is started, for a given slideshow - * widget. - * - * @param[out] ret - * - * @see elm_slideshow_loop_get - */ -#define elm_obj_slideshow_loop_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_slideshow_clear - * @since 1.8 - * - * Remove all items from a given slideshow widget - * - * - * @see elm_slideshow_clear - */ -#define elm_obj_slideshow_clear() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CLEAR) - -/** - * @def elm_obj_slideshow_items_get - * @since 1.8 - * - * Get the internal list of items in a given slideshow widget. - * - * @param[out] ret - * - * @see elm_slideshow_items_get - */ -#define elm_obj_slideshow_items_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEMS_GET), EO_TYPECHECK(const Eina_List **, ret) - -/** - * @def elm_obj_slideshow_item_current_get - * @since 1.8 - * - * Returns the currently displayed item, in a given slideshow widget - * - * @param[out] ret - * - * @see elm_slideshow_item_current_get - */ -#define elm_obj_slideshow_item_current_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_CURRENT_GET), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_slideshow_cache_before_get - * @since 1.8 - * - * Retrieve the number of items to cache, on a given slideshow widget, - * - * @param[out] ret - * - * @see elm_slideshow_cache_before_get - */ -#define elm_obj_slideshow_cache_before_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_GET), EO_TYPECHECK(int *, ret) - -/** - * @def elm_obj_slideshow_cache_before_set - * @since 1.8 - * - * Set the number of items to cache, on a given slideshow widget, - * - * @param[in] count - * - * @see elm_slideshow_cache_before_set - */ -#define elm_obj_slideshow_cache_before_set(count) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_SET), EO_TYPECHECK(int, count) - -/** - * @def elm_obj_slideshow_cache_after_get - * @since 1.8 - * - * Retrieve the number of items to cache, on a given slideshow widget, - * <b>after the current item</b> - * - * @param[out] ret - * - * @see elm_slideshow_cache_after_get - */ -#define elm_obj_slideshow_cache_after_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_GET), EO_TYPECHECK(int *, ret) - -/** - * @def elm_obj_slideshow_cache_after_set - * @since 1.8 - * - * Set the number of items to cache, on a given slideshow widget, - * <b>after the current item</b> - * - * @param[in] count - * - * @see elm_slideshow_cache_after_set - */ -#define elm_obj_slideshow_cache_after_set(count) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_SET), EO_TYPECHECK(int, count) - -/** - * @def elm_obj_slideshow_item_nth_get - * @since 1.8 - * - * Get the the item, in a given slideshow widget, placed at - * position @p nth, in its internal items list - * - * @param[in] nth - * @param[out] ret - * - * @see elm_slideshow_item_nth_get - */ -#define elm_obj_slideshow_item_nth_get(nth, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_NTH_GET), EO_TYPECHECK(unsigned int, nth), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_slideshow_count_get - * @since 1.8 - * - * Get the number of items stored in a given slideshow widget - * - * @param[out] ret - * - * @see elm_slideshow_count_get - */ -#define elm_obj_slideshow_count_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_COUNT_GET), EO_TYPECHECK(unsigned int *, ret) - -typedef struct _Elm_Slideshow_Item_Class Elm_Slideshow_Item_Class; /**< Slideshow item class definition struct */ -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. */ - -/** - * @struct _Elm_Slideshow_Item_Class - * - * 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; -}; /**< member definitions of #Elm_Slideshow_Item_Class */ - -/** - * Add a new slideshow widget to the given parent Elementary - * (container) object - * - * @param parent The parent object - * @return A new slideshow widget handle or @c NULL, on errors - * - * This function inserts a new slideshow widget on the canvas. - * - * @ingroup Slideshow - */ -EAPI Evas_Object *elm_slideshow_add(Evas_Object *parent); - -/** - * Add (append) a new item in a given slideshow widget. - * - * @param obj The slideshow object - * @param itc The item class for the item - * @param data The item's data - * @return A handle to the item added or @c NULL, on errors - * - * Add a new item to @p obj's internal list of items, appending it. - * The item's class must contain the function really fetching the - * image object to show for this item, which could be an Evas image - * object or an Elementary photo, for example. The @p data - * parameter is going to be passed to both class functions of the - * item. - * - * @see #Elm_Slideshow_Item_Class - * @see elm_slideshow_item_sorted_insert() - * @see elm_object_item_data_set() - * - * @ingroup Slideshow - */ -EAPI Elm_Object_Item *elm_slideshow_item_add(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data); - -/** - * Insert a new item into the given slideshow widget, using the @p func - * function to sort items (by item handles). - * - * @param obj The slideshow object - * @param itc The item class for the item - * @param data The item's data - * @param func The comparing function to be used to sort slideshow - * items <b>by #Elm_Slideshow_Item_Class item handles</b> - * @return Returns The slideshow item handle, on success, or - * @c NULL, on errors - * - * Add a new item to @p obj's internal list of items, in a position - * determined by the @p func comparing function. The item's class - * must contain the function really fetching the image object to - * show for this item, which could be an Evas image object or an - * Elementary photo, for example. The @p data parameter is going to - * be passed to both class functions of the item. - * - * @see #Elm_Slideshow_Item_Class - * @see elm_slideshow_item_add() - * - * @ingroup Slideshow - */ -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); - -/** - * Display a given slideshow widget's item, programmatically. - * - * @param it The item to display on @p obj's viewport - * - * The change between the current item and @p item will use the - * transition @p obj is set to use (@see - * elm_slideshow_transition_set()). - * - * @ingroup Slideshow - */ -EAPI void elm_slideshow_item_show(Elm_Object_Item *it); - -/** - * Slide to the @b next item, in a given slideshow widget - * - * @param obj The slideshow object - * - * The sliding animation @p obj is set to use will be the - * transition effect used, after this call is issued. - * - * @note If the end of the slideshow's internal list of items is - * reached, it'll wrap around to the list's beginning, again. - * - * @ingroup Slideshow - */ -EAPI void elm_slideshow_next(Evas_Object *obj); - -/** - * Slide to the @b previous item, in a given slideshow widget - * - * @param obj The slideshow object - * - * The sliding animation @p obj is set to use will be the - * transition effect used, after this call is issued. - * - * @note If the beginning of the slideshow's internal list of items - * is reached, it'll wrap around to the list's end, again. - * - * @ingroup Slideshow - */ -EAPI void elm_slideshow_previous(Evas_Object *obj); - -/** - * Returns the list of sliding transition/effect names available, for a - * given slideshow widget. - * - * @param obj The slideshow object - * @return The list of transitions (list of @b stringshared strings - * as data) - * - * The transitions, which come from @p obj's theme, must be an EDC - * data item named @c "transitions" on the theme file, with (prefix) - * names of EDC programs actually implementing them. - * - * 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 will fade 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. - * - * @warning The stringshared strings get no new references - * exclusive to the user grabbing the list, here, so if you'd like - * to use them out of this call's context, you'd better @c - * eina_stringshare_ref() them. Also the list is an internal list and - * so 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 around. - * - * @see elm_slideshow_transition_set() - * - * @ingroup Slideshow - */ -EAPI const Eina_List *elm_slideshow_transitions_get(const Evas_Object *obj); - -/** - * Set the current slide transition/effect in use for a given - * slideshow widget - * - * @param obj The slideshow object - * @param transition The new transition's name string - * - * If @p transition is implemented in @p obj's theme (i.e., is - * contained in the list returned by - * elm_slideshow_transitions_get()), this new sliding effect will - * be used on the widget. - * - * @see elm_slideshow_transitions_get() for more details - * - * @ingroup Slideshow - */ -EAPI void elm_slideshow_transition_set(Evas_Object *obj, const char *transition); - -/** - * Get the current slide transition/effect in use for a given - * slideshow widget - * - * @param obj The slideshow object - * @return The current transition's name - * - * @see elm_slideshow_transition_set() for more details - * - * @ingroup Slideshow - */ -EAPI const char *elm_slideshow_transition_get(const Evas_Object *obj); - -/** - * Set the interval between each image transition on a given - * slideshow widget, <b>and start the slideshow, itself</b> - * - * @param obj The slideshow object - * @param timeout The new displaying timeout for images - * - * After this call, the slideshow widget will start cycling its - * view, sequentially and automatically, with the images of the - * items it has. The time between each new image displayed is going - * to be @p timeout, in @b seconds. If a different timeout was set - * previously and an slideshow was in progress, it will continue - * with the new time between transitions, after this call. - * - * @note A value less than or equal to 0 on @p timeout will disable - * the widget's internal timer, thus halting any slideshow which - * could be happening on @p obj. - * - * @see elm_slideshow_timeout_get() - * - * @ingroup Slideshow - */ -EAPI void elm_slideshow_timeout_set(Evas_Object *obj, double timeout); - -/** - * Get the interval set for image transitions on a given slideshow - * widget. - * - * @param obj The slideshow object - * @return Returns the timeout set on it or -1.0, on errors - * - * @see elm_slideshow_timeout_set() for more details - * - * @ingroup Slideshow - */ -EAPI double elm_slideshow_timeout_get(const Evas_Object *obj); - -/** - * Set if, after a slideshow is started, for a given slideshow - * widget, its items should be displayed cyclically or not. - * - * @param obj The slideshow object - * @param loop Use @c EINA_TRUE to make it cycle through items or - * @c EINA_FALSE for it to stop at the end of @p obj's internal - * list of items - * - * @note elm_slideshow_next() and elm_slideshow_previous() will @b - * ignore what is set by this functions, i.e., they'll @b always - * cycle through items. This affects only the "automatic" - * slideshow, as set by elm_slideshow_timeout_set(). - * - * @see elm_slideshow_loop_get() - * - * @ingroup Slideshow - */ -EAPI void elm_slideshow_loop_set(Evas_Object *obj, Eina_Bool loop); - -/** - * Get if, after a slideshow is started, for a given slideshow - * widget, its items are to be displayed cyclically or not. - * - * @param obj The slideshow object - * @return @c EINA_TRUE, if the items in @p obj will be cycled - * through or @c EINA_FALSE, otherwise - * - * @see elm_slideshow_loop_set() for more details - * - * @ingroup Slideshow - */ -EAPI Eina_Bool elm_slideshow_loop_get(const Evas_Object *obj); - -/** - * Remove all items from a given slideshow widget - * - * @param obj The slideshow object - * - * This removes (and deletes) all items in @p obj, leaving it - * empty. - * - * @see elm_object_item_del(), to remove just one item. - * - * @ingroup Slideshow - */ -EAPI void elm_slideshow_clear(Evas_Object *obj); - -/** - * Get the internal list of items in a given slideshow widget. - * - * @param obj The slideshow object - * @return The list of items (#Elm_Object_Item as data) or - * @c NULL on errors. - * - * 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(), elm_object_item_data_get(). - * - * @warning This list is only valid until @p obj object's internal - * items list is changed. It should be fetched again with another - * call to this function when changes happen. - * - * @ingroup Slideshow - */ -EAPI const Eina_List *elm_slideshow_items_get(const Evas_Object *obj); - -/** - * Returns the currently displayed item, in a given slideshow widget - * - * @param obj The slideshow object - * @return A handle to the item being displayed in @p obj or - * @c NULL, if none is (and on errors) - * - * @ingroup Slideshow - */ -EAPI Elm_Object_Item *elm_slideshow_item_current_get(const Evas_Object *obj); - -/** - * Get the real Evas object created to implement the view of a - * given slideshow item - * - * @param it The slideshow item. - * @return the Evas object implementing this item's view. - * - * 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. - * - * @see elm_object_item_data_get() - * - * @ingroup Slideshow - */ -EAPI Evas_Object *elm_slideshow_item_object_get(const Elm_Object_Item *it); - -/** - * Get the the item, in a given slideshow widget, placed at - * position @p nth, in its internal items list - * - * @param obj The slideshow object - * @param nth The number of the item to grab a handle to (0 being - * the first) - * @return The item stored in @p obj at position @p nth or @c NULL, - * if there's no item with that index (and on errors) - * - * @ingroup Slideshow - */ -EAPI Elm_Object_Item *elm_slideshow_item_nth_get(const Evas_Object *obj, unsigned int nth); - -/** - * Set the current slide layout in use for a given slideshow widget - * - * @param obj The slideshow object - * @param layout The new layout's name string - * - * If @p layout is implemented in @p obj's theme (i.e., is contained - * in the list returned by elm_slideshow_layouts_get()), this new - * images layout will be used on the widget. - * - * @see elm_slideshow_layouts_get() for more details - * - * @ingroup Slideshow - */ -EAPI void elm_slideshow_layout_set(Evas_Object *obj, const char *layout); - -/** - * Get the current slide layout in use for a given slideshow widget - * - * @param obj The slideshow object - * @return The current layout's name - * - * @see elm_slideshow_layout_set() for more details - * - * @ingroup Slideshow - */ -EAPI const char *elm_slideshow_layout_get(const Evas_Object *obj); - -/** - * Returns the list of @b layout names available, for a given - * slideshow widget. - * - * @param obj The slideshow object - * @return The list of layouts (list of @b stringshared strings - * as data) - * - * Slideshow layouts will change how the widget is to dispose each - * image item in its viewport, with regard to cropping, scaling, - * etc. - * - * The layouts, which come from @p obj's theme, must be an EDC - * data item name @c "layouts" on the theme file, with (prefix) - * names of EDC programs actually implementing them. - * - * 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 leaving 10% of the slideshow's dimensions of - * distance between the item image's borders and the slideshow - * borders, for each axis. - * - * @warning The stringshared strings get no new references - * exclusive to the user grabbing the list, here, so if you'd like - * to use them out of this call's context, you'd better @c - * eina_stringshare_ref() them. - * - * @see elm_slideshow_layout_set() - * - * @ingroup Slideshow - */ -EAPI const Eina_List *elm_slideshow_layouts_get(const Evas_Object *obj); - -/** - * Set the number of items to cache, on a given slideshow widget, - * <b>before the current item</b> - * - * @param obj The slideshow object - * @param count Number of items to cache before the current one - * - * The default value for this property is @c 2. See - * @ref Slideshow_Caching "slideshow caching" for more details. - * - * @see elm_slideshow_cache_before_get() - * - * @ingroup Slideshow - */ -EAPI void elm_slideshow_cache_before_set(Evas_Object *obj, int count); - -/** - * Retrieve the number of items to cache, on a given slideshow widget, - * <b>before the current item</b> - * - * @param obj The slideshow object - * @return The number of items set to be cached before the current one - * - * @see elm_slideshow_cache_before_set() for more details - * - * @ingroup Slideshow - */ -EAPI int elm_slideshow_cache_before_get(const Evas_Object *obj); - -/** - * Set the number of items to cache, on a given slideshow widget, - * <b>after the current item</b> - * - * @param obj The slideshow object - * @param count Number of items to cache after the current one - * - * The default value for this property is @c 2. See - * @ref Slideshow_Caching "slideshow caching" for more details. - * - * @see elm_slideshow_cache_after_get() - * - * @ingroup Slideshow - */ -EAPI void elm_slideshow_cache_after_set(Evas_Object *obj, int count); - -/** - * Retrieve the number of items to cache, on a given slideshow widget, - * <b>after the current item</b> - * - * @param obj The slideshow object - * @return The number of items set to be cached after the current one - * - * @see elm_slideshow_cache_after_set() for more details - * - * @ingroup Slideshow - */ -EAPI int elm_slideshow_cache_after_get(const Evas_Object *obj); - -/** - * Get the number of items stored in a given slideshow widget - * - * @param obj The slideshow object - * @return The number of items on @p obj, at the moment of this call - * - * @ingroup Slideshow - */ -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_slideshow_common.h b/src/lib/elm_slideshow_common.h new file mode 100644 index 000000000..23a27214c --- /dev/null +++ b/src/lib/elm_slideshow_common.h @@ -0,0 +1,54 @@ +typedef struct _Elm_Slideshow_Item_Class Elm_Slideshow_Item_Class; /**< Slideshow item class definition struct */ +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. */ + +/** + * @struct _Elm_Slideshow_Item_Class + * + * 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; +}; /**< member definitions of #Elm_Slideshow_Item_Class */ + +/** + * Display a given slideshow widget's item, programmatically. + * + * @param it The item to display on @p obj's viewport + * + * The change between the current item and @p item will use the + * transition @p obj is set to use (@see + * elm_slideshow_transition_set()). + * + * @ingroup Slideshow + */ +EAPI void elm_slideshow_item_show(Elm_Object_Item *it); + +/** + * Get the real Evas object created to implement the view of a + * given slideshow item + * + * @param it The slideshow item. + * @return the Evas object implementing this item's view. + * + * 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. + * + * @see elm_object_item_data_get() + * + * @ingroup Slideshow + */ +EAPI Evas_Object *elm_slideshow_item_object_get(const Elm_Object_Item *it); diff --git a/src/lib/elm_slideshow_eo.h b/src/lib/elm_slideshow_eo.h new file mode 100644 index 000000000..defce7367 --- /dev/null +++ b/src/lib/elm_slideshow_eo.h @@ -0,0 +1,373 @@ +#define ELM_OBJ_SLIDESHOW_CLASS elm_obj_slideshow_class_get() + +const Eo_Class *elm_obj_slideshow_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_SLIDESHOW_BASE_ID; + +enum +{ + ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_ADD, + ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_SORTED_INSERT, + ELM_OBJ_SLIDESHOW_SUB_ID_NEXT, + ELM_OBJ_SLIDESHOW_SUB_ID_PREVIOUS, + ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITIONS_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUTS_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_SET, + ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_SET, + ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_SET, + ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_SET, + ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_CLEAR, + ELM_OBJ_SLIDESHOW_SUB_ID_ITEMS_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_CURRENT_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_SET, + ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_SET, + ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_NTH_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_COUNT_GET, + ELM_OBJ_SLIDESHOW_SUB_ID_LAST +}; + +#define ELM_OBJ_SLIDESHOW_ID(sub_id) (ELM_OBJ_SLIDESHOW_BASE_ID + sub_id) + + +/** + * @def elm_obj_slideshow_item_add + * @since 1.8 + * + * Add (append) a new item in a given slideshow widget. + * + * @param[in] itc + * @param[in] data + * @param[out] ret + * + * @see elm_slideshow_item_add + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_item_add(itc, data, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_ADD), EO_TYPECHECK(const Elm_Slideshow_Item_Class *, itc), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_slideshow_item_sorted_insert + * @since 1.8 + * + * Insert a new item into the given slideshow widget, using the func + * function to sort items (by item handles). + * + * @param[in] itc + * @param[in] data + * @param[in] func + * @param[out] ret + * + * @see elm_slideshow_item_sorted_insert + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_item_sorted_insert(itc, data, func, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_SORTED_INSERT), EO_TYPECHECK(const Elm_Slideshow_Item_Class *, itc), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Eina_Compare_Cb, func), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_slideshow_next + * @since 1.8 + * + * Slide to the next item, in a given slideshow widget + * + * + * @see elm_slideshow_next + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_next() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_NEXT) + +/** + * @def elm_obj_slideshow_previous + * @since 1.8 + * + * Slide to the previous item, in a given slideshow widget + * + * + * @see elm_slideshow_previous + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_previous() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_PREVIOUS) + +/** + * @def elm_obj_slideshow_transitions_get + * @since 1.8 + * + * Returns the list of sliding transition/effect names available, for a + * given slideshow widget. + * + * @param[out] ret + * + * @see elm_slideshow_transitions_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_transitions_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITIONS_GET), EO_TYPECHECK(const Eina_List **, ret) + +/** + * @def elm_obj_slideshow_layouts_get + * @since 1.8 + * + * Returns the list of layout names available, for a given + * slideshow widget. + * + * @param[out] ret + * + * @see elm_slideshow_layouts_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_layouts_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUTS_GET), EO_TYPECHECK(const Eina_List **, ret) + +/** + * @def elm_obj_slideshow_transition_set + * @since 1.8 + * + * Set the current slide transition/effect in use for a given + * slideshow widget. + * + * @param[in] transition + * + * @see elm_slideshow_transition_set + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_transition_set(transition) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_SET), EO_TYPECHECK(const char *, transition) + +/** + * @def elm_obj_slideshow_transition_get + * @since 1.8 + * + * Get the current slide transition/effect in use for a given + * slideshow widget. + * + * @param[out] ret + * + * @see elm_slideshow_transition_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_transition_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_slideshow_timeout_set + * @since 1.8 + * + * Set the interval between each image transition on a given + * slideshow widget. + * + * @param[in] timeout + * + * @see elm_slideshow_timeout_set + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_timeout_set(timeout) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_SET), EO_TYPECHECK(double, timeout) + +/** + * @def elm_obj_slideshow_timeout_get + * @since 1.8 + * + * Get the interval set for image transitions on a given slideshow + * widget. + * + * @param[out] ret + * + * @see elm_slideshow_timeout_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_timeout_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_slideshow_loop_set + * @since 1.8 + * + * Set if, after a slideshow is started, for a given slideshow + * widget. + * + * @param[in] loop + * + * @see elm_slideshow_loop_set + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_loop_set(loop) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_SET), EO_TYPECHECK(Eina_Bool, loop) + +/** + * @def elm_obj_slideshow_layout_get + * @since 1.8 + * + * Get the current slide layout in use for a given slideshow widget + * + * @param[out] ret + * + * @see elm_slideshow_layout_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_layout_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_slideshow_layout_set + * @since 1.8 + * + * Set the current slide layout in use for a given slideshow widget + * + * @param[in] layout + * + * @see elm_slideshow_layout_set + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_layout_set(layout) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_SET), EO_TYPECHECK(const char *, layout) + +/** + * @def elm_obj_slideshow_loop_get + * @since 1.8 + * + * Get if, after a slideshow is started, for a given slideshow + * widget. + * + * @param[out] ret + * + * @see elm_slideshow_loop_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_loop_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_slideshow_clear + * @since 1.8 + * + * Remove all items from a given slideshow widget + * + * + * @see elm_slideshow_clear + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_clear() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CLEAR) + +/** + * @def elm_obj_slideshow_items_get + * @since 1.8 + * + * Get the internal list of items in a given slideshow widget. + * + * @param[out] ret + * + * @see elm_slideshow_items_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_items_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEMS_GET), EO_TYPECHECK(const Eina_List **, ret) + +/** + * @def elm_obj_slideshow_item_current_get + * @since 1.8 + * + * Returns the currently displayed item, in a given slideshow widget + * + * @param[out] ret + * + * @see elm_slideshow_item_current_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_item_current_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_CURRENT_GET), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_slideshow_cache_before_get + * @since 1.8 + * + * Retrieve the number of items to cache, on a given slideshow widget, + * + * @param[out] ret + * + * @see elm_slideshow_cache_before_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_cache_before_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_GET), EO_TYPECHECK(int *, ret) + +/** + * @def elm_obj_slideshow_cache_before_set + * @since 1.8 + * + * Set the number of items to cache, on a given slideshow widget, + * + * @param[in] count + * + * @see elm_slideshow_cache_before_set + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_cache_before_set(count) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_SET), EO_TYPECHECK(int, count) + +/** + * @def elm_obj_slideshow_cache_after_get + * @since 1.8 + * + * Retrieve the number of items to cache, on a given slideshow widget, + * <b>after the current item</b> + * + * @param[out] ret + * + * @see elm_slideshow_cache_after_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_cache_after_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_GET), EO_TYPECHECK(int *, ret) + +/** + * @def elm_obj_slideshow_cache_after_set + * @since 1.8 + * + * Set the number of items to cache, on a given slideshow widget, + * <b>after the current item</b> + * + * @param[in] count + * + * @see elm_slideshow_cache_after_set + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_cache_after_set(count) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_SET), EO_TYPECHECK(int, count) + +/** + * @def elm_obj_slideshow_item_nth_get + * @since 1.8 + * + * Get the the item, in a given slideshow widget, placed at + * position @p nth, in its internal items list + * + * @param[in] nth + * @param[out] ret + * + * @see elm_slideshow_item_nth_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_item_nth_get(nth, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_NTH_GET), EO_TYPECHECK(unsigned int, nth), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_slideshow_count_get + * @since 1.8 + * + * Get the number of items stored in a given slideshow widget + * + * @param[out] ret + * + * @see elm_slideshow_count_get + * + * @ingroup Slideshow + */ +#define elm_obj_slideshow_count_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_COUNT_GET), EO_TYPECHECK(unsigned int *, ret) diff --git a/src/lib/elm_slideshow_legacy.h b/src/lib/elm_slideshow_legacy.h new file mode 100644 index 000000000..4de53c20c --- /dev/null +++ b/src/lib/elm_slideshow_legacy.h @@ -0,0 +1,425 @@ +/** + * Add a new slideshow widget to the given parent Elementary + * (container) object + * + * @param parent The parent object + * @return A new slideshow widget handle or @c NULL, on errors + * + * This function inserts a new slideshow widget on the canvas. + * + * @ingroup Slideshow + */ +EAPI Evas_Object *elm_slideshow_add(Evas_Object *parent); + +/** + * Add (append) a new item in a given slideshow widget. + * + * @param obj The slideshow object + * @param itc The item class for the item + * @param data The item's data + * @return A handle to the item added or @c NULL, on errors + * + * Add a new item to @p obj's internal list of items, appending it. + * The item's class must contain the function really fetching the + * image object to show for this item, which could be an Evas image + * object or an Elementary photo, for example. The @p data + * parameter is going to be passed to both class functions of the + * item. + * + * @see #Elm_Slideshow_Item_Class + * @see elm_slideshow_item_sorted_insert() + * @see elm_object_item_data_set() + * + * @ingroup Slideshow + */ +EAPI Elm_Object_Item *elm_slideshow_item_add(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data); + +/** + * Insert a new item into the given slideshow widget, using the @p func + * function to sort items (by item handles). + * + * @param obj The slideshow object + * @param itc The item class for the item + * @param data The item's data + * @param func The comparing function to be used to sort slideshow + * items <b>by #Elm_Slideshow_Item_Class item handles</b> + * @return Returns The slideshow item handle, on success, or + * @c NULL, on errors + * + * Add a new item to @p obj's internal list of items, in a position + * determined by the @p func comparing function. The item's class + * must contain the function really fetching the image object to + * show for this item, which could be an Evas image object or an + * Elementary photo, for example. The @p data parameter is going to + * be passed to both class functions of the item. + * + * @see #Elm_Slideshow_Item_Class + * @see elm_slideshow_item_add() + * + * @ingroup Slideshow + */ +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); + +/** + * Slide to the @b next item, in a given slideshow widget + * + * @param obj The slideshow object + * + * The sliding animation @p obj is set to use will be the + * transition effect used, after this call is issued. + * + * @note If the end of the slideshow's internal list of items is + * reached, it'll wrap around to the list's beginning, again. + * + * @ingroup Slideshow + */ +EAPI void elm_slideshow_next(Evas_Object *obj); + +/** + * Slide to the @b previous item, in a given slideshow widget + * + * @param obj The slideshow object + * + * The sliding animation @p obj is set to use will be the + * transition effect used, after this call is issued. + * + * @note If the beginning of the slideshow's internal list of items + * is reached, it'll wrap around to the list's end, again. + * + * @ingroup Slideshow + */ +EAPI void elm_slideshow_previous(Evas_Object *obj); + +/** + * Returns the list of sliding transition/effect names available, for a + * given slideshow widget. + * + * @param obj The slideshow object + * @return The list of transitions (list of @b stringshared strings + * as data) + * + * The transitions, which come from @p obj's theme, must be an EDC + * data item named @c "transitions" on the theme file, with (prefix) + * names of EDC programs actually implementing them. + * + * 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 will fade 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. + * + * @warning The stringshared strings get no new references + * exclusive to the user grabbing the list, here, so if you'd like + * to use them out of this call's context, you'd better @c + * eina_stringshare_ref() them. Also the list is an internal list and + * so 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 around. + * + * @see elm_slideshow_transition_set() + * + * @ingroup Slideshow + */ +EAPI const Eina_List *elm_slideshow_transitions_get(const Evas_Object *obj); + +/** + * Returns the list of @b layout names available, for a given + * slideshow widget. + * + * @param obj The slideshow object + * @return The list of layouts (list of @b stringshared strings + * as data) + * + * Slideshow layouts will change how the widget is to dispose each + * image item in its viewport, with regard to cropping, scaling, + * etc. + * + * The layouts, which come from @p obj's theme, must be an EDC + * data item name @c "layouts" on the theme file, with (prefix) + * names of EDC programs actually implementing them. + * + * 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 leaving 10% of the slideshow's dimensions of + * distance between the item image's borders and the slideshow + * borders, for each axis. + * + * @warning The stringshared strings get no new references + * exclusive to the user grabbing the list, here, so if you'd like + * to use them out of this call's context, you'd better @c + * eina_stringshare_ref() them. + * + * @see elm_slideshow_layout_set() + * + * @ingroup Slideshow + */ +EAPI const Eina_List *elm_slideshow_layouts_get(const Evas_Object *obj); + +/** + * Set the current slide transition/effect in use for a given + * slideshow widget + * + * @param obj The slideshow object + * @param transition The new transition's name string + * + * If @p transition is implemented in @p obj's theme (i.e., is + * contained in the list returned by + * elm_slideshow_transitions_get()), this new sliding effect will + * be used on the widget. + * + * @see elm_slideshow_transitions_get() for more details + * + * @ingroup Slideshow + */ +EAPI void elm_slideshow_transition_set(Evas_Object *obj, const char *transition); + +/** + * Get the current slide transition/effect in use for a given + * slideshow widget + * + * @param obj The slideshow object + * @return The current transition's name + * + * @see elm_slideshow_transition_set() for more details + * + * @ingroup Slideshow + */ +EAPI const char *elm_slideshow_transition_get(const Evas_Object *obj); + +/** + * Set the interval between each image transition on a given + * slideshow widget, <b>and start the slideshow, itself</b> + * + * @param obj The slideshow object + * @param timeout The new displaying timeout for images + * + * After this call, the slideshow widget will start cycling its + * view, sequentially and automatically, with the images of the + * items it has. The time between each new image displayed is going + * to be @p timeout, in @b seconds. If a different timeout was set + * previously and an slideshow was in progress, it will continue + * with the new time between transitions, after this call. + * + * @note A value less than or equal to 0 on @p timeout will disable + * the widget's internal timer, thus halting any slideshow which + * could be happening on @p obj. + * + * @see elm_slideshow_timeout_get() + * + * @ingroup Slideshow + */ +EAPI void elm_slideshow_timeout_set(Evas_Object *obj, double timeout); + +/** + * Get the interval set for image transitions on a given slideshow + * widget. + * + * @param obj The slideshow object + * @return Returns the timeout set on it or -1.0, on errors + * + * @see elm_slideshow_timeout_set() for more details + * + * @ingroup Slideshow + */ +EAPI double elm_slideshow_timeout_get(const Evas_Object *obj); + +/** + * Set if, after a slideshow is started, for a given slideshow + * widget, its items should be displayed cyclically or not. + * + * @param obj The slideshow object + * @param loop Use @c EINA_TRUE to make it cycle through items or + * @c EINA_FALSE for it to stop at the end of @p obj's internal + * list of items + * + * @note elm_slideshow_next() and elm_slideshow_previous() will @b + * ignore what is set by this functions, i.e., they'll @b always + * cycle through items. This affects only the "automatic" + * slideshow, as set by elm_slideshow_timeout_set(). + * + * @see elm_slideshow_loop_get() + * + * @ingroup Slideshow + */ +EAPI void elm_slideshow_loop_set(Evas_Object *obj, Eina_Bool loop); + +/** + * Get the current slide layout in use for a given slideshow widget + * + * @param obj The slideshow object + * @return The current layout's name + * + * @see elm_slideshow_layout_set() for more details + * + * @ingroup Slideshow + */ +EAPI const char *elm_slideshow_layout_get(const Evas_Object *obj); + +/** + * Set the current slide layout in use for a given slideshow widget + * + * @param obj The slideshow object + * @param layout The new layout's name string + * + * If @p layout is implemented in @p obj's theme (i.e., is contained + * in the list returned by elm_slideshow_layouts_get()), this new + * images layout will be used on the widget. + * + * @see elm_slideshow_layouts_get() for more details + * + * @ingroup Slideshow + */ +EAPI void elm_slideshow_layout_set(Evas_Object *obj, const char *layout); + +/** + * Get if, after a slideshow is started, for a given slideshow + * widget, its items are to be displayed cyclically or not. + * + * @param obj The slideshow object + * @return @c EINA_TRUE, if the items in @p obj will be cycled + * through or @c EINA_FALSE, otherwise + * + * @see elm_slideshow_loop_set() for more details + * + * @ingroup Slideshow + */ +EAPI Eina_Bool elm_slideshow_loop_get(const Evas_Object *obj); + +/** + * Remove all items from a given slideshow widget + * + * @param obj The slideshow object + * + * This removes (and deletes) all items in @p obj, leaving it + * empty. + * + * @see elm_object_item_del(), to remove just one item. + * + * @ingroup Slideshow + */ +EAPI void elm_slideshow_clear(Evas_Object *obj); + +/** + * Get the internal list of items in a given slideshow widget. + * + * @param obj The slideshow object + * @return The list of items (#Elm_Object_Item as data) or + * @c NULL on errors. + * + * 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(), elm_object_item_data_get(). + * + * @warning This list is only valid until @p obj object's internal + * items list is changed. It should be fetched again with another + * call to this function when changes happen. + * + * @ingroup Slideshow + */ +EAPI const Eina_List *elm_slideshow_items_get(const Evas_Object *obj); + +/** + * Returns the currently displayed item, in a given slideshow widget + * + * @param obj The slideshow object + * @return A handle to the item being displayed in @p obj or + * @c NULL, if none is (and on errors) + * + * @ingroup Slideshow + */ +EAPI Elm_Object_Item *elm_slideshow_item_current_get(const Evas_Object *obj); + + +/** + * Retrieve the number of items to cache, on a given slideshow widget, + * <b>before the current item</b> + * + * @param obj The slideshow object + * @return The number of items set to be cached before the current one + * + * @see elm_slideshow_cache_before_set() for more details + * + * @ingroup Slideshow + */ +EAPI int elm_slideshow_cache_before_get(const Evas_Object *obj); + +/** + * Set the number of items to cache, on a given slideshow widget, + * <b>before the current item</b> + * + * @param obj The slideshow object + * @param count Number of items to cache before the current one + * + * The default value for this property is @c 2. See + * @ref Slideshow_Caching "slideshow caching" for more details. + * + * @see elm_slideshow_cache_before_get() + * + * @ingroup Slideshow + */ +EAPI void elm_slideshow_cache_before_set(Evas_Object *obj, int count); + +/** + * Retrieve the number of items to cache, on a given slideshow widget, + * <b>after the current item</b> + * + * @param obj The slideshow object + * @return The number of items set to be cached after the current one + * + * @see elm_slideshow_cache_after_set() for more details + * + * @ingroup Slideshow + */ +EAPI int elm_slideshow_cache_after_get(const Evas_Object *obj); + +/** + * Set the number of items to cache, on a given slideshow widget, + * <b>after the current item</b> + * + * @param obj The slideshow object + * @param count Number of items to cache after the current one + * + * The default value for this property is @c 2. See + * @ref Slideshow_Caching "slideshow caching" for more details. + * + * @see elm_slideshow_cache_after_get() + * + * @ingroup Slideshow + */ +EAPI void elm_slideshow_cache_after_set(Evas_Object *obj, int count); + +/** + * Get the the item, in a given slideshow widget, placed at + * position @p nth, in its internal items list + * + * @param obj The slideshow object + * @param nth The number of the item to grab a handle to (0 being + * the first) + * @return The item stored in @p obj at position @p nth or @c NULL, + * if there's no item with that index (and on errors) + * + * @ingroup Slideshow + */ +EAPI Elm_Object_Item *elm_slideshow_item_nth_get(const Evas_Object *obj, unsigned int nth); + +/** + * Get the number of items stored in a given slideshow widget + * + * @param obj The slideshow object + * @return The number of items on @p obj, at the moment of this call + * + * @ingroup Slideshow + */ +EAPI unsigned int elm_slideshow_count_get(const Evas_Object *obj); diff --git a/src/lib/elm_spinner.h b/src/lib/elm_spinner.h index 31849af11..3f7a0a8ce 100644 --- a/src/lib/elm_spinner.h +++ b/src/lib/elm_spinner.h @@ -48,686 +48,17 @@ * @ref spinner_example */ -#define ELM_OBJ_SPINNER_CLASS elm_obj_spinner_class_get() - -const Eo_Class *elm_obj_spinner_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_SPINNER_BASE_ID; - -enum -{ - ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_SET, - ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_GET, - ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_SET, - ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_GET, - ELM_OBJ_SPINNER_SUB_ID_STEP_SET, - ELM_OBJ_SPINNER_SUB_ID_STEP_GET, - ELM_OBJ_SPINNER_SUB_ID_VALUE_SET, - ELM_OBJ_SPINNER_SUB_ID_VALUE_GET, - ELM_OBJ_SPINNER_SUB_ID_WRAP_SET, - ELM_OBJ_SPINNER_SUB_ID_WRAP_GET, - ELM_OBJ_SPINNER_SUB_ID_SPECIAL_VALUE_ADD, - ELM_OBJ_SPINNER_SUB_ID_EDITABLE_SET, - ELM_OBJ_SPINNER_SUB_ID_EDITABLE_GET, - ELM_OBJ_SPINNER_SUB_ID_INTERVAL_SET, - ELM_OBJ_SPINNER_SUB_ID_INTERVAL_GET, - ELM_OBJ_SPINNER_SUB_ID_BASE_SET, - ELM_OBJ_SPINNER_SUB_ID_BASE_GET, - ELM_OBJ_SPINNER_SUB_ID_ROUND_SET, - ELM_OBJ_SPINNER_SUB_ID_ROUND_GET, - ELM_OBJ_SPINNER_SUB_ID_LAST -}; - -#define ELM_OBJ_SPINNER_ID(sub_id) (ELM_OBJ_SPINNER_BASE_ID + sub_id) - - -/** - * @def elm_obj_spinner_label_format_set - * @since 1.8 - * - * Set the format string of the displayed label. - * - * @param[in] fmt - * - * @see elm_spinner_label_format_set - */ -#define elm_obj_spinner_label_format_set(fmt) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_SET), EO_TYPECHECK(const char *, fmt) - -/** - * @def elm_obj_spinner_label_format_get - * @since 1.8 - * - * Get the label format of the spinner. - * - * @param[out] ret - * - * @see elm_spinner_label_format_get - */ -#define elm_obj_spinner_label_format_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_spinner_min_max_set - * @since 1.8 - * - * Set the minimum and maximum values for the spinner. - * - * @param[in] min - * @param[in] max - * - * @see elm_spinner_min_max_set - */ -#define elm_obj_spinner_min_max_set(min, max) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_SET), EO_TYPECHECK(double, min), EO_TYPECHECK(double, max) - -/** - * @def elm_obj_spinner_min_max_get - * @since 1.8 - * - * Get the minimum and maximum values of the spinner. - * - * @param[out] min - * @param[out] max - * - * @see elm_spinner_min_max_get - */ -#define elm_obj_spinner_min_max_get(min, max) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max) - -/** - * @def elm_obj_spinner_step_set - * @since 1.8 - * - * Set the step used to increment or decrement the spinner value. - * - * @param[in] step - * - * @see elm_spinner_step_set - */ -#define elm_obj_spinner_step_set(step) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_STEP_SET), EO_TYPECHECK(double, step) - -/** - * @def elm_obj_spinner_step_get - * @since 1.8 - * - * Get the step used to increment or decrement the spinner value. - * - * @param[out] ret - * - * @see elm_spinner_step_get - */ -#define elm_obj_spinner_step_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_STEP_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_spinner_value_set - * @since 1.8 - * - * Set the value the spinner displays. - * - * @param[in] val - * - * @see elm_spinner_value_set - */ -#define elm_obj_spinner_value_set(val) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val) - -/** - * @def elm_obj_spinner_value_get - * @since 1.8 - * - * Get the value displayed by the spinner. - * - * @param[out] ret - * - * @see elm_spinner_value_get - */ -#define elm_obj_spinner_value_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_spinner_wrap_set - * @since 1.8 - * - * Set whether the spinner should wrap when it reaches its - * - * @param[in] wrap - * - * @see elm_spinner_wrap_set - */ -#define elm_obj_spinner_wrap_set(wrap) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_WRAP_SET), EO_TYPECHECK(Eina_Bool, wrap) - -/** - * @def elm_obj_spinner_wrap_get - * @since 1.8 - * - * Get whether the spinner should wrap when it reaches its - * - * @param[out] ret - * - * @see elm_spinner_wrap_get - */ -#define elm_obj_spinner_wrap_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_WRAP_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_spinner_special_value_add - * @since 1.8 - * - * Set a special string to display in the place of the numerical value. - * - * @param[in] value - * @param[in] label - * - * @see elm_spinner_special_value_add - */ -#define elm_obj_spinner_special_value_add(value, label) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_SPECIAL_VALUE_ADD), EO_TYPECHECK(double, value), EO_TYPECHECK(const char *, label) - -/** - * @def elm_obj_spinner_editable_set - * @since 1.8 - * - * Set whether the spinner can be directly edited by the user or not. - * - * @param[in] editable - * - * @see elm_spinner_editable_set - */ -#define elm_obj_spinner_editable_set(editable) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_EDITABLE_SET), EO_TYPECHECK(Eina_Bool, editable) - -/** - * @def elm_obj_spinner_editable_get - * @since 1.8 - * - * Get whether the spinner can be directly edited by the user or not. - * - * @param[out] ret - * - * @see elm_spinner_editable_get - */ -#define elm_obj_spinner_editable_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_EDITABLE_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_spinner_interval_set - * @since 1.8 - * - * Set the interval on time updates for an user mouse button hold - * - * @param[in] interval - * - * @see elm_spinner_interval_set - */ -#define elm_obj_spinner_interval_set(interval) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_INTERVAL_SET), EO_TYPECHECK(double, interval) - -/** - * @def elm_obj_spinner_interval_get - * @since 1.8 - * - * Get the interval on time updates for an user mouse button hold - * - * @param[out] ret - * - * @see elm_spinner_interval_get - */ -#define elm_obj_spinner_interval_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_INTERVAL_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_spinner_base_set - * @since 1.8 - * - * Set the base for rounding - * - * @param[in] base - * - * @see elm_spinner_base_set - */ -#define elm_obj_spinner_base_set(base) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_BASE_SET), EO_TYPECHECK(double, base) - -/** - * @def elm_obj_spinner_base_get - * @since 1.8 - * - * Get the base for rounding - * - * @param[out] ret - * - * @see elm_spinner_base_get - */ -#define elm_obj_spinner_base_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_BASE_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_spinner_round_set - * @since 1.8 - * - * Set the round value for rounding - * - * @param[in] rnd - * - * @see elm_spinner_round_set - */ -#define elm_obj_spinner_round_set(rnd) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_ROUND_SET), EO_TYPECHECK(int, rnd) - -/** - * @def elm_obj_spinner_round_get - * @since 1.8 - * - * Get the round value for rounding - * - * @param[out] ret - * - * @see elm_spinner_round_get - */ -#define elm_obj_spinner_round_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_ROUND_GET), EO_TYPECHECK(int *, ret) /** * @addtogroup Spinner * @{ */ -/** - * Add a new spinner widget to the given parent Elementary - * (container) object. - * - * @param parent The parent object. - * @return a new spinner widget handle or @c NULL, on errors. - * - * This function inserts a new spinner widget on the canvas. - * - * @ingroup Spinner - * - */ -EAPI Evas_Object *elm_spinner_add(Evas_Object *parent); - -/** - * Set the format string of the displayed label. - * - * @param obj The spinner object. - * @param fmt The format string for the label display. - * - * If @c NULL, this sets the format to "%.0f". If not it sets the format - * string for the label text. The label text is provided a floating point - * value, so the label text can display up to 1 floating point value. - * Note that this is optional. - * - * Use a format string such as "%1.2f meters" for example, and it will - * display values like: "3.14 meters" for a value equal to 3.14159. - * - * Default is "%0.f". - * - * @see elm_spinner_label_format_get() - * - * @ingroup Spinner - */ -EAPI void elm_spinner_label_format_set(Evas_Object *obj, const char *fmt); - -/** - * Get the label format of the spinner. - * - * @param obj The spinner object. - * @return The text label format string in UTF-8. - * - * @see elm_spinner_label_format_set() for details. - * - * @ingroup Spinner - */ -EAPI const char *elm_spinner_label_format_get(const Evas_Object *obj); - -/** - * Set the minimum and maximum values for the spinner. - * - * @param obj The spinner object. - * @param min The minimum value. - * @param max The maximum value. - * - * Define the allowed range of values to be selected by the user. - * - * If actual value is less than @p min, it will be updated to @p min. If it - * is bigger then @p max, will be updated to @p max. Actual value can be - * get with elm_spinner_value_get(). - * - * By default, min is equal to 0, and max is equal to 100. - * - * @warning Maximum must be greater than minimum. - * - * @see elm_spinner_min_max_get() - * - * @ingroup Spinner - */ -EAPI void elm_spinner_min_max_set(Evas_Object *obj, double min, double max); - -/** - * Get the minimum and maximum values of the spinner. - * - * @param obj The spinner object. - * @param min Pointer to store the minimum value. - * @param max Pointer to store the maximum value. - * - * @note If only one value is needed, the other pointer can be passed - * as @c NULL. - * - * @see elm_spinner_min_max_set() for details. - * - * @ingroup Spinner - */ -EAPI void elm_spinner_min_max_get(const Evas_Object *obj, double *min, double *max); - -/** - * Set the step used to increment or decrement the spinner value. - * - * @param obj The spinner object. - * @param step The step value. - * - * This value will be incremented or decremented to the displayed value. - * It will be incremented while the user keep right or top arrow pressed, - * and will be decremented while the user keep left or bottom arrow pressed. - * - * The interval to increment / decrement can be set with - * elm_spinner_interval_set(). - * - * By default step value is equal to 1. - * - * @see elm_spinner_step_get() - * - * @ingroup Spinner - */ -EAPI void elm_spinner_step_set(Evas_Object *obj, double step); - -/** - * Get the step used to increment or decrement the spinner value. - * - * @param obj The spinner object. - * @return The step value. - * - * @see elm_spinner_step_get() for more details. - * - * @ingroup Spinner - */ -EAPI double elm_spinner_step_get(const Evas_Object *obj); - -/** - * Set the value the spinner displays. - * - * @param obj The spinner object. - * @param val The value to be displayed. - * - * Value will be presented on the label following format specified with - * elm_spinner_format_set(). - * - * @warning The value must to be between min and max values. This values - * are set by elm_spinner_min_max_set(). - * - * @see elm_spinner_value_get(). - * @see elm_spinner_format_set(). - * @see elm_spinner_min_max_set(). - * - * @ingroup Spinner - */ -EAPI void elm_spinner_value_set(Evas_Object *obj, double val); - -/** - * Get the value displayed by the spinner. - * - * @param obj The spinner object. - * @return The value displayed. - * - * @see elm_spinner_value_set() for details. - * - * @ingroup Spinner - */ -EAPI double elm_spinner_value_get(const Evas_Object *obj); - -/** - * Set whether the spinner should wrap when it reaches its - * minimum or maximum value. - * - * @param obj The spinner object. - * @param wrap @c EINA_TRUE to enable wrap or @c EINA_FALSE to - * disable it. - * - * Disabled by default. If disabled, when the user tries to increment the - * value, - * but displayed value plus step value is bigger than maximum value, - * the new value will be the maximum value. - * The same happens when the user tries to decrement it, - * but the value less step is less than minimum value. In this case, - * the new displayed value will be the minimum value. - * - * When wrap is enabled, when the user tries to increment the value, - * but displayed value plus step value is bigger than maximum value, - * the new value will be the minimum value. When the the user tries to - * decrement it, but the value less step is less than minimum value, - * the new displayed value will be the maximum value. - * - * E.g.: - * @li min value = 10 - * @li max value = 50 - * @li step value = 20 - * @li displayed value = 20 - * - * When the user decrement value (using left or bottom arrow), it will - * displays @c 50. - * - * @see elm_spinner_wrap_get(). - * - * @ingroup Spinner - */ -EAPI void elm_spinner_wrap_set(Evas_Object *obj, Eina_Bool wrap); - -/** - * Get whether the spinner should wrap when it reaches its - * minimum or maximum value. - * - * @param obj The spinner object - * @return @c EINA_TRUE means wrap is enabled. @c EINA_FALSE indicates - * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned. - * - * @see elm_spinner_wrap_set() for details. - * - * @ingroup Spinner - */ -EAPI Eina_Bool elm_spinner_wrap_get(const Evas_Object *obj); - -/** - * Set whether the spinner can be directly edited by the user or not. - * - * @param obj The spinner object. - * @param editable @c EINA_TRUE to allow users to edit it or @c EINA_FALSE to - * don't allow users to edit it directly. - * - * Spinner objects can have edition @b disabled, in which state they will - * be changed only by arrows. - * Useful for contexts - * where you don't want your users to interact with it writing the value. - * Specially - * when using special values, the user can see real value instead - * of special label on edition. - * - * It's enabled by default. - * - * @see elm_spinner_editable_get() - * - * @ingroup Spinner - */ -EAPI void elm_spinner_editable_set(Evas_Object *obj, Eina_Bool editable); - -/** - * Get whether the spinner can be directly edited by the user or not. - * - * @param obj The spinner object. - * @return @c EINA_TRUE means edition is enabled. @c EINA_FALSE indicates - * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned. - * - * @see elm_spinner_editable_set() for details. - * - * @ingroup Spinner - */ -EAPI Eina_Bool elm_spinner_editable_get(const Evas_Object *obj); - -/** - * Set a special string to display in the place of the numerical value. - * - * @param obj The spinner object. - * @param value The value to be replaced. - * @param label The label to be used. - * - * 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 - * - * @note If another label was previously set to @p value, it will be replaced - * by the new label. - * - * @see elm_spinner_special_value_get(). - * @see elm_spinner_special_value_del(). - * - * @ingroup Spinner - */ -EAPI void elm_spinner_special_value_add(Evas_Object *obj, double value, const char *label); - -/** - * Delete the special string display in the place of the numerical value. - * - * @param obj The spinner object. - * @param value The replaced value. - * - * It will remove a previously added special value. After this, the spinner - * will display the value itself instead of a label. - * - * @see elm_spinner_special_value_add() for more details. - * - * @ingroup Spinner - * @since 1.8 - */ -EAPI void elm_spinner_special_value_del(Evas_Object *obj, double value); - -/** - * Get the special string display in the place of the numerical value. - * - * @param obj The spinner object. - * @param value The replaced value. - * @return The used label. - * - * @see elm_spinner_special_value_add() for more details. - * - * @ingroup Spinner - * @since 1.8 - */ -EAPI const char *elm_spinner_special_value_get(Evas_Object *obj, double value); - -/** - * Set the interval on time updates for an user mouse button hold - * on spinner widgets' arrows. - * - * @param obj The spinner object. - * @param interval The (first) interval value in seconds. - * - * This interval value is @b decreased while the user holds the - * mouse pointer either incrementing or decrementing spinner's value. - * - * This helps the user to get to a given value distant from the - * current one easier/faster, as it will start to change quicker and - * quicker on mouse button holds. - * - * 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. - * - * The default starting interval value for automatic changes is - * @c 0.85 seconds. - * - * @see elm_spinner_interval_get() - * - * @ingroup Spinner - */ -EAPI void elm_spinner_interval_set(Evas_Object *obj, double interval); - -/** - * Get the interval on time updates for an user mouse button hold - * on spinner widgets' arrows. - * - * @param obj The spinner object. - * @return The (first) interval value, in seconds, set on it. - * - * @see elm_spinner_interval_set() for more details. - * - * @ingroup Spinner - */ -EAPI double elm_spinner_interval_get(const Evas_Object *obj); - -/** - * Set the base for rounding - * - * @param obj The spinner object - * @param base The base value - * - * 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 will be rounded to increments (or decrements) of - * "round" starting from value @p base. The default base for rounding is 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, ... - * - * @see elm_spinner_round_get() - * @see elm_spinner_base_get() too. - * - * @ingroup Spinner - */ -EAPI void elm_spinner_base_set(Evas_Object *obj, double base); - -/** - * Get the base for rounding - * - * @param obj The spinner object - * @return The base rounding value - * - * This returns the base for rounding. - * - * @see elm_spinner_round_set() too. - * @see elm_spinner_base_set() too. - * - * @ingroup Spinner - */ -EAPI double elm_spinner_base_get(const Evas_Object *obj); - -/** - * Set the round value for rounding - * - * @param obj The spinner object - * @param rnd The rounding value - * - * Sets the rounding value used for value rounding in the spinner. - * - * @see elm_spinner_round_get() - * @see elm_spinner_base_set() - * - * @ingroup Spinner - */ -EAPI void elm_spinner_round_set(Evas_Object *obj, int rnd); - -/** - * Get the round value for rounding - * - * @param obj The spinner object - * @return The rounding value - * - * This returns the round value for rounding. - * - * @see elm_spinner_round_set() too. - * @see elm_spinner_base_set() too. - * - * @ingroup Spinner - */ -EAPI int elm_spinner_round_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 /** * @} */ diff --git a/src/lib/elm_spinner_eo.h b/src/lib/elm_spinner_eo.h new file mode 100644 index 000000000..415a4606b --- /dev/null +++ b/src/lib/elm_spinner_eo.h @@ -0,0 +1,301 @@ +#define ELM_OBJ_SPINNER_CLASS elm_obj_spinner_class_get() + +const Eo_Class *elm_obj_spinner_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_SPINNER_BASE_ID; + +enum +{ + ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_SET, + ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_GET, + ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_SET, + ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_GET, + ELM_OBJ_SPINNER_SUB_ID_STEP_SET, + ELM_OBJ_SPINNER_SUB_ID_STEP_GET, + ELM_OBJ_SPINNER_SUB_ID_VALUE_SET, + ELM_OBJ_SPINNER_SUB_ID_VALUE_GET, + ELM_OBJ_SPINNER_SUB_ID_WRAP_SET, + ELM_OBJ_SPINNER_SUB_ID_WRAP_GET, + ELM_OBJ_SPINNER_SUB_ID_SPECIAL_VALUE_ADD, + ELM_OBJ_SPINNER_SUB_ID_EDITABLE_SET, + ELM_OBJ_SPINNER_SUB_ID_EDITABLE_GET, + ELM_OBJ_SPINNER_SUB_ID_INTERVAL_SET, + ELM_OBJ_SPINNER_SUB_ID_INTERVAL_GET, + ELM_OBJ_SPINNER_SUB_ID_BASE_SET, + ELM_OBJ_SPINNER_SUB_ID_BASE_GET, + ELM_OBJ_SPINNER_SUB_ID_ROUND_SET, + ELM_OBJ_SPINNER_SUB_ID_ROUND_GET, + ELM_OBJ_SPINNER_SUB_ID_LAST +}; + +#define ELM_OBJ_SPINNER_ID(sub_id) (ELM_OBJ_SPINNER_BASE_ID + sub_id) + + +/** + * @def elm_obj_spinner_label_format_set + * @since 1.8 + * + * Set the format string of the displayed label. + * + * @param[in] fmt + * + * @see elm_spinner_label_format_set + * + * @ingroup Spinner + */ +#define elm_obj_spinner_label_format_set(fmt) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_SET), EO_TYPECHECK(const char *, fmt) + +/** + * @def elm_obj_spinner_label_format_get + * @since 1.8 + * + * Get the label format of the spinner. + * + * @param[out] ret + * + * @see elm_spinner_label_format_get + * + * @ingroup Spinner + */ +#define elm_obj_spinner_label_format_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_spinner_min_max_set + * @since 1.8 + * + * Set the minimum and maximum values for the spinner. + * + * @param[in] min + * @param[in] max + * + * @see elm_spinner_min_max_set + * + * @ingroup Spinner + */ +#define elm_obj_spinner_min_max_set(min, max) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_SET), EO_TYPECHECK(double, min), EO_TYPECHECK(double, max) + +/** + * @def elm_obj_spinner_min_max_get + * @since 1.8 + * + * Get the minimum and maximum values of the spinner. + * + * @param[out] min + * @param[out] max + * + * @see elm_spinner_min_max_get + * + * @ingroup Spinner + */ +#define elm_obj_spinner_min_max_get(min, max) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max) + +/** + * @def elm_obj_spinner_step_set + * @since 1.8 + * + * Set the step used to increment or decrement the spinner value. + * + * @param[in] step + * + * @see elm_spinner_step_set + * + * @ingroup Spinner + */ +#define elm_obj_spinner_step_set(step) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_STEP_SET), EO_TYPECHECK(double, step) + +/** + * @def elm_obj_spinner_step_get + * @since 1.8 + * + * Get the step used to increment or decrement the spinner value. + * + * @param[out] ret + * + * @see elm_spinner_step_get + * + * @ingroup Spinner + */ +#define elm_obj_spinner_step_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_STEP_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_spinner_value_set + * @since 1.8 + * + * Set the value the spinner displays. + * + * @param[in] val + * + * @see elm_spinner_value_set + * + * @ingroup Spinner + */ +#define elm_obj_spinner_value_set(val) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val) + +/** + * @def elm_obj_spinner_value_get + * @since 1.8 + * + * Get the value displayed by the spinner. + * + * @param[out] ret + * + * @see elm_spinner_value_get + * + * @ingroup Spinner + */ +#define elm_obj_spinner_value_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_spinner_wrap_set + * @since 1.8 + * + * Set whether the spinner should wrap when it reaches its + * + * @param[in] wrap + * + * @see elm_spinner_wrap_set + * + * @ingroup Spinner + */ +#define elm_obj_spinner_wrap_set(wrap) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_WRAP_SET), EO_TYPECHECK(Eina_Bool, wrap) + +/** + * @def elm_obj_spinner_wrap_get + * @since 1.8 + * + * Get whether the spinner should wrap when it reaches its + * + * @param[out] ret + * + * @see elm_spinner_wrap_get + * + * @ingroup Spinner + */ +#define elm_obj_spinner_wrap_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_WRAP_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_spinner_special_value_add + * @since 1.8 + * + * Set a special string to display in the place of the numerical value. + * + * @param[in] value + * @param[in] label + * + * @see elm_spinner_special_value_add + * + * @ingroup Spinner + */ +#define elm_obj_spinner_special_value_add(value, label) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_SPECIAL_VALUE_ADD), EO_TYPECHECK(double, value), EO_TYPECHECK(const char *, label) + +/** + * @def elm_obj_spinner_editable_set + * @since 1.8 + * + * Set whether the spinner can be directly edited by the user or not. + * + * @param[in] editable + * + * @see elm_spinner_editable_set + * + * @ingroup Spinner + */ +#define elm_obj_spinner_editable_set(editable) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_EDITABLE_SET), EO_TYPECHECK(Eina_Bool, editable) + +/** + * @def elm_obj_spinner_editable_get + * @since 1.8 + * + * Get whether the spinner can be directly edited by the user or not. + * + * @param[out] ret + * + * @see elm_spinner_editable_get + * + * @ingroup Spinner + */ +#define elm_obj_spinner_editable_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_EDITABLE_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_spinner_interval_set + * @since 1.8 + * + * Set the interval on time updates for an user mouse button hold + * + * @param[in] interval + * + * @see elm_spinner_interval_set + * + * @ingroup Spinner + */ +#define elm_obj_spinner_interval_set(interval) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_INTERVAL_SET), EO_TYPECHECK(double, interval) + +/** + * @def elm_obj_spinner_interval_get + * @since 1.8 + * + * Get the interval on time updates for an user mouse button hold + * + * @param[out] ret + * + * @see elm_spinner_interval_get + * + * @ingroup Spinner + */ +#define elm_obj_spinner_interval_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_INTERVAL_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_spinner_base_set + * @since 1.8 + * + * Set the base for rounding + * + * @param[in] base + * + * @see elm_spinner_base_set + * + * @ingroup Spinner + */ +#define elm_obj_spinner_base_set(base) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_BASE_SET), EO_TYPECHECK(double, base) + +/** + * @def elm_obj_spinner_base_get + * @since 1.8 + * + * Get the base for rounding + * + * @param[out] ret + * + * @see elm_spinner_base_get + * + * @ingroup Spinner + */ +#define elm_obj_spinner_base_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_BASE_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_spinner_round_set + * @since 1.8 + * + * Set the round value for rounding + * + * @param[in] rnd + * + * @see elm_spinner_round_set + * + * @ingroup Spinner + */ +#define elm_obj_spinner_round_set(rnd) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_ROUND_SET), EO_TYPECHECK(int, rnd) + +/** + * @def elm_obj_spinner_round_get + * @since 1.8 + * + * Get the round value for rounding + * + * @param[out] ret + * + * @see elm_spinner_round_get + * + * @ingroup Spinner + */ +#define elm_obj_spinner_round_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_ROUND_GET), EO_TYPECHECK(int *, ret) diff --git a/src/lib/elm_spinner_legacy.h b/src/lib/elm_spinner_legacy.h new file mode 100644 index 000000000..81711aaa0 --- /dev/null +++ b/src/lib/elm_spinner_legacy.h @@ -0,0 +1,411 @@ +/** + * Add a new spinner widget to the given parent Elementary + * (container) object. + * + * @param parent The parent object. + * @return a new spinner widget handle or @c NULL, on errors. + * + * This function inserts a new spinner widget on the canvas. + * + * @ingroup Spinner + * + */ +EAPI Evas_Object *elm_spinner_add(Evas_Object *parent); + +/** + * Delete the special string display in the place of the numerical value. + * + * @param obj The spinner object. + * @param value The replaced value. + * + * It will remove a previously added special value. After this, the spinner + * will display the value itself instead of a label. + * + * @see elm_spinner_special_value_add() for more details. + * + * @ingroup Spinner + * @since 1.8 + */ +EAPI void elm_spinner_special_value_del(Evas_Object *obj, double value); + +/** + * Get the special string display in the place of the numerical value. + * + * @param obj The spinner object. + * @param value The replaced value. + * @return The used label. + * + * @see elm_spinner_special_value_add() for more details. + * + * @ingroup Spinner + * @since 1.8 + */ +EAPI const char *elm_spinner_special_value_get(Evas_Object *obj, double value); + +/** + * Set the format string of the displayed label. + * + * @param obj The spinner object. + * @param fmt The format string for the label display. + * + * If @c NULL, this sets the format to "%.0f". If not it sets the format + * string for the label text. The label text is provided a floating point + * value, so the label text can display up to 1 floating point value. + * Note that this is optional. + * + * Use a format string such as "%1.2f meters" for example, and it will + * display values like: "3.14 meters" for a value equal to 3.14159. + * + * Default is "%0.f". + * + * @see elm_spinner_label_format_get() + * + * @ingroup Spinner + */ +EAPI void elm_spinner_label_format_set(Evas_Object *obj, const char *fmt); + +/** + * Get the label format of the spinner. + * + * @param obj The spinner object. + * @return The text label format string in UTF-8. + * + * @see elm_spinner_label_format_set() for details. + * + * @ingroup Spinner + */ +EAPI const char *elm_spinner_label_format_get(const Evas_Object *obj); + +/** + * Set the minimum and maximum values for the spinner. + * + * @param obj The spinner object. + * @param min The minimum value. + * @param max The maximum value. + * + * Define the allowed range of values to be selected by the user. + * + * If actual value is less than @p min, it will be updated to @p min. If it + * is bigger then @p max, will be updated to @p max. Actual value can be + * get with elm_spinner_value_get(). + * + * By default, min is equal to 0, and max is equal to 100. + * + * @warning Maximum must be greater than minimum. + * + * @see elm_spinner_min_max_get() + * + * @ingroup Spinner + */ +EAPI void elm_spinner_min_max_set(Evas_Object *obj, double min, double max); + +/** + * Get the minimum and maximum values of the spinner. + * + * @param obj The spinner object. + * @param min Pointer to store the minimum value. + * @param max Pointer to store the maximum value. + * + * @note If only one value is needed, the other pointer can be passed + * as @c NULL. + * + * @see elm_spinner_min_max_set() for details. + * + * @ingroup Spinner + */ +EAPI void elm_spinner_min_max_get(const Evas_Object *obj, double *min, double *max); + +/** + * Set the step used to increment or decrement the spinner value. + * + * @param obj The spinner object. + * @param step The step value. + * + * This value will be incremented or decremented to the displayed value. + * It will be incremented while the user keep right or top arrow pressed, + * and will be decremented while the user keep left or bottom arrow pressed. + * + * The interval to increment / decrement can be set with + * elm_spinner_interval_set(). + * + * By default step value is equal to 1. + * + * @see elm_spinner_step_get() + * + * @ingroup Spinner + */ +EAPI void elm_spinner_step_set(Evas_Object *obj, double step); + +/** + * Get the step used to increment or decrement the spinner value. + * + * @param obj The spinner object. + * @return The step value. + * + * @see elm_spinner_step_get() for more details. + * + * @ingroup Spinner + */ +EAPI double elm_spinner_step_get(const Evas_Object *obj); + +/** + * Set the value the spinner displays. + * + * @param obj The spinner object. + * @param val The value to be displayed. + * + * Value will be presented on the label following format specified with + * elm_spinner_format_set(). + * + * @warning The value must to be between min and max values. This values + * are set by elm_spinner_min_max_set(). + * + * @see elm_spinner_value_get(). + * @see elm_spinner_format_set(). + * @see elm_spinner_min_max_set(). + * + * @ingroup Spinner + */ +EAPI void elm_spinner_value_set(Evas_Object *obj, double val); + +/** + * Get the value displayed by the spinner. + * + * @param obj The spinner object. + * @return The value displayed. + * + * @see elm_spinner_value_set() for details. + * + * @ingroup Spinner + */ +EAPI double elm_spinner_value_get(const Evas_Object *obj); + +/** + * Set whether the spinner should wrap when it reaches its + * minimum or maximum value. + * + * @param obj The spinner object. + * @param wrap @c EINA_TRUE to enable wrap or @c EINA_FALSE to + * disable it. + * + * Disabled by default. If disabled, when the user tries to increment the + * value, + * but displayed value plus step value is bigger than maximum value, + * the new value will be the maximum value. + * The same happens when the user tries to decrement it, + * but the value less step is less than minimum value. In this case, + * the new displayed value will be the minimum value. + * + * When wrap is enabled, when the user tries to increment the value, + * but displayed value plus step value is bigger than maximum value, + * the new value will be the minimum value. When the the user tries to + * decrement it, but the value less step is less than minimum value, + * the new displayed value will be the maximum value. + * + * E.g.: + * @li min value = 10 + * @li max value = 50 + * @li step value = 20 + * @li displayed value = 20 + * + * When the user decrement value (using left or bottom arrow), it will + * displays @c 50. + * + * @see elm_spinner_wrap_get(). + * + * @ingroup Spinner + */ +EAPI void elm_spinner_wrap_set(Evas_Object *obj, Eina_Bool wrap); + +/** + * Get whether the spinner should wrap when it reaches its + * minimum or maximum value. + * + * @param obj The spinner object + * @return @c EINA_TRUE means wrap is enabled. @c EINA_FALSE indicates + * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned. + * + * @see elm_spinner_wrap_set() for details. + * + * @ingroup Spinner + */ +EAPI Eina_Bool elm_spinner_wrap_get(const Evas_Object *obj); + +/** + * Set a special string to display in the place of the numerical value. + * + * @param obj The spinner object. + * @param value The value to be replaced. + * @param label The label to be used. + * + * 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 + * + * @note If another label was previously set to @p value, it will be replaced + * by the new label. + * + * @see elm_spinner_special_value_get(). + * @see elm_spinner_special_value_del(). + * + * @ingroup Spinner + */ +EAPI void elm_spinner_special_value_add(Evas_Object *obj, double value, const char *label); + +/** + * Set whether the spinner can be directly edited by the user or not. + * + * @param obj The spinner object. + * @param editable @c EINA_TRUE to allow users to edit it or @c EINA_FALSE to + * don't allow users to edit it directly. + * + * Spinner objects can have edition @b disabled, in which state they will + * be changed only by arrows. + * Useful for contexts + * where you don't want your users to interact with it writing the value. + * Specially + * when using special values, the user can see real value instead + * of special label on edition. + * + * It's enabled by default. + * + * @see elm_spinner_editable_get() + * + * @ingroup Spinner + */ +EAPI void elm_spinner_editable_set(Evas_Object *obj, Eina_Bool editable); + +/** + * Get whether the spinner can be directly edited by the user or not. + * + * @param obj The spinner object. + * @return @c EINA_TRUE means edition is enabled. @c EINA_FALSE indicates + * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned. + * + * @see elm_spinner_editable_set() for details. + * + * @ingroup Spinner + */ +EAPI Eina_Bool elm_spinner_editable_get(const Evas_Object *obj); + +/** + * Set the interval on time updates for an user mouse button hold + * on spinner widgets' arrows. + * + * @param obj The spinner object. + * @param interval The (first) interval value in seconds. + * + * This interval value is @b decreased while the user holds the + * mouse pointer either incrementing or decrementing spinner's value. + * + * This helps the user to get to a given value distant from the + * current one easier/faster, as it will start to change quicker and + * quicker on mouse button holds. + * + * 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. + * + * The default starting interval value for automatic changes is + * @c 0.85 seconds. + * + * @see elm_spinner_interval_get() + * + * @ingroup Spinner + */ +EAPI void elm_spinner_interval_set(Evas_Object *obj, double interval); + +/** + * Get the interval on time updates for an user mouse button hold + * on spinner widgets' arrows. + * + * @param obj The spinner object. + * @return The (first) interval value, in seconds, set on it. + * + * @see elm_spinner_interval_set() for more details. + * + * @ingroup Spinner + */ +EAPI double elm_spinner_interval_get(const Evas_Object *obj); + +/** + * Set the base for rounding + * + * @param obj The spinner object + * @param base The base value + * + * 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 will be rounded to increments (or decrements) of + * "round" starting from value @p base. The default base for rounding is 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, ... + * + * @see elm_spinner_round_get() + * @see elm_spinner_base_get() too. + * + * @ingroup Spinner + */ +EAPI void elm_spinner_base_set(Evas_Object *obj, double base); + +/** + * Get the base for rounding + * + * @param obj The spinner object + * @return The base rounding value + * + * This returns the base for rounding. + * + * @see elm_spinner_round_set() too. + * @see elm_spinner_base_set() too. + * + * @ingroup Spinner + */ +EAPI double elm_spinner_base_get(const Evas_Object *obj); + +/** + * Set the round value for rounding + * + * @param obj The spinner object + * @param rnd The rounding value + * + * Sets the rounding value used for value rounding in the spinner. + * + * @see elm_spinner_round_get() + * @see elm_spinner_base_set() + * + * @ingroup Spinner + */ +EAPI void elm_spinner_round_set(Evas_Object *obj, int rnd); + +/** + * Get the round value for rounding + * + * @param obj The spinner object + * @return The rounding value + * + * This returns the round value for rounding. + * + * @see elm_spinner_round_set() too. + * @see elm_spinner_base_set() too. + * + * @ingroup Spinner + */ +EAPI int elm_spinner_round_get(const Evas_Object *obj); diff --git a/src/lib/elm_systray.h b/src/lib/elm_systray.h index 225daa773..5c149d358 100644 --- a/src/lib/elm_systray.h +++ b/src/lib/elm_systray.h @@ -1,324 +1,4 @@ -#ifndef ELM_SYSTRAY_H -#define ELM_SYSTRAY_H - -#include "Eo.h" - -#define ELM_OBJ_SYSTRAY_CLASS elm_obj_systray_class_get() - -const Eo_Class *elm_obj_systray_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_SYSTRAY_BASE_ID; - -enum -{ - ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_SET, - ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_GET, - ELM_OBJ_SYSTRAY_SUB_ID_STATUS_SET, - ELM_OBJ_SYSTRAY_SUB_ID_STATUS_GET, - ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_SET, - ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_GET, - ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_SET, - ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_GET, - ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_SET, - ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_GET, - ELM_OBJ_SYSTRAY_SUB_ID_ID_SET, - ELM_OBJ_SYSTRAY_SUB_ID_ID_GET, - ELM_OBJ_SYSTRAY_SUB_ID_TITLE_SET, - ELM_OBJ_SYSTRAY_SUB_ID_TITLE_GET, - ELM_OBJ_SYSTRAY_SUB_ID_MENU_SET, - ELM_OBJ_SYSTRAY_SUB_ID_MENU_GET, - ELM_OBJ_SYSTRAY_SUB_ID_REGISTER, - ELM_OBJ_SYSTRAY_SUB_ID_LAST -}; - -#define ELM_OBJ_SYSTRAY_ID(sub_id) (ELM_OBJ_SYSTRAY_BASE_ID + sub_id) - -/** - * @def elm_obj_systray_category_set - * - * Set the category of the Status Notifier Item. - * - * @param[in] cat Category - * - * @see Elm_Systray_Category - * - * @since 1.8 - */ -#define elm_obj_systray_category_set(cat) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_SET), \ - EO_TYPECHECK(Elm_Systray_Category, cat) - -/** - * @def elm_obj_systray_category_get - * - * Retrieve the category of the Status Notifier Item. - * - * @param[out] ret Category - * - * @see elm_obj_systray_category_set - * - * @since 1.8 - */ -#define elm_obj_systray_category_get(ret) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_GET), \ - EO_TYPECHECK(Elm_Systray_Category *, ret) - -/** - * @def elm_obj_systray_status_set - * - * Set the status of the Status Notifier Item. - * - * @param[in] st Status - * - * @see Elm_Systray_Status - * - * @since 1.8 - */ -#define elm_obj_systray_status_set(st) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_STATUS_SET), \ - EO_TYPECHECK(Elm_Systray_Status, st) - -/** - * @def elm_obj_systray_status_get - * - * Retrieve the status of the Status Notifier Item. - * - * @param[out] ret Status - * - * @see elm_obj_systray_status_set - * - * @since 1.8 - */ -#define elm_obj_systray_status_get(ret) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_STATUS_GET), \ - EO_TYPECHECK(Elm_Systray_Status *, ret) - -/** - * @def elm_obj_systray_att_icon_name_set - * - * Set the name of the attention icon to be used by the Status Notifier Item. - * - * @param[in] att_icon_name - * - * @see elm_obj_systray_att_icon_name_get - * - * @since 1.8 - */ -#define elm_obj_systray_att_icon_name_set(att_icon_name) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_SET), \ - EO_TYPECHECK(const char *, att_icon_name) - -/** - * @def elm_obj_systray_att_icon_name_get - * - * Retrieve the name of the attention icon used by the Status Notifier Item. - * - * @param[out] ret - * - * @see elm_obj_systray_att_icon_name_set - * - * @since 1.8 - */ -#define elm_obj_systray_att_icon_name_get(ret) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_GET), \ - EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_systray_icon_name_set - * - * Set the name of the icon to be used by the Status Notifier Item. - * - * @param[in] icon_name - * - * @see elm_obj_systray_icon_name_get - * - * @since 1.8 - */ -#define elm_obj_systray_icon_name_set(icon_name) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_SET), \ - EO_TYPECHECK(const char *, icon_name) - -/** - * @def elm_obj_systray_icon_name_get - * - * Retrieve the name of the icon used by the Status Notifier Item. - * - * @param[out] ret - * - * @see elm_obj_systray_icon_name_set - * - * @since 1.8 - */ -#define elm_obj_systray_icon_name_get(ret) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_GET), \ - EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_systray_icon_theme_path_set - * - * Set the path to the theme where the icons can be found. - * Set this value to "" to use the default path. - * - * @param[in] icon_theme_path - * - * @see elm_obj_systray_icon_theme_path_get - * - * @since 1.8 - */ -#define elm_obj_systray_icon_theme_path_set(icon_theme_path) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_SET), \ - EO_TYPECHECK(const char *, icon_theme_path) - -/** - * @def elm_obj_systray_icon_theme_path_get - * - * Retrieve the path to the icon's theme currently in use. - * - * @param[out] ret - * - * @see elm_obj_systray_icon_theme_path_set - * - * @since 1.8 - */ -#define elm_obj_systray_icon_theme_path_get(ret) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_GET), \ - EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_systray_id_set - * - * Set the id of the Status Notifier Item. - * - * @param[in] id - * - * @see elm_obj_systray_id_get - * - * @since 1.8 - */ -#define elm_obj_systray_id_set(id) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ID_SET), \ - EO_TYPECHECK(const char *, id) - -/** - * @def elm_obj_systray_id_get - * - * Retrieve the id of the Status Notifier Item. - * - * @param[out] ret - * - * @see elm_obj_systray_id_set - * - * @since 1.8 - */ -#define elm_obj_systray_id_get(ret) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ID_GET), \ - EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_systray_title_set - * - * Set the title of the Status Notifier Item. - * - * @param[in] title - * - * @see elm_obj_systray_title_get - * - * @since 1.8 - */ -#define elm_obj_systray_title_set(title) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_TITLE_SET), \ - EO_TYPECHECK(const char *, title) - -/** - * @def elm_obj_systray_title_get - * - * Retrieve the title of the Status Notifier Item. - * - * @param[out] ret - * - * @see elm_obj_systray_title_set - * - * @since 1.8 - */ -#define elm_obj_systray_title_get(ret) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_TITLE_GET), \ - EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_systray_menu_set - * - * Set the object path of the D-Bus Menu that is to be show when the - * Status Notifier Item is activated by the user. - * - * @param[in] menu - * - * @see elm_obj_systray_menu_get - * - * @since 1.8 - */ -#define elm_obj_systray_menu_set(menu) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_MENU_SET), \ - EO_TYPECHECK(const Eo *, menu) - -/** - * @def elm_obj_systray_menu_get - * - * Retrieve the object path of the D-Bus Menu currently in use. - * - * @param[out] ret - * - * @see elm_obj_systray_menu_set - * - * @since 1.8 - */ -#define elm_obj_systray_menu_get(ret) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_MENU_GET), \ - EO_TYPECHECK(const Eo **, ret) - -/** - * @def elm_obj_systray_register - * - * Register this Status Notifier Item in the System Tray Watcher. - * This function should only be called after the event - * ELM_EVENT_SYSTRAY_READY is emitted. - * - * @param[out] ret - * - * @since 1.8 - */ -#define elm_obj_systray_register(ret) \ - ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_REGISTER), \ - EO_TYPECHECK(Eina_Bool *, ret) - -/** - * Emitted when the systray is ready to be used by the application. - */ -EAPI extern int ELM_EVENT_SYSTRAY_READY; - -/** - * Category of the Status Notifier Item. - * - * @since 1.8 - */ -typedef enum _Elm_Systray_Category -{ - ELM_SYSTRAY_CATEGORY_APP_STATUS, /**< Indicators of application status */ - ELM_SYSTRAY_CATEGORY_COMMUNICATIONS, /**< Communications apps */ - ELM_SYSTRAY_CATEGORY_SYS_SERVICES, /**< System Service apps */ - ELM_SYSTRAY_CATEGORY_HARDWARE, /**< Hardware indicators */ - ELM_SYSTRAY_CATEGORY_OTHER /**< Undefined category */ -} Elm_Systray_Category; - -/** - * Application status information. - * - * @since 1.8 - */ -typedef enum _Elm_Systray_Status -{ - ELM_SYSTRAY_STATUS_PASSIVE, /**< Passive (normal) */ - ELM_SYSTRAY_STATUS_ACTIVE, /**< Active */ - ELM_SYSTRAY_STATUS_ATTENTION /**< Needs Attention */ -} Elm_Systray_Status; - +#include "elm_systray_common.h" +#ifdef EFL_EO_API_SUPPORT +#include "elm_systray_eo.h" #endif diff --git a/src/lib/elm_systray_common.h b/src/lib/elm_systray_common.h new file mode 100644 index 000000000..f0871c955 --- /dev/null +++ b/src/lib/elm_systray_common.h @@ -0,0 +1,31 @@ +/** + * Emitted when the systray is ready to be used by the application. + */ +EAPI extern int ELM_EVENT_SYSTRAY_READY; + +/** + * Category of the Status Notifier Item. + * + * @since 1.8 + */ +typedef enum _Elm_Systray_Category +{ + ELM_SYSTRAY_CATEGORY_APP_STATUS, /**< Indicators of application status */ + ELM_SYSTRAY_CATEGORY_COMMUNICATIONS, /**< Communications apps */ + ELM_SYSTRAY_CATEGORY_SYS_SERVICES, /**< System Service apps */ + ELM_SYSTRAY_CATEGORY_HARDWARE, /**< Hardware indicators */ + ELM_SYSTRAY_CATEGORY_OTHER /**< Undefined category */ +} Elm_Systray_Category; + +/** + * Application status information. + * + * @since 1.8 + */ +typedef enum _Elm_Systray_Status +{ + ELM_SYSTRAY_STATUS_PASSIVE, /**< Passive (normal) */ + ELM_SYSTRAY_STATUS_ACTIVE, /**< Active */ + ELM_SYSTRAY_STATUS_ATTENTION /**< Needs Attention */ +} Elm_Systray_Status; + diff --git a/src/lib/elm_systray_eo.h b/src/lib/elm_systray_eo.h new file mode 100644 index 000000000..18998f96f --- /dev/null +++ b/src/lib/elm_systray_eo.h @@ -0,0 +1,286 @@ +#define ELM_OBJ_SYSTRAY_CLASS elm_obj_systray_class_get() + +const Eo_Class *elm_obj_systray_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_SYSTRAY_BASE_ID; + +enum +{ + ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_SET, + ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_GET, + ELM_OBJ_SYSTRAY_SUB_ID_STATUS_SET, + ELM_OBJ_SYSTRAY_SUB_ID_STATUS_GET, + ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_SET, + ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_GET, + ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_SET, + ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_GET, + ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_SET, + ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_GET, + ELM_OBJ_SYSTRAY_SUB_ID_ID_SET, + ELM_OBJ_SYSTRAY_SUB_ID_ID_GET, + ELM_OBJ_SYSTRAY_SUB_ID_TITLE_SET, + ELM_OBJ_SYSTRAY_SUB_ID_TITLE_GET, + ELM_OBJ_SYSTRAY_SUB_ID_MENU_SET, + ELM_OBJ_SYSTRAY_SUB_ID_MENU_GET, + ELM_OBJ_SYSTRAY_SUB_ID_REGISTER, + ELM_OBJ_SYSTRAY_SUB_ID_LAST +}; + +#define ELM_OBJ_SYSTRAY_ID(sub_id) (ELM_OBJ_SYSTRAY_BASE_ID + sub_id) + +/** + * @def elm_obj_systray_category_set + * + * Set the category of the Status Notifier Item. + * + * @param[in] cat Category + * + * @see Elm_Systray_Category + * + * @since 1.8 + */ +#define elm_obj_systray_category_set(cat) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_SET), \ + EO_TYPECHECK(Elm_Systray_Category, cat) + +/** + * @def elm_obj_systray_category_get + * + * Retrieve the category of the Status Notifier Item. + * + * @param[out] ret Category + * + * @see elm_obj_systray_category_set + * + * @since 1.8 + */ +#define elm_obj_systray_category_get(ret) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_GET), \ + EO_TYPECHECK(Elm_Systray_Category *, ret) + +/** + * @def elm_obj_systray_status_set + * + * Set the status of the Status Notifier Item. + * + * @param[in] st Status + * + * @see Elm_Systray_Status + * + * @since 1.8 + */ +#define elm_obj_systray_status_set(st) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_STATUS_SET), \ + EO_TYPECHECK(Elm_Systray_Status, st) + +/** + * @def elm_obj_systray_status_get + * + * Retrieve the status of the Status Notifier Item. + * + * @param[out] ret Status + * + * @see elm_obj_systray_status_set + * + * @since 1.8 + */ +#define elm_obj_systray_status_get(ret) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_STATUS_GET), \ + EO_TYPECHECK(Elm_Systray_Status *, ret) + +/** + * @def elm_obj_systray_att_icon_name_set + * + * Set the name of the attention icon to be used by the Status Notifier Item. + * + * @param[in] att_icon_name + * + * @see elm_obj_systray_att_icon_name_get + * + * @since 1.8 + */ +#define elm_obj_systray_att_icon_name_set(att_icon_name) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_SET), \ + EO_TYPECHECK(const char *, att_icon_name) + +/** + * @def elm_obj_systray_att_icon_name_get + * + * Retrieve the name of the attention icon used by the Status Notifier Item. + * + * @param[out] ret + * + * @see elm_obj_systray_att_icon_name_set + * + * @since 1.8 + */ +#define elm_obj_systray_att_icon_name_get(ret) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_GET), \ + EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_systray_icon_name_set + * + * Set the name of the icon to be used by the Status Notifier Item. + * + * @param[in] icon_name + * + * @see elm_obj_systray_icon_name_get + * + * @since 1.8 + */ +#define elm_obj_systray_icon_name_set(icon_name) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_SET), \ + EO_TYPECHECK(const char *, icon_name) + +/** + * @def elm_obj_systray_icon_name_get + * + * Retrieve the name of the icon used by the Status Notifier Item. + * + * @param[out] ret + * + * @see elm_obj_systray_icon_name_set + * + * @since 1.8 + */ +#define elm_obj_systray_icon_name_get(ret) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_GET), \ + EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_systray_icon_theme_path_set + * + * Set the path to the theme where the icons can be found. + * Set this value to "" to use the default path. + * + * @param[in] icon_theme_path + * + * @see elm_obj_systray_icon_theme_path_get + * + * @since 1.8 + */ +#define elm_obj_systray_icon_theme_path_set(icon_theme_path) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_SET), \ + EO_TYPECHECK(const char *, icon_theme_path) + +/** + * @def elm_obj_systray_icon_theme_path_get + * + * Retrieve the path to the icon's theme currently in use. + * + * @param[out] ret + * + * @see elm_obj_systray_icon_theme_path_set + * + * @since 1.8 + */ +#define elm_obj_systray_icon_theme_path_get(ret) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_GET), \ + EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_systray_id_set + * + * Set the id of the Status Notifier Item. + * + * @param[in] id + * + * @see elm_obj_systray_id_get + * + * @since 1.8 + */ +#define elm_obj_systray_id_set(id) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ID_SET), \ + EO_TYPECHECK(const char *, id) + +/** + * @def elm_obj_systray_id_get + * + * Retrieve the id of the Status Notifier Item. + * + * @param[out] ret + * + * @see elm_obj_systray_id_set + * + * @since 1.8 + */ +#define elm_obj_systray_id_get(ret) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ID_GET), \ + EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_systray_title_set + * + * Set the title of the Status Notifier Item. + * + * @param[in] title + * + * @see elm_obj_systray_title_get + * + * @since 1.8 + */ +#define elm_obj_systray_title_set(title) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_TITLE_SET), \ + EO_TYPECHECK(const char *, title) + +/** + * @def elm_obj_systray_title_get + * + * Retrieve the title of the Status Notifier Item. + * + * @param[out] ret + * + * @see elm_obj_systray_title_set + * + * @since 1.8 + */ +#define elm_obj_systray_title_get(ret) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_TITLE_GET), \ + EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_systray_menu_set + * + * Set the object path of the D-Bus Menu that is to be show when the + * Status Notifier Item is activated by the user. + * + * @param[in] menu + * + * @see elm_obj_systray_menu_get + * + * @since 1.8 + */ +#define elm_obj_systray_menu_set(menu) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_MENU_SET), \ + EO_TYPECHECK(const Eo *, menu) + +/** + * @def elm_obj_systray_menu_get + * + * Retrieve the object path of the D-Bus Menu currently in use. + * + * @param[out] ret + * + * @see elm_obj_systray_menu_set + * + * @since 1.8 + */ +#define elm_obj_systray_menu_get(ret) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_MENU_GET), \ + EO_TYPECHECK(const Eo **, ret) + +/** + * @def elm_obj_systray_register + * + * Register this Status Notifier Item in the System Tray Watcher. + * This function should only be called after the event + * ELM_EVENT_SYSTRAY_READY is emitted. + * + * @param[out] ret + * + * @since 1.8 + */ +#define elm_obj_systray_register(ret) \ + ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_REGISTER), \ + EO_TYPECHECK(Eina_Bool *, ret) diff --git a/src/lib/elm_table.h b/src/lib/elm_table.h index e87ae14b5..4d040c811 100644 --- a/src/lib/elm_table.h +++ b/src/lib/elm_table.h @@ -29,280 +29,12 @@ * @{ */ -#define ELM_OBJ_TABLE_CLASS elm_obj_table_class_get() - -const Eo_Class *elm_obj_table_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_TABLE_BASE_ID; - -enum -{ - ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET, - ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET, - ELM_OBJ_TABLE_SUB_ID_PADDING_SET, - ELM_OBJ_TABLE_SUB_ID_PADDING_GET, - ELM_OBJ_TABLE_SUB_ID_PACK, - ELM_OBJ_TABLE_SUB_ID_UNPACK, - ELM_OBJ_TABLE_SUB_ID_PACK_SET, - ELM_OBJ_TABLE_SUB_ID_PACK_GET, - ELM_OBJ_TABLE_SUB_ID_CLEAR, - ELM_OBJ_TABLE_SUB_ID_LAST -}; - -#define ELM_OBJ_TABLE_ID(sub_id) (ELM_OBJ_TABLE_BASE_ID + sub_id) - - -/** - * @def elm_obj_table_homogeneous_set - * @since 1.8 - * - * @brief Set the homogeneous layout in the table - * - * @param[in] homogeneous - * - * @see elm_table_homogeneous_set - */ -#define elm_obj_table_homogeneous_set(homogeneous) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET), EO_TYPECHECK(Eina_Bool, homogeneous) - -/** - * @def elm_obj_table_homogeneous_get - * @since 1.8 - * - * @brief Get the current table homogeneous mode. - * - * @param[out] ret - * - * @see elm_table_homogeneous_get - */ -#define elm_obj_table_homogeneous_get(ret) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_table_padding_set - * @since 1.8 - * - * @brief Set padding between cells. - * - * @param[in] horizontal - * @param[in] vertical - * - * @see elm_table_padding_set - */ -#define elm_obj_table_padding_set(horizontal, vertical) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PADDING_SET), EO_TYPECHECK(Evas_Coord, horizontal), EO_TYPECHECK(Evas_Coord, vertical) - -/** - * @def elm_obj_table_padding_get - * @since 1.8 - * - * @brief Get padding between cells. - * - * @param[out] horizontal - * @param[out] vertical - * - * @see elm_table_padding_get - */ -#define elm_obj_table_padding_get(horizontal, vertical) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PADDING_GET), EO_TYPECHECK(Evas_Coord *, horizontal), EO_TYPECHECK(Evas_Coord *, vertical) - -/** - * @def elm_obj_table_pack - * @since 1.8 - * - * @brief Add a subobject on the table with the coordinates passed - * - * @param[in] subobj - * @param[in] x - * @param[in] y - * @param[in] w - * @param[in] h - * - * @see elm_table_pack - */ -#define elm_obj_table_pack(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h) - -/** - * @def elm_obj_table_unpack - * @since 1.8 - * - * @brief Remove child from table. - * - * @param[in] subobj - * - * @see elm_table_unpack - */ -#define elm_obj_table_unpack(subobj) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_UNPACK), EO_TYPECHECK(Evas_Object *, subobj) - -/** - * @def elm_obj_table_pack_set - * @since 1.8 - * - * @brief Set the packing location of an existing child of the table - * - * @param[in] subobj - * @param[in] x - * @param[in] y - * @param[in] w - * @param[in] h - * - * @see elm_table_pack_set - */ -#define elm_obj_table_pack_set(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK_SET), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h) - -/** - * @def elm_obj_table_pack_get - * @since 1.8 - * - * @brief Get the packing location of an existing child of the table - * - * @param[in] subobj - * @param[out] x - * @param[out] y - * @param[out] w - * @param[out] h - * - * @see elm_table_pack_get - */ -#define elm_obj_table_pack_get(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK_GET), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h) - -/** - * @def elm_obj_table_clear - * @since 1.8 - * - * @brief Faster way to remove all child objects from a table object. - * - * @param[in] clear - * - * @see elm_table_clear - */ -#define elm_obj_table_clear(clear) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_CLEAR), EO_TYPECHECK(Eina_Bool, clear) - - -/** - * @brief Add a new table to the parent - * - * @param parent The parent object - * @return The new object or NULL if it cannot be created - * - * @ingroup Table - */ -EAPI Evas_Object *elm_table_add(Evas_Object *parent); - -/** - * @brief Set the homogeneous layout in the table - * - * @param obj The layout object - * @param homogeneous A boolean to set if the layout is homogeneous in the - * table (EINA_TRUE = homogeneous, EINA_FALSE = no homogeneous) - * - * @ingroup Table - */ -EAPI void elm_table_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous); - -/** - * @brief Get the current table homogeneous mode. - * - * @param obj The table object - * @return A boolean to indicating if the layout is homogeneous in the table - * (EINA_TRUE = homogeneous, EINA_FALSE = no homogeneous) - * - * @ingroup Table - */ -EAPI Eina_Bool elm_table_homogeneous_get(const Evas_Object *obj); - -/** - * @brief Set padding between cells. - * - * @param obj The layout object. - * @param horizontal set the horizontal padding. - * @param vertical set the vertical padding. - * - * Default value is 0. - * - * @ingroup Table - */ -EAPI void elm_table_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical); - -/** - * @brief Get padding between cells. - * - * @param obj The layout object. - * @param horizontal set the horizontal padding. - * @param vertical set the vertical padding. - * - * @ingroup Table - */ -EAPI void elm_table_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical); - -/** - * @brief Add a subobject on the table with the coordinates passed - * - * @param obj The table object - * @param subobj The subobject to be added to the table - * @param x Row number - * @param y Column number - * @param w colspan - * @param h rowspan - * - * @note All positioning inside the table is relative to rows and columns, so - * a value of 0 for x and y, means the top left cell of the table, and a - * value of 1 for w and h means @p subobj only takes that 1 cell. - * - * @ingroup Table - */ -EAPI void elm_table_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h); - -/** - * @brief Remove child from table. - * - * @param obj The table object - * @param subobj The subobject - * - * @ingroup Table - */ -EAPI void elm_table_unpack(Evas_Object *obj, Evas_Object *subobj); - -/** - * @brief Faster way to remove all child objects from a table object. - * - * @param obj The table object - * @param clear If true, will delete children, else just remove from table. - * - * @ingroup Table - */ -EAPI void elm_table_clear(Evas_Object *obj, Eina_Bool clear); - -/** - * @brief Set the packing location of an existing child of the table - * - * @param subobj The subobject to be modified in the table - * @param x Row number - * @param y Column number - * @param w rowspan - * @param h colspan - * - * Modifies the position of an object already in the table. - * - * @note All positioning inside the table is relative to rows and columns, so - * a value of 0 for x and y, means the top left cell of the table, and a - * value of 1 for w and h means @p subobj only takes that 1 cell. - * - * @ingroup Table - */ -EAPI void elm_table_pack_set(Evas_Object *subobj, int x, int y, int w, int h); - -/** - * @brief Get the packing location of an existing child of the table - * - * @param subobj The subobject to be modified in the table - * @param x Row number - * @param y Column number - * @param w rowspan - * @param h colspan - * - * @see elm_table_pack_set() - * - * @ingroup Table - */ -EAPI void elm_table_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h); - +#ifdef EFL_EO_API_SUPPORT +#include "elm_table_eo.h" +#endif +#ifndef EFL_NOLEGACY_API_SUPPORT +#include "elm_table_legacy.h" +#endif /** * @} */ diff --git a/src/lib/elm_table_eo.h b/src/lib/elm_table_eo.h new file mode 100644 index 000000000..23e0c759f --- /dev/null +++ b/src/lib/elm_table_eo.h @@ -0,0 +1,162 @@ +#define ELM_OBJ_TABLE_CLASS elm_obj_table_class_get() + +const Eo_Class *elm_obj_table_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_TABLE_BASE_ID; + +enum +{ + ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET, + ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET, + ELM_OBJ_TABLE_SUB_ID_PADDING_SET, + ELM_OBJ_TABLE_SUB_ID_PADDING_GET, + ELM_OBJ_TABLE_SUB_ID_PACK, + ELM_OBJ_TABLE_SUB_ID_UNPACK, + ELM_OBJ_TABLE_SUB_ID_PACK_SET, + ELM_OBJ_TABLE_SUB_ID_PACK_GET, + ELM_OBJ_TABLE_SUB_ID_CLEAR, + ELM_OBJ_TABLE_SUB_ID_LAST +}; + +#define ELM_OBJ_TABLE_ID(sub_id) (ELM_OBJ_TABLE_BASE_ID + sub_id) + + +/** + * @def elm_obj_table_homogeneous_set + * @since 1.8 + * + * @brief Set the homogeneous layout in the table + * + * @param[in] homogeneous + * + * @see elm_table_homogeneous_set + * + * @ingroup Table + */ +#define elm_obj_table_homogeneous_set(homogeneous) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET), EO_TYPECHECK(Eina_Bool, homogeneous) + +/** + * @def elm_obj_table_homogeneous_get + * @since 1.8 + * + * @brief Get the current table homogeneous mode. + * + * @param[out] ret + * + * @see elm_table_homogeneous_get + * + * @ingroup Table + */ +#define elm_obj_table_homogeneous_get(ret) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_table_padding_set + * @since 1.8 + * + * @brief Set padding between cells. + * + * @param[in] horizontal + * @param[in] vertical + * + * @see elm_table_padding_set + * + * @ingroup Table + */ +#define elm_obj_table_padding_set(horizontal, vertical) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PADDING_SET), EO_TYPECHECK(Evas_Coord, horizontal), EO_TYPECHECK(Evas_Coord, vertical) + +/** + * @def elm_obj_table_padding_get + * @since 1.8 + * + * @brief Get padding between cells. + * + * @param[out] horizontal + * @param[out] vertical + * + * @see elm_table_padding_get + * + * @ingroup Table + */ +#define elm_obj_table_padding_get(horizontal, vertical) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PADDING_GET), EO_TYPECHECK(Evas_Coord *, horizontal), EO_TYPECHECK(Evas_Coord *, vertical) + +/** + * @def elm_obj_table_pack + * @since 1.8 + * + * @brief Add a subobject on the table with the coordinates passed + * + * @param[in] subobj + * @param[in] x + * @param[in] y + * @param[in] w + * @param[in] h + * + * @see elm_table_pack + * + * @ingroup Table + */ +#define elm_obj_table_pack(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h) + +/** + * @def elm_obj_table_unpack + * @since 1.8 + * + * @brief Remove child from table. + * + * @param[in] subobj + * + * @see elm_table_unpack + * + * @ingroup Table + */ +#define elm_obj_table_unpack(subobj) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_UNPACK), EO_TYPECHECK(Evas_Object *, subobj) + +/** + * @def elm_obj_table_pack_set + * @since 1.8 + * + * @brief Set the packing location of an existing child of the table + * + * @param[in] subobj + * @param[in] x + * @param[in] y + * @param[in] w + * @param[in] h + * + * @see elm_table_pack_set + * + * @ingroup Table + */ +#define elm_obj_table_pack_set(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK_SET), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h) + +/** + * @def elm_obj_table_pack_get + * @since 1.8 + * + * @brief Get the packing location of an existing child of the table + * + * @param[in] subobj + * @param[out] x + * @param[out] y + * @param[out] w + * @param[out] h + * + * @see elm_table_pack_get + * + * @ingroup Table + */ +#define elm_obj_table_pack_get(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK_GET), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h) + +/** + * @def elm_obj_table_clear + * @since 1.8 + * + * @brief Faster way to remove all child objects from a table object. + * + * @param[in] clear + * + * @see elm_table_clear + * + * @ingroup Table + */ +#define elm_obj_table_clear(clear) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_CLEAR), EO_TYPECHECK(Eina_Bool, clear) diff --git a/src/lib/elm_table_legacy.h b/src/lib/elm_table_legacy.h new file mode 100644 index 000000000..1a20529c0 --- /dev/null +++ b/src/lib/elm_table_legacy.h @@ -0,0 +1,127 @@ +/** + * @brief Add a new table to the parent + * + * @param parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup Table + */ +EAPI Evas_Object *elm_table_add(Evas_Object *parent); + +/** + * @brief Set the homogeneous layout in the table + * + * @param obj The layout object + * @param homogeneous A boolean to set if the layout is homogeneous in the + * table (EINA_TRUE = homogeneous, EINA_FALSE = no homogeneous) + * + * @ingroup Table + */ +EAPI void elm_table_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous); + +/** + * @brief Get the current table homogeneous mode. + * + * @param obj The table object + * @return A boolean to indicating if the layout is homogeneous in the table + * (EINA_TRUE = homogeneous, EINA_FALSE = no homogeneous) + * + * @ingroup Table + */ +EAPI Eina_Bool elm_table_homogeneous_get(const Evas_Object *obj); + +/** + * @brief Set padding between cells. + * + * @param obj The layout object. + * @param horizontal set the horizontal padding. + * @param vertical set the vertical padding. + * + * Default value is 0. + * + * @ingroup Table + */ +EAPI void elm_table_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical); + +/** + * @brief Get padding between cells. + * + * @param obj The layout object. + * @param horizontal set the horizontal padding. + * @param vertical set the vertical padding. + * + * @ingroup Table + */ +EAPI void elm_table_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical); + +/** + * @brief Add a subobject on the table with the coordinates passed + * + * @param obj The table object + * @param subobj The subobject to be added to the table + * @param x Row number + * @param y Column number + * @param w colspan + * @param h rowspan + * + * @note All positioning inside the table is relative to rows and columns, so + * a value of 0 for x and y, means the top left cell of the table, and a + * value of 1 for w and h means @p subobj only takes that 1 cell. + * + * @ingroup Table + */ +EAPI void elm_table_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h); + +/** + * @brief Remove child from table. + * + * @param obj The table object + * @param subobj The subobject + * + * @ingroup Table + */ +EAPI void elm_table_unpack(Evas_Object *obj, Evas_Object *subobj); + +/** + * @brief Set the packing location of an existing child of the table + * + * @param subobj The subobject to be modified in the table + * @param x Row number + * @param y Column number + * @param w rowspan + * @param h colspan + * + * Modifies the position of an object already in the table. + * + * @note All positioning inside the table is relative to rows and columns, so + * a value of 0 for x and y, means the top left cell of the table, and a + * value of 1 for w and h means @p subobj only takes that 1 cell. + * + * @ingroup Table + */ +EAPI void elm_table_pack_set(Evas_Object *subobj, int x, int y, int w, int h); + +/** + * @brief Get the packing location of an existing child of the table + * + * @param subobj The subobject to be modified in the table + * @param x Row number + * @param y Column number + * @param w rowspan + * @param h colspan + * + * @see elm_table_pack_set() + * + * @ingroup Table + */ +EAPI void elm_table_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h); + +/** + * @brief Faster way to remove all child objects from a table object. + * + * @param obj The table object + * @param clear If true, will delete children, else just remove from table. + * + * @ingroup Table + */ +EAPI void elm_table_clear(Evas_Object *obj, Eina_Bool clear); diff --git a/src/lib/elm_thumb.h b/src/lib/elm_thumb.h index 28a7299a1..7b0b1c747 100644 --- a/src/lib/elm_thumb.h +++ b/src/lib/elm_thumb.h @@ -51,339 +51,13 @@ * @{ */ -#define ELM_OBJ_THUMB_CLASS elm_obj_thumb_class_get() - -const Eo_Class *elm_obj_thumb_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_THUMB_BASE_ID; - -enum -{ - ELM_OBJ_THUMB_SUB_ID_RELOAD, - ELM_OBJ_THUMB_SUB_ID_FILE_SET, - ELM_OBJ_THUMB_SUB_ID_FILE_GET, - ELM_OBJ_THUMB_SUB_ID_PATH_GET, - ELM_OBJ_THUMB_SUB_ID_ANIMATE_SET, - ELM_OBJ_THUMB_SUB_ID_ANIMATE_GET, - ELM_OBJ_THUMB_SUB_ID_EDITABLE_SET, - ELM_OBJ_THUMB_SUB_ID_EDITABLE_GET, - ELM_OBJ_THUMB_SUB_ID_LAST -}; - -#define ELM_OBJ_THUMB_ID(sub_id) (ELM_OBJ_THUMB_BASE_ID + sub_id) - - -/** - * @def elm_obj_thumb_reload - * @since 1.8 - * - * Reload thumbnail if it was generated before. - * - * - * @see elm_thumb_reload - */ -#define elm_obj_thumb_reload() ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_RELOAD) - -/** - * @def elm_obj_thumb_file_set - * @since 1.8 - * - * Set the file that will be used as thumbnail source. - * - * @param[in] file - * @param[in] key - * - * @see elm_thumb_file_set - */ -#define elm_obj_thumb_file_set(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(const char *, key) - -/** - * @def elm_obj_thumb_file_get - * @since 1.8 - * - * Get the image or video path and key used to generate the thumbnail. - * - * @param[out] file - * @param[out] key - * - * @see elm_thumb_file_get - */ -#define elm_obj_thumb_file_get(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, key) - -/** - * @def elm_obj_thumb_path_get - * @since 1.8 - * - * Get the path and key to the image or video thumbnail generated by ethumb. - * - * @param[out] file - * @param[out] key - * - * @see elm_thumb_path_get - */ -#define elm_obj_thumb_path_get(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_PATH_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, key) - -/** - * @def elm_obj_thumb_animate_set - * @since 1.8 - * - * Set the animation state for the thumb object. If its content is an animated - * - * @param[in] setting - * - * @see elm_thumb_animate_set - */ -#define elm_obj_thumb_animate_set(setting) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_ANIMATE_SET), EO_TYPECHECK(Elm_Thumb_Animation_Setting, setting) - -/** - * @def elm_obj_thumb_animate_get - * @since 1.8 - * - * Get the animation state for the thumb object. - * - * @param[out] ret - * - * @see elm_thumb_animate_get - */ -#define elm_obj_thumb_animate_get(ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_ANIMATE_GET), EO_TYPECHECK(Elm_Thumb_Animation_Setting *, ret) - -/** - * @def elm_obj_thumb_editable_set - * @since 1.8 - * - * Make the thumbnail 'editable'. - * - * @param[in] edit - * @param[out] ret - * - * @see elm_thumb_editable_set - */ -#define elm_obj_thumb_editable_set(edit, ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_EDITABLE_SET), EO_TYPECHECK(Eina_Bool, edit), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_thumb_editable_get - * @since 1.8 - * - * Make the thumbnail 'editable'. - * - * @param[out] ret - * - * @see elm_thumb_editable_get - */ -#define elm_obj_thumb_editable_get(ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_EDITABLE_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @enum Elm_Thumb_Animation_Setting - * @typedef Elm_Thumb_Animation_Setting - * - * Used to set if a video thumbnail is animating or not. - * - * @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; - -/** - * Add a new thumb object to the parent. - * - * @param parent The parent object. - * @return The new object or 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); - -/** - * Reload thumbnail if it was generated before. - * - * @param obj The thumb object to reload - * - * 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(). - * - * If the options didn't change, the thumbnail won't be generated again, but - * the old one will still be used. - * - * @see elm_thumb_file_set() - * - * @ingroup Thumb - */ -EAPI void elm_thumb_reload(Evas_Object *obj); - -/** - * Set the file that will be used as thumbnail @b source. - * - * @param obj The thumb object. - * @param file The path to file that will be used as thumbnail source. - * @param key The key used in case of an EET file. - * - * 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(). - * - * @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); - -/** - * Get the image or video path and key used to generate the thumbnail. - * - * @param obj The thumb object. - * @param file Pointer to filename. - * @param key Pointer to 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); - -/** - * Get the path and key to the image or video thumbnail generated by ethumb. - * - * One just needs to make sure that the thumbnail was generated before getting - * its path; otherwise, the path will be NULL. One way to do that is by asking - * for the path when/after the "generate,stop" smart callback is called. - * - * @param obj The thumb object. - * @param file Pointer to thumb path. - * @param key Pointer to 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); - -/** - * Set 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 obj The thumb object. - * @param 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); - -/** - * Get the animation state for the thumb object. - * - * @param obj The thumb object. - * @return getting The animation setting or @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); - -/** - * Get the ethumb_client handle so custom configuration can be made. - * - * @return Ethumb_Client instance or NULL. - * - * This must be called before the objects are created to be sure no object is - * visible and no generation 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 - * - * @note 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) will use that configuration. Thus, this configuration is global. - * - * @ingroup Thumb - */ -EAPI void *elm_thumb_ethumb_client_get(void); - -/** - * Get the ethumb_client connection state. - * - * @return EINA_TRUE if the client is connected to the server or EINA_FALSE - * otherwise. - */ -EAPI Eina_Bool elm_thumb_ethumb_client_connected_get(void); - -/** - * Make the thumbnail 'editable'. - * - * @param obj Thumb object. - * @param edit Turn on or off editability. Default is @c EINA_FALSE. - * - * This means the thumbnail is a valid drag target for drag and drop, and can be - * cut or pasted too. - * - * @see elm_thumb_editable_get() - * - * @ingroup Thumb - */ -EAPI Eina_Bool elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit); - -/** - * Make the thumbnail 'editable'. - * - * @param obj Thumb object. - * @return Editability. - * - * This means the thumbnail is a valid drag target for drag and drop, and can be - * cut or pasted too. - * - * @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_thumb_common.h b/src/lib/elm_thumb_common.h new file mode 100644 index 000000000..4718da7dc --- /dev/null +++ b/src/lib/elm_thumb_common.h @@ -0,0 +1,74 @@ +/** + * @enum Elm_Thumb_Animation_Setting + * @typedef Elm_Thumb_Animation_Setting + * + * Used to set if a video thumbnail is animating or not. + * + * @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; + +/** + * Get the ethumb_client handle so custom configuration can be made. + * + * @return Ethumb_Client instance or NULL. + * + * This must be called before the objects are created to be sure no object is + * visible and no generation 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 + * + * @note 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) will use that configuration. Thus, this configuration is global. + * + * @ingroup Thumb + */ +EAPI void *elm_thumb_ethumb_client_get(void); + +/** + * Get the ethumb_client connection state. + * + * @return EINA_TRUE if the client is connected to the server or EINA_FALSE + * otherwise. + */ +EAPI Eina_Bool elm_thumb_ethumb_client_connected_get(void); + diff --git a/src/lib/elm_thumb_eo.h b/src/lib/elm_thumb_eo.h new file mode 100644 index 000000000..f80229127 --- /dev/null +++ b/src/lib/elm_thumb_eo.h @@ -0,0 +1,136 @@ +#define ELM_OBJ_THUMB_CLASS elm_obj_thumb_class_get() + +const Eo_Class *elm_obj_thumb_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_THUMB_BASE_ID; + +enum +{ + ELM_OBJ_THUMB_SUB_ID_RELOAD, + ELM_OBJ_THUMB_SUB_ID_FILE_SET, + ELM_OBJ_THUMB_SUB_ID_FILE_GET, + ELM_OBJ_THUMB_SUB_ID_PATH_GET, + ELM_OBJ_THUMB_SUB_ID_ANIMATE_SET, + ELM_OBJ_THUMB_SUB_ID_ANIMATE_GET, + ELM_OBJ_THUMB_SUB_ID_EDITABLE_SET, + ELM_OBJ_THUMB_SUB_ID_EDITABLE_GET, + ELM_OBJ_THUMB_SUB_ID_LAST +}; + +#define ELM_OBJ_THUMB_ID(sub_id) (ELM_OBJ_THUMB_BASE_ID + sub_id) + + +/** + * @def elm_obj_thumb_reload + * @since 1.8 + * + * Reload thumbnail if it was generated before. + * + * + * @see elm_thumb_reload + * + * @ingroup Thumb + */ +#define elm_obj_thumb_reload() ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_RELOAD) + +/** + * @def elm_obj_thumb_file_set + * @since 1.8 + * + * Set the file that will be used as thumbnail source. + * + * @param[in] file + * @param[in] key + * + * @see elm_thumb_file_set + * + * @ingroup Thumb + */ +#define elm_obj_thumb_file_set(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(const char *, key) + +/** + * @def elm_obj_thumb_file_get + * @since 1.8 + * + * Get the image or video path and key used to generate the thumbnail. + * + * @param[out] file + * @param[out] key + * + * @see elm_thumb_file_get + * + * @ingroup Thumb + */ +#define elm_obj_thumb_file_get(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, key) + +/** + * @def elm_obj_thumb_path_get + * @since 1.8 + * + * Get the path and key to the image or video thumbnail generated by ethumb. + * + * @param[out] file + * @param[out] key + * + * @see elm_thumb_path_get + * + * @ingroup Thumb + */ +#define elm_obj_thumb_path_get(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_PATH_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, key) + +/** + * @def elm_obj_thumb_animate_set + * @since 1.8 + * + * Set the animation state for the thumb object. If its content is an animated + * + * @param[in] setting + * + * @see elm_thumb_animate_set + * + * @ingroup Thumb + */ +#define elm_obj_thumb_animate_set(setting) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_ANIMATE_SET), EO_TYPECHECK(Elm_Thumb_Animation_Setting, setting) + +/** + * @def elm_obj_thumb_animate_get + * @since 1.8 + * + * Get the animation state for the thumb object. + * + * @param[out] ret + * + * @see elm_thumb_animate_get + * + * @ingroup Thumb + */ +#define elm_obj_thumb_animate_get(ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_ANIMATE_GET), EO_TYPECHECK(Elm_Thumb_Animation_Setting *, ret) + +/** + * @def elm_obj_thumb_editable_set + * @since 1.8 + * + * Make the thumbnail 'editable'. + * + * @param[in] edit + * @param[out] ret + * + * @see elm_thumb_editable_set + * + * @ingroup Thumb + */ +#define elm_obj_thumb_editable_set(edit, ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_EDITABLE_SET), EO_TYPECHECK(Eina_Bool, edit), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_thumb_editable_get + * @since 1.8 + * + * Make the thumbnail 'editable'. + * + * @param[out] ret + * + * @see elm_thumb_editable_get + * + * @ingroup Thumb + */ +#define elm_obj_thumb_editable_get(ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_EDITABLE_GET), EO_TYPECHECK(Eina_Bool *, ret) diff --git a/src/lib/elm_thumb_legacy.h b/src/lib/elm_thumb_legacy.h new file mode 100644 index 000000000..c7963bcfe --- /dev/null +++ b/src/lib/elm_thumb_legacy.h @@ -0,0 +1,137 @@ +/** + * Add a new thumb object to the parent. + * + * @param parent The parent object. + * @return The new object or 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); + +/** + * Reload thumbnail if it was generated before. + * + * @param obj The thumb object to reload + * + * 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(). + * + * If the options didn't change, the thumbnail won't be generated again, but + * the old one will still be used. + * + * @see elm_thumb_file_set() + * + * @ingroup Thumb + */ +EAPI void elm_thumb_reload(Evas_Object *obj); + +/** + * Set the file that will be used as thumbnail @b source. + * + * @param obj The thumb object. + * @param file The path to file that will be used as thumbnail source. + * @param key The key used in case of an EET file. + * + * 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(). + * + * @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); + +/** + * Get the image or video path and key used to generate the thumbnail. + * + * @param obj The thumb object. + * @param file Pointer to filename. + * @param key Pointer to 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); + +/** + * Get the path and key to the image or video thumbnail generated by ethumb. + * + * One just needs to make sure that the thumbnail was generated before getting + * its path; otherwise, the path will be NULL. One way to do that is by asking + * for the path when/after the "generate,stop" smart callback is called. + * + * @param obj The thumb object. + * @param file Pointer to thumb path. + * @param key Pointer to 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); + +/** + * Set 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 obj The thumb object. + * @param 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); + +/** + * Get the animation state for the thumb object. + * + * @param obj The thumb object. + * @return getting The animation setting or @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); + +/** + * Make the thumbnail 'editable'. + * + * @param obj Thumb object. + * @param edit Turn on or off editability. Default is @c EINA_FALSE. + * + * This means the thumbnail is a valid drag target for drag and drop, and can be + * cut or pasted too. + * + * @see elm_thumb_editable_get() + * + * @ingroup Thumb + */ +EAPI Eina_Bool elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit); + +/** + * Make the thumbnail 'editable'. + * + * @param obj Thumb object. + * @return Editability. + * + * This means the thumbnail is a valid drag target for drag and drop, and can be + * cut or pasted too. + * + * @see elm_thumb_editable_set() + * + * @ingroup Thumb + */ +EAPI Eina_Bool elm_thumb_editable_get(const Evas_Object *obj); diff --git a/src/lib/elm_video.h b/src/lib/elm_video.h index 4d68022df..e65c804e6 100644 --- a/src/lib/elm_video.h +++ b/src/lib/elm_video.h @@ -48,484 +48,13 @@ /** * ELM_OBJ_PLAYER_CLASS */ -#define ELM_OBJ_PLAYER_CLASS elm_obj_player_class_get() -const Eo_Class *elm_obj_player_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_PLAYER_BASE_ID; - -enum -{ - ELM_OBJ_PLAYER_SUB_ID_LAST -}; - -#define ELM_OBJ_PLAYER_ID(sub_id) (ELM_OBJ_PLAYER_BASE_ID + sub_id) - -/** - * ELM_OBJ_VIDEO_CLASS - */ -#define ELM_OBJ_VIDEO_CLASS elm_obj_video_class_get() - -const Eo_Class *elm_obj_video_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_VIDEO_BASE_ID; - -enum -{ - ELM_OBJ_VIDEO_SUB_ID_FILE_SET, - ELM_OBJ_VIDEO_SUB_ID_EMOTION_GET, - ELM_OBJ_VIDEO_SUB_ID_PLAY, - ELM_OBJ_VIDEO_SUB_ID_PAUSE, - ELM_OBJ_VIDEO_SUB_ID_STOP, - ELM_OBJ_VIDEO_SUB_ID_IS_PLAYING_GET, - ELM_OBJ_VIDEO_SUB_ID_IS_SEEKABLE_GET, - ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_GET, - ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_SET, - ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_GET, - ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_SET, - ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_GET, - ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_SET, - ELM_OBJ_VIDEO_SUB_ID_PLAY_LENGTH_GET, - ELM_OBJ_VIDEO_SUB_ID_TITLE_GET, - ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_SET, - ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_GET, - ELM_OBJ_VIDEO_SUB_ID_LAST -}; - -#define ELM_OBJ_VIDEO_ID(sub_id) (ELM_OBJ_VIDEO_BASE_ID + sub_id) - - -/** - * @def elm_obj_video_file_set - * @since 1.8 - * - * @brief Define the file or URI that will be the video source. - * - * @param[in] filename - * @param[out] ret - * - * @see elm_video_file_set - */ -#define elm_obj_video_file_set(filename, ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, filename), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_video_emotion_get - * @since 1.8 - * - * @brief Get the underlying Emotion object. - * - * @param[out] ret - * - * @see elm_video_emotion_get - */ -#define elm_obj_video_emotion_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_EMOTION_GET), EO_TYPECHECK(Evas_Object **, ret) - -/** - * @def elm_obj_video_play - * @since 1.8 - * - * @brief Start to play the video - * - * - * @see elm_video_play - */ -#define elm_obj_video_play() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY) - -/** - * @def elm_obj_video_pause - * @since 1.8 - * - * @brief Pause the video - * - * - * @see elm_video_pause - */ -#define elm_obj_video_pause() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PAUSE) - -/** - * @def elm_obj_video_stop - * @since 1.8 - * - * @brief Stop the video - * - * - * @see elm_video_stop - */ -#define elm_obj_video_stop() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_STOP) - -/** - * @def elm_obj_video_is_playing_get - * @since 1.8 - * - * @brief Is the video actually playing. - * - * @param[out] ret - * - * @see elm_video_is_playing_get - */ -#define elm_obj_video_is_playing_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_IS_PLAYING_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_video_is_seekable_get - * @since 1.8 - * - * @brief Is it possible to seek inside the video. - * - * @param[out] ret - * - * @see elm_video_is_seekable_get - */ -#define elm_obj_video_is_seekable_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_IS_SEEKABLE_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_video_audio_mute_get - * @since 1.8 - * - * @brief Is the audio muted. - * - * @param[out] ret - * - * @see elm_video_audio_mute_get - */ -#define elm_obj_video_audio_mute_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_video_audio_mute_set - * @since 1.8 - * - * @brief Change the mute state of the Elm_Video object. - * - * @param[in] mute - * - * @see elm_video_audio_mute_set - */ -#define elm_obj_video_audio_mute_set(mute) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_SET), EO_TYPECHECK(Eina_Bool, mute) - -/** - * @def elm_obj_video_audio_level_get - * @since 1.8 - * - * @brief Get the audio level of the current video. - * - * @param[out] ret - * - * @see elm_video_audio_level_get - */ -#define elm_obj_video_audio_level_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_video_audio_level_set - * @since 1.8 - * - * @brief Set the audio level of an Elm_Video object. - * - * @param[in] volume - * - * @see elm_video_audio_level_set - */ -#define elm_obj_video_audio_level_set(volume) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_SET), EO_TYPECHECK(double, volume) - -/** - * @def elm_obj_video_play_position_get - * @since 1.8 - * - * @brief Get the current position (in seconds) being played in the - * Elm_Video object. - * - * @param[out] ret - * - * @see elm_video_play_position_get - */ -#define elm_obj_video_play_position_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_video_play_position_set - * @since 1.8 - * - * @brief Set the current position (in seconds) to be played in the - * Elm_Video object. - * - * @param[in] position - * - * @see elm_video_play_position_set - */ -#define elm_obj_video_play_position_set(position) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_SET), EO_TYPECHECK(double, position) - -/** - * @def elm_obj_video_play_length_get - * @since 1.8 - * - * @brief Get the total playing time (in seconds) of the Elm_Video object. - * - * @param[out] ret - * - * @see elm_video_play_length_get - */ -#define elm_obj_video_play_length_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_LENGTH_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_video_title_get - * @since 1.8 - * - * @brief Get the title (for instance DVD title) from this emotion object. - * - * @param[out] ret - * - * @see elm_video_title_get - */ -#define elm_obj_video_title_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_TITLE_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_video_remember_position_set - * @since 1.8 - * - * @brief Set whether the object can remember the last played position. - * - * @param[in] remember - * - * @see elm_video_remember_position_set - */ -#define elm_obj_video_remember_position_set(remember) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_SET), EO_TYPECHECK(Eina_Bool, remember) - -/** - * @def elm_obj_video_remember_position_get - * @since 1.8 - * - * @brief Set whether the object can remember the last played position. - * - * @param[out] ret - * - * @see elm_video_remember_position_get - */ -#define elm_obj_video_remember_position_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @brief Add a new Elm_Player object to the given parent Elementary (container) object. - * - * @param parent The parent object - * @return a new player widget handle or @c NULL, on errors. - * - * This function inserts a new player widget on the canvas. - * - * @see elm_object_part_content_set() - * - * @ingroup Video - */ -EAPI Evas_Object *elm_player_add(Evas_Object *parent); - -/** - * @brief Add a new Elm_Video object to the given parent Elementary (container) object. - * - * @param parent The parent object - * @return a new video widget handle or @c NULL, on errors. - * - * This function inserts a new video widget on the canvas. - * - * @see elm_video_file_set() - * - * @ingroup Video - */ -EAPI Evas_Object *elm_video_add(Evas_Object *parent); - -/** - * @brief Define the file or URI that will be the video source. - * - * @param video The video object to define the file or URI for the video - * of the Elm_Video object. - * - * @param filename The file or URI to target. - * Local files can be specified using file:// or by using full file paths. - * URI could be remote source of video, like http:// or 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, @c EINA_FALSE otherwise - * - * This function will explicitly define a file or URI as a source - * for the video of the Elm_Video object. - * - * @see elm_video_add() - * @see elm_player_add() - * - * @ingroup Video - */ -EAPI Eina_Bool elm_video_file_set(Evas_Object *video, const char *filename); - -/** - * @brief Get the underlying Emotion object. - * - * @param video The video object to proceed the request on. - * @return the underlying Emotion object. - * - * @ingroup Video - */ -EAPI Evas_Object *elm_video_emotion_get(const Evas_Object *video); - -/** - * @brief Start to play the video - * - * @param video The video object to proceed the request on. - * - * Start to play the video and cancel all suspend state. - * - * @ingroup Video - */ -EAPI void elm_video_play(Evas_Object *video); - -/** - * @brief Pause the video - * - * @param video The video object to proceed the request on. - * - * Pause the video and start a timer to trigger suspend mode. - * - * @ingroup Video - */ -EAPI void elm_video_pause(Evas_Object *video); - -/** - * @brief Stop the video - * - * @param video The video object to proceed the request on. - * - * Stop the video and put the emotion in deep sleep mode. - * - * @ingroup Video - */ -EAPI void elm_video_stop(Evas_Object *video); - -/** - * @brief Is the video actually playing. - * - * @param video The video object to proceed the request on. - * @return @c EINA_TRUE if the video is actually playing. - * - * You should consider watching event on the object instead of polling - * the object state. - * - * @ingroup Video - */ -EAPI Eina_Bool elm_video_is_playing_get(const Evas_Object *video); - -/** - * @brief Is it possible to seek inside the video. - * - * @param video The video object to proceed the request on. - * @return @c EINA_TRUE if is possible to seek inside the video. - * - * @ingroup Video - */ -EAPI Eina_Bool elm_video_is_seekable_get(const Evas_Object *video); - -/** - * @brief Is the audio muted. - * - * @param video The video object to proceed the request on. - * @return @c EINA_TRUE if the audio is muted. - * - * @ingroup Video - */ -EAPI Eina_Bool elm_video_audio_mute_get(const Evas_Object *video); - -/** - * @brief Change the mute state of the Elm_Video object. - * - * @param video The video object to proceed the request on. - * @param mute The new mute state. - * - * @ingroup Video - */ -EAPI void elm_video_audio_mute_set(Evas_Object *video, Eina_Bool mute); - -/** - * @brief Get the audio level of the current video. - * - * @param video The video object to proceed the request on. - * @return the current audio level. - * - * @ingroup Video - */ -EAPI double elm_video_audio_level_get(const Evas_Object *video); - -/** - * @brief Set the audio level of an Elm_Video object. - * - * @param video The video object to proceed the request on. - * @param volume The new audio volume. - * - * @ingroup Video - */ -EAPI void elm_video_audio_level_set(Evas_Object *video, double volume); - -/** - * @brief Get the current position (in seconds) being played in the - * Elm_Video object. - * - * @param video The video object. - * @return The time (in seconds) since the beginning of the media file. - * - * @ingroup Video - */ -EAPI double elm_video_play_position_get(const Evas_Object *video); - -/** - * @brief Set the current position (in seconds) to be played in the - * Elm_Video object. - * - * @param video The video object. - * @param position The time (in seconds) since the beginning of the media file. - * - * @ingroup Video - */ -EAPI void elm_video_play_position_set(Evas_Object *video, double position); -/** - * @brief Get the total playing time (in seconds) of the Elm_Video object. - * - * @param video The video object. - * @return The total duration (in seconds) of the media file. - * - * @ingroup Video - */ -EAPI double elm_video_play_length_get(const Evas_Object *video); - -/** - * @brief Set whether the object can remember the last played position. - * - * @param video The video object. - * @param remember the last played position of the Elm_Video object. - * - * @note This API only serves as indication. System support is required. - * - * @ingroup Video - */ -EAPI void elm_video_remember_position_set(Evas_Object *video, Eina_Bool remember); - -/** - * @brief Set whether the object can remember the last played position. - * - * @param video The video object. - * @return whether the object remembers the last played position (@c EINA_TRUE) - * or not. - * - * @note This API only serves as indication. System support is required. - * - * @ingroup Video - */ -EAPI Eina_Bool elm_video_remember_position_get(const Evas_Object *video); - -/** - * @brief Get the title (for instance DVD title) from this emotion object. - * - * @param video The Elm_Video object. - * @return A string containing the title. - * - * This function is only useful when playing a DVD. - * - * @note Don't change or free the string returned by this function. - * - * @ingroup Video - */ -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_video_eo.h b/src/lib/elm_video_eo.h new file mode 100644 index 000000000..6baa254b6 --- /dev/null +++ b/src/lib/elm_video_eo.h @@ -0,0 +1,284 @@ +#define ELM_OBJ_PLAYER_CLASS elm_obj_player_class_get() + +const Eo_Class *elm_obj_player_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_PLAYER_BASE_ID; + +enum +{ + ELM_OBJ_PLAYER_SUB_ID_LAST +}; + +#define ELM_OBJ_PLAYER_ID(sub_id) (ELM_OBJ_PLAYER_BASE_ID + sub_id) + +/** + * ELM_OBJ_VIDEO_CLASS + */ +#define ELM_OBJ_VIDEO_CLASS elm_obj_video_class_get() + +const Eo_Class *elm_obj_video_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_VIDEO_BASE_ID; + +enum +{ + ELM_OBJ_VIDEO_SUB_ID_FILE_SET, + ELM_OBJ_VIDEO_SUB_ID_EMOTION_GET, + ELM_OBJ_VIDEO_SUB_ID_PLAY, + ELM_OBJ_VIDEO_SUB_ID_PAUSE, + ELM_OBJ_VIDEO_SUB_ID_STOP, + ELM_OBJ_VIDEO_SUB_ID_IS_PLAYING_GET, + ELM_OBJ_VIDEO_SUB_ID_IS_SEEKABLE_GET, + ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_GET, + ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_SET, + ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_GET, + ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_SET, + ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_GET, + ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_SET, + ELM_OBJ_VIDEO_SUB_ID_PLAY_LENGTH_GET, + ELM_OBJ_VIDEO_SUB_ID_TITLE_GET, + ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_SET, + ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_GET, + ELM_OBJ_VIDEO_SUB_ID_LAST +}; + +#define ELM_OBJ_VIDEO_ID(sub_id) (ELM_OBJ_VIDEO_BASE_ID + sub_id) + + +/** + * @def elm_obj_video_file_set + * @since 1.8 + * + * @brief Define the file or URI that will be the video source. + * + * @param[in] filename + * @param[out] ret + * + * @see elm_video_file_set + * + * @ingroup Video + */ +#define elm_obj_video_file_set(filename, ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, filename), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_video_emotion_get + * @since 1.8 + * + * @brief Get the underlying Emotion object. + * + * @param[out] ret + * + * @see elm_video_emotion_get + * + * @ingroup Video + */ +#define elm_obj_video_emotion_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_EMOTION_GET), EO_TYPECHECK(Evas_Object **, ret) + +/** + * @def elm_obj_video_play + * @since 1.8 + * + * @brief Start to play the video + * + * + * @see elm_video_play + * + * @ingroup Video + */ +#define elm_obj_video_play() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY) + +/** + * @def elm_obj_video_pause + * @since 1.8 + * + * @brief Pause the video + * + * + * @see elm_video_pause + * + * @ingroup Video + */ +#define elm_obj_video_pause() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PAUSE) + +/** + * @def elm_obj_video_stop + * @since 1.8 + * + * @brief Stop the video + * + * + * @see elm_video_stop + * + * @ingroup Video + */ +#define elm_obj_video_stop() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_STOP) + +/** + * @def elm_obj_video_is_playing_get + * @since 1.8 + * + * @brief Is the video actually playing. + * + * @param[out] ret + * + * @see elm_video_is_playing_get + * + * @ingroup Video + */ +#define elm_obj_video_is_playing_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_IS_PLAYING_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_video_is_seekable_get + * @since 1.8 + * + * @brief Is it possible to seek inside the video. + * + * @param[out] ret + * + * @see elm_video_is_seekable_get + * + * @ingroup Video + */ +#define elm_obj_video_is_seekable_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_IS_SEEKABLE_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_video_audio_mute_get + * @since 1.8 + * + * @brief Is the audio muted. + * + * @param[out] ret + * + * @see elm_video_audio_mute_get + * + * @ingroup Video + */ +#define elm_obj_video_audio_mute_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_video_audio_mute_set + * @since 1.8 + * + * @brief Change the mute state of the Elm_Video object. + * + * @param[in] mute + * + * @see elm_video_audio_mute_set + * + * @ingroup Video + */ +#define elm_obj_video_audio_mute_set(mute) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_SET), EO_TYPECHECK(Eina_Bool, mute) + +/** + * @def elm_obj_video_audio_level_get + * @since 1.8 + * + * @brief Get the audio level of the current video. + * + * @param[out] ret + * + * @see elm_video_audio_level_get + * + * @ingroup Video + */ +#define elm_obj_video_audio_level_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_video_audio_level_set + * @since 1.8 + * + * @brief Set the audio level of an Elm_Video object. + * + * @param[in] volume + * + * @see elm_video_audio_level_set + * + * @ingroup Video + */ +#define elm_obj_video_audio_level_set(volume) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_SET), EO_TYPECHECK(double, volume) + +/** + * @def elm_obj_video_play_position_get + * @since 1.8 + * + * @brief Get the current position (in seconds) being played in the + * Elm_Video object. + * + * @param[out] ret + * + * @see elm_video_play_position_get + * + * @ingroup Video + */ +#define elm_obj_video_play_position_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_video_play_position_set + * @since 1.8 + * + * @brief Set the current position (in seconds) to be played in the + * Elm_Video object. + * + * @param[in] position + * + * @see elm_video_play_position_set + * + * @ingroup Video + */ +#define elm_obj_video_play_position_set(position) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_SET), EO_TYPECHECK(double, position) + +/** + * @def elm_obj_video_play_length_get + * @since 1.8 + * + * @brief Get the total playing time (in seconds) of the Elm_Video object. + * + * @param[out] ret + * + * @see elm_video_play_length_get + * + * @ingroup Video + */ +#define elm_obj_video_play_length_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_LENGTH_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_video_title_get + * @since 1.8 + * + * @brief Get the title (for instance DVD title) from this emotion object. + * + * @param[out] ret + * + * @see elm_video_title_get + * + * @ingroup Video + */ +#define elm_obj_video_title_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_TITLE_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_video_remember_position_set + * @since 1.8 + * + * @brief Set whether the object can remember the last played position. + * + * @param[in] remember + * + * @see elm_video_remember_position_set + * + * @ingroup Video + */ +#define elm_obj_video_remember_position_set(remember) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_SET), EO_TYPECHECK(Eina_Bool, remember) + +/** + * @def elm_obj_video_remember_position_get + * @since 1.8 + * + * @brief Set whether the object can remember the last played position. + * + * @param[out] ret + * + * @see elm_video_remember_position_get + * + * @ingroup Video + */ +#define elm_obj_video_remember_position_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_GET), EO_TYPECHECK(Eina_Bool *, ret) diff --git a/src/lib/elm_video_legacy.h b/src/lib/elm_video_legacy.h new file mode 100644 index 000000000..ddd30c6e9 --- /dev/null +++ b/src/lib/elm_video_legacy.h @@ -0,0 +1,228 @@ +/** + * @brief Add a new Elm_Player object to the given parent Elementary (container) object. + * + * @param parent The parent object + * @return a new player widget handle or @c NULL, on errors. + * + * This function inserts a new player widget on the canvas. + * + * @see elm_object_part_content_set() + * + * @ingroup Video + */ +EAPI Evas_Object *elm_player_add(Evas_Object *parent); + +/** + * @brief Add a new Elm_Video object to the given parent Elementary (container) object. + * + * @param parent The parent object + * @return a new video widget handle or @c NULL, on errors. + * + * This function inserts a new video widget on the canvas. + * + * @see elm_video_file_set() + * + * @ingroup Video + */ +EAPI Evas_Object *elm_video_add(Evas_Object *parent); + +/** + * @brief Define the file or URI that will be the video source. + * + * @param video The video object to define the file or URI for the video + * of the Elm_Video object. + * + * @param filename The file or URI to target. + * Local files can be specified using file:// or by using full file paths. + * URI could be remote source of video, like http:// or 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, @c EINA_FALSE otherwise + * + * This function will explicitly define a file or URI as a source + * for the video of the Elm_Video object. + * + * @see elm_video_add() + * @see elm_player_add() + * + * @ingroup Video + */ +EAPI Eina_Bool elm_video_file_set(Evas_Object *video, const char *filename); + +/** + * @brief Get the underlying Emotion object. + * + * @param video The video object to proceed the request on. + * @return the underlying Emotion object. + * + * @ingroup Video + */ +EAPI Evas_Object *elm_video_emotion_get(const Evas_Object *video); + +/** + * @brief Start to play the video + * + * @param video The video object to proceed the request on. + * + * Start to play the video and cancel all suspend state. + * + * @ingroup Video + */ +EAPI void elm_video_play(Evas_Object *video); + +/** + * @brief Pause the video + * + * @param video The video object to proceed the request on. + * + * Pause the video and start a timer to trigger suspend mode. + * + * @ingroup Video + */ +EAPI void elm_video_pause(Evas_Object *video); + +/** + * @brief Stop the video + * + * @param video The video object to proceed the request on. + * + * Stop the video and put the emotion in deep sleep mode. + * + * @ingroup Video + */ +EAPI void elm_video_stop(Evas_Object *video); + +/** + * @brief Is the video actually playing. + * + * @param video The video object to proceed the request on. + * @return @c EINA_TRUE if the video is actually playing. + * + * You should consider watching event on the object instead of polling + * the object state. + * + * @ingroup Video + */ +EAPI Eina_Bool elm_video_is_playing_get(const Evas_Object *video); + +/** + * @brief Is it possible to seek inside the video. + * + * @param video The video object to proceed the request on. + * @return @c EINA_TRUE if is possible to seek inside the video. + * + * @ingroup Video + */ +EAPI Eina_Bool elm_video_is_seekable_get(const Evas_Object *video); + +/** + * @brief Is the audio muted. + * + * @param video The video object to proceed the request on. + * @return @c EINA_TRUE if the audio is muted. + * + * @ingroup Video + */ +EAPI Eina_Bool elm_video_audio_mute_get(const Evas_Object *video); + +/** + * @brief Change the mute state of the Elm_Video object. + * + * @param video The video object to proceed the request on. + * @param mute The new mute state. + * + * @ingroup Video + */ +EAPI void elm_video_audio_mute_set(Evas_Object *video, Eina_Bool mute); + +/** + * @brief Get the audio level of the current video. + * + * @param video The video object to proceed the request on. + * @return the current audio level. + * + * @ingroup Video + */ +EAPI double elm_video_audio_level_get(const Evas_Object *video); + +/** + * @brief Set the audio level of an Elm_Video object. + * + * @param video The video object to proceed the request on. + * @param volume The new audio volume. + * + * @ingroup Video + */ +EAPI void elm_video_audio_level_set(Evas_Object *video, double volume); + +/** + * @brief Get the current position (in seconds) being played in the + * Elm_Video object. + * + * @param video The video object. + * @return The time (in seconds) since the beginning of the media file. + * + * @ingroup Video + */ +EAPI double elm_video_play_position_get(const Evas_Object *video); + +/** + * @brief Set the current position (in seconds) to be played in the + * Elm_Video object. + * + * @param video The video object. + * @param position The time (in seconds) since the beginning of the media file. + * + * @ingroup Video + */ +EAPI void elm_video_play_position_set(Evas_Object *video, double position); +/** + * @brief Get the total playing time (in seconds) of the Elm_Video object. + * + * @param video The video object. + * @return The total duration (in seconds) of the media file. + * + * @ingroup Video + */ +EAPI double elm_video_play_length_get(const Evas_Object *video); + +/** + * @brief Set whether the object can remember the last played position. + * + * @param video The video object. + * @param remember the last played position of the Elm_Video object. + * + * @note This API only serves as indication. System support is required. + * + * @ingroup Video + */ +EAPI void elm_video_remember_position_set(Evas_Object *video, Eina_Bool remember); + +/** + * @brief Set whether the object can remember the last played position. + * + * @param video The video object. + * @return whether the object remembers the last played position (@c EINA_TRUE) + * or not. + * + * @note This API only serves as indication. System support is required. + * + * @ingroup Video + */ +EAPI Eina_Bool elm_video_remember_position_get(const Evas_Object *video); + +/** + * @brief Get the title (for instance DVD title) from this emotion object. + * + * @param video The Elm_Video object. + * @return A string containing the title. + * + * This function is only useful when playing a DVD. + * + * @note Don't change or free the string returned by this function. + * + * @ingroup Video + */ +EAPI const char *elm_video_title_get(const Evas_Object *video); + diff --git a/src/lib/elm_web.h b/src/lib/elm_web.h index c3eca551a..daa484d96 100644 --- a/src/lib/elm_web.h +++ b/src/lib/elm_web.h @@ -84,1590 +84,18 @@ * - @ref web_example_02 */ -#define ELM_OBJ_WEB_CLASS elm_obj_web_class_get() - -const Eo_Class *elm_obj_web_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_WEB_BASE_ID; - -enum -{ - ELM_OBJ_WEB_SUB_ID_WEBKIT_VIEW_GET, - ELM_OBJ_WEB_SUB_ID_WINDOW_CREATE_HOOK_SET, - ELM_OBJ_WEB_SUB_ID_DIALOG_ALERT_HOOK_SET, - ELM_OBJ_WEB_SUB_ID_DIALOG_CONFIRM_HOOK_SET, - ELM_OBJ_WEB_SUB_ID_DIALOG_PROMPT_HOOK_SET, - ELM_OBJ_WEB_SUB_ID_DIALOG_FILE_SELECTOR_HOOK_SET, - ELM_OBJ_WEB_SUB_ID_CONSOLE_MESSAGE_HOOK_SET, - ELM_OBJ_WEB_SUB_ID_USERAGENT_SET, - ELM_OBJ_WEB_SUB_ID_USERAGENT_GET, - ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_GET, - ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET, - ELM_OBJ_WEB_SUB_ID_URI_SET, - ELM_OBJ_WEB_SUB_ID_URI_GET, - ELM_OBJ_WEB_SUB_ID_TITLE_GET, - ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET, - ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET, - ELM_OBJ_WEB_SUB_ID_SELECTION_GET, - ELM_OBJ_WEB_SUB_ID_POPUP_SELECTED_SET, - ELM_OBJ_WEB_SUB_ID_POPUP_DESTROY, - ELM_OBJ_WEB_SUB_ID_TEXT_SEARCH, - ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_MARK, - ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_UNMARK_ALL, - ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_SET, - ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_GET, - ELM_OBJ_WEB_SUB_ID_LOAD_PROGRESS_GET, - ELM_OBJ_WEB_SUB_ID_STOP, - ELM_OBJ_WEB_SUB_ID_RELOAD, - ELM_OBJ_WEB_SUB_ID_RELOAD_FULL, - ELM_OBJ_WEB_SUB_ID_BACK, - ELM_OBJ_WEB_SUB_ID_FORWARD, - ELM_OBJ_WEB_SUB_ID_NAVIGATE, - ELM_OBJ_WEB_SUB_ID_BACK_POSSIBLE_GET, - ELM_OBJ_WEB_SUB_ID_FORWARD_POSSIBLE_GET, - ELM_OBJ_WEB_SUB_ID_NAVIGATE_POSSIBLE_GET, - ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_GET, - ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_SET, - ELM_OBJ_WEB_SUB_ID_ZOOM_SET, - ELM_OBJ_WEB_SUB_ID_ZOOM_GET, - ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_SET, - ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_GET, - ELM_OBJ_WEB_SUB_ID_REGION_SHOW, - ELM_OBJ_WEB_SUB_ID_REGION_BRING_IN, - ELM_OBJ_WEB_SUB_ID_INWIN_MODE_SET, - ELM_OBJ_WEB_SUB_ID_INWIN_MODE_GET, - ELM_OBJ_WEB_SUB_ID_LAST -}; - -#define ELM_OBJ_WEB_ID(sub_id) (ELM_OBJ_WEB_BASE_ID + sub_id) - - -/** - * @def elm_obj_web_webkit_view_get - * @since 1.8 - * - * Get internal ewk_view object from web object. - * - * @param[out] ret - * - * @see elm_web_webkit_view_get - */ -#define elm_obj_web_webkit_view_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_WEBKIT_VIEW_GET), EO_TYPECHECK(Evas_Object **, ret) - -/** - * @def elm_obj_web_window_create_hook_set - * @since 1.8 - * - * Sets the function to call when a new window is requested - * - * @param[in] func - * @param[in] data - * - * @see elm_web_window_create_hook_set - */ -#define elm_obj_web_window_create_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_WINDOW_CREATE_HOOK_SET), EO_TYPECHECK(Elm_Web_Window_Open, func), EO_TYPECHECK(void *, data) - -/** - * @def elm_obj_web_dialog_alert_hook_set - * @since 1.8 - * - * Sets the function to call when an alert dialog - * - * @param[in] func - * @param[in] data - * - * @see elm_web_dialog_alert_hook_set - */ -#define elm_obj_web_dialog_alert_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_ALERT_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Alert, func), EO_TYPECHECK(void *, data) - -/** - * @def elm_obj_web_dialog_confirm_hook_set - * @since 1.8 - * - * Sets the function to call when an confirm dialog - * - * @param[in] func - * @param[in] data - * - * @see elm_web_dialog_confirm_hook_set - */ -#define elm_obj_web_dialog_confirm_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_CONFIRM_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Confirm, func), EO_TYPECHECK(void *, data) - -/** - * @def elm_obj_web_dialog_prompt_hook_set - * @since 1.8 - * - * Sets the function to call when an prompt dialog - * - * @param[in] func - * @param[in] data - * - * @see elm_web_dialog_prompt_hook_set - */ -#define elm_obj_web_dialog_prompt_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_PROMPT_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Prompt, func), EO_TYPECHECK(void *, data) - -/** - * @def elm_obj_web_dialog_file_selector_hook_set - * @since 1.8 - * - * Sets the function to call when an file selector dialog - * - * @param[in] func - * @param[in] data - * - * @see elm_web_dialog_file_selector_hook_set - */ -#define elm_obj_web_dialog_file_selector_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_FILE_SELECTOR_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_File_Selector, func), EO_TYPECHECK(void *, data) - -/** - * @def elm_obj_web_console_message_hook_set - * @since 1.8 - * - * Sets the function to call when a console message is emitted from JS - * - * @param[in] func - * @param[in] data - * - * @see elm_web_console_message_hook_set - */ -#define elm_obj_web_console_message_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_CONSOLE_MESSAGE_HOOK_SET), EO_TYPECHECK(Elm_Web_Console_Message, func), EO_TYPECHECK(void *, data) - -/** - * @def elm_obj_web_useragent_set - * @since 1.8 - * - * Change useragent of a elm_web object - * - * @param[in] user_agent - * - * @see elm_web_useragent_set - */ -#define elm_obj_web_useragent_set(user_agent) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_USERAGENT_SET), EO_TYPECHECK(const char *, user_agent) - -/** - * @def elm_obj_web_useragent_get - * @since 1.8 - * - * Return current useragent of elm_web object - * - * @param[out] ret - * - * @see elm_web_useragent_get - */ -#define elm_obj_web_useragent_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_USERAGENT_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_web_tab_propagate_get - * @since 1.8 - * - * Gets the status of the tab propagation - * - * @param[out] ret - * - * @see elm_web_tab_propagate_get - */ -#define elm_obj_web_tab_propagate_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_tab_propagate_set - * @since 1.8 - * - * Sets whether to use tab propagation - * - * @param[in] propagate - * - * @see elm_web_tab_propagate_set - */ -#define elm_obj_web_tab_propagate_set(propagate) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET), EO_TYPECHECK(Eina_Bool, propagate) - -/** - * @def elm_obj_web_uri_set - * @since 1.8 - * - * Sets the URI for the web object - * - * @param[in] uri - * @param[out] ret - * - * @see elm_web_uri_set - */ -#define elm_obj_web_uri_set(uri, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URI_SET), EO_TYPECHECK(const char *, uri), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_uri_get - * @since 1.8 - * - * Gets the current URI for the object - * - * @param[out] ret - * - * @see elm_web_uri_get - */ -#define elm_obj_web_uri_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URI_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_web_title_get - * @since 1.8 - * - * Gets the current title - * - * @param[out] ret - * - * @see elm_web_title_get - */ -#define elm_obj_web_title_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TITLE_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_web_bg_color_set - * @since 1.8 - * - * Sets the background color to be used by the web object - * - * @param[in] r - * @param[in] g - * @param[in] b - * @param[in] a - * - * @see elm_web_bg_color_set - */ -#define elm_obj_web_bg_color_set(r, g, b, a) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a) - -/** - * @def elm_obj_web_bg_color_get - * @since 1.8 - * - * Gets the background color to be used by the web object - * - * @param[out] r - * @param[out] g - * @param[out] b - * @param[out] a - * - * @see elm_web_bg_color_get - */ -#define elm_obj_web_bg_color_get(r, g, b, a) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a) - -/** - * @def elm_obj_web_selection_get - * @since 1.8 - * - * Gets a copy of the currently selected text - * - * @param[out] ret - * - * @see elm_web_selection_get - */ -#define elm_obj_web_selection_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_SELECTION_GET), EO_TYPECHECK(const char **, ret) - -/** - * @def elm_obj_web_popup_selected_set - * @since 1.8 - * - * Tells the web object which index in the currently open popup was selected - * - * @param[in] idx - * - * @see elm_web_popup_selected_set - */ -#define elm_obj_web_popup_selected_set(idx) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_POPUP_SELECTED_SET), EO_TYPECHECK(int, idx) - -/** - * @def elm_obj_web_popup_destroy - * @since 1.8 - * - * Dismisses an open dropdown popup - * - * @param[out] ret - * - * @see elm_web_popup_destroy - */ -#define elm_obj_web_popup_destroy(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_POPUP_DESTROY), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_text_search - * @since 1.8 - * - * Searches the given string in a document. - * - * @param[in] string - * @param[in] case_sensitive - * @param[in] forward - * @param[in] wrap - * @param[out] ret - * - * @see elm_web_text_search - */ -#define elm_obj_web_text_search(string, case_sensitive, forward, wrap, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_SEARCH), EO_TYPECHECK(const char *, string), EO_TYPECHECK(Eina_Bool, case_sensitive), EO_TYPECHECK(Eina_Bool, forward), EO_TYPECHECK(Eina_Bool, wrap), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_text_matches_mark - * @since 1.8 - * - * Marks matches of the given string in a document. - * - * @param[in] string - * @param[in] case_sensitive - * @param[in] highlight - * @param[in] limit - * @param[out] ret - * - * @see elm_web_text_matches_mark - */ -#define elm_obj_web_text_matches_mark(string, case_sensitive, highlight, limit, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_MARK), EO_TYPECHECK(const char *, string), EO_TYPECHECK(Eina_Bool, case_sensitive), EO_TYPECHECK(Eina_Bool, highlight), EO_TYPECHECK(unsigned int, limit), EO_TYPECHECK(unsigned int *, ret) - -/** - * @def elm_obj_web_text_matches_unmark_all - * @since 1.8 - * - * Clears all marked matches in the document - * - * @param[out] ret - * - * @see elm_web_text_matches_unmark_all - */ -#define elm_obj_web_text_matches_unmark_all(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_UNMARK_ALL), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_text_matches_highlight_set - * @since 1.8 - * - * Sets whether to highlight the matched marks - * - * @param[in] highlight - * @param[out] ret - * - * @see elm_web_text_matches_highlight_set - */ -#define elm_obj_web_text_matches_highlight_set(highlight, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_SET), EO_TYPECHECK(Eina_Bool, highlight), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_text_matches_highlight_get - * @since 1.8 - * - * Gets whether highlighting marks is enabled - * - * @param[out] ret - * - * @see elm_web_text_matches_highlight_get - */ -#define elm_obj_web_text_matches_highlight_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_load_progress_get - * @since 1.8 - * - * Gets the overall loading progress of the page - * - * @param[out] ret - * - * @see elm_web_load_progress_get - */ -#define elm_obj_web_load_progress_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_LOAD_PROGRESS_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_web_stop - * @since 1.8 - * - * Stops loading the current page - * - * @param[out] ret - * - * @see elm_web_stop - */ -#define elm_obj_web_stop(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_STOP), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_reload - * @since 1.8 - * - * Requests a reload of the current document in the object - * - * @param[out] ret - * - * @see elm_web_reload - */ -#define elm_obj_web_reload(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_RELOAD), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_reload_full - * @since 1.8 - * - * Requests a reload of the current document, avoiding any existing caches - * - * @param[out] ret - * - * @see elm_web_reload_full - */ -#define elm_obj_web_reload_full(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_RELOAD_FULL), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_back - * @since 1.8 - * - * Goes back one step in the browsing history - * - * @param[out] ret - * - * @see elm_web_back - */ -#define elm_obj_web_back(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BACK), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_forward - * @since 1.8 - * - * Goes forward one step in the browsing history - * - * @param[out] ret - * - * @see elm_web_forward - */ -#define elm_obj_web_forward(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_FORWARD), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_navigate - * @since 1.8 - * - * Jumps the given number of steps in the browsing history - * - * @param[in] steps - * @param[out] ret - * - * @see elm_web_navigate - */ -#define elm_obj_web_navigate(steps, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_NAVIGATE), EO_TYPECHECK(int, steps), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_back_possible_get - * @since 1.8 - * - * Queries whether it's possible to go back in history - * - * @param[out] ret - * - * @see elm_web_back_possible_get - */ -#define elm_obj_web_back_possible_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BACK_POSSIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_forward_possible_get - * @since 1.8 - * - * Queries whether it's possible to go forward in history - * - * @param[out] ret - * - * @see elm_web_forward_possible_get - */ -#define elm_obj_web_forward_possible_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_FORWARD_POSSIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_navigate_possible_get - * @since 1.8 - * - * Queries whether it's possible to jump the given number of steps - * - * @param[in] steps - * @param[out] ret - * - * @see elm_web_navigate_possible_get - */ -#define elm_obj_web_navigate_possible_get(steps, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_NAVIGATE_POSSIBLE_GET), EO_TYPECHECK(int, steps), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_history_enabled_get - * @since 1.8 - * - * Gets whether browsing history is enabled for the given object - * - * @param[out] ret - * - * @see elm_web_history_enabled_get - */ -#define elm_obj_web_history_enabled_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_web_history_enabled_set - * @since 1.8 - * - * Enables or disables the browsing history - * - * @param[in] enable - * - * @see elm_web_history_enabled_set - */ -#define elm_obj_web_history_enabled_set(enable) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_SET), EO_TYPECHECK(Eina_Bool, enable) - -/** - * @def elm_obj_web_zoom_set - * @since 1.8 - * - * Sets the zoom level of the web object - * - * @param[in] zoom - * - * @see elm_web_zoom_set - */ -#define elm_obj_web_zoom_set(zoom) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_SET), EO_TYPECHECK(double, zoom) - -/** - * @def elm_obj_web_zoom_get - * @since 1.8 - * - * Gets the current zoom level set on the web object - * - * @param[out] ret - * - * @see elm_web_zoom_get - */ -#define elm_obj_web_zoom_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_GET), EO_TYPECHECK(double *, ret) - -/** - * @def elm_obj_web_zoom_mode_set - * @since 1.8 - * - * Sets the zoom mode to use - * - * @param[in] mode - * - * @see elm_web_zoom_mode_set - */ -#define elm_obj_web_zoom_mode_set(mode) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_SET), EO_TYPECHECK(Elm_Web_Zoom_Mode, mode) - -/** - * @def elm_obj_web_zoom_mode_get - * @since 1.8 - * - * Gets the currently set zoom mode - * - * @param[out] ret - * - * @see elm_web_zoom_mode_get - */ -#define elm_obj_web_zoom_mode_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_GET), EO_TYPECHECK(Elm_Web_Zoom_Mode *, ret) - -/** - * @def elm_obj_web_region_show - * @since 1.8 - * - * Shows the given region in the web object - * - * @param[in] x - * @param[in] y - * @param[in] w - * @param[in] h - * - * @see elm_web_region_show - */ -#define elm_obj_web_region_show(x, y, w, h) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_REGION_SHOW), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h) - -/** - * @def elm_obj_web_region_bring_in - * @since 1.8 - * - * Brings in the region to the visible area - * - * @param[in] x - * @param[in] y - * @param[in] w - * @param[in] h - * - * @see elm_web_region_bring_in - */ -#define elm_obj_web_region_bring_in(x, y, w, h) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_REGION_BRING_IN), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h) - -/** - * @def elm_obj_web_inwin_mode_set - * @since 1.8 - * - * Sets the default dialogs to use an Inwin instead of a normal window - * - * @param[in] value - * - * @see elm_web_inwin_mode_set - */ -#define elm_obj_web_inwin_mode_set(value) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_INWIN_MODE_SET), EO_TYPECHECK(Eina_Bool, value) - -/** - * @def elm_obj_web_inwin_mode_get - * @since 1.8 - * - * Gets whether Inwin mode is set for the current object - * - * @param[out] ret - * - * @see elm_web_inwin_mode_get - */ -#define elm_obj_web_inwin_mode_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_INWIN_MODE_GET), EO_TYPECHECK(Eina_Bool *, ret) - - /** * @addtogroup Web * @{ */ -/** - * Structure used to report load errors. - * - * 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()). - */ -typedef struct _Elm_Web_Frame_Load_Error Elm_Web_Frame_Load_Error; - -/** - * Structure used to report load errors. - * - * 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 */ -}; - -/** - * The possibles types that the items in a menu can be - */ -typedef enum -{ - ELM_WEB_MENU_SEPARATOR, - ELM_WEB_MENU_GROUP, - ELM_WEB_MENU_OPTION -} Elm_Web_Menu_Item_Type; - -/** - * Structure describing the items in a menu - */ -typedef struct _Elm_Web_Menu_Item Elm_Web_Menu_Item; - -/** - * 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 */ -}; - -/** - * Structure describing the menu of a popup - * - * This structure will be passed as the @c event_info for the "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 will not handle the popup - * and the default implementation will be used. - * - * When the popup is ready to be dismissed, a "popup,willdelete" signal - * will be emitted to notify the user that it can destroy any objects and - * free all data related to it. - * - * @see elm_web_popup_selected_set() - * @see elm_web_popup_destroy() - * - * @ingroup Web - */ -typedef struct _Elm_Web_Menu Elm_Web_Menu; - -/** - * Structure describing the menu of a popup - * - * This structure will be passed as the @c event_info for the "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 will not handle the popup - * and the default implementation will be used. - * - * When the popup is ready to be dismissed, a "popup,willdelete" signal - * will be emitted to notify the user that it can destroy any objects and - * free all data related to it. - * - * @see elm_web_popup_selected_set() - * @see elm_web_popup_destroy() - * - * @ingroup Web - */ -struct _Elm_Web_Menu -{ - Eina_List *items; /**< List of #Elm_Web_Menu_Item */ - int x; /**< The X position of the popup, relative to the elm_web object */ - int y; /**< The Y position of the popup, relative to the 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. Leave as @c EINA_FALSE otherwise. */ -}; - -typedef struct _Elm_Web_Download Elm_Web_Download; -struct _Elm_Web_Download -{ - const char *url; -}; - -/** - * Types of zoom 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 content fits in web object */ - ELM_WEB_ZOOM_MODE_AUTO_FILL, /**< Zoom until content fills web object */ - ELM_WEB_ZOOM_MODE_LAST /**< Sentinel value to indicate end */ -} Elm_Web_Zoom_Mode; - -/** - * 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; - - -/** - * Definitions of 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; - -/** - * Callback type for the create_window hook. - * - * @param data User data pointer set when setting the hook function. - * @param obj The elm_web object requesting the new window. - * @param js Set to @c EINA_TRUE if the request was originated from - * JavaScript. @c EINA_FALSE otherwise. - * @param 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 will be loaded. That is, - * if a new window or tab is created, the elm_web widget in it should be - * returned, and @b NOT the window object. Returning @c NULL should cancel - * the request. - * - * @see elm_web_window_create_hook_set() - * - * @ingroup Web - */ -typedef Evas_Object *(*Elm_Web_Window_Open)(void *data, Evas_Object *obj, Eina_Bool js, const Elm_Web_Window_Features *window_features); - -/** - * Callback type for the JS alert hook. - * - * @param data User data pointer set when setting the hook function. - * @param obj The elm_web object requesting the new window. - * @param message The message to show in the alert dialog. - * - * @return The object representing the alert dialog. - * Elm_Web will run a second main loop to handle the dialog and normal - * flow of the application will be 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. - * If the function returns @c NULL the popup will be ignored. - * - * @see elm_web_dialog_alert_hook_set() - * - * @ingroup Web - */ -typedef Evas_Object *(*Elm_Web_Dialog_Alert)(void *data, Evas_Object *obj, const char *message); - -/** - * Callback type for the JS confirm hook. - * - * @param data User data pointer set when setting the hook function. - * @param obj The elm_web object requesting the new window. - * @param message The message to show in the confirm dialog. - * @param ret Pointer to store the user selection. @c EINA_TRUE if - * the user selected @c Ok, @c EINA_FALSE otherwise. - * - * @return The object representing the confirm dialog. - * Elm_Web will run a second main loop to handle the dialog and normal - * flow of the application will be 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. - * If the function returns @c NULL the popup will be ignored. - * - * @see elm_web_dialog_confirm_hook_set() - * - * @ingroup Web - */ -typedef Evas_Object *(*Elm_Web_Dialog_Confirm)(void *data, Evas_Object *obj, const char *message, Eina_Bool *ret); - -/** - * Callback type for the JS prompt hook. - * - * @param data User data pointer set when setting the hook function. - * @param obj The elm_web object requesting the new window. - * @param message The message to show in the prompt dialog. - * @param def_value The default value to present the user in the entry - * @param value Pointer to store the value given by the user. Must - * be a malloc'ed string or @c NULL if the user canceled the popup. - * @param ret Pointer to store the user selection. @c EINA_TRUE if - * the user selected @c Ok, @c EINA_FALSE otherwise. - * - * @return The object representing the prompt dialog. - * Elm_Web will run a second main loop to handle the dialog and normal - * flow of the application will be 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. - * If the function returns @c NULL the popup will be ignored. - * - * @see elm_web_dialog_prompt_hook_set() - * - * @ingroup Web - */ -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); - -/** - * Callback type for the JS file selector hook. - * - * @param data User data pointer set when setting the hook function. - * @param obj The elm_web object requesting the new window. - * @param allows_multiple @c EINA_TRUE if multiple files can be selected. - * @param accept_types Mime types accepted. - * @param selected Pointer to store the list of malloc'ed strings - * containing the path to each file selected. Must be @c NULL if the file - * dialog is canceled. - * @param ret Pointer to store the user selection. @c EINA_TRUE if - * the user selected @c Ok, @c EINA_FALSE otherwise. - * - * @return The object representing the file selector dialog. - * Elm_Web will run a second main loop to handle the dialog and normal - * flow of the application will be 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. - * If the function returns @c NULL the popup will be ignored. - * - * @see elm_web_dialog_file selector_hook_set() - * - * @ingroup Web - */ -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); - -/** - * Callback type for the JS console message hook. - * - * When a console message is added from JavaScript, any set function to the - * console message hook will be called for the user to handle. There is no - * default implementation of this hook. - * - * @param data User data pointer set when setting the hook function. - * @param obj The elm_web object that originated the message. - * @param message The message sent. - * @param line_number The line number. - * @param source_id Source id. - * - * @see elm_web_console_message_hook_set() - * - * @ingroup Web - */ -typedef void (*Elm_Web_Console_Message)(void *data, Evas_Object *obj, const char *message, unsigned int line_number, const char *source_id); - -/** - * Add a new web object to the parent. - * - * @param parent The parent object. - * @return The new object or @c NULL if it cannot be created. - * - * @see elm_web_uri_set() - * @see elm_web_webkit_view_get() - * - * @ingroup Web - */ -EAPI Evas_Object *elm_web_add(Evas_Object *parent); - -/** - * Change useragent of a elm_web object - * - * @param obj The object - * @param user_agent String for useragent - * - * @ingroup Web - */ -EAPI void elm_web_useragent_set(Evas_Object *obj, const char *user_agent); - -/** - * Return current useragent of elm_web object - * - * @param obj The object - * @return Useragent string - * - * @ingroup Web - */ -EAPI const char* elm_web_useragent_get(const Evas_Object *obj); - -/** - * Get internal ewk_view object from web object. - * - * 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 obj The web object. - * @return The internal ewk_view object or @c NULL if it does not - * exist. (Failure to create or Elementary compiled without - * ewebkit) - * - * @see elm_web_add() - * - * @ingroup Web - */ -EAPI Evas_Object *elm_web_webkit_view_get(const Evas_Object *obj); - -/** - * Sets the function to call when a new window is requested - * - * This hook will be 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 @p func will prevent new windows from - * opening. - * - * @param obj The web object where to set the hook function - * @param func The hook function to be called when a window is requested - * @param data User data - * - * @ingroup Web - */ -EAPI void elm_web_window_create_hook_set(Evas_Object *obj, Elm_Web_Window_Open func, void *data); - -/** - * Sets the function to call when an alert dialog - * - * This hook will be called when a JavaScript alert dialog is requested. - * If no function is set or @c NULL is passed in @p func, the default - * implementation will take place. - * - * @param obj The web object where to set the hook function - * @param func The callback function to be used - * @param data User data - * - * @see elm_web_inwin_mode_set() - * - * @ingroup Web - */ -EAPI void elm_web_dialog_alert_hook_set(Evas_Object *obj, Elm_Web_Dialog_Alert func, void *data); - -/** - * Sets the function to call when an confirm dialog - * - * This hook will be called when a JavaScript confirm dialog is requested. - * If no function is set or @c NULL is passed in @p func, the default - * implementation will take place. - * - * @param obj The web object where to set the hook function - * @param func The callback function to be used - * @param data User data - * - * @see elm_web_inwin_mode_set() - * - * @ingroup Web - */ -EAPI void elm_web_dialog_confirm_hook_set(Evas_Object *obj, Elm_Web_Dialog_Confirm func, void *data); - -/** - * Sets the function to call when an prompt dialog - * - * This hook will be called when a JavaScript prompt dialog is requested. - * If no function is set or @c NULL is passed in @p func, the default - * implementation will take place. - * - * @param obj The web object where to set the hook function - * @param func The callback function to be used - * @param data User data - * - * @see elm_web_inwin_mode_set() - * - * @ingroup Web - */ -EAPI void elm_web_dialog_prompt_hook_set(Evas_Object *obj, Elm_Web_Dialog_Prompt func, void *data); - -/** - * Sets the function to call when an file selector dialog - * - * This hook will be called when a JavaScript file selector dialog is - * requested. - * If no function is set or @c NULL is passed in @p func, the default - * implementation will take place. - * - * @param obj The web object where to set the hook function - * @param func The callback function to be used - * @param data User data - * - * @see elm_web_inwin_mode_set() - * - * @ingroup Web - */ -EAPI void elm_web_dialog_file_selector_hook_set(Evas_Object *obj, Elm_Web_Dialog_File_Selector func, void *data); - -/** - * Sets the function to call when a console message is emitted from JS - * - * This hook will be called when a console message is emitted from - * JavaScript. There is no default implementation for this feature. - * - * @param obj The web object where to set the hook function - * @param func The callback function to be used - * @param data User data - * - * @ingroup Web - */ -EAPI void elm_web_console_message_hook_set(Evas_Object *obj, Elm_Web_Console_Message func, void *data); - -/** - * Gets the status of the tab propagation - * - * @param obj The web object to query - * @return @c EINA_TRUE if tab propagation is enabled, @c EINA_FALSE otherwise - * - * @see elm_web_tab_propagate_set() - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_tab_propagate_get(const Evas_Object *obj); - -/** - * Sets whether to use tab propagation - * - * If tab propagation is enabled, whenever the user presses the Tab key, - * Elementary will handle it and switch focus to the next widget. - * The default value is disabled, where WebKit will handle the Tab key to - * cycle focus though its internal objects, jumping to the next widget - * only when that cycle ends. - * - * @param obj The web object - * @param propagate Whether to propagate Tab keys to Elementary or not - * - * @ingroup Web - */ -EAPI void elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool propagate); - -/** - * Sets the URI for the web object - * - * It must be a full URI, with resource included, in the form - * http://www.enlightenment.org or file:///tmp/something.html - * - * @param obj The web object - * @param uri The URI to set - * @return @c EINA_TRUE if the URI could be set, @c EINA_FALSE if an error occurred. - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_uri_set(Evas_Object *obj, const char *uri); - -/** - * Gets the current URI for the object - * - * The returned string must not be freed and is guaranteed to be - * stringshared. - * - * @param obj The web object - * @return A stringshared internal string with the current URI, or @c NULL on - * failure - * - * @ingroup Web - */ -EAPI const char *elm_web_uri_get(const Evas_Object *obj); - -/** - * Gets the current title - * - * The returned string must not be freed and is guaranteed to be - * stringshared. - * - * @param obj The web object - * @return A stringshared internal string with the current title, or @c NULL on - * failure - * - * @ingroup Web - */ -EAPI const char *elm_web_title_get(const Evas_Object *obj); - -/** - * Sets the background color to be used by the web object - * - * This is the color that will be used by default when the loaded page - * does not set it's own. Color values are pre-multiplied. - * - * @param obj The web object - * @param r Red component - * @param g Green component - * @param b Blue component - * @param a Alpha component - * - * @ingroup Web - */ -EAPI void elm_web_bg_color_set(Evas_Object *obj, int r, int g, int b, int a); - -/** - * Gets the background color to be used by the web object - * - * This is the color that will be used by default when the loaded page - * does not set it's own. Color values are pre-multiplied. - * - * @param obj The web object - * @param r Red component - * @param g Green component - * @param b Blue component - * @param a Alpha component - * - * @ingroup Web - */ -EAPI void elm_web_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a); - -/** - * Gets a copy of the currently selected text - * - * The string returned must be freed by the user when it's done with it. - * - * @param obj The web object - * @return A newly allocated string, or @c NULL if nothing is selected or an - * error occurred - * - * @ingroup Web - */ -EAPI const char *elm_web_selection_get(const Evas_Object *obj); - -/** - * Tells the web object which index in the currently open popup was selected - * - * When the user handles the popup creation from the "popup,created" signal, - * it needs to tell the web object which item was selected by calling this - * function with the index corresponding to the item. - * - * @param obj The web object - * @param index The index selected - * - * @see elm_web_popup_destroy() - * - * @ingroup Web - */ -EAPI void elm_web_popup_selected_set(Evas_Object *obj, int index); - -/** - * Dismisses an open dropdown popup - * - * 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 - * will later emit an "popup,willdelete" signal to notify the user that - * any memory and objects related to this popup can be freed. - * - * @param obj The web object - * @return @c EINA_TRUE if the menu was successfully destroyed, or @c EINA_FALSE - * if there was no menu to destroy - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_popup_destroy(Evas_Object *obj); - -/** - * Searches the given string in a document. - * - * @param obj The web object where to search the text - * @param string String to search - * @param case_sensitive If search should be case sensitive or not - * @param forward If search is from cursor and on or backwards - * @param wrap If search should wrap at the end - * - * @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not - * or failure - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_text_search(const Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap); - -/** - * Marks matches of the given string in a document. - * - * @param obj The web object where to search text - * @param string String to match - * @param case_sensitive If match should be case sensitive or not - * @param highlight If matches should be highlighted - * @param limit Maximum amount of matches, or zero to unlimited - * - * @return number of matched @a string - * - * @ingroup Web - */ -EAPI unsigned int elm_web_text_matches_mark(Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit); - -/** - * Clears all marked matches in the document - * - * @param obj The web object - * - * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_text_matches_unmark_all(Evas_Object *obj); - -/** - * Sets whether to highlight the matched marks - * - * If enabled, marks set with elm_web_text_matches_mark() will be - * highlighted. - * - * @param obj The web object - * @param highlight Whether to highlight the marks or not - * - * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_text_matches_highlight_set(Evas_Object *obj, Eina_Bool highlight); - -/** - * Gets whether highlighting marks is enabled - * - * @param obj The web object - * - * @return @c EINA_TRUE is marks are set to be highlighted, @c EINA_FALSE - * otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_text_matches_highlight_get(const Evas_Object *obj); - -/** - * Gets the overall loading progress of the page - * - * Returns the estimated loading progress of the page, with a value between - * 0.0 and 1.0. This is an estimated progress accounting for all the frames - * included in the page. - * - * @param obj The web object - * - * @return A value between 0.0 and 1.0 indicating the progress, or -1.0 on - * failure - * - * @ingroup Web - */ -EAPI double elm_web_load_progress_get(const Evas_Object *obj); - -/** - * Stops loading the current page - * - * Cancels the loading of the current page in the web object. This will - * cause a "load,error" signal to be emitted, with the is_cancellation - * flag set to @c EINA_TRUE. - * - * @param obj The web object - * - * @return @c EINA_TRUE if the cancel was successful, @c EINA_FALSE otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_stop(Evas_Object *obj); - -/** - * Requests a reload of the current document in the object - * - * @param obj The web object - * - * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_reload(Evas_Object *obj); - -/** - * Requests a reload of the current document, avoiding any existing caches - * - * @param obj The web object - * - * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_reload_full(Evas_Object *obj); - -/** - * Goes back one step in the browsing history - * - * This is equivalent to calling elm_web_object_navigate(obj, -1); - * - * @param obj The web object - * - * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise - * - * @see elm_web_history_enabled_set() - * @see elm_web_back_possible() - * @see elm_web_forward() - * @see elm_web_navigate() - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_back(Evas_Object *obj); - -/** - * Goes forward one step in the browsing history - * - * This is equivalent to calling elm_web_object_navigate(obj, 1); - * - * @param obj The web object - * - * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise - * - * @see elm_web_history_enabled_set() - * @see elm_web_forward_possible_get() - * @see elm_web_back() - * @see elm_web_navigate() - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_forward(Evas_Object *obj); - -/** - * Jumps the given number of steps in the browsing history - * - * The @p steps value can be a negative integer to back in history, or a - * positive to move forward. - * - * @param obj The web object - * @param steps The number of steps to jump - * - * @return @c EINA_TRUE on success, @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() - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_navigate(Evas_Object *obj, int steps); - -/** - * Queries whether it's possible to go back in history - * - * @param obj The web object - * - * @return @c EINA_TRUE if it's possible to back in history, @c EINA_FALSE - * otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_back_possible_get(Evas_Object *obj); - -/** - * Queries whether it's possible to go forward in history - * - * @param obj The web object - * - * @return @c EINA_TRUE if it's possible to forward in history, @c EINA_FALSE - * otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_forward_possible_get(Evas_Object *obj); - -/** - * Queries whether it's possible to jump the given number of steps - * - * The @p steps value can be a negative integer to back in history, or a - * positive to move forward. - * - * @param obj The web object - * @param steps The number of steps to check for - * - * @return @c EINA_TRUE if enough history exists to perform the given jump, - * @c EINA_FALSE otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_navigate_possible_get(Evas_Object *obj, int steps); - -/** - * Gets whether browsing history is enabled for the given object - * - * @param obj The web object - * - * @return @c EINA_TRUE if history is enabled, @c EINA_FALSE otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_history_enabled_get(const Evas_Object *obj); - -/** - * Enables or disables the browsing history - * - * @param obj The web object - * @param enabled Whether to enable or disable the browsing history - * - * @ingroup Web - */ -EAPI void elm_web_history_enabled_set(Evas_Object *obj, Eina_Bool enabled); - -/** - * Sets the zoom level of the web object - * - * Zoom level matches the Webkit API, so 1.0 means normal zoom, with higher - * values meaning zoom in and lower meaning zoom out. This function will - * only affect the zoom level if the mode set with elm_web_zoom_mode_set() - * is ::ELM_WEB_ZOOM_MODE_MANUAL. - * - * @param obj The web object - * @param zoom The zoom level to set - * - * @ingroup Web - */ -EAPI void elm_web_zoom_set(Evas_Object *obj, double zoom); - -/** - * Gets the current zoom level set on the web object - * - * 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 obj The web object - * - * @return The zoom level set on the object - * - * @ingroup Web - */ -EAPI double elm_web_zoom_get(const Evas_Object *obj); - -/** - * Sets the zoom mode to use - * - * 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 will be controlled - * with the elm_web_zoom_set() function. - * ::ELM_WEB_ZOOM_MODE_AUTO_FIT will calculate the needed zoom level to - * make sure the entirety of the web object's contents are shown. - * ::ELM_WEB_ZOOM_MODE_AUTO_FILL will calculate the needed zoom level to - * fit the contents in the web object's size, without leaving any space - * unused. - * - * @param obj The web object - * @param mode The mode to set - * - * @ingroup Web - */ -EAPI void elm_web_zoom_mode_set(Evas_Object *obj, Elm_Web_Zoom_Mode mode); - -/** - * Gets the currently set zoom mode - * - * @param obj The web object - * - * @return The current zoom mode set for the object, - * or ::ELM_WEB_ZOOM_MODE_LAST on error - * - * @ingroup Web - */ -EAPI Elm_Web_Zoom_Mode elm_web_zoom_mode_get(const Evas_Object *obj); - -/** - * Shows the given region in the web object - * - * @param obj The web object - * @param x The x coordinate of the region to show - * @param y The y coordinate of the region to show - * @param w The width of the region to show - * @param h The height of the region to show - * - * @ingroup Web - */ -EAPI void elm_web_region_show(Evas_Object *obj, int x, int y, int w, int h); - -/** - * Brings in the region to the visible area - * - * Like elm_web_region_show(), but it animates the scrolling of the object - * to show the area - * - * @param obj The web object - * @param x The x coordinate of the region to show - * @param y The y coordinate of the region to show - * @param w The width of the region to show - * @param h The height of the region to show - * - * @ingroup Web - */ -EAPI void elm_web_region_bring_in(Evas_Object *obj, int x, int y, int w, int h); - -/** - * Sets the default dialogs to use an Inwin instead of a normal window - * - * If set, then the default implementation for the JavaScript dialogs and - * file selector will be opened in an Inwin. Otherwise they will use a - * normal separated window. - * - * @param obj The web object - * @param value @c EINA_TRUE to use Inwin, @c EINA_FALSE to use a normal window - * - * @ingroup Web - */ -EAPI void elm_web_inwin_mode_set(Evas_Object *obj, Eina_Bool value); - -/** - * Gets whether Inwin mode is set for the current object - * - * @param obj The web object - * - * @return @c EINA_TRUE if Inwin mode is set, @c EINA_FALSE otherwise - * - * @ingroup Web - */ -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); - -/** - * Gets boolean properties from Elm_Web_Window_Features - * (such as statusbar, menubar, etc) that are on a window. - * - * @param wf The web window features object - * @param flag The web window feature flag whose value is required. - * - * @return @c EINA_TRUE if the flag is set, @c EINA_FALSE otherwise - * - * @ingroup Web - */ -EAPI Eina_Bool elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, Elm_Web_Window_Feature_Flag flag); - -/** - * - * TODO : Add documentation. - * - * @param wf The web window features object - * @param x, y, w, h - the co-ordinates of the web view window. - * - * @ingroup Web - */ -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_web_common.h b/src/lib/elm_web_common.h new file mode 100644 index 000000000..3671c3e32 --- /dev/null +++ b/src/lib/elm_web_common.h @@ -0,0 +1,350 @@ +/** + * Structure used to report load errors. + * + * 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()). + */ +typedef struct _Elm_Web_Frame_Load_Error Elm_Web_Frame_Load_Error; + +/** + * Structure used to report load errors. + * + * 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 */ +}; + +/** + * The possibles types that the items in a menu can be + */ +typedef enum +{ + ELM_WEB_MENU_SEPARATOR, + ELM_WEB_MENU_GROUP, + ELM_WEB_MENU_OPTION +} Elm_Web_Menu_Item_Type; + +/** + * Structure describing the items in a menu + */ +typedef struct _Elm_Web_Menu_Item Elm_Web_Menu_Item; + +/** + * 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 */ +}; + +/** + * Structure describing the menu of a popup + * + * This structure will be passed as the @c event_info for the "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 will not handle the popup + * and the default implementation will be used. + * + * When the popup is ready to be dismissed, a "popup,willdelete" signal + * will be emitted to notify the user that it can destroy any objects and + * free all data related to it. + * + * @see elm_web_popup_selected_set() + * @see elm_web_popup_destroy() + * + * @ingroup Web + */ +typedef struct _Elm_Web_Menu Elm_Web_Menu; + +/** + * Structure describing the menu of a popup + * + * This structure will be passed as the @c event_info for the "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 will not handle the popup + * and the default implementation will be used. + * + * When the popup is ready to be dismissed, a "popup,willdelete" signal + * will be emitted to notify the user that it can destroy any objects and + * free all data related to it. + * + * @see elm_web_popup_selected_set() + * @see elm_web_popup_destroy() + * + * @ingroup Web + */ +struct _Elm_Web_Menu +{ + Eina_List *items; /**< List of #Elm_Web_Menu_Item */ + int x; /**< The X position of the popup, relative to the elm_web object */ + int y; /**< The Y position of the popup, relative to the 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. Leave as @c EINA_FALSE otherwise. */ +}; + +typedef struct _Elm_Web_Download Elm_Web_Download; +struct _Elm_Web_Download +{ + const char *url; +}; + +/** + * Types of zoom 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 content fits in web object */ + ELM_WEB_ZOOM_MODE_AUTO_FILL, /**< Zoom until content fills web object */ + ELM_WEB_ZOOM_MODE_LAST /**< Sentinel value to indicate end */ +} Elm_Web_Zoom_Mode; + +/** + * 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; + + +/** + * Definitions of 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; + +/** + * Callback type for the create_window hook. + * + * @param data User data pointer set when setting the hook function. + * @param obj The elm_web object requesting the new window. + * @param js Set to @c EINA_TRUE if the request was originated from + * JavaScript. @c EINA_FALSE otherwise. + * @param 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 will be loaded. That is, + * if a new window or tab is created, the elm_web widget in it should be + * returned, and @b NOT the window object. Returning @c NULL should cancel + * the request. + * + * @see elm_web_window_create_hook_set() + * + * @ingroup Web + */ +typedef Evas_Object *(*Elm_Web_Window_Open)(void *data, Evas_Object *obj, Eina_Bool js, const Elm_Web_Window_Features *window_features); + +/** + * Callback type for the JS alert hook. + * + * @param data User data pointer set when setting the hook function. + * @param obj The elm_web object requesting the new window. + * @param message The message to show in the alert dialog. + * + * @return The object representing the alert dialog. + * Elm_Web will run a second main loop to handle the dialog and normal + * flow of the application will be 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. + * If the function returns @c NULL the popup will be ignored. + * + * @see elm_web_dialog_alert_hook_set() + * + * @ingroup Web + */ +typedef Evas_Object *(*Elm_Web_Dialog_Alert)(void *data, Evas_Object *obj, const char *message); + +/** + * Callback type for the JS confirm hook. + * + * @param data User data pointer set when setting the hook function. + * @param obj The elm_web object requesting the new window. + * @param message The message to show in the confirm dialog. + * @param ret Pointer to store the user selection. @c EINA_TRUE if + * the user selected @c Ok, @c EINA_FALSE otherwise. + * + * @return The object representing the confirm dialog. + * Elm_Web will run a second main loop to handle the dialog and normal + * flow of the application will be 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. + * If the function returns @c NULL the popup will be ignored. + * + * @see elm_web_dialog_confirm_hook_set() + * + * @ingroup Web + */ +typedef Evas_Object *(*Elm_Web_Dialog_Confirm)(void *data, Evas_Object *obj, const char *message, Eina_Bool *ret); + +/** + * Callback type for the JS prompt hook. + * + * @param data User data pointer set when setting the hook function. + * @param obj The elm_web object requesting the new window. + * @param message The message to show in the prompt dialog. + * @param def_value The default value to present the user in the entry + * @param value Pointer to store the value given by the user. Must + * be a malloc'ed string or @c NULL if the user canceled the popup. + * @param ret Pointer to store the user selection. @c EINA_TRUE if + * the user selected @c Ok, @c EINA_FALSE otherwise. + * + * @return The object representing the prompt dialog. + * Elm_Web will run a second main loop to handle the dialog and normal + * flow of the application will be 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. + * If the function returns @c NULL the popup will be ignored. + * + * @see elm_web_dialog_prompt_hook_set() + * + * @ingroup Web + */ +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); + +/** + * Callback type for the JS file selector hook. + * + * @param data User data pointer set when setting the hook function. + * @param obj The elm_web object requesting the new window. + * @param allows_multiple @c EINA_TRUE if multiple files can be selected. + * @param accept_types Mime types accepted. + * @param selected Pointer to store the list of malloc'ed strings + * containing the path to each file selected. Must be @c NULL if the file + * dialog is canceled. + * @param ret Pointer to store the user selection. @c EINA_TRUE if + * the user selected @c Ok, @c EINA_FALSE otherwise. + * + * @return The object representing the file selector dialog. + * Elm_Web will run a second main loop to handle the dialog and normal + * flow of the application will be 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. + * If the function returns @c NULL the popup will be ignored. + * + * @see elm_web_dialog_file selector_hook_set() + * + * @ingroup Web + */ +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); + +/** + * Callback type for the JS console message hook. + * + * When a console message is added from JavaScript, any set function to the + * console message hook will be called for the user to handle. There is no + * default implementation of this hook. + * + * @param data User data pointer set when setting the hook function. + * @param obj The elm_web object that originated the message. + * @param message The message sent. + * @param line_number The line number. + * @param source_id Source id. + * + * @see elm_web_console_message_hook_set() + * + * @ingroup Web + */ +typedef void (*Elm_Web_Console_Message)(void *data, Evas_Object *obj, const char *message, unsigned int line_number, const char *source_id); + +/** + * Add a new web object to the parent. + * + * @param parent The parent object. + * @return The new object or @c NULL if it cannot be created. + * + * @see elm_web_uri_set() + * @see elm_web_webkit_view_get() + * + * @ingroup Web + */ +EAPI Evas_Object *elm_web_add(Evas_Object *parent); + +/** + * Sets the zoom mode to use + * + * 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 will be controlled + * with the elm_web_zoom_set() function. + * ::ELM_WEB_ZOOM_MODE_AUTO_FIT will calculate the needed zoom level to + * make sure the entirety of the web object's contents are shown. + * ::ELM_WEB_ZOOM_MODE_AUTO_FILL will calculate the needed zoom level to + * fit the contents in the web object's size, without leaving any space + * unused. + * + * @param obj The web object + * @param mode The mode to set + * + * @ingroup Web + */ +EAPI void elm_web_zoom_mode_set(Evas_Object *obj, Elm_Web_Zoom_Mode mode); + +/** + * Gets the currently set zoom mode + * + * @param obj The web object + * + * @return The current zoom mode set for the object, + * or ::ELM_WEB_ZOOM_MODE_LAST on error + * + * @ingroup Web + */ +EAPI Elm_Web_Zoom_Mode elm_web_zoom_mode_get(const Evas_Object *obj); + +/** + * Gets boolean properties from Elm_Web_Window_Features + * (such as statusbar, menubar, etc) that are on a window. + * + * @param wf The web window features object + * @param flag The web window feature flag whose value is required. + * + * @return @c EINA_TRUE if the flag is set, @c EINA_FALSE otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, Elm_Web_Window_Feature_Flag flag); + +/** + * + * TODO : Add documentation. + * + * @param wf The web window features object + * @param x, y, w, h - the co-ordinates of the web view window. + * + * @ingroup Web + */ +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); + +EAPI void elm_web_window_features_ref(Elm_Web_Window_Features *wf); +EAPI void elm_web_window_features_unref(Elm_Web_Window_Features *wf); diff --git a/src/lib/elm_web_eo.h b/src/lib/elm_web_eo.h new file mode 100644 index 000000000..01de93e6a --- /dev/null +++ b/src/lib/elm_web_eo.h @@ -0,0 +1,703 @@ +#define ELM_OBJ_WEB_CLASS elm_obj_web_class_get() + +const Eo_Class *elm_obj_web_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_WEB_BASE_ID; + +enum +{ + ELM_OBJ_WEB_SUB_ID_WEBKIT_VIEW_GET, + ELM_OBJ_WEB_SUB_ID_WINDOW_CREATE_HOOK_SET, + ELM_OBJ_WEB_SUB_ID_DIALOG_ALERT_HOOK_SET, + ELM_OBJ_WEB_SUB_ID_DIALOG_CONFIRM_HOOK_SET, + ELM_OBJ_WEB_SUB_ID_DIALOG_PROMPT_HOOK_SET, + ELM_OBJ_WEB_SUB_ID_DIALOG_FILE_SELECTOR_HOOK_SET, + ELM_OBJ_WEB_SUB_ID_CONSOLE_MESSAGE_HOOK_SET, + ELM_OBJ_WEB_SUB_ID_USERAGENT_SET, + ELM_OBJ_WEB_SUB_ID_USERAGENT_GET, + ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_GET, + ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET, + ELM_OBJ_WEB_SUB_ID_URI_SET, + ELM_OBJ_WEB_SUB_ID_URI_GET, + ELM_OBJ_WEB_SUB_ID_TITLE_GET, + ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET, + ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET, + ELM_OBJ_WEB_SUB_ID_SELECTION_GET, + ELM_OBJ_WEB_SUB_ID_POPUP_SELECTED_SET, + ELM_OBJ_WEB_SUB_ID_POPUP_DESTROY, + ELM_OBJ_WEB_SUB_ID_TEXT_SEARCH, + ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_MARK, + ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_UNMARK_ALL, + ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_SET, + ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_GET, + ELM_OBJ_WEB_SUB_ID_LOAD_PROGRESS_GET, + ELM_OBJ_WEB_SUB_ID_STOP, + ELM_OBJ_WEB_SUB_ID_RELOAD, + ELM_OBJ_WEB_SUB_ID_RELOAD_FULL, + ELM_OBJ_WEB_SUB_ID_BACK, + ELM_OBJ_WEB_SUB_ID_FORWARD, + ELM_OBJ_WEB_SUB_ID_NAVIGATE, + ELM_OBJ_WEB_SUB_ID_BACK_POSSIBLE_GET, + ELM_OBJ_WEB_SUB_ID_FORWARD_POSSIBLE_GET, + ELM_OBJ_WEB_SUB_ID_NAVIGATE_POSSIBLE_GET, + ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_GET, + ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_SET, + ELM_OBJ_WEB_SUB_ID_ZOOM_SET, + ELM_OBJ_WEB_SUB_ID_ZOOM_GET, + ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_SET, + ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_GET, + ELM_OBJ_WEB_SUB_ID_REGION_SHOW, + ELM_OBJ_WEB_SUB_ID_REGION_BRING_IN, + ELM_OBJ_WEB_SUB_ID_INWIN_MODE_SET, + ELM_OBJ_WEB_SUB_ID_INWIN_MODE_GET, + ELM_OBJ_WEB_SUB_ID_LAST +}; + +#define ELM_OBJ_WEB_ID(sub_id) (ELM_OBJ_WEB_BASE_ID + sub_id) + + +/** + * @def elm_obj_web_webkit_view_get + * @since 1.8 + * + * Get internal ewk_view object from web object. + * + * @param[out] ret + * + * @see elm_web_webkit_view_get + * + * @ingroup Web + */ +#define elm_obj_web_webkit_view_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_WEBKIT_VIEW_GET), EO_TYPECHECK(Evas_Object **, ret) + +/** + * @def elm_obj_web_window_create_hook_set + * @since 1.8 + * + * Sets the function to call when a new window is requested + * + * @param[in] func + * @param[in] data + * + * @see elm_web_window_create_hook_set + * + * @ingroup Web + */ +#define elm_obj_web_window_create_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_WINDOW_CREATE_HOOK_SET), EO_TYPECHECK(Elm_Web_Window_Open, func), EO_TYPECHECK(void *, data) + +/** + * @def elm_obj_web_dialog_alert_hook_set + * @since 1.8 + * + * Sets the function to call when an alert dialog + * + * @param[in] func + * @param[in] data + * + * @see elm_web_dialog_alert_hook_set + * + * @ingroup Web + */ +#define elm_obj_web_dialog_alert_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_ALERT_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Alert, func), EO_TYPECHECK(void *, data) + +/** + * @def elm_obj_web_dialog_confirm_hook_set + * @since 1.8 + * + * Sets the function to call when an confirm dialog + * + * @param[in] func + * @param[in] data + * + * @see elm_web_dialog_confirm_hook_set + * + * @ingroup Web + */ +#define elm_obj_web_dialog_confirm_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_CONFIRM_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Confirm, func), EO_TYPECHECK(void *, data) + +/** + * @def elm_obj_web_dialog_prompt_hook_set + * @since 1.8 + * + * Sets the function to call when an prompt dialog + * + * @param[in] func + * @param[in] data + * + * @see elm_web_dialog_prompt_hook_set + * + * @ingroup Web + */ +#define elm_obj_web_dialog_prompt_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_PROMPT_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Prompt, func), EO_TYPECHECK(void *, data) + +/** + * @def elm_obj_web_dialog_file_selector_hook_set + * @since 1.8 + * + * Sets the function to call when an file selector dialog + * + * @param[in] func + * @param[in] data + * + * @see elm_web_dialog_file_selector_hook_set + * + * @ingroup Web + */ +#define elm_obj_web_dialog_file_selector_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_FILE_SELECTOR_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_File_Selector, func), EO_TYPECHECK(void *, data) + +/** + * @def elm_obj_web_console_message_hook_set + * @since 1.8 + * + * Sets the function to call when a console message is emitted from JS + * + * @param[in] func + * @param[in] data + * + * @see elm_web_console_message_hook_set + * + * @ingroup Web + */ +#define elm_obj_web_console_message_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_CONSOLE_MESSAGE_HOOK_SET), EO_TYPECHECK(Elm_Web_Console_Message, func), EO_TYPECHECK(void *, data) + +/** + * @def elm_obj_web_useragent_set + * @since 1.8 + * + * Change useragent of a elm_web object + * + * @param[in] user_agent + * + * @see elm_web_useragent_set + * + * @ingroup Web + */ +#define elm_obj_web_useragent_set(user_agent) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_USERAGENT_SET), EO_TYPECHECK(const char *, user_agent) + +/** + * @def elm_obj_web_useragent_get + * @since 1.8 + * + * Return current useragent of elm_web object + * + * @param[out] ret + * + * @see elm_web_useragent_get + * + * @ingroup Web + */ +#define elm_obj_web_useragent_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_USERAGENT_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_web_tab_propagate_get + * @since 1.8 + * + * Gets the status of the tab propagation + * + * @param[out] ret + * + * @see elm_web_tab_propagate_get + * + * @ingroup Web + */ +#define elm_obj_web_tab_propagate_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_tab_propagate_set + * @since 1.8 + * + * Sets whether to use tab propagation + * + * @param[in] propagate + * + * @see elm_web_tab_propagate_set + * + * @ingroup Web + */ +#define elm_obj_web_tab_propagate_set(propagate) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET), EO_TYPECHECK(Eina_Bool, propagate) + +/** + * @def elm_obj_web_uri_set + * @since 1.8 + * + * Sets the URI for the web object + * + * @param[in] uri + * @param[out] ret + * + * @see elm_web_uri_set + * + * @ingroup Web + */ +#define elm_obj_web_uri_set(uri, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URI_SET), EO_TYPECHECK(const char *, uri), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_uri_get + * @since 1.8 + * + * Gets the current URI for the object + * + * @param[out] ret + * + * @see elm_web_uri_get + * + * @ingroup Web + */ +#define elm_obj_web_uri_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URI_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_web_title_get + * @since 1.8 + * + * Gets the current title + * + * @param[out] ret + * + * @see elm_web_title_get + * + * @ingroup Web + */ +#define elm_obj_web_title_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TITLE_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_web_bg_color_set + * @since 1.8 + * + * Sets the background color to be used by the web object + * + * @param[in] r + * @param[in] g + * @param[in] b + * @param[in] a + * + * @see elm_web_bg_color_set + * + * @ingroup Web + */ +#define elm_obj_web_bg_color_set(r, g, b, a) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a) + +/** + * @def elm_obj_web_bg_color_get + * @since 1.8 + * + * Gets the background color to be used by the web object + * + * @param[out] r + * @param[out] g + * @param[out] b + * @param[out] a + * + * @see elm_web_bg_color_get + * + * @ingroup Web + */ +#define elm_obj_web_bg_color_get(r, g, b, a) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a) + +/** + * @def elm_obj_web_selection_get + * @since 1.8 + * + * Gets a copy of the currently selected text + * + * @param[out] ret + * + * @see elm_web_selection_get + * + * @ingroup Web + */ +#define elm_obj_web_selection_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_SELECTION_GET), EO_TYPECHECK(const char **, ret) + +/** + * @def elm_obj_web_popup_selected_set + * @since 1.8 + * + * Tells the web object which index in the currently open popup was selected + * + * @param[in] idx + * + * @see elm_web_popup_selected_set + * + * @ingroup Web + */ +#define elm_obj_web_popup_selected_set(idx) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_POPUP_SELECTED_SET), EO_TYPECHECK(int, idx) + +/** + * @def elm_obj_web_popup_destroy + * @since 1.8 + * + * Dismisses an open dropdown popup + * + * @param[out] ret + * + * @see elm_web_popup_destroy + * + * @ingroup Web + */ +#define elm_obj_web_popup_destroy(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_POPUP_DESTROY), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_text_search + * @since 1.8 + * + * Searches the given string in a document. + * + * @param[in] string + * @param[in] case_sensitive + * @param[in] forward + * @param[in] wrap + * @param[out] ret + * + * @see elm_web_text_search + * + * @ingroup Web + */ +#define elm_obj_web_text_search(string, case_sensitive, forward, wrap, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_SEARCH), EO_TYPECHECK(const char *, string), EO_TYPECHECK(Eina_Bool, case_sensitive), EO_TYPECHECK(Eina_Bool, forward), EO_TYPECHECK(Eina_Bool, wrap), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_text_matches_mark + * @since 1.8 + * + * Marks matches of the given string in a document. + * + * @param[in] string + * @param[in] case_sensitive + * @param[in] highlight + * @param[in] limit + * @param[out] ret + * + * @see elm_web_text_matches_mark + * + * @ingroup Web + */ +#define elm_obj_web_text_matches_mark(string, case_sensitive, highlight, limit, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_MARK), EO_TYPECHECK(const char *, string), EO_TYPECHECK(Eina_Bool, case_sensitive), EO_TYPECHECK(Eina_Bool, highlight), EO_TYPECHECK(unsigned int, limit), EO_TYPECHECK(unsigned int *, ret) + +/** + * @def elm_obj_web_text_matches_unmark_all + * @since 1.8 + * + * Clears all marked matches in the document + * + * @param[out] ret + * + * @see elm_web_text_matches_unmark_all + * + * @ingroup Web + */ +#define elm_obj_web_text_matches_unmark_all(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_UNMARK_ALL), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_text_matches_highlight_set + * @since 1.8 + * + * Sets whether to highlight the matched marks + * + * @param[in] highlight + * @param[out] ret + * + * @see elm_web_text_matches_highlight_set + * + * @ingroup Web + */ +#define elm_obj_web_text_matches_highlight_set(highlight, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_SET), EO_TYPECHECK(Eina_Bool, highlight), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_text_matches_highlight_get + * @since 1.8 + * + * Gets whether highlighting marks is enabled + * + * @param[out] ret + * + * @see elm_web_text_matches_highlight_get + * + * @ingroup Web + */ +#define elm_obj_web_text_matches_highlight_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_load_progress_get + * @since 1.8 + * + * Gets the overall loading progress of the page + * + * @param[out] ret + * + * @see elm_web_load_progress_get + * + * @ingroup Web + */ +#define elm_obj_web_load_progress_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_LOAD_PROGRESS_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_web_stop + * @since 1.8 + * + * Stops loading the current page + * + * @param[out] ret + * + * @see elm_web_stop + * + * @ingroup Web + */ +#define elm_obj_web_stop(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_STOP), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_reload + * @since 1.8 + * + * Requests a reload of the current document in the object + * + * @param[out] ret + * + * @see elm_web_reload + * + * @ingroup Web + */ +#define elm_obj_web_reload(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_RELOAD), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_reload_full + * @since 1.8 + * + * Requests a reload of the current document, avoiding any existing caches + * + * @param[out] ret + * + * @see elm_web_reload_full + * + * @ingroup Web + */ +#define elm_obj_web_reload_full(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_RELOAD_FULL), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_back + * @since 1.8 + * + * Goes back one step in the browsing history + * + * @param[out] ret + * + * @see elm_web_back + * + * @ingroup Web + */ +#define elm_obj_web_back(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BACK), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_forward + * @since 1.8 + * + * Goes forward one step in the browsing history + * + * @param[out] ret + * + * @see elm_web_forward + * + * @ingroup Web + */ +#define elm_obj_web_forward(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_FORWARD), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_navigate + * @since 1.8 + * + * Jumps the given number of steps in the browsing history + * + * @param[in] steps + * @param[out] ret + * + * @see elm_web_navigate + * + * @ingroup Web + */ +#define elm_obj_web_navigate(steps, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_NAVIGATE), EO_TYPECHECK(int, steps), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_back_possible_get + * @since 1.8 + * + * Queries whether it's possible to go back in history + * + * @param[out] ret + * + * @see elm_web_back_possible_get + * + * @ingroup Web + */ +#define elm_obj_web_back_possible_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BACK_POSSIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_forward_possible_get + * @since 1.8 + * + * Queries whether it's possible to go forward in history + * + * @param[out] ret + * + * @see elm_web_forward_possible_get + * + * @ingroup Web + */ +#define elm_obj_web_forward_possible_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_FORWARD_POSSIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_navigate_possible_get + * @since 1.8 + * + * Queries whether it's possible to jump the given number of steps + * + * @param[in] steps + * @param[out] ret + * + * @see elm_web_navigate_possible_get + * + * @ingroup Web + */ +#define elm_obj_web_navigate_possible_get(steps, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_NAVIGATE_POSSIBLE_GET), EO_TYPECHECK(int, steps), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_history_enabled_get + * @since 1.8 + * + * Gets whether browsing history is enabled for the given object + * + * @param[out] ret + * + * @see elm_web_history_enabled_get + * + * @ingroup Web + */ +#define elm_obj_web_history_enabled_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_web_history_enabled_set + * @since 1.8 + * + * Enables or disables the browsing history + * + * @param[in] enable + * + * @see elm_web_history_enabled_set + * + * @ingroup Web + */ +#define elm_obj_web_history_enabled_set(enable) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_SET), EO_TYPECHECK(Eina_Bool, enable) + +/** + * @def elm_obj_web_zoom_set + * @since 1.8 + * + * Sets the zoom level of the web object + * + * @param[in] zoom + * + * @see elm_web_zoom_set + * + * @ingroup Web + */ +#define elm_obj_web_zoom_set(zoom) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_SET), EO_TYPECHECK(double, zoom) + +/** + * @def elm_obj_web_zoom_get + * @since 1.8 + * + * Gets the current zoom level set on the web object + * + * @param[out] ret + * + * @see elm_web_zoom_get + * + * @ingroup Web + */ +#define elm_obj_web_zoom_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_GET), EO_TYPECHECK(double *, ret) + +/** + * @def elm_obj_web_zoom_mode_set + * @since 1.8 + * + * Sets the zoom mode to use + * + * @param[in] mode + * + * @see elm_web_zoom_mode_set + * + * @ingroup Web + */ +#define elm_obj_web_zoom_mode_set(mode) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_SET), EO_TYPECHECK(Elm_Web_Zoom_Mode, mode) + +/** + * @def elm_obj_web_zoom_mode_get + * @since 1.8 + * + * Gets the currently set zoom mode + * + * @param[out] ret + * + * @see elm_web_zoom_mode_get + * + * @ingroup Web + */ +#define elm_obj_web_zoom_mode_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_GET), EO_TYPECHECK(Elm_Web_Zoom_Mode *, ret) + +/** + * @def elm_obj_web_region_show + * @since 1.8 + * + * Shows the given region in the web object + * + * @param[in] x + * @param[in] y + * @param[in] w + * @param[in] h + * + * @see elm_web_region_show + * + * @ingroup Web + */ +#define elm_obj_web_region_show(x, y, w, h) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_REGION_SHOW), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h) + +/** + * @def elm_obj_web_region_bring_in + * @since 1.8 + * + * Brings in the region to the visible area + * + * @param[in] x + * @param[in] y + * @param[in] w + * @param[in] h + * + * @see elm_web_region_bring_in + * + * @ingroup Web + */ +#define elm_obj_web_region_bring_in(x, y, w, h) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_REGION_BRING_IN), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h) + +/** + * @def elm_obj_web_inwin_mode_set + * @since 1.8 + * + * Sets the default dialogs to use an Inwin instead of a normal window + * + * @param[in] value + * + * @see elm_web_inwin_mode_set + * + * @ingroup Web + */ +#define elm_obj_web_inwin_mode_set(value) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_INWIN_MODE_SET), EO_TYPECHECK(Eina_Bool, value) + +/** + * @def elm_obj_web_inwin_mode_get + * @since 1.8 + * + * Gets whether Inwin mode is set for the current object + * + * @param[out] ret + * + * @see elm_web_inwin_mode_get + * + * @ingroup Web + */ +#define elm_obj_web_inwin_mode_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_INWIN_MODE_GET), EO_TYPECHECK(Eina_Bool *, ret) diff --git a/src/lib/elm_web_legacy.h b/src/lib/elm_web_legacy.h new file mode 100644 index 000000000..c0af13203 --- /dev/null +++ b/src/lib/elm_web_legacy.h @@ -0,0 +1,610 @@ +/** + * Get internal ewk_view object from web object. + * + * 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 obj The web object. + * @return The internal ewk_view object or @c NULL if it does not + * exist. (Failure to create or Elementary compiled without + * ewebkit) + * + * @see elm_web_add() + * + * @ingroup Web + */ +EAPI Evas_Object *elm_web_webkit_view_get(const Evas_Object *obj); + +/** + * Sets the function to call when a new window is requested + * + * This hook will be 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 @p func will prevent new windows from + * opening. + * + * @param obj The web object where to set the hook function + * @param func The hook function to be called when a window is requested + * @param data User data + * + * @ingroup Web + */ +EAPI void elm_web_window_create_hook_set(Evas_Object *obj, Elm_Web_Window_Open func, void *data); + +/** + * Sets the function to call when an alert dialog + * + * This hook will be called when a JavaScript alert dialog is requested. + * If no function is set or @c NULL is passed in @p func, the default + * implementation will take place. + * + * @param obj The web object where to set the hook function + * @param func The callback function to be used + * @param data User data + * + * @see elm_web_inwin_mode_set() + * + * @ingroup Web + */ +EAPI void elm_web_dialog_alert_hook_set(Evas_Object *obj, Elm_Web_Dialog_Alert func, void *data); + +/** + * Sets the function to call when an confirm dialog + * + * This hook will be called when a JavaScript confirm dialog is requested. + * If no function is set or @c NULL is passed in @p func, the default + * implementation will take place. + * + * @param obj The web object where to set the hook function + * @param func The callback function to be used + * @param data User data + * + * @see elm_web_inwin_mode_set() + * + * @ingroup Web + */ +EAPI void elm_web_dialog_confirm_hook_set(Evas_Object *obj, Elm_Web_Dialog_Confirm func, void *data); + +/** + * Sets the function to call when an prompt dialog + * + * This hook will be called when a JavaScript prompt dialog is requested. + * If no function is set or @c NULL is passed in @p func, the default + * implementation will take place. + * + * @param obj The web object where to set the hook function + * @param func The callback function to be used + * @param data User data + * + * @see elm_web_inwin_mode_set() + * + * @ingroup Web + */ +EAPI void elm_web_dialog_prompt_hook_set(Evas_Object *obj, Elm_Web_Dialog_Prompt func, void *data); + +/** + * Sets the function to call when an file selector dialog + * + * This hook will be called when a JavaScript file selector dialog is + * requested. + * If no function is set or @c NULL is passed in @p func, the default + * implementation will take place. + * + * @param obj The web object where to set the hook function + * @param func The callback function to be used + * @param data User data + * + * @see elm_web_inwin_mode_set() + * + * @ingroup Web + */ +EAPI void elm_web_dialog_file_selector_hook_set(Evas_Object *obj, Elm_Web_Dialog_File_Selector func, void *data); + +/** + * Sets the function to call when a console message is emitted from JS + * + * This hook will be called when a console message is emitted from + * JavaScript. There is no default implementation for this feature. + * + * @param obj The web object where to set the hook function + * @param func The callback function to be used + * @param data User data + * + * @ingroup Web + */ +EAPI void elm_web_console_message_hook_set(Evas_Object *obj, Elm_Web_Console_Message func, void *data); + +/** + * Change useragent of a elm_web object + * + * @param obj The object + * @param user_agent String for useragent + * + * @ingroup Web + */ +EAPI void elm_web_useragent_set(Evas_Object *obj, const char *user_agent); + +/** + * Return current useragent of elm_web object + * + * @param obj The object + * @return Useragent string + * + * @ingroup Web + */ +EAPI const char* elm_web_useragent_get(const Evas_Object *obj); + +/** + * Gets the status of the tab propagation + * + * @param obj The web object to query + * @return @c EINA_TRUE if tab propagation is enabled, @c EINA_FALSE otherwise + * + * @see elm_web_tab_propagate_set() + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_tab_propagate_get(const Evas_Object *obj); + +/** + * Sets whether to use tab propagation + * + * If tab propagation is enabled, whenever the user presses the Tab key, + * Elementary will handle it and switch focus to the next widget. + * The default value is disabled, where WebKit will handle the Tab key to + * cycle focus though its internal objects, jumping to the next widget + * only when that cycle ends. + * + * @param obj The web object + * @param propagate Whether to propagate Tab keys to Elementary or not + * + * @ingroup Web + */ +EAPI void elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool propagate); + +/** + * Sets the URI for the web object + * + * It must be a full URI, with resource included, in the form + * http://www.enlightenment.org or file:///tmp/something.html + * + * @param obj The web object + * @param uri The URI to set + * @return @c EINA_TRUE if the URI could be set, @c EINA_FALSE if an error occurred. + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_uri_set(Evas_Object *obj, const char *uri); + +/** + * Gets the current URI for the object + * + * The returned string must not be freed and is guaranteed to be + * stringshared. + * + * @param obj The web object + * @return A stringshared internal string with the current URI, or @c NULL on + * failure + * + * @ingroup Web + */ +EAPI const char *elm_web_uri_get(const Evas_Object *obj); + +/** + * Gets the current title + * + * The returned string must not be freed and is guaranteed to be + * stringshared. + * + * @param obj The web object + * @return A stringshared internal string with the current title, or @c NULL on + * failure + * + * @ingroup Web + */ +EAPI const char *elm_web_title_get(const Evas_Object *obj); + +/** + * Sets the background color to be used by the web object + * + * This is the color that will be used by default when the loaded page + * does not set it's own. Color values are pre-multiplied. + * + * @param obj The web object + * @param r Red component + * @param g Green component + * @param b Blue component + * @param a Alpha component + * + * @ingroup Web + */ +EAPI void elm_web_bg_color_set(Evas_Object *obj, int r, int g, int b, int a); + +/** + * Gets the background color to be used by the web object + * + * This is the color that will be used by default when the loaded page + * does not set it's own. Color values are pre-multiplied. + * + * @param obj The web object + * @param r Red component + * @param g Green component + * @param b Blue component + * @param a Alpha component + * + * @ingroup Web + */ +EAPI void elm_web_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a); + +/** + * Gets a copy of the currently selected text + * + * The string returned must be freed by the user when it's done with it. + * + * @param obj The web object + * @return A newly allocated string, or @c NULL if nothing is selected or an + * error occurred + * + * @ingroup Web + */ +EAPI const char *elm_web_selection_get(const Evas_Object *obj); + +/** + * Tells the web object which index in the currently open popup was selected + * + * When the user handles the popup creation from the "popup,created" signal, + * it needs to tell the web object which item was selected by calling this + * function with the index corresponding to the item. + * + * @param obj The web object + * @param index The index selected + * + * @see elm_web_popup_destroy() + * + * @ingroup Web + */ +EAPI void elm_web_popup_selected_set(Evas_Object *obj, int index); + +/** + * Dismisses an open dropdown popup + * + * 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 + * will later emit an "popup,willdelete" signal to notify the user that + * any memory and objects related to this popup can be freed. + * + * @param obj The web object + * @return @c EINA_TRUE if the menu was successfully destroyed, or @c EINA_FALSE + * if there was no menu to destroy + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_popup_destroy(Evas_Object *obj); + +/** + * Searches the given string in a document. + * + * @param obj The web object where to search the text + * @param string String to search + * @param case_sensitive If search should be case sensitive or not + * @param forward If search is from cursor and on or backwards + * @param wrap If search should wrap at the end + * + * @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not + * or failure + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_text_search(const Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap); + +/** + * Marks matches of the given string in a document. + * + * @param obj The web object where to search text + * @param string String to match + * @param case_sensitive If match should be case sensitive or not + * @param highlight If matches should be highlighted + * @param limit Maximum amount of matches, or zero to unlimited + * + * @return number of matched @a string + * + * @ingroup Web + */ +EAPI unsigned int elm_web_text_matches_mark(Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit); + +/** + * Clears all marked matches in the document + * + * @param obj The web object + * + * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_text_matches_unmark_all(Evas_Object *obj); + +/** + * Sets whether to highlight the matched marks + * + * If enabled, marks set with elm_web_text_matches_mark() will be + * highlighted. + * + * @param obj The web object + * @param highlight Whether to highlight the marks or not + * + * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_text_matches_highlight_set(Evas_Object *obj, Eina_Bool highlight); + +/** + * Gets whether highlighting marks is enabled + * + * @param obj The web object + * + * @return @c EINA_TRUE is marks are set to be highlighted, @c EINA_FALSE + * otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_text_matches_highlight_get(const Evas_Object *obj); + +/** + * Gets the overall loading progress of the page + * + * Returns the estimated loading progress of the page, with a value between + * 0.0 and 1.0. This is an estimated progress accounting for all the frames + * included in the page. + * + * @param obj The web object + * + * @return A value between 0.0 and 1.0 indicating the progress, or -1.0 on + * failure + * + * @ingroup Web + */ +EAPI double elm_web_load_progress_get(const Evas_Object *obj); + +/** + * Stops loading the current page + * + * Cancels the loading of the current page in the web object. This will + * cause a "load,error" signal to be emitted, with the is_cancellation + * flag set to @c EINA_TRUE. + * + * @param obj The web object + * + * @return @c EINA_TRUE if the cancel was successful, @c EINA_FALSE otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_stop(Evas_Object *obj); + +/** + * Requests a reload of the current document in the object + * + * @param obj The web object + * + * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_reload(Evas_Object *obj); + +/** + * Requests a reload of the current document, avoiding any existing caches + * + * @param obj The web object + * + * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_reload_full(Evas_Object *obj); + +/** + * Goes back one step in the browsing history + * + * This is equivalent to calling elm_web_object_navigate(obj, -1); + * + * @param obj The web object + * + * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise + * + * @see elm_web_history_enabled_set() + * @see elm_web_back_possible() + * @see elm_web_forward() + * @see elm_web_navigate() + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_back(Evas_Object *obj); + +/** + * Goes forward one step in the browsing history + * + * This is equivalent to calling elm_web_object_navigate(obj, 1); + * + * @param obj The web object + * + * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise + * + * @see elm_web_history_enabled_set() + * @see elm_web_forward_possible_get() + * @see elm_web_back() + * @see elm_web_navigate() + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_forward(Evas_Object *obj); + +/** + * Jumps the given number of steps in the browsing history + * + * The @p steps value can be a negative integer to back in history, or a + * positive to move forward. + * + * @param obj The web object + * @param steps The number of steps to jump + * + * @return @c EINA_TRUE on success, @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() + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_navigate(Evas_Object *obj, int steps); + +/** + * Queries whether it's possible to go back in history + * + * @param obj The web object + * + * @return @c EINA_TRUE if it's possible to back in history, @c EINA_FALSE + * otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_back_possible_get(Evas_Object *obj); + +/** + * Queries whether it's possible to go forward in history + * + * @param obj The web object + * + * @return @c EINA_TRUE if it's possible to forward in history, @c EINA_FALSE + * otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_forward_possible_get(Evas_Object *obj); + +/** + * Queries whether it's possible to jump the given number of steps + * + * The @p steps value can be a negative integer to back in history, or a + * positive to move forward. + * + * @param obj The web object + * @param steps The number of steps to check for + * + * @return @c EINA_TRUE if enough history exists to perform the given jump, + * @c EINA_FALSE otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_navigate_possible_get(Evas_Object *obj, int steps); + +/** + * Gets whether browsing history is enabled for the given object + * + * @param obj The web object + * + * @return @c EINA_TRUE if history is enabled, @c EINA_FALSE otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_history_enabled_get(const Evas_Object *obj); + +/** + * Enables or disables the browsing history + * + * @param obj The web object + * @param enabled Whether to enable or disable the browsing history + * + * @ingroup Web + */ +EAPI void elm_web_history_enabled_set(Evas_Object *obj, Eina_Bool enabled); + +/** + * Sets the zoom level of the web object + * + * Zoom level matches the Webkit API, so 1.0 means normal zoom, with higher + * values meaning zoom in and lower meaning zoom out. This function will + * only affect the zoom level if the mode set with elm_web_zoom_mode_set() + * is ::ELM_WEB_ZOOM_MODE_MANUAL. + * + * @param obj The web object + * @param zoom The zoom level to set + * + * @ingroup Web + */ +EAPI void elm_web_zoom_set(Evas_Object *obj, double zoom); + +/** + * Gets the current zoom level set on the web object + * + * 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 obj The web object + * + * @return The zoom level set on the object + * + * @ingroup Web + */ +EAPI double elm_web_zoom_get(const Evas_Object *obj); + +/** + * Shows the given region in the web object + * + * @param obj The web object + * @param x The x coordinate of the region to show + * @param y The y coordinate of the region to show + * @param w The width of the region to show + * @param h The height of the region to show + * + * @ingroup Web + */ +EAPI void elm_web_region_show(Evas_Object *obj, int x, int y, int w, int h); + +/** + * Brings in the region to the visible area + * + * Like elm_web_region_show(), but it animates the scrolling of the object + * to show the area + * + * @param obj The web object + * @param x The x coordinate of the region to show + * @param y The y coordinate of the region to show + * @param w The width of the region to show + * @param h The height of the region to show + * + * @ingroup Web + */ +EAPI void elm_web_region_bring_in(Evas_Object *obj, int x, int y, int w, int h); + +/** + * Sets the default dialogs to use an Inwin instead of a normal window + * + * If set, then the default implementation for the JavaScript dialogs and + * file selector will be opened in an Inwin. Otherwise they will use a + * normal separated window. + * + * @param obj The web object + * @param value @c EINA_TRUE to use Inwin, @c EINA_FALSE to use a normal window + * + * @ingroup Web + */ +EAPI void elm_web_inwin_mode_set(Evas_Object *obj, Eina_Bool value); + +/** + * Gets whether Inwin mode is set for the current object + * + * @param obj The web object + * + * @return @c EINA_TRUE if Inwin mode is set, @c EINA_FALSE otherwise + * + * @ingroup Web + */ +EAPI Eina_Bool elm_web_inwin_mode_get(const Evas_Object *obj); |