?? mailcontextmenus.js
字號:
ShowMenuItem("folderPaneContext-rssSubscribe", (numSelected <= 1) && (serverType == "rss")); EnableMenuItem("folderPaneContext-rssSubscribe", true); // News folder context menu ============================================= ShowMenuItem("folderPaneContext-newsUnsubscribe", (numSelected <= 1) && canSubscribeToFolder && isNewsgroup); EnableMenuItem("folderPaneContext-newsUnsubscribe", true); ShowMenuItem("folderPaneContext-markNewsgroupAllRead", (numSelected <= 1) && isNewsgroup); EnableMenuItem("folderPaneContext-markNewsgroupAllRead", true); // End of News folder context menu ======================================= ShowMenuItem("folderPaneContext-markMailFolderAllRead", (numSelected <= 1) && isMailFolder && !isVirtualFolder); EnableMenuItem("folderPaneContext-markMailFolderAllRead", !isVirtualFolder); ShowMenuItem("folderPaneContext-searchMessages", (numSelected<=1) && !isVirtualFolder); EnableMenuItem("folderPaneContext-searchMessages", IsCanSearchMessagesEnabled() && !isVirtualFolder); // Hide / Show our menu separators based on the menu items we are showing. ShowMenuItem("folderPaneContext-sep1", (numSelected <= 1) && !isServer); ShowMenuItem('folderPaneContext-sep2', shouldShowSeparator('folderPaneContext-sep2')); ShowMenuItem("folderPaneContext-sep3", shouldShowSeparator('folderPaneContext-sep3')); // we always show the separator before properties menu item return(true);}function SetupNewMenuItem(folderResource, numSelected, isServer, serverType,specialFolder){ var folderTree = GetFolderTree(); var canCreateNew = GetFolderAttribute(folderTree, folderResource, "CanCreateSubfolders") == "true"; var isInbox = specialFolder == "Inbox"; var isIMAPFolder = GetFolderAttribute(folderTree, folderResource, "ServerType") == "imap"; var ioService = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var showNew = ((numSelected <=1) && (serverType != 'nntp') && canCreateNew) || isInbox; ShowMenuItem("folderPaneContext-new", showNew); EnableMenuItem("folderPaneContext-new", !isIMAPFolder || MailOfflineMgr.isOnline()); if (showNew) { if (isServer || isInbox) SetMenuItemLabel("folderPaneContext-new", gMessengerBundle.getString("newFolder")); else SetMenuItemLabel("folderPaneContext-new", gMessengerBundle.getString("newSubfolder")); }}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"; ShowMenuItem("folderPaneContext-rename", (numSelected <= 1) && !isServer && !isSpecialFolder && canRename); var folder = GetMsgFolderFromResource(folderResource); EnableMenuItem("folderPaneContext-rename", !isServer && folder.isCommandEnabled("cmd_renameFolder"));}function SetupRemoveMenuItem(folderResource, numSelected, isServer, serverType, specialFolder){ var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); var isMail = serverType != 'nntp'; var isSpecialFolder = !(specialFolder == "none" || (specialFolder == "Junk" && CanRenameDeleteJunkMail(msgFolder.URI)) || (specialFolder == "Virtual") ); //Can't currently delete Accounts or special folders. var showRemove = (numSelected <=1) && (isMail && !isSpecialFolder) && !isServer; ShowMenuItem("folderPaneContext-remove", showRemove); if(showRemove) { var folder = GetMsgFolderFromResource(folderResource); EnableMenuItem("folderPaneContext-remove", folder.isCommandEnabled("cmd_delete")); }}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)); 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); // adjust the checked state on the menu if (showItem) document.getElementById(menuItemId).setAttribute('checked',folder.getFlag(MSG_FOLDER_FLAG_FAVORITE));}function ShowMenuItem(id, showItem){ var item = document.getElementById(id); if(item && item.hidden != "true") item.hidden = !showItem;}function EnableMenuItem(id, enableItem){ var item = document.getElementById(id); if(item) { var enabled = (item.getAttribute('disabled') !='true'); if(enableItem != enabled) { item.setAttribute('disabled', enableItem ? '' : 'true'); } }}function SetMenuItemLabel(id, label){ var item = document.getElementById(id); if(item) item.setAttribute('label', label);}function SetMenuItemAccessKey(id, accessKey){ var item = document.getElementById(id); if(item) item.setAttribute('accesskey', accessKey);}function fillMessagePaneContextMenu(){ var message = GetLoadedMessage(); var numSelected = (message) ? 1 : 0; var isNewsgroup = false; if (numSelected == 1) isNewsgroup = IsNewsMessage(message); // don't show mail items for links/images, just show related items. var hideMailItems = gContextMenu.onImage || gContextMenu.onLink; SetupEditAsNewMenuItem("messagePaneContext-editAsNew", numSelected, (numSelected == 0 || hideMailItems)); SetupReplyToSenderMenuItem("messagePaneContext-replySender", numSelected, (numSelected == 0 || hideMailItems)); SetupReplyToNewsgroupMenuItem("messagePaneContext-replyNewsgroup", numSelected, isNewsgroup, (numSelected == 0 || hideMailItems)); SetupReplyAllMenuItem("messagePaneContext-replyAll" , numSelected, (numSelected == 0 || hideMailItems)); SetupForwardMenuItem("messagePaneContext-forward", numSelected, (numSelected == 0 || hideMailItems)); SetupCopyMessageUrlMenuItem("messagePaneContext-copyMessageUrl", numSelected, isNewsgroup, (numSelected == 0 || hideMailItems)); SetupCopyMenuItem("messagePaneContext-copyMenu", numSelected, (numSelected == 0 || hideMailItems)); SetupMoveMenuItem("messagePaneContext-moveMenu", numSelected, isNewsgroup, (numSelected == 0 || hideMailItems)); SetupMoveToFolderAgainMenuItem("messagePaneContext-moveToFolderAgain", numSelected, (numSelected == 0 || hideMailItems)); SetupLabelsMenuItem("messagePaneContext-labels", numSelected, (numSelected == 0 || hideMailItems)); SetupMarkMenuItem("messagePaneContext-mark", numSelected, (numSelected == 0 || hideMailItems)); SetupTagMenuItem("messagePaneContext-tags", numSelected, (numSelected == 0 || hideMailItems)); SetupSaveAsMenuItem("messagePaneContext-saveAs", numSelected, (numSelected == 0 || hideMailItems));#ifdef XP_MACOSX SetupPrintPreviewMenuItem("messagePaneContext-printpreview", numSelected, true);#else SetupPrintPreviewMenuItem("messagePaneContext-printpreview", numSelected, (numSelected == 0 || hideMailItems));#endif SetupPrintMenuItem("messagePaneContext-print", numSelected, (numSelected == 0 || hideMailItems)); if (numSelected == 0 || hideMailItems) ShowMenuItem("messagePaneContext-delete", false) else { goUpdateCommand('cmd_delete'); ShowMenuItem("messagePaneContext-delete", true) } SetupAddSenderToABMenuItem("messagePaneContext-addSenderToAddressBook", numSelected, (numSelected == 0 || hideMailItems)); SetupAddAllToABMenuItem("messagePaneContext-addAllToAddressBook", numSelected, (numSelected == 0 || hideMailItems)); ShowMenuItem("context-addemail", gContextMenu.onMailtoLink ); ShowMenuItem("context-composeemailto", gContextMenu.onMailtoLink ); ShowMenuItem("reportPhishingURL", gContextMenu.onLink && !gContextMenu.onMailtoLink); // if we are on an image, go ahead and show this separator //if (gContextMenu.onLink && !gContextMenu.onMailtoLink)// ShowMenuItem("messagePaneContext-sep-edit", false); //Figure out separators ShowMenuItem("messagePaneContext-sep-link", shouldShowSeparator("messagePaneContext-sep-link")); ShowMenuItem("messagePaneContext-sep-open", shouldShowSeparator("messagePaneContext-sep-open")); ShowMenuItem("messagePaneContext-sep-reply", shouldShowSeparator("messagePaneContext-sep-reply")); ShowMenuItem("messagePaneContext-sep-tags-1", shouldShowSeparator("messagePaneContext-sep-tags-1")); ShowMenuItem("messagePaneContext-sep-saveAs", shouldShowSeparator("messagePaneContext-sep-saveAs")); ShowMenuItem("messagePaneContext-sep-edit", shouldShowSeparator("messagePaneContext-sep-edit")); ShowMenuItem("messagePaneContext-sep-copy", shouldShowSeparator("messagePaneContext-sep-copy")); ShowMenuItem("messagePaneContext-sep-reportPhishing", shouldShowSeparator("messagePaneContext-sep-reportPhishing"));}// Determines whether or not the separator with the specified ID should be // shown or not by determining if there are any non-hidden items between it// and the previous separator. You should start with the first separator in the menu.function shouldShowSeparator(aSeparatorID){ var separator = document.getElementById(aSeparatorID); if (separator) { var sibling = separator.previousSibling; while (sibling) { if (sibling.getAttribute("hidden") != "true") return sibling.localName != "menuseparator" && hasAVisibleNextSibling(separator); sibling = sibling.previousSibling; } } return false; }// helper function used by shouldShowSeparatorfunction hasAVisibleNextSibling(aNode){ var sibling = aNode.nextSibling; while (sibling) { if (sibling.getAttribute("hidden") != "true" && sibling.localName != "menuseparator") return true; sibling = sibling.nextSibling; } return false;}function IsMenuItemShowing(menuID){ var item = document.getElementById(menuID); if (item) return item.hidden != "true"; return false;}// message pane context menu helper methodsfunction addEmail(){ var url = gContextMenu.linkURL(); var addresses = getEmail(url); window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xul", "", "chrome,resizable=no,titlebar,modal,centerscreen", {primaryEmail: addresses});}function composeEmailTo (){ var addresses = getEmail(url); var fields = Components.classes["@mozilla.org/messengercompose/composefields;1"].createInstance(Components.interfaces.nsIMsgCompFields); var params = Components.classes["@mozilla.org/messengercompose/composeparams;1"].createInstance(Components.interfaces.nsIMsgComposeParams); fields.to = addresses; params.type = Components.interfaces.nsIMsgCompType.New; params.format = Components.interfaces.nsIMsgCompFormat.Default; params.identity = accountManager.getFirstIdentityForServer(GetLoadedMsgFolder().server); params.composeFields = fields; msgComposeService.OpenComposeWindowWithParams(null, params);}// Extracts email address from url stringfunction getEmail (url) { var qmark = url.indexOf( "?" ); var addresses; if ( qmark > mailtolength ) addresses = url.substring( mailtolength, qmark ); else addresses = url.substr( mailtolength ); // Let's try to unescape it using a character set // in case the address is not ASCII. try { var characterSet = Components.lookupMethod(this.target.ownerDocument, "characterSet") .call(this.target.ownerDocument); const textToSubURI = Components.classes["@mozilla.org/intl/texttosuburi;1"] .getService(Components.interfaces.nsITextToSubURI); addresses = textToSubURI.unEscapeNonAsciiURI(characterSet, addresses); } catch(ex) { // Do nothing. } return addresses;}function CopyFolderUrl(){ try { var folderResource = GetSelectedFolderResource(); if (folderResource) { var contractid = "@mozilla.org/widget/clipboardhelper;1"; var iid = Components.interfaces.nsIClipboardHelper; var clipboard = Components.classes[contractid].getService(iid); clipboard.copyString(msgFolder.folderURL); } } catch (ex) { dump("ex="+ex+"\n"); }}function CopyMessageUrl(){ try { var hdr = gDBView.hdrForFirstSelectedMessage; var server = hdr.folder.server; var url; if (server.isSecure) { url = "snews://"; } else { url = "news://" } url += server.hostName; url += ":"; url += server.port; url += "/"; url += hdr.messageId; var contractid = "@mozilla.org/widget/clipboardhelper;1"; var iid = Components.interfaces.nsIClipboardHelper; var clipboard = Components.classes[contractid].getService(iid); clipboard.copyString(url); } catch (ex) { dump("ex="+ex+"\n"); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -