From 9108c47b4d585776d26f7069eaad1f99fc383dfa Mon Sep 17 00:00:00 2001 From: "jminta%gmail.com" Date: Wed, 18 Jun 2008 01:17:01 +0000 Subject: [PATCH] Bug 414038 (preliminary patch) Remove GetFolderAttribute function, r/sr=bienvenu git-svn-id: svn://10.0.0.236/trunk@252423 18797224-902f-48f8-a5cc-f745e15eee43 --- .../base/content/mail3PaneWindowCommands.js | 19 ++++--- mozilla/mail/base/content/mailContextMenus.js | 23 ++++----- .../mail/base/content/mailWindowOverlay.js | 8 +-- .../mail/base/content/msgMail3PaneWindow.js | 49 +++++++++++++++---- .../base/resources/content/messengerdnd.js | 22 ++++----- .../base/resources/content/msgSynchronize.js | 17 +------ 6 files changed, 76 insertions(+), 62 deletions(-) diff --git a/mozilla/mail/base/content/mail3PaneWindowCommands.js b/mozilla/mail/base/content/mail3PaneWindowCommands.js index 2abd754d951..3c136045dd5 100644 --- a/mozilla/mail/base/content/mail3PaneWindowCommands.js +++ b/mozilla/mail/base/content/mail3PaneWindowCommands.js @@ -85,9 +85,10 @@ var FolderPaneController = var serverType = null; try { var folderResource = GetFolderResource(folderTree, startIndex.value); - specialFolder = GetFolderAttribute(folderTree, folderResource, "SpecialFolder"); - isServer = GetFolderAttribute(folderTree, folderResource, "IsServer") == "true"; - serverType = GetFolderAttribute(folderTree, folderResource, "ServerType"); + var folder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); + specialFolder = getSpecialFolderString(folder); + isServer = folder.isServer; + serverType = folder.server.type; if (serverType == "nntp") { if ( command == "cmd_delete" ) { goSetMenuValue(command, 'valueNewsgroup'); @@ -845,8 +846,8 @@ function IsRenameFolderEnabled() var endIndex = {}; selection.getRangeAt(0, startIndex, endIndex); var folderResource = GetFolderResource(folderTree, startIndex.value); - var canRename = GetFolderAttribute(folderTree, folderResource, "CanRename") == "true"; - return canRename && isCommandEnabled("cmd_renameFolder"); + var folder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); + return folder.canRename && isCommandEnabled("cmd_renameFolder"); } else return false; @@ -871,10 +872,11 @@ function IsPropertiesEnabled(command) { var folderTree = GetFolderTree(); var folderResource = GetSelectedFolderResource(); + var folder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); // when servers are selected // it should be "Edit | Properties..." - if (GetFolderAttribute(folderTree, folderResource, "IsServer") == "true") + if (folder.isServer) goSetMenuValue(command, "valueGeneric"); else goSetMenuValue(command, isNewsURI(folderResource.Value) ? "valueNewsgroup" : "valueFolder"); @@ -903,7 +905,8 @@ function IsFolderSelected() var endIndex = {}; selection.getRangeAt(0, startIndex, endIndex); var folderResource = GetFolderResource(folderTree, startIndex.value); - return GetFolderAttribute(folderTree, folderResource, "IsServer") != "true"; + var folder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); + return folder.isServer; } else return false; @@ -922,7 +925,7 @@ function MsgDeleteFolder() { var selectedFolder = selectedFolders[i]; var folderResource = selectedFolder.QueryInterface(Components.interfaces.nsIRDFResource); - var specialFolder = GetFolderAttribute(folderTree, folderResource, "SpecialFolder"); + var specialFolder = getSpecialFolderString(selectedFolder); if (specialFolder != "Inbox" && specialFolder != "Trash") { var folder = selectedFolder.QueryInterface(Components.interfaces.nsIMsgFolder); diff --git a/mozilla/mail/base/content/mailContextMenus.js b/mozilla/mail/base/content/mailContextMenus.js index c79052ac6ce..75c5dfc821c 100644 --- a/mozilla/mail/base/content/mailContextMenus.js +++ b/mozilla/mail/base/content/mailContextMenus.js @@ -517,9 +517,9 @@ function fillFolderPaneContextMenu() var folder = GetMsgFolderFromUri(folderResource.Value, false); var isVirtualFolder = folder ? folder.flags & MSG_FOLDER_FLAG_VIRTUAL : false; - var isServer = GetFolderAttribute(folderTree, folderResource, "IsServer") == 'true'; - var serverType = GetFolderAttribute(folderTree, folderResource, "ServerType"); - var specialFolder = GetFolderAttribute(folderTree, folderResource, "SpecialFolder"); + var isServer = folder.isServer; + var serverType = folder.server.type; + var specialFolder = getSpecialFolderString(folder); var canSubscribeToFolder = (serverType == "nntp") || (serverType == "imap"); var isNewsgroup = !isServer && serverType == 'nntp'; var isMailFolder = !isServer && serverType != 'nntp'; @@ -576,11 +576,10 @@ function fillFolderPaneContextMenu() function SetupNewMenuItem(folderResource, numSelected, isServer, serverType,specialFolder) { - var folderTree = GetFolderTree(); - var canCreateNew = GetFolderAttribute(folderTree, folderResource, "CanCreateSubfolders") == "true"; + var folder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); + var canCreateNew = folder.canCreateSubfolders; var isInbox = specialFolder == "Inbox"; - var isIMAPFolder = GetFolderAttribute(folderTree, folderResource, - "ServerType") == "imap"; + var isIMAPFolder = (folder.server.type == "imap"); var ioService = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); @@ -602,11 +601,9 @@ function SetupNewMenuItem(folderResource, numSelected, isServer, serverType,spec function SetupRenameMenuItem(folderResource, numSelected, isServer, serverType, specialFolder) { var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); - var folderTree = GetFolderTree(); var isSpecialFolder = !(specialFolder == "none" || (specialFolder == "Junk" && CanRenameDeleteJunkMail(msgFolder.URI)) || (specialFolder == "Virtual") ); - var canRename = GetFolderAttribute(folderTree, folderResource, "CanRename") == "true"; - + var canRename = msgFolder.canRename; ShowMenuItem("folderPaneContext-rename", (numSelected <= 1) && !isServer && !isSpecialFolder && canRename); var folder = GetMsgFolderFromResource(folderResource); EnableMenuItem("folderPaneContext-rename", !isServer && folder.isCommandEnabled("cmd_renameFolder")); @@ -631,16 +628,14 @@ function SetupRemoveMenuItem(folderResource, numSelected, isServer, serverType, function SetupCompactMenuItem(folderResource, numSelected) { - var folderTree = GetFolderTree(); - var canCompact = GetFolderAttribute(folderTree, folderResource, "CanCompact") == "true"; var folder = GetMsgFolderFromResource(folderResource); - ShowMenuItem("folderPaneContext-compact", (numSelected <=1) && canCompact && !(folder.flags & MSG_FOLDER_FLAG_VIRTUAL)); + + ShowMenuItem("folderPaneContext-compact", (numSelected <=1) && folder.canCompact && !(folder.flags & MSG_FOLDER_FLAG_VIRTUAL)); EnableMenuItem("folderPaneContext-compact", folder.isCommandEnabled("cmd_compactFolder") && !(folder.flags & MSG_FOLDER_FLAG_VIRTUAL)); } function SetupFavoritesMenuItem(folderResource, numSelected, isServer, menuItemId) { - var folderTree = GetFolderTree(); var folder = GetMsgFolderFromResource(folderResource); var showItem = !isServer && (numSelected <=1); ShowMenuItem(menuItemId, showItem); diff --git a/mozilla/mail/base/content/mailWindowOverlay.js b/mozilla/mail/base/content/mailWindowOverlay.js index 6ac8aefac67..f598e10f525 100644 --- a/mozilla/mail/base/content/mailWindowOverlay.js +++ b/mozilla/mail/base/content/mailWindowOverlay.js @@ -147,8 +147,8 @@ function InitEditMessagesMenu() { var numSelected = endIndex.value - startIndex.value + 1; var folderResource = GetFolderResource(folderTree, startIndex.value); - var isServer = GetFolderAttribute(folderTree, folderResource, "IsServer") == 'true'; - SetupFavoritesMenuItem(folderResource, numSelected, isServer, 'menu_favoriteFolder'); + var folder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); + SetupFavoritesMenuItem(folderResource, numSelected, folder.isServer, 'menu_favoriteFolder'); } } } @@ -1492,8 +1492,8 @@ folderTabOwner.prototype = { // the user may have changed folders, triggering our onTitleChanged callback. // update the appropriate attributes on the tab. - aTab.setAttribute('SpecialFolder', GetFolderAttribute(GetFolderTree(), gMsgFolderSelected, 'SpecialFolder')); - aTab.setAttribute('ServerType', GetFolderAttribute(GetFolderTree(), gMsgFolderSelected, 'ServerType')); + aTab.setAttribute('SpecialFolder', getSpecialFolderString(gMsgFolderSelected)); + aTab.setAttribute('ServerType', gMsgFolderSelected.server.type); return; }, diff --git a/mozilla/mail/base/content/msgMail3PaneWindow.js b/mozilla/mail/base/content/msgMail3PaneWindow.js index c2bbc5ad1bc..3ff4885cba1 100644 --- a/mozilla/mail/base/content/msgMail3PaneWindow.js +++ b/mozilla/mail/base/content/msgMail3PaneWindow.js @@ -1239,8 +1239,19 @@ function UpdateFolderLocationPicker(resource) var folders = document.getElementById('locationFolders'); var properties = ['BiffState', 'NewMessages', 'HasUnreadMessages', 'SpecialFolder', 'IsServer', 'IsSecure', 'ServerType', 'NoSelect']; - var label = GetFolderAttribute(tree, resource, 'FolderTreeName'); + var folder = resource.QueryInterface(Components.interfaces.nsIMsgFolder); + var label = folder.prettyName; folders.setAttribute("label", label); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"] + .getService(Components.interfaces.nsIRDFService); + function GetFolderAttribute(tree, source, attribute) { + var property = rdfService.GetResource("http://home.netscape.com/NC-rdf#" + attribute); + var target = tree.database.GetTarget(source, property, true); + if (target) + target = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; + return target; + } for (var i in properties) { var property = properties[i]; @@ -1658,15 +1669,6 @@ function GetFolderResource(tree, index) return tree.builderView.getResourceAtIndex(index); } -function GetFolderAttribute(tree, source, attribute) -{ - var property = RDF.GetResource("http://home.netscape.com/NC-rdf#" + attribute); - var target = tree.database.GetTarget(source, property, true); - if (target) - target = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; - return target; -} - function LoadNavigatedToMessage(msgHdr, folder, folderUri) { if (IsCurrentLoadedFolder(folder)) @@ -1755,3 +1757,30 @@ function MigrateAttachmentDownloadStore() gPrefBranch.setIntPref("mail.attachment.store.version", 1); } } + +/** + * Returns a string representation of a folder's specialFolder attribute. + * + * @param aFolder the folder whose specialFolder attribute to return + */ +function getSpecialFolderString(aFolder) { + if (aFolder.flags & 0x1000) // MSG_FOLDER_FLAG_INBOX + return "Inbox"; + else if (aFolder.flags & 0x0100) // MSG_FOLDER_FLAG_TRASH + return "Trash"; + else if (aFolder.flags & 0x0800) // MSG_FOLDER_FLAG_QUEUE + return "Unsent Messages"; + else if (aFolder.flags & 0x0200) // MSG_FOLDER_FLAG_SENTMAIL + return "Sent"; + else if (aFolder.flags & 0x0400) // MSG_FOLDER_FLAG_DRAFTS + return "Drafts"; + else if (aFolder.flags & 0x400000) // MSG_FOLDER_FLAG_TEMPLATES + return "Templates"; + else if (aFolder.flags & 0x40000000) // MSG_FOLDER_FLAG_JUNK + return "Junk"; + else if (aFolder.flags & 0x0020) // MSG_FOLDER_FLAG_VIRTUAL + return "Virtual"; + else + return "none"; +} + diff --git a/mozilla/mailnews/base/resources/content/messengerdnd.js b/mozilla/mailnews/base/resources/content/messengerdnd.js index 4044f8115bd..72a1a7ee7ca 100644 --- a/mozilla/mailnews/base/resources/content/messengerdnd.js +++ b/mozilla/mailnews/base/resources/content/messengerdnd.js @@ -108,15 +108,14 @@ function CanDropOnFolderTree(index, orientation) if (orientation != Components.interfaces.nsITreeView.DROP_ON) return false; - var isServer = GetFolderAttribute(folderTree, targetResource, "IsServer"); - if (isServer == "true") + var folder = targetResource.QueryInterface(Components.interfaces.nsIMsgFolder); + if (folder.isServer) { debugDump("***isServer == true\n"); return false; } // canFileMessages checks no select, and acl, for imap. - var canFileMessages = GetFolderAttribute(folderTree, targetResource, "CanFileMessages"); - if (canFileMessages != "true") + if (!folder.canFileMessages) { debugDump("***canFileMessages == false\n"); return false; @@ -208,22 +207,22 @@ function CanDropOnFolderTree(index, orientation) if (dragSession.dragAction == nsIDragService.DRAGDROP_ACTION_COPY && sourceServer == targetServer) return false; - var canCreateSubfolders = GetFolderAttribute(folderTree, targetResource, "CanCreateSubfolders"); + var targetFolder = targetResource.QueryInterface(Components.interfaces.nsIMsgFolder); // if cannot create subfolders then a folder cannot be dropped here - if (canCreateSubfolders == "false") + if (targetFolder.canCreateSubfolders) { debugDump("***canCreateSubfolders == false \n"); return false; } - var serverType = GetFolderAttribute(folderTree, targetResource, "ServerType"); + var serverType = targetFolder.server.type; // if we've got a folder that can't be renamed // allow us to drop it if we plan on dropping it on "Local Folders" // (but not within the same server, to prevent renaming folders on "Local Folders" that // should not be renamed) - var srcCanRename = GetFolderAttribute(folderTree, sourceResource, "CanRename"); - if (srcCanRename == "false") { + var srcFolder = sourceResource.QueryInterface(Components.interfaces.nsIMsgFolder); + if (!srcFolder.canRename) { if (sourceServer == targetServer) return false; if (serverType != "none") @@ -425,15 +424,16 @@ function BeginDragFolderTree(event) return false; var folderResource = GetFolderResource(folderTree, row); + var folder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); - if (GetFolderAttribute(folderTree, folderResource, "IsServer") == "true") + if (folder.isServer) { debugDump("***IsServer == true\n"); return false; } var flavor; - if (GetFolderAttribute(folderTree, folderResource, "ServerType") == "nntp") + if (folder.server.type == "nntp") { // news folder (newsgroup) flavor = "text/x-moz-newsfolder"; } diff --git a/mozilla/mailnews/base/resources/content/msgSynchronize.js b/mozilla/mailnews/base/resources/content/msgSynchronize.js index 5ba7d4d2971..fafaba827a3 100644 --- a/mozilla/mailnews/base/resources/content/msgSynchronize.js +++ b/mozilla/mailnews/base/resources/content/msgSynchronize.js @@ -47,9 +47,6 @@ var gMsgWindow; var gInitialFolderStates = {}; -// RDF needs to be defined for GetFolderAttribute in msgMail3PaneWindow.js -var RDF = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService().QueryInterface(Components.interfaces.nsIRDFService); - const MSG_FOLDER_FLAG_OFFLINE = 0x8000000; function OnLoad() @@ -184,11 +181,11 @@ function onSynchronizeClick(event) var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); if (!(gSynchronizeTree.treeBoxObject.view.isContainerOpen(row.value))) { - var serverType = GetFolderAttribute(gSynchronizeTree, folderResource, "ServerType"); + var serverType = msgFolder.server.type; // imap is the only server type that does folder discovery if (serverType != "imap") return; - if (GetFolderAttribute(gSynchronizeTree, folderResource, "IsServer") == "true") { + if (folder.isServer) { var server = msgFolder.server; server.performExpand(gMsgWindow); } @@ -239,13 +236,3 @@ function UpdateNode(resource, row) function GetFolderResource(aTree, aIndex) { return aTree.builderView.getResourceAtIndex(aIndex); } - -function GetFolderAttribute(aTree, aResource, aName) { - var rdfService = Components.classes['@mozilla.org/rdf/rdf-service;1'] - .getService(Components.interfaces.nsIRDFService); - var property = rdfService.GetResource("http://home.netscape.com/NC-rdf#" + aName); - var target = aTree.database.GetTarget(aResource, property, true); - if (target) - target = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; - return target; -}