Bug fixing for to do items, adding in tooltips for bug 155885.

This commit is contained in:
mikep%oeone.com 2002-07-05 18:41:18 +00:00
Родитель a01b0356b3
Коммит 020280ec81
21 изменённых файлов: 304 добавлений и 60 удалений

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

@ -78,7 +78,7 @@ h1 {
<td id="mozver">
<h1>
<a id="mozlink" href="http://www.mozilla.org/projects/calendar/" target="_new">Mozilla Calendar 2002062715-cal</a>
<a id="mozlink" href="http://www.mozilla.org/projects/calendar/" target="_new">Mozilla Calendar 2002070410-cal</a>
</h1>
<script type="application/x-javascript">
// using try..catch to handle empty useragents and other cases where the regex fails to apply

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

@ -443,6 +443,8 @@ function newToDoCommand()
calendarToDo.due.setTime( dueDate );
calendarToDo.start.setTime( dueDate );
var args = new Object();
args.mode = "new";
@ -623,38 +625,6 @@ function modifyToDoDialogResponse( calendarToDo )
}
/**
* Called when a user hovers over an element and the text for the mouse over is changed.
*/
function getPreviewText( calendarEventDisplay )
{
var HolderBox = document.createElement( "vbox" );
if (calendarEventDisplay.event.title)
{
var TitleHtml = document.createElement( "description" );
var TitleText = document.createTextNode( "Title: "+calendarEventDisplay.event.title );
TitleHtml.appendChild( TitleText );
HolderBox.appendChild( TitleHtml );
}
var DateHtml = document.createElement( "description" );
var DateText = document.createTextNode( "Start: "+calendarEventDisplay.event.start.toString() );
DateHtml.appendChild( DateText );
HolderBox.appendChild( DateHtml );
if (calendarEventDisplay.event.description)
{
var DescriptionHtml = document.createElement( "description" );
var DescriptionText = document.createTextNode( "Description: "+calendarEventDisplay.event.description );
DescriptionHtml.appendChild( DescriptionText );
HolderBox.appendChild( DescriptionHtml );
}
return ( HolderBox );
}
function alertCalendarVersion()
{
window.openDialog( getBrowserURL(), "_blank", "chrome,all,dialog=no", 'chrome://calendar/content/about.html' );
@ -691,3 +661,136 @@ function closeCalendar()
{
self.close();
}
function changeToolTipTextForToDo( event )
{
var toDoItem = event.currentTarget.toDo;
var Html = document.getElementById( "savetip" );
while( Html.hasChildNodes() )
{
Html.removeChild( Html.firstChild );
}
var HolderBox = document.createElement( "vbox" );
if (toDoItem.title)
{
var TitleHtml = document.createElement( "description" );
var TitleText = document.createTextNode( "Title: "+toDoItem.title );
TitleHtml.appendChild( TitleText );
HolderBox.appendChild( TitleHtml );
}
var DateHtml = document.createElement( "description" );
var startDate = new Date( toDoItem.start.getTime() );
var DateText = document.createTextNode( "Start Date: "+gCalendarWindow.dateFormater.getFormatedDate( startDate ) );
DateHtml.appendChild( DateText );
HolderBox.appendChild( DateHtml );
var DateHtml = document.createElement( "description" );
var dueDate = new Date( toDoItem.due.getTime() );
var DateText = document.createTextNode( "Due Date: "+gCalendarWindow.dateFormater.getFormatedDate( dueDate ) );
DateHtml.appendChild( DateText );
HolderBox.appendChild( DateHtml );
if (toDoItem.description)
{
var DescriptionHtml = document.createElement( "description" );
var DescriptionText = document.createTextNode( "Description: "+toDoItem.description );
DescriptionHtml.appendChild( DescriptionText );
HolderBox.appendChild( DescriptionHtml );
}
Html.appendChild( HolderBox );
}
function changeToolTipTextForEvent( event )
{
var thisEvent = event.currentTarget.event;
var Html = document.getElementById( "savetip" );
while( Html.hasChildNodes() )
{
Html.removeChild( Html.firstChild );
}
var HolderBox = getPreviewText( event.currentTarget.event );
Html.appendChild( HolderBox );
}
/**
* Called when a user hovers over an element and the text for the mouse over is changed.
*/
function getPreviewText( calendarEvent )
{
var HolderBox = document.createElement( "vbox" );
if (calendarEvent.title)
{
var TitleHtml = document.createElement( "description" );
var TitleText = document.createTextNode( "Title: "+calendarEvent.title );
TitleHtml.appendChild( TitleText );
HolderBox.appendChild( TitleHtml );
}
var DateHtml = document.createElement( "description" );
var startDate = new Date( calendarEvent.start.getTime() );
var DateText = document.createTextNode( "Start: "+gCalendarWindow.dateFormater.getFormatedDate( startDate )+" "+gCalendarWindow.dateFormater.getFormatedTime( startDate ) );
DateHtml.appendChild( DateText );
HolderBox.appendChild( DateHtml );
var DateHtml = document.createElement( "description" );
var endDate = new Date( calendarEvent.end.getTime() );
var DateText = document.createTextNode( "End: "+gCalendarWindow.dateFormater.getFormatedDate( endDate )+" "+gCalendarWindow.dateFormater.getFormatedTime( endDate ) );
DateHtml.appendChild( DateText );
HolderBox.appendChild( DateHtml );
if (calendarEvent.description)
{
var DescriptionHtml = document.createElement( "description" );
var DescriptionText = document.createTextNode( "Description: "+calendarEvent.description );
DescriptionHtml.appendChild( DescriptionText );
HolderBox.appendChild( DescriptionHtml );
}
return ( HolderBox );
}
/**
* Called when a user hovers over an element and the text for the mouse over is changed.
*/
function getPreviewTextForRepeatingEvent( calendarEventDisplay )
{
var HolderBox = document.createElement( "vbox" );
if (calendarEventDisplay.event.title)
{
var TitleHtml = document.createElement( "description" );
var TitleText = document.createTextNode( "Title: "+calendarEventDisplay.event.title );
TitleHtml.appendChild( TitleText );
HolderBox.appendChild( TitleHtml );
}
var DateHtml = document.createElement( "description" );
var startDate = new Date( calendarEventDisplay.displayDate.getTime() );
var DateText = document.createTextNode( "Start: "+gCalendarWindow.dateFormater.getFormatedDate( startDate )+" "+gCalendarWindow.dateFormater.getFormatedTime( startDate ) );
DateHtml.appendChild( DateText );
HolderBox.appendChild( DateHtml );
if (calendarEventDisplay.event.description)
{
var DescriptionHtml = document.createElement( "description" );
var DescriptionText = document.createTextNode( "Description: "+calendarEventDisplay.event.description );
DescriptionHtml.appendChild( DescriptionText );
HolderBox.appendChild( DescriptionHtml );
}
return ( HolderBox );
}

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

@ -110,6 +110,7 @@
<keyset>
<key id="delete_key" keycode="VK_DELETE" observes="delete_command"/>
<key id="new_event_key" key="N" modifiers="control" observes="new_command"/>
<key id="new_todo_key" key="M" modifiers="control" observes="new_todo_command"/>
<key id="modify_event_key" key="E" modifiers="control" observes="modify_command"/>
<key id="import_key" key="I" modifiers="control" observes="import_command"/>
<key id="export_key" key="O" modifiers="control" observes="export_command"/>
@ -161,10 +162,9 @@
<!-- Pop up menus -->
<tooltip id="savetip"/>
<popup id="context-menu">
<menuitem label="&calendar.context.newevent.label;" accesskey="&calendar.context.newevent.accesskey;" observes="new_command"/>
<menuitem label="&calendar.context.newtodo.label;" accesskey="&calendar.context.newtodo.accesskey;" observes="new_todo_command"/>
<menuitem label="&calendar.context.modifyevent.label;" accesskey="&calendar.context.modifyevent.accesskey;" observes="modify_command" />
<menuitem label="&calendar.context.deleteevent.label;" accesskey="&calendar.context.deleteevent.accesskey;" observes="delete_command"/>
@ -239,9 +239,9 @@
<checkbox label="&calendar.unifinder.withalarms.label;" oncommand="unifinderShowEventsWithAlarmsOnly( event )" collapsed="true"/>
<checkbox label="&calendar.unifinder.todayandfuture.label;" id="unifinder-future-events" oncommand="unifinderShowFutureEventsOnly( event )" persist="checked"/>
</box>
<listbox id="unifinder-search-results-listbox" seltype="multiple" onselect="unifinderClickEvent( this )"
<listbox tooltip="savetip" id="unifinder-search-results-listbox" seltype="multiple" onselect="unifinderClickEvent( this )"
class="unifinder-tree-class" flex="1" ondragover="return( false );"/>
<splitter collapse="after" persist="state hidden collapsed left"
<splitter id="calendar-todo-splitter" collapse="after" persist="state hidden collapsed top"
class="chromeclass-extrachrome" orient="vertical">
<grippy/>
</splitter>
@ -252,7 +252,7 @@
<box align="center">
<checkbox id="only-completed-checkbox" label="&calendar.unifinder.hidecompletedtodos.label;" oncommand="toDoUnifinderRefesh( event )"/>
</box>
<listbox flex="1" id="unifinder-todo-listbox" seltype="single">
<listbox tooltip="savetip" flex="1" id="unifinder-todo-listbox" seltype="single">
<listhead>
<listheader label="&calendar.unifinder.listbox.done.label;"/>
<listheader label="&calendar.unifinder.listbox.title.label;"/>
@ -263,7 +263,7 @@
<listcol flex="5"/>
<listcol flex="3"/>
</listcols>
<listitem allowevents="true" collapsed="true" name="sample-todo-listitem" ondblclick="unifinderDoubleClickToDo( event )">
<listitem allowevents="true" onmouseover="changeToolTipTextForToDo( event )" collapsed="true" name="sample-todo-listitem" ondblclick="unifinderDoubleClickToDo( event )">
<listcell name="checkbox-listcell">
<checkbox name="firstcheckbox" oncommand="checkboxClick( event )"/>
</listcell>
@ -274,7 +274,7 @@
</vbox>
</vbox>
<splitter id="calendar-splitter" collapse="before" persist="state hidden collapsed"
<splitter id="calendar-splitter" collapse="before" persist="state hidden collapsed left"
class="chromeclass-extrachrome sidebar-splitter" orient="horizontal">
<grippy class="sidebar-splitter-grippy"/>
</splitter>

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

@ -524,12 +524,16 @@ CalendarEventDataSource.prototype.getAllToDos = function()
* CalendarEvent orderToDosByDueDate.
*
* NOTES
* Used to sort table by date
* Used to sort todo table by date
*/
CalendarEventDataSource.prototype.orderToDosByDueDate = function( toDoA, toDoB )
{
return( toDoA.due.getTime() - toDoB.due.getTime() );
if( ( toDoA.due.getTime() - toDoB.due.getTime() ) == 0 )
{
return( toDoA.start.getTime() - toDoB.start.getTime() );
}
return( toDoA.due.getTime() - toDoB.due.getTime() );
}
@ -537,7 +541,7 @@ CalendarEventDataSource.prototype.orderToDosByDueDate = function( toDoA, toDoB )
* CalendarEvent orderEventsByDisplayDate.
*
* NOTES
* Used to sort table by date
* Used to sort events table by date
*/
CalendarEventDataSource.prototype.orderEventsByDisplayDate = function( eventA, eventB )
@ -553,7 +557,7 @@ CalendarEventDataSource.prototype.orderEventsByDisplayDate = function( eventA, e
* CalendarEvent orderRawEventsByDate.
*
* NOTES
* Used to sort table by date
* Used to sort events table by date
*/
CalendarEventDataSource.prototype.orderRawEventsByDate = function( eventA, eventB )

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

@ -163,7 +163,6 @@ function loadCalendarEventDialog()
}
//file attachments;
for( var i = 0; i < gEvent.attachmentsArray.Count(); i++ )
{
var thisAttachment = gEvent.attachmentsArray.QueryElementAt( i, Components.interfaces.nsIMsgAttachment );
@ -412,7 +411,6 @@ function checkEndTime()
return( true );
}
}

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

@ -244,7 +244,14 @@ function getCalendarDataFilePath()
DirUtilsInstance = DirUtilsComponent.createInstance(Components.interfaces.nsIProperties);
nsIFile = Components.interfaces.nsIFile;
FilePath = DirUtilsInstance.get("ProfD", nsIFile).path;
FilePath += "/tempIcal.ics";
var aFile = Components.classes["@mozilla.org/file/local;1"].createInstance();
var aLocalFile = aFile.QueryInterface(Components.interfaces.nsILocalFile);
if (!aLocalFile) return false;
aLocalFile.initWithPath(FilePath);
aLocalFile.append( "tempIcal.ics" );
FilePath = aLocalFile.path;
}
catch(ex)
{

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

@ -100,7 +100,7 @@
<menu id="menu_File">
<menupopup id="menu_FilePopup">
<menuitem id="calendar-new-event-menu" key="new_event_key" label="&event.new.event;" observes="new_command"/>
<menuitem id="calendar-new-todo-menu" key="new_event_key" label="New To Do Item" observes="new_todo_command"/>
<menuitem id="calendar-new-todo-menu" key="new_todo_key" label="&event.new.todo;" observes="new_todo_command"/>
<menuitem id="unifinder-modify-menu" key="modify_event_key" label="&event.edit.event;" observes="modify_command"/>
<menuseparator/>
<menuitem id="calendar-mail-event" observes="send_event_command" label="&event.mail.event;"/>

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

@ -125,6 +125,10 @@ function loadCalendarToDoDialog()
setDateFieldValue( "due-date-text", dueDate );
var startDate = new Date( gToDo.start.getTime() );
setDateFieldValue( "start-date-text", startDate );
if( gToDo.completed.getTime() > 0 )
{
var completedDate = new Date( gToDo.completed.getTime() );
@ -186,6 +190,15 @@ function onOKCommand()
gToDo.due.year = dueDate.getYear()+1900;
gToDo.due.month = dueDate.getMonth();
gToDo.due.day = dueDate.getDate();
gToDo.due.hour = 23;
gToDo.due.minute = 59;
var startDate = getDateTimeFieldValue( "start-date-text" );
gToDo.start.year = startDate.getYear()+1900;
gToDo.start.month = startDate.getMonth();
gToDo.start.day = startDate.getDate();
gToDo.start.hour = 0;
gToDo.start.minute = 0;
gToDo.privateEvent = getFieldValue( "private-checkbox", "checked" );
@ -263,7 +276,32 @@ function onDatePick( datepopup )
datepopup.dateField.editDate = datepopup.value;
var Now = new Date();
checkStartAndDueDates();
}
function checkStartAndDueDates()
{
var StartDate = getDateTimeFieldValue( "start-date-text" );
var DueDate = getDateTimeFieldValue( "due-date-text" );
if( DueDate.getTime() < StartDate.getTime() )
{
//show alert message, disable OK button
document.getElementById( "start-date-warning" ).removeAttribute( "collapsed" );
document.getElementById( "ok" ).setAttribute( "disabled", true );
}
else
{
//enable OK button
document.getElementById( "start-date-warning" ).setAttribute( "collapsed", true );
document.getElementById( "ok" ).removeAttribute( "disabled" );
}
}

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

@ -119,6 +119,17 @@
<textbox id="title-field"/>
</row>
<!-- Start Date -->
<row align="center">
<hbox class="field-label-box-class" pack="end">
<label value="&newtodo.startdate.label;"/>
</hbox>
<hbox id="start-date-box" align="center">
<textbox class="date-text-class" id="start-date-text" readonly="true" onmousedown="prepareDatePicker('start-date-text')" popup="oe-date-picker-popup" position="after_start"/>
<image id="start-date-button" class="event-date-button-class" onmousedown="prepareDatePicker('start-date-text')" popup="oe-date-picker-popup" position="after_start" />
</hbox>
</row>
<!-- Due Date -->
<row align="center">
<hbox class="field-label-box-class" pack="end">
@ -127,6 +138,7 @@
<hbox id="due-date-box" align="center">
<textbox class="date-text-class" id="due-date-text" readonly="true" onmousedown="prepareDatePicker('due-date-text')" popup="oe-date-picker-popup" position="after_start"/>
<image id="start-date-button" class="event-date-button-class" onmousedown="prepareDatePicker('due-date-text')" popup="oe-date-picker-popup" position="after_start" />
<label id="start-date-warning" class="warning-text-class" value="&newtodo.starttime.warning;" collapsed="true"/>
</hbox>
</row>

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

@ -430,7 +430,7 @@ CalendarWindow.prototype.mouseOverInfo = function( calendarEvent, event )
Html.removeChild( Html.firstChild );
}
var HolderBox = getPreviewText( event.currentTarget.calendarEventDisplay );
var HolderBox = getPreviewTextForRepeatingEvent( event.currentTarget.calendarEventDisplay );
Html.appendChild( HolderBox );
}

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

@ -163,7 +163,6 @@ function loadCalendarEventDialog()
}
//file attachments;
for( var i = 0; i < gEvent.attachmentsArray.Count(); i++ )
{
var thisAttachment = gEvent.attachmentsArray.QueryElementAt( i, Components.interfaces.nsIMsgAttachment );
@ -412,7 +411,6 @@ function checkEndTime()
return( true );
}
}

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

@ -100,7 +100,7 @@
<menu id="menu_File">
<menupopup id="menu_FilePopup">
<menuitem id="calendar-new-event-menu" key="new_event_key" label="&event.new.event;" observes="new_command"/>
<menuitem id="calendar-new-todo-menu" key="new_event_key" label="New To Do Item" observes="new_todo_command"/>
<menuitem id="calendar-new-todo-menu" key="new_todo_key" label="&event.new.todo;" observes="new_todo_command"/>
<menuitem id="unifinder-modify-menu" key="modify_event_key" label="&event.edit.event;" observes="modify_command"/>
<menuseparator/>
<menuitem id="calendar-mail-event" observes="send_event_command" label="&event.mail.event;"/>

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

@ -125,6 +125,10 @@ function loadCalendarToDoDialog()
setDateFieldValue( "due-date-text", dueDate );
var startDate = new Date( gToDo.start.getTime() );
setDateFieldValue( "start-date-text", startDate );
if( gToDo.completed.getTime() > 0 )
{
var completedDate = new Date( gToDo.completed.getTime() );
@ -186,6 +190,15 @@ function onOKCommand()
gToDo.due.year = dueDate.getYear()+1900;
gToDo.due.month = dueDate.getMonth();
gToDo.due.day = dueDate.getDate();
gToDo.due.hour = 23;
gToDo.due.minute = 59;
var startDate = getDateTimeFieldValue( "start-date-text" );
gToDo.start.year = startDate.getYear()+1900;
gToDo.start.month = startDate.getMonth();
gToDo.start.day = startDate.getDate();
gToDo.start.hour = 0;
gToDo.start.minute = 0;
gToDo.privateEvent = getFieldValue( "private-checkbox", "checked" );
@ -263,7 +276,32 @@ function onDatePick( datepopup )
datepopup.dateField.editDate = datepopup.value;
var Now = new Date();
checkStartAndDueDates();
}
function checkStartAndDueDates()
{
var StartDate = getDateTimeFieldValue( "start-date-text" );
var DueDate = getDateTimeFieldValue( "due-date-text" );
if( DueDate.getTime() < StartDate.getTime() )
{
//show alert message, disable OK button
document.getElementById( "start-date-warning" ).removeAttribute( "collapsed" );
document.getElementById( "ok" ).setAttribute( "disabled", true );
}
else
{
//enable OK button
document.getElementById( "start-date-warning" ).setAttribute( "collapsed", true );
document.getElementById( "ok" ).removeAttribute( "disabled" );
}
}

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

@ -119,6 +119,17 @@
<textbox id="title-field"/>
</row>
<!-- Start Date -->
<row align="center">
<hbox class="field-label-box-class" pack="end">
<label value="&newtodo.startdate.label;"/>
</hbox>
<hbox id="start-date-box" align="center">
<textbox class="date-text-class" id="start-date-text" readonly="true" onmousedown="prepareDatePicker('start-date-text')" popup="oe-date-picker-popup" position="after_start"/>
<image id="start-date-button" class="event-date-button-class" onmousedown="prepareDatePicker('start-date-text')" popup="oe-date-picker-popup" position="after_start" />
</hbox>
</row>
<!-- Due Date -->
<row align="center">
<hbox class="field-label-box-class" pack="end">
@ -127,6 +138,7 @@
<hbox id="due-date-box" align="center">
<textbox class="date-text-class" id="due-date-text" readonly="true" onmousedown="prepareDatePicker('due-date-text')" popup="oe-date-picker-popup" position="after_start"/>
<image id="start-date-button" class="event-date-button-class" onmousedown="prepareDatePicker('due-date-text')" popup="oe-date-picker-popup" position="after_start" />
<label id="start-date-warning" class="warning-text-class" value="&newtodo.starttime.warning;" collapsed="true"/>
</hbox>
</row>

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

@ -412,6 +412,7 @@ function refreshEventTree( eventArray )
treeItem.event = calendarEvent;
treeItem.setAttribute( "onmouseover", "changeToolTipTextForEvent( event )" );
treeItem.setAttribute( "ondblclick" , "unifinderDoubleClickEvent(" + calendarEvent.id + ")" );
//treeItem.setAttribute( "onclick" , "unifinderClickEvent(" + calendarEvent.id + ")" );

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

@ -194,6 +194,16 @@ function refreshToDoTree( eventArray )
treeItem.toDo = calendarToDo;
var now = new Date();
var thisMorning = new Date( now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0 );
if( calendarToDo.start.getTime() <= thisMorning.getTime() )
{
//this task should be started
treeItem.setAttribute( "started", "true" );
}
var completed = calendarToDo.completed.getTime();
if( completed > 0 )
@ -210,7 +220,9 @@ function refreshToDoTree( eventArray )
var now = new Date();
if( now.getTime() > dueDate.getTime() )
var tonightMidnight = new Date( now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59 );
if( now.getTime() > tonightMidnight.getTime() )
{
/* for setting some css */
treeItem.setAttribute( "overdue", "true" );

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

@ -95,7 +95,9 @@
<!ENTITY newtodo.completed.label "Completed">
<!ENTITY newtodo.duedate.label "Due Date">
<!ENTITY newtodo.startdate.label "Start Date">
<!ENTITY newtodo.priority.label "Priority">
<!ENTITY newtodo.starttime.warning "Your start date occurs after your due date.">
<!ENTITY calendar.confirm.deleteevent "Are you sure you want to delete this event titled: " >
<!ENTITY calendar.confirm.deleteuntitledevent "Are you sure you want to delete this untitled event?" >
@ -106,8 +108,8 @@
<!ENTITY event.title.new "New Event" >
<!ENTITY event.title.edit "Edit Event" >
<!ENTITY todo.title.new "New To Do Item" >
<!ENTITY todo.title.edit "Edit To Do Item" >
<!ENTITY todo.title.new "New Task">
<!ENTITY todo.title.edit "Edit Task">
<!ENTITY event.tip.new "Create a new event." >
<!ENTITY event.tip.edit "Edit an existing event." >
@ -130,8 +132,8 @@
<!ENTITY calendar.unifinder.withalarms.label "With Alarms" >
<!ENTITY calendar.unifinder.todayandfuture.label "Hide Past Events" >
<!ENTITY calendar.unifinder.todoitems.label "To Do Items" >
<!ENTITY calendar.unifinder.hidecompletedtodos.label "Hide Completed To Do Items">
<!ENTITY calendar.unifinder.todoitems.label "Tasks" >
<!ENTITY calendar.unifinder.hidecompletedtodos.label "Hide Completed Tasks">
<!ENTITY calendar.unifinder.listbox.done.label "Done">
<!ENTITY calendar.unifinder.listbox.priority.label "Priority">
@ -191,6 +193,8 @@
<!-- Context Menu -->
<!ENTITY calendar.context.newevent.label "New Event">
<!ENTITY calendar.context.newevent.accesskey "n">
<!ENTITY calendar.context.newtodo.label "New Task">
<!ENTITY calendar.context.newtodo.accesskey "k">
<!ENTITY calendar.context.modifyevent.label "Edit Event">
<!ENTITY calendar.context.modifyevent.accesskey "e">
<!ENTITY calendar.context.deleteevent.label "Delete Event">

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

@ -43,6 +43,9 @@
<!ENTITY event.new.event "New Event">
<!ENTITY event.new.event.accesskey "n">
<!ENTITY event.new.todo "New Task">
<!ENTITY event.new.todo.accesskey "t">
<!ENTITY event.edit.event "Edit Event">
<!ENTITY event.edit.event.accesskey "e">

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

@ -43,6 +43,9 @@
<!ENTITY event.new.event "New Event">
<!ENTITY event.new.event.accesskey "n">
<!ENTITY event.new.todo "New Task">
<!ENTITY event.new.todo.accesskey "t">
<!ENTITY event.edit.event "Edit Event">
<!ENTITY event.edit.event.accesskey "e">

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

@ -1134,3 +1134,8 @@
{
text-decoration : line-through;
}
#unifinder-todo-listbox > listitem[started="true"] > listcell
{
color : green;
}

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

@ -1140,4 +1140,10 @@
#unifinder-todo-listbox > listitem[completed="true"] > listcell
{
text-decoration : line-through;
}
}
#unifinder-todo-listbox > listitem[started="true"] > listcell
{
color : green;
}