gecko-dev/lib/libmsg/imaphost.h

205 строки
7.7 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.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/
*
* 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 Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
#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