X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Flib%2Felm_widget_dayselector.h;h=6edee48914a9e41863e95daba97a81af478d3995;hb=55a7e1dcc1a9fd3dfac0a5d6e5e9caf1d0ba08a8;hp=3ff59469aa5c86865cd5b3bec6455907aaf904e5;hpb=dbb9b33dd9ab302713744fa4acbf10c80a36f34a;p=framework%2Fuifw%2Felementary.git diff --git a/src/lib/elm_widget_dayselector.h b/src/lib/elm_widget_dayselector.h index 3ff5946..6edee48 100644 --- a/src/lib/elm_widget_dayselector.h +++ b/src/lib/elm_widget_dayselector.h @@ -1,7 +1,15 @@ #ifndef ELM_WIDGET_DAYSELECTOR_H #define ELM_WIDGET_DAYSELECTOR_H -#include "elm_widget_layout.h" +#include "Elementary.h" +#include "elm_dayselector_item.eo.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. + */ /** * @internal @@ -16,124 +24,22 @@ */ /** - * @def ELM_DAYSELECTOR_CLASS - * - * Use this macro to cast whichever subclass of - * #Elm_Dayselector_Smart_Class into it, so to access its fields. - * - * @ingroup Widget - */ -#define ELM_DAYSELECTOR_CLASS(x) ((Elm_Dayselector_Smart_Class *)x) - -/** - * @def ELM_DAYSELECTOR_DATA - * - * Use this macro to cast whichever subdata of - * #Elm_Dayselector_Smart_Data into it, so to access its fields. - * - * @ingroup Widget - */ -#define ELM_DAYSELECTOR_DATA(x) ((Elm_Dayselector_Smart_Data *)x) - -/** - * @def ELM_DAYSELECTOR_SMART_CLASS_VERSION - * - * Current version for Elementary dayselector @b base smart class, a value - * which goes to _Elm_Dayselector_Smart_Class::version. - * - * @ingroup Widget - */ -#define ELM_DAYSELECTOR_SMART_CLASS_VERSION 1 - -/** - * @def ELM_DAYSELECTOR_SMART_CLASS_INIT - * - * Initializer for a whole #Elm_Dayselector_Smart_Class structure, with - * @c NULL values on its specific fields. - * - * @param smart_class_init initializer to use for the "base" field - * (#Evas_Smart_Class). - * - * @see EVAS_SMART_CLASS_INIT_NULL - * @see EVAS_SMART_CLASS_INIT_NAME_VERSION - * @see ELM_DAYSELECTOR_SMART_CLASS_INIT_NULL - * @see ELM_DAYSELECTOR_SMART_CLASS_INIT_NAME_VERSION - * - * @ingroup Widget - */ -#define ELM_DAYSELECTOR_SMART_CLASS_INIT(smart_class_init) \ - {smart_class_init, ELM_DAYSELECTOR_SMART_CLASS_VERSION} - -/** - * @def ELM_DAYSELECTOR_SMART_CLASS_INIT_NULL - * - * Initializer to zero out a whole #Elm_Dayselector_Smart_Class structure. - * - * @see ELM_DAYSELECTOR_SMART_CLASS_INIT_NAME_VERSION - * @see ELM_DAYSELECTOR_SMART_CLASS_INIT - * - * @ingroup Widget - */ -#define ELM_DAYSELECTOR_SMART_CLASS_INIT_NULL \ - ELM_DAYSELECTOR_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NULL) - -/** - * @def ELM_DAYSELECTOR_SMART_CLASS_INIT_NAME_VERSION - * - * Initializer to zero out a whole #Elm_Dayselector_Smart_Class structure and - * set its name and version. - * - * This is similar to #ELM_DAYSELECTOR_SMART_CLASS_INIT_NULL, but it will - * also set the version field of #Elm_Dayselector_Smart_Class (base field) - * to the latest #ELM_DAYSELECTOR_SMART_CLASS_VERSION and name it to the - * specific value. - * - * It will keep a reference to the name field as a "const char *", - * i.e., the name must be available while the structure is - * used (hint: static or global variable!) and must not be modified. - * - * @see ELM_DAYSELECTOR_SMART_CLASS_INIT_NULL - * @see ELM_DAYSELECTOR_SMART_CLASS_INIT - * - * @ingroup Widget - */ -#define ELM_DAYSELECTOR_SMART_CLASS_INIT_NAME_VERSION(name) \ - ELM_DAYSELECTOR_SMART_CLASS_INIT \ - (ELM_LAYOUT_SMART_CLASS_INIT_NAME_VERSION(name)) - -/** - * Elementary dayselector base smart class. This inherits directly from - * #Elm_Layout_Smart_Class and is meant to build widgets extending the - * behavior of a dayselector. - * - * All of the functions listed on @ref Dayselector namespace will work for - * objects deriving from #Elm_Dayselector_Smart_Class. - */ -typedef struct _Elm_Dayselector_Smart_Class -{ - Elm_Layout_Smart_Class base; - - int version; /**< Version of this smart class definition */ -} Elm_Dayselector_Smart_Class; - -/** * Base layout smart data extended with dayselector instance data. */ -typedef struct _Elm_Dayselector_Smart_Data Elm_Dayselector_Smart_Data; -struct _Elm_Dayselector_Smart_Data +typedef struct _Elm_Dayselector_Data Elm_Dayselector_Data; +struct _Elm_Dayselector_Data { - Elm_Layout_Smart_Data base; - Eina_List *items; Elm_Dayselector_Day week_start; Elm_Dayselector_Day weekend_start; unsigned int weekend_len; + Eina_Bool weekdays_names_set : 1; }; -typedef struct _Elm_Dayselector_Item Elm_Dayselector_Item; -struct _Elm_Dayselector_Item +typedef struct _Elm_Dayselector_Item_Data Elm_Dayselector_Item_Data; +struct _Elm_Dayselector_Item_Data { - ELM_WIDGET_ITEM; + Elm_Widget_Item_Data *base; Elm_Dayselector_Day day; const char *day_style; }; @@ -142,34 +48,32 @@ struct _Elm_Dayselector_Item * @} */ -EAPI extern const char ELM_DAYSELECTOR_SMART_NAME[]; -EAPI const Elm_Dayselector_Smart_Class -*elm_dayselector_smart_class_get(void); - #define ELM_DAYSELECTOR_DATA_GET(o, sd) \ - Elm_Dayselector_Smart_Data * sd = evas_object_smart_data_get(o) + Elm_Dayselector_Data * sd = eo_data_scope_get(o, ELM_DAYSELECTOR_CLASS) #define ELM_DAYSELECTOR_DATA_GET_OR_RETURN(o, ptr) \ ELM_DAYSELECTOR_DATA_GET(o, ptr); \ - if (!ptr) \ + if (EINA_UNLIKELY(!ptr)) \ { \ - CRITICAL("No widget data for object %p (%s)", \ - o, evas_object_type_get(o)); \ + CRI("No widget data for object %p (%s)", \ + o, evas_object_type_get(o)); \ return; \ } #define ELM_DAYSELECTOR_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ ELM_DAYSELECTOR_DATA_GET(o, ptr); \ - if (!ptr) \ + if (EINA_UNLIKELY(!ptr)) \ { \ - CRITICAL("No widget data for object %p (%s)", \ - o, evas_object_type_get(o)); \ + CRI("No widget data for object %p (%s)", \ + o, evas_object_type_get(o)); \ return val; \ } -#define ELM_DAYSELECTOR_CHECK(obj) \ - if (!obj || !elm_widget_type_check \ - ((obj), ELM_DAYSELECTOR_SMART_NAME, __func__)) \ +#define ELM_DAYSELECTOR_CHECK(obj) \ + if (EINA_UNLIKELY(!eo_isa((obj), ELM_DAYSELECTOR_CLASS))) \ return +#define ELM_DAYSELECTOR_ITEM_DATA_GET(o, sd) \ + Elm_Dayselector_Item_Data * sd = eo_data_scope_get(o, ELM_DAYSELECTOR_ITEM_CLASS) + #endif