зеркало из https://github.com/mozilla/gecko-dev.git
r=bienvenu. Fixes for 29970 - deleting last message in a folder works. 17074 - remember
sort per folder. 27749 View Message menu works. 16966 Mark thread read. 28419 File Button
This commit is contained in:
Родитель
9ad79e2641
Коммит
0a24489bd2
|
@ -233,9 +233,14 @@ function ChangeFolderByDOMNode(folderNode)
|
|||
dump(uri + "\n");
|
||||
|
||||
var isThreaded = folderNode.getAttribute('threaded');
|
||||
var sortResource = folderNode.getAttribute('sortResource');
|
||||
if(!sortResource)
|
||||
sortResource = "";
|
||||
|
||||
var sortDirection = folderNode.getAttribute('sortDirection');
|
||||
|
||||
if (uri)
|
||||
ChangeFolderByURI(uri, isThreaded == "true", "");
|
||||
ChangeFolderByURI(uri, isThreaded == "true", sortResource, sortDirection);
|
||||
}
|
||||
|
||||
function setTitleFromFolder(msgfolder, subject)
|
||||
|
@ -284,7 +289,7 @@ function setTitleFromFolder(msgfolder, subject)
|
|||
window.title = title;
|
||||
}
|
||||
|
||||
function ChangeFolderByURI(uri, isThreaded, sortID)
|
||||
function ChangeFolderByURI(uri, isThreaded, sortID, sortDirection)
|
||||
{
|
||||
dump('In ChangeFolderByURI\n');
|
||||
var resource = RDF.GetResource(uri);
|
||||
|
@ -307,6 +312,7 @@ function ChangeFolderByURI(uri, isThreaded, sortID)
|
|||
gCurrentFolderToReroot = uri;
|
||||
gCurrentLoadingFolderIsThreaded = isThreaded;
|
||||
gCurrentLoadingFolderSortID = sortID;
|
||||
gCurrentLoadingFolderSortDirection = sortDirection;
|
||||
msgfolder.startFolderLoading();
|
||||
msgfolder.updateFolder(msgWindow);
|
||||
}
|
||||
|
@ -320,14 +326,15 @@ function ChangeFolderByURI(uri, isThreaded, sortID)
|
|||
gCurrentFolderToReroot = "";
|
||||
gCurrentLoadingFolderIsThreaded = false;
|
||||
gCurrentLoadingFolderSortID = "";
|
||||
RerootFolder(uri, msgfolder, isThreaded, sortID);
|
||||
RerootFolder(uri, msgfolder, isThreaded, sortID, sortDirection);
|
||||
|
||||
//Need to do this after rerooting folder. Otherwise possibility of receiving folder loaded
|
||||
//notification before folder has actually changed.
|
||||
msgfolder.updateFolder(msgWindow);
|
||||
}
|
||||
}
|
||||
|
||||
function RerootFolder(uri, newFolder, isThreaded, sortID)
|
||||
function RerootFolder(uri, newFolder, isThreaded, sortID, sortDirection)
|
||||
{
|
||||
dump('In reroot folder\n');
|
||||
var folder = GetThreadTreeFolder();
|
||||
|
@ -338,9 +345,20 @@ function RerootFolder(uri, newFolder, isThreaded, sortID)
|
|||
|
||||
//Set threaded state
|
||||
ShowThreads(isThreaded);
|
||||
|
||||
//Clear out the thread pane so that we can sort it with the new sort id without taking any time.
|
||||
folder.setAttribute('ref', "");
|
||||
|
||||
var column = FindThreadPaneColumnBySortResource(sortID);
|
||||
|
||||
if(column)
|
||||
SortThreadPane(column, sortID, "http://home.netscape.com/NC-rdf#Date", false, sortDirection);
|
||||
else
|
||||
SortThreadPane("DateColumn", "http://home.netscape.com/NC-rdf#Date", "", false, null);
|
||||
|
||||
folder.setAttribute('ref', uri);
|
||||
|
||||
msgNavigationService.EnsureDocumentIsLoaded(document);
|
||||
|
||||
UpdateStatusMessageCounts(newFolder);
|
||||
}
|
||||
|
||||
|
@ -418,16 +436,70 @@ function RestoreThreadPaneSelection(selectionArray)
|
|||
|
||||
}
|
||||
|
||||
function SortThreadPane(column, sortKey, secondarySortKey)
|
||||
function FindThreadPaneColumnBySortResource(sortID)
|
||||
{
|
||||
|
||||
if(sortID == "http://home.netscape.com/NC-rdf#Date")
|
||||
return "DateColumn";
|
||||
else if(sortID == "http://home.netscape.com/NC-rdf#Sender")
|
||||
return "AuthorColumn";
|
||||
else if(sortID == "http://home.netscape.com/NC-rdf#Status")
|
||||
return "StatusColumn";
|
||||
else if(sortID == "http://home.netscape.com/NC-rdf#Subject")
|
||||
return "SubjectColumn";
|
||||
else if(sortID == "http://home.netscape.com/NC-rdf#Flagged")
|
||||
return "FlaggedButtonColumn";
|
||||
else if(sortID == "http://home.netscape.com/NC-rdf#Priority")
|
||||
return "PriorityColumn";
|
||||
else if(sortID == "http://home.netscape.com/NC-rdf#Size")
|
||||
return "SizeColumn";
|
||||
else if(sortID == "http://home.netscape.com/NC-rdf#HasUnreadMessages")
|
||||
return "UnreadButtonColumn";
|
||||
else if(sortID == "http://home.netscape.com/NC-rdf#TotalUnreadMessages")
|
||||
return "UnreadColumn";
|
||||
else if(sortID == "http://home.netscape.com/NC-rdf#TotalMessages")
|
||||
return "TotalColumn";
|
||||
|
||||
return null;
|
||||
|
||||
|
||||
}
|
||||
|
||||
//If toggleCurrentDirection is true, then get current direction and flip to opposite.
|
||||
//If it's not true then use the direction passed in.
|
||||
function SortThreadPane(column, sortKey, secondarySortKey, toggleCurrentDirection, direction)
|
||||
{
|
||||
var node = document.getElementById(column);
|
||||
if(!node)
|
||||
return false;
|
||||
|
||||
if(!direction)
|
||||
{
|
||||
direction = "ascending";
|
||||
//If we just clicked on the same column, then change the direction
|
||||
if(toggleCurrentDirection)
|
||||
{
|
||||
var currentDirection = node.getAttribute('sortDirection');
|
||||
if (currentDirection == "ascending")
|
||||
direction = "descending";
|
||||
else if (currentDirection == "descending")
|
||||
direction = "ascending";
|
||||
}
|
||||
}
|
||||
|
||||
var folder = GetSelectedFolder();
|
||||
if(folder)
|
||||
{
|
||||
folder.setAttribute("sortResource", sortKey);
|
||||
folder.setAttribute("sortDirection", direction);
|
||||
}
|
||||
|
||||
SetActiveThreadPaneSortColumn(column);
|
||||
|
||||
var selection = SaveThreadPaneSelection();
|
||||
var beforeSortTime = new Date();
|
||||
|
||||
var result = SortColumn(node, sortKey, secondarySortKey);
|
||||
var result = SortColumn(node, sortKey, secondarySortKey, direction);
|
||||
var afterSortTime = new Date();
|
||||
var timeToSort = (afterSortTime.getTime() - beforeSortTime.getTime())/1000;
|
||||
|
||||
|
@ -445,10 +517,10 @@ function SortFolderPane(column, sortKey)
|
|||
dump('Couldnt find sort column\n');
|
||||
return false;
|
||||
}
|
||||
return SortColumn(node, sortKey, null);
|
||||
return SortColumn(node, sortKey, null, null);
|
||||
}
|
||||
|
||||
function SortColumn(node, sortKey, secondarySortKey)
|
||||
function SortColumn(node, sortKey, secondarySortKey, direction)
|
||||
{
|
||||
dump('In sortColumn\n');
|
||||
var xulSortService = Components.classes["component://netscape/rdf/xul-sort-service"].getService();
|
||||
|
@ -459,13 +531,18 @@ function SortColumn(node, sortKey, secondarySortKey)
|
|||
if (xulSortService)
|
||||
{
|
||||
// sort!!!
|
||||
sortDirection = "ascending";
|
||||
var currentDirection = node.getAttribute('sortDirection');
|
||||
if (currentDirection == "ascending")
|
||||
sortDirection = "descending";
|
||||
else if (currentDirection == "descending")
|
||||
sortDirection = "ascending";
|
||||
else sortDirection = "ascending";
|
||||
var sortDirection;
|
||||
if(direction)
|
||||
sortDirection = direction;
|
||||
else
|
||||
{
|
||||
var currentDirection = node.getAttribute('sortDirection');
|
||||
if (currentDirection == "ascending")
|
||||
sortDirection = "descending";
|
||||
else if (currentDirection == "descending")
|
||||
sortDirection = "ascending";
|
||||
else sortDirection = "ascending";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
CanCreateSubfolders="rdf:http://home.netscape.com/NC-rdf#CanCreateSubfolders"
|
||||
CanSubscribe="rdf:http://home.netscape.com/NC-rdf#CanSubscribe"
|
||||
CanFileMessages="rdf:http://home.netscape.com/NC-rdf#CanFileMessages"
|
||||
persist="threaded open">
|
||||
persist="threaded open sortResource sortDirection">
|
||||
<treerow >
|
||||
<treecell indent="true" value="rdf:http://home.netscape.com/NC-rdf#FolderTreeName"/>
|
||||
</treerow>
|
||||
|
|
|
@ -116,7 +116,7 @@ Rights Reserved.
|
|||
<key id="key_selectAll"/>
|
||||
<key id="key_preferences"/>
|
||||
|
||||
<!--key id="key_nextUnreadMsg" key="&nextUnreadMsgCmd.key;" observes="cmd_NextUnreadMsg"/-->
|
||||
<key id="key_nextUnreadMsg" key="&nextUnreadMsgCmd.key;" observes="cmd_NextUnreadMsg"/>
|
||||
</keyset>
|
||||
|
||||
<popupset>
|
||||
|
@ -433,7 +433,7 @@ Rights Reserved.
|
|||
<menuitem id="menu_showTaskbar"/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
<menuitem value="&showMessageCmd.label;" disabled="true" oncommand="MsgToggleMessagePane();"/>
|
||||
<menuitem value="&showMessageCmd.label;" oncommand="MsgToggleMessagePane();"/>
|
||||
<menuseparator/>
|
||||
<menu value="&sortMenu.label;">
|
||||
<menupopup>
|
||||
|
@ -627,7 +627,8 @@ Rights Reserved.
|
|||
</menu>
|
||||
<menuitem value="&editMsgAsNewCmd.label;" disabled="true" oncommand="MsgEditMessageAsNew();"/>
|
||||
<menuseparator/>
|
||||
<menu value="&moveMsgMenu.label;" id="moveMenu" datasources="rdf:null" rdf:ignore="http://home.netscape.com/NC-rdf#MessageChild">
|
||||
<menu value="&moveMsgMenu.label;" id="moveMenu" datasources="rdf:null"
|
||||
rdf:ignore="http://home.netscape.com/NC-rdf#MessageChild">
|
||||
<menupopup/>
|
||||
<template>
|
||||
<rule nc:CanFileMessages="true" iscontainer="true" isempty="false">
|
||||
|
@ -675,7 +676,8 @@ Rights Reserved.
|
|||
</rule>
|
||||
</template>
|
||||
</menu>
|
||||
<menu value="©MsgMenu.label;" id="copyMenu" datasources="rdf:null" rdf:ignore="http://home.netscape.com/NC-rdf#MessageChild">
|
||||
<menu value="©MsgMenu.label;" id="copyMenu" datasources="rdf:null"
|
||||
rdf:ignore="http://home.netscape.com/NC-rdf#MessageChild">
|
||||
<menupopup/>
|
||||
<template>
|
||||
<rule nc:CanFileMessages="true" iscontainer="true" isempty="false">
|
||||
|
@ -732,7 +734,7 @@ Rights Reserved.
|
|||
<menupopup>
|
||||
<menuitem value="&markAsReadCmd.label;" oncommand="MsgMarkMsgAsRead(true);"/>
|
||||
<menuitem value="&markAsUnreadCmd.label;" oncommand="MsgMarkMsgAsRead(false);"/>
|
||||
<menuitem value="&markThreadAsReadCmd.label;" disabled="true" oncommand="MsgMarkThreadAsRead();"/>
|
||||
<menuitem value="&markThreadAsReadCmd.label;" oncommand="MsgMarkThreadAsRead();"/>
|
||||
<menuitem value="&markByDateCmd.label;" disabled="true" oncommand="MsgMarkByDate();"/>
|
||||
<menuitem value="&markAllReadCmd.label;" oncommand="MsgMarkAllRead();"/>
|
||||
<menuseparator/>
|
||||
|
@ -761,6 +763,59 @@ Rights Reserved.
|
|||
<titledbutton id="button_replyall" class="button28" align="top" value="&replyAllButton.label;" onclick="MsgReplyToAllMessage(event)"/>
|
||||
<titledbutton id="button_forward" class="button28" align="top" value="&forwardButton.label;" onclick="MsgForwardMessage(event)"/>
|
||||
<toolbarseparator/>
|
||||
<menu id="FileButtonMenu" datasources="rdf:null"
|
||||
rdf:ignore="http://home.netscape.com/NC-rdf#MessageChild"
|
||||
>
|
||||
<titledbutton id="button_file" class="other28" align="top" value="&fileButton.label;"/>
|
||||
<template>
|
||||
<rule nc:CanFileMessages="true" iscontainer="true" isempty="false">
|
||||
<menupopup>
|
||||
<menu uri="..." class="folderMenuItem" value="rdf:http://home.netscape.com/NC-rdf#Name"
|
||||
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
|
||||
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
|
||||
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
|
||||
<menupopup>
|
||||
<menuitem uri="..." value="&fileHereMenu.label;"
|
||||
oncommand="MsgMoveMessage(event.target)"
|
||||
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
|
||||
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
|
||||
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType" />
|
||||
<menuseparator/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
</menupopup>
|
||||
</rule>
|
||||
<rule nc:CanFileMessages="false" nc:ServerType="nntp">
|
||||
<!-- don't show nntp servers in the file and copies menus -->
|
||||
</rule>
|
||||
<rule nc:CanFileMessages="false" iscontainer="true" isempty="false">
|
||||
<!-- note, there is no "file here" -->
|
||||
<menupopup>
|
||||
<menu uri="..." class="folderMenuItem" value="rdf:http://home.netscape.com/NC-rdf#Name"
|
||||
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
|
||||
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
|
||||
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
|
||||
<menupopup/>
|
||||
</menu>
|
||||
</menupopup>
|
||||
</rule>
|
||||
<rule nc:CanFileMessages="true">
|
||||
<menupopup>
|
||||
<menuitem uri="..." class="folderMenuItem" value="rdf:http://home.netscape.com/NC-rdf#Name" oncommand="MsgMoveMessage(event.target)"
|
||||
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
|
||||
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
|
||||
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType"/>
|
||||
</menupopup>
|
||||
</rule>
|
||||
</template>
|
||||
<menupopup/>
|
||||
|
||||
</menu>
|
||||
|
||||
<titledbutton id="button_next" class="other28" align="top" value="&nextButton.label;" onclick="MsgNextUnreadMessage()"/>
|
||||
<titledbutton id="button_delete" class="other28" disabled="true" align="top" value="&deleteButton.label;" onclick="goDoCommand('button_delete')"/>
|
||||
<titledbutton id="button_print" class="other28" align="top" value="&printButton.label;" onclick="Print()"/>
|
||||
|
@ -797,7 +852,7 @@ Rights Reserved.
|
|||
|
||||
<tree id="threadTree" flex="2" style="height:0px" context="threadPaneContext"/>
|
||||
|
||||
<!-- if you change this id, please change GetThreadAndMessagePaneSplitter() -->
|
||||
<!-- if you change this id, please change GetThreadAndMessagePaneSplitter() and MsgToggleMessagePnae() -->
|
||||
<splitter id="gray_horizontal_splitter" collapse="after" persist="state"
|
||||
onclick="OnClickThreadAndMessagePaneSplitter()"/>
|
||||
|
||||
|
|
|
@ -252,7 +252,10 @@ function DropOnFolderTree(event)
|
|||
//temperary for single mail window, not working when supporting multiple mail windows
|
||||
messageTree = GetThreadTree();
|
||||
var nextMessage = GetNextMessageAfterDelete(messageTree.selectedItems);
|
||||
gNextMessageAfterDelete = nextMessage.getAttribute('id');
|
||||
if(nextMessage)
|
||||
gNextMessageAfterDelete = nextMessage.getAttribute('id');
|
||||
else
|
||||
gNextMessageAfterDelete = null;
|
||||
|
||||
messenger.CopyMessages(treeDatabase,
|
||||
sourceRescource,
|
||||
|
|
|
@ -66,10 +66,13 @@ var gCurrentLoadingFolderURI;
|
|||
var gCurrentFolderToReroot;
|
||||
var gCurrentLoadingFolderIsThreaded = false;
|
||||
var gCurrentLoadingFolderSortID ="";
|
||||
var gCurrentLoadingFolderSortDirection = null;
|
||||
|
||||
var gCurrentDisplayedMessage = null;
|
||||
var gNextMessageAfterDelete = null;
|
||||
|
||||
var gActiveThreadPaneSortColumn = "";
|
||||
|
||||
// the folderListener object
|
||||
var folderListener = {
|
||||
OnItemAdded: function(parentItem, item, view) {},
|
||||
|
@ -80,28 +83,33 @@ var folderListener = {
|
|||
|
||||
OnItemIntPropertyChanged: function(item, property, oldValue, newValue)
|
||||
{
|
||||
if(property.GetUnicode() == "TotalMessages" || property.GetUnicode() == "TotalUnreadMessages")
|
||||
var currentLoadedFolder = GetThreadTreeFolder();
|
||||
var currentURI = currentLoadedFolder.getAttribute('ref');
|
||||
|
||||
//if we don't have a folder loaded, don't bother.
|
||||
if(currentURI)
|
||||
{
|
||||
folder = item.QueryInterface(Components.interfaces.nsIMsgFolder);
|
||||
if(folder)
|
||||
if(property.GetUnicode() == "TotalMessages" || property.GetUnicode() == "TotalUnreadMessages")
|
||||
{
|
||||
var folderResource = folder.QueryInterface(Components.interfaces.nsIRDFResource);
|
||||
if(folderResource)
|
||||
folder = item.QueryInterface(Components.interfaces.nsIMsgFolder);
|
||||
if(folder)
|
||||
{
|
||||
var folderURI = folderResource.Value;
|
||||
var currentLoadedFolder = GetThreadTreeFolder();
|
||||
var currentURI = currentLoadedFolder.getAttribute('ref');
|
||||
if(currentURI == folderURI)
|
||||
var folderResource = folder.QueryInterface(Components.interfaces.nsIRDFResource);
|
||||
if(folderResource)
|
||||
{
|
||||
UpdateStatusMessageCounts(folder);
|
||||
var folderURI = folderResource.Value;
|
||||
if(currentURI == folderURI)
|
||||
{
|
||||
UpdateStatusMessageCounts(folder);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -128,9 +136,10 @@ var folderListener = {
|
|||
{
|
||||
msgFolder.endFolderLoading();
|
||||
dump("before reroot in OnFolderLoaded\n");
|
||||
RerootFolder(uri, msgFolder, gCurrentLoadingFolderIsThreaded, gCurrentLoadingFolderSortID);
|
||||
RerootFolder(uri, msgFolder, gCurrentLoadingFolderIsThreaded, gCurrentLoadingFolderSortID, gCurrentLoadingFolderSortDirection);
|
||||
gCurrentLoadingFolderIsThreaded = false;
|
||||
gCurrentLoadingFolderSortID = "";
|
||||
gCurrentLoadingFolderSortDirection = null;
|
||||
}
|
||||
}
|
||||
if(uri == gCurrentLoadingFolderURI)
|
||||
|
@ -165,16 +174,19 @@ var folderListener = {
|
|||
msgNavigationService.EnsureDocumentIsLoaded(document);
|
||||
|
||||
dump("next message uri is " + gNextMessageAfterDelete + "\n");
|
||||
var nextMessage = document.getElementById(gNextMessageAfterDelete);
|
||||
if(!nextMessage)
|
||||
dump("No next message after delete\n");
|
||||
SelectNextMessage(nextMessage);
|
||||
var threadTree = GetThreadTree();
|
||||
if(threadTree)
|
||||
threadTree.ensureElementIsVisible(nextMessage);
|
||||
else
|
||||
dump("No thread tree\n");
|
||||
gNextMessageAfterDelete = null;
|
||||
if(gNextMessageAfterDelete)
|
||||
{
|
||||
var nextMessage = document.getElementById(gNextMessageAfterDelete);
|
||||
if(!nextMessage)
|
||||
dump("No next message after delete\n");
|
||||
SelectNextMessage(nextMessage);
|
||||
var threadTree = GetThreadTree();
|
||||
if(threadTree)
|
||||
threadTree.ensureElementIsVisible(nextMessage);
|
||||
else
|
||||
dump("No thread tree\n");
|
||||
gNextMessageAfterDelete = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -286,8 +298,18 @@ function OnUnloadMessenger()
|
|||
messenger.SetWindow(null, null);
|
||||
}
|
||||
}
|
||||
|
||||
var msgDS = folderDataSource.QueryInterface(Components.interfaces.nsIMsgRDFDataSource);
|
||||
msgDS.window = null;
|
||||
|
||||
msgWindow.closeWindow();
|
||||
msgDS = messageDataSource.QueryInterface(Components.interfaces.nsIMsgRDFDataSource);
|
||||
msgDS.window = null;
|
||||
|
||||
msgDS = accountManagerDataSource.QueryInterface(Components.interfaces.nsIMsgRDFDataSource);
|
||||
msgDS.window = null;
|
||||
|
||||
|
||||
msgWindow.closeWindow();
|
||||
}
|
||||
|
||||
|
||||
|
@ -477,6 +499,8 @@ function AddDataSources()
|
|||
//To threadpane copy content menu
|
||||
SetupMoveCopyMenus('threadPaneContext-copyMenu', accountManagerDataSource, folderDataSource);
|
||||
|
||||
//To FileButton menu
|
||||
SetupMoveCopyMenus('FileButtonMenu', accountManagerDataSource, folderDataSource);
|
||||
//Add statusFeedback
|
||||
|
||||
var msgDS = folderDataSource.QueryInterface(Components.interfaces.nsIMsgRDFDataSource);
|
||||
|
@ -492,6 +516,7 @@ function AddDataSources()
|
|||
|
||||
function SetupMoveCopyMenus(menuid, accountManagerDataSource, folderDataSource)
|
||||
{
|
||||
dump("SetupMoveCopyMenus for " + menuid + "\n");
|
||||
var menu = document.getElementById(menuid);
|
||||
if(menu)
|
||||
{
|
||||
|
@ -534,7 +559,6 @@ function OnLoadThreadPane(threadTree)
|
|||
{
|
||||
gThreadTree = threadTree;
|
||||
//Sort by date by default
|
||||
MsgSortByDate();
|
||||
// add folderSource to thread pane
|
||||
folderDataSource = folderDataSource.QueryInterface(Components.interfaces.nsIRDFDataSource);
|
||||
threadTree.database.AddDataSource(folderDataSource);
|
||||
|
@ -723,3 +747,23 @@ function ChangeSelection(tree, newSelection)
|
|||
}
|
||||
}
|
||||
|
||||
function SetActiveThreadPaneSortColumn(column)
|
||||
{
|
||||
gActiveThreadPaneSortColumn = column;
|
||||
}
|
||||
|
||||
function GetActiveThreadPaneSortColumn()
|
||||
{
|
||||
return gActiveThreadPaneSortColumn;
|
||||
}
|
||||
|
||||
function ClearActiveThreadPaneSortColumn()
|
||||
{
|
||||
var activeColumn = document.getElementById(gActiveThreadPaneSortColumn);
|
||||
if(activeColumn)
|
||||
{
|
||||
activeColumn.removeAttribute("sortActive");
|
||||
activeColumn = "";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -406,7 +406,10 @@ function MsgDeleteMessage(fromToolbar)
|
|||
//get the current folder
|
||||
|
||||
messenger.DeleteMessages(tree.database, srcFolder.resource, messageList);
|
||||
gNextMessageAfterDelete = nextMessage.getAttribute('id');
|
||||
if(nextMessage)
|
||||
gNextMessageAfterDelete = nextMessage.getAttribute('id');
|
||||
else
|
||||
gNextMessageAfterDelete = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -553,7 +556,11 @@ function MsgMoveMessage(destFolder)
|
|||
}
|
||||
else
|
||||
{
|
||||
gNextMessageAfterDelete = nextMessage.getAttribute('id');
|
||||
if(nextMessage)
|
||||
gNextMessageAfterDelete = nextMessage.getAttribute('id');
|
||||
else
|
||||
gNextMessageAfterDelete = null;
|
||||
|
||||
messenger.CopyMessages(tree.database,
|
||||
srcFolder.resource,
|
||||
destFolder.resource, messageList, true);
|
||||
|
@ -600,35 +607,35 @@ function MsgViewAllThreadMsgs()
|
|||
|
||||
function MsgSortByDate()
|
||||
{
|
||||
SortThreadPane('DateColumn', 'http://home.netscape.com/NC-rdf#Date', null);
|
||||
SortThreadPane('DateColumn', 'http://home.netscape.com/NC-rdf#Date', null, true, null);
|
||||
}
|
||||
|
||||
function MsgSortBySender()
|
||||
{
|
||||
SortThreadPane('AuthorColumn', 'http://home.netscape.com/NC-rdf#Sender', 'http://home.netscape.com/NC-rdf#Date');
|
||||
SortThreadPane('AuthorColumn', 'http://home.netscape.com/NC-rdf#Sender', 'http://home.netscape.com/NC-rdf#Date', true, null);
|
||||
}
|
||||
|
||||
function MsgSortByStatus()
|
||||
{
|
||||
SortThreadPane('StatusColumn', 'http://home.netscape.com/NC-rdf#Status', 'http://home.netscape.com/NC-rdf#Date');
|
||||
SortThreadPane('StatusColumn', 'http://home.netscape.com/NC-rdf#Status', 'http://home.netscape.com/NC-rdf#Date', true, null);
|
||||
}
|
||||
|
||||
function MsgSortBySubject()
|
||||
{
|
||||
SortThreadPane('SubjectColumn', 'http://home.netscape.com/NC-rdf#Subject', 'http://home.netscape.com/NC-rdf#Date');
|
||||
SortThreadPane('SubjectColumn', 'http://home.netscape.com/NC-rdf#Subject', 'http://home.netscape.com/NC-rdf#Date', true, null);
|
||||
}
|
||||
|
||||
function MsgSortByFlagged()
|
||||
{
|
||||
SortThreadPane('FlaggedButtonColumn', 'http://home.netscape.com/NC-rdf#Flagged', 'http://home.netscape.com/NC-rdf#Date');
|
||||
SortThreadPane('FlaggedButtonColumn', 'http://home.netscape.com/NC-rdf#Flagged', 'http://home.netscape.com/NC-rdf#Date', true, null);
|
||||
}
|
||||
function MsgSortByPriority()
|
||||
{
|
||||
SortThreadPane('PriorityColumn', 'http://home.netscape.com/NC-rdf#Priority', 'http://home.netscape.com/NC-rdf#Date');
|
||||
SortThreadPane('PriorityColumn', 'http://home.netscape.com/NC-rdf#Priority', 'http://home.netscape.com/NC-rdf#Date',true, null);
|
||||
}
|
||||
function MsgSortBySize()
|
||||
{
|
||||
SortThreadPane('SizeColumn', 'http://home.netscape.com/NC-rdf#Size', 'http://home.netscape.com/NC-rdf#Date');
|
||||
SortThreadPane('SizeColumn', 'http://home.netscape.com/NC-rdf#Size', 'http://home.netscape.com/NC-rdf#Date', true, null);
|
||||
}
|
||||
function MsgSortByThread()
|
||||
{
|
||||
|
@ -636,7 +643,7 @@ function MsgSortByThread()
|
|||
}
|
||||
function MsgSortByUnread()
|
||||
{
|
||||
SortThreadPane('UnreadButtonColumn', 'http://home.netscape.com/NC-rdf#TotalUnreadMessages','http://home.netscape.com/NC-rdf#Date');
|
||||
SortThreadPane('UnreadColumn', 'http://home.netscape.com/NC-rdf#TotalUnreadMessages','http://home.netscape.com/NC-rdf#Date', true, null);
|
||||
}
|
||||
function MsgSortByOrderReceived()
|
||||
{
|
||||
|
@ -652,12 +659,12 @@ function MsgSortDescending()
|
|||
}
|
||||
function MsgSortByRead()
|
||||
{
|
||||
dump("not implemented yet.\n");
|
||||
SortThreadPane('UnreadButtonColumn', 'http://home.netscape.com/NC-rdf#HasUnreadMessages','http://home.netscape.com/NC-rdf#Date', true, null);
|
||||
}
|
||||
|
||||
function MsgSortByTotal()
|
||||
{
|
||||
SortThreadPane('TotalColumn', 'http://home.netscape.com/NC-rdf#TotalMessages', 'http://home.netscape.com/NC-rdf#Date');
|
||||
SortThreadPane('TotalColumn', 'http://home.netscape.com/NC-rdf#TotalMessages', 'http://home.netscape.com/NC-rdf#Date', true, null);
|
||||
}
|
||||
|
||||
function MsgNewFolder()
|
||||
|
@ -918,7 +925,9 @@ function MsgFilters() {
|
|||
|
||||
function MsgToggleMessagePane()
|
||||
{
|
||||
MsgToggleSplitter("messagePaneSplitter");
|
||||
//OnClickThreadAndMessagePaneSplitter is based on the value before the splitter is toggled.
|
||||
OnClickThreadAndMessagePaneSplitter();
|
||||
MsgToggleSplitter("gray_horizontal_splitter");
|
||||
}
|
||||
|
||||
function MsgToggleFolderPane()
|
||||
|
@ -1054,7 +1063,33 @@ function MsgMarkMsgAsRead(markRead)
|
|||
messenger.MarkMessagesRead(tree.database, messageList, markRead);
|
||||
}
|
||||
|
||||
function MsgMarkThreadAsRead() {}
|
||||
function MsgMarkThreadAsRead()
|
||||
{
|
||||
var tree = GetThreadTree();
|
||||
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
|
||||
if(messageList.Count() == 1)
|
||||
{
|
||||
var messageSupports = messageList.GetElementAt(0);
|
||||
if(messageSupports)
|
||||
{
|
||||
var message = messageSupports.QueryInterface(Components.interfaces.nsIMessage);
|
||||
if(message)
|
||||
{
|
||||
var folder = message.GetMsgFolder();
|
||||
if(folder)
|
||||
{
|
||||
var thread = folder.getThreadForMessage(message);
|
||||
if(thread)
|
||||
{
|
||||
messenger.markThreadRead(tree.database, folder, thread);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function MsgMarkByDate() {}
|
||||
function MsgMarkAllRead()
|
||||
{
|
||||
|
|
|
@ -93,7 +93,7 @@ Rights Reserved.
|
|||
<!ENTITY showMessengerToolbarCmd.accesskey "o">
|
||||
<!ENTITY showLocationToolbarCmd.label ".Show Location Toolbar">
|
||||
<!ENTITY showLocationToolbarCmd.accesskey "l">
|
||||
<!ENTITY showMessageCmd.label ".Message">
|
||||
<!ENTITY showMessageCmd.label "Message">
|
||||
<!ENTITY sortMenu.label "Sort">
|
||||
<!ENTITY sortByDateCmd.label "by Date">
|
||||
<!ENTITY sortByFlagCmd.label ".by Flag">
|
||||
|
@ -235,7 +235,7 @@ Rights Reserved.
|
|||
<!ENTITY markMenu.label "Mark">
|
||||
<!ENTITY markAsReadCmd.label "As Read">
|
||||
<!ENTITY markAsUnreadCmd.label "As Unread">
|
||||
<!ENTITY markThreadAsReadCmd.label ".Thread As Read">
|
||||
<!ENTITY markThreadAsReadCmd.label "Thread As Read">
|
||||
<!ENTITY markByDateCmd.label ".by Date...">
|
||||
<!ENTITY markAllReadCmd.label "All Read">
|
||||
<!ENTITY markFlaggedCmd.label "Flag">
|
||||
|
@ -252,6 +252,7 @@ Rights Reserved.
|
|||
<!ENTITY replyButton.label "Reply">
|
||||
<!ENTITY replyAllButton.label "Reply All">
|
||||
<!ENTITY forwardButton.label "Forward">
|
||||
<!ENTITY fileButton.label "File">
|
||||
<!ENTITY nextButton.label "Next">
|
||||
<!ENTITY deleteButton.label "Delete">
|
||||
<!ENTITY printButton.label "Print">
|
||||
|
|
|
@ -43,6 +43,7 @@ folder-hasmail.gif
|
|||
readcol.gif
|
||||
readmail.gif
|
||||
unreadmail.gif
|
||||
file.gif
|
||||
next.gif
|
||||
threadcol.gif
|
||||
unthreadcol.gif
|
||||
|
|
|
@ -52,6 +52,7 @@ EXPORT_RESOURCE_SAMPLES = \
|
|||
readmail.gif \
|
||||
unreadmail.gif \
|
||||
replyall.gif \
|
||||
file.gif \
|
||||
next.gif \
|
||||
threadcol.gif \
|
||||
unthreadcol.gif \
|
||||
|
|
|
@ -47,6 +47,7 @@ install::
|
|||
$(MAKE_INSTALL) readcol.gif $(DIST)\bin\chrome\messenger\skin\default
|
||||
$(MAKE_INSTALL) readmail.gif $(DIST)\bin\chrome\messenger\skin\default
|
||||
$(MAKE_INSTALL) unreadmail.gif $(DIST)\bin\chrome\messenger\skin\default
|
||||
$(MAKE_INSTALL) file.gif $(DIST)\bin\chrome\messenger\skin\default
|
||||
$(MAKE_INSTALL) next.gif $(DIST)\bin\chrome\messenger\skin\default
|
||||
$(MAKE_INSTALL) threadcol.gif $(DIST)\bin\chrome\messenger\skin\default
|
||||
$(MAKE_INSTALL) unthreadcol.gif $(DIST)\bin\chrome\messenger\skin\default
|
||||
|
@ -117,6 +118,7 @@ clobber::
|
|||
rm -f $(DIST)\chrome\messenger\skin\default\readcol.gif
|
||||
rm -f $(DIST)\chrome\messenger\skin\default\readmail.gif
|
||||
rm -f $(DIST)\chrome\messenger\skin\default\unreadmail.gif
|
||||
rm -f $(DIST)\chrome\messenger\skin\default\file.gif
|
||||
rm -f $(DIST)\chrome\messenger\skin\default\next.gif
|
||||
rm -f $(DIST)\chrome\messenger\skin\default\threadcol.gif
|
||||
rm -f $(DIST)\chrome\messenger\skin\default\unthreadcol.gif
|
||||
|
|
|
@ -228,6 +228,10 @@ iframe {
|
|||
list-style-image:url("chrome://messenger/skin/forward.gif");
|
||||
}
|
||||
|
||||
#button_file {
|
||||
list-style-image:url("chrome://messenger/skin/file.gif");
|
||||
}
|
||||
|
||||
#button_next {
|
||||
list-style-image:url("chrome://messenger/skin/next.gif");
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче