зеркало из https://github.com/mozilla/gecko-dev.git
137 строки
3.4 KiB
C++
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();
|
|
}
|
|
|