зеркало из https://github.com/mozilla/gecko-dev.git
536 строки
20 KiB
C++
536 строки
20 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 _MsgPane_H_
|
|
#define _MsgPane_H_
|
|
|
|
#include "msgprnot.h"
|
|
#include "chngntfy.h"
|
|
#include "idarray.h"
|
|
#include "errcode.h"
|
|
#include "msgundmg.h"
|
|
#include "msg.h"
|
|
#include "abcom.h" // required for adding sender or recipients to address books.
|
|
|
|
class MSG_Master;
|
|
class MessageDBView;
|
|
class MSG_FolderInfo;
|
|
class MSG_NewsHost;
|
|
class ParseMailboxState;
|
|
class msg_Background;
|
|
class OfflineImapGoOnlineState;
|
|
class MSG_FolderInfoMail;
|
|
class MSG_PostDeliveryActionInfo;
|
|
|
|
struct tImapFilterClosure;
|
|
|
|
struct msg_incorporate_state;
|
|
struct MessageHdrStruct;
|
|
|
|
|
|
|
|
class PaneListener : public ChangeListener
|
|
{
|
|
public:
|
|
PaneListener(MSG_Pane *pPane);
|
|
virtual ~PaneListener();
|
|
virtual void OnViewChange(MSG_ViewIndex startIndex, int32 numChanged,
|
|
MSG_NOTIFY_CODE changeType, ChangeListener *instigator);
|
|
virtual void OnViewStartChange(MSG_ViewIndex startIndex, int32 numChanged,
|
|
MSG_NOTIFY_CODE changeType, ChangeListener *instigator);
|
|
virtual void OnViewEndChange(MSG_ViewIndex startIndex, int32 numChanged,
|
|
MSG_NOTIFY_CODE changeType, ChangeListener *instigator);
|
|
virtual void OnKeyChange(MessageKey keyChanged, int32 flags,
|
|
ChangeListener * instigator);
|
|
virtual void OnAnnouncerGoingAway (ChangeAnnouncer *instigator);
|
|
virtual void OnAnnouncerChangingView(ChangeAnnouncer * /* instigator */, MessageDBView * /* view */) ;
|
|
virtual void StartKeysChanging();
|
|
virtual void EndKeysChanging();
|
|
|
|
protected:
|
|
MSG_Pane *m_pPane;
|
|
XP_Bool m_keysChanging; // are keys changing?
|
|
XP_Bool m_keyChanged; // has a key changed since StartKeysChanging called?
|
|
};
|
|
|
|
// If a MSG_Pane has its url chain ptr set to a non-null value,
|
|
// it calls the GetNextURL method whenever it finishes a url that is chainable.
|
|
// These include delivering queued mail, get new mail, and retrieving
|
|
// messages for offline use, oddly enough - the three kinds of urls I need to queue.
|
|
// Sadly, neither the msg_Background or MSG_UrlQueue do what I want,
|
|
// because I need to chain network urls that have their own exit functions
|
|
// and indeed chain urls themselves.
|
|
class MSG_PaneURLChain
|
|
{
|
|
public:
|
|
MSG_PaneURLChain(MSG_Pane *pane);
|
|
virtual ~MSG_PaneURLChain();
|
|
virtual int GetNextURL(); // return 0 to stop chaining.
|
|
protected:
|
|
MSG_Pane *m_pane;
|
|
};
|
|
|
|
class MSG_Pane : public MSG_PrefsNotify {
|
|
public:
|
|
|
|
// hack..
|
|
// Find a pane of the given type that matches the given context. If none,
|
|
// find some other pane of the given type (if !contextMustMatch).
|
|
static MSG_Pane* FindPane(MWContext* context,
|
|
MSG_PaneType type = MSG_ANYPANE,
|
|
XP_Bool contextMustMatch = FALSE);
|
|
|
|
static XP_Bool PaneInMasterList(MSG_Pane *pane);
|
|
|
|
|
|
static MSG_PaneType PaneTypeForURL(const char *url);
|
|
XP_Bool NavigationGoesToNextFolder(MSG_MotionType motionType);
|
|
MSG_Pane(MWContext* context, MSG_Master* master);
|
|
virtual ~MSG_Pane();
|
|
|
|
void SetFEData(void*);
|
|
void* GetFEData();
|
|
|
|
virtual XP_Bool IsLinePane();
|
|
virtual MSG_PaneType GetPaneType() ;
|
|
virtual void NotifyPrefsChange(NotifyCode /*code*/) ;
|
|
|
|
virtual MSG_Pane* GetParentPane();
|
|
|
|
MSG_Pane* GetNextPane() {return m_nextPane;}
|
|
|
|
MSG_Pane *GetFirstPaneForContext(MWContext *context);
|
|
|
|
MSG_Pane *GetNextPaneForContext(MSG_Pane *pane, MWContext *context);
|
|
|
|
virtual MWContext* GetContext();
|
|
MSG_Prefs* GetPrefs();
|
|
|
|
MSG_Master* GetMaster() {return m_master;}
|
|
|
|
// these are here mostly to allow thread panes and message panes
|
|
// to handle the same commands - if we had a common base class
|
|
// for these (other than MSG_Pane), we could put these there.
|
|
virtual MessageDBView *GetMsgView();
|
|
virtual void SetMsgView(MessageDBView *);
|
|
virtual void SwitchView(MessageDBView *) ;
|
|
virtual MSG_FolderInfo *GetFolder() ;
|
|
virtual void SetFolder(MSG_FolderInfo *info);
|
|
virtual void StartingUpdate(MSG_NOTIFY_CODE /*code*/, MSG_ViewIndex /*where*/,
|
|
int32 /*num*/);
|
|
virtual void EndingUpdate(MSG_NOTIFY_CODE /*code*/, MSG_ViewIndex /*where*/,
|
|
int32 /*num*/);
|
|
|
|
// do not use this function unless you really know what you are doing.
|
|
// Currently, it is used when a url queue for loading an imap folder
|
|
// is interrupted
|
|
virtual void CrushUpdateLevelToZero();
|
|
|
|
virtual void OnFolderChanged(MSG_FolderInfo *folder);
|
|
virtual void OnFolderDeleted (MSG_FolderInfo *folder);
|
|
virtual void OnFolderAdded (MSG_FolderInfo *folder, MSG_Pane *instigator);
|
|
virtual void OnFolderKeysAreInvalid (MSG_FolderInfo *folder);
|
|
|
|
/* New address book requires a destination address book because it supports multiple ABs */
|
|
virtual MsgERR AddToAddressBook(MSG_CommandType command, MSG_ViewIndex*indices, int32 numIndices, AB_ContainerInfo * destAB);
|
|
|
|
virtual MsgERR DoCommand(MSG_CommandType command,
|
|
MSG_ViewIndex* indices, int32 numindices);
|
|
virtual MsgERR GetMailForAFolder(MSG_FolderInfo *folder);
|
|
|
|
virtual MsgERR GetCommandStatus(MSG_CommandType command,
|
|
const MSG_ViewIndex* indices, int32 numindices,
|
|
XP_Bool *selectable_p,
|
|
MSG_COMMAND_CHECK_STATE *selected_p,
|
|
const char **display_string,
|
|
XP_Bool *plural_p);
|
|
|
|
virtual MsgERR SetToggleStatus(MSG_CommandType command,
|
|
MSG_ViewIndex* indices, int32 numindices,
|
|
MSG_COMMAND_CHECK_STATE value);
|
|
|
|
virtual MSG_COMMAND_CHECK_STATE GetToggleStatus(MSG_CommandType command,
|
|
MSG_ViewIndex* indices,
|
|
int32 numindices);
|
|
|
|
virtual MsgERR GetNavigateStatus(MSG_MotionType motion, MSG_ViewIndex index,
|
|
XP_Bool *selectable_p,
|
|
const char **display_string);
|
|
|
|
MSG_FolderInfo* FindFolderOfType(int type);
|
|
|
|
|
|
MSG_FolderInfo* FindMailFolder(const char* pathname,
|
|
XP_Bool createIfMissing);
|
|
|
|
virtual MsgERR MarkReadByDate (time_t startDate, time_t endDate);
|
|
|
|
virtual XP_Bool SetMessagePriority(MessageKey key, MSG_PRIORITY priority);
|
|
|
|
MsgERR ComposeNewMessage();
|
|
//ComposeMessageToMany calls ComposeNewMessage if nothing was selected
|
|
//otherwise it builds a string containing selected groups to post to.
|
|
MsgERR ComposeMessageToMany(MSG_ViewIndex* indices, int32 numIndices);
|
|
|
|
virtual MsgERR ComposeNewsMessage(MSG_FolderInfo *folder);
|
|
char* CreateForwardSubject(MessageHdrStruct* header);
|
|
|
|
virtual void InterruptContext(XP_Bool safetoo);
|
|
|
|
virtual int BeginOpenFolderSock(const char *folder_name,
|
|
const char *message_id, int32 msgnum,
|
|
void **folder_ptr);
|
|
virtual int FinishOpenFolderSock(const char* folder_name,
|
|
const char* message_id,
|
|
int32 msgnum, void** folder_ptr);
|
|
virtual void CloseFolderSock(const char* folder_name, const char* message_id,
|
|
int32 msgnum, void* folder_ptr);
|
|
|
|
virtual int OpenMessageSock(const char *folder_name, const char *msg_id,
|
|
int32 msgnum, void *folder_ptr, void **message_ptr,
|
|
int32 *content_length);
|
|
virtual int ReadMessageSock(const char* folder_name, void* message_ptr,
|
|
const char* message_id, int32 msgnum, char* buffer,
|
|
int32 buffer_size);
|
|
virtual void CloseMessageSock(const char* folder_name, const char* message_id,
|
|
int32 msgnum, void* message_ptr);
|
|
|
|
virtual MsgERR GetKeyFromMessageId (const char *message_id, MessageKey *outId);
|
|
virtual int MarkMessageKeyRead(MessageKey key, const char* xref);
|
|
|
|
virtual MSG_ViewIndex GetThreadIndexOfMsg(MessageKey key);
|
|
|
|
virtual MsgERR ViewNavigate(MSG_MotionType /*motion*/,
|
|
MSG_ViewIndex /*startIndex*/,
|
|
MessageKey * /*resultKey*/, MSG_ViewIndex * /*resultIndex*/,
|
|
MSG_ViewIndex * /*pThreadIndex*/,
|
|
MSG_FolderInfo ** /*ppFolderInfo*/);
|
|
|
|
|
|
#ifdef XP_UNIX
|
|
void IncorporateFromFile(XP_File infid, void (*donefunc)(void*, XP_Bool),
|
|
void* doneclosure);
|
|
#endif
|
|
|
|
XP_Bool BeginMailDelivery();
|
|
void EndMailDelivery();
|
|
void* IncorporateBegin(FO_Present_Types format_out, char* pop3_uidl,
|
|
URL_Struct* url, uint32 flags);
|
|
MsgERR IncorporateWrite(void* closure, const char* block, int32 length);
|
|
MsgERR IncorporateComplete(void* closure);
|
|
MsgERR IncorporateAbort(void* closure, int status);
|
|
void ClearSenderAuthedFlag(void *closure);
|
|
MsgERR GetNewNewsMessages(MSG_Pane *parentPane, MSG_FolderInfo *folder, XP_Bool getOld = FALSE);
|
|
MsgERR GetNewMail(MSG_Pane *parentPane, MSG_FolderInfo *folder);
|
|
static void GetNewMailExit (URL_Struct *URL_s, int status, MWContext *window_id);
|
|
|
|
char *GetUIDL() {return m_incUidl;}
|
|
|
|
MsgERR UpdateNewsCounts(MSG_NewsHost* host);
|
|
|
|
virtual int GetURL (URL_Struct *url, XP_Bool isSafe);
|
|
// return a url_struct with a url that refers to this pane.
|
|
virtual URL_Struct * ConstructUrlForMessage(MessageKey key = MSG_MESSAGEKEYNONE);
|
|
static URL_Struct * ConstructUrl(MSG_FolderInfo *folder);
|
|
MsgERR TrashMessages (MSG_ViewIndex* indices, int32 numindices);
|
|
MsgERR DeleteMessages (MSG_FolderInfo *folder, MSG_ViewIndex* indices, int32 numindices);
|
|
|
|
static void CancelDone(URL_Struct *url, int status, MWContext *context);
|
|
int CancelMessage(MSG_ViewIndex index);
|
|
|
|
// Move/copy operations
|
|
|
|
// made these virtual for the search as view operations on the search pane.
|
|
virtual MsgERR MoveMessages (const MSG_ViewIndex *indices,
|
|
int32 numIndices,
|
|
MSG_FolderInfo *folder);
|
|
|
|
virtual MsgERR CopyMessages (const MSG_ViewIndex *indices,
|
|
int32 numIndices,
|
|
MSG_FolderInfo *folder,
|
|
XP_Bool deleteAfterCopy);
|
|
|
|
virtual MSG_DragEffect DragMessagesStatus (const MSG_ViewIndex *indices,
|
|
int32 numIndices,
|
|
MSG_FolderInfo *folder,
|
|
MSG_DragEffect request);
|
|
|
|
MsgERR CopyMessages (const MSG_ViewIndex *indices,
|
|
int32 numIndices,
|
|
const char *folderPath,
|
|
XP_Bool deleteAfterCopy);
|
|
|
|
MSG_DragEffect DragMessagesStatus (const MSG_ViewIndex *indices,
|
|
int32 numIndices,
|
|
const char *folderPath,
|
|
MSG_DragEffect request);
|
|
|
|
|
|
// moved from MSG_FolderPane; this enables compressing a folder
|
|
// in a compose pane in case we need to reclaim some disk space
|
|
// after we send/save a draft
|
|
MsgERR CompressAllFolders();
|
|
MsgERR EmptyTrash(MSG_FolderInfo *curFolder);
|
|
MsgERR EmptyImapTrash(MSG_IMAPHost *host);
|
|
|
|
// move some implementation from MSG_FolderPane. Compress the one
|
|
// specified mail folder whether it be imap or pop
|
|
MsgERR CompressOneMailFolder(MSG_FolderInfoMail *mailFolder);
|
|
|
|
int BeginCompressFolder(URL_Struct* url, const char* foldername,
|
|
void** closure);
|
|
int FinishCompressFolder(URL_Struct* url, const char* foldername,
|
|
void* closure);
|
|
int CloseCompressFolderSock(URL_Struct* url, void* closure);
|
|
|
|
// saves the corresponding keys in m_saveKeys.
|
|
int SaveIndicesAsKeys(MSG_ViewIndex* indices, int32 numindices);
|
|
|
|
virtual int32 GetNewsRCCount(MSG_NewsHost* host);
|
|
virtual char* GetNewsRCGroup(MSG_NewsHost* host);
|
|
virtual int DisplaySubscribedGroup(MSG_NewsHost* host,
|
|
const char *group,
|
|
int32 oldest_message,
|
|
int32 youngest_message,
|
|
int32 total_messages,
|
|
XP_Bool nowvisiting);
|
|
|
|
virtual int AddNewNewsGroup(MSG_NewsHost* host, const char* groupname,
|
|
int32 oldest, int32 youngest, const char *flag, XP_Bool bXactiveFlags);
|
|
|
|
MsgERR CheckForNew(MSG_NewsHost* host);
|
|
|
|
virtual UndoManager *GetUndoManager ();
|
|
virtual BacktrackManager *GetBacktrackManager();
|
|
|
|
MsgERR DeliverQueuedMessages();
|
|
int BeginDeliverQueued(URL_Struct* url, void** closure);
|
|
int FinishDeliverQueued(URL_Struct* url, void* closure);
|
|
int CloseDeliverQueuedSock(URL_Struct* url, void* closure);
|
|
static void PostDeliverQueuedExitFunc(URL_Struct *url, int status, MWContext *context);
|
|
|
|
// related to running the asynch imap filters in a pane
|
|
virtual void StoreImapFilterClosureData( tImapFilterClosure *closureData );
|
|
virtual void ClearImapFilterClosureData();
|
|
virtual tImapFilterClosure *GetImapFilterClosureData();
|
|
|
|
// set when loading an imap folder
|
|
MSG_IMAPFolderInfoMail *GetLoadingImapFolder() { return m_loadingImapFolder ; }
|
|
void SetLoadingImapFolder(MSG_IMAPFolderInfoMail *folder) { m_loadingImapFolder=folder ; }
|
|
|
|
// set when the current folder load is kicking off imap filters
|
|
void SetActiveImapFiltering(XP_Bool isFiltering) { m_ActiveImapFilters = isFiltering; }
|
|
XP_Bool GetActiveImapFiltering() { return m_ActiveImapFilters; }
|
|
|
|
|
|
void SetGoOnlineState(OfflineImapGoOnlineState *state) { m_goOnlineState = state; }
|
|
OfflineImapGoOnlineState *GetGoOnlineState() { return m_goOnlineState; }
|
|
|
|
// Removes this pane from the main pane list. This is so that calls to
|
|
// MSG_Master::FindPaneOfType() won't find this one (because, for example,
|
|
// we know we're about to delete this one.)
|
|
void UnregisterFromPaneList();
|
|
|
|
|
|
// These routines should be used only by the msg_Background class.
|
|
msg_Background* GetCurrentBackgroundJob() {return m_background;}
|
|
void SetCurrentBackgroundJob(msg_Background* b) {m_background = b;}
|
|
|
|
void ClearURLChain() {delete m_urlChain; m_urlChain = NULL;}
|
|
MSG_PaneURLChain *GetURLChain() {return m_urlChain;}
|
|
void SetURLChain(MSG_PaneURLChain *chain) {m_urlChain = chain;}
|
|
static void GetNextURLInChain_CB(URL_Struct* urlstruct, int status, MWContext* context);
|
|
void GetNextURLInChain();
|
|
|
|
// Open Message as Draft
|
|
MsgERR OpenMessageAsDraft(MSG_ViewIndex* indices, int32 numIndices,
|
|
XP_Bool bFwdInline = FALSE);
|
|
|
|
// News server admin stuff
|
|
XP_Bool ModerateNewsgroupStatus (MSG_FolderInfo *folder);
|
|
MsgERR ModerateNewsgroup (MSG_FolderInfo *folder);
|
|
XP_Bool NewNewsgroupStatus (MSG_FolderInfo *folder);
|
|
MsgERR NewNewsgroup (MSG_FolderInfo *folder, XP_Bool createCategory = FALSE);
|
|
static int CompareViewIndices (const void *v1, const void *v2);
|
|
MsgERR ApplyCommandToIndices(MSG_CommandType command, MSG_ViewIndex* indices, int32 numIndices);
|
|
void SetShowingProgress(XP_Bool showingProgress) {m_showingProgress = showingProgress;}
|
|
|
|
MsgERR ManageMailAccount(MSG_FolderInfo *folder);
|
|
static void ManageMailAccountExitFunc(URL_Struct *url,
|
|
int status,
|
|
MWContext *context);
|
|
|
|
MsgERR PreflightDeleteFolder (MSG_FolderInfo *folder, XP_Bool getUserConfirmation);
|
|
|
|
void SetNumberOfNewImapMailboxes(uint32 numberNew) { m_NumberOfNewImapMailboxes = numberNew; }
|
|
uint32 GetNumberOfNewImapMailboxes() { return m_NumberOfNewImapMailboxes; }
|
|
virtual PaneListener *GetListener();
|
|
MsgERR CloseView();
|
|
MsgERR ListThreads();
|
|
void GroupNotFound(MSG_NewsHost* host, const char *group, XP_Bool opening);
|
|
|
|
XP_Bool DisplayingRecipients ();
|
|
|
|
void SetPreImapFolderVerifyUrlExitFunction(Net_GetUrlExitFunc *func) { m_PreImapFolderVerifyUrlExitFunction = func; }
|
|
Net_GetUrlExitFunc *GetPreImapFolderVerifyUrlExitFunction() { return m_PreImapFolderVerifyUrlExitFunction; }
|
|
|
|
void SetRequestForReturnReceipt(XP_Bool isNeeded);
|
|
XP_Bool GetRequestForReturnReceipt();
|
|
|
|
void SetSendingMDNInProgress(XP_Bool inProgress);
|
|
XP_Bool GetSendingMDNInProgress();
|
|
|
|
MSG_PostDeliveryActionInfo *GetPostDeliveryActionInfo ();
|
|
void SetPostDeliveryActionInfo ( MSG_PostDeliveryActionInfo *actionInfo );
|
|
virtual void SetIMAPListInProgress(XP_Bool inProgress);
|
|
virtual XP_Bool IMAPListInProgress();
|
|
virtual void SetIMAPListMailboxExist(XP_Bool bExist);
|
|
virtual XP_Bool IMAPListMailboxExist();
|
|
|
|
static void PostLiteSelectExitFunc( URL_Struct *url, int status, MWContext *context);
|
|
static void PostDeleteIMAPOldDraftUID(URL_Struct* url_struct, int status, MWContext *context);
|
|
void DeleteIMAPOldDraftUID(MSG_PostDeliveryActionInfo *actionInfo, MSG_Pane *urlPane = NULL);
|
|
int GetNumstack() { return m_numstack; };
|
|
void AdoptProgressContext(MWContext *context);
|
|
|
|
char* MakeMailto(const char *to, const char *cc,
|
|
const char *newsgroups,
|
|
const char *subject, const char *references,
|
|
const char *attachment, const char *host_data,
|
|
XP_Bool xxx_p, XP_Bool sign_p);
|
|
|
|
/* used with the new address book....all panes must register a entry property sheet call back function if
|
|
they want the ability to add sender/all to the address book */
|
|
void SetShowPropSheetForEntryFunc(AB_ShowPropertySheetForEntryFunc * func) { m_entryPropSheetFunc = func; }
|
|
AB_ShowPropertySheetForEntryFunc * GetShowPropSheetForEntryFunc() { return m_entryPropSheetFunc;}
|
|
|
|
protected:
|
|
char* ComputeNewshostArg();
|
|
// GetNewMail helper routines
|
|
msg_incorporate_state *CreateIncorporateState ();
|
|
int OpenDestFolder(msg_incorporate_state* state);
|
|
int CloseDestFolder(msg_incorporate_state* state);
|
|
void ResolveIndices (MessageDBView *view, const MSG_ViewIndex *indices, int32 numIndices, IDArray*);
|
|
static void IncorporateShufflePartial_s(URL_Struct *url, int status,
|
|
MWContext *context);
|
|
virtual void IncorporateShufflePartial(URL_Struct *url, int status,
|
|
MWContext *context);
|
|
|
|
void ClearNewInOpenFolders(MSG_FolderInfo *folderOfGetNewMsgs);
|
|
ParseMailboxState *GetParseMailboxState(const char *folderName);
|
|
|
|
// Callback for FE_PromptForFileName
|
|
static void SaveMessagesAsCB(MWContext *context, char *file_name,
|
|
void *closure);
|
|
|
|
// callback function for showing a property sheet pane. Used by address book panes, message pane and thread pane...
|
|
AB_ShowPropertySheetForEntryFunc * m_entryPropSheetFunc;
|
|
|
|
static void UpdateNewsCountsDone_s(URL_Struct*, int status, MWContext*);
|
|
virtual void UpdateNewsCountsDone(int status);
|
|
|
|
// Whether newly discovered newsgroups should have the "new" bit set on
|
|
// them.
|
|
virtual XP_Bool AddGroupsAsNew();
|
|
|
|
static void CheckForNewDone_s(URL_Struct* url_struct, int status,
|
|
MWContext* context);
|
|
virtual void CheckForNewDone(URL_Struct* url_struct, int status,
|
|
MWContext* context);
|
|
|
|
virtual XP_Bool ShouldDeleteInBackground();
|
|
|
|
|
|
IDArray m_saveKeys; // this is used to save keys used for a
|
|
// pane command in a callback from FE_PromptForFileName.
|
|
// This is ugly but we only get one closure
|
|
// and that's our this ptr.
|
|
|
|
static MSG_Pane* MasterList;
|
|
MSG_Pane* m_nextInMasterList;
|
|
|
|
|
|
MSG_Pane* m_nextPane; // Link of panes created with the same master.
|
|
|
|
|
|
MSG_Master* m_master;
|
|
MWContext* m_context;
|
|
MSG_Prefs* m_prefs;
|
|
void* m_fedata;
|
|
int m_numstack; // used for DEBUG, and to tell listeners
|
|
// if we're in an update block.
|
|
|
|
// get new mail handling state
|
|
char *m_incUidl; // Special UIDL to inc from, if any. hack
|
|
|
|
int32 m_numNewGroups; // How many new newsgroups have been noticed
|
|
// from the news server.
|
|
|
|
UndoManager *m_undoManager;
|
|
BacktrackManager *m_backtrackManager;
|
|
|
|
tImapFilterClosure *m_ImapFilterData;
|
|
|
|
OfflineImapGoOnlineState *m_goOnlineState;
|
|
|
|
XP_Bool m_ActiveImapFilters;
|
|
MSG_IMAPFolderInfoMail *m_loadingImapFolder;
|
|
|
|
static XP_Bool m_warnedInvalidHostTable;
|
|
|
|
msg_Background* m_background;
|
|
MSG_PaneURLChain *m_urlChain;
|
|
MSG_NewsHost* m_hostCheckingForNew;
|
|
time_t m_checkForNewStartTime;
|
|
XP_Bool m_showingProgress;
|
|
XP_Bool m_requestForReturnReceipt;
|
|
XP_Bool m_sendingMDNInProgress;
|
|
|
|
uint32 m_NumberOfNewImapMailboxes;
|
|
|
|
Net_GetUrlExitFunc *m_PreImapFolderVerifyUrlExitFunction;
|
|
MSG_PostDeliveryActionInfo *m_actionInfo;
|
|
XP_Bool m_imapListInProgress;
|
|
XP_Bool m_imapListMailboxExist;
|
|
|
|
msg_YesNoDontKnow m_displayRecipients;
|
|
MWContext *m_progressContext;
|
|
};
|
|
|
|
|
|
/* Message post delivery action info
|
|
* Used for deleting draft message when done sending
|
|
* or turning on the Replied/Forwarded flag after
|
|
* successfully sending/forwarding a message
|
|
*/
|
|
|
|
class MSG_PostDeliveryActionInfo : public MSG_ZapIt
|
|
{
|
|
public:
|
|
MSG_PostDeliveryActionInfo(MSG_FolderInfo *folderInfo);
|
|
|
|
MSG_FolderInfo *m_folderInfo;
|
|
XPDWordArray m_msgKeyArray; /* origianl message keyArray */
|
|
uint32 m_flags;
|
|
};
|
|
|
|
|
|
|
|
#endif /* _MsgPane_H_ */
|