Moving listbox to tree for todo items, bug 157273.

This commit is contained in:
mikep%oeone.com 2002-07-31 15:02:35 +00:00
Родитель 7dc2193eef
Коммит 766f6b5da1
19 изменённых файлов: 280 добавлений и 88 удалений

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

@ -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 "&#37; 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" )
}

Двоичные данные
calendar/resources/skin/classic/unifinder/checkbox_checked.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 342 B

Двоичные данные
calendar/resources/skin/classic/unifinder/checkbox_unchecked.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 293 B

Двоичные данные
calendar/resources/skin/classic/unifinder/priority_header.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 234 B

Двоичные данные
calendar/resources/skin/classic/unifinder/priority_high.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 235 B

Двоичные данные
calendar/resources/skin/classic/unifinder/priority_low.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 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" )
}

Двоичные данные
calendar/resources/skin/modern/unifinder/checkbox_checked.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 325 B

Двоичные данные
calendar/resources/skin/modern/unifinder/checkbox_unchecked.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 261 B

Двоичные данные
calendar/resources/skin/modern/unifinder/priority_header.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 234 B

Двоичные данные
calendar/resources/skin/modern/unifinder/priority_high.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 235 B

Двоичные данные
calendar/resources/skin/modern/unifinder/priority_low.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 245 B