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

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

Issue 2436103002: Remove FWL globals. (Closed)
Patch Set: fix mac Created 4 years, 2 months 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
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 "xfa/fwl/core/cfwl_message.h" 9 #include "xfa/fwl/core/cfwl_message.h"
10 #include "xfa/fwl/core/cfwl_themebackground.h" 10 #include "xfa/fwl/core/cfwl_themebackground.h"
11 #include "xfa/fwl/core/cfwl_widgetmgr.h" 11 #include "xfa/fwl/core/cfwl_widgetmgr.h"
12 #include "xfa/fwl/core/fwl_noteimp.h" 12 #include "xfa/fwl/core/fwl_noteimp.h"
13 #include "xfa/fwl/core/ifwl_datetimecalendar.h" 13 #include "xfa/fwl/core/ifwl_datetimecalendar.h"
14 #include "xfa/fwl/core/ifwl_datetimeedit.h" 14 #include "xfa/fwl/core/ifwl_datetimeedit.h"
15 #include "xfa/fwl/core/ifwl_formproxy.h" 15 #include "xfa/fwl/core/ifwl_formproxy.h"
16 #include "xfa/fwl/core/ifwl_spinbutton.h" 16 #include "xfa/fwl/core/ifwl_spinbutton.h"
17 #include "xfa/fwl/core/ifwl_themeprovider.h" 17 #include "xfa/fwl/core/ifwl_themeprovider.h"
18 18
19 namespace { 19 namespace {
20 20
21 const int kDateTimePickerWidth = 100; 21 const int kDateTimePickerWidth = 100;
22 const int kDateTimePickerHeight = 20; 22 const int kDateTimePickerHeight = 20;
23 23
24 } // namespace 24 } // namespace
25 25
26 IFWL_DateTimePicker::IFWL_DateTimePicker( 26 IFWL_DateTimePicker::IFWL_DateTimePicker(
27 const IFWL_App* app,
27 const CFWL_WidgetImpProperties& properties) 28 const CFWL_WidgetImpProperties& properties)
28 : IFWL_Widget(properties, nullptr), 29 : IFWL_Widget(app, properties, nullptr),
29 m_iBtnState(1), 30 m_iBtnState(1),
30 m_iYear(-1), 31 m_iYear(-1),
31 m_iMonth(-1), 32 m_iMonth(-1),
32 m_iDay(-1), 33 m_iDay(-1),
33 m_bLBtnDown(FALSE) { 34 m_bLBtnDown(FALSE) {
34 m_rtBtn.Set(0, 0, 0, 0); 35 m_rtBtn.Set(0, 0, 0, 0);
35 } 36 }
36 37
37 IFWL_DateTimePicker::~IFWL_DateTimePicker() {} 38 IFWL_DateTimePicker::~IFWL_DateTimePicker() {}
38 39
39 FWL_Type IFWL_DateTimePicker::GetClassID() const { 40 void IFWL_DateTimePicker::Initialize() {
40 return FWL_Type::DateTimePicker; 41 IFWL_Widget::Initialize();
41 }
42
43 FWL_Error IFWL_DateTimePicker::Initialize() {
44 if (IFWL_Widget::Initialize() != FWL_Error::Succeeded)
45 return FWL_Error::Indefinite;
46 42
47 m_pDelegate = new CFWL_DateTimePickerImpDelegate(this); 43 m_pDelegate = new CFWL_DateTimePickerImpDelegate(this);
44
48 m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat; 45 m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat;
49 CFWL_WidgetImpProperties propMonth; 46 CFWL_WidgetImpProperties propMonth;
50 propMonth.m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border; 47 propMonth.m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border;
51 propMonth.m_dwStates = FWL_WGTSTATE_Invisible; 48 propMonth.m_dwStates = FWL_WGTSTATE_Invisible;
52 propMonth.m_pDataProvider = &m_MonthCalendarDP; 49 propMonth.m_pDataProvider = &m_MonthCalendarDP;
53 propMonth.m_pParent = this; 50 propMonth.m_pParent = this;
54 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider; 51 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider;
55 52
56 m_pMonthCal.reset(new IFWL_DateTimeCalendar(propMonth, this)); 53 m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this));
57 m_pMonthCal->Initialize(); 54 m_pMonthCal->Initialize();
58 CFX_RectF rtMonthCal; 55 CFX_RectF rtMonthCal;
59 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE); 56 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE);
60 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height); 57 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height);
61 m_pMonthCal->SetWidgetRect(rtMonthCal); 58 m_pMonthCal->SetWidgetRect(rtMonthCal);
62 CFWL_WidgetImpProperties propEdit; 59 CFWL_WidgetImpProperties propEdit;
63 propEdit.m_pParent = this; 60 propEdit.m_pParent = this;
64 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider; 61 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider;
65 62
66 m_pEdit.reset(new IFWL_DateTimeEdit(propEdit, this)); 63 m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this));
67 m_pEdit->Initialize(); 64 m_pEdit->Initialize();
68 RegisterEventTarget(m_pMonthCal.get()); 65 RegisterEventTarget(m_pMonthCal.get());
69 RegisterEventTarget(m_pEdit.get()); 66 RegisterEventTarget(m_pEdit.get());
70 return FWL_Error::Succeeded;
71 } 67 }
72 68
73 void IFWL_DateTimePicker::Finalize() { 69 void IFWL_DateTimePicker::Finalize() {
74 if (m_pEdit) 70 if (m_pEdit)
75 m_pEdit->Finalize(); 71 m_pEdit->Finalize();
76 if (m_pMonthCal) 72 if (m_pMonthCal)
77 m_pMonthCal->Finalize(); 73 m_pMonthCal->Finalize();
78 if (m_pForm) 74 if (m_pForm)
79 m_pForm->Finalize(); 75 m_pForm->Finalize();
80 76
81 UnregisterEventTarget(); 77 UnregisterEventTarget();
82 delete m_pDelegate; 78 delete m_pDelegate;
83 m_pDelegate = nullptr; 79 m_pDelegate = nullptr;
84 IFWL_Widget::Finalize(); 80 IFWL_Widget::Finalize();
85 } 81 }
86 82
83 FWL_Type IFWL_DateTimePicker::GetClassID() const {
84 return FWL_Type::DateTimePicker;
85 }
86
87 FWL_Error IFWL_DateTimePicker::GetWidgetRect(CFX_RectF& rect, 87 FWL_Error IFWL_DateTimePicker::GetWidgetRect(CFX_RectF& rect,
88 FX_BOOL bAutoSize) { 88 FX_BOOL bAutoSize) {
89 if (m_pWidgetMgr->IsFormDisabled()) { 89 if (m_pWidgetMgr->IsFormDisabled()) {
90 return DisForm_GetWidgetRect(rect, bAutoSize); 90 return DisForm_GetWidgetRect(rect, bAutoSize);
91 } 91 }
92 if (bAutoSize) { 92 if (bAutoSize) {
93 rect.Set(0, 0, kDateTimePickerWidth, kDateTimePickerHeight); 93 rect.Set(0, 0, kDateTimePickerWidth, kDateTimePickerHeight);
94 IFWL_Widget::GetWidgetRect(rect, TRUE); 94 IFWL_Widget::GetWidgetRect(rect, TRUE);
95 } else { 95 } else {
96 rect = m_pProperties->m_rtWidget; 96 rect = m_pProperties->m_rtWidget;
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 321
322 void IFWL_DateTimePicker::DrawDropDownButton(CFX_Graphics* pGraphics, 322 void IFWL_DateTimePicker::DrawDropDownButton(CFX_Graphics* pGraphics,
323 IFWL_ThemeProvider* pTheme, 323 IFWL_ThemeProvider* pTheme,
324 const CFX_Matrix* pMatrix) { 324 const CFX_Matrix* pMatrix) {
325 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_Spin) == 325 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_Spin) ==
326 FWL_STYLEEXT_DTP_Spin) { 326 FWL_STYLEEXT_DTP_Spin) {
327 CFWL_WidgetImpProperties prop; 327 CFWL_WidgetImpProperties prop;
328 prop.m_dwStyleExes |= FWL_STYLEEXE_SPB_Vert; 328 prop.m_dwStyleExes |= FWL_STYLEEXE_SPB_Vert;
329 prop.m_pParent = this; 329 prop.m_pParent = this;
330 prop.m_rtWidget = m_rtBtn; 330 prop.m_rtWidget = m_rtBtn;
331 IFWL_SpinButton* pSpin = new IFWL_SpinButton(prop); 331 IFWL_SpinButton* pSpin = new IFWL_SpinButton(m_pOwnerApp, prop);
332 pSpin->Initialize(); 332 pSpin->Initialize();
333 } else { 333 } else {
334 CFWL_ThemeBackground param; 334 CFWL_ThemeBackground param;
335 param.m_pWidget = this; 335 param.m_pWidget = this;
336 param.m_iPart = CFWL_Part::DropDownButton; 336 param.m_iPart = CFWL_Part::DropDownButton;
337 param.m_dwStates = m_iBtnState; 337 param.m_dwStates = m_iBtnState;
338 param.m_pGraphics = pGraphics; 338 param.m_pGraphics = pGraphics;
339 param.m_rtPart = m_rtBtn; 339 param.m_rtPart = m_rtBtn;
340 if (pMatrix) { 340 if (pMatrix) {
341 param.m_matrix.Concat(*pMatrix); 341 param.m_matrix.Concat(*pMatrix);
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 void IFWL_DateTimePicker::InitProxyForm() { 456 void IFWL_DateTimePicker::InitProxyForm() {
457 if (m_pForm) 457 if (m_pForm)
458 return; 458 return;
459 if (!m_pMonthCal) 459 if (!m_pMonthCal)
460 return; 460 return;
461 CFWL_WidgetImpProperties propForm; 461 CFWL_WidgetImpProperties propForm;
462 propForm.m_dwStyles = FWL_WGTSTYLE_Popup; 462 propForm.m_dwStyles = FWL_WGTSTYLE_Popup;
463 propForm.m_dwStates = FWL_WGTSTATE_Invisible; 463 propForm.m_dwStates = FWL_WGTSTATE_Invisible;
464 propForm.m_pOwner = this; 464 propForm.m_pOwner = this;
465 465
466 m_pForm.reset(new IFWL_FormProxy(propForm, m_pMonthCal.get())); 466 m_pForm.reset(new IFWL_FormProxy(m_pOwnerApp, propForm, m_pMonthCal.get()));
467 m_pForm->Initialize(); 467 m_pForm->Initialize();
468 m_pMonthCal->SetParent(m_pForm.get()); 468 m_pMonthCal->SetParent(m_pForm.get());
469 } 469 }
470 470
471 IFWL_DateTimeEdit* IFWL_DateTimePicker::GetDataTimeEdit() { 471 IFWL_DateTimeEdit* IFWL_DateTimePicker::GetDataTimeEdit() {
472 return m_pEdit.get(); 472 return m_pEdit.get();
473 } 473 }
474 474
475 FWL_Error IFWL_DateTimePicker::DisForm_Initialize() { 475 FWL_Error IFWL_DateTimePicker::DisForm_Initialize() {
476 m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat; 476 m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat;
477 DisForm_InitDateTimeCalendar(); 477 DisForm_InitDateTimeCalendar();
478 DisForm_InitDateTimeEdit(); 478 DisForm_InitDateTimeEdit();
479 RegisterEventTarget(m_pMonthCal.get()); 479 RegisterEventTarget(m_pMonthCal.get());
480 RegisterEventTarget(m_pEdit.get()); 480 RegisterEventTarget(m_pEdit.get());
481 return FWL_Error::Succeeded; 481 return FWL_Error::Succeeded;
482 } 482 }
483 483
484 void IFWL_DateTimePicker::DisForm_InitDateTimeCalendar() { 484 void IFWL_DateTimePicker::DisForm_InitDateTimeCalendar() {
485 if (m_pMonthCal) { 485 if (m_pMonthCal) {
486 return; 486 return;
487 } 487 }
488 CFWL_WidgetImpProperties propMonth; 488 CFWL_WidgetImpProperties propMonth;
489 propMonth.m_dwStyles = 489 propMonth.m_dwStyles =
490 FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border | FWL_WGTSTYLE_EdgeSunken; 490 FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border | FWL_WGTSTYLE_EdgeSunken;
491 propMonth.m_dwStates = FWL_WGTSTATE_Invisible; 491 propMonth.m_dwStates = FWL_WGTSTATE_Invisible;
492 propMonth.m_pParent = this; 492 propMonth.m_pParent = this;
493 propMonth.m_pDataProvider = &m_MonthCalendarDP; 493 propMonth.m_pDataProvider = &m_MonthCalendarDP;
494 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider; 494 propMonth.m_pThemeProvider = m_pProperties->m_pThemeProvider;
495 495
496 m_pMonthCal.reset(new IFWL_DateTimeCalendar(propMonth, this)); 496 m_pMonthCal.reset(new IFWL_DateTimeCalendar(m_pOwnerApp, propMonth, this));
497 m_pMonthCal->Initialize(); 497 m_pMonthCal->Initialize();
498 CFX_RectF rtMonthCal; 498 CFX_RectF rtMonthCal;
499 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE); 499 m_pMonthCal->GetWidgetRect(rtMonthCal, TRUE);
500 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height); 500 rtMonthCal.Set(0, 0, rtMonthCal.width, rtMonthCal.height);
501 m_pMonthCal->SetWidgetRect(rtMonthCal); 501 m_pMonthCal->SetWidgetRect(rtMonthCal);
502 } 502 }
503 503
504 void IFWL_DateTimePicker::DisForm_InitDateTimeEdit() { 504 void IFWL_DateTimePicker::DisForm_InitDateTimeEdit() {
505 if (m_pEdit) { 505 if (m_pEdit) {
506 return; 506 return;
507 } 507 }
508 CFWL_WidgetImpProperties propEdit; 508 CFWL_WidgetImpProperties propEdit;
509 propEdit.m_pParent = this; 509 propEdit.m_pParent = this;
510 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider; 510 propEdit.m_pThemeProvider = m_pProperties->m_pThemeProvider;
511 511
512 m_pEdit.reset(new IFWL_DateTimeEdit(propEdit, this)); 512 m_pEdit.reset(new IFWL_DateTimeEdit(m_pOwnerApp, propEdit, this));
513 m_pEdit->Initialize(); 513 m_pEdit->Initialize();
514 } 514 }
515 515
516 FX_BOOL IFWL_DateTimePicker::DisForm_IsMonthCalendarShowed() { 516 FX_BOOL IFWL_DateTimePicker::DisForm_IsMonthCalendarShowed() {
517 if (!m_pMonthCal) 517 if (!m_pMonthCal)
518 return FALSE; 518 return FALSE;
519 return !(m_pMonthCal->GetStates() & FWL_WGTSTATE_Invisible); 519 return !(m_pMonthCal->GetStates() & FWL_WGTSTATE_Invisible);
520 } 520 }
521 521
522 void IFWL_DateTimePicker::DisForm_ShowMonthCalendar(FX_BOOL bActivate) { 522 void IFWL_DateTimePicker::DisForm_ShowMonthCalendar(FX_BOOL bActivate) {
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 854
855 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurMonth( 855 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurMonth(
856 IFWL_Widget* pWidget) { 856 IFWL_Widget* pWidget) {
857 return m_iCurMonth; 857 return m_iCurMonth;
858 } 858 }
859 859
860 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurYear( 860 int32_t IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::GetCurYear(
861 IFWL_Widget* pWidget) { 861 IFWL_Widget* pWidget) {
862 return m_iCurYear; 862 return m_iCurYear;
863 } 863 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698