/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* 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" #include "nsIImapProtocol.idl" #include "nsIMailboxSpec.idl" interface nsIMsgMailNewsUrl; interface nsIImapMockChannel; interface nsIImapHeaderXferInfo; typedef long ImapOnlineCopyState; [scriptable, uuid(5f7484b0-68b4-11d3-a53e-0060b0fc04b7)] interface ImapOnlineCopyStateType : nsISupports { const long kInProgress = 0; const long kSuccessfulCopy = 1; const long kSuccessfulMove = 2; const long kSuccessfulDelete = 3; const long kFailedDelete = 4; const long kReadyForAppendData = 5; const long kFailedAppend = 6; const long kInterruptedState = 7; const long kFailedCopy = 8; const long kFailedMove = 9; }; /** * nsIImapMailFolderSink provides a way for the IMAP system to communicate * with the local folder representation. * * The IMAP system could poke folders directly, but going through this * interface has a couple of benefits: * * 1. It better defines the public coupling between the two systems. * 2. It's easier to wrap with a proxy class so the IMAP system can safely * call the methods across thread boundaries (see ImapMailFolderSinkProxy). */ [scriptable, uuid(525e1278-a39d-46d6-9dbc-b48c7e1d4faa)] interface nsIImapMailFolderSink : nsISupports { attribute boolean folderNeedsACLListed; attribute boolean folderNeedsSubscribing; attribute boolean folderNeedsAdded; attribute unsigned long aclFlags; attribute long uidValidity; /** * Whether we have asked the server for this folder's quota information. * If the server supports quotas, this occurs when the folder is opened. */ attribute boolean folderQuotaCommandIssued; /** * Set FolderQuotaData information * @param aAction Invalidate, store or validate the quota data. * Remaining params are relevant only for store. * @param aFolderQuotaRoot The IMAP quotaroot and resource names for this * folder separated by a slash as obtained from the * GETQUOTAROOT IMAP command response. * @param aFolderQuotaUsage Amount of resourse in use, in KB for STORAGE * resource. * @param aFolderQuotaLimit Maximum usage allowed for this resource. **/ void setFolderQuotaData( in unsigned long aAction, in ACString aFolderQuotaRoot, in unsigned long long aFolderQuotaUsed, in unsigned long long aFolderQuotaLimit); /// Should we download all the rfc822 headers of messages, instead of subset. readonly attribute boolean shouldDownloadAllHeaders; readonly attribute char onlineDelimiter; void OnNewIdleMessages(); // Tell mail master about the newly selected mailbox void UpdateImapMailboxInfo(in nsIImapProtocol aProtocol, in nsIMailboxSpec aSpec); void UpdateImapMailboxStatus(in nsIImapProtocol aProtocol, in nsIMailboxSpec aSpec); /** * Used when downloading headers in chunks. * @param aSpec Mailbox spec of folder we're downloading headers for. * @returns true if more to download, false otherwise. * @returns total count of headers to download (across all chunks) * @returns an array of msg keys to download, array size is this chunk's size */ void getMsgHdrsToDownload(out boolean aMore, out long aTotalCount, out Array aKeys); void parseMsgHdrs(in nsIImapProtocol aProtocol, in nsIImapHeaderXferInfo aHdrXferInfo); void AbortHeaderParseStream(in nsIImapProtocol aProtocol) ; void OnlineCopyCompleted(in nsIImapProtocol aProtocol, in ImapOnlineCopyState aCopyState); void StartMessage(in nsIMsgMailNewsUrl aUrl); void EndMessage(in nsIMsgMailNewsUrl aUrl, in nsMsgKey uidOfMessage); void NotifySearchHit(in nsIMsgMailNewsUrl aUrl, in string hitLine); void copyNextStreamMessage(in boolean copySucceeded, in nsISupports copyState); void closeMockChannel(in nsIImapMockChannel aChannel); void setUrlState(in nsIImapProtocol aProtocol, in nsIMsgMailNewsUrl aUrl, in boolean isRunning, in boolean aSuspend, in nsresult status); void releaseUrlCacheEntry(in nsIMsgMailNewsUrl aUrl); void headerFetchCompleted(in nsIImapProtocol aProtocol); void setBiffStateAndUpdate(in long biffState); void progressStatusString(in nsIImapProtocol aProtocol, in string aMsgId, in wstring extraInfo); void percentProgress(in nsIImapProtocol aProtocol, in ACString aFmtStringName, in AString aMailboxName, in long long aCurrentProgress, in long long aMaxProgressProgressInfo); void clearFolderRights(); void setCopyResponseUid(in string msgIdString, in nsIImapUrl aUrl); void setAppendMsgUid(in nsMsgKey newKey, in nsIImapUrl aUrl); ACString getMessageId(in nsIImapUrl aUrl); };