📄 messagewindow.js
字号:
viewType = nsMsgViewType.eShowSearch; } // create a db view CreateBareDBView(originalView, msgFolder, viewType, viewFlags, sortType, sortOrder); var uri; if (gCurrentMessageUri) uri = gCurrentMessageUri; else if (gCurrentFolderUri) uri = gCurrentFolderUri; else uri = null; SetUpToolbarButtons(uri); // hook for extra toolbar items var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.notifyObservers(window, "mail:setupToolbarItems", uri);}function extractMsgKeyFromURI(){ var msgKey = -1; var msgHdr = messenger.msgHdrFromURI(gCurrentMessageUri); if (msgHdr) msgKey = msgHdr.messageKey; return msgKey;}function ShowMenus(){ var openMail3Pane_menuitem = document.getElementById('tasksMenuMail'); if (openMail3Pane_menuitem) openMail3Pane_menuitem.removeAttribute("hidden");}// Toolbar buttons like quick search and mail views should be hidden for the message windowfunction HideToolbarButtons(){ var mailToolbar = document.getElementById('mail-bar2'); if (mailToolbar) { // the quick search box is part of the default toolbar set for the 3-pane and since it is shared code, // the stand alone message window. We need to remove the search-container from the defaultset, // remove the toolbar button itself from the DOM because we've already created it. var defaultSet = mailToolbar.getAttribute("defaultset"); defaultSet = defaultSet.replace(/search-container/i, ""); mailToolbar.setAttribute('defaultset', defaultSet); var searchContainer = document.getElementById('search-container'); if (searchContainer) searchContainer.parentNode.removeChild(searchContainer); // now hack the toolbar palette to remove all of the toolbar items which don't // make sense for the stand alone message window. This prevents them from showing up in the // customize dialog. var toolbarPalette = document.getElementById('mail-toolbox').palette; toolbarPalette.removeChild(toolbarPalette.getElementsByAttribute('id', 'search-container')[0]); toolbarPalette.removeChild(toolbarPalette.getElementsByAttribute('id', 'mailviews-container')[0]); toolbarPalette.removeChild(toolbarPalette.getElementsByAttribute('id', 'folder-location-container')[0]); }}function HideMenus(){ var message_menuitem=document.getElementById('menu_showMessage'); if (message_menuitem) message_menuitem.setAttribute("hidden", "true"); var showSearch_showMessage_Separator = document.getElementById('menu_showSearch_showMessage_Separator'); if (showSearch_showMessage_Separator) showSearch_showMessage_Separator.setAttribute("hidden", "true"); var expandOrCollapseMenu = document.getElementById('menu_expandOrCollapse'); if (expandOrCollapseMenu) expandOrCollapseMenu.setAttribute("hidden", "true"); var renameFolderMenu = document.getElementById('menu_renameFolder'); if (renameFolderMenu) renameFolderMenu.setAttribute("hidden", "true"); var viewLayoutMenu = document.getElementById("menu_MessagePaneLayout"); if (viewLayoutMenu) viewLayoutMenu.setAttribute("hidden", "true"); var viewFolderMenu = document.getElementById("menu_FolderViews"); if (viewFolderMenu) viewFolderMenu.setAttribute("hidden", "true"); var viewMessagesMenu = document.getElementById('viewMessagesMenu'); if (viewMessagesMenu) viewMessagesMenu.setAttribute("hidden", "true"); var viewMessageViewMenu = document.getElementById('viewMessageViewMenu'); if (viewMessageViewMenu) viewMessageViewMenu.setAttribute("hidden", "true"); var viewMessagesMenuSeparator = document.getElementById('viewMessagesMenuSeparator'); if (viewMessagesMenuSeparator) viewMessagesMenuSeparator.setAttribute("hidden", "true"); var openMessageMenu = document.getElementById('openMessageWindowMenuitem'); if (openMessageMenu) openMessageMenu.setAttribute("hidden", "true"); var viewSortMenuSeparator = document.getElementById('viewSortMenuSeparator'); if (viewSortMenuSeparator) viewSortMenuSeparator.setAttribute("hidden", "true"); var viewSortMenu = document.getElementById('viewSortMenu'); if (viewSortMenu) viewSortMenu.setAttribute("hidden", "true"); var emptryTrashMenu = document.getElementById('menu_emptyTrash'); if (emptryTrashMenu) emptryTrashMenu.setAttribute("hidden", "true"); var menuPropertiesSeparator = document.getElementById("editPropertiesSeparator"); if (menuPropertiesSeparator) menuPropertiesSeparator.setAttribute("hidden", "true"); var menuProperties = document.getElementById('menu_properties'); if (menuProperties) menuProperties.setAttribute("hidden", "true"); var favoriteFolder = document.getElementById('menu_favoriteFolder'); if (favoriteFolder) { favoriteFolder.disabled = true; favoriteFolder.setAttribute("hidden", "true"); } var compactFolderMenu = document.getElementById('menu_compactFolder'); if (compactFolderMenu) compactFolderMenu.setAttribute("hidden", "true"); var trashSeparator = document.getElementById('trashMenuSeparator'); if (trashSeparator) trashSeparator.setAttribute("hidden", "true"); var goStartPageSeparator = document.getElementById('goNextSeparator'); if (goStartPageSeparator) goStartPageSeparator.hidden = true; var goStartPage = document.getElementById('goStartPage'); if (goStartPage) goStartPage.hidden = true;}function OnUnloadMessageWindow(){ // FIX ME - later we will be able to use onunload from the overlay OnUnloadMsgHeaderPane(); OnMailWindowUnload(); gFindBar.uninitFindBar();}function CreateMessageWindowGlobals(){ gCompositeDataSource = Components.classes[compositeDataSourceContractID].createInstance(); gCompositeDataSource = gCompositeDataSource.QueryInterface(Components.interfaces.nsIRDFCompositeDataSource);}function InitializeDataSources(){ AddDataSources(); //Now add datasources to composite datasource gCompositeDataSource.AddDataSource(accountManagerDataSource); gCompositeDataSource.AddDataSource(folderDataSource);}function GetSelectedMsgFolders(){ var folderArray = new Array(1); var msgFolder = GetLoadedMsgFolder(); if (msgFolder) folderArray[0] = msgFolder; return folderArray;}function GetFirstSelectedMessage(){ return GetLoadedMessage();}function GetNumSelectedMessages(){ if (gCurrentMessageUri) return 1; else return 0;}function GetSelectedMessages(){ var messageArray = new Array(1); var message = GetLoadedMessage(); if (message) messageArray[0] = message; return messageArray;}function GetSelectedIndices(dbView){ try { var indicesArray = {}; var length = {}; dbView.getIndicesForSelection(indicesArray,length); return indicesArray.value; } catch (ex) { dump("ex = " + ex + "\n"); return null; }}function GetLoadedMsgFolder(){ return (gCurrentFolderUri) ? RDF.GetResource(gCurrentFolderUri).QueryInterface(Components.interfaces.nsIMsgFolder) : null;}function GetSelectedFolderURI(){ return gCurrentFolderUri;}function GetLoadedMessage(){ return gCurrentMessageUri;}//Clear everything related to the current message. called after load start page.function ClearMessageSelection(){ gCurrentMessageUri = null; gCurrentFolderUri = null; UpdateMailToolbar("clear msg, std alone window");}function GetCompositeDataSource(command){ return gCompositeDataSource; }function SetNextMessageAfterDelete(){ gNextMessageViewIndexAfterDelete = gDBView.msgToSelectAfterDelete;}function SelectFolder(folderUri){ if (folderUri == gCurrentFolderUri) return; var msgfolder = RDF.GetResource(folderUri).QueryInterface(Components.interfaces.nsIMsgFolder); if (!msgfolder || msgfolder.isServer) return; // close old folder view var dbview = GetDBView(); if (dbview) dbview.close(); gCurrentFolderToRerootForStandAlone = folderUri; if (msgfolder.manyHeadersToDownload) { gRerootOnFolderLoadForStandAlone = true; try { msgfolder.startFolderLoading(); msgfolder.updateFolder(msgWindow); } catch(ex) { dump("Error loading with many headers to download: " + ex + "\n"); } } else { RerootFolderForStandAlone(folderUri); gRerootOnFolderLoadForStandAlone = false; msgfolder.startFolderLoading(); //Need to do this after rerooting folder. Otherwise possibility of receiving folder loaded //notification before folder has actually changed. msgfolder.updateFolder(msgWindow); } }function RerootFolderForStandAlone(uri){ gCurrentFolderUri = uri; // create new folder view CreateView(null); // now do the work to load the appropriate message if (gNextMessageAfterLoad) { var type = gNextMessageAfterLoad; gNextMessageAfterLoad = null; LoadMessageByNavigationType(type); } SetUpToolbarButtons(gCurrentFolderUri); UpdateMailToolbar("reroot folder in stand alone window"); // hook for extra toolbar items var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.notifyObservers(window, "mail:setupToolbarItems", uri);} function GetMsgHdrFromUri(messageUri){ return messenger.msgHdrFromURI(messageUri);}function SelectMessage(messageUri){ var msgHdr = GetMsgHdrFromUri(messageUri); LoadMessageByMsgKey(msgHdr.messageKey);} function ReloadMessage(){ gDBView.reloadMessage();}function MsgDeleteMessageFromMessageWindow(reallyDelete, fromToolbar){ // if from the toolbar, return right away if this is a news message // only allow cancel from the menu: "Edit | Cancel / Delete Message" if (fromToolbar) { if (isNewsURI(gCurrentFolderUri)) { // if news, don't delete return; } } // before we delete SetNextMessageAfterDelete(); if (reallyDelete) gDBView.doCommand(nsMsgViewCommandType.deleteNoTrash); else gDBView.doCommand(nsMsgViewCommandType.deleteMsg);}// MessageWindowController object (handles commands when one of the trees does not have focus)var MessageWindowController ={ supportsCommand: function(command) { switch ( command ) { case "cmd_delete": case "cmd_undo": case "cmd_redo": case "cmd_killThread": case "cmd_watchThread": case "button_delete": case "button_junk": case "cmd_shiftDelete": case "cmd_saveAsFile": case "cmd_saveAsTemplate": case "cmd_viewPageSource": case "cmd_getMsgsForAuthAccounts": case "cmd_tag": case "button_mark": case "cmd_markAsRead": case "cmd_markAllRead": case "cmd_markThreadAsRead": case "cmd_markReadByDate": case "cmd_markAsFlagged": case "button_file": case "cmd_file": case "cmd_markAsJunk": case "cmd_markAsNotJunk": case "cmd_recalculateJunkScore": case "cmd_applyFilters": case "cmd_runJunkControls": case "cmd_deleteJunk": case "cmd_nextMsg": case "button_next": case "button_previous": case "cmd_nextUnreadMsg": case "cmd_nextFlaggedMsg":
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -