diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /comm/mailnews/base/public/nsIMsgFolderNotificationService.idl | |
parent | Initial commit. (diff) | |
download | thunderbird-upstream.tar.xz thunderbird-upstream.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | comm/mailnews/base/public/nsIMsgFolderNotificationService.idl | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/comm/mailnews/base/public/nsIMsgFolderNotificationService.idl b/comm/mailnews/base/public/nsIMsgFolderNotificationService.idl new file mode 100644 index 0000000000..79cf0fb7d2 --- /dev/null +++ b/comm/mailnews/base/public/nsIMsgFolderNotificationService.idl @@ -0,0 +1,119 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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/. */ +#include "nsISupports.idl" +#include "MailNewsTypes2.idl" + +interface nsIMsgDBHdr; +interface nsIMsgFolder; +interface nsIMsgFolderListener; + +typedef unsigned long msgFolderListenerFlag; + + +/** + * nsIMsgFolderNotificationService provides a central point for sending out + * notifications related to folders. + * nsIMsgFolderListeners are registered with the service along with flags to + * indicate which kinds of notifications are of interest. + */ +[scriptable, uuid(e54a592c-2f23-4771-9670-bdb9d4f5dbbd)] +interface nsIMsgFolderNotificationService : nsISupports { + /** + * @name Notification flags + * These flags determine which notifications will be sent. + * @{ + */ + /// nsIMsgFolderListener::msgAdded notification + const msgFolderListenerFlag msgAdded = 0x1; + + /// nsIMsgFolderListener::msgsDeleted notification + const msgFolderListenerFlag msgsDeleted = 0x2; + + /// nsIMsgFolderListener::msgsMoveCopyCompleted notification + const msgFolderListenerFlag msgsMoveCopyCompleted = 0x4; + + /// nsIMsgFolderListener::msgsClassified notification + const msgFolderListenerFlag msgsClassified = 0x8; + + /// nsIMsgFolderListener::msgsJunkStatusChanged notification + const msgFolderListenerFlag msgsJunkStatusChanged = 0x10; + + /// nsIMsgFolderListener::msgUnincorporatedMoved notification + const msgFolderListenerFlag msgUnincorporatedMoved = 0x20; + + /// nsIMsgFolderListener::folderAdded notification + const msgFolderListenerFlag folderAdded = 0x8000; + + /// nsIMsgFolderListener::folderDeleted notification + const msgFolderListenerFlag folderDeleted = 0x1000; + + /// nsIMsgFolderListener::folderMoveCopyCompleted notification + const msgFolderListenerFlag folderMoveCopyCompleted = 0x2000; + + /// nsIMsgFolderListener::folderRenamed notification + const msgFolderListenerFlag folderRenamed = 0x4000; + + /// nsIMsgFolderListener::folderCompactStart notification + const msgFolderListenerFlag folderCompactStart = 0x10000; + + /// nsIMsgFolderListener::folderCompactFinish notification + const msgFolderListenerFlag folderCompactFinish = 0x20000; + + /// nsIMsgFolderListener::folderReindexTriggered notification + const msgFolderListenerFlag folderReindexTriggered = 0x40000; + + /// nsIMsgFolderListener::msgKeyChanged notification + const msgFolderListenerFlag msgKeyChanged = 0x2000000; + + /** @} */ + + readonly attribute boolean hasListeners; + void addListener(in nsIMsgFolderListener aListener, + in msgFolderListenerFlag flags); + void removeListener(in nsIMsgFolderListener aListener); + + // message-specific functions + // single message for added, array for delete/move/copy + void notifyMsgAdded(in nsIMsgDBHdr aMsg); + void notifyMsgsClassified(in Array<nsIMsgDBHdr> aMsgs, + in boolean aJunkProcessed, + in boolean aTraitProcessed); + void notifyMsgsJunkStatusChanged(in Array<nsIMsgDBHdr> messages); + void notifyMsgsDeleted(in Array<nsIMsgDBHdr> aMsgs); + void notifyMsgsMoveCopyCompleted(in boolean aMove, + in Array<nsIMsgDBHdr> aSrcMsgs, + in nsIMsgFolder aDestFolder, + in Array<nsIMsgDBHdr> aDestMsgs); + + /** + * Notify listeners that the msg key for a header has changed. Currently, + * this is used when we create a header for an offline imap move result, + * without knowing what the ultimate UID will be. When we download the + * headers for the new message, we replace the old "pseudo" header with + * a new header that has the correct UID/message key, by cloning the pseudo + * header, which maintains all the existing header attributes. + * + * @param aOldKey The fake UID. The header with this key has been removed + * by the time this is called. + * @param aNewHdr The header that replaces the header with aOldKey. + */ + void notifyMsgKeyChanged(in nsMsgKey aOldKey, in nsIMsgDBHdr aNewHdr); + + void notifyMsgUnincorporatedMoved(in nsIMsgFolder srcFolder, in nsIMsgDBHdr msg); + + // folder specific functions + // single folders, all the time + void notifyFolderAdded(in nsIMsgFolder aFolder); + void notifyFolderDeleted(in nsIMsgFolder aFolder); + void notifyFolderMoveCopyCompleted(in boolean aMove, + in nsIMsgFolder aSrcFolder, + in nsIMsgFolder aDestFolder); + void notifyFolderRenamed(in nsIMsgFolder aOrigFolder, + in nsIMsgFolder aNewFolder); + + void notifyFolderCompactStart(in nsIMsgFolder folder); + void notifyFolderCompactFinish(in nsIMsgFolder folder); + void notifyFolderReindexTriggered(in nsIMsgFolder folder); +}; |