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:
putterman%netscape.com 2000-03-14 05:38:51 +00:00
Родитель 9ad79e2641
Коммит 0a24489bd2
11 изменённых файлов: 289 добавлений и 66 удалений

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

@ -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="&copyMsgMenu.label;" id="copyMenu" datasources="rdf:null" rdf:ignore="http://home.netscape.com/NC-rdf#MessageChild">
<menu value="&copyMsgMenu.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");
}