gecko-dev/cmd/winfe/mailfrm.h
1998-03-28 02:44:41 +00:00

485 lines
16 KiB
C++
Executable File

/* -*- 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 _MAILFRM_H
#define _MAILFRM_H
#include "mailmisc.h"
#include "mailpriv.h"
#ifndef _APIMSG_H
#include "apimsg.h"
#endif
#ifndef DYNAMIC_DOWNCAST
#define DYNAMIC_DOWNCAST( classname, ptr ) ((classname *)(ptr))
#endif
#ifndef DOWNCAST
#define DOWNCAST( classname, ptr ) ((classname *)(ptr))
#endif
// mailfrm.h : header file
//
#define SORT_BYDATE 0
#define SORT_BYSUBJECT 1
#define SORT_BYSENDER 2
#define SORT_BYNUMBER 3
#define SORT_BYPRIORITY 4
#define SORT_BYTHREAD 5
#define SORT_BYSTATUS 6
#define SORT_BYSIZE 7
#define SORT_BYFLAG 8
#define SORT_BYUNREAD 9
#define THREADS_NEW 0
#define THREADS_ALL 1
#define THREADS_WATCHED 2
#define THREADS_KILLED 3
#define THREADS_NEWONLY 4
#define IDW_FOLDER_PANE AFX_IDW_PANE_FIRST
#define IDW_THREAD_PANE (AFX_IDW_PANE_FIRST+1)
#define IDW_MESSAGE_PANE (AFX_IDW_PANE_FIRST+2)
#define IDW_CATEGORY_PANE (AFX_IDW_PANE_FIRST+3)
#define IDW_ATTACHMENTS_PANE (AFX_IDW_PANE_FIRST+4)
#define IDW_MESSAGE_VIEW (AFX_IDW_PANE_FIRST+5)
/////////////////////////////////////////////////////////////////////////////
// CMailNewsCX
class CMailNewsCX: public CStubsCX {
protected:
LPCHROME m_pIChrome;
CFrameWnd *m_pFrame;
int32 m_lPercent;
CString m_csProgress;
BOOL m_bAnimated;
public:
CMailNewsCX(ContextType ctMyType, CFrameWnd *pFrame);
~CMailNewsCX();
LPUNKNOWN GetChrome() const { return m_pIChrome; }
void SetChrome( LPUNKNOWN pChrome );
public:
int32 QueryProgressPercent();
void SetProgressBarPercent(MWContext *pContext, int32 lPercent);
void SetDocTitle( MWContext *pContext, char *pTitle );
void StartAnimation();
void StopAnimation();
void Progress(MWContext *pContext, const char *pMessage);
void AllConnectionsComplete(MWContext *pContext);
void UpdateStopState( MWContext *pContext );
CWnd *GetDialogOwner() const;
};
class C3PaneMailFrame;
class CFolderFrame;
class CMessageFrame;
class CMailInfoBar;
class CMessageView;
class CFolderPropertyPage;
class CDiskSpaceProptertyPage;
extern int g_iModalDelay;
#define MODAL_DELAY (g_iModalDelay)
/////////////////////////////////////////////////////////////////////////////
// CMailNewsFrame frame
class CMailNewsFrame : public CGenericFrame, public IMailFrame
{
DECLARE_DYNCREATE(CMailNewsFrame)
protected:
unsigned long m_ulRefCount;
HACCEL m_hAccel;
public:
// IUnknown Interface
STDMETHODIMP QueryInterface(REFIID,LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// Support for IMailFrame
virtual CMailNewsFrame *GetMailNewsFrame();
virtual MSG_Pane *GetPane();
virtual void PaneChanged( MSG_Pane *pane, XP_Bool asynchronous,
MSG_PANE_CHANGED_NOTIFY_CODE, int32 value);
virtual void AttachmentCount(MSG_Pane *messagepane, void* closure,
int32 numattachments, XP_Bool finishedloading);
virtual void UserWantsToSeeAttachments(MSG_Pane *messagepane, void *closure);
protected:
CMailNewsFrame(); // protected constructor used by dynamic creation
// Attributes
MSG_Pane *m_pPane;
MSG_Pane *m_pMessagePane;
MSG_Master *m_pMaster;
BOOL m_bNews; // Are we showing mail or news?
BOOL m_bCategory;
CMailNewsOutliner *m_pOutliner;
CMailInfoBar *m_pInfoBar;
MSG_AttachmentData *m_pAttachmentData;
int32 m_nAttachmentCount;
CMessageView *m_pMessageView;
protected:
virtual ~CMailNewsFrame();
BOOL LoadAccelerators( UINT nID );
BOOL LoadAccelerators( LPCSTR lpszResource );
public:
// Attributes
CAbstractCX *GetContext() const { return GetMainContext(); }
virtual LPCTSTR GetWindowMenuTitle() { return _T(""); };
BOOL IsNews() const { return m_bNews; }
virtual MessageKey GetCurMessage() const { return MSG_MESSAGEKEYNONE; }
virtual MSG_FolderInfo *GetCurFolder() const { return NULL; }
static BOOL CheckWizard( CWnd *pParent = NULL ); // See if prefs have been initialized
static C3PaneMailFrame *GetLastThreadFrame(CFrameWnd *pExclude = NULL);
static CMessageFrame *GetLastMessageFrame(CFrameWnd *pExclude = NULL);
static void UpdateMenu( MSG_FolderInfo *mailRoot,
HMENU hMenu, UINT &nID, int nStart = 0);
void ActivateFrame( int nCmdShow = -1 );
virtual void RefreshNewEncoding(int16 doc_csid, BOOL bSave = TRUE);
protected:
virtual void SetSort( int idSort ) {}
virtual void SetCSID( int csid );
virtual MSG_FolderInfo *FolderInfoFromMenuID( MSG_FolderInfo *mailRoot,
UINT &nBase, UINT nID );
virtual MSG_FolderInfo *FolderInfoFromMenuID( UINT nID );
int m_iMessageMenuPos;
int m_iMoveMenuPos;
int m_iCopyMenuPos;
int m_iFileMenuPos;
int m_iAttachMenuPos;
virtual void UpdateFileMenus();
virtual void UpdateAttachmentMenus();
void ModalStatusBegin( int iModalDelay );
void ModalStatusEnd();
void DoUpdateCommand( CCmdUI* pCmdUI, MSG_CommandType cmd, BOOL bUseCheck = TRUE );
void DoCommand(MSG_CommandType msgCommand, int iModalDelay = -1, BOOL bAsync = TRUE );
void DoMessageCommand( MSG_CommandType );
void DoUpdateMessageCommand( CCmdUI *, MSG_CommandType, BOOL = TRUE );
virtual void DoUpdateNavigate( CCmdUI* pCmdUI, MSG_MotionType cmd ) {}
virtual void DoNavigate( MSG_MotionType msgCommand ) {}
void DoSubscribe(MSG_Host* pThisHost);
// MFC Overrides
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual BOOL PreTranslateMessage( MSG* pMsg );
virtual void GetMessageString( UINT nID, CString& rMessage ) const;
// Message Map
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnPaint( );
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnClose( );
afx_msg void OnDestroy( );
afx_msg void OnInitMenuPopup( CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu );
afx_msg LRESULT CMailNewsFrame::OnButtonMenuOpen(WPARAM wParam, LPARAM lParam);
#ifndef ON_COMMAND_RANGE
afx_msg BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
#endif
// File Menu Items
afx_msg BOOL OnCommand( WPARAM wParam, LPARAM lParam );
afx_msg void OnNew ();
afx_msg void OnUpdateNew ( CCmdUI* pCmdUI );
afx_msg void OnNewNewsgroup();
afx_msg void OnUpdateNewNewsgroup( CCmdUI *pCmdUI );
afx_msg void OnNewNewshost();
afx_msg void OnUpdateNewNewshost( CCmdUI *pCmdUI );
afx_msg void OnNewCategory();
afx_msg void OnUpdateNewCategory( CCmdUI *pCmdUI );
afx_msg void OnSave ();
afx_msg void OnUpdateSave ( CCmdUI* pCmdUI );
afx_msg void OnEditMessage ();
afx_msg void OnUpdateEditMessage( CCmdUI* pCmdUI );
afx_msg void OnAddNewsGroup();
afx_msg void OnUpdateAddNewsGroup ( CCmdUI * pCmdUI );
afx_msg void OnSubscribe ();
afx_msg void OnUpdateSubscribe ( CCmdUI * pCmdUI );
afx_msg void OnUnsubscribe ();
afx_msg void OnUpdateUnsubscribe ( CCmdUI * pCmdUI );
afx_msg void OnOpenAttach( UINT nID );
afx_msg void OnUpdateOpenAttach( CCmdUI *pCmdUI );
afx_msg void OnSaveAttach( UINT nID );
afx_msg void OnUpdateSaveAttach( CCmdUI *pCmdUI );
afx_msg void OnAttachProperties( UINT nID );
afx_msg void OnUpdateAttachProperties( CCmdUI *pCmdUI );
// Edit Menu Items
afx_msg void OnEditUndo();
afx_msg void OnUpdateEditUndo( CCmdUI* pCmdUI );
afx_msg void OnEditRedo();
afx_msg void OnUpdateEditRedo( CCmdUI* pCmdUI );
afx_msg void OnDeleteMessage();
afx_msg void OnReallyDeleteMessage();
afx_msg void OnUpdateDeleteMessage( CCmdUI *pCmdUI );
afx_msg void OnDeleteFolder();
afx_msg void OnUpdateDeleteFolder( CCmdUI *pCmdUI );
afx_msg void OnSelectAll();
afx_msg void OnUpdateSelectAll ( CCmdUI * pCmdUI );
afx_msg void OnSetupWizard ();
afx_msg void OnUpdateSetupWizard( CCmdUI *pCmdUI );
afx_msg void OnServerStuff();
afx_msg void OnUpdateServerStuff( CCmdUI *pCmdUI );
// View/Sort Menu Items
afx_msg void OnSortAgain ();
afx_msg void OnUpdateSortAgain ( CCmdUI* pCmdUI );
afx_msg void OnThread ();
afx_msg void OnUpdateThread ( CCmdUI* pCmdUI );
afx_msg void OnAscending ();
afx_msg void OnUpdateAscending ( CCmdUI* pCmdUI );
afx_msg void OnDescending ();
afx_msg void OnUpdateDescending ( CCmdUI* pCmdUI );
afx_msg void OnSortNumber ();
afx_msg void OnUpdateSortNumber ( CCmdUI* pCmdUI );
afx_msg void OnSortDate ();
afx_msg void OnUpdateSortDate ( CCmdUI* pCmdUI );
afx_msg void OnSortSubject ();
afx_msg void OnUpdateSortSubject ( CCmdUI* pCmdUI );
afx_msg void OnSortSender ();
afx_msg void OnUpdateSortSender ( CCmdUI* pCmdUI );
afx_msg void OnSortPriority();
afx_msg void OnUpdateSortPriority( CCmdUI *pCmdUI );
afx_msg void OnSortStatus();
afx_msg void OnUpdateSortStatus( CCmdUI *pCmdUI );
afx_msg void OnSortSize();
afx_msg void OnUpdateSortSize( CCmdUI *pCmdUI );
afx_msg void OnSortFlag();
afx_msg void OnUpdateSortFlag( CCmdUI *pCmdUI );
afx_msg void OnSortUnread();
afx_msg void OnUpdateSortUnread( CCmdUI *pCmdUI );
afx_msg void OnViewAll();
afx_msg void OnUpdateViewAll( CCmdUI * pCmdUI );
afx_msg void OnViewKilled();
afx_msg void OnUpdateViewKilled( CCmdUI * pCmdUI );
afx_msg void OnViewWatched();
afx_msg void OnUpdateViewWatched( CCmdUI * pCmdUI );
afx_msg void OnViewNew();
afx_msg void OnUpdateViewNew( CCmdUI * pCmdUI );
afx_msg void OnViewNewOnly();
afx_msg void OnUpdateViewNewOnly( CCmdUI * pCmdUI );
afx_msg void OnHeadersMicro();
afx_msg void OnUpdateHeadersMicro( CCmdUI *pCmdUI );
afx_msg void OnHeadersShort();
afx_msg void OnUpdateHeadersShort( CCmdUI *pCmdUI );
afx_msg void OnHeadersAll();
afx_msg void OnUpdateHeadersAll( CCmdUI *pCmdUI );
afx_msg void OnMessageReuse();
afx_msg void OnUpdateMessageReuse(CCmdUI* pCmdUI);
afx_msg void OnViewInline();
afx_msg void OnUpdateViewInline(CCmdUI*);
afx_msg void OnViewAsLinks();
afx_msg void OnUpdateViewAsLinks(CCmdUI*);
// Navigate Menu Items
afx_msg void OnPreviousUnread ();
afx_msg void OnUpdatePreviousUnread ( CCmdUI* pCmdUI );
afx_msg void OnPrevious ();
afx_msg void OnUpdatePrevious ( CCmdUI* pCmdUI );
afx_msg void OnNextUnread ();
afx_msg void OnUpdateNextUnread ( CCmdUI* pCmdUI );
afx_msg void OnNext();
afx_msg void OnUpdateNext ( CCmdUI* pCmdUI );
afx_msg void OnNextFolder();
afx_msg void OnUpdateNextFolder( CCmdUI* pCmdUI );
afx_msg void OnNextUnreadThread();
afx_msg void OnUpdateNextUnreadThread(CCmdUI* pCmdUI);
afx_msg void OnNextUnreadFolder();
afx_msg void OnUpdateNextUnreadFolder(CCmdUI* pCmdUI);
afx_msg void OnNextFlagged();
afx_msg void OnUpdateNextFlagged(CCmdUI* pCmdUI);
afx_msg void OnPreviousFlagged();
afx_msg void OnUpdatePreviousFlagged(CCmdUI* pCmdUI);
afx_msg void OnFirstFlagged();
afx_msg void OnUpdateFirstFlagged(CCmdUI* pCmdUI);
/* hack for message backtracking */
afx_msg void OnGoBack();
afx_msg void OnUpdateGoBack( CCmdUI* pCmdUI );
afx_msg void OnGoForward();
afx_msg void OnUpdateGoForward( CCmdUI* pCmdUI );
// Message Menu Items
afx_msg void OnGetMail ();
afx_msg void OnUpdateGetMail ( CCmdUI* pCmdUI );
afx_msg void OnGetNext();
afx_msg void OnUpdateGetNext( CCmdUI* pCmdUI );
afx_msg void OnDeliverNow();
afx_msg void OnUpdateDeliverNow(CCmdUI*);
afx_msg void OnReply ();
afx_msg void OnUpdateReply ( CCmdUI* pCmdUI );
afx_msg void OnReplyAll ();
afx_msg void OnUpdateReplyAll ( CCmdUI* pCmdUI );
afx_msg void OnPostNew ();
afx_msg void OnUpdatePostNew ( CCmdUI* pCmdUI );
afx_msg void OnPostAndMailReply ();
afx_msg void OnUpdatePostAndMailReply ( CCmdUI * pCmdUI );
afx_msg void OnPostAndMail ();
afx_msg void OnUpdatePostAndMail ( CCmdUI * pCmdUI );
afx_msg void OnPostReply ();
afx_msg void OnUpdatePostReply ( CCmdUI* pCmdUI );
afx_msg void OnForward ();
afx_msg void OnUpdateForward ( CCmdUI* pCmdUI );
afx_msg void OnForwardQuoted ();
afx_msg void OnUpdateForwardQuoted ( CCmdUI * pCmdUI );
afx_msg void OnKill();
afx_msg void OnUpdateKill( CCmdUI *pCmdUI );
afx_msg void OnWatch();
afx_msg void OnUpdateWatch( CCmdUI *pCmdUI );
afx_msg void OnCancelMessage();
afx_msg void OnUpdateCancelMessage( CCmdUI * pCmdUI );
afx_msg void OnRetrieveSelected();
afx_msg void OnUpdateRetrieveSelected( CCmdUI *pCmdUI );
afx_msg void OnMarkMessagesRead();
afx_msg void OnUpdateMarkMessagesRead( CCmdUI *pCmdUI );
afx_msg void OnMarkMessagesUnread();
afx_msg void OnUpdateMarkMessagesUnread( CCmdUI *pCmdUI );
afx_msg void OnMarkMessagesLater();
afx_msg void OnUpdateMarkMessagesLater( CCmdUI *pCmdUI );
afx_msg void OnMarkThreadRead();
afx_msg void OnUpdateMarkThreadRead( CCmdUI *pCmdUI );
afx_msg void OnMarkAllRead();
afx_msg void OnUpdateMarkAllRead( CCmdUI *pCmdUI );
afx_msg void OnCatchup();
afx_msg void OnUpdateCatchup( CCmdUI *pCmdUI );
afx_msg void OnRetrieveOffline();
afx_msg void OnUpdateRetrieveOffline( CCmdUI *pCmdUI );
afx_msg void OnMarkMessages();
afx_msg void OnUpdateMarkMessages( CCmdUI *pCmdUI );
afx_msg void OnUnmarkMessages();
afx_msg void OnUpdateUnmarkMessages( CCmdUI *pCmdUI );
afx_msg void OnWrapLongLines ( );
afx_msg void OnUpdateWrapLongLines ( CCmdUI * pCmdUI );
afx_msg void OnViewRot13 ( );
afx_msg void OnUpdateViewRot13 ( CCmdUI * pCmdUI );
// Organize Menu Items
afx_msg void OnNewFolder ();
afx_msg void OnUpdateNewFolder ( CCmdUI* pCmdUI );
afx_msg void OnRenameFolder();
afx_msg void OnUpdateRenameFolder( CCmdUI *pCmdUI );
afx_msg void OnCompressFolder ();
afx_msg void OnUpdateCompressFolder ( CCmdUI* pCmdUI );
afx_msg void OnCompressAll ();
afx_msg void OnUpdateCompressAll ( CCmdUI* pCmdUI );
afx_msg void OnEmptyTrash ();
afx_msg void OnUpdateEmptyTrash ( CCmdUI * pCmdUI );
afx_msg void OnAddToAddressBook ();
afx_msg void OnUpdateAddToAddressBook ( CCmdUI * pCmdUI );
afx_msg void OnAddAllToAddressBook ();
afx_msg void OnUpdateAddAllToAddressBook ( CCmdUI * pCmdUI );
// Stop
afx_msg void OnInterrupt();
afx_msg void OnUpdateInterrupt( CCmdUI* pCmdUI );
// Non menu Items
afx_msg void OnTips();
afx_msg void OnSearch();
afx_msg void OnFilter();
afx_msg void OnQuickFile();
afx_msg void OnUpdateQuickFile( CCmdUI *pCmdUI );
afx_msg void OnUpdateSecurity(CCmdUI *pCmdUI);
afx_msg void OnUpdateSecureStatus(CCmdUI *pCmdUI);
afx_msg void OnPriorityLowest();
afx_msg void OnPriorityLow();
afx_msg void OnPriorityNormal();
afx_msg void OnPriorityHigh();
afx_msg void OnPriorityHighest();
afx_msg void OnUpdatePriority( CCmdUI *pCmdUI );
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CMsgListFrame frame
class CMsgListFrame : public CMailNewsFrame, public IMsgList {
DECLARE_DYNCREATE(CMsgListFrame)
public:
// IUnknown Interface
STDMETHODIMP QueryInterface(REFIID,LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// Support for IMsgList Interface (Called by CMailMsgList)
virtual void ListChangeStarting( MSG_Pane* pane, XP_Bool asynchronous,
MSG_NOTIFY_CODE notify, MSG_ViewIndex where,
int32 num);
virtual void ListChangeFinished( MSG_Pane* pane, XP_Bool asynchronous,
MSG_NOTIFY_CODE notify, MSG_ViewIndex where,
int32 num);
virtual void GetSelection( MSG_Pane* pane, MSG_ViewIndex **indices, int *count,
int *focus);
virtual void SelectItem( MSG_Pane* pane, int item );
virtual void CopyMessagesInto( MSG_Pane *pane, MSG_ViewIndex *indices, int count,
MSG_FolderInfo *folderInfo);
virtual void MoveMessagesInto( MSG_Pane *pane, MSG_ViewIndex *indices, int count,
MSG_FolderInfo *folderInfo);
protected:
CMsgListFrame(); // protected constructor used by dynamic creation
// Message Map
afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );
afx_msg void OnDestroy();
DECLARE_MESSAGE_MAP()
};
extern MSG_MessagePaneCallbacks MsgPaneCB;
/////////////////////////////////////////////////////////////////////////////
#endif