2019-03-05 14:00:37 -08:00
|
|
|
#ifndef _ELM_INDEX_EO_H_
|
|
|
|
#define _ELM_INDEX_EO_H_
|
|
|
|
|
|
|
|
#ifndef _ELM_INDEX_EO_CLASS_TYPE
|
|
|
|
#define _ELM_INDEX_EO_CLASS_TYPE
|
|
|
|
|
|
|
|
typedef Eo Elm_Index;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef _ELM_INDEX_EO_TYPES
|
|
|
|
#define _ELM_INDEX_EO_TYPES
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
/** elementary index class
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
#define ELM_INDEX_CLASS elm_index_class_get()
|
|
|
|
|
efl: make all _class_get() functions const
please note, not the return type, but the function.
When appending __attribute__((const)) to a function, the compiler is
told that its enough to call this function once in a function.
This is quite often happening when we are efl_data_scope_get and
efl_super in a function that is different from a implemented function.
The compiler now starts to remove the calls that aggressivly that we
need to ensure that these calls are not removed, which means, the static
function calls, and the eo init are now checking the return value of
these functions, to ensure that they are called.
Please note that you now have to be carefull when your app calls
eo_shutdown, if it does so, you *must* call it at the end of a function,
or never call class_get after that anymore.
Overall this improves elm test runs 0.1s which is fair i guess, the main
thing that is faster is textrendering, where is also the point where
this is the most beneficial.
Please note, this replaces 42 occurences of double _class_get() ... THAT
is a sign!
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Differential Revision: https://phab.enlightenment.org/D12057
2020-07-16 03:39:23 -07:00
|
|
|
EWAPI const Efl_Class *elm_index_class_get(void) EINA_CONST;
|
2019-03-05 14:00:37 -08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Enable or disable auto hiding feature for a given index widget.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] disabled @c true to disable auto hiding, @c false to enable
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI void elm_obj_index_autohide_disabled_set(Eo *obj, Eina_Bool disabled);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Enable or disable auto hiding feature for a given index widget.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
*
|
|
|
|
* @return @c true to disable auto hiding, @c false to enable
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI Eina_Bool elm_obj_index_autohide_disabled_get(const Eo *obj);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Enable or disable omit feature for a given index widget.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] enabled @c true to enable omit feature, @c false to disable
|
|
|
|
*
|
|
|
|
* @since 1.8
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI void elm_obj_index_omit_enabled_set(Eo *obj, Eina_Bool enabled);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Enable or disable omit feature for a given index widget.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
*
|
|
|
|
* @return @c true to enable omit feature, @c false to disable
|
|
|
|
*
|
|
|
|
* @since 1.8
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI Eina_Bool elm_obj_index_omit_enabled_get(const Eo *obj);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Control standard_priority group of index. Priority group will be
|
|
|
|
* shown as many items as it can, and other group will be shown one character
|
|
|
|
* only.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] priority @c priority target priority value in index
|
|
|
|
*
|
|
|
|
* @since 1.16
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI void elm_obj_index_standard_priority_set(Eo *obj, int priority);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Control standard_priority group of index. Priority group will be
|
|
|
|
* shown as many items as it can, and other group will be shown one character
|
|
|
|
* only.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
*
|
|
|
|
* @return @c priority target priority value in index
|
|
|
|
*
|
|
|
|
* @since 1.16
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI int elm_obj_index_standard_priority_get(const Eo *obj);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set a delay change time for index object.
|
|
|
|
*
|
|
|
|
* @note delay time is 0.2 sec by default.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] dtime The delay change time to set.
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI void elm_obj_index_delay_change_time_set(Eo *obj, double dtime);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set a delay change time for index object.
|
|
|
|
*
|
|
|
|
* @note delay time is 0.2 sec by default.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
*
|
|
|
|
* @return The delay change time to set.
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI double elm_obj_index_delay_change_time_get(const Eo *obj);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Control the indicator as to be disabled.
|
|
|
|
*
|
|
|
|
* In Index widget, Indicator notes popup text, which shows a letter has been
|
|
|
|
* selecting.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] disabled @c true to disable it, @c false to enable it
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI void elm_obj_index_indicator_disabled_set(Eo *obj, Eina_Bool disabled);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Control the indicator as to be disabled.
|
|
|
|
*
|
|
|
|
* In Index widget, Indicator notes popup text, which shows a letter has been
|
|
|
|
* selecting.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
*
|
|
|
|
* @return @c true to disable it, @c false to enable it
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI Eina_Bool elm_obj_index_indicator_disabled_get(const Eo *obj);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set the items level for a given index widget.
|
|
|
|
*
|
|
|
|
* See: elm_index_item_level_get()
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] level $0 or $1, the currently implemented levels.
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI void elm_obj_index_item_level_set(Eo *obj, int level);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set the items level for a given index widget.
|
|
|
|
*
|
|
|
|
* See: elm_index_item_level_get()
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
*
|
|
|
|
* @return $0 or $1, the currently implemented levels.
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI int elm_obj_index_item_level_get(const Eo *obj);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Flush the changes made to the index items so they work correctly
|
|
|
|
*
|
|
|
|
* This flushes any changes made to items indicating the object is ready to go.
|
|
|
|
* You should call this before any changes you expect to work. This is similar
|
|
|
|
* to elm_list_go().
|
|
|
|
*
|
|
|
|
* @warning If not called, it won't display the index properly.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] level The index level (one of $0 or $1) where changes were made
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI void elm_obj_index_level_go(Eo *obj, int level);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Prepend a new item on a given index widget.
|
|
|
|
*
|
|
|
|
* Despite the most common usage of the @c letter argument is for single char
|
|
|
|
* strings, one could use arbitrary strings as index entries.
|
|
|
|
*
|
|
|
|
* @c item will be the pointer returned back on $"changed", "delay,changed" and
|
|
|
|
* $"selected" smart events.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] letter Letter under which the item should be indexed
|
|
|
|
* @param[in] func The function to call when the item is selected.
|
|
|
|
* @param[in] data The item data to set for the index's item
|
|
|
|
*
|
|
|
|
* @return A handle to the item added or @c NULL, on errors
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI Elm_Widget_Item *elm_obj_index_item_prepend(Eo *obj, const char *letter, Evas_Smart_Cb func, const void *data);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Removes all items from a given index widget.
|
|
|
|
*
|
|
|
|
* If deletion callbacks are set, via elm_object_item_del_cb_set(), that
|
|
|
|
* callback function will be called for each item in @c obj.
|
|
|
|
* @param[in] obj The object.
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI void elm_obj_index_item_clear(Eo *obj);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Insert a new item into the index object after item @c after.
|
|
|
|
*
|
|
|
|
* Despite the most common usage of the @c letter argument is for single char
|
|
|
|
* strings, one could use arbitrary strings as index entries.
|
|
|
|
*
|
|
|
|
* @c item will be the pointer returned back on $"changed", "delay,changed" and
|
|
|
|
* $"selected" smart events.
|
|
|
|
*
|
|
|
|
* @note If @c after is @c NULL this function will behave as
|
|
|
|
* elm_index_item_append().
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] after The index item to insert after.
|
|
|
|
* @param[in] letter Letter under which the item should be indexed
|
|
|
|
* @param[in] func The function to call when the item is clicked.
|
|
|
|
* @param[in] data The item data to set for the index's item
|
|
|
|
*
|
|
|
|
* @return A handle to the item added or @c NULL, on errors
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI Elm_Widget_Item *elm_obj_index_item_insert_after(Eo *obj, Elm_Widget_Item *after, const char *letter, Evas_Smart_Cb func, const void *data);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Find a given index widget's item, using item data.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] data The item data pointed to by the desired index item
|
|
|
|
*
|
|
|
|
* @return The index item handle, if found, or @c NULL otherwise
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI Elm_Widget_Item *elm_obj_index_item_find(Eo *obj, const void *data);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Insert a new item into the index object before item @c before.
|
|
|
|
*
|
|
|
|
* Despite the most common usage of the @c letter argument is for single char
|
|
|
|
* strings, one could use arbitrary strings as index entries.
|
|
|
|
*
|
|
|
|
* @c item will be the pointer returned back on $"changed", "delay,changed" and
|
|
|
|
* $"selected" smart events.
|
|
|
|
*
|
|
|
|
* @note If @c before is @c NULL this function will behave as
|
|
|
|
* elm_index_item_prepend().
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] before The index item to insert after.
|
|
|
|
* @param[in] letter Letter under which the item should be indexed
|
|
|
|
* @param[in] func The function to call when the item is clicked.
|
|
|
|
* @param[in] data The item data to set for the index's item
|
|
|
|
*
|
|
|
|
* @return A handle to the item added or @c NULL, on errors
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI Elm_Widget_Item *elm_obj_index_item_insert_before(Eo *obj, Elm_Widget_Item *before, const char *letter, Evas_Smart_Cb func, const void *data);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Append a new item on a given index widget.
|
|
|
|
*
|
|
|
|
* Despite the most common usage of the @c letter argument is for single char
|
|
|
|
* strings, one could use arbitrary strings as index entries.
|
|
|
|
*
|
|
|
|
* @c item will be the pointer returned back on $"changed", "delay,changed" and
|
|
|
|
* $"selected" smart events.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] letter Letter under which the item should be indexed
|
|
|
|
* @param[in] func The function to call when the item is selected.
|
|
|
|
* @param[in] data The item data to set for the index's item
|
|
|
|
*
|
|
|
|
* @return A handle to the item added or @c NULL, on errors
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI Elm_Widget_Item *elm_obj_index_item_append(Eo *obj, const char *letter, Evas_Smart_Cb func, const void *data);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Returns the last selected item, for a given index widget.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] level $0 or $1, the currently implemented levels.
|
|
|
|
*
|
|
|
|
* @return The last item selected on @c obj (or @c NULL, on errors).
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI Elm_Widget_Item *elm_obj_index_selected_item_get(const Eo *obj, int level);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Insert a new item into the given index widget, using @c cmp_func
|
|
|
|
* function to sort items (by item handles).
|
|
|
|
*
|
|
|
|
* Despite the most common usage of the @c letter argument is for single char
|
|
|
|
* strings, one could use arbitrary strings as index entries.
|
|
|
|
*
|
|
|
|
* @c item will be the pointer returned back on $"changed", "delay,changed" and
|
|
|
|
* $"selected" smart events.
|
|
|
|
*
|
|
|
|
* @param[in] obj The object.
|
|
|
|
* @param[in] letter Letter under which the item should be indexed
|
|
|
|
* @param[in] func The function to call when the item is clicked.
|
|
|
|
* @param[in] data The item data to set for the index's item
|
|
|
|
* @param[in] cmp_func The comparing function to be used to sort index items by
|
|
|
|
* index item handles
|
|
|
|
* @param[in] cmp_data_func A fallback function to be called for the sorting of
|
|
|
|
* index items by item data). It will be used when @c cmp_func returns $0
|
|
|
|
* (equality), which means an index item with provided item data already
|
|
|
|
* exists. To decide which data item should be pointed to by the index item in
|
|
|
|
* question, @c cmp_data_func will be used. If @c cmp_data_func returns a
|
|
|
|
* non-negative value, the previous index item data will be replaced by the
|
|
|
|
* given @c item pointer. If the previous data need to be freed, it should be
|
|
|
|
* done by the @c cmp_data_func function, because all references to it will be
|
|
|
|
* lost. If this function is not provided ($NULL is given), index items will be
|
|
|
|
* duplicated, if @c cmp_func returns $0.
|
|
|
|
*
|
|
|
|
* @return A handle to the item added or @c NULL, on errors
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
EOAPI Elm_Widget_Item *elm_obj_index_item_sorted_insert(Eo *obj, const char *letter, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func);
|
|
|
|
|
|
|
|
EWAPI extern const Efl_Event_Description _ELM_INDEX_EVENT_CHANGED;
|
|
|
|
|
|
|
|
/** Called when index changed
|
|
|
|
* @return Efl_Object *
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
#define ELM_INDEX_EVENT_CHANGED (&(_ELM_INDEX_EVENT_CHANGED))
|
|
|
|
|
|
|
|
EWAPI extern const Efl_Event_Description _ELM_INDEX_EVENT_DELAY_CHANGED;
|
|
|
|
|
|
|
|
/** Called when delay changed
|
|
|
|
* @return Efl_Object *
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
#define ELM_INDEX_EVENT_DELAY_CHANGED (&(_ELM_INDEX_EVENT_DELAY_CHANGED))
|
|
|
|
|
|
|
|
EWAPI extern const Efl_Event_Description _ELM_INDEX_EVENT_LEVEL_UP;
|
|
|
|
|
|
|
|
/** Called when level increased
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
#define ELM_INDEX_EVENT_LEVEL_UP (&(_ELM_INDEX_EVENT_LEVEL_UP))
|
|
|
|
|
|
|
|
EWAPI extern const Efl_Event_Description _ELM_INDEX_EVENT_LEVEL_DOWN;
|
|
|
|
|
|
|
|
/** Called when level decreased
|
|
|
|
*
|
|
|
|
* @ingroup Elm_Index
|
|
|
|
*/
|
|
|
|
#define ELM_INDEX_EVENT_LEVEL_DOWN (&(_ELM_INDEX_EVENT_LEVEL_DOWN))
|
|
|
|
|
|
|
|
#endif
|