// 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(); }