[gesture_layer] opensource merge (r71200)
[framework/uifw/elementary.git] / src / lib / elc_dayselector.h
1 /**
2  * @defgroup Dayselector Dayselector
3  * @ingroup Elementary
4  *
5  * @image html img/widget/dayselector/preview-00.png
6  * @image latex img/widget/dayselector/preview-00.eps
7  *
8  * @brief <b>Dayselector widget:</b>
9  *
10  *"elm_dayselector" is a day selection widget. It displays all seven days of
11  * the week and allows the user to select multiple days.
12  *
13  * The selection can be toggle by just clicking on the day.
14  *
15  * Dayselector also provides the functionality to check whether a day is
16  * selected or not.
17  *
18  * First day of the week is taken from config settings by default. It can be
19  * altered by using the API elm_dayselector_week_start_set() API.
20  *
21  * APIs are provided for setting the duration of weekend
22  * elm_dayselector_weekend_start_set() and elm_dayselector_weekend_length_set()
23  * does this job.
24  *
25  * Two styles of weekdays and weekends are supported in Dayselector.
26  * Application can emit signals on individual check objects for setting the
27  * weekday, weekend styles.
28  *
29  * Once the weekend start day or weekend length changes, all the weekday &
30  * weekend styles will be reset to default style. It's the application's
31  * responsibility to set the styles again by sending corresponding signals.
32  *
33  * Supported elm_object_item common APIs.
34  *
35  * @li @ref elm_object_part_text_set,
36  * @li @ref elm_object_part_text_get,
37  * @li @ref elm_object_part_content_set,
38  * @li @ref elm_object_part_content_get,
39  * @li @ref elm_object_part_content_unset
40  *
41  * @li "day0" indicates Sunday, "day1" indicates Monday etc. continues and so,
42  * "day6" indicates the Saturday part name.
43  *
44  * Application can change individual day display string by using the API
45  * elm_object_part_text_set().
46  *
47  * elm_object_part_content_set() API sets the individual day object only if
48  * the passed one is a Check widget.
49  *
50  * Check object representing a day can be set/get by the application by using
51  * the elm_object_part_content_set/get APIs thus providing a way to handle
52  * the different check styles for individual days.
53  *
54  * The widget emits the following signals:
55  * @li "dayselector,changed" - when the user changes the state of a day.
56  * @li "language,changed" - the program's language changed
57  *
58  * Available styles for dayselector are:
59  * @li default
60  *
61  * This example shows the usage of the widget.
62  * @li @ref dayselector_example
63  *
64  */
65
66 /**
67  * @addtogroup Dayselector
68  * @{
69  */
70
71 /**
72  * Identifies the day of the week.
73  * API can call the selection/unselection of day with this as a parameter.
74  *
75  * @see elm_dayselector_day_selected_set()
76  * @see elm_dayselector_day_selected_get()
77  */
78 typedef enum
79 {
80    ELM_DAYSELECTOR_SUN = 0,/**< indicates Sunday */
81    ELM_DAYSELECTOR_MON,    /**< indicates Monday */
82    ELM_DAYSELECTOR_TUE,    /**< indicates Tuesday */
83    ELM_DAYSELECTOR_WED,    /**< indicates Wednesday */
84    ELM_DAYSELECTOR_THU,    /**< indicates Thursday */
85    ELM_DAYSELECTOR_FRI,    /**< indicates Friday */
86    ELM_DAYSELECTOR_SAT,    /**< indicates Saturday */
87    ELM_DAYSELECTOR_MAX     /**< Sentinel value, @b don't use */
88 } Elm_Dayselector_Day;
89
90 /**
91  * Add the dayselector.
92  *
93  * @param parent Parent object
94  * @return New dayselector object or @c NULL, if it cannot be created
95  *
96  * @ingroup Dayselector
97  */
98 EAPI Evas_Object *elm_dayselector_add(Evas_Object *parent);
99
100 /**
101  * Set the state of given Dayselector_Day.
102  *
103  * @param obj Dayselector object
104  * @param day Dayselector_Day that the user want to set state.
105  * @param selected state of the day. @c EINA_TRUE is selected.
106  *
107  * @see Elm_Dayselector_Day
108  * @see elm_dayselector_day_selected_get()
109  *
110  * @ingroup Dayselector
111  */
112 EAPI void   elm_dayselector_day_selected_set(Evas_Object *obj, Elm_Dayselector_Day day, Eina_Bool selected);
113
114 /**
115  * Get the state of given Dayselector_Day.
116  *
117  * @param obj Dayselector object
118  * @param day Dayselector_Day that the user want to know state.
119  * @return @c EINA_TRUE, if the Day is selected
120  *
121  * @see Elm_Dayselector_Day
122  * @see elm_dayselector_day_selected_set()
123  *
124  * @ingroup Dayselector
125  */
126 EAPI Eina_Bool   elm_dayselector_day_selected_get(const Evas_Object *obj, Elm_Dayselector_Day day);
127
128 /**
129  * Set the starting day of Dayselector.
130  *
131  * @param obj Dayselector object
132  * @param day Dayselector_Day the first day that the user wants to display.
133  *
134  * @see Elm_Dayselector_Day
135  * @see elm_dayselector_week_start_get()
136  *
137  * @ingroup Dayselector
138  */
139 EAPI void   elm_dayselector_week_start_set(Evas_Object *obj, Elm_Dayselector_Day day);
140
141 /**
142  * Get the starting day of Dayselector.
143  *
144  * @param obj Dayselector object
145  * @return Day from where Dayselector displays all the weekdays in order.
146  *
147  * @see Elm_Dayselector_Day
148  * @see elm_dayselector_week_start_set()
149  *
150  * @ingroup Dayselector
151  */
152 EAPI Elm_Dayselector_Day   elm_dayselector_week_start_get(const Evas_Object *obj);
153
154 /**
155  * Set the weekend starting day of Dayselector.
156  *
157  * @param obj Dayselector object
158  * @param day Dayselector_Day the first day from where weekend starts.
159  *
160  * @see Elm_Dayselector_Day
161  * @see elm_dayselector_weekend_start_get()
162  *
163  * @ingroup Dayselector
164  */
165 EAPI void   elm_dayselector_weekend_start_set(Evas_Object *obj, Elm_Dayselector_Day day);
166
167 /**
168  * Get the weekend starting day of Dayselector.
169  *
170  * @param obj Dayselector object
171  * @return Elm_Dayselector_Day Day from where weekend starts.
172  *
173  * @see Elm_Dayselector_Day
174  * @see elm_dayselector_weekend_start_set()
175  *
176  * @ingroup Dayselector
177  */
178 EAPI Elm_Dayselector_Day   elm_dayselector_weekend_start_get(const Evas_Object *obj);
179
180 /**
181  * Set the weekend length of Dayselector.
182  *
183  * @param obj Dayselector object
184  * @param length Weekend length, number of days as an integer.
185  *
186  * @see elm_dayselector_weekend_length_get()
187  *
188  * @ingroup Dayselector
189  */
190 EAPI void   elm_dayselector_weekend_length_set(Evas_Object *obj, unsigned int length);
191
192 /**
193  * Get the weekend length of Dayselector.
194  *
195  * @param obj Dayselector object
196  * @return Number of days marked as a weekend.
197  *
198  * @see Elm_Dayselector_Day
199  * @see elm_dayselector_weekend_length_set()
200  *
201  * @ingroup Dayselector
202  */
203 EAPI unsigned int   elm_dayselector_weekend_length_get(const Evas_Object *obj);
204
205 /**
206  * @}
207  */