bug #362961 missing relation for custom reminder

This commit is contained in:
michael.buettner%sun.com 2006-12-06 14:50:33 +00:00
Родитель f7a23c5958
Коммит c8b7e1a631
6 изменённых файлов: 109 добавлений и 62 удалений

Просмотреть файл

@ -184,6 +184,8 @@
<!ENTITY reminder.new.label "New">
<!ENTITY reminder.delete.label "Delete">
<!ENTITY reminder.rename.label "Rename">
<!ENTITY reminder.relation.start.label "the event starts">
<!ENTITY reminder.relation.end.label "the event ends">
<!-- Attendees dialog -->
<!ENTITY event.organizer.label "Organizer">

Просмотреть файл

@ -92,7 +92,7 @@ repeatDetailsUntilAllDay=Occurs %1$S\neffective %2$S until %3$S.
repeatDetailsInfinite=Occurs %1$S\neffective %2$S\n from %3$S to %4$S.
repeatDetailsInfiniteAllDay=Occurs %1$S\neffective %2$S.
reminderCustomTitle=%1$S %2$S %3$S the event starts
reminderCustomTitle=%1$S %2$S %3$S %4$S
reminderCustomUnitMinute=minute
reminderCustomUnitMinutes=minutes
reminderCustomUnitHour=hour
@ -101,6 +101,7 @@ reminderCustomUnitDay=day
reminderCustomUnitDays=days
reminderCustomRelationStart=before
reminderCustomRelationEnd=after
reminderCustomOriginBegin=the event starts
reminderCustomOriginEnd=the event ends
newEvent=New Event
newTask=New Task

Просмотреть файл

@ -91,8 +91,9 @@ function onLoad()
node.reminder = reminder;
}
if(selectedIndex >= 0)
listbox.selectedIndex = selectedIndex;
if(selectedIndex < 0)
selectedIndex = 0;
listbox.selectedIndex = selectedIndex;
opener.setCursor("auto");
}
@ -136,11 +137,19 @@ function stringFromReminderObject(reminder) {
break;
}
var originString;
if(reminder.origin && reminder.origin < 0) {
originString = props.GetStringFromName('reminderCustomOriginEnd');
} else {
originString = props.GetStringFromName('reminderCustomOriginBegin');
}
var result = props.formatStringFromName(
'reminderCustomTitle',
[ reminder.length,
unitString,
relationString ], 3);
relationString,
originString], 4);
return result;
}
@ -155,7 +164,7 @@ function loadReminders()
.getService(Components.interfaces.nsIPrefService);
var prefBranch = prefService.getBranch("calendar.reminder.");
var pref = "length=15;unit=minutes;relation=START,length=3;unit=hours;relation=START";
var pref = "length=15;unit=minutes;relation=START;origin=1,length=3;unit=hours;relation=START;origin=1";
try {
var newPref = prefBranch.getCharPref("custom");
if(newPref && newPref != "")
@ -217,7 +226,8 @@ function onReminderSelected()
var length = document.getElementById("reminder-length");
var unit = document.getElementById("reminder-unit");
var relation = document.getElementById("reminder-relation");
var origin = document.getElementById("reminder-origin");
var listbox = document.getElementById("reminder-listbox");
var listitem = listbox.selectedItem;
@ -227,8 +237,7 @@ function onReminderSelected()
length.value = reminder.length;
unit.value = reminder.unit;
relation.value = reminder.relation;
}
else {
origin.value = reminder.origin;
}
}
@ -251,6 +260,7 @@ function updateReminder() {
var length = document.getElementById("reminder-length");
var unit = document.getElementById("reminder-unit");
var relation = document.getElementById("reminder-relation");
var origin = document.getElementById("reminder-origin");
var listbox = document.getElementById("reminder-listbox");
var listitem = listbox.selectedItem;
@ -259,6 +269,7 @@ function updateReminder() {
reminder.length = length.value;
reminder.unit = unit.value;
reminder.relation = relation.value;
reminder.origin = origin.value;
var details = stringFromReminderObject(reminder);
listitem.setAttribute('label',details);
@ -279,6 +290,7 @@ function onNewReminder() {
newReminder.length = reminder.length;
newReminder.unit = reminder.unit;
newReminder.relation = reminder.relation;
newReminder.origin = reminder.origin;
newNode.reminder = newReminder;
listbox.appendChild(newNode);
listbox.selectItem(newNode);

Просмотреть файл

@ -96,24 +96,32 @@
<column flex="1"/>
</columns>
<rows>
<row align="center">
<row align="top">
<radio selected="true"/>
<hbox>
<textbox id="reminder-length" size="1" oninput="updateReminderLength(event)"/>
<menulist id="reminder-unit" oncommand="updateReminder()">
<vbox>
<hbox>
<textbox id="reminder-length" size="1" oninput="updateReminderLength(event)"/>
<menulist id="reminder-unit" oncommand="updateReminder()" flex="1">
<menupopup>
<menuitem label="&alarm.units.minutes;" value="minutes" selected="true"/>
<menuitem label="&alarm.units.hours;" value="hours"/>
<menuitem label="&alarm.units.days;" value="days"/>
</menupopup>
</menulist>
<menulist id="reminder-relation" oncommand="updateReminder()" flex="1">
<menupopup>
<menuitem label="&newevent.before.label;" value="START" selected="true"/>
<menuitem label="&newevent.after.label;" value="END"/>
</menupopup>
</menulist>
</hbox>
<menulist id="reminder-origin" oncommand="updateReminder()">
<menupopup>
<menuitem label="&alarm.units.minutes;" value="minutes" selected="true"/>
<menuitem label="&alarm.units.hours;" value="hours"/>
<menuitem label="&alarm.units.days;" value="days"/>
<menuitem label="&reminder.relation.start.label;" value="1" selected="true"/>
<menuitem label="&reminder.relation.end.label;" value="-1"/>
</menupopup>
</menulist>
<menulist id="reminder-relation" oncommand="updateReminder()">
<menupopup>
<menuitem label="&newevent.before.label;" value="START" selected="true"/>
<menuitem label="&newevent.after.label;" value="END"/>
</menupopup>
</menulist>
</hbox>
</vbox>
</row>
<row>
<radio disabled="true"/>

Просмотреть файл

@ -838,21 +838,30 @@ function loadReminder(item)
for(var i=0; i<numItems; i++) {
var menuitem = menuItems[i];
if(menuitem.hasAttribute("length")) {
var relation = "START";
var origin = "1";
if(item.alarmRelated == Components.interfaces.calIItemBase.ALARM_RELATED_END)
origin = "-1";
var duration = item.alarmOffset.clone();
var relation = "START";
if(duration.isNegative) {
duration.isNegative = false;
duration.normalize();
relation = "END";
if(menuitem.getAttribute("relation") == relation) {
var unit = menuitem.getAttribute("unit");
var length = menuitem.getAttribute("length");
if(unit == "minutes" && item.alarmOffset.minutes == length) {
matchingItem = menuitem;
break;
} else if(unit == "hours" && item.alarmOffset.hours == length) {
matchingItem = menuitem;
break;
} else if(unit == "days" && item.alarmOffset.days == length) {
matchingItem = menuitem;
break;
}
if(menuitem.getAttribute("origin") == origin) {
if(menuitem.getAttribute("relation") == relation) {
var unit = menuitem.getAttribute("unit");
var length = menuitem.getAttribute("length");
if(unit == "minutes" && item.alarmOffset.minutes == length) {
matchingItem = menuitem;
break;
} else if(unit == "hours" && item.alarmOffset.hours == length) {
matchingItem = menuitem;
break;
} else if(unit == "days" && item.alarmOffset.days == length) {
matchingItem = menuitem;
break;
}
}
}
}
@ -875,11 +884,18 @@ function loadReminder(item)
var customReminder = document.getElementById("reminder-custom-menuitem");
var reminder = {};
if(item.alarmRelated == Components.interfaces.calIItemBase.ALARM_RELATED_START) {
reminder.relation = "START";
reminder.origin = "1";
} else {
reminder.relation = "END";
reminder.origin = "-1";
}
var offset = item.alarmOffset;
var offset = item.alarmOffset.clone();
var relation = "START";
if(offset.isNegative) {
offset.isNegative = false;
offset.normalize();
relation = "END";
}
reminder.relation = relation;
if (offset.minutes) {
var minutes = offset.minutes + offset.hours*60 + offset.days*24*60 + offset.weeks*60*24*7;
reminder.unit = 'minutes';
@ -926,23 +942,23 @@ function saveReminder(item) {
reminder.length = menuitem.getAttribute('length');
reminder.unit = menuitem.getAttribute('unit');
reminder.relation = menuitem.getAttribute('relation');
}
if (reminder.relation == "START") {
item.alarmRelated = Components.interfaces.calIItemBase.ALARM_RELATED_START;
} else {
item.alarmRelated = Components.interfaces.calIItemBase.ALARM_RELATED_END;
reminder.origin = menuitem.getAttribute('origin');
}
var duration = Components.classes["@mozilla.org/calendar/duration;1"]
.createInstance(Components.interfaces.calIDuration);
if (item.alarmRelated == Components.interfaces.calIItemBase.ALARM_RELATED_START) {
duration.isNegative = true;
}
duration[reminder.unit] = Number(reminder.length);
if (reminder.relation != "START") {
duration.isNegative = true;
}
duration.normalize();
item.alarmOffset = duration;
if (Number(reminder.origin) >= 0) {
item.alarmRelated = Components.interfaces.calIItemBase.ALARM_RELATED_START;
} else {
item.alarmRelated = Components.interfaces.calIItemBase.ALARM_RELATED_END;
}
}
}
@ -1059,11 +1075,19 @@ function updateReminderDetails()
break;
}
var originString;
if(reminder.origin && reminder.origin < 0) {
originString = props.GetStringFromName('reminderCustomOriginEnd');
} else {
originString = props.GetStringFromName('reminderCustomOriginBegin');
}
var detailsString = props.formatStringFromName(
'reminderCustomTitle',
[ reminder.length,
unitString,
relationString ], 3);
relationString,
originString], 4);
var lines = detailsString.split("\n");
reminderDetails.removeAttribute("collapsed");

Просмотреть файл

@ -508,20 +508,20 @@
<menulist id="item-alarm" oncommand="updateReminder()" disable-on-readonly="true">
<menupopup>
<menuitem label="&event.reminder.none.label;" value="none" selected="true"/>
<menuitem label="&event.reminder.5minutes.before.label;" length="5" unit="minutes" relation="START"/>
<menuitem label="&event.reminder.10minutes.before.label;" length="10" unit="minutes" relation="START"/>
<menuitem label="&event.reminder.15minutes.before.label;" length="15" unit="minutes" relation="START"/>
<menuitem label="&event.reminder.30minutes.before.label;" length="30" unit="minutes" relation="START"/>
<menuitem label="&event.reminder.45minutes.before.label;" length="45" unit="minutes" relation="START"/>
<menuitem label="&event.reminder.5minutes.before.label;" length="5" unit="minutes" relation="START" origin="1"/>
<menuitem label="&event.reminder.10minutes.before.label;" length="10" unit="minutes" relation="START" origin="1"/>
<menuitem label="&event.reminder.15minutes.before.label;" length="15" unit="minutes" relation="START" origin="1"/>
<menuitem label="&event.reminder.30minutes.before.label;" length="30" unit="minutes" relation="START" origin="1"/>
<menuitem label="&event.reminder.45minutes.before.label;" length="45" unit="minutes" relation="START" origin="1"/>
<menuseparator/>
<menuitem label="&event.reminder.1hour.before.label;" length="1" unit="hours" relation="START"/>
<menuitem label="&event.reminder.2hours.before.label;" length="2" unit="hours" relation="START"/>
<menuitem label="&event.reminder.5hours.before.label;" length="5" unit="hours" relation="START"/>
<menuitem label="&event.reminder.15hours.before.label;" length="15" unit="hours" relation="START"/>
<menuitem label="&event.reminder.1hour.before.label;" length="1" unit="hours" relation="START" origin="1"/>
<menuitem label="&event.reminder.2hours.before.label;" length="2" unit="hours" relation="START" origin="1"/>
<menuitem label="&event.reminder.5hours.before.label;" length="5" unit="hours" relation="START" origin="1"/>
<menuitem label="&event.reminder.15hours.before.label;" length="15" unit="hours" relation="START" origin="1"/>
<menuseparator/>
<menuitem label="&event.reminder.1day.before.label;" length="1" unit="days" relation="START"/>
<menuitem label="&event.reminder.2days.before.label;" length="2" unit="days" relation="START"/>
<menuitem label="&event.reminder.1week.before.label;" length="7" unit="days" relation="START"/>
<menuitem label="&event.reminder.1day.before.label;" length="1" unit="days" relation="START" origin="1"/>
<menuitem label="&event.reminder.2days.before.label;" length="2" unit="days" relation="START" origin="1"/>
<menuitem label="&event.reminder.1week.before.label;" length="7" unit="days" relation="START" origin="1"/>
<menuseparator/>
<menuitem id="reminder-custom-menuitem" label="&event.reminder.custom.label;" value="custom"/>
</menupopup>