elementary: add elm_calendar_selectable_set

SVN revision: 76478
This commit is contained in:
Michael BOUCHAUD 2012-09-11 21:33:54 +00:00
parent 47d2139e0f
commit 6b520ae48d
4 changed files with 91 additions and 3 deletions

View File

@ -326,6 +326,9 @@ test_calendar3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
cal = elm_calendar_add(win);
elm_calendar_first_day_of_week_set(cal, ELM_DAY_THURSDAY);
elm_calendar_select_mode_set(cal, ELM_CALENDAR_SELECT_MODE_ONDEMAND);
elm_calendar_selectable_set(cal,
(ELM_CALENDAR_SELECTABLE_YEAR
| ELM_CALENDAR_SELECTABLE_MONTH));
current_time = time(NULL) + 34 * 84600;
localtime_r(&current_time, &selected_time);
elm_calendar_selected_time_set(cal, &selected_time);

View File

@ -711,6 +711,7 @@ _elm_calendar_smart_add(Evas_Object *obj)
priv->first_day_it = -1;
priv->format_func = _format_month_year;
priv->marks = NULL;
priv->selectable = (~(ELM_CALENDAR_SELECTABLE_NONE));
edje_object_signal_callback_add
(ELM_WIDGET_DATA(priv)->resize_obj, "elm,action,increment,start", "*",
@ -943,9 +944,21 @@ elm_calendar_selected_time_set(Evas_Object *obj,
ELM_CALENDAR_DATA_GET(obj, sd);
EINA_SAFETY_ON_NULL_RETURN(selected_time);
sd->selected_time = *selected_time;
if (!sd->selected)
sd->selected = EINA_TRUE;
if (sd->selectable & ELM_CALENDAR_SELECTABLE_YEAR)
sd->selected_time.tm_year = selected_time->tm_year;
if (sd->selectable & ELM_CALENDAR_SELECTABLE_MONTH)
sd->selected_time.tm_mon = selected_time->tm_mon;
if (sd->selectable & ELM_CALENDAR_SELECTABLE_DAY)
{
sd->selected_time.tm_mday = selected_time->tm_mday;
if (!sd->selected)
sd->selected = EINA_TRUE;
}
else if (sd->select_mode != ELM_CALENDAR_SELECT_MODE_ONDEMAND)
{
if (!sd->selected)
sd->selected = EINA_TRUE;
}
if (sd->selected_time.tm_year != sd->shown_time.tm_year)
sd->shown_time.tm_year = sd->selected_time.tm_year;
if (sd->selected_time.tm_mon != sd->shown_time.tm_mon)
@ -1094,3 +1107,22 @@ elm_calendar_select_mode_get(const Evas_Object *obj)
return sd->select_mode;
}
EAPI void
elm_calendar_selectable_set(Evas_Object *obj, Elm_Calendar_Selectable selectable)
{
ELM_CALENDAR_CHECK(obj);
ELM_CALENDAR_DATA_GET(obj, sd);
sd->selectable = selectable;
}
EAPI Elm_Calendar_Selectable
elm_calendar_selectable_get(const Evas_Object *obj)
{
ELM_CALENDAR_CHECK(obj) -1;
ELM_CALENDAR_DATA_GET_OR_RETURN_VAL(obj, sd, -1);
return sd->selectable;
}

View File

@ -117,6 +117,28 @@ typedef enum
*/
typedef _Elm_Calendar_Select_Mode Elm_Calendar_Select_Mode;
typedef enum
{
ELM_CALENDAR_SELECTABLE_NONE = 0,
ELM_CALENDAR_SELECTABLE_YEAR = (1 << 0),
ELM_CALENDAR_SELECTABLE_MONTH = (1 << 1),
ELM_CALENDAR_SELECTABLE_DAY = (1 << 2)
} _Elm_Calendar_Selectable;
/**
* @enum _Elm_Calendar_Selectable
* @typedef Elm_Calendar_Selectable
*
* A bitmask used to define which fields of a @b tm struct will be taken into
* account, when elm_calendar_selected_time_set() is invoked.
*
* @ingroup Calendar
* @see elm_calendar_selectable_set()
* @see elm_calendar_selected_time_set()
* @since 1.8
*/
typedef _Elm_Calendar_Selectable Elm_Calendar_Selectable;
typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark; /**< Item handle for a calendar mark. Created with elm_calendar_mark_add() and deleted with elm_calendar_mark_del(). */
/**
@ -515,6 +537,36 @@ EAPI void elm_calendar_first_day_of_week_set(Evas_Object *obj, E
*/
EAPI Elm_Calendar_Weekday elm_calendar_first_day_of_week_get(const Evas_Object *obj);
/**
* Define which fields of a @b tm struct will be taken into account, when
* elm_calendar_selected_time_set() is invoked.
*
* @param obj The calendar object
* @param selectable A bitmask of Elm_Calendar_Selectable
*
* By Default the bitmask is set to use all fields of a @b tm struct (year,
* month and day of the month).
*
* @ingroup Calendar
* @see elm_calendar_selected_time_set
* @since 1.8
*/
EAPI void elm_calendar_selectable_set(Evas_Object *obj, Elm_Calendar_Selectable selectable);
/**
* Get how elm_calendar_selected_time_set manage a date
*
* @param obj The calendar object
* @return The flag used to manage a date with a elm_calendar_selected_time_set
*
* @ingroup Calendar
* @see elm_calendar_selectable_set
* @see elm_calendar_selected_time_set
* @since 1.8
*/
EAPI Elm_Calendar_Selectable elm_calendar_selectable_get(const Evas_Object *obj);
/**
* @}
*/

View File

@ -143,6 +143,7 @@ struct _Elm_Calendar_Smart_Data
Day_Color day_color[42]; // EINA_DEPRECATED
Elm_Calendar_Select_Mode select_mode;
Eina_Bool selected : 1;
Elm_Calendar_Selectable selectable;
};
struct _Elm_Calendar_Mark