Back to index

lightning-sunbird  0.9+nobinonly
nsIImapMailFolderSink.idl
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is mozilla.org code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Netscape Communications Corporation.
00019  * Portions created by the Initial Developer are Copyright (C) 1999
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *   Lorenzo Colitti <lorenzo@colitti.com>
00024  *
00025  * Alternatively, the contents of this file may be used under the terms of
00026  * either of the GNU General Public License Version 2 or later (the "GPL"),
00027  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00028  * in which case the provisions of the GPL or the LGPL are applicable instead
00029  * of those above. If you wish to allow use of your version of this file only
00030  * under the terms of either the GPL or the LGPL, and not to allow others to
00031  * use your version of this file under the terms of the MPL, indicate your
00032  * decision by deleting the provisions above and replace them with the notice
00033  * and other provisions required by the GPL or the LGPL. If you do not delete
00034  * the provisions above, a recipient may use your version of this file under
00035  * the terms of any one of the MPL, the GPL or the LGPL.
00036  *
00037  * ***** END LICENSE BLOCK ***** */
00038 
00039 #include "nsISupports.idl"
00040 #include "MailNewsTypes2.idl"
00041 
00042 #include "nsIImapProtocol.idl"
00043 #include "nsIMailboxSpec.idl"
00044 
00045 interface nsIMsgMailNewsUrl;
00046 interface nsIImapMockChannel;
00047 interface nsIMsgWindow;
00048 interface nsIImapHeaderXferInfo;
00049 
00050 typedef long ImapOnlineCopyState;
00051 
00052 [scriptable, uuid(5f7484b0-68b4-11d3-a53e-0060b0fc04b7)]
00053 interface ImapOnlineCopyStateType
00054 {
00055    const long kInProgress = 0;
00056    const long kSuccessfulCopy = 1;
00057    const long kSuccessfulMove = 2;
00058    const long kSuccessfulDelete = 3;
00059    const long kFailedDelete = 4;
00060    const long kReadyForAppendData = 5;
00061    const long kFailedAppend = 6;
00062    const long kInterruptedState = 7;
00063    const long kFailedCopy = 8;
00064    const long kFailedMove = 9;
00065 };
00066 
00067 [scriptable, uuid(3b2dd7e0-e72c-11d2-ab7b-00805f8ac968)]
00068 interface nsIImapMailFolderSink : nsISupports {
00069   attribute boolean folderNeedsACLListed;
00070   attribute boolean folderNeedsSubscribing;
00071   attribute boolean folderNeedsAdded;
00072   attribute unsigned long aclFlags;
00073   attribute long uidValidity;
00078   attribute boolean folderQuotaCommandIssued;
00079 
00087   void setFolderQuotaData(in ACString aFolderQuotaRoot, in unsigned long aFolderQuotaUsedKB, 
00088                           in unsigned long aFolderQuotaMaxKB);
00089 
00090   readonly attribute boolean shouldDownloadAllHeaders;
00091   string GetOnlineDelimiter();
00092   void OnNewIdleMessages();
00093   // Tell mail master about the newly selected mailbox
00094   void UpdateImapMailboxInfo(in nsIImapProtocol aProtocol,
00095                                    in nsIMailboxSpec aSpec);
00096   void UpdateImapMailboxStatus(in nsIImapProtocol aProtocol,
00097                                      in nsIMailboxSpec aSpec);
00098   void parseMsgHdrs(in nsIImapProtocol aProtocol, in nsIImapHeaderXferInfo aHdrXferInfo);
00099   void AbortHeaderParseStream(in nsIImapProtocol aProtocol) ;
00100   
00101   void OnlineCopyCompleted(in nsIImapProtocol aProtocol, in ImapOnlineCopyState aCopyState);
00102   void StartMessage(in nsIMsgMailNewsUrl aUrl);
00103   void EndMessage(in nsIMsgMailNewsUrl aUrl, in nsMsgKey uidOfMessage);
00104 
00105   void NotifySearchHit(in nsIMsgMailNewsUrl aUrl, in string hitLine);
00106 
00107   void copyNextStreamMessage(in boolean copySucceeded, in nsISupports copyState);
00108   // these two hokey methods are needed so we can try to make sure the imap objects are released
00109   // on the UI thread. This in turn ensures that the objects the imap object holds on to
00110   // are only released / destroyed from the UI thread. This is used for urls and copy state objects now.
00111   void prepareToReleaseObject(in nsISupports aISupports);
00112   void releaseObject();
00113   void closeMockChannel(in nsIImapMockChannel aChannel);
00114   void setUrlState(in nsIImapProtocol aProtocol, in nsIMsgMailNewsUrl aUrl, in boolean isRunning, in nsresult status);
00115   void releaseUrlCacheEntry(in nsIMsgMailNewsUrl aUrl);
00116 
00117   void headerFetchCompleted(in nsIImapProtocol aProtocol);
00118   void setBiffStateAndUpdate(in long biffState);
00119   void progressStatus(in nsIImapProtocol aProtocol, in unsigned long aMsgId, in wstring extraInfo);
00120   void percentProgress(in nsIImapProtocol aProtocol, in wstring aMessage, 
00121                        in long aCurrentProgress, in long aMaxProgressProgressInfo);
00122 
00123   void clearFolderRights();
00124   void setCopyResponseUid(in string msgIdString,
00125                                 in nsIImapUrl aUrl);
00126   void setAppendMsgUid(in nsMsgKey newKey,
00127                              in nsIImapUrl aUrl);
00128   ACString getMessageId(in nsIImapUrl aUrl);
00129 };