diff --git a/calendar/base/content/calendar-decorated-month-view.xml b/calendar/base/content/calendar-decorated-month-view.xml
index 4dfd2c1bf964..5f4ee78f8074 100644
--- a/calendar/base/content/calendar-decorated-month-view.xml
+++ b/calendar/base/content/calendar-decorated-month-view.xml
@@ -64,6 +64,8 @@
viewElem.weekStartOffset = pb2.getIntPref("calendar.week.start");
} catch (ex) {}
+ this.updateDaysOffPrefs();
+
// add a preference observer to monitor changes
pb2.addObserver("calendar.", this.mPrefObserver, false);
return;
@@ -85,6 +87,20 @@
switch (pref) {
+ case "calendar.previousweeks.inview":
+ case "calendar.week.d0sundaysoff":
+ case "calendar.week.d1mondaysoff":
+ case "calendar.week.d2tuesdaysoff":
+ case "calendar.week.d3wednesdaysoff":
+ case "calendar.week.d4thursdaysoff":
+ case "calendar.week.d5fridaysoff":
+ case "calendar.week.d6saturdaysoff":
+ this.calView.updateDaysOffPrefs();
+ if (this.calView.selectedDay) {
+ this.calView.goToDay(this.calView.selectedDay);
+ }
+ break;
+
case "calendar.week.start":
viewElem = document.getAnonymousElementByAttribute(
this.calView, "anonid", "view-element");
@@ -119,6 +135,7 @@
+
+
+
+
diff --git a/calendar/base/content/calendar-decorated-multiweek-view.xml b/calendar/base/content/calendar-decorated-multiweek-view.xml
index 02b6b86e00c5..2938f1e14ed5 100644
--- a/calendar/base/content/calendar-decorated-multiweek-view.xml
+++ b/calendar/base/content/calendar-decorated-multiweek-view.xml
@@ -69,6 +69,8 @@
this.mWeeksInView = pb2.getIntPref("calendar.weeks.inview");
} catch (ex) {}
+ this.updateDaysOffPrefs();
+
// add a preference observer to monitor changes
pb2.addObserver("calendar.", this.mPrefObserver, false);
return;
@@ -90,6 +92,20 @@
switch (pref) {
+ case "calendar.previousweeks.inview":
+ case "calendar.week.d0sundaysoff":
+ case "calendar.week.d1mondaysoff":
+ case "calendar.week.d2tuesdaysoff":
+ case "calendar.week.d3wednesdaysoff":
+ case "calendar.week.d4thursdaysoff":
+ case "calendar.week.d5fridaysoff":
+ case "calendar.week.d6saturdaysoff":
+ this.calView.updateDaysOffPrefs();
+ if (this.calView.selectedDay) {
+ this.calView.goToDay(this.calView.selectedDay);
+ }
+ break;
+
case "calendar.week.start":
viewElem = document.getAnonymousElementByAttribute(
this.calView, "anonid", "view-element");
@@ -146,6 +162,7 @@
var viewElement = document.getAnonymousElementByAttribute(this, "anonid", "view-element");
viewElement.showFullMonth = false;
viewElement.tasksInView = this.mTasksInView;
+ viewElement.displayDaysOff = !this.mWorkdaysOnly;
aDate = aDate.getInTimezone(viewElement.timezone);
@@ -219,10 +236,34 @@
+
+
+
+
diff --git a/calendar/base/content/calendar-decorated-week-view.xml b/calendar/base/content/calendar-decorated-week-view.xml
index 9643ef723989..728b4b0cd064 100644
--- a/calendar/base/content/calendar-decorated-week-view.xml
+++ b/calendar/base/content/calendar-decorated-week-view.xml
@@ -106,6 +106,22 @@
switch (pref) {
+ case "calendar.previousweeks.inview":
+ case "calendar.week.d0sundaysoff":
+ case "calendar.week.d1mondaysoff":
+ case "calendar.week.d2tuesdaysoff":
+ case "calendar.week.d3wednesdaysoff":
+ case "calendar.week.d4thursdaysoff":
+ case "calendar.week.d5fridaysoff":
+ case "calendar.week.d6saturdaysoff":
+ if (!this.calView.startDay || !this.calView.endDay) {
+ // Don't refresh if we're not initialized
+ return;
+ }
+
+ this.calView.goToDay(this.calView.selectedDay);
+ break;
+
case "calendar.view.defaultstarthour":
this.calView.mStartMin = subj.getIntPref(pref) * 60;
var viewElem = document.getAnonymousElementByAttribute(
diff --git a/calendar/base/content/calendar-month-view.xml b/calendar/base/content/calendar-month-view.xml
index 9d0148fe21a0..856531e94861 100644
--- a/calendar/base/content/calendar-month-view.xml
+++ b/calendar/base/content/calendar-month-view.xml
@@ -462,7 +462,8 @@
true
true
0
-
+ [0,6]
+ true
+
+
+
+
+
+
+
+
+
+
@@ -920,9 +941,12 @@
} else {
boxClass = "calendar-month-day-box-even";
}
- // XXX isWeekend?
- if (date.weekday == 0 || date.weekday == 6)
+
+ function matchesDayOff(dayOffNum) { return dayOffNum == date.weekday; }
+ if (this.mDaysOffArray.some(matchesDayOff)) {
boxClass = "calendar-month-day-box-weekend " + boxClass;
+ }
+
box.setAttribute("class", boxClass);
curRow.appendChild(box);
@@ -951,6 +975,7 @@
// Store these, so that we can access them later
this.mDateBoxes = dateBoxes;
+ this.hideDaysOff();
]]>