?? mail3panewindowcommands.js
字號:
return null;}function SetupCommandUpdateHandlers(){ var widget; // folder pane widget = GetFolderTree(); if ( widget ) widget.controllers.appendController(FolderPaneController); top.controllers.insertControllerAt(0, DefaultController);}function IsSendUnsentMsgsEnabled(folderResource){ var identity; if (messenger.sendingUnsentMsgs) // if we're currently sending unsent msgs, disable this cmd. return false; try { if (folderResource) { // if folderResource is non-null, it is // resource for the "Unsent Messages" folder // we're here because we've done a right click on the "Unsent Messages" // folder (context menu) var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); return (msgFolder.getTotalMessages(false) > 0); } else { var folders = GetSelectedMsgFolders(); if (folders.length > 0) { identity = getIdentityForServer(folders[0].server); } } } catch (ex) { dump("ex = " + ex + "\n"); identity = null; } try { if (!identity) { var am = Components.classes["@mozilla.org/messenger/account-manager;1"].getService(Components.interfaces.nsIMsgAccountManager); identity = am.defaultAccount.defaultIdentity; } var msgSendlater = Components.classes["@mozilla.org/messengercompose/sendlater;1"].getService(Components.interfaces.nsIMsgSendLater); var unsentMsgsFolder = msgSendlater.getUnsentMessagesFolder(identity); return (unsentMsgsFolder.getTotalMessages(false) > 0); } catch (ex) { dump("ex = " + ex + "\n"); } return false;}function IsRenameFolderEnabled(){ var folderTree = GetFolderTree(); var selection = folderTree.view.selection; if (selection.count == 1) { var startIndex = {}; 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"); } else return false;}function IsCanSearchMessagesEnabled(){ var folderURI = GetSelectedFolderURI(); var server = GetServer(folderURI); return server.canSearchMessages;}function IsFolderCharsetEnabled(){ return IsFolderSelected();}function IsPropertiesEnabled(command){ try { var folderTree = GetFolderTree(); var folderResource = GetSelectedFolderResource(); // when servers are selected // it should be "Edit | Properties..." if (GetFolderAttribute(folderTree, folderResource, "IsServer") == "true") goSetMenuValue(command, "valueGeneric"); else goSetMenuValue(command, isNewsURI(folderResource.Value) ? "valueNewsgroup" : "valueFolder"); } catch (ex) { // properties menu failure } // properties should be enabled for folders and servers // but not fake accounts if (IsFakeAccount()) return false; var selection = folderTree.view.selection; return (selection.count == 1);}function IsViewNavigationItemEnabled(){ return IsFolderSelected();}function IsFolderSelected(){ var folderTree = GetFolderTree(); var selection = folderTree.view.selection; if (selection.count == 1) { var startIndex = {}; var endIndex = {}; selection.getRangeAt(0, startIndex, endIndex); var folderResource = GetFolderResource(folderTree, startIndex.value); return GetFolderAttribute(folderTree, folderResource, "IsServer") != "true"; } else return false;}function IsMessageDisplayedInMessagePane(){ return (!IsMessagePaneCollapsed() && (GetNumSelectedMessages() > 0));}function MsgDeleteFolder(){ var folderTree = GetFolderTree(); var selectedFolders = GetSelectedMsgFolders(); for (var i = 0; i < selectedFolders.length; i++) { var selectedFolder = selectedFolders[i]; var folderResource = selectedFolder.QueryInterface(Components.interfaces.nsIRDFResource); var specialFolder = GetFolderAttribute(folderTree, folderResource, "SpecialFolder"); if (specialFolder != "Inbox" && specialFolder != "Trash") { var folder = selectedFolder.QueryInterface(Components.interfaces.nsIMsgFolder); if (folder.flags & MSG_FOLDER_FLAG_VIRTUAL) { if (gCurrentVirtualFolderUri == folderResource.Value) gCurrentVirtualFolderUri = null; var parentResource = selectedFolder.parent.QueryInterface(Components.interfaces.nsIRDFResource); messenger.DeleteFolders(GetFolderDatasource(), parentResource, folderResource); continue; } var protocolInfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + selectedFolder.server.type].getService(Components.interfaces.nsIMsgProtocolInfo); // do not allow deletion of special folders on imap accounts if ((specialFolder == "Sent" || specialFolder == "Drafts" || specialFolder == "Templates" || (specialFolder == "Junk" && !CanRenameDeleteJunkMail(GetSelectedFolderURI()))) && !protocolInfo.specialFoldersDeletionAllowed) { var errorMessage = gMessengerBundle.getFormattedString("specialFolderDeletionErr", [specialFolder]); var specialFolderDeletionErrTitle = gMessengerBundle.getString("specialFolderDeletionErrTitle"); promptService.alert(window, specialFolderDeletionErrTitle, errorMessage); continue; } else if (isNewsURI(folderResource.Value)) { var unsubscribe = ConfirmUnsubscribe(selectedFolder); if (unsubscribe) UnSubscribe(selectedFolder); } else { var parentResource = selectedFolder.parent.QueryInterface(Components.interfaces.nsIRDFResource); messenger.DeleteFolders(GetFolderDatasource(), parentResource, folderResource); } } }}function SetFocusThreadPaneIfNotOnMessagePane(){ var focusedElement = WhichPaneHasFocus(); if((focusedElement != GetThreadTree()) && (focusedElement != GetMessagePane())) SetFocusThreadPane();}// 3pane related commands. Need to go in own file. Putting here for the moment.function MsgNextMessage(){ GoNextMessage(nsMsgNavigationType.nextMessage, false );}function MsgNextUnreadMessage(){ GoNextMessage(nsMsgNavigationType.nextUnreadMessage, true);}function MsgNextFlaggedMessage(){ GoNextMessage(nsMsgNavigationType.nextFlagged, true);}function MsgNextUnreadThread(){ GoNextMessage(nsMsgNavigationType.nextUnreadThread, true);}function MsgPreviousMessage(){ GoNextMessage(nsMsgNavigationType.previousMessage, false);}function MsgPreviousUnreadMessage(){ GoNextMessage(nsMsgNavigationType.previousUnreadMessage, true);}function MsgPreviousFlaggedMessage(){ GoNextMessage(nsMsgNavigationType.previousFlagged, true);}function MsgGoForward(){ GoNextMessage(nsMsgNavigationType.forward, true);}function MsgGoBack(){ GoNextMessage(nsMsgNavigationType.back, true);}function GetFolderNameFromUri(uri, tree){ var folderResource = RDF.GetResource(uri); var db = tree.database; var nameProperty = RDF.GetResource('http://home.netscape.com/NC-rdf#Name'); var nameResult; try { nameResult = db.GetTarget(folderResource, nameProperty , true); } catch (ex) { return ""; } nameResult = nameResult.QueryInterface(Components.interfaces.nsIRDFLiteral); return nameResult.Value;}function SwitchPaneFocus(event){ var folderTree = GetFolderTree(); var threadTree = GetThreadTree(); var messagePane = GetMessagePane(); // Although internally this is actually a four-pane window, it is presented as // a three-pane -- the search pane is more of a toolbar. So, shift among the // three main panes. var focusedElement = WhichPaneHasFocus(); if (focusedElement == null) // focus not on one of the main three panes? focusedElement = threadTree; // treat as if on thread tree if (event && event.shiftKey) { // Reverse traversal: Message -> Thread -> Folder -> Message if (focusedElement == threadTree && !IsFolderPaneCollapsed()) folderTree.focus(); else if (focusedElement != messagePane && !IsMessagePaneCollapsed()) SetFocusMessagePane(); else threadTree.focus(); } else { // Forward traversal: Folder -> Thread -> Message -> Folder if (focusedElement == threadTree && !IsMessagePaneCollapsed()) SetFocusMessagePane(); else if (focusedElement != folderTree && !IsFolderPaneCollapsed()) folderTree.focus(); else threadTree.focus(); }}function SetFocusFolderPane(){ var folderTree = GetFolderTree(); folderTree.focus();}function SetFocusThreadPane(){ var threadTree = GetThreadTree(); threadTree.focus();}function SetFocusMessagePane(){ // XXX hack: to clear the focus on the previous element first focus // on the message pane element then focus on the main content window GetMessagePane().focus(); GetMessagePaneFrame().focus();}function is_collapsed(element) { return (element.getAttribute('state') == 'collapsed');}function isCommandEnabled(cmd){ var selectedFolders = GetSelectedMsgFolders(); var numFolders = selectedFolders.length; if(numFolders !=1) return false; var folder = selectedFolders[0]; if (!folder) return false; else return folder.isCommandEnabled(cmd);}function IsFakeAccount() { try { var folderResource = GetSelectedFolderResource(); return (folderResource.Value == "http://home.netscape.com/NC-rdf#PageTitleFakeAccount"); } catch(ex) { } return false;}//// This function checks if the configured junk mail can be renamed or deleted.//function CanRenameDeleteJunkMail(aFolderUri){ if (!aFolderUri) return false; // Go through junk mail settings for all servers and see if the folder is set/used by anyone. try { var allServers = accountManager.allServers; for (var i=0;i<allServers.Count();i++) { var currentServer = allServers.GetElementAt(i).QueryInterface(Components.interfaces.nsIMsgIncomingServer); var settings = currentServer.spamSettings; // If junk mail control or move junk mail to folder option is disabled then // allow the folder to be removed/renamed since the folder is not used in this case. if (!settings.level || !settings.moveOnSpam) continue; if (settings.spamFolderURI == aFolderUri) return false; } } catch(ex) { dump("Can't get all servers\n"); } return true;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -