aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/weekday-picker.c
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@helixcode.com>2000-12-03 02:10:20 +0800
committerFederico Mena Quintero <federico@src.gnome.org>2000-12-03 02:10:20 +0800
commitb4680776083616beb63924706995a321622cd1cc (patch)
tree6f61b3b145acd3b533589ee6fc23f0fdc4baed6d /calendar/gui/weekday-picker.c
parentf70c74f37110d1bcb23227c720965a058cabf61c (diff)
downloadgsoc2013-evolution-b4680776083616beb63924706995a321622cd1cc.tar
gsoc2013-evolution-b4680776083616beb63924706995a321622cd1cc.tar.gz
gsoc2013-evolution-b4680776083616beb63924706995a321622cd1cc.tar.bz2
gsoc2013-evolution-b4680776083616beb63924706995a321622cd1cc.tar.lz
gsoc2013-evolution-b4680776083616beb63924706995a321622cd1cc.tar.xz
gsoc2013-evolution-b4680776083616beb63924706995a321622cd1cc.tar.zst
gsoc2013-evolution-b4680776083616beb63924706995a321622cd1cc.zip
Fixes bug #918.
2000-12-01 Federico Mena Quintero <federico@helixcode.com> Fixes bug #918. * gui/weekday-picker.c (WeekdayPickerPrivate): Added a field for a set of blocked days. (weekday_picker_set_blocked_days): New function to configure a set of days that cannot be modified by the user. (weekday_picker_get_blocked_days): Query function for the above. (day_event_cb): Block the appropriate days from being modified. * gui/event-editor.c (get_start_weekday_mask): New function to compute a day mask for the start day of a calendar component. (set_recur_special_defaults): New function to set sane defaults for the recurrence special widgets. (fill_recurrence_widgets): Use set_recur_special_defaults(). (make_recur_weekly_special): Block the appropriate days. svn path=/trunk/; revision=6767
Diffstat (limited to 'calendar/gui/weekday-picker.c')
-rw-r--r--calendar/gui/weekday-picker.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/calendar/gui/weekday-picker.c b/calendar/gui/weekday-picker.c
index 8ebcf1d970..4c0ede2579 100644
--- a/calendar/gui/weekday-picker.c
+++ b/calendar/gui/weekday-picker.c
@@ -38,6 +38,9 @@ struct _WeekdayPickerPrivate {
/* Selected days; see weekday_picker_set_days() */
guint8 day_mask;
+ /* Blocked days; these cannot be modified */
+ guint8 blocked_day_mask;
+
/* Metrics */
int font_ascent, font_descent;
int max_letter_width;
@@ -168,6 +171,9 @@ day_event_cb (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
i++;
}
+ if (priv->blocked_day_mask & (0x1 << i))
+ return TRUE;
+
if (priv->day_mask & (0x1 << i))
day_mask = priv->day_mask & ~(0x1 << i);
else
@@ -515,6 +521,49 @@ weekday_picker_get_days (WeekdayPicker *wp)
}
/**
+ * weekday_picker_set_blocked_days:
+ * @wp: A weekday picker.
+ * @blocked_day_mask: Bitmask with the days to be blocked.
+ *
+ * Sets the days that the weekday picker will prevent from being modified by the
+ * user. The @blocked_day_mask is specified in the same way as in
+ * weekday_picker_set_days().
+ **/
+void
+weekday_picker_set_blocked_days (WeekdayPicker *wp, guint8 blocked_day_mask)
+{
+ WeekdayPickerPrivate *priv;
+
+ g_return_if_fail (wp != NULL);
+ g_return_if_fail (IS_WEEKDAY_PICKER (wp));
+
+ priv = wp->priv;
+ priv->blocked_day_mask = blocked_day_mask;
+}
+
+/**
+ * weekday_picker_get_blocked_days:
+ * @wp: A weekday picker.
+ *
+ * Queries the set of days that the weekday picker prevents from being modified
+ * by the user.
+ *
+ * Return value: Bit mask of blocked days, with the same format as that returned
+ * by weekday_picker_get_days().
+ **/
+guint
+weekday_picker_get_blocked_days (WeekdayPicker *wp)
+{
+ WeekdayPickerPrivate *priv;
+
+ g_return_val_if_fail (wp != NULL, 0);
+ g_return_val_if_fail (IS_WEEKDAY_PICKER (wp), 0);
+
+ priv = wp->priv;
+ return priv->blocked_day_mask;
+}
+
+/**
* weekday_picker_set_week_starts_on_monday:
* @wp: A weekday picker.
* @on_monday: Whether weeks start on Monday.