gecko-dev/mailnews/imap/public/nsIImapUrl.h
1999-09-14 05:34:04 +00:00

190 lines
7.9 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsIImapUrl_h___
#define nsIImapUrl_h___
#include "nscore.h"
#include "MailNewsTypes.h"
#include "nsIMsgMailNewsUrl.h"
#include "nsISupports.h"
#include "nsIFileSpec.h"
/* include all of our event sink interfaces */
#include "nsIImapLog.h"
#include "nsIImapMailFolderSink.h"
#include "nsIImapMessageSink.h"
#include "nsIImapExtensionSink.h"
#include "nsIImapMiscellaneousSink.h"
#include "nsIImapServerSink.h"
class nsIImapMockChannel;
/* 21A89610-DC0D-11d2-806C-006008128C4E */
#define NS_IIMAPURL_IID \
{ 0x21a89610, 0xdc0d, 0x11d2, \
{ 0x80, 0x6c, 0x0, 0x60, 0x8, 0x12, 0x8c, 0x4e } }
#define IMAP_PORT 143
class nsIMsgIncomingServer;
class nsIImapUrl : public nsISupports
{
public:
static const nsIID& GetIID() {
static nsIID iid = NS_IIMAPURL_IID;
return iid;
}
// mscott - we have a basic set of imap url actions. These actions are nsImapActions.
// Certain actions require us to be in the authenticated state and others require us to
// be in the selected state. nsImapState is used to store the state the url needs to
// be in. You'll later see us refer to the imap url state in the imap protocol when we
// are processing the current url. Don't confuse nsImapState with the generic url state
// used to keep track of whether the url is running or not...
typedef enum {
nsImapAuthenticatedState = 0,
nsImapSelectedState
} nsImapState;
typedef enum {
nsImapActionSendText = 0, // a state used for testing purposes to send raw url text straight to the server....
// nsImapAuthenticatedStateUrl urls
// since the following url actions require us to be in the authenticated
// state, the high bit is left blank....
nsImapTest = 0x00000001,
nsImapCreateFolder = 0x00000005,
nsImapDeleteFolder = 0x00000006,
nsImapRenameFolder = 0x00000007,
nsImapMoveFolderHierarchy = 0x00000008,
nsImapLsubFolders = 0x00000009,
nsImapGetMailAccountUrl = 0x0000000A,
nsImapDiscoverChildrenUrl = 0x0000000B,
nsImapDiscoverLevelChildrenUrl = 0x0000000C,
nsImapDiscoverAllBoxesUrl = 0x0000000D,
nsImapDiscoverAllAndSubscribedBoxesUrl = 0x0000000E,
nsImapAppendMsgFromFile = 0x0000000F,
nsImapSubscribe = 0x00000010,
nsImapUnsubscribe = 0x00000011,
nsImapRefreshACL = 0x00000012,
nsImapRefreshAllACLs = 0x00000013,
nsImapListFolder = 0x00000014,
nsImapUpgradeToSubscription = 0x00000015,
nsImapFolderStatus = 0x00000016,
nsImapRefreshFolderUrls = 0x00000017,
// it's okay to add more imap actions that require us to
// be in the authenticated state here without renumbering
// the imap selected state url actions. just make sure you don't
// set the high bit...
// nsImapSelectedState urls. Note, the high bit is always set for
// imap actions which require us to be in the selected state
nsImapSelectFolder = 0x10000002,
nsImapLiteSelectFolder = 0x10000003,
nsImapExpungeFolder = 0x10000004,
nsImapMsgFetch = 0x10000018,
nsImapMsgHeader = 0x10000019,
nsImapSearch = 0x1000001A,
nsImapDeleteMsg = 0x1000001B,
nsImapDeleteAllMsgs = 0x1000001C,
nsImapAddMsgFlags = 0x1000001D,
nsImapSubtractMsgFlags = 0x1000001E,
nsImapSetMsgFlags = 0x1000001F,
nsImapOnlineCopy = 0x10000020,
nsImapOnlineMove = 0x10000021,
nsImapOnlineToOfflineCopy = 0x10000022,
nsImapOnlineToOfflineMove = 0x10000023,
nsImapOfflineToOnlineCopy = 0x10000024,
nsImapOfflineToOnlineMove = 0x10000025,
nsImapBiff = 0x10000026,
nsImapSelectNoopFolder = 0x10000027,
nsImapAppendDraftFromFile = 0x10000028,
nsImapUidExpunge = 0x10000029,
nsImapSaveMessageToDisk = 0x10000030
} nsImapAction;
// Initialization method used to initialize the url...right now
// we only need the user name....we may need more info in the future
NS_IMETHOD Initialize(const char * aUserName) = 0;
///////////////////////////////////////////////////////////////////////////////
// Getters and Setters for the imap specific event sinks to bind to to your url
///////////////////////////////////////////////////////////////////////////////
NS_IMETHOD GetImapLog(nsIImapLog ** aImapLog) = 0;
NS_IMETHOD SetImapLog(nsIImapLog * aImapLog) = 0;
NS_IMETHOD GetImapMailFolderSink(nsIImapMailFolderSink** aImapMailFolderSink) = 0;
NS_IMETHOD SetImapMailFolderSink(nsIImapMailFolderSink* aImapMailFolderSink) = 0;
NS_IMETHOD GetImapMessageSink(nsIImapMessageSink** aImapMessageSink) = 0;
NS_IMETHOD SetImapMessageSink(nsIImapMessageSink* aImapMessageSink) = 0;
NS_IMETHOD GetImapExtensionSink(nsIImapExtensionSink** aImapExtensionSink) = 0;
NS_IMETHOD SetImapExtensionSink(nsIImapExtensionSink* aImapExtensionSink) = 0;
NS_IMETHOD GetImapMiscellaneousSink(nsIImapMiscellaneousSink** aImapMiscellaneousSink) = 0;
NS_IMETHOD SetImapMiscellaneousSink(nsIImapMiscellaneousSink* aImapMiscellaneousSink) = 0;
NS_IMETHOD SetImapServerSink(nsIImapServerSink *aImapServerSink) = 0;
NS_IMETHOD GetImapServerSink(nsIImapServerSink **aImapServerSink) = 0;
///////////////////////////////////////////////////////////////////////////////
// Getters and Setters for the imap url state
///////////////////////////////////////////////////////////////////////////////
NS_IMETHOD GetImapAction(nsImapAction * aImapAction) = 0;
NS_IMETHOD SetImapAction(nsImapAction aImapAction) = 0;
NS_IMETHOD GetRequiredImapState(nsImapState * aImapUrlState) = 0;
NS_IMETHOD GetImapPartToFetch(char **resultPart) = 0;
NS_IMETHOD AllocateCanonicalPath(const char *serverPath, char onlineDelimiter, char **allocatedPath ) = 0;
NS_IMETHOD AllocateServerPath(const char * aCanonicalPath, char aOnlineDelimiter, char ** aAllocatedPath) = 0;
NS_IMETHOD CreateServerSourceFolderPathString(char **result) = 0;
NS_IMETHOD CreateCanonicalSourceFolderPathString(char **result) = 0;
NS_IMETHOD CreateServerDestinationFolderPathString(char **result) = 0;
NS_IMETHOD AddOnlineDirectoryIfNecessary(const char *onlineMailboxName, char ** directory) = 0;
NS_IMETHOD CreateSearchCriteriaString(nsCString *aResult) = 0;
NS_IMETHOD CreateListOfMessageIdsString(nsCString *result) = 0;
NS_IMETHOD MessageIdsAreUids(PRBool *result) = 0;
NS_IMETHOD GetMsgFlags(imapMessageFlagsType *result) = 0; // kAddMsgFlags or kSubtractMsgFlags only
NS_IMETHOD GetChildDiscoveryDepth(PRInt32* discoveryDepth) = 0;
NS_IMETHOD GetOnlineSubDirSeparator(char* separator) = 0;
NS_IMETHOD SetOnlineSubDirSeparator(char onlineDirSeparator) = 0;
NS_IMETHOD SetAllowContentChange(PRBool allowContentChange) = 0;
NS_IMETHOD GetAllowContentChange(PRBool *results) = 0;
NS_IMETHOD SetCopyState(nsISupports* copyState) = 0;
NS_IMETHOD GetCopyState(nsISupports** copyState) = 0;
NS_IMETHOD SetMsgFileSpec(nsIFileSpec* aFileSpec) = 0;
NS_IMETHOD GetMsgFileSpec(nsIFileSpec** aFileSpec) = 0;
NS_IMETHOD GetMockChannel(nsIImapMockChannel ** aChannel) = 0;
NS_IMETHOD SetMockChannel(nsIImapMockChannel * aChannel) = 0;
};
#endif /* nsIImapUrl_h___ */