1 #ifndef _ELM_GENLIST_EO_H_
2 #define _ELM_GENLIST_EO_H_
3 
4 #ifndef _ELM_GENLIST_EO_CLASS_TYPE
5 #define _ELM_GENLIST_EO_CLASS_TYPE
6 
7 typedef Eo Elm_Genlist;
8 
9 #endif
10 
11 #ifndef _ELM_GENLIST_EO_TYPES
12 #define _ELM_GENLIST_EO_TYPES
13 
14 
15 #endif
16 /** Elementary genlist class
17  *
18  * @ingroup Elm_Genlist_Group
19  */
20 #define ELM_GENLIST_CLASS elm_genlist_class_get()
21 
22 EWAPI const Efl_Class *elm_genlist_class_get(void) EINA_CONST;
23 
24 /**
25  * @brief Enable/disable homogeneous mode.
26  *
27  * This will enable the homogeneous mode where items are of the same height and
28  * width so that genlist may do the lazy-loading at its maximum (which
29  * increases the performance for scrolling the list). In the normal mode,
30  * genlist will pre-calculate all the items' sizes even though they are not in
31  * use. So items' callbacks are called many times than expected. But
32  * homogeneous mode will skip the item size pre-calculation  process so items'
33  * callbacks are called only when the item is needed.
34  *
35  * @note This also works well with group index.
36  *
37  * @param[in] obj The object.
38  * @param[in] homogeneous Assume the items within the genlist are of the same
39  * height and width. Default is @c false.
40  *
41  * @ingroup Elm_Genlist_Group
42  */
43 EOAPI void elm_obj_genlist_homogeneous_set(Eo *obj, Eina_Bool homogeneous);
44 
45 /**
46  * @brief Get whether the homogeneous mode is enabled.
47  *
48  * @param[in] obj The object.
49  *
50  * @return Assume the items within the genlist are of the same height and
51  * width. Default is @c false.
52  *
53  * @ingroup Elm_Genlist_Group
54  */
55 EOAPI Eina_Bool elm_obj_genlist_homogeneous_get(const Eo *obj);
56 
57 /**
58  * @brief Set the genlist select mode.
59  *
60  * #ELM_OBJECT_SELECT_MODE_DEFAULT means that items will call their selection
61  * func and callback once when first becoming selected. Any further clicks will
62  * do nothing, unless you set always select mode. ELM_OBJECT_SELECT_MODE_ALWAYS
63  * means that even if selected, every click will make the selected callbacks be
64  * called. #ELM_OBJECT_SELECT_MODE_NONE will turn off the ability to select
65  * items entirely and they will neither appear selected nor call selected
66  * callback functions.
67  *
68  * @param[in] obj The object.
69  * @param[in] mode The select mode.
70  *
71  * @ingroup Elm_Genlist_Group
72  */
73 EOAPI void elm_obj_genlist_select_mode_set(Eo *obj, Elm_Object_Select_Mode mode);
74 
75 /**
76  * @brief Get the genlist select mode.
77  *
78  * @param[in] obj The object.
79  *
80  * @return The select mode.
81  *
82  * @ingroup Elm_Genlist_Group
83  */
84 EOAPI Elm_Object_Select_Mode elm_obj_genlist_select_mode_get(const Eo *obj);
85 
86 /**
87  * @brief Set focus upon items selection mode
88  *
89  * When enabled, every selection of an item inside the genlist will
90  * automatically set focus to its first focusable widget from the left. This is
91  * true of course if the selection was made by clicking an unfocusable area in
92  * an item or selecting it with a key movement. Clicking on a focusable widget
93  * inside an item will cause this particular item to get focus as usual.
94  *
95  * @param[in] obj The object.
96  * @param[in] enabled The tree effect status.
97  *
98  * @ingroup Elm_Genlist_Group
99  */
100 EOAPI void elm_obj_genlist_focus_on_selection_set(Eo *obj, Eina_Bool enabled);
101 
102 /**
103  * @brief Get whether focus upon item's selection mode is enabled.
104  *
105  * @param[in] obj The object.
106  *
107  * @return The tree effect status.
108  *
109  * @ingroup Elm_Genlist_Group
110  */
111 EOAPI Eina_Bool elm_obj_genlist_focus_on_selection_get(const Eo *obj);
112 
113 /**
114  * @brief Set the timeout in seconds for the longpress event.
115  *
116  * This option will change how long it takes to send an event "longpressed"
117  * after the mouse down signal is sent to the list. If this event occurs, no
118  * "clicked" event will be sent.
119  *
120  * @warning If you set the longpress timeout value with this API, your genlist
121  * will not be affected by the longpress value of elementary config value
122  * later.
123  *
124  * @param[in] obj The object.
125  * @param[in] timeout Timeout in seconds. Default is elm config value (1.0).
126  *
127  * @ingroup Elm_Genlist_Group
128  */
129 EOAPI void elm_obj_genlist_longpress_timeout_set(Eo *obj, double timeout);
130 
131 /**
132  * @brief Get the timeout in seconds for the longpress event.
133  *
134  * @param[in] obj The object.
135  *
136  * @return Timeout in seconds. Default is elm config value (1.0).
137  *
138  * @ingroup Elm_Genlist_Group
139  */
140 EOAPI double elm_obj_genlist_longpress_timeout_get(const Eo *obj);
141 
142 /**
143  * @brief Enable or disable multi-selection in the genlist.
144  *
145  * This enables ($true) or disables ($false) multi-selection in the list. This
146  * allows more than 1 item to be selected. To retrieve the list of selected
147  * items, use @ref elm_obj_genlist_selected_items_get.
148  *
149  * @param[in] obj The object.
150  * @param[in] multi Multi-select enable/disable. Default is disabled.
151  *
152  * @ingroup Elm_Genlist_Group
153  */
154 EOAPI void elm_obj_genlist_multi_select_set(Eo *obj, Eina_Bool multi);
155 
156 /**
157  * @brief Get if multi-selection in genlist is enabled or disabled.
158  *
159  * @param[in] obj The object.
160  *
161  * @return Multi-select enable/disable. Default is disabled.
162  *
163  * @ingroup Elm_Genlist_Group
164  */
165 EOAPI Eina_Bool elm_obj_genlist_multi_select_get(const Eo *obj);
166 
167 /**
168  * @brief Set reorder mode.
169  *
170  * After turning on the reorder mode, longpress on normal item will trigger
171  * reordering of the item. You can move the item up and down. However, reorder
172  * does not work with group item.
173  *
174  * @param[in] obj The object.
175  * @param[in] reorder_mode The reorder mode.
176  *
177  * @ingroup Elm_Genlist_Group
178  */
179 EOAPI void elm_obj_genlist_reorder_mode_set(Eo *obj, Eina_Bool reorder_mode);
180 
181 /**
182  * @brief Get the reorder mode.
183  *
184  * @param[in] obj The object.
185  *
186  * @return The reorder mode.
187  *
188  * @ingroup Elm_Genlist_Group
189  */
190 EOAPI Eina_Bool elm_obj_genlist_reorder_mode_get(const Eo *obj);
191 
192 /**
193  * @brief Set Genlist decorate mode.
194  *
195  * This sets Genlist decorate mode to all items.
196  *
197  * @param[in] obj The object.
198  * @param[in] decorated The decorate mode status.
199  *
200  * @ingroup Elm_Genlist_Group
201  */
202 EOAPI void elm_obj_genlist_decorate_mode_set(Eo *obj, Eina_Bool decorated);
203 
204 /**
205  * @brief Get Genlist decorate mode.
206  *
207  * @param[in] obj The object.
208  *
209  * @return The decorate mode status.
210  *
211  * @ingroup Elm_Genlist_Group
212  */
213 EOAPI Eina_Bool elm_obj_genlist_decorate_mode_get(const Eo *obj);
214 
215 /**
216  * @brief Set the genlist multi select mode.
217  *
218  * #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT means that select/unselect items
219  * whenever each item is clicked. #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL
220  * means that only one item will be selected although multi-selection is
221  * enabled, if clicked without pressing control key. This mode is only
222  * available with multi-selection.
223  *
224  * @param[in] obj The object.
225  * @param[in] mode The multi select mode
226  *
227  * @since 1.8
228  *
229  * @ingroup Elm_Genlist_Group
230  */
231 EOAPI void elm_obj_genlist_multi_select_mode_set(Eo *obj, Elm_Object_Multi_Select_Mode mode);
232 
233 /**
234  * @brief Get the genlist multi select mode.
235  *
236  * @param[in] obj The object.
237  *
238  * @return The multi select mode
239  *
240  * @since 1.8
241  *
242  * @ingroup Elm_Genlist_Group
243  */
244 EOAPI Elm_Object_Multi_Select_Mode elm_obj_genlist_multi_select_mode_get(const Eo *obj);
245 
246 /**
247  * @brief Set the maximum number of items within an item block.
248  *
249  * This will configure the block count to tune to the target with particular
250  * performance matrix.
251  *
252  * A block of objects will be used to reduce the number of operations due to
253  * many objects in the screen. It can determine the visibility, or if the
254  * object has changed, it theme needs to be updated, etc. doing this kind of
255  * calculation to the entire block, instead of per object.
256  *
257  * The default value for the block count is enough for most lists, so unless
258  * you know you will have a lot of objects visible in the screen at the same
259  * time, don't try to change this.
260  *
261  * @param[in] obj The object.
262  * @param[in] count Maximum number of items within an item block. Default is
263  * 32.
264  *
265  * @ingroup Elm_Genlist_Group
266  */
267 EOAPI void elm_obj_genlist_block_count_set(Eo *obj, int count);
268 
269 /**
270  * @brief Get the maximum number of items within an item block.
271  *
272  * @param[in] obj The object.
273  *
274  * @return Maximum number of items within an item block. Default is 32.
275  *
276  * @ingroup Elm_Genlist_Group
277  */
278 EOAPI int elm_obj_genlist_block_count_get(const Eo *obj);
279 
280 /**
281  * @brief Control genlist tree effect.
282  *
283  * @param[in] obj The object.
284  * @param[in] enabled The tree effect status.
285  *
286  * @ingroup Elm_Genlist_Group
287  */
288 EOAPI void elm_obj_genlist_tree_effect_enabled_set(Eo *obj, Eina_Bool enabled);
289 
290 /**
291  * @brief Control genlist tree effect.
292  *
293  * @param[in] obj The object.
294  *
295  * @return The tree effect status.
296  *
297  * @ingroup Elm_Genlist_Group
298  */
299 EOAPI Eina_Bool elm_obj_genlist_tree_effect_enabled_get(const Eo *obj);
300 
301 /**
302  * @brief Set whether the genlist items should be highlighted on item
303  * selection.
304  *
305  * This will turn on/off the highlight effect on item selection. The selected
306  * and clicked callback functions will still be called.
307  *
308  * Highlight is enabled by default.
309  *
310  * @param[in] obj The object.
311  * @param[in] highlight @c true to enable highlighting or @c false to disable
312  * it.
313  *
314  * @ingroup Elm_Genlist_Group
315  */
316 EOAPI void elm_obj_genlist_highlight_mode_set(Eo *obj, Eina_Bool highlight);
317 
318 /**
319  * @brief Get whether the genlist items' should be highlighted when item
320  * selected.
321  *
322  * @param[in] obj The object.
323  *
324  * @return @c true to enable highlighting or @c false to disable it.
325  *
326  * @ingroup Elm_Genlist_Group
327  */
328 EOAPI Eina_Bool elm_obj_genlist_highlight_mode_get(const Eo *obj);
329 
330 /**
331  * @brief This sets the horizontal stretching mode.
332  *
333  * This sets the mode used for sizing items horizontally. Valid modes are
334  * @ref ELM_LIST_LIMIT, @ref ELM_LIST_SCROLL, and @ref ELM_LIST_COMPRESS. The
335  * default is @ref ELM_LIST_SCROLL. This mode means that if items are too wide
336  * to fit, the scroller will scroll horizontally. Otherwise items are expanded
337  * to fill the width of the viewport of the scroller. If it is
338  * @ref ELM_LIST_LIMIT, items will be expanded to the viewport width and
339  * limited to that size. If it is @ref ELM_LIST_COMPRESS, the item width will
340  * be fixed (restricted to a minimum of) to the list width when calculating its
341  * size in order to allow the height to be calculated based on it. This allows,
342  * for instance, text block to wrap lines if the Edje part is configured with
343  * "text.min: 0 1".
344  *
345  * @note @ref ELM_LIST_COMPRESS will make list resize slower as it will have to
346  * recalculate every item height again whenever the list width changes!
347  *
348  * @note Homogeneous mode gives all items in the genlist the same width/height.
349  * With @ref ELM_LIST_COMPRESS, genlist items initialize fast, but there cannot
350  * be any sub-objects in the genlist which require on-the-fly resizing (such as
351  * TEXTBLOCK). In this case some dynamic resizable objects in the genlist might
352  * not diplay properly.
353  *
354  * @param[in] obj The object.
355  * @param[in] mode The mode to use (one of @ref ELM_LIST_SCROLL or
356  * @ref ELM_LIST_LIMIT).
357  *
358  * @ingroup Elm_Genlist_Group
359  */
360 EOAPI void elm_obj_genlist_mode_set(Eo *obj, Elm_List_Mode mode);
361 
362 /**
363  * @brief Get the horizontal stretching mode.
364  *
365  * @param[in] obj The object.
366  *
367  * @return The mode to use (one of @ref ELM_LIST_SCROLL or
368  * @ref ELM_LIST_LIMIT).
369  *
370  * @ingroup Elm_Genlist_Group
371  */
372 EOAPI Elm_List_Mode elm_obj_genlist_mode_get(const Eo *obj);
373 
374 /**
375  * @brief Get active genlist mode item.
376  *
377  * This function returns the item that was activated with a mode, by the
378  * function @ref elm_obj_genlist_decorate_mode_set.
379  *
380  * @param[in] obj The object.
381  *
382  * @return The active item for that current mode. Or @c null if no item is
383  * activated with any mode.
384  *
385  * @ingroup Elm_Genlist_Group
386  */
387 EOAPI Elm_Widget_Item *elm_obj_genlist_decorated_item_get(const Eo *obj);
388 
389 /**
390  * @brief Get the selected item in the genlist.
391  *
392  * This gets the selected item in the list (if multi-selection is enabled, only
393  * the item that was first selected in the list is returned - which is not very
394  * useful, so see @ref elm_obj_genlist_selected_items_get for when
395  * multi-selection is used).
396  *
397  * If no item is selected, @c null is returned.
398  *
399  * @param[in] obj The object.
400  *
401  * @return The selected item, or @c null if none is selected.
402  *
403  * @ingroup Elm_Genlist_Group
404  */
405 EOAPI Elm_Widget_Item *elm_obj_genlist_selected_item_get(const Eo *obj);
406 
407 /**
408  * @brief Get the first item in the genlist.
409  *
410  * This returns the first item in the list.
411  *
412  * If filter is set on genlist, it returns the first filtered item in the list.
413  *
414  * @param[in] obj The object.
415  *
416  * @return The first item or @c null.
417  *
418  * @ingroup Elm_Genlist_Group
419  */
420 EOAPI Elm_Widget_Item *elm_obj_genlist_first_item_get(const Eo *obj);
421 
422 /**
423  * @brief Get a list of realized items in genlist.
424  *
425  * This returns a list of the realized items in the genlist. The list contains
426  * genlist item pointers. The list must be freed by the caller when done with
427  * @ref eina_list_free. The item pointers in the list are only valid so long as
428  * those items are not deleted or the genlist is not deleted.
429  *
430  * @param[in] obj The object.
431  *
432  * @return List of realized items
433  *
434  * @ingroup Elm_Genlist_Group
435  */
436 EOAPI Eina_List *elm_obj_genlist_realized_items_get(const Eo *obj) EINA_WARN_UNUSED_RESULT;
437 
438 /**
439  * @brief Get a list of selected items in the genlist.
440  *
441  * It returns a list of the selected items. This list pointer is only valid so
442  * long as the selection doesn't change (no items are selected or unselected,
443  * or unselected implicitl by deletion). The list contains genlist items
444  * pointers. The order of the items in this list is the order which they were
445  * selected, i.e. the first item in this list is the first item that was
446  * selected, and so on.
447  *
448  * @note If not in multi-select mode, consider using function
449  * @ref elm_obj_genlist_selected_item_get instead.
450  *
451  * @param[in] obj The object.
452  *
453  * @return List of selected items
454  *
455  * @ingroup Elm_Genlist_Group
456  */
457 EOAPI const Eina_List *elm_obj_genlist_selected_items_get(const Eo *obj);
458 
459 /**
460  * @brief Get the last item in the genlist
461  *
462  * This returns the last item in the list.
463  *
464  * If filter is set to genlist, it returns last filtered item in the list.
465  *
466  * @param[in] obj The object.
467  *
468  * @return Last item in list
469  *
470  * @ingroup Elm_Genlist_Group
471  */
472 EOAPI Elm_Widget_Item *elm_obj_genlist_last_item_get(const Eo *obj);
473 
474 /**
475  * @brief Insert an item before another in a genlist widget
476  *
477  * This inserts an item before another in the list. It will be in the same tree
478  * level or group as the item it is inserted before.
479  *
480  * @param[in] obj The object.
481  * @param[in] itc The item class for the item.
482  * @param[in] data The item data.
483  * @param[in] parent The parent item, or @c null if none.
484  * @param[in] before_it The item to place this new one before.
485  * @param[in] type Item type.
486  * @param[in] func Convenience function called when the item is selected.
487  * @param[in] func_data Data passed to @c func above.
488  *
489  * @return Handle to inserted item
490  *
491  * @ingroup Elm_Genlist_Group
492  */
493 EOAPI Elm_Widget_Item *elm_obj_genlist_item_insert_before(Eo *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);
494 
495 /**
496  * @brief Update the contents of all realized items.
497  *
498  * This updates all realized items by calling all the item class functions
499  * again to get the contents, texts and states. Use this when the original item
500  * data has changed and the changes are desired to be reflected.
501  *
502  * To update just one item, use @ref elm_genlist_item_update.
503  * @param[in] obj The object.
504  *
505  * @ingroup Elm_Genlist_Group
506  */
507 EOAPI void elm_obj_genlist_realized_items_update(Eo *obj);
508 
509 /**
510  * @brief Insert an item after another in a genlist widget
511  *
512  * This inserts an item after another in the list. It will be in the same tree
513  * level or group as the item it is inserted after.
514  *
515  * @param[in] obj The object.
516  * @param[in] itc The item class for the item.
517  * @param[in] data The item data.
518  * @param[in] parent The parent item, or @c null if none.
519  * @param[in] after_it The item to place this new one after.
520  * @param[in] type Item type.
521  * @param[in] func Convenience function called when the item is selected.
522  * @param[in] func_data Data passed to @c func above.
523  *
524  * @return Handle to inserted item
525  *
526  * @ingroup Elm_Genlist_Group
527  */
528 EOAPI Elm_Widget_Item *elm_obj_genlist_item_insert_after(Eo *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);
529 
530 /**
531  * @brief Get the item that is at the x, y canvas coords.
532  *
533  * This returns the item at the given coordinates (which are canvas relative,
534  * not object-relative). If an item is at that coordinate, that item handle is
535  * returned, and if @c posret is not NULL, the integer pointed to is set to a
536  * value of -1, 0 or 1, depending if the coordinate is on the upper portion of
537  * that item (-1), on the middle section (0) or on the lower part (1). If NULL
538  * is returned as an item (no item found there), then posret may indicate -1 or
539  * 1 based if the coordinate is above or below all items respectively in the
540  * genlist.
541  *
542  * @param[in] obj The object.
543  * @param[in] x The input x coordinate.
544  * @param[in] y The input y coordinate.
545  * @param[out] posret The position relative to the item returned here.
546  *
547  * @return Item at position
548  *
549  * @ingroup Elm_Genlist_Group
550  */
551 EOAPI Elm_Widget_Item *elm_obj_genlist_at_xy_item_get(const Eo *obj, int x, int y, int *posret);
552 
553 /**
554  * @brief Set filter mode with key.
555  *
556  * This initiates the filter mode of genlist with user/application provided
557  * key. If key is NULL, the filter mode is turned off.
558  *
559  * The filter data passed has to be managed by application itself and should
560  * not be deleted before genlist is deleted(or while filtering is not done.
561  *
562  * @param[in] obj The object.
563  * @param[in] key Filter key
564  *
565  * @ingroup Elm_Genlist_Group
566  */
567 EOAPI void elm_obj_genlist_filter_set(Eo *obj, void *key);
568 
569 /**
570  * @brief Returns an iterator over the list of filtered items.
571  *
572  * Return NULL if filter is not set. Application must take care of the case
573  * while calling the API. Must be freed after use.
574  *
575  * @param[in] obj The object.
576  *
577  * @return Iterator on genlist
578  *
579  * @ingroup Elm_Genlist_Group
580  */
581 EOAPI Eina_Iterator *elm_obj_genlist_filter_iterator_new(Eo *obj);
582 
583 /**
584  * @brief Return how many items have passed the filter currently.
585  *
586  * This behaviour is O(1) and returns the count of items which are currently
587  * passed by the filter. After "filter,done", the call returns total count of
588  * the filtered items.
589  *
590  * @param[in] obj The object.
591  *
592  * @return Count of items passing the filter
593  *
594  * @since 1.18
595  *
596  * @ingroup Elm_Genlist_Group
597  */
598 EOAPI unsigned int elm_obj_genlist_filtered_items_count(const Eo *obj);
599 
600 /**
601  * @brief Return how many items are currently in a list.
602  *
603  * This behavior is O(1) and includes items which may or may not be realized.
604  *
605  * @param[in] obj The object.
606  *
607  * @return Item in list
608  *
609  * @ingroup Elm_Genlist_Group
610  */
611 EOAPI unsigned int elm_obj_genlist_items_count(const Eo *obj);
612 
613 /**
614  * @brief Prepend a new item in a given genlist widget.
615  *
616  * This adds an item to the beginning of the list or beginning of the children
617  * of the parent if given.
618  *
619  * @param[in] obj The object.
620  * @param[in] itc The item class for the item.
621  * @param[in] data The item data.
622  * @param[in] parent The parent item, or @c null if none.
623  * @param[in] type Item type.
624  * @param[in] func Convenience function called when the item is selected.
625  * @param[in] func_data Data passed to @c func above.
626  *
627  * @return Handle to prepended item
628  *
629  * @ingroup Elm_Genlist_Group
630  */
631 EOAPI Elm_Widget_Item *elm_obj_genlist_item_prepend(Eo *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);
632 
633 /**
634  * @brief Remove all items from a given genlist widget.
635  *
636  * This removes (and deletes) all items in @c obj, leaving it empty.
637  * @param[in] obj The object.
638  *
639  * @ingroup Elm_Genlist_Group
640  */
641 EOAPI void elm_obj_genlist_clear(Eo *obj);
642 
643 /**
644  * @brief Append a new item in a given genlist widget.
645  *
646  * This adds the given item to the end of the list or the end of the children
647  * list if the @c parent is given.
648  *
649  * @param[in] obj The object.
650  * @param[in] itc The item class for the item.
651  * @param[in] data The item data.
652  * @param[in] parent The parent item, or @c null if none.
653  * @param[in] type Item type.
654  * @param[in] func Convenience function called when the item is selected.
655  * @param[in] func_data Data passed to @c func above.
656  *
657  * @return Handle to appended item
658  *
659  * @ingroup Elm_Genlist_Group
660  */
661 EOAPI Elm_Widget_Item *elm_obj_genlist_item_append(Eo *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);
662 
663 /**
664  * @brief Insert a new item into the sorted genlist object
665  *
666  * This inserts an item in the genlist based on user defined comparison
667  * function. The two arguments passed to the function @c func are genlist item
668  * handles to compare.
669  *
670  * @param[in] obj The object.
671  * @param[in] itc The item class for the item.
672  * @param[in] data The item data.
673  * @param[in] parent The parent item, or @c null if none.
674  * @param[in] type Item type.
675  * @param[in] comp The function called for the sort.
676  * @param[in] func Convenience function called when the item is selected.
677  * @param[in] func_data Data passed to @c func above.
678  *
679  * @return Handle to inserted item
680  *
681  * @ingroup Elm_Genlist_Group
682  */
683 EOAPI Elm_Widget_Item *elm_obj_genlist_item_sorted_insert(Eo *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);
684 
685 /**
686  * @brief Get genlist item by given string.
687  *
688  * It takes pointer to the genlist item that will be used to start search from
689  * it.
690  *
691  * This function uses globs (like "*.jpg") for searching and takes search flags
692  * as last parameter That is a bitfield with values to be ored together or 0
693  * for no flags.
694  *
695  * @param[in] obj The object.
696  * @param[in] item_to_search_from Pointer to item to start search from. If
697  * @c null, search will be started from the first item of the genlist.
698  * @param[in] part_name Name of the TEXT part of genlist item to search string
699  * in.
700  * @param[in] pattern The search pattern.
701  * @param[in] flags Search flags.
702  *
703  * @return Searched item
704  *
705  * @since 1.11
706  *
707  * @ingroup Elm_Genlist_Group
708  */
709 EOAPI Elm_Widget_Item *elm_obj_genlist_search_by_text_item_get(Eo *obj, Elm_Widget_Item *item_to_search_from, const char *part_name, const char *pattern, Elm_Glob_Match_Flags flags);
710 
711 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_ITEM_FOCUSED;
712 
713 /** Called when genlist item got focus
714  * @return Efl_Object *
715  *
716  * @ingroup Elm_Genlist_Group
717  */
718 #define ELM_GENLIST_EVENT_ITEM_FOCUSED (&(_ELM_GENLIST_EVENT_ITEM_FOCUSED))
719 
720 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_ITEM_UNFOCUSED;
721 
722 /** Called when genlist item lost focus
723  * @return Efl_Object *
724  *
725  * @ingroup Elm_Genlist_Group
726  */
727 #define ELM_GENLIST_EVENT_ITEM_UNFOCUSED (&(_ELM_GENLIST_EVENT_ITEM_UNFOCUSED))
728 
729 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_VBAR_DRAG;
730 
731 /** Called when vertical bar is dragged
732  *
733  * @ingroup Elm_Genlist_Group
734  */
735 #define ELM_GENLIST_EVENT_VBAR_DRAG (&(_ELM_GENLIST_EVENT_VBAR_DRAG))
736 
737 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_VBAR_PRESS;
738 
739 /** Called when vertical bar is pressed
740  *
741  * @ingroup Elm_Genlist_Group
742  */
743 #define ELM_GENLIST_EVENT_VBAR_PRESS (&(_ELM_GENLIST_EVENT_VBAR_PRESS))
744 
745 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_VBAR_UNPRESS;
746 
747 /** Called when vertical bar is no longer pressed
748  *
749  * @ingroup Elm_Genlist_Group
750  */
751 #define ELM_GENLIST_EVENT_VBAR_UNPRESS (&(_ELM_GENLIST_EVENT_VBAR_UNPRESS))
752 
753 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_HBAR_DRAG;
754 
755 /** Called when horizontal bar is dragged
756  *
757  * @ingroup Elm_Genlist_Group
758  */
759 #define ELM_GENLIST_EVENT_HBAR_DRAG (&(_ELM_GENLIST_EVENT_HBAR_DRAG))
760 
761 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_HBAR_PRESS;
762 
763 /** Called when horizontal bar is pressed
764  *
765  * @ingroup Elm_Genlist_Group
766  */
767 #define ELM_GENLIST_EVENT_HBAR_PRESS (&(_ELM_GENLIST_EVENT_HBAR_PRESS))
768 
769 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_HBAR_UNPRESS;
770 
771 /** Called when horizontal bar is no longer pressed
772  *
773  * @ingroup Elm_Genlist_Group
774  */
775 #define ELM_GENLIST_EVENT_HBAR_UNPRESS (&(_ELM_GENLIST_EVENT_HBAR_UNPRESS))
776 
777 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_EDGE_TOP;
778 
779 /** Called when top edge is reached
780  *
781  * @ingroup Elm_Genlist_Group
782  */
783 #define ELM_GENLIST_EVENT_EDGE_TOP (&(_ELM_GENLIST_EVENT_EDGE_TOP))
784 
785 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_EDGE_BOTTOM;
786 
787 /** Called when bottom edge is reached
788  *
789  * @ingroup Elm_Genlist_Group
790  */
791 #define ELM_GENLIST_EVENT_EDGE_BOTTOM (&(_ELM_GENLIST_EVENT_EDGE_BOTTOM))
792 
793 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_EDGE_LEFT;
794 
795 /** Called when left edge is reached
796  *
797  * @ingroup Elm_Genlist_Group
798  */
799 #define ELM_GENLIST_EVENT_EDGE_LEFT (&(_ELM_GENLIST_EVENT_EDGE_LEFT))
800 
801 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_EDGE_RIGHT;
802 
803 /** Called when right edge is reached
804  *
805  * @ingroup Elm_Genlist_Group
806  */
807 #define ELM_GENLIST_EVENT_EDGE_RIGHT (&(_ELM_GENLIST_EVENT_EDGE_RIGHT))
808 
809 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_MOVED;
810 
811 /** Called when genlist item moved
812  * @return Efl_Object *
813  *
814  * @ingroup Elm_Genlist_Group
815  */
816 #define ELM_GENLIST_EVENT_MOVED (&(_ELM_GENLIST_EVENT_MOVED))
817 
818 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_MOVED_BEFORE;
819 
820 /** Called when genlist item moved before
821  * @return Efl_Object *
822  *
823  * @ingroup Elm_Genlist_Group
824  */
825 #define ELM_GENLIST_EVENT_MOVED_BEFORE (&(_ELM_GENLIST_EVENT_MOVED_BEFORE))
826 
827 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_MOVED_AFTER;
828 
829 /** Called when genlist item moved after
830  * @return Efl_Object *
831  *
832  * @ingroup Elm_Genlist_Group
833  */
834 #define ELM_GENLIST_EVENT_MOVED_AFTER (&(_ELM_GENLIST_EVENT_MOVED_AFTER))
835 
836 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_SWIPE;
837 
838 /** Called when swipe is detected
839  * @return Efl_Object *
840  *
841  * @ingroup Elm_Genlist_Group
842  */
843 #define ELM_GENLIST_EVENT_SWIPE (&(_ELM_GENLIST_EVENT_SWIPE))
844 
845 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_MULTI_PINCH_IN;
846 
847 /** Called when multitouch pinch in detected
848  * @return Efl_Object *
849  *
850  * @ingroup Elm_Genlist_Group
851  */
852 #define ELM_GENLIST_EVENT_MULTI_PINCH_IN (&(_ELM_GENLIST_EVENT_MULTI_PINCH_IN))
853 
854 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_MULTI_PINCH_OUT;
855 
856 /** Called when multitouch pinch out detected
857  * @return Efl_Object *
858  *
859  * @ingroup Elm_Genlist_Group
860  */
861 #define ELM_GENLIST_EVENT_MULTI_PINCH_OUT (&(_ELM_GENLIST_EVENT_MULTI_PINCH_OUT))
862 
863 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_MULTI_SWIPE_DOWN;
864 
865 /** Called when multitouch swipe down detected
866  * @return Efl_Object *
867  *
868  * @ingroup Elm_Genlist_Group
869  */
870 #define ELM_GENLIST_EVENT_MULTI_SWIPE_DOWN (&(_ELM_GENLIST_EVENT_MULTI_SWIPE_DOWN))
871 
872 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_MULTI_SWIPE_UP;
873 
874 /** Called when multitouch swipe up detected
875  * @return Efl_Object *
876  *
877  * @ingroup Elm_Genlist_Group
878  */
879 #define ELM_GENLIST_EVENT_MULTI_SWIPE_UP (&(_ELM_GENLIST_EVENT_MULTI_SWIPE_UP))
880 
881 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_MULTI_SWIPE_RIGHT;
882 
883 /** Called when multitouch swipe right detected
884  * @return Efl_Object *
885  *
886  * @ingroup Elm_Genlist_Group
887  */
888 #define ELM_GENLIST_EVENT_MULTI_SWIPE_RIGHT (&(_ELM_GENLIST_EVENT_MULTI_SWIPE_RIGHT))
889 
890 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_MULTI_SWIPE_LEFT;
891 
892 /** Called when multitouch swipe left detected
893  * @return Efl_Object *
894  *
895  * @ingroup Elm_Genlist_Group
896  */
897 #define ELM_GENLIST_EVENT_MULTI_SWIPE_LEFT (&(_ELM_GENLIST_EVENT_MULTI_SWIPE_LEFT))
898 
899 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_RELEASED;
900 
901 /** Called when genlist is released
902  * @return Efl_Object *
903  *
904  * @ingroup Elm_Genlist_Group
905  */
906 #define ELM_GENLIST_EVENT_RELEASED (&(_ELM_GENLIST_EVENT_RELEASED))
907 
908 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_ACTIVATED;
909 
910 /** called when genlist is activated
911  * @return Efl_Object *
912  *
913  * @ingroup Elm_Genlist_Group
914  */
915 #define ELM_GENLIST_EVENT_ACTIVATED (&(_ELM_GENLIST_EVENT_ACTIVATED))
916 
917 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_HIGHLIGHTED;
918 
919 /** Called when genlist is highlighted
920  * @return Efl_Object *
921  *
922  * @ingroup Elm_Genlist_Group
923  */
924 #define ELM_GENLIST_EVENT_HIGHLIGHTED (&(_ELM_GENLIST_EVENT_HIGHLIGHTED))
925 
926 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_UNHIGHLIGHTED;
927 
928 /** Called when genlist is no longer highlighted
929  * @return Efl_Object *
930  *
931  * @ingroup Elm_Genlist_Group
932  */
933 #define ELM_GENLIST_EVENT_UNHIGHLIGHTED (&(_ELM_GENLIST_EVENT_UNHIGHLIGHTED))
934 
935 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_REALIZED;
936 
937 /** Called when genlist is realized
938  * @return Efl_Object *
939  *
940  * @ingroup Elm_Genlist_Group
941  */
942 #define ELM_GENLIST_EVENT_REALIZED (&(_ELM_GENLIST_EVENT_REALIZED))
943 
944 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_UNREALIZED;
945 
946 /** Called when genlist is unrealized
947  * @return Efl_Object *
948  *
949  * @ingroup Elm_Genlist_Group
950  */
951 #define ELM_GENLIST_EVENT_UNREALIZED (&(_ELM_GENLIST_EVENT_UNREALIZED))
952 
953 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_CONTRACT_REQUEST;
954 
955 /** Called when contract is requested
956  * @return Efl_Object *
957  *
958  * @ingroup Elm_Genlist_Group
959  */
960 #define ELM_GENLIST_EVENT_CONTRACT_REQUEST (&(_ELM_GENLIST_EVENT_CONTRACT_REQUEST))
961 
962 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_EXPAND_REQUEST;
963 
964 /** Called when expand is requested
965  * @return Efl_Object *
966  *
967  * @ingroup Elm_Genlist_Group
968  */
969 #define ELM_GENLIST_EVENT_EXPAND_REQUEST (&(_ELM_GENLIST_EVENT_EXPAND_REQUEST))
970 
971 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_CONTRACTED;
972 
973 /** called when genlist is contracted
974  * @return Efl_Object *
975  *
976  * @ingroup Elm_Genlist_Group
977  */
978 #define ELM_GENLIST_EVENT_CONTRACTED (&(_ELM_GENLIST_EVENT_CONTRACTED))
979 
980 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_EXPANDED;
981 
982 /** Called when genlist is expanded
983  * @return Efl_Object *
984  *
985  * @ingroup Elm_Genlist_Group
986  */
987 #define ELM_GENLIST_EVENT_EXPANDED (&(_ELM_GENLIST_EVENT_EXPANDED))
988 
989 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_INDEX_UPDATE;
990 
991 /** Called when genlist index updated
992  * @return Efl_Object *
993  *
994  * @ingroup Elm_Genlist_Group
995  */
996 #define ELM_GENLIST_EVENT_INDEX_UPDATE (&(_ELM_GENLIST_EVENT_INDEX_UPDATE))
997 
998 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_TREE_EFFECT_FINISHED;
999 
1000 /** Called when genlist tree effect finished
1001  *
1002  * @ingroup Elm_Genlist_Group
1003  */
1004 #define ELM_GENLIST_EVENT_TREE_EFFECT_FINISHED (&(_ELM_GENLIST_EVENT_TREE_EFFECT_FINISHED))
1005 
1006 EWAPI extern const Efl_Event_Description _ELM_GENLIST_EVENT_FILTER_DONE;
1007 
1008 /** Called when genlist filter is done
1009  *
1010  * @ingroup Elm_Genlist_Group
1011  */
1012 #define ELM_GENLIST_EVENT_FILTER_DONE (&(_ELM_GENLIST_EVENT_FILTER_DONE))
1013 
1014 #endif
1015