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

199 lines
6.2 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 _THRDFRM_H
#define _THRDFRM_H
#include "mailfrm.h"
/////////////////////////////////////////////////////////////////////////////
// C3PaneMailFrame frame
class C3PaneMailFrame : public CMsgListFrame
{
DECLARE_DYNCREATE(C3PaneMailFrame)
protected:
C3PaneMailFrame();
enum { actionNone, actionSelectFirst, actionNavigation, actionSelectKey };
int m_actionOnLoad;
MSG_MotionType m_navPending;
MessageKey m_selPending;
int m_nLoadingFolder;
BOOL m_bDragCopying;
BOOL m_bNoScrollHack;
// Attibutes
BOOL m_bWantToGetMail;
COutlinerParent *m_pOutlinerParent;
MSG_Pane *m_pFolderPane;
CFolderOutliner *m_pFolderOutliner;
COutlinerParent *m_pFolderOutlinerParent;
CMailNewsSplitter *m_pFolderSplitter;
CMailNewsSplitter *m_pThreadSplitter;
CThreadStatusBar m_barStatus;
void UIForFolder( MSG_FolderInfo *folderInfo );
void DoOpenMessage(BOOL bReuse);
void BlankOutThreadPane();
void BlankOutMessagePane(MSG_FolderInfo *folderInfo = NULL);
// IMailFrame override
virtual void PaneChanged( MSG_Pane *pane, XP_Bool asynchronous,
MSG_PANE_CHANGED_NOTIFY_CODE, int32 value);
// 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 );
// Overrides
virtual BOOL PreTranslateMessage( MSG* pMsg );
virtual BOOL OnCreateClient( LPCREATESTRUCT lpcs, CCreateContext* pContext );
void SwitchUI();
void SetIsNews( BOOL bNews );
void CreateFolderOutliner();
void CreateThreadPane();
virtual void SetSort( int idSort );
BOOL IsThreadFocus() const { return m_pOutliner && m_pOutliner == GetFocus(); }
BOOL IsMessageFocus() const;
virtual void DoUpdateNavigate( CCmdUI* pCmdUI, MSG_MotionType cmd );
virtual void DoNavigate( MSG_MotionType msgCommand );
virtual void DoPriority( MSG_PRIORITY priority );
virtual void GetMessageString( UINT nID, CString& rMessage ) const;
// Helper
void DoUndoNavigate( MSG_MotionType msgCommand );
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
#ifndef ON_COMMAND_RANGE
afx_msg BOOL OnCommand( WPARAM wParam, LPARAM lParam );
afx_msg BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
#endif
afx_msg void OnClose();
afx_msg void OnDestroy();
// Edit Menu Items
afx_msg void OnEditUndo();
afx_msg void OnEditRedo();
afx_msg void OnSelectThread ();
afx_msg void OnUpdateSelectThread ( CCmdUI * pCmdUI );
afx_msg void OnSelectFlagged();
afx_msg void OnUpdateSelectFlagged( CCmdUI *pCmdUI );
afx_msg void OnSelectAll();
afx_msg void OnUpdateSelectAll( CCmdUI *pCmdUI );
afx_msg void OnEditProperties();
afx_msg void OnUpdateProperties( CCmdUI *pCmdUI );
// View Menu Items
afx_msg void OnViewMessage();
afx_msg void OnUpdateViewMessage( CCmdUI *pCmdUI );
afx_msg void OnViewCategories();
afx_msg void OnUpdateViewCategories( CCmdUI *pCmdUI );
afx_msg void OnViewFolder();
// Message Menu Items
afx_msg void OnMove( UINT nID );
afx_msg void OnCopy( UINT nID );
afx_msg void OnUpdateFile( CCmdUI *pCmdUI );
afx_msg void OnIgnore();
afx_msg void OnUpdateIgnore(CCmdUI *pCmdUI);
// Window menu items
afx_msg void OnFileBookmark( );
afx_msg void OnUpdateFileBookmark( CCmdUI *pCmdUI );
// Non-menu Items
afx_msg void OnSelect();
afx_msg void OnSelectFolder();
afx_msg void OnOpen();
afx_msg void OnOpenNew();
afx_msg void OnOpenReuse();
afx_msg void OnUpdateOpen(CCmdUI *pCmdUI);
afx_msg void OnContinue();
afx_msg void OnContainer();
afx_msg void OnOpenNewFrame();
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 );
afx_msg void OnDoneGettingMail();
DECLARE_MESSAGE_MAP()
void SelectMessage( MessageKey key );
public:
~C3PaneMailFrame();
CMailNewsOutliner* GetFolderOutliner() { return m_pFolderOutliner; }
void LoadFolder( MSG_FolderInfo *folderInfo,
MessageKey key = MSG_MESSAGEKEYNONE,
int action = actionSelectFirst);
void UpdateFolderPane(MSG_FolderInfo *pFolderInfo);
BOOL GetSelectedFolder(MSG_FolderLine* pFolderLine);
virtual MessageKey GetCurMessage() const;
virtual MSG_FolderInfo *GetCurFolder() const;
virtual LPCTSTR GetWindowMenuTitle();
virtual BOOL FileBookmark();
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);
static C3PaneMailFrame *FindFrame( MSG_FolderInfo *folderInfo );
static C3PaneMailFrame *Open( );
static C3PaneMailFrame *Open( MSG_FolderInfo *folderInfo,
MessageKey key = MSG_MESSAGEKEYNONE,
BOOL* pContinue = FALSE);
static C3PaneMailFrame *OpenInbox( BOOL bGetNew = FALSE );
#ifdef DEBUG_WHITEBOX
afx_msg void WhiteBox_OnDeleteMessage() { OnDeleteMessage(); }
afx_msg void WhiteBox_OnSelect() { OnSelect(); }
void WhiteBox_GetSelection( MSG_Pane* pane, MSG_ViewIndex **indices, int *count, int *focus){
GetSelection(pane,indices,count,focus);
}
BOOL WhiteBox_DoesMessageExist( MessageKey key );
#endif
};
#endif