зеркало из https://github.com/mozilla/gecko-dev.git
Bug 133107 Week view and day view should scroll to useable time, patch by thomas.benisch@sun.com, r=jminta
This commit is contained in:
Родитель
f6f7a4a6d7
Коммит
a26ee0ea38
|
@ -58,18 +58,9 @@
|
|||
|
||||
<implementation implements="calIDecoratedView">
|
||||
<constructor><![CDATA[
|
||||
// get default start/end times from prefs and set on the
|
||||
// view.
|
||||
this.mStartMin = getPrefSafe(
|
||||
"calendar.view.defaultstarthour", 8) * 60;
|
||||
this.mEndMin = getPrefSafe(
|
||||
"calendar.view.defaultendhour", 17) * 60;
|
||||
|
||||
// We don't care about weekends in the day view
|
||||
var viewElement = document.getAnonymousElementByAttribute(
|
||||
this, "anonid", "view-element");
|
||||
viewElement.setStartEndMinutes(this.mStartMin,
|
||||
this.mEndMin);
|
||||
// We don't care about weekends in the day view
|
||||
viewElement.daysOffArray = [];
|
||||
|
||||
// add a preference observer to monitor changes
|
||||
|
@ -88,9 +79,6 @@
|
|||
return;
|
||||
]]></destructor>
|
||||
|
||||
<field name="mStartMin">8 * 60</field>
|
||||
<field name="mEndMin">17 * 60</field>
|
||||
|
||||
<field name="mPrefObserver"><![CDATA[
|
||||
({ calView: this,
|
||||
observe: function calDecWeekViewPrefChange(subj, topic, pref) {
|
||||
|
@ -99,21 +87,6 @@
|
|||
|
||||
switch (pref) {
|
||||
|
||||
case "calendar.view.defaultstarthour":
|
||||
this.calView.mStartMin = subj.getIntPref(pref) * 60;
|
||||
var viewElem = document.getAnonymousElementByAttribute(
|
||||
this.calView, "anonid", "view-element");
|
||||
viewElem.setStartEndMinutes(this.calView.mStartMin,
|
||||
this.calView.mEndMin);
|
||||
break;
|
||||
|
||||
case "calendar.view.defaultendhour":
|
||||
this.calView.mEndMin = subj.getIntPref(pref) * 60;
|
||||
viewElem = document.getAnonymousElementByAttribute(
|
||||
this.calView, "anonid", "view-element");
|
||||
viewElem.setStartEndMinutes(this.calView.mStartMin,
|
||||
this.calView.mEndMin);
|
||||
break;
|
||||
case "calendar.timezone.local":
|
||||
var viewElem = document.getAnonymousElementByAttribute(
|
||||
this.calView, "anonid", "view-element");
|
||||
|
|
|
@ -58,18 +58,6 @@
|
|||
|
||||
<implementation implements="calIDecoratedView">
|
||||
<constructor><![CDATA[
|
||||
// get default start/end times from prefs and set on the
|
||||
// view.
|
||||
this.mStartMin = getPrefSafe(
|
||||
"calendar.view.defaultstarthour", 8) * 60;
|
||||
this.mEndMin = getPrefSafe(
|
||||
"calendar.view.defaultendhour", 17) * 60;
|
||||
|
||||
var viewElement = document.getAnonymousElementByAttribute(
|
||||
this, "anonid", "view-element");
|
||||
viewElement.setStartEndMinutes(this.mStartMin,
|
||||
this.mEndMin);
|
||||
|
||||
this.mWeekStartOffset = getPrefSafe("calendar.week.start", 0);
|
||||
|
||||
// add a preference observer to monitor changes
|
||||
|
@ -90,8 +78,6 @@
|
|||
return;
|
||||
]]></destructor>
|
||||
|
||||
<field name="mStartMin">8 * 60</field>
|
||||
<field name="mEndMin">17 * 60</field>
|
||||
<field name="mWeekStartOffset">0</field>
|
||||
|
||||
<field name="mPrefObserver"><![CDATA[
|
||||
|
@ -134,22 +120,6 @@
|
|||
this.calView.goToDay(this.calView.selectedDay);
|
||||
break;
|
||||
|
||||
case "calendar.view.defaultstarthour":
|
||||
this.calView.mStartMin = subj.getIntPref(pref) * 60;
|
||||
var viewElem = document.getAnonymousElementByAttribute(
|
||||
this.calView, "anonid", "view-element");
|
||||
viewElem.setStartEndMinutes(this.calView.mStartMin,
|
||||
this.calView.mEndMin);
|
||||
break;
|
||||
|
||||
case "calendar.view.defaultendhour":
|
||||
this.calView.mEndMin = subj.getIntPref(pref) * 60;
|
||||
viewElem = document.getAnonymousElementByAttribute(
|
||||
this.calView, "anonid", "view-element");
|
||||
viewElem.setStartEndMinutes(this.calView.mStartMin,
|
||||
this.calView.mEndMin);
|
||||
break;
|
||||
|
||||
case "calendar.timezone.local":
|
||||
var viewElem = document.getAnonymousElementByAttribute(
|
||||
this.calView, "anonid", "view-element");
|
||||
|
|
|
@ -61,8 +61,8 @@
|
|||
|
||||
<implementation>
|
||||
<field name="mPixPerMin">0.6</field>
|
||||
<field name="mStartMin">8*60</field>
|
||||
<field name="mEndMin">20*60</field>
|
||||
<field name="mStartMin">0*60</field>
|
||||
<field name="mEndMin">24*60</field>
|
||||
|
||||
<constructor>
|
||||
this.relayout();
|
||||
|
@ -93,26 +93,6 @@
|
|||
onget="return this.mPixPerMin"
|
||||
onset="if (this.mPixPerMin != val) { this.mPixPerMin = val; this.relayout(); } return val;"/>
|
||||
|
||||
<method name="setStartEndMinutes">
|
||||
<parameter name="aStartMin"/>
|
||||
<parameter name="aEndMin"/>
|
||||
<body><![CDATA[
|
||||
if (aStartMin < 0 || aStartMin > aEndMin)
|
||||
throw Components.results.NS_ERROR_INVALID_ARG;
|
||||
if (aEndMin < 0 || aEndMin > 24*60)
|
||||
throw Components.results.NS_ERROR_INVALID_ARG;
|
||||
|
||||
if (this.mStartMin != aStartMin ||
|
||||
this.mEndMin != aEndMin)
|
||||
{
|
||||
this.mStartMin = aStartMin;
|
||||
this.mEndMin = aEndMin;
|
||||
|
||||
this.relayout();
|
||||
}
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="relayout">
|
||||
<body><![CDATA[
|
||||
//dump ("calendar-time-bar: relayout\n");
|
||||
|
@ -282,8 +262,8 @@
|
|||
|
||||
<!-- fields -->
|
||||
<field name="mPixPerMin">0.6</field>
|
||||
<field name="mStartMin">8*60</field>
|
||||
<field name="mEndMin">20*60</field>
|
||||
<field name="mStartMin">0*60</field>
|
||||
<field name="mEndMin">24*60</field>
|
||||
<field name="mEvents">new Array()</field>
|
||||
<field name="mEventMap">null</field>
|
||||
<field name="mCalendarView">null</field>
|
||||
|
@ -390,26 +370,6 @@
|
|||
|
||||
<!-- methods -->
|
||||
|
||||
<method name="setStartEndMinutes">
|
||||
<parameter name="aStartMin"/>
|
||||
<parameter name="aEndMin"/>
|
||||
<body><![CDATA[
|
||||
if (aStartMin < 0 || aStartMin > aEndMin)
|
||||
throw Components.results.NS_ERROR_INVALID_ARG;
|
||||
if (aEndMin < 0 || aEndMin > 24*60)
|
||||
throw Components.results.NS_ERROR_INVALID_ARG;
|
||||
|
||||
if (this.mStartMin != aStartMin ||
|
||||
this.mEndMin != aEndMin)
|
||||
{
|
||||
this.mStartMin = aStartMin;
|
||||
this.mEndMin = aEndMin;
|
||||
|
||||
this.relayout();
|
||||
}
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="selectOccurrence">
|
||||
<parameter name="aOccurrence"/>
|
||||
<body><![CDATA[
|
||||
|
@ -1611,7 +1571,6 @@
|
|||
this.reorient();
|
||||
]]></constructor>
|
||||
|
||||
<field name="mLastSize">0</field>
|
||||
<method name="onResize">
|
||||
<parameter name="aRealSelf"/>
|
||||
<body><![CDATA[
|
||||
|
@ -1619,35 +1578,21 @@
|
|||
if (aRealSelf) {
|
||||
self = aRealSelf;
|
||||
}
|
||||
|
||||
var timebar = document.getAnonymousElementByAttribute(self, "anonid", "timebar");
|
||||
var daybox = document.getAnonymousElementByAttribute(self, "anonid", "daybox");
|
||||
|
||||
var orient = self.orient;
|
||||
var childbox = document.getAnonymousElementByAttribute(self, "anonid", "childbox");
|
||||
var size;
|
||||
if (self.orient == "horizontal")
|
||||
size = daybox.boxObject.width;
|
||||
else
|
||||
size = daybox.boxObject.height;
|
||||
|
||||
if (self.mLastSize > size) {
|
||||
self.pixelsPerMinute = 0.01;
|
||||
self.mLastSize = size;
|
||||
|
||||
if (self.orient == "horizontal")
|
||||
size = daybox.boxObject.width;
|
||||
else
|
||||
size = daybox.boxObject.height;
|
||||
var minPixelsPerMinute;
|
||||
if (self.orient == "horizontal") {
|
||||
size = childbox.boxObject.width;
|
||||
minPixelsPerMinute = self.mMinHorizontalPixelsPerMinute;
|
||||
} else {
|
||||
size = childbox.boxObject.height;
|
||||
minPixelsPerMinute = self.mMinVerticalPixelsPerMinute;
|
||||
}
|
||||
|
||||
self.mLastSize = size;
|
||||
|
||||
//self.removeAttribute("hidden");
|
||||
var minutes = self.mEndMin - self.mStartMin;
|
||||
var ppm = size / minutes;
|
||||
ppm = Math.round(ppm * 10) / 10;
|
||||
if (ppm < self.mMinPPM) {
|
||||
ppm = self.mMinPPM;
|
||||
ppm = Math.floor(ppm * 10) / 10;
|
||||
if (ppm < minPixelsPerMinute) {
|
||||
ppm = minPixelsPerMinute;
|
||||
}
|
||||
self.pixelsPerMinute = ppm;
|
||||
]]></body>
|
||||
|
@ -1663,14 +1608,13 @@
|
|||
<field name="mDateColumns">null</field>
|
||||
<field name="mBatchCount">0</field>
|
||||
<field name="mPixPerMin">0.6</field>
|
||||
<field name="mMinPPM">0.4</field>
|
||||
<field name="mMinHorizontalPixelsPerMinute">1.0</field>
|
||||
<field name="mMinVerticalPixelsPerMinute">0.4</field>
|
||||
<field name="mSelectedItem">null</field>
|
||||
<field name="mSelectedDayCol">null</field>
|
||||
|
||||
<field name="mDefaultStartMin">8*60</field>
|
||||
<field name="mDefaultEndMin">20*60</field>
|
||||
<field name="mStartMin">8*60</field>
|
||||
<field name="mEndMin">20*60</field>
|
||||
<field name="mStartMin">0*60</field>
|
||||
<field name="mEndMin">24*60</field>
|
||||
<field name="mTasksInView">false</field>
|
||||
<field name="mDaysOffArray">[0,6]</field>
|
||||
<field name="mTimezone">"UTC"</field>
|
||||
|
@ -1757,11 +1701,6 @@
|
|||
this.calView.doAddEvent(occ);
|
||||
}
|
||||
|
||||
var chunks = this.calView.createChunksForNonDateItems(occs);
|
||||
if (this.calView.readjustStartEndMinutes(chunks, false)) {
|
||||
this.calView.propagateStartEndMinutes();
|
||||
}
|
||||
|
||||
return;
|
||||
},
|
||||
onModifyItem: function onModifyItem(aNewItem, aOldItem) {
|
||||
|
@ -1801,8 +1740,6 @@
|
|||
for each (var occ in occs) {
|
||||
this.calView.doAddEvent(occ);
|
||||
}
|
||||
|
||||
this.calView.readjust();
|
||||
},
|
||||
onDeleteItem: function onDeleteItem(aItem) {
|
||||
if (this.mBatchCount) {
|
||||
|
@ -1823,8 +1760,6 @@
|
|||
for each (var occ in occs) {
|
||||
this.calView.doDeleteEvent(occ);
|
||||
}
|
||||
|
||||
this.calView.readjust();
|
||||
},
|
||||
onError: function onError(aErrNo, aMessage) { },
|
||||
|
||||
|
@ -1876,12 +1811,6 @@
|
|||
}
|
||||
aItems = aItems.filter(hasGoodDates);
|
||||
|
||||
var chunks = this.calView.createChunksForNonDateItems(aItems);
|
||||
|
||||
if (this.calView.readjustStartEndMinutes(chunks, false)) {
|
||||
this.calView.propagateStartEndMinutes();
|
||||
}
|
||||
|
||||
for each (var item in aItems) {
|
||||
this.calView.doAddEvent(item);
|
||||
}
|
||||
|
@ -2205,29 +2134,6 @@
|
|||
<setter>this.setAttribute("orient", val); return val;</setter>
|
||||
</property>
|
||||
|
||||
<method name="setStartEndMinutes">
|
||||
<parameter name="aStartMin"/>
|
||||
<parameter name="aEndMin"/>
|
||||
<body><![CDATA[
|
||||
if (aStartMin < 0 || aStartMin > aEndMin)
|
||||
throw Components.results.NS_ERROR_INVALID_ARG;
|
||||
if (aEndMin < 0 || aEndMin > 24*60)
|
||||
throw Components.results.NS_ERROR_INVALID_ARG;
|
||||
|
||||
if (this.mDefaultStartMin != aStartMin ||
|
||||
this.mDefaultEndMin != aEndMin ||
|
||||
this.mStartMin != aStartMin || this.mEndMin != aEndMin)
|
||||
{
|
||||
this.mDefaultStartMin = aStartMin;
|
||||
this.mDefaultEndMin = aEndMin;
|
||||
this.mStartMin = aStartMin;
|
||||
this.mEndMin = aEndMin;
|
||||
|
||||
this.refresh();
|
||||
}
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="setAttribute">
|
||||
<parameter name="aAttr"/>
|
||||
<parameter name="aVal"/>
|
||||
|
@ -2257,6 +2163,7 @@
|
|||
|
||||
<method name="reorient">
|
||||
<body><![CDATA[
|
||||
var firstMinute = this.getFirstVisibleMinute();
|
||||
var orient = this.getAttribute("orient");
|
||||
var otherorient = "vertical";
|
||||
if (!orient) orient = "horizontal";
|
||||
|
@ -2340,6 +2247,7 @@
|
|||
}
|
||||
}
|
||||
this.refresh();
|
||||
this.scrollToMinute(firstMinute);
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
|
@ -2348,11 +2256,6 @@
|
|||
if (!this.startDate || !this.endDate)
|
||||
return;
|
||||
|
||||
// we're throwing out all the events and starting over, we
|
||||
// should reset to the default size
|
||||
this.mStartMin = this.mDefaultStartMin;
|
||||
this.mEndMin = this.mDefaultEndMin;
|
||||
|
||||
// recreate our columns
|
||||
this.relayout();
|
||||
|
||||
|
@ -2379,6 +2282,7 @@
|
|||
]]></body>
|
||||
</method>
|
||||
|
||||
<field name="mRelayOutCalled">false</field>
|
||||
<method name="relayout">
|
||||
<body><![CDATA[
|
||||
function createXULElement(el) {
|
||||
|
@ -2411,10 +2315,6 @@
|
|||
if (!computedDateList || computedDateList.length == 0)
|
||||
return;
|
||||
|
||||
// update timebar
|
||||
var timebar = document.getAnonymousElementByAttribute(this, "anonid", "timebar");
|
||||
timebar.setStartEndMinutes(this.mStartMin, this.mEndMin);
|
||||
|
||||
var calView = this;
|
||||
function setUpDayEventsBox(aDayBox) {
|
||||
aDayBox.setAttribute("class", "calendar-event-column-" + (counter % 2 == 0 ? "even" : "odd"));
|
||||
|
@ -2422,7 +2322,6 @@
|
|||
aDayBox.setAttribute("item-context", calView.getAttribute("item-context") || calView.getAttribute("context"));
|
||||
aDayBox.startLayoutBatchChange();
|
||||
aDayBox.date = d;
|
||||
aDayBox.setStartEndMinutes(calView.mStartMin, calView.mEndMin);
|
||||
aDayBox.setAttribute("orient", orient);
|
||||
aDayBox.calendarView = calView;
|
||||
}
|
||||
|
@ -2541,27 +2440,14 @@
|
|||
// XXX constructor and the reorient method as soon as the views
|
||||
// XXX are constructed statically (24 hrs).
|
||||
this.adjustScrollBarSpacers();
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="propagateStartEndMinutes">
|
||||
<body><![CDATA[
|
||||
// update timebar
|
||||
var timebar = document.getAnonymousElementByAttribute(this,
|
||||
"anonid",
|
||||
"timebar");
|
||||
timebar.setStartEndMinutes(this.mStartMin, this.mEndMin);
|
||||
|
||||
// fix pixels-per-minute
|
||||
this.onResize();
|
||||
|
||||
for each (var d in this.mDateColumns) {
|
||||
// each of these calls will cause the column in question
|
||||
// to call relayout on itself
|
||||
d.column.setStartEndMinutes(this.mStartMin, this.mEndMin);
|
||||
// scroll to 8 a.m. the first time relayout is called
|
||||
// XXX As soon as working hours are available, 8 a.m. will change to
|
||||
// XXX the first working hour.
|
||||
if (!this.mRelayOutCalled) {
|
||||
this.mRelayOutCalled = true;
|
||||
this.scrollToMinute(8 * 60);
|
||||
}
|
||||
|
||||
return;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
|
@ -2697,141 +2583,6 @@
|
|||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="readjustStartEndMinutes">
|
||||
<parameter name="aChunks"/>
|
||||
<parameter name="aIsAllChunks"/>
|
||||
<body><![CDATA[
|
||||
var hasChanged = false;
|
||||
const MINS_PER_HOUR = 60;
|
||||
const DAY_START_MIN = 0 * MINS_PER_HOUR;
|
||||
const DAY_END_MIN = 24 * MINS_PER_HOUR;
|
||||
|
||||
// Start at the existing boundaries if aIsAllChunks is set,
|
||||
// since in that case, we know that the boundaries will only
|
||||
// be expanding. Otherwise, start at the defaults.
|
||||
var earliestChunkStartMin =
|
||||
(aIsAllChunks ? this.mDefaultStartMin : this.mStartMin);
|
||||
var latestChunkEndMin =
|
||||
(aIsAllChunks ? this.mDefaultEndMin : this.mEndMin);
|
||||
|
||||
for each (var chunk in aChunks) {
|
||||
|
||||
if (chunk.startMinute < earliestChunkStartMin) {
|
||||
earliestChunkStartMin = chunk.startMinute;
|
||||
}
|
||||
|
||||
if (chunk.endMinute > latestChunkEndMin) {
|
||||
latestChunkEndMin = chunk.endMinute;
|
||||
}
|
||||
|
||||
// break, if the start and end time match the day range
|
||||
if (earliestChunkStartMin <= DAY_START_MIN
|
||||
&& latestChunkEndMin >= DAY_END_MIN) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// round down
|
||||
if (earliestChunkStartMin % MINS_PER_HOUR) {
|
||||
earliestChunkStartMin -= (earliestChunkStartMin % MINS_PER_HOUR);
|
||||
}
|
||||
|
||||
// round up
|
||||
if (latestChunkEndMin % MINS_PER_HOUR) {
|
||||
latestChunkEndMin += MINS_PER_HOUR -
|
||||
(latestChunkEndMin % MINS_PER_HOUR);
|
||||
}
|
||||
|
||||
// The only reason try/catch is necessary here is to work
|
||||
// around XBL lossage. Without it, control never makes it
|
||||
// through the try block, even though no exception is ever thrown!
|
||||
try {
|
||||
if (aIsAllChunks) {
|
||||
// Since we've looked at all the in-view chunks,
|
||||
// it's safe to either shrink or expand the time shown.
|
||||
// Shrinking might be necessary when switching
|
||||
// weeks, or if an event has been deleted, moved or
|
||||
// shrunk out of the "non-default" area.
|
||||
if (this.mStartMin != earliestChunkStartMin) {
|
||||
this.mStartMin = earliestChunkStartMin;
|
||||
hasChanged = true;
|
||||
}
|
||||
if (this.mEndMin != latestChunkEndMin) {
|
||||
this.mEndMin = latestChunkEndMin;
|
||||
hasChanged = true;
|
||||
}
|
||||
} else {
|
||||
// here we are doing incremental adjustment, so we
|
||||
// can only expand the time shown, never shrink it
|
||||
if (this.mStartMin > earliestChunkStartMin) {
|
||||
this.mStartMin = earliestChunkStartMin;
|
||||
hasChanged = true;
|
||||
}
|
||||
if (this.mEndMin < latestChunkEndMin) {
|
||||
this.mEndMin = latestChunkEndMin;
|
||||
hasChanged = true;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
Components.utils.reportError("Unexpected exception in "
|
||||
+ "readjustStartEndMinutes: " + e);
|
||||
throw e;
|
||||
}
|
||||
return hasChanged;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="createChunksForNonDateItems">
|
||||
<parameter name="aItems"/>
|
||||
<body><![CDATA[
|
||||
|
||||
var chunks = new Array();
|
||||
for each (var item in aItems) {
|
||||
var startDate = item.startDate || item.entryDate;
|
||||
if (startDate.isDate) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var cols = this.findColumnsForItem(item);
|
||||
if (!cols.length) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// add a chunk for each date that has one
|
||||
for each (var col in cols) {
|
||||
chunks.push(col.column.createChunk(item));
|
||||
}
|
||||
}
|
||||
|
||||
return chunks;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
|
||||
<method name="getAllChunks">
|
||||
<body><![CDATA[
|
||||
var chunks = new Array();
|
||||
for each (var col in this.mDateColumns) {
|
||||
for each (var chunk in col.column.mEvents) {
|
||||
chunks.push(chunk);
|
||||
}
|
||||
}
|
||||
return chunks;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="readjust">
|
||||
<body><![CDATA[
|
||||
if (this.readjustStartEndMinutes(this.getAllChunks(), true)) {
|
||||
var selectedDay = this.selectedDay;
|
||||
this.propagateStartEndMinutes();
|
||||
if (selectedDay) {
|
||||
this.selectedDay = selectedDay;
|
||||
}
|
||||
}
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="today">
|
||||
<body><![CDATA[
|
||||
var date = Components.classes["@mozilla.org/calendar/datetime;1"]
|
||||
|
@ -2868,6 +2619,44 @@
|
|||
labelScrollBarSpacer.setAttribute(propertyName, propertyValue);
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="getFirstVisibleMinute">
|
||||
<body><![CDATA[
|
||||
var minute = 0;
|
||||
var childbox = document.getAnonymousElementByAttribute(this, "anonid", "childbox");
|
||||
var scrollBoxObject = childbox.boxObject.QueryInterface(Components.interfaces.nsIScrollBoxObject);
|
||||
if (scrollBoxObject != null) {
|
||||
var x = {};
|
||||
var y = {};
|
||||
scrollBoxObject.getPosition(x, y);
|
||||
if (childbox.getAttribute("orient") == "horizontal") {
|
||||
minute = Math.round(y.value/this.mPixPerMin);
|
||||
} else {
|
||||
minute = Math.round(x.value/this.mPixPerMin);
|
||||
}
|
||||
}
|
||||
return minute;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="scrollToMinute">
|
||||
<parameter name="aMinute"/>
|
||||
<body><![CDATA[
|
||||
var childbox = document.getAnonymousElementByAttribute(this, "anonid", "childbox");
|
||||
var scrollBoxObject = childbox.boxObject.QueryInterface(Components.interfaces.nsIScrollBoxObject);
|
||||
if (scrollBoxObject != null) {
|
||||
var x = {};
|
||||
var y = {};
|
||||
scrollBoxObject.getPosition(x, y);
|
||||
var pos = aMinute * this.mPixPerMin;
|
||||
if (childbox.getAttribute("orient") == "horizontal") {
|
||||
scrollBoxObject.scrollTo(x.value, pos);
|
||||
} else {
|
||||
scrollBoxObject.scrollTo(pos, y.value);
|
||||
}
|
||||
}
|
||||
]]></body>
|
||||
</method>
|
||||
</implementation>
|
||||
|
||||
<handlers>
|
||||
|
|
|
@ -54,9 +54,7 @@
|
|||
<overlay id="ViewsPaneOverlay"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
|
||||
<prefpane id="paneViews" onpaneload="gViewsPane.init()">
|
||||
<script type="application/x-javascript"
|
||||
src="chrome://calendar/content/preferences/views.js"/>
|
||||
<prefpane id="paneViews">
|
||||
|
||||
<preferences>
|
||||
<preference id="calendar.week.start"
|
||||
|
@ -90,12 +88,6 @@
|
|||
name="calendar.week.d6saturdaysoff"
|
||||
type="bool"
|
||||
inverted="true"/>
|
||||
<preference id="calendar.view.defaultstarthour"
|
||||
name="calendar.view.defaultstarthour"
|
||||
type="int"/>
|
||||
<preference id="calendar.view.defaultendhour"
|
||||
name="calendar.view.defaultendhour"
|
||||
type="int"/>
|
||||
<preference id="calendar.weeks.inview"
|
||||
name="calendar.weeks.inview"
|
||||
type="int"/>
|
||||
|
@ -166,81 +158,6 @@
|
|||
</hbox>
|
||||
</groupbox>
|
||||
|
||||
<groupbox>
|
||||
<caption label="&pref.calendar.view.weekanddayview.caption;"/>
|
||||
<hbox align="center">
|
||||
<caption label="&pref.calendar.view.restrict.label;"
|
||||
accesskey="&pref.calendar.view.restrict.accesskey;"
|
||||
control="daystarthour"/>
|
||||
<menulist id="daystarthour"
|
||||
oncommand="gViewsPane.updateViewEndMenu(this.value);"
|
||||
preference="calendar.view.defaultstarthour">
|
||||
<menupopup id="daystarthourpopup">
|
||||
<menuitem label="&time.midnight;" value="0"/>
|
||||
<menuitem label="&time.1;" value="1"/>
|
||||
<menuitem label="&time.2;" value="2"/>
|
||||
<menuitem label="&time.3;" value="3"/>
|
||||
<menuitem label="&time.4;" value="4"/>
|
||||
<menuitem label="&time.5;" value="5"/>
|
||||
<menuitem label="&time.6;" value="6"/>
|
||||
<menuitem label="&time.7;" value="7"/>
|
||||
<menuitem label="&time.8;" value="8"/>
|
||||
<menuitem label="&time.9;" value="9"/>
|
||||
<menuitem label="&time.10;" value="10"/>
|
||||
<menuitem label="&time.11;" value="11"/>
|
||||
<menuitem label="&time.noon;" value="12"/>
|
||||
<menuitem label="&time.13;" value="13"/>
|
||||
<menuitem label="&time.14;" value="14"/>
|
||||
<menuitem label="&time.15;" value="15"/>
|
||||
<menuitem label="&time.16;" value="16"/>
|
||||
<menuitem label="&time.17;" value="17"/>
|
||||
<menuitem label="&time.18;" value="18"/>
|
||||
<menuitem label="&time.19;" value="19"/>
|
||||
<menuitem label="&time.20;" value="20"/>
|
||||
<menuitem label="&time.21;" value="21"/>
|
||||
<menuitem label="&time.22;" value="22"/>
|
||||
<menuitem label="&time.23;" value="23"/>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
<caption label="&pref.calendar.view.endtime.label;"
|
||||
accesskey="&pref.calendar.view.endtime.accesskey;"
|
||||
control="dayendhour"/>
|
||||
<menulist id="dayendhour"
|
||||
oncommand="gViewsPane.updateViewStartMenu(this.value);"
|
||||
preference="calendar.view.defaultendhour">
|
||||
<menupopup id="dayendhourpopup">
|
||||
<menuitem label="&time.1;" value="1"/>
|
||||
<menuitem label="&time.2;" value="2"/>
|
||||
<menuitem label="&time.3;" value="3"/>
|
||||
<menuitem label="&time.4;" value="4"/>
|
||||
<menuitem label="&time.5;" value="5"/>
|
||||
<menuitem label="&time.6;" value="6"/>
|
||||
<menuitem label="&time.7;" value="7"/>
|
||||
<menuitem label="&time.8;" value="8"/>
|
||||
<menuitem label="&time.9;" value="9"/>
|
||||
<menuitem label="&time.10;" value="10"/>
|
||||
<menuitem label="&time.11;" value="11"/>
|
||||
<menuitem label="&time.noon;" value="12"/>
|
||||
<menuitem label="&time.13;" value="13"/>
|
||||
<menuitem label="&time.14;" value="14"/>
|
||||
<menuitem label="&time.15;" value="15"/>
|
||||
<menuitem label="&time.16;" value="16"/>
|
||||
<menuitem label="&time.17;" value="17"/>
|
||||
<menuitem label="&time.18;" value="18"/>
|
||||
<menuitem label="&time.19;" value="19"/>
|
||||
<menuitem label="&time.20;" value="20"/>
|
||||
<menuitem label="&time.21;" value="21"/>
|
||||
<menuitem label="&time.22;" value="22"/>
|
||||
<menuitem label="&time.23;" value="23"/>
|
||||
<menuitem label="&time.midnight;" value="24"/>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
</hbox>
|
||||
<hbox class="indent">
|
||||
<description>&pref.hour.help.description;</description>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
|
||||
<groupbox>
|
||||
<caption label="&pref.calendar.view.multiweekview.caption;"/>
|
||||
<hbox align="center">
|
||||
|
|
|
@ -65,8 +65,6 @@
|
|||
<preference id="calendar.alarms.playsound" name="calendar.alarms.playsound" type="bool"/>
|
||||
<preference id="calendar.alarms.soundURL" name="calendar.alarms.soundURL" type="string"/>
|
||||
<preference id="calendar.alarms.defaultsnoozelength" name="calendar.alarms.defaultsnoozelength" type="int"/>
|
||||
<preference id="calendar.view.defaultstarthour" name="calendar.view.defaultstarthour" type="int"/>
|
||||
<preference id="calendar.view.defaultendhour" name="calendar.view.defaultendhour" type="int"/>
|
||||
<preference id="calendar.week.start" name="calendar.week.start" type="int"/>
|
||||
<preference id="calendar.timezone.local" name="calendar.timezone.local" type="string"/>
|
||||
</preferences>
|
||||
|
@ -115,14 +113,6 @@
|
|||
</columns>
|
||||
|
||||
<rows>
|
||||
<row align="center">
|
||||
<label value="&pref.calendar.view.restrict.label;"/>
|
||||
<textbox preference="calendar.view.defaultstarthour"/>
|
||||
</row>
|
||||
<row align="center">
|
||||
<label value="&pref.calendar.view.endtime.label;"/>
|
||||
<textbox preference="calendar.view.defaultendhour"/>
|
||||
</row>
|
||||
<row align="center">
|
||||
<description>&pref.weekstarts.label;</description>
|
||||
<menulist id="weekstarts" preference="calendar.week.start">
|
||||
|
|
|
@ -51,10 +51,6 @@ pref("calendar.alarms.onfortodos", 0);
|
|||
pref("calendar.alarms.todoalarmlen", 15);
|
||||
pref("calendar.alarms.todoalarmunit", "minutes");
|
||||
|
||||
// start and end hour for day and week view
|
||||
pref("calendar.view.defaultstarthour", 8);
|
||||
pref("calendar.view.defaultendhour", 17);
|
||||
|
||||
// 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to
|
||||
// a locale specific file.
|
||||
pref("calendar.week.start", 0);
|
||||
|
|
|
@ -45,20 +45,12 @@
|
|||
-->
|
||||
|
||||
<!ENTITY pref.calendar.view.allview.caption "General">
|
||||
<!ENTITY pref.calendar.view.weekanddayview.caption "Week and Day Views">
|
||||
<!ENTITY pref.calendar.view.multiweekview.caption "Multiweek View">
|
||||
<!ENTITY pref.calendar.view.workweek.caption "Workweek">
|
||||
|
||||
<!-- NOTE TO LOCALIZERS: This entity should end with a space character. -->
|
||||
<!ENTITY pref.calendar.view.restrict.label "Display from ">
|
||||
<!ENTITY pref.calendar.view.restrict.accesskey "D">
|
||||
<!-- NOTE TO LOCALIZERS: This entity should start with a space character. -->
|
||||
<!ENTITY pref.calendar.view.endtime.label " until ">
|
||||
<!ENTITY pref.calendar.view.endtime.accesskey "u">
|
||||
<!ENTITY pref.weekstarts.label "Start the week on:">
|
||||
<!ENTITY pref.weekstarts.accesskey "r">
|
||||
<!ENTITY pref.daysoff.label "Include these days in the workweek:">
|
||||
<!ENTITY pref.hour.help.description "Note that events occurring outside these times will be shown regardless of this setting.">
|
||||
|
||||
<!ENTITY pref.numberofweeks.label "Default weeks to show (including previous weeks):">
|
||||
<!ENTITY pref.numberofweeks.accesskey "e">
|
||||
|
|
|
@ -80,7 +80,6 @@ calendar.jar:
|
|||
content/calendar/preferences/timezones.js (/calendar/base/content/preferences/timezones.js)
|
||||
content/calendar/preferences/timezones.xul (/calendar/base/content/preferences/timezones.xul)
|
||||
content/calendar/preferences/views.xul (/calendar/base/content/preferences/views.xul)
|
||||
content/calendar/preferences/views.js (/calendar/base/content/preferences/views.js)
|
||||
% skin calendar classic/1.0 %skin/classic/calendar/
|
||||
#ifdef XP_MACOSX
|
||||
skin/classic/calendar/calendar-views.css (/calendar/base/themes/pinstripe/calendar-views.css)
|
||||
|
|
|
@ -55,8 +55,6 @@ pref("calendar.date.format", 0);
|
|||
pref("calendar.event.defaultlength", 60);
|
||||
// Do NOT set this. If it is unset, we guess the timezone from the system
|
||||
//pref("calendar.timezone.local", "America/New_York);
|
||||
pref("calendar.view.defaultstarthour", 8);
|
||||
pref("calendar.view.defaultendhour", 17);
|
||||
pref("calendar.weeks.inview", 4);
|
||||
pref("calendar.previousweeks.inview", 0);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче