Adding pref to set the default length for events, bug 136373

This commit is contained in:
mikep%oeone.com 2002-04-10 18:23:40 +00:00
parent 0d4ecebd48
commit 694e1f5eaf
8 changed files with 164 additions and 42 deletions

View File

@ -437,11 +437,16 @@ function newEvent( startDate )
args.calendarEvent = createEvent();
args.calendarEvent.start.setTime( startDate );
args.calendarEvent.end.setTime( startDate );
args.calendarEvent.end.hour++;
var MinutesToAddOn = gCalendarWindow.calendarPreferences.getPref( "defaulteventlength" );
var endDate = new Date();
var endDateTime = startDate.getTime() + ( 1000 * 60 * MinutesToAddOn );
args.calendarEvent.end.setTime( endDateTime );
// open the dialog non modally
openDialog( "chrome://calendar/content/calendarEventDialog.xul", "caNewEvent", "chrome", args );
}

View File

@ -141,7 +141,7 @@ function loadCalendarEventDialog()
if ( gEvent.recurForever )
{
var today = new Date();
gEvent.recurEnd.setTime( startDate );
gEvent.recurEnd.setTime( endDate );
}
var recurEndDate = new Date( gEvent.recurEnd.getTime() );
@ -295,12 +295,6 @@ function onOKCommand()
if( gEvent.recur == true )
{
//check that the repeat end time is later than the end time
if( recurEndDate.getTime() < gEvent.end.getTime() && gEvent.recurForever == false )
{
alert( neRecurErrorAlertMessage );
return( false );
}
if( gEvent.recurUnits == "weeks" )
{
/*
@ -326,21 +320,67 @@ function onOKCommand()
// :TODO: REALLY only do this if the alarm or start settings change.?
//if the end time is later than the start time... alert the user using text from the dtd.
if ( gEvent.end.getTime() < gEvent.start.getTime() && !gEvent.allDay )
// call caller's on OK function
gOnOkFunction( gEvent );
// tell standard dialog stuff to close the dialog
return true;
}
function checkEndTime()
{
var endDate = getDateTimeFieldValue( "end-time-text" );
var startDate = getDateTimeFieldValue( "start-time-text" );
var AllDayEvent = getFieldValue( "all-day-event-checkbox", "checked" );
if( endDate.getTime() < startDate.getTime() && !AllDayEvent )
{
alert( neStartTimeErrorAlertMessage );
document.getElementById( "end-time-warning" ).setAttribute( "collapsed", "false" );
return( false );
}
else
{
// call caller's on OK function
gOnOkFunction( gEvent );
document.getElementById( "end-time-warning" ).setAttribute( "collapsed", "true" );
return( true );
}
// tell standard dialog stuff to close the dialog
return true;
}
function checkRecurTime()
{
var recurEndDate = getDateTimeFieldValue( "repeat-end-date-text" );
var endDate = getDateTimeFieldValue( "end-time-text" );
var recurForever = getFieldValue( "repeat-forever-radio", "selected" );
if( recurEndDate.getTime() < endDate.getTime() && recurForever == false )
{
document.getElementById( "repeat-time-warning" ).setAttribute( "collapsed", "false" );
return( false );
}
else
{
document.getElementById( "repeat-time-warning" ).setAttribute( "collapsed", "true" );
return( true );
}
}
function updateOKButton()
{
var CheckEndTime = checkEndTime();
var CheckRecurTime = checkRecurTime();
document.getElementById( "ok" ).setAttribute( "disabled", !( CheckEndTime && CheckRecurTime ) );
}
/**
* Called when an item with a datepicker is clicked, BEFORE the picker is shown.
@ -392,6 +432,8 @@ function onDatePick( datepopup )
updateAdvancedWeekRepeat();
updateAdvancedRepeatDayOfMonth();
updateOKButton();
}
@ -438,7 +480,7 @@ function onTimePick( timepopup )
55,
0);
}
formattedEndTime = formatTime( newEndDate );
if( timepopup.timeField.id != "end-time-text" )
{
setTimeFieldValue( "end-time-text", newEndDate );
@ -468,6 +510,8 @@ function onTimePick( timepopup )
// remember the new date in a property, "editDate". we created on the time textbox
timepopup.timeField.editDate = timepopup.value;
updateOKButton();
}
@ -489,6 +533,8 @@ function commandRepeat()
function commandUntil()
{
updateUntilItemEnabled();
updateOKButton();
}
/**

View File

@ -141,7 +141,7 @@
</row>
<!-- End Date -->
<row align="center">
<row align="center" collapsed="true">
<hbox class="field-label-box-class" pack="end">
<label value="&newevent.enddate.label;"/>
</hbox>
@ -178,6 +178,7 @@
<hbox id="end-event-time-box" align="center">
<textbox id="end-time-text" readonly="true" value="" onmousedown="prepareTimePicker('end-time-text')" popup="oe-time-picker-popup" position="after_start"/>
<image id="end-time-button" onmousedown="prepareTimePicker('end-time-text')" popup="oe-time-picker-popup" position="after_start"/>
<label id="end-time-warning" class="warning-text-class" value="&newevent.endtime.warning;" collapsed="true"/>
</hbox>
</row>
@ -285,10 +286,16 @@
<radio group="repeat-until-group" id="repeat-forever-radio" disable-controller="repeat" label="&newevent.forever.label;" oncommand="commandUntil()"/>
<hbox id="repeat-end-box" align="center">
<radio group="repeat-until-group" id="repeat-until-radio" disable-controller="repeat" selected="true" label="&newevent.until.label;" oncommand="commandUntil()"/>
<spacer id="until-spacer"/>
<textbox id="repeat-end-date-text" readonly="true" value="" onmousedown="prepareDatePicker('repeat-end-date-text')" popup="oe-date-picker-popup" position="before_start"/>
<image id="repeat-end-date-button" onmousedown="prepareDatePicker('repeat-end-date-text')" popup="oe-date-picker-popup" position="before_start"/>
<vbox>
<hbox>
<radio group="repeat-until-group" id="repeat-until-radio" disable-controller="repeat" selected="true" label="&newevent.until.label;" oncommand="commandUntil()"/>
<spacer id="until-spacer"/>
<textbox id="repeat-end-date-text" readonly="true" value="" onmousedown="prepareDatePicker('repeat-end-date-text')" popup="oe-date-picker-popup" position="before_start"/>
<image id="repeat-end-date-button" onmousedown="prepareDatePicker('repeat-end-date-text')" popup="oe-date-picker-popup" position="before_start"/>
</hbox>
<label id="repeat-time-warning" class="warning-text-class" value="&newevent.recurend.warning;" collapsed="true"/>
</vbox>
</hbox>

View File

@ -141,7 +141,7 @@ function loadCalendarEventDialog()
if ( gEvent.recurForever )
{
var today = new Date();
gEvent.recurEnd.setTime( startDate );
gEvent.recurEnd.setTime( endDate );
}
var recurEndDate = new Date( gEvent.recurEnd.getTime() );
@ -295,12 +295,6 @@ function onOKCommand()
if( gEvent.recur == true )
{
//check that the repeat end time is later than the end time
if( recurEndDate.getTime() < gEvent.end.getTime() && gEvent.recurForever == false )
{
alert( neRecurErrorAlertMessage );
return( false );
}
if( gEvent.recurUnits == "weeks" )
{
/*
@ -326,21 +320,67 @@ function onOKCommand()
// :TODO: REALLY only do this if the alarm or start settings change.?
//if the end time is later than the start time... alert the user using text from the dtd.
if ( gEvent.end.getTime() < gEvent.start.getTime() && !gEvent.allDay )
// call caller's on OK function
gOnOkFunction( gEvent );
// tell standard dialog stuff to close the dialog
return true;
}
function checkEndTime()
{
var endDate = getDateTimeFieldValue( "end-time-text" );
var startDate = getDateTimeFieldValue( "start-time-text" );
var AllDayEvent = getFieldValue( "all-day-event-checkbox", "checked" );
if( endDate.getTime() < startDate.getTime() && !AllDayEvent )
{
alert( neStartTimeErrorAlertMessage );
document.getElementById( "end-time-warning" ).setAttribute( "collapsed", "false" );
return( false );
}
else
{
// call caller's on OK function
gOnOkFunction( gEvent );
document.getElementById( "end-time-warning" ).setAttribute( "collapsed", "true" );
return( true );
}
// tell standard dialog stuff to close the dialog
return true;
}
function checkRecurTime()
{
var recurEndDate = getDateTimeFieldValue( "repeat-end-date-text" );
var endDate = getDateTimeFieldValue( "end-time-text" );
var recurForever = getFieldValue( "repeat-forever-radio", "selected" );
if( recurEndDate.getTime() < endDate.getTime() && recurForever == false )
{
document.getElementById( "repeat-time-warning" ).setAttribute( "collapsed", "false" );
return( false );
}
else
{
document.getElementById( "repeat-time-warning" ).setAttribute( "collapsed", "true" );
return( true );
}
}
function updateOKButton()
{
var CheckEndTime = checkEndTime();
var CheckRecurTime = checkRecurTime();
document.getElementById( "ok" ).setAttribute( "disabled", !( CheckEndTime && CheckRecurTime ) );
}
/**
* Called when an item with a datepicker is clicked, BEFORE the picker is shown.
@ -392,6 +432,8 @@ function onDatePick( datepopup )
updateAdvancedWeekRepeat();
updateAdvancedRepeatDayOfMonth();
updateOKButton();
}
@ -438,7 +480,7 @@ function onTimePick( timepopup )
55,
0);
}
formattedEndTime = formatTime( newEndDate );
if( timepopup.timeField.id != "end-time-text" )
{
setTimeFieldValue( "end-time-text", newEndDate );
@ -468,6 +510,8 @@ function onTimePick( timepopup )
// remember the new date in a property, "editDate". we created on the time textbox
timepopup.timeField.editDate = timepopup.value;
updateOKButton();
}
@ -489,6 +533,8 @@ function commandRepeat()
function commandUntil()
{
updateUntilItemEnabled();
updateOKButton();
}
/**

View File

@ -141,7 +141,7 @@
</row>
<!-- End Date -->
<row align="center">
<row align="center" collapsed="true">
<hbox class="field-label-box-class" pack="end">
<label value="&newevent.enddate.label;"/>
</hbox>
@ -178,6 +178,7 @@
<hbox id="end-event-time-box" align="center">
<textbox id="end-time-text" readonly="true" value="" onmousedown="prepareTimePicker('end-time-text')" popup="oe-time-picker-popup" position="after_start"/>
<image id="end-time-button" onmousedown="prepareTimePicker('end-time-text')" popup="oe-time-picker-popup" position="after_start"/>
<label id="end-time-warning" class="warning-text-class" value="&newevent.endtime.warning;" collapsed="true"/>
</hbox>
</row>
@ -285,10 +286,16 @@
<radio group="repeat-until-group" id="repeat-forever-radio" disable-controller="repeat" label="&newevent.forever.label;" oncommand="commandUntil()"/>
<hbox id="repeat-end-box" align="center">
<radio group="repeat-until-group" id="repeat-until-radio" disable-controller="repeat" selected="true" label="&newevent.until.label;" oncommand="commandUntil()"/>
<spacer id="until-spacer"/>
<textbox id="repeat-end-date-text" readonly="true" value="" onmousedown="prepareDatePicker('repeat-end-date-text')" popup="oe-date-picker-popup" position="before_start"/>
<image id="repeat-end-date-button" onmousedown="prepareDatePicker('repeat-end-date-text')" popup="oe-date-picker-popup" position="before_start"/>
<vbox>
<hbox>
<radio group="repeat-until-group" id="repeat-until-radio" disable-controller="repeat" selected="true" label="&newevent.until.label;" oncommand="commandUntil()"/>
<spacer id="until-spacer"/>
<textbox id="repeat-end-date-text" readonly="true" value="" onmousedown="prepareDatePicker('repeat-end-date-text')" popup="oe-date-picker-popup" position="before_start"/>
<image id="repeat-end-date-button" onmousedown="prepareDatePicker('repeat-end-date-text')" popup="oe-date-picker-popup" position="before_start"/>
</hbox>
<label id="repeat-time-warning" class="warning-text-class" value="&newevent.recurend.warning;" collapsed="true"/>
</vbox>
</hbox>

View File

@ -53,7 +53,7 @@
<script type="application/x-javascript">
<![CDATA[
var _elementIDs = [
"alarmshow", "alarmplaysound", "dateformat", "weekstarts"
"alarmshow", "alarmplaysound", "dateformat", "weekstarts", "defaultlength"
];
]]>
</script>
@ -91,5 +91,10 @@
</menupopup>
</menulist>
</vbox>
<hbox align="center">
<description>Default Event Length: </description>
<textbox id="defaultlength" preftype="int" prefstring="calendar.event.defaultlength" value="90" maxlength="3" size="3"/>
<label value="Minutes"/>
</hbox>
</groupbox>
</page>

View File

@ -69,6 +69,7 @@ function calendarPreferences( CalendarWindow )
this.calendarPref.setBoolPref( "alarms.playsound", false );
this.calendarPref.setIntPref( "date.format", 0 );
this.calendarPref.setIntPref( "week.start", 0 );
this.calendarPref.setIntPref( "event.defaultlength", 60 );
this.loadPreferences();
}
@ -84,6 +85,8 @@ calendarPreferences.prototype.loadPreferences = function()
this.arrayOfPrefs.dateformat = this.calendarPref.getIntPref( "date.format" );
this.arrayOfPrefs.weekstart = this.calendarPref.getIntPref( "week.start" );
this.arrayOfPrefs.defaulteventlength = this.calendarPref.getIntPref( "event.defaultlength" );
}
calendarPreferences.prototype.getPref = function( Preference )

View File

@ -75,6 +75,9 @@
<!ENTITY newevent.repeat.label "Repeat every" >
<!ENTITY newevent.until.label "Until" >
<!ENTITY newevent.forever.label "Forever" >
<!ENTITY newevent.endtime.warning "Your start time is after your end time.">
<!ENTITY newevent.recurend.warning "Your repeat time ends before your end time.">
<!ENTITY newevent.starttimeerror.alertmessage "Your event cannot end before it has started. Please fix either the start time or the end time." >
<!ENTITY newevent.recurendtimeerror.alertmessage "Your event's repeat time cannot be before the event end time. Please fix this, or disable repeating." >