mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 04:15:43 +00:00
Bug 321380 calendar-month-view.xml needs to support removing non-workweek days. r=mvl
This commit is contained in:
parent
d23aa826e7
commit
25eff7e0b1
@ -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 @@
|
||||
<body><![CDATA[
|
||||
var viewElement = document.getAnonymousElementByAttribute(this, "anonid", "view-element");
|
||||
viewElement.tasksInView = this.mTasksInView;
|
||||
viewElement.displayDaysOff = !this.mWorkdaysOnly;
|
||||
|
||||
aDate = aDate.getInTimezone(viewElement.timezone);
|
||||
|
||||
@ -136,6 +153,7 @@
|
||||
<body><![CDATA[
|
||||
var monthViewElement = document.getAnonymousElementByAttribute(this, "anonid", "view-element");
|
||||
var dates = monthViewElement.getDateList({});
|
||||
monthViewElement.displayDaysOff = !this.mWorkdaysOnly;
|
||||
|
||||
// The first few dates in this list are likely in the month
|
||||
// prior to the one actually being shown (since the month
|
||||
@ -192,6 +210,30 @@
|
||||
return;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="updateDaysOffPrefs">
|
||||
<body><![CDATA[
|
||||
try {
|
||||
var prefService = Components.classes[
|
||||
"@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefService);
|
||||
var weekBranch = prefService.getBranch("calendar.week.");
|
||||
var prefNames = ["d0sundaysoff", "d1mondaysoff", "d2tuesdaysoff",
|
||||
"d3wednesdaysoff", "d4thursdaysoff",
|
||||
"d5fridaysoff", "d6saturdaysoff"];
|
||||
var daysOff = new Array();
|
||||
for (var i in prefNames) {
|
||||
if (weekBranch.getBoolPref(prefNames[i])) {
|
||||
daysOff.push(Number(i));
|
||||
}
|
||||
}
|
||||
viewElem = document.getAnonymousElementByAttribute(
|
||||
this, "anonid", "view-element");
|
||||
|
||||
viewElem.daysOffArray = daysOff;
|
||||
} catch (ex) {}
|
||||
]]></body>
|
||||
</method>
|
||||
</implementation>
|
||||
</binding>
|
||||
</bindings>
|
||||
|
@ -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 @@
|
||||
</method>
|
||||
<method name="removeNonWorkdays">
|
||||
<body><![CDATA[
|
||||
// Not supported yet
|
||||
// This is handled by our pref observers and in the
|
||||
// embedded view.
|
||||
return;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="updateDaysOffPrefs">
|
||||
<body><![CDATA[
|
||||
try {
|
||||
var prefService = Components.classes[
|
||||
"@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefService);
|
||||
var weekBranch = prefService.getBranch("calendar.week.");
|
||||
var prefNames = ["d0sundaysoff", "d1mondaysoff", "d2tuesdaysoff",
|
||||
"d3wednesdaysoff", "d4thursdaysoff",
|
||||
"d5fridaysoff", "d6saturdaysoff"];
|
||||
var daysOff = new Array();
|
||||
for (var i in prefNames) {
|
||||
if (weekBranch.getBoolPref(prefNames[i])) {
|
||||
daysOff.push(Number(i));
|
||||
}
|
||||
}
|
||||
viewElem = document.getAnonymousElementByAttribute(
|
||||
this, "anonid", "view-element");
|
||||
viewElem.daysOffArray = daysOff;
|
||||
} catch (ex) {}
|
||||
]]></body>
|
||||
</method>
|
||||
</implementation>
|
||||
</binding>
|
||||
</bindings>
|
||||
|
@ -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(
|
||||
|
@ -462,7 +462,8 @@
|
||||
<field name="mTasksInView">true</field>
|
||||
<field name="mShowFullMonth">true</field>
|
||||
<field name="mWeekStartOffset">0</field>
|
||||
|
||||
<field name="mDaysOffArray">[0,6]</field>
|
||||
<field name="mDisplayDaysOff">true</field>
|
||||
|
||||
<field name="mSelectionObserver"><![CDATA[
|
||||
({ calView: this,
|
||||
@ -533,6 +534,26 @@
|
||||
]]></setter>
|
||||
</property>
|
||||
|
||||
<property name="displayDaysOff">
|
||||
<getter><![CDATA[
|
||||
return this.mDisplayDaysOff;
|
||||
]]></getter>
|
||||
<setter><![CDATA[
|
||||
this.mDisplayDaysOff = val;
|
||||
return val;
|
||||
]]></setter>
|
||||
</property>
|
||||
|
||||
<property name="daysOffArray">
|
||||
<getter><![CDATA[
|
||||
return this.mDaysOffArray;
|
||||
]]></getter>
|
||||
<setter><![CDATA[
|
||||
this.mDaysOffArray = val;
|
||||
return val;
|
||||
]]></setter>
|
||||
</property>
|
||||
|
||||
<property name="controller"
|
||||
onget="return this.mController;"
|
||||
onset="return this.mController = val;"/>
|
||||
@ -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();
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
@ -1004,8 +1029,11 @@
|
||||
var boxClass = "calendar-month-day-box-" +
|
||||
((mainMonth == date.month) ? "even" : "odd");
|
||||
|
||||
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);
|
||||
|
||||
box.setDate(date);
|
||||
@ -1024,6 +1052,20 @@
|
||||
this.mDateBoxes[0].showMonthLabel = true;
|
||||
this.mDateBoxes[this.mDateBoxes.length-1].showMonthLabel = true;
|
||||
}
|
||||
this.hideDaysOff();
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="hideDaysOff">
|
||||
<body><![CDATA[
|
||||
var columns = document.getAnonymousElementByAttribute(this, "anonid", "monthgridcolumns").childNodes;
|
||||
var headerkids = document.getAnonymousElementByAttribute(this, "anonid", "headerbox").childNodes;
|
||||
for (var i in columns) {
|
||||
var dayForColumn = (Number(i) + this.mWeekStartOffset) % 7;
|
||||
var dayOff = (this.mDaysOffArray.indexOf(dayForColumn) != -1);
|
||||
columns[i].collapsed = dayOff && !this.mDisplayDaysOff;
|
||||
headerkids[i].collapsed = dayOff && !this.mDisplayDaysOff;
|
||||
}
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
|
@ -60,18 +60,6 @@ calendarPrefObserver.prototype =
|
||||
// when calendar pref was changed, we reinitialize
|
||||
switch( prefName )
|
||||
{
|
||||
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.CalendarPreferences.calendarWindow.currentView != null) {
|
||||
this.CalendarPreferences.calendarWindow.currentView.refresh();
|
||||
}
|
||||
break;
|
||||
case "calendar.week.start":
|
||||
if (this.CalendarPreferences.calendarWindow.currentView != null) {
|
||||
this.CalendarPreferences.calendarWindow.currentView.refresh();
|
||||
|
Loading…
Reference in New Issue
Block a user