diff options
Diffstat (limited to 'comm/suite/mailnews/content/folderDisplay.js')
-rw-r--r-- | comm/suite/mailnews/content/folderDisplay.js | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/comm/suite/mailnews/content/folderDisplay.js b/comm/suite/mailnews/content/folderDisplay.js new file mode 100644 index 0000000000..0318fb2e66 --- /dev/null +++ b/comm/suite/mailnews/content/folderDisplay.js @@ -0,0 +1,142 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +var gFolderDisplay = +{ + get selectedCount() + { + return gDBView ? gDBView.numSelected : 0; + }, + + get selectedMessage() + { + if (!this.selectedIndices.length) + return null; + return gDBView.hdrForFirstSelectedMessage; + }, + + get selectedMessageUri() + { + if (!this.selectedIndices.length) + return null; + return gDBView.URIForFirstSelectedMessage; + }, + + get selectedMessageIsFeed() + { + return FeedMessageHandler.isFeedMessage(this.selectedMessage); + }, + + get selectedMessageIsImap() + { + var message = this.selectedMessage; + return message && message.folder && + (message.folder.flags & Ci.nsMsgFolderFlags.ImapBox) != 0; + }, + + get selectedMessageIsNews() + { + var message = this.selectedMessage; + return message && message.folder && + (message.folder.flags & Ci.nsMsgFolderFlags.Newsgroup) != 0; + }, + + get selectedMessageIsExternal() + { + var message = this.selectedMessage; + return message && !message.folder; + }, + + get selectedIndices() + { + return gDBView ? gDBView.getIndicesForSelection() : []; + }, + + get selectedMessages() + { + return gDBView ? gDBView.getSelectedMsgHdrs() : []; + }, + + get selectedMessageUris() + { + if (!gDBView) + return null; + var messageArray = gDBView.getURIsForSelection(); + return messageArray.length ? messageArray : null; + }, + + get canArchiveSelectedMessages() + { + if (!gDBView) + return false; + var selectedMessages = this.selectedMessages; + if (selectedMessages.length == 0) + return false; + return selectedMessages.every(function(aMsg) { + let identity = GetIdentityForHeader(aMsg); + return identity && identity.archiveEnabled; + }); + }, + + get displayedFolder() + { + return gMsgFolderSelected; + }, + + /** + * Determine which pane currently has focus (one of the folder pane, thread + * pane, or message pane). When changing focus to the message pane, be sure + * to focus the appropriate content window in addition to the messagepanebox + * (doing both is required in order to blur the previously-focused chrome + * element). + * + * @return the focused pane + */ + get focusedPane() { + let panes = ["threadTree", "folderTree", "messagepanebox"].map(id => + document.getElementById(id)); + + let currentNode = top.document.activeElement; + + while (currentNode) { + if (panes.includes(currentNode)) { + return currentNode; + } + + currentNode = currentNode.parentNode; + } + return null; + }, + +} + +var gMessageDisplay = +{ + get displayedMessage() + { + if (!gDBView) + return null; + var viewIndex = gDBView.currentlyDisplayedMessage; + return viewIndex == nsMsgViewIndex_None ? null : + gDBView.getMsgHdrAt(viewIndex); + }, + + get isDummy() + { + return gDBView && gDBView.keyForFirstSelectedMessage == nsMsgKey_None; + }, + + get visible() + { + return !GetMessagePane().collapsed; + }, + + set visible(aVisible) + { + return aVisible; // Fake setter for the time being. + } +} + +gFolderDisplay.messageDisplay = gMessageDisplay; |