From 5703cefa32bd066bd33fb1a425bbce2bf7fb36da Mon Sep 17 00:00:00 2001 From: "jminta%gmail.com" Date: Sat, 18 Mar 2006 14:39:40 +0000 Subject: [PATCH] Bug 321608 First day of week setting not honoured in multiweek or month views. r=mvl --- .../content/calendar-decorated-month-view.xml | 54 ++++++++++++++ .../calendar-decorated-multiweek-view.xml | 72 ++++++++++++++----- .../content/calendar-decorated-week-view.xml | 30 +++++--- calendar/base/content/calendar-month-view.xml | 47 +++++++++++- 4 files changed, 173 insertions(+), 30 deletions(-) diff --git a/calendar/base/content/calendar-decorated-month-view.xml b/calendar/base/content/calendar-decorated-month-view.xml index ee3493ae523..f4f0a92cd29 100644 --- a/calendar/base/content/calendar-decorated-month-view.xml +++ b/calendar/base/content/calendar-decorated-month-view.xml @@ -53,6 +53,60 @@ + + + + + + + + + + + + 4 @@ -85,7 +139,6 @@ "@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefService); var calBranch = prefService.getBranch("calendar."); - var weekStartOffset = calBranch.getIntPref("week.start"); // Get the first date that should be shown. This is the // start of the week of the day that we're centering around @@ -100,23 +153,6 @@ d2.day += 7*(this.mWeeksInView-1); d2.normalize(); - // startOfWeek always returns a Sunday. If the user is in - // a locale that starts weeks on a different day, adjust - // XXX-this currently has no effect - if (weekStartOffset != 0) { - d1.day += weekStartOffset; - d2.day += weekStartOffset; - - // In this case, we actually jumped a week ahead - if (aDate.weekday < weekStartOffset) { - d1.day -= 7; - d2.day -= 7; - } - - d1.normalize(); - d2.normalize(); - } - viewElement.setDateRange(d1,d2); if (this.mWorkdaysOnly) { diff --git a/calendar/base/content/calendar-decorated-week-view.xml b/calendar/base/content/calendar-decorated-week-view.xml index e4d954b7e42..c362a3ffbcf 100644 --- a/calendar/base/content/calendar-decorated-week-view.xml +++ b/calendar/base/content/calendar-decorated-week-view.xml @@ -77,8 +77,12 @@ viewElement.setStartEndMinutes(this.mStartMin, this.mEndMin); + try { + this.mWeekStartOffset = pb2.getIntPref("calendar.week.start"); + } catch (ex) {} + // add a preference observer to monitor changes - pb2.addObserver("calendar.view.", this.mPrefObserver, false); + pb2.addObserver("calendar.", this.mPrefObserver, false); return; ]]> @@ -86,12 +90,13 @@ var pb2 = Components.classes ["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch2); - pb2.removeObserver("calendar.view.", this.mPrefObserver); + pb2.removeObserver("calendar.", this.mPrefObserver); return; ]]> 8 * 60 17 * 60 + 0 true true true + 0 + + + + + + @@ -634,9 +645,23 @@ - - + @@ -653,6 +678,11 @@ this.mStartDate = aStartDate.startOfWeek; this.mEndDate = aEndDate.endOfWeek; + this.mStartDate.day += this.mWeekStartOffset; + this.mEndDate.day += this.mWeekStartOffset; + this.mStartDate.normalize(); + this.mEndDate.normalize(); + this.refresh(); ]]> @@ -744,6 +774,17 @@ return document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", el); } + // Adjust headers based on the starting day of the week, if necessary + var headerbox = document.getAnonymousElementByAttribute(this, "anonid", "headerbox"); + + if (headerbox.firstChild.index != this.mWeekStartOffset) { + var i = 0; + for each(header in headerbox.childNodes) { + header.index = (i + this.mWeekStartOffset) % 7; + i++; + } + } + if (this.mSelectedItem) { this.selectedItem = null; }