| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fwl/basewidget/fwl_monthcalendarimp.h" | 7 #include "xfa/fwl/core/ifwl_monthcalendar.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| 11 #include "xfa/fde/tto/fde_textout.h" | 11 #include "xfa/fde/tto/fde_textout.h" |
| 12 #include "xfa/fwl/basewidget/ifwl_monthcalendar.h" | |
| 13 #include "xfa/fwl/core/cfwl_message.h" | 12 #include "xfa/fwl/core/cfwl_message.h" |
| 14 #include "xfa/fwl/core/cfwl_themebackground.h" | 13 #include "xfa/fwl/core/cfwl_themebackground.h" |
| 15 #include "xfa/fwl/core/cfwl_themetext.h" | 14 #include "xfa/fwl/core/cfwl_themetext.h" |
| 16 #include "xfa/fwl/core/fwl_noteimp.h" | 15 #include "xfa/fwl/core/fwl_noteimp.h" |
| 17 #include "xfa/fwl/core/fwl_widgetimp.h" | 16 #include "xfa/fwl/core/ifwl_monthcalendar.h" |
| 18 #include "xfa/fwl/core/ifwl_themeprovider.h" | 17 #include "xfa/fwl/core/ifwl_themeprovider.h" |
| 19 | 18 |
| 20 #define MONTHCAL_HSEP_HEIGHT 1 | 19 #define MONTHCAL_HSEP_HEIGHT 1 |
| 21 #define MONTHCAL_VSEP_WIDTH 1 | 20 #define MONTHCAL_VSEP_WIDTH 1 |
| 22 #define MONTHCAL_HMARGIN 3 | 21 #define MONTHCAL_HMARGIN 3 |
| 23 #define MONTHCAL_VMARGIN 2 | 22 #define MONTHCAL_VMARGIN 2 |
| 24 #define MONTHCAL_ROWS 9 | 23 #define MONTHCAL_ROWS 9 |
| 25 #define MONTHCAL_COLUMNS 7 | 24 #define MONTHCAL_COLUMNS 7 |
| 26 #define MONTHCAL_HEADER_BTN_VMARGIN 7 | 25 #define MONTHCAL_HEADER_BTN_VMARGIN 7 |
| 27 #define MONTHCAL_HEADER_BTN_HMARGIN 5 | 26 #define MONTHCAL_HEADER_BTN_HMARGIN 5 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 return static_cast<CFX_WideString*>( | 114 return static_cast<CFX_WideString*>( |
| 116 pTheme->GetCapacity(¶ms, CFWL_WidgetCapacity::December)); | 115 pTheme->GetCapacity(¶ms, CFWL_WidgetCapacity::December)); |
| 117 } | 116 } |
| 118 | 117 |
| 119 } // namespace | 118 } // namespace |
| 120 | 119 |
| 121 // static | 120 // static |
| 122 IFWL_MonthCalendar* IFWL_MonthCalendar::Create( | 121 IFWL_MonthCalendar* IFWL_MonthCalendar::Create( |
| 123 const CFWL_WidgetImpProperties& properties, | 122 const CFWL_WidgetImpProperties& properties, |
| 124 IFWL_Widget* pOuter) { | 123 IFWL_Widget* pOuter) { |
| 125 IFWL_MonthCalendar* pMonthCalendar = new IFWL_MonthCalendar; | 124 return new IFWL_MonthCalendar(properties, pOuter); |
| 126 CFWL_MonthCalendarImp* pMonthCalendarImpl = | |
| 127 new CFWL_MonthCalendarImp(properties, pOuter); | |
| 128 pMonthCalendar->SetImpl(pMonthCalendarImpl); | |
| 129 pMonthCalendarImpl->SetInterface(pMonthCalendar); | |
| 130 return pMonthCalendar; | |
| 131 } | |
| 132 IFWL_MonthCalendar::IFWL_MonthCalendar() {} | |
| 133 int32_t IFWL_MonthCalendar::CountSelect() { | |
| 134 return static_cast<CFWL_MonthCalendarImp*>(GetImpl())->CountSelect(); | |
| 135 } | |
| 136 FX_BOOL IFWL_MonthCalendar::GetSelect(int32_t& iYear, | |
| 137 int32_t& iMonth, | |
| 138 int32_t& iDay, | |
| 139 int32_t nIndex) { | |
| 140 return static_cast<CFWL_MonthCalendarImp*>(GetImpl()) | |
| 141 ->GetSelect(iYear, iMonth, iDay, nIndex); | |
| 142 } | |
| 143 FX_BOOL IFWL_MonthCalendar::SetSelect(int32_t iYear, | |
| 144 int32_t iMonth, | |
| 145 int32_t iDay) { | |
| 146 return static_cast<CFWL_MonthCalendarImp*>(GetImpl()) | |
| 147 ->SetSelect(iYear, iMonth, iDay); | |
| 148 } | 125 } |
| 149 | 126 |
| 150 CFWL_MonthCalendarImp::CFWL_MonthCalendarImp( | 127 IFWL_MonthCalendar::IFWL_MonthCalendar( |
| 151 const CFWL_WidgetImpProperties& properties, | 128 const CFWL_WidgetImpProperties& properties, |
| 152 IFWL_Widget* pOuter) | 129 IFWL_Widget* pOuter) |
| 153 : CFWL_WidgetImp(properties, pOuter), | 130 : IFWL_Widget(properties, pOuter), |
| 154 m_bInit(FALSE), | 131 m_bInit(FALSE), |
| 155 m_pDateTime(new CFX_DateTime), | 132 m_pDateTime(new CFX_DateTime), |
| 156 m_iCurYear(2011), | 133 m_iCurYear(2011), |
| 157 m_iCurMonth(1), | 134 m_iCurMonth(1), |
| 158 m_iYear(2011), | 135 m_iYear(2011), |
| 159 m_iMonth(1), | 136 m_iMonth(1), |
| 160 m_iDay(1), | 137 m_iDay(1), |
| 161 m_iHovered(-1), | 138 m_iHovered(-1), |
| 162 m_iLBtnPartStates(CFWL_PartState_Normal), | 139 m_iLBtnPartStates(CFWL_PartState_Normal), |
| 163 m_iRBtnPartStates(CFWL_PartState_Normal), | 140 m_iRBtnPartStates(CFWL_PartState_Normal), |
| 164 m_iMaxSel(1) { | 141 m_iMaxSel(1) { |
| 165 m_rtHead.Reset(); | 142 m_rtHead.Reset(); |
| 166 m_rtWeek.Reset(); | 143 m_rtWeek.Reset(); |
| 167 m_rtLBtn.Reset(); | 144 m_rtLBtn.Reset(); |
| 168 m_rtRBtn.Reset(); | 145 m_rtRBtn.Reset(); |
| 169 m_rtDates.Reset(); | 146 m_rtDates.Reset(); |
| 170 m_rtHSep.Reset(); | 147 m_rtHSep.Reset(); |
| 171 m_rtHeadText.Reset(); | 148 m_rtHeadText.Reset(); |
| 172 m_rtToday.Reset(); | 149 m_rtToday.Reset(); |
| 173 m_rtTodayFlag.Reset(); | 150 m_rtTodayFlag.Reset(); |
| 174 m_rtClient.Reset(); | 151 m_rtClient.Reset(); |
| 175 m_rtWeekNum.Reset(); | 152 m_rtWeekNum.Reset(); |
| 176 m_rtWeekNumSep.Reset(); | 153 m_rtWeekNumSep.Reset(); |
| 177 } | 154 } |
| 178 | 155 |
| 179 CFWL_MonthCalendarImp::~CFWL_MonthCalendarImp() { | 156 IFWL_MonthCalendar::~IFWL_MonthCalendar() { |
| 180 ClearDateItem(); | 157 ClearDateItem(); |
| 181 m_arrSelDays.RemoveAll(); | 158 m_arrSelDays.RemoveAll(); |
| 182 } | 159 } |
| 183 | 160 |
| 184 FWL_Error CFWL_MonthCalendarImp::GetClassName(CFX_WideString& wsClass) const { | 161 FWL_Error IFWL_MonthCalendar::GetClassName(CFX_WideString& wsClass) const { |
| 185 wsClass = FWL_CLASS_MonthCalendar; | 162 wsClass = FWL_CLASS_MonthCalendar; |
| 186 return FWL_Error::Succeeded; | 163 return FWL_Error::Succeeded; |
| 187 } | 164 } |
| 188 | 165 |
| 189 FWL_Type CFWL_MonthCalendarImp::GetClassID() const { | 166 FWL_Type IFWL_MonthCalendar::GetClassID() const { |
| 190 return FWL_Type::MonthCalendar; | 167 return FWL_Type::MonthCalendar; |
| 191 } | 168 } |
| 192 | 169 |
| 193 FWL_Error CFWL_MonthCalendarImp::Initialize() { | 170 FWL_Error IFWL_MonthCalendar::Initialize() { |
| 194 if (CFWL_WidgetImp::Initialize() != FWL_Error::Succeeded) | 171 if (IFWL_Widget::Initialize() != FWL_Error::Succeeded) |
| 195 return FWL_Error::Indefinite; | 172 return FWL_Error::Indefinite; |
| 196 | 173 |
| 197 m_pDelegate = new CFWL_MonthCalendarImpDelegate(this); | 174 m_pDelegate = new CFWL_MonthCalendarImpDelegate(this); |
| 198 return FWL_Error::Succeeded; | 175 return FWL_Error::Succeeded; |
| 199 } | 176 } |
| 200 | 177 |
| 201 FWL_Error CFWL_MonthCalendarImp::Finalize() { | 178 FWL_Error IFWL_MonthCalendar::Finalize() { |
| 202 delete m_pDelegate; | 179 delete m_pDelegate; |
| 203 m_pDelegate = nullptr; | 180 m_pDelegate = nullptr; |
| 204 return CFWL_WidgetImp::Finalize(); | 181 return IFWL_Widget::Finalize(); |
| 205 } | 182 } |
| 206 FWL_Error CFWL_MonthCalendarImp::GetWidgetRect(CFX_RectF& rect, | 183 |
| 207 FX_BOOL bAutoSize) { | 184 FWL_Error IFWL_MonthCalendar::GetWidgetRect(CFX_RectF& rect, |
| 185 FX_BOOL bAutoSize) { |
| 208 if (bAutoSize) { | 186 if (bAutoSize) { |
| 209 CFX_SizeF fs = CalcSize(TRUE); | 187 CFX_SizeF fs = CalcSize(TRUE); |
| 210 rect.Set(0, 0, fs.x, fs.y); | 188 rect.Set(0, 0, fs.x, fs.y); |
| 211 CFWL_WidgetImp::GetWidgetRect(rect, TRUE); | 189 IFWL_Widget::GetWidgetRect(rect, TRUE); |
| 212 } else { | 190 } else { |
| 213 rect = m_pProperties->m_rtWidget; | 191 rect = m_pProperties->m_rtWidget; |
| 214 } | 192 } |
| 215 return FWL_Error::Succeeded; | 193 return FWL_Error::Succeeded; |
| 216 } | 194 } |
| 217 FWL_Error CFWL_MonthCalendarImp::Update() { | 195 |
| 196 FWL_Error IFWL_MonthCalendar::Update() { |
| 218 if (IsLocked()) { | 197 if (IsLocked()) { |
| 219 return FWL_Error::Indefinite; | 198 return FWL_Error::Indefinite; |
| 220 } | 199 } |
| 221 if (!m_pProperties->m_pThemeProvider) { | 200 if (!m_pProperties->m_pThemeProvider) { |
| 222 m_pProperties->m_pThemeProvider = GetAvailableTheme(); | 201 m_pProperties->m_pThemeProvider = GetAvailableTheme(); |
| 223 } | 202 } |
| 224 GetCapValue(); | 203 GetCapValue(); |
| 225 if (!m_bInit) { | 204 if (!m_bInit) { |
| 226 m_bInit = InitDate(); | 205 m_bInit = InitDate(); |
| 227 } | 206 } |
| 228 ClearDateItem(); | 207 ClearDateItem(); |
| 229 ReSetDateItem(); | 208 ReSetDateItem(); |
| 230 LayOut(); | 209 LayOut(); |
| 231 return FWL_Error::Succeeded; | 210 return FWL_Error::Succeeded; |
| 232 } | 211 } |
| 233 FWL_Error CFWL_MonthCalendarImp::DrawWidget(CFX_Graphics* pGraphics, | 212 |
| 234 const CFX_Matrix* pMatrix) { | 213 FWL_Error IFWL_MonthCalendar::DrawWidget(CFX_Graphics* pGraphics, |
| 214 const CFX_Matrix* pMatrix) { |
| 235 if (!pGraphics) | 215 if (!pGraphics) |
| 236 return FWL_Error::Indefinite; | 216 return FWL_Error::Indefinite; |
| 237 if (!m_pProperties->m_pThemeProvider) { | 217 if (!m_pProperties->m_pThemeProvider) { |
| 238 m_pProperties->m_pThemeProvider = GetAvailableTheme(); | 218 m_pProperties->m_pThemeProvider = GetAvailableTheme(); |
| 239 } | 219 } |
| 240 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; | 220 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; |
| 241 if (HasBorder()) { | 221 if (HasBorder()) { |
| 242 DrawBorder(pGraphics, CFWL_Part::Border, pTheme, pMatrix); | 222 DrawBorder(pGraphics, CFWL_Part::Border, pTheme, pMatrix); |
| 243 } | 223 } |
| 244 if (HasEdge()) { | 224 if (HasEdge()) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 255 DrawWeek(pGraphics, pTheme, pMatrix); | 235 DrawWeek(pGraphics, pTheme, pMatrix); |
| 256 DrawDatesIn(pGraphics, pTheme, pMatrix); | 236 DrawDatesIn(pGraphics, pTheme, pMatrix); |
| 257 DrawDatesOut(pGraphics, pTheme, pMatrix); | 237 DrawDatesOut(pGraphics, pTheme, pMatrix); |
| 258 DrawToday(pGraphics, pTheme, pMatrix); | 238 DrawToday(pGraphics, pTheme, pMatrix); |
| 259 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_WeekNumbers) { | 239 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_WeekNumbers) { |
| 260 DrawWeekNumberSep(pGraphics, pTheme, pMatrix); | 240 DrawWeekNumberSep(pGraphics, pTheme, pMatrix); |
| 261 DrawWeekNumber(pGraphics, pTheme, pMatrix); | 241 DrawWeekNumber(pGraphics, pTheme, pMatrix); |
| 262 } | 242 } |
| 263 return FWL_Error::Succeeded; | 243 return FWL_Error::Succeeded; |
| 264 } | 244 } |
| 265 int32_t CFWL_MonthCalendarImp::CountSelect() { | 245 |
| 246 int32_t IFWL_MonthCalendar::CountSelect() { |
| 266 return m_arrSelDays.GetSize(); | 247 return m_arrSelDays.GetSize(); |
| 267 } | 248 } |
| 268 FX_BOOL CFWL_MonthCalendarImp::GetSelect(int32_t& iYear, | 249 |
| 269 int32_t& iMonth, | 250 FX_BOOL IFWL_MonthCalendar::GetSelect(int32_t& iYear, |
| 270 int32_t& iDay, | 251 int32_t& iMonth, |
| 271 int32_t nIndex) { | 252 int32_t& iDay, |
| 253 int32_t nIndex) { |
| 272 if (nIndex >= m_arrSelDays.GetSize()) { | 254 if (nIndex >= m_arrSelDays.GetSize()) { |
| 273 return FALSE; | 255 return FALSE; |
| 274 } | 256 } |
| 275 iYear = m_iCurYear; | 257 iYear = m_iCurYear; |
| 276 iMonth = m_iCurMonth; | 258 iMonth = m_iCurMonth; |
| 277 iDay = m_arrSelDays[nIndex]; | 259 iDay = m_arrSelDays[nIndex]; |
| 278 return TRUE; | 260 return TRUE; |
| 279 } | 261 } |
| 280 FX_BOOL CFWL_MonthCalendarImp::SetSelect(int32_t iYear, | 262 |
| 281 int32_t iMonth, | 263 FX_BOOL IFWL_MonthCalendar::SetSelect(int32_t iYear, |
| 282 int32_t iDay) { | 264 int32_t iMonth, |
| 265 int32_t iDay) { |
| 283 ChangeToMonth(iYear, iMonth); | 266 ChangeToMonth(iYear, iMonth); |
| 284 return AddSelDay(iDay); | 267 return AddSelDay(iDay); |
| 285 } | 268 } |
| 286 void CFWL_MonthCalendarImp::DrawBkground(CFX_Graphics* pGraphics, | 269 |
| 287 IFWL_ThemeProvider* pTheme, | 270 void IFWL_MonthCalendar::DrawBkground(CFX_Graphics* pGraphics, |
| 288 const CFX_Matrix* pMatrix) { | 271 IFWL_ThemeProvider* pTheme, |
| 272 const CFX_Matrix* pMatrix) { |
| 289 CFWL_ThemeBackground params; | 273 CFWL_ThemeBackground params; |
| 290 params.m_pWidget = m_pInterface; | 274 params.m_pWidget = this; |
| 291 params.m_iPart = CFWL_Part::Background; | 275 params.m_iPart = CFWL_Part::Background; |
| 292 params.m_pGraphics = pGraphics; | 276 params.m_pGraphics = pGraphics; |
| 293 params.m_dwStates = CFWL_PartState_Normal; | 277 params.m_dwStates = CFWL_PartState_Normal; |
| 294 params.m_rtPart = m_rtClient; | 278 params.m_rtPart = m_rtClient; |
| 295 if (pMatrix) { | 279 if (pMatrix) { |
| 296 params.m_matrix.Concat(*pMatrix); | 280 params.m_matrix.Concat(*pMatrix); |
| 297 } | 281 } |
| 298 pTheme->DrawBackground(¶ms); | 282 pTheme->DrawBackground(¶ms); |
| 299 } | 283 } |
| 300 void CFWL_MonthCalendarImp::DrawHeadBK(CFX_Graphics* pGraphics, | 284 |
| 301 IFWL_ThemeProvider* pTheme, | 285 void IFWL_MonthCalendar::DrawHeadBK(CFX_Graphics* pGraphics, |
| 302 const CFX_Matrix* pMatrix) { | 286 IFWL_ThemeProvider* pTheme, |
| 287 const CFX_Matrix* pMatrix) { |
| 303 CFWL_ThemeBackground params; | 288 CFWL_ThemeBackground params; |
| 304 params.m_pWidget = m_pInterface; | 289 params.m_pWidget = this; |
| 305 params.m_iPart = CFWL_Part::Header; | 290 params.m_iPart = CFWL_Part::Header; |
| 306 params.m_pGraphics = pGraphics; | 291 params.m_pGraphics = pGraphics; |
| 307 params.m_dwStates = CFWL_PartState_Normal; | 292 params.m_dwStates = CFWL_PartState_Normal; |
| 308 params.m_rtPart = m_rtHead; | 293 params.m_rtPart = m_rtHead; |
| 309 if (pMatrix) { | 294 if (pMatrix) { |
| 310 params.m_matrix.Concat(*pMatrix); | 295 params.m_matrix.Concat(*pMatrix); |
| 311 } | 296 } |
| 312 pTheme->DrawBackground(¶ms); | 297 pTheme->DrawBackground(¶ms); |
| 313 } | 298 } |
| 314 void CFWL_MonthCalendarImp::DrawLButton(CFX_Graphics* pGraphics, | 299 |
| 315 IFWL_ThemeProvider* pTheme, | 300 void IFWL_MonthCalendar::DrawLButton(CFX_Graphics* pGraphics, |
| 316 const CFX_Matrix* pMatrix) { | 301 IFWL_ThemeProvider* pTheme, |
| 302 const CFX_Matrix* pMatrix) { |
| 317 CFWL_ThemeBackground params; | 303 CFWL_ThemeBackground params; |
| 318 params.m_pWidget = m_pInterface; | 304 params.m_pWidget = this; |
| 319 params.m_iPart = CFWL_Part::LBtn; | 305 params.m_iPart = CFWL_Part::LBtn; |
| 320 params.m_pGraphics = pGraphics; | 306 params.m_pGraphics = pGraphics; |
| 321 params.m_dwStates = m_iLBtnPartStates; | 307 params.m_dwStates = m_iLBtnPartStates; |
| 322 params.m_rtPart = m_rtLBtn; | 308 params.m_rtPart = m_rtLBtn; |
| 323 if (pMatrix) { | 309 if (pMatrix) { |
| 324 params.m_matrix.Concat(*pMatrix); | 310 params.m_matrix.Concat(*pMatrix); |
| 325 } | 311 } |
| 326 pTheme->DrawBackground(¶ms); | 312 pTheme->DrawBackground(¶ms); |
| 327 } | 313 } |
| 328 void CFWL_MonthCalendarImp::DrawRButton(CFX_Graphics* pGraphics, | 314 |
| 329 IFWL_ThemeProvider* pTheme, | 315 void IFWL_MonthCalendar::DrawRButton(CFX_Graphics* pGraphics, |
| 330 const CFX_Matrix* pMatrix) { | 316 IFWL_ThemeProvider* pTheme, |
| 317 const CFX_Matrix* pMatrix) { |
| 331 CFWL_ThemeBackground params; | 318 CFWL_ThemeBackground params; |
| 332 params.m_pWidget = m_pInterface; | 319 params.m_pWidget = this; |
| 333 params.m_iPart = CFWL_Part::RBtn; | 320 params.m_iPart = CFWL_Part::RBtn; |
| 334 params.m_pGraphics = pGraphics; | 321 params.m_pGraphics = pGraphics; |
| 335 params.m_dwStates = m_iRBtnPartStates; | 322 params.m_dwStates = m_iRBtnPartStates; |
| 336 params.m_rtPart = m_rtRBtn; | 323 params.m_rtPart = m_rtRBtn; |
| 337 if (pMatrix) { | 324 if (pMatrix) { |
| 338 params.m_matrix.Concat(*pMatrix); | 325 params.m_matrix.Concat(*pMatrix); |
| 339 } | 326 } |
| 340 pTheme->DrawBackground(¶ms); | 327 pTheme->DrawBackground(¶ms); |
| 341 } | 328 } |
| 342 void CFWL_MonthCalendarImp::DrawCaption(CFX_Graphics* pGraphics, | 329 |
| 343 IFWL_ThemeProvider* pTheme, | 330 void IFWL_MonthCalendar::DrawCaption(CFX_Graphics* pGraphics, |
| 344 const CFX_Matrix* pMatrix) { | 331 IFWL_ThemeProvider* pTheme, |
| 332 const CFX_Matrix* pMatrix) { |
| 345 CFWL_ThemeText textParam; | 333 CFWL_ThemeText textParam; |
| 346 textParam.m_pWidget = m_pInterface; | 334 textParam.m_pWidget = this; |
| 347 textParam.m_iPart = CFWL_Part::Caption; | 335 textParam.m_iPart = CFWL_Part::Caption; |
| 348 textParam.m_dwStates = CFWL_PartState_Normal; | 336 textParam.m_dwStates = CFWL_PartState_Normal; |
| 349 textParam.m_pGraphics = pGraphics; | 337 textParam.m_pGraphics = pGraphics; |
| 350 int32_t iYear; | 338 int32_t iYear; |
| 351 int32_t iMonth; | 339 int32_t iMonth; |
| 352 iYear = m_iCurYear; | 340 iYear = m_iCurYear; |
| 353 iMonth = m_iCurMonth; | 341 iMonth = m_iCurMonth; |
| 354 CFX_WideString wsCation; | 342 CFX_WideString wsCation; |
| 355 GetHeadText(iYear, iMonth, wsCation); | 343 GetHeadText(iYear, iMonth, wsCation); |
| 356 textParam.m_wsText = wsCation; | 344 textParam.m_wsText = wsCation; |
| 357 m_szHead = CalcTextSize(textParam.m_wsText, m_pProperties->m_pThemeProvider); | 345 m_szHead = CalcTextSize(textParam.m_wsText, m_pProperties->m_pThemeProvider); |
| 358 CalcHeadSize(); | 346 CalcHeadSize(); |
| 359 textParam.m_rtPart = m_rtHeadText; | 347 textParam.m_rtPart = m_rtHeadText; |
| 360 textParam.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; | 348 textParam.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; |
| 361 textParam.m_iTTOAlign = FDE_TTOALIGNMENT_Center; | 349 textParam.m_iTTOAlign = FDE_TTOALIGNMENT_Center; |
| 362 if (pMatrix) { | 350 if (pMatrix) { |
| 363 textParam.m_matrix.Concat(*pMatrix); | 351 textParam.m_matrix.Concat(*pMatrix); |
| 364 } | 352 } |
| 365 pTheme->DrawText(&textParam); | 353 pTheme->DrawText(&textParam); |
| 366 } | 354 } |
| 367 void CFWL_MonthCalendarImp::DrawSeperator(CFX_Graphics* pGraphics, | 355 |
| 368 IFWL_ThemeProvider* pTheme, | 356 void IFWL_MonthCalendar::DrawSeperator(CFX_Graphics* pGraphics, |
| 369 const CFX_Matrix* pMatrix) { | 357 IFWL_ThemeProvider* pTheme, |
| 358 const CFX_Matrix* pMatrix) { |
| 370 CFWL_ThemeBackground params; | 359 CFWL_ThemeBackground params; |
| 371 params.m_pWidget = m_pInterface; | 360 params.m_pWidget = this; |
| 372 params.m_iPart = CFWL_Part::HSeparator; | 361 params.m_iPart = CFWL_Part::HSeparator; |
| 373 params.m_pGraphics = pGraphics; | 362 params.m_pGraphics = pGraphics; |
| 374 params.m_dwStates = CFWL_PartState_Normal; | 363 params.m_dwStates = CFWL_PartState_Normal; |
| 375 params.m_rtPart = m_rtHSep; | 364 params.m_rtPart = m_rtHSep; |
| 376 if (pMatrix) { | 365 if (pMatrix) { |
| 377 params.m_matrix.Concat(*pMatrix); | 366 params.m_matrix.Concat(*pMatrix); |
| 378 } | 367 } |
| 379 pTheme->DrawBackground(¶ms); | 368 pTheme->DrawBackground(¶ms); |
| 380 } | 369 } |
| 381 void CFWL_MonthCalendarImp::DrawDatesInBK(CFX_Graphics* pGraphics, | 370 |
| 382 IFWL_ThemeProvider* pTheme, | 371 void IFWL_MonthCalendar::DrawDatesInBK(CFX_Graphics* pGraphics, |
| 383 const CFX_Matrix* pMatrix) { | 372 IFWL_ThemeProvider* pTheme, |
| 373 const CFX_Matrix* pMatrix) { |
| 384 CFWL_ThemeBackground params; | 374 CFWL_ThemeBackground params; |
| 385 params.m_pWidget = m_pInterface; | 375 params.m_pWidget = this; |
| 386 params.m_iPart = CFWL_Part::DateInBK; | 376 params.m_iPart = CFWL_Part::DateInBK; |
| 387 params.m_pGraphics = pGraphics; | 377 params.m_pGraphics = pGraphics; |
| 388 if (pMatrix) { | 378 if (pMatrix) { |
| 389 params.m_matrix.Concat(*pMatrix); | 379 params.m_matrix.Concat(*pMatrix); |
| 390 } | 380 } |
| 391 int32_t iCount = m_arrDates.GetSize(); | 381 int32_t iCount = m_arrDates.GetSize(); |
| 392 for (int32_t j = 0; j < iCount; j++) { | 382 for (int32_t j = 0; j < iCount; j++) { |
| 393 FWL_DATEINFO* pDataInfo = m_arrDates.GetAt(j); | 383 FWL_DATEINFO* pDataInfo = m_arrDates.GetAt(j); |
| 394 if (pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Selected) { | 384 if (pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Selected) { |
| 395 params.m_dwStates |= CFWL_PartState_Selected; | 385 params.m_dwStates |= CFWL_PartState_Selected; |
| 396 if (((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoTodayCircle) == | 386 if (((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoTodayCircle) == |
| 397 0) && | 387 0) && |
| 398 pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Flag) { | 388 pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Flag) { |
| 399 params.m_dwStates |= CFWL_PartState_Flagged; | 389 params.m_dwStates |= CFWL_PartState_Flagged; |
| 400 } | 390 } |
| 401 if (pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Focused) { | 391 if (pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Focused) { |
| 402 params.m_dwStates |= CFWL_PartState_Focused; | 392 params.m_dwStates |= CFWL_PartState_Focused; |
| 403 } | 393 } |
| 404 } else if (j == m_iHovered - 1) { | 394 } else if (j == m_iHovered - 1) { |
| 405 params.m_dwStates |= CFWL_PartState_Hovered; | 395 params.m_dwStates |= CFWL_PartState_Hovered; |
| 406 } else if (pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Flag) { | 396 } else if (pDataInfo->dwStates & FWL_ITEMSTATE_MCD_Flag) { |
| 407 params.m_dwStates = CFWL_PartState_Flagged; | 397 params.m_dwStates = CFWL_PartState_Flagged; |
| 408 pTheme->DrawBackground(¶ms); | 398 pTheme->DrawBackground(¶ms); |
| 409 } | 399 } |
| 410 params.m_rtPart = pDataInfo->rect; | 400 params.m_rtPart = pDataInfo->rect; |
| 411 pTheme->DrawBackground(¶ms); | 401 pTheme->DrawBackground(¶ms); |
| 412 params.m_dwStates = 0; | 402 params.m_dwStates = 0; |
| 413 } | 403 } |
| 414 } | 404 } |
| 415 void CFWL_MonthCalendarImp::DrawWeek(CFX_Graphics* pGraphics, | 405 |
| 416 IFWL_ThemeProvider* pTheme, | 406 void IFWL_MonthCalendar::DrawWeek(CFX_Graphics* pGraphics, |
| 417 const CFX_Matrix* pMatrix) { | 407 IFWL_ThemeProvider* pTheme, |
| 408 const CFX_Matrix* pMatrix) { |
| 418 CFWL_ThemeText params; | 409 CFWL_ThemeText params; |
| 419 params.m_pWidget = m_pInterface; | 410 params.m_pWidget = this; |
| 420 params.m_iPart = CFWL_Part::Week; | 411 params.m_iPart = CFWL_Part::Week; |
| 421 params.m_pGraphics = pGraphics; | 412 params.m_pGraphics = pGraphics; |
| 422 params.m_dwStates = CFWL_PartState_Normal; | 413 params.m_dwStates = CFWL_PartState_Normal; |
| 423 params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; | 414 params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; |
| 424 CFX_RectF rtDayOfWeek; | 415 CFX_RectF rtDayOfWeek; |
| 425 if (pMatrix) { | 416 if (pMatrix) { |
| 426 params.m_matrix.Concat(*pMatrix); | 417 params.m_matrix.Concat(*pMatrix); |
| 427 } | 418 } |
| 428 for (int32_t i = 0; i < 7; i++) { | 419 for (int32_t i = 0; i < 7; i++) { |
| 429 rtDayOfWeek.Set(m_rtWeek.left + i * (m_szCell.x + MONTHCAL_HMARGIN * 2), | 420 rtDayOfWeek.Set(m_rtWeek.left + i * (m_szCell.x + MONTHCAL_HMARGIN * 2), |
| 430 m_rtWeek.top, m_szCell.x, m_szCell.y); | 421 m_rtWeek.top, m_szCell.x, m_szCell.y); |
| 431 params.m_rtPart = rtDayOfWeek; | 422 params.m_rtPart = rtDayOfWeek; |
| 432 params.m_wsText = *GetCapacityForDay(pTheme, params, i); | 423 params.m_wsText = *GetCapacityForDay(pTheme, params, i); |
| 433 params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; | 424 params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; |
| 434 pTheme->DrawText(¶ms); | 425 pTheme->DrawText(¶ms); |
| 435 } | 426 } |
| 436 } | 427 } |
| 437 void CFWL_MonthCalendarImp::DrawWeekNumber(CFX_Graphics* pGraphics, | 428 |
| 438 IFWL_ThemeProvider* pTheme, | 429 void IFWL_MonthCalendar::DrawWeekNumber(CFX_Graphics* pGraphics, |
| 439 const CFX_Matrix* pMatrix) { | 430 IFWL_ThemeProvider* pTheme, |
| 431 const CFX_Matrix* pMatrix) { |
| 440 CFWL_ThemeText params; | 432 CFWL_ThemeText params; |
| 441 params.m_pWidget = m_pInterface; | 433 params.m_pWidget = this; |
| 442 params.m_iPart = CFWL_Part::WeekNum; | 434 params.m_iPart = CFWL_Part::WeekNum; |
| 443 params.m_pGraphics = pGraphics; | 435 params.m_pGraphics = pGraphics; |
| 444 params.m_dwStates = CFWL_PartState_Normal; | 436 params.m_dwStates = CFWL_PartState_Normal; |
| 445 params.m_iTTOAlign = FDE_TTOALIGNMENT_CenterLeft; | 437 params.m_iTTOAlign = FDE_TTOALIGNMENT_CenterLeft; |
| 446 CFX_WideString wsWeekNum; | 438 CFX_WideString wsWeekNum; |
| 447 params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; | 439 params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; |
| 448 params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; | 440 params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; |
| 449 if (pMatrix) { | 441 if (pMatrix) { |
| 450 params.m_matrix.Concat(*pMatrix); | 442 params.m_matrix.Concat(*pMatrix); |
| 451 } | 443 } |
| 452 int32_t iWeekNum = 0; | 444 int32_t iWeekNum = 0; |
| 453 int32_t iMonthNum = m_pDateTime->GetMonth(); | 445 int32_t iMonthNum = m_pDateTime->GetMonth(); |
| 454 int32_t iDayNum = FX_DaysInMonth(m_iCurYear, iMonthNum); | 446 int32_t iDayNum = FX_DaysInMonth(m_iCurYear, iMonthNum); |
| 455 int32_t iTemp = 0; | 447 int32_t iTemp = 0; |
| 456 FX_FLOAT fVStartPos = m_rtClient.top + m_fHeadHei + m_fHSepHei; | 448 FX_FLOAT fVStartPos = m_rtClient.top + m_fHeadHei + m_fHSepHei; |
| 457 FX_FLOAT fHStartPos = m_rtClient.left; | 449 FX_FLOAT fHStartPos = m_rtClient.left; |
| 458 for (int32_t i = 1; i <= iDayNum; i += 7) { | 450 for (int32_t i = 1; i <= iDayNum; i += 7) { |
| 459 iTemp++; | 451 iTemp++; |
| 460 iWeekNum = CalWeekNumber(m_iCurYear, iMonthNum, i); | 452 iWeekNum = CalWeekNumber(m_iCurYear, iMonthNum, i); |
| 461 m_rtWeekNum.Set(fHStartPos, fVStartPos + m_fDateCellHei * iTemp, | 453 m_rtWeekNum.Set(fHStartPos, fVStartPos + m_fDateCellHei * iTemp, |
| 462 m_fWeekNumWid, m_fDateCellHei); | 454 m_fWeekNumWid, m_fDateCellHei); |
| 463 wsWeekNum.Format(L"%d", iWeekNum); | 455 wsWeekNum.Format(L"%d", iWeekNum); |
| 464 params.m_wsText = wsWeekNum; | 456 params.m_wsText = wsWeekNum; |
| 465 params.m_rtPart = m_rtWeekNum; | 457 params.m_rtPart = m_rtWeekNum; |
| 466 pTheme->DrawText(¶ms); | 458 pTheme->DrawText(¶ms); |
| 467 } | 459 } |
| 468 } | 460 } |
| 469 void CFWL_MonthCalendarImp::DrawWeekNumberSep(CFX_Graphics* pGraphics, | 461 |
| 470 IFWL_ThemeProvider* pTheme, | 462 void IFWL_MonthCalendar::DrawWeekNumberSep(CFX_Graphics* pGraphics, |
| 471 const CFX_Matrix* pMatrix) { | 463 IFWL_ThemeProvider* pTheme, |
| 464 const CFX_Matrix* pMatrix) { |
| 472 CFWL_ThemeBackground params; | 465 CFWL_ThemeBackground params; |
| 473 params.m_pWidget = m_pInterface; | 466 params.m_pWidget = this; |
| 474 params.m_iPart = CFWL_Part::WeekNumSep; | 467 params.m_iPart = CFWL_Part::WeekNumSep; |
| 475 params.m_pGraphics = pGraphics; | 468 params.m_pGraphics = pGraphics; |
| 476 params.m_dwStates = CFWL_PartState_Normal; | 469 params.m_dwStates = CFWL_PartState_Normal; |
| 477 params.m_rtPart = m_rtWeekNumSep; | 470 params.m_rtPart = m_rtWeekNumSep; |
| 478 if (pMatrix) { | 471 if (pMatrix) { |
| 479 params.m_matrix.Concat(*pMatrix); | 472 params.m_matrix.Concat(*pMatrix); |
| 480 } | 473 } |
| 481 pTheme->DrawBackground(¶ms); | 474 pTheme->DrawBackground(¶ms); |
| 482 } | 475 } |
| 483 void CFWL_MonthCalendarImp::DrawToday(CFX_Graphics* pGraphics, | 476 |
| 484 IFWL_ThemeProvider* pTheme, | 477 void IFWL_MonthCalendar::DrawToday(CFX_Graphics* pGraphics, |
| 485 const CFX_Matrix* pMatrix) { | 478 IFWL_ThemeProvider* pTheme, |
| 479 const CFX_Matrix* pMatrix) { |
| 486 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoToday) { | 480 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoToday) { |
| 487 return; | 481 return; |
| 488 } | 482 } |
| 489 CFWL_ThemeText params; | 483 CFWL_ThemeText params; |
| 490 params.m_pWidget = m_pInterface; | 484 params.m_pWidget = this; |
| 491 params.m_iPart = CFWL_Part::Today; | 485 params.m_iPart = CFWL_Part::Today; |
| 492 params.m_pGraphics = pGraphics; | 486 params.m_pGraphics = pGraphics; |
| 493 params.m_dwStates = CFWL_PartState_Normal; | 487 params.m_dwStates = CFWL_PartState_Normal; |
| 494 params.m_iTTOAlign = FDE_TTOALIGNMENT_CenterLeft; | 488 params.m_iTTOAlign = FDE_TTOALIGNMENT_CenterLeft; |
| 495 CFX_WideString* wsDay = static_cast<CFX_WideString*>( | 489 CFX_WideString* wsDay = static_cast<CFX_WideString*>( |
| 496 pTheme->GetCapacity(¶ms, CFWL_WidgetCapacity::Today)); | 490 pTheme->GetCapacity(¶ms, CFWL_WidgetCapacity::Today)); |
| 497 CFX_WideString wsText; | 491 CFX_WideString wsText; |
| 498 GetTodayText(m_iYear, m_iMonth, m_iDay, wsText); | 492 GetTodayText(m_iYear, m_iMonth, m_iDay, wsText); |
| 499 params.m_wsText = *wsDay + wsText; | 493 params.m_wsText = *wsDay + wsText; |
| 500 m_szToday = CalcTextSize(params.m_wsText, m_pProperties->m_pThemeProvider); | 494 m_szToday = CalcTextSize(params.m_wsText, m_pProperties->m_pThemeProvider); |
| 501 CalcTodaySize(); | 495 CalcTodaySize(); |
| 502 params.m_rtPart = m_rtToday; | 496 params.m_rtPart = m_rtToday; |
| 503 params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; | 497 params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; |
| 504 if (pMatrix) { | 498 if (pMatrix) { |
| 505 params.m_matrix.Concat(*pMatrix); | 499 params.m_matrix.Concat(*pMatrix); |
| 506 } | 500 } |
| 507 pTheme->DrawText(¶ms); | 501 pTheme->DrawText(¶ms); |
| 508 } | 502 } |
| 509 void CFWL_MonthCalendarImp::DrawDatesIn(CFX_Graphics* pGraphics, | 503 |
| 510 IFWL_ThemeProvider* pTheme, | 504 void IFWL_MonthCalendar::DrawDatesIn(CFX_Graphics* pGraphics, |
| 511 const CFX_Matrix* pMatrix) { | 505 IFWL_ThemeProvider* pTheme, |
| 506 const CFX_Matrix* pMatrix) { |
| 512 CFWL_ThemeText params; | 507 CFWL_ThemeText params; |
| 513 params.m_pWidget = m_pInterface; | 508 params.m_pWidget = this; |
| 514 params.m_iPart = CFWL_Part::DatesIn; | 509 params.m_iPart = CFWL_Part::DatesIn; |
| 515 params.m_pGraphics = pGraphics; | 510 params.m_pGraphics = pGraphics; |
| 516 params.m_dwStates = CFWL_PartState_Normal; | 511 params.m_dwStates = CFWL_PartState_Normal; |
| 517 params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; | 512 params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; |
| 518 if (pMatrix) { | 513 if (pMatrix) { |
| 519 params.m_matrix.Concat(*pMatrix); | 514 params.m_matrix.Concat(*pMatrix); |
| 520 } | 515 } |
| 521 int32_t iCount = m_arrDates.GetSize(); | 516 int32_t iCount = m_arrDates.GetSize(); |
| 522 for (int32_t j = 0; j < iCount; j++) { | 517 for (int32_t j = 0; j < iCount; j++) { |
| 523 FWL_DATEINFO* pDataInfo = m_arrDates.GetAt(j); | 518 FWL_DATEINFO* pDataInfo = m_arrDates.GetAt(j); |
| 524 params.m_wsText = pDataInfo->wsDay; | 519 params.m_wsText = pDataInfo->wsDay; |
| 525 params.m_rtPart = pDataInfo->rect; | 520 params.m_rtPart = pDataInfo->rect; |
| 526 params.m_dwStates = pDataInfo->dwStates; | 521 params.m_dwStates = pDataInfo->dwStates; |
| 527 if (j + 1 == m_iHovered) { | 522 if (j + 1 == m_iHovered) { |
| 528 params.m_dwStates |= CFWL_PartState_Hovered; | 523 params.m_dwStates |= CFWL_PartState_Hovered; |
| 529 } | 524 } |
| 530 params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; | 525 params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; |
| 531 pTheme->DrawText(¶ms); | 526 pTheme->DrawText(¶ms); |
| 532 } | 527 } |
| 533 } | 528 } |
| 534 void CFWL_MonthCalendarImp::DrawDatesOut(CFX_Graphics* pGraphics, | 529 |
| 535 IFWL_ThemeProvider* pTheme, | 530 void IFWL_MonthCalendar::DrawDatesOut(CFX_Graphics* pGraphics, |
| 536 const CFX_Matrix* pMatrix) { | 531 IFWL_ThemeProvider* pTheme, |
| 532 const CFX_Matrix* pMatrix) { |
| 537 CFWL_ThemeText params; | 533 CFWL_ThemeText params; |
| 538 params.m_pWidget = m_pInterface; | 534 params.m_pWidget = this; |
| 539 params.m_iPart = CFWL_Part::DatesOut; | 535 params.m_iPart = CFWL_Part::DatesOut; |
| 540 params.m_pGraphics = pGraphics; | 536 params.m_pGraphics = pGraphics; |
| 541 params.m_dwStates = CFWL_PartState_Normal; | 537 params.m_dwStates = CFWL_PartState_Normal; |
| 542 params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; | 538 params.m_iTTOAlign = FDE_TTOALIGNMENT_Center; |
| 543 if (pMatrix) { | 539 if (pMatrix) { |
| 544 params.m_matrix.Concat(*pMatrix); | 540 params.m_matrix.Concat(*pMatrix); |
| 545 } | 541 } |
| 546 pTheme->DrawText(¶ms); | 542 pTheme->DrawText(¶ms); |
| 547 } | 543 } |
| 548 void CFWL_MonthCalendarImp::DrawDatesInCircle(CFX_Graphics* pGraphics, | 544 |
| 549 IFWL_ThemeProvider* pTheme, | 545 void IFWL_MonthCalendar::DrawDatesInCircle(CFX_Graphics* pGraphics, |
| 550 const CFX_Matrix* pMatrix) { | 546 IFWL_ThemeProvider* pTheme, |
| 547 const CFX_Matrix* pMatrix) { |
| 551 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoTodayCircle) { | 548 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoTodayCircle) { |
| 552 return; | 549 return; |
| 553 } | 550 } |
| 554 if (m_iMonth != m_iCurMonth || m_iYear != m_iCurYear) { | 551 if (m_iMonth != m_iCurMonth || m_iYear != m_iCurYear) { |
| 555 return; | 552 return; |
| 556 } | 553 } |
| 557 if (m_iDay < 1 || m_iDay > m_arrDates.GetSize()) { | 554 if (m_iDay < 1 || m_iDay > m_arrDates.GetSize()) { |
| 558 return; | 555 return; |
| 559 } | 556 } |
| 560 FWL_DATEINFO* pDate = m_arrDates[m_iDay - 1]; | 557 FWL_DATEINFO* pDate = m_arrDates[m_iDay - 1]; |
| 561 if (!pDate) | 558 if (!pDate) |
| 562 return; | 559 return; |
| 563 CFWL_ThemeBackground params; | 560 CFWL_ThemeBackground params; |
| 564 params.m_pWidget = m_pInterface; | 561 params.m_pWidget = this; |
| 565 params.m_iPart = CFWL_Part::DateInCircle; | 562 params.m_iPart = CFWL_Part::DateInCircle; |
| 566 params.m_pGraphics = pGraphics; | 563 params.m_pGraphics = pGraphics; |
| 567 params.m_rtPart = pDate->rect; | 564 params.m_rtPart = pDate->rect; |
| 568 params.m_dwStates = CFWL_PartState_Normal; | 565 params.m_dwStates = CFWL_PartState_Normal; |
| 569 if (pMatrix) { | 566 if (pMatrix) { |
| 570 params.m_matrix.Concat(*pMatrix); | 567 params.m_matrix.Concat(*pMatrix); |
| 571 } | 568 } |
| 572 pTheme->DrawBackground(¶ms); | 569 pTheme->DrawBackground(¶ms); |
| 573 } | 570 } |
| 574 void CFWL_MonthCalendarImp::DrawTodayCircle(CFX_Graphics* pGraphics, | 571 |
| 575 IFWL_ThemeProvider* pTheme, | 572 void IFWL_MonthCalendar::DrawTodayCircle(CFX_Graphics* pGraphics, |
| 576 const CFX_Matrix* pMatrix) { | 573 IFWL_ThemeProvider* pTheme, |
| 574 const CFX_Matrix* pMatrix) { |
| 577 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoToday) { | 575 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoToday) { |
| 578 return; | 576 return; |
| 579 } | 577 } |
| 580 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoTodayCircle) { | 578 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_NoTodayCircle) { |
| 581 return; | 579 return; |
| 582 } | 580 } |
| 583 CFWL_ThemeBackground params; | 581 CFWL_ThemeBackground params; |
| 584 params.m_pWidget = m_pInterface; | 582 params.m_pWidget = this; |
| 585 params.m_iPart = CFWL_Part::TodayCircle; | 583 params.m_iPart = CFWL_Part::TodayCircle; |
| 586 params.m_pGraphics = pGraphics; | 584 params.m_pGraphics = pGraphics; |
| 587 params.m_dwStates = CFWL_PartState_Normal; | 585 params.m_dwStates = CFWL_PartState_Normal; |
| 588 params.m_rtPart = m_rtTodayFlag; | 586 params.m_rtPart = m_rtTodayFlag; |
| 589 if (pMatrix) { | 587 if (pMatrix) { |
| 590 params.m_matrix.Concat(*pMatrix); | 588 params.m_matrix.Concat(*pMatrix); |
| 591 } | 589 } |
| 592 pTheme->DrawBackground(¶ms); | 590 pTheme->DrawBackground(¶ms); |
| 593 } | 591 } |
| 594 CFX_SizeF CFWL_MonthCalendarImp::CalcSize(FX_BOOL bAutoSize) { | 592 |
| 593 CFX_SizeF IFWL_MonthCalendar::CalcSize(FX_BOOL bAutoSize) { |
| 595 if (!m_pProperties->m_pThemeProvider) | 594 if (!m_pProperties->m_pThemeProvider) |
| 596 return CFX_SizeF(); | 595 return CFX_SizeF(); |
| 597 | 596 |
| 598 if (!bAutoSize) { | 597 if (!bAutoSize) { |
| 599 GetClientRect(m_rtClient); | 598 GetClientRect(m_rtClient); |
| 600 return CFX_SizeF(m_rtClient.width, m_rtClient.height); | 599 return CFX_SizeF(m_rtClient.width, m_rtClient.height); |
| 601 } | 600 } |
| 602 | 601 |
| 603 CFX_SizeF fs; | 602 CFX_SizeF fs; |
| 604 CFWL_ThemePart params; | 603 CFWL_ThemePart params; |
| 605 params.m_pWidget = m_pInterface; | 604 params.m_pWidget = this; |
| 606 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; | 605 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; |
| 607 FX_FLOAT fMaxWeekW = 0.0f; | 606 FX_FLOAT fMaxWeekW = 0.0f; |
| 608 FX_FLOAT fMaxWeekH = 0.0f; | 607 FX_FLOAT fMaxWeekH = 0.0f; |
| 609 | 608 |
| 610 for (uint32_t i = 0; i < 7; ++i) { | 609 for (uint32_t i = 0; i < 7; ++i) { |
| 611 CFX_SizeF sz = CalcTextSize(*GetCapacityForDay(pTheme, params, i), | 610 CFX_SizeF sz = CalcTextSize(*GetCapacityForDay(pTheme, params, i), |
| 612 m_pProperties->m_pThemeProvider); | 611 m_pProperties->m_pThemeProvider); |
| 613 fMaxWeekW = (fMaxWeekW >= sz.x) ? fMaxWeekW : sz.x; | 612 fMaxWeekW = (fMaxWeekW >= sz.x) ? fMaxWeekW : sz.x; |
| 614 fMaxWeekH = (fMaxWeekH >= sz.y) ? fMaxWeekH : sz.y; | 613 fMaxWeekH = (fMaxWeekH >= sz.y) ? fMaxWeekH : sz.y; |
| 615 } | 614 } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 650 CFX_WideString* wsText = static_cast<CFX_WideString*>( | 649 CFX_WideString* wsText = static_cast<CFX_WideString*>( |
| 651 pTheme->GetCapacity(¶ms, CFWL_WidgetCapacity::Today)); | 650 pTheme->GetCapacity(¶ms, CFWL_WidgetCapacity::Today)); |
| 652 m_wsToday = *wsText + wsToday; | 651 m_wsToday = *wsText + wsToday; |
| 653 m_szToday = CalcTextSize(wsToday, m_pProperties->m_pThemeProvider); | 652 m_szToday = CalcTextSize(wsToday, m_pProperties->m_pThemeProvider); |
| 654 m_szToday.y = (m_szToday.y >= m_szCell.y) ? m_szToday.y : m_szCell.y; | 653 m_szToday.y = (m_szToday.y >= m_szCell.y) ? m_szToday.y : m_szCell.y; |
| 655 fs.y = m_szCell.x + m_szCell.y * (MONTHCAL_ROWS - 2) + m_szToday.y + | 654 fs.y = m_szCell.x + m_szCell.y * (MONTHCAL_ROWS - 2) + m_szToday.y + |
| 656 MONTHCAL_VMARGIN * MONTHCAL_ROWS * 2 + MONTHCAL_HEADER_BTN_VMARGIN * 4; | 655 MONTHCAL_VMARGIN * MONTHCAL_ROWS * 2 + MONTHCAL_HEADER_BTN_VMARGIN * 4; |
| 657 return fs; | 656 return fs; |
| 658 } | 657 } |
| 659 | 658 |
| 660 void CFWL_MonthCalendarImp::CalcHeadSize() { | 659 void IFWL_MonthCalendar::CalcHeadSize() { |
| 661 FX_FLOAT fHeadHMargin = (m_rtClient.width - m_szHead.x) / 2; | 660 FX_FLOAT fHeadHMargin = (m_rtClient.width - m_szHead.x) / 2; |
| 662 FX_FLOAT fHeadVMargin = (m_szCell.x - m_szHead.y) / 2; | 661 FX_FLOAT fHeadVMargin = (m_szCell.x - m_szHead.y) / 2; |
| 663 m_rtHeadText.Set(m_rtClient.left + fHeadHMargin, | 662 m_rtHeadText.Set(m_rtClient.left + fHeadHMargin, |
| 664 m_rtClient.top + MONTHCAL_HEADER_BTN_VMARGIN + | 663 m_rtClient.top + MONTHCAL_HEADER_BTN_VMARGIN + |
| 665 MONTHCAL_VMARGIN + fHeadVMargin, | 664 MONTHCAL_VMARGIN + fHeadVMargin, |
| 666 m_szHead.x, m_szHead.y); | 665 m_szHead.x, m_szHead.y); |
| 667 } | 666 } |
| 668 void CFWL_MonthCalendarImp::CalcTodaySize() { | 667 |
| 668 void IFWL_MonthCalendar::CalcTodaySize() { |
| 669 m_rtTodayFlag.Set( | 669 m_rtTodayFlag.Set( |
| 670 m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN + MONTHCAL_HMARGIN, | 670 m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN + MONTHCAL_HMARGIN, |
| 671 m_rtDates.bottom() + MONTHCAL_HEADER_BTN_VMARGIN + MONTHCAL_VMARGIN, | 671 m_rtDates.bottom() + MONTHCAL_HEADER_BTN_VMARGIN + MONTHCAL_VMARGIN, |
| 672 m_szCell.x, m_szToday.y); | 672 m_szCell.x, m_szToday.y); |
| 673 m_rtToday.Set( | 673 m_rtToday.Set( |
| 674 m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN + m_szCell.x + | 674 m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN + m_szCell.x + |
| 675 MONTHCAL_HMARGIN * 2, | 675 MONTHCAL_HMARGIN * 2, |
| 676 m_rtDates.bottom() + MONTHCAL_HEADER_BTN_VMARGIN + MONTHCAL_VMARGIN, | 676 m_rtDates.bottom() + MONTHCAL_HEADER_BTN_VMARGIN + MONTHCAL_VMARGIN, |
| 677 m_szToday.x, m_szToday.y); | 677 m_szToday.x, m_szToday.y); |
| 678 } | 678 } |
| 679 void CFWL_MonthCalendarImp::LayOut() { | 679 |
| 680 void IFWL_MonthCalendar::LayOut() { |
| 680 GetClientRect(m_rtClient); | 681 GetClientRect(m_rtClient); |
| 681 { | 682 { |
| 682 m_rtHead.Set( | 683 m_rtHead.Set( |
| 683 m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN, m_rtClient.top, | 684 m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN, m_rtClient.top, |
| 684 m_rtClient.width - MONTHCAL_HEADER_BTN_HMARGIN * 2, | 685 m_rtClient.width - MONTHCAL_HEADER_BTN_HMARGIN * 2, |
| 685 m_szCell.x + (MONTHCAL_HEADER_BTN_VMARGIN + MONTHCAL_VMARGIN) * 2); | 686 m_szCell.x + (MONTHCAL_HEADER_BTN_VMARGIN + MONTHCAL_VMARGIN) * 2); |
| 686 m_rtWeek.Set(m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN, | 687 m_rtWeek.Set(m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN, |
| 687 m_rtHead.bottom(), | 688 m_rtHead.bottom(), |
| 688 m_rtClient.width - MONTHCAL_HEADER_BTN_HMARGIN * 2, | 689 m_rtClient.width - MONTHCAL_HEADER_BTN_HMARGIN * 2, |
| 689 m_szCell.y + MONTHCAL_VMARGIN * 2); | 690 m_szCell.y + MONTHCAL_VMARGIN * 2); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 700 m_rtClient.width - (MONTHCAL_HEADER_BTN_HMARGIN + MONTHCAL_HMARGIN) * 2, | 701 m_rtClient.width - (MONTHCAL_HEADER_BTN_HMARGIN + MONTHCAL_HMARGIN) * 2, |
| 701 MONTHCAL_HSEP_HEIGHT); | 702 MONTHCAL_HSEP_HEIGHT); |
| 702 m_rtDates.Set(m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN, | 703 m_rtDates.Set(m_rtClient.left + MONTHCAL_HEADER_BTN_HMARGIN, |
| 703 m_rtWeek.bottom(), | 704 m_rtWeek.bottom(), |
| 704 m_rtClient.width - MONTHCAL_HEADER_BTN_HMARGIN * 2, | 705 m_rtClient.width - MONTHCAL_HEADER_BTN_HMARGIN * 2, |
| 705 m_szCell.y * (MONTHCAL_ROWS - 3) + | 706 m_szCell.y * (MONTHCAL_ROWS - 3) + |
| 706 MONTHCAL_VMARGIN * (MONTHCAL_ROWS - 3) * 2); | 707 MONTHCAL_VMARGIN * (MONTHCAL_ROWS - 3) * 2); |
| 707 } | 708 } |
| 708 CalDateItem(); | 709 CalDateItem(); |
| 709 } | 710 } |
| 710 void CFWL_MonthCalendarImp::CalDateItem() { | 711 |
| 712 void IFWL_MonthCalendar::CalDateItem() { |
| 711 FX_BOOL bNewWeek = FALSE; | 713 FX_BOOL bNewWeek = FALSE; |
| 712 int32_t iWeekOfMonth = 0; | 714 int32_t iWeekOfMonth = 0; |
| 713 FX_FLOAT fLeft = m_rtDates.left; | 715 FX_FLOAT fLeft = m_rtDates.left; |
| 714 FX_FLOAT fTop = m_rtDates.top; | 716 FX_FLOAT fTop = m_rtDates.top; |
| 715 int32_t iCount = m_arrDates.GetSize(); | 717 int32_t iCount = m_arrDates.GetSize(); |
| 716 for (int32_t i = 0; i < iCount; i++) { | 718 for (int32_t i = 0; i < iCount; i++) { |
| 717 FWL_DATEINFO* pDateInfo = m_arrDates.GetAt(i); | 719 FWL_DATEINFO* pDateInfo = m_arrDates.GetAt(i); |
| 718 if (bNewWeek) { | 720 if (bNewWeek) { |
| 719 iWeekOfMonth++; | 721 iWeekOfMonth++; |
| 720 bNewWeek = FALSE; | 722 bNewWeek = FALSE; |
| 721 } | 723 } |
| 722 pDateInfo->rect.Set( | 724 pDateInfo->rect.Set( |
| 723 fLeft + pDateInfo->iDayOfWeek * (m_szCell.x + (MONTHCAL_HMARGIN * 2)), | 725 fLeft + pDateInfo->iDayOfWeek * (m_szCell.x + (MONTHCAL_HMARGIN * 2)), |
| 724 fTop + iWeekOfMonth * (m_szCell.y + (MONTHCAL_VMARGIN * 2)), | 726 fTop + iWeekOfMonth * (m_szCell.y + (MONTHCAL_VMARGIN * 2)), |
| 725 m_szCell.x + (MONTHCAL_HMARGIN * 2), | 727 m_szCell.x + (MONTHCAL_HMARGIN * 2), |
| 726 m_szCell.y + (MONTHCAL_VMARGIN * 2)); | 728 m_szCell.y + (MONTHCAL_VMARGIN * 2)); |
| 727 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_WeekNumbers) { | 729 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_WeekNumbers) { |
| 728 pDateInfo->rect.Offset(m_fWeekNumWid, 0); | 730 pDateInfo->rect.Offset(m_fWeekNumWid, 0); |
| 729 } | 731 } |
| 730 if (pDateInfo->iDayOfWeek >= 6) { | 732 if (pDateInfo->iDayOfWeek >= 6) { |
| 731 bNewWeek = TRUE; | 733 bNewWeek = TRUE; |
| 732 } | 734 } |
| 733 } | 735 } |
| 734 } | 736 } |
| 735 void CFWL_MonthCalendarImp::GetCapValue() { | 737 |
| 738 void IFWL_MonthCalendar::GetCapValue() { |
| 736 if (!m_pProperties->m_pThemeProvider) { | 739 if (!m_pProperties->m_pThemeProvider) { |
| 737 m_pProperties->m_pThemeProvider = GetAvailableTheme(); | 740 m_pProperties->m_pThemeProvider = GetAvailableTheme(); |
| 738 } | 741 } |
| 739 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; | 742 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; |
| 740 CFWL_ThemePart part; | 743 CFWL_ThemePart part; |
| 741 part.m_pWidget = m_pInterface; | 744 part.m_pWidget = this; |
| 742 m_fHeadWid = *static_cast<FX_FLOAT*>( | 745 m_fHeadWid = *static_cast<FX_FLOAT*>( |
| 743 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::HeaderWidth)); | 746 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::HeaderWidth)); |
| 744 m_fHeadHei = *static_cast<FX_FLOAT*>( | 747 m_fHeadHei = *static_cast<FX_FLOAT*>( |
| 745 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::HeaderHeight)); | 748 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::HeaderHeight)); |
| 746 m_fHeadBtnWid = *static_cast<FX_FLOAT*>( | 749 m_fHeadBtnWid = *static_cast<FX_FLOAT*>( |
| 747 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::HeaderBtnWidth)); | 750 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::HeaderBtnWidth)); |
| 748 m_fHeadBtnHei = *static_cast<FX_FLOAT*>( | 751 m_fHeadBtnHei = *static_cast<FX_FLOAT*>( |
| 749 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::HeaderBtnHeight)); | 752 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::HeaderBtnHeight)); |
| 750 m_fHeadBtnHMargin = *static_cast<FX_FLOAT*>( | 753 m_fHeadBtnHMargin = *static_cast<FX_FLOAT*>( |
| 751 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::HeaderBtnHMargin)); | 754 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::HeaderBtnHMargin)); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 m_fTodayFlagWid = *static_cast<FX_FLOAT*>( | 791 m_fTodayFlagWid = *static_cast<FX_FLOAT*>( |
| 789 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::TodayFlagWidth)); | 792 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::TodayFlagWidth)); |
| 790 m_fMCWid = *static_cast<FX_FLOAT*>( | 793 m_fMCWid = *static_cast<FX_FLOAT*>( |
| 791 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::Width)); | 794 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::Width)); |
| 792 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_WeekNumbers) { | 795 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_WeekNumbers) { |
| 793 m_fMCWid += m_fWeekNumWid; | 796 m_fMCWid += m_fWeekNumWid; |
| 794 } | 797 } |
| 795 m_fMCHei = *static_cast<FX_FLOAT*>( | 798 m_fMCHei = *static_cast<FX_FLOAT*>( |
| 796 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::Height)); | 799 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::Height)); |
| 797 } | 800 } |
| 798 int32_t CFWL_MonthCalendarImp::CalWeekNumber(int32_t iYear, | 801 |
| 799 int32_t iMonth, | 802 int32_t IFWL_MonthCalendar::CalWeekNumber(int32_t iYear, |
| 800 int32_t iDay) { | 803 int32_t iMonth, |
| 804 int32_t iDay) { |
| 801 return 0; | 805 return 0; |
| 802 } | 806 } |
| 803 FX_BOOL CFWL_MonthCalendarImp::GetMinDate(int32_t& iYear, | 807 |
| 804 int32_t& iMonth, | 808 FX_BOOL IFWL_MonthCalendar::GetMinDate(int32_t& iYear, |
| 805 int32_t& iDay) { | 809 int32_t& iMonth, |
| 810 int32_t& iDay) { |
| 806 iYear = m_dtMin.iYear; | 811 iYear = m_dtMin.iYear; |
| 807 iMonth = m_dtMin.iMonth; | 812 iMonth = m_dtMin.iMonth; |
| 808 iDay = m_dtMin.iDay; | 813 iDay = m_dtMin.iDay; |
| 809 return TRUE; | 814 return TRUE; |
| 810 } | 815 } |
| 811 FX_BOOL CFWL_MonthCalendarImp::SetMinDate(int32_t iYear, | 816 |
| 812 int32_t iMonth, | 817 FX_BOOL IFWL_MonthCalendar::SetMinDate(int32_t iYear, |
| 813 int32_t iDay) { | 818 int32_t iMonth, |
| 819 int32_t iDay) { |
| 814 m_dtMin = DATE(iYear, iMonth, iDay); | 820 m_dtMin = DATE(iYear, iMonth, iDay); |
| 815 return TRUE; | 821 return TRUE; |
| 816 } | 822 } |
| 817 FX_BOOL CFWL_MonthCalendarImp::GetMaxDate(int32_t& iYear, | 823 |
| 818 int32_t& iMonth, | 824 FX_BOOL IFWL_MonthCalendar::GetMaxDate(int32_t& iYear, |
| 819 int32_t& iDay) { | 825 int32_t& iMonth, |
| 826 int32_t& iDay) { |
| 820 iYear = m_dtMax.iYear; | 827 iYear = m_dtMax.iYear; |
| 821 iMonth = m_dtMax.iMonth; | 828 iMonth = m_dtMax.iMonth; |
| 822 iDay = m_dtMax.iDay; | 829 iDay = m_dtMax.iDay; |
| 823 return TRUE; | 830 return TRUE; |
| 824 } | 831 } |
| 825 FX_BOOL CFWL_MonthCalendarImp::SetMaxDate(int32_t iYear, | 832 |
| 826 int32_t iMonth, | 833 FX_BOOL IFWL_MonthCalendar::SetMaxDate(int32_t iYear, |
| 827 int32_t iDay) { | 834 int32_t iMonth, |
| 835 int32_t iDay) { |
| 828 m_dtMax = DATE(iYear, iMonth, iDay); | 836 m_dtMax = DATE(iYear, iMonth, iDay); |
| 829 return TRUE; | 837 return TRUE; |
| 830 } | 838 } |
| 831 FX_BOOL CFWL_MonthCalendarImp::InitDate() { | 839 |
| 840 FX_BOOL IFWL_MonthCalendar::InitDate() { |
| 832 if (m_pProperties->m_pDataProvider) { | 841 if (m_pProperties->m_pDataProvider) { |
| 833 IFWL_MonthCalendarDP* pDateProv = | 842 IFWL_MonthCalendarDP* pDateProv = |
| 834 static_cast<IFWL_MonthCalendarDP*>(m_pProperties->m_pDataProvider); | 843 static_cast<IFWL_MonthCalendarDP*>(m_pProperties->m_pDataProvider); |
| 835 m_iYear = pDateProv->GetCurYear(m_pInterface); | 844 m_iYear = pDateProv->GetCurYear(this); |
| 836 m_iMonth = pDateProv->GetCurMonth(m_pInterface); | 845 m_iMonth = pDateProv->GetCurMonth(this); |
| 837 m_iDay = pDateProv->GetCurDay(m_pInterface); | 846 m_iDay = pDateProv->GetCurDay(this); |
| 838 m_iCurYear = m_iYear; | 847 m_iCurYear = m_iYear; |
| 839 m_iCurMonth = m_iMonth; | 848 m_iCurMonth = m_iMonth; |
| 840 } else { | 849 } else { |
| 841 m_iDay = 1; | 850 m_iDay = 1; |
| 842 m_iMonth = 1; | 851 m_iMonth = 1; |
| 843 m_iYear = 1; | 852 m_iYear = 1; |
| 844 m_iCurYear = m_iYear; | 853 m_iCurYear = m_iYear; |
| 845 m_iCurMonth = m_iMonth; | 854 m_iCurMonth = m_iMonth; |
| 846 } | 855 } |
| 847 GetTodayText(m_iYear, m_iMonth, m_iDay, m_wsToday); | 856 GetTodayText(m_iYear, m_iMonth, m_iDay, m_wsToday); |
| 848 GetHeadText(m_iCurYear, m_iCurMonth, m_wsHead); | 857 GetHeadText(m_iCurYear, m_iCurMonth, m_wsHead); |
| 849 m_dtMin = DATE(1500, 12, 1); | 858 m_dtMin = DATE(1500, 12, 1); |
| 850 m_dtMax = DATE(2200, 1, 1); | 859 m_dtMax = DATE(2200, 1, 1); |
| 851 return TRUE; | 860 return TRUE; |
| 852 } | 861 } |
| 853 | 862 |
| 854 void CFWL_MonthCalendarImp::ClearDateItem() { | 863 void IFWL_MonthCalendar::ClearDateItem() { |
| 855 for (int32_t i = 0; i < m_arrDates.GetSize(); i++) | 864 for (int32_t i = 0; i < m_arrDates.GetSize(); i++) |
| 856 delete m_arrDates.GetAt(i); | 865 delete m_arrDates.GetAt(i); |
| 857 | 866 |
| 858 m_arrDates.RemoveAll(); | 867 m_arrDates.RemoveAll(); |
| 859 } | 868 } |
| 860 | 869 |
| 861 void CFWL_MonthCalendarImp::ReSetDateItem() { | 870 void IFWL_MonthCalendar::ReSetDateItem() { |
| 862 m_pDateTime->Set(m_iCurYear, m_iCurMonth, 1); | 871 m_pDateTime->Set(m_iCurYear, m_iCurMonth, 1); |
| 863 int32_t iDays = FX_DaysInMonth(m_iCurYear, m_iCurMonth); | 872 int32_t iDays = FX_DaysInMonth(m_iCurYear, m_iCurMonth); |
| 864 int32_t iDayOfWeek = m_pDateTime->GetDayOfWeek(); | 873 int32_t iDayOfWeek = m_pDateTime->GetDayOfWeek(); |
| 865 for (int32_t i = 0; i < iDays; i++) { | 874 for (int32_t i = 0; i < iDays; i++) { |
| 866 if (iDayOfWeek >= 7) { | 875 if (iDayOfWeek >= 7) { |
| 867 iDayOfWeek = 0; | 876 iDayOfWeek = 0; |
| 868 } | 877 } |
| 869 CFX_WideString wsDay; | 878 CFX_WideString wsDay; |
| 870 wsDay.Format(L"%d", i + 1); | 879 wsDay.Format(L"%d", i + 1); |
| 871 uint32_t dwStates = 0; | 880 uint32_t dwStates = 0; |
| 872 if (m_iYear == m_iCurYear && m_iMonth == m_iCurMonth && m_iDay == (i + 1)) { | 881 if (m_iYear == m_iCurYear && m_iMonth == m_iCurMonth && m_iDay == (i + 1)) { |
| 873 dwStates |= FWL_ITEMSTATE_MCD_Flag; | 882 dwStates |= FWL_ITEMSTATE_MCD_Flag; |
| 874 } | 883 } |
| 875 if (m_arrSelDays.Find(i + 1) != -1) { | 884 if (m_arrSelDays.Find(i + 1) != -1) { |
| 876 dwStates |= FWL_ITEMSTATE_MCD_Selected; | 885 dwStates |= FWL_ITEMSTATE_MCD_Selected; |
| 877 } | 886 } |
| 878 CFX_RectF rtDate; | 887 CFX_RectF rtDate; |
| 879 rtDate.Set(0, 0, 0, 0); | 888 rtDate.Set(0, 0, 0, 0); |
| 880 m_arrDates.Add( | 889 m_arrDates.Add( |
| 881 new FWL_DATEINFO(i + 1, iDayOfWeek, dwStates, rtDate, wsDay)); | 890 new FWL_DATEINFO(i + 1, iDayOfWeek, dwStates, rtDate, wsDay)); |
| 882 iDayOfWeek++; | 891 iDayOfWeek++; |
| 883 } | 892 } |
| 884 } | 893 } |
| 885 FX_BOOL CFWL_MonthCalendarImp::NextMonth() { | 894 |
| 895 FX_BOOL IFWL_MonthCalendar::NextMonth() { |
| 886 int32_t iYear = m_iCurYear, iMonth = m_iCurMonth; | 896 int32_t iYear = m_iCurYear, iMonth = m_iCurMonth; |
| 887 if (iMonth >= 12) { | 897 if (iMonth >= 12) { |
| 888 iMonth = 1; | 898 iMonth = 1; |
| 889 iYear++; | 899 iYear++; |
| 890 } else { | 900 } else { |
| 891 iMonth++; | 901 iMonth++; |
| 892 } | 902 } |
| 893 DATE dt(m_iCurYear, m_iCurMonth, 1); | 903 DATE dt(m_iCurYear, m_iCurMonth, 1); |
| 894 if (!(dt < m_dtMax)) { | 904 if (!(dt < m_dtMax)) { |
| 895 return FALSE; | 905 return FALSE; |
| 896 } | 906 } |
| 897 m_iCurYear = iYear, m_iCurMonth = iMonth; | 907 m_iCurYear = iYear, m_iCurMonth = iMonth; |
| 898 ChangeToMonth(m_iCurYear, m_iCurMonth); | 908 ChangeToMonth(m_iCurYear, m_iCurMonth); |
| 899 return TRUE; | 909 return TRUE; |
| 900 } | 910 } |
| 901 FX_BOOL CFWL_MonthCalendarImp::PrevMonth() { | 911 |
| 912 FX_BOOL IFWL_MonthCalendar::PrevMonth() { |
| 902 int32_t iYear = m_iCurYear, iMonth = m_iCurMonth; | 913 int32_t iYear = m_iCurYear, iMonth = m_iCurMonth; |
| 903 if (iMonth <= 1) { | 914 if (iMonth <= 1) { |
| 904 iMonth = 12; | 915 iMonth = 12; |
| 905 iYear--; | 916 iYear--; |
| 906 } else { | 917 } else { |
| 907 iMonth--; | 918 iMonth--; |
| 908 } | 919 } |
| 909 DATE dt(m_iCurYear, m_iCurMonth, 1); | 920 DATE dt(m_iCurYear, m_iCurMonth, 1); |
| 910 if (!(dt > m_dtMin)) { | 921 if (!(dt > m_dtMin)) { |
| 911 return FALSE; | 922 return FALSE; |
| 912 } | 923 } |
| 913 m_iCurYear = iYear, m_iCurMonth = iMonth; | 924 m_iCurYear = iYear, m_iCurMonth = iMonth; |
| 914 ChangeToMonth(m_iCurYear, m_iCurMonth); | 925 ChangeToMonth(m_iCurYear, m_iCurMonth); |
| 915 return TRUE; | 926 return TRUE; |
| 916 } | 927 } |
| 917 void CFWL_MonthCalendarImp::ChangeToMonth(int32_t iYear, int32_t iMonth) { | 928 |
| 929 void IFWL_MonthCalendar::ChangeToMonth(int32_t iYear, int32_t iMonth) { |
| 918 m_iCurYear = iYear; | 930 m_iCurYear = iYear; |
| 919 m_iCurMonth = iMonth; | 931 m_iCurMonth = iMonth; |
| 920 m_iHovered = -1; | 932 m_iHovered = -1; |
| 921 ClearDateItem(); | 933 ClearDateItem(); |
| 922 ReSetDateItem(); | 934 ReSetDateItem(); |
| 923 CalDateItem(); | 935 CalDateItem(); |
| 924 GetHeadText(m_iCurYear, m_iCurMonth, m_wsHead); | 936 GetHeadText(m_iCurYear, m_iCurMonth, m_wsHead); |
| 925 } | 937 } |
| 926 FX_BOOL CFWL_MonthCalendarImp::RemoveSelDay(int32_t iDay, FX_BOOL bAll) { | 938 |
| 939 FX_BOOL IFWL_MonthCalendar::RemoveSelDay(int32_t iDay, FX_BOOL bAll) { |
| 927 if (iDay == -1 && !bAll) { | 940 if (iDay == -1 && !bAll) { |
| 928 return FALSE; | 941 return FALSE; |
| 929 } | 942 } |
| 930 if (bAll) { | 943 if (bAll) { |
| 931 int32_t iCount = m_arrSelDays.GetSize(); | 944 int32_t iCount = m_arrSelDays.GetSize(); |
| 932 int32_t iDatesCount = m_arrDates.GetSize(); | 945 int32_t iDatesCount = m_arrDates.GetSize(); |
| 933 for (int32_t i = 0; i < iCount; i++) { | 946 for (int32_t i = 0; i < iCount; i++) { |
| 934 int32_t iSelDay = m_arrSelDays.GetAt(i); | 947 int32_t iSelDay = m_arrSelDays.GetAt(i); |
| 935 if (iSelDay <= iDatesCount) { | 948 if (iSelDay <= iDatesCount) { |
| 936 FWL_DATEINFO* pDateInfo = m_arrDates.GetAt(iSelDay - 1); | 949 FWL_DATEINFO* pDateInfo = m_arrDates.GetAt(iSelDay - 1); |
| 937 pDateInfo->dwStates &= ~FWL_ITEMSTATE_MCD_Selected; | 950 pDateInfo->dwStates &= ~FWL_ITEMSTATE_MCD_Selected; |
| 938 } | 951 } |
| 939 } | 952 } |
| 940 m_arrSelDays.RemoveAll(); | 953 m_arrSelDays.RemoveAll(); |
| 941 } else { | 954 } else { |
| 942 int32_t index = m_arrSelDays.Find(iDay); | 955 int32_t index = m_arrSelDays.Find(iDay); |
| 943 if (index == -1) { | 956 if (index == -1) { |
| 944 return FALSE; | 957 return FALSE; |
| 945 } | 958 } |
| 946 int32_t iSelDay = m_arrSelDays.GetAt(iDay); | 959 int32_t iSelDay = m_arrSelDays.GetAt(iDay); |
| 947 int32_t iDatesCount = m_arrDates.GetSize(); | 960 int32_t iDatesCount = m_arrDates.GetSize(); |
| 948 if (iSelDay <= iDatesCount) { | 961 if (iSelDay <= iDatesCount) { |
| 949 FWL_DATEINFO* pDateInfo = m_arrDates.GetAt(iSelDay - 1); | 962 FWL_DATEINFO* pDateInfo = m_arrDates.GetAt(iSelDay - 1); |
| 950 pDateInfo->dwStates &= ~FWL_ITEMSTATE_MCD_Selected; | 963 pDateInfo->dwStates &= ~FWL_ITEMSTATE_MCD_Selected; |
| 951 } | 964 } |
| 952 m_arrSelDays.RemoveAt(index); | 965 m_arrSelDays.RemoveAt(index); |
| 953 } | 966 } |
| 954 return TRUE; | 967 return TRUE; |
| 955 } | 968 } |
| 956 FX_BOOL CFWL_MonthCalendarImp::AddSelDay(int32_t iDay) { | 969 |
| 970 FX_BOOL IFWL_MonthCalendar::AddSelDay(int32_t iDay) { |
| 957 ASSERT(iDay > 0); | 971 ASSERT(iDay > 0); |
| 958 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_MultiSelect) { | 972 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_MultiSelect) { |
| 959 } else { | 973 } else { |
| 960 if (m_arrSelDays.Find(iDay) == -1) { | 974 if (m_arrSelDays.Find(iDay) == -1) { |
| 961 RemoveSelDay(-1, TRUE); | 975 RemoveSelDay(-1, TRUE); |
| 962 if (iDay <= m_arrDates.GetSize()) { | 976 if (iDay <= m_arrDates.GetSize()) { |
| 963 FWL_DATEINFO* pDateInfo = m_arrDates.GetAt(iDay - 1); | 977 FWL_DATEINFO* pDateInfo = m_arrDates.GetAt(iDay - 1); |
| 964 pDateInfo->dwStates |= FWL_ITEMSTATE_MCD_Selected; | 978 pDateInfo->dwStates |= FWL_ITEMSTATE_MCD_Selected; |
| 965 } | 979 } |
| 966 m_arrSelDays.Add(iDay); | 980 m_arrSelDays.Add(iDay); |
| 967 } | 981 } |
| 968 } | 982 } |
| 969 return TRUE; | 983 return TRUE; |
| 970 } | 984 } |
| 971 FX_BOOL CFWL_MonthCalendarImp::JumpToToday() { | 985 |
| 986 FX_BOOL IFWL_MonthCalendar::JumpToToday() { |
| 972 if (m_iYear != m_iCurYear || m_iMonth != m_iCurMonth) { | 987 if (m_iYear != m_iCurYear || m_iMonth != m_iCurMonth) { |
| 973 m_iCurYear = m_iYear; | 988 m_iCurYear = m_iYear; |
| 974 m_iCurMonth = m_iMonth; | 989 m_iCurMonth = m_iMonth; |
| 975 ChangeToMonth(m_iYear, m_iMonth); | 990 ChangeToMonth(m_iYear, m_iMonth); |
| 976 AddSelDay(m_iDay); | 991 AddSelDay(m_iDay); |
| 977 } else { | 992 } else { |
| 978 if (m_arrSelDays.Find(m_iDay) == -1) { | 993 if (m_arrSelDays.Find(m_iDay) == -1) { |
| 979 AddSelDay(m_iDay); | 994 AddSelDay(m_iDay); |
| 980 } | 995 } |
| 981 } | 996 } |
| 982 return TRUE; | 997 return TRUE; |
| 983 } | 998 } |
| 984 void CFWL_MonthCalendarImp::GetHeadText(int32_t iYear, | 999 |
| 985 int32_t iMonth, | 1000 void IFWL_MonthCalendar::GetHeadText(int32_t iYear, |
| 986 CFX_WideString& wsHead) { | 1001 int32_t iMonth, |
| 1002 CFX_WideString& wsHead) { |
| 987 ASSERT(iMonth > 0 && iMonth < 13); | 1003 ASSERT(iMonth > 0 && iMonth < 13); |
| 988 static const FX_WCHAR* const pMonth[] = { | 1004 static const FX_WCHAR* const pMonth[] = { |
| 989 L"January", L"February", L"March", L"April", | 1005 L"January", L"February", L"March", L"April", |
| 990 L"May", L"June", L"July", L"August", | 1006 L"May", L"June", L"July", L"August", |
| 991 L"September", L"October", L"November", L"December"}; | 1007 L"September", L"October", L"November", L"December"}; |
| 992 wsHead.Format(L"%s, %d", pMonth[iMonth - 1], iYear); | 1008 wsHead.Format(L"%s, %d", pMonth[iMonth - 1], iYear); |
| 993 } | 1009 } |
| 994 void CFWL_MonthCalendarImp::GetTodayText(int32_t iYear, | 1010 |
| 995 int32_t iMonth, | 1011 void IFWL_MonthCalendar::GetTodayText(int32_t iYear, |
| 996 int32_t iDay, | 1012 int32_t iMonth, |
| 997 CFX_WideString& wsToday) { | 1013 int32_t iDay, |
| 1014 CFX_WideString& wsToday) { |
| 998 wsToday.Format(L", %d/%d/%d", iDay, iMonth, iYear); | 1015 wsToday.Format(L", %d/%d/%d", iDay, iMonth, iYear); |
| 999 } | 1016 } |
| 1000 int32_t CFWL_MonthCalendarImp::GetDayAtPoint(FX_FLOAT x, FX_FLOAT y) { | 1017 |
| 1018 int32_t IFWL_MonthCalendar::GetDayAtPoint(FX_FLOAT x, FX_FLOAT y) { |
| 1001 int32_t iCount = m_arrDates.GetSize(); | 1019 int32_t iCount = m_arrDates.GetSize(); |
| 1002 for (int32_t i = 0; i < iCount; i++) { | 1020 for (int32_t i = 0; i < iCount; i++) { |
| 1003 FWL_DATEINFO* pDateInfo = m_arrDates.GetAt(i); | 1021 FWL_DATEINFO* pDateInfo = m_arrDates.GetAt(i); |
| 1004 if (pDateInfo->rect.Contains(x, y)) { | 1022 if (pDateInfo->rect.Contains(x, y)) { |
| 1005 return ++i; | 1023 return ++i; |
| 1006 } | 1024 } |
| 1007 } | 1025 } |
| 1008 return -1; | 1026 return -1; |
| 1009 } | 1027 } |
| 1010 FX_BOOL CFWL_MonthCalendarImp::GetDayRect(int32_t iDay, CFX_RectF& rtDay) { | 1028 |
| 1029 FX_BOOL IFWL_MonthCalendar::GetDayRect(int32_t iDay, CFX_RectF& rtDay) { |
| 1011 if (iDay <= 0 || iDay > m_arrDates.GetSize()) { | 1030 if (iDay <= 0 || iDay > m_arrDates.GetSize()) { |
| 1012 return FALSE; | 1031 return FALSE; |
| 1013 } | 1032 } |
| 1014 FWL_DATEINFO* pDateInfo = m_arrDates[iDay - 1]; | 1033 FWL_DATEINFO* pDateInfo = m_arrDates[iDay - 1]; |
| 1015 if (!pDateInfo) | 1034 if (!pDateInfo) |
| 1016 return FALSE; | 1035 return FALSE; |
| 1017 rtDay = pDateInfo->rect; | 1036 rtDay = pDateInfo->rect; |
| 1018 return TRUE; | 1037 return TRUE; |
| 1019 } | 1038 } |
| 1020 | 1039 |
| 1021 CFWL_MonthCalendarImpDelegate::CFWL_MonthCalendarImpDelegate( | 1040 CFWL_MonthCalendarImpDelegate::CFWL_MonthCalendarImpDelegate( |
| 1022 CFWL_MonthCalendarImp* pOwner) | 1041 IFWL_MonthCalendar* pOwner) |
| 1023 : m_pOwner(pOwner) {} | 1042 : m_pOwner(pOwner) {} |
| 1024 | 1043 |
| 1025 void CFWL_MonthCalendarImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { | 1044 void CFWL_MonthCalendarImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { |
| 1026 if (!pMessage) | 1045 if (!pMessage) |
| 1027 return; | 1046 return; |
| 1028 | 1047 |
| 1029 CFWL_MessageType dwMsgCode = pMessage->GetClassID(); | 1048 CFWL_MessageType dwMsgCode = pMessage->GetClassID(); |
| 1030 switch (dwMsgCode) { | 1049 switch (dwMsgCode) { |
| 1031 case CFWL_MessageType::SetFocus: { | 1050 case CFWL_MessageType::SetFocus: { |
| 1032 OnFocusChanged(pMessage, TRUE); | 1051 OnFocusChanged(pMessage, TRUE); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1056 } | 1075 } |
| 1057 case FWL_MouseCommand::Leave: { | 1076 case FWL_MouseCommand::Leave: { |
| 1058 OnMouseLeave(pMouse); | 1077 OnMouseLeave(pMouse); |
| 1059 break; | 1078 break; |
| 1060 } | 1079 } |
| 1061 default: | 1080 default: |
| 1062 break; | 1081 break; |
| 1063 } | 1082 } |
| 1064 break; | 1083 break; |
| 1065 } | 1084 } |
| 1066 default: { | 1085 default: { break; } |
| 1067 break; | |
| 1068 } | |
| 1069 } | 1086 } |
| 1070 CFWL_WidgetImpDelegate::OnProcessMessage(pMessage); | 1087 CFWL_WidgetImpDelegate::OnProcessMessage(pMessage); |
| 1071 } | 1088 } |
| 1072 | 1089 |
| 1073 void CFWL_MonthCalendarImpDelegate::OnDrawWidget(CFX_Graphics* pGraphics, | 1090 void CFWL_MonthCalendarImpDelegate::OnDrawWidget(CFX_Graphics* pGraphics, |
| 1074 const CFX_Matrix* pMatrix) { | 1091 const CFX_Matrix* pMatrix) { |
| 1075 m_pOwner->DrawWidget(pGraphics, pMatrix); | 1092 m_pOwner->DrawWidget(pGraphics, pMatrix); |
| 1076 } | 1093 } |
| 1077 | 1094 |
| 1078 void CFWL_MonthCalendarImpDelegate::OnActivate(CFWL_Message* pMsg) {} | 1095 void CFWL_MonthCalendarImpDelegate::OnActivate(CFWL_Message* pMsg) {} |
| 1079 | 1096 |
| 1080 void CFWL_MonthCalendarImpDelegate::OnFocusChanged(CFWL_Message* pMsg, | 1097 void CFWL_MonthCalendarImpDelegate::OnFocusChanged(CFWL_Message* pMsg, |
| 1081 FX_BOOL bSet) { | 1098 FX_BOOL bSet) { |
| 1082 if (bSet) { | 1099 if (bSet) { |
| 1083 m_pOwner->m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; | 1100 m_pOwner->m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; |
| 1084 } else { | 1101 } else { |
| 1085 m_pOwner->m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; | 1102 m_pOwner->m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; |
| 1086 } | 1103 } |
| 1087 m_pOwner->Repaint(&m_pOwner->m_rtClient); | 1104 m_pOwner->Repaint(&m_pOwner->m_rtClient); |
| 1088 } | 1105 } |
| 1106 |
| 1089 void CFWL_MonthCalendarImpDelegate::OnLButtonDown(CFWL_MsgMouse* pMsg) { | 1107 void CFWL_MonthCalendarImpDelegate::OnLButtonDown(CFWL_MsgMouse* pMsg) { |
| 1090 if (m_pOwner->m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { | 1108 if (m_pOwner->m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { |
| 1091 m_pOwner->m_iLBtnPartStates = CFWL_PartState_Pressed; | 1109 m_pOwner->m_iLBtnPartStates = CFWL_PartState_Pressed; |
| 1092 m_pOwner->PrevMonth(); | 1110 m_pOwner->PrevMonth(); |
| 1093 m_pOwner->Repaint(&m_pOwner->m_rtClient); | 1111 m_pOwner->Repaint(&m_pOwner->m_rtClient); |
| 1094 } else if (m_pOwner->m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { | 1112 } else if (m_pOwner->m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { |
| 1095 m_pOwner->m_iRBtnPartStates |= CFWL_PartState_Pressed; | 1113 m_pOwner->m_iRBtnPartStates |= CFWL_PartState_Pressed; |
| 1096 m_pOwner->NextMonth(); | 1114 m_pOwner->NextMonth(); |
| 1097 m_pOwner->Repaint(&m_pOwner->m_rtClient); | 1115 m_pOwner->Repaint(&m_pOwner->m_rtClient); |
| 1098 } else if (m_pOwner->m_rtToday.Contains(pMsg->m_fx, pMsg->m_fy)) { | 1116 } else if (m_pOwner->m_rtToday.Contains(pMsg->m_fx, pMsg->m_fy)) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1114 FX_BOOL bSelChanged = iCurSel > 0 && iCurSel != iOldSel; | 1132 FX_BOOL bSelChanged = iCurSel > 0 && iCurSel != iOldSel; |
| 1115 if (bSelChanged) { | 1133 if (bSelChanged) { |
| 1116 FWL_DATEINFO* lpDatesInfo = m_pOwner->m_arrDates.GetAt(iCurSel - 1); | 1134 FWL_DATEINFO* lpDatesInfo = m_pOwner->m_arrDates.GetAt(iCurSel - 1); |
| 1117 CFX_RectF rtInvalidate(lpDatesInfo->rect); | 1135 CFX_RectF rtInvalidate(lpDatesInfo->rect); |
| 1118 if (iOldSel > 0) { | 1136 if (iOldSel > 0) { |
| 1119 lpDatesInfo = m_pOwner->m_arrDates.GetAt(iOldSel - 1); | 1137 lpDatesInfo = m_pOwner->m_arrDates.GetAt(iOldSel - 1); |
| 1120 rtInvalidate.Union(lpDatesInfo->rect); | 1138 rtInvalidate.Union(lpDatesInfo->rect); |
| 1121 } | 1139 } |
| 1122 m_pOwner->AddSelDay(iCurSel); | 1140 m_pOwner->AddSelDay(iCurSel); |
| 1123 CFWL_EvtClick wmClick; | 1141 CFWL_EvtClick wmClick; |
| 1124 wmClick.m_pSrcTarget = m_pOwner->m_pInterface; | 1142 wmClick.m_pSrcTarget = m_pOwner; |
| 1125 m_pOwner->DispatchEvent(&wmClick); | 1143 m_pOwner->DispatchEvent(&wmClick); |
| 1126 CFWL_EventMcdDateChanged wmDateSelected; | 1144 CFWL_EventMcdDateChanged wmDateSelected; |
| 1127 wmDateSelected.m_iStartDay = iCurSel; | 1145 wmDateSelected.m_iStartDay = iCurSel; |
| 1128 wmDateSelected.m_iEndDay = iCurSel; | 1146 wmDateSelected.m_iEndDay = iCurSel; |
| 1129 wmDateSelected.m_iOldMonth = m_pOwner->m_iCurMonth; | 1147 wmDateSelected.m_iOldMonth = m_pOwner->m_iCurMonth; |
| 1130 wmDateSelected.m_iOldYear = m_pOwner->m_iCurYear; | 1148 wmDateSelected.m_iOldYear = m_pOwner->m_iCurYear; |
| 1131 wmDateSelected.m_pSrcTarget = m_pOwner->m_pInterface; | 1149 wmDateSelected.m_pSrcTarget = m_pOwner; |
| 1132 m_pOwner->DispatchEvent(&wmDateSelected); | 1150 m_pOwner->DispatchEvent(&wmDateSelected); |
| 1133 m_pOwner->Repaint(&rtInvalidate); | 1151 m_pOwner->Repaint(&rtInvalidate); |
| 1134 } | 1152 } |
| 1135 } | 1153 } |
| 1136 } | 1154 } |
| 1137 } | 1155 } |
| 1156 |
| 1138 void CFWL_MonthCalendarImpDelegate::OnLButtonUp(CFWL_MsgMouse* pMsg) { | 1157 void CFWL_MonthCalendarImpDelegate::OnLButtonUp(CFWL_MsgMouse* pMsg) { |
| 1139 if (m_pOwner->m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { | 1158 if (m_pOwner->m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { |
| 1140 m_pOwner->m_iLBtnPartStates = 0; | 1159 m_pOwner->m_iLBtnPartStates = 0; |
| 1141 m_pOwner->Repaint(&m_pOwner->m_rtLBtn); | 1160 m_pOwner->Repaint(&m_pOwner->m_rtLBtn); |
| 1142 } else if (m_pOwner->m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { | 1161 } else if (m_pOwner->m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { |
| 1143 m_pOwner->m_iRBtnPartStates = 0; | 1162 m_pOwner->m_iRBtnPartStates = 0; |
| 1144 m_pOwner->Repaint(&m_pOwner->m_rtRBtn); | 1163 m_pOwner->Repaint(&m_pOwner->m_rtRBtn); |
| 1145 } else if (m_pOwner->m_rtDates.Contains(pMsg->m_fx, pMsg->m_fy)) { | 1164 } else if (m_pOwner->m_rtDates.Contains(pMsg->m_fx, pMsg->m_fy)) { |
| 1146 int32_t iDay = m_pOwner->GetDayAtPoint(pMsg->m_fx, pMsg->m_fy); | 1165 int32_t iDay = m_pOwner->GetDayAtPoint(pMsg->m_fx, pMsg->m_fy); |
| 1147 if (iDay != -1) { | 1166 if (iDay != -1) { |
| 1148 m_pOwner->AddSelDay(iDay); | 1167 m_pOwner->AddSelDay(iDay); |
| 1149 } | 1168 } |
| 1150 } | 1169 } |
| 1151 } | 1170 } |
| 1171 |
| 1152 void CFWL_MonthCalendarImpDelegate::OnMouseMove(CFWL_MsgMouse* pMsg) { | 1172 void CFWL_MonthCalendarImpDelegate::OnMouseMove(CFWL_MsgMouse* pMsg) { |
| 1153 if (m_pOwner->m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_MultiSelect) { | 1173 if (m_pOwner->m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_MultiSelect) { |
| 1154 return; | 1174 return; |
| 1155 } | 1175 } |
| 1156 FX_BOOL bRepaint = FALSE; | 1176 FX_BOOL bRepaint = FALSE; |
| 1157 CFX_RectF rtInvalidate; | 1177 CFX_RectF rtInvalidate; |
| 1158 rtInvalidate.Set(0, 0, 0, 0); | 1178 rtInvalidate.Set(0, 0, 0, 0); |
| 1159 if (m_pOwner->m_rtDates.Contains(pMsg->m_fx, pMsg->m_fy)) { | 1179 if (m_pOwner->m_rtDates.Contains(pMsg->m_fx, pMsg->m_fy)) { |
| 1160 int32_t iHover = m_pOwner->GetDayAtPoint(pMsg->m_fx, pMsg->m_fy); | 1180 int32_t iHover = m_pOwner->GetDayAtPoint(pMsg->m_fx, pMsg->m_fy); |
| 1161 bRepaint = m_pOwner->m_iHovered != iHover; | 1181 bRepaint = m_pOwner->m_iHovered != iHover; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1178 bRepaint = m_pOwner->m_iHovered > 0; | 1198 bRepaint = m_pOwner->m_iHovered > 0; |
| 1179 if (bRepaint) { | 1199 if (bRepaint) { |
| 1180 m_pOwner->GetDayRect(m_pOwner->m_iHovered, rtInvalidate); | 1200 m_pOwner->GetDayRect(m_pOwner->m_iHovered, rtInvalidate); |
| 1181 } | 1201 } |
| 1182 m_pOwner->m_iHovered = -1; | 1202 m_pOwner->m_iHovered = -1; |
| 1183 } | 1203 } |
| 1184 if (bRepaint && !rtInvalidate.IsEmpty()) { | 1204 if (bRepaint && !rtInvalidate.IsEmpty()) { |
| 1185 m_pOwner->Repaint(&rtInvalidate); | 1205 m_pOwner->Repaint(&rtInvalidate); |
| 1186 } | 1206 } |
| 1187 } | 1207 } |
| 1208 |
| 1188 void CFWL_MonthCalendarImpDelegate::OnMouseLeave(CFWL_MsgMouse* pMsg) { | 1209 void CFWL_MonthCalendarImpDelegate::OnMouseLeave(CFWL_MsgMouse* pMsg) { |
| 1189 if (m_pOwner->m_iHovered > 0) { | 1210 if (m_pOwner->m_iHovered > 0) { |
| 1190 CFX_RectF rtInvalidate; | 1211 CFX_RectF rtInvalidate; |
| 1191 rtInvalidate.Set(0, 0, 0, 0); | 1212 rtInvalidate.Set(0, 0, 0, 0); |
| 1192 m_pOwner->GetDayRect(m_pOwner->m_iHovered, rtInvalidate); | 1213 m_pOwner->GetDayRect(m_pOwner->m_iHovered, rtInvalidate); |
| 1193 m_pOwner->m_iHovered = -1; | 1214 m_pOwner->m_iHovered = -1; |
| 1194 if (!rtInvalidate.IsEmpty()) { | 1215 if (!rtInvalidate.IsEmpty()) { |
| 1195 m_pOwner->Repaint(&rtInvalidate); | 1216 m_pOwner->Repaint(&rtInvalidate); |
| 1196 } | 1217 } |
| 1197 } | 1218 } |
| 1198 } | 1219 } |
| 1199 | 1220 |
| 1200 FWL_DATEINFO::FWL_DATEINFO(int32_t day, | 1221 FWL_DATEINFO::FWL_DATEINFO(int32_t day, |
| 1201 int32_t dayofweek, | 1222 int32_t dayofweek, |
| 1202 uint32_t dwSt, | 1223 uint32_t dwSt, |
| 1203 CFX_RectF rc, | 1224 CFX_RectF rc, |
| 1204 CFX_WideString& wsday) | 1225 CFX_WideString& wsday) |
| 1205 : iDay(day), | 1226 : iDay(day), |
| 1206 iDayOfWeek(dayofweek), | 1227 iDayOfWeek(dayofweek), |
| 1207 dwStates(dwSt), | 1228 dwStates(dwSt), |
| 1208 rect(rc), | 1229 rect(rc), |
| 1209 wsDay(wsday) {} | 1230 wsDay(wsday) {} |
| 1210 | 1231 |
| 1211 FWL_DATEINFO::~FWL_DATEINFO() {} | 1232 FWL_DATEINFO::~FWL_DATEINFO() {} |
| OLD | NEW |