?? mailwindowoverlay.js
字號:
# -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-# ***** BEGIN LICENSE BLOCK *****# Version: MPL 1.1/GPL 2.0/LGPL 2.1## The contents of this file are subject to the Mozilla Public License Version# 1.1 (the "License"); you may not use this file except in compliance with# the License. You may obtain a copy of the License at# http://www.mozilla.org/MPL/## Software distributed under the License is distributed on an "AS IS" basis,# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License# for the specific language governing rights and limitations under the# License.## The Original Code is Mozilla Communicator client code, released# March 31, 1998.## The Initial Developer of the Original Code is# Netscape Communications Corporation.# Portions created by the Initial Developer are Copyright (C) 1998-1999# the Initial Developer. All Rights Reserved.## Contributor(s):# timeless# slucy@objectivesw.co.uk# H?kan Waara <hwaara@chello.se># Jan Varga <varga@nixcorp.com># Seth Spitzer <sspitzer@netscape.com># David Bienvenu <bienvenu@nventure.com># Karsten Düsterloh <mnyromyr@tprac.de>## Alternatively, the contents of this file may be used under the terms of# either the GNU General Public License Version 2 or later (the "GPL"), or# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),# in which case the provisions of the GPL or the LGPL are applicable instead# of those above. If you wish to allow use of your version of this file only# under the terms of either the GPL or the LGPL, and not to allow others to# use your version of this file under the terms of the MPL, indicate your# decision by deleting the provisions above and replace them with the notice# and other provisions required by the GPL or the LGPL. If you do not delete# the provisions above, a recipient may use your version of this file under# the terms of any one of the MPL, the GPL or the LGPL.## ***** END LICENSE BLOCK *****const MSG_FLAG_READ = 0x000001;const MSG_FLAG_IMAP_DELETED = 0x200000;const MSG_FLAG_MDN_REPORT_NEEDED = 0x400000;const MSG_FLAG_MDN_REPORT_SENT = 0x800000;const MDN_DISPOSE_TYPE_DISPLAYED = 0;const ADDR_DB_LARGE_COMMIT = 1;const MSG_DB_LARGE_COMMIT = 1;const kClassicMailLayout = 0;const kWideMailLayout = 1;const kVerticalMailLayout = 2;// Per message header flags to keep track of whether the user is allowing remote// content for a particular message. // if you change or add more values to these constants, be sure to modify// the corresponding definitions in nsMsgContentPolicy.cppconst kNoRemoteContentPolicy = 0;const kBlockRemoteContent = 1;const kAllowRemoteContent = 2;const kIsAPhishMessage = 0;const kNotAPhishMessage = 1;const kMsgNotificationPhishingBar = 1;const kMsgNotificationJunkBar = 2;const kMsgNotificationRemoteImages = 3;var gMessengerBundle;var gWindowManagerInterface;var gPrefBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch(null);var gPrintSettings = null;var gWindowReuse = 0;var gMarkViewedMessageAsReadTimer = null; // if the user has configured the app to mark a message as read if it is viewed for more than n secondsvar gTimelineService = null;var gTimelineEnabled = ("@mozilla.org;timeline-service;1" in Components.classes);if (gTimelineEnabled) { try { gTimelineEnabled = gPrefBranch.getBoolPref("mailnews.timeline_is_enabled"); if (gTimelineEnabled) { gTimelineService = Components.classes["@mozilla.org;timeline-service;1"].getService(Components.interfaces.nsITimelineService); } } catch (ex) { gTimelineEnabled = false; }}// the user preference,// if HTML is not allowed. I assume, that the user could have set this to a// value > 1 in his prefs.js or user.js, but that the value will not// change during runtime other than through the MsgBody*() functions below.var gDisallow_classes_no_html = 1; // Disable the new account menu item if the account preference is locked.// Two other affected areas are the account central and the account manager// dialog.function menu_new_init(){ if (!gMessengerBundle) gMessengerBundle = document.getElementById("bundle_messenger"); var newAccountItem = document.getElementById('newAccountMenuItem'); if (gPrefBranch.prefIsLocked("mail.disable_new_account_addition")) newAccountItem.setAttribute("disabled","true"); // Change "New Folder..." menu according to the context var folderArray = GetSelectedMsgFolders(); if (folderArray.length == 0) return; var msgFolder = folderArray[0]; var isServer = msgFolder.isServer; var serverType = msgFolder.server.type; var canCreateNew = msgFolder.canCreateSubfolders; var isInbox = IsSpecialFolder(msgFolder, MSG_FOLDER_FLAG_INBOX, false); var isIMAPFolder = serverType == "imap"; var ioService = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var showNew = ((serverType != 'nntp') && canCreateNew) || isInbox; ShowMenuItem("menu_newFolder", showNew); ShowMenuItem("menu_newVirtualFolder", showNew); EnableMenuItem("menu_newFolder", !isIMAPFolder || MailOfflineMgr.isOnline()); EnableMenuItem("menu_newVirtualFolder", true); if (showNew) SetMenuItemLabel("menu_newFolder", gMessengerBundle.getString((isServer || isInbox) ? "newFolderMenuItem" : "newSubfolderMenuItem"));}function goUpdateMailMenuItems(commandset){// dump("Updating commands for " + commandset.id + "\n"); for (var i = 0; i < commandset.childNodes.length; i++) { var commandID = commandset.childNodes[i].getAttribute("id"); if (commandID) { goUpdateCommand(commandID); } }}function file_init(){ document.commandDispatcher.updateCommands('create-menu-file');}function InitEditMessagesMenu(){ goSetMenuValue('cmd_delete', 'valueDefault'); goSetAccessKey('cmd_delete', 'valueDefaultAccessKey'); document.commandDispatcher.updateCommands('create-menu-edit'); // initialize the favorite Folder checkbox in the edit menu var favoriteFolderMenu = document.getElementById('menu_favoriteFolder'); if (favoriteFolderMenu && !favoriteFolderMenu.disabled) { var folderTree = GetFolderTree(); var startIndex = {}; var endIndex = {}; folderTree.view.selection.getRangeAt(0, startIndex, endIndex); if (startIndex.value >= 0) { 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'); } }}function InitGoMessagesMenu(){ document.commandDispatcher.updateCommands('create-menu-go');}function view_init(){ if (!gMessengerBundle) gMessengerBundle = document.getElementById("bundle_messenger"); var message_menuitem=document.getElementById('menu_showMessage'); if (message_menuitem) { var message_menuitem_hidden = message_menuitem.getAttribute("hidden"); if(message_menuitem_hidden != "true"){ message_menuitem.setAttribute('checked', !IsMessagePaneCollapsed()); message_menuitem.setAttribute('disabled', gAccountCentralLoaded); } } // Disable some menus if account manager is showing var sort_menuitem = document.getElementById('viewSortMenu'); if (sort_menuitem) { sort_menuitem.setAttribute("disabled", gAccountCentralLoaded); } var view_menuitem = document.getElementById('viewMessageViewMenu'); if (view_menuitem) { view_menuitem.setAttribute("disabled", gAccountCentralLoaded); } var threads_menuitem = document.getElementById('viewMessagesMenu'); if (threads_menuitem) { threads_menuitem.setAttribute("disabled", gAccountCentralLoaded); } // hide the views menu item if the user doesn't have the views toolbar button visible viewsToolbarButton = document.getElementById("mailviews-container"); if (!viewsToolbarButton) document.getElementById('viewMessageViewMenu').collapsed = true; // Initialize the View Attachment Inline menu var viewAttachmentInline = pref.getBoolPref("mail.inline_attachments"); document.getElementById("viewAttachmentsInlineMenuitem").setAttribute("checked", viewAttachmentInline ? "true" : "false"); document.commandDispatcher.updateCommands('create-menu-view');}function InitViewLayoutStyleMenu(event){ var paneConfig = pref.getIntPref("mail.pane_config.dynamic"); var layoutStyleMenuitem = event.target.childNodes[paneConfig]; if (layoutStyleMenuitem) layoutStyleMenuitem.setAttribute("checked", "true"); }function InitViewFolderViewsMenu(event){ var layoutStyleMenuitem = event.target.childNodes[gCurrentFolderView]; if (layoutStyleMenuitem) layoutStyleMenuitem.setAttribute("checked", "true"); }function setSortByMenuItemCheckState(id, value){ var menuitem = document.getElementById(id); if (menuitem) menuitem.setAttribute("checked", value);}function InitViewSortByMenu(){ var sortType = gDBView.sortType; setSortByMenuItemCheckState("sortByDateMenuitem", (sortType == nsMsgViewSortType.byDate)); setSortByMenuItemCheckState("sortByFlagMenuitem", (sortType == nsMsgViewSortType.byFlagged)); setSortByMenuItemCheckState("sortByOrderReceivedMenuitem", (sortType == nsMsgViewSortType.byId)); setSortByMenuItemCheckState("sortByPriorityMenuitem", (sortType == nsMsgViewSortType.byPriority)); setSortByMenuItemCheckState("sortBySizeMenuitem", (sortType == nsMsgViewSortType.bySize)); setSortByMenuItemCheckState("sortByStatusMenuitem", (sortType == nsMsgViewSortType.byStatus)); setSortByMenuItemCheckState("sortBySubjectMenuitem", (sortType == nsMsgViewSortType.bySubject)); setSortByMenuItemCheckState("sortByUnreadMenuitem", (sortType == nsMsgViewSortType.byUnread)); setSortByMenuItemCheckState("sortByTagsMenuitem", (sortType == nsMsgViewSortType.byTags)); setSortByMenuItemCheckState("sortByJunkStatusMenuitem", (sortType == nsMsgViewSortType.byJunkStatus)); setSortByMenuItemCheckState("sortBySenderMenuitem", (sortType == nsMsgViewSortType.byAuthor)); setSortByMenuItemCheckState("sortByRecipientMenuitem", (sortType == nsMsgViewSortType.byRecipient)); setSortByMenuItemCheckState("sortByAttachmentsMenuitem", (sortType == nsMsgViewSortType.byAttachments)); var sortOrder = gDBView.sortOrder; var sortTypeSupportsGrouping = (sortType == nsMsgViewSortType.byAuthor || sortType == nsMsgViewSortType.byDate || sortType == nsMsgViewSortType.byPriority || sortType == nsMsgViewSortType.bySubject || sortType == nsMsgViewSortType.byTags || sortType == nsMsgViewSortType.byRecipient || sortType == nsMsgViewSortType.byAccount || sortType == nsMsgViewSortType.byStatus || sortType == nsMsgViewSortType.byFlagged || sortType == nsMsgViewSortType.byAttachments); setSortByMenuItemCheckState("sortAscending", (sortOrder == nsMsgViewSortOrder.ascending)); setSortByMenuItemCheckState("sortDescending", (sortOrder == nsMsgViewSortOrder.descending)); var grouped = ((gDBView.viewFlags & nsMsgViewFlagsType.kGroupBySort) != 0); var threaded = ((gDBView.viewFlags & nsMsgViewFlagsType.kThreadedDisplay) != 0 && !grouped); var sortThreadedMenuItem = document.getElementById("sortThreaded"); var sortUnthreadedMenuItem = document.getElementById("sortUnthreaded"); sortThreadedMenuItem.setAttribute("checked", threaded); sortUnthreadedMenuItem.setAttribute("checked", !threaded && !grouped); sortThreadedMenuItem.setAttribute("disabled", !gDBView.supportsThreading); sortUnthreadedMenuItem.setAttribute("disabled", !gDBView.supportsThreading); var groupBySortOrderMenuItem = document.getElementById("groupBySort"); groupBySortOrderMenuItem.setAttribute("disabled", !gDBView.supportsThreading || !sortTypeSupportsGrouping); groupBySortOrderMenuItem.setAttribute("checked", grouped);}function InitViewMessagesMenu(){ var viewFlags = (gDBView) ? gDBView.viewFlags : 0; var viewType = (gDBView) ? gDBView.viewType : 0; var allMenuItem = document.getElementById("viewAllMessagesMenuItem"); if(allMenuItem) allMenuItem.setAttribute("checked", (viewFlags & nsMsgViewFlagsType.kUnreadOnly) == 0 && (viewType == nsMsgViewType.eShowAllThreads)); var unreadMenuItem = document.getElementById("viewUnreadMessagesMenuItem"); if(unreadMenuItem) unreadMenuItem.setAttribute("checked", (viewFlags & nsMsgViewFlagsType.kUnreadOnly) != 0); var theadsWithUnreadMenuItem = document.getElementById("viewThreadsWithUnreadMenuItem"); if(theadsWithUnreadMenuItem) theadsWithUnreadMenuItem.setAttribute("checked", viewType == nsMsgViewType.eShowThreadsWithUnread); var watchedTheadsWithUnreadMenuItem = document.getElementById("viewWatchedThreadsWithUnreadMenuItem"); if(watchedTheadsWithUnreadMenuItem) watchedTheadsWithUnreadMenuItem.setAttribute("checked", viewType == nsMsgViewType.eShowWatchedThreadsWithUnread); var ignoredTheadsMenuItem = document.getElementById("viewIgnoredThreadsMenuItem"); if(ignoredTheadsMenuItem) ignoredTheadsMenuItem.setAttribute("checked", (viewFlags & nsMsgViewFlagsType.kShowIgnored) != 0);}function InitMessageMenu(){ var aMessage = GetFirstSelectedMessage(); var isNews = false; if(aMessage) isNews = IsNewsMessage(aMessage); //We show reply to Newsgroups only for news messages. var replyNewsgroupMenuItem = document.getElementById("replyNewsgroupMainMenu"); if(replyNewsgroupMenuItem) replyNewsgroupMenuItem.setAttribute("hidden", isNews ? "" : "true"); //For mail messages we say reply. For news we say ReplyToSender. var replyMenuItem = document.getElementById("replyMainMenu"); if(replyMenuItem) replyMenuItem.setAttribute("hidden", !isNews ? "" : "true"); var replySenderMenuItem = document.getElementById("replySenderMainMenu"); if(replySenderMenuItem) replySenderMenuItem.setAttribute("hidden", isNews ? "" : "true"); // we only kill and watch threads for news var threadMenuSeparator = document.getElementById("threadItemsSeparator"); if (threadMenuSeparator) threadMenuSeparator.setAttribute("hidden", isNews ? "" : "true"); var killThreadMenuItem = document.getElementById("killThread"); if (killThreadMenuItem) killThreadMenuItem.setAttribute("hidden", isNews ? "" : "true"); var watchThreadMenuItem = document.getElementById("watchThread"); if (watchThreadMenuItem) watchThreadMenuItem.setAttribute("hidden", isNews ? "" : "true"); // disable the move and copy menus if there are no messages selected. // disable the move menu if we can't delete msgs from the folder var moveMenu = document.getElementById("moveMenu"); var msgFolder = GetLoadedMsgFolder(); if(moveMenu) { var enableMenuItem = aMessage && msgFolder && msgFolder.canDeleteMessages; moveMenu.setAttribute("disabled", !enableMenuItem); } var copyMenu = document.getElementById("copyMenu"); if(copyMenu) copyMenu.setAttribute("disabled", !aMessage); initMoveToFolderAgainMenu(document.getElementById("moveToFolderAgain")); // Disable Forward as/Label menu items if no message is selected var forwardAsMenu = document.getElementById("forwardAsMenu"); if(forwardAsMenu) forwardAsMenu.setAttribute("disabled", !aMessage); var labelMenu = document.getElementById("labelMenu"); if(labelMenu) labelMenu.setAttribute("disabled", !aMessage); // Disable mark menu when we're not in a folder var markMenu = document.getElementById("markMenu"); if(markMenu) markMenu.setAttribute("disabled", !msgFolder); document.commandDispatcher.updateCommands('create-menu-message');}// initMoveToFolderAgainMenu// enables / disables aMenuItem based on the value of mail.last_msg_movecopy_target_uri// Adjusts the label and accesskey for aMenuItem to include the folder namefunction initMoveToFolderAgainMenu(aMenuItem){ var lastFolderURI = pref.getCharPref("mail.last_msg_movecopy_target_uri"); var isMove = pref.getBoolPref("mail.last_msg_movecopy_was_move"); if (lastFolderURI) { var destResource = RDF.GetResource(lastFolderURI);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -