/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1999 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Lorenzo Colitti * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" #include "MailNewsTypes2.idl" #include "nsIImapProtocol.idl" #include "nsIMailboxSpec.idl" interface nsIMsgMailNewsUrl; interface nsIImapMockChannel; interface nsIMsgWindow; interface nsIImapHeaderXferInfo; typedef long ImapOnlineCopyState; [scriptable, uuid(5f7484b0-68b4-11d3-a53e-0060b0fc04b7)] interface ImapOnlineCopyStateType { 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; }; [scriptable, uuid(3b2dd7e0-e72c-11d2-ab7b-00805f8ac968)] 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 aFolderQuotaRoot The IMAP quota root for this folder, * as returned by the GETQUOTAROOT IMAP command. * @param aFolderQuotaUsedKB Used space, in KB, on this folder's quota root. * @param aFolderQuotaMaxKB Size, in KB, of this folder's quota root. **/ void setFolderQuotaData(in ACString aFolderQuotaRoot, in unsigned long aFolderQuotaUsedKB, in unsigned long aFolderQuotaMaxKB); readonly attribute boolean shouldDownloadAllHeaders; string GetOnlineDelimiter(); 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); 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); // these two hokey methods are needed so we can try to make sure the imap objects are released // on the UI thread. This in turn ensures that the objects the imap object holds on to // are only released / destroyed from the UI thread. This is used for urls and copy state objects now. void prepareToReleaseObject(in nsISupports aISupports); void releaseObject(); void closeMockChannel(in nsIImapMockChannel aChannel); void setUrlState(in nsIImapProtocol aProtocol, in nsIMsgMailNewsUrl aUrl, in boolean isRunning, in nsresult status); void releaseUrlCacheEntry(in nsIMsgMailNewsUrl aUrl); void headerFetchCompleted(in nsIImapProtocol aProtocol); void setBiffStateAndUpdate(in long biffState); void progressStatus(in nsIImapProtocol aProtocol, in unsigned long aMsgId, in wstring extraInfo); void percentProgress(in nsIImapProtocol aProtocol, in wstring aMessage, in long aCurrentProgress, in 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); };