From 3b6fa4e0a29b4c3b494b39cfc25cd27b788ec99f Mon Sep 17 00:00:00 2001 From: Daniel Zaoui Date: Sun, 28 Apr 2013 12:58:28 +0300 Subject: [PATCH] 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. --- legacy/elementary/src/lib/Makefile.am | 48 + legacy/elementary/src/lib/elm_map_common.h | 748 ++++++++ legacy/elementary/src/lib/elm_map_eo.h | 631 +++++++ legacy/elementary/src/lib/elm_map_legacy.h | 723 ++++++++ legacy/elementary/src/lib/elm_menu.h | 382 +--- legacy/elementary/src/lib/elm_menu_common.h | 119 ++ legacy/elementary/src/lib/elm_menu_eo.h | 139 ++ legacy/elementary/src/lib/elm_menu_legacy.h | 131 ++ legacy/elementary/src/lib/elm_panel.h | 160 +- legacy/elementary/src/lib/elm_panel_common.h | 8 + legacy/elementary/src/lib/elm_panel_eo.h | 87 + legacy/elementary/src/lib/elm_panel_legacy.h | 64 + legacy/elementary/src/lib/elm_panes.h | 278 +-- legacy/elementary/src/lib/elm_panes_eo.h | 133 ++ legacy/elementary/src/lib/elm_panes_legacy.h | 155 ++ legacy/elementary/src/lib/elm_photocam.h | 465 +---- legacy/elementary/src/lib/elm_photocam_eo.h | 247 +++ .../elementary/src/lib/elm_photocam_legacy.h | 224 +++ legacy/elementary/src/lib/elm_plug.h | 87 +- legacy/elementary/src/lib/elm_plug_eo.h | 46 + legacy/elementary/src/lib/elm_plug_legacy.h | 39 + legacy/elementary/src/lib/elm_prefs.h | 1042 +---------- legacy/elementary/src/lib/elm_prefs_common.h | 316 ++++ legacy/elementary/src/lib/elm_prefs_eo.h | 349 ++++ legacy/elementary/src/lib/elm_prefs_legacy.h | 368 ++++ legacy/elementary/src/lib/elm_progressbar.h | 462 +---- .../elementary/src/lib/elm_progressbar_eo.h | 231 +++ .../src/lib/elm_progressbar_legacy.h | 251 +++ legacy/elementary/src/lib/elm_radio.h | 212 +-- legacy/elementary/src/lib/elm_radio_eo.h | 118 ++ legacy/elementary/src/lib/elm_radio_legacy.h | 100 ++ legacy/elementary/src/lib/elm_route.h | 101 +- legacy/elementary/src/lib/elm_route_eo.h | 60 + legacy/elementary/src/lib/elm_route_legacy.h | 53 + .../elementary/src/lib/elm_segment_control.h | 367 +--- .../src/lib/elm_segment_control_common.h | 49 + .../src/lib/elm_segment_control_eo.h | 141 ++ .../src/lib/elm_segment_control_legacy.h | 184 ++ legacy/elementary/src/lib/elm_separator.h | 79 +- legacy/elementary/src/lib/elm_separator_eo.h | 43 + .../elementary/src/lib/elm_separator_legacy.h | 32 + legacy/elementary/src/lib/elm_slider.h | 594 +----- legacy/elementary/src/lib/elm_slider_eo.h | 291 +++ legacy/elementary/src/lib/elm_slider_legacy.h | 330 ++++ legacy/elementary/src/lib/elm_slideshow.h | 816 +-------- .../elementary/src/lib/elm_slideshow_common.h | 54 + legacy/elementary/src/lib/elm_slideshow_eo.h | 373 ++++ .../elementary/src/lib/elm_slideshow_legacy.h | 425 +++++ legacy/elementary/src/lib/elm_spinner.h | 681 +------ legacy/elementary/src/lib/elm_spinner_eo.h | 301 ++++ .../elementary/src/lib/elm_spinner_legacy.h | 411 +++++ legacy/elementary/src/lib/elm_systray.h | 326 +--- .../elementary/src/lib/elm_systray_common.h | 31 + legacy/elementary/src/lib/elm_systray_eo.h | 286 +++ legacy/elementary/src/lib/elm_table.h | 280 +-- legacy/elementary/src/lib/elm_table_eo.h | 162 ++ legacy/elementary/src/lib/elm_table_legacy.h | 127 ++ legacy/elementary/src/lib/elm_thumb.h | 340 +--- legacy/elementary/src/lib/elm_thumb_common.h | 74 + legacy/elementary/src/lib/elm_thumb_eo.h | 136 ++ legacy/elementary/src/lib/elm_thumb_legacy.h | 137 ++ legacy/elementary/src/lib/elm_video.h | 483 +---- legacy/elementary/src/lib/elm_video_eo.h | 284 +++ legacy/elementary/src/lib/elm_video_legacy.h | 228 +++ legacy/elementary/src/lib/elm_web.h | 1586 +---------------- legacy/elementary/src/lib/elm_web_common.h | 350 ++++ legacy/elementary/src/lib/elm_web_eo.h | 703 ++++++++ legacy/elementary/src/lib/elm_web_legacy.h | 610 +++++++ 68 files changed, 11267 insertions(+), 8624 deletions(-) create mode 100644 legacy/elementary/src/lib/elm_map_common.h create mode 100644 legacy/elementary/src/lib/elm_map_eo.h create mode 100644 legacy/elementary/src/lib/elm_map_legacy.h create mode 100644 legacy/elementary/src/lib/elm_menu_common.h create mode 100644 legacy/elementary/src/lib/elm_menu_eo.h create mode 100644 legacy/elementary/src/lib/elm_menu_legacy.h create mode 100644 legacy/elementary/src/lib/elm_panel_common.h create mode 100644 legacy/elementary/src/lib/elm_panel_eo.h create mode 100644 legacy/elementary/src/lib/elm_panel_legacy.h create mode 100644 legacy/elementary/src/lib/elm_panes_eo.h create mode 100644 legacy/elementary/src/lib/elm_panes_legacy.h create mode 100644 legacy/elementary/src/lib/elm_photocam_eo.h create mode 100644 legacy/elementary/src/lib/elm_photocam_legacy.h create mode 100644 legacy/elementary/src/lib/elm_plug_eo.h create mode 100644 legacy/elementary/src/lib/elm_plug_legacy.h create mode 100644 legacy/elementary/src/lib/elm_prefs_common.h create mode 100644 legacy/elementary/src/lib/elm_prefs_eo.h create mode 100644 legacy/elementary/src/lib/elm_prefs_legacy.h create mode 100644 legacy/elementary/src/lib/elm_progressbar_eo.h create mode 100644 legacy/elementary/src/lib/elm_progressbar_legacy.h create mode 100644 legacy/elementary/src/lib/elm_radio_eo.h create mode 100644 legacy/elementary/src/lib/elm_radio_legacy.h create mode 100644 legacy/elementary/src/lib/elm_route_eo.h create mode 100644 legacy/elementary/src/lib/elm_route_legacy.h create mode 100644 legacy/elementary/src/lib/elm_segment_control_common.h create mode 100644 legacy/elementary/src/lib/elm_segment_control_eo.h create mode 100644 legacy/elementary/src/lib/elm_segment_control_legacy.h create mode 100644 legacy/elementary/src/lib/elm_separator_eo.h create mode 100644 legacy/elementary/src/lib/elm_separator_legacy.h create mode 100644 legacy/elementary/src/lib/elm_slider_eo.h create mode 100644 legacy/elementary/src/lib/elm_slider_legacy.h create mode 100644 legacy/elementary/src/lib/elm_slideshow_common.h create mode 100644 legacy/elementary/src/lib/elm_slideshow_eo.h create mode 100644 legacy/elementary/src/lib/elm_slideshow_legacy.h create mode 100644 legacy/elementary/src/lib/elm_spinner_eo.h create mode 100644 legacy/elementary/src/lib/elm_spinner_legacy.h create mode 100644 legacy/elementary/src/lib/elm_systray_common.h create mode 100644 legacy/elementary/src/lib/elm_systray_eo.h create mode 100644 legacy/elementary/src/lib/elm_table_eo.h create mode 100644 legacy/elementary/src/lib/elm_table_legacy.h create mode 100644 legacy/elementary/src/lib/elm_thumb_common.h create mode 100644 legacy/elementary/src/lib/elm_thumb_eo.h create mode 100644 legacy/elementary/src/lib/elm_thumb_legacy.h create mode 100644 legacy/elementary/src/lib/elm_video_eo.h create mode 100644 legacy/elementary/src/lib/elm_video_legacy.h create mode 100644 legacy/elementary/src/lib/elm_web_common.h create mode 100644 legacy/elementary/src/lib/elm_web_eo.h create mode 100644 legacy/elementary/src/lib/elm_web_legacy.h diff --git a/legacy/elementary/src/lib/Makefile.am b/legacy/elementary/src/lib/Makefile.am index e96600a758..622942bbb5 100644 --- a/legacy/elementary/src/lib/Makefile.am +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_map_common.h b/legacy/elementary/src/lib/elm_map_common.h new file mode 100644 index 0000000000..71e87a67f2 --- /dev/null +++ b/legacy/elementary/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 don't 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. + * Do not modify this object (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. + * + * Do not modify this object (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. + * + * Do not modify this object (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. + * + * Do not modify this icon (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/legacy/elementary/src/lib/elm_map_eo.h b/legacy/elementary/src/lib/elm_map_eo.h new file mode 100644 index 0000000000..ea34d632dd --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_map_legacy.h b/legacy/elementary/src/lib/elm_map_legacy.h new file mode 100644 index 0000000000..36fb0c3382 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_menu.h b/legacy/elementary/src/lib/elm_menu.h index 46a18f5bd7..2a5350f72b 100644 --- a/legacy/elementary/src/lib/elm_menu.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_menu_common.h b/legacy/elementary/src/lib/elm_menu_common.h new file mode 100644 index 0000000000..c91212444d --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_menu_eo.h b/legacy/elementary/src/lib/elm_menu_eo.h new file mode 100644 index 0000000000..e6c8a77e13 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_menu_legacy.h b/legacy/elementary/src/lib/elm_menu_legacy.h new file mode 100644 index 0000000000..0282273ae0 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_panel.h b/legacy/elementary/src/lib/elm_panel.h index bd70b1f8d5..749dc4413e 100644 --- a/legacy/elementary/src/lib/elm_panel.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_panel_common.h b/legacy/elementary/src/lib/elm_panel_common.h new file mode 100644 index 0000000000..8c84d1ab1f --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_panel_eo.h b/legacy/elementary/src/lib/elm_panel_eo.h new file mode 100644 index 0000000000..6963d60427 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_panel_legacy.h b/legacy/elementary/src/lib/elm_panel_legacy.h new file mode 100644 index 0000000000..e4ece27ac6 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_panes.h b/legacy/elementary/src/lib/elm_panes.h index 2c458f3637..7838cc3577 100644 --- a/legacy/elementary/src/lib/elm_panes.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_panes_eo.h b/legacy/elementary/src/lib/elm_panes_eo.h new file mode 100644 index 0000000000..1b69edec51 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_panes_legacy.h b/legacy/elementary/src/lib/elm_panes_legacy.h new file mode 100644 index 0000000000..e9f760b94d --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_photocam.h b/legacy/elementary/src/lib/elm_photocam.h index cf5f9935f5..80d6eea07f 100644 --- a/legacy/elementary/src/lib/elm_photocam.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_photocam_eo.h b/legacy/elementary/src/lib/elm_photocam_eo.h new file mode 100644 index 0000000000..c98ab8943e --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_photocam_legacy.h b/legacy/elementary/src/lib/elm_photocam_legacy.h new file mode 100644 index 0000000000..be52b9749b --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_plug.h b/legacy/elementary/src/lib/elm_plug.h index 72a78595a7..17ba2962f9 100644 --- a/legacy/elementary/src/lib/elm_plug.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_plug_eo.h b/legacy/elementary/src/lib/elm_plug_eo.h new file mode 100644 index 0000000000..6ea12b2c52 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_plug_legacy.h b/legacy/elementary/src/lib/elm_plug_legacy.h new file mode 100644 index 0000000000..ba0330d80f --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_prefs.h b/legacy/elementary/src/lib/elm_prefs.h index a813baa168..466065850e 100644 --- a/legacy/elementary/src/lib/elm_prefs.h +++ b/legacy/elementary/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 prefs data 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 - * will be written back 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, for read-only 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/legacy/elementary/src/lib/elm_prefs_common.h b/legacy/elementary/src/lib/elm_prefs_common.h new file mode 100644 index 0000000000..70f063aaa7 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_prefs_eo.h b/legacy/elementary/src/lib/elm_prefs_eo.h new file mode 100644 index 0000000000..72ebcc3895 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_prefs_legacy.h b/legacy/elementary/src/lib/elm_prefs_legacy.h new file mode 100644 index 0000000000..9638e4fb61 --- /dev/null +++ b/legacy/elementary/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 prefs data 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 + * will be written back 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, for read-only 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/legacy/elementary/src/lib/elm_progressbar.h b/legacy/elementary/src/lib/elm_progressbar.h index c72706ece2..797716c10f 100644 --- a/legacy/elementary/src/lib/elm_progressbar.h +++ b/legacy/elementary/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 format - * string 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/legacy/elementary/src/lib/elm_progressbar_eo.h b/legacy/elementary/src/lib/elm_progressbar_eo.h new file mode 100644 index 0000000000..26f30aa96b --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_progressbar_legacy.h b/legacy/elementary/src/lib/elm_progressbar_legacy.h new file mode 100644 index 0000000000..492654d1e6 --- /dev/null +++ b/legacy/elementary/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 format + * string 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/legacy/elementary/src/lib/elm_radio.h b/legacy/elementary/src/lib/elm_radio.h index 13c4c7c1bc..fec468cdfe 100644 --- a/legacy/elementary/src/lib/elm_radio.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_radio_eo.h b/legacy/elementary/src/lib/elm_radio_eo.h new file mode 100644 index 0000000000..c007d2f8be --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_radio_legacy.h b/legacy/elementary/src/lib/elm_radio_legacy.h new file mode 100644 index 0000000000..807eb37a4b --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_route.h b/legacy/elementary/src/lib/elm_route.h index 5a88ff6e29..80ba517c0a 100644 --- a/legacy/elementary/src/lib/elm_route.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_route_eo.h b/legacy/elementary/src/lib/elm_route_eo.h new file mode 100644 index 0000000000..aa4cd3f214 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_route_legacy.h b/legacy/elementary/src/lib/elm_route_legacy.h new file mode 100644 index 0000000000..330552d73a --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_segment_control.h b/legacy/elementary/src/lib/elm_segment_control.h index 55afe60fad..6a0d5b11fe 100644 --- a/legacy/elementary/src/lib/elm_segment_control.h +++ b/legacy/elementary/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 count - 1 . - * 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 count - 1 . - * 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/legacy/elementary/src/lib/elm_segment_control_common.h b/legacy/elementary/src/lib/elm_segment_control_common.h new file mode 100644 index 0000000000..6b586ec3dc --- /dev/null +++ b/legacy/elementary/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 count - 1 . + * 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/legacy/elementary/src/lib/elm_segment_control_eo.h b/legacy/elementary/src/lib/elm_segment_control_eo.h new file mode 100644 index 0000000000..ddcee090c9 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_segment_control_legacy.h b/legacy/elementary/src/lib/elm_segment_control_legacy.h new file mode 100644 index 0000000000..018dd6213d --- /dev/null +++ b/legacy/elementary/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 count - 1 . + * 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/legacy/elementary/src/lib/elm_separator.h b/legacy/elementary/src/lib/elm_separator.h index 3aef7cb806..6e9768f8ac 100644 --- a/legacy/elementary/src/lib/elm_separator.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_separator_eo.h b/legacy/elementary/src/lib/elm_separator_eo.h new file mode 100644 index 0000000000..30b60f455d --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_separator_legacy.h b/legacy/elementary/src/lib/elm_separator_legacy.h new file mode 100644 index 0000000000..b9d7604d49 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_slider.h b/legacy/elementary/src/lib/elm_slider.h index c8f676f372..aea35b19df 100644 --- a/legacy/elementary/src/lib/elm_slider.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_slider_eo.h b/legacy/elementary/src/lib/elm_slider_eo.h new file mode 100644 index 0000000000..35872d65a6 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_slider_legacy.h b/legacy/elementary/src/lib/elm_slider_legacy.h new file mode 100644 index 0000000000..a547b5550a --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_slideshow.h b/legacy/elementary/src/lib/elm_slideshow.h index d96e2024d8..08746c61e7 100644 --- a/legacy/elementary/src/lib/elm_slideshow.h +++ b/legacy/elementary/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, - * after the current item - * - * @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, - * after the current item - * - * @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 by #Elm_Slideshow_Item_Class item handles - * @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, and start the slideshow, itself - * - * @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. Do not modify this object (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, - * before the current item - * - * @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, - * before the current item - * - * @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, - * after the current item - * - * @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, - * after the current item - * - * @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/legacy/elementary/src/lib/elm_slideshow_common.h b/legacy/elementary/src/lib/elm_slideshow_common.h new file mode 100644 index 0000000000..23a27214ce --- /dev/null +++ b/legacy/elementary/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. Do not modify this object (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/legacy/elementary/src/lib/elm_slideshow_eo.h b/legacy/elementary/src/lib/elm_slideshow_eo.h new file mode 100644 index 0000000000..defce73674 --- /dev/null +++ b/legacy/elementary/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, + * after the current item + * + * @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, + * after the current item + * + * @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/legacy/elementary/src/lib/elm_slideshow_legacy.h b/legacy/elementary/src/lib/elm_slideshow_legacy.h new file mode 100644 index 0000000000..4de53c20c4 --- /dev/null +++ b/legacy/elementary/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 by #Elm_Slideshow_Item_Class item handles + * @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, and start the slideshow, itself + * + * @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, + * before the current item + * + * @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, + * before the current item + * + * @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, + * after the current item + * + * @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, + * after the current item + * + * @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/legacy/elementary/src/lib/elm_spinner.h b/legacy/elementary/src/lib/elm_spinner.h index 31849af110..3f7a0a8ce5 100644 --- a/legacy/elementary/src/lib/elm_spinner.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_spinner_eo.h b/legacy/elementary/src/lib/elm_spinner_eo.h new file mode 100644 index 0000000000..415a4606b7 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_spinner_legacy.h b/legacy/elementary/src/lib/elm_spinner_legacy.h new file mode 100644 index 0000000000..81711aaa05 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_systray.h b/legacy/elementary/src/lib/elm_systray.h index 225daa773d..5c149d3580 100644 --- a/legacy/elementary/src/lib/elm_systray.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_systray_common.h b/legacy/elementary/src/lib/elm_systray_common.h new file mode 100644 index 0000000000..f0871c9559 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_systray_eo.h b/legacy/elementary/src/lib/elm_systray_eo.h new file mode 100644 index 0000000000..18998f96f2 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_table.h b/legacy/elementary/src/lib/elm_table.h index e87ae14b50..4d040c8111 100644 --- a/legacy/elementary/src/lib/elm_table.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_table_eo.h b/legacy/elementary/src/lib/elm_table_eo.h new file mode 100644 index 0000000000..23e0c759f3 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_table_legacy.h b/legacy/elementary/src/lib/elm_table_legacy.h new file mode 100644 index 0000000000..1a20529c0f --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_thumb.h b/legacy/elementary/src/lib/elm_thumb.h index 28a7299a11..7b0b1c747d 100644 --- a/legacy/elementary/src/lib/elm_thumb.h +++ b/legacy/elementary/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 - * #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/legacy/elementary/src/lib/elm_thumb_common.h b/legacy/elementary/src/lib/elm_thumb_common.h new file mode 100644 index 0000000000..4718da7dc5 --- /dev/null +++ b/legacy/elementary/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 + * #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/legacy/elementary/src/lib/elm_thumb_eo.h b/legacy/elementary/src/lib/elm_thumb_eo.h new file mode 100644 index 0000000000..f80229127d --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_thumb_legacy.h b/legacy/elementary/src/lib/elm_thumb_legacy.h new file mode 100644 index 0000000000..c7963bcfe1 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_video.h b/legacy/elementary/src/lib/elm_video.h index 4d68022df5..e65c804e6d 100644 --- a/legacy/elementary/src/lib/elm_video.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_video_eo.h b/legacy/elementary/src/lib/elm_video_eo.h new file mode 100644 index 0000000000..6baa254b63 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_video_legacy.h b/legacy/elementary/src/lib/elm_video_legacy.h new file mode 100644 index 0000000000..ddd30c6e91 --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_web.h b/legacy/elementary/src/lib/elm_web.h index c3eca551aa..daa484d962 100644 --- a/legacy/elementary/src/lib/elm_web.h +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_web_common.h b/legacy/elementary/src/lib/elm_web_common.h new file mode 100644 index 0000000000..3671c3e32d --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_web_eo.h b/legacy/elementary/src/lib/elm_web_eo.h new file mode 100644 index 0000000000..01de93e6ac --- /dev/null +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_web_legacy.h b/legacy/elementary/src/lib/elm_web_legacy.h new file mode 100644 index 0000000000..c0af13203e --- /dev/null +++ b/legacy/elementary/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);