efl/src/lib/elementary/elm_widget_calendar.h

89 lines
2.6 KiB
C

#ifndef ELM_WIDGET_CALENDAR_H
#define ELM_WIDGET_CALENDAR_H
#include "Elementary.h"
/* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR
* CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT
* FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK
* IT AT RUNTIME.
*/
/**
* @addtogroup Widget
* @{
*
* @section elm-calendar-class The Elementary Calendar Class
*
* Elementary, besides having the @ref Calendar widget, exposes its
* foundation -- the Elementary Calendar Class -- in order to create other
* widgets which are a calendar with some more logic on top.
*/
/**
* Base layout smart data extended with calendar instance data.
*/
typedef struct _Elm_Calendar_Data Elm_Calendar_Data;
typedef enum _Day_Color // EINA_DEPRECATED
{
DAY_WEEKDAY = 0,
DAY_SATURDAY = 1,
DAY_SUNDAY = 2
} Day_Color;
struct _Elm_Calendar_Data
{
Evas_Object *obj; // the object itself
Eina_List *marks;
double interval, first_interval;
int spin_speed;
int today_it, selected_it, focused_it;
Ecore_Timer *update_timer, *spin_timer;
Elm_Calendar_Format_Cb format_func;
const char *weekdays[ELM_DAY_LAST];
struct tm current_time, selected_time, shown_time, date_min, date_max;
Day_Color day_color[42]; // EINA_DEPRECATED
Evas_Object *inc_btn_month;
Evas_Object *dec_btn_month;
Evas_Object *month_access;
Evas_Object *inc_btn_year;
Evas_Object *dec_btn_year;
Evas_Object *year_access;
Eo *items[42];
Elm_Calendar_Weekday first_week_day;
Elm_Calendar_Select_Mode select_mode;
Elm_Calendar_Selectable selectable;
unsigned char first_day_it;
Eina_Bool selected : 1;
Eina_Bool double_spinners : 1;
Eina_Bool filling : 1;
Eina_Bool weekdays_set : 1;
Eina_Bool month_btn_clicked : 1;
};
struct _Elm_Calendar_Mark
{
Evas_Object *obj;
Eina_List *node;
struct tm mark_time;
const char *mark_type;
Elm_Calendar_Mark_Repeat_Type repeat;
};
/**
* @}
*/
#define ELM_CALENDAR_DATA_GET(o, sd) \
Elm_Calendar_Data * sd = efl_data_scope_get(o, ELM_CALENDAR_CLASS)
#define ELM_CALENDAR_CHECK(obj) \
if (EINA_UNLIKELY(!efl_isa((obj), ELM_CALENDAR_CLASS))) \
return
#endif