summaryrefslogtreecommitdiffstats
path: root/comm/mail/modules/MsgHdrSyntheticView.jsm
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/modules/MsgHdrSyntheticView.jsm')
-rw-r--r--comm/mail/modules/MsgHdrSyntheticView.jsm67
1 files changed, 67 insertions, 0 deletions
diff --git a/comm/mail/modules/MsgHdrSyntheticView.jsm b/comm/mail/modules/MsgHdrSyntheticView.jsm
new file mode 100644
index 0000000000..0219e13a1c
--- /dev/null
+++ b/comm/mail/modules/MsgHdrSyntheticView.jsm
@@ -0,0 +1,67 @@
+/* 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/. */
+
+/*
+ * This object provides you a way to have a synthetic nsIMsgDBView for a single
+ * message header.
+ */
+
+var EXPORTED_SYMBOLS = ["MsgHdrSyntheticView"];
+
+/**
+ * Create a synthetic view suitable for passing to |FolderDisplayWidget.show|.
+ * You must pass a single message header in.
+ *
+ * @param aMsgHdr The message header to create the synthetic view for.
+ */
+function MsgHdrSyntheticView(aMsgHdr) {
+ this.msgHdr = aMsgHdr;
+
+ this.customColumns = [];
+}
+
+MsgHdrSyntheticView.prototype = {
+ defaultSort: [
+ [Ci.nsMsgViewSortType.byDate, Ci.nsMsgViewSortOrder.descending],
+ ],
+
+ /**
+ * Request the search be performed and notifications provided to
+ * aSearchListener. Since we already have the result with us, this is
+ * synchronous.
+ */
+ search(aSearchListener, aCompletionCallback) {
+ this.searchListener = aSearchListener;
+ this.completionCallback = aCompletionCallback;
+ aSearchListener.onNewSearch();
+ aSearchListener.onSearchHit(this.msgHdr, this.msgHdr.folder);
+ // we're not really aborting, but it closes things out nicely
+ this.abortSearch();
+ },
+
+ /**
+ * Aborts or completes the search -- we do not make a distinction.
+ */
+ abortSearch() {
+ if (this.searchListener) {
+ this.searchListener.onSearchDone(Cr.NS_OK);
+ }
+ if (this.completionCallback) {
+ this.completionCallback();
+ }
+ this.searchListener = null;
+ this.completionCallback = null;
+ },
+
+ /**
+ * Helper function used by |DBViewWrapper.getMsgHdrForMessageID|.
+ */
+ getMsgHdrForMessageID(aMessageId) {
+ if (this.msgHdr.messageId == aMessageId) {
+ return this.msgHdr;
+ }
+
+ return null;
+ },
+};