866362b88de3b860af1cdd6c3c6e3a8cd67cfa32
[framework/uifw/elementary.git] / src / lib / elm_diskselector.h
1    /**
2     * @defgroup Diskselector Diskselector
3     * @ingroup Elementary
4     *
5     * @image html img/widget/diskselector/preview-00.png
6     * @image latex img/widget/diskselector/preview-00.eps
7     *
8     * A diskselector is a kind of list widget. It scrolls horizontally,
9     * and can contain label and icon objects. Three items are displayed
10     * with the selected one in the middle.
11     *
12     * It can act like a circular list with round mode and labels can be
13     * reduced for a defined length for side items.
14     *
15     * Smart callbacks one can listen to:
16     * - "selected" - when item is selected, i.e. scroller stops.
17     *
18     * Available styles for it:
19     * - @c "default"
20     *
21     * List of examples:
22     * @li @ref diskselector_example_01
23     * @li @ref diskselector_example_02
24     */
25
26    /**
27     * @addtogroup Diskselector
28     * @{
29     */
30
31    typedef struct _Elm_Diskselector_Item Elm_Diskselector_Item; /**< Item handle for a diskselector item. Created with elm_diskselector_item_append() and deleted with elm_diskselector_item_del(). */
32
33    /**
34     * Add a new diskselector widget to the given parent Elementary
35     * (container) object.
36     *
37     * @param parent The parent object.
38     * @return a new diskselector widget handle or @c NULL, on errors.
39     *
40     * This function inserts a new diskselector widget on the canvas.
41     *
42     * @ingroup Diskselector
43     */
44    EAPI Evas_Object           *elm_diskselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
45
46    /**
47     * Enable or disable round mode.
48     *
49     * @param obj The diskselector object.
50     * @param round @c EINA_TRUE to enable round mode or @c EINA_FALSE to
51     * disable it.
52     *
53     * Disabled by default. If round mode is enabled the items list will
54     * work like a circle list, so when the user reaches the last item,
55     * the first one will popup.
56     *
57     * @see elm_diskselector_round_get()
58     *
59     * @ingroup Diskselector
60     */
61    EAPI void                   elm_diskselector_round_set(Evas_Object *obj, Eina_Bool round) EINA_ARG_NONNULL(1);
62
63    /**
64     * Get a value whether round mode is enabled or not.
65     *
66     * @see elm_diskselector_round_set() for details.
67     *
68     * @param obj The diskselector object.
69     * @return @c EINA_TRUE means round mode is enabled. @c EINA_FALSE indicates
70     * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
71     *
72     * @ingroup Diskselector
73     */
74    EAPI Eina_Bool              elm_diskselector_round_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
75
76    /**
77     * Get the side labels max length.
78     *
79     * @deprecated use elm_diskselector_side_label_length_get() instead:
80     *
81     * @param obj The diskselector object.
82     * @return The max length defined for side labels, or 0 if not a valid
83     * diskselector.
84     *
85     * @ingroup Diskselector
86     */
87    EINA_DEPRECATED EAPI int    elm_diskselector_side_label_lenght_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
88
89    /**
90     * Set the side labels max length.
91     *
92     * @deprecated use elm_diskselector_side_label_length_set() instead:
93     *
94     * @param obj The diskselector object.
95     * @param len The max length defined for side labels.
96     *
97     * @ingroup Diskselector
98     */
99    EINA_DEPRECATED EAPI void   elm_diskselector_side_label_lenght_set(Evas_Object *obj, int len) EINA_ARG_NONNULL(1);
100
101    /**
102     * Get the side labels max length.
103     *
104     * @see elm_diskselector_side_label_length_set() for details.
105     *
106     * @param obj The diskselector object.
107     * @return The max length defined for side labels, or 0 if not a valid
108     * diskselector.
109     *
110     * @ingroup Diskselector
111     */
112    EAPI int                    elm_diskselector_side_label_length_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
113
114    /**
115     * Set the side labels max length.
116     *
117     * @param obj The diskselector object.
118     * @param len The max length defined for side labels.
119     *
120     * Length is the number of characters of items' label that will be
121     * visible when it's set on side positions. It will just crop
122     * the string after defined size. E.g.:
123     *
124     * An item with label "January" would be displayed on side position as
125     * "Jan" if max length is set to 3, or "Janu", if this property
126     * is set to 4.
127     *
128     * When it's selected, the entire label will be displayed, except for
129     * width restrictions. In this case label will be cropped and "..."
130     * will be concatenated.
131     *
132     * Default side label max length is 3.
133     *
134     * This property will be applyed over all items, included before or
135     * later this function call.
136     *
137     * @ingroup Diskselector
138     */
139    EAPI void                   elm_diskselector_side_label_length_set(Evas_Object *obj, int len) EINA_ARG_NONNULL(1);
140
141    /**
142     * Set the number of items to be displayed.
143     *
144     * @param obj The diskselector object.
145     * @param num The number of items the diskselector will display.
146     *
147     * Default value is 3, and also it's the minimun. If @p num is less
148     * than 3, it will be set to 3.
149     *
150     * Also, it can be set on theme, using data item @c display_item_num
151     * on group "elm/diskselector/item/X", where X is style set.
152     * E.g.:
153     *
154     * group { name: "elm/diskselector/item/X";
155     * data {
156     *     item: "display_item_num" "5";
157     *     }
158     *
159     * @ingroup Diskselector
160     */
161    EAPI void                   elm_diskselector_display_item_num_set(Evas_Object *obj, int num) EINA_ARG_NONNULL(1);
162
163    /**
164     * Get the number of items in the diskselector object.
165     *
166     * @param obj The diskselector object.
167     *
168     * @ingroup Diskselector
169     */
170    EAPI int                   elm_diskselector_display_item_num_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
171
172    /**
173     * Set bouncing behaviour when the scrolled content reaches an edge.
174     *
175     * Tell the internal scroller object whether it should bounce or not
176     * when it reaches the respective edges for each axis.
177     *
178     * @param obj The diskselector object.
179     * @param h_bounce Whether to bounce or not in the horizontal axis.
180     * @param v_bounce Whether to bounce or not in the vertical axis.
181     *
182     * @see elm_scroller_bounce_set()
183     *
184     * @ingroup Diskselector
185     */
186    EAPI void                   elm_diskselector_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
187
188    /**
189     * Get the bouncing behaviour of the internal scroller.
190     *
191     * Get whether the internal scroller should bounce when the edge of each
192     * axis is reached scrolling.
193     *
194     * @param obj The diskselector object.
195     * @param h_bounce Pointer where to store the bounce state of the horizontal
196     * axis.
197     * @param v_bounce Pointer where to store the bounce state of the vertical
198     * axis.
199     *
200     * @see elm_scroller_bounce_get()
201     * @see elm_diskselector_bounce_set()
202     *
203     * @ingroup Diskselector
204     */
205    EAPI void                   elm_diskselector_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
206
207    /**
208     * Get the scrollbar policy.
209     *
210     * @see elm_diskselector_scroller_policy_get() for details.
211     *
212     * @param obj The diskselector object.
213     * @param policy_h Pointer where to store horizontal scrollbar policy.
214     * @param policy_v Pointer where to store vertical scrollbar policy.
215     *
216     * @ingroup Diskselector
217     */
218    EAPI void                   elm_diskselector_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v) EINA_ARG_NONNULL(1);
219
220    /**
221     * Set the scrollbar policy.
222     *
223     * @param obj The diskselector object.
224     * @param policy_h Horizontal scrollbar policy.
225     * @param policy_v Vertical scrollbar policy.
226     *
227     * This sets the scrollbar visibility policy for the given scroller.
228     * #ELM_SCROLLER_POLICY_AUTO means the scrollbar is made visible if it
229     * is needed, and otherwise kept hidden. #ELM_SCROLLER_POLICY_ON turns
230     * it on all the time, and #ELM_SCROLLER_POLICY_OFF always keeps it off.
231     * This applies respectively for the horizontal and vertical scrollbars.
232     *
233     * The both are disabled by default, i.e., are set to
234     * #ELM_SCROLLER_POLICY_OFF.
235     *
236     * @ingroup Diskselector
237     */
238    EAPI void                   elm_diskselector_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v) EINA_ARG_NONNULL(1);
239
240    /**
241     * Remove all diskselector's items.
242     *
243     * @param obj The diskselector object.
244     *
245     * @see elm_diskselector_item_del()
246     * @see elm_diskselector_item_append()
247     *
248     * @ingroup Diskselector
249     */
250    EAPI void                   elm_diskselector_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
251
252    /**
253     * Get a list of all the diskselector items.
254     *
255     * @param obj The diskselector object.
256     * @return An @c Eina_List of diskselector items, #Elm_Diskselector_Item,
257     * or @c NULL on failure.
258     *
259     * @see elm_diskselector_item_append()
260     * @see elm_diskselector_item_del()
261     * @see elm_diskselector_clear()
262     *
263     * @ingroup Diskselector
264     */
265    EAPI const Eina_List       *elm_diskselector_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
266
267    /**
268     * Appends a new item to the diskselector object.
269     *
270     * @param obj The diskselector object.
271     * @param label The label of the diskselector item.
272     * @param icon The icon object to use at left side of the item. An
273     * icon can be any Evas object, but usually it is an icon created
274     * with elm_icon_add().
275     * @param func The function to call when the item is selected.
276     * @param data The data to associate with the item for related callbacks.
277     *
278     * @return The created item or @c NULL upon failure.
279     *
280     * A new item will be created and appended to the diskselector, i.e., will
281     * be set as last item. Also, if there is no selected item, it will
282     * be selected. This will always happens for the first appended item.
283     *
284     * If no icon is set, label will be centered on item position, otherwise
285     * the icon will be placed at left of the label, that will be shifted
286     * to the right.
287     *
288     * Items created with this method can be deleted with
289     * elm_diskselector_item_del().
290     *
291     * Associated @p data can be properly freed when item is deleted if a
292     * callback function is set with elm_diskselector_item_del_cb_set().
293     *
294     * If a function is passed as argument, it will be called everytime this item
295     * is selected, i.e., the user stops the diskselector with this
296     * item on center position. If such function isn't needed, just passing
297     * @c NULL as @p func is enough. The same should be done for @p data.
298     *
299     * Simple example (with no function callback or data associated):
300     * @code
301     * disk = elm_diskselector_add(win);
302     * ic = elm_icon_add(win);
303     * elm_icon_file_set(ic, "path/to/image", NULL);
304     * elm_icon_scale_set(ic, EINA_TRUE, EINA_TRUE);
305     * elm_diskselector_item_append(disk, "label", ic, NULL, NULL);
306     * @endcode
307     *
308     * @see elm_diskselector_item_del()
309     * @see elm_diskselector_item_del_cb_set()
310     * @see elm_diskselector_clear()
311     * @see elm_icon_add()
312     *
313     * @ingroup Diskselector
314     */
315    EAPI Elm_Diskselector_Item *elm_diskselector_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
316
317
318    /**
319     * Delete them item from the diskselector.
320     *
321     * @param it The item of diskselector to be deleted.
322     *
323     * If deleting all diskselector items is required, elm_diskselector_clear()
324     * should be used instead of getting items list and deleting each one.
325     *
326     * @see elm_diskselector_clear()
327     * @see elm_diskselector_item_append()
328     * @see elm_diskselector_item_del_cb_set()
329     *
330     * @ingroup Diskselector
331     */
332    EAPI void                   elm_diskselector_item_del(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
333
334    /**
335     * Set the function called when a diskselector item is freed.
336     *
337     * @param it The item to set the callback on
338     * @param func The function called
339     *
340     * If there is a @p func, then it will be called prior item's memory release.
341     * That will be called with the following arguments:
342     * @li item's data;
343     * @li item's Evas object;
344     * @li item itself;
345     *
346     * This way, a data associated to a diskselector item could be properly
347     * freed.
348     *
349     * @ingroup Diskselector
350     */
351    EAPI void                   elm_diskselector_item_del_cb_set(Elm_Diskselector_Item *item, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
352
353    /**
354     * Get the data associated to the item.
355     *
356     * @param it The diskselector item
357     * @return The data associated to @p it
358     *
359     * The return value is a pointer to data associated to @p item when it was
360     * created, with function elm_diskselector_item_append(). If no data
361     * was passed as argument, it will return @c NULL.
362     *
363     * @see elm_diskselector_item_append()
364     *
365     * @ingroup Diskselector
366     */
367    EAPI void                  *elm_diskselector_item_data_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
368
369    /**
370     * Set the icon associated to the item.
371     *
372     * @param it The diskselector item
373     * @param icon The icon object to associate with @p it
374     *
375     * The icon object to use at left side of the item. An
376     * icon can be any Evas object, but usually it is an icon created
377     * with elm_icon_add().
378     *
379     * Once the icon object is set, a previously set one will be deleted.
380     * @warning Setting the same icon for two items will cause the icon to
381     * dissapear from the first item.
382     *
383     * If an icon was passed as argument on item creation, with function
384     * elm_diskselector_item_append(), it will be already
385     * associated to the item.
386     *
387     * @see elm_diskselector_item_append()
388     * @see elm_diskselector_item_icon_get()
389     *
390     * @ingroup Diskselector
391     */
392    EAPI void                   elm_diskselector_item_icon_set(Elm_Diskselector_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
393
394    /**
395     * Get the icon associated to the item.
396     *
397     * @param it The diskselector item
398     * @return The icon associated to @p it
399     *
400     * The return value is a pointer to the icon associated to @p item when it was
401     * created, with function elm_diskselector_item_append(), or later
402     * with function elm_diskselector_item_icon_set. If no icon
403     * was passed as argument, it will return @c NULL.
404     *
405     * @see elm_diskselector_item_append()
406     * @see elm_diskselector_item_icon_set()
407     *
408     * @ingroup Diskselector
409     */
410    EAPI Evas_Object           *elm_diskselector_item_icon_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
411
412    /**
413     * Set the label of item.
414     *
415     * @param it The item of diskselector.
416     * @param label The label of item.
417     *
418     * The label to be displayed by the item.
419     *
420     * If no icon is set, label will be centered on item position, otherwise
421     * the icon will be placed at left of the label, that will be shifted
422     * to the right.
423     *
424     * An item with label "January" would be displayed on side position as
425     * "Jan" if max length is set to 3 with function
426     * elm_diskselector_side_label_lenght_set(), or "Janu", if this property
427     * is set to 4.
428     *
429     * When this @p item is selected, the entire label will be displayed,
430     * except for width restrictions.
431     * In this case label will be cropped and "..." will be concatenated,
432     * but only for display purposes. It will keep the entire string, so
433     * if diskselector is resized the remaining characters will be displayed.
434     *
435     * If a label was passed as argument on item creation, with function
436     * elm_diskselector_item_append(), it will be already
437     * displayed by the item.
438     *
439     * @see elm_diskselector_side_label_lenght_set()
440     * @see elm_diskselector_item_label_get()
441     * @see elm_diskselector_item_append()
442     *
443     * @ingroup Diskselector
444     */
445    EAPI void                   elm_diskselector_item_label_set(Elm_Diskselector_Item *item, const char *label) EINA_ARG_NONNULL(1);
446
447    /**
448     * Get the label of item.
449     *
450     * @param it The item of diskselector.
451     * @return The label of item.
452     *
453     * The return value is a pointer to the label associated to @p item when it was
454     * created, with function elm_diskselector_item_append(), or later
455     * with function elm_diskselector_item_label_set. If no label
456     * was passed as argument, it will return @c NULL.
457     *
458     * @see elm_diskselector_item_label_set() for more details.
459     * @see elm_diskselector_item_append()
460     *
461     * @ingroup Diskselector
462     */
463    EAPI const char            *elm_diskselector_item_label_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
464
465    /**
466     * Get the selected item.
467     *
468     * @param obj The diskselector object.
469     * @return The selected diskselector item.
470     *
471     * The selected item can be unselected with function
472     * elm_diskselector_item_selected_set(), and the first item of
473     * diskselector will be selected.
474     *
475     * The selected item always will be centered on diskselector, with
476     * full label displayed, i.e., max lenght set to side labels won't
477     * apply on the selected item. More details on
478     * elm_diskselector_side_label_length_set().
479     *
480     * @ingroup Diskselector
481     */
482    EAPI Elm_Diskselector_Item *elm_diskselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
483
484    /**
485     * Set the selected state of an item.
486     *
487     * @param it The diskselector item
488     * @param selected The selected state
489     *
490     * This sets the selected state of the given item @p it.
491     * @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
492     *
493     * If a new item is selected the previosly selected will be unselected.
494     * Previoulsy selected item can be get with function
495     * elm_diskselector_selected_item_get().
496     *
497     * If the item @p it is unselected, the first item of diskselector will
498     * be selected.
499     *
500     * Selected items will be visible on center position of diskselector.
501     * So if it was on another position before selected, or was invisible,
502     * diskselector will animate items until the selected item reaches center
503     * position.
504     *
505     * @see elm_diskselector_item_selected_get()
506     * @see elm_diskselector_selected_item_get()
507     *
508     * @ingroup Diskselector
509     */
510    EAPI void                   elm_diskselector_item_selected_set(Elm_Diskselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
511
512    /*
513     * Get whether the @p item is selected or not.
514     *
515     * @param it The diskselector item.
516     * @return @c EINA_TRUE means item is selected. @c EINA_FALSE indicates
517     * it's not. If @p obj is @c NULL, @c EINA_FALSE is returned.
518     *
519     * @see elm_diskselector_selected_item_set() for details.
520     * @see elm_diskselector_item_selected_get()
521     *
522     * @ingroup Diskselector
523     */
524    EAPI Eina_Bool              elm_diskselector_item_selected_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
525
526    /**
527     * Get the first item of the diskselector.
528     *
529     * @param obj The diskselector object.
530     * @return The first item, or @c NULL if none.
531     *
532     * The list of items follows append order. So it will return the first
533     * item appended to the widget that wasn't deleted.
534     *
535     * @see elm_diskselector_item_append()
536     * @see elm_diskselector_items_get()
537     *
538     * @ingroup Diskselector
539     */
540    EAPI Elm_Diskselector_Item *elm_diskselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
541
542    /**
543     * Get the last item of the diskselector.
544     *
545     * @param obj The diskselector object.
546     * @return The last item, or @c NULL if none.
547     *
548     * The list of items follows append order. So it will return last first
549     * item appended to the widget that wasn't deleted.
550     *
551     * @see elm_diskselector_item_append()
552     * @see elm_diskselector_items_get()
553     *
554     * @ingroup Diskselector
555     */
556    EAPI Elm_Diskselector_Item *elm_diskselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
557
558    /**
559     * Get the item before @p item in diskselector.
560     *
561     * @param it The diskselector item.
562     * @return The item before @p item, or @c NULL if none or on failure.
563     *
564     * The list of items follows append order. So it will return item appended
565     * just before @p item and that wasn't deleted.
566     *
567     * If it is the first item, @c NULL will be returned.
568     * First item can be get by elm_diskselector_first_item_get().
569     *
570     * @see elm_diskselector_item_append()
571     * @see elm_diskselector_items_get()
572     *
573     * @ingroup Diskselector
574     */
575    EAPI Elm_Diskselector_Item *elm_diskselector_item_prev_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
576
577    /**
578     * Get the item after @p item in diskselector.
579     *
580     * @param it The diskselector item.
581     * @return The item after @p item, or @c NULL if none or on failure.
582     *
583     * The list of items follows append order. So it will return item appended
584     * just after @p item and that wasn't deleted.
585     *
586     * If it is the last item, @c NULL will be returned.
587     * Last item can be get by elm_diskselector_last_item_get().
588     *
589     * @see elm_diskselector_item_append()
590     * @see elm_diskselector_items_get()
591     *
592     * @ingroup Diskselector
593     */
594    EAPI Elm_Diskselector_Item *elm_diskselector_item_next_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
595
596    /**
597     * Set the text to be shown in the diskselector item.
598     *
599     * @param item Target item
600     * @param text The text to set in the content
601     *
602     * Setup the text as tooltip to object. The item can have only one tooltip,
603     * so any previous tooltip data is removed.
604     *
605     * @see elm_object_tooltip_text_set() for more details.
606     *
607     * @ingroup Diskselector
608     */
609    EAPI void                   elm_diskselector_item_tooltip_text_set(Elm_Diskselector_Item *item, const char *text) EINA_ARG_NONNULL(1);
610
611    /**
612     * Set the content to be shown in the tooltip item.
613     *
614     * Setup the tooltip to item. The item can have only one tooltip,
615     * so any previous tooltip data is removed. @p func(with @p data) will
616     * be called every time that need show the tooltip and it should
617     * return a valid Evas_Object. This object is then managed fully by
618     * tooltip system and is deleted when the tooltip is gone.
619     *
620     * @param item the diskselector item being attached a tooltip.
621     * @param func the function used to create the tooltip contents.
622     * @param data what to provide to @a func as callback data/context.
623     * @param del_cb called when data is not needed anymore, either when
624     *        another callback replaces @p func, the tooltip is unset with
625     *        elm_diskselector_item_tooltip_unset() or the owner @a item
626     *        dies. This callback receives as the first parameter the
627     *        given @a data, and @c event_info is the item.
628     *
629     * @see elm_object_tooltip_content_cb_set() for more details.
630     *
631     * @ingroup Diskselector
632     */
633    EAPI void                   elm_diskselector_item_tooltip_content_cb_set(Elm_Diskselector_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
634
635    /**
636     * Unset tooltip from item.
637     *
638     * @param item diskselector item to remove previously set tooltip.
639     *
640     * Remove tooltip from item. The callback provided as del_cb to
641     * elm_diskselector_item_tooltip_content_cb_set() will be called to notify
642     * it is not used anymore.
643     *
644     * @see elm_object_tooltip_unset() for more details.
645     * @see elm_diskselector_item_tooltip_content_cb_set()
646     *
647     * @ingroup Diskselector
648     */
649    EAPI void                   elm_diskselector_item_tooltip_unset(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
650
651    /**
652     * Sets a different style for this item tooltip.
653     *
654     * @note before you set a style you should define a tooltip with
655     *       elm_diskselector_item_tooltip_content_cb_set() or
656     *       elm_diskselector_item_tooltip_text_set()
657     *
658     * @param item diskselector item with tooltip already set.
659     * @param style the theme style to use (default, transparent, ...)
660     *
661     * @see elm_object_tooltip_style_set() for more details.
662     *
663     * @ingroup Diskselector
664     */
665    EAPI void                   elm_diskselector_item_tooltip_style_set(Elm_Diskselector_Item *item, const char *style) EINA_ARG_NONNULL(1);
666
667    /**
668     * Get the style for this item tooltip.
669     *
670     * @param item diskselector item with tooltip already set.
671     * @return style the theme style in use, defaults to "default". If the
672     *         object does not have a tooltip set, then NULL is returned.
673     *
674     * @see elm_object_tooltip_style_get() for more details.
675     * @see elm_diskselector_item_tooltip_style_set()
676     *
677     * @ingroup Diskselector
678     */
679    EAPI const char            *elm_diskselector_item_tooltip_style_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
680
681    /**
682     * Set the cursor to be shown when mouse is over the diskselector item
683     *
684     * @param item Target item
685     * @param cursor the cursor name to be used.
686     *
687     * @see elm_object_cursor_set() for more details.
688     *
689     * @ingroup Diskselector
690     */
691    EAPI void                   elm_diskselector_item_cursor_set(Elm_Diskselector_Item *item, const char *cursor) EINA_ARG_NONNULL(1);
692
693    /**
694     * Get the cursor to be shown when mouse is over the diskselector item
695     *
696     * @param item diskselector item with cursor already set.
697     * @return the cursor name.
698     *
699     * @see elm_object_cursor_get() for more details.
700     * @see elm_diskselector_cursor_set()
701     *
702     * @ingroup Diskselector
703     */
704    EAPI const char            *elm_diskselector_item_cursor_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
705
706    /**
707     * Unset the cursor to be shown when mouse is over the diskselector item
708     *
709     * @param item Target item
710     *
711     * @see elm_object_cursor_unset() for more details.
712     * @see elm_diskselector_cursor_set()
713     *
714     * @ingroup Diskselector
715     */
716    EAPI void                   elm_diskselector_item_cursor_unset(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
717
718    /**
719     * Sets a different style for this item cursor.
720     *
721     * @note before you set a style you should define a cursor with
722     *       elm_diskselector_item_cursor_set()
723     *
724     * @param item diskselector item with cursor already set.
725     * @param style the theme style to use (default, transparent, ...)
726     *
727     * @see elm_object_cursor_style_set() for more details.
728     *
729     * @ingroup Diskselector
730     */
731    EAPI void                   elm_diskselector_item_cursor_style_set(Elm_Diskselector_Item *item, const char *style) EINA_ARG_NONNULL(1);
732
733    /**
734     * Get the style for this item cursor.
735     *
736     * @param item diskselector item with cursor already set.
737     * @return style the theme style in use, defaults to "default". If the
738     *         object does not have a cursor set, then @c NULL is returned.
739     *
740     * @see elm_object_cursor_style_get() for more details.
741     * @see elm_diskselector_item_cursor_style_set()
742     *
743     * @ingroup Diskselector
744     */
745    EAPI const char            *elm_diskselector_item_cursor_style_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
746
747
748    /**
749     * Set if the cursor set should be searched on the theme or should use
750     * the provided by the engine, only.
751     *
752     * @note before you set if should look on theme you should define a cursor
753     * with elm_diskselector_item_cursor_set().
754     * By default it will only look for cursors provided by the engine.
755     *
756     * @param item widget item with cursor already set.
757     * @param engine_only boolean to define if cursors set with
758     * elm_diskselector_item_cursor_set() should be searched only
759     * between cursors provided by the engine or searched on widget's
760     * theme as well.
761     *
762     * @see elm_object_cursor_engine_only_set() for more details.
763     *
764     * @ingroup Diskselector
765     */
766    EAPI void                   elm_diskselector_item_cursor_engine_only_set(Elm_Diskselector_Item *item, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
767
768    /**
769     * Get the cursor engine only usage for this item cursor.
770     *
771     * @param item widget item with cursor already set.
772     * @return engine_only boolean to define it cursors should be looked only
773     * between the provided by the engine or searched on widget's theme as well.
774     * If the item does not have a cursor set, then @c EINA_FALSE is returned.
775     *
776     * @see elm_object_cursor_engine_only_get() for more details.
777     * @see elm_diskselector_item_cursor_engine_only_set()
778     *
779     * @ingroup Diskselector
780     */
781    EAPI Eina_Bool              elm_diskselector_item_cursor_engine_only_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
782
783    /**
784     * @}
785     */
786