gecko-dev/cmd/winfe/mailpriv.h

717 строки
18 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 _MAILPRIV_H
#define _MAILPRIV_H
#include "dateedit.h"
#include "widgetry.h"
#include "mailmisc.h"
#include "statbar.h"
#include "property.h"
///////////////////////////////////////////////////////////////////////
// CMarkReadDateDlg
class CDiskSpacePropertyPage;
class CDownLoadPPNews;
class CDownLoadPPMail;
class CMarkReadDateDlg: public CDialog {
protected:
CNSDateEdit wndDateTo;
public:
CTime dateTo;
enum { IDD = IDD_MARKREADDATE };
CMarkReadDateDlg( UINT nIDTemplate, CWnd* pParentWnd ):
CDialog( nIDTemplate, pParentWnd ) {}
virtual BOOL OnInitDialog( );
virtual void OnOK();
};
///////////////////////////////////////////////////////////////////////
// CNavCombo
class CNavCombo: public CMailFolderCombo {
friend class CFolderInfoBar;
protected:
BOOL m_bFirst;
RECT m_rcList;
HFONT m_hFont, m_hBigFont;
public:
CNavCombo();
~CNavCombo();
virtual void SetFont( CFont *pFont, CFont *pBigFont );
protected:
virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
afx_msg void OnPaint( );
afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor );
DECLARE_MESSAGE_MAP()
};
///////////////////////////////////////////////////////////////////////
// CMailInfoBar
#ifdef XP_WIN16
class CMailInfoBar: public CNetscapeControlBar {
#else
class CMailInfoBar: public CControlBar {
#endif
protected:
BOOL m_bEraseBackground;
// Attributes
int m_iCSID;
HFONT m_hFont, m_hBoldFont;
HFONT m_hIntlFont, m_hBoldIntlFont;
MSG_Pane *m_pPane;
int m_idxImage;
CNSToolTip2 m_wndToolTip;
HBITMAP m_hbmBanner;
SIZE m_sizeBanner;
LPUNKNOWN m_pUnkImage;
LPIMAGEMAP m_pIImage;
public:
CMailInfoBar();
virtual ~CMailInfoBar();
BOOL Create( CWnd *pWnd, MSG_Pane *pPane );
void SetPane( MSG_Pane *pPane ) { m_pPane = pPane; }
virtual void SetCSID(int csid);
virtual void Update() {};
protected:
virtual void DragProxie();
void DrawInfoText( HDC hdc, LPCSTR lpText, LPRECT rect );
void DrawInfoText( int iCSID, HDC hdc, LPCSTR lpText, LPRECT rect );
void MeasureInfoText( HDC hdc, LPCSTR lpText, LPRECT rect );
void MeasureInfoText( int iCSID, HDC hdc, LPCSTR lpText, LPRECT rect );
void PaintBackground( HDC hdc );
virtual void OnUpdateCmdUI( CFrameWnd* pTarget, BOOL bDisableIfNoHndler );
virtual CSize CalcFixedLayout( BOOL bStretch, BOOL bHorz );
virtual BOOL PreTranslateMessage(MSG *pMsg);
afx_msg int OnCreate(LPCREATESTRUCT lpcs);
afx_msg void OnLButtonDown( UINT nFlags, CPoint point );
afx_msg void OnLButtonUp( UINT nFlags, CPoint point );
afx_msg void OnMouseMove( UINT nFlags, CPoint point );
afx_msg void OnShowWindow( BOOL bShow, UINT nStatus );
afx_msg BOOL OnEraseBkgnd( CDC* pDC );
afx_msg BOOL OnSetCursor( CWnd* pWnd, UINT nHitTest, UINT message );
DECLARE_MESSAGE_MAP()
};
///////////////////////////////////////////////////////////////////////
// CContainerInfoBar
class CContainerInfoBar: public CMailInfoBar {
protected:
// Attributes
CString m_csBanner;
public:
virtual void Update();
protected:
virtual void DragProxie();
afx_msg int OnCreate(LPCREATESTRUCT lpcs);
afx_msg void OnPaint( );
DECLARE_MESSAGE_MAP()
};
///////////////////////////////////////////////////////////////////////
// CFolderInfoBar
class CFolderInfoBar: public CMailInfoBar {
protected:
// Attributes
MSG_FolderInfo *m_folderOld;
CString m_csFolderName;
CString m_csFolderCounts;
CNavCombo m_wndNavButton;
CCommandToolbarButton m_wndBackButton;
public:
CFolderInfoBar();
virtual ~CFolderInfoBar();
virtual void SetCSID(int csid);
virtual void Update();
protected:
virtual void DragProxie();
afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );
afx_msg void OnSize( UINT nType, int cx, int cy );
afx_msg void OnDropDown();
afx_msg void OnCloseUp();
afx_msg void OnContainer();
afx_msg void OnPaint( );
DECLARE_MESSAGE_MAP()
};
///////////////////////////////////////////////////////////////////////
// CMessageInfoBar
class CMessageInfoBar: public CMailInfoBar {
protected:
// Attributes
CString m_csMessageName;
CString m_csMessageAuthor;
CString m_csFolderTip;
CString m_csFolderStatus;
CCommandToolbarButton m_wndBackButton;
public:
CMessageInfoBar();
virtual ~CMessageInfoBar();
virtual void SetCSID(int csid);
virtual void Update();
protected:
virtual void DragProxie();
afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );
afx_msg void OnSize( UINT nType, int cx, int cy );
afx_msg void OnPaint( );
afx_msg void OnContainer();
DECLARE_MESSAGE_MAP()
};
///////////////////////////////////////////////////////////////////////
//CFolderPropertyPage
//Mail folder property page.
class CNewsFolderPropertySheet;
class CFolderPropertyPage: public CNetscapePropertyPage {
protected:
MSG_FolderInfo *m_folderInfo;
MSG_Pane *m_pPane;
CNewsFolderPropertySheet *m_pParent;
public:
enum { IDD = IDD_PP_FOLDER };
CString m_strFolderName;
CFolderPropertyPage(CWnd *pWnd = NULL);
void SetFolderInfo(MSG_FolderInfo *folderInfo, MSG_Pane *pPane);
virtual BOOL OnInitDialog();
virtual void OnOK();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
afx_msg void OnChangeFolderName();
afx_msg void OnCleanUpWastedSpace();
DECLARE_MESSAGE_MAP()
};
///////////////////////////////////////////////////////////////////////
//CFolderSharingPage
//Mail folder property page.
class CFolderSharingPage: public CNetscapePropertyPage {
protected:
MSG_FolderInfo *m_folderInfo;
MWContext *m_pContext;
MSG_Pane *m_pPane;
CNewsFolderPropertySheet *m_pParent;
public:
enum { IDD = IDD_PP_SHARING };
CFolderSharingPage(CWnd *pWnd = NULL);
void SetFolderInfo(MSG_FolderInfo *folderInfo, MSG_Pane *pPane, MWContext *pContext);
virtual BOOL OnInitDialog();
virtual void OnOK();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
afx_msg void OnClickPrivileges();
DECLARE_MESSAGE_MAP()
};
///////////////////////////////////////////////////////////////////////
///News Host property page.
class CNewsHostGeneralPropertyPage: public CNetscapePropertyPage {
protected:
MSG_FolderInfo *m_folderInfo;
MSG_NewsHost *m_pNewsHost;
public:
CNewsHostGeneralPropertyPage();
//dialog data
enum { IDD = IDD_PP_NEWSHOST_GENERAL };
int m_nRadioValue;
BOOL m_bCanReceiveHTML;
//end dialog data
void SetFolderInfo(MSG_FolderInfo *folderInfo, MSG_NewsHost *pNewsHost);
public:
virtual void OnOK();
virtual BOOL OnInitDialog();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
};
//forward
class CNewsFolderPropertySheet;
/////////////////////////////////////////////////////////////////////////
//General page for news folders
class CNewsGeneralPropertyPage: public CNetscapePropertyPage {
protected:
MSG_FolderInfo *m_folderInfo;
MWContext *m_pContext;
CNewsFolderPropertySheet *m_pParent;
public:
CNewsGeneralPropertyPage(CNewsFolderPropertySheet *pParent);
//Dialog Data
enum { IDD = IDD_PP_NEWS_GENERAL };
BOOL m_bCanReceiveHTML;
//End Dialog Data
void SetFolderInfo(MSG_FolderInfo *folderInfo, MWContext *pContext);
public://virtuals
virtual void OnOK();
virtual BOOL OnInitDialog();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
afx_msg void OnDownLoadButton();
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//CNewsFolderPropertySheet
//Used in Edit Properties of the MailFolder frame.
class CNewsFolderPropertySheet : public CNetscapePropertySheet
{
public:
LOGFONT m_LogFont;
CFont m_Font;
BOOL m_bDownLoadNow;
BOOL m_bSynchronizeNow;
BOOL m_bCleanUpNow;
CWnd * m_pParent;
public:
CNewsFolderPropertySheet(LPCTSTR pszCaption, CWnd *pParent);
~CNewsFolderPropertySheet();
BOOL DownLoadNow() {return m_bDownLoadNow;};
BOOL SynchronizeNow() {return m_bSynchronizeNow;};
BOOL CleanUpNow() {return m_bCleanUpNow;};
void CleanUpWastedSpace();
virtual void OnHelp();
public:
CNewsGeneralPropertyPage *m_pNewsFolderPage;
CFolderPropertyPage *m_pFolderPage;
CFolderSharingPage *m_pSharingPage;
CDiskSpacePropertyPage *m_pDiskSpacePage;
CDownLoadPPNews *m_pDownLoadPageNews;
CDownLoadPPMail *m_pDownLoadPageMail;
CNewsHostGeneralPropertyPage *m_pNewsHostPage;
public:
afx_msg void OnDownLoadButton();
afx_msg void OnSynchronizeButton();
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////
//General page for attachments
class CAttachmentGeneralPage: public CNetscapePropertyPage {
protected:
CString m_csName;
CString m_csType;
CString m_csDescription;
enum { IDD = IDD_PP_ATTACHMENT_GENERAL };
public:
CAttachmentGeneralPage(LPCTSTR lpszName, LPCTSTR lpszType, LPCTSTR lpszDescription);
virtual void DoDataExchange(CDataExchange* pDX);
};
/////////////////////////////////////////////////////////////////////////
// Property sheet for attachments
class CAttachmentSheet: public CNetscapePropertySheet {
protected:
CAttachmentGeneralPage *m_pGeneral;
CString m_csName;
CString m_csType;
CString m_csDescription;
public:
CAttachmentSheet(CWnd *pParentWnd,
LPCTSTR lpszName, LPCTSTR lpszType, LPCTSTR lpszDescription);
~CAttachmentSheet();
};
/////////////////////////////////////////////////////////////////////
//
// CThreadStatusBar
//
// Status bar with little "expando" widget on the left
//
class CThreadStatusBar: public CNetscapeStatusBar {
protected:
HBITMAP m_hbmExpando;
SIZE m_sizeExpando;
BOOL m_bExpandoed, m_bDepressed;
// Mode state info for particular pane modes
private:
int m_iStatBarPaneWidth; // eSBM_Expando: save the width of the Taskbar pane
public:
CThreadStatusBar();
~CThreadStatusBar();
BOOL Create( CWnd *pParent );
void Expando( BOOL bExpando );
// CNetscapeStatusBar overrides
protected:
virtual void SetupMode();
protected:
afx_msg void OnLButtonDown( UINT nFlags, CPoint point );
afx_msg void OnMouseMove( UINT nFlags, CPoint point );
afx_msg void OnLButtonUp( UINT nFlags, CPoint point );
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////
//
// CProgressDialog
//
// Dialog for stand-along mail downloading
//
typedef void (*PROGRESSCALLBACK)(HWND,MSG_Pane *, void*);
typedef BOOL (*SHOWPROGRESSCALLBACK)(HWND, MSG_Pane*, void*);
#define WM_REQUESTPARENT WM_USER+1442
class CProgressDialog: public CDialog, public CStubsCX, public IMailFrame {
protected:
int32 m_lPercent;
CProgressMeter m_progressMeter;
MSG_Pane *m_pPane;
CWnd * m_pParent;
char * m_pszTitle;
void *m_closure;
PROGRESSCALLBACK m_cbDone;
UINT m_uTimerId;
UINT m_uProgressPos;
BOOL m_bProgressShown;
public:
CProgressDialog( CWnd *pParent,
MSG_Pane *parentPane,
PROGRESSCALLBACK callback, void * closure = NULL,
char * pszTitle = NULL,
PROGRESSCALLBACK cbDone = NULL,
SHOWPROGRESSCALLBACK showCallback = NULL);
~CProgressDialog() {
if (m_pszTitle)
XP_FREE(m_pszTitle);
}
enum { IDD = IDD_NEWMAIL };
// IUnknown Interface
STDMETHODIMP QueryInterface(REFIID,LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// Support for IMailFrame
virtual CMailNewsFrame *GetMailNewsFrame() { return NULL; }
virtual MSG_Pane *GetPane() { return m_pPane; }
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:
virtual BOOL OnInitDialog( );
virtual void OnCancel();
virtual void PostNcDestroy( ) {} // Prevent window destroy auto delete.
afx_msg void OnDestroy();
afx_msg LONG OnRequestParent(WPARAM,LPARAM);
afx_msg void OnTimer(UINT nIDEvent);
DECLARE_MESSAGE_MAP()
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;
// returns TRUE if we get past the test callback function
// used to determine if we should destruct now.
BOOL GetProgressShown() {return m_bProgressShown;}
};
/////////////////////////////////////////////////////////////////////
//
// COfflineProgressDialog
//
// Progress for offline synchronizing
//
class COfflineProgressDialog: public CProgressDialog {
protected:
BOOL m_bQuitOnCompletion;
public:
COfflineProgressDialog( CWnd *pParent,
MSG_Pane *parentPane,
PROGRESSCALLBACK callback, void * closure = NULL,
char * pszTitle = NULL,
PROGRESSCALLBACK cbDone = NULL, BOOL bQuitOnCompletion = FALSE);
void AllConnectionsComplete(MWContext *pContext);
protected:
};
/////////////////////////////////////////////////////////////////////
//
// CNewFolderDialog
//
// Dialog for mail folder creation
//
class CNewFolderDialog: public CDialog, public IMailFrame {
protected:
MSG_Pane *m_pPane;
MSG_FolderInfo *m_pParentFolder;
CMailFolderCombo m_wndCombo;
BOOL m_bEnabled;
public:
CNewFolderDialog( CWnd *pParent, MSG_Pane *pPane, MSG_FolderInfo *folderInfo );
// IUnknown Interface
STDMETHODIMP QueryInterface(REFIID,LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// Support for IMailFrame
virtual CMailNewsFrame *GetMailNewsFrame() { return NULL; }
virtual MSG_Pane *GetPane() { return m_pPane; }
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);
enum { IDD = IDD_NEWFOLDER };
protected:
virtual BOOL OnInitDialog( );
virtual void OnCancel();
virtual void OnOK();
DECLARE_MESSAGE_MAP()
afx_msg void OnDestroy();
afx_msg void OnEnable( CCmdUI *pCmdUI );
};
/////////////////////////////////////////////////////////////////////
//
// CPrefNewFolderDialog
//
// Dialog for mail folder creation in preference
//
class CPrefNewFolderDialog: public CDialog
{
protected:
MSG_FolderInfo *m_pFolder;
CMailFolderCombo m_wndCombo;
BOOL m_bCreating;
public:
CPrefNewFolderDialog( CWnd *pParent, MSG_FolderInfo *pFolderInfo );
MSG_FolderInfo *GetNewFolder() { return m_pFolder; }
enum { IDD = IDD_NEWFOLDER };
protected:
virtual BOOL OnInitDialog( );
virtual void OnCancel();
virtual void OnOK();
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
};
///////////////////////////////////////////////////////////////////////
// CMailNewsSplitter
// A view window can have max 2 panes. Split vertically or horizontally
// Capable of adding or deleting(or hiding/closing) one pane on the fly
//
class CMailNewsSplitter: public CView {
DECLARE_DYNCREATE(CMailNewsSplitter);
protected:
BOOL m_bEraseBackground;
HBRUSH m_hSliderBrush;
CMailNewsFrame* m_pNotifyFrame;
CWnd *m_pWnd1, *m_pWnd2;
BOOL m_bVertical;
BOOL m_bTrackSlider;
BOOL m_bMouseMove;
BOOL m_bZapperDown;
BOOL m_bZapped;
BOOL m_bDoubleClicked;
BOOL m_bLoadMessage;
RECT m_rcSlider;
POINT m_ptHit;
POINT m_ptFirstHit;
int m_nSliderWidth;
int m_nPaneSize;
int m_nPrevSize;
CMailNewsSplitter();
public:
~CMailNewsSplitter();
void SetNotifyFrame(CMailNewsFrame* pFrame = NULL) { m_pNotifyFrame = pFrame; }
void SetLoadMessage(BOOL bLoad = FALSE) { m_bLoadMessage = bLoad; }
void AddPanes(CWnd *pWnd1, CWnd *pWnd2 = NULL, int nSize = -1, BOOL bVertical = TRUE);
void AddOnePane(CWnd *pWnd, BOOL bFirstPane = FALSE, BOOL bVertical = TRUE);
void RemoveOnePane(CWnd *pWnd);
void SetPaneSize(CWnd *pWnd, int nSize);
int GetPaneSize();
int GetPreviousPaneSize();
BOOL IsOnePaneClosed() const;
void SetSliderWidth(int nWidth) { m_nSliderWidth = nWidth; }
protected:
void UpdateSplitter();
BOOL IsInZapper(POINT point);
void DeleteBitmaps();
void CreateBitmaps(HDC hDC);
void LoadingMessage();
void CheckFocusWindow();
void UpdateZapper();
virtual void PositionWindows(int cx, int cy);
virtual void InvertSlider(RECT* pRect);
virtual void SetSliderRect(int cx, int cy);
virtual void OnInitialUpdate();
virtual BOOL PreTranslateMessage( MSG* pMsg );
virtual void OnDraw(CDC *pDC);
afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );
afx_msg void OnSetFocus( CWnd* pOldWnd );
afx_msg void OnLButtonDown( UINT nFlags, CPoint point );
afx_msg void OnMouseMove( UINT nFlags, CPoint point );
afx_msg void OnLButtonUp( UINT nFlags, CPoint point );
afx_msg void OnLButtonDblClk( UINT nFlags, CPoint point );
afx_msg BOOL OnSetCursor( CWnd* pWnd, UINT nHitTest, UINT message );
afx_msg void OnSize( UINT nType, int cx, int cy );
afx_msg void OnShowWindow( BOOL bShow, UINT nStatus );
afx_msg BOOL OnEraseBkgnd( CDC* pDC );
afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
DECLARE_MESSAGE_MAP()
};
#endif // _MAILPRIV_H