elm_config: add since_tizen tags for language auto mirrored functions
[platform/upstream/elementary.git] / src / lib / elm_config.h
1 /**
2  * @defgroup Elm_Config Elementary Config
3  * @ingroup elm_infra_group
4  *
5  * Elementary configuration is formed by a set options bounded to a
6  * given @ref Elm_Profile profile, like @ref Elm_Theme theme, @ref Elm_Fingers
7  * "finger size", etc. These are functions with which one synchronizes
8  * changes made to those values to the configuration storing files, de
9  * facto. You most probably don't want to use the functions in this
10  * group unless you're writing an elementary configuration manager.
11  *
12  * @{
13  */
14
15 /**
16  * @internal
17  *
18  * Save back Elementary's configuration, so that it will persist on
19  * future sessions.
20  *
21  * @return @c EINA_TRUE, when successful. @c EINA_FALSE, otherwise.
22  * @ingroup Elm_Config
23  *
24  * This function will take effect -- thus, do I/O -- immediately. Use
25  * it when you want to save all configuration changes at once. The
26  * current configuration set will get saved onto the current profile
27  * configuration file.
28  *
29  */
30 EAPI Eina_Bool elm_config_save(void);
31
32 /**
33  * Reload Elementary's configuration, bounded to current selected
34  * profile.
35  *
36  * @return @c EINA_TRUE, when successful. @c EINA_FALSE, otherwise.
37  * @ingroup Elm_Config
38  *
39  * Useful when you want to force reloading of configuration values for
40  * a profile. If one removes user custom configuration directories,
41  * for example, it will force a reload with system values instead.
42  *
43  * @if MOBILE @since_tizen 2.3
44  * @elseif WEARABLE @since_tizen 2.3.1
45  * @endif
46  */
47 EAPI void      elm_config_reload(void);
48
49 /**
50  * Flush all config settings then apply those settings to all applications
51  * using elementary on the current display.
52  *
53  * @ingroup Elm_Config
54  *
55  * @if MOBILE @since_tizen 2.3
56  * @elseif WEARABLE @since_tizen 2.3.1
57  * @endif
58  */
59 EAPI void      elm_config_all_flush(void);
60
61 /**
62  * @}
63  */
64
65 /**
66  * @defgroup Elm_Profile Elementary Profile
67  * @ingroup elm_infra_group
68  *
69  * Profiles are pre-set options that affect the whole look-and-feel of
70  * Elementary-based applications. There are, for example, profiles
71  * aimed at desktop computer applications and others aimed at mobile,
72  * touchscreen-based ones. You most probably don't want to use the
73  * functions in this group unless you're writing an elementary
74  * configuration manager.
75  *
76  * @{
77  */
78
79 /**
80  * Get Elementary's profile in use.
81  *
82  * This gets the global profile that is applied to all Elementary
83  * applications.
84  *
85  * @return The profile's name
86  * @ingroup Elm_Profile
87  *
88  * @if MOBILE @since_tizen 2.3
89  * @elseif WEARABLE @since_tizen 2.3.1
90  * @endif
91  */
92 EAPI const char *elm_config_profile_get(void);
93
94 /**
95  * Get an Elementary's profile directory path in the filesystem. One
96  * may want to fetch a system profile's dir or a user one (fetched
97  * inside $HOME).
98  *
99  * @param profile The profile's name
100  * @param is_user Whether to lookup for a user profile (@c EINA_TRUE)
101  *                or a system one (@c EINA_FALSE)
102  * @return The profile's directory path.
103  * @ingroup Elm_Profile
104  *
105  * @note You must free it with elm_config_profile_dir_free().
106  *
107  * @if MOBILE @since_tizen 2.3
108  * @elseif WEARABLE @since_tizen 2.3.1
109  * @endif
110  */
111 EAPI const char *elm_config_profile_dir_get(const char *profile, Eina_Bool is_user);
112
113 /**
114  * Free an Elementary's profile directory path, as returned by
115  * elm_config_profile_dir_get().
116  *
117  * @param p_dir The profile's path
118  * @ingroup Elm_Profile
119  *
120  * @if MOBILE @since_tizen 2.3
121  * @elseif WEARABLE @since_tizen 2.3.1
122  * @endif
123  */
124 EAPI void        elm_config_profile_dir_free(const char *p_dir);
125
126 /**
127  * Get Elementary's list of available profiles.
128  *
129  * @return The profiles list. List node data are the profile name
130  *         strings.
131  * @ingroup Elm_Profile
132  *
133  * @note One must free this list, after usage, with the function
134  *       elm_config_profile_list_free().
135  *
136  * @if MOBILE @since_tizen 2.3
137  * @elseif WEARABLE @since_tizen 2.3.1
138  * @endif
139  */
140 EAPI Eina_List  *elm_config_profile_list_get(void);
141
142 /**
143  * Get Elementary's list of available profiles including hidden ones.
144  *
145  * This gets a full list of profiles even with hidden names that should not
146  * be user-visible.
147  *
148  * @return The profiles list. List node data are the profile name
149  *         strings.
150  * @ingroup Elm_Profile
151  *
152  * @note One must free this list, after usage, with the function
153  *       elm_config_profile_list_free().
154  * @since 1.17
155  */
156 EAPI Eina_List  *elm_config_profile_list_full_get(void);
157
158 /**
159  * Free Elementary's list of available profiles.
160  *
161  * @param l The profiles list, as returned by elm_config_profile_list_get().
162  * @ingroup Elm_Profile
163  *
164  * @if MOBILE @since_tizen 2.3
165  * @elseif WEARABLE @since_tizen 2.3.1
166  * @endif
167  */
168 EAPI void        elm_config_profile_list_free(Eina_List *l);
169
170 /**
171  * Return if a profile of the given name exists
172  * 
173  * @return EINA_TRUE if the profile exists, or EINA_FALSE if not
174  * @param profile The profile's name
175  * @ingroup Elm_Profile
176  *
177  * @since 1.17
178  */
179 EAPI Eina_Bool   elm_config_profile_exists(const char *profile);
180
181 /**
182  * Set Elementary's profile.
183  *
184  * This sets the global profile that is applied to Elementary
185  * applications. Just the process the call comes from will be
186  * affected.
187  *
188  * @param profile The profile's name
189  * @ingroup Elm_Profile
190  *
191  * @if MOBILE @since_tizen 2.3
192  * @elseif WEARABLE @since_tizen 2.3.1
193  * @endif
194  */
195 EAPI void        elm_config_profile_set(const char *profile);
196
197 /**
198  * Take the current config and write it out to the named profile
199  *
200  * This will take the current in-memory config and write it out to the named
201  * profile specified by @p profile. This will not change profile for the
202  * application or make other processes switch profile.
203  * 
204  * @param profile The profile's name
205  * @ingroup Elm_Profile
206  *
207  * @since 1.17
208  */
209 EAPI void        elm_config_profile_save(const char *profile);
210
211 /**
212  * Add a new profile of the given name to be derived from the current profile
213  *
214  * This creates a new profile of name @p profile that will be derived from
215  * the currently used profile using the modification commands encoded in the
216  * @p derive_options string.
217  *
218  * At this point it is not expected that anyone would generally use this API
219  * except if you are a destktop environment and so the user base of this API
220  * will be enlightenment itself.
221  *
222  * @param profile The new profile's name
223  * @param derive_options A string of derive options detailing how to modify
224  *
225  * @see elm_config_profile_derived_del
226  * @ingroup Elm_Profile
227  *
228  * @since 1.17
229  */
230 EAPI void        elm_config_profile_derived_add(const char *profile, const char *derive_options);
231
232 /**
233  * Deletes a profile that is derived from the current one
234  *
235  * This deletes a derived profile added by elm_config_profile_derived_add().
236  * This will delete the profile of the given name @p profile that is derived
237  * from the current profile.
238  *
239  * At this point it is not expected that anyone would generally use this API
240  * except if you are a destktop environment and so the user base of this API
241  * will be enlightenment itself.
242  *
243  * @param profile The profile's name that is to be deleted
244  *
245  * @see elm_config_profile_derived_add
246  * @ingroup Elm_Profile
247  *
248  * @since 1.17
249  */
250 EAPI void        elm_config_profile_derived_del(const char *profile);
251
252 /**
253  * @}
254  */
255
256 /**
257  * @defgroup Elm_Scrolling Elementary Scrolling
258  * @ingroup elm_infra_group
259  *
260  * These are functions setting how scrollable views in Elementary
261  * widgets should behave on user interaction.
262  *
263  * @{
264  */
265
266 /**
267  * Get whether scrollers should bounce when they reach their
268  * viewport's edge during a scroll.
269  *
270  * @return the thumb scroll bouncing state
271  *
272  * This is the default behavior for touch screens, in general.
273  * @ingroup Elm_Scrolling
274  *
275  * @if MOBILE @since_tizen 2.3
276  * @elseif WEARABLE @since_tizen 2.3.1
277  * @endif
278  */
279 EAPI Eina_Bool    elm_config_scroll_bounce_enabled_get(void);
280
281 /**
282  * Set whether scrollers should bounce when they reach their
283  * viewport's edge during a scroll.
284  *
285  * @param enabled the thumb scroll bouncing state
286  *
287  * @see elm_config_scroll_bounce_enabled_get()
288  * @ingroup Elm_Scrolling
289  *
290  * @if MOBILE @since_tizen 2.3
291  * @elseif WEARABLE @since_tizen 2.3.1
292  * @endif
293  */
294 EAPI void         elm_config_scroll_bounce_enabled_set(Eina_Bool enabled);
295
296 /**
297  * Get the amount of inertia a scroller will impose at bounce
298  * animations.
299  *
300  * @return the thumb scroll bounce friction
301  *
302  * @ingroup Elm_Scrolling
303  *
304  * @if MOBILE @since_tizen 2.3
305  * @elseif WEARABLE @since_tizen 2.3.1
306  * @endif
307  */
308 EAPI double       elm_config_scroll_bounce_friction_get(void);
309
310 /**
311  * Set the amount of inertia a scroller will impose at bounce
312  * animations.
313  *
314  * @param friction the thumb scroll bounce friction
315  *
316  * @see elm_config_scroll_bounce_friction_get()
317  * @ingroup Elm_Scrolling
318  *
319  * @if MOBILE @since_tizen 2.3
320  * @elseif WEARABLE @since_tizen 2.3.1
321  * @endif
322  */
323 EAPI void         elm_config_scroll_bounce_friction_set(double friction);
324
325 /**
326  * Get the amount of inertia a <b>paged</b> scroller will impose at
327  * page fitting animations.
328  *
329  * @return the page scroll friction
330  *
331  * @ingroup Elm_Scrolling
332  *
333  * @if MOBILE @since_tizen 2.3
334  * @elseif WEARABLE @since_tizen 2.3.1
335  * @endif
336  */
337 EAPI double       elm_config_scroll_page_scroll_friction_get(void);
338
339 /**
340  * Set the amount of inertia a <b>paged</b> scroller will impose at
341  * page fitting animations.
342  *
343  * @param friction the page scroll friction
344  *
345  * @see elm_config_scroll_page_scroll_friction_get()
346  * @ingroup Elm_Scrolling
347  *
348  * @if MOBILE @since_tizen 2.3
349  * @elseif WEARABLE @since_tizen 2.3.1
350  * @endif
351  */
352 EAPI void         elm_config_scroll_page_scroll_friction_set(double friction);
353
354 /**
355  * Get enable status of context menu disabled.
356  *
357  * @see elm_config_context_menu_disabled_set()
358  * @ingroup Elm_Entry
359  * @since 1.17
360  */
361 EAPI Eina_Bool elm_config_context_menu_disabled_get(void);
362
363 /**
364  * Enable or disable the context menu in entries.
365  *
366  * @param disabled disable context menu if @c EINA_TRUE, enable otherwise
367  *
368  * @see elm_config_context_menu_disabled_get()
369  * @ingroup Elm_Entry
370  * @since 1.17
371  */
372 EAPI void elm_config_context_menu_disabled_set(Eina_Bool disabled);
373
374 /**
375  * Get the amount of inertia a scroller will impose at region bring
376  * animations.
377  *
378  * @return the bring in scroll friction
379  *
380  * @ingroup Elm_Scrolling
381  *
382  * @if MOBILE @since_tizen 2.3
383  * @elseif WEARABLE @since_tizen 2.3.1
384  * @endif
385  */
386 EAPI double       elm_config_scroll_bring_in_scroll_friction_get(void);
387
388 /**
389  * Set the amount of inertia a scroller will impose at region bring
390  * animations.
391  *
392  * @param friction the bring in scroll friction
393  *
394  * @see elm_config_scroll_bring_in_scroll_friction_get()
395  * @ingroup Elm_Scrolling
396  *
397  * @if MOBILE @since_tizen 2.3
398  * @elseif WEARABLE @since_tizen 2.3.1
399  * @endif
400  */
401 EAPI void         elm_config_scroll_bring_in_scroll_friction_set(double friction);
402
403 /**
404  * Get the amount of inertia scrollers will impose at animations
405  * triggered by Elementary widgets' zooming API.
406  *
407  * @return the zoom friction
408  *
409  * @ingroup Elm_Scrolling
410  *
411  * @if MOBILE @since_tizen 2.3
412  * @elseif WEARABLE @since_tizen 2.3.1
413  * @endif
414  */
415 EAPI double       elm_config_scroll_zoom_friction_get(void);
416
417 /**
418  * Set the amount of inertia scrollers will impose at animations
419  * triggered by Elementary widgets' zooming API.
420  *
421  * @param friction the zoom friction
422  *
423  * @see elm_config_scroll_zoom_friction_get()
424  * @ingroup Elm_Scrolling
425  *
426  * @if MOBILE @since_tizen 2.3
427  * @elseif WEARABLE @since_tizen 2.3.1
428  * @endif
429  */
430 EAPI void         elm_config_scroll_zoom_friction_set(double friction);
431
432 /**
433  * Get whether scrollers should be draggable from any point in their
434  * views.
435  *
436  * @return the thumb scroll state
437  *
438  * @note This is the default behavior for touch screens, in general.
439  * @note All other functions namespaced with "thumbscroll" will only
440  *       have effect if this mode is enabled.
441  *
442  * @ingroup Elm_Scrolling
443  *
444  * @if MOBILE @since_tizen 2.3
445  * @elseif WEARABLE @since_tizen 2.3.1
446  * @endif
447  */
448 EAPI Eina_Bool    elm_config_scroll_thumbscroll_enabled_get(void);
449
450 /**
451  * Set whether scrollers should be draggable from any point in their
452  * views.
453  *
454  * @param enabled the thumb scroll state
455  *
456  * @see elm_config_scroll_thumbscroll_enabled_get()
457  * @ingroup Elm_Scrolling
458  *
459  * @if MOBILE @since_tizen 2.3
460  * @elseif WEARABLE @since_tizen 2.3.1
461  * @endif
462  */
463 EAPI void         elm_config_scroll_thumbscroll_enabled_set(Eina_Bool enabled);
464
465 /**
466  * Get the number of pixels one should travel while dragging a
467  * scroller's view to actually trigger scrolling.
468  *
469  * @return the thumb scroll threshold
470  *
471  * One would use higher values for touch screens, in general, because
472  * of their inherent imprecision.
473  * @ingroup Elm_Scrolling
474  *
475  * @if MOBILE @since_tizen 2.3
476  * @elseif WEARABLE @since_tizen 2.3.1
477  * @endif
478  */
479 EAPI unsigned int elm_config_scroll_thumbscroll_threshold_get(void);
480
481 /**
482  * Set the number of pixels one should travel while dragging a
483  * scroller's view to actually trigger scrolling.
484  *
485  * @param threshold the thumb scroll threshold
486  *
487  * @see elm_config_thumbscroll_threshold_get()
488  * @ingroup Elm_Scrolling
489  *
490  * @if MOBILE @since_tizen 2.3
491  * @elseif WEARABLE @since_tizen 2.3.1
492  * @endif
493  */
494 EAPI void         elm_config_scroll_thumbscroll_threshold_set(unsigned int threshold);
495
496 /**
497  * Get the number of pixels the range which can be scrolled,
498  * while the scroller is holded.
499  *
500  * @return the thumb scroll hold threshold
501  *
502  * @ingroup Elm_Scrolling
503  *
504  * @if MOBILE @since_tizen 2.3
505  * @elseif WEARABLE @since_tizen 2.3.1
506  * @endif
507  */
508 EAPI unsigned int elm_config_scroll_thumbscroll_hold_threshold_get(void);
509
510 /**
511  * Set the number of pixels the range which can be scrolled,
512  * while the scroller is holded.
513  *
514  * @param threshold the thumb scroll hold threshold
515  *
516  * @see elm_config_thumbscroll_hold_threshold_get()
517  * @ingroup Elm_Scrolling
518  *
519  * @if MOBILE @since_tizen 2.3
520  * @elseif WEARABLE @since_tizen 2.3.1
521  * @endif
522  */
523 EAPI void         elm_config_scroll_thumbscroll_hold_threshold_set(unsigned int threshold);
524
525 /**
526  * Get the minimum speed of mouse cursor movement which will trigger
527  * list self scrolling animation after a mouse up event
528  * (pixels/second).
529  *
530  * @return the thumb scroll momentum threshold
531  *
532  * @ingroup Elm_Scrolling
533  *
534  * @if MOBILE @since_tizen 2.3
535  * @elseif WEARABLE @since_tizen 2.3.1
536  * @endif
537  */
538 EAPI double       elm_config_scroll_thumbscroll_momentum_threshold_get(void);
539
540 /**
541  * Set the minimum speed of mouse cursor movement which will trigger
542  * list self scrolling animation after a mouse up event
543  * (pixels/second).
544  *
545  * @param threshold the thumb scroll momentum threshold
546  *
547  * @see elm_config_thumbscroll_momentum_threshold_get()
548  * @ingroup Elm_Scrolling
549  *
550  * @if MOBILE @since_tizen 2.3
551  * @elseif WEARABLE @since_tizen 2.3.1
552  * @endif
553  */
554 EAPI void         elm_config_scroll_thumbscroll_momentum_threshold_set(double threshold);
555
556 /**
557  * Get the number of pixels the maximum distance which can be flicked.
558  * If it is flicked more than this,
559  * the flick distance is same with maximum distance.
560  *
561  * @return the thumb scroll maximum flick distance
562  *
563  * @ingroup Elm_Scrolling
564  *
565  * @if MOBILE @since_tizen 2.3
566  * @elseif WEARABLE @since_tizen 2.3.1
567  * @endif
568  */
569 EAPI unsigned int elm_config_scroll_thumbscroll_flick_distance_tolerance_get(void);
570
571 /**
572  * Set the number of pixels the maximum distance which can be flicked.
573  * If it is flicked more than this,
574  * the flick distance is same with maximum distance.
575  *
576  * @param distance the thumb scroll maximum flick distance
577  *
578  * @see elm_config_thumbscroll_flick_distance_tolerance_get()
579  * @ingroup Elm_Scrolling
580  *
581  * @if MOBILE @since_tizen 2.3
582  * @elseif WEARABLE @since_tizen 2.3.1
583  * @endif
584  */
585 EAPI void         elm_config_scroll_thumbscroll_flick_distance_tolerance_set(unsigned int distance);
586
587 /**
588  * Get the amount of inertia a scroller will impose at self scrolling
589  * animations.
590  *
591  * @return the thumb scroll friction
592  *
593  * @ingroup Elm_Scrolling
594  *
595  * @if MOBILE @since_tizen 2.3
596  * @elseif WEARABLE @since_tizen 2.3.1
597  * @endif
598  */
599 EAPI double       elm_config_scroll_thumbscroll_friction_get(void);
600
601 /**
602  * Set the amount of inertia a scroller will impose at self scrolling
603  * animations.
604  *
605  * @param friction the thumb scroll friction
606  *
607  * @see elm_config_thumbscroll_friction_get()
608  * @ingroup Elm_Scrolling
609  *
610  * @if MOBILE @since_tizen 2.3
611  * @elseif WEARABLE @since_tizen 2.3.1
612  * @endif
613  */
614 EAPI void         elm_config_scroll_thumbscroll_friction_set(double friction);
615
616 /**
617  * Get the min amount of inertia a scroller will impose at self scrolling
618  * animations.
619  *
620  * @return the thumb scroll min friction
621  *
622  * @ingroup Elm_Scrolling
623  *
624  * @if MOBILE @since_tizen 2.3
625  * @elseif WEARABLE @since_tizen 2.3.1
626  * @endif
627  */
628 EAPI double       elm_config_scroll_thumbscroll_min_friction_get(void);
629
630 /**
631  * Set the min amount of inertia a scroller will impose at self scrolling
632  * animations.
633  *
634  * @param friction the thumb scroll min friction
635  *
636  * @see elm_config_thumbscroll_min_friction_get()
637  * @ingroup Elm_Scrolling
638  *
639  * @if MOBILE @since_tizen 2.3
640  * @elseif WEARABLE @since_tizen 2.3.1
641  * @endif
642  */
643 EAPI void         elm_config_scroll_thumbscroll_min_friction_set(double friction);
644
645 /**
646  * Get the standard velocity of the scroller. The scroll animation time is
647  * same with thumbscroll friction, if the velocity is same with standard
648  * velocity.
649  *
650  * @return the thumb scroll friction
651  *
652  * @ingroup Elm_Scrolling
653  *
654  * @if MOBILE @since_tizen 2.3
655  * @elseif WEARABLE @since_tizen 2.3.1
656  * @endif
657  */
658 EAPI double       elm_config_scroll_thumbscroll_friction_standard_get(void);
659
660 /**
661  * Set the standard velocity of the scroller. The scroll animation time is
662  * same with thumbscroll friction, if the velocity is same with standard
663  * velocity.
664  *
665  * @param standard the thumb scroll friction standard
666  *
667  * @see elm_config_thumbscroll_friction_standard_get()
668  * @ingroup Elm_Scrolling
669  *
670  * @if MOBILE @since_tizen 2.3
671  * @elseif WEARABLE @since_tizen 2.3.1
672  * @endif
673  */
674 EAPI void         elm_config_scroll_thumbscroll_friction_standard_set(double standard);
675
676 /**
677  * Get the amount of lag between your actual mouse cursor dragging
678  * movement and a scroller's view movement itself, while pushing it
679  * into bounce state manually.
680  *
681  * @return the thumb scroll border friction
682  *
683  * @ingroup Elm_Scrolling
684  *
685  * @if MOBILE @since_tizen 2.3
686  * @elseif WEARABLE @since_tizen 2.3.1
687  * @endif
688  */
689 EAPI double       elm_config_scroll_thumbscroll_border_friction_get(void);
690
691 /**
692  * Set the amount of lag between your actual mouse cursor dragging
693  * movement and a scroller's view movement itself, while pushing it
694  * into bounce state manually.
695  *
696  * @param friction the thumb scroll border friction. @c 0.0 for
697  *        perfect synchrony between two movements, @c 1.0 for maximum
698  *        lag.
699  *
700  * @see elm_config_thumbscroll_border_friction_get()
701  * @note parameter value will get bound to 0.0 - 1.0 interval, always
702  *
703  * @ingroup Elm_Scrolling
704  *
705  * @if MOBILE @since_tizen 2.3
706  * @elseif WEARABLE @since_tizen 2.3.1
707  * @endif
708  */
709 EAPI void         elm_config_scroll_thumbscroll_border_friction_set(double friction);
710
711 /**
712  * Get the sensitivity amount which is be multiplied by the length of
713  * mouse dragging.
714  *
715  * @return the thumb scroll sensitivity friction
716  *
717  * @ingroup Elm_Scrolling
718  *
719  * @if MOBILE @since_tizen 2.3
720  * @elseif WEARABLE @since_tizen 2.3.1
721  * @endif
722  */
723 EAPI double       elm_config_scroll_thumbscroll_sensitivity_friction_get(void);
724
725 /**
726  * Set the sensitivity amount which is be multiplied by the length of
727  * mouse dragging.
728  *
729  * @param friction the thumb scroll sensitivity friction. @c 0.1 for
730  *        minimum sensitivity, @c 1.0 for maximum sensitivity. 0.25
731  *        is proper.
732  *
733  * @see elm_config_thumbscroll_sensitivity_friction_get()
734  * @note parameter value will get bound to 0.1 - 1.0 interval, always
735  *
736  * @ingroup Elm_Scrolling
737  *
738  * @if MOBILE @since_tizen 2.3
739  * @elseif WEARABLE @since_tizen 2.3.1
740  * @endif
741  */
742 EAPI void         elm_config_scroll_thumbscroll_sensitivity_friction_set(double friction);
743
744 /**
745  * Get the smooth start mode for scrolling with your finger
746  *
747  * @return smooth scroll flag
748  * 
749  * @see elm_config_scroll_thumbscroll_smooth_start_set()
750  *
751  * @since 1.16
752  * @ingroup Elm_Scrolling
753  *
754  * @if MOBILE @since_tizen 3.0
755  * @elseif WEARABLE @since_tizen 3.0
756  * @endif
757  */
758 EAPI Eina_Bool    elm_config_scroll_thumbscroll_smooth_start_get(void);
759
760 /**
761  * Set the smooth start mode for scrolling with your finger
762  *
763  * This enabled finger scrolling to scroll from the currunt point rather than
764  * jumping and playing catch-up to make start of scrolling look smoother once
765  * the finger or mouse goes past the threshold.
766  * 
767  * @param enable The enabled state of the smooth scroller
768  * 
769  * @see elm_config_scroll_thumbscroll_smooth_start_get()
770  *
771  * @since 1.16
772  * @ingroup Elm_Scrolling
773  *
774  * @if MOBILE @since_tizen 3.0
775  * @elseif WEARABLE @since_tizen 3.0
776  * @endif
777  */
778 EAPI void         elm_config_scroll_thumbscroll_smooth_start_set(Eina_Bool enable);
779
780 /**
781  * Get the amount of smoothing to apply to scrolling
782  *
783  * @return the amount of smoothing to apply from 0.0 to 1.0
784  *
785  * @see elm_config_scroll_thumbscroll_smooth_amount_set()
786  *
787  * @since 1.16
788  * @ingroup Elm_Scrolling
789  *
790  * @if MOBILE @since_tizen 3.0
791  * @elseif WEARABLE @since_tizen 3.0
792  * @endif
793  */
794 EAPI double       elm_config_scroll_thumbscroll_smooth_amount_get(void);
795
796 /**
797  * Set the amount of smoothing to apply to scrolling
798  *
799  * Scrolling with your finger can be smoothed out and the amount to smooth
800  * is determined by this parameter. 0.0 means to not smooth at all and
801  * 1.0 is to smoth as much as possible.
802  * 
803  * @param the amount to smooth from 0.0 to 1.0 with 0.0 being none
804  *
805  * @see elm_config_thumbscroll_acceleration_threshold_set()
806  * 
807  * @since 1.16
808  * @ingroup Elm_Scrolling
809  *
810  * @if MOBILE @since_tizen 3.0
811  * @elseif WEARABLE @since_tizen 3.0
812  * @endif
813  */
814 EAPI void         elm_config_scroll_thumbscroll_smooth_amount_set(double amount);
815
816 /**
817  * Get the time window to look back at for events for smoothing
818  *
819  * @return the time window in seconds (between 0.0 and 1.0)
820  *
821  * @see elm_config_scroll_thumbscroll_smooth_time_window_set()
822  *
823  * @since 1.16
824  * @ingroup Elm_Scrolling
825  *
826  * @if MOBILE @since_tizen 3.0
827  * @elseif WEARABLE @since_tizen 3.0
828  * @endif
829  */
830 EAPI double       elm_config_scroll_thumbscroll_smooth_time_window_get(void);
831
832 /**
833  * Set the time window to look back at for events for smoothing
834  *
835  * Scrolling with your finger can be smoothed out and the window of time
836  * to look at is determined by this config. The value is in seconds and
837  * is from 0.0 to 1.0
838  * 
839  * @param the time window in seconds (between 0.0 and 1.0)
840  *
841  * @see elm_config_scroll_thumbscroll_smooth_time_window_get()
842  * 
843  * @since 1.16
844  * @ingroup Elm_Scrolling
845  *
846  * @if MOBILE @since_tizen 3.0
847  * @elseif WEARABLE @since_tizen 3.0
848  * @endif
849  */
850 EAPI void         elm_config_scroll_thumbscroll_smooth_time_window_set(double amount);
851
852 /**
853  * Get the minimum speed of mouse cursor movement which will accelerate
854  * scrolling velocity after a mouse up event
855  * (pixels/second).
856  *
857  * @return the thumb scroll acceleration threshold
858  *
859  * @ingroup Elm_Scrolling
860  *
861  * @if MOBILE @since_tizen 2.3
862  * @elseif WEARABLE @since_tizen 2.3.1
863  * @endif
864  */
865 EAPI double       elm_config_scroll_thumbscroll_acceleration_threshold_get(void);
866
867 /**
868  * Set the minimum speed of mouse cursor movement which will accelerate
869  * scrolling velocity after a mouse up event
870  * (pixels/second).
871  *
872  * @param threshold the thumb scroll acceleration threshold
873  *
874  * @see elm_config_thumbscroll_acceleration_threshold_get()
875  * @ingroup Elm_Scrolling
876  *
877  * @if MOBILE @since_tizen 2.3
878  * @elseif WEARABLE @since_tizen 2.3.1
879  * @endif
880  */
881 EAPI void         elm_config_scroll_thumbscroll_acceleration_threshold_set(double threshold);
882
883 /**
884  * Get the time limit for accelerating velocity.
885  *
886  * @return the thumb scroll acceleration time limit
887  *
888  * @ingroup Elm_Scrolling
889  *
890  * @if MOBILE @since_tizen 2.3
891  * @elseif WEARABLE @since_tizen 2.3.1
892  * @endif
893  */
894 EAPI double       elm_config_scroll_thumbscroll_acceleration_time_limit_get(void);
895
896 /**
897  * Set the time limit for accelerating velocity.
898  *
899  * @param time_limit the thumb scroll acceleration time limit
900  *
901  * @see elm_config_thumbscroll_acceleration_time_limit_get()
902  * @ingroup Elm_Scrolling
903  *
904  * @if MOBILE @since_tizen 2.3
905  * @elseif WEARABLE @since_tizen 2.3.1
906  * @endif
907  */
908 EAPI void         elm_config_scroll_thumbscroll_acceleration_time_limit_set(double time_limit);
909
910 /**
911  * Get the weight for the acceleration.
912  *
913  * @return the thumb scroll acceleration weight
914  *
915  * @ingroup Elm_Scrolling
916  *
917  * @if MOBILE @since_tizen 2.3
918  * @elseif WEARABLE @since_tizen 2.3.1
919  * @endif
920  */
921 EAPI double       elm_config_scroll_thumbscroll_acceleration_weight_get(void);
922
923 /**
924  * Set the weight for the acceleration.
925  *
926  * @param weight the thumb scroll acceleration weight
927  *
928  * @see elm_config_thumbscroll_acceleration_weight_get()
929  * @ingroup Elm_Scrolling
930  *
931  * @if MOBILE @since_tizen 2.3
932  * @elseif WEARABLE @since_tizen 2.3.1
933  * @endif
934  */
935 EAPI void         elm_config_scroll_thumbscroll_acceleration_weight_set(double weight);
936
937 // TIZEN_ONLY(20150705): Genlist item align feature
938 /**
939  * @brief Sets the scroll item align enable.
940  *
941  * @since_tizen 2.3.1
942  *
943  * @param[in] enable The scroll item align state
944  *
945  * @see elm_config_scroll_item_align_enabled_get()
946  *
947  * @if MOBILE @since_tizen 2.4
948  * @elseif WEARABLE @since_tizen 2.3.1
949  * @endif
950  */
951 EAPI void elm_config_scroll_item_align_enabled_set(Eina_Bool enable);
952
953 /**
954  * @brief Sets the scroll item align enable.
955  *
956  * @since_tizen 2.3.1
957  *
958  * @return The scroll item align state.
959  *
960  * @see elm_config_scroll_item_align_enabled_set()
961  *
962  * @if MOBILE @since_tizen 2.4
963  * @elseif WEARABLE @since_tizen 2.3.1
964  * @endif
965  */
966 EAPI Eina_Bool elm_config_scroll_item_align_enabled_get(void);
967
968 /**
969  * @brief Sets the scroll item vertical align.
970  *
971  * @since_tizen 2.3.1
972  *
973  * @param[in] scroll_item_valign The position name.
974  *
975  * @see elm_config_scroll_item_valign_get()
976  *
977  * @if MOBILE @since_tizen 2.4
978  * @elseif WEARABLE @since_tizen 2.3.1
979  * @endif
980  */
981 EAPI void elm_config_scroll_item_valign_set(const char *scroll_item_valign);
982
983 /**
984  * @brief Sets the scroll item vertical align.
985  *
986  * @since_tizen 2.3.1
987  *
988  * @return The scroll item vertical align name.
989  *
990  * @see elm_config_scroll_item_valign_set()
991  *
992  * @if MOBILE @since_tizen 2.4
993  * @elseif WEARABLE @since_tizen 2.3.1
994  * @endif
995  */
996 EAPI const char *elm_config_scroll_item_valign_get(void);
997 //
998
999 /**
1000  * Focus Autoscroll Mode
1001  *
1002  * @since 1.10
1003  * @ingroup Elm_Focus
1004  */
1005 typedef enum
1006 {
1007    ELM_FOCUS_AUTOSCROLL_MODE_SHOW, /**< directly show the focused region or item automatically */
1008    ELM_FOCUS_AUTOSCROLL_MODE_NONE, /**< do not show the focused region or item automatically */
1009    ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN /**< bring_in the focused region or item automatically which might invole the scrolling */
1010 } Elm_Focus_Autoscroll_Mode;
1011
1012 /**
1013  * Get focus auto scroll mode.
1014  *
1015  * When a region or an item is focused and it resides inside any scroller,
1016  * elementary will automatically scroll the focused area to the visible
1017  * viewport.
1018  *
1019  * @see elm_config_focus_autoscroll_mode_set()
1020  * @ingroup Elm_Focus
1021  * @since 1.10
1022  *
1023  * @if MOBILE @since_tizen 3.0
1024  * @elseif WEARABLE @since_tizen 3.0
1025  * @endif
1026  */
1027 EAPI Elm_Focus_Autoscroll_Mode elm_config_focus_autoscroll_mode_get(void);
1028
1029 /**
1030  * Set focus auto scroll mode.
1031  *
1032  * @param mode focus auto scroll mode. This can be one of the
1033  * Elm_Focus_Autoscroll_Mode enum values.
1034  *
1035  * When a region or an item is focused and it resides inside any scroller,
1036  * elementary will automatically scroll the focused area to the visible
1037  * viewport.
1038  * Focus auto scroll mode is set to #ELM_FOCUS_AUTOSCROLL_MODE_SHOW by
1039  * default historically.
1040  *
1041  * @see elm_config_focus_autoscroll_mode_get()
1042  * @ingroup Elm_Focus
1043  * @since 1.10
1044  *
1045  * @if MOBILE @since_tizen 3.0
1046  * @elseif WEARABLE @since_tizen 3.0
1047  * @endif
1048  */
1049 EAPI void         elm_config_focus_autoscroll_mode_set(Elm_Focus_Autoscroll_Mode mode);
1050
1051 /**
1052  * Slider's indicator visiblity mode.
1053  *
1054  * @since 1.13
1055  * @ingroup Elm_Slider
1056  */
1057
1058 typedef enum
1059 {
1060    ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT,   /**< show indicator on mouse down or change in slider value */
1061    ELM_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS,    /**< Always show the indicator. */
1062    ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS,  /**< Show the indicator on focus */
1063    ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE       /**< Never show the indicator  */
1064 } Elm_Slider_Indicator_Visible_Mode;
1065
1066 /**
1067  * Sets the slider's indicator visible mode.
1068  *
1069  * @param obj The slider object.
1070  * @param mode Elm_Slider_Indicator_Visible_Mode.
1071  * viewport.
1072  *
1073  * @ingroup Elm_Slider
1074  * @since 1.13
1075  *
1076  * @if MOBILE @since_tizen 3.0
1077  * @elseif WEARABLE @since_tizen 3.0
1078  * @endif
1079  */
1080 EAPI void elm_config_slider_indicator_visible_mode_set(Elm_Slider_Indicator_Visible_Mode mode);
1081
1082 /**
1083  * Get the slider's indicator visible mode.
1084  *
1085  * @param obj The slider object.
1086  * @return @c ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT if not set anything by the user.
1087  * @c ELM_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS, ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS,
1088  *    ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE if any of the above is set by user.
1089  *
1090  * @ingroup Elm_Slider
1091  * @since 1.13
1092  *
1093  * @if MOBILE @since_tizen 3.0
1094  * @elseif WEARABLE @since_tizen 3.0
1095  * @endif
1096  */
1097 EAPI Elm_Slider_Indicator_Visible_Mode elm_config_slider_indicator_visible_mode_get(void);
1098
1099 /**
1100  * @}
1101  */
1102
1103 /**
1104  * Get the duration for occurring long press event.
1105  *
1106  * @return Timeout for long press event
1107  * @ingroup Longpress
1108  *
1109  * @if MOBILE @since_tizen 2.3
1110  * @elseif WEARABLE @since_tizen 2.3.1
1111  * @endif
1112  */
1113 EAPI double       elm_config_longpress_timeout_get(void);
1114
1115 /**
1116  * Set the duration for occurring long press event.
1117  *
1118  * @param lonpress_timeout Timeout for long press event
1119  * @ingroup Longpress
1120  *
1121  * @if MOBILE @since_tizen 2.3
1122  * @elseif WEARABLE @since_tizen 2.3.1
1123  * @endif
1124  */
1125 EAPI void         elm_config_longpress_timeout_set(double longpress_timeout);
1126
1127 typedef enum _Elm_Softcursor_Mode
1128 {
1129    ELM_SOFTCURSOR_MODE_AUTO, /**< Auto-detect if a software cursor should be used (default) */
1130    ELM_SOFTCURSOR_MODE_ON, /**< Always use a softcursor */
1131    ELM_SOFTCURSOR_MODE_OFF /**< Never use a softcursor */
1132 } Elm_Softcursor_Mode; /**< @since 1.7 */
1133
1134 /**
1135  * Set the mode used for software provided mouse cursors inline in the window
1136  * canvas.
1137  *
1138  * A software rendered cursor can be provided for rendering inline inside the
1139  * canvas windows in the event the native display system does not provide one
1140  * or the native one is not wanted.
1141  *
1142  * @param lonpress_timeout Timeout for long press event
1143  * @ingroup Softcursor
1144  *
1145  * @see elm_config_softcursor_mode_get()
1146  * @since 1.7
1147  *
1148  * @if MOBILE @since_tizen 2.3
1149  * @elseif WEARABLE @since_tizen 2.3.1
1150  * @endif
1151  */
1152 EAPI void         elm_config_softcursor_mode_set(Elm_Softcursor_Mode mode);
1153
1154 /**
1155  * Get the software cursor mode
1156  *
1157  * @return The mode used for software cursors
1158  * @ingroup Softcursor
1159  *
1160  * @see elm_config_softcursor_mode_set()
1161  * @since 1.7
1162  *
1163  * @if MOBILE @since_tizen 2.3
1164  * @elseif WEARABLE @since_tizen 2.3.1
1165  * @endif
1166  */
1167 EAPI Elm_Softcursor_Mode elm_config_softcursor_mode_get(void);
1168
1169 /**
1170  * @MOBILE_ONLY
1171  *
1172  * Get the duration after which tooltip will be shown.
1173  *
1174  * @return Duration after which tooltip will be shown.
1175  *
1176  * @if MOBILE @since_tizen 2.3
1177  * @endif
1178  */
1179 EAPI double      elm_config_tooltip_delay_get(void);
1180
1181 /**
1182  * @MOBILE_ONLY
1183  *
1184  * Set the duration after which tooltip will be shown.
1185  *
1186  * @return @c EINA_TRUE if value is set.
1187  *
1188  * @if MOBILE @since_tizen 2.3
1189  * @endif
1190  */
1191 EAPI void        elm_config_tooltip_delay_set(double delay);
1192
1193 /**
1194  * Get the configured cursor engine only usage
1195  *
1196  * This gets the globally configured exclusive usage of engine cursors.
1197  *
1198  * @return 1 if only engine cursors should be used
1199  * @ingroup Elm_Cursors
1200  *
1201  * @if MOBILE @since_tizen 2.3
1202  * @elseif WEARABLE @since_tizen 2.3.1
1203  * @endif
1204  */
1205 EAPI Eina_Bool   elm_config_cursor_engine_only_get(void);
1206
1207 /**
1208  * Set the configured cursor engine only usage
1209  *
1210  * This sets the globally configured exclusive usage of engine cursors.
1211  * It won't affect cursors set before changing this value.
1212  *
1213  * @param engine_only If 1 only engine cursors will be enabled, if 0 will
1214  * look for them on theme before.
1215  * @ingroup Elm_Cursors
1216  *
1217  * @if MOBILE @since_tizen 2.3
1218  * @elseif WEARABLE @since_tizen 2.3.1
1219  * @endif
1220  */
1221 EAPI void        elm_config_cursor_engine_only_set(Eina_Bool engine_only);
1222
1223 /**
1224  * Get the global scaling factor
1225  *
1226  * This gets the globally configured scaling factor that is applied to all
1227  * objects.
1228  *
1229  * @return The scaling factor
1230  * @ingroup Elm_Scaling
1231  *
1232  * @if MOBILE @since_tizen 2.3
1233  * @elseif WEARABLE @since_tizen 2.3.1
1234  * @endif
1235  */
1236 EAPI double elm_config_scale_get(void);
1237
1238 /**
1239  * Set the global scaling factor
1240  *
1241  * This sets the globally configured scaling factor that is applied to all
1242  * objects.
1243  *
1244  * @param scale The scaling factor to set
1245  * @ingroup Elm_Scaling
1246  *
1247  * @if MOBILE @since_tizen 2.3
1248  * @elseif WEARABLE @since_tizen 2.3.1
1249  * @endif
1250  */
1251 EAPI void   elm_config_scale_set(double scale);
1252
1253 /**
1254  * @defgroup Elm_Password_last_show Password show last
1255  * @ingroup elm_infra_group
1256  *
1257  * Show last feature of password mode enables user to view
1258  * the last input entered for few seconds before masking it.
1259  * These functions allow to set this feature in password mode
1260  * of entry widget and also allow to manipulate the duration
1261  * for which the input has to be visible.
1262  *
1263  * @{
1264  */
1265
1266 /**
1267  * Get the "show last" setting of password mode.
1268  *
1269  * This gets the "show last" setting of password mode which might be
1270  * enabled or disabled.
1271  *
1272  * @return @c EINA_TRUE, if the "show last" setting is enabled,
1273  * @c EINA_FALSE  if it's disabled.
1274  *
1275  * @ingroup Elm_Password_last_show
1276  *
1277  * @if MOBILE @since_tizen 2.3
1278  * @elseif WEARABLE @since_tizen 2.3.1
1279  * @endif
1280  */
1281 EAPI Eina_Bool elm_config_password_show_last_get(void);
1282
1283 /**
1284  * Set show last setting in password mode.
1285  *
1286  * This enables or disables show last setting of password mode.
1287  *
1288  * @param password_show_last If @c EINA_TRUE, enables "show last" in password mode.
1289  * @see elm_config_password_show_last_timeout_set()
1290  * @ingroup Elm_Password_last_show
1291  *
1292  * @if MOBILE @since_tizen 2.3
1293  * @elseif WEARABLE @since_tizen 2.3.1
1294  * @endif
1295  */
1296 EAPI void      elm_config_password_show_last_set(Eina_Bool password_show_last);
1297
1298 /**
1299  * Get the timeout value in "show last" password mode.
1300  *
1301  * This gets the time out value for which the last input entered in password
1302  * mode will be visible.
1303  *
1304  * @return The timeout value of "show last" password mode.
1305  * @ingroup Elm_Password_last_show
1306  *
1307  * @if MOBILE @since_tizen 2.3
1308  * @elseif WEARABLE @since_tizen 2.3.1
1309  * @endif
1310  */
1311 EAPI double    elm_config_password_show_last_timeout_get(void);
1312
1313 /**
1314  * Set's the timeout value in "show last" password mode.
1315  *
1316  * This sets the time out value for which the last input entered in password
1317  * mode will be visible.
1318  *
1319  * @param password_show_last_timeout The timeout value.
1320  * @see elm_config_password_show_last_set()
1321  * @ingroup Elm_Password_last_show
1322  *
1323  * @if MOBILE @since_tizen 2.3
1324  * @elseif WEARABLE @since_tizen 2.3.1
1325  * @endif
1326  */
1327 EAPI void      elm_config_password_show_last_timeout_set(double password_show_last_timeout);
1328
1329 /**
1330  * @}
1331  */
1332
1333 /**
1334  * @defgroup Elm_Engine Elementary Engine
1335  * @ingroup elm_infra_group
1336  *
1337  * These are functions setting and querying which rendering engine
1338  * Elementary will use for drawing its windows' pixels.
1339  *
1340  * The following are the available engines:
1341  * @li "fb" (Framebuffer)
1342  * @li "buffer" (Pixel Memory Buffer)
1343  * @li "ews" (Ecore + Evas Single Process Windowing System)
1344  * @li NULL - no engine config
1345  *
1346  * @deprecated Please use elm_config_accel_preference_override_set() instead
1347  *
1348  * @{
1349  */
1350
1351 /**
1352  * @deprecated Deprecated since 2.4. Use elm_config_accel_preference_get() + elm_config_accel_preference_set().
1353  * @brief Get Elementary's rendering engine in use.
1354  *
1355  * @return The rendering engine's name
1356  * @note there's no need to free the returned string, here.
1357  *
1358  * This gets the global rendering engine that is applied to all Elementary
1359  * applications.
1360  *
1361  * @see elm_config_engine_set()
1362  *
1363  * @if MOBILE @since_tizen 2.3
1364  * @elseif WEARABLE @since_tizen 2.3.1
1365  * @endif
1366  */
1367 EINA_DEPRECATED EAPI const char *elm_config_engine_get(void);
1368
1369 /**
1370  * @deprecated Deprecated since 2.4. Use elm_config_accel_preference_get() + elm_config_accel_preference_set().
1371  * @brief Set Elementary's rendering engine for use.
1372  *
1373  * @param engine The rendering engine's name
1374  *
1375  * Note that it will take effect only to Elementary windows created after
1376  * this is called.
1377  *
1378  * @see elm_win_add()
1379  *
1380  * @if MOBILE @since_tizen 2.3
1381  * @elseif WEARABLE @since_tizen 2.3.1
1382  * @endif
1383  */
1384 EINA_DEPRECATED EAPI void        elm_config_engine_set(const char *engine);
1385
1386 /**
1387  * @brief Get Elementary's preferred engine to use.
1388  *
1389  * @return The rendering engine's name
1390  * @note there's no need to free the returned string, here.
1391  *
1392  * This gets the global rendering engine that is applied to all Elementary
1393  * applications and is PREFERRED by the application. This can (and will)
1394  * override the engine configured for all applications which. It is rare to
1395  * explicitly ask for an engine (likely need is the buffer engine and not
1396  * much more), so use elm_config_accel_preference_get() and
1397  * elm_config_accel_preference_set() normally.
1398  *
1399  * @see elm_config_preferred_engine_set()
1400  *
1401  * @if MOBILE @since_tizen 2.3
1402  * @elseif WEARABLE @since_tizen 2.3.1
1403  * @endif
1404  */
1405 EAPI const char *elm_config_preferred_engine_get(void);
1406
1407 /**
1408  * @brief Set Elementary's preferred rendering engine for use.
1409  *
1410  * @param engine The rendering engine's name
1411  *
1412  * Note that it will take effect only to Elementary windows created after
1413  * this is called. This overrides the engine set by configuration at
1414  * application startup. Note that it is a hint and may not be honored.
1415  * It is rare to explicitly ask for an engine (likely need is the buffer
1416  * engine and not much more), so use elm_config_accel_preference_get() and
1417  * elm_config_accel_preference_set() normally.
1418  *
1419  * @see elm_win_add()
1420  * @see elm_config_accel_preference_set()
1421  * @see elm_config_engine_set()
1422  *
1423  * @if MOBILE @since_tizen 2.3
1424  * @elseif WEARABLE @since_tizen 2.3.1
1425  * @endif
1426  */
1427 EAPI void        elm_config_preferred_engine_set(const char *engine);
1428
1429 /**
1430  * @brief Get Elementary's preferred engine to use.
1431  *
1432  * @return The acceleration preference hint string
1433  * @note there's no need to free the returned string, here.
1434  *
1435  * See elm_config_accel_preference_set() for more information, but this simply
1436  * returns what was set by this call, nothing more.
1437  *
1438  * @see elm_config_accel_preference_set()
1439  * @since 1.10
1440  *
1441  * @if MOBILE @since_tizen 2.3
1442  * @elseif WEARABLE @since_tizen 2.3.1
1443  * @endif
1444  */
1445 EAPI const char *elm_config_accel_preference_get(void);
1446
1447 /**
1448  * @brief Set Elementary's acceleration preferences for new windows.
1449  *
1450  * @param pref The preference desired as a normal C string
1451  *
1452  * Note that it will take effect only to Elementary windows created after
1453  * this is called. The @p pref string is a freeform C string that indicates
1454  * what kind of acceleration is preferred. Here "acceleration" majorly
1455  * means to rendering and which hardware unit application renders GUIs with.
1456  * This may or may not be honored, but a best attempt will
1457  * be made. Known strings are as follows:
1458  *
1459  * "gl", "opengl" - try use OpenGL.
1460  * "3d" - try and use a 3d acceleration unit.
1461  * "hw", "hardware", "accel" - try any acceleration unit (best possible)
1462  * "none" - use no acceleration. try use software (since 1.16)
1463  *
1464  * Since 1.14, it is also possible to specify some GL properties for the GL
1465  * window surface. This allows applications to use GLView with depth, stencil
1466  * and MSAA buffers with direct rendering. The new accel preference string
1467  * format is thus "{HW Accel}[:depth{value}[:stencil{value}[:msaa{str}]]]".
1468  *
1469  * Accepted values for depth are for instance "depth", "depth16", "depth24".
1470  * Accepted values for stencil are "stencil", "stencil1", "stencil8".
1471  * For MSAA, only predefined strings are accepted: "msaa", "msaa_low",
1472  * "msaa_mid" and "msaa_high". The selected configuration is not guaranteed
1473  * and is only valid in case of GL acceleration. Only the base acceleration
1474  * string will be saved (e.g. "gl" or "hw").
1475  *
1476  * Full examples include:
1477  *
1478  * "gl", - try to use OpenGL
1479  * "hw:depth:stencil", - use HW acceleration with default depth and stencil buffers
1480  * "opengl:depth24:stencil8:msaa_mid" - use OpenGL with 24-bit depth,
1481  *      8-bit stencil and a medium number of MSAA samples in the backbuffer.
1482  *
1483  * This takes precedence over engine preferences set with
1484  * elm_config_preferred_engine_set().
1485  *
1486  * @see elm_win_add()
1487  * @see elm_config_accel_preference_override_set()
1488  *
1489  * @since 1.10
1490  *
1491  * @if MOBILE @since_tizen 2.3
1492  * @elseif WEARABLE @since_tizen 2.3.1
1493  * @endif
1494  */
1495 EAPI void        elm_config_accel_preference_set(const char *pref);
1496
1497
1498 typedef struct _Elm_Text_Class
1499 {
1500    const char *name;
1501    const char *desc;
1502 } Elm_Text_Class;
1503
1504 typedef struct _Elm_Font_Overlay
1505 {
1506    const char    *text_class;
1507    const char    *font;
1508    Evas_Font_Size size;
1509 } Elm_Font_Overlay;
1510
1511 /**
1512  * Get Elementary's list of supported text classes.
1513  *
1514  * @return The text classes list, with @c Elm_Text_Class blobs as data.
1515  * @ingroup Elm_Fonts
1516  *
1517  * Release the list with elm_text_classes_list_free().
1518  *
1519  * @if MOBILE @since_tizen 2.3
1520  * @elseif WEARABLE @since_tizen 2.3.1
1521  * @endif
1522  */
1523 EAPI Eina_List *elm_config_text_classes_list_get(void);
1524
1525 /**
1526  * Free Elementary's list of supported text classes.
1527  *
1528  * @ingroup Elm_Fonts
1529  *
1530  * @see elm_config_text_classes_list_get().
1531  *
1532  * @if MOBILE @since_tizen 2.3
1533  * @elseif WEARABLE @since_tizen 2.3.1
1534  * @endif
1535  */
1536 EAPI void elm_config_text_classes_list_free(Eina_List *list);
1537
1538 /**
1539  * Get Elementary's list of font overlays, set with
1540  * elm_config_font_overlay_set().
1541  *
1542  * @return The font overlays list, with @c Elm_Font_Overlay blobs as
1543  * data.
1544  *
1545  * @ingroup Elm_Fonts
1546  *
1547  * For each text class, one can set a <b>font overlay</b> for it,
1548  * overriding the default font properties for that class coming from
1549  * the theme in use. There is no need to free this list.
1550  *
1551  * @see elm_config_font_overlay_set() and elm_config_font_overlay_unset().
1552  *
1553  * @if MOBILE @since_tizen 2.3
1554  * @elseif WEARABLE @since_tizen 2.3.1
1555  * @endif
1556  */
1557 EAPI const Eina_List *elm_config_font_overlay_list_get(void);
1558
1559 /**
1560  * Set a font overlay for a given Elementary text class.
1561  *
1562  * @param text_class Text class name
1563  * @param font Font name and style string
1564  * @param size Font size.
1565  *
1566  * @note If the @p size is lower than zero, the value will be the amount of the size percentage. ex) -50: half of the current size, -100: current size, -10: 1/10 size.
1567  *
1568  * @ingroup Elm_Fonts
1569  *
1570  * @p font has to be in the format returned by elm_font_fontconfig_name_get().
1571  * @see elm_config_font_overlay_list_get()
1572  * @see elm_config_font_overlay_unset()
1573  * @see edje_object_text_class_set()
1574  *
1575  * @if MOBILE @since_tizen 2.3
1576  * @elseif WEARABLE @since_tizen 2.3.1
1577  * @endif
1578  */
1579 EAPI void             elm_config_font_overlay_set(const char *text_class, const char *font, Evas_Font_Size size);
1580
1581 /**
1582  * @internal
1583  *
1584  * Get access mode
1585  *
1586  * @return the access mode bouncing state
1587  *
1588  * @since 1.7
1589  *
1590  * @ingroup Access
1591  *
1592  * @see elm_config_access_set()
1593  */
1594 EAPI Eina_Bool        elm_config_access_get(void);
1595
1596 /**
1597  * @internal
1598  *
1599  * Set access mode
1600  *
1601  * @param is_access If @c EINA_TRUE, enables access mode
1602  *
1603  * @note Elementary objects may have information (e.g. label on the elm_button)
1604  * to be read. This information is read by access module when an object
1605  * receives EVAS_CALLBACK_MOUSE_IN event
1606  *
1607  * @since 1.7
1608  *
1609  * @ingroup Access
1610  *
1611  * @see elm_config_access_get()
1612  */
1613 EAPI void             elm_config_access_set(Eina_Bool is_access);
1614
1615 /**
1616  * Get whether selection should be cleared when entry widget is unfocused.
1617  *
1618  * @return if the selection would be cleared on unfocus.
1619  *
1620  * @since 1.7
1621  *
1622  * @ingroup Selection
1623  *
1624  * @see elm_config_selection_unfocused_clear_set()
1625  *
1626  * @if MOBILE @since_tizen 2.3
1627  * @elseif WEARABLE @since_tizen 2.3.1
1628  * @endif
1629  */
1630 EAPI Eina_Bool        elm_config_selection_unfocused_clear_get(void);
1631
1632 /**
1633  * Set whether selection should be cleared when entry widget is unfocused.
1634  *
1635  * @param enabled If @c EINA_TRUE, clear selection when unfocus,
1636  * otherwise does not clear selection when unfocus.
1637  *
1638  * @since 1.7
1639  *
1640  * @ingroup Selection
1641  *
1642  * @see elm_config_selection_unfocused_clear_get()
1643  *
1644  * @if MOBILE @since_tizen 2.3
1645  * @elseif WEARABLE @since_tizen 2.3.1
1646  * @endif
1647  */
1648 EAPI void             elm_config_selection_unfocused_clear_set(Eina_Bool enabled);
1649
1650 /**
1651  * Unset a font overlay for a given Elementary text class.
1652  *
1653  * @param text_class Text class name
1654  *
1655  * @ingroup Elm_Fonts
1656  *
1657  * This will bring back text elements belonging to text class
1658  * @p text_class back to their default font settings.
1659  *
1660  * @if MOBILE @since_tizen 2.3
1661  * @elseif WEARABLE @since_tizen 2.3.1
1662  * @endif
1663  */
1664 EAPI void             elm_config_font_overlay_unset(const char *text_class);
1665
1666 /**
1667  * Apply the changes made with elm_config_font_overlay_set() and
1668  * elm_config_font_overlay_unset() on the current Elementary window.
1669  *
1670  * @ingroup Elm_Fonts
1671  *
1672  * This applies all font overlays set to all objects in the UI.
1673  *
1674  * @if MOBILE @since_tizen 2.3
1675  * @elseif WEARABLE @since_tizen 2.3.1
1676  * @endif
1677  */
1678 EAPI void             elm_config_font_overlay_apply(void);
1679
1680 /**
1681  * Apply the specified font hinting type.
1682  * EVAS_FONT_HINTING_NONE < No font hinting
1683  * EVAS_FONT_HINTING_AUTO < Automatic font hinting
1684  * EVAS_FONT_HINTING_BYTECODE < Bytecode font hinting
1685  *
1686  * @ingroup Elm_Fonts
1687  *
1688  * This applies font hint changes to all windows of the current application.
1689  *
1690  * @since 1.13
1691  *
1692  * @if MOBILE @since_tizen 3.0
1693  * @elseif WEARABLE @since_tizen 3.0
1694  * @endif
1695  */
1696 EAPI void elm_config_font_hint_type_set(int type);
1697
1698 /**
1699  * Get the configured "finger size"
1700  *
1701  * @return The finger size
1702  *
1703  * This gets the globally configured finger size, <b>in pixels</b>
1704  *
1705  * @ingroup Elm_Fingers
1706  *
1707  * @if MOBILE @since_tizen 2.3
1708  * @elseif WEARABLE @since_tizen 2.3.1
1709  * @endif
1710  */
1711 EAPI Evas_Coord elm_config_finger_size_get(void);
1712
1713 /**
1714  * Set the configured finger size
1715  *
1716  * This sets the globally configured finger size in pixels
1717  *
1718  * @param size The finger size
1719  * @ingroup Elm_Fingers
1720  *
1721  * @if MOBILE @since_tizen 2.3
1722  * @elseif WEARABLE @since_tizen 2.3.1
1723  * @endif
1724  */
1725 EAPI void       elm_config_finger_size_set(Evas_Coord size);
1726
1727 /**
1728  * Get the configured cache flush interval time
1729  *
1730  * This gets the globally configured cache flush interval time, in
1731  * ticks
1732  *
1733  * @return The cache flush interval time
1734  * @ingroup Elm_Caches
1735  *
1736  * @see elm_cache_all_flush()
1737  *
1738  * @if MOBILE @since_tizen 2.3
1739  * @elseif WEARABLE @since_tizen 2.3.1
1740  * @endif
1741  */
1742 EAPI int       elm_config_cache_flush_interval_get(void);
1743
1744 /**
1745  * Set the configured cache flush interval time
1746  *
1747  * This sets the globally configured cache flush interval time, in ticks
1748  *
1749  * @param size The cache flush interval time
1750  *
1751  * @note The @p size must be greater than 0. if not, the cache flush will be
1752  *       ignored.
1753  *
1754  * @ingroup Elm_Caches
1755  *
1756  * @see elm_cache_all_flush()
1757  *
1758  * @if MOBILE @since_tizen 2.3
1759  * @elseif WEARABLE @since_tizen 2.3.1
1760  * @endif
1761  */
1762 EAPI void      elm_config_cache_flush_interval_set(int size);
1763
1764 /**
1765  * Get the configured cache flush enabled state
1766  *
1767  * This gets the globally configured cache flush state - if it is enabled
1768  * or not. When cache flushing is enabled, elementary will regularly
1769  * (see elm_config_cache_flush_interval_get() ) flush caches and dump data out of
1770  * memory and allow usage to re-seed caches and data in memory where it
1771  * can do so. An idle application will thus minimize its memory usage as
1772  * data will be freed from memory and not be re-loaded as it is idle and
1773  * not rendering or doing anything graphically right now.
1774  *
1775  * @return The cache flush state
1776  * @ingroup Elm_Caches
1777  *
1778  * @see elm_cache_all_flush()
1779  *
1780  * @if MOBILE @since_tizen 2.3
1781  * @elseif WEARABLE @since_tizen 2.3.1
1782  * @endif
1783  */
1784 EAPI Eina_Bool elm_config_cache_flush_enabled_get(void);
1785
1786 /**
1787  * Set the configured cache flush enabled state
1788  *
1789  * This sets the globally configured cache flush enabled state.
1790  *
1791  * @param enabled The cache flush enabled state
1792  * @ingroup Elm_Caches
1793  *
1794  * @see elm_cache_all_flush()
1795  *
1796  * @if MOBILE @since_tizen 2.3
1797  * @elseif WEARABLE @since_tizen 2.3.1
1798  * @endif
1799  */
1800 EAPI void      elm_config_cache_flush_enabled_set(Eina_Bool enabled);
1801
1802 /**
1803  * Get the configured font cache size
1804  *
1805  * This gets the globally configured font cache size, in kilo bytes.
1806  *
1807  * @return The font cache size
1808  * @ingroup Elm_Caches
1809  *
1810  * @if MOBILE @since_tizen 2.3
1811  * @elseif WEARABLE @since_tizen 2.3.1
1812  * @endif
1813  */
1814 EAPI int       elm_config_cache_font_cache_size_get(void);
1815
1816 /**
1817  * Set the configured font cache size
1818  *
1819  * This sets the globally configured font cache size, in kilo bytes
1820  *
1821  * @param size The font cache size
1822  * @ingroup Elm_Caches
1823  *
1824  * @if MOBILE @since_tizen 2.3
1825  * @elseif WEARABLE @since_tizen 2.3.1
1826  * @endif
1827  */
1828 EAPI void      elm_config_cache_font_cache_size_set(int size);
1829
1830 /**
1831  * Get the configured image cache size
1832  *
1833  * This gets the globally configured image cache size, in kilo bytes
1834  *
1835  * @return The image cache size
1836  * @ingroup Elm_Caches
1837  *
1838  * @if MOBILE @since_tizen 2.3
1839  * @elseif WEARABLE @since_tizen 2.3.1
1840  * @endif
1841  */
1842 EAPI int       elm_config_cache_image_cache_size_get(void);
1843
1844 /**
1845  * Set the configured image cache size
1846  *
1847  * This sets the globally configured image cache size, in kilo bytes
1848  *
1849  * @param size The image cache size
1850  * @ingroup Elm_Caches
1851  *
1852  * @if MOBILE @since_tizen 2.3
1853  * @elseif WEARABLE @since_tizen 2.3.1
1854  * @endif
1855  */
1856 EAPI void       elm_config_cache_image_cache_size_set(int size);
1857
1858 /**
1859  * Get the configured edje file cache size.
1860  *
1861  * This gets the globally configured edje file cache size, in number
1862  * of files.
1863  *
1864  * @return The edje file cache size
1865  * @ingroup Elm_Caches
1866  *
1867  * @if MOBILE @since_tizen 2.3
1868  * @elseif WEARABLE @since_tizen 2.3.1
1869  * @endif
1870  */
1871 EAPI int       elm_config_cache_edje_file_cache_size_get(void);
1872
1873 /**
1874  * Set the configured edje file cache size
1875  *
1876  * This sets the globally configured edje file cache size, in number
1877  * of files.
1878  *
1879  * @param size The edje file cache size
1880  * @ingroup Elm_Caches
1881  *
1882  * @if MOBILE @since_tizen 2.3
1883  * @elseif WEARABLE @since_tizen 2.3.1
1884  * @endif
1885  */
1886 EAPI void       elm_config_cache_edje_file_cache_size_set(int size);
1887
1888 /**
1889  * Get the configured edje collections (groups) cache size.
1890  *
1891  * This gets the globally configured edje collections cache size, in
1892  * number of collections.
1893  *
1894  * @return The edje collections cache size
1895  * @ingroup Elm_Caches
1896  *
1897  * @if MOBILE @since_tizen 2.3
1898  * @elseif WEARABLE @since_tizen 2.3.1
1899  * @endif
1900  */
1901 EAPI int       elm_config_cache_edje_collection_cache_size_get(void);
1902
1903 /**
1904  * Set the configured edje collections (groups) cache size
1905  *
1906  * This sets the globally configured edje collections cache size, in
1907  * number of collections.
1908  *
1909  * @param size The edje collections cache size
1910  * @ingroup Elm_Caches
1911  *
1912  * @if MOBILE @since_tizen 2.3
1913  * @elseif WEARABLE @since_tizen 2.3.1
1914  * @endif
1915  */
1916 EAPI void       elm_config_cache_edje_collection_cache_size_set(int size);
1917
1918 /**
1919  * Get the configured vsync flag
1920  *
1921  * This gets the globally configured vsync flag that asks some backend
1922  * engines to use vsync display if possible.
1923  *
1924  * @return If vsync is enabled
1925  *
1926  * @since 1.11
1927  *
1928  * @if MOBILE @since_tizen 3.0
1929  * @elseif WEARABLE @since_tizen 3.0
1930  * @endif
1931  */
1932 EAPI Eina_Bool  elm_config_vsync_get(void);
1933
1934 /**
1935  * Set the configured vsync flag
1936  *
1937  * This sets the globally configured vsync flag that asks some backend
1938  * engines to use vsync display if possible.
1939  *
1940  * @param enabled This should be @c EINA_TRUE if enabled, or @c EINA_FALSE if
1941  * not.
1942  *
1943  * @since 1.11
1944  *
1945  * @if MOBILE @since_tizen 3.0
1946  * @elseif WEARABLE @since_tizen 3.0
1947  * @endif
1948  */
1949 EAPI void       elm_config_vsync_set(Eina_Bool enabled);
1950
1951 /**
1952  * Get the acceleration override preference flag
1953  *
1954  * This gets the acceleration override preference. This is a flag that
1955  * has the global system acceleration preference configuration forcibly
1956  * override whatever acceleration preference the application may want.
1957  *
1958  * @return If acceleration override is enabled
1959  *
1960  * @since 1.11
1961  *
1962  * @if MOBILE @since_tizen 2.3
1963  * @elseif WEARABLE @since_tizen 2.3.1
1964  * @endif
1965  */
1966 EAPI Eina_Bool  elm_config_accel_preference_override_get(void);
1967
1968 /**
1969  * Set the acceleration override preference flag
1970  *
1971  * This sets the acceleration override preference. This is a flag that
1972  * has the global system acceleration preference configuration forcibly
1973  * override whatever acceleration preference the application may want.
1974  *
1975  * @param enabled This should be @c EINA_TRUE if enabled, or @c EINA_FALSE if
1976  * not.
1977  *
1978  * @see elm_config_accel_preference_set()
1979  *
1980  * @since 1.11
1981  *
1982  * @if MOBILE @since_tizen 2.3
1983  * @elseif WEARABLE @since_tizen 2.3.1
1984  * @endif
1985  */
1986 EAPI void       elm_config_accel_preference_override_set(Eina_Bool enabled);
1987
1988 /**
1989  * Get the enable status of the focus highlight
1990  *
1991  * This gets whether the highlight on focused objects is enabled or not
1992  *
1993  * @return enable @c EINA_TRUE if the focus highlight is enabled, @c EINA_FALSE
1994  * otherwise.
1995  *
1996  * @see elm_config_focus_highlight_enabled_set()
1997  * @ingroup Elm_Focus
1998  *
1999  * @if MOBILE @since_tizen 2.3
2000  * @elseif WEARABLE @since_tizen 2.3.1
2001  * @endif
2002  */
2003 EAPI Eina_Bool            elm_config_focus_highlight_enabled_get(void);
2004
2005 /**
2006  * Set the enable status of the focus highlight
2007  *
2008  * @param enable Enable highlight if @c EINA_TRUE, disable otherwise
2009  *
2010  * Set whether to show or not the highlight on focused objects
2011  *
2012  * Note that it will take effect only to Elementary windows created after
2013  * this is called.
2014  *
2015  * @see elm_config_focus_highlight_enabled_get()
2016  * @ingroup Elm_Focus
2017  *
2018  * @if MOBILE @since_tizen 2.3
2019  * @elseif WEARABLE @since_tizen 2.3.1
2020  * @endif
2021  */
2022 EAPI void                 elm_config_focus_highlight_enabled_set(Eina_Bool enable);
2023
2024 /**
2025  * Get the enable status of the focus highlight animation
2026  *
2027  * @return animate @c EINA_TRUE if the focus highlight animation is enabled, @c
2028  * EINA_FALSE otherwise.
2029  *
2030  * Get whether the focus highlight, if enabled, will animate its switch from
2031  * one object to the next
2032  *
2033  * @see elm_config_focus_highlight_animate_set()
2034  * @ingroup Elm_Focus
2035  *
2036  * @if MOBILE @since_tizen 2.3
2037  * @elseif WEARABLE @since_tizen 2.3.1
2038  * @endif
2039  */
2040 EAPI Eina_Bool            elm_config_focus_highlight_animate_get(void);
2041
2042 /**
2043  * Set the enable status of the highlight animation
2044  *
2045  * @param animate Enable animation if @c EINA_TRUE, disable otherwise
2046  *
2047  * Set whether the focus highlight, if enabled, will animate its switch from
2048  * one object to the next
2049  *
2050  * Note that it will take effect only to Elementary windows created after
2051  * this is called.
2052  *
2053  * @see elm_config_focus_highlight_animate_get()
2054  * @ingroup Elm_Focus
2055  *
2056  * @if MOBILE @since_tizen 2.3
2057  * @elseif WEARABLE @since_tizen 2.3.1
2058  * @endif
2059  */
2060 EAPI void                 elm_config_focus_highlight_animate_set(Eina_Bool animate);
2061
2062 /**
2063  * Get the disable status of the focus highlight clip feature.
2064  *
2065  * @return The focus highlight clip disable status
2066  *
2067  * Get whether the focus highlight clip feature is disabled. If disabled return
2068  * @c EINA_TRUE, else return @c EINA_FALSE. If the return is @c EINA_TRUE, focus
2069  * highlight clip feature is not disabled so the focus highlight can be clipped.
2070  *
2071  * @see elm_config_focus_highlight_clip_disabled_set()
2072  * @since 1.10
2073  * @ingroup Elm_Focus
2074  *
2075  * @if MOBILE @since_tizen 3.0
2076  * @elseif WEARABLE @since_tizen 3.0
2077  * @endif
2078  */
2079 EAPI Eina_Bool elm_config_focus_highlight_clip_disabled_get(void);
2080
2081 /**
2082  * Set the disable status of the focus highlight clip feature.
2083  *
2084  * @param disable Disable focus highlight clip feature if @c EINA_TRUE, enable
2085  * it otherwise.
2086  *
2087  * @see elm_config_focus_highlight_clip_disabled_get()
2088  * @since 1.10
2089  * @ingroup Elm_Focus
2090  *
2091  * @if MOBILE @since_tizen 3.0
2092  * @elseif WEARABLE @since_tizen 3.0
2093  * @endif
2094  */
2095 EAPI void elm_config_focus_highlight_clip_disabled_set(Eina_Bool disable);
2096
2097 /**
2098  * Focus Movement Policy
2099  *
2100  * @since 1.10
2101  * @ingroup Elm_Focus
2102  */
2103 typedef enum
2104 {
2105    ELM_FOCUS_MOVE_POLICY_CLICK, /**< move focus by mouse click or touch. Elementary focus is set on mouse click and this is checked at mouse up time. (default) */
2106    ELM_FOCUS_MOVE_POLICY_IN, /**< move focus by mouse in. Elementary focus is set on mouse move when the mouse pointer is moved into an object. */
2107    ELM_FOCUS_MOVE_POLICY_KEY_ONLY /**< move focus by key. Elementary focus is set on key input like Left, Right, Up, Down, Tab, or Shift+Tab.*/
2108 } Elm_Focus_Move_Policy;
2109
2110 /**
2111  * Get the focus movement policy
2112  *
2113  * @return The focus movement policy
2114  *
2115  * Get how the focus is moved to another object. It can be
2116  * #ELM_FOCUS_MOVE_POLICY_CLICK or #ELM_FOCUS_MOVE_POLICY_IN. The first means
2117  * elementary focus is moved on elementary object click. The second means
2118  * elementary focus is moved on elementary object mouse in.
2119  *
2120  * @see elm_config_focus_move_policy_set()
2121  * @since 1.10
2122  * @ingroup Elm_Focus
2123  *
2124  * @if MOBILE @since_tizen 3.0
2125  * @elseif WEARABLE @since_tizen 3.0
2126  * @endif
2127  */
2128 EAPI Elm_Focus_Move_Policy elm_config_focus_move_policy_get(void);
2129
2130 /**
2131  * Set elementary focus movement policy
2132  *
2133  * @param policy A policy to apply for the focus movement
2134  *
2135  * @see elm_config_focus_move_policy_get()
2136  * @since 1.10
2137  * @ingroup Elm_Focus
2138  *
2139  * @if MOBILE @since_tizen 3.0
2140  * @elseif WEARABLE @since_tizen 3.0
2141  * @endif
2142  */
2143 EAPI void elm_config_focus_move_policy_set(Elm_Focus_Move_Policy policy);
2144
2145 /**
2146  * Get disable status of item select on focus feature.
2147  *
2148  * @return The item select on focus disable status
2149  *
2150  * @see elm_config_item_select_on_focus_disabled_set
2151  * @since 1.10
2152  * @ingroup Elm_Focus
2153  *
2154  * @if MOBILE @since_tizen 3.0
2155  * @elseif WEARABLE @since_tizen 3.0
2156  * @endif
2157  */
2158 EAPI Eina_Bool elm_config_item_select_on_focus_disabled_get(void);
2159
2160 /**
2161  * Set the disable status of the item select on focus feature.
2162  *
2163  * @param disabled Disable item select on focus if @c EINA_TRUE, enable otherwise
2164  *
2165  * @see elm_config_item_select_on_focus_disabled_get
2166  * @since 1.10
2167  * @ingroup Elm_Focus
2168  *
2169  * @if MOBILE @since_tizen 3.0
2170  * @elseif WEARABLE @since_tizen 3.0
2171  * @endif
2172  */
2173 EAPI void elm_config_item_select_on_focus_disabled_set(Eina_Bool disabled);
2174
2175 /**
2176  * Get status of first item focus on first focusin feature.
2177  *
2178  * @return The first item focus on first focusin status
2179  *
2180  * @see elm_config_first_item_focus_on_first_focusin_set
2181  * @since 1.11
2182  * @ingroup Elm_Focus
2183  *
2184  * @if MOBILE @since_tizen 3.0
2185  * @elseif WEARABLE @since_tizen 3.0
2186  * @endif
2187  */
2188 EAPI Eina_Bool elm_config_first_item_focus_on_first_focusin_get(void);
2189
2190 /**
2191  * Set the first item focus on first focusin feature.
2192  *
2193  * @param enabled first_item_focus_on_first_focusin if @c EINA_TRUE, enable otherwise
2194  *
2195  * @see elm_config_first_item_focus_on_first_focusin_get
2196  * @since 1.11
2197  * @ingroup Elm_Focus
2198  *
2199  * @if MOBILE @since_tizen 3.0
2200  * @elseif WEARABLE @since_tizen 3.0
2201  * @endif
2202  */
2203 EAPI void elm_config_first_item_focus_on_first_focusin_set(Eina_Bool enabled);
2204
2205 /**
2206  * Get the system mirrored mode. This determines the default mirrored mode
2207  * of widgets.
2208  *
2209  * @return @c EINA_TRUE if mirrored is set, @c EINA_FALSE otherwise
2210  *
2211  * @if MOBILE @since_tizen 2.3
2212  * @elseif WEARABLE @since_tizen 2.3.1
2213  * @endif
2214  */
2215 EAPI Eina_Bool elm_config_mirrored_get(void);
2216
2217 /**
2218  * Set the system mirrored mode. This determines the default mirrored mode
2219  * of widgets.
2220  *
2221  * @param mirrored @c EINA_TRUE to set mirrored mode, @c EINA_FALSE to unset it.
2222  *
2223  * @if MOBILE @since_tizen 2.3
2224  * @elseif WEARABLE @since_tizen 2.3.1
2225  * @endif
2226  */
2227 EAPI void      elm_config_mirrored_set(Eina_Bool mirrored);
2228
2229 // TIZEN_ONLY(20161202): Getter and setter of auto mirroring config
2230 /**
2231  * Get the system auto mirrored mode.
2232  * This determines whether the mirrored mode is determined automatically by the locale or not.
2233  *
2234  * @return @c EINA_TRUE if mirrored is set, @c EINA_FALSE otherwise
2235  *
2236  * @since_tizen 4.0
2237  */
2238 EAPI Eina_Bool elm_config_language_auto_mirrored_get(void);
2239
2240 /**
2241  * Set the system auto mirrored mode.
2242  * This determines whether the mirrored mode is determined automatically by the locale or not.
2243  *
2244  * @param mirrored @c EINA_TRUE to set auto mirrored mode, @c EINA_FALSE to unset it.
2245  *
2246  * @since_tizen 4.0
2247  */
2248 EAPI void      elm_config_language_auto_mirrored_set(Eina_Bool auto_mirrored);
2249 //
2250
2251 /**
2252  * @internal
2253  *
2254  * Get the clouseau state. @c EINA_TRUE if clouseau was tried to be run.
2255  *
2256  * @since 1.8
2257  * @return @c EINA_TRUE if clouseau was tried to run, @c EINA_FALSE otherwise
2258  */
2259 EAPI Eina_Bool elm_config_clouseau_enabled_get(void);
2260
2261 /**
2262  * @internal
2263  *
2264  * Get the clouseau state. @c EINA_TRUE if clouseau should be attempted to be run.
2265  *
2266  * @since 1.8
2267  * @param enabled @c EINA_TRUE to try and run clouseau, @c EINA_FALSE otherwise.
2268  */
2269 EAPI void      elm_config_clouseau_enabled_set(Eina_Bool enabled);
2270
2271 /**
2272  * Get the indicator service name according to the rotation degree.
2273  *
2274  * @param rotation The rotation which related with the indicator service name,
2275  * in degrees (0-360),
2276  *
2277  * @return The indicator service name according to the rotation degree. The
2278  * indicator service name can be either @c "elm_indicator_portrait" or
2279  * @c "elm_indicator_landscape".
2280  *
2281  * @note Do not free the return string.
2282  *
2283  * @if MOBILE @since_tizen 2.3
2284  * @elseif WEARABLE @since_tizen 2.3.1
2285  * @endif
2286  */
2287 EAPI const char *elm_config_indicator_service_get(int rotation);
2288
2289 /**
2290  * Get the duration for occurring long tap event of gesture layer.
2291  *
2292  * @return Timeout for long tap event of gesture layer.
2293  * @ingroup Elm_Gesture_Layer
2294  * @since 1.8
2295  *
2296  * @if MOBILE @since_tizen 2.3
2297  * @elseif WEARABLE @since_tizen 2.3.1
2298  * @endif
2299  */
2300 EAPI double   elm_config_glayer_long_tap_start_timeout_get(void);
2301
2302 /**
2303  * Set the duration for occurring long tap event of gesture layer.
2304  *
2305  * @param long_tap_timeout Timeout for long tap event of gesture layer.
2306  * @ingroup Elm_Gesture_Layer
2307  * @since 1.8
2308  *
2309  * @if MOBILE @since_tizen 2.3
2310  * @elseif WEARABLE @since_tizen 2.3.1
2311  * @endif
2312  */
2313 EAPI void   elm_config_glayer_long_tap_start_timeout_set(double long_tap_timeout);
2314
2315 /**
2316  * Get the duration for occurring double tap event of gesture layer.
2317  *
2318  * @return Timeout for double tap event of gesture layer.
2319  * @ingroup Elm_Gesture_Layer
2320  * @since 1.8
2321  *
2322  * @if MOBILE @since_tizen 2.3
2323  * @elseif WEARABLE @since_tizen 2.3.1
2324  * @endif
2325  */
2326 EAPI double   elm_config_glayer_double_tap_timeout_get(void);
2327
2328 /**
2329  * Set the duration for occurring double tap event of gesture layer.
2330  *
2331  * @param double_tap_timeout Timeout for double tap event of gesture layer.
2332  * @ingroup Elm_Gesture_Layer
2333  * @since 1.8
2334  *
2335  * @if MOBILE @since_tizen 2.3
2336  * @elseif WEARABLE @since_tizen 2.3.1
2337  * @endif
2338  */
2339 EAPI void   elm_config_glayer_double_tap_timeout_set(double double_tap_timeout);
2340
2341 typedef struct _Elm_Color_Class
2342 {
2343    const char *name;
2344    const char *desc;
2345 } Elm_Color_Class;
2346
2347 typedef struct _Elm_Color_Overlay
2348 {
2349    const char *color_class;
2350    struct {
2351       unsigned char r, g, b, a;
2352    } color, outline, shadow;
2353 } Elm_Color_Overlay;
2354
2355 /**
2356  * Get Elementary's list of supported color classes.
2357  *
2358  * @return The color classes list, with @c Elm_Color_Class blobs as data.
2359  * @ingroup Colors
2360  * @since 1.10
2361  *
2362  * Release the list with elm_color_classes_list_free().
2363  *
2364  * @if MOBILE @since_tizen 2.3
2365  * @elseif WEARABLE @since_tizen 2.3.1
2366  * @endif
2367  */
2368 EAPI Eina_List *elm_config_color_classes_list_get(void);
2369
2370 /**
2371  * Free Elementary's list of supported color classes.
2372  *
2373  * @ingroup Colors
2374  * @since 1.10
2375  *
2376  * @see elm_config_color_classes_list_get().
2377  *
2378  * @if MOBILE @since_tizen 2.3
2379  * @elseif WEARABLE @since_tizen 2.3.1
2380  * @endif
2381  */
2382 EAPI void      elm_config_color_classes_list_free(Eina_List *list);
2383
2384 /**
2385  * Get Elementary's list of color overlays, set with
2386  * elm_config_color_overlay_set().
2387  *
2388  * @return The color overlays list, with @c Elm_Color_Overlay blobs as
2389  * data.
2390  *
2391  * @ingroup Colors
2392  * @since 1.10
2393  *
2394  * For each color class, one can set a <b>color overlay</b> for it,
2395  * overriding the default color properties for that class coming from
2396  * the theme in use. There is no need to free this list.
2397  *
2398  * @see elm_config_color_overlay_set()
2399  * @see elm_config_color_overlay_unset().
2400  *
2401  * @if MOBILE @since_tizen 2.3
2402  * @elseif WEARABLE @since_tizen 2.3.1
2403  * @endif
2404  */
2405 EAPI const Eina_List *elm_config_color_overlay_list_get(void);
2406
2407 /**
2408  * Set a color overlay for a given Elementary color class.
2409  *
2410  * @param color_class Color class name
2411  * @param r Object Red value
2412  * @param g Object Green value
2413  * @param b Object Blue value
2414  * @param a Object Alpha value
2415  * @param r2 Text outline Red value
2416  * @param g2 Text outline Green value
2417  * @param b2 Text outline Blue value
2418  * @param a2 Text outline Alpha value
2419  * @param r3 Text shadow Red value
2420  * @param g3 Text shadow Green value
2421  * @param b3 Text shadow Blue value
2422  * @param a3 Text shadow Alpha value
2423  *
2424  * @ingroup Colors
2425  * @since 1.10
2426
2427  * The first color is for the object itself, the second color is for the text
2428  * outline, and the third color is for the text shadow.
2429  *
2430  * @note The second two color are only for texts.
2431
2432  * Setting color emits a signal "color_class,set" with source being
2433  * the given color class in all edje objects.
2434  *
2435  * @see elm_config_color_overlay_list_get()
2436  * @see elm_config_color_overlay_unset()
2437  * @see edje_color_class_set()
2438
2439  * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
2440  *       half-transparent white is 255 255 255 128.
2441  *
2442  * @if MOBILE @since_tizen 2.3
2443  * @elseif WEARABLE @since_tizen 2.3.1
2444  * @endif
2445  */
2446 EAPI void      elm_config_color_overlay_set(const char *color_class,
2447                                             int r, int g, int b, int a,
2448                                             int r2, int g2, int b2, int a2,
2449                                             int r3, int g3, int b3, int a3);
2450
2451 /**
2452  * Unset a color overlay for a given Elementary color class.
2453  *
2454  * @param color_class Color class name
2455  *
2456  * @ingroup Colors
2457  * @since 1.10
2458  *
2459  * This will bring back color elements belonging to color class
2460  * @p color_class back to their default color settings.
2461  *
2462  * @if MOBILE @since_tizen 2.3
2463  * @elseif WEARABLE @since_tizen 2.3.1
2464  * @endif
2465  */
2466 EAPI void      elm_config_color_overlay_unset(const char *color_class);
2467
2468 /**
2469  * Apply the changes made with elm_config_color_overlay_set() and
2470  * elm_config_color_overlay_unset() on the current Elementary window.
2471  *
2472  * @ingroup Colors
2473  * @since 1.10
2474  *
2475  * This applies all color overlays set to all objects in the UI.
2476  *
2477  * @if MOBILE @since_tizen 2.3
2478  * @elseif WEARABLE @since_tizen 2.3.1
2479  * @endif
2480  */
2481 EAPI void      elm_config_color_overlay_apply(void);
2482
2483 /**
2484  * @internal
2485  *
2486  * Get the magnifier enabled state for entries
2487  *
2488  * @return The enabled state for magnifier
2489  * @since 1.9
2490  */
2491 EAPI Eina_Bool elm_config_magnifier_enable_get(void);
2492
2493 /**
2494  * @internal
2495  *
2496  * Set the magnifier enabled state for entires
2497  *
2498  * @param enable The magnifier config state
2499  * @since 1.9
2500  */
2501 EAPI void      elm_config_magnifier_enable_set(Eina_Bool enable);
2502
2503 /**
2504  * @internal
2505  *
2506  * Get the amount of scaling the magnifer does
2507  *
2508  * @return The scaling amount (1.0 is none, 2.0 is twice as big etc.)
2509  * @since 1.9
2510  */
2511 EAPI double    elm_config_magnifier_scale_get(void);
2512
2513 /**
2514  * @internal
2515  *
2516  * Set the amount of scaling the magnifier does
2517  *
2518  * @param scale The scaling amount for magnifiers
2519  * @since 1.9
2520  */
2521 EAPI void      elm_config_magnifier_scale_set(double scale);
2522
2523 /**
2524  * @internal
2525  *
2526  * Get the mute state of an audio channel for effects
2527  *
2528  * @param channel The channel to get the mute state of
2529  * @return The mute state
2530  * @since 1.9
2531  */
2532 EAPI Eina_Bool elm_config_audio_mute_get(Edje_Channel channel);
2533
2534 /**
2535  * @internal
2536  *
2537  * Set the mute state of the specified channel
2538  *
2539  * @param channel The channel to set the mute state of
2540  * @param mute The mute state to set
2541  * @since 1.9
2542  */
2543 EAPI void      elm_config_audio_mute_set(Edje_Channel channel, Eina_Bool mute);
2544
2545 /**
2546  * Get the auto focus enable flag
2547  *
2548  * This determines if elementary will show a focus box indicating the focused
2549  * widget automatically if keyboard controls like "Tab" are used to switch
2550  * focus between widgets. Mouse or touch control will hide this auto shown
2551  * focus, unless focus display has been expliccitly forced on for the window.
2552  *
2553  * @return The enabled state for auto focus display
2554  * @since 1.14
2555  *
2556  * @if MOBILE @since_tizen 3.0
2557  * @elseif WEARABLE @since_tizen 3.0
2558  * @endif
2559  */
2560 EAPI Eina_Bool elm_config_window_auto_focus_enable_get(void);
2561
2562 /**
2563  * Set the auto focus enabled state
2564  *
2565  * This determines if elementary will show a focus box indicating the focused
2566  * widget automatically if keyboard controls like "Tab" are used to switch
2567  * focus between widgets. Mouse or touch control will hide this auto shown
2568  * focus, unless focus display has been expliccitly forced on for the window.
2569  *
2570  * @param enable the auto focus display enabled state
2571  * @since 1.14
2572  *
2573  * @if MOBILE @since_tizen 3.0
2574  * @elseif WEARABLE @since_tizen 3.0
2575  * @endif
2576  */
2577 EAPI void      elm_config_window_auto_focus_enable_set(Eina_Bool enable);
2578
2579 /**
2580  * Get the auto focus animate flag
2581  *
2582  * If auto focus - see elm_config_window_auto_focus_enable_set() , is enabled
2583  * then this will determine if the focus display will be animated or not.
2584  *
2585  * @return The enabled state for auto focus animation
2586  * @since 1.14
2587  *
2588  * @if MOBILE @since_tizen 3.0
2589  * @elseif WEARABLE @since_tizen 3.0
2590  * @endif
2591  */
2592 EAPI Eina_Bool elm_config_window_auto_focus_animate_get(void);
2593
2594 /**
2595  * Set the auto focus animation flag
2596  *
2597  * If auto focus - see elm_config_window_auto_focus_enable_set() , is enabled
2598  * then this will determine if the focus display will be animated or not.
2599  *
2600  * @param enable the auto focus animation state
2601  * @since 1.14
2602  *
2603  * @if MOBILE @since_tizen 3.0
2604  * @elseif WEARABLE @since_tizen 3.0
2605  * @endif
2606  */
2607 EAPI void      elm_config_window_auto_focus_animate_set(Eina_Bool enable);
2608
2609 /**
2610  * Get the popup scrollable flag
2611  *
2612  * If scrollable is true, popup's contents is wrapped in a scroller container
2613  * in order to popup shouldn't be larger than its parent.
2614  *
2615  * @return The enabled state for popup scroll
2616  * @since 1.18
2617  */
2618 EAPI Eina_Bool elm_config_popup_scrollable_get(void);
2619
2620 /**
2621  * Set the popup scrollable flag
2622  *
2623  * If scrollable is true, popup's contents is wrapped in a scroller container
2624  * in order to popup shouldn't be larger than its parent.
2625  *
2626  * @param enable the popup scroll
2627  * @since 1.18
2628  */
2629 EAPI void      elm_config_popup_scrollable_set(Eina_Bool scrollable);
2630
2631 /**
2632  * @defgroup ATSPI AT-SPI2 Accessibility
2633  * @ingroup elm_infra_group
2634  *
2635  * Elementary widgets support Linux Accessibility standard. For more
2636  * information please visit:
2637  * http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus
2638  *
2639  * @{
2640  */
2641
2642 /**
2643  * Gets ATSPI mode
2644  *
2645  * @return the ATSPI mode
2646  *
2647  * @since 1.10
2648  *
2649  * @ingroup ATSPI
2650  *
2651  * @see elm_config_atspi_mode_set()
2652  *
2653  * @if MOBILE @since_tizen 3.0
2654  * @elseif WEARABLE @since_tizen 3.0
2655  * @endif
2656  */
2657 EAPI Eina_Bool        elm_config_atspi_mode_get(void);
2658
2659 /**
2660  * Sets ATSPI mode
2661  *
2662  * @param is_atspi If @c EINA_TRUE, enables ATSPI2 mode
2663  *
2664  * @note Enables Linux Accessibility support for Elementary widgets.
2665  *
2666  * @since 1.10
2667  *
2668  * @ingroup ATSPI
2669  *
2670  * @see elm_config_atspi_mode_get()
2671  *
2672  * @if MOBILE @since_tizen 3.0
2673  * @elseif WEARABLE @since_tizen 3.0
2674  * @endif
2675  */
2676 EAPI void             elm_config_atspi_mode_set(Eina_Bool is_atspi);
2677
2678 /**
2679  * @}
2680  */
2681
2682 /**
2683  * Set the transition duration factor
2684  *
2685  * This function sets the edje transition duration factor
2686  * It will affect the duration of edje transitions
2687  *
2688  * @param factor The duration factor for transition in edje
2689  *
2690  * @note This value affect duration of transitions in edje
2691  *
2692  * @since 1.15
2693  *
2694  * @see edje_transition_duration_set() for more details
2695  *
2696  * @if MOBILE @since_tizen 3.0
2697  * @elseif WEARABLE @since_tizen 3.0
2698  * @endif
2699  */
2700 EAPI void elm_config_transition_duration_factor_set(double factor);
2701
2702 /**
2703  * Get the duration factor of transitions
2704  *
2705  * @return The duration factor of transition in edje
2706  *
2707  * @since 1.15
2708  *
2709  * @if MOBILE @since_tizen 3.0
2710  * @elseif WEARABLE @since_tizen 3.0
2711  * @endif
2712  */
2713 EAPI double elm_config_transition_duration_factor_get(void);
2714
2715 /**
2716  * @}
2717  */
2718
2719 /*
2720  * Add backwards compatability implementation for elm_scale_get and elm_scale_set
2721  * to allow running unmodified Tizen applications on a new drop of elementary
2722  */
2723 EAPI double elm_scale_get(void);
2724 EAPI void   elm_scale_set(double scale);
2725 EAPI Evas_Coord elm_finger_size_get(void);
2726 EAPI void       elm_finger_size_set(Evas_Coord size);