Back to index

lightning-sunbird  0.9+nobinonly
nsMailboxUrl.h
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) 1998
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *
00024  * Alternatively, the contents of this file may be used under the terms of
00025  * either of the GNU General Public License Version 2 or later (the "GPL"),
00026  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00027  * in which case the provisions of the GPL or the LGPL are applicable instead
00028  * of those above. If you wish to allow use of your version of this file only
00029  * under the terms of either the GPL or the LGPL, and not to allow others to
00030  * use your version of this file under the terms of the MPL, indicate your
00031  * decision by deleting the provisions above and replace them with the notice
00032  * and other provisions required by the GPL or the LGPL. If you do not delete
00033  * the provisions above, a recipient may use your version of this file under
00034  * the terms of any one of the MPL, the GPL or the LGPL.
00035  *
00036  * ***** END LICENSE BLOCK ***** */
00037 
00038 #ifndef nsMailboxUrl_h__
00039 #define nsMailboxUrl_h__
00040 
00041 #include "nsIMailboxUrl.h"
00042 #include "nsMsgMailNewsUrl.h"
00043 #include "nsFileSpec.h"
00044 #include "nsIFileSpec.h"
00045 #include "nsCOMPtr.h"
00046 #include "nsXPIDLString.h"
00047 #include "nsMsgKeyArray.h"
00048 #include "nsISupportsObsolete.h"
00049 
00050 class nsMailboxUrl : public nsIMailboxUrl, public nsMsgMailNewsUrl, public nsIMsgMessageUrl, public nsIMsgI18NUrl
00051 {
00052 public:
00053        // nsIURI over-ride...
00054        NS_IMETHOD SetSpec(const nsACString &aSpec);
00055     NS_IMETHOD SetQuery(const nsACString &aQuery);
00056 
00057        // from nsIMailboxUrl:
00058        NS_IMETHOD SetMailboxParser(nsIStreamListener * aConsumer);
00059        NS_IMETHOD GetMailboxParser(nsIStreamListener ** aConsumer);
00060        NS_IMETHOD SetMailboxCopyHandler(nsIStreamListener *  aConsumer);
00061        NS_IMETHOD GetMailboxCopyHandler(nsIStreamListener ** aConsumer);
00062        
00063        NS_IMETHOD GetFileSpec(nsFileSpec ** aFilePath);
00064        NS_IMETHOD GetMessageKey(nsMsgKey* aMessageKey);
00065   NS_IMETHOD GetMessageSize(PRUint32 *aMessageSize);
00066        NS_IMETHOD SetMessageSize(PRUint32 aMessageSize);
00067        NS_IMPL_CLASS_GETSET(MailboxAction, nsMailboxAction, m_mailboxAction);
00068        NS_IMETHOD IsUrlType(PRUint32 type, PRBool *isType);
00069   NS_IMETHOD SetMoveCopyMsgKeys(nsMsgKey *keysToFlag, PRInt32 numKeys);
00070   NS_IMETHOD GetMoveCopyMsgHdrForIndex(PRUint32 msgIndex, nsIMsgDBHdr **msgHdr);
00071   NS_IMETHOD GetNumMoveCopyMsgs(PRUint32 *numMsgs);
00072        NS_IMPL_CLASS_GETSET(CurMoveCopyMsgIndex, PRUint32, m_curMsgIndex);
00073 
00074   NS_IMETHOD GetFolder(nsIMsgFolder **msgFolder);
00075 
00076   // nsMailboxUrl
00077   nsMailboxUrl();
00078   virtual ~nsMailboxUrl();
00079   NS_DECL_NSIMSGMESSAGEURL
00080   NS_DECL_ISUPPORTS_INHERITED
00081   NS_DECL_NSIMSGI18NURL
00082 
00083 protected:
00084        // protocol specific code to parse a url...
00085   virtual nsresult ParseUrl();
00086        virtual const char * GetUserName() { return nsnull;}
00087   nsresult GetMsgHdrForKey(nsMsgKey  msgKey, nsIMsgDBHdr ** aMsgHdr);
00088 
00089        // mailboxurl specific state
00090        nsCOMPtr<nsIStreamListener> m_mailboxParser;
00091        nsCOMPtr<nsIStreamListener> m_mailboxCopyHandler;
00092 
00093        nsMailboxAction m_mailboxAction; // the action this url represents...parse mailbox, display messages, etc.
00094        nsFileSpec    *m_filePath; 
00095        char          *m_messageID;
00096        PRUint32      m_messageSize;
00097        nsMsgKey      m_messageKey;
00098        nsXPIDLCString m_file;
00099 
00100        // used by save message to disk
00101        nsCOMPtr<nsIFileSpec> m_messageFileSpec;
00102   PRBool                m_addDummyEnvelope;
00103   PRBool                m_canonicalLineEnding;
00104        nsresult ParseSearchPart();
00105 
00106   // for multiple msg move/copy
00107   nsMsgKeyArray m_keys;
00108   PRInt32 m_curMsgIndex;
00109 
00110   // truncated message support
00111   nsXPIDLCString m_originalSpec;  
00112   nsCString mURI; // the RDF URI associated with this url.
00113   nsCString mCharsetOverride; // used by nsIMsgI18NUrl...
00114 };
00115 
00116 #endif // nsMailboxUrl_h__