Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(525)

Side by Side Diff: xfa/fwl/core/ifwl_datetimepicker.cpp

Issue 2464703006: Fold IFWL*::{Initialize|Finalize} into constructor/destructor (Closed)
Patch Set: Rebase to master Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fwl/core/ifwl_datetimepicker.h ('k') | xfa/fwl/core/ifwl_edit.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "xfa/fwl/core/cfwl_message.h" 10 #include "xfa/fwl/core/cfwl_message.h"
10 #include "xfa/fwl/core/cfwl_themebackground.h" 11 #include "xfa/fwl/core/cfwl_themebackground.h"
11 #include "xfa/fwl/core/cfwl_widgetmgr.h" 12 #include "xfa/fwl/core/cfwl_widgetmgr.h"
12 #include "xfa/fwl/core/fwl_noteimp.h" 13 #include "xfa/fwl/core/fwl_noteimp.h"
13 #include "xfa/fwl/core/ifwl_datetimecalendar.h" 14 #include "xfa/fwl/core/ifwl_datetimecalendar.h"
14 #include "xfa/fwl/core/ifwl_datetimeedit.h" 15 #include "xfa/fwl/core/ifwl_datetimeedit.h"
15 #include "xfa/fwl/core/ifwl_formproxy.h" 16 #include "xfa/fwl/core/ifwl_formproxy.h"
16 #include "xfa/fwl/core/ifwl_spinbutton.h" 17 #include "xfa/fwl/core/ifwl_spinbutton.h"
17 #include "xfa/fwl/core/ifwl_themeprovider.h" 18 #include "xfa/fwl/core/ifwl_themeprovider.h"
18 19
19 namespace { 20 namespace {
20 21
21 const int kDateTimePickerWidth = 100; 22 const int kDateTimePickerWidth = 100;
22 const int kDateTimePickerHeight = 20; 23 const int kDateTimePickerHeight = 20;
23 24
24 } // namespace 25 } // namespace
25 26
26 IFWL_DateTimePicker::IFWL_DateTimePicker( 27 IFWL_DateTimePicker::IFWL_DateTimePicker(
27 const IFWL_App* app, 28 const IFWL_App* app,
28 const CFWL_WidgetImpProperties& properties) 29 const CFWL_WidgetImpProperties& properties)
29 : IFWL_Widget(app, properties, nullptr), 30 : IFWL_Widget(app, properties, nullptr),
30 m_iBtnState(1), 31 m_iBtnState(1),
31 m_iYear(-1), 32 m_iYear(-1),
32 m_iMonth(-1), 33 m_iMonth(-1),
33 m_iDay(-1), 34 m_iDay(-1),
34 m_bLBtnDown(FALSE) { 35 m_bLBtnDown(FALSE) {
35 m_rtBtn.Set(0, 0, 0, 0); 36 m_rtBtn.Set(0, 0, 0, 0);
36 }
37 37
38 IFWL_DateTimePicker::~IFWL_DateTimePicker() {} 38 SetDelegate(pdfium::MakeUnique<CFWL_DateTimePickerImpDelegate>(this));
39
40 void IFWL_DateTimePicker::Initialize() {
41 IFWL_Widget::Initialize();
42
43 m_pDelegate = new CFWL_DateTimePickerImpDelegate(this);
44 39
45 m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat; 40 m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat;
46 CFWL_WidgetImpProperties propMonth; 41 CFWL_WidgetImpProperties propMonth;
47 propMonth.m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border; 42 propMonth.m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border;
48 propMonth.m_dwStates = FWL_WGTSTATE_Invisible; 43 propMonth.m_dwStates = FWL_WGTSTATE_Invisible;
49 propMonth.m_pDataProvider = &m_MonthCalendarDP; 44 propMonth.m_pDataProvider = &m_MonthCalendarDP;
50 propMonth.m_pParent = this; 45 propMonth.m_pParent = this;
51 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider; 46 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider;
52 47
53 m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this)); 48 m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this));
54 m_pMonthCal->Initialize();
55 CFX_RectF rtMonthCal; 49 CFX_RectF rtMonthCal;
56 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE); 50 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE);
57 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height); 51 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height);
58 m_pMonthCal->SetWidgetRect(rtMonthCal); 52 m_pMonthCal->SetWidgetRect(rtMonthCal);
59 CFWL_WidgetImpProperties propEdit; 53 CFWL_WidgetImpProperties propEdit;
60 propEdit.m_pParent = this; 54 propEdit.m_pParent = this;
61 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider; 55 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider;
62 56
63 m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this)); 57 m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this));
64 m_pEdit->Initialize();
65 RegisterEventTarget(m_pMonthCal.get()); 58 RegisterEventTarget(m_pMonthCal.get());
66 RegisterEventTarget(m_pEdit.get()); 59 RegisterEventTarget(m_pEdit.get());
67 } 60 }
68 61
69 void IFWL_DateTimePicker::Finalize() { 62 IFWL_DateTimePicker::~IFWL_DateTimePicker() {
70 if (m_pEdit)
71 m_pEdit->Finalize();
72 if (m_pMonthCal)
73 m_pMonthCal->Finalize();
74 if (m_pForm)
75 m_pForm->Finalize();
76
77 UnregisterEventTarget(); 63 UnregisterEventTarget();
78 delete m_pDelegate;
79 m_pDelegate = nullptr;
80 IFWL_Widget::Finalize();
81 } 64 }
82 65
83 FWL_Type IFWL_DateTimePicker::GetClassID() const { 66 FWL_Type IFWL_DateTimePicker::GetClassID() const {
84 return FWL_Type::DateTimePicker; 67 return FWL_Type::DateTimePicker;
85 } 68 }
86 69
87 FWL_Error IFWL_DateTimePicker::GetWidgetRect(CFX_RectF& rect, 70 FWL_Error IFWL_DateTimePicker::GetWidgetRect(CFX_RectF& rect,
88 FX_BOOL bAutoSize) { 71 FX_BOOL bAutoSize) {
89 if (m_pWidgetMgr->IsFormDisabled()) { 72 if (m_pWidgetMgr->IsFormDisabled()) {
90 return DisForm_GetWidgetRect(rect, bAutoSize); 73 return DisForm_GetWidgetRect(rect, bAutoSize);
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 FWL_Error IFWL_DateTimePicker::ModifyEditStylesEx(uint32_t dwStylesExAdded, 300 FWL_Error IFWL_DateTimePicker::ModifyEditStylesEx(uint32_t dwStylesExAdded,
318 uint32_t dwStylesExRemoved) { 301 uint32_t dwStylesExRemoved) {
319 return m_pEdit->ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved); 302 return m_pEdit->ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved);
320 } 303 }
321 304
322 void IFWL_DateTimePicker::DrawDropDownButton(CFX_Graphics* pGraphics, 305 void IFWL_DateTimePicker::DrawDropDownButton(CFX_Graphics* pGraphics,
323 IFWL_ThemeProvider* pTheme, 306 IFWL_ThemeProvider* pTheme,
324 const CFX_Matrix* pMatrix) { 307 const CFX_Matrix* pMatrix) {
325 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_Spin) == 308 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_Spin) ==
326 FWL_STYLEEXT_DTP_Spin) { 309 FWL_STYLEEXT_DTP_Spin) {
327 CFWL_WidgetImpProperties prop; 310 return;
328 prop.m_dwStyleExes |= FWL_STYLEEXE_SPB_Vert;
329 prop.m_pParent = this;
330 prop.m_rtWidget = m_rtBtn;
331 IFWL_SpinButton* pSpin = new IFWL_SpinButton(m_pOwnerApp, prop);
332 pSpin->Initialize();
333 } else {
334 CFWL_ThemeBackground param;
335 param.m_pWidget = this;
336 param.m_iPart = CFWL_Part::DropDownButton;
337 param.m_dwStates = m_iBtnState;
338 param.m_pGraphics = pGraphics;
339 param.m_rtPart = m_rtBtn;
340 if (pMatrix) {
341 param.m_matrix.Concat(*pMatrix);
342 }
343 pTheme->DrawBackground(&param);
344 } 311 }
312
313 CFWL_ThemeBackground param;
314 param.m_pWidget = this;
315 param.m_iPart = CFWL_Part::DropDownButton;
316 param.m_dwStates = m_iBtnState;
317 param.m_pGraphics = pGraphics;
318 param.m_rtPart = m_rtBtn;
319 if (pMatrix)
320 param.m_matrix.Concat(*pMatrix);
321
322 pTheme->DrawBackground(&param);
345 } 323 }
346 324
347 void IFWL_DateTimePicker::FormatDateString(int32_t iYear, 325 void IFWL_DateTimePicker::FormatDateString(int32_t iYear,
348 int32_t iMonth, 326 int32_t iMonth,
349 int32_t iDay, 327 int32_t iDay,
350 CFX_WideString& wsText) { 328 CFX_WideString& wsText) {
351 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_ShortDateFormat) == 329 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_ShortDateFormat) ==
352 FWL_STYLEEXT_DTP_ShortDateFormat) { 330 FWL_STYLEEXT_DTP_ShortDateFormat) {
353 wsText.Format(L"%d-%d-%d", iYear, iMonth, iDay); 331 wsText.Format(L"%d-%d-%d", iYear, iMonth, iDay);
354 } else if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_LongDateFormat) == 332 } else if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_LongDateFormat) ==
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 if (m_pForm) 435 if (m_pForm)
458 return; 436 return;
459 if (!m_pMonthCal) 437 if (!m_pMonthCal)
460 return; 438 return;
461 CFWL_WidgetImpProperties propForm; 439 CFWL_WidgetImpProperties propForm;
462 propForm.m_dwStyles = FWL_WGTSTYLE_Popup; 440 propForm.m_dwStyles = FWL_WGTSTYLE_Popup;
463 propForm.m_dwStates = FWL_WGTSTATE_Invisible; 441 propForm.m_dwStates = FWL_WGTSTATE_Invisible;
464 propForm.m_pOwner = this; 442 propForm.m_pOwner = this;
465 443
466 m_pForm.reset(new IFWL_FormProxy(m_pOwnerApp, propForm, m_pMonthCal.get())); 444 m_pForm.reset(new IFWL_FormProxy(m_pOwnerApp, propForm, m_pMonthCal.get()));
467 m_pForm->Initialize();
468 m_pMonthCal->SetParent(m_pForm.get()); 445 m_pMonthCal->SetParent(m_pForm.get());
469 } 446 }
470 447
471 IFWL_DateTimeEdit* IFWL_DateTimePicker::GetDataTimeEdit() { 448 IFWL_DateTimeEdit* IFWL_DateTimePicker::GetDataTimeEdit() {
472 return m_pEdit.get(); 449 return m_pEdit.get();
473 } 450 }
474 451
475 FWL_Error IFWL_DateTimePicker::DisForm_Initialize() { 452 FWL_Error IFWL_DateTimePicker::DisForm_Initialize() {
476 m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat; 453 m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat;
477 DisForm_InitDateTimeCalendar(); 454 DisForm_InitDateTimeCalendar();
478 DisForm_InitDateTimeEdit(); 455 DisForm_InitDateTimeEdit();
479 RegisterEventTarget(m_pMonthCal.get()); 456 RegisterEventTarget(m_pMonthCal.get());
480 RegisterEventTarget(m_pEdit.get()); 457 RegisterEventTarget(m_pEdit.get());
481 return FWL_Error::Succeeded; 458 return FWL_Error::Succeeded;
482 } 459 }
483 460
484 void IFWL_DateTimePicker::DisForm_InitDateTimeCalendar() { 461 void IFWL_DateTimePicker::DisForm_InitDateTimeCalendar() {
485 if (m_pMonthCal) { 462 if (m_pMonthCal) {
486 return; 463 return;
487 } 464 }
488 CFWL_WidgetImpProperties propMonth; 465 CFWL_WidgetImpProperties propMonth;
489 propMonth.m_dwStyles = 466 propMonth.m_dwStyles =
490 FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border | FWL_WGTSTYLE_EdgeSunken; 467 FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border | FWL_WGTSTYLE_EdgeSunken;
491 propMonth.m_dwStates = FWL_WGTSTATE_Invisible; 468 propMonth.m_dwStates = FWL_WGTSTATE_Invisible;
492 propMonth.m_pParent = this; 469 propMonth.m_pParent = this;
493 propMonth.m_pDataProvider = &m_MonthCalendarDP; 470 propMonth.m_pDataProvider = &m_MonthCalendarDP;
494 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider; 471 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider;
495 472
496 m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this)); 473 m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this));
497 m_pMonthCal->Initialize();
498 CFX_RectF rtMonthCal; 474 CFX_RectF rtMonthCal;
499 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE); 475 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE);
500 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height); 476 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height);
501 m_pMonthCal->SetWidgetRect(rtMonthCal); 477 m_pMonthCal->SetWidgetRect(rtMonthCal);
502 } 478 }
503 479
504 void IFWL_DateTimePicker::DisForm_InitDateTimeEdit() { 480 void IFWL_DateTimePicker::DisForm_InitDateTimeEdit() {
505 if (m_pEdit) { 481 if (m_pEdit) {
506 return; 482 return;
507 } 483 }
508 CFWL_WidgetImpProperties propEdit; 484 CFWL_WidgetImpProperties propEdit;
509 propEdit.m_pParent = this; 485 propEdit.m_pParent = this;
510 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider; 486 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider;
511 487
512 m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this)); 488 m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this));
513 m_pEdit->Initialize();
514 } 489 }
515 490
516 FX_BOOL IFWL_DateTimePicker::DisForm_IsMonthCalendarShowed() { 491 FX_BOOL IFWL_DateTimePicker::DisForm_IsMonthCalendarShowed() {
517 if (!m_pMonthCal) 492 if (!m_pMonthCal)
518 return FALSE; 493 return FALSE;
519 return !(m_pMonthCal->GetStates() & FWL_WGTSTATE_Invisible); 494 return !(m_pMonthCal->GetStates() & FWL_WGTSTATE_Invisible);
520 } 495 }
521 496
522 void IFWL_DateTimePicker::DisForm_ShowMonthCalendar(FX_BOOL bActivate) { 497 void IFWL_DateTimePicker::DisForm_ShowMonthCalendar(FX_BOOL bActivate) {
523 FX_BOOL bShowed = IsMonthCalendarShowed(); 498 FX_BOOL bShowed = IsMonthCalendarShowed();
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 824
850 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurMonth( 825 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurMonth(
851 IFWL_Widget* pWidget) { 826 IFWL_Widget* pWidget) {
852 return m_iCurMonth; 827 return m_iCurMonth;
853 } 828 }
854 829
855 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurYear( 830 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurYear(
856 IFWL_Widget* pWidget) { 831 IFWL_Widget* pWidget) {
857 return m_iCurYear; 832 return m_iCurYear;
858 } 833 }
OLDNEW
« no previous file with comments | « xfa/fwl/core/ifwl_datetimepicker.h ('k') | xfa/fwl/core/ifwl_edit.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698