Moving listbox to tree for todo items, bug 157273.
|
@ -78,7 +78,7 @@ h1 {
|
|||
|
||||
<td id="mozver">
|
||||
<h1>
|
||||
<a id="mozlink" href="http://www.mozilla.org/projects/calendar/" target="_new">Mozilla Calendar 2002072611-cal</a>
|
||||
<a id="mozlink" href="http://www.mozilla.org/projects/calendar/" target="_new">Mozilla Calendar 2002073015-cal</a>
|
||||
</h1>
|
||||
<script type="application/x-javascript">
|
||||
// using try..catch to handle empty useragents and other cases where the regex fails to apply
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
* Colin Phillips <colinp@oeone.com>
|
||||
* Karl Guertin <grayrest@grayrest.com>
|
||||
* Mike Norton <xor@ivwnet.com>
|
||||
* ArentJan Banck <ajbanck@planet.nl>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
|
@ -627,12 +628,6 @@ function selectAllEvents()
|
|||
}
|
||||
|
||||
|
||||
function deleteToDoCommand( event )
|
||||
{
|
||||
alert( event.originalTarget.getAttribute( "id" ) );
|
||||
}
|
||||
|
||||
|
||||
function closeCalendar()
|
||||
{
|
||||
self.close();
|
||||
|
@ -641,7 +636,7 @@ function closeCalendar()
|
|||
|
||||
function changeToolTipTextForToDo( event )
|
||||
{
|
||||
var toDoItem = event.currentTarget.toDo;
|
||||
var toDoItem = getToDoFromEvent( event );
|
||||
|
||||
var Html = document.getElementById( "savetip" );
|
||||
|
||||
|
@ -652,6 +647,9 @@ function changeToolTipTextForToDo( event )
|
|||
|
||||
var HolderBox = document.createElement( "vbox" );
|
||||
|
||||
if( toDoItem )
|
||||
{
|
||||
|
||||
if (toDoItem.title)
|
||||
{
|
||||
var TitleHtml = document.createElement( "description" );
|
||||
|
@ -681,6 +679,7 @@ function changeToolTipTextForToDo( event )
|
|||
}
|
||||
|
||||
Html.appendChild( HolderBox );
|
||||
}
|
||||
}
|
||||
|
||||
function changeToolTipTextForEvent( event )
|
||||
|
|
|
@ -260,25 +260,56 @@
|
|||
<box align="center">
|
||||
<checkbox id="only-completed-checkbox" label="&calendar.unifinder.hidecompletedtodos.label;" oncommand="toDoUnifinderRefesh( event )"/>
|
||||
</box>
|
||||
<listbox tooltip="savetip" flex="1" id="unifinder-todo-listbox" seltype="single">
|
||||
<listhead>
|
||||
<listheader><checkbox checked="true" readonly="true"/></listheader>
|
||||
<listheader label="&calendar.unifinder.listbox.title.label;"/>
|
||||
<listheader label="&calendar.unifinder.listbox.duedate.label;"/>
|
||||
</listhead>
|
||||
<listcols>
|
||||
<listcol flex="1"/>
|
||||
<listcol flex="5"/>
|
||||
<listcol flex="3"/>
|
||||
</listcols>
|
||||
<listitem onmouseover="changeToolTipTextForToDo( event )" collapsed="true" name="sample-todo-listitem" onclick="unifinderClickToDo( event )" ondblclick="unifinderDoubleClickToDo( event )" context="taskitem-context-menu" >
|
||||
<listcell name="checkbox-listcell">
|
||||
<checkbox name="firstcheckbox"/>
|
||||
</listcell>
|
||||
<listcell name="title-listcell" label=""/>
|
||||
<listcell name="due-date-listcell" label=""/>
|
||||
</listitem>
|
||||
</listbox>
|
||||
|
||||
<tree tooltip="savetip" id="unifinder-todo-tree" flex="1" enableColumnDrag="true">
|
||||
<treecols id="unifinder-todo-tree-cols">
|
||||
<treecol id="unifinder-todo-tree-col-completed"
|
||||
persist="hidden ordinal width" minwidth="18" maxwidth="18" width="18"
|
||||
label="&calendar.unifinder.tree.done.label;">
|
||||
<image id="checkboximg" contextmenu="taskitem-context-menu"/>
|
||||
</treecol>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="unifinder-todo-tree-col-priority"
|
||||
persist="hidden ordinal width" minwidth="18" maxwidth="18" width="18"
|
||||
label="&calendar.unifinder.tree.priority.label;">
|
||||
<image id="checkboximg" contextmenu="taskitem-context-menu"/>
|
||||
</treecol>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="unifinder-todo-tree-col-title"
|
||||
persist="hidden ordinal width" flex="1"
|
||||
label="&calendar.unifinder.tree.title.label;" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="unifinder-todo-tree-col-startdate"
|
||||
persist="hidden ordinal width"
|
||||
hidden="true"
|
||||
flex="1" label="&calendar.unifinder.tree.startdate.label;"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="unifinder-todo-tree-col-duedate"
|
||||
persist="hidden ordinal width"
|
||||
flex="1" label="&calendar.unifinder.tree.duedate.label;"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="unifinder-todo-tree-col-completeddate"
|
||||
persist="hidden ordinal width"
|
||||
hidden="true"
|
||||
flex="1" label="&calendar.unifinder.tree.completeddate.label;"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="unifinder-todo-tree-col-percentcomplete"
|
||||
persist="hidden ordinal width"
|
||||
hidden="true"
|
||||
flex="1" label="&calendar.unifinder.tree.percentcomplete.label;"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="unifinder-todo-tree-col-categories"
|
||||
persist="hidden ordinal width"
|
||||
hidden="true"
|
||||
flex="1" label="&calendar.unifinder.tree.categories.label;"/>
|
||||
</treecols>
|
||||
|
||||
<treechildren onmousemove="changeToolTipTextForToDo( event )"
|
||||
onclick="unifinderClickToDo( event )"
|
||||
ondblclick="unifinderDoubleClickToDo( event )"
|
||||
context="taskitem-context-menu">
|
||||
</treechildren>
|
||||
</tree>
|
||||
</vbox>
|
||||
</vbox>
|
||||
|
||||
|
@ -318,7 +349,7 @@
|
|||
<statusbar id="status-bar" class="chromeclass-status">
|
||||
<statusbarpanel id="component-bar"/>
|
||||
<statusbarpanel id="statusText" flex="1" value="&statusText.label;"/>
|
||||
<statusbarpanel id="offline-status" class="statusbarpanel-iconic"/>
|
||||
<statusbarpanel id="offline-status" class="statusbarpanel-iconic" hidden="true" offline="true"/>
|
||||
</statusbar>
|
||||
|
||||
</window>
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
* Mike Potter <mikep@oeone.com>
|
||||
* Chris Charabaruk <coldacid@meldstar.com>
|
||||
* Colin Phillips <colinp@oeone.com>
|
||||
* ArentJan Banck <ajbanck@planet.nl>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
|
@ -270,6 +271,12 @@ function unifinderEditCommand()
|
|||
|
||||
function unifinderDeleteCommand( DoNotConfirm )
|
||||
{
|
||||
if( unifinderToDoHasFocus() )
|
||||
{
|
||||
unifinderDeleteToDoCommand( DoNotConfirm );
|
||||
return;
|
||||
}
|
||||
|
||||
var SelectedItems = gCalendarWindow.EventSelection.selectedEvents;
|
||||
|
||||
if( SelectedItems.length == 1 )
|
||||
|
@ -404,7 +411,7 @@ function unifinderShowFutureEventsOnly( event )
|
|||
|
||||
refreshEventTree( eventTable );
|
||||
|
||||
/* The following isn't exactly right. It should reload after the next event happens. */
|
||||
/* The following isn't exactly right. It should actually reload after the next event happens. */
|
||||
|
||||
// get the current time
|
||||
var now = new Date();
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
* improve this to make it usable in general.
|
||||
*/
|
||||
|
||||
const ToDoUnifinderTreeName = "unifinder-todo-listbox";
|
||||
const ToDoUnifinderTreeName = "unifinder-todo-tree";
|
||||
|
||||
/**
|
||||
* Observer for the calendar event data source. This keeps the unifinder
|
||||
|
@ -135,6 +135,36 @@ function toDoUnifinderRefesh()
|
|||
refreshToDoTree( eventTable );
|
||||
}
|
||||
|
||||
function unifinderToDoHasFocus()
|
||||
{
|
||||
var tree = document.getElementById( ToDoUnifinderTreeName );
|
||||
return( tree.treeBoxObject.focused );
|
||||
}
|
||||
|
||||
|
||||
function getToDoFromEvent( event )
|
||||
{
|
||||
var tree = document.getElementById( ToDoUnifinderTreeName );
|
||||
var row = new Object();
|
||||
|
||||
tree.treeBoxObject.getCellAt( event.clientX, event.clientY, row, {}, {} );
|
||||
|
||||
if( row.value != -1 && row.value < tree.view.rowCount )
|
||||
{
|
||||
var treeitem = tree.treeBoxObject.view.getItemAtIndex( row.value );
|
||||
var todoId = treeitem.getAttribute("toDoID");
|
||||
return gICalLib.fetchTodo( todoId );
|
||||
}
|
||||
}
|
||||
|
||||
function getSelectedToDo()
|
||||
{
|
||||
var tree = document.getElementById( ToDoUnifinderTreeName );
|
||||
// .toDo object sometimes isn't available?
|
||||
var todoId = tree.contentView.getItemAtIndex(tree.currentIndex).getAttribute("toDoID");
|
||||
return gICalLib.fetchTodo( todoId );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This is attached to the onclik attribute of the events shown in the unifinder
|
||||
|
@ -142,11 +172,22 @@ function toDoUnifinderRefesh()
|
|||
|
||||
function unifinderClickToDo( event )
|
||||
{
|
||||
var listItemCheckbox = event.target.getElementsByTagName( "checkbox" )[0];
|
||||
if ( event.clientX > listItemCheckbox.boxObject.x && event.clientX < listItemCheckbox.boxObject.x + listItemCheckbox.boxObject.width )
|
||||
{
|
||||
listItemCheckbox.checked = !listItemCheckbox.checked;
|
||||
checkboxClick( event )
|
||||
var tree = document.getElementById( ToDoUnifinderTreeName );
|
||||
var ThisToDo = getToDoFromEvent( event );
|
||||
var row = new Object();
|
||||
var childElt = { };
|
||||
var colID = { };
|
||||
tree.treeBoxObject.getCellAt( event.clientX, event.clientY, row, colID, childElt );
|
||||
|
||||
if( colID.value == "unifinder-todo-tree-col-completed" && childElt.value == "image" )
|
||||
{
|
||||
var treeitem = tree.treeBoxObject.view.getItemAtIndex( row.value );
|
||||
var isChecked = treeitem.getAttribute( "checked" );
|
||||
if( isChecked )
|
||||
treeitem.removeAttribute( "checked" )
|
||||
else
|
||||
treeitem.setAttribute(" checked", true );
|
||||
checkboxClick( ThisToDo, !isChecked )
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -158,31 +199,30 @@ function unifinderDoubleClickToDo( event )
|
|||
{
|
||||
//open the edit to do dialog box
|
||||
|
||||
var ThisToDo = event.currentTarget.toDo;
|
||||
|
||||
var ThisToDo = getToDoFromEvent( event );
|
||||
if( ThisToDo )
|
||||
editToDo( ThisToDo );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete all ToDo items that are selected in the ToDo unifinder list
|
||||
* Delete the current selected item with focus from the ToDo unifinder list
|
||||
*/
|
||||
|
||||
function unifinderDeleteToDoCommand( DoNotConfirm )
|
||||
{
|
||||
var unifinderTodoTree = document.getElementById( ToDoUnifinderTreeName );
|
||||
// TODO Implement Confirm
|
||||
var tree = document.getElementById( ToDoUnifinderTreeName );
|
||||
var treeitem = tree.treeBoxObject.view.getItemAtIndex( tree.treeBoxObject.selection.currentIndex );
|
||||
var todoId = treeitem.getAttribute("toDoID");
|
||||
|
||||
for( var i = 0; i < unifinderTodoTree.selectedCount; i++ ) {
|
||||
gICalLib.deleteTodo( unifinderTodoTree.getSelectedItem( i ).toDo.id );
|
||||
}
|
||||
gICalLib.deleteTodo( todoId );
|
||||
}
|
||||
|
||||
function checkboxClick( event )
|
||||
function checkboxClick( ThisToDo, completed )
|
||||
{
|
||||
// var ThisToDo = event.currentTarget.parentNode.parentNode.toDo;
|
||||
var ThisToDo = event.currentTarget.toDo;
|
||||
|
||||
if( event.target.getElementsByTagName( "checkbox" )[0].checked == true )
|
||||
if( completed )
|
||||
{
|
||||
var completedTime = new Date();
|
||||
|
||||
|
@ -211,55 +251,98 @@ function checkboxClick( event )
|
|||
function setUnifinderToDoTreeItem( treeItem, calendarToDo )
|
||||
{
|
||||
treeItem.toDo = calendarToDo;
|
||||
treeItem.setAttribute( "toDoID", calendarToDo.id );
|
||||
|
||||
var treeRow = document.createElement( "treerow" );
|
||||
var treeCellCompleted = document.createElement( "treecell" );
|
||||
var treeCellPriority = document.createElement( "treecell" );
|
||||
var treeCellTitle = document.createElement( "treecell" );
|
||||
var treeCellStartdate = document.createElement( "treecell" );
|
||||
var treeCellDuedate = document.createElement( "treecell" );
|
||||
var treeCellPercentcomplete = document.createElement( "treecell" );
|
||||
var treeCellCompleteddate = document.createElement( "treecell" );
|
||||
var treeCellCategories = document.createElement( "treecell" );
|
||||
|
||||
var now = new Date();
|
||||
|
||||
var thisMorning = new Date( now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0 );
|
||||
|
||||
treeItem.removeAttribute( "completed" );
|
||||
treeItem.removeAttribute( "started" );
|
||||
treeItem.removeAttribute( "overdue" );
|
||||
|
||||
if(treeItem.getElementsByTagName( "treerow" )[0])
|
||||
treeItem.removeChild( treeItem.getElementsByTagName( "treerow" )[0] );
|
||||
|
||||
var textProperties = "";
|
||||
if( calendarToDo.start.getTime() <= thisMorning.getTime() )
|
||||
{
|
||||
//this task should be started
|
||||
treeItem.setAttribute( "started", "true" );
|
||||
textProperties = textProperties + " started";
|
||||
}
|
||||
|
||||
var completed = calendarToDo.completed.getTime();
|
||||
|
||||
if( completed > 0 )
|
||||
{
|
||||
treeItem.getElementsByTagName( "checkbox" )[0].checked = true;
|
||||
|
||||
/* for setting some css */
|
||||
treeItem.setAttribute( "completed", "true" );
|
||||
textProperties = textProperties + " completed";
|
||||
treeItem.setAttribute( "checked", "true" );
|
||||
}
|
||||
|
||||
treeItem.getElementsByAttribute( "name", "title-listcell" )[0].setAttribute( "label", calendarToDo.title );
|
||||
treeCellTitle.setAttribute( "label", calendarToDo.title );
|
||||
|
||||
var startDate = new Date( calendarToDo.start.getTime() );
|
||||
var dueDate = new Date( calendarToDo.due.getTime() );
|
||||
var completedDate = new Date( calendarToDo.completed.getTime() );
|
||||
|
||||
var now = new Date();
|
||||
|
||||
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" );
|
||||
textProperties = textProperties + " overdue";
|
||||
} else
|
||||
{
|
||||
textProperties = textProperties + " inprogress";
|
||||
}
|
||||
if(calendarToDo.priority > 0 && calendarToDo.priority < 5)
|
||||
textProperties = textProperties + " highpriority";
|
||||
if(calendarToDo.priority > 5 && calendarToDo.priority < 10)
|
||||
textProperties = textProperties + " lowpriority";
|
||||
|
||||
|
||||
var FormattedStartDate = formatUnifinderEventDate( startDate );
|
||||
var FormattedDueDate = formatUnifinderEventDate( dueDate );
|
||||
var FormattedCompletedDate = formatUnifinderEventDate( completedDate );
|
||||
|
||||
treeItem.getElementsByAttribute( "name", "due-date-listcell" )[0].setAttribute( "label", FormattedDueDate );
|
||||
|
||||
treeItem.removeAttribute( "collapsed" );
|
||||
treeCellStartdate.setAttribute( "label", FormattedStartDate );
|
||||
treeCellDuedate.setAttribute( "label", FormattedDueDate );
|
||||
treeCellCompleteddate.setAttribute( "label", FormattedCompletedDate );
|
||||
treeCellPercentcomplete.setAttribute( "label", calendarToDo.percent + " %" );
|
||||
treeCellCategories.setAttribute( "label", calendarToDo.categories );
|
||||
|
||||
treeItem.setAttribute( "taskitem", "true" );
|
||||
|
||||
treeRow.setAttribute("properties", textProperties);
|
||||
treeCellCompleted.setAttribute("properties", textProperties);
|
||||
treeCellPriority.setAttribute("properties", textProperties);
|
||||
treeCellTitle.setAttribute("properties", textProperties);
|
||||
treeCellStartdate.setAttribute("properties", textProperties);
|
||||
treeCellDuedate.setAttribute("properties", textProperties);
|
||||
treeCellCompleteddate.setAttribute("properties", textProperties);
|
||||
treeCellPercentcomplete.setAttribute("properties", textProperties);
|
||||
treeCellCategories.setAttribute("properties", textProperties);
|
||||
|
||||
treeRow.appendChild( treeCellCompleted );
|
||||
treeRow.appendChild( treeCellPriority );
|
||||
treeRow.appendChild( treeCellTitle );
|
||||
treeRow.appendChild( treeCellStartdate );
|
||||
treeRow.appendChild( treeCellDuedate );
|
||||
treeRow.appendChild( treeCellCompleteddate );
|
||||
treeRow.appendChild( treeCellPercentcomplete );
|
||||
treeRow.appendChild( treeCellCategories );
|
||||
treeItem.appendChild( treeRow );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Redraw the categories unifinder tree
|
||||
*/
|
||||
|
@ -272,7 +355,6 @@ function refreshToDoTree( eventArray )
|
|||
|
||||
var elementsToRemove = document.getElementsByAttribute( "taskitem", "true" );
|
||||
|
||||
var oldSelectedIndex = oldTreeChildren.selectedIndex;
|
||||
|
||||
for( var i = 0; i < elementsToRemove.length; i++ )
|
||||
{
|
||||
|
@ -285,19 +367,16 @@ function refreshToDoTree( eventArray )
|
|||
var calendarToDo = eventArray[ index ];
|
||||
|
||||
// make the items
|
||||
var oldTreeItems = document.getElementsByAttribute( "name", "sample-todo-listitem" );
|
||||
|
||||
var oldTreeItem = oldTreeItems[0];
|
||||
|
||||
var treeItem = oldTreeItem.cloneNode( true );
|
||||
var treeItem = document.createElement( "treeitem" );
|
||||
|
||||
setUnifinderToDoTreeItem( treeItem, calendarToDo );
|
||||
|
||||
oldTreeChildren.appendChild( treeItem );
|
||||
oldTreeChildren.getElementsByTagName( "treechildren" )[0]. appendChild( treeItem );
|
||||
}
|
||||
oldTreeChildren.selectedIndex = oldSelectedIndex;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Redraw a single item of the ToDo unifinder tree
|
||||
*/
|
||||
|
@ -310,7 +389,7 @@ function toDoUnifinderItemUpdate( calendarToDo )
|
|||
|
||||
for( var i = 0; i < elementsToRemove.length; i++ )
|
||||
{
|
||||
if(elementsToRemove[i].toDo == calendarToDo)
|
||||
if(elementsToRemove[i].getAttribute("toDoID") == calendarToDo.id)
|
||||
{
|
||||
setUnifinderToDoTreeItem( elementsToRemove[i], calendarToDo );
|
||||
}
|
||||
|
|
|
@ -87,6 +87,11 @@ calendar.jar:
|
|||
skin/modern/calendar/datepicker/right_arrow.png (skin/modern/datepicker/right_arrow.png)
|
||||
skin/modern/calendar/timepicker/time_picker_minutes_bottom.png (skin/modern/timepicker/time_picker_minutes_bottom.png)
|
||||
skin/modern/calendar/timepicker/timepicker.css (skin/modern/timepicker/timepicker.css)
|
||||
skin/modern/calendar/unifinder/checkbox_checked.png (skin/modern/checkbox_checked.png)
|
||||
skin/modern/calendar/unifinder/checkbox_unchecked.png (skin/modern/checkbox_unchecked.png)
|
||||
skin/modern/calendar/unifinder/priority_header.png (skin/modern/unifinder/priority_header.png)
|
||||
skin/modern/calendar/unifinder/priority_high.png (skin/modern/unifinder/priority_high.png)
|
||||
skin/modern/calendar/unifinder/priority_low.png (skin/modern/unifinder/priority_low.png)
|
||||
skin/classic/calendar/all_day_event.gif (skin/classic/all_day_event.gif)
|
||||
skin/classic/calendar/all_day_event_down.gif (skin/classic/all_day_event_down.gif)
|
||||
skin/classic/calendar/all_day_event_hover.gif (skin/classic/all_day_event_hover.gif)
|
||||
|
@ -124,3 +129,8 @@ calendar.jar:
|
|||
skin/classic/calendar/datepicker/right_arrow.png (skin/classic/datepicker/right_arrow.png)
|
||||
skin/classic/calendar/timepicker/time_picker_minutes_bottom.png (skin/classic/timepicker/time_picker_minutes_bottom.png)
|
||||
skin/classic/calendar/timepicker/timepicker.css (skin/classic/timepicker/timepicker.css)
|
||||
skin/classic/calendar/unifinder/checkbox_checked.png (skin/classic/checkbox_checked.png)
|
||||
skin/classic/calendar/unifinder/checkbox_unchecked.png (skin/classic/checkbox_unchecked.png)
|
||||
skin/classic/calendar/unifinder/priority_header.png (skin/classic/unifinder/priority_header.png)
|
||||
skin/classic/calendar/unifinder/priority_high.png (skin/classic/unifinder/priority_high.png)
|
||||
skin/classic/calendar/unifinder/priority_low.png (skin/classic/unifinder/priority_low.png)
|
||||
|
|
|
@ -145,11 +145,14 @@
|
|||
<!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">
|
||||
<!ENTITY calendar.unifinder.listbox.title.label "Title">
|
||||
<!ENTITY calendar.unifinder.listbox.duedate.label "Due Date">
|
||||
|
||||
<!ENTITY calendar.unifinder.tree.done.label "Done">
|
||||
<!ENTITY calendar.unifinder.tree.priority.label "Priority">
|
||||
<!ENTITY calendar.unifinder.tree.title.label "Title">
|
||||
<!ENTITY calendar.unifinder.tree.percentcomplete.label "% Complete">
|
||||
<!ENTITY calendar.unifinder.tree.startdate.label "Start Date">
|
||||
<!ENTITY calendar.unifinder.tree.duedate.label "Due Date">
|
||||
<!ENTITY calendar.unifinder.tree.completeddate.label "Completed Date">
|
||||
<!ENTITY calendar.unifinder.tree.categories.label "Categories">
|
||||
|
||||
<!ENTITY calendar.gototoday.button.tooltip "Go to today" >
|
||||
<!ENTITY calendar.choosedate.button.tooltip "Choose date to go to" >
|
||||
|
|
|
@ -1137,19 +1137,47 @@
|
|||
-moz-box-align : start;
|
||||
}
|
||||
|
||||
|
||||
/* TO DO ITEMS */
|
||||
|
||||
#unifinder-todo-listbox > listitem[overdue="true"] > listcell
|
||||
treechildren:-moz-tree-cell-text(started)
|
||||
{
|
||||
color : green;
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-cell-text(overdue)
|
||||
{
|
||||
color : red;
|
||||
}
|
||||
|
||||
#unifinder-todo-listbox > listitem[completed="true"] > listcell
|
||||
treechildren:-moz-tree-cell-text(completed)
|
||||
{
|
||||
text-decoration : line-through;
|
||||
}
|
||||
|
||||
#unifinder-todo-listbox > listitem[started="true"] > listcell
|
||||
{
|
||||
color : green;
|
||||
|
||||
/* TO DO LIST IMAGES */
|
||||
|
||||
#unifinder-todo-tree-col-completed {
|
||||
list-style-image : url("chrome://global/skin/checkbox/cbox-check.gif");
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-image(unifinder-todo-tree-col-completed, inprogress) {
|
||||
list-style-image : url( "chrome://calendar/skin/unifinder/checkbox_unchecked.png" )
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-image(unifinder-todo-tree-col-completed, completed) {
|
||||
list-style-image : url( "chrome://calendar/skin/unifinder/checkbox_checked.png" )
|
||||
}
|
||||
|
||||
#unifinder-todo-tree-col-priority {
|
||||
list-style-image : url( "chrome://calendar/skin/unifinder/priority_header.png" )
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-image(unifinder-todo-tree-col-priority, highpriority) {
|
||||
list-style-image : url( "chrome://calendar/skin/unifinder/priority_high.png" )
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-image(unifinder-todo-tree-col-priority, lowpriority) {
|
||||
list-style-image : url( "chrome://calendar/skin/unifinder/priority_low.png" )
|
||||
}
|
||||
|
|
После Ширина: | Высота: | Размер: 342 B |
После Ширина: | Высота: | Размер: 293 B |
После Ширина: | Высота: | Размер: 234 B |
После Ширина: | Высота: | Размер: 235 B |
После Ширина: | Высота: | Размер: 245 B |
|
@ -1102,29 +1102,64 @@
|
|||
-moz-box-align : start;
|
||||
}
|
||||
|
||||
|
||||
/* TO DO ITEMS */
|
||||
|
||||
#unifinder-todo-listbox > listitem[overdue="true"] > listcell
|
||||
treechildren:-moz-tree-cell-text(started)
|
||||
{
|
||||
color : green;
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-cell-text(overdue)
|
||||
{
|
||||
color : red;
|
||||
}
|
||||
|
||||
#unifinder-todo-listbox > listitem[completed="true"] > listcell
|
||||
treechildren:-moz-tree-cell-text(completed)
|
||||
{
|
||||
text-decoration : line-through;
|
||||
}
|
||||
|
||||
#unifinder-todo-listbox > listitem[started="true"] > listcell
|
||||
{
|
||||
color : green;
|
||||
treechildren:-moz-tree-row(selected) {
|
||||
background-color : -moz-Dialog;
|
||||
}
|
||||
|
||||
#unifinder-todo-listbox:focus > listitem[selected="true"] > listcell
|
||||
{
|
||||
treechildren:-moz-tree-row(selected, focus) {
|
||||
background-color : #d5e3f2;
|
||||
border : 1px dotted #d5e3f2;
|
||||
}
|
||||
|
||||
#unifinder-todo-listbox > listitem[selected="true"] > listcell
|
||||
{
|
||||
background-color : -moz-Dialog;
|
||||
|
||||
/* TO DO LIST IMAGES */
|
||||
|
||||
#unifinder-todo-tree-col-completed {
|
||||
list-style-image : url("chrome://global/skin/checkbox/cbox-check.gif");
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-image(unifinder-todo-tree-col-completed, inprogress) {
|
||||
list-style-image : url("chrome://global/skin/checkbox/cbox.gif");
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-image(unifinder-todo-tree-col-completed, inprogress, current) {
|
||||
list-style-image : url("chrome://global/skin/checkbox/cbox-act.gif");
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-image(unifinder-todo-tree-col-completed, completed) {
|
||||
list-style-image : url("chrome://global/skin/checkbox/cbox-check.gif");
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-image(unifinder-todo-tree-col-completed, completed, current) {
|
||||
list-style-image : url("chrome://global/skin/checkbox/cbox-act-check.gif");
|
||||
}
|
||||
|
||||
#unifinder-todo-tree-col-priority {
|
||||
list-style-image : url( "chrome://calendar/skin/unifinder/priority_header.png" )
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-image(unifinder-todo-tree-col-priority, highpriority) {
|
||||
list-style-image : url( "chrome://calendar/skin/unifinder/priority_high.png" )
|
||||
}
|
||||
|
||||
treechildren:-moz-tree-image(unifinder-todo-tree-col-priority, lowpriority) {
|
||||
list-style-image : url( "chrome://calendar/skin/unifinder/priority_low.png" )
|
||||
}
|
||||
|
|
После Ширина: | Высота: | Размер: 325 B |
После Ширина: | Высота: | Размер: 261 B |
После Ширина: | Высота: | Размер: 234 B |
После Ширина: | Высота: | Размер: 235 B |
После Ширина: | Высота: | Размер: 245 B |