Revision control

Copy as Markdown

Other Tools

/* -*- 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;