зеркало из https://github.com/mozilla/pjs.git
More work on reorganizing mailnews frontend so standalone msg window will work. Also
fixes some bugs from the last time. r=sspitzer
This commit is contained in:
Родитель
54ab990c92
Коммит
f4ab68598c
|
@ -21,6 +21,9 @@
|
|||
* Alec Flett <alecf@netscape.com>
|
||||
*/
|
||||
|
||||
var accountManagerProgID = "component://netscape/messenger/account-manager";
|
||||
var messengerMigratorProgID = "component://netscape/messenger/migrator";
|
||||
|
||||
// returns the first account with an invalid server or identity
|
||||
|
||||
function getFirstInvalidAccount(accounts)
|
||||
|
@ -50,3 +53,59 @@ function getFirstInvalidAccount(accounts)
|
|||
return null;
|
||||
}
|
||||
|
||||
function verifyAccounts() {
|
||||
var openWizard = false;
|
||||
var prefillAccount;
|
||||
|
||||
try {
|
||||
var am = Components.classes[accountManagerProgID].getService(Components.interfaces.nsIMsgAccountManager);
|
||||
|
||||
var accounts = am.accounts;
|
||||
|
||||
// as long as we have some accounts, we're fine.
|
||||
var accountCount = accounts.Count();
|
||||
if (accountCount > 0) {
|
||||
prefillAccount = getFirstInvalidAccount(accounts);
|
||||
dump("prefillAccount = " + prefillAccount + "\n");
|
||||
} else {
|
||||
try {
|
||||
messengerMigrator = Components.classes[messengerMigratorProgID].getService(Components.interfaces.nsIMessengerMigrator);
|
||||
dump("attempt to UpgradePrefs. If that fails, open the account wizard.\n");
|
||||
messengerMigrator.UpgradePrefs();
|
||||
}
|
||||
catch (ex) {
|
||||
// upgrade prefs failed, so open account wizard
|
||||
openWizard = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (openWizard || prefillAccount) {
|
||||
MsgAccountWizard(prefillAccount);
|
||||
}
|
||||
|
||||
}
|
||||
catch (ex) {
|
||||
dump("error verifying accounts " + ex + "\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// we do this from a timer because if this is called from the onload=
|
||||
// handler, then the parent window doesn't appear until after the wizard
|
||||
// has closed, and this is confusing to the user
|
||||
function MsgAccountWizard()
|
||||
{
|
||||
setTimeout("msgOpenAccountWizard();", 0);
|
||||
}
|
||||
|
||||
function msgOpenAccountWizard()
|
||||
{
|
||||
window.openDialog("chrome://messenger/content/AccountWizard.xul",
|
||||
"AccountWizard", "chrome,modal");
|
||||
}
|
||||
|
||||
function MsgAccountManager()
|
||||
{
|
||||
window.openDialog("chrome://messenger/content/AccountManager.xul",
|
||||
"AccountManager", "chrome,modal");
|
||||
}
|
||||
|
|
|
@ -63,24 +63,6 @@ interface nsIMessenger : nsISupports {
|
|||
in boolean isMove);
|
||||
|
||||
void OpenURL(in string url);
|
||||
void MarkMessagesRead(in nsIRDFCompositeDataSource database,
|
||||
in nsISupportsArray messages,
|
||||
in boolean markRead);
|
||||
void MarkMessageRead(in nsIRDFCompositeDataSource database,
|
||||
in nsIRDFResource message,
|
||||
in boolean markRead);
|
||||
void MarkAllMessagesRead(in nsIRDFCompositeDataSource database,
|
||||
in nsIRDFResource folder);
|
||||
|
||||
void MarkMessagesFlagged(in nsIRDFCompositeDataSource database,
|
||||
in nsISupportsArray messages,
|
||||
in boolean markFlagged);
|
||||
void MarkMessageFlagged(in nsIRDFCompositeDataSource database,
|
||||
in nsIRDFResource message,
|
||||
in boolean markFlagged);
|
||||
void markThreadRead(in nsIRDFCompositeDataSource database,
|
||||
in nsIMsgFolder folder,
|
||||
in nsIMsgThread thread);
|
||||
void RenameFolder(in nsIRDFCompositeDataSource db,
|
||||
in nsIRDFResource folder, in wstring name);
|
||||
void CompactFolder(in nsIRDFCompositeDataSource db,
|
||||
|
|
|
@ -452,7 +452,13 @@ function ToggleMessageRead(treeItem)
|
|||
var tree = GetThreadTree();
|
||||
var isUnread = treeItem.getAttribute('IsUnread');
|
||||
var unread = (isUnread == "true");
|
||||
messenger.MarkMessageRead(tree.database, treeItem.resource, unread);
|
||||
|
||||
var messageResource = RDF.GetResource(treeItem.getAttribute('id'));
|
||||
var message = messageResource.QueryInterface(Components.interfaces.nsIMessage);
|
||||
var messageArray = new Array(1);
|
||||
messageArray[0] = message;
|
||||
|
||||
MarkMessagesRead(tree.database, messageArray, unread);
|
||||
}
|
||||
|
||||
function ToggleMessageFlagged(treeItem)
|
||||
|
@ -460,10 +466,15 @@ function ToggleMessageFlagged(treeItem)
|
|||
|
||||
var tree = GetThreadTree();
|
||||
var flaggedValue = treeItem.getAttribute('Flagged');
|
||||
dump('flaggedValue is ' + flaggedValue);
|
||||
dump('\n');
|
||||
var flagged = (flaggedValue =="flagged");
|
||||
messenger.MarkMessageFlagged(tree.database, treeItem.resource, !flagged);
|
||||
|
||||
var messageResource = RDF.GetResource(treeItem.getAttribute('id'));
|
||||
var message = messageResource.QueryInterface(Components.interfaces.nsIMessage);
|
||||
var messageArray = new Array(1);
|
||||
messageArray[0] = message;
|
||||
|
||||
MarkMessagesFlagged(tree.database, messageArray, !flagged);
|
||||
|
||||
}
|
||||
|
||||
//Called when the splitter in between the thread and message panes is clicked.
|
||||
|
|
|
@ -79,7 +79,7 @@ function CopyMessages(compositeDataSource, srcFolder, destFolder, messages, isMo
|
|||
folderArray.AppendElement(destFolderResource);
|
||||
|
||||
var argumentArray = Components.classes["component://netscape/supports-array"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
var srcFolderResource = destFolder.QueryInterface(Components.interfaces.nsIRDFResource);
|
||||
var srcFolderResource = srcFolder.QueryInterface(Components.interfaces.nsIRDFResource);
|
||||
argumentArray.AppendElement(srcFolderResource);
|
||||
ConvertMessagesToResourceArray(messages, argumentArray);
|
||||
|
||||
|
@ -113,11 +113,10 @@ function getIdentityForServer(server)
|
|||
dump("ComposeMessage folder="+folder+"\n");
|
||||
try
|
||||
{
|
||||
server = folder.server;
|
||||
if(folder)
|
||||
{
|
||||
// get the incoming server associated with this uri
|
||||
var server = folder.server;
|
||||
server = folder.server;
|
||||
|
||||
// if they hit new or reply and they are reading a newsgroup
|
||||
// turn this into a new post or a reply to group.
|
||||
|
@ -136,11 +135,12 @@ function getIdentityForServer(server)
|
|||
newsgroup = folder.name;
|
||||
}
|
||||
}
|
||||
identity = getIdentityForServer(server);
|
||||
// dump("identity = " + identity + "\n");
|
||||
|
||||
}
|
||||
|
||||
identity = getIdentityForServer(server);
|
||||
|
||||
// dump("identity = " + identity + "\n");
|
||||
}
|
||||
catch (ex)
|
||||
{
|
||||
|
@ -302,3 +302,69 @@ function SaveAsTemplate(message, folder)
|
|||
messenger.saveAs(uri, false, identity, msgWindow);
|
||||
}
|
||||
}
|
||||
|
||||
function MarkMessagesRead(compositeDataSource, messages, markRead)
|
||||
{
|
||||
|
||||
var messageResourceArray = ConvertMessagesToResourceArray(messages, null);
|
||||
var command;
|
||||
|
||||
if(markRead)
|
||||
command = "http://home.netscape.com/NC-rdf#MarkRead";
|
||||
else
|
||||
command = "http://home.netscape.com/NC-rdf#MarkUnread";
|
||||
|
||||
DoRDFCommand(compositeDataSource, command, messageResourceArray, null);
|
||||
|
||||
}
|
||||
|
||||
function MarkMessagesFlagged(compositeDataSource, messages, markFlagged)
|
||||
{
|
||||
|
||||
var messageResourceArray = ConvertMessagesToResourceArray(messages, null);
|
||||
var command;
|
||||
|
||||
if(markFlagged)
|
||||
command = "http://home.netscape.com/NC-rdf#MarkFlagged";
|
||||
else
|
||||
command = "http://home.netscape.com/NC-rdf#MarkUnflagged";
|
||||
|
||||
DoRDFCommand(compositeDataSource, command, messageResourceArray, null);
|
||||
|
||||
}
|
||||
|
||||
function MarkAllMessagesRead(compositeDataSource, folder)
|
||||
{
|
||||
|
||||
var folderResource = folder.QueryInterface(Components.interfaces.nsIRDFResource);
|
||||
var folderResourceArray = Components.classes["component://netscape/supports-array"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
folderResourceArray.AppendElement(folderResource);
|
||||
|
||||
DoRDFCommand(compositeDataSource, "http://home.netscape.com/NC-rdf#MarkAllMessagesRead", folderResourceArray, null);
|
||||
}
|
||||
|
||||
function MarkThreadAsRead(compositeDataSource, message)
|
||||
{
|
||||
|
||||
if(message)
|
||||
{
|
||||
var folder = message.GetMsgFolder();
|
||||
if(folder)
|
||||
{
|
||||
var thread = folder.getThreadForMessage(message);
|
||||
if(thread)
|
||||
{
|
||||
var folderResource = folder.QueryInterface(Components.interfaces.nsIRDFResource);
|
||||
var folderResourceArray = Components.classes["component://netscape/supports-array"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
folderResourceArray.AppendElement(folderResource);
|
||||
|
||||
var argumentArray = Components.classes["component://netscape/supports-array"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
argumentArray.AppendElement(thread);
|
||||
|
||||
DoRDFCommand(compositeDataSource, "http://home.netscape.com/NC-rdf#MarkThreadRead", folderResourceArray, argumentArray);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -18,6 +18,17 @@
|
|||
* Rights Reserved.
|
||||
*/
|
||||
|
||||
function GetFirstSelectedMsgFolder()
|
||||
{
|
||||
var result = null;
|
||||
var selectedFolders = GetSelectedMsgFolders();
|
||||
if (selectedFolders.length > 0) {
|
||||
result = selectedFolders[0];
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function MsgGetMessage()
|
||||
{
|
||||
var folders = GetSelectedMsgFolders();
|
||||
|
@ -42,7 +53,7 @@ function MsgCopyMessage(destFolder)
|
|||
|
||||
function MsgNewMessage(event)
|
||||
{
|
||||
var loadedFolder = GetLoadedMsgFolder();
|
||||
var loadedFolder = GetFirstSelectedMsgFolder();
|
||||
var messageArray = GetSelectedMessages();
|
||||
|
||||
if (event.shiftKey)
|
||||
|
@ -116,6 +127,14 @@ function MsgForwardAsInline(event)
|
|||
ComposeMessage(msgComposeType.ForwardInline, msgComposeFormat.Default, loadedFolder, messageArray);
|
||||
}
|
||||
|
||||
|
||||
function MsgEditMessageAsNew()
|
||||
{
|
||||
var loadedFolder = GetLoadedMsgFolder();
|
||||
var messageArray = GetSelectedMessages();
|
||||
ComposeMessage(msgComposeType.Template, msgComposeFormat.Default, loadedFolder, messageArray);
|
||||
}
|
||||
|
||||
function MsgHome(url)
|
||||
{
|
||||
window.open( url, "_blank", "chrome,dependent=yes,all" );
|
||||
|
@ -142,7 +161,6 @@ function MsgSubscribe()
|
|||
catch (ex) {
|
||||
useRealSubscribeDialog = false;
|
||||
}
|
||||
|
||||
var preselectedFolder = GetFirstSelectedMsgFolder();
|
||||
if (useRealSubscribeDialog) {
|
||||
Subscribe(windowTitle, preselectedFolder);
|
||||
|
@ -152,26 +170,6 @@ function MsgSubscribe()
|
|||
}
|
||||
}
|
||||
|
||||
function MsgAccountManager()
|
||||
{
|
||||
window.openDialog("chrome://messenger/content/AccountManager.xul",
|
||||
"AccountManager", "chrome,modal");
|
||||
}
|
||||
|
||||
// we do this from a timer because if this is called from the onload=
|
||||
// handler, then the parent window doesn't appear until after the wizard
|
||||
// has closed, and this is confusing to the user
|
||||
function MsgAccountWizard()
|
||||
{
|
||||
setTimeout("msgOpenAccountWizard();", 0);
|
||||
}
|
||||
|
||||
function msgOpenAccountWizard()
|
||||
{
|
||||
window.openDialog("chrome://messenger/content/AccountWizard.xul",
|
||||
"AccountWizard", "chrome,modal");
|
||||
}
|
||||
|
||||
function MsgSaveAsFile()
|
||||
{
|
||||
dump("\MsgSaveAsFile from XUL\n");
|
||||
|
@ -239,3 +237,74 @@ function MsgOpenNewWindowForMessage(messageUri, folderUri)
|
|||
|
||||
}
|
||||
|
||||
function MsgMarkMsgAsRead(markRead)
|
||||
{
|
||||
var selectedMessages = GetSelectedMessages();
|
||||
var compositeDataSource = GetCompositeDataSource("MarkMessageRead");
|
||||
|
||||
MarkMessagesRead(compositeDataSource, selectedMessages, markRead);
|
||||
}
|
||||
|
||||
function MsgMarkAsFlagged(markFlagged)
|
||||
{
|
||||
var selectedMessages = GetSelectedMessages();
|
||||
var compositeDataSource = GetCompositeDataSource("MarkMessageFlagged");
|
||||
|
||||
MarkMessagesFlagged(compositeDataSource, selectedMessages, markFlagged);
|
||||
}
|
||||
|
||||
|
||||
function MsgMarkAllRead()
|
||||
{
|
||||
var compositeDataSource = GetCompositeDataSource("MarkAllMessagesRead");
|
||||
var folder = GetLoadedMsgFolder();
|
||||
|
||||
if(folder)
|
||||
MarkAllMessagesRead(compositeDataSource, folder);
|
||||
}
|
||||
|
||||
function MsgMarkThreadAsRead()
|
||||
{
|
||||
|
||||
var messageList = GetSelectedMessages();
|
||||
if(messageList.length == 1)
|
||||
{
|
||||
var message = messageList[0];
|
||||
var compositeDataSource = GetCompositeDataSource("MarkThreadAsRead");
|
||||
|
||||
MarkThreadAsRead(compositeDataSource, message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function MsgMarkByDate() {}
|
||||
function MsgOpenAttachment() {}
|
||||
function MsgUpdateMsgCount() {}
|
||||
function MsgImport() {}
|
||||
function MsgWorkOffline() {}
|
||||
function MsgSynchronize() {}
|
||||
function MsgGetSelectedMsg() {}
|
||||
function MsgGetFlaggedMsg() {}
|
||||
function MsgSelectThread() {}
|
||||
function MsgSelectFlaggedMsg() {}
|
||||
function MsgShowFolders(){}
|
||||
function MsgFolderProperties() {}
|
||||
function MsgShowLocationbar() {}
|
||||
function MsgViewThreadsUnread() {}
|
||||
function MsgViewWatchedThreadsUnread() {}
|
||||
function MsgViewIgnoreThread() {}
|
||||
function MsgViewAttachInline() {}
|
||||
function MsgWrapLongLines() {}
|
||||
function MsgIncreaseFont() {}
|
||||
function MsgDecreaseFont() {}
|
||||
function MsgShowImages() {}
|
||||
function MsgRefresh() {}
|
||||
function MsgViewPageInfo() {}
|
||||
function MsgFirstUnreadMessage() {}
|
||||
function MsgFirstFlaggedMessage() {}
|
||||
function MsgGoBack() {}
|
||||
function MsgGoForward() {}
|
||||
function MsgAddSenderToAddressBook() {}
|
||||
function MsgAddAllToAddressBook() {}
|
||||
function MsgIgnoreThread() {}
|
||||
function MsgWatchThread() {}
|
||||
|
|
|
@ -32,6 +32,7 @@ function OnLoadMessageWindow()
|
|||
{
|
||||
CreateMailWindowGlobals();
|
||||
CreateMessageWindowGlobals();
|
||||
verifyAccounts();
|
||||
|
||||
InitMsgWindow();
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@ Rights Reserved.
|
|||
<html:script src="chrome://messenger/content/commandglue.js"/>
|
||||
<html:script src="chrome://messenger/content/mailWindow.js"/>
|
||||
<html:script src="chrome://messenger/content/messageWindow.js"/>
|
||||
<html:script src="chrome://messenger/content/accountUtils.js"/>
|
||||
|
||||
<broadcasterset id="broadcasterset"/>
|
||||
|
||||
|
|
|
@ -144,12 +144,11 @@ var folderListener = {
|
|||
if(gNextMessageAfterDelete)
|
||||
{
|
||||
var nextMessage = document.getElementById(gNextMessageAfterDelete);
|
||||
gNextMessageAfterDelete = null;
|
||||
gNextMessageAfterDelete = null;
|
||||
SelectNextMessage(nextMessage);
|
||||
var threadTree = GetThreadTree();
|
||||
if(threadTree)
|
||||
threadTree.ensureElementIsVisible(nextMessage);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1162,17 +1161,6 @@ function GetSelectedMsgFolders()
|
|||
return folderArray;
|
||||
}
|
||||
|
||||
function GetFirstSelectedMsgFolder()
|
||||
{
|
||||
var result = null;
|
||||
var selectedFolders = GetSelectedMsgFolders();
|
||||
if (selectedFolders.length > 0) {
|
||||
result = selectedFolders[0];
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function GetSelectedMessages()
|
||||
{
|
||||
var threadTree = GetThreadTree();
|
||||
|
@ -1199,16 +1187,19 @@ function GetLoadedMsgFolder()
|
|||
{
|
||||
var loadedFolder = GetThreadTreeFolder();
|
||||
var folderUri = loadedFolder.getAttribute("ref");
|
||||
var folderResource = RDF.GetResource(folderUri);
|
||||
if(folderResource)
|
||||
if(folderUri && folderUri != "" && folderUri !="null")
|
||||
{
|
||||
try {
|
||||
var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder);
|
||||
return msgFolder;
|
||||
}
|
||||
catch (ex) {
|
||||
dump(ex + "\n");
|
||||
dump("we know about this. see bug #35591\n");
|
||||
var folderResource = RDF.GetResource(folderUri);
|
||||
if(folderResource)
|
||||
{
|
||||
try {
|
||||
var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder);
|
||||
return msgFolder;
|
||||
}
|
||||
catch (ex) {
|
||||
dump(ex + "\n");
|
||||
dump("we know about this. see bug #35591\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
@ -1228,11 +1219,18 @@ function GetLoadedMessage()
|
|||
|
||||
function GetCompositeDataSource(command)
|
||||
{
|
||||
if(command == "GetNewMessages" || command == "Copy" || command == "NewFolder")
|
||||
if(command == "GetNewMessages" || command == "Copy" || command == "NewFolder" ||
|
||||
command == "MarkAllMessagesRead")
|
||||
{
|
||||
var folderTree = GetFolderTree();
|
||||
return folderTree.database;
|
||||
}
|
||||
else if(command == "MarkMessageRead" || command == "MarkMessageFlagged" ||
|
||||
command == "MarkThreadAsRead")
|
||||
{
|
||||
var threadTree = GetThreadTree();
|
||||
return threadTree.database;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
|
|
|
@ -283,20 +283,12 @@ function GetSelectedFolderURI()
|
|||
return uri;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function MsgOpenAttachment() {}
|
||||
|
||||
function MsgSendUnsentMsg()
|
||||
{
|
||||
var identity = getIdentityForSelectedServer();
|
||||
messenger.SendUnsentMessages(identity);
|
||||
}
|
||||
|
||||
function MsgUpdateMsgCount() {}
|
||||
|
||||
function MsgRenameFolder()
|
||||
{
|
||||
|
@ -429,15 +421,6 @@ function MsgCompactFolder()
|
|||
}
|
||||
}
|
||||
|
||||
function MsgImport() {}
|
||||
function MsgWorkOffline() {}
|
||||
function MsgSynchronize() {}
|
||||
function MsgGetSelectedMsg() {}
|
||||
function MsgGetFlaggedMsg() {}
|
||||
|
||||
function MsgSelectThread() {}
|
||||
function MsgSelectFlaggedMsg() {}
|
||||
|
||||
function MsgFind() {
|
||||
messenger.find();
|
||||
}
|
||||
|
@ -475,18 +458,6 @@ function MsgToggleSplitter(id)
|
|||
splitter.setAttribute("state", "collapsed")
|
||||
}
|
||||
|
||||
function MsgShowFolders()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
function MsgFolderProperties() {}
|
||||
|
||||
function MsgShowLocationbar() {}
|
||||
function MsgViewThreadsUnread() {}
|
||||
function MsgViewWatchedThreadsUnread() {}
|
||||
function MsgViewIgnoreThread() {}
|
||||
|
||||
function MsgViewAllHeaders()
|
||||
{
|
||||
|
@ -507,18 +478,11 @@ function MsgViewBriefHeaders()
|
|||
return true;
|
||||
}
|
||||
|
||||
function MsgViewAttachInline() {}
|
||||
function MsgWrapLongLines() {}
|
||||
function MsgIncreaseFont() {}
|
||||
function MsgDecreaseFont() {}
|
||||
|
||||
function MsgReload()
|
||||
{
|
||||
ThreadPaneSelectionChange()
|
||||
}
|
||||
|
||||
function MsgShowImages() {}
|
||||
function MsgRefresh() {}
|
||||
|
||||
function MsgViewPageSource()
|
||||
{
|
||||
|
@ -564,9 +528,6 @@ function MsgViewPageSource()
|
|||
}
|
||||
}
|
||||
|
||||
function MsgViewPageInfo() {}
|
||||
function MsgFirstUnreadMessage() {}
|
||||
function MsgFirstFlaggedMessage() {}
|
||||
|
||||
function MsgStop() {
|
||||
StopUrls();
|
||||
|
@ -608,82 +569,6 @@ function MsgPreviousFlaggedMessage()
|
|||
GoPreviousMessage(navigateFlagged, true);
|
||||
}
|
||||
|
||||
function MsgGoBack() {}
|
||||
function MsgGoForward() {}
|
||||
|
||||
function MsgEditMessageAsNew()
|
||||
{
|
||||
ComposeMessage(msgComposeType.Template, msgComposeFormat.Default);
|
||||
}
|
||||
|
||||
function MsgAddSenderToAddressBook() {}
|
||||
function MsgAddAllToAddressBook() {}
|
||||
|
||||
function MsgMarkMsgAsRead(markRead)
|
||||
{
|
||||
dump("\MsgMarkMsgAsRead from XUL\n");
|
||||
var tree = GetThreadTree();
|
||||
//get the selected elements
|
||||
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
|
||||
messenger.MarkMessagesRead(tree.database, messageList, markRead);
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
var folderTree = GetFolderTree();
|
||||
var selectedFolderList = folderTree.selectedItems;
|
||||
if(selectedFolderList.length > 0)
|
||||
{
|
||||
var selectedFolder = selectedFolderList[0];
|
||||
messenger.MarkAllMessagesRead(folderTree.database, selectedFolder.resource);
|
||||
}
|
||||
else {
|
||||
dump("Nothing was selected\n");
|
||||
}
|
||||
}
|
||||
|
||||
function MsgMarkAsFlagged(markFlagged)
|
||||
{
|
||||
dump("\MsgMarkMsgAsFlagged from XUL\n");
|
||||
var tree = GetThreadTree();
|
||||
//get the selected elements
|
||||
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
|
||||
messenger.MarkMessagesFlagged(tree.database, messageList, markFlagged);
|
||||
|
||||
}
|
||||
|
||||
function MsgIgnoreThread() {}
|
||||
function MsgWatchThread() {}
|
||||
|
||||
|
||||
function GetMsgFolderFromUri(uri)
|
||||
{
|
||||
//dump("GetMsgFolderFromUri of " + uri + "\n");
|
||||
|
@ -707,43 +592,4 @@ function GetResourceFromUri(uri)
|
|||
return resource;
|
||||
}
|
||||
|
||||
var accountManagerProgID = "component://netscape/messenger/account-manager";
|
||||
var messengerMigratorProgID = "component://netscape/messenger/migrator";
|
||||
|
||||
function verifyAccounts() {
|
||||
var openWizard = false;
|
||||
var prefillAccount;
|
||||
|
||||
try {
|
||||
var am = Components.classes[accountManagerProgID].getService(Components.interfaces.nsIMsgAccountManager);
|
||||
|
||||
var accounts = am.accounts;
|
||||
|
||||
// as long as we have some accounts, we're fine.
|
||||
var accountCount = accounts.Count();
|
||||
if (accountCount > 0) {
|
||||
prefillAccount = getFirstInvalidAccount(accounts);
|
||||
dump("prefillAccount = " + prefillAccount + "\n");
|
||||
} else {
|
||||
try {
|
||||
messengerMigrator = Components.classes[messengerMigratorProgID].getService(Components.interfaces.nsIMessengerMigrator);
|
||||
dump("attempt to UpgradePrefs. If that fails, open the account wizard.\n");
|
||||
messengerMigrator.UpgradePrefs();
|
||||
}
|
||||
catch (ex) {
|
||||
// upgrade prefs failed, so open account wizard
|
||||
openWizard = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (openWizard || prefillAccount) {
|
||||
MsgAccountWizard(prefillAccount);
|
||||
}
|
||||
|
||||
}
|
||||
catch (ex) {
|
||||
dump("error verifying accounts " + ex + "\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1102,159 +1102,6 @@ nsMessenger::CopyMessages(nsIRDFCompositeDataSource *database,
|
|||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkMessageRead(nsIRDFCompositeDataSource *database,
|
||||
nsIRDFResource *messageResource, PRBool markRead)
|
||||
{
|
||||
if(!database || !messageResource)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsresult rv;
|
||||
|
||||
|
||||
nsCOMPtr<nsISupportsArray> resourceArray;
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(resourceArray));
|
||||
if(NS_FAILED(rv))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
resourceArray->AppendElement(messageResource);
|
||||
|
||||
rv = MarkMessagesRead(database, resourceArray, markRead);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkMessagesRead(nsIRDFCompositeDataSource *database,
|
||||
nsISupportsArray *resourceArray,
|
||||
PRBool markRead)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
if(!database || !resourceArray)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> argumentArray;
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(argumentArray));
|
||||
if(NS_FAILED(rv))
|
||||
{
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if(markRead)
|
||||
rv = DoCommand(database, NC_RDF_MARKREAD, resourceArray, argumentArray);
|
||||
else
|
||||
rv = DoCommand(database, NC_RDF_MARKUNREAD, resourceArray, argumentArray);
|
||||
|
||||
return rv;
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkAllMessagesRead(nsIRDFCompositeDataSource *database,
|
||||
nsIRDFResource *folderResource)
|
||||
{
|
||||
nsresult rv=NS_OK;
|
||||
nsCOMPtr<nsISupportsArray> folderArray;
|
||||
|
||||
if(!folderResource || !database)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
if(NS_FAILED(NS_NewISupportsArray(getter_AddRefs(folderArray))))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
folderArray->AppendElement(folderResource);
|
||||
|
||||
DoCommand(database, NC_RDF_MARKALLMESSAGESREAD, folderArray, nsnull);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkThreadRead(nsIRDFCompositeDataSource *database,
|
||||
nsIMsgFolder *folder, nsIMsgThread *thread)
|
||||
{
|
||||
nsresult rv=NS_OK;
|
||||
nsCOMPtr<nsISupportsArray> folderArray;
|
||||
nsCOMPtr<nsISupportsArray> argumentArray;
|
||||
|
||||
if(!folder || !database || !thread)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
if(NS_FAILED(NS_NewISupportsArray(getter_AddRefs(folderArray))))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
|
||||
if(NS_FAILED(NS_NewISupportsArray(getter_AddRefs(argumentArray))))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsCOMPtr<nsIRDFResource> folderResource = do_QueryInterface(folder);
|
||||
if(folder)
|
||||
{
|
||||
folderArray->AppendElement(folderResource);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsISupports> threadSupports = do_QueryInterface(thread);
|
||||
if(threadSupports)
|
||||
argumentArray->AppendElement(threadSupports);
|
||||
|
||||
DoCommand(database, NC_RDF_MARKTHREADREAD, folderArray, argumentArray);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkMessageFlagged(nsIRDFCompositeDataSource *database,
|
||||
nsIRDFResource *messageResource,
|
||||
PRBool markFlagged)
|
||||
{
|
||||
if(!database || !messageResource)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsresult rv;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> resourceArray;
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(resourceArray));
|
||||
if(NS_FAILED(rv))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
resourceArray->AppendElement(messageResource);
|
||||
|
||||
rv = MarkMessagesFlagged(database, resourceArray, markFlagged);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkMessagesFlagged(nsIRDFCompositeDataSource *database,
|
||||
nsISupportsArray *resourceArray,
|
||||
PRBool markFlagged)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
if(!database || !resourceArray)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> argumentArray;
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(argumentArray));
|
||||
if(NS_FAILED(rv))
|
||||
{
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
if(markFlagged)
|
||||
rv = DoCommand(database, NC_RDF_MARKFLAGGED, resourceArray, argumentArray);
|
||||
else
|
||||
rv = DoCommand(database, NC_RDF_MARKUNFLAGGED, resourceArray, argumentArray);
|
||||
|
||||
return rv;
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::RenameFolder(nsIRDFCompositeDataSource* db,
|
||||
nsIRDFResource* folderResource,
|
||||
|
|
Загрузка…
Ссылка в новой задаче