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/core/ifwl_datetimepicker.h" | 7 #include "xfa/fwl/core/ifwl_datetimepicker.h" |
8 | 8 |
9 #include "third_party/base/ptr_util.h" | 9 #include "third_party/base/ptr_util.h" |
10 #include "xfa/fwl/core/cfwl_message.h" | 10 #include "xfa/fwl/core/cfwl_message.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 } // namespace | 25 } // namespace |
26 | 26 |
27 IFWL_DateTimePicker::IFWL_DateTimePicker( | 27 IFWL_DateTimePicker::IFWL_DateTimePicker( |
28 const IFWL_App* app, | 28 const IFWL_App* app, |
29 const CFWL_WidgetImpProperties& properties) | 29 const CFWL_WidgetImpProperties& properties) |
30 : IFWL_Widget(app, properties, nullptr), | 30 : IFWL_Widget(app, properties, nullptr), |
31 m_iBtnState(1), | 31 m_iBtnState(1), |
32 m_iYear(-1), | 32 m_iYear(-1), |
33 m_iMonth(-1), | 33 m_iMonth(-1), |
34 m_iDay(-1), | 34 m_iDay(-1), |
35 m_bLBtnDown(FALSE) { | 35 m_bLBtnDown(false) { |
36 m_rtBtn.Set(0, 0, 0, 0); | 36 m_rtBtn.Set(0, 0, 0, 0); |
37 | 37 |
38 m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat; | 38 m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat; |
39 CFWL_WidgetImpProperties propMonth; | 39 CFWL_WidgetImpProperties propMonth; |
40 propMonth.m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border; | 40 propMonth.m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border; |
41 propMonth.m_dwStates = FWL_WGTSTATE_Invisible; | 41 propMonth.m_dwStates = FWL_WGTSTATE_Invisible; |
42 propMonth.m_pDataProvider = &m_MonthCalendarDP; | 42 propMonth.m_pDataProvider = &m_MonthCalendarDP; |
43 propMonth.m_pParent = this; | 43 propMonth.m_pParent = this; |
44 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider; | 44 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider; |
45 | 45 |
46 m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this)); | 46 m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this)); |
47 CFX_RectF rtMonthCal; | 47 CFX_RectF rtMonthCal; |
48 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE); | 48 m_pMonthCal->GetWidgetRect(rtMonthCal, true); |
49 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height); | 49 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height); |
50 m_pMonthCal->SetWidgetRect(rtMonthCal); | 50 m_pMonthCal->SetWidgetRect(rtMonthCal); |
51 CFWL_WidgetImpProperties propEdit; | 51 CFWL_WidgetImpProperties propEdit; |
52 propEdit.m_pParent = this; | 52 propEdit.m_pParent = this; |
53 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider; | 53 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider; |
54 | 54 |
55 m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this)); | 55 m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this)); |
56 RegisterEventTarget(m_pMonthCal.get()); | 56 RegisterEventTarget(m_pMonthCal.get()); |
57 RegisterEventTarget(m_pEdit.get()); | 57 RegisterEventTarget(m_pEdit.get()); |
58 } | 58 } |
59 | 59 |
60 IFWL_DateTimePicker::~IFWL_DateTimePicker() { | 60 IFWL_DateTimePicker::~IFWL_DateTimePicker() { |
61 UnregisterEventTarget(); | 61 UnregisterEventTarget(); |
62 } | 62 } |
63 | 63 |
64 FWL_Type IFWL_DateTimePicker::GetClassID() const { | 64 FWL_Type IFWL_DateTimePicker::GetClassID() const { |
65 return FWL_Type::DateTimePicker; | 65 return FWL_Type::DateTimePicker; |
66 } | 66 } |
67 | 67 |
68 FWL_Error IFWL_DateTimePicker::GetWidgetRect(CFX_RectF& rect, | 68 FWL_Error IFWL_DateTimePicker::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) { |
69 FX_BOOL bAutoSize) { | |
70 if (m_pWidgetMgr->IsFormDisabled()) { | 69 if (m_pWidgetMgr->IsFormDisabled()) { |
71 return DisForm_GetWidgetRect(rect, bAutoSize); | 70 return DisForm_GetWidgetRect(rect, bAutoSize); |
72 } | 71 } |
73 if (bAutoSize) { | 72 if (bAutoSize) { |
74 rect.Set(0, 0, kDateTimePickerWidth, kDateTimePickerHeight); | 73 rect.Set(0, 0, kDateTimePickerWidth, kDateTimePickerHeight); |
75 IFWL_Widget::GetWidgetRect(rect, TRUE); | 74 IFWL_Widget::GetWidgetRect(rect, true); |
76 } else { | 75 } else { |
77 rect = m_pProperties->m_rtWidget; | 76 rect = m_pProperties->m_rtWidget; |
78 } | 77 } |
79 return FWL_Error::Succeeded; | 78 return FWL_Error::Succeeded; |
80 } | 79 } |
81 | 80 |
82 FWL_Error IFWL_DateTimePicker::Update() { | 81 FWL_Error IFWL_DateTimePicker::Update() { |
83 if (m_pWidgetMgr->IsFormDisabled()) { | 82 if (m_pWidgetMgr->IsFormDisabled()) { |
84 return DisForm_Update(); | 83 return DisForm_Update(); |
85 } | 84 } |
(...skipping 21 matching lines...) Expand all Loading... |
107 if (!(m_pMonthCal->GetThemeProvider())) { | 106 if (!(m_pMonthCal->GetThemeProvider())) { |
108 m_pMonthCal->SetThemeProvider(m_pProperties->m_pThemeProvider); | 107 m_pMonthCal->SetThemeProvider(m_pProperties->m_pThemeProvider); |
109 } | 108 } |
110 if (m_pProperties->m_pDataProvider) { | 109 if (m_pProperties->m_pDataProvider) { |
111 IFWL_DateTimePickerDP* pData = | 110 IFWL_DateTimePickerDP* pData = |
112 static_cast<IFWL_DateTimePickerDP*>(m_pProperties->m_pDataProvider); | 111 static_cast<IFWL_DateTimePickerDP*>(m_pProperties->m_pDataProvider); |
113 pData->GetToday(this, m_MonthCalendarDP.m_iCurYear, | 112 pData->GetToday(this, m_MonthCalendarDP.m_iCurYear, |
114 m_MonthCalendarDP.m_iCurMonth, m_MonthCalendarDP.m_iCurDay); | 113 m_MonthCalendarDP.m_iCurMonth, m_MonthCalendarDP.m_iCurDay); |
115 } | 114 } |
116 CFX_RectF rtMonthCal; | 115 CFX_RectF rtMonthCal; |
117 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE); | 116 m_pMonthCal->GetWidgetRect(rtMonthCal, true); |
118 CFX_RectF rtPopUp; | 117 CFX_RectF rtPopUp; |
119 rtPopUp.Set(rtMonthCal.left, rtMonthCal.top + kDateTimePickerHeight, | 118 rtPopUp.Set(rtMonthCal.left, rtMonthCal.top + kDateTimePickerHeight, |
120 rtMonthCal.width, rtMonthCal.height); | 119 rtMonthCal.width, rtMonthCal.height); |
121 m_pMonthCal->SetWidgetRect(rtPopUp); | 120 m_pMonthCal->SetWidgetRect(rtPopUp); |
122 m_pMonthCal->Update(); | 121 m_pMonthCal->Update(); |
123 return FWL_Error::Succeeded; | 122 return FWL_Error::Succeeded; |
124 } | 123 } |
125 | 124 |
126 int32_t IFWL_DateTimePicker::CountSelRanges() { | 125 int32_t IFWL_DateTimePicker::CountSelRanges() { |
127 return GetDataTimeEdit()->CountSelRanges(); | 126 return GetDataTimeEdit()->CountSelRanges(); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 | 211 |
213 FWL_Error IFWL_DateTimePicker::GetEditText(CFX_WideString& wsText, | 212 FWL_Error IFWL_DateTimePicker::GetEditText(CFX_WideString& wsText, |
214 int32_t nStart, | 213 int32_t nStart, |
215 int32_t nCount) const { | 214 int32_t nCount) const { |
216 if (m_pEdit) { | 215 if (m_pEdit) { |
217 return m_pEdit->GetText(wsText, nStart, nCount); | 216 return m_pEdit->GetText(wsText, nStart, nCount); |
218 } | 217 } |
219 return FWL_Error::Indefinite; | 218 return FWL_Error::Indefinite; |
220 } | 219 } |
221 | 220 |
222 FX_BOOL IFWL_DateTimePicker::CanUndo() { | 221 bool IFWL_DateTimePicker::CanUndo() { |
223 return m_pEdit->CanUndo(); | 222 return m_pEdit->CanUndo(); |
224 } | 223 } |
225 | 224 |
226 FX_BOOL IFWL_DateTimePicker::CanRedo() { | 225 bool IFWL_DateTimePicker::CanRedo() { |
227 return m_pEdit->CanRedo(); | 226 return m_pEdit->CanRedo(); |
228 } | 227 } |
229 | 228 |
230 FX_BOOL IFWL_DateTimePicker::Undo() { | 229 bool IFWL_DateTimePicker::Undo() { |
231 return m_pEdit->Undo(); | 230 return m_pEdit->Undo(); |
232 } | 231 } |
233 | 232 |
234 FX_BOOL IFWL_DateTimePicker::Redo() { | 233 bool IFWL_DateTimePicker::Redo() { |
235 return m_pEdit->Redo(); | 234 return m_pEdit->Redo(); |
236 } | 235 } |
237 | 236 |
238 FX_BOOL IFWL_DateTimePicker::CanCopy() { | 237 bool IFWL_DateTimePicker::CanCopy() { |
239 int32_t nCount = m_pEdit->CountSelRanges(); | 238 int32_t nCount = m_pEdit->CountSelRanges(); |
240 return nCount > 0; | 239 return nCount > 0; |
241 } | 240 } |
242 | 241 |
243 FX_BOOL IFWL_DateTimePicker::CanCut() { | 242 bool IFWL_DateTimePicker::CanCut() { |
244 if (m_pEdit->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly) { | 243 if (m_pEdit->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly) { |
245 return FALSE; | 244 return false; |
246 } | 245 } |
247 int32_t nCount = m_pEdit->CountSelRanges(); | 246 int32_t nCount = m_pEdit->CountSelRanges(); |
248 return nCount > 0; | 247 return nCount > 0; |
249 } | 248 } |
250 | 249 |
251 FX_BOOL IFWL_DateTimePicker::CanSelectAll() { | 250 bool IFWL_DateTimePicker::CanSelectAll() { |
252 return m_pEdit->GetTextLength() > 0; | 251 return m_pEdit->GetTextLength() > 0; |
253 } | 252 } |
254 | 253 |
255 FX_BOOL IFWL_DateTimePicker::Copy(CFX_WideString& wsCopy) { | 254 bool IFWL_DateTimePicker::Copy(CFX_WideString& wsCopy) { |
256 return m_pEdit->Copy(wsCopy); | 255 return m_pEdit->Copy(wsCopy); |
257 } | 256 } |
258 | 257 |
259 FX_BOOL IFWL_DateTimePicker::Cut(CFX_WideString& wsCut) { | 258 bool IFWL_DateTimePicker::Cut(CFX_WideString& wsCut) { |
260 return m_pEdit->Cut(wsCut); | 259 return m_pEdit->Cut(wsCut); |
261 } | 260 } |
262 | 261 |
263 FX_BOOL IFWL_DateTimePicker::Paste(const CFX_WideString& wsPaste) { | 262 bool IFWL_DateTimePicker::Paste(const CFX_WideString& wsPaste) { |
264 return m_pEdit->Paste(wsPaste); | 263 return m_pEdit->Paste(wsPaste); |
265 } | 264 } |
266 | 265 |
267 FX_BOOL IFWL_DateTimePicker::SelectAll() { | 266 bool IFWL_DateTimePicker::SelectAll() { |
268 return m_pEdit->AddSelRange(0) == FWL_Error::Succeeded; | 267 return m_pEdit->AddSelRange(0) == FWL_Error::Succeeded; |
269 } | 268 } |
270 | 269 |
271 FX_BOOL IFWL_DateTimePicker::Delete() { | 270 bool IFWL_DateTimePicker::Delete() { |
272 return m_pEdit->ClearText() == FWL_Error::Succeeded; | 271 return m_pEdit->ClearText() == FWL_Error::Succeeded; |
273 } | 272 } |
274 | 273 |
275 FX_BOOL IFWL_DateTimePicker::DeSelect() { | 274 bool IFWL_DateTimePicker::DeSelect() { |
276 return m_pEdit->ClearSelections() == FWL_Error::Succeeded; | 275 return m_pEdit->ClearSelections() == FWL_Error::Succeeded; |
277 } | 276 } |
278 | 277 |
279 FWL_Error IFWL_DateTimePicker::GetBBox(CFX_RectF& rect) { | 278 FWL_Error IFWL_DateTimePicker::GetBBox(CFX_RectF& rect) { |
280 if (m_pWidgetMgr->IsFormDisabled()) { | 279 if (m_pWidgetMgr->IsFormDisabled()) { |
281 return DisForm_GetBBox(rect); | 280 return DisForm_GetBBox(rect); |
282 } | 281 } |
283 rect = m_pProperties->m_rtWidget; | 282 rect = m_pProperties->m_rtWidget; |
284 if (IsMonthCalendarShowed()) { | 283 if (IsMonthCalendarShowed()) { |
285 CFX_RectF rtMonth; | 284 CFX_RectF rtMonth; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 FWL_STYLEEXT_DTP_ShortDateFormat) { | 327 FWL_STYLEEXT_DTP_ShortDateFormat) { |
329 wsText.Format(L"%d-%d-%d", iYear, iMonth, iDay); | 328 wsText.Format(L"%d-%d-%d", iYear, iMonth, iDay); |
330 } else if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_LongDateFormat) == | 329 } else if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_LongDateFormat) == |
331 FWL_STYLEEXT_DTP_LongDateFormat) { | 330 FWL_STYLEEXT_DTP_LongDateFormat) { |
332 wsText.Format(L"%d Year %d Month %d Day", iYear, iMonth, iDay); | 331 wsText.Format(L"%d Year %d Month %d Day", iYear, iMonth, iDay); |
333 } else if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_TimeFormat) == | 332 } else if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_TimeFormat) == |
334 FWL_STYLEEXT_DTP_TimeFormat) { | 333 FWL_STYLEEXT_DTP_TimeFormat) { |
335 } | 334 } |
336 } | 335 } |
337 | 336 |
338 void IFWL_DateTimePicker::ShowMonthCalendar(FX_BOOL bActivate) { | 337 void IFWL_DateTimePicker::ShowMonthCalendar(bool bActivate) { |
339 if (m_pWidgetMgr->IsFormDisabled()) { | 338 if (m_pWidgetMgr->IsFormDisabled()) { |
340 return DisForm_ShowMonthCalendar(bActivate); | 339 return DisForm_ShowMonthCalendar(bActivate); |
341 } | 340 } |
342 if (IsMonthCalendarShowed() == bActivate) { | 341 if (IsMonthCalendarShowed() == bActivate) { |
343 return; | 342 return; |
344 } | 343 } |
345 if (!m_pForm) { | 344 if (!m_pForm) { |
346 InitProxyForm(); | 345 InitProxyForm(); |
347 } | 346 } |
348 if (bActivate) { | 347 if (bActivate) { |
349 CFX_RectF rtMonth; | 348 CFX_RectF rtMonth; |
350 m_pMonthCal->GetWidgetRect(rtMonth); | 349 m_pMonthCal->GetWidgetRect(rtMonth); |
351 CFX_RectF rtAnchor; | 350 CFX_RectF rtAnchor; |
352 rtAnchor.Set(0, 0, m_pProperties->m_rtWidget.width, | 351 rtAnchor.Set(0, 0, m_pProperties->m_rtWidget.width, |
353 m_pProperties->m_rtWidget.height); | 352 m_pProperties->m_rtWidget.height); |
354 GetPopupPos(0, rtMonth.height, rtAnchor, rtMonth); | 353 GetPopupPos(0, rtMonth.height, rtAnchor, rtMonth); |
355 m_pForm->SetWidgetRect(rtMonth); | 354 m_pForm->SetWidgetRect(rtMonth); |
356 rtMonth.left = rtMonth.top = 0; | 355 rtMonth.left = rtMonth.top = 0; |
357 m_pMonthCal->SetStates(FWL_WGTSTATE_Invisible, !bActivate); | 356 m_pMonthCal->SetStates(FWL_WGTSTATE_Invisible, !bActivate); |
358 m_pMonthCal->SetWidgetRect(rtMonth); | 357 m_pMonthCal->SetWidgetRect(rtMonth); |
359 m_pMonthCal->Update(); | 358 m_pMonthCal->Update(); |
360 m_pForm->DoModal(); | 359 m_pForm->DoModal(); |
361 } else { | 360 } else { |
362 m_pForm->EndDoModal(); | 361 m_pForm->EndDoModal(); |
363 } | 362 } |
364 } | 363 } |
365 | 364 |
366 FX_BOOL IFWL_DateTimePicker::IsMonthCalendarShowed() { | 365 bool IFWL_DateTimePicker::IsMonthCalendarShowed() { |
367 if (m_pWidgetMgr->IsFormDisabled()) { | 366 if (m_pWidgetMgr->IsFormDisabled()) { |
368 return DisForm_IsMonthCalendarShowed(); | 367 return DisForm_IsMonthCalendarShowed(); |
369 } | 368 } |
370 if (!m_pForm) | 369 if (!m_pForm) |
371 return FALSE; | 370 return false; |
372 return !(m_pForm->GetStates() & FWL_WGTSTATE_Invisible); | 371 return !(m_pForm->GetStates() & FWL_WGTSTATE_Invisible); |
373 } | 372 } |
374 | 373 |
375 void IFWL_DateTimePicker::ReSetEditAlignment() { | 374 void IFWL_DateTimePicker::ReSetEditAlignment() { |
376 if (!m_pEdit) | 375 if (!m_pEdit) |
377 return; | 376 return; |
378 uint32_t dwStylExes = m_pProperties->m_dwStyleExes; | 377 uint32_t dwStylExes = m_pProperties->m_dwStyleExes; |
379 uint32_t dwAdd = 0; | 378 uint32_t dwAdd = 0; |
380 switch (dwStylExes & FWL_STYLEEXT_DTP_EditHAlignMask) { | 379 switch (dwStylExes & FWL_STYLEEXT_DTP_EditHAlignMask) { |
381 case FWL_STYLEEXT_DTP_EditHCenter: { | 380 case FWL_STYLEEXT_DTP_EditHCenter: { |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 CFWL_WidgetImpProperties propMonth; | 462 CFWL_WidgetImpProperties propMonth; |
464 propMonth.m_dwStyles = | 463 propMonth.m_dwStyles = |
465 FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border | FWL_WGTSTYLE_EdgeSunken; | 464 FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border | FWL_WGTSTYLE_EdgeSunken; |
466 propMonth.m_dwStates = FWL_WGTSTATE_Invisible; | 465 propMonth.m_dwStates = FWL_WGTSTATE_Invisible; |
467 propMonth.m_pParent = this; | 466 propMonth.m_pParent = this; |
468 propMonth.m_pDataProvider = &m_MonthCalendarDP; | 467 propMonth.m_pDataProvider = &m_MonthCalendarDP; |
469 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider; | 468 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider; |
470 | 469 |
471 m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this)); | 470 m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this)); |
472 CFX_RectF rtMonthCal; | 471 CFX_RectF rtMonthCal; |
473 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE); | 472 m_pMonthCal->GetWidgetRect(rtMonthCal, true); |
474 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height); | 473 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height); |
475 m_pMonthCal->SetWidgetRect(rtMonthCal); | 474 m_pMonthCal->SetWidgetRect(rtMonthCal); |
476 } | 475 } |
477 | 476 |
478 void IFWL_DateTimePicker::DisForm_InitDateTimeEdit() { | 477 void IFWL_DateTimePicker::DisForm_InitDateTimeEdit() { |
479 if (m_pEdit) { | 478 if (m_pEdit) { |
480 return; | 479 return; |
481 } | 480 } |
482 CFWL_WidgetImpProperties propEdit; | 481 CFWL_WidgetImpProperties propEdit; |
483 propEdit.m_pParent = this; | 482 propEdit.m_pParent = this; |
484 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider; | 483 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider; |
485 | 484 |
486 m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this)); | 485 m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this)); |
487 } | 486 } |
488 | 487 |
489 FX_BOOL IFWL_DateTimePicker::DisForm_IsMonthCalendarShowed() { | 488 bool IFWL_DateTimePicker::DisForm_IsMonthCalendarShowed() { |
490 if (!m_pMonthCal) | 489 if (!m_pMonthCal) |
491 return FALSE; | 490 return false; |
492 return !(m_pMonthCal->GetStates() & FWL_WGTSTATE_Invisible); | 491 return !(m_pMonthCal->GetStates() & FWL_WGTSTATE_Invisible); |
493 } | 492 } |
494 | 493 |
495 void IFWL_DateTimePicker::DisForm_ShowMonthCalendar(FX_BOOL bActivate) { | 494 void IFWL_DateTimePicker::DisForm_ShowMonthCalendar(bool bActivate) { |
496 FX_BOOL bShowed = IsMonthCalendarShowed(); | 495 bool bShowed = IsMonthCalendarShowed(); |
497 if (bShowed == bActivate) { | 496 if (bShowed == bActivate) { |
498 return; | 497 return; |
499 } | 498 } |
500 if (bActivate) { | 499 if (bActivate) { |
501 CFX_RectF rtMonthCal; | 500 CFX_RectF rtMonthCal; |
502 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE); | 501 m_pMonthCal->GetWidgetRect(rtMonthCal, true); |
503 FX_FLOAT fPopupMin = rtMonthCal.height; | 502 FX_FLOAT fPopupMin = rtMonthCal.height; |
504 FX_FLOAT fPopupMax = rtMonthCal.height; | 503 FX_FLOAT fPopupMax = rtMonthCal.height; |
505 CFX_RectF rtAnchor(m_pProperties->m_rtWidget); | 504 CFX_RectF rtAnchor(m_pProperties->m_rtWidget); |
506 rtAnchor.width = rtMonthCal.width; | 505 rtAnchor.width = rtMonthCal.width; |
507 rtMonthCal.left = m_rtClient.left; | 506 rtMonthCal.left = m_rtClient.left; |
508 rtMonthCal.top = rtAnchor.Height(); | 507 rtMonthCal.top = rtAnchor.Height(); |
509 GetPopupPos(fPopupMin, fPopupMax, rtAnchor, rtMonthCal); | 508 GetPopupPos(fPopupMin, fPopupMax, rtAnchor, rtMonthCal); |
510 m_pMonthCal->SetWidgetRect(rtMonthCal); | 509 m_pMonthCal->SetWidgetRect(rtMonthCal); |
511 if (m_iYear > 0 && m_iMonth > 0 && m_iDay > 0) { | 510 if (m_iYear > 0 && m_iMonth > 0 && m_iDay > 0) { |
512 m_pMonthCal->SetSelect(m_iYear, m_iMonth, m_iDay); | 511 m_pMonthCal->SetSelect(m_iYear, m_iMonth, m_iDay); |
(...skipping 27 matching lines...) Expand all Loading... |
540 if (rect.Contains(fx, fy)) | 539 if (rect.Contains(fx, fy)) |
541 return FWL_WidgetHit::Client; | 540 return FWL_WidgetHit::Client; |
542 if (IsMonthCalendarShowed()) { | 541 if (IsMonthCalendarShowed()) { |
543 m_pMonthCal->GetWidgetRect(rect); | 542 m_pMonthCal->GetWidgetRect(rect); |
544 if (rect.Contains(fx, fy)) | 543 if (rect.Contains(fx, fy)) |
545 return FWL_WidgetHit::Client; | 544 return FWL_WidgetHit::Client; |
546 } | 545 } |
547 return FWL_WidgetHit::Unknown; | 546 return FWL_WidgetHit::Unknown; |
548 } | 547 } |
549 | 548 |
550 FX_BOOL IFWL_DateTimePicker::DisForm_IsNeedShowButton() { | 549 bool IFWL_DateTimePicker::DisForm_IsNeedShowButton() { |
551 FX_BOOL bFocus = m_pProperties->m_dwStates & FWL_WGTSTATE_Focused || | 550 bool bFocus = m_pProperties->m_dwStates & FWL_WGTSTATE_Focused || |
552 m_pMonthCal->GetStates() & FWL_WGTSTATE_Focused || | 551 m_pMonthCal->GetStates() & FWL_WGTSTATE_Focused || |
553 m_pEdit->GetStates() & FWL_WGTSTATE_Focused; | 552 m_pEdit->GetStates() & FWL_WGTSTATE_Focused; |
554 return bFocus; | 553 return bFocus; |
555 } | 554 } |
556 | 555 |
557 FWL_Error IFWL_DateTimePicker::DisForm_Update() { | 556 FWL_Error IFWL_DateTimePicker::DisForm_Update() { |
558 if (m_iLock) | 557 if (m_iLock) |
559 return FWL_Error::Indefinite; | 558 return FWL_Error::Indefinite; |
560 if (!m_pProperties->m_pThemeProvider) | 559 if (!m_pProperties->m_pThemeProvider) |
561 m_pProperties->m_pThemeProvider = GetAvailableTheme(); | 560 m_pProperties->m_pThemeProvider = GetAvailableTheme(); |
562 | 561 |
563 m_pEdit->SetThemeProvider(m_pProperties->m_pThemeProvider); | 562 m_pEdit->SetThemeProvider(m_pProperties->m_pThemeProvider); |
(...skipping 10 matching lines...) Expand all Loading... |
574 pData->GetToday(this, m_MonthCalendarDP.m_iCurYear, | 573 pData->GetToday(this, m_MonthCalendarDP.m_iCurYear, |
575 m_MonthCalendarDP.m_iCurMonth, m_MonthCalendarDP.m_iCurDay); | 574 m_MonthCalendarDP.m_iCurMonth, m_MonthCalendarDP.m_iCurDay); |
576 } | 575 } |
577 FX_FLOAT* pWidth = static_cast<FX_FLOAT*>( | 576 FX_FLOAT* pWidth = static_cast<FX_FLOAT*>( |
578 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); | 577 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); |
579 if (!pWidth) | 578 if (!pWidth) |
580 return FWL_Error::Succeeded; | 579 return FWL_Error::Succeeded; |
581 | 580 |
582 m_fBtn = *pWidth; | 581 m_fBtn = *pWidth; |
583 CFX_RectF rtMonthCal; | 582 CFX_RectF rtMonthCal; |
584 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE); | 583 m_pMonthCal->GetWidgetRect(rtMonthCal, true); |
585 CFX_RectF rtPopUp; | 584 CFX_RectF rtPopUp; |
586 rtPopUp.Set(rtMonthCal.left, rtMonthCal.top + kDateTimePickerHeight, | 585 rtPopUp.Set(rtMonthCal.left, rtMonthCal.top + kDateTimePickerHeight, |
587 rtMonthCal.width, rtMonthCal.height); | 586 rtMonthCal.width, rtMonthCal.height); |
588 m_pMonthCal->SetWidgetRect(rtPopUp); | 587 m_pMonthCal->SetWidgetRect(rtPopUp); |
589 m_pMonthCal->Update(); | 588 m_pMonthCal->Update(); |
590 return FWL_Error::Succeeded; | 589 return FWL_Error::Succeeded; |
591 } | 590 } |
592 | 591 |
593 FWL_Error IFWL_DateTimePicker::DisForm_GetWidgetRect(CFX_RectF& rect, | 592 FWL_Error IFWL_DateTimePicker::DisForm_GetWidgetRect(CFX_RectF& rect, |
594 FX_BOOL bAutoSize) { | 593 bool bAutoSize) { |
595 rect = m_pProperties->m_rtWidget; | 594 rect = m_pProperties->m_rtWidget; |
596 if (DisForm_IsNeedShowButton()) { | 595 if (DisForm_IsNeedShowButton()) { |
597 rect.width += m_fBtn; | 596 rect.width += m_fBtn; |
598 } | 597 } |
599 return FWL_Error::Succeeded; | 598 return FWL_Error::Succeeded; |
600 } | 599 } |
601 | 600 |
602 FWL_Error IFWL_DateTimePicker::DisForm_GetBBox(CFX_RectF& rect) { | 601 FWL_Error IFWL_DateTimePicker::DisForm_GetBBox(CFX_RectF& rect) { |
603 rect = m_pProperties->m_rtWidget; | 602 rect = m_pProperties->m_rtWidget; |
604 if (DisForm_IsNeedShowButton()) { | 603 if (DisForm_IsNeedShowButton()) { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 } | 639 } |
641 return FWL_Error::Succeeded; | 640 return FWL_Error::Succeeded; |
642 } | 641 } |
643 | 642 |
644 void IFWL_DateTimePicker::OnProcessMessage(CFWL_Message* pMessage) { | 643 void IFWL_DateTimePicker::OnProcessMessage(CFWL_Message* pMessage) { |
645 if (!pMessage) | 644 if (!pMessage) |
646 return; | 645 return; |
647 | 646 |
648 switch (pMessage->GetClassID()) { | 647 switch (pMessage->GetClassID()) { |
649 case CFWL_MessageType::SetFocus: | 648 case CFWL_MessageType::SetFocus: |
650 OnFocusChanged(pMessage, TRUE); | 649 OnFocusChanged(pMessage, true); |
651 break; | 650 break; |
652 case CFWL_MessageType::KillFocus: | 651 case CFWL_MessageType::KillFocus: |
653 OnFocusChanged(pMessage, FALSE); | 652 OnFocusChanged(pMessage, false); |
654 break; | 653 break; |
655 case CFWL_MessageType::Mouse: { | 654 case CFWL_MessageType::Mouse: { |
656 CFWL_MsgMouse* pMouse = static_cast<CFWL_MsgMouse*>(pMessage); | 655 CFWL_MsgMouse* pMouse = static_cast<CFWL_MsgMouse*>(pMessage); |
657 switch (pMouse->m_dwCmd) { | 656 switch (pMouse->m_dwCmd) { |
658 case FWL_MouseCommand::LeftButtonDown: | 657 case FWL_MouseCommand::LeftButtonDown: |
659 OnLButtonDown(pMouse); | 658 OnLButtonDown(pMouse); |
660 break; | 659 break; |
661 case FWL_MouseCommand::LeftButtonUp: | 660 case FWL_MouseCommand::LeftButtonUp: |
662 OnLButtonUp(pMouse); | 661 OnLButtonUp(pMouse); |
663 break; | 662 break; |
(...skipping 20 matching lines...) Expand all Loading... |
684 } | 683 } |
685 | 684 |
686 IFWL_Widget::OnProcessMessage(pMessage); | 685 IFWL_Widget::OnProcessMessage(pMessage); |
687 } | 686 } |
688 | 687 |
689 void IFWL_DateTimePicker::OnDrawWidget(CFX_Graphics* pGraphics, | 688 void IFWL_DateTimePicker::OnDrawWidget(CFX_Graphics* pGraphics, |
690 const CFX_Matrix* pMatrix) { | 689 const CFX_Matrix* pMatrix) { |
691 DrawWidget(pGraphics, pMatrix); | 690 DrawWidget(pGraphics, pMatrix); |
692 } | 691 } |
693 | 692 |
694 void IFWL_DateTimePicker::OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet) { | 693 void IFWL_DateTimePicker::OnFocusChanged(CFWL_Message* pMsg, bool bSet) { |
695 if (!pMsg) | 694 if (!pMsg) |
696 return; | 695 return; |
697 if (m_pWidgetMgr->IsFormDisabled()) | 696 if (m_pWidgetMgr->IsFormDisabled()) |
698 return DisForm_OnFocusChanged(pMsg, bSet); | 697 return DisForm_OnFocusChanged(pMsg, bSet); |
699 | 698 |
700 if (bSet) { | 699 if (bSet) { |
701 m_pProperties->m_dwStates |= (FWL_WGTSTATE_Focused); | 700 m_pProperties->m_dwStates |= (FWL_WGTSTATE_Focused); |
702 Repaint(&m_rtClient); | 701 Repaint(&m_rtClient); |
703 } else { | 702 } else { |
704 m_pProperties->m_dwStates &= ~(FWL_WGTSTATE_Focused); | 703 m_pProperties->m_dwStates &= ~(FWL_WGTSTATE_Focused); |
705 Repaint(&m_rtClient); | 704 Repaint(&m_rtClient); |
706 } | 705 } |
707 if (pMsg->m_pSrcTarget == m_pMonthCal.get() && IsMonthCalendarShowed()) { | 706 if (pMsg->m_pSrcTarget == m_pMonthCal.get() && IsMonthCalendarShowed()) { |
708 ShowMonthCalendar(FALSE); | 707 ShowMonthCalendar(false); |
709 } | 708 } |
710 Repaint(&m_rtClient); | 709 Repaint(&m_rtClient); |
711 } | 710 } |
712 | 711 |
713 void IFWL_DateTimePicker::OnLButtonDown(CFWL_MsgMouse* pMsg) { | 712 void IFWL_DateTimePicker::OnLButtonDown(CFWL_MsgMouse* pMsg) { |
714 if (!pMsg) | 713 if (!pMsg) |
715 return; | 714 return; |
716 if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0) | 715 if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0) |
717 SetFocus(TRUE); | 716 SetFocus(true); |
718 if (m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { | 717 if (m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { |
719 if (IsMonthCalendarShowed()) { | 718 if (IsMonthCalendarShowed()) { |
720 ShowMonthCalendar(FALSE); | 719 ShowMonthCalendar(false); |
721 CFWL_Event_DtpCloseUp ev; | 720 CFWL_Event_DtpCloseUp ev; |
722 DispatchEvent(&ev); | 721 DispatchEvent(&ev); |
723 } else { | 722 } else { |
724 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_TimeFormat)) { | 723 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_TimeFormat)) { |
725 ShowMonthCalendar(TRUE); | 724 ShowMonthCalendar(true); |
726 CFWL_Event_DtpDropDown ev; | 725 CFWL_Event_DtpDropDown ev; |
727 DispatchEvent(&ev); | 726 DispatchEvent(&ev); |
728 } | 727 } |
729 m_bLBtnDown = TRUE; | 728 m_bLBtnDown = true; |
730 Repaint(&m_rtClient); | 729 Repaint(&m_rtClient); |
731 } | 730 } |
732 } | 731 } |
733 } | 732 } |
734 | 733 |
735 void IFWL_DateTimePicker::OnLButtonUp(CFWL_MsgMouse* pMsg) { | 734 void IFWL_DateTimePicker::OnLButtonUp(CFWL_MsgMouse* pMsg) { |
736 if (!pMsg) | 735 if (!pMsg) |
737 return; | 736 return; |
738 | 737 |
739 m_bLBtnDown = FALSE; | 738 m_bLBtnDown = false; |
740 if (m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) | 739 if (m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) |
741 m_iBtnState = CFWL_PartState_Hovered; | 740 m_iBtnState = CFWL_PartState_Hovered; |
742 else | 741 else |
743 m_iBtnState = CFWL_PartState_Normal; | 742 m_iBtnState = CFWL_PartState_Normal; |
744 Repaint(&m_rtBtn); | 743 Repaint(&m_rtBtn); |
745 } | 744 } |
746 | 745 |
747 void IFWL_DateTimePicker::OnMouseMove(CFWL_MsgMouse* pMsg) { | 746 void IFWL_DateTimePicker::OnMouseMove(CFWL_MsgMouse* pMsg) { |
748 if (!m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) | 747 if (!m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) |
749 m_iBtnState = CFWL_PartState_Normal; | 748 m_iBtnState = CFWL_PartState_Normal; |
750 | 749 |
751 Repaint(&m_rtBtn); | 750 Repaint(&m_rtBtn); |
752 } | 751 } |
753 | 752 |
754 void IFWL_DateTimePicker::OnMouseLeave(CFWL_MsgMouse* pMsg) { | 753 void IFWL_DateTimePicker::OnMouseLeave(CFWL_MsgMouse* pMsg) { |
755 if (!pMsg) | 754 if (!pMsg) |
756 return; | 755 return; |
757 m_iBtnState = CFWL_PartState_Normal; | 756 m_iBtnState = CFWL_PartState_Normal; |
758 Repaint(&m_rtBtn); | 757 Repaint(&m_rtBtn); |
759 } | 758 } |
760 | 759 |
761 void IFWL_DateTimePicker::DisForm_OnFocusChanged(CFWL_Message* pMsg, | 760 void IFWL_DateTimePicker::DisForm_OnFocusChanged(CFWL_Message* pMsg, |
762 FX_BOOL bSet) { | 761 bool bSet) { |
763 CFX_RectF rtInvalidate(m_rtBtn); | 762 CFX_RectF rtInvalidate(m_rtBtn); |
764 if (bSet) { | 763 if (bSet) { |
765 m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; | 764 m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; |
766 if (m_pEdit && !(m_pEdit->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly)) { | 765 if (m_pEdit && !(m_pEdit->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly)) { |
767 m_rtBtn.Set(m_pProperties->m_rtWidget.width, 0, m_fBtn, | 766 m_rtBtn.Set(m_pProperties->m_rtWidget.width, 0, m_fBtn, |
768 m_pProperties->m_rtWidget.height - 1); | 767 m_pProperties->m_rtWidget.height - 1); |
769 } | 768 } |
770 rtInvalidate = m_rtBtn; | 769 rtInvalidate = m_rtBtn; |
771 pMsg->m_pDstTarget = m_pEdit.get(); | 770 pMsg->m_pDstTarget = m_pEdit.get(); |
772 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); | 771 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); |
773 } else { | 772 } else { |
774 m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; | 773 m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; |
775 m_rtBtn.Set(0, 0, 0, 0); | 774 m_rtBtn.Set(0, 0, 0, 0); |
776 if (DisForm_IsMonthCalendarShowed()) | 775 if (DisForm_IsMonthCalendarShowed()) |
777 ShowMonthCalendar(FALSE); | 776 ShowMonthCalendar(false); |
778 if (m_pEdit->GetStates() & FWL_WGTSTATE_Focused) { | 777 if (m_pEdit->GetStates() & FWL_WGTSTATE_Focused) { |
779 pMsg->m_pSrcTarget = m_pEdit.get(); | 778 pMsg->m_pSrcTarget = m_pEdit.get(); |
780 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); | 779 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); |
781 } | 780 } |
782 } | 781 } |
783 rtInvalidate.Inflate(2, 2); | 782 rtInvalidate.Inflate(2, 2); |
784 Repaint(&rtInvalidate); | 783 Repaint(&rtInvalidate); |
785 } | 784 } |
786 | 785 |
787 IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::CFWL_MonthCalendarImpDP() { | 786 IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::CFWL_MonthCalendarImpDP() { |
(...skipping 15 matching lines...) Expand all Loading... |
803 | 802 |
804 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurMonth( | 803 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurMonth( |
805 IFWL_Widget* pWidget) { | 804 IFWL_Widget* pWidget) { |
806 return m_iCurMonth; | 805 return m_iCurMonth; |
807 } | 806 } |
808 | 807 |
809 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurYear( | 808 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurYear( |
810 IFWL_Widget* pWidget) { | 809 IFWL_Widget* pWidget) { |
811 return m_iCurYear; | 810 return m_iCurYear; |
812 } | 811 } |
OLD | NEW |