Checked in patches for bug 220075

This commit is contained in:
mostafah%oeone.com 2004-08-02 22:23:16 +00:00
Родитель 6f17eaff70
Коммит 2a5dc4d585
4 изменённых файлов: 123 добавлений и 86 удалений

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

@ -106,6 +106,8 @@ var kDaysInWeek = 7;
const kMAX_NUMBER_OF_DOTS_IN_MONTH_VIEW = "8"; //the maximum number of dots that fit in the month view
const k_NO_DATE = -62171262000000; // ms value for -0001/11/30 00:00:00, libical value for no date.
// (Note: javascript Date interprets kNODATE ms as -0001/11/15 00:00:00.)
var prefService = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
@ -650,24 +652,9 @@ function newToDoCommand()
{
var calendarToDo = createToDo();
var startDate = gCalendarWindow.currentView.getNewEventDate();
var Minutes = Math.ceil( startDate.getMinutes() / 5 ) * 5 ;
startDate = new Date( startDate.getFullYear(),
startDate.getMonth(),
startDate.getDate(),
startDate.getHours(),
Minutes,
0);
calendarToDo.start.setTime( startDate );
var MinutesToAddOn = getIntPref(gCalendarWindow.calendarPreferences.calendarPref, "event.defaultlength", gCalendarBundle.getString("defaultEventLength" ) );
var dueDateTime = startDate.getTime() + ( 1000 * 60 * MinutesToAddOn );
calendarToDo.due.setTime( dueDateTime );
// created todo has no start or due date unless user wants one
calendarToDo.start.setTime( k_NO_DATE );
calendarToDo.due.setTime( k_NO_DATE );
var args = new Object();
args.mode = "new";

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

@ -95,6 +95,8 @@ const kRepeatDay_4 = 1<<4;//Thursday
const kRepeatDay_5 = 1<<5;//Friday
const kRepeatDay_6 = 1<<6;//Saturday
const kNODATE = -62171262000000; // ms value for -0001/11/30 00:00:00, libical value for no date.
// (Note: javascript Date interprets kNODATE ms as -0001/11/15 00:00:00.)
var gStartDate = new Date( );
var gDueDate = new Date( );
@ -132,12 +134,22 @@ function loadCalendarEventDialog()
document.getElementById("calendar-new-eventwindow").setAttribute("title", titleString);
// fill in fields from the event
gStartDate.setTime( gEvent.start.getTime() );
document.getElementById( "start-datetime" ).value = gStartDate;
gDueDate.setTime(gEvent.due.getTime() );
document.getElementById( "due-datetime" ).value = gDueDate;
var hasStart = (gEvent.start.getTime() != kNODATE);
if (hasStart)
gStartDate.setTime( gEvent.start.getTime() );
var startPicker = document.getElementById( "start-datetime" );
startPicker.value = gStartDate;
startPicker.disabled = !hasStart;
document.getElementById("start-checkbox").checked = hasStart;
var hasDue = (gEvent.due.getTime() != kNODATE)
if (hasDue)
gDueDate.setTime(gEvent.due.getTime() );
var duePicker = document.getElementById( "due-datetime" );
duePicker.value = gDueDate;
duePicker.disabled = !hasDue;
document.getElementById("due-checkbox").checked = hasDue;
gDuration = gDueDate.getTime() - gStartDate.getTime(); //in ms
if ( gEvent.recurForever )
@ -341,8 +353,16 @@ function onOKCommand()
gEvent.title = getFieldValue( "title-field" );
gEvent.description = getFieldValue( "description-field" );
gEvent.location = getFieldValue( "location-field" );
gEvent.start.setTime( gStartDate.getTime() );
gEvent.due.setTime( gDueDate.getTime() );
if ( getFieldValue("start-checkbox", "checked") )
gEvent.start.setTime( gStartDate.getTime() );
else
gEvent.start.setTime( kNODATE );;
if ( getFieldValue("due-checkbox", "checked") )
gEvent.due.setTime( gDueDate.getTime() );
else
gEvent.due.setTime( kNODATE );
gEvent.url = getFieldValue( "uri-field" );
@ -553,32 +573,48 @@ function checkDueDate()
return 1;
}
/** Check that start datetime <= due datetime if both exist.
Provide separate error message for startDate > dueDate or
startDate == dueDate && startTime > dueTime. **/
function checkSetTimeDate()
{
var CheckDueDate = checkDueDate();
var CheckDueTime = checkDueTime();
var startCheckBox = document.getElementById( "start-checkbox" );
var dueCheckBox = document.getElementById( "due-checkbox" );
if (startCheckBox.checked && dueCheckBox.checked)
{
var CheckDueDate = checkDueDate();
if ( CheckDueDate < 0 )
{
if ( CheckDueDate < 0 )
{
// due before start
setDateError(true);
setTimeError(false);
return false;
}
else if ( CheckDueDate == 0 )
{
}
else if ( CheckDueDate == 0 )
{
setDateError(false);
// start & due same
var CheckDueTime = checkDueTime();
setTimeError(CheckDueTime);
return !CheckDueTime;
}
else
{
setDateError(false);
setTimeError(false);
return true;
}
}
}
setDateError(false);
setTimeError(false);
return true;
}
/**
* Called when the start or due datetime checkbox is clicked.
* Enables/disables corresponding datetime picker.
*/
function onDateTimeCheckbox(checkbox, pickerId)
{
var picker = document.getElementById( pickerId );
picker.disabled = !checkbox.checked;
updateOKButton();
}
/*

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

@ -153,8 +153,13 @@
<hbox class="field-label-box-class" pack="end">
<label value="&newevent.startdate.label;"/>
</hbox>
<datetimepicker id="start-datetime" value=""
onchange="onDateTimePick( this );"/>
<hbox>
<checkbox id="start-checkbox"
oncommand="onDateTimeCheckbox(this, 'start-datetime')"
persist="checked"/>
<datetimepicker id="start-datetime" value=""
onchange="onDateTimePick( this );"/>
</hbox>
</row>
<!-- Due Date -->
@ -162,11 +167,16 @@
<hbox class="field-label-box-class" pack="end">
<label value="&newtodo.duedate.label;"/>
</hbox>
<datetimepicker id="due-datetime" value=""
onchange="onDateTimePick( this );"/>
<hbox>
<checkbox id="due-checkbox"
oncommand="onDateTimeCheckbox(this, 'due-datetime')"
persist="checked"/>
<datetimepicker id="due-datetime" value=""
onchange="onDateTimePick( this );"/>
</hbox>
</row>
<!-- End Time Warning -->
<!-- Due Time Warning -->
<row align="center">
<spacer />
<label id="due-time-warning"
@ -175,7 +185,7 @@
collapsed="true"/>
</row>
<!-- End Date Warning -->
<!-- Due Date Warning -->
<row align="center">
<spacer />
<label id="due-date-warning"

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

@ -52,6 +52,10 @@ const ToDoUnifinderTreeName = "unifinder-todo-tree";
var gTaskArray = new Array();
const kNODATE = -62171262000000; // ms value for -0001/11/30 00:00:00, libical value for no date.
// (Note: javascript Date interprets kNODATE ms as -0001/11/15 00:00:00.)
/**
* Observer for the calendar event data source. This keeps the unifinder
* display up to date when the calendar event data is changed
@ -242,6 +246,18 @@ function checkboxClick( ThisToDo, completed )
gICalLib.modifyTodo( ThisToDo );
}
/**
* Helper function to display todo datetimes in the unifinder
*/
function formatUnifinderToDoDateTime( datetime )
{
// datetime is from todo object, it is not a javascript date
if (datetime != null && datetime.getTime() != kNODATE)
return gCalendarWindow.dateFormater.formatDateTime( new Date(datetime.getTime()), true );
else
return "";
}
/*
This function return the progress state of a ToDo task :
@ -249,40 +265,32 @@ completed, overdue, duetoday, inprogress, future
*/
function ToDoProgressAtom( calendarToDo )
{
var now = new Date();
var now = new Date();
var thisMorning = new Date( now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0 );
var completed = calendarToDo.completed.getTime();
var completed = calendarToDo.completed.getTime();
if( completed > 0 ) {
return("completed");
}
if( completed > 0 )
{
return("completed");
}
var startDate = new Date( calendarToDo.start.getTime() );
var dueDate = new Date( calendarToDo.due.getTime() );
var startDate = new Date( calendarToDo.start.getTime() );
var dueDate = new Date( calendarToDo.due.getTime() );
var tonightMidnight = new Date( now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 00 );
if( thisMorning.getTime() > dueDate.getTime() )
{
return("overdue");
} else
if ( dueDate.getFullYear() == now.getFullYear() &&
dueDate.getMonth() == now.getMonth() &&
dueDate.getDate() == now.getDate() )
{
return("duetoday");
} else
if( tonightMidnight.getTime() < startDate.getTime() )
{
return("future");
}
else
{
return("inprogress");
}
if (dueDate.getTime() != kNODATE) {
if (dueDate.getTime() < now.getTime()) {
return "overdue";
} else if (dueDate.getFullYear() == now.getFullYear() &&
dueDate.getMonth() == now.getMonth() &&
dueDate.getDate() == now.getDate()) {
return "duetoday";
}
}
if (startDate.getTime() != kNODATE) {
if (startDate.getTime() < now.getTime()) {
return "inprogress";
}
}
return "future";
}
var toDoTreeView =
@ -404,18 +412,14 @@ var toDoTreeView =
return( "" );
case "unifinder-todo-tree-col-title":
var titleText;
if( calendarToDo.title == "" )
titleText = gCalendarBundle.getString( "eventUntitled" );
else
titleText = calendarToDo.title;
return( titleText );
// return title, or "Untitled" if empty/null
return calendarToDo.title || gCalendarBundle.getString( "eventUntitled" );
case "unifinder-todo-tree-col-startdate":
return( formatUnifinderToDoDateTime( new Date( calendarToDo.start.getTime() ) ) );
return( formatUnifinderToDoDateTime( calendarToDo.start ) );
case "unifinder-todo-tree-col-duedate":
return( formatUnifinderToDoDateTime( new Date( calendarToDo.due.getTime() ) ) );
return( formatUnifinderToDoDateTime( calendarToDo.due ) );
case "unifinder-todo-tree-col-completeddate":
return( formatUnifinderToDoDateTime( new Date( calendarToDo.completed.getTime() ) ) );
return( formatUnifinderToDoDateTime( calendarToDo.completed ) );
case "unifinder-todo-tree-col-percentcomplete":
return( calendarToDo.percent+"%" );
case "unifinder-todo-tree-col-categories":
@ -493,7 +497,7 @@ function dateToMilliseconds(date) {
if (date == null)
return treeView.sortStartedTime;
var ms = date.getTime(); // note: date is not a javascript date.
if (ms == -62171262000000) // ms value for (0000/00/00 00:00:00)
if (ms == kNODATE)
return treeView.sortStartedTime;
return ms;
}