1998-06-22 22:39:40 +00:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
|
|
*
|
1999-11-06 03:43:54 +00:00
|
|
|
* The contents of this file are subject to the Netscape 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/NPL/
|
1998-06-22 22:39:40 +00:00
|
|
|
*
|
1999-11-06 03:43:54 +00:00
|
|
|
* 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.
|
1998-06-22 22:39:40 +00:00
|
|
|
*
|
1999-11-06 03:43:54 +00:00
|
|
|
* The Original Code is mozilla.org code.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is Netscape
|
1998-06-22 22:39:40 +00:00
|
|
|
* Communications Corporation. Portions created by Netscape are
|
1999-11-06 03:43:54 +00:00
|
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
|
|
* Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
1998-06-22 22:39:40 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _IMAPHOST_H
|
|
|
|
#define _IMAPHOST_H
|
|
|
|
|
|
|
|
#include "msghost.h"
|
|
|
|
#include "ptrarray.h"
|
|
|
|
#include "imap.h"
|
|
|
|
class MSG_IMAPFolderInfoContainer;
|
|
|
|
|
|
|
|
class MSG_IMAPHost : public MSG_Host {
|
|
|
|
friend class MSG_IMAPHostTable;
|
|
|
|
public:
|
|
|
|
MSG_IMAPHost(const char* name,
|
|
|
|
XP_Bool secure,
|
|
|
|
const char *userName,
|
|
|
|
XP_Bool checkNewMail,
|
|
|
|
int biffInterval,
|
|
|
|
XP_Bool rememberPassword,
|
|
|
|
XP_Bool usingSubscription,
|
|
|
|
XP_Bool overrideNamespace,
|
|
|
|
const char *personalOnlineDir,
|
|
|
|
const char *publicOnlineDir,
|
|
|
|
const char *otherUsersOnlineDir);
|
|
|
|
virtual ~MSG_IMAPHost();
|
|
|
|
|
|
|
|
virtual XP_Bool IsIMAP () { return TRUE; }
|
|
|
|
virtual MSG_IMAPHost *GetIMAPHost() { return this; }
|
|
|
|
|
|
|
|
// Returns a fully descriptive name for this IMAP host, possibly including the
|
|
|
|
// ":<port>" and also possibly a trailing (and localized) " (secure)"
|
|
|
|
// Well, in theory, anyway.
|
|
|
|
virtual const char* getFullUIName() { return GetHostName(); }
|
|
|
|
|
|
|
|
// Returns a newly-allocated pretty name for this host, only if set in the prefs.
|
|
|
|
// Returns NULL otherwise
|
|
|
|
virtual char *GetPrettyName();
|
|
|
|
virtual int32 getPort();
|
|
|
|
|
|
|
|
virtual int RemoveHost();
|
|
|
|
|
|
|
|
static MSG_IMAPHost *AddHostFromPrefs(const char *hostName, MSG_Master *mailMaster);
|
|
|
|
static void UpgradeDefaultServerPrefs(MSG_Master *mailMaster);
|
|
|
|
void WriteHostPrefs();
|
|
|
|
void InitFromPrefs();
|
|
|
|
|
|
|
|
// GetTrashFolderForHost() returns the MSG_FolderInfo* of the Trash
|
|
|
|
// folder on the host if it is using the Trash delete model; otherwise,
|
|
|
|
// returns NULL.
|
|
|
|
MSG_FolderInfo *GetTrashFolderForHost();
|
|
|
|
|
|
|
|
virtual XP_Bool isSecure() {return m_secure;}
|
|
|
|
const char *GetUserName() {return m_userName;}
|
|
|
|
void SetHostInfo(MSG_IMAPFolderInfoContainer *folder) {m_hostinfo = folder;}
|
|
|
|
MSG_IMAPFolderInfoContainer *GetHostFolderInfo() {return m_hostinfo;}
|
|
|
|
const char *GetHostName() { return m_name;}
|
|
|
|
const char *GetUserPassword() ;
|
|
|
|
void SetUserPassword(const char *password) ;
|
|
|
|
const char *GetLocalDirectory() {return m_imapLocalDirectory;}
|
|
|
|
XP_Bool GetRememberPassword() {return m_rememberPassword;}
|
|
|
|
XP_Bool GetIsHostUsingSubscription() {return m_usingSubscription;}
|
|
|
|
XP_Bool SetIsHostUsingSubscription(XP_Bool usingSubscription);
|
|
|
|
void SetAdminURL(const char *adminURL);
|
|
|
|
const char *GetAdminURL() {return m_adminURL;}
|
|
|
|
void SetManageFiltersURL(const char *manageFiltersURL);
|
|
|
|
const char *GetManageFiltersURL() {return m_manageFiltersURL;}
|
|
|
|
void SetManageListsURL(const char *manageListsURL);
|
|
|
|
const char *GetManageListsURL() {return m_manageListsURL;}
|
|
|
|
static void RefreshUrlCallback (URL_Struct *URL_s, int status, MWContext *window_id);
|
|
|
|
XP_Bool RunAdminURL(MWContext *context, MSG_FolderInfo *folder, MSG_AdminURLType type);
|
|
|
|
XP_Bool HaveAdminURL(MSG_AdminURLType type);
|
|
|
|
void SetHostNeedsFolderUpdate(XP_Bool needsUpdate);
|
|
|
|
XP_Bool GetOverrideNamespaces() { return m_overrideNamespaces; }
|
|
|
|
void SetDeleteIsMoveToTrash(XP_Bool deleteIsMoveToTrash);
|
|
|
|
XP_Bool GetDeleteIsMoveToTrash() {return (m_imapDeleteModel == MSG_IMAPDeleteIsMoveToTrash);}
|
|
|
|
XP_Bool GetCheckNewMail() {return m_checkNewMail;}
|
|
|
|
MSG_IMAPDeleteModel GetIMAPDeleteModel() {return m_imapDeleteModel;}
|
|
|
|
void SetIMAPDeleteModel(MSG_IMAPDeleteModel deleteModel);
|
|
|
|
|
|
|
|
XP_Bool GetExpungeInboxOnExit() {return m_expungeInboxOnExit;}
|
|
|
|
XP_Bool GetEmptyTrashOnExit() { return m_emptyTrashOnExit;}
|
|
|
|
int32 GetEmptyTrashThreshhold() {return m_emptyTrashThreshhold;}
|
|
|
|
void SetEmptyTrashOnExit(XP_Bool emptyTrash) {m_emptyTrashOnExit = emptyTrash;}
|
|
|
|
void SetExpungeInboxOnExit(XP_Bool expungeInbox) {m_expungeInboxOnExit = expungeInbox;}
|
|
|
|
void SetEmptyTrashThreshhold(int32 threshhold) {m_emptyTrashThreshhold = threshhold;}
|
|
|
|
XP_Bool GetDefaultOfflineDownload() {return m_folderOfflineDefault;}
|
|
|
|
void SetDefaultOfflineDownload(XP_Bool defaultOffline) {m_folderOfflineDefault = defaultOffline;}
|
|
|
|
|
|
|
|
//const char *GetPersonalNamespacePrefix() { return m_personalNamespacePrefix; }
|
|
|
|
void SetNamespacePrefix(EIMAPNamespaceType type, const char *prefix);
|
|
|
|
const char *GetNamespacePrefixForFolder(const char *folder);
|
|
|
|
EIMAPNamespaceType GetNamespaceTypeForFolder(const char *folder);
|
|
|
|
const char *GetDefaultNamespacePrefixOfType(EIMAPNamespaceType type);
|
|
|
|
const char *GetRootNamespacePrefix();
|
|
|
|
XP_Bool GetShouldStripThisNamespacePrefix(const char *prefix);
|
|
|
|
XP_Bool GetAreAnyNamespacesRoot();
|
|
|
|
XP_Bool GetHostSupportsSharing();
|
|
|
|
int32 GetBiffInterval();
|
|
|
|
uint32 GetCapabilityForHost();
|
|
|
|
void SetWritingOutPrefs(XP_Bool w) { m_writingOutPrefs = w; }
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
int FolderMatchesNamespace(const char *folder, const char *nsprefix);
|
|
|
|
char *GetPersonalNamespacePrefixPref() { return m_personalNamespacePrefix; }
|
|
|
|
char *GetPublicNamespacePrefixPref() { return m_publicNamespacePrefixes; }
|
|
|
|
char *GetOtherUsersNamespacePrefixPref() { return m_otherUsersNamespacePrefixes; }
|
|
|
|
void WriteStrPref(const char *prefName, const char *strValue);
|
|
|
|
void WriteBoolPref(const char *prefName, XP_Bool boolValue);
|
|
|
|
void WriteIntPref(const char *prefName, int32 intValue);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
char * m_name;
|
|
|
|
XP_Bool m_secure;
|
|
|
|
XP_Bool m_usingSubscription;
|
|
|
|
XP_Bool m_overrideNamespaces;
|
|
|
|
XP_Bool m_checkNewMail;
|
|
|
|
uint32 m_capability;
|
|
|
|
|
|
|
|
char *m_personalNamespacePrefix;
|
|
|
|
char *m_publicNamespacePrefixes;
|
|
|
|
char *m_otherUsersNamespacePrefixes;
|
|
|
|
char *m_rootNamespacePrefix;
|
|
|
|
char *m_userName;
|
|
|
|
char *m_userPassword;
|
|
|
|
char *m_imapLocalDirectory;
|
|
|
|
char *m_defaultPersonalNamespacePrefix;
|
|
|
|
char *m_adminURL;
|
|
|
|
char *m_manageListsURL;
|
|
|
|
char *m_manageFiltersURL;
|
|
|
|
int32 m_biffInterval;
|
|
|
|
MSG_IMAPDeleteModel m_imapDeleteModel;
|
|
|
|
XP_Bool m_rememberPassword;
|
|
|
|
XP_Bool m_hasExtendedAdminURLs;
|
|
|
|
XP_Bool m_deleteIsMoveToTrash;
|
|
|
|
XP_Bool m_expungeInboxOnExit;
|
|
|
|
XP_Bool m_emptyTrashOnExit;
|
|
|
|
int32 m_emptyTrashThreshhold;
|
|
|
|
XP_Bool m_writingOutPrefs;
|
|
|
|
MSG_IMAPFolderInfoContainer* m_hostinfo; // Object representing entire imap host in tree
|
|
|
|
XP_Bool m_passwordWritten;
|
|
|
|
XP_Bool m_folderOfflineDefault;
|
|
|
|
};
|
|
|
|
|
|
|
|
class MSG_IMAPHostTable : public XPPtrArray{
|
|
|
|
public:
|
|
|
|
MSG_IMAPHostTable(MSG_Master* master);
|
|
|
|
~MSG_IMAPHostTable();
|
|
|
|
|
|
|
|
MSG_IMAPHost* GetHost(int i)
|
|
|
|
{
|
|
|
|
return (MSG_IMAPHost *) GetAt(i);
|
|
|
|
}
|
|
|
|
|
|
|
|
void UpdatePrefs(const char *prefName);
|
|
|
|
MSG_IMAPHost* GetDefaultHost(XP_Bool createIfMissing = FALSE);
|
|
|
|
|
|
|
|
int32 GetHostList(MSG_IMAPHost** result, int32 resultsize);
|
|
|
|
|
|
|
|
MSG_IMAPHost *AddIMAPHost(const char* name, XP_Bool secure,
|
|
|
|
const char *userName,
|
|
|
|
XP_Bool checkNewMail,
|
|
|
|
int biffInterval,
|
|
|
|
XP_Bool rememberPassword,
|
|
|
|
XP_Bool usingSubscription,
|
|
|
|
XP_Bool overrideNamespace,
|
|
|
|
const char *personalOnlineDir,
|
|
|
|
const char *publicOnlineDir,
|
|
|
|
const char *otherUsersOnlineDir,
|
|
|
|
XP_Bool writePrefs);
|
|
|
|
|
|
|
|
MSG_IMAPHost *FindIMAPHost (MSG_FolderInfo *container);
|
|
|
|
MSG_IMAPHost *FindIMAPHost (const char* name);
|
|
|
|
|
|
|
|
int DeleteIMAPHost(MSG_IMAPHost* host);
|
|
|
|
void ReorderIMAPHost(MSG_IMAPHost *host, MSG_IMAPHost *afterHost /* NULL = pos 0 */);
|
|
|
|
void WriteServerList();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
MSG_Master* m_master;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|