diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index 8c8f8cf449..d998a60b4e 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -5,8 +5,8 @@ elm_public_eolian_files = \ lib/elementary/efl_ui_widget.eo \ lib/elementary/efl_ui_bg.eo \ lib/elementary/efl_ui_button.eo \ - lib/elementary/efl_ui_calendar.eo \ - lib/elementary/efl_ui_calendar_item.eo \ + lib/elementary/efl_ui_calendar.eo \ + lib/elementary/efl_ui_calendar_item.eo \ lib/elementary/efl_ui_check.eo \ lib/elementary/efl_ui_flip.eo \ lib/elementary/efl_ui_frame.eo \ @@ -188,8 +188,6 @@ elm_legacy_eolian_files = \ lib/elementary/efl_ui_clock_legacy.eo \ lib/elementary/elm_code_widget_legacy.eo \ lib/elementary/elm_interface_fileselector.eo \ - lib/elementary/elm_calendar.eo \ - lib/elementary/elm_calendar_item.eo \ lib/elementary/elm_clock.eo \ lib/elementary/elm_colorselector.eo \ lib/elementary/elm_conformant.eo \ @@ -335,6 +333,9 @@ lib/elementary/elm_box_eo.c \ lib/elementary/elm_box_eo.legacy.c \ lib/elementary/elm_bubble_eo.c \ lib/elementary/elm_bubble_eo.legacy.c \ +lib/elementary/elm_calendar_eo.c \ +lib/elementary/elm_calendar_eo.legacy.c \ +lib/elementary/elm_calendar_item_eo.c \ lib/elementary/elm_hoversel_eo.c \ lib/elementary/elm_hoversel_item_eo.c \ lib/elementary/elm_hoversel_item_eo.legacy.c @@ -391,6 +392,10 @@ lib/elementary/elm_box_eo.h \ lib/elementary/elm_box_eo.legacy.h \ lib/elementary/elm_bubble_eo.h \ lib/elementary/elm_bubble_eo.legacy.h \ +lib/elementary/elm_calendar_eo.h \ +lib/elementary/elm_calendar_eo.legacy.h \ +lib/elementary/elm_calendar_item_eo.h \ +lib/elementary/elm_calendar_item_eo.legacy.h \ lib/elementary/elm_hoversel_eo.h \ lib/elementary/elm_hoversel_eo.legacy.h \ lib/elementary/elm_hoversel_item_eo.h \ diff --git a/src/lib/elementary/elm_calendar.c b/src/lib/elementary/elm_calendar.c index 32a7bb96df..b3c7838408 100644 --- a/src/lib/elementary/elm_calendar.c +++ b/src/lib/elementary/elm_calendar.c @@ -10,8 +10,8 @@ #include #include "elm_priv.h" #include "elm_widget_calendar.h" -#include "elm_calendar.eo.h" -#include "elm_calendar_item.eo.h" +#include "elm_calendar_eo.h" +#include "elm_calendar_item_eo.h" #define MY_CLASS ELM_CALENDAR_CLASS @@ -1929,7 +1929,7 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_calendar, Elm_Calendar_Data) ELM_LAYOUT_SIZING_EVAL_OPS(elm_calendar), \ EFL_CANVAS_GROUP_ADD_DEL_OPS(elm_calendar) -#include "elm_calendar.eo.c" +#include "elm_calendar_eo.c" typedef struct { int v; @@ -1988,4 +1988,4 @@ _elm_calendar_item_efl_ui_focus_object_focus_parent_get(const Eo *obj, Elm_Calen } -#include "elm_calendar_item.eo.c" +#include "elm_calendar_item_eo.c" diff --git a/src/lib/elementary/elm_calendar.eo b/src/lib/elementary/elm_calendar.eo deleted file mode 100644 index ad6e35eae0..0000000000 --- a/src/lib/elementary/elm_calendar.eo +++ /dev/null @@ -1,426 +0,0 @@ -import efl_types; - -type Elm_Calendar_Format_Cb: __undefined_type; [[Elementary calendar format callback type]] - -enum Elm.Calendar.Mark.Repeat.Type -{ - [[Event periodicity, used to define if a mark should be repeated beyond event's day. - - It's set when a mark is added. So, for a mark added to 13th May with periodicity - set to WEEKLY, there will be marks every week after this date. Marks will be - displayed at 13th, 20th, 27th, 3rd June ... - - Values don't work as bitmask, only one can be chosen. See also @Elm.Calendar.mark_add. - ]] - legacy: elm_calendar; - unique, [[Default value. Marks will be displayed only on event day.]] - daily, [[Marks will be displayed every day after event day (inclusive).]] - weekly, [[Marks will be displayed every week after event day (inclusive) - i.e. each seven days.]] - monthly, [[Marks will be displayed every month day that coincides to event day. E.g.: if an event is set to 30th Jan, no marks will be displayed on Feb, but will be displayed on 30th Mar.]] - annually, [[Marks will be displayed every year that coincides to event day (and month). E.g. an event added to 30th Jan 2012 will be repeated on 30th Jan 2013.]] - last_day_of_month, [[Marks will be displayed every last day of month after event day (inclusive). - @since 1.7]] - reverse_daily [[Marks will be displayed every day before event day. @since 1.19]] -} - -enum Elm.Calendar.Weekday -{ - [[A weekday - - See also @Elm.Calendar.first_day_of_week.set. - ]] - legacy: elm_day; - sunday, [[Sunday weekday]] - monday, [[Monday weekday]] - tuesday, [[Tuesday weekday]] - wednesday, [[Wednesday weekday]] - thursday, [[Thursday weekday]] - friday, [[Friday weekday]] - saturday, [[Saturday weekday]] - last [[Sentinel value to indicate last enum field during iteration]] -} - -enum Elm.Calendar.Select.Mode -{ - [[The mode, who determine how user could select a day - - See also @Elm.Calendar.select_mode.set() - ]] - default = 0, [[Default value. A day is always selected.]] - always, [[A day is always selected.]] - none, [[None of the days can be selected.]] - ondemand [[User may have selected a day or not.]] -} - -enum Elm.Calendar.Selectable -{ - [[A bitmask used to define which fields of a $tm struct will be taken into - account, when elm_calendar_selected_time_set() is invoked. - - See also @Elm.Calendar.selectable.set, @Elm.Calendar.selected_time_set. - - @since 1.8 - ]] - none = 0, [[Take no field into account]] - year = (1 << 0), [[Take year field into account]] - month = (1 << 1), [[Take month field into account]] - day = (1 << 2) [[Take day field into account]] -} - -struct Elm.Calendar.Mark; [[Item handle for a calendar mark. - Created with @Elm.Calendar.mark_add and deleted - with @Elm.Calendar.mark_del. - ]] - -class Elm.Calendar extends Efl.Ui.Layout_Base implements Efl.Ui.Focus.Composition, Efl.Access.Widget.Action, - Efl.Ui.Legacy -{ - [[Calendar widget - - It helps applications to flexibly display a calendar with day of the week, - date, year and month. Applications are able to set specific dates to be - reported back, when selected, in the smart callbacks of the calendar widget. - ]] - legacy_prefix: elm_calendar; - eo_prefix: elm_obj_calendar; - event_prefix: elm_calendar; - methods { - @property first_day_of_week { - [[The first day of week to use on calendar widgets'.]] - set { - } - get { - } - values { - day: Elm.Calendar.Weekday; [[Weekday enum value, see @Elm.Calendar.Weekday]] - } - } - @property selectable { - [[Define which fields of a tm struct will be taken into account, when - Elm.Calendar.selected_time.set is invoked. - - By Default the bitmask is set to use all fields of a tm struct (year, - month and day of the month). - - See also @.selected_time_set. - - @since 1.8 - ]] - set { - } - get { - } - values { - selectable: Elm.Calendar.Selectable; [[A bitmask of Elm_Calendar_Selectable]] - } - } - @property interval { - [[The interval on time updates for an user mouse button hold on calendar widgets' - month/year selection. - - This interval value is decreased while the user holds the - mouse pointer either selecting next or previous month/year. - - This helps the user to get to a given month distant from the - current one easier/faster, as it will start to change quicker and - quicker on mouse button holds. - - The calculation for the next change interval value, starting from - the one set with this call, is the previous interval divided by - 1.05, so it decreases a little bit. - - The default starting interval value for automatic changes is - 0.85 seconds. - ]] - set { - } - get { - } - values { - interval: double; [[The (first) interval value in seconds]] - } - } - @property weekdays_names { - [[Weekdays names to be displayed by the calendar. - - By default, weekdays abbreviations get from system are displayed: - E.g. for an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat" - - The first string should be related to Sunday, the second to Monday... - - See also @.weekdays_names.get. - - \@ref calendar_example_02. - \@ref calendar_example_05. - ]] - /* FIXME-doc - * - * The usage should be like this: - * @code - * const char *weekdays[] = - * { - * "Sunday", "Monday", "Tuesday", "Wednesday", - * "Thursday", "Friday", "Saturday" - * }; - * elm_calendar_weekdays_names_set(calendar, weekdays); - * @endcode - */ - set { - } - get { - } - values { - weekdays: legacy(ptr(string)); [[Array of seven strings to be used as weekday names. - Warning: It must have 7 elements, or it will access invalid memory. - Warning: The strings must be $null terminated ('@\0').]] - } - } - @property select_mode { - [[Select day mode to use. - - The day selection mode used. - ]] - set { - } - get { - } - values { - mode: Elm.Calendar.Select.Mode; [[The select mode to use.]] - } - } - @property format_function { - set { - [[Set a function to format the string that will be used to display - month and year; - - By default it uses strftime with "%B %Y" format string. - It should allocate the memory that will be used by the string, - that will be freed by the widget after usage. - A pointer to the string and a pointer to the time struct will be provided. - - \@ref calendar_example_02. - ]] - /* FIXME-doc - * Example: - * @code - * static char - * _format_month_year(struct tm *selected_time) - * { - * char buf[32]; - * if (!strftime(buf, sizeof(buf), "%B %Y", selected_time)) return NULL; - * return strdup(buf); - * } - * - * elm_calendar_format_function_set(calendar, _format_month_year); - * @endcode - */ - } - values { - format_function: Elm_Calendar_Format_Cb; [[Function to set the month-year string given - the selected date.]] - } - } - @property marks { - get { - [[Get a list of all the calendar marks. - - See also @.mark_add, - @.mark_del(), - @.marks_clear. - - ]] - return: const(list); [[List with all calendar marks]] - } - } - @property date_min { - [[Minimum date on calendar. - - See also @.date_max.set, @.date_max.get - - @since 1.19 - ]] - set { - [[Set minimum date on calendar. - - Set the minimum date, changing the displayed month or year if needed. - Displayed day also to be disabled if it is smaller than minimum date. - ]] - } - get { - [[Get minimum date. - - Default value is 1 JAN,1902. - ]] - } - values { - @cref min: Efl.Time; [[A tm struct to point to minimum date.]] - } - } - @property date_max { - [[Maximum date on calendar. - - See also @.date_min.set, @.date_min.get - - @since 1.19 - ]] - set { - [[Set maximum date on calendar. - - Set the maximum date, changing the displayed month or year if needed. - Displayed day also to be disabled if it is bigger than maximum date. - ]] - } - get { - [[Get maximum date. - - Default maximum year is -1. - Default maximum day and month are 31 and DEC. - - If the maximum year is a negative value, it will be limited depending - on the platform architecture (year 2037 for 32 bits); - ]] - } - values { - @cref max: Efl.Time; [[A tm struct to point to maximum date.]] - } - } - selected_time_set { - [[Set selected date to be highlighted on calendar. - - Set the selected date, changing the displayed month if needed. - Selected date changes when the user goes to next/previous month or - select a day pressing over it on calendar. - - See also @.selected_time_get. - - \@ref calendar_example_04 - ]] - params { - @in selected_time: ptr(Efl.Time); [[A tm struct to represent the selected date.]] - } - } - selected_time_get @const { - [[Get selected date. - - Get date selected by the user or set by function - @.selected_time_set(). - Selected date changes when the user goes to next/previous month or - select a day pressing over it on calendar. - - See also @.selected_time_get. - - \@ref calendar_example_05. - ]] - return: bool; [[$true if the method succeeded, $false otherwise]] - params { - @inout selected_time: Efl.Time; [[A tm struct to point to selected date.]] - } - } - mark_add { - [[Add a new mark to the calendar - - Add a mark that will be drawn in the calendar respecting the insertion - time and periodicity. It will emit the type as signal to the widget theme. - Default theme supports "holiday" and "checked", but it can be extended. - - It won't immediately update the calendar, drawing the marks. - For this, @.marks_draw(). However, when user selects - next or previous month calendar forces marks drawn. - - Marks created with this method can be deleted with @.mark_del(). - - See also @.marks_draw, @.mark_del(). - - \@ref calendar_example_06 - ]] - /* FIXME-doc - * Example - * @code - * struct tm selected_time; - * time_t current_time; - * - * current_time = time(NULL) + 5 * (24 * 60 * 60); - * localtime_r(¤t_time, &selected_time); - * elm_calendar_mark_add(cal, "holiday", selected_time, - * ELM_CALENDAR_ANNUALLY); - - * current_time = time(NULL) + 1 * (24 * 60 * 60); - * localtime_r(¤t_time, &selected_time); - * elm_calendar_mark_add(cal, "checked", selected_time, ELM_CALENDAR_UNIQUE); - - * elm_calendar_marks_draw(cal); - * @endcode - */ - return: ptr(Elm.Calendar.Mark); [[The newly added calendar mark]] - params { - @in mark_type: string; [[A string used to define the type of mark. It will be - emitted to the theme, that should display a related modification on these - days representation.]] - @in mark_time: ptr(Efl.Time); [[A time struct to represent the date of inclusion of the - mark. For marks that repeats it will just be displayed after the inclusion - date in the calendar.]] - @in repeat: Elm.Calendar.Mark.Repeat.Type; [[Repeat the event following this periodicity. Can be a unique - mark (that don't repeat), daily, weekly, monthly or annually.]] - } - } - mark_del { - [[Delete mark from the calendar. - - If deleting all calendar marks is required, @.marks_clear() - should be used instead of getting marks list and deleting each one. - - See also @.mark_add(), @.marks_clear(). - ]] - legacy: null; - params { - @in mark: ptr(Elm.Calendar.Mark); [[ The mark to be deleted. ]] - } - } - marks_clear { - [[Remove all calendar's marks - - See also @.mark_add, @.mark_del(). - ]] - } - marks_draw { - [[Draw calendar marks. - - Should be used after adding, removing or clearing marks. - It will go through the entire marks list updating the calendar. - If lots of marks will be added, add all the marks and then call - this function. - - When the month is changed, i.e. user selects next or previous month, - marks will be drawn. - - See also @.mark_add, @.mark_del(), @.marks_clear. - - \@ref calendar_example_06 - ]] - } - displayed_time_get @const { - [[Get the current time displayed in the widget - - @since 1.8 - ]] - return: bool; [[$true if the method succeeded, $false otherwise]] - params { - @inout displayed_time: Efl.Time; [[A tm struct to point to displayed date.]] - } - } - } - implements { - class.constructor; - Efl.Object.constructor; - Efl.Canvas.Group.group_calculate; - Efl.Ui.Widget.theme_apply; - Efl.Ui.Widget.on_access_update; - Efl.Ui.Focus.Object.on_focus_update; - Efl.Ui.Widget.widget_input_event_handler; - Efl.Access.Widget.Action.elm_actions { get; } - } - events { - changed: void; [[Emitted when the date in the calendar is changed]] - display,changed: void; [[Emitted when the current month displayed in the calendar is changed]] - } -} diff --git a/src/lib/elementary/elm_calendar_eo.c b/src/lib/elementary/elm_calendar_eo.c new file mode 100644 index 0000000000..ec10664558 --- /dev/null +++ b/src/lib/elementary/elm_calendar_eo.c @@ -0,0 +1,212 @@ +EWAPI const Efl_Event_Description _ELM_CALENDAR_EVENT_CHANGED = + EFL_EVENT_DESCRIPTION("changed"); +EWAPI const Efl_Event_Description _ELM_CALENDAR_EVENT_DISPLAY_CHANGED = + EFL_EVENT_DESCRIPTION("display,changed"); + +void _elm_calendar_first_day_of_week_set(Eo *obj, Elm_Calendar_Data *pd, Elm_Calendar_Weekday day); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_calendar_first_day_of_week_set, EFL_FUNC_CALL(day), Elm_Calendar_Weekday day); + +Elm_Calendar_Weekday _elm_calendar_first_day_of_week_get(const Eo *obj, Elm_Calendar_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_calendar_first_day_of_week_get, Elm_Calendar_Weekday, 0); + +void _elm_calendar_selectable_set(Eo *obj, Elm_Calendar_Data *pd, Elm_Calendar_Selectable selectable); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_calendar_selectable_set, EFL_FUNC_CALL(selectable), Elm_Calendar_Selectable selectable); + +Elm_Calendar_Selectable _elm_calendar_selectable_get(const Eo *obj, Elm_Calendar_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_calendar_selectable_get, Elm_Calendar_Selectable, 0); + +void _elm_calendar_interval_set(Eo *obj, Elm_Calendar_Data *pd, double interval); + + +static Eina_Error +__eolian_elm_calendar_interval_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; double cval; + if (!eina_value_double_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_obj_calendar_interval_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_calendar_interval_set, EFL_FUNC_CALL(interval), double interval); + +double _elm_calendar_interval_get(const Eo *obj, Elm_Calendar_Data *pd); + + +static Eina_Value +__eolian_elm_calendar_interval_get_reflect(Eo *obj) +{ + double val = elm_obj_calendar_interval_get(obj); + return eina_value_double_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_calendar_interval_get, double, 0); + +void _elm_calendar_weekdays_names_set(Eo *obj, Elm_Calendar_Data *pd, const char **weekdays); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_calendar_weekdays_names_set, EFL_FUNC_CALL(weekdays), const char **weekdays); + +const char **_elm_calendar_weekdays_names_get(const Eo *obj, Elm_Calendar_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_calendar_weekdays_names_get, const char **, NULL); + +void _elm_calendar_select_mode_set(Eo *obj, Elm_Calendar_Data *pd, Elm_Calendar_Select_Mode mode); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_calendar_select_mode_set, EFL_FUNC_CALL(mode), Elm_Calendar_Select_Mode mode); + +Elm_Calendar_Select_Mode _elm_calendar_select_mode_get(const Eo *obj, Elm_Calendar_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_calendar_select_mode_get, Elm_Calendar_Select_Mode, 0); + +void _elm_calendar_format_function_set(Eo *obj, Elm_Calendar_Data *pd, Elm_Calendar_Format_Cb format_function); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_calendar_format_function_set, EFL_FUNC_CALL(format_function), Elm_Calendar_Format_Cb format_function); + +const Eina_List *_elm_calendar_marks_get(const Eo *obj, Elm_Calendar_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_calendar_marks_get, const Eina_List *, NULL); + +void _elm_calendar_date_min_set(Eo *obj, Elm_Calendar_Data *pd, const Efl_Time *min); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_calendar_date_min_set, EFL_FUNC_CALL(min), const Efl_Time *min); + +const Efl_Time *_elm_calendar_date_min_get(const Eo *obj, Elm_Calendar_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_calendar_date_min_get, const Efl_Time *, NULL); + +void _elm_calendar_date_max_set(Eo *obj, Elm_Calendar_Data *pd, const Efl_Time *max); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_calendar_date_max_set, EFL_FUNC_CALL(max), const Efl_Time *max); + +const Efl_Time *_elm_calendar_date_max_get(const Eo *obj, Elm_Calendar_Data *pd); + +EOAPI EFL_FUNC_BODY_CONST(elm_obj_calendar_date_max_get, const Efl_Time *, NULL); + +void _elm_calendar_selected_time_set(Eo *obj, Elm_Calendar_Data *pd, Efl_Time *selected_time); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_calendar_selected_time_set, EFL_FUNC_CALL(selected_time), Efl_Time *selected_time); + +Eina_Bool _elm_calendar_selected_time_get(const Eo *obj, Elm_Calendar_Data *pd, Efl_Time *selected_time); + +EOAPI EFL_FUNC_BODYV_CONST(elm_obj_calendar_selected_time_get, Eina_Bool, 0, EFL_FUNC_CALL(selected_time), Efl_Time *selected_time); + +Elm_Calendar_Mark *_elm_calendar_mark_add(Eo *obj, Elm_Calendar_Data *pd, const char *mark_type, Efl_Time *mark_time, Elm_Calendar_Mark_Repeat_Type repeat); + +EOAPI EFL_FUNC_BODYV(elm_obj_calendar_mark_add, Elm_Calendar_Mark *, NULL, EFL_FUNC_CALL(mark_type, mark_time, repeat), const char *mark_type, Efl_Time *mark_time, Elm_Calendar_Mark_Repeat_Type repeat); + +void _elm_calendar_mark_del(Eo *obj, Elm_Calendar_Data *pd, Elm_Calendar_Mark *mark); + +EOAPI EFL_VOID_FUNC_BODYV(elm_obj_calendar_mark_del, EFL_FUNC_CALL(mark), Elm_Calendar_Mark *mark); + +void _elm_calendar_marks_clear(Eo *obj, Elm_Calendar_Data *pd); + +EOAPI EFL_VOID_FUNC_BODY(elm_obj_calendar_marks_clear); + +void _elm_calendar_marks_draw(Eo *obj, Elm_Calendar_Data *pd); + +EOAPI EFL_VOID_FUNC_BODY(elm_obj_calendar_marks_draw); + +Eina_Bool _elm_calendar_displayed_time_get(const Eo *obj, Elm_Calendar_Data *pd, Efl_Time *displayed_time); + +EOAPI EFL_FUNC_BODYV_CONST(elm_obj_calendar_displayed_time_get, Eina_Bool, 0, EFL_FUNC_CALL(displayed_time), Efl_Time *displayed_time); + +Efl_Object *_elm_calendar_efl_object_constructor(Eo *obj, Elm_Calendar_Data *pd); + + +void _elm_calendar_efl_canvas_group_group_calculate(Eo *obj, Elm_Calendar_Data *pd); + + +Eina_Error _elm_calendar_efl_ui_widget_theme_apply(Eo *obj, Elm_Calendar_Data *pd); + + +void _elm_calendar_efl_ui_widget_on_access_update(Eo *obj, Elm_Calendar_Data *pd, Eina_Bool enable); + + +Eina_Bool _elm_calendar_efl_ui_focus_object_on_focus_update(Eo *obj, Elm_Calendar_Data *pd); + + +Eina_Bool _elm_calendar_efl_ui_widget_widget_input_event_handler(Eo *obj, Elm_Calendar_Data *pd, const Efl_Event *eo_event, Efl_Canvas_Object *source); + + +const Efl_Access_Action_Data *_elm_calendar_efl_access_widget_action_elm_actions_get(const Eo *obj, Elm_Calendar_Data *pd); + + +static Eina_Bool +_elm_calendar_class_initializer(Efl_Class *klass) +{ + const Efl_Object_Ops *opsp = NULL; + + const Efl_Object_Property_Reflection_Ops *ropsp = NULL; + +#ifndef ELM_CALENDAR_EXTRA_OPS +#define ELM_CALENDAR_EXTRA_OPS +#endif + + EFL_OPS_DEFINE(ops, + EFL_OBJECT_OP_FUNC(elm_obj_calendar_first_day_of_week_set, _elm_calendar_first_day_of_week_set), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_first_day_of_week_get, _elm_calendar_first_day_of_week_get), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_selectable_set, _elm_calendar_selectable_set), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_selectable_get, _elm_calendar_selectable_get), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_interval_set, _elm_calendar_interval_set), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_interval_get, _elm_calendar_interval_get), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_weekdays_names_set, _elm_calendar_weekdays_names_set), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_weekdays_names_get, _elm_calendar_weekdays_names_get), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_select_mode_set, _elm_calendar_select_mode_set), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_select_mode_get, _elm_calendar_select_mode_get), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_format_function_set, _elm_calendar_format_function_set), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_marks_get, _elm_calendar_marks_get), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_date_min_set, _elm_calendar_date_min_set), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_date_min_get, _elm_calendar_date_min_get), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_date_max_set, _elm_calendar_date_max_set), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_date_max_get, _elm_calendar_date_max_get), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_selected_time_set, _elm_calendar_selected_time_set), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_selected_time_get, _elm_calendar_selected_time_get), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_mark_add, _elm_calendar_mark_add), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_mark_del, _elm_calendar_mark_del), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_marks_clear, _elm_calendar_marks_clear), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_marks_draw, _elm_calendar_marks_draw), + EFL_OBJECT_OP_FUNC(elm_obj_calendar_displayed_time_get, _elm_calendar_displayed_time_get), + EFL_OBJECT_OP_FUNC(efl_constructor, _elm_calendar_efl_object_constructor), + EFL_OBJECT_OP_FUNC(efl_canvas_group_calculate, _elm_calendar_efl_canvas_group_group_calculate), + EFL_OBJECT_OP_FUNC(efl_ui_widget_theme_apply, _elm_calendar_efl_ui_widget_theme_apply), + EFL_OBJECT_OP_FUNC(efl_ui_widget_on_access_update, _elm_calendar_efl_ui_widget_on_access_update), + EFL_OBJECT_OP_FUNC(efl_ui_focus_object_on_focus_update, _elm_calendar_efl_ui_focus_object_on_focus_update), + EFL_OBJECT_OP_FUNC(efl_ui_widget_input_event_handler, _elm_calendar_efl_ui_widget_widget_input_event_handler), + EFL_OBJECT_OP_FUNC(efl_access_widget_action_elm_actions_get, _elm_calendar_efl_access_widget_action_elm_actions_get), + ELM_CALENDAR_EXTRA_OPS + ); + opsp = &ops; + + static const Efl_Object_Property_Reflection refl_table[] = { + {"interval", __eolian_elm_calendar_interval_set_reflect, __eolian_elm_calendar_interval_get_reflect}, + }; + static const Efl_Object_Property_Reflection_Ops rops = { + refl_table, EINA_C_ARRAY_LENGTH(refl_table) + }; + ropsp = &rops; + + return efl_class_functions_set(klass, opsp, ropsp); +} + +static const Efl_Class_Description _elm_calendar_class_desc = { + EO_VERSION, + "Elm.Calendar", + EFL_CLASS_TYPE_REGULAR, + sizeof(Elm_Calendar_Data), + _elm_calendar_class_initializer, + _elm_calendar_class_constructor, + NULL +}; + +EFL_DEFINE_CLASS(elm_calendar_class_get, &_elm_calendar_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL); + +#include "elm_calendar_eo.legacy.c" diff --git a/src/lib/elementary/elm_calendar_eo.h b/src/lib/elementary/elm_calendar_eo.h new file mode 100644 index 0000000000..09a97eb868 --- /dev/null +++ b/src/lib/elementary/elm_calendar_eo.h @@ -0,0 +1,574 @@ +#ifndef _ELM_CALENDAR_EO_H_ +#define _ELM_CALENDAR_EO_H_ + +#ifndef _ELM_CALENDAR_EO_CLASS_TYPE +#define _ELM_CALENDAR_EO_CLASS_TYPE + +typedef Eo Elm_Calendar; + +#endif + +#ifndef _ELM_CALENDAR_EO_TYPES +#define _ELM_CALENDAR_EO_TYPES + +/** + * @brief Event periodicity, used to define if a mark should be repeated beyond + * event's day. + * + * It's set when a mark is added. So, for a mark added to 13th May with + * periodicity set to WEEKLY, there will be marks every week after this date. + * Marks will be displayed at 13th, 20th, 27th, 3rd June ... + * + * Values don't work as bitmask, only one can be chosen. See also + * @ref elm_obj_calendar_mark_add. + * + * @ingroup Elm_Calendar_Mark_Repeat + */ +typedef enum +{ + ELM_CALENDAR_UNIQUE = 0, /**< Default value. Marks will be displayed only on + * event day. */ + ELM_CALENDAR_DAILY, /**< Marks will be displayed every day after event day + * (inclusive). */ + ELM_CALENDAR_WEEKLY, /**< Marks will be displayed every week after event day + * (inclusive) - i.e. each seven days. */ + ELM_CALENDAR_MONTHLY, /**< Marks will be displayed every month day that + * coincides to event day. E.g.: if an event is set to + * 30th Jan, no marks will be displayed on Feb, but + * will be displayed on 30th Mar. */ + ELM_CALENDAR_ANNUALLY, /**< Marks will be displayed every year that coincides + * to event day (and month). E.g. an event added to + * 30th Jan 2012 will be repeated on 30th Jan 2013. */ + ELM_CALENDAR_LAST_DAY_OF_MONTH, /**< Marks will be displayed every last day of + * month after event day (inclusive). + * + * @since 1.7 */ + ELM_CALENDAR_REVERSE_DAILY /**< Marks will be displayed every day before event + * day. + * + * @since 1.19 */ +} Elm_Calendar_Mark_Repeat_Type; + +/** + * @brief A weekday + * + * See also @ref elm_obj_calendar_first_day_of_week_set. + * + * @ingroup Elm_Calendar + */ +typedef enum +{ + ELM_DAY_SUNDAY = 0, /**< Sunday weekday */ + ELM_DAY_MONDAY, /**< Monday weekday */ + ELM_DAY_TUESDAY, /**< Tuesday weekday */ + ELM_DAY_WEDNESDAY, /**< Wednesday weekday */ + ELM_DAY_THURSDAY, /**< Thursday weekday */ + ELM_DAY_FRIDAY, /**< Friday weekday */ + ELM_DAY_SATURDAY, /**< Saturday weekday */ + ELM_DAY_LAST /**< Sentinel value to indicate last enum field during iteration + */ +} Elm_Calendar_Weekday; + +/** + * @brief The mode, who determine how user could select a day + * + * See also @ref elm_obj_calendar_select_mode_set() + * + * @ingroup Elm_Calendar_Select + */ +typedef enum +{ + ELM_CALENDAR_SELECT_MODE_DEFAULT = 0, /**< Default value. A day is always + * selected. */ + ELM_CALENDAR_SELECT_MODE_ALWAYS, /**< A day is always selected. */ + ELM_CALENDAR_SELECT_MODE_NONE, /**< None of the days can be selected. */ + ELM_CALENDAR_SELECT_MODE_ONDEMAND /**< User may have selected a day or not. */ +} Elm_Calendar_Select_Mode; + +/** + * @brief A bitmask used to define which fields of a @c tm struct will be taken + * into account, when elm_calendar_selected_time_set() is invoked. + * + * See also @ref elm_obj_calendar_selectable_set, + * @ref elm_obj_calendar_selected_time_set. + * + * @since 1.8 + * + * @ingroup Elm_Calendar + */ +typedef enum +{ + ELM_CALENDAR_SELECTABLE_NONE = 0, /**< Take no field into account */ + ELM_CALENDAR_SELECTABLE_YEAR = 1 /* 1 >> 0 */, /**< Take year field into + * account */ + ELM_CALENDAR_SELECTABLE_MONTH = 2 /* 1 >> 1 */, /**< Take month field into + * account */ + ELM_CALENDAR_SELECTABLE_DAY = 4 /* 1 >> 2 */ /**< Take day field into account + */ +} Elm_Calendar_Selectable; + +/** Item handle for a calendar mark. Created with + * @ref elm_obj_calendar_mark_add and deleted with + * @ref elm_obj_calendar_mark_del. + * + * @ingroup Elm_Calendar + */ +typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark; + + +#endif +/** + * @brief Calendar widget + * + * It helps applications to flexibly display a calendar with day of the week, + * date, year and month. Applications are able to set specific dates to be + * reported back, when selected, in the smart callbacks of the calendar widget. + * + * @ingroup Elm_Calendar + */ +#define ELM_CALENDAR_CLASS elm_calendar_class_get() + +EWAPI const Efl_Class *elm_calendar_class_get(void); + +/** + * @brief The first day of week to use on calendar widgets'. + * + * @param[in] obj The object. + * @param[in] day Weekday enum value, see @ref Elm_Calendar_Weekday + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_first_day_of_week_set(Eo *obj, Elm_Calendar_Weekday day); + +/** + * @brief The first day of week to use on calendar widgets'. + * + * @param[in] obj The object. + * + * @return Weekday enum value, see @ref Elm_Calendar_Weekday + * + * @ingroup Elm_Calendar + */ +EOAPI Elm_Calendar_Weekday elm_obj_calendar_first_day_of_week_get(const Eo *obj); + +/** + * @brief Define which fields of a tm struct will be taken into account, when + * Elm.Calendar.selected_time.set is invoked. + * + * By Default the bitmask is set to use all fields of a tm struct (year, month + * and day of the month). + * + * See also @ref elm_obj_calendar_selected_time_set. + * + * @param[in] obj The object. + * @param[in] selectable A bitmask of Elm_Calendar_Selectable + * + * @since 1.8 + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_selectable_set(Eo *obj, Elm_Calendar_Selectable selectable); + +/** + * @brief Define which fields of a tm struct will be taken into account, when + * Elm.Calendar.selected_time.set is invoked. + * + * By Default the bitmask is set to use all fields of a tm struct (year, month + * and day of the month). + * + * See also @ref elm_obj_calendar_selected_time_set. + * + * @param[in] obj The object. + * + * @return A bitmask of Elm_Calendar_Selectable + * + * @since 1.8 + * + * @ingroup Elm_Calendar + */ +EOAPI Elm_Calendar_Selectable elm_obj_calendar_selectable_get(const Eo *obj); + +/** + * @brief The interval on time updates for an user mouse button hold on + * calendar widgets' month/year selection. + * + * This interval value is decreased while the user holds the mouse pointer + * either selecting next or previous month/year. + * + * This helps the user to get to a given month distant from the current one + * easier/faster, as it will start to change quicker and quicker on mouse + * button holds. + * + * The calculation for the next change interval value, starting from the one + * set with this call, is the previous interval divided by 1.05, so it + * decreases a little bit. + * + * The default starting interval value for automatic changes is 0.85 seconds. + * + * @param[in] obj The object. + * @param[in] interval The (first) interval value in seconds + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_interval_set(Eo *obj, double interval); + +/** + * @brief The interval on time updates for an user mouse button hold on + * calendar widgets' month/year selection. + * + * This interval value is decreased while the user holds the mouse pointer + * either selecting next or previous month/year. + * + * This helps the user to get to a given month distant from the current one + * easier/faster, as it will start to change quicker and quicker on mouse + * button holds. + * + * The calculation for the next change interval value, starting from the one + * set with this call, is the previous interval divided by 1.05, so it + * decreases a little bit. + * + * The default starting interval value for automatic changes is 0.85 seconds. + * + * @param[in] obj The object. + * + * @return The (first) interval value in seconds + * + * @ingroup Elm_Calendar + */ +EOAPI double elm_obj_calendar_interval_get(const Eo *obj); + +/** + * @brief Weekdays names to be displayed by the calendar. + * + * By default, weekdays abbreviations get from system are displayed: E.g. for + * an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat" + * + * The first string should be related to Sunday, the second to Monday... + * + * See also @ref elm_obj_calendar_weekdays_names_get. + * + * @ref calendar_example_02. @ref calendar_example_05. + * + * @param[in] obj The object. + * @param[in] weekdays Array of seven strings to be used as weekday names. + * Warning: It must have 7 elements, or it will access invalid memory. Warning: + * The strings must be @c null terminated ('@\0'). + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_weekdays_names_set(Eo *obj, const char **weekdays); + +/** + * @brief Weekdays names to be displayed by the calendar. + * + * By default, weekdays abbreviations get from system are displayed: E.g. for + * an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat" + * + * The first string should be related to Sunday, the second to Monday... + * + * See also @ref elm_obj_calendar_weekdays_names_get. + * + * @ref calendar_example_02. @ref calendar_example_05. + * + * @param[in] obj The object. + * + * @return Array of seven strings to be used as weekday names. Warning: It must + * have 7 elements, or it will access invalid memory. Warning: The strings must + * be @c null terminated ('@\0'). + * + * @ingroup Elm_Calendar + */ +EOAPI const char **elm_obj_calendar_weekdays_names_get(const Eo *obj); + +/** + * @brief Select day mode to use. + * + * The day selection mode used. + * + * @param[in] obj The object. + * @param[in] mode The select mode to use. + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_select_mode_set(Eo *obj, Elm_Calendar_Select_Mode mode); + +/** + * @brief Select day mode to use. + * + * The day selection mode used. + * + * @param[in] obj The object. + * + * @return The select mode to use. + * + * @ingroup Elm_Calendar + */ +EOAPI Elm_Calendar_Select_Mode elm_obj_calendar_select_mode_get(const Eo *obj); + +/** + * @brief Set a function to format the string that will be used to display + * month and year; + * + * By default it uses strftime with "%B %Y" format string. It should allocate + * the memory that will be used by the string, that will be freed by the widget + * after usage. A pointer to the string and a pointer to the time struct will + * be provided. + * + * @ref calendar_example_02. + * + * @param[in] obj The object. + * @param[in] format_function Function to set the month-year string given the + * selected date. + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_format_function_set(Eo *obj, Elm_Calendar_Format_Cb format_function); + +/** + * @brief Get a list of all the calendar marks. + * + * See also @ref elm_obj_calendar_mark_add, @ref elm_obj_calendar_mark_del(), + * @ref elm_obj_calendar_marks_clear. + * + * @param[in] obj The object. + * + * @return List with all calendar marks + * + * @ingroup Elm_Calendar + */ +EOAPI const Eina_List *elm_obj_calendar_marks_get(const Eo *obj); + +/** + * @brief Minimum date on calendar. + * + * See also @ref elm_obj_calendar_date_max_set, + * @ref elm_obj_calendar_date_max_get + * + * Set minimum date on calendar. + * + * Set the minimum date, changing the displayed month or year if needed. + * Displayed day also to be disabled if it is smaller than minimum date. + * + * @param[in] obj The object. + * @param[in] min A tm struct to point to minimum date. + * + * @since 1.19 + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_date_min_set(Eo *obj, const Efl_Time *min); + +/** + * @brief Minimum date on calendar. + * + * See also @ref elm_obj_calendar_date_max_set, + * @ref elm_obj_calendar_date_max_get + * + * Get minimum date. + * + * Default value is 1 JAN,1902. + * + * @param[in] obj The object. + * + * @return A tm struct to point to minimum date. + * + * @since 1.19 + * + * @ingroup Elm_Calendar + */ +EOAPI const Efl_Time *elm_obj_calendar_date_min_get(const Eo *obj); + +/** + * @brief Maximum date on calendar. + * + * See also @ref elm_obj_calendar_date_min_set, + * @ref elm_obj_calendar_date_min_get + * + * Set maximum date on calendar. + * + * Set the maximum date, changing the displayed month or year if needed. + * Displayed day also to be disabled if it is bigger than maximum date. + * + * @param[in] obj The object. + * @param[in] max A tm struct to point to maximum date. + * + * @since 1.19 + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_date_max_set(Eo *obj, const Efl_Time *max); + +/** + * @brief Maximum date on calendar. + * + * See also @ref elm_obj_calendar_date_min_set, + * @ref elm_obj_calendar_date_min_get + * + * Get maximum date. + * + * Default maximum year is -1. Default maximum day and month are 31 and DEC. + * + * If the maximum year is a negative value, it will be limited depending on the + * platform architecture (year 2037 for 32 bits); + * + * @param[in] obj The object. + * + * @return A tm struct to point to maximum date. + * + * @since 1.19 + * + * @ingroup Elm_Calendar + */ +EOAPI const Efl_Time *elm_obj_calendar_date_max_get(const Eo *obj); + +/** + * @brief Set selected date to be highlighted on calendar. + * + * Set the selected date, changing the displayed month if needed. Selected date + * changes when the user goes to next/previous month or select a day pressing + * over it on calendar. + * + * See also @ref elm_obj_calendar_selected_time_get. + * + * @ref calendar_example_04 + * + * @param[in] obj The object. + * @param[in] selected_time A tm struct to represent the selected date. + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_selected_time_set(Eo *obj, Efl_Time *selected_time); + +/** + * @brief Get selected date. + * + * Get date selected by the user or set by function + * @ref elm_obj_calendar_selected_time_set(). Selected date changes when the + * user goes to next/previous month or select a day pressing over it on + * calendar. + * + * See also @ref elm_obj_calendar_selected_time_get. + * + * @ref calendar_example_05. + * + * @param[in] obj The object. + * @param[in,out] selected_time A tm struct to point to selected date. + * + * @return @c true if the method succeeded, @c false otherwise + * + * @ingroup Elm_Calendar + */ +EOAPI Eina_Bool elm_obj_calendar_selected_time_get(const Eo *obj, Efl_Time *selected_time); + +/** + * @brief Add a new mark to the calendar + * + * Add a mark that will be drawn in the calendar respecting the insertion time + * and periodicity. It will emit the type as signal to the widget theme. + * Default theme supports "holiday" and "checked", but it can be extended. + * + * It won't immediately update the calendar, drawing the marks. For this, + * @ref elm_obj_calendar_marks_draw(). However, when user selects next or + * previous month calendar forces marks drawn. + * + * Marks created with this method can be deleted with + * @ref elm_obj_calendar_mark_del(). + * + * See also @ref elm_obj_calendar_marks_draw, @ref elm_obj_calendar_mark_del(). + * + * @ref calendar_example_06 + * + * @param[in] obj The object. + * @param[in] mark_type A string used to define the type of mark. It will be + * emitted to the theme, that should display a related modification on these + * days representation. + * @param[in] mark_time A time struct to represent the date of inclusion of the + * mark. For marks that repeats it will just be displayed after the inclusion + * date in the calendar. + * @param[in] repeat Repeat the event following this periodicity. Can be a + * unique mark (that don't repeat), daily, weekly, monthly or annually. + * + * @return The newly added calendar mark + * + * @ingroup Elm_Calendar + */ +EOAPI Elm_Calendar_Mark *elm_obj_calendar_mark_add(Eo *obj, const char *mark_type, Efl_Time *mark_time, Elm_Calendar_Mark_Repeat_Type repeat); + +/** + * @brief Delete mark from the calendar. + * + * If deleting all calendar marks is required, + * @ref elm_obj_calendar_marks_clear() should be used instead of getting marks + * list and deleting each one. + * + * See also @ref elm_obj_calendar_mark_add(), + * @ref elm_obj_calendar_marks_clear(). + * + * @param[in] obj The object. + * @param[in] mark The mark to be deleted. + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_mark_del(Eo *obj, Elm_Calendar_Mark *mark); + +/** + * @brief Remove all calendar's marks + * + * See also @ref elm_obj_calendar_mark_add, @ref elm_obj_calendar_mark_del(). + * @param[in] obj The object. + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_marks_clear(Eo *obj); + +/** + * @brief Draw calendar marks. + * + * Should be used after adding, removing or clearing marks. It will go through + * the entire marks list updating the calendar. If lots of marks will be added, + * add all the marks and then call this function. + * + * When the month is changed, i.e. user selects next or previous month, marks + * will be drawn. + * + * See also @ref elm_obj_calendar_mark_add, @ref elm_obj_calendar_mark_del(), + * @ref elm_obj_calendar_marks_clear. + * + * @ref calendar_example_06 + * @param[in] obj The object. + * + * @ingroup Elm_Calendar + */ +EOAPI void elm_obj_calendar_marks_draw(Eo *obj); + +/** + * @brief Get the current time displayed in the widget + * + * @param[in] obj The object. + * @param[in,out] displayed_time A tm struct to point to displayed date. + * + * @return @c true if the method succeeded, @c false otherwise + * + * @since 1.8 + * + * @ingroup Elm_Calendar + */ +EOAPI Eina_Bool elm_obj_calendar_displayed_time_get(const Eo *obj, Efl_Time *displayed_time); + +EWAPI extern const Efl_Event_Description _ELM_CALENDAR_EVENT_CHANGED; + +/** Emitted when the date in the calendar is changed + * + * @ingroup Elm_Calendar + */ +#define ELM_CALENDAR_EVENT_CHANGED (&(_ELM_CALENDAR_EVENT_CHANGED)) + +EWAPI extern const Efl_Event_Description _ELM_CALENDAR_EVENT_DISPLAY_CHANGED; + +/** Emitted when the current month displayed in the calendar is changed + * + * @ingroup Elm_Calendar + */ +#define ELM_CALENDAR_EVENT_DISPLAY_CHANGED (&(_ELM_CALENDAR_EVENT_DISPLAY_CHANGED)) + +#endif diff --git a/src/lib/elementary/elm_calendar_eo.legacy.c b/src/lib/elementary/elm_calendar_eo.legacy.c new file mode 100644 index 0000000000..1ddf8af1cb --- /dev/null +++ b/src/lib/elementary/elm_calendar_eo.legacy.c @@ -0,0 +1,132 @@ + +EAPI void +elm_calendar_first_day_of_week_set(Elm_Calendar *obj, Elm_Calendar_Weekday day) +{ + elm_obj_calendar_first_day_of_week_set(obj, day); +} + +EAPI Elm_Calendar_Weekday +elm_calendar_first_day_of_week_get(const Elm_Calendar *obj) +{ + return elm_obj_calendar_first_day_of_week_get(obj); +} + +EAPI void +elm_calendar_selectable_set(Elm_Calendar *obj, Elm_Calendar_Selectable selectable) +{ + elm_obj_calendar_selectable_set(obj, selectable); +} + +EAPI Elm_Calendar_Selectable +elm_calendar_selectable_get(const Elm_Calendar *obj) +{ + return elm_obj_calendar_selectable_get(obj); +} + +EAPI void +elm_calendar_interval_set(Elm_Calendar *obj, double interval) +{ + elm_obj_calendar_interval_set(obj, interval); +} + +EAPI double +elm_calendar_interval_get(const Elm_Calendar *obj) +{ + return elm_obj_calendar_interval_get(obj); +} + +EAPI void +elm_calendar_weekdays_names_set(Elm_Calendar *obj, const char **weekdays) +{ + elm_obj_calendar_weekdays_names_set(obj, weekdays); +} + +EAPI const char ** +elm_calendar_weekdays_names_get(const Elm_Calendar *obj) +{ + return elm_obj_calendar_weekdays_names_get(obj); +} + +EAPI void +elm_calendar_select_mode_set(Elm_Calendar *obj, Elm_Calendar_Select_Mode mode) +{ + elm_obj_calendar_select_mode_set(obj, mode); +} + +EAPI Elm_Calendar_Select_Mode +elm_calendar_select_mode_get(const Elm_Calendar *obj) +{ + return elm_obj_calendar_select_mode_get(obj); +} + +EAPI void +elm_calendar_format_function_set(Elm_Calendar *obj, Elm_Calendar_Format_Cb format_function) +{ + elm_obj_calendar_format_function_set(obj, format_function); +} + +EAPI const Eina_List * +elm_calendar_marks_get(const Elm_Calendar *obj) +{ + return elm_obj_calendar_marks_get(obj); +} + +EAPI void +elm_calendar_date_min_set(Elm_Calendar *obj, const Efl_Time *min) +{ + elm_obj_calendar_date_min_set(obj, min); +} + +EAPI const Efl_Time * +elm_calendar_date_min_get(const Elm_Calendar *obj) +{ + return elm_obj_calendar_date_min_get(obj); +} + +EAPI void +elm_calendar_date_max_set(Elm_Calendar *obj, const Efl_Time *max) +{ + elm_obj_calendar_date_max_set(obj, max); +} + +EAPI const Efl_Time * +elm_calendar_date_max_get(const Elm_Calendar *obj) +{ + return elm_obj_calendar_date_max_get(obj); +} + +EAPI void +elm_calendar_selected_time_set(Elm_Calendar *obj, Efl_Time *selected_time) +{ + elm_obj_calendar_selected_time_set(obj, selected_time); +} + +EAPI Eina_Bool +elm_calendar_selected_time_get(const Elm_Calendar *obj, Efl_Time *selected_time) +{ + return elm_obj_calendar_selected_time_get(obj, selected_time); +} + +EAPI Elm_Calendar_Mark * +elm_calendar_mark_add(Elm_Calendar *obj, const char *mark_type, Efl_Time *mark_time, Elm_Calendar_Mark_Repeat_Type repeat) +{ + return elm_obj_calendar_mark_add(obj, mark_type, mark_time, repeat); +} + +EAPI void +elm_calendar_marks_clear(Elm_Calendar *obj) +{ + elm_obj_calendar_marks_clear(obj); +} + +EAPI void +elm_calendar_marks_draw(Elm_Calendar *obj) +{ + elm_obj_calendar_marks_draw(obj); +} + +EAPI Eina_Bool +elm_calendar_displayed_time_get(const Elm_Calendar *obj, Efl_Time *displayed_time) +{ + return elm_obj_calendar_displayed_time_get(obj, displayed_time); +} diff --git a/src/lib/elementary/elm_calendar_eo.legacy.h b/src/lib/elementary/elm_calendar_eo.legacy.h new file mode 100644 index 0000000000..d014445642 --- /dev/null +++ b/src/lib/elementary/elm_calendar_eo.legacy.h @@ -0,0 +1,524 @@ +#ifndef _ELM_CALENDAR_EO_LEGACY_H_ +#define _ELM_CALENDAR_EO_LEGACY_H_ + +#ifndef _ELM_CALENDAR_EO_CLASS_TYPE +#define _ELM_CALENDAR_EO_CLASS_TYPE + +typedef Eo Elm_Calendar; + +#endif + +#ifndef _ELM_CALENDAR_EO_TYPES +#define _ELM_CALENDAR_EO_TYPES + +/** + * @brief Event periodicity, used to define if a mark should be repeated beyond + * event's day. + * + * It's set when a mark is added. So, for a mark added to 13th May with + * periodicity set to WEEKLY, there will be marks every week after this date. + * Marks will be displayed at 13th, 20th, 27th, 3rd June ... + * + * Values don't work as bitmask, only one can be chosen. See also + * @ref elm_calendar_mark_add. + * + * @ingroup Elm_Calendar_Mark_Repeat + */ +typedef enum +{ + ELM_CALENDAR_UNIQUE = 0, /**< Default value. Marks will be displayed only on + * event day. */ + ELM_CALENDAR_DAILY, /**< Marks will be displayed every day after event day + * (inclusive). */ + ELM_CALENDAR_WEEKLY, /**< Marks will be displayed every week after event day + * (inclusive) - i.e. each seven days. */ + ELM_CALENDAR_MONTHLY, /**< Marks will be displayed every month day that + * coincides to event day. E.g.: if an event is set to + * 30th Jan, no marks will be displayed on Feb, but + * will be displayed on 30th Mar. */ + ELM_CALENDAR_ANNUALLY, /**< Marks will be displayed every year that coincides + * to event day (and month). E.g. an event added to + * 30th Jan 2012 will be repeated on 30th Jan 2013. */ + ELM_CALENDAR_LAST_DAY_OF_MONTH, /**< Marks will be displayed every last day of + * month after event day (inclusive). + * + * @since 1.7 */ + ELM_CALENDAR_REVERSE_DAILY /**< Marks will be displayed every day before event + * day. + * + * @since 1.19 */ +} Elm_Calendar_Mark_Repeat_Type; + +/** + * @brief A weekday + * + * See also @ref elm_calendar_first_day_of_week_set. + * + * @ingroup Elm_Calendar + */ +typedef enum +{ + ELM_DAY_SUNDAY = 0, /**< Sunday weekday */ + ELM_DAY_MONDAY, /**< Monday weekday */ + ELM_DAY_TUESDAY, /**< Tuesday weekday */ + ELM_DAY_WEDNESDAY, /**< Wednesday weekday */ + ELM_DAY_THURSDAY, /**< Thursday weekday */ + ELM_DAY_FRIDAY, /**< Friday weekday */ + ELM_DAY_SATURDAY, /**< Saturday weekday */ + ELM_DAY_LAST /**< Sentinel value to indicate last enum field during iteration + */ +} Elm_Calendar_Weekday; + +/** + * @brief The mode, who determine how user could select a day + * + * See also @ref elm_calendar_select_mode_set() + * + * @ingroup Elm_Calendar_Select + */ +typedef enum +{ + ELM_CALENDAR_SELECT_MODE_DEFAULT = 0, /**< Default value. A day is always + * selected. */ + ELM_CALENDAR_SELECT_MODE_ALWAYS, /**< A day is always selected. */ + ELM_CALENDAR_SELECT_MODE_NONE, /**< None of the days can be selected. */ + ELM_CALENDAR_SELECT_MODE_ONDEMAND /**< User may have selected a day or not. */ +} Elm_Calendar_Select_Mode; + +/** + * @brief A bitmask used to define which fields of a @c tm struct will be taken + * into account, when elm_calendar_selected_time_set() is invoked. + * + * See also @ref elm_calendar_selectable_set, + * @ref elm_calendar_selected_time_set. + * + * @since 1.8 + * + * @ingroup Elm_Calendar + */ +typedef enum +{ + ELM_CALENDAR_SELECTABLE_NONE = 0, /**< Take no field into account */ + ELM_CALENDAR_SELECTABLE_YEAR = 1 /* 1 >> 0 */, /**< Take year field into + * account */ + ELM_CALENDAR_SELECTABLE_MONTH = 2 /* 1 >> 1 */, /**< Take month field into + * account */ + ELM_CALENDAR_SELECTABLE_DAY = 4 /* 1 >> 2 */ /**< Take day field into account + */ +} Elm_Calendar_Selectable; + +/** Item handle for a calendar mark. Created with @ref elm_calendar_mark_add + * and deleted with @ref Elm.Calendar.mark_del. + * + * @ingroup Elm_Calendar + */ +typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark; + + +#endif + +/** + * @brief The first day of week to use on calendar widgets'. + * + * @param[in] obj The object. + * @param[in] day Weekday enum value, see @ref Elm_Calendar_Weekday + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_first_day_of_week_set(Elm_Calendar *obj, Elm_Calendar_Weekday day); + +/** + * @brief The first day of week to use on calendar widgets'. + * + * @param[in] obj The object. + * + * @return Weekday enum value, see @ref Elm_Calendar_Weekday + * + * @ingroup Elm_Calendar_Group + */ +EAPI Elm_Calendar_Weekday elm_calendar_first_day_of_week_get(const Elm_Calendar *obj); + +/** + * @brief Define which fields of a tm struct will be taken into account, when + * Elm.Calendar.selected_time.set is invoked. + * + * By Default the bitmask is set to use all fields of a tm struct (year, month + * and day of the month). + * + * See also @ref elm_calendar_selected_time_set. + * + * @param[in] obj The object. + * @param[in] selectable A bitmask of Elm_Calendar_Selectable + * + * @since 1.8 + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_selectable_set(Elm_Calendar *obj, Elm_Calendar_Selectable selectable); + +/** + * @brief Define which fields of a tm struct will be taken into account, when + * Elm.Calendar.selected_time.set is invoked. + * + * By Default the bitmask is set to use all fields of a tm struct (year, month + * and day of the month). + * + * See also @ref elm_calendar_selected_time_set. + * + * @param[in] obj The object. + * + * @return A bitmask of Elm_Calendar_Selectable + * + * @since 1.8 + * + * @ingroup Elm_Calendar_Group + */ +EAPI Elm_Calendar_Selectable elm_calendar_selectable_get(const Elm_Calendar *obj); + +/** + * @brief The interval on time updates for an user mouse button hold on + * calendar widgets' month/year selection. + * + * This interval value is decreased while the user holds the mouse pointer + * either selecting next or previous month/year. + * + * This helps the user to get to a given month distant from the current one + * easier/faster, as it will start to change quicker and quicker on mouse + * button holds. + * + * The calculation for the next change interval value, starting from the one + * set with this call, is the previous interval divided by 1.05, so it + * decreases a little bit. + * + * The default starting interval value for automatic changes is 0.85 seconds. + * + * @param[in] obj The object. + * @param[in] interval The (first) interval value in seconds + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_interval_set(Elm_Calendar *obj, double interval); + +/** + * @brief The interval on time updates for an user mouse button hold on + * calendar widgets' month/year selection. + * + * This interval value is decreased while the user holds the mouse pointer + * either selecting next or previous month/year. + * + * This helps the user to get to a given month distant from the current one + * easier/faster, as it will start to change quicker and quicker on mouse + * button holds. + * + * The calculation for the next change interval value, starting from the one + * set with this call, is the previous interval divided by 1.05, so it + * decreases a little bit. + * + * The default starting interval value for automatic changes is 0.85 seconds. + * + * @param[in] obj The object. + * + * @return The (first) interval value in seconds + * + * @ingroup Elm_Calendar_Group + */ +EAPI double elm_calendar_interval_get(const Elm_Calendar *obj); + +/** + * @brief Weekdays names to be displayed by the calendar. + * + * By default, weekdays abbreviations get from system are displayed: E.g. for + * an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat" + * + * The first string should be related to Sunday, the second to Monday... + * + * See also @ref elm_calendar_weekdays_names_get. + * + * @ref calendar_example_02. @ref calendar_example_05. + * + * @param[in] obj The object. + * @param[in] weekdays Array of seven strings to be used as weekday names. + * Warning: It must have 7 elements, or it will access invalid memory. Warning: + * The strings must be @c null terminated ('@\0'). + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_weekdays_names_set(Elm_Calendar *obj, const char **weekdays); + +/** + * @brief Weekdays names to be displayed by the calendar. + * + * By default, weekdays abbreviations get from system are displayed: E.g. for + * an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat" + * + * The first string should be related to Sunday, the second to Monday... + * + * See also @ref elm_calendar_weekdays_names_get. + * + * @ref calendar_example_02. @ref calendar_example_05. + * + * @param[in] obj The object. + * + * @return Array of seven strings to be used as weekday names. Warning: It must + * have 7 elements, or it will access invalid memory. Warning: The strings must + * be @c null terminated ('@\0'). + * + * @ingroup Elm_Calendar_Group + */ +EAPI const char **elm_calendar_weekdays_names_get(const Elm_Calendar *obj); + +/** + * @brief Select day mode to use. + * + * The day selection mode used. + * + * @param[in] obj The object. + * @param[in] mode The select mode to use. + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_select_mode_set(Elm_Calendar *obj, Elm_Calendar_Select_Mode mode); + +/** + * @brief Select day mode to use. + * + * The day selection mode used. + * + * @param[in] obj The object. + * + * @return The select mode to use. + * + * @ingroup Elm_Calendar_Group + */ +EAPI Elm_Calendar_Select_Mode elm_calendar_select_mode_get(const Elm_Calendar *obj); + +/** + * @brief Set a function to format the string that will be used to display + * month and year; + * + * By default it uses strftime with "%B %Y" format string. It should allocate + * the memory that will be used by the string, that will be freed by the widget + * after usage. A pointer to the string and a pointer to the time struct will + * be provided. + * + * @ref calendar_example_02. + * + * @param[in] obj The object. + * @param[in] format_function Function to set the month-year string given the + * selected date. + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_format_function_set(Elm_Calendar *obj, Elm_Calendar_Format_Cb format_function); + +/** + * @brief Get a list of all the calendar marks. + * + * See also @ref elm_calendar_mark_add, @ref Elm.Calendar.mark_del(), + * @ref elm_calendar_marks_clear. + * + * @param[in] obj The object. + * + * @return List with all calendar marks + * + * @ingroup Elm_Calendar_Group + */ +EAPI const Eina_List *elm_calendar_marks_get(const Elm_Calendar *obj); + +/** + * @brief Minimum date on calendar. + * + * See also @ref elm_calendar_date_max_set, @ref elm_calendar_date_max_get + * + * Set minimum date on calendar. + * + * Set the minimum date, changing the displayed month or year if needed. + * Displayed day also to be disabled if it is smaller than minimum date. + * + * @param[in] obj The object. + * @param[in] min A tm struct to point to minimum date. + * + * @since 1.19 + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_date_min_set(Elm_Calendar *obj, const Efl_Time *min); + +/** + * @brief Minimum date on calendar. + * + * See also @ref elm_calendar_date_max_set, @ref elm_calendar_date_max_get + * + * Get minimum date. + * + * Default value is 1 JAN,1902. + * + * @param[in] obj The object. + * + * @return A tm struct to point to minimum date. + * + * @since 1.19 + * + * @ingroup Elm_Calendar_Group + */ +EAPI const Efl_Time *elm_calendar_date_min_get(const Elm_Calendar *obj); + +/** + * @brief Maximum date on calendar. + * + * See also @ref elm_calendar_date_min_set, @ref elm_calendar_date_min_get + * + * Set maximum date on calendar. + * + * Set the maximum date, changing the displayed month or year if needed. + * Displayed day also to be disabled if it is bigger than maximum date. + * + * @param[in] obj The object. + * @param[in] max A tm struct to point to maximum date. + * + * @since 1.19 + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_date_max_set(Elm_Calendar *obj, const Efl_Time *max); + +/** + * @brief Maximum date on calendar. + * + * See also @ref elm_calendar_date_min_set, @ref elm_calendar_date_min_get + * + * Get maximum date. + * + * Default maximum year is -1. Default maximum day and month are 31 and DEC. + * + * If the maximum year is a negative value, it will be limited depending on the + * platform architecture (year 2037 for 32 bits); + * + * @param[in] obj The object. + * + * @return A tm struct to point to maximum date. + * + * @since 1.19 + * + * @ingroup Elm_Calendar_Group + */ +EAPI const Efl_Time *elm_calendar_date_max_get(const Elm_Calendar *obj); + +/** + * @brief Set selected date to be highlighted on calendar. + * + * Set the selected date, changing the displayed month if needed. Selected date + * changes when the user goes to next/previous month or select a day pressing + * over it on calendar. + * + * See also @ref elm_calendar_selected_time_get. + * + * @ref calendar_example_04 + * + * @param[in] obj The object. + * @param[in] selected_time A tm struct to represent the selected date. + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_selected_time_set(Elm_Calendar *obj, Efl_Time *selected_time); + +/** + * @brief Get selected date. + * + * Get date selected by the user or set by function + * @ref elm_calendar_selected_time_set(). Selected date changes when the user + * goes to next/previous month or select a day pressing over it on calendar. + * + * See also @ref elm_calendar_selected_time_get. + * + * @ref calendar_example_05. + * + * @param[in] obj The object. + * @param[in,out] selected_time A tm struct to point to selected date. + * + * @return @c true if the method succeeded, @c false otherwise + * + * @ingroup Elm_Calendar_Group + */ +EAPI Eina_Bool elm_calendar_selected_time_get(const Elm_Calendar *obj, Efl_Time *selected_time); + +/** + * @brief Add a new mark to the calendar + * + * Add a mark that will be drawn in the calendar respecting the insertion time + * and periodicity. It will emit the type as signal to the widget theme. + * Default theme supports "holiday" and "checked", but it can be extended. + * + * It won't immediately update the calendar, drawing the marks. For this, + * @ref elm_calendar_marks_draw(). However, when user selects next or previous + * month calendar forces marks drawn. + * + * Marks created with this method can be deleted with + * @ref Elm.Calendar.mark_del(). + * + * See also @ref elm_calendar_marks_draw, @ref Elm.Calendar.mark_del(). + * + * @ref calendar_example_06 + * + * @param[in] obj The object. + * @param[in] mark_type A string used to define the type of mark. It will be + * emitted to the theme, that should display a related modification on these + * days representation. + * @param[in] mark_time A time struct to represent the date of inclusion of the + * mark. For marks that repeats it will just be displayed after the inclusion + * date in the calendar. + * @param[in] repeat Repeat the event following this periodicity. Can be a + * unique mark (that don't repeat), daily, weekly, monthly or annually. + * + * @return The newly added calendar mark + * + * @ingroup Elm_Calendar_Group + */ +EAPI Elm_Calendar_Mark *elm_calendar_mark_add(Elm_Calendar *obj, const char *mark_type, Efl_Time *mark_time, Elm_Calendar_Mark_Repeat_Type repeat); + + +/** + * @brief Remove all calendar's marks + * + * See also @ref elm_calendar_mark_add, @ref Elm.Calendar.mark_del(). + * @param[in] obj The object. + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_marks_clear(Elm_Calendar *obj); + +/** + * @brief Draw calendar marks. + * + * Should be used after adding, removing or clearing marks. It will go through + * the entire marks list updating the calendar. If lots of marks will be added, + * add all the marks and then call this function. + * + * When the month is changed, i.e. user selects next or previous month, marks + * will be drawn. + * + * See also @ref elm_calendar_mark_add, @ref Elm.Calendar.mark_del(), + * @ref elm_calendar_marks_clear. + * + * @ref calendar_example_06 + * @param[in] obj The object. + * + * @ingroup Elm_Calendar_Group + */ +EAPI void elm_calendar_marks_draw(Elm_Calendar *obj); + +/** + * @brief Get the current time displayed in the widget + * + * @param[in] obj The object. + * @param[in,out] displayed_time A tm struct to point to displayed date. + * + * @return @c true if the method succeeded, @c false otherwise + * + * @since 1.8 + * + * @ingroup Elm_Calendar_Group + */ +EAPI Eina_Bool elm_calendar_displayed_time_get(const Elm_Calendar *obj, Efl_Time *displayed_time); + +#endif diff --git a/src/lib/elementary/elm_calendar_item.eo b/src/lib/elementary/elm_calendar_item.eo deleted file mode 100644 index 3bb6f4dc46..0000000000 --- a/src/lib/elementary/elm_calendar_item.eo +++ /dev/null @@ -1,17 +0,0 @@ -class Elm.Calendar.Item extends Efl.Object implements Efl.Ui.Focus.Object -{ - [[Elm Calendar Item class]] - methods { - @property day_number { - [[Day number property]] - values { - i : int; [[Day number]] - } - } - } - implements { - Efl.Ui.Focus.Object.focus {set;} - Efl.Ui.Focus.Object.focus_parent {get;} - Efl.Ui.Focus.Object.focus_geometry {get;} - } -} diff --git a/src/lib/elementary/elm_calendar_item_eo.c b/src/lib/elementary/elm_calendar_item_eo.c new file mode 100644 index 0000000000..f16163aaf5 --- /dev/null +++ b/src/lib/elementary/elm_calendar_item_eo.c @@ -0,0 +1,85 @@ + +void _elm_calendar_item_day_number_set(Eo *obj, Elm_Calendar_Item_Data *pd, int i); + + +static Eina_Error +__eolian_elm_calendar_item_day_number_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; int cval; + if (!eina_value_int_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_calendar_item_day_number_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_calendar_item_day_number_set, EFL_FUNC_CALL(i), int i); + +int _elm_calendar_item_day_number_get(const Eo *obj, Elm_Calendar_Item_Data *pd); + + +static Eina_Value +__eolian_elm_calendar_item_day_number_get_reflect(Eo *obj) +{ + int val = elm_calendar_item_day_number_get(obj); + return eina_value_int_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_calendar_item_day_number_get, int, 0); + +void _elm_calendar_item_efl_ui_focus_object_focus_set(Eo *obj, Elm_Calendar_Item_Data *pd, Eina_Bool focus); + + +Efl_Ui_Focus_Object *_elm_calendar_item_efl_ui_focus_object_focus_parent_get(const Eo *obj, Elm_Calendar_Item_Data *pd); + + +Eina_Rect _elm_calendar_item_efl_ui_focus_object_focus_geometry_get(const Eo *obj, Elm_Calendar_Item_Data *pd); + + +static Eina_Bool +_elm_calendar_item_class_initializer(Efl_Class *klass) +{ + const Efl_Object_Ops *opsp = NULL; + + const Efl_Object_Property_Reflection_Ops *ropsp = NULL; + +#ifndef ELM_CALENDAR_ITEM_EXTRA_OPS +#define ELM_CALENDAR_ITEM_EXTRA_OPS +#endif + + EFL_OPS_DEFINE(ops, + EFL_OBJECT_OP_FUNC(elm_calendar_item_day_number_set, _elm_calendar_item_day_number_set), + EFL_OBJECT_OP_FUNC(elm_calendar_item_day_number_get, _elm_calendar_item_day_number_get), + EFL_OBJECT_OP_FUNC(efl_ui_focus_object_focus_set, _elm_calendar_item_efl_ui_focus_object_focus_set), + EFL_OBJECT_OP_FUNC(efl_ui_focus_object_focus_parent_get, _elm_calendar_item_efl_ui_focus_object_focus_parent_get), + EFL_OBJECT_OP_FUNC(efl_ui_focus_object_focus_geometry_get, _elm_calendar_item_efl_ui_focus_object_focus_geometry_get), + ELM_CALENDAR_ITEM_EXTRA_OPS + ); + opsp = &ops; + + static const Efl_Object_Property_Reflection refl_table[] = { + {"day_number", __eolian_elm_calendar_item_day_number_set_reflect, __eolian_elm_calendar_item_day_number_get_reflect}, + }; + static const Efl_Object_Property_Reflection_Ops rops = { + refl_table, EINA_C_ARRAY_LENGTH(refl_table) + }; + ropsp = &rops; + + return efl_class_functions_set(klass, opsp, ropsp); +} + +static const Efl_Class_Description _elm_calendar_item_class_desc = { + EO_VERSION, + "Elm.Calendar.Item", + EFL_CLASS_TYPE_REGULAR, + sizeof(Elm_Calendar_Item_Data), + _elm_calendar_item_class_initializer, + NULL, + NULL +}; + +EFL_DEFINE_CLASS(elm_calendar_item_class_get, &_elm_calendar_item_class_desc, EFL_OBJECT_CLASS, EFL_UI_FOCUS_OBJECT_MIXIN, NULL); diff --git a/src/lib/elementary/elm_calendar_item_eo.h b/src/lib/elementary/elm_calendar_item_eo.h new file mode 100644 index 0000000000..39f5c435bf --- /dev/null +++ b/src/lib/elementary/elm_calendar_item_eo.h @@ -0,0 +1,45 @@ +#ifndef _ELM_CALENDAR_ITEM_EO_H_ +#define _ELM_CALENDAR_ITEM_EO_H_ + +#ifndef _ELM_CALENDAR_ITEM_EO_CLASS_TYPE +#define _ELM_CALENDAR_ITEM_EO_CLASS_TYPE + +typedef Eo Elm_Calendar_Item; + +#endif + +#ifndef _ELM_CALENDAR_ITEM_EO_TYPES +#define _ELM_CALENDAR_ITEM_EO_TYPES + + +#endif +/** Elm Calendar Item class + * + * @ingroup Elm_Calendar_Item + */ +#define ELM_CALENDAR_ITEM_CLASS elm_calendar_item_class_get() + +EWAPI const Efl_Class *elm_calendar_item_class_get(void); + +/** + * @brief Day number property + * + * @param[in] obj The object. + * @param[in] i Day number + * + * @ingroup Elm_Calendar_Item + */ +EOAPI void elm_calendar_item_day_number_set(Eo *obj, int i); + +/** + * @brief Day number property + * + * @param[in] obj The object. + * + * @return Day number + * + * @ingroup Elm_Calendar_Item + */ +EOAPI int elm_calendar_item_day_number_get(const Eo *obj); + +#endif diff --git a/src/lib/elementary/elm_calendar_item_eo.legacy.h b/src/lib/elementary/elm_calendar_item_eo.legacy.h new file mode 100644 index 0000000000..f406a7f060 --- /dev/null +++ b/src/lib/elementary/elm_calendar_item_eo.legacy.h @@ -0,0 +1,19 @@ +#ifndef _ELM_CALENDAR_ITEM_EO_LEGACY_H_ +#define _ELM_CALENDAR_ITEM_EO_LEGACY_H_ + +#ifndef _ELM_CALENDAR_ITEM_EO_CLASS_TYPE +#define _ELM_CALENDAR_ITEM_EO_CLASS_TYPE + +typedef Eo Elm_Calendar_Item; + +#endif + +#ifndef _ELM_CALENDAR_ITEM_EO_TYPES +#define _ELM_CALENDAR_ITEM_EO_TYPES + + +#endif + + + +#endif diff --git a/src/lib/elementary/elm_calendar_legacy.h b/src/lib/elementary/elm_calendar_legacy.h index adb6a6b80e..8f450c79a3 100644 --- a/src/lib/elementary/elm_calendar_legacy.h +++ b/src/lib/elementary/elm_calendar_legacy.h @@ -1,4 +1,4 @@ -#include "elm_calendar.eo.legacy.h" +#include "elm_calendar_eo.legacy.h" /** * Add a new calendar widget to the given parent Elementary diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build index dcf1b0f858..3ed9a36a09 100644 --- a/src/lib/elementary/meson.build +++ b/src/lib/elementary/meson.build @@ -2,8 +2,6 @@ pub_legacy_eo_files = [ 'efl_ui_clock_legacy.eo', 'elm_code_widget_legacy.eo', 'elm_interface_fileselector.eo', - 'elm_calendar.eo', - 'elm_calendar_item.eo', 'elm_clock.eo', 'elm_colorselector.eo', 'elm_conformant.eo', @@ -726,6 +724,10 @@ elementary_pub_headers = [ 'elm_box_eo.legacy.h', 'elm_bubble_eo.h', 'elm_bubble_eo.legacy.h', + 'elm_calendar_eo.h', + 'elm_calendar_eo.legacy.h', + 'elm_calendar_item_eo.h', + 'elm_calendar_item_eo.legacy.h', 'elm_hoversel_eo.h', 'elm_hoversel_eo.legacy.h', 'elm_hoversel_item_eo.h',