You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
4.7 KiB
C++
168 lines
4.7 KiB
C++
2 years ago
|
// XTPCalendarOccurSeriesChooseDlg.cpp: implementation of the
|
||
|
// CXTPCalendarOccurSeriesChooseDlg class.
|
||
|
//
|
||
|
// This file is a part of the XTREME CALENDAR MFC class library.
|
||
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
||
|
//
|
||
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
||
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
||
|
// CONSENT OF CODEJOCK SOFTWARE.
|
||
|
//
|
||
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
||
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
||
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
||
|
// SINGLE COMPUTER.
|
||
|
//
|
||
|
// CONTACT INFORMATION:
|
||
|
// support@codejock.com
|
||
|
// http://www.codejock.com
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "Resource.h"
|
||
|
|
||
|
#include "Common/XTPResourceManager.h"
|
||
|
#include "Common/XTPDrawHelpers.h"
|
||
|
#include "Common/XTPSmartPtrInternalT.h"
|
||
|
|
||
|
#include "XTPCalendarDefines.h"
|
||
|
#include "XTPCalendarEvent.h"
|
||
|
#include "XTPCalendarOccurSeriesChooseDlg.h"
|
||
|
|
||
|
HICON XTPLoadIconEx(LPCTSTR lpszResourceIcon)
|
||
|
{
|
||
|
if (!lpszResourceIcon)
|
||
|
return NULL;
|
||
|
|
||
|
HICON hIcon = AfxGetApp()->LoadIcon(lpszResourceIcon);
|
||
|
if (!hIcon)
|
||
|
hIcon = ::LoadIcon(NULL, lpszResourceIcon);
|
||
|
|
||
|
return hIcon;
|
||
|
}
|
||
|
|
||
|
// CXTPCalendarOccurSeriesChooseDlg dialog
|
||
|
CXTPCalendarOccurSeriesChooseDlg::CXTPCalendarOccurSeriesChooseDlg(CWnd* pParent,
|
||
|
UINT nIDResourceLabels, LPCTSTR lpszResourceIcon, UINT nIDTemplate)
|
||
|
{
|
||
|
InitModalIndirect(XTPResourceManager()->LoadDialogTemplate(nIDTemplate), pParent);
|
||
|
|
||
|
m_bOccur = TRUE;
|
||
|
m_nIDResourceLabels = nIDResourceLabels;
|
||
|
m_hIcon = XTPLoadIconEx(lpszResourceIcon);
|
||
|
|
||
|
SetEvent(NULL);
|
||
|
}
|
||
|
|
||
|
CXTPCalendarOccurSeriesChooseDlg::~CXTPCalendarOccurSeriesChooseDlg()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void CXTPCalendarOccurSeriesChooseDlg::SetEvent(CXTPCalendarEvent* pEvent)
|
||
|
{
|
||
|
CString strDialog;
|
||
|
CXTPResourceManager::AssertValid(XTPResourceManager()->LoadString(&strDialog, m_nIDResourceLabels));
|
||
|
|
||
|
m_strTitle = strDialog.Left(strDialog.Find(_T('\n')));
|
||
|
VERIFY(!m_strTitle.IsEmpty());
|
||
|
strDialog.Delete(0, m_strTitle.GetLength() + 1);
|
||
|
|
||
|
m_strOccur = strDialog.Left(strDialog.Find(_T('\n')));
|
||
|
VERIFY(!m_strOccur.IsEmpty());
|
||
|
strDialog.Delete(0, m_strOccur.GetLength() + 1);
|
||
|
|
||
|
m_strSeries = strDialog.Left(strDialog.Find(_T('\n')));
|
||
|
VERIFY(!m_strSeries.IsEmpty());
|
||
|
strDialog.Delete(0, m_strSeries.GetLength() + 1);
|
||
|
|
||
|
m_strMessage.Format(strDialog, pEvent ? (LPCTSTR)pEvent->GetSubject() : _T(""));
|
||
|
}
|
||
|
|
||
|
void CXTPCalendarOccurSeriesChooseDlg::DoDataExchange(CDataExchange* pDX)
|
||
|
{
|
||
|
CDialog::DoDataExchange(pDX);
|
||
|
|
||
|
DDX_Control(pDX, XTP_IDC_CALENDAR_STATIC_OCCUR_MESSAGE, m_ctrlMessage);
|
||
|
DDX_Control(pDX, XTP_IDC_CALENDAR_RADIO_OCCUR, m_ctrlOccur);
|
||
|
DDX_Control(pDX, XTP_IDC_CALENDAR_RADIO_SERIES, m_ctrlSeries);
|
||
|
DDX_Control(pDX, XTP_IDC_CALENDAR_STATIC_ICON, m_ctrlIcon);
|
||
|
}
|
||
|
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CXTPCalendarOccurSeriesChooseDlg, CDialog)
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
// CXTPCalendarOccurSeriesChooseDlg message handlers
|
||
|
|
||
|
BOOL CXTPCalendarOccurSeriesChooseDlg::OnInitDialog()
|
||
|
{
|
||
|
#define OFFSETWINDOW(ID, OffsetTop, OffsetHeight)\
|
||
|
GetDlgItem(ID)->GetWindowRect(rcCtrl);\
|
||
|
ScreenToClient(&rcCtrl);\
|
||
|
GetDlgItem(ID)->MoveWindow(rcCtrl.left, rcCtrl.top + OffsetTop, rcCtrl.Width(), rcCtrl.Height() + OffsetHeight);
|
||
|
|
||
|
CDialog::OnInitDialog();
|
||
|
|
||
|
m_ctrlOccur.SetCheck(m_bOccur ? 1 : 0);
|
||
|
m_ctrlSeries.SetCheck(m_bOccur ? 0 : 1);
|
||
|
|
||
|
if (!m_strTitle.IsEmpty())
|
||
|
{
|
||
|
SetWindowText(m_strTitle);
|
||
|
}
|
||
|
|
||
|
if (!m_strMessage.IsEmpty())
|
||
|
{
|
||
|
m_ctrlMessage.SetWindowText(m_strMessage);
|
||
|
}
|
||
|
|
||
|
if (!m_strOccur.IsEmpty())
|
||
|
{
|
||
|
m_ctrlOccur.SetWindowText(m_strOccur);
|
||
|
}
|
||
|
if (!m_strSeries.IsEmpty())
|
||
|
{
|
||
|
m_ctrlSeries.SetWindowText(m_strSeries);
|
||
|
}
|
||
|
if (m_hIcon)
|
||
|
{
|
||
|
m_ctrlIcon.SetIcon(m_hIcon);
|
||
|
}
|
||
|
|
||
|
CClientDC dc(&m_ctrlMessage);
|
||
|
CFont* pOldFont = dc.SelectObject(m_ctrlMessage.GetFont());
|
||
|
|
||
|
CXTPClientRect rcMessageCtrl(&m_ctrlMessage);
|
||
|
|
||
|
CRect rcMessage(0, 0, rcMessageCtrl.Width(), 0);
|
||
|
dc.DrawText(m_strMessage, rcMessage, DT_CALCRECT | DT_NOPREFIX | DT_WORDBREAK);
|
||
|
|
||
|
int nOffset = rcMessage.Height() - rcMessageCtrl.Height();
|
||
|
|
||
|
if (nOffset > 0)
|
||
|
{
|
||
|
CRect rcCtrl;
|
||
|
GetWindowRect(rcCtrl);
|
||
|
MoveWindow(rcCtrl.left, rcCtrl.top, rcCtrl.Width(), rcCtrl.Height() + nOffset);
|
||
|
|
||
|
OFFSETWINDOW(XTP_IDC_CALENDAR_STATIC_OCCUR_MESSAGE, 0, nOffset);
|
||
|
OFFSETWINDOW(XTP_IDC_CALENDAR_RADIO_OCCUR, nOffset, 0);
|
||
|
OFFSETWINDOW(XTP_IDC_CALENDAR_RADIO_SERIES, nOffset, 0);
|
||
|
OFFSETWINDOW(IDOK, nOffset, 0);
|
||
|
OFFSETWINDOW(IDCANCEL, nOffset, 0);
|
||
|
}
|
||
|
|
||
|
dc.SelectObject(pOldFont);
|
||
|
|
||
|
return TRUE; // return TRUE unless you set the focus to a control
|
||
|
// EXCEPTION: OCX Property Pages should return FALSE
|
||
|
}
|
||
|
|
||
|
void CXTPCalendarOccurSeriesChooseDlg::OnOK()
|
||
|
{
|
||
|
m_bOccur = m_ctrlOccur.GetCheck() != 0;
|
||
|
|
||
|
CDialog::OnOK();
|
||
|
}
|