gecko-dev/cmd/winfe/compfrm2.cpp

137 строки
3.4 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.
*/
/* COMPFRM.CPP - Compose Window Frame. This module contains code for the
* compose window frame class. Handles all menu and tool commands.
*
*/
#include "stdafx.h"
#include "edt.h"
#include "compbar.h"
#include "compfrm.h"
#include "prefapi.h"
#include "addrdlg.h"
#include "intl_csi.h"
extern "C" {
#include "xpgetstr.h"
extern int MK_MSG_SAVE_AS;
extern int MK_MSG_CANT_OPEN;
extern int MK_MSG_MISSING_SUBJECT;
};
#ifdef XP_WIN32
#include "postal.h"
#endif
#include "netsvw.h"
void CComposeFrame::SetEditorParent(CWnd * pWnd)
{
CWinCX * pWinCX = (CWinCX*)GetMainContext();
// after the window is created, tell the browser view to resize the
// parent which resizes the editor.
if (pWinCX)
{
CNetscapeView * pView = (CNetscapeView*)pWinCX->GetView();
if (pView)
pView->SetChild (pWnd);
}
}
void CComposeFrame::SetHtmlMode(BOOL bMode)
{
m_bUseHtml = bMode;
}
void CComposeFrame::SetQuoteSelection(void)
{
int32 eReplyOnTop = 0;
if (PREF_NOERROR == PREF_GetIntPref("mailnews.reply_on_top", &eReplyOnTop) &&
eReplyOnTop != 0) {
// call backend with insertion call-back
if (UseHtml())
{
int32 offset = EDT_GetInsertPointOffset( GetMainContext()->GetContext() );
SetQuoteSel(offset);
}
else
{
int tmpStartSel, tmpEndSel;
GetEditor()->GetSel(tmpStartSel, tmpEndSel);
// we only care about start position
SetQuoteSel((int32) tmpStartSel);
}
}
}
CWnd * CComposeFrame::GetEditorWnd(void)
{
if (m_bUseHtml)
{
CWinCX * pWinCX = (CWinCX*)GetMainContext();
HWND hwnd = pWinCX->GetPane();
return CWnd::FromHandle(hwnd);
}
return (CWnd *)&m_Editor;
}
void CComposeFrame::UpdateAttachmentInfo(void)
{
ASSERT(m_pComposeBar);
m_pComposeBar->UpdateAttachmentInfo(MSG_GetAttachmentList(GetMsgPane()) ? 1 : 0);
}
BOOL CComposeFrame::PreTranslateMessage( MSG* pMsg )
{
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_TAB)
{
BOOL bControl = GetKeyState(VK_CONTROL) & 0x8000;
BOOL bShift = GetKeyState(VK_SHIFT) & 0x8000;
CWnd * pWnd = CWnd::FromHandle(pMsg->hwnd);
if (GetComposeBar()->TabControl(bShift, bControl, pWnd))
return TRUE;
}
}
else if (pMsg->message == WM_COMMAND)
{
int ID = (int)LOWORD(pMsg->wParam);
if (ID == ID_CHECK_SPELLING)
{
OnCheckSpelling();
return TRUE;
}
}
return CGenericFrame::PreTranslateMessage(pMsg);
}
void CComposeFrame::OnSelectAddresses()
{
CAddrDialog AddressDialog(this);
GetComposeBar()->OnAddressTab();
GetComposeBar()->UpdateWindow();
CWnd * pWnd = GetFocus();
AddressDialog.DoModal();
pWnd->SetFocus();
}