mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-15 11:13:29 +00:00
2997 lines
73 KiB
C++
Executable File
2997 lines
73 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.
|
|
*/
|
|
|
|
//
|
|
// Main frame for mail reading window
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "intl_csi.h"
|
|
#include "netsvw.h"
|
|
#include "cxsave.h"
|
|
#include "mailfrm.h"
|
|
#include "fldrfrm.h"
|
|
#include "thrdfrm.h"
|
|
#include "msgfrm.h"
|
|
#include "msgview.h"
|
|
#include "msgcom.h"
|
|
#include "mailmisc.h"
|
|
#include "template.h"
|
|
#include "subnews.h"
|
|
#include "mnprefs.h"
|
|
#include "mailpriv.h"
|
|
#include "prefapi.h"
|
|
#include "ssl.h"
|
|
#include "xpgetstr.h"
|
|
|
|
#ifdef DEBUG_WHITEBOX
|
|
#include "xp_trace.h"
|
|
#include "stdio.h"
|
|
#include "qaoutput.h"
|
|
#include "qatrace.h"
|
|
#endif
|
|
|
|
extern "C"
|
|
{
|
|
extern int MK_NNTP_SERVER_NOT_CONFIGURED;
|
|
};
|
|
|
|
extern "C" MSG_Host *DoAddNewsServer(CWnd* pParent, int nFromWhere);
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char BASED_CODE THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
int g_iModalDelay = -1;
|
|
|
|
MSG_Master *WFE_MSGGetMaster();
|
|
|
|
extern "C" void wfe_AttachmentCount(MSG_Pane *messagepane, void* closure,
|
|
int32 numattachments, XP_Bool finishedloading)
|
|
{
|
|
LPUNKNOWN pUnk = (LPUNKNOWN) MSG_GetFEData( messagepane );
|
|
if (pUnk) {
|
|
LPMAILFRAME pInterface = NULL;
|
|
pUnk->QueryInterface( IID_IMailFrame, (LPVOID *) &pInterface );
|
|
if ( pInterface ) {
|
|
pInterface->AttachmentCount( messagepane, closure, numattachments, finishedloading );
|
|
pInterface->Release();
|
|
}
|
|
}
|
|
}
|
|
|
|
extern "C" void wfe_UserWantsToSeeAttachments(MSG_Pane *messagepane, void* closure)
|
|
{
|
|
LPUNKNOWN pUnk = (LPUNKNOWN) MSG_GetFEData( messagepane );
|
|
if (pUnk) {
|
|
LPMAILFRAME pInterface = NULL;
|
|
pUnk->QueryInterface( IID_IMailFrame, (LPVOID *) &pInterface );
|
|
if ( pInterface ) {
|
|
pInterface->UserWantsToSeeAttachments( messagepane, closure );
|
|
pInterface->Release();
|
|
}
|
|
}
|
|
}
|
|
|
|
MSG_MessagePaneCallbacks MsgPaneCB = {
|
|
wfe_AttachmentCount,
|
|
wfe_UserWantsToSeeAttachments
|
|
};
|
|
|
|
CMailNewsCX::CMailNewsCX(ContextType ctMyType, CFrameWnd *pFrame )
|
|
{
|
|
m_pFrame = pFrame;
|
|
m_pIChrome = NULL;
|
|
m_cxType = ctMyType;
|
|
m_lPercent = 0;
|
|
m_bAnimated = FALSE;
|
|
}
|
|
|
|
CMailNewsCX::~CMailNewsCX()
|
|
{
|
|
if (m_pIChrome) {
|
|
m_pIChrome->Release();
|
|
}
|
|
}
|
|
|
|
void CMailNewsCX::SetChrome( LPUNKNOWN pUnk )
|
|
{
|
|
LPCHROME pIChrome = NULL;
|
|
|
|
if ( pUnk ) {
|
|
pUnk->QueryInterface( IID_IChrome, (LPVOID *) &pIChrome);
|
|
ASSERT(pIChrome);
|
|
}
|
|
|
|
if ( m_pIChrome == pIChrome ) {
|
|
return;
|
|
}
|
|
|
|
if ( m_pIChrome ) {
|
|
m_pIChrome->Release();
|
|
}
|
|
|
|
m_pIChrome = pIChrome;
|
|
|
|
if ( m_pIChrome ) {
|
|
LPNSSTATUSBAR pIStatusBar = NULL;
|
|
m_pIChrome->QueryInterface( IID_INSStatusBar, (LPVOID *) &pIStatusBar );
|
|
if ( pIStatusBar ) {
|
|
pIStatusBar->SetProgress( CASTINT(m_lPercent) );
|
|
pIStatusBar->SetStatusText( (LPCTSTR) m_csProgress );
|
|
pIStatusBar->Release();
|
|
}
|
|
if ( m_bAnimated ) {
|
|
m_pIChrome->StartAnimation();
|
|
} else {
|
|
m_pIChrome->StopAnimation();
|
|
}
|
|
}
|
|
}
|
|
|
|
void CMailNewsCX::SetProgressBarPercent(MWContext *pContext, int32 lPercent ) {
|
|
// Ensure the safety of the value.
|
|
|
|
lPercent = lPercent < 0 ? 0 : ( lPercent > 100 ? 100 : lPercent );
|
|
|
|
if ( m_lPercent == lPercent ) {
|
|
return;
|
|
}
|
|
|
|
m_lPercent = lPercent;
|
|
if (m_pIChrome) {
|
|
LPNSSTATUSBAR pIStatusBar = NULL;
|
|
m_pIChrome->QueryInterface( IID_INSStatusBar, (LPVOID *) &pIStatusBar );
|
|
if ( pIStatusBar ) {
|
|
pIStatusBar->SetProgress( CASTINT(lPercent) );
|
|
pIStatusBar->Release();
|
|
}
|
|
}
|
|
}
|
|
|
|
void CMailNewsCX::Progress(MWContext *pContext, const char *pMessage) {
|
|
m_csProgress = pMessage;
|
|
if ( m_pIChrome ) {
|
|
LPNSSTATUSBAR pIStatusBar = NULL;
|
|
m_pIChrome->QueryInterface( IID_INSStatusBar, (LPVOID *) &pIStatusBar );
|
|
if ( pIStatusBar ) {
|
|
pIStatusBar->SetStatusText( pMessage );
|
|
pIStatusBar->Release();
|
|
}
|
|
}
|
|
}
|
|
|
|
int32 CMailNewsCX::QueryProgressPercent() {
|
|
return m_lPercent;
|
|
}
|
|
|
|
void CMailNewsCX::SetDocTitle( MWContext *pContext, char *pTitle )
|
|
{
|
|
}
|
|
|
|
void CMailNewsCX::StartAnimation()
|
|
{
|
|
m_bAnimated = TRUE;
|
|
if ( m_pIChrome ) {
|
|
m_pIChrome->StartAnimation();
|
|
}
|
|
}
|
|
|
|
void CMailNewsCX::StopAnimation()
|
|
{
|
|
m_bAnimated = FALSE;
|
|
if ( m_pIChrome ) {
|
|
m_pIChrome->StopAnimation();
|
|
}
|
|
}
|
|
|
|
void CMailNewsCX::AllConnectionsComplete(MWContext *pContext)
|
|
{
|
|
// Call the base.
|
|
CStubsCX::AllConnectionsComplete(pContext);
|
|
|
|
// Okay, stop the animation.
|
|
StopAnimation();
|
|
|
|
// Also, we can clear the progress bar now.
|
|
m_lPercent = 0;
|
|
if ( m_pIChrome ) {
|
|
LPNSSTATUSBAR pIStatusBar = NULL;
|
|
m_pIChrome->QueryInterface( IID_INSStatusBar, (LPVOID *) &pIStatusBar );
|
|
if ( pIStatusBar ) {
|
|
pIStatusBar->SetProgress( 0 );
|
|
pIStatusBar->Release();
|
|
}
|
|
}
|
|
if (m_pFrame) {
|
|
m_pFrame->SendMessageToDescendants(WM_IDLEUPDATECMDUI, (WPARAM)TRUE, (LPARAM)0);
|
|
}
|
|
}
|
|
|
|
void CMailNewsCX::UpdateStopState( MWContext *pContext )
|
|
{
|
|
if (m_pFrame) {
|
|
m_pFrame->SendMessageToDescendants(WM_IDLEUPDATECMDUI, (WPARAM)TRUE, (LPARAM)0);
|
|
}
|
|
}
|
|
|
|
CWnd *CMailNewsCX::GetDialogOwner() const {
|
|
return m_pFrame;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMailNewsFrame
|
|
|
|
#ifndef _AFXDLL
|
|
#undef new
|
|
#endif
|
|
IMPLEMENT_DYNCREATE(CMailNewsFrame, CGenericFrame)
|
|
IMPLEMENT_DYNCREATE(CMsgListFrame, CMailNewsFrame)
|
|
#ifndef _AFXDLL
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
|
|
STDMETHODIMP CMailNewsFrame::QueryInterface(REFIID refiid, LPVOID * ppv)
|
|
{
|
|
*ppv = NULL;
|
|
if (IsEqualIID(refiid,IID_IUnknown))
|
|
*ppv = (LPUNKNOWN) this;
|
|
else if (IsEqualIID(refiid,IID_IMailFrame))
|
|
*ppv = (LPMAILFRAME) this;
|
|
|
|
if (*ppv != NULL) {
|
|
AddRef();
|
|
return NOERROR;
|
|
}
|
|
|
|
return ResultFromScode(E_NOINTERFACE);
|
|
}
|
|
|
|
STDMETHODIMP_(ULONG) CMailNewsFrame::AddRef(void)
|
|
{
|
|
return ++m_ulRefCount;
|
|
}
|
|
|
|
STDMETHODIMP_(ULONG) CMailNewsFrame::Release(void)
|
|
{
|
|
ULONG ulRef;
|
|
ulRef = --m_ulRefCount;
|
|
if (m_ulRefCount == 0)
|
|
delete this;
|
|
return ulRef;
|
|
}
|
|
|
|
// IMailFrame interface
|
|
|
|
CMailNewsFrame *CMailNewsFrame::GetMailNewsFrame()
|
|
{
|
|
return (CMailNewsFrame *) this;
|
|
}
|
|
|
|
MSG_Pane *CMailNewsFrame::GetPane()
|
|
{
|
|
return m_pPane;
|
|
}
|
|
|
|
void CMailNewsFrame::PaneChanged(MSG_Pane *pane, XP_Bool asynchronous,
|
|
MSG_PANE_CHANGED_NOTIFY_CODE notify, int32 value)
|
|
{
|
|
}
|
|
|
|
void CMailNewsFrame::AttachmentCount(MSG_Pane *messagepane, void* closure,
|
|
int32 numattachments, XP_Bool finishedloading)
|
|
{
|
|
if (m_pMessagePane != NULL)
|
|
{
|
|
m_nAttachmentCount = numattachments;
|
|
// OK, so 64 is arbitrary, but a bunch of menu ranges need to
|
|
// be changed if it changes.
|
|
if (m_nAttachmentCount > 64)
|
|
m_nAttachmentCount = 64;
|
|
|
|
if (m_pAttachmentData)
|
|
MSG_FreeAttachmentList(m_pMessagePane, m_pAttachmentData);
|
|
m_pAttachmentData = NULL;
|
|
MSG_GetViewedAttachments(m_pMessagePane, &m_pAttachmentData, NULL);
|
|
|
|
if (m_pMessageView) {
|
|
if (numattachments == 0)
|
|
m_pMessageView->ShowAttachments(FALSE);
|
|
m_pMessageView->SetAttachments( numattachments, m_pAttachmentData );
|
|
}
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::UserWantsToSeeAttachments(MSG_Pane *messagepane, void* closure)
|
|
{
|
|
if (m_pMessagePane != NULL)
|
|
{
|
|
if (m_pMessageView)
|
|
m_pMessageView->ShowAttachments(!m_pMessageView->AttachmentsVisible());
|
|
}
|
|
}
|
|
|
|
CMailNewsFrame::CMailNewsFrame()
|
|
{
|
|
m_bNews = FALSE;
|
|
m_bCategory = FALSE;
|
|
|
|
// Folder Frame is the only one that's different
|
|
m_iMessageMenuPos = 4;
|
|
m_iMoveMenuPos = 6;
|
|
m_iCopyMenuPos = 7;
|
|
|
|
m_iFileMenuPos = 0;
|
|
m_iAttachMenuPos = 3;
|
|
|
|
m_pPane = NULL;
|
|
m_pMessagePane = NULL;
|
|
m_pMaster = NULL;
|
|
m_ulRefCount = 1; // Don't auto delete
|
|
m_pOutliner = NULL;
|
|
m_pInfoBar = NULL;
|
|
|
|
m_hAccel = NULL;
|
|
|
|
m_pAttachmentData = NULL;
|
|
m_nAttachmentCount = 0;
|
|
m_pMessageView = NULL;
|
|
}
|
|
|
|
//
|
|
// The menu gets cleaned up on window destruction but we need
|
|
// to delete our accelerator table ourselves
|
|
//
|
|
CMailNewsFrame::~CMailNewsFrame()
|
|
{
|
|
if(m_hAccelTable != NULL) {
|
|
#ifdef _WIN32
|
|
VERIFY(::DestroyAcceleratorTable( m_hAccelTable ));
|
|
#else
|
|
::FreeResource((HGLOBAL)m_hAccelTable);
|
|
#endif
|
|
m_hAccelTable = NULL;
|
|
}
|
|
|
|
delete m_pInfoBar;
|
|
|
|
if ( m_hAccel )
|
|
#ifdef _WIN32
|
|
::DestroyAcceleratorTable( m_hAccel );
|
|
#else
|
|
::FreeResource( (HGLOBAL)m_hAccel );
|
|
#endif
|
|
}
|
|
|
|
C3PaneMailFrame *CMailNewsFrame::GetLastThreadFrame(CFrameWnd *pExclude)
|
|
{
|
|
CFrameGlue *pGlue = NULL;
|
|
|
|
// Loop through all active frames.
|
|
POSITION rIndex = m_cplActiveFrameStack.GetHeadPosition();
|
|
|
|
while( rIndex != NULL ) {
|
|
pGlue = (CFrameGlue *) m_cplActiveFrameStack.GetNext( rIndex );
|
|
|
|
if( pGlue->GetFrameWnd() ) {
|
|
if ( pGlue->GetFrameWnd()->IsKindOf(RUNTIME_CLASS(C3PaneMailFrame)) ) {
|
|
// Win16 somehow gets the newest frame on the stack before
|
|
// I want it to, so I need to force it to be skipped
|
|
if (pGlue->GetFrameWnd() != pExclude)
|
|
return (C3PaneMailFrame *) pGlue->GetFrameWnd();
|
|
}
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
CMessageFrame *CMailNewsFrame::GetLastMessageFrame(CFrameWnd *pExclude)
|
|
{
|
|
CFrameGlue *pGlue = NULL;
|
|
|
|
// Loop through all active frames.
|
|
POSITION rIndex = m_cplActiveFrameStack.GetHeadPosition();
|
|
|
|
while( rIndex != NULL ) {
|
|
pGlue = (CFrameGlue *) m_cplActiveFrameStack.GetNext( rIndex );
|
|
|
|
if( pGlue->GetFrameWnd() ) {
|
|
if ( pGlue->GetFrameWnd()->IsKindOf(RUNTIME_CLASS(CMessageFrame)) ) {
|
|
// Win16 somehow gets the newest frame on the stack before
|
|
// I want it to, so I need to force it to be skipped
|
|
if (pGlue->GetFrameWnd() != pExclude)
|
|
return (CMessageFrame *) pGlue->GetFrameWnd();
|
|
}
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
|
|
extern int iLowerColors;
|
|
extern int iLowerSystemColors;
|
|
|
|
BOOL CMailNewsFrame::LoadAccelerators( UINT nID )
|
|
{
|
|
return LoadAccelerators(MAKEINTRESOURCE(nID));
|
|
}
|
|
|
|
BOOL CMailNewsFrame::LoadAccelerators( LPCSTR lpszResource )
|
|
{
|
|
BOOL bSuccess = FALSE;
|
|
|
|
VERIFY( m_hAccel = ::LoadAccelerators(AfxGetResourceHandle(), lpszResource ));
|
|
if ( m_hAccel )
|
|
bSuccess = TRUE;
|
|
|
|
return bSuccess;
|
|
}
|
|
|
|
void CMailNewsFrame::ActivateFrame( int nCmdShow )
|
|
{
|
|
nCmdShow = (nCmdShow == -1) ? (IsIconic() ? SW_RESTORE : SW_SHOW) : nCmdShow;
|
|
|
|
#ifdef _WIN32
|
|
SetForegroundWindow();
|
|
#else
|
|
SetActiveWindow();
|
|
#endif
|
|
|
|
CGenericFrame::ActivateFrame( nCmdShow );
|
|
}
|
|
|
|
BOOL CMailNewsFrame::PreCreateWindow( CREATESTRUCT& cs )
|
|
{
|
|
BOOL res = CGenericFrame::PreCreateWindow(cs);
|
|
|
|
if (!sysInfo.m_bWin4) {
|
|
if (m_bPreCreated) {
|
|
cs.lpszClass = AfxRegisterWndClass(CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW,
|
|
::LoadCursor(NULL, IDC_ARROW),
|
|
(HBRUSH)(COLOR_WINDOW+1),
|
|
NULL);
|
|
cs.hInstance = AfxGetInstanceHandle();
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
BOOL CMailNewsFrame::PreTranslateMessage( MSG *pMsg )
|
|
{
|
|
if ( pMsg->message == WM_KEYDOWN) {
|
|
CWinCX* pContext = GetActiveWinContext();
|
|
|
|
// Determine if keystroke is destined for a contained window
|
|
HWND hwnd = pMsg->hwnd;
|
|
LONG lStyle = GetWindowLong(hwnd, GWL_STYLE);
|
|
while ((lStyle & WS_CHILD) && (hwnd = ::GetParent(hwnd))) {
|
|
lStyle = GetWindowLong(hwnd, GWL_STYLE);
|
|
}
|
|
|
|
if (hwnd == m_hWnd && pContext) {
|
|
HWND hwndFocus = ::GetFocus();
|
|
HWND hwndView = pContext->GetPane();
|
|
|
|
if ( !::IsChild( hwndView, hwndFocus ) ) {
|
|
// Give accelerators first shot
|
|
if ( TranslateAccelerator( m_hWnd, m_hAccel, pMsg ) ) {
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return CGenericFrame::PreTranslateMessage( pMsg );
|
|
}
|
|
|
|
void CMailNewsFrame::GetMessageString( UINT nID, CString& rMessage ) const
|
|
{
|
|
MSG_FolderInfo *folderInfo = GetCurFolder();
|
|
MSG_FolderLine folderLine;
|
|
folderLine.flags = 0;
|
|
if ( folderInfo ) {
|
|
MSG_GetFolderLineById( WFE_MSGGetMaster(), folderInfo, &folderLine );
|
|
}
|
|
|
|
CString csFull = "";
|
|
|
|
switch (nID) {
|
|
case ID_EDIT_DELETEMESSAGE:
|
|
if (m_bNews)
|
|
csFull.LoadString( IDS_STATUS_CANCELMESSAGE );
|
|
break;
|
|
|
|
case ID_EDIT_DELETEFOLDER:
|
|
case ID_POPUP_DELETEFOLDER:
|
|
if ( folderLine.flags & MSG_FOLDER_FLAG_MAIL ) {
|
|
csFull.LoadString( ID_EDIT_DELETEFOLDER );
|
|
} else if ( folderLine.flags & MSG_FOLDER_FLAG_NEWS_HOST ) {
|
|
rMessage.LoadString( IDS_STATUS_DELETENEWSHOST );
|
|
} else if ( folderLine.flags & MSG_FOLDER_FLAG_NEWSGROUP ) {
|
|
rMessage.LoadString( IDS_STATUS_DELETENEWSGROUP );
|
|
} else {
|
|
rMessage.LoadString( IDS_STATUS_DELETESELECTION );
|
|
}
|
|
break;
|
|
|
|
case ID_FILE_GETNEXT:
|
|
{
|
|
int32 iDownloadMax = 0;
|
|
PREF_GetIntPref("news.max_articles", &iDownloadMax);
|
|
csFull.Format(szLoadString(ID_FILE_GETNEXT), (int) iDownloadMax );
|
|
}
|
|
break;
|
|
|
|
case ID_FILE_NEWFOLDER:
|
|
if (m_bNews) {
|
|
if (m_bCategory)
|
|
csFull.LoadString(ID_FILE_NEWCATEGORY);
|
|
else
|
|
csFull.LoadString(ID_FILE_NEWNEWSGROUP);
|
|
} else {
|
|
csFull.LoadString(ID_FILE_NEWFOLDER);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (nID >= FIRST_MOVE_MENU_ID && nID <= LAST_MOVE_MENU_ID)
|
|
csFull.LoadString(IDS_STATUS_MOVEMESSAGE);
|
|
else if (nID >= FIRST_COPY_MENU_ID && nID <= LAST_COPY_MENU_ID)
|
|
csFull.LoadString(IDS_STATUS_COPYMESSAGE);
|
|
|
|
if (!csFull.IsEmpty()) {
|
|
AfxExtractSubString( rMessage, csFull, 0 );
|
|
} else {
|
|
CGenericFrame::GetMessageString( nID, rMessage );
|
|
}
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CMailNewsFrame, CGenericFrame)
|
|
ON_WM_CREATE()
|
|
ON_WM_PAINT()
|
|
ON_WM_QUERYDRAGICON()
|
|
ON_WM_CLOSE()
|
|
ON_WM_SETFOCUS()
|
|
ON_WM_DESTROY()
|
|
ON_WM_INITMENUPOPUP()
|
|
ON_MESSAGE(NSBUTTONMENUOPEN, OnButtonMenuOpen)
|
|
|
|
// File Menu Commands
|
|
ON_COMMAND(ID_FILE_NEWMESSAGE, OnNew)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_NEWMESSAGE, OnUpdateNew)
|
|
ON_COMMAND(ID_FILE_NEWFOLDER, OnNewFolder)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_NEWFOLDER, OnUpdateNewFolder)
|
|
ON_COMMAND(ID_FILE_NEWNEWSGROUP, OnNewNewsgroup)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_NEWNEWSGROUP, OnUpdateNewNewsgroup)
|
|
ON_COMMAND(ID_FILE_NEWNEWSHOST, OnNewNewshost)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_NEWNEWSHOST, OnUpdateNewNewshost)
|
|
ON_COMMAND(ID_FILE_NEWCATEGORY, OnNewCategory)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_NEWCATEGORY, OnUpdateNewCategory)
|
|
ON_COMMAND(ID_FILE_SAVEMESSAGES, OnSave)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_SAVEMESSAGES, OnUpdateSave)
|
|
ON_COMMAND(ID_FILE_EDITMESSAGE, OnEditMessage)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_EDITMESSAGE, OnUpdateEditMessage)
|
|
ON_COMMAND(ID_FILE_ADDNEWSGROUP, OnAddNewsGroup)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_ADDNEWSGROUP, OnUpdateAddNewsGroup)
|
|
ON_COMMAND(ID_FILE_SUBSCRIBE, OnSubscribe)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_SUBSCRIBE, OnUpdateSubscribe)
|
|
ON_COMMAND(ID_FILE_UNSUBSCRIBE, OnUnsubscribe)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_UNSUBSCRIBE, OnUpdateUnsubscribe)
|
|
#ifdef ON_COMMAND_RANGE
|
|
ON_COMMAND_RANGE( FIRST_ATTACH_MENU_ID, LAST_ATTACH_MENU_ID, OnOpenAttach )
|
|
ON_UPDATE_COMMAND_UI_RANGE( FIRST_ATTACH_MENU_ID, LAST_ATTACH_MENU_ID, OnUpdateOpenAttach )
|
|
ON_COMMAND_RANGE( FIRST_SAVEATTACH_MENU_ID, LAST_SAVEATTACH_MENU_ID, OnSaveAttach )
|
|
ON_UPDATE_COMMAND_UI_RANGE( FIRST_SAVEATTACH_MENU_ID, LAST_SAVEATTACH_MENU_ID, OnUpdateSaveAttach )
|
|
ON_COMMAND_RANGE( FIRST_ATTACHPROP_MENU_ID, LAST_ATTACHPROP_MENU_ID, OnAttachProperties )
|
|
ON_UPDATE_COMMAND_UI_RANGE( FIRST_ATTACHPROP_MENU_ID, LAST_ATTACHPROP_MENU_ID, OnUpdateAttachProperties )
|
|
#endif
|
|
|
|
// Edit Menu Commands
|
|
ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
|
|
ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
|
|
ON_COMMAND(ID_EDIT_REDO, OnEditRedo)
|
|
ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, OnUpdateEditRedo)
|
|
ON_COMMAND(ID_EDIT_DELETEFOLDER, OnDeleteFolder)
|
|
ON_UPDATE_COMMAND_UI(ID_EDIT_DELETEFOLDER, OnUpdateDeleteFolder)
|
|
ON_COMMAND(ID_POPUP_DELETEFOLDER, OnDeleteFolder)
|
|
ON_UPDATE_COMMAND_UI(ID_POPUP_DELETEFOLDER, OnUpdateDeleteFolder)
|
|
ON_COMMAND(ID_EDIT_DELETEMESSAGE, OnDeleteMessage)
|
|
ON_COMMAND(ID_EDIT_REALLYDELETEMESSAGE, OnReallyDeleteMessage)
|
|
ON_UPDATE_COMMAND_UI(ID_EDIT_DELETEMESSAGE, OnUpdateDeleteMessage)
|
|
ON_COMMAND(ID_EDIT_SELECTALLMESSAGES, OnSelectAll)
|
|
ON_UPDATE_COMMAND_UI(ID_EDIT_SELECTALLMESSAGES, OnUpdateSelectAll)
|
|
ON_COMMAND(ID_EDIT_SELECTALL, OnSelectAll)
|
|
ON_UPDATE_COMMAND_UI(ID_EDIT_SELECTALL, OnUpdateSelectAll)
|
|
ON_COMMAND(ID_EDIT_SEARCH, OnSearch)
|
|
ON_COMMAND(ID_EDIT_FILTER, OnFilter)
|
|
ON_COMMAND(ID_EDIT_MANAGEMAILACCOUNT, OnSetupWizard)
|
|
ON_UPDATE_COMMAND_UI(ID_EDIT_MANAGEMAILACCOUNT, OnUpdateSetupWizard)
|
|
ON_COMMAND(ID_EDIT_SERVER, OnServerStuff)
|
|
ON_UPDATE_COMMAND_UI(ID_EDIT_SERVER, OnUpdateServerStuff)
|
|
|
|
// View Menu Items
|
|
ON_COMMAND(ID_MAIL_SORTAGAIN, OnSortAgain)
|
|
ON_UPDATE_COMMAND_UI(ID_MAIL_SORTAGAIN, OnUpdateSortAgain)
|
|
ON_COMMAND(ID_SORT_ASCENDING, OnAscending)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_ASCENDING, OnUpdateAscending)
|
|
ON_COMMAND(ID_SORT_DESCENDING, OnDescending)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_DESCENDING, OnUpdateDescending)
|
|
ON_COMMAND(ID_SORT_BYDATE, OnSortDate)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_BYDATE, OnUpdateSortDate)
|
|
ON_COMMAND(ID_SORT_BYSUBJECT, OnSortSubject)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_BYSUBJECT, OnUpdateSortSubject)
|
|
ON_COMMAND(ID_SORT_BYSENDER, OnSortSender)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_BYSENDER, OnUpdateSortSender)
|
|
ON_COMMAND(ID_SORT_BYMESSAGENUMBER, OnSortNumber)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_BYMESSAGENUMBER, OnUpdateSortNumber)
|
|
ON_COMMAND(ID_SORT_BYTHREAD, OnThread)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_BYTHREAD, OnUpdateThread)
|
|
ON_COMMAND(ID_SORT_BYPRIORITY, OnSortPriority)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_BYPRIORITY, OnUpdateSortPriority)
|
|
ON_COMMAND(ID_SORT_BYSTATUS, OnSortStatus)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_BYSTATUS, OnUpdateSortStatus)
|
|
ON_COMMAND(ID_SORT_BYSIZE, OnSortSize)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_BYSIZE, OnUpdateSortSize)
|
|
ON_COMMAND(ID_SORT_BYFLAG, OnSortFlag)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_BYFLAG, OnUpdateSortFlag)
|
|
ON_COMMAND(ID_SORT_BYUNREAD, OnSortUnread)
|
|
ON_UPDATE_COMMAND_UI(ID_SORT_BYUNREAD, OnUpdateSortUnread)
|
|
ON_COMMAND(ID_VIEW_ALLTHREADS, OnViewAll)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_ALLTHREADS, OnUpdateViewAll)
|
|
ON_COMMAND(ID_VIEW_KILLEDTHREADS, OnViewKilled)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_KILLEDTHREADS, OnUpdateViewKilled)
|
|
ON_COMMAND(ID_VIEW_WATCHEDTHREADS, OnViewWatched)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_WATCHEDTHREADS, OnUpdateViewWatched)
|
|
ON_COMMAND(ID_VIEW_NEWTHREADS, OnViewNew)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_NEWTHREADS, OnUpdateViewNew)
|
|
ON_COMMAND(ID_VIEW_NEWONLY, OnViewNewOnly)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_NEWONLY, OnUpdateViewNewOnly)
|
|
ON_COMMAND(ID_VIEW_HEADERS_MICRO, OnHeadersMicro)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_HEADERS_MICRO, OnUpdateHeadersMicro)
|
|
ON_COMMAND(ID_VIEW_HEADERS_SHORT, OnHeadersShort)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_HEADERS_SHORT, OnUpdateHeadersShort)
|
|
ON_COMMAND(ID_VIEW_HEADERS_ALL, OnHeadersAll)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_HEADERS_ALL, OnUpdateHeadersAll)
|
|
ON_COMMAND(ID_VIEW_ATTACHINLINE,OnViewInline)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_ATTACHINLINE,OnUpdateViewInline)
|
|
ON_COMMAND(ID_VIEW_ATTACHLINKS,OnViewAsLinks)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_ATTACHLINKS,OnUpdateViewAsLinks)
|
|
|
|
// Navigation Commands
|
|
ON_COMMAND(ID_MESSAGE_NEXT, OnNext)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_NEXT, OnUpdateNext)
|
|
ON_COMMAND(ID_MESSAGE_NEXTNEWSGROUP, OnNextFolder)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_NEXTNEWSGROUP, OnUpdateNextFolder)
|
|
ON_COMMAND(ID_MESSAGE_NEXTUNREAD, OnNextUnread)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_NEXTUNREAD, OnUpdateNextUnread)
|
|
ON_COMMAND(ID_MESSAGE_PREVIOUS, OnPrevious)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_PREVIOUS, OnUpdatePrevious)
|
|
ON_COMMAND(ID_MESSAGE_PREVIOUSUNREAD, OnPreviousUnread)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_PREVIOUSUNREAD, OnUpdatePreviousUnread)
|
|
ON_COMMAND(ID_MESSAGE_NEXTUNREADTHREAD, OnNextUnreadThread)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_NEXTUNREADTHREAD, OnUpdateNextUnreadThread)
|
|
ON_COMMAND(ID_MESSAGE_NEXTUNREADNEWSGROUP, OnNextUnreadFolder)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_NEXTUNREADNEWSGROUP, OnUpdateNextUnreadFolder)
|
|
ON_COMMAND(ID_MESSAGE_PREVIOUSFLAGGED, OnPreviousFlagged)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_PREVIOUSFLAGGED, OnUpdatePreviousFlagged)
|
|
ON_COMMAND(ID_MESSAGE_NEXTFLAGGED, OnNextFlagged)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_NEXTFLAGGED, OnUpdateNextFlagged)
|
|
ON_COMMAND(ID_MESSAGE_FIRSTFLAGGED, OnFirstFlagged)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_FIRSTFLAGGED, OnUpdateFirstFlagged)
|
|
|
|
/* hack for message backtracking */
|
|
ON_COMMAND(ID_NAVIGATE_MSG_BACK, OnGoBack)
|
|
ON_UPDATE_COMMAND_UI(ID_NAVIGATE_MSG_BACK, OnUpdateGoBack)
|
|
ON_COMMAND(ID_NAVIGATE_MSG_FORWARD, OnGoForward)
|
|
ON_UPDATE_COMMAND_UI(ID_NAVIGATE_MSG_FORWARD, OnUpdateGoForward)
|
|
|
|
// Message menu items
|
|
ON_COMMAND(ID_FILE_GETNEWMAIL, OnGetMail)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_GETNEWMAIL, OnUpdateGetMail)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_REPLYBUTTON, OnUpdateReply)
|
|
ON_COMMAND(ID_FILE_GETMOREMESSAGES, OnGetMail)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_GETMOREMESSAGES, OnUpdateGetMail)
|
|
ON_COMMAND(ID_FILE_GETNEXT, OnGetNext)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_GETNEXT, OnUpdateGetNext)
|
|
ON_COMMAND(ID_FILE_DELIVERMAILNOW,OnDeliverNow)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_SENDUNSENT,OnUpdateDeliverNow)
|
|
ON_COMMAND(ID_MESSAGE_SENDUNSENT, OnDeliverNow)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_DELIVERMAILNOW,OnUpdateDeliverNow)
|
|
ON_COMMAND(ID_NEWS_POSTNEW, OnPostNew)
|
|
ON_UPDATE_COMMAND_UI(ID_NEWS_POSTNEW, OnUpdatePostNew)
|
|
ON_COMMAND(ID_MESSAGE_REPLY, OnReply)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_REPLY, OnUpdateReply)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_MARKBUTTON, OnUpdateMarkAllRead )
|
|
ON_COMMAND(ID_MESSAGE_REPLYALL, OnReplyAll)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_REPLYALL, OnUpdateReplyAll)
|
|
ON_COMMAND(ID_MESSAGE_FORWARD, OnForward)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_FORWARD, OnUpdateForward)
|
|
ON_COMMAND(ID_MESSAGE_FORWARDQUOTED, OnForwardQuoted)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_FORWARDQUOTED, OnUpdateForwardQuoted)
|
|
ON_COMMAND(ID_MESSAGE_POSTREPLY, OnPostReply)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_POSTREPLY, OnUpdatePostReply)
|
|
ON_COMMAND(ID_MESSAGE_POSTANDREPLY, OnPostAndMailReply)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_POSTANDREPLY, OnUpdatePostAndMailReply)
|
|
ON_COMMAND(ID_MESSAGE_KILL, OnKill )
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_KILL, OnUpdateKill )
|
|
ON_COMMAND(ID_MESSAGE_RETRIEVESELECTED, OnRetrieveSelected)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_RETRIEVESELECTED, OnUpdateRetrieveSelected)
|
|
ON_COMMAND(ID_MESSAGE_WATCH, OnWatch )
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_WATCH, OnUpdateWatch )
|
|
ON_COMMAND(ID_MESSAGE_MARKASREAD, OnMarkMessagesRead)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_MARKASREAD, OnUpdateMarkMessagesRead)
|
|
ON_COMMAND(ID_MESSAGE_MARKASUNREAD, OnMarkMessagesUnread)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_MARKASUNREAD, OnUpdateMarkMessagesUnread)
|
|
ON_COMMAND(ID_MESSAGE_MARKTHREADREAD, OnMarkThreadRead )
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_MARKTHREADREAD, OnUpdateMarkThreadRead )
|
|
ON_COMMAND(ID_MESSAGE_MARKALLREAD, OnMarkAllRead )
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_MARKALLREAD, OnUpdateMarkAllRead )
|
|
ON_COMMAND(ID_MESSAGE_MARKALLREAD, OnMarkAllRead )
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_MARKALLREAD, OnUpdateMarkAllRead )
|
|
ON_COMMAND(ID_MESSAGE_CATCHUP, OnCatchup)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_CATCHUP, OnUpdateCatchup)
|
|
ON_COMMAND(ID_MESSAGE_MARKASLATER, OnMarkMessagesLater)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_MARKASLATER, OnUpdateMarkMessagesLater)
|
|
ON_COMMAND(ID_MESSAGE_RETRIEVEOFFLINE, OnRetrieveOffline)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_RETRIEVEOFFLINE, OnUpdateRetrieveOffline)
|
|
ON_COMMAND(ID_MESSAGE_MARK, OnMarkMessages )
|
|
ON_UPDATE_COMMAND_UI( ID_MESSAGE_MARK, OnUpdateMarkMessages )
|
|
ON_COMMAND(ID_MESSAGE_UNMARK, OnUnmarkMessages )
|
|
ON_UPDATE_COMMAND_UI( ID_MESSAGE_UNMARK, OnUpdateUnmarkMessages )
|
|
ON_COMMAND(ID_EDIT_CANCELMESSAGE, OnCancelMessage)
|
|
ON_UPDATE_COMMAND_UI(ID_EDIT_CANCELMESSAGE, OnUpdateCancelMessage)
|
|
ON_COMMAND(ID_NAVIGATE_INTERRUPT, OnInterrupt)
|
|
ON_UPDATE_COMMAND_UI(ID_NAVIGATE_INTERRUPT, OnUpdateInterrupt)
|
|
ON_COMMAND(ID_MAIL_WRAPLONGLINES,OnWrapLongLines)
|
|
ON_UPDATE_COMMAND_UI(ID_MAIL_WRAPLONGLINES,OnUpdateWrapLongLines)
|
|
ON_COMMAND(ID_VIEW_ROT13,OnViewRot13)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_ROT13,OnUpdateViewRot13)
|
|
|
|
// Organize Menu
|
|
ON_COMMAND(ID_FILE_COMPRESSTHISFOLDER, OnCompressFolder)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_COMPRESSTHISFOLDER, OnUpdateCompressFolder)
|
|
ON_COMMAND(ID_FOLDER_RENAME, OnRenameFolder)
|
|
ON_UPDATE_COMMAND_UI(ID_FOLDER_RENAME, OnUpdateRenameFolder)
|
|
ON_COMMAND(ID_FILE_COMPRESSALLFOLDERS, OnCompressAll)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_COMPRESSALLFOLDERS, OnUpdateCompressAll)
|
|
ON_COMMAND(ID_FILE_EMPTYTRASHFOLDER, OnEmptyTrash)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_EMPTYTRASHFOLDER, OnUpdateEmptyTrash)
|
|
ON_COMMAND(ID_MESSAGE_ADDSENDER, OnAddToAddressBook)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_ADDSENDER, OnUpdateAddToAddressBook)
|
|
ON_COMMAND(ID_MESSAGE_ADDALL, OnAddAllToAddressBook)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_ADDALL, OnUpdateAddAllToAddressBook)
|
|
|
|
// Non-MSG Commands
|
|
ON_COMMAND(ID_OPTIONS_TIPS, OnTips)
|
|
ON_COMMAND(ID_MESSAGE_FILE, OnQuickFile)
|
|
ON_UPDATE_COMMAND_UI(ID_MESSAGE_FILE, OnUpdateQuickFile)
|
|
ON_COMMAND(ID_PRIORITY_LOWEST, OnPriorityLowest)
|
|
ON_UPDATE_COMMAND_UI(ID_PRIORITY_LOWEST, OnUpdatePriority)
|
|
ON_COMMAND(ID_PRIORITY_LOW, OnPriorityLow)
|
|
ON_UPDATE_COMMAND_UI(ID_PRIORITY_LOW, OnUpdatePriority)
|
|
ON_COMMAND(ID_PRIORITY_NORMAL, OnPriorityNormal)
|
|
ON_UPDATE_COMMAND_UI(ID_PRIORITY_NORMAL, OnUpdatePriority)
|
|
ON_COMMAND(ID_PRIORITY_HIGH, OnPriorityHigh)
|
|
ON_UPDATE_COMMAND_UI(ID_PRIORITY_HIGH, OnUpdatePriority)
|
|
ON_COMMAND(ID_PRIORITY_HIGHEST, OnPriorityHighest)
|
|
ON_UPDATE_COMMAND_UI(ID_PRIORITY_HIGHEST, OnUpdatePriority)
|
|
ON_UPDATE_COMMAND_UI(ID_SECURITY, OnUpdateSecurity)
|
|
ON_UPDATE_COMMAND_UI(IDS_SECURITY_STATUS, OnUpdateSecureStatus)
|
|
ON_UPDATE_COMMAND_UI(IDS_SIGNED_STATUS, OnUpdateSecureStatus)
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CMailNewsFrame::OnCommand( WPARAM wParam, LPARAM lParam )
|
|
{
|
|
UINT nID = wParam;
|
|
|
|
if (nID == ID_FILE_SUBSCRIBE)
|
|
{
|
|
MSG_Host* pThisHost = (MSG_Host*)lParam;
|
|
DoSubscribe(pThisHost);
|
|
return TRUE;
|
|
}
|
|
|
|
#ifndef ON_COMMAND_RANGE
|
|
|
|
if ( nID >= FIRST_ATTACH_MENU_ID && nID <= LAST_ATTACH_MENU_ID ) {
|
|
OnOpenAttach( nID );
|
|
return TRUE;
|
|
} else if (nID >= FIRST_SAVEATTACH_MENU_ID && nID <= LAST_SAVEATTACH_MENU_ID) {
|
|
OnSaveAttach( nID );
|
|
return TRUE;
|
|
} else if (nID >= FIRST_ATTACHPROP_MENU_ID && nID <= LAST_ATTACHPROP_MENU_ID) {
|
|
OnAttachProperties( nID );
|
|
return TRUE;
|
|
}
|
|
#endif
|
|
|
|
return CGenericFrame::OnCommand( wParam, lParam );
|
|
}
|
|
|
|
#ifndef ON_COMMAND_RANGE
|
|
|
|
BOOL CMailNewsFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
|
|
{
|
|
if (nCode == CN_UPDATE_COMMAND_UI) {
|
|
CCmdUI* pCmdUI = (CCmdUI*)pExtra;
|
|
if ( nID >= FIRST_ATTACH_MENU_ID && nID <= LAST_ATTACH_MENU_ID ) {
|
|
OnUpdateOpenAttach( pCmdUI );
|
|
return TRUE;
|
|
} else if (nID >= FIRST_SAVEATTACH_MENU_ID && nID <= LAST_SAVEATTACH_MENU_ID) {
|
|
OnUpdateSaveAttach( pCmdUI );
|
|
return TRUE;
|
|
} else if (nID >= FIRST_ATTACHPROP_MENU_ID && nID <= LAST_ATTACHPROP_MENU_ID) {
|
|
OnUpdateAttachProperties( pCmdUI );
|
|
return TRUE;
|
|
}
|
|
}
|
|
return CGenericFrame::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
|
|
}
|
|
|
|
#endif
|
|
|
|
static int iMailFrameCount = 0;
|
|
|
|
int CMailNewsFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
int res = CGenericFrame::OnCreate(lpCreateStruct);
|
|
|
|
iMailFrameCount++;
|
|
|
|
return res;
|
|
}
|
|
|
|
static void _ShutDownFrameCallBack(HWND hwnd, MSG_Pane *pane, void * closure)
|
|
{
|
|
if (::IsWindow(hwnd)) {
|
|
::ShowWindow(hwnd,SW_SHOW);
|
|
::UpdateWindow(hwnd);
|
|
}
|
|
|
|
if (pane)
|
|
MSG_CleanupFolders(pane);
|
|
}
|
|
|
|
void CMailNewsFrame::OnPaint()
|
|
{
|
|
// To switch icons on < version 4, we have to override paint
|
|
// when the window is iconic
|
|
if (!sysInfo.m_bWin4 && IsIconic()) {
|
|
CPaintDC dc(this);
|
|
UINT nIDIcon = m_bNews ? IDR_NEWSTHREAD : IDR_MAILTHREAD;
|
|
if (IsKindOf(RUNTIME_CLASS(CFolderFrame)))
|
|
nIDIcon = IDR_MAILFRAME;
|
|
HICON hLargeIcon = theApp.LoadIcon(nIDIcon);
|
|
|
|
dc.DrawIcon(0, 0, hLargeIcon);
|
|
} else {
|
|
CGenericFrame::OnPaint();
|
|
}
|
|
}
|
|
|
|
HCURSOR CMailNewsFrame::OnQueryDragIcon()
|
|
{
|
|
UINT nIDIcon = m_bNews ? IDR_NEWSTHREAD : IDR_MAILTHREAD;
|
|
if (IsKindOf(RUNTIME_CLASS(CFolderFrame)))
|
|
nIDIcon = IDR_MAILFRAME;
|
|
|
|
return (HCURSOR) theApp.LoadIcon(nIDIcon);
|
|
}
|
|
|
|
void CMailNewsFrame::OnClose()
|
|
{
|
|
XP_Bool bSelectable = FALSE;
|
|
XP_Bool bPlural = FALSE;
|
|
MSG_COMMAND_CHECK_STATE sState = MSG_Unchecked;
|
|
|
|
if (1 == iMailFrameCount) // this seems to be null when you close a message window dmb
|
|
{
|
|
ASSERT(m_pPane);
|
|
MSG_CommandStatus(m_pPane, MSG_DeliverQueuedMessages, 0, NULL,
|
|
&bSelectable, &sState, NULL, &bPlural);
|
|
|
|
|
|
if (bSelectable && !NET_IsOffline()) {
|
|
CString strTitle;
|
|
VERIFY(strTitle.LoadString(IDS_NETSCAPE_MAIL_TITLE));
|
|
|
|
if (MessageBox(szLoadString(IDS_UNSENT_MESSAGES), strTitle, MB_YESNO) == IDYES) {
|
|
MSG_Command(m_pPane, MSG_DeliverQueuedMessages, 0, NULL );
|
|
return;
|
|
}
|
|
}
|
|
if (MSG_CleanupNeeded(m_pMaster))
|
|
new CProgressDialog(NULL, m_pPane,_ShutDownFrameCallBack,
|
|
NULL,szLoadString(IDS_COMPRESSINGFOLDERS));
|
|
}
|
|
|
|
CGenericFrame::OnClose();
|
|
}
|
|
|
|
void CMailNewsFrame::OnDestroy()
|
|
{
|
|
iMailFrameCount--;
|
|
|
|
MSG_DestroyPane(m_pPane);
|
|
m_pPane = NULL;
|
|
|
|
CGenericFrame::OnDestroy();
|
|
}
|
|
|
|
void CMailNewsFrame::OnInitMenuPopup( CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu )
|
|
{
|
|
AfxLockTempMaps();
|
|
CGenericFrame::OnInitMenuPopup( pPopupMenu, nIndex, bSysMenu );
|
|
|
|
HMENU hmenu = ::GetMenu(m_hWnd);
|
|
if ( m_iMessageMenuPos >= 0 &&
|
|
pPopupMenu->m_hMenu == GetSubMenu(hmenu, m_iMessageMenuPos )) {
|
|
UpdateFileMenus();
|
|
} else if (m_iFileMenuPos >= 0 &&
|
|
pPopupMenu->m_hMenu == GetSubMenu(hmenu, m_iFileMenuPos )) {
|
|
UpdateAttachmentMenus();
|
|
}
|
|
AfxUnlockTempMaps();
|
|
}
|
|
|
|
MSG_FolderInfo *CMailNewsFrame::FolderInfoFromMenuID( MSG_FolderInfo *mailRoot,
|
|
UINT &nBase, UINT nID )
|
|
{
|
|
int i, iCount;
|
|
MSG_FolderInfo **folderInfos;
|
|
MSG_FolderInfo *res = NULL;
|
|
MSG_FolderLine folderLine;
|
|
|
|
if (mailRoot == NULL ) {
|
|
// Loop through top level folderInfos, looking for mail trees.
|
|
|
|
iCount = MSG_GetFolderChildren(m_pMaster, NULL, NULL, NULL);
|
|
folderInfos = new MSG_FolderInfo*[iCount];
|
|
if (folderInfos) {
|
|
MSG_GetFolderChildren(m_pMaster, NULL, folderInfos, iCount);
|
|
|
|
for (i = 0; i < iCount && !res; i++) {
|
|
if (MSG_GetFolderLineById(m_pMaster, folderInfos[i], &folderLine)) {
|
|
if (folderLine.flags & MSG_FOLDER_FLAG_MAIL) {
|
|
res = FolderInfoFromMenuID( folderInfos[i], nBase, nID);
|
|
}
|
|
}
|
|
}
|
|
delete [] folderInfos;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
MSG_GetFolderLineById( m_pMaster, mailRoot, &folderLine );
|
|
if (folderLine.level > 1) { // We've a subfolder
|
|
if ( nID == nBase ) {
|
|
return mailRoot;
|
|
}
|
|
nBase++;
|
|
}
|
|
|
|
iCount = MSG_GetFolderChildren( m_pMaster, mailRoot, NULL, NULL );
|
|
|
|
folderInfos = new MSG_FolderInfo*[iCount];
|
|
ASSERT( folderInfos );
|
|
if (folderInfos) {
|
|
MSG_GetFolderChildren( m_pMaster, mailRoot, folderInfos, iCount );
|
|
|
|
for ( i = 0; i < iCount && !res; i++ ) {
|
|
if ( MSG_GetFolderLineById( m_pMaster, folderInfos[ i ], &folderLine ) ) {
|
|
if ( folderLine.numChildren > 0 ) {
|
|
res = FolderInfoFromMenuID( folderInfos[ i ], nBase, nID );
|
|
} else {
|
|
if ( nID == nBase ) {
|
|
res = folderInfos[ i ];
|
|
} else {
|
|
nBase++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
delete [] folderInfos;
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
MSG_FolderInfo *CMailNewsFrame::FolderInfoFromMenuID( UINT nID )
|
|
{
|
|
UINT nBase = 0;
|
|
if ( nID >= FIRST_MOVE_MENU_ID && nID <= LAST_MOVE_MENU_ID ) {
|
|
nBase = FIRST_MOVE_MENU_ID;
|
|
} else if ( nID >= FIRST_COPY_MENU_ID && nID <= LAST_COPY_MENU_ID ) {
|
|
nBase = FIRST_COPY_MENU_ID;
|
|
} else {
|
|
ASSERT(0);
|
|
return NULL;
|
|
}
|
|
return FolderInfoFromMenuID( NULL, nBase, nID );
|
|
}
|
|
|
|
// Update the menu list for the copy and move submenus
|
|
//
|
|
|
|
void CMailNewsFrame::UpdateMenu( MSG_FolderInfo *mailRoot,
|
|
HMENU hMenu, UINT &nID, int nStart)
|
|
{
|
|
// *** If you change the way this menu is built, you also need to
|
|
// change CMailNewsFrame::FolderInfoFromMenuID and make it the same
|
|
// as CMailQFButton::BuildMenu ***
|
|
|
|
MSG_Master *pMaster = WFE_MSGGetMaster();
|
|
int i, j;
|
|
MSG_FolderInfo **folderInfos;
|
|
int32 iCount;
|
|
MSG_FolderLine folderLine;
|
|
char buffer[_MAX_PATH];
|
|
|
|
j = nStart;
|
|
|
|
if (mailRoot == NULL) {
|
|
// Get rid of old top level menu (deletes submenus, too)
|
|
|
|
int iMenuCount = ::GetMenuItemCount( hMenu );
|
|
for( i = 0; i < iMenuCount; i++)
|
|
::DeleteMenu( hMenu, 0, MF_BYPOSITION );
|
|
|
|
// Loop through top level folderInfos, looking for mail trees.
|
|
|
|
iCount = MSG_GetFolderChildren(pMaster, NULL, NULL, NULL);
|
|
folderInfos = new MSG_FolderInfo*[iCount];
|
|
if (folderInfos) {
|
|
int nLevelTotal = 0;
|
|
BOOL bAddSep = FALSE;
|
|
MSG_GetFolderChildren(pMaster, NULL, folderInfos, iCount);
|
|
|
|
for (i = 0; i < iCount; i++) {
|
|
if (MSG_GetFolderLineById(pMaster, folderInfos[i], &folderLine)) {
|
|
if (folderLine.flags & MSG_FOLDER_FLAG_MAIL) {
|
|
if ( bAddSep ) {
|
|
::AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
|
|
}
|
|
UpdateMenu(folderInfos[i], hMenu, nID, nLevelTotal);
|
|
nLevelTotal = MSG_GetFolderChildren( pMaster, folderInfos[i],
|
|
NULL, NULL);
|
|
bAddSep = TRUE;
|
|
}
|
|
}
|
|
}
|
|
delete [] folderInfos;
|
|
}
|
|
return;
|
|
}
|
|
|
|
MSG_GetFolderLineById( pMaster, mailRoot, &folderLine );
|
|
|
|
if ( folderLine.level > 1 ) { // We're a child folder
|
|
sprintf( buffer, "&%d %s", j, szLoadString(IDS_MAIL_THISFOLDER));
|
|
::AppendMenu( hMenu, MF_STRING, nID, buffer);
|
|
::AppendMenu( hMenu, MF_SEPARATOR, NULL, NULL);
|
|
nID++;
|
|
j++;
|
|
}
|
|
|
|
iCount = MSG_GetFolderChildren( pMaster, mailRoot, NULL, NULL );
|
|
|
|
folderInfos = new MSG_FolderInfo*[iCount];
|
|
if (folderInfos) {
|
|
MSG_GetFolderChildren( pMaster, mailRoot, folderInfos, iCount );
|
|
|
|
for ( i = 0; i < iCount; i++) {
|
|
if ( MSG_GetFolderLineById( pMaster, folderInfos[ i ], &folderLine ) ) {
|
|
if (j < 10) {
|
|
sprintf( buffer, "&%d %s", j, folderLine.name);
|
|
} else if ( j < 36 ) {
|
|
sprintf( buffer, "&%c %s", 'a' + j - 10, folderLine.name);
|
|
} else {
|
|
sprintf( buffer, " %s", folderLine.name);
|
|
}
|
|
|
|
if ( folderLine.numChildren > 0 ) {
|
|
HMENU hNewMenu = ::CreatePopupMenu();
|
|
|
|
UpdateMenu( folderInfos[ i ], hNewMenu, nID);
|
|
|
|
::AppendMenu( hMenu, MF_STRING|MF_POPUP, (UINT) hNewMenu, buffer);
|
|
} else {
|
|
::AppendMenu( hMenu, MF_STRING, nID, buffer);
|
|
nID++;
|
|
}
|
|
j++;
|
|
}
|
|
}
|
|
delete [] folderInfos;
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::UpdateFileMenus()
|
|
{
|
|
HMENU hFrameMenu = ::GetMenu( m_hWnd );
|
|
|
|
ASSERT( hFrameMenu );
|
|
|
|
if( hFrameMenu ) {
|
|
HMENU hMessage = ::GetSubMenu( hFrameMenu, m_iMessageMenuPos );
|
|
|
|
if ( hMessage ) {
|
|
UINT idMove = FIRST_MOVE_MENU_ID;
|
|
UINT idCopy = FIRST_COPY_MENU_ID;
|
|
|
|
HMENU hMove = ::GetSubMenu( hMessage, m_iMoveMenuPos );
|
|
HMENU hCopy = NULL;
|
|
if ( m_iCopyMenuPos > -1 )
|
|
hCopy = ::GetSubMenu( hMessage, m_iCopyMenuPos );
|
|
|
|
// we don't alway have a copy menu
|
|
if( hMove ) {
|
|
UpdateMenu( NULL, hMove, idMove );
|
|
}
|
|
if (hCopy) {
|
|
UpdateMenu( NULL, hCopy, idCopy );
|
|
}
|
|
}
|
|
}
|
|
DrawMenuBar();
|
|
}
|
|
|
|
void CMailNewsFrame::UpdateAttachmentMenus()
|
|
{
|
|
HMENU hFrameMenu = ::GetMenu( m_hWnd );
|
|
|
|
ASSERT( hFrameMenu );
|
|
|
|
if( hFrameMenu ) {
|
|
HMENU hFile = ::GetSubMenu( hFrameMenu, m_iFileMenuPos );
|
|
|
|
if ( hFile ) {
|
|
int i;
|
|
char buffer[_MAX_PATH];
|
|
UINT idAttach = FIRST_ATTACH_MENU_ID;
|
|
HMENU hAttach = ::GetSubMenu( hFile, m_iAttachMenuPos );
|
|
|
|
int iCount = ::GetMenuItemCount( hAttach );
|
|
for( i = 0; i < iCount; i++)
|
|
::DeleteMenu( hAttach, 0, MF_BYPOSITION );
|
|
|
|
if (m_pAttachmentData) {
|
|
for ( i = 0; m_pAttachmentData[i].url; i++ ) {
|
|
const char *name = m_pAttachmentData[i].real_name ?
|
|
m_pAttachmentData[i].real_name :
|
|
szLoadString(IDS_UNTITLED);
|
|
if (i < 10) {
|
|
sprintf( buffer, "&%d %s", i, name);
|
|
} else {
|
|
strcpy(buffer, name);
|
|
}
|
|
::AppendMenu( hAttach, MF_STRING, idAttach + i, buffer);
|
|
}
|
|
} else {
|
|
::AppendMenu( hAttach, MF_STRING, idAttach, szLoadString(IDS_NOATTACHMENTS));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::ModalStatusBegin( int iModalDelay )
|
|
{
|
|
if ( iModalDelay > -1 ) {
|
|
LPNSSTATUSBAR pIStatusBar = NULL;
|
|
m_pChrome->QueryInterface( IID_INSStatusBar, (LPVOID *) &pIStatusBar );
|
|
if ( pIStatusBar ) {
|
|
pIStatusBar->ModalStatus( TRUE, iModalDelay );
|
|
pIStatusBar->Release();
|
|
}
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::ModalStatusEnd()
|
|
{
|
|
LPNSSTATUSBAR pIStatusBar = NULL;
|
|
m_pChrome->QueryInterface( IID_INSStatusBar, (LPVOID *) &pIStatusBar );
|
|
if ( pIStatusBar ) {
|
|
pIStatusBar->ModalStatus( FALSE, 0 );
|
|
pIStatusBar->Release();
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::DoUpdateCommand( CCmdUI* pCmdUI, MSG_CommandType cmd, BOOL bUseCheck )
|
|
{
|
|
XP_Bool bSelectable = FALSE, bPlural = FALSE;
|
|
MSG_COMMAND_CHECK_STATE sState;
|
|
const char *display_string;
|
|
|
|
if (m_pPane) {
|
|
MSG_ViewIndex *indices = NULL;
|
|
int count = 0;
|
|
if (m_pOutliner)
|
|
m_pOutliner->GetSelection(indices, count);
|
|
|
|
MSG_CommandStatus(m_pPane,
|
|
cmd,
|
|
indices, count,
|
|
&bSelectable,
|
|
&sState,
|
|
&display_string,
|
|
&bPlural);
|
|
}
|
|
|
|
pCmdUI->Enable(bSelectable);
|
|
if (bUseCheck)
|
|
pCmdUI->SetCheck(sState == MSG_Checked);
|
|
else
|
|
pCmdUI->SetRadio(sState == MSG_Checked);
|
|
}
|
|
|
|
void CMailNewsFrame::DoCommand( MSG_CommandType msgCommand, int iModalDelay, BOOL bAsync )
|
|
{
|
|
#ifdef DEBUG_WHITEBOX
|
|
QA_Trace("CMailNewsFrame:Do Command parameters = MSG_CommandType %d, iModalDelay %d, bAsync %d",
|
|
(int) msgCommand, iModalDelay, (int) bAsync);
|
|
#endif
|
|
|
|
ModalStatusBegin( iModalDelay );
|
|
|
|
CMailNewsOutliner* pOutliner;
|
|
if (msgCommand == MSG_DeleteFolder &&
|
|
IsKindOf(RUNTIME_CLASS(C3PaneMailFrame)))
|
|
pOutliner = ((C3PaneMailFrame*)this)->GetFolderOutliner();
|
|
else
|
|
pOutliner = m_pOutliner;
|
|
|
|
MSG_ViewIndex *indices = NULL;
|
|
int count = 0;
|
|
if (pOutliner)
|
|
pOutliner->GetSelection(indices, count);
|
|
|
|
#ifdef DEBUG_WHITEBOX
|
|
QA_Trace("Return from GetSelection: count = %d",count);
|
|
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
QA_Trace("indices[%d] = %d",i,*(indices+i));
|
|
}
|
|
#endif
|
|
|
|
MSG_Pane *pPane = pOutliner ? pOutliner->GetPane(): m_pPane;
|
|
MSG_Command(pPane, msgCommand, indices, count);
|
|
|
|
if (!bAsync)
|
|
ModalStatusEnd();
|
|
}
|
|
|
|
void CMailNewsFrame::DoUpdateMessageCommand( CCmdUI* pCmdUI, MSG_CommandType tMenuType, BOOL bUseCheck )
|
|
{
|
|
XP_Bool bSelectable = FALSE, bPlural = FALSE;
|
|
const char *szTitle;
|
|
MSG_COMMAND_CHECK_STATE sState = MSG_Unchecked;
|
|
|
|
if ( m_pMessagePane ) {
|
|
if (m_pOutliner) {
|
|
MsgViewIndex *indices;
|
|
int iCount;
|
|
m_pOutliner->GetSelection( indices, iCount );
|
|
MSG_CommandStatus(m_pMessagePane,
|
|
tMenuType,
|
|
indices, iCount,
|
|
&bSelectable,
|
|
&sState,
|
|
&szTitle,
|
|
&bPlural );
|
|
} else {
|
|
MSG_FolderInfo* folder;
|
|
MessageKey key;
|
|
MSG_ViewIndex viewIndex;
|
|
|
|
MSG_GetCurMessage( m_pMessagePane,
|
|
&folder,
|
|
&key, &viewIndex );
|
|
if ( key != MSG_MESSAGEKEYNONE ) {
|
|
MSG_CommandStatus(m_pMessagePane,
|
|
tMenuType,
|
|
&viewIndex, 1,
|
|
&bSelectable,
|
|
&sState,
|
|
&szTitle,
|
|
&bPlural );
|
|
}
|
|
}
|
|
}
|
|
pCmdUI->Enable(bSelectable);
|
|
if (bUseCheck)
|
|
pCmdUI->SetCheck(sState == MSG_Checked);
|
|
else
|
|
pCmdUI->SetRadio(sState == MSG_Checked);
|
|
}
|
|
|
|
void CMailNewsFrame::DoMessageCommand(MSG_CommandType msgCommand )
|
|
{
|
|
if ( m_pMessagePane ) {
|
|
if (m_pOutliner) {
|
|
MsgViewIndex *indices;
|
|
int iCount;
|
|
m_pOutliner->GetSelection( indices, iCount );
|
|
MSG_Command(m_pMessagePane, msgCommand, indices, iCount);
|
|
} else {
|
|
MSG_FolderInfo* folder;
|
|
MessageKey key;
|
|
MSG_ViewIndex viewIndex;
|
|
MSG_GetCurMessage( m_pMessagePane,
|
|
&folder,
|
|
&key,
|
|
&viewIndex);
|
|
if ( key != MSG_MESSAGEKEYNONE ) {
|
|
MSG_Command(m_pMessagePane, msgCommand, &viewIndex, 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Reply button drop down menu
|
|
const UINT idArrayReply[] = { ID_MESSAGE_REPLY,
|
|
ID_MESSAGE_REPLYALL,
|
|
ID_MESSAGE_POSTREPLY,
|
|
ID_MESSAGE_POSTANDREPLY };
|
|
const UINT strArrayReply[] = { IDS_MENU_REPLY,
|
|
IDS_MENU_REPLYALL,
|
|
IDS_MENU_POSTREPLY,
|
|
IDS_MENU_POSTMAILREPLY };
|
|
|
|
// Mark button drop down menu
|
|
const UINT idArrayMark[] = { ID_MESSAGE_MARKASUNREAD,
|
|
ID_MESSAGE_MARKASREAD,
|
|
ID_MESSAGE_MARKTHREADREAD,
|
|
ID_MESSAGE_MARKALLREAD,
|
|
ID_MESSAGE_CATCHUP,
|
|
ID_MESSAGE_MARKASLATER };
|
|
|
|
const UINT strArrayMark[] = { IDS_POPUP_MARKASUNREAD,
|
|
IDS_POPUP_MARKASREAD,
|
|
IDS_POPUP_MARKTHREADREAD,
|
|
IDS_POPUP_MARKALLREAD,
|
|
IDS_POPUP_CATCHUP,
|
|
IDS_POPUP_MARKFORLATER };
|
|
|
|
const UINT idArrayNext[] = { ID_MESSAGE_NEXT,
|
|
ID_MESSAGE_NEXTUNREAD,
|
|
ID_MESSAGE_NEXTFLAGGED,
|
|
ID_MESSAGE_NEXTUNREADTHREAD,
|
|
ID_MESSAGE_NEXTNEWSGROUP,
|
|
ID_MESSAGE_NEXTUNREADNEWSGROUP };
|
|
|
|
const UINT strArrayNext[] = { IDS_POPUP_NEXTMESSAGE,
|
|
IDS_POPUP_NEXTUNREADMSG,
|
|
IDS_POPUP_NEXTFLAGGEDMSG,
|
|
IDS_POPUP_NEXTUNREADTHREAD,
|
|
IDS_POPUP_NEXTFOLDER,
|
|
IDS_POPUP_NEXTUNREADFOLDER };
|
|
|
|
LRESULT CMailNewsFrame::OnButtonMenuOpen(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
|
|
HMENU hMenu = (HMENU) lParam;
|
|
UINT nCommand = (UINT) LOWORD(wParam);
|
|
|
|
const UINT *idArray = NULL;
|
|
const UINT *strArray = NULL;
|
|
int nSize = 0;
|
|
|
|
if(nCommand == ID_MESSAGE_REPLYBUTTON) {
|
|
idArray = idArrayReply;
|
|
strArray = strArrayReply;
|
|
if (m_bNews) {
|
|
nSize = 4;
|
|
} else {
|
|
nSize = 2;
|
|
}
|
|
} else if (nCommand == ID_MESSAGE_MARKBUTTON ) {
|
|
idArray = idArrayMark;
|
|
strArray = strArrayMark;
|
|
nSize = 6;
|
|
} else if (nCommand == ID_MESSAGE_NEXTUNREAD ) {
|
|
idArray = idArrayNext;
|
|
strArray = strArrayNext;
|
|
nSize = 6;
|
|
}
|
|
|
|
if ( nSize > 0 ) {
|
|
CString str;
|
|
|
|
for(int i = 0; i < nSize; i++)
|
|
{
|
|
str.LoadString(strArray[i]);
|
|
|
|
AppendMenu(hMenu, MF_STRING, idArray[i], (const char*) str);
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
// File Menu Items
|
|
|
|
void CMailNewsFrame::OnAddNewsGroup ( )
|
|
{
|
|
DoCommand(MSG_AddNewsGroup);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateAddNewsGroup(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_AddNewsGroup);
|
|
}
|
|
|
|
void CMailNewsFrame::DoSubscribe(MSG_Host* pThisHost)
|
|
{
|
|
BeginWaitCursor();
|
|
|
|
MWContext *pContext = GetMainContext() != NULL ?
|
|
GetMainContext()->GetContext() : NULL;
|
|
|
|
// fix for bug#58453 Change Prefs news dir with no news files
|
|
// then Subscribe. Crashes.
|
|
MSG_NewsHost* defhost = NULL;
|
|
defhost = MSG_GetDefaultNewsHost(WFE_MSGGetMaster());
|
|
|
|
if (defhost == NULL)
|
|
{
|
|
FE_Alert(pContext, XP_GetString(MK_NNTP_SERVER_NOT_CONFIGURED));
|
|
return;
|
|
}
|
|
|
|
CString title;
|
|
title.LoadString(IDS_SUBSCRIBE_GROUP);
|
|
CSubscribePropertySheet SubscribeNewsgroup(this, pContext, title);
|
|
|
|
if (pThisHost)
|
|
SubscribeNewsgroup.SetHost(pThisHost);
|
|
else
|
|
{
|
|
MSG_FolderInfo* pFolderInfo = GetCurFolder();
|
|
if (pFolderInfo)
|
|
{
|
|
MSG_FolderLine folderLine;
|
|
if (MSG_GetFolderLineById(WFE_MSGGetMaster(), pFolderInfo,
|
|
&folderLine))
|
|
{
|
|
MSG_Host *pHost = MSG_GetHostForFolder(pFolderInfo);
|
|
SubscribeNewsgroup.SetHost(pHost);
|
|
}
|
|
}
|
|
}
|
|
|
|
SubscribeNewsgroup.DoModal();
|
|
EndWaitCursor();
|
|
}
|
|
|
|
void CMailNewsFrame::OnSubscribe ( )
|
|
{
|
|
DoSubscribe(NULL);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSubscribe(CCmdUI* pCmdUI)
|
|
{
|
|
pCmdUI->Enable (TRUE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUnsubscribe ( )
|
|
{
|
|
DoCommand(MSG_Unsubscribe);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateUnsubscribe(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_Unsubscribe);
|
|
}
|
|
|
|
void CMailNewsFrame::OnOpenAttach(UINT nID)
|
|
{
|
|
int idx = nID - FIRST_ATTACH_MENU_ID;
|
|
|
|
if (idx < m_nAttachmentCount)
|
|
GetContext()->NormalGetUrl(m_pAttachmentData[idx].url);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateOpenAttach(CCmdUI *pCmdUI)
|
|
{
|
|
int idx = pCmdUI->m_nID - FIRST_ATTACH_MENU_ID;
|
|
|
|
if (pCmdUI->m_pSubMenu) {
|
|
pCmdUI->m_pMenu->EnableMenuItem(pCmdUI->m_nIndex,
|
|
MF_BYPOSITION |
|
|
((m_nAttachmentCount > 0) ? MF_ENABLED : MF_GRAYED));
|
|
} else {
|
|
pCmdUI->Enable(idx < m_nAttachmentCount);
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnSaveAttach(UINT nID)
|
|
{
|
|
int idx = nID - FIRST_SAVEATTACH_MENU_ID;
|
|
|
|
if (idx < m_nAttachmentCount)
|
|
CSaveCX::SaveAnchorObject(m_pAttachmentData[idx].url, NULL);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSaveAttach(CCmdUI *pCmdUI)
|
|
{
|
|
int idx = pCmdUI->m_nID - FIRST_SAVEATTACH_MENU_ID;
|
|
|
|
pCmdUI->Enable(idx < m_nAttachmentCount);
|
|
}
|
|
|
|
void CMailNewsFrame::OnAttachProperties(UINT nID)
|
|
{
|
|
int idx = nID - FIRST_ATTACHPROP_MENU_ID;
|
|
|
|
CAttachmentSheet sheet(this,
|
|
m_pAttachmentData[idx].real_name,
|
|
m_pAttachmentData[idx].real_type,
|
|
m_pAttachmentData[idx].description);
|
|
|
|
sheet.DoModal();
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateAttachProperties(CCmdUI *pCmdUI)
|
|
{
|
|
int idx = pCmdUI->m_nID - FIRST_ATTACHPROP_MENU_ID;
|
|
|
|
pCmdUI->Enable(idx < m_nAttachmentCount);
|
|
}
|
|
|
|
|
|
// Edit Menu Items
|
|
|
|
void CMailNewsFrame::OnEditUndo()
|
|
{
|
|
DoCommand(MSG_Undo);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateEditUndo ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_Undo);
|
|
}
|
|
|
|
void CMailNewsFrame::OnEditRedo()
|
|
{
|
|
DoCommand(MSG_Redo);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateEditRedo ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_Redo);
|
|
}
|
|
|
|
// hack for message backtracking
|
|
|
|
void CMailNewsFrame::OnGoBack()
|
|
{
|
|
DoNavigate(MSG_Back);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateGoBack ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateNavigate(pCmdUI, MSG_Back);
|
|
}
|
|
|
|
void CMailNewsFrame::OnGoForward()
|
|
{
|
|
DoNavigate(MSG_Forward);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateGoForward ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateNavigate(pCmdUI, MSG_Forward);
|
|
}
|
|
|
|
|
|
void CMailNewsFrame::OnDeleteFolder( )
|
|
{
|
|
CMailNewsOutliner* pOutliner;
|
|
if (IsKindOf(RUNTIME_CLASS(C3PaneMailFrame)))
|
|
pOutliner = ((C3PaneMailFrame*)this)->GetFolderOutliner();
|
|
else
|
|
pOutliner = m_pOutliner;
|
|
|
|
MSG_ViewIndex *indices;
|
|
int count;
|
|
|
|
pOutliner->GetSelection(indices, count);
|
|
|
|
DoCommand(MSG_DeleteFolder);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateDeleteFolder(CCmdUI* pCmdUI)
|
|
{
|
|
MSG_FolderInfo *folderInfo = GetCurFolder();
|
|
|
|
if ( folderInfo ) {
|
|
MSG_FolderLine folderLine;
|
|
MSG_GetFolderLineById( WFE_MSGGetMaster(), folderInfo, &folderLine );
|
|
|
|
if ( pCmdUI->m_nID == ID_EDIT_DELETEFOLDER ) {
|
|
if ( folderLine.flags & MSG_FOLDER_FLAG_NEWS_HOST ) {
|
|
pCmdUI->SetText( szLoadString( IDS_MENU_DELETENEWSHOST ) );
|
|
} else if ( folderLine.flags & MSG_FOLDER_FLAG_NEWSGROUP ) {
|
|
pCmdUI->SetText( szLoadString( IDS_MENU_DELETENEWSGROUP ) );
|
|
} else {
|
|
// We shouldn't use the popup item, except that
|
|
// we're don't want to add a string at this point
|
|
pCmdUI->SetText( szLoadString( IDS_POPUP_DELETEFOLDER ) );
|
|
}
|
|
}
|
|
} else {
|
|
pCmdUI->SetText( szLoadString( IDS_MENU_DELETESELECTION ) );
|
|
}
|
|
DoUpdateCommand(pCmdUI, MSG_DeleteFolder);
|
|
}
|
|
|
|
void CMailNewsFrame::OnDeleteMessage( )
|
|
{
|
|
if ( m_bNews ) {
|
|
DoCommand(MSG_CancelMessage, MODAL_DELAY);
|
|
} else {
|
|
#ifdef DEBUG_WHITEBOX
|
|
QA_Trace("Entering CMailNewsFrame:DoCommand");
|
|
#endif
|
|
|
|
DoCommand(MSG_DeleteMessage, MODAL_DELAY);
|
|
|
|
#ifdef DEBUG_WHITEBOX
|
|
QA_Trace("Finished CMailNewsFrame:DoCommand");
|
|
#endif
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnReallyDeleteMessage( )
|
|
{
|
|
if ( m_bNews ) {
|
|
DoCommand(MSG_CancelMessage, MODAL_DELAY);
|
|
} else {
|
|
DoCommand(MSG_DeleteMessageNoTrash, MODAL_DELAY);
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateDeleteMessage(CCmdUI* pCmdUI)
|
|
{
|
|
if (IsKindOf(RUNTIME_CLASS(C3PaneMailFrame)))
|
|
{
|
|
if (GetFocus() == (CWnd*)((C3PaneMailFrame*)this)->GetFolderOutliner())
|
|
{
|
|
pCmdUI->Enable(FALSE);
|
|
return;
|
|
}
|
|
else
|
|
pCmdUI->Enable(TRUE);
|
|
}
|
|
if ( m_bNews ) {
|
|
pCmdUI->SetText( szLoadString( IDS_MENU_CANCELMESSAGE ) );
|
|
DoUpdateCommand(pCmdUI, MSG_CancelMessage);
|
|
} else {
|
|
pCmdUI->SetText( szLoadString( IDS_MENU_DELETEMESSAGE ) );
|
|
DoUpdateCommand(pCmdUI, MSG_DeleteMessage);
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnSelectAll()
|
|
{
|
|
if (m_pOutliner ) {
|
|
m_pOutliner->SelectRange( 0, -1, TRUE );
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSelectAll ( CCmdUI* pCmdUI )
|
|
{
|
|
if (m_pOutliner && m_pOutliner->GetTotalLines() > 0 ) {
|
|
pCmdUI->Enable( TRUE );
|
|
} else {
|
|
pCmdUI->Enable( FALSE );
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnCancelMessage()
|
|
{
|
|
DoCommand(MSG_CancelMessage);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateCancelMessage ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_CancelMessage);
|
|
}
|
|
|
|
// View Menu Items
|
|
|
|
void CMailNewsFrame::OnSortAgain ( )
|
|
{
|
|
DoCommand(MSG_ReSort);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSortAgain(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ReSort);
|
|
}
|
|
|
|
void CMailNewsFrame::OnAscending( )
|
|
{
|
|
if ( MSG_GetToggleStatus( m_pPane, MSG_SortBackward, NULL, 0 ) == MSG_Checked ) {
|
|
DoCommand(MSG_SortBackward);
|
|
SetSort(-1);
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateAscending(CCmdUI* pCmdUI)
|
|
{
|
|
pCmdUI->Enable(TRUE);
|
|
#ifdef _WIN32
|
|
pCmdUI->SetRadio(MSG_GetToggleStatus( m_pPane, MSG_SortBackward, NULL, 0 ) != MSG_Checked);
|
|
#else
|
|
pCmdUI->SetCheck(MSG_GetToggleStatus( m_pPane, MSG_SortBackward, NULL, 0 ) != MSG_Checked);
|
|
#endif
|
|
}
|
|
|
|
void CMailNewsFrame::OnDescending( )
|
|
{
|
|
if ( MSG_GetToggleStatus( m_pPane, MSG_SortBackward, NULL, 0 ) != MSG_Checked ) {
|
|
DoCommand(MSG_SortBackward);
|
|
SetSort(-1);
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateDescending(CCmdUI* pCmdUI)
|
|
{
|
|
pCmdUI->Enable(TRUE);
|
|
#ifdef _WIN32
|
|
pCmdUI->SetRadio(MSG_GetToggleStatus( m_pPane, MSG_SortBackward, NULL, 0 ) == MSG_Checked);
|
|
#else
|
|
pCmdUI->SetCheck(MSG_GetToggleStatus( m_pPane, MSG_SortBackward, NULL, 0 ) == MSG_Checked);
|
|
#endif
|
|
}
|
|
|
|
void CMailNewsFrame::OnSortDate()
|
|
{
|
|
DoCommand(MSG_SortByDate);
|
|
SetSort(SORT_BYDATE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSortDate ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_SortByDate);
|
|
}
|
|
|
|
void CMailNewsFrame::OnSortNumber()
|
|
{
|
|
DoCommand(MSG_SortByMessageNumber);
|
|
SetSort(SORT_BYNUMBER);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSortNumber ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_SortByMessageNumber);
|
|
}
|
|
|
|
void CMailNewsFrame::OnSortSubject()
|
|
{
|
|
DoCommand(MSG_SortBySubject);
|
|
SetSort(SORT_BYSUBJECT);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSortSubject ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_SortBySubject);
|
|
}
|
|
|
|
void CMailNewsFrame::OnSortSender()
|
|
{
|
|
DoCommand(MSG_SortBySender);
|
|
SetSort(SORT_BYSENDER);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSortSender ( CCmdUI* pCmdUI )
|
|
{
|
|
if (MSG_DisplayingRecipients(m_pPane)) {
|
|
CString cs;
|
|
cs.LoadString(IDS_MAIL_BYRECIPIENT);
|
|
pCmdUI->SetText(cs);
|
|
}
|
|
DoUpdateCommand(pCmdUI, MSG_SortBySender);
|
|
}
|
|
|
|
void CMailNewsFrame::OnSortPriority()
|
|
{
|
|
DoCommand(MSG_SortByPriority);
|
|
SetSort(SORT_BYPRIORITY);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSortPriority( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_SortByPriority);
|
|
}
|
|
|
|
void CMailNewsFrame::OnSortStatus()
|
|
{
|
|
DoCommand(MSG_SortByStatus);
|
|
SetSort(SORT_BYSTATUS);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSortStatus( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_SortByStatus);
|
|
}
|
|
|
|
void CMailNewsFrame::OnSortSize()
|
|
{
|
|
DoCommand(MSG_SortBySize);
|
|
SetSort(SORT_BYSIZE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSortSize( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_SortBySize);
|
|
}
|
|
|
|
void CMailNewsFrame::OnSortFlag()
|
|
{
|
|
DoCommand(MSG_SortByFlagged);
|
|
SetSort(SORT_BYFLAG);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSortFlag( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_SortByFlagged);
|
|
}
|
|
|
|
void CMailNewsFrame::OnSortUnread()
|
|
{
|
|
DoCommand(MSG_SortByUnread);
|
|
SetSort(SORT_BYUNREAD);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSortUnread( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_SortByUnread);
|
|
}
|
|
|
|
void CMailNewsFrame::OnThread ( )
|
|
{
|
|
DoCommand(MSG_SortByThread);
|
|
SetSort(SORT_BYTHREAD);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateThread(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_SortByThread);
|
|
}
|
|
|
|
void CMailNewsFrame::OnViewAll()
|
|
{
|
|
DoCommand(MSG_ViewAllThreads);
|
|
if ( m_pOutliner )
|
|
m_pOutliner->GetParent()->Invalidate();
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateViewAll( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ViewAllThreads);
|
|
}
|
|
|
|
void CMailNewsFrame::OnViewKilled()
|
|
{
|
|
DoCommand(MSG_ViewKilledThreads);
|
|
if ( m_pOutliner )
|
|
m_pOutliner->GetParent()->Invalidate();
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateViewKilled( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ViewKilledThreads, TRUE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnViewNew()
|
|
{
|
|
DoCommand(MSG_ViewThreadsWithNew);
|
|
if ( m_pOutliner )
|
|
m_pOutliner->GetParent()->Invalidate();
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateViewNew( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ViewThreadsWithNew);
|
|
}
|
|
|
|
void CMailNewsFrame::OnViewNewOnly()
|
|
{
|
|
DoCommand(MSG_ViewNewOnly);
|
|
if ( m_pOutliner )
|
|
m_pOutliner->GetParent()->Invalidate();
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateViewNewOnly( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ViewNewOnly);
|
|
}
|
|
|
|
void CMailNewsFrame::OnViewWatched()
|
|
{
|
|
DoCommand(MSG_ViewWatchedThreadsWithNew);
|
|
if ( m_pOutliner )
|
|
m_pOutliner->GetParent()->Invalidate();
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateViewWatched( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ViewWatchedThreadsWithNew);
|
|
}
|
|
|
|
void CMailNewsFrame::OnViewInline(void)
|
|
{
|
|
DoMessageCommand(MSG_AttachmentsInline);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateViewInline(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateMessageCommand(pCmdUI, MSG_AttachmentsInline, FALSE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnViewAsLinks(void)
|
|
{
|
|
DoMessageCommand(MSG_AttachmentsAsLinks);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateViewAsLinks(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateMessageCommand(pCmdUI, MSG_AttachmentsAsLinks, FALSE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnHeadersMicro()
|
|
{
|
|
DoMessageCommand(MSG_ShowMicroHeaders);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateHeadersMicro(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateMessageCommand( pCmdUI, MSG_ShowMicroHeaders );
|
|
}
|
|
|
|
void CMailNewsFrame::OnHeadersShort()
|
|
{
|
|
DoMessageCommand(MSG_ShowSomeHeaders);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateHeadersShort(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateMessageCommand( pCmdUI, MSG_ShowSomeHeaders );
|
|
}
|
|
|
|
void CMailNewsFrame::OnHeadersAll()
|
|
{
|
|
DoMessageCommand(MSG_ShowAllHeaders);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateHeadersAll(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateMessageCommand( pCmdUI, MSG_ShowAllHeaders );
|
|
}
|
|
|
|
// Navigation Menu Items
|
|
|
|
void CMailNewsFrame::OnPreviousUnread ( )
|
|
{
|
|
DoNavigate( MSG_PreviousUnreadMessage );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdatePreviousUnread(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateNavigate( pCmdUI, MSG_PreviousUnreadMessage );
|
|
}
|
|
|
|
void CMailNewsFrame::OnPrevious ( )
|
|
{
|
|
DoNavigate( MSG_PreviousMessage );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdatePrevious(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateNavigate( pCmdUI, MSG_PreviousMessage );
|
|
}
|
|
|
|
void CMailNewsFrame::OnNextUnread ( )
|
|
{
|
|
DoNavigate( MSG_NextUnreadMessage );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNextUnread(CCmdUI* pCmdUI)
|
|
{
|
|
if (pCmdUI->m_pMenu)
|
|
DoUpdateNavigate( pCmdUI, MSG_NextUnreadMessage );
|
|
else // We're the toolbar button, always enable (sigh)
|
|
pCmdUI->Enable(TRUE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnNext ( )
|
|
{
|
|
DoNavigate( MSG_NextMessage );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNext(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateNavigate( pCmdUI, MSG_NextMessage );
|
|
}
|
|
|
|
void CMailNewsFrame::OnNextFolder( )
|
|
{
|
|
DoNavigate( MSG_NextFolder );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNextFolder(CCmdUI* pCmdUI)
|
|
{
|
|
if (m_bNews)
|
|
pCmdUI->SetText(szLoadString(IDS_MENU_NEXTNEWSGROUP));
|
|
else
|
|
pCmdUI->SetText(szLoadString(IDS_MENU_NEXTFOLDER));
|
|
DoUpdateNavigate( pCmdUI, MSG_NextFolder );
|
|
}
|
|
|
|
void CMailNewsFrame::OnNextUnreadThread()
|
|
{
|
|
DoNavigate(MSG_NextUnreadThread);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNextUnreadThread(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateNavigate(pCmdUI, MSG_NextUnreadThread);
|
|
}
|
|
|
|
void CMailNewsFrame::OnNextUnreadFolder()
|
|
{
|
|
DoNavigate( MSG_NextUnreadGroup );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNextUnreadFolder(CCmdUI* pCmdUI)
|
|
{
|
|
if (m_bNews)
|
|
pCmdUI->SetText(szLoadString(IDS_MENU_NEXTUNREADNEWSGROUP));
|
|
else
|
|
pCmdUI->SetText(szLoadString(IDS_MENU_NEXTUNREADFOLDER));
|
|
DoUpdateNavigate( pCmdUI, MSG_NextUnreadGroup );
|
|
}
|
|
|
|
void CMailNewsFrame::OnPreviousFlagged()
|
|
{
|
|
DoNavigate( MSG_PreviousFlagged );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdatePreviousFlagged(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateNavigate( pCmdUI, MSG_PreviousFlagged );
|
|
}
|
|
|
|
void CMailNewsFrame::OnNextFlagged()
|
|
{
|
|
DoNavigate( MSG_NextFlagged );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNextFlagged(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateNavigate( pCmdUI, MSG_NextFlagged );
|
|
}
|
|
|
|
void CMailNewsFrame::OnFirstFlagged()
|
|
{
|
|
DoNavigate( MSG_FirstFlagged );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateFirstFlagged(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateNavigate( pCmdUI, MSG_FirstFlagged );
|
|
}
|
|
|
|
// Message Menu Items
|
|
|
|
void CMailNewsFrame::OnNew( )
|
|
{
|
|
if (m_bNews)
|
|
DoCommand(MSG_PostNew);
|
|
else
|
|
DoCommand(MSG_MailNew);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNew(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_MailNew);
|
|
}
|
|
|
|
void CMailNewsFrame::OnNewNewsgroup()
|
|
{
|
|
DoCommand(MSG_NewNewsgroup);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNewNewsgroup(CCmdUI *pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_NewNewsgroup);
|
|
}
|
|
|
|
void CMailNewsFrame::OnNewNewshost()
|
|
{
|
|
DoAddNewsServer(this, FROM_FOLDERPANE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNewNewshost(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->Enable(TRUE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnNewCategory()
|
|
{
|
|
DoCommand(MSG_NewCategory);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNewCategory(CCmdUI *pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_NewCategory);
|
|
}
|
|
|
|
void CMailNewsFrame::OnKill()
|
|
{
|
|
DoNavigate((MSG_MotionType) MSG_ToggleThreadKilled);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateKill(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ToggleThreadKilled );
|
|
}
|
|
|
|
void CMailNewsFrame::OnWatch()
|
|
{
|
|
DoCommand(MSG_ToggleThreadWatched);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateWatch(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ToggleThreadWatched, FALSE);
|
|
}
|
|
|
|
|
|
void CMailNewsFrame::OnPostAndMailReply()
|
|
{
|
|
DoCommand(MSG_PostAndMailReply);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdatePostAndMailReply(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_PostAndMailReply);
|
|
}
|
|
|
|
void CMailNewsFrame::OnPostReply()
|
|
{
|
|
DoCommand(MSG_PostReply);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdatePostReply(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_PostReply);
|
|
}
|
|
|
|
void CMailNewsFrame::OnReply()
|
|
{
|
|
DoCommand(MSG_ReplyToSender);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateReply(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ReplyToSender);
|
|
}
|
|
|
|
void CMailNewsFrame::OnReplyAll()
|
|
{
|
|
DoCommand(MSG_ReplyToAll);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateReplyAll(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ReplyToAll);
|
|
}
|
|
|
|
void CMailNewsFrame::OnForward()
|
|
{
|
|
DoCommand(MSG_ForwardMessage);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateForward(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ForwardMessage);
|
|
}
|
|
|
|
void CMailNewsFrame::OnForwardQuoted()
|
|
{
|
|
DoCommand(MSG_ForwardMessageQuoted);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateForwardQuoted(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ForwardMessageQuoted);
|
|
}
|
|
|
|
void CMailNewsFrame::OnSave ( )
|
|
{
|
|
DoCommand(MSG_SaveMessagesAs);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSave(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_SaveMessagesAs);
|
|
}
|
|
|
|
void CMailNewsFrame::OnEditMessage ( )
|
|
{
|
|
DoCommand(MSG_OpenMessageAsDraft);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateEditMessage(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_OpenMessageAsDraft);
|
|
}
|
|
|
|
|
|
void CMailNewsFrame::OnPostAndMail()
|
|
{
|
|
DoCommand(MSG_PostAndMailReply);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdatePostAndMail ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_PostAndMailReply);
|
|
}
|
|
|
|
void CMailNewsFrame::OnMarkMessagesRead()
|
|
{
|
|
DoCommand(MSG_MarkMessagesRead);
|
|
}
|
|
|
|
void CMailNewsFrame::OnRetrieveSelected()
|
|
{
|
|
DoCommand(MSG_RetrieveSelectedMessages);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateRetrieveSelected( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_RetrieveSelectedMessages);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateMarkMessagesRead ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand( pCmdUI, MSG_MarkMessagesRead );
|
|
}
|
|
|
|
void CMailNewsFrame::OnMarkMessagesUnread()
|
|
{
|
|
DoCommand( MSG_MarkMessagesUnread );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateMarkMessagesUnread ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand( pCmdUI, MSG_MarkMessagesUnread );
|
|
}
|
|
|
|
void CMailNewsFrame::OnMarkThreadRead()
|
|
{
|
|
DoCommand( MSG_MarkThreadRead );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateMarkThreadRead( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand( pCmdUI, MSG_MarkThreadRead );
|
|
}
|
|
|
|
void CMailNewsFrame::OnMarkAllRead()
|
|
{
|
|
DoCommand( MSG_MarkAllRead );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateMarkAllRead( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand( pCmdUI, MSG_MarkAllRead );
|
|
}
|
|
|
|
void CMailNewsFrame::OnCatchup()
|
|
{
|
|
CMarkReadDateDlg dlg(CMarkReadDateDlg::IDD, this);
|
|
if (dlg.DoModal()) {
|
|
MSG_MarkReadByDate ( m_pPane, 0, dlg.dateTo.GetTime() );
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateCatchup( CCmdUI *pCmdUI )
|
|
{
|
|
// We use MarkAllRead because it's enabled state
|
|
// should be the same
|
|
DoUpdateCommand(pCmdUI, MSG_MarkAllRead);
|
|
}
|
|
|
|
void CMailNewsFrame::OnMarkMessagesLater()
|
|
{
|
|
DoNavigate( MSG_LaterMessage );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateMarkMessagesLater( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateNavigate( pCmdUI, MSG_LaterMessage);
|
|
}
|
|
|
|
void CMailNewsFrame::OnRetrieveOffline()
|
|
{
|
|
DoCommand(MSG_RetrieveMarkedMessages);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateRetrieveOffline( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_RetrieveMarkedMessages);
|
|
}
|
|
|
|
void CMailNewsFrame::OnMarkMessages()
|
|
{
|
|
DoCommand( MSG_MarkMessages );
|
|
if (m_pOutliner)
|
|
DOWNCAST(CMessageOutliner, m_pOutliner)->EnsureFlagsVisible();
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateMarkMessages( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand( pCmdUI, MSG_MarkMessages );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUnmarkMessages()
|
|
{
|
|
DoCommand( MSG_UnmarkMessages );
|
|
if (m_pOutliner)
|
|
DOWNCAST(CMessageOutliner, m_pOutliner)->EnsureFlagsVisible();
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateUnmarkMessages( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand( pCmdUI, MSG_UnmarkMessages );
|
|
}
|
|
|
|
void CMailNewsFrame::OnPostNew ( )
|
|
{
|
|
DoCommand(MSG_PostNew);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdatePostNew(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_PostNew);
|
|
}
|
|
|
|
void CMailNewsFrame::OnWrapLongLines ( )
|
|
{
|
|
DoMessageCommand(MSG_WrapLongLines);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateWrapLongLines ( CCmdUI * pCmdUI )
|
|
{
|
|
DoUpdateMessageCommand( pCmdUI, MSG_WrapLongLines );
|
|
}
|
|
|
|
void CMailNewsFrame::OnViewRot13 ( )
|
|
{
|
|
DoMessageCommand(MSG_Rot13Message);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateViewRot13 ( CCmdUI * pCmdUI )
|
|
{
|
|
DoUpdateMessageCommand( pCmdUI, MSG_Rot13Message );
|
|
}
|
|
|
|
static BOOL s_bGettingMail = FALSE;
|
|
|
|
static void _GetMailCallback(HWND hwnd, MSG_Pane *pane, void *closure)
|
|
{
|
|
if (pane != NULL)
|
|
{
|
|
s_bGettingMail = TRUE;
|
|
MSG_Command( pane, MSG_GetNewMail, NULL, 0 );
|
|
::ShowWindow(hwnd, SW_SHOW);
|
|
}
|
|
}
|
|
|
|
static void _GetMailDoneCallback(HWND hwnd, MSG_Pane *pane, void *closure)
|
|
{
|
|
s_bGettingMail = FALSE;
|
|
for(CGenericFrame * f = theApp.m_pFrameList; f; f = f->m_pNext)
|
|
f->PostMessage(WM_COMMAND, (WPARAM) ID_DONEGETTINGMAIL, (LPARAM) 0);
|
|
}
|
|
|
|
static void _GetNextCallback(HWND hwnd, MSG_Pane *pane, void *closure)
|
|
{
|
|
if (pane != NULL)
|
|
{
|
|
XP_Bool bEnabled, bPlural;
|
|
MSG_COMMAND_CHECK_STATE stateSelected;
|
|
LPCSTR lpszLabel;
|
|
MSG_CommandStatus( pane, MSG_GetNextChunkMessages, NULL, 0,
|
|
&bEnabled, &stateSelected,
|
|
&lpszLabel, &bPlural );
|
|
|
|
if ( !bEnabled ) {
|
|
::PostMessage(hwnd,WM_DESTROY,0,0);
|
|
}
|
|
|
|
MSG_Command( pane, MSG_GetNextChunkMessages, NULL, 0 );
|
|
}
|
|
}
|
|
|
|
static void _CompressFoldersCallback(HWND hwnd, MSG_Pane *pane, void *closure)
|
|
{
|
|
if (pane != NULL)
|
|
{
|
|
MSG_Command( pane, MSG_CompressAllFolders, NULL, 0 );
|
|
::ShowWindow(hwnd, SW_SHOW);
|
|
}
|
|
}
|
|
|
|
typedef struct {
|
|
MSG_ViewIndex *indices;
|
|
int count;
|
|
} CompressFolderClosure;
|
|
|
|
static void _CompressFolderCallback(HWND hwnd, MSG_Pane *pane, void *closure)
|
|
{
|
|
CompressFolderClosure *cfc = (CompressFolderClosure *) closure;
|
|
|
|
if (pane != NULL)
|
|
{
|
|
MSG_Command(pane, MSG_CompressFolder, cfc->indices, cfc->count);
|
|
::ShowWindow(hwnd, SW_SHOW);
|
|
}
|
|
}
|
|
|
|
static void _EmptyTrashCallback(HWND hwnd, MSG_Pane *pane, void *closure)
|
|
{
|
|
if (pane != NULL)
|
|
{
|
|
MSG_Command( pane, MSG_EmptyTrash, NULL, 0 );
|
|
::ShowWindow(hwnd, SW_SHOW);
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
void CMailNewsFrame::OnGetMail()
|
|
{
|
|
new CProgressDialog(this, m_pPane, _GetMailCallback, NULL, NULL, _GetMailDoneCallback);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateGetMail(CCmdUI *pCmdUI)
|
|
{
|
|
if (!s_bGettingMail)
|
|
DoUpdateCommand(pCmdUI, MSG_GetNewMail);
|
|
else
|
|
pCmdUI->Enable(FALSE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnGetNext()
|
|
{
|
|
new CProgressDialog(this, m_pPane, _GetNextCallback);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateGetNext(CCmdUI *pCmdUI)
|
|
{
|
|
int32 iDownloadMax = 0;
|
|
PREF_GetIntPref("news.max_articles", &iDownloadMax);
|
|
|
|
CString cs;
|
|
cs.Format(szLoadString(IDS_MENU_GETNEXT), (int) iDownloadMax);
|
|
|
|
pCmdUI->SetText(cs);
|
|
|
|
DoUpdateCommand(pCmdUI, MSG_GetNextChunkMessages);
|
|
}
|
|
|
|
void CMailNewsFrame::OnDeliverNow()
|
|
{
|
|
DoCommand(MSG_DeliverQueuedMessages);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateDeliverNow(CCmdUI *pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_DeliverQueuedMessages);
|
|
}
|
|
|
|
void CMailNewsFrame::OnNewFolder ( )
|
|
{
|
|
if (m_bNews) {
|
|
if (m_bCategory)
|
|
OnNewCategory();
|
|
else
|
|
OnNewNewsgroup();
|
|
} else {
|
|
if (IsKindOf(RUNTIME_CLASS(C3PaneMailFrame)))
|
|
{
|
|
MSG_FolderLine folderLine;
|
|
if (((C3PaneMailFrame*)this)->GetSelectedFolder(&folderLine))
|
|
CNewFolderDialog( this, m_pPane, folderLine.id );
|
|
else
|
|
CNewFolderDialog( this, m_pPane, NULL );
|
|
}
|
|
else
|
|
CNewFolderDialog( this, m_pPane, GetCurFolder() );
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateNewFolder(CCmdUI* pCmdUI)
|
|
{
|
|
if (m_bNews) {
|
|
if (m_bCategory) {
|
|
pCmdUI->SetText(szLoadString(IDS_MENU_NEWCATEGORY));
|
|
OnUpdateNewCategory(pCmdUI);
|
|
} else {
|
|
pCmdUI->SetText(szLoadString(IDS_MENU_NEWNEWSGROUP));
|
|
OnUpdateNewNewsgroup(pCmdUI);
|
|
}
|
|
} else {
|
|
pCmdUI->SetText(szLoadString(IDS_MENU_NEWFOLDER));
|
|
pCmdUI->Enable( TRUE );
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnCompressFolder ( )
|
|
{
|
|
DoCommand(MSG_CompressFolder, 0);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateCompressFolder(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_CompressFolder);
|
|
}
|
|
|
|
void CMailNewsFrame::OnRenameFolder ( )
|
|
{
|
|
DoCommand(MSG_DoRenameFolder);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateRenameFolder(CCmdUI* pCmdUI)
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_DoRenameFolder);
|
|
}
|
|
|
|
void CMailNewsFrame::OnCompressAll()
|
|
{
|
|
MSG_FolderInfo *folderInfo = GetCurFolder();
|
|
|
|
if (folderInfo) {
|
|
XP_Bool bCompressAll = TRUE;
|
|
|
|
MSG_FolderLine folderLine;
|
|
MSG_GetFolderLineById( WFE_MSGGetMaster(), GetCurFolder(), &folderLine );
|
|
if ( folderLine.flags & MSG_FOLDER_FLAG_IMAPBOX ) {
|
|
PREF_GetBoolPref("mail.imap.delete_is_move_to_trash", &bCompressAll);
|
|
}
|
|
|
|
if (!bCompressAll) {
|
|
CompressFolderClosure cfc;
|
|
cfc.indices = NULL;
|
|
cfc.count = 0;
|
|
|
|
if (MSG_GetPaneType(m_pPane) == MSG_FOLDERPANE && m_pOutliner) {
|
|
m_pOutliner->GetSelection(cfc.indices, cfc.count);
|
|
}
|
|
new CProgressDialog(this, m_pPane, _CompressFolderCallback,
|
|
&cfc, szLoadString(IDS_COMPRESSINGFOLDERS));
|
|
} else {
|
|
new CProgressDialog(this, m_pPane, _CompressFoldersCallback,
|
|
NULL, szLoadString(IDS_COMPRESSINGFOLDERS));
|
|
}
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateCompressAll ( CCmdUI* pCmdUI )
|
|
{
|
|
MSG_FolderInfo *folderInfo = GetCurFolder();
|
|
|
|
if (folderInfo) {
|
|
XP_Bool bCompressAll = TRUE;
|
|
|
|
MSG_FolderLine folderLine;
|
|
MSG_GetFolderLineById( WFE_MSGGetMaster(), GetCurFolder(), &folderLine );
|
|
if ( folderLine.flags & MSG_FOLDER_FLAG_IMAPBOX ) {
|
|
PREF_GetBoolPref("mail.imap.delete_is_move_to_trash", &bCompressAll);
|
|
}
|
|
|
|
if (!bCompressAll) {
|
|
pCmdUI->SetText(szLoadString(IDS_MENU_COMPRESSFOLDER));
|
|
DoUpdateCommand(pCmdUI, MSG_CompressFolder);
|
|
} else {
|
|
pCmdUI->SetText(szLoadString(IDS_MENU_COMPRESSFOLDERS));
|
|
DoUpdateCommand(pCmdUI, MSG_CompressAllFolders);
|
|
}
|
|
} else {
|
|
pCmdUI->Enable(FALSE);
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnEmptyTrash()
|
|
{
|
|
new CProgressDialog(this, m_pPane, _EmptyTrashCallback,
|
|
NULL, szLoadString(IDS_EMPTYINGTRASH));
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateEmptyTrash ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_EmptyTrash);
|
|
}
|
|
|
|
void CMailNewsFrame::OnAddToAddressBook()
|
|
{
|
|
theApp.DoWaitCursor(1);
|
|
DoCommand(MSG_AddSender);
|
|
theApp.DoWaitCursor(-1);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateAddToAddressBook ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_AddSender);
|
|
}
|
|
|
|
void CMailNewsFrame::OnAddAllToAddressBook()
|
|
{
|
|
theApp.DoWaitCursor(1);
|
|
DoCommand(MSG_AddAll);
|
|
theApp.DoWaitCursor(-1);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateAddAllToAddressBook ( CCmdUI* pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_AddAll);
|
|
}
|
|
|
|
// Non-MSG Items
|
|
|
|
void CMailNewsFrame::OnTips()
|
|
{
|
|
if ( m_pOutliner ) {
|
|
m_pOutliner->EnableTips( TRUE );
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnQuickFile()
|
|
{
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateQuickFile( CCmdUI *pCmdUI )
|
|
{
|
|
if (m_pOutliner) {
|
|
MSG_ViewIndex *indices;
|
|
int count;
|
|
m_pOutliner->GetSelection( indices, count );
|
|
pCmdUI->Enable( count > 0 );
|
|
} else {
|
|
pCmdUI->Enable( TRUE );
|
|
}
|
|
}
|
|
|
|
// replace with Manage Mail Account
|
|
void CMailNewsFrame::OnSetupWizard()
|
|
{
|
|
DoCommand(MSG_ManageMailAccount);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSetupWizard( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ManageMailAccount);
|
|
}
|
|
|
|
void CMailNewsFrame::OnServerStuff()
|
|
{
|
|
DoCommand(MSG_ModerateNewsgroup);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateServerStuff( CCmdUI *pCmdUI )
|
|
{
|
|
DoUpdateCommand(pCmdUI, MSG_ModerateNewsgroup);
|
|
}
|
|
|
|
void CMailNewsFrame::OnInterrupt()
|
|
{
|
|
// Let the context have it.
|
|
if(GetMainContext()) {
|
|
GetMainContext()->AllInterrupt();
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateInterrupt( CCmdUI *pCmdUI )
|
|
{
|
|
// Defer to the context's wisdom.
|
|
pCmdUI->Enable( GetMainContext() && GetMainContext()->CanAllInterrupt() );
|
|
}
|
|
|
|
void CMailNewsFrame::OnPriorityLowest()
|
|
{
|
|
MSG_SetPriority( m_pPane,
|
|
GetCurMessage(),
|
|
MSG_LowestPriority );
|
|
}
|
|
|
|
void CMailNewsFrame::OnPriorityLow()
|
|
{
|
|
MSG_SetPriority( m_pPane,
|
|
GetCurMessage(),
|
|
MSG_LowPriority );
|
|
}
|
|
|
|
void CMailNewsFrame::OnPriorityNormal()
|
|
{
|
|
MSG_SetPriority( m_pPane,
|
|
GetCurMessage(),
|
|
MSG_NormalPriority );
|
|
}
|
|
|
|
void CMailNewsFrame::OnPriorityHigh()
|
|
{
|
|
MSG_SetPriority( m_pPane,
|
|
GetCurMessage(),
|
|
MSG_HighPriority );
|
|
}
|
|
|
|
void CMailNewsFrame::OnPriorityHighest()
|
|
{
|
|
MSG_SetPriority( m_pPane,
|
|
GetCurMessage(),
|
|
MSG_HighestPriority );
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdatePriority(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->Enable(GetCurMessage() != MSG_MESSAGEKEYNONE);
|
|
}
|
|
|
|
#define UNSEC_SIGNED_INDEX 7
|
|
#define UNSECURE_INDEX 8
|
|
#define SEC_SIGNED_INDEX 9
|
|
#define SECURE_INDEX 10
|
|
|
|
void CMailNewsFrame::OnUpdateSecurity(CCmdUI *pCmdUI)
|
|
{
|
|
XP_Bool bSigned = FALSE;
|
|
XP_Bool bEncrypted = FALSE;
|
|
|
|
MIME_GetMessageCryptoState(GetMainContext()->GetContext(),
|
|
0, 0,
|
|
&bSigned,
|
|
&bEncrypted);
|
|
|
|
if (m_bNews) {
|
|
int status = XP_GetSecurityStatus(GetMainContext()->GetContext());
|
|
if (status == SSL_SECURITY_STATUS_ON_LOW || status == SSL_SECURITY_STATUS_ON_HIGH)
|
|
bEncrypted = TRUE;
|
|
}
|
|
|
|
LPNSTOOLBAR pIToolBar;
|
|
m_pChrome->QueryInterface( IID_INSToolBar, (LPVOID *) &pIToolBar );
|
|
if ( pIToolBar ) {
|
|
CCommandToolbar *pToolBar = (CCommandToolbar *) CWnd::FromHandlePermanent( pIToolBar->GetHWnd() );
|
|
|
|
int index = bEncrypted ?
|
|
(bSigned ? SEC_SIGNED_INDEX : SECURE_INDEX) :
|
|
(bSigned ? UNSEC_SIGNED_INDEX : UNSECURE_INDEX);
|
|
|
|
pToolBar->ReplaceButtonBitmapIndex(ID_SECURITY, index);
|
|
pIToolBar->Release();
|
|
}
|
|
pCmdUI->Enable(TRUE);
|
|
}
|
|
|
|
void CMailNewsFrame::OnUpdateSecureStatus(CCmdUI *pCmdUI)
|
|
{
|
|
XP_Bool bSigned = FALSE;
|
|
XP_Bool bEncrypted = FALSE;
|
|
|
|
MIME_GetMessageCryptoState(GetMainContext()->GetContext(),
|
|
0, 0,
|
|
&bSigned,
|
|
&bEncrypted);
|
|
|
|
if (m_bNews) {
|
|
int status = XP_GetSecurityStatus(GetMainContext()->GetContext());
|
|
if (status == SSL_SECURITY_STATUS_ON_LOW || status == SSL_SECURITY_STATUS_ON_HIGH)
|
|
bEncrypted = TRUE;
|
|
}
|
|
|
|
if (pCmdUI->m_nID == IDS_SECURITY_STATUS)
|
|
pCmdUI->Enable(bEncrypted);
|
|
else
|
|
pCmdUI->Enable(bSigned);
|
|
}
|
|
|
|
void CMailNewsFrame::SetCSID( int csid ) {
|
|
if (m_iCSID != csid)
|
|
{
|
|
m_iCSID = csid;
|
|
if (m_pOutliner) {
|
|
m_pOutliner->SetCSID( csid );
|
|
}
|
|
|
|
if (m_pInfoBar) {
|
|
m_pInfoBar->SetCSID( csid );
|
|
}
|
|
GetContext()->NiceReload();
|
|
if ( m_pMessageView ) {
|
|
m_pMessageView->SetCSID( csid );
|
|
}
|
|
}
|
|
}
|
|
|
|
void CMailNewsFrame::RefreshNewEncoding(int16 doc_csid, BOOL bSave )
|
|
{
|
|
int16 win_csid = INTL_DocToWinCharSetID(doc_csid);
|
|
INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo( GetMainContext()->GetContext() );
|
|
|
|
INTL_SetCSIDocCSID( c, doc_csid );
|
|
INTL_SetCSIWinCSID( c, win_csid );
|
|
|
|
SetCSID( doc_csid );
|
|
|
|
if ( bSave ) {
|
|
MSG_FolderInfo *folderInfo = GetCurFolder();
|
|
if (m_bCategory)
|
|
folderInfo = MSG_GetCategoryContainerForCategory(folderInfo);
|
|
|
|
if (folderInfo) {
|
|
MSG_SetFolderCSID( folderInfo, doc_csid );
|
|
}
|
|
}
|
|
}
|
|
|
|
// CMsgListFrame
|
|
|
|
STDMETHODIMP CMsgListFrame::QueryInterface(REFIID refiid, LPVOID * ppv)
|
|
{
|
|
*ppv = NULL;
|
|
if (IsEqualIID(refiid,IID_IUnknown))
|
|
*ppv = (LPUNKNOWN) (LPMSGLIST) this;
|
|
else if (IsEqualIID(refiid,IID_IMsgList))
|
|
*ppv = (LPMSGLIST) this;
|
|
else if (IsEqualIID(refiid,IID_IMailFrame))
|
|
*ppv = (LPMAILFRAME) this;
|
|
|
|
if (*ppv != NULL) {
|
|
AddRef();
|
|
return NOERROR;
|
|
}
|
|
|
|
return ResultFromScode(E_NOINTERFACE);
|
|
}
|
|
|
|
STDMETHODIMP_(ULONG) CMsgListFrame::AddRef(void)
|
|
{
|
|
return ++m_ulRefCount;
|
|
}
|
|
|
|
STDMETHODIMP_(ULONG) CMsgListFrame::Release(void)
|
|
{
|
|
ULONG ulRef;
|
|
ulRef = --m_ulRefCount;
|
|
if (m_ulRefCount == 0)
|
|
delete this;
|
|
return ulRef;
|
|
}
|
|
|
|
CMsgListFrame::CMsgListFrame()
|
|
{
|
|
}
|
|
|
|
// IMsgList Interface
|
|
|
|
void CMsgListFrame::ListChangeStarting( MSG_Pane* pane, XP_Bool asynchronous,
|
|
MSG_NOTIFY_CODE notify, MSG_ViewIndex where,
|
|
int32 num)
|
|
{
|
|
if ( pane == m_pPane ) {
|
|
if ( m_pOutliner ) {
|
|
m_pOutliner->MysticStuffStarting( asynchronous, notify,
|
|
where, num );
|
|
}
|
|
} else {
|
|
ASSERT(0);
|
|
}
|
|
}
|
|
|
|
void CMsgListFrame::ListChangeFinished( MSG_Pane* pane, XP_Bool asynchronous,
|
|
MSG_NOTIFY_CODE notify, MSG_ViewIndex where,
|
|
int32 num)
|
|
{
|
|
if ( pane == m_pPane ) {
|
|
if ( m_pOutliner ) {
|
|
m_pOutliner->MysticStuffFinishing( asynchronous, notify,
|
|
where, num );
|
|
}
|
|
} else {
|
|
ASSERT(0);
|
|
}
|
|
}
|
|
|
|
void CMsgListFrame::GetSelection( MSG_Pane* pane, MSG_ViewIndex **indices, int *count,
|
|
int *focus)
|
|
{
|
|
if ( pane == m_pPane ) {
|
|
if ( m_pOutliner ) {
|
|
m_pOutliner->GetSelection(*indices, *count);
|
|
*focus = m_pOutliner->GetFocusLine();
|
|
}
|
|
} else {
|
|
ASSERT(0);
|
|
}
|
|
}
|
|
|
|
void CMsgListFrame::SelectItem( MSG_Pane* pane, int item )
|
|
{
|
|
if ( pane == m_pPane ) {
|
|
if ( m_pOutliner ) {
|
|
m_pOutliner->SelectItem(item);
|
|
m_pOutliner->ScrollIntoView(item);
|
|
}
|
|
} else {
|
|
ASSERT(0);
|
|
}
|
|
}
|
|
|
|
void CMsgListFrame::CopyMessagesInto( MSG_Pane *pane, MSG_ViewIndex *indices, int count,
|
|
MSG_FolderInfo *folderInfo)
|
|
{
|
|
ASSERT(0);
|
|
}
|
|
|
|
void CMsgListFrame::MoveMessagesInto( MSG_Pane *pane, MSG_ViewIndex *indices, int count,
|
|
MSG_FolderInfo *folderInfo)
|
|
{
|
|
ASSERT(0);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP( CMsgListFrame, CMailNewsFrame)
|
|
ON_WM_CREATE()
|
|
ON_WM_DESTROY()
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
int CMsgListFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
int res = CMailNewsFrame::OnCreate( lpCreateStruct );
|
|
|
|
return res;
|
|
}
|
|
|
|
void CMsgListFrame::OnDestroy()
|
|
{
|
|
// Destroy my own damn context
|
|
if(GetMainContext() && !GetMainContext()->IsDestroyed()) {
|
|
CAbstractCX *pCX = GetMainContext();
|
|
ClearContext(pCX);
|
|
pCX->DestroyContext();
|
|
}
|
|
|
|
CMailNewsFrame::OnDestroy();
|
|
}
|
|
|
|
BOOL WFE_MSGCheckWizard(CWnd *pParent)
|
|
{
|
|
return CMailNewsFrame::CheckWizard(pParent);
|
|
}
|