1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/foxitlib.h" 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fwl/src/core/include/fwl_targetimp.h" 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fwl/src/core/include/fwl_noteimp.h" 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fwl/src/core/include/fwl_widgetimp.h" 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fwl/src/basewidget/include/fwl_monthcalendarimp.h" 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define MONTHCAL_HSEP_HEIGHT 1 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define MONTHCAL_VSEP_WIDTH 1 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define MONTHCAL_HMARGIN 3 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define MONTHCAL_VMARGIN 2 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define MONTHCAL_ROWS 9 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define MONTHCAL_COLUMNS 7 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define MONTHCAL_HEADER_BTN_VMARGIN 7 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define MONTHCAL_HEADER_BTN_HMARGIN 5 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// static 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFWL_MonthCalendar* IFWL_MonthCalendar::Create( 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFWL_WidgetImpProperties& properties, 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_Widget* pOuter) { 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_MonthCalendar* pMonthCalendar = new IFWL_MonthCalendar; 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_MonthCalendarImp* pMonthCalendarImpl = 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CFWL_MonthCalendarImp(properties, pOuter); 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMonthCalendar->SetImpl(pMonthCalendarImpl); 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMonthCalendarImpl->SetInterface(pMonthCalendar); 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pMonthCalendar; 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFWL_MonthCalendar::IFWL_MonthCalendar() {} 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t IFWL_MonthCalendar::CountSelect() { 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CFWL_MonthCalendarImp*>(GetImpl())->CountSelect(); 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL IFWL_MonthCalendar::GetSelect(int32_t& iYear, 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& iMonth, 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& iDay, 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nIndex) { 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CFWL_MonthCalendarImp*>(GetImpl()) 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->GetSelect(iYear, iMonth, iDay, nIndex); 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL IFWL_MonthCalendar::SetSelect(int32_t iYear, 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iMonth, 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDay) { 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CFWL_MonthCalendarImp*>(GetImpl()) 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->SetSelect(iYear, iMonth, iDay); 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFWL_MonthCalendarImp::CFWL_MonthCalendarImp( 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFWL_WidgetImpProperties& properties, 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_Widget* pOuter) 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : CFWL_WidgetImp(properties, pOuter), 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurYear(2011), 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurMonth(1), 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iYear(2011), 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iMonth(1), 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iDay(1), 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iHovered(-1), 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iLBtnPartStates(FWL_PARTSTATE_MCD_Normal), 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iRBtnPartStates(FWL_PARTSTATE_MCD_Normal) { 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtHead.Reset(); 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtWeek.Reset(); 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtLBtn.Reset(); 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtRBtn.Reset(); 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtDates.Reset(); 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtHSep.Reset(); 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtHeadText.Reset(); 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtToday.Reset(); 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtTodayFlag.Reset(); 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.Reset(); 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtWeekNum.Reset(); 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtWeekNumSep.Reset(); 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szHead.Reset(); 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.Reset(); 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szToday.Reset(); 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDateTime = new CFX_DateTime; 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bInit = FALSE; 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iMaxSel = 1; 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFWL_MonthCalendarImp::~CFWL_MonthCalendarImp() { 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ClearDateItem(); 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_pDateTime; 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_arrSelDays.RemoveAll(); 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFWL_ERR CFWL_MonthCalendarImp::GetClassName(CFX_WideString& wsClass) const { 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsClass = FWL_CLASS_MonthCalendar; 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FWL_ERR_Succeeded; 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_DWORD CFWL_MonthCalendarImp::GetClassID() const { 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FWL_CLASSHASH_MonthCalendar; 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFWL_ERR CFWL_MonthCalendarImp::Initialize() { 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (CFWL_WidgetImp::Initialize() != FWL_ERR_Succeeded) 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FWL_ERR_Indefinite; 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDelegate = new CFWL_MonthCalendarImpDelegate(this); 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FWL_ERR_Succeeded; 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFWL_ERR CFWL_MonthCalendarImp::Finalize() { 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_pDelegate; 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDelegate = nullptr; 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CFWL_WidgetImp::Finalize(); 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFWL_ERR CFWL_MonthCalendarImp::GetWidgetRect(CFX_RectF& rect, 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bAutoSize) { 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bAutoSize) { 107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_SizeF fs = CalcSize(TRUE); 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rect.Set(0, 0, fs.x, fs.y); 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_WidgetImp::GetWidgetRect(rect, TRUE); 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rect = m_pProperties->m_rtWidget; 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FWL_ERR_Succeeded; 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFWL_ERR CFWL_MonthCalendarImp::Update() { 116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (IsLocked()) { 117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FWL_ERR_Indefinite; 118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pProperties->m_pThemeProvider) { 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pProperties->m_pThemeProvider = GetAvailableTheme(); 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetCapValue(); 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_bInit) { 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bInit = InitDate(); 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ClearDateItem(); 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ReSetDateItem(); 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LayOut(); 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FWL_ERR_Succeeded; 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFWL_ERR CFWL_MonthCalendarImp::DrawWidget(CFX_Graphics* pGraphics, 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pGraphics) 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FWL_ERR_Indefinite; 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pProperties->m_pThemeProvider == NULL) { 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pProperties->m_pThemeProvider = GetAvailableTheme(); 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (HasBorder()) { 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawBorder(pGraphics, FWL_PART_MCD_Border, pTheme, pMatrix); 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (HasEdge()) { 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawEdge(pGraphics, FWL_PART_MCD_Edge, pTheme, pMatrix); 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawBkground(pGraphics, pTheme, pMatrix); 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawHeadBK(pGraphics, pTheme, pMatrix); 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawLButton(pGraphics, pTheme, pMatrix); 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawRButton(pGraphics, pTheme, pMatrix); 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawSeperator(pGraphics, pTheme, pMatrix); 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawDatesInBK(pGraphics, pTheme, pMatrix); 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawDatesInCircle(pGraphics, pTheme, pMatrix); 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawCaption(pGraphics, pTheme, pMatrix); 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawWeek(pGraphics, pTheme, pMatrix); 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawDatesIn(pGraphics, pTheme, pMatrix); 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawDatesOut(pGraphics, pTheme, pMatrix); 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawToday(pGraphics, pTheme, pMatrix); 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_WeekNumbers) { 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawWeekNumberSep(pGraphics, pTheme, pMatrix); 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DrawWeekNumber(pGraphics, pTheme, pMatrix); 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FWL_ERR_Succeeded; 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CFWL_MonthCalendarImp::CountSelect() { 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_arrSelDays.GetSize(); 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::GetSelect(int32_t& iYear, 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& iMonth, 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& iDay, 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nIndex) { 170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (nIndex >= m_arrSelDays.GetSize()) { 171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iYear = m_iCurYear; 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iMonth = m_iCurMonth; 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iDay = m_arrSelDays[nIndex]; 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::SetSelect(int32_t iYear, 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iMonth, 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDay) { 181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ChangeToMonth(iYear, iMonth); 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return AddSelDay(iDay); 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawBkground(CFX_Graphics* pGraphics, 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeBackground params; 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_Background; 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = m_rtClient; 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawBackground(¶ms); 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawHeadBK(CFX_Graphics* pGraphics, 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeBackground params; 202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_Header; 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = m_rtHead; 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawBackground(¶ms); 211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawLButton(CFX_Graphics* pGraphics, 213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeBackground params; 216ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 217ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_LBtn; 218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = m_iLBtnPartStates; 220ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = m_rtLBtn; 221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 222ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawBackground(¶ms); 225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 226ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawRButton(CFX_Graphics* pGraphics, 227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeBackground params; 230ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 231ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_RBtn; 232ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = m_iRBtnPartStates; 234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = m_rtRBtn; 235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 237ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawBackground(¶ms); 239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawCaption(CFX_Graphics* pGraphics, 241ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 242ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeText textParam; 244ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann textParam.m_pWidget = m_pInterface; 245ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann textParam.m_iPart = FWL_PART_MCD_Caption; 246ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann textParam.m_dwStates = FWL_PARTSTATE_MCD_Normal; 247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann textParam.m_pGraphics = pGraphics; 248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iYear; 249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iMonth; 250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iYear = m_iCurYear; 251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iMonth = m_iCurMonth; 252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString wsCation; 253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetHeadText(iYear, iMonth, wsCation); 254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann textParam.m_wsText = wsCation; 255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szHead = CalcTextSize(textParam.m_wsText, m_pProperties->m_pThemeProvider); 256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalcHeadSize(); 257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann textParam.m_rtPart = m_rtHeadText; 258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann textParam.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; 259ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann textParam.m_iTTOAlign = FDE_TTOALIGNMENT_Center; 260ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann textParam.m_matrix.Concat(*pMatrix); 262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawText(&textParam); 264ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 265ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawSeperator(CFX_Graphics* pGraphics, 266ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 267ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 268ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeBackground params; 269ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 270ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_HSeparator; 271ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 272ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 273ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = m_rtHSep; 274ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 275ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 276ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 277ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawBackground(¶ms); 278ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawDatesInBK(CFX_Graphics* pGraphics, 280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeBackground params; 283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_DateInBK; 285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 286ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = m_arrDates.GetSize(); 290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t j = 0; j < iCount; j++) { 291ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pDataInfo = (LPDATEINFO)m_arrDates.GetAt(j); 292ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Selected) { 293ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates |= FWL_PARTSTATE_MCD_Selected; 294ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoTodayCircle) == 295ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 0) && 296ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Flag) { 297ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates |= FWL_PARTSTATE_MCD_Flagged; 298ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 299ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Focused) { 300ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates |= FWL_PARTSTATE_MCD_Focused; 301ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 302ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (j == m_iHovered - 1) { 303ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates |= FWL_PARTSTATE_MCD_Hovered; 304ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Flag) { 305ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Flagged; 306ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawBackground(¶ms); 307ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 308ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = pDataInfo->rect; 309ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawBackground(¶ms); 310ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = 0; 311ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 313ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawWeek(CFX_Graphics* pGraphics, 314ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 315ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 316ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeText params; 317ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 318ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_Week; 319ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 321ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; 322ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iWeek; 323ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iWeek = m_pDateTime->GetDayOfWeek(); 324ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RectF rtDayOfWeek; 325ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 328ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < 7; i++) { 329ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rtDayOfWeek.Set(m_rtWeek.left + i * (m_szCell.x + MONTHCAL_HMARGIN * 2), 330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtWeek.top, m_szCell.x, m_szCell.y); 331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString* wsWeekDay = static_cast<CFX_WideString*>( 332ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(¶ms, i + FWL_MCCAPACITY_Sun)); 333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = rtDayOfWeek; 334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_wsText = *wsWeekDay; 335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; 336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawText(¶ms); 337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawWeekNumber(CFX_Graphics* pGraphics, 340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeText params; 343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 344ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_WeekNum; 345ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 346ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 347ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iTTOAlign = FDE_TTOALIGNMENT_CenterLeft; 348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString wsWeekNum; 349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; 350ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; 351ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 352ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 354ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iWeekNum = 0; 355ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iMonthNum = m_pDateTime->GetMonth(); 356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDayNum = FX_DaysInMonth(m_iCurYear, iMonthNum); 357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iTemp = 0; 358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fVStartPos = m_rtClient.top + m_fHeadHei + m_fHSepHei; 359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHStartPos = m_rtClient.left; 360ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 1; i <= iDayNum; i += 7) { 361ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iTemp++; 362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iWeekNum = CalWeekNumber(m_iCurYear, iMonthNum, i); 363ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtWeekNum.Set(fHStartPos, fVStartPos + m_fDateCellHei * iTemp, 364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fWeekNumWid, m_fDateCellHei); 365ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsWeekNum.Format(L"%d", iWeekNum); 366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_wsText = wsWeekNum; 367ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = m_rtWeekNum; 368ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawText(¶ms); 369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 370ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 371ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawWeekNumberSep(CFX_Graphics* pGraphics, 372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 374ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeBackground params; 375ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 376ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_WeekNumSep; 377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 379ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = m_rtWeekNumSep; 380ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 381ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 382ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 383ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawBackground(¶ms); 384ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 385ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawToday(CFX_Graphics* pGraphics, 386ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 387ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 388ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoToday) { 389ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 390ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 391ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeText params; 392ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 393ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_Today; 394ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 395ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 396ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iTTOAlign = FDE_TTOALIGNMENT_CenterLeft; 397ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString* wsDay = static_cast<CFX_WideString*>( 398ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(¶ms, FWL_MCCAPACITY_Today)); 399ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString wsText; 400ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetTodayText(m_iYear, m_iMonth, m_iDay, wsText); 401ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_wsText = *wsDay + wsText; 402ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szToday = CalcTextSize(params.m_wsText, m_pProperties->m_pThemeProvider); 403ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalcTodaySize(); 404ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = m_rtToday; 405ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; 406ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 407ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 408ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 409ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawText(¶ms); 410ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 411ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawDatesIn(CFX_Graphics* pGraphics, 412ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 413ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 414ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeText params; 415ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 416ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_DatesIn; 417ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 418ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 419ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; 420ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 421ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 422ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 423ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = m_arrDates.GetSize(); 424ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t j = 0; j < iCount; j++) { 425ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pDataInfo = (LPDATEINFO)m_arrDates.GetAt(j); 426ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_wsText = pDataInfo->wsDay; 427ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = pDataInfo->rect; 428ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = pDataInfo->dwStates; 429ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (j + 1 == m_iHovered) { 430ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates |= FWL_PARTSTATE_MCD_Hovered; 431ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 432ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; 433ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawText(¶ms); 434ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 435ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 436ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawDatesOut(CFX_Graphics* pGraphics, 437ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 438ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 439ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeText params; 440ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 441ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_DatesOut; 442ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 443ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 444ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; 445ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 446ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 447ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 448ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawText(¶ms); 449ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 450ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawDatesInCircle(CFX_Graphics* pGraphics, 451ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 452ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 453ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoTodayCircle) { 454ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 455ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 456ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_iMonth != m_iCurMonth || m_iYear != m_iCurYear) { 457ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 458ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 459ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_iDay < 1 || m_iDay > m_arrDates.GetSize()) { 460ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 461ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 462ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pDate = (LPDATEINFO)m_arrDates[m_iDay - 1]; 463ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pDate) 464ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 465ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeBackground params; 466ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 467ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_DateInCircle; 468ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 469ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = pDate->rect; 470ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 471ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 472ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 473ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 474ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawBackground(¶ms); 475ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 476ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::DrawTodayCircle(CFX_Graphics* pGraphics, 477ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme, 478ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 479ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoToday) { 480ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 481ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 482ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoTodayCircle) { 483ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 484ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 485ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeBackground params; 486ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 487ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_iPart = FWL_PART_MCD_TodayCircle; 488ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pGraphics = pGraphics; 489ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_dwStates = FWL_PARTSTATE_MCD_Normal; 490ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_rtPart = m_rtTodayFlag; 491ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMatrix) { 492ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_matrix.Concat(*pMatrix); 493ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 494ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->DrawBackground(¶ms); 495ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 496ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_SizeF CFWL_MonthCalendarImp::CalcSize(FX_BOOL bAutoSize) { 497ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_SizeF fs; 498ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fs.Set(0, 0); 499ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pProperties->m_pThemeProvider) 500ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fs; 501ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bAutoSize) { 502ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemePart params; 503ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann params.m_pWidget = m_pInterface; 504ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; 505ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString* wsText = NULL; 506ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fMaxWeekW = 0.0f; 507ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fMaxWeekH = 0.0f; 508ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (FX_DWORD week = FWL_MCCAPACITY_Sun; week <= FWL_MCCAPACITY_Sat; 509ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann week++) { 510ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsText = static_cast<CFX_WideString*>(pTheme->GetCapacity(¶ms, week)); 511ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_SizeF sz = CalcTextSize(*wsText, m_pProperties->m_pThemeProvider); 512ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fMaxWeekW = (fMaxWeekW >= sz.x) ? fMaxWeekW : sz.x; 513ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fMaxWeekH = (fMaxWeekH >= sz.y) ? fMaxWeekH : sz.y; 514ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 515ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fDayMaxW = 0.0f; 516ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fDayMaxH = 0.0f; 517ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int day = 10; day <= 31; day++) { 518ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString wsDay; 519ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsDay.Format(L"%d", day); 520ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_SizeF sz = CalcTextSize(wsDay, m_pProperties->m_pThemeProvider); 521ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fDayMaxW = (fDayMaxW >= sz.x) ? fDayMaxW : sz.x; 522ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fDayMaxH = (fDayMaxH >= sz.y) ? fDayMaxH : sz.y; 523ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 524ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.x = FX_FLOAT((fMaxWeekW >= fDayMaxW) ? (int)(fMaxWeekW + 0.5) 525ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : (int)(fDayMaxW + 0.5)); 526ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.y = (fMaxWeekH >= fDayMaxH) ? fMaxWeekH : fDayMaxH; 527ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fs.x = m_szCell.x * MONTHCAL_COLUMNS + 528ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann MONTHCAL_HMARGIN * MONTHCAL_COLUMNS * 2 + 529ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann MONTHCAL_HEADER_BTN_HMARGIN * 2; 530ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fMonthMaxW = 0.0f; 531ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fMonthMaxH = 0.0f; 532ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (FX_DWORD month = FWL_MCCAPACITY_January; 533ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann month <= FWL_MCCAPACITY_December; month++) { 534ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsText = 535ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<CFX_WideString*>(pTheme->GetCapacity(¶ms, month)); 536ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_SizeF sz = CalcTextSize(*wsText, m_pProperties->m_pThemeProvider); 537ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fMonthMaxW = (fMonthMaxW >= sz.x) ? fMonthMaxW : sz.x; 538ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fMonthMaxH = (fMonthMaxH >= sz.y) ? fMonthMaxH : sz.y; 539ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 540ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString wsYear; 541ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetHeadText(m_iYear, m_iMonth, wsYear); 542ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_SizeF szYear = CalcTextSize(wsYear, m_pProperties->m_pThemeProvider); 543ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fMonthMaxH = (fMonthMaxH >= szYear.y) ? fMonthMaxH : szYear.y; 544ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szHead.Set(fMonthMaxW + szYear.x, fMonthMaxH); 545ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fMonthMaxW = m_szHead.x + MONTHCAL_HEADER_BTN_HMARGIN * 2 + m_szCell.x * 2; 546ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fs.x = (fs.x >= fMonthMaxW) ? fs.x : fMonthMaxW; 547ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString wsToday; 548ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetTodayText(m_iYear, m_iMonth, m_iDay, wsToday); 549ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsText = static_cast<CFX_WideString*>( 550ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(¶ms, FWL_MCCAPACITY_Today)); 551ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_wsToday = *wsText + wsToday; 552ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szToday = CalcTextSize(wsToday, m_pProperties->m_pThemeProvider); 553ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szToday.y = (m_szToday.y >= m_szCell.y) ? m_szToday.y : m_szCell.y; 554ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fs.y = m_szCell.x + m_szCell.y * (MONTHCAL_ROWS - 2) + m_szToday.y + 555ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann MONTHCAL_VMARGIN * MONTHCAL_ROWS * 2 + 556ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann MONTHCAL_HEADER_BTN_VMARGIN * 4; 557ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 558ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetClientRect(m_rtClient); 559ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fs.Set(m_rtClient.width, m_rtClient.height); 560ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 561ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fs; 562ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 563ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::CalcHeadSize() { 564ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHeadHMargin = (m_rtClient.width - m_szHead.x) / 2; 565ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHeadVMargin = (m_szCell.x - m_szHead.y) / 2; 566ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtHeadText.Set(m_rtClient.left + fHeadHMargin, 567ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.top + MONTHCAL_HEADER_BTN_VMARGIN + 568ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann MONTHCAL_VMARGIN + fHeadVMargin, 569ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szHead.x, m_szHead.y); 570ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 571ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::CalcTodaySize() { 572ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtTodayFlag.Set( 573ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN + MONTHCAL_HMARGIN, 574ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtDates.bottom() + MONTHCAL_HEADER_BTN_VMARGIN + MONTHCAL_VMARGIN, 575ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.x, m_szToday.y); 576ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtToday.Set( 577ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN + m_szCell.x + 578ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann MONTHCAL_HMARGIN * 2, 579ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtDates.bottom() + MONTHCAL_HEADER_BTN_VMARGIN + MONTHCAL_VMARGIN, 580ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szToday.x, m_szToday.y); 581ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 582ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::LayOut() { 583ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetClientRect(m_rtClient); 584ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 585ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtHead.Set( 586ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN, m_rtClient.top, 587ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.width - MONTHCAL_HEADER_BTN_HMARGIN * 2, 588ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.x + (MONTHCAL_HEADER_BTN_VMARGIN + MONTHCAL_VMARGIN) * 2); 589ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtWeek.Set(m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN, 590ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtHead.bottom(), 591ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.width - MONTHCAL_HEADER_BTN_HMARGIN * 2, 592ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.y + MONTHCAL_VMARGIN * 2); 593ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtLBtn.Set(m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN, 594ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.top + MONTHCAL_HEADER_BTN_VMARGIN, m_szCell.x, 595ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.x); 596ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtRBtn.Set(m_rtClient.left + m_rtClient.width - 597ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann MONTHCAL_HEADER_BTN_HMARGIN - m_szCell.x, 598ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.top + MONTHCAL_HEADER_BTN_VMARGIN, m_szCell.x, 599ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.x); 600ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtHSep.Set( 601ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN + MONTHCAL_HMARGIN, 602ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtWeek.bottom() - MONTHCAL_VMARGIN, 603ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.width - (MONTHCAL_HEADER_BTN_HMARGIN + MONTHCAL_HMARGIN) * 2, 604ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann MONTHCAL_HSEP_HEIGHT); 605ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtDates.Set(m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN, 606ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtWeek.bottom(), 607ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtClient.width - MONTHCAL_HEADER_BTN_HMARGIN * 2, 608ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.y * (MONTHCAL_ROWS - 3) + 609ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann MONTHCAL_VMARGIN * (MONTHCAL_ROWS - 3) * 2); 610ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 611ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalDateItem(); 612ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 613ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::CalDateItem() { 614ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bNewWeek = FALSE; 615ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iWeekOfMonth = 0; 616ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fLeft = m_rtDates.left; 617ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fTop = m_rtDates.top; 618ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = m_arrDates.GetSize(); 619ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iCount; i++) { 620ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pDateInfo = (LPDATEINFO)m_arrDates.GetAt(i); 621ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bNewWeek) { 622ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iWeekOfMonth++; 623ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bNewWeek = FALSE; 624ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 625ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDateInfo->rect.Set( 626ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fLeft + pDateInfo->iDayOfWeek * (m_szCell.x + (MONTHCAL_HMARGIN * 2)), 627ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fTop + iWeekOfMonth * (m_szCell.y + (MONTHCAL_VMARGIN * 2)), 628ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.x + (MONTHCAL_HMARGIN * 2), 629ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_szCell.y + (MONTHCAL_VMARGIN * 2)); 630ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_WeekNumbers) { 631ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDateInfo->rect.Offset(m_fWeekNumWid, 0); 632ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 633ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pDateInfo->iDayOfWeek >= 6) { 634ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bNewWeek = TRUE; 635ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 636ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 637ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 638ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::GetCapValue() { 639ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pProperties->m_pThemeProvider) { 640ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pProperties->m_pThemeProvider = GetAvailableTheme(); 641ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 642ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; 643ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemePart part; 644ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann part.m_pWidget = m_pInterface; 645ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHeadWid = *static_cast<FX_FLOAT*>( 646ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEADER_WIDTH)); 647ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHeadHei = *static_cast<FX_FLOAT*>( 648ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEADER_Height)); 649ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHeadBtnWid = *static_cast<FX_FLOAT*>( 650ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEADER_BTN_WIDTH)); 651ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHeadBtnHei = *static_cast<FX_FLOAT*>( 652ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEADER_BTN_HEIGHT)); 653ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHeadBtnHMargin = *static_cast<FX_FLOAT*>( 654ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEADER_BTN_HMARGIN)); 655ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHeadBtnVMargin = *static_cast<FX_FLOAT*>( 656ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEADER_BTN_VMARGIN)); 657ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHeadTextWid = *static_cast<FX_FLOAT*>( 658ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEADER_TEXTWIDHT)); 659ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHeadTextHei = *static_cast<FX_FLOAT*>( 660ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEADER_TEXTHEIGHT)); 661ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHeadTextHMargin = *static_cast<FX_FLOAT*>( 662ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEADER_TEXT_HMARGIN)); 663ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHeadTextVMargin = *static_cast<FX_FLOAT*>( 664ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEADER_TEXT_VMARGIN)); 665ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHSepWid = *static_cast<FX_FLOAT*>( 666ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HSEP_WIDTH)); 667ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fHSepHei = *static_cast<FX_FLOAT*>( 668ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HSEP_HEIGHT)); 669ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fWeekNumWid = *static_cast<FX_FLOAT*>( 670ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_WEEKNUM_WIDTH)); 671ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fSepDOffset = *static_cast<FX_FLOAT*>( 672ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_SEP_DOFFSET)); 673ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fSepX = *static_cast<FX_FLOAT*>( 674ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_SEP_X)); 675ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fSepY = *static_cast<FX_FLOAT*>( 676ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_SEP_Y)); 677ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fWeekNumHeigh = *static_cast<FX_FLOAT*>( 678ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_WEEKNUM_HEIGHT)); 679ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fWeekWid = *static_cast<FX_FLOAT*>( 680ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_WEEK_WIDTH)); 681ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fWeekHei = *static_cast<FX_FLOAT*>( 682ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_WEEK_HEIGHT)); 683ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fDateCellWid = *static_cast<FX_FLOAT*>( 684ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_DATES_CELL_WIDTH)); 685ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fDateCellHei = *static_cast<FX_FLOAT*>( 686ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_DATES_CELL_HEIGHT)); 687ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fTodayWid = *static_cast<FX_FLOAT*>( 688ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_TODAY_WIDHT)); 689ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fTodayHei = *static_cast<FX_FLOAT*>( 690ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_TODAY_HEIGHT)); 691ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fTodayFlagWid = *static_cast<FX_FLOAT*>( 692ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_TODAY_FLAG_WIDHT)); 693ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fMCWid = *static_cast<FX_FLOAT*>( 694ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_WIDTH)); 695ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_WeekNumbers) { 696ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fMCWid += m_fWeekNumWid; 697ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 698ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fMCHei = *static_cast<FX_FLOAT*>( 699ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTheme->GetCapacity(&part, FWL_WGTCAPACITY_MC_HEIGHT)); 700ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 701ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CFWL_MonthCalendarImp::CalWeekNumber(int32_t iYear, 702ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iMonth, 703ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDay) { 704ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 0; 705ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 706ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::GetMinDate(int32_t& iYear, 707ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& iMonth, 708ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& iDay) { 709ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iYear = m_dtMin.iYear; 710ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iMonth = m_dtMin.iMonth; 711ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iDay = m_dtMin.iDay; 712ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 713ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 714ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::SetMinDate(int32_t iYear, 715ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iMonth, 716ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDay) { 717ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_dtMin = DATE(iYear, iMonth, iDay); 718ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 719ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 720ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::GetMaxDate(int32_t& iYear, 721ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& iMonth, 722ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& iDay) { 723ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iYear = m_dtMax.iYear; 724ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iMonth = m_dtMax.iMonth; 725ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iDay = m_dtMax.iDay; 726ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 727ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 728ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::SetMaxDate(int32_t iYear, 729ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iMonth, 730ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDay) { 731ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_dtMax = DATE(iYear, iMonth, iDay); 732ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 733ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 734ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::InitDate() { 735ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pProperties->m_pDataProvider) { 736ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_MonthCalendarDP* pDateProv = 737ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<IFWL_MonthCalendarDP*>(m_pProperties->m_pDataProvider); 738ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iYear = pDateProv->GetCurYear(m_pInterface); 739ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iMonth = pDateProv->GetCurMonth(m_pInterface); 740ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iDay = pDateProv->GetCurDay(m_pInterface); 741ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurYear = m_iYear; 742ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurMonth = m_iMonth; 743ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 744ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iDay = 1; 745ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iMonth = 1; 746ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iYear = 1; 747ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurYear = m_iYear; 748ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurMonth = m_iMonth; 749ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 750ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetTodayText(m_iYear, m_iMonth, m_iDay, m_wsToday); 751ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetHeadText(m_iCurYear, m_iCurMonth, m_wsHead); 752ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_dtMin = DATE(1500, 12, 1); 753ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_dtMax = DATE(2200, 1, 1); 754ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 755ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 756ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::ClearDateItem() { 757ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = m_arrDates.GetSize(); 758ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iCount; i++) { 759ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pData = (LPDATEINFO)m_arrDates.GetAt(i); 760ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pData; 761ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 762ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_arrDates.RemoveAll(); 763ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 764ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::ReSetDateItem() { 765ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDateTime->Set(m_iCurYear, m_iCurMonth, 1); 766ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDays = FX_DaysInMonth(m_iCurYear, m_iCurMonth); 767ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDayOfWeek = m_pDateTime->GetDayOfWeek(); 768ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iDays; i++) { 769ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iDayOfWeek >= 7) { 770ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iDayOfWeek = 0; 771ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 772ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString wsDay; 773ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsDay.Format(L"%d", i + 1); 774ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwStates = 0; 775ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_iYear == m_iCurYear && m_iMonth == m_iCurMonth && m_iDay == (i + 1)) { 776ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dwStates |= FWL_ITEMSTATE_MCD_Flag; 777ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 778ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_arrSelDays.Find(i + 1) != -1) { 779ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dwStates |= FWL_ITEMSTATE_MCD_Selected; 780ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 781ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RectF rtDate; 782ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rtDate.Set(0, 0, 0, 0); 783ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pData = new DATEINFO(i + 1, iDayOfWeek, dwStates, rtDate, wsDay); 784ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_arrDates.Add(pData); 785ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iDayOfWeek++; 786ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 787ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 788ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::NextMonth() { 789ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iYear = m_iCurYear, iMonth = m_iCurMonth; 790ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iMonth >= 12) { 791ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iMonth = 1; 792ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iYear++; 793ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 794ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iMonth++; 795ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 796ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DATE dt(m_iCurYear, m_iCurMonth, 1); 797ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!(dt < m_dtMax)) { 798ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 799ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 800ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurYear = iYear, m_iCurMonth = iMonth; 801ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ChangeToMonth(m_iCurYear, m_iCurMonth); 802ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 803ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 804ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::PrevMonth() { 805ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iYear = m_iCurYear, iMonth = m_iCurMonth; 806ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iMonth <= 1) { 807ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iMonth = 12; 808ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iYear--; 809ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 810ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iMonth--; 811ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 812ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DATE dt(m_iCurYear, m_iCurMonth, 1); 813ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!(dt > m_dtMin)) { 814ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 815ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 816ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurYear = iYear, m_iCurMonth = iMonth; 817ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ChangeToMonth(m_iCurYear, m_iCurMonth); 818ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 819ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 820ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::ChangeToMonth(int32_t iYear, int32_t iMonth) { 821ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurYear = iYear; 822ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurMonth = iMonth; 823ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iHovered = -1; 824ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ClearDateItem(); 825ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ReSetDateItem(); 826ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalDateItem(); 827ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetHeadText(m_iCurYear, m_iCurMonth, m_wsHead); 828ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 829ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::RemoveSelDay(int32_t iDay, FX_BOOL bAll) { 830ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iDay == -1 && !bAll) { 831ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 832ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 833ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bAll) { 834ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = m_arrSelDays.GetSize(); 835ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDatesCount = m_arrDates.GetSize(); 836ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iCount; i++) { 837ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iSelDay = m_arrSelDays.GetAt(i); 838ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iSelDay <= iDatesCount) { 839ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pDateInfo = (LPDATEINFO)m_arrDates.GetAt(iSelDay - 1); 840ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDateInfo->dwStates &= ~FWL_ITEMSTATE_MCD_Selected; 841ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 842ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 843ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_arrSelDays.RemoveAll(); 844ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 845ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t index = m_arrSelDays.Find(iDay); 846ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (index == -1) { 847ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 848ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 849ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iSelDay = m_arrSelDays.GetAt(iDay); 850ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDatesCount = m_arrDates.GetSize(); 851ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iSelDay <= iDatesCount) { 852ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pDateInfo = (LPDATEINFO)m_arrDates.GetAt(iSelDay - 1); 853ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDateInfo->dwStates &= ~FWL_ITEMSTATE_MCD_Selected; 854ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 855ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_arrSelDays.RemoveAt(index); 856ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 857ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 858ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 859ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::AddSelDay(int32_t iDay) { 860ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_assert(iDay > 0); 861ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_MultiSelect) { 862ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 863ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_arrSelDays.Find(iDay) == -1) { 864ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann RemoveSelDay(-1, TRUE); 865ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iDay <= m_arrDates.GetSize()) { 866ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pDateInfo = (LPDATEINFO)m_arrDates.GetAt(iDay - 1); 867ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDateInfo->dwStates |= FWL_ITEMSTATE_MCD_Selected; 868ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 869ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_arrSelDays.Add(iDay); 870ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 871ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 872ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 873ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 874ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::JumpToToday() { 875ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_iYear != m_iCurYear || m_iMonth != m_iCurMonth) { 876ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurYear = m_iYear; 877ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iCurMonth = m_iMonth; 878ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ChangeToMonth(m_iYear, m_iMonth); 879ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann AddSelDay(m_iDay); 880ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 881ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_arrSelDays.Find(m_iDay) == -1) { 882ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann AddSelDay(m_iDay); 883ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 884ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 885ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 886ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 887ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::GetHeadText(int32_t iYear, 888ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iMonth, 889ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString& wsHead) { 890ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_assert(iMonth > 0 && iMonth < 13); 891ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static const FX_WCHAR* const pMonth[] = { 892ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann L"January", L"February", L"March", L"April", 893ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann L"May", L"June", L"July", L"August", 894ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann L"September", L"October", L"November", L"December"}; 895ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsHead.Format(L"%s, %d", pMonth[iMonth - 1], iYear); 896ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 897ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImp::GetTodayText(int32_t iYear, 898ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iMonth, 899ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDay, 900ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString& wsToday) { 901ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsToday.Format(L", %d/%d/%d", iDay, iMonth, iYear); 902ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 903ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CFWL_MonthCalendarImp::GetDayAtPoint(FX_FLOAT x, FX_FLOAT y) { 904ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = m_arrDates.GetSize(); 905ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iCount; i++) { 906ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pDateInfo = (LPDATEINFO)m_arrDates.GetAt(i); 907ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pDateInfo->rect.Contains(x, y)) { 908ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return ++i; 909ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 910ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 911ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return -1; 912ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 913ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_MonthCalendarImp::GetDayRect(int32_t iDay, CFX_RectF& rtDay) { 914ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iDay <= 0 || iDay > m_arrDates.GetSize()) { 915ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 916ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 917ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO pDateInfo = (LPDATEINFO)m_arrDates[iDay - 1]; 918ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pDateInfo) 919ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 920ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rtDay = pDateInfo->rect; 921ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 922ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 923ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFWL_MonthCalendarImpDelegate::CFWL_MonthCalendarImpDelegate( 924ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_MonthCalendarImp* pOwner) 925ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_pOwner(pOwner) {} 926ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CFWL_MonthCalendarImpDelegate::OnProcessMessage( 927ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_Message* pMessage) { 928ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pMessage) 929ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 0; 930ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwMsgCode = pMessage->GetClassID(); 931ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iRet = 1; 932ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (dwMsgCode) { 933ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case FWL_MSGHASH_SetFocus: 934ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case FWL_MSGHASH_KillFocus: { 935ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann OnFocusChanged(pMessage, dwMsgCode == FWL_MSGHASH_SetFocus); 936ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 937ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 938ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case FWL_MSGHASH_Key: { 939ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 940ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 941ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case FWL_MSGHASH_Mouse: { 942ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_MsgMouse* pMouse = static_cast<CFWL_MsgMouse*>(pMessage); 943ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwCmd = pMouse->m_dwCmd; 944ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (dwCmd) { 945ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case FWL_MSGMOUSECMD_LButtonDown: { 946ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann OnLButtonDown(pMouse); 947ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 948ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 949ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case FWL_MSGMOUSECMD_LButtonUp: { 950ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann OnLButtonUp(pMouse); 951ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 952ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 953ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case FWL_MSGMOUSECMD_MouseMove: { 954ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann OnMouseMove(pMouse); 955ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 956ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 957ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case FWL_MSGMOUSECMD_MouseLeave: { 958ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann OnMouseLeave(pMouse); 959ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 960ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 961ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: { break; } 962ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 963ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 964ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 965ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: { 966ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iRet = 0; 967ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 968ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 969ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 970ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_WidgetImpDelegate::OnProcessMessage(pMessage); 971ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return iRet; 972ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 973ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFWL_ERR CFWL_MonthCalendarImpDelegate::OnDrawWidget(CFX_Graphics* pGraphics, 974ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pMatrix) { 975ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pOwner->DrawWidget(pGraphics, pMatrix); 976ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 977ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImpDelegate::OnActivate(CFWL_Message* pMsg) { 978ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 979ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 980ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImpDelegate::OnFocusChanged(CFWL_Message* pMsg, 981ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bSet) { 982ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bSet) { 983ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; 984ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 985ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; 986ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 987ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->Repaint(&m_pOwner->m_rtClient); 988ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 989ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImpDelegate::OnLButtonDown(CFWL_MsgMouse* pMsg) { 990ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pOwner->m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { 991ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->m_iLBtnPartStates = FWL_PARTSTATE_MCD_Pressed; 992ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->PrevMonth(); 993ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->Repaint(&m_pOwner->m_rtClient); 994ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (m_pOwner->m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { 995ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->m_iRBtnPartStates |= FWL_PARTSTATE_MCD_Pressed; 996ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->NextMonth(); 997ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->Repaint(&m_pOwner->m_rtClient); 998ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (m_pOwner->m_rtToday.Contains(pMsg->m_fx, pMsg->m_fy)) { 999ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if ((m_pOwner->m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoToday) == 1000ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 0) { 1001ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->JumpToToday(); 1002ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->Repaint(&m_pOwner->m_rtClient); 1003ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1004ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1005ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pOwner->m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_MultiSelect) { 1006ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1007ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iOldSel = 0; 1008ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pOwner->m_arrSelDays.GetSize() > 0) { 1009ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iOldSel = m_pOwner->m_arrSelDays[0]; 1010ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1011ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 1012ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1013ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCurSel = m_pOwner->GetDayAtPoint(pMsg->m_fx, pMsg->m_fy); 1014ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bSelChanged = iCurSel > 0 && iCurSel != iOldSel; 1015ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bSelChanged) { 1016ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann LPDATEINFO lpDatesInfo = 1017ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (LPDATEINFO)m_pOwner->m_arrDates.GetAt(iCurSel - 1); 1018ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RectF rtInvalidate(lpDatesInfo->rect); 1019ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iOldSel > 0) { 1020ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann lpDatesInfo = (LPDATEINFO)m_pOwner->m_arrDates.GetAt(iOldSel - 1); 1021ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rtInvalidate.Union(lpDatesInfo->rect); 1022ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1023ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->AddSelDay(iCurSel); 1024ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_EvtClick wmClick; 1025ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wmClick.m_pSrcTarget = m_pOwner->m_pInterface; 1026ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->DispatchEvent(&wmClick); 1027ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_EventMcdDateChanged wmDateSelected; 1028ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wmDateSelected.m_iStartDay = iCurSel; 1029ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wmDateSelected.m_iEndDay = iCurSel; 1030ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wmDateSelected.m_iOldMonth = m_pOwner->m_iCurMonth; 1031ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wmDateSelected.m_iOldYear = m_pOwner->m_iCurYear; 1032ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wmDateSelected.m_pSrcTarget = m_pOwner->m_pInterface; 1033ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->DispatchEvent(&wmDateSelected); 1034ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->Repaint(&rtInvalidate); 1035ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1036ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1037ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1038ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1039ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImpDelegate::OnLButtonUp(CFWL_MsgMouse* pMsg) { 1040ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pOwner->m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { 1041ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->m_iLBtnPartStates = 0; 1042ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->Repaint(&m_pOwner->m_rtLBtn); 1043ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (m_pOwner->m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { 1044ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->m_iRBtnPartStates = 0; 1045ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->Repaint(&m_pOwner->m_rtRBtn); 1046ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (m_pOwner->m_rtDates.Contains(pMsg->m_fx, pMsg->m_fy)) { 1047ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iDay = m_pOwner->GetDayAtPoint(pMsg->m_fx, pMsg->m_fy); 1048ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iDay != -1) { 1049ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->AddSelDay(iDay); 1050ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1051ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1052ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1053ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImpDelegate::OnMouseMove(CFWL_MsgMouse* pMsg) { 1054ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pOwner->m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_MultiSelect) { 1055ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 1056ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1057ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRepaint = FALSE; 1058ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RectF rtInvalidate; 1059ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rtInvalidate.Set(0, 0, 0, 0); 1060ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pOwner->m_rtDates.Contains(pMsg->m_fx, pMsg->m_fy)) { 1061ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iHover = m_pOwner->GetDayAtPoint(pMsg->m_fx, pMsg->m_fy); 1062ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bRepaint = m_pOwner->m_iHovered != iHover; 1063ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bRepaint) { 1064ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pOwner->m_iHovered > 0) { 1065ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->GetDayRect(m_pOwner->m_iHovered, rtInvalidate); 1066ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1067ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iHover > 0) { 1068ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RectF rtDay; 1069ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->GetDayRect(iHover, rtDay); 1070ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (rtInvalidate.IsEmpty()) { 1071ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rtInvalidate = rtDay; 1072ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1073ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rtInvalidate.Union(rtDay); 1074ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1075ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1076ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1077ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->m_iHovered = iHover; 1078ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1079ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bRepaint = m_pOwner->m_iHovered > 0; 1080ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bRepaint) { 1081ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->GetDayRect(m_pOwner->m_iHovered, rtInvalidate); 1082ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1083ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->m_iHovered = -1; 1084ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1085ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bRepaint && !rtInvalidate.IsEmpty()) { 1086ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->Repaint(&rtInvalidate); 1087ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1088ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1089ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFWL_MonthCalendarImpDelegate::OnMouseLeave(CFWL_MsgMouse* pMsg) { 1090ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pOwner->m_iHovered > 0) { 1091ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RectF rtInvalidate; 1092ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rtInvalidate.Set(0, 0, 0, 0); 1093ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->GetDayRect(m_pOwner->m_iHovered, rtInvalidate); 1094ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->m_iHovered = -1; 1095ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!rtInvalidate.IsEmpty()) { 1096ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOwner->Repaint(&rtInvalidate); 1097ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1098ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1099ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1100