#ifndef _ELM_GENLIST_EO_LEGACY_H_ #define _ELM_GENLIST_EO_LEGACY_H_ #ifndef _ELM_GENLIST_EO_CLASS_TYPE #define _ELM_GENLIST_EO_CLASS_TYPE typedef Eo Elm_Genlist; #endif #ifndef _ELM_GENLIST_EO_TYPES #define _ELM_GENLIST_EO_TYPES #endif /** * @brief Enable/disable homogeneous mode. * * This will enable the homogeneous mode where items are of the same height and * width so that genlist may do the lazy-loading at its maximum (which * increases the performance for scrolling the list). In the normal mode, * genlist will pre-calculate all the items' sizes even though they are not in * use. So items' callbacks are called many times than expected. But * homogeneous mode will skip the item size pre-calculation process so items' * callbacks are called only when the item is needed. * * @note This also works well with group index. * * @param[in] obj The object. * @param[in] homogeneous Assume the items within the genlist are of the same * height and width. Default is @c false. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_homogeneous_set(Elm_Genlist *obj, Eina_Bool homogeneous); /** * @brief Get whether the homogeneous mode is enabled. * * @param[in] obj The object. * * @return Assume the items within the genlist are of the same height and * width. Default is @c false. * * @ingroup Elm_Genlist_Group */ EAPI Eina_Bool elm_genlist_homogeneous_get(const Elm_Genlist *obj); /** * @brief Set the genlist select mode. * * #ELM_OBJECT_SELECT_MODE_DEFAULT means that items will call their selection * func and callback once when first becoming selected. Any further clicks will * do nothing, unless you set always select mode. ELM_OBJECT_SELECT_MODE_ALWAYS * means that even if selected, every click will make the selected callbacks be * called. #ELM_OBJECT_SELECT_MODE_NONE will turn off the ability to select * items entirely and they will neither appear selected nor call selected * callback functions. * * @param[in] obj The object. * @param[in] mode The select mode. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_select_mode_set(Elm_Genlist *obj, Elm_Object_Select_Mode mode); /** * @brief Get the genlist select mode. * * @param[in] obj The object. * * @return The select mode. * * @ingroup Elm_Genlist_Group */ EAPI Elm_Object_Select_Mode elm_genlist_select_mode_get(const Elm_Genlist *obj); /** * @brief Set focus upon items selection mode * * When enabled, every selection of an item inside the genlist will * automatically set focus to its first focusable widget from the left. This is * true of course if the selection was made by clicking an unfocusable area in * an item or selecting it with a key movement. Clicking on a focusable widget * inside an item will cause this particular item to get focus as usual. * * @param[in] obj The object. * @param[in] enabled The tree effect status. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_focus_on_selection_set(Elm_Genlist *obj, Eina_Bool enabled); /** * @brief Get whether focus upon item's selection mode is enabled. * * @param[in] obj The object. * * @return The tree effect status. * * @ingroup Elm_Genlist_Group */ EAPI Eina_Bool elm_genlist_focus_on_selection_get(const Elm_Genlist *obj); /** * @brief Set the timeout in seconds for the longpress event. * * This option will change how long it takes to send an event "longpressed" * after the mouse down signal is sent to the list. If this event occurs, no * "clicked" event will be sent. * * @warning If you set the longpress timeout value with this API, your genlist * will not be affected by the longpress value of elementary config value * later. * * @param[in] obj The object. * @param[in] timeout Timeout in seconds. Default is elm config value (1.0). * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_longpress_timeout_set(Elm_Genlist *obj, double timeout); /** * @brief Get the timeout in seconds for the longpress event. * * @param[in] obj The object. * * @return Timeout in seconds. Default is elm config value (1.0). * * @ingroup Elm_Genlist_Group */ EAPI double elm_genlist_longpress_timeout_get(const Elm_Genlist *obj); /** * @brief Enable or disable multi-selection in the genlist. * * This enables ($true) or disables ($false) multi-selection in the list. This * allows more than 1 item to be selected. To retrieve the list of selected * items, use @ref elm_genlist_selected_items_get. * * @param[in] obj The object. * @param[in] multi Multi-select enable/disable. Default is disabled. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_multi_select_set(Elm_Genlist *obj, Eina_Bool multi); /** * @brief Get if multi-selection in genlist is enabled or disabled. * * @param[in] obj The object. * * @return Multi-select enable/disable. Default is disabled. * * @ingroup Elm_Genlist_Group */ EAPI Eina_Bool elm_genlist_multi_select_get(const Elm_Genlist *obj); /** * @brief Set reorder mode. * * After turning on the reorder mode, longpress on normal item will trigger * reordering of the item. You can move the item up and down. However, reorder * does not work with group item. * * @param[in] obj The object. * @param[in] reorder_mode The reorder mode. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_reorder_mode_set(Elm_Genlist *obj, Eina_Bool reorder_mode); /** * @brief Get the reorder mode. * * @param[in] obj The object. * * @return The reorder mode. * * @ingroup Elm_Genlist_Group */ EAPI Eina_Bool elm_genlist_reorder_mode_get(const Elm_Genlist *obj); /** * @brief Set Genlist decorate mode. * * This sets Genlist decorate mode to all items. * * @param[in] obj The object. * @param[in] decorated The decorate mode status. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_decorate_mode_set(Elm_Genlist *obj, Eina_Bool decorated); /** * @brief Get Genlist decorate mode. * * @param[in] obj The object. * * @return The decorate mode status. * * @ingroup Elm_Genlist_Group */ EAPI Eina_Bool elm_genlist_decorate_mode_get(const Elm_Genlist *obj); /** * @brief Set the genlist multi select mode. * * #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT means that select/unselect items * whenever each item is clicked. #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL * means that only one item will be selected although multi-selection is * enabled, if clicked without pressing control key. This mode is only * available with multi-selection. * * @param[in] obj The object. * @param[in] mode The multi select mode * * @since 1.8 * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_multi_select_mode_set(Elm_Genlist *obj, Elm_Object_Multi_Select_Mode mode); /** * @brief Get the genlist multi select mode. * * @param[in] obj The object. * * @return The multi select mode * * @since 1.8 * * @ingroup Elm_Genlist_Group */ EAPI Elm_Object_Multi_Select_Mode elm_genlist_multi_select_mode_get(const Elm_Genlist *obj); /** * @brief Set the maximum number of items within an item block. * * This will configure the block count to tune to the target with particular * performance matrix. * * A block of objects will be used to reduce the number of operations due to * many objects in the screen. It can determine the visibility, or if the * object has changed, it theme needs to be updated, etc. doing this kind of * calculation to the entire block, instead of per object. * * The default value for the block count is enough for most lists, so unless * you know you will have a lot of objects visible in the screen at the same * time, don't try to change this. * * @param[in] obj The object. * @param[in] count Maximum number of items within an item block. Default is * 32. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_block_count_set(Elm_Genlist *obj, int count); /** * @brief Get the maximum number of items within an item block. * * @param[in] obj The object. * * @return Maximum number of items within an item block. Default is 32. * * @ingroup Elm_Genlist_Group */ EAPI int elm_genlist_block_count_get(const Elm_Genlist *obj); /** * @brief Control genlist tree effect. * * @param[in] obj The object. * @param[in] enabled The tree effect status. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_tree_effect_enabled_set(Elm_Genlist *obj, Eina_Bool enabled); /** * @brief Control genlist tree effect. * * @param[in] obj The object. * * @return The tree effect status. * * @ingroup Elm_Genlist_Group */ EAPI Eina_Bool elm_genlist_tree_effect_enabled_get(const Elm_Genlist *obj); /** * @brief Set whether the genlist items should be highlighted on item * selection. * * This will turn on/off the highlight effect on item selection. The selected * and clicked callback functions will still be called. * * Highlight is enabled by default. * * @param[in] obj The object. * @param[in] highlight @c true to enable highlighting or @c false to disable * it. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_highlight_mode_set(Elm_Genlist *obj, Eina_Bool highlight); /** * @brief Get whether the genlist items' should be highlighted when item * selected. * * @param[in] obj The object. * * @return @c true to enable highlighting or @c false to disable it. * * @ingroup Elm_Genlist_Group */ EAPI Eina_Bool elm_genlist_highlight_mode_get(const Elm_Genlist *obj); /** * @brief This sets the horizontal stretching mode. * * This sets the mode used for sizing items horizontally. Valid modes are * @ref ELM_LIST_LIMIT, @ref ELM_LIST_SCROLL, and @ref ELM_LIST_COMPRESS. The * default is @ref ELM_LIST_SCROLL. This mode means that if items are too wide * to fit, the scroller will scroll horizontally. Otherwise items are expanded * to fill the width of the viewport of the scroller. If it is * @ref ELM_LIST_LIMIT, items will be expanded to the viewport width and * limited to that size. If it is @ref ELM_LIST_COMPRESS, the item width will * be fixed (restricted to a minimum of) to the list width when calculating its * size in order to allow the height to be calculated based on it. This allows, * for instance, text block to wrap lines if the Edje part is configured with * "text.min: 0 1". * * @note @ref ELM_LIST_COMPRESS will make list resize slower as it will have to * recalculate every item height again whenever the list width changes! * * @note Homogeneous mode gives all items in the genlist the same width/height. * With @ref ELM_LIST_COMPRESS, genlist items initialize fast, but there cannot * be any sub-objects in the genlist which require on-the-fly resizing (such as * TEXTBLOCK). In this case some dynamic resizable objects in the genlist might * not diplay properly. * * @param[in] obj The object. * @param[in] mode The mode to use (one of @ref ELM_LIST_SCROLL or * @ref ELM_LIST_LIMIT). * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_mode_set(Elm_Genlist *obj, Elm_List_Mode mode); /** * @brief Get the horizontal stretching mode. * * @param[in] obj The object. * * @return The mode to use (one of @ref ELM_LIST_SCROLL or * @ref ELM_LIST_LIMIT). * * @ingroup Elm_Genlist_Group */ EAPI Elm_List_Mode elm_genlist_mode_get(const Elm_Genlist *obj); /** * @brief Get active genlist mode item. * * This function returns the item that was activated with a mode, by the * function @ref elm_genlist_decorate_mode_set. * * @param[in] obj The object. * * @return The active item for that current mode. Or @c null if no item is * activated with any mode. * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_decorated_item_get(const Elm_Genlist *obj); /** * @brief Get the selected item in the genlist. * * This gets the selected item in the list (if multi-selection is enabled, only * the item that was first selected in the list is returned - which is not very * useful, so see @ref elm_genlist_selected_items_get for when multi-selection * is used). * * If no item is selected, @c null is returned. * * @param[in] obj The object. * * @return The selected item, or @c null if none is selected. * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_selected_item_get(const Elm_Genlist *obj); /** * @brief Get the first item in the genlist. * * This returns the first item in the list. * * If filter is set on genlist, it returns the first filtered item in the list. * * @param[in] obj The object. * * @return The first item or @c null. * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_first_item_get(const Elm_Genlist *obj); /** * @brief Get a list of realized items in genlist. * * This returns a list of the realized items in the genlist. The list contains * genlist item pointers. The list must be freed by the caller when done with * @ref eina_list_free. The item pointers in the list are only valid so long as * those items are not deleted or the genlist is not deleted. * * @param[in] obj The object. * * @return List of realized items * * @ingroup Elm_Genlist_Group */ EAPI Eina_List *elm_genlist_realized_items_get(const Elm_Genlist *obj) EINA_WARN_UNUSED_RESULT; /** * @brief Get a list of selected items in the genlist. * * It returns a list of the selected items. This list pointer is only valid so * long as the selection doesn't change (no items are selected or unselected, * or unselected implicitl by deletion). The list contains genlist items * pointers. The order of the items in this list is the order which they were * selected, i.e. the first item in this list is the first item that was * selected, and so on. * * @note If not in multi-select mode, consider using function * @ref elm_genlist_selected_item_get instead. * * @param[in] obj The object. * * @return List of selected items * * @ingroup Elm_Genlist_Group */ EAPI const Eina_List *elm_genlist_selected_items_get(const Elm_Genlist *obj); /** * @brief Get the last item in the genlist * * This returns the last item in the list. * * If filter is set to genlist, it returns last filtered item in the list. * * @param[in] obj The object. * * @return Last item in list * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_last_item_get(const Elm_Genlist *obj); /** * @brief Insert an item before another in a genlist widget * * This inserts an item before another in the list. It will be in the same tree * level or group as the item it is inserted before. * * @param[in] obj The object. * @param[in] itc The item class for the item. * @param[in] data The item data. * @param[in] parent The parent item, or @c null if none. * @param[in] before_it The item to place this new one before. * @param[in] type Item type. * @param[in] func Convenience function called when the item is selected. * @param[in] func_data Data passed to @c func above. * * @return Handle to inserted item * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_item_insert_before(Elm_Genlist *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Widget_Item *parent, Elm_Widget_Item *before_it, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data); /** * @brief Update the contents of all realized items. * * This updates all realized items by calling all the item class functions * again to get the contents, texts and states. Use this when the original item * data has changed and the changes are desired to be reflected. * * To update just one item, use @ref elm_genlist_item_update. * @param[in] obj The object. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_realized_items_update(Elm_Genlist *obj); /** * @brief Insert an item after another in a genlist widget * * This inserts an item after another in the list. It will be in the same tree * level or group as the item it is inserted after. * * @param[in] obj The object. * @param[in] itc The item class for the item. * @param[in] data The item data. * @param[in] parent The parent item, or @c null if none. * @param[in] after_it The item to place this new one after. * @param[in] type Item type. * @param[in] func Convenience function called when the item is selected. * @param[in] func_data Data passed to @c func above. * * @return Handle to inserted item * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_item_insert_after(Elm_Genlist *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Widget_Item *parent, Elm_Widget_Item *after_it, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data); /** * @brief Get the item that is at the x, y canvas coords. * * This returns the item at the given coordinates (which are canvas relative, * not object-relative). If an item is at that coordinate, that item handle is * returned, and if @c posret is not NULL, the integer pointed to is set to a * value of -1, 0 or 1, depending if the coordinate is on the upper portion of * that item (-1), on the middle section (0) or on the lower part (1). If NULL * is returned as an item (no item found there), then posret may indicate -1 or * 1 based if the coordinate is above or below all items respectively in the * genlist. * * @param[in] obj The object. * @param[in] x The input x coordinate. * @param[in] y The input y coordinate. * @param[out] posret The position relative to the item returned here. * * @return Item at position * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_at_xy_item_get(const Elm_Genlist *obj, int x, int y, int *posret); /** * @brief Set filter mode with key. * * This initiates the filter mode of genlist with user/application provided * key. If key is NULL, the filter mode is turned off. * * The filter data passed has to be managed by application itself and should * not be deleted before genlist is deleted(or while filtering is not done. * * @param[in] obj The object. * @param[in] key Filter key * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_filter_set(Elm_Genlist *obj, void *key); /** * @brief Returns an iterator over the list of filtered items. * * Return NULL if filter is not set. Application must take care of the case * while calling the API. Must be freed after use. * * @param[in] obj The object. * * @return Iterator on genlist * * @ingroup Elm_Genlist_Group */ EAPI Eina_Iterator *elm_genlist_filter_iterator_new(Elm_Genlist *obj); /** * @brief Return how many items have passed the filter currently. * * This behaviour is O(1) and returns the count of items which are currently * passed by the filter. After "filter,done", the call returns total count of * the filtered items. * * @param[in] obj The object. * * @return Count of items passing the filter * * @since 1.18 * * @ingroup Elm_Genlist_Group */ EAPI unsigned int elm_genlist_filtered_items_count(const Elm_Genlist *obj); /** * @brief Return how many items are currently in a list. * * This behavior is O(1) and includes items which may or may not be realized. * * @param[in] obj The object. * * @return Item in list * * @ingroup Elm_Genlist_Group */ EAPI unsigned int elm_genlist_items_count(const Elm_Genlist *obj); /** * @brief Prepend a new item in a given genlist widget. * * This adds an item to the beginning of the list or beginning of the children * of the parent if given. * * @param[in] obj The object. * @param[in] itc The item class for the item. * @param[in] data The item data. * @param[in] parent The parent item, or @c null if none. * @param[in] type Item type. * @param[in] func Convenience function called when the item is selected. * @param[in] func_data Data passed to @c func above. * * @return Handle to prepended item * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_item_prepend(Elm_Genlist *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Widget_Item *parent, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data); /** * @brief Remove all items from a given genlist widget. * * This removes (and deletes) all items in @c obj, leaving it empty. * @param[in] obj The object. * * @ingroup Elm_Genlist_Group */ EAPI void elm_genlist_clear(Elm_Genlist *obj); /** * @brief Append a new item in a given genlist widget. * * This adds the given item to the end of the list or the end of the children * list if the @c parent is given. * * @param[in] obj The object. * @param[in] itc The item class for the item. * @param[in] data The item data. * @param[in] parent The parent item, or @c null if none. * @param[in] type Item type. * @param[in] func Convenience function called when the item is selected. * @param[in] func_data Data passed to @c func above. * * @return Handle to appended item * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_item_append(Elm_Genlist *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Widget_Item *parent, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data); /** * @brief Insert a new item into the sorted genlist object * * This inserts an item in the genlist based on user defined comparison * function. The two arguments passed to the function @c func are genlist item * handles to compare. * * @param[in] obj The object. * @param[in] itc The item class for the item. * @param[in] data The item data. * @param[in] parent The parent item, or @c null if none. * @param[in] type Item type. * @param[in] comp The function called for the sort. * @param[in] func Convenience function called when the item is selected. * @param[in] func_data Data passed to @c func above. * * @return Handle to inserted item * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_item_sorted_insert(Elm_Genlist *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Widget_Item *parent, Elm_Genlist_Item_Type type, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data); /** * @brief Get genlist item by given string. * * It takes pointer to the genlist item that will be used to start search from * it. * * This function uses globs (like "*.jpg") for searching and takes search flags * as last parameter That is a bitfield with values to be ored together or 0 * for no flags. * * @param[in] obj The object. * @param[in] item_to_search_from Pointer to item to start search from. If * @c null, search will be started from the first item of the genlist. * @param[in] part_name Name of the TEXT part of genlist item to search string * in. * @param[in] pattern The search pattern. * @param[in] flags Search flags. * * @return Searched item * * @since 1.11 * * @ingroup Elm_Genlist_Group */ EAPI Elm_Widget_Item *elm_genlist_search_by_text_item_get(Elm_Genlist *obj, Elm_Widget_Item *item_to_search_from, const char *part_name, const char *pattern, Elm_Glob_Match_Flags flags); #endif