1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #include "xfa/fwl/lightwidget/cfwl_datetimepicker.h"
8 
9 #include <memory>
10 
11 #include "xfa/fwl/basewidget/ifwl_datetimepicker.h"
12 #include "xfa/fwl/core/fwl_error.h"
13 #include "xfa/fwl/core/ifwl_widget.h"
14 
Create()15 CFWL_DateTimePicker* CFWL_DateTimePicker::Create() {
16   return new CFWL_DateTimePicker;
17 }
18 
Initialize(const CFWL_WidgetProperties * pProperties)19 FWL_Error CFWL_DateTimePicker::Initialize(
20     const CFWL_WidgetProperties* pProperties) {
21   if (m_pIface)
22     return FWL_Error::Indefinite;
23   if (pProperties) {
24     *m_pProperties = *pProperties;
25   }
26   std::unique_ptr<IFWL_DateTimePicker> pDateTimePicker(
27       IFWL_DateTimePicker::Create(
28           m_pProperties->MakeWidgetImpProperties(&m_DateTimePickerDP),
29           nullptr));
30   FWL_Error ret = pDateTimePicker->Initialize();
31   if (ret != FWL_Error::Succeeded) {
32     return ret;
33   }
34   m_pIface = pDateTimePicker.release();
35   CFWL_Widget::Initialize();
36   return FWL_Error::Succeeded;
37 }
38 
SetToday(int32_t iYear,int32_t iMonth,int32_t iDay)39 FWL_Error CFWL_DateTimePicker::SetToday(int32_t iYear,
40                                         int32_t iMonth,
41                                         int32_t iDay) {
42   m_DateTimePickerDP.m_iYear = iYear;
43   m_DateTimePickerDP.m_iMonth = iMonth;
44   m_DateTimePickerDP.m_iDay = iDay;
45   return FWL_Error::Succeeded;
46 }
47 
CountSelRanges()48 int32_t CFWL_DateTimePicker::CountSelRanges() {
49   return static_cast<IFWL_DateTimePicker*>(m_pIface)->CountSelRanges();
50 }
51 
GetSelRange(int32_t nIndex,int32_t & nStart)52 int32_t CFWL_DateTimePicker::GetSelRange(int32_t nIndex, int32_t& nStart) {
53   return static_cast<IFWL_DateTimePicker*>(m_pIface)
54       ->GetSelRange(nIndex, nStart);
55 }
56 
GetEditText(CFX_WideString & wsText)57 FWL_Error CFWL_DateTimePicker::GetEditText(CFX_WideString& wsText) {
58   return static_cast<IFWL_DateTimePicker*>(m_pIface)->GetEditText(wsText);
59 }
60 
SetEditText(const CFX_WideString & wsText)61 FWL_Error CFWL_DateTimePicker::SetEditText(const CFX_WideString& wsText) {
62   return static_cast<IFWL_DateTimePicker*>(m_pIface)->SetEditText(wsText);
63 }
64 
GetCurSel(int32_t & iYear,int32_t & iMonth,int32_t & iDay)65 FWL_Error CFWL_DateTimePicker::GetCurSel(int32_t& iYear,
66                                          int32_t& iMonth,
67                                          int32_t& iDay) {
68   return static_cast<IFWL_DateTimePicker*>(m_pIface)
69       ->GetCurSel(iYear, iMonth, iDay);
70 }
71 
SetCurSel(int32_t iYear,int32_t iMonth,int32_t iDay)72 FWL_Error CFWL_DateTimePicker::SetCurSel(int32_t iYear,
73                                          int32_t iMonth,
74                                          int32_t iDay) {
75   return static_cast<IFWL_DateTimePicker*>(m_pIface)
76       ->SetCurSel(iYear, iMonth, iDay);
77 }
78 
CFWL_DateTimePicker()79 CFWL_DateTimePicker::CFWL_DateTimePicker() {}
80 
~CFWL_DateTimePicker()81 CFWL_DateTimePicker::~CFWL_DateTimePicker() {}
82 
CFWL_DateTimePickerDP()83 CFWL_DateTimePicker::CFWL_DateTimePickerDP::CFWL_DateTimePickerDP() {
84   m_iYear = 2011;
85   m_iMonth = 1;
86   m_iDay = 1;
87 }
88 
GetCaption(IFWL_Widget * pWidget,CFX_WideString & wsCaption)89 FWL_Error CFWL_DateTimePicker::CFWL_DateTimePickerDP::GetCaption(
90     IFWL_Widget* pWidget,
91     CFX_WideString& wsCaption) {
92   wsCaption = m_wsData;
93   return FWL_Error::Succeeded;
94 }
95 
GetToday(IFWL_Widget * pWidget,int32_t & iYear,int32_t & iMonth,int32_t & iDay)96 FWL_Error CFWL_DateTimePicker::CFWL_DateTimePickerDP::GetToday(
97     IFWL_Widget* pWidget,
98     int32_t& iYear,
99     int32_t& iMonth,
100     int32_t& iDay) {
101   iYear = m_iYear;
102   iMonth = m_iMonth;
103   iDay = m_iDay;
104   return FWL_Error::Succeeded;
105 }
106 
CanUndo()107 FX_BOOL CFWL_DateTimePicker::CanUndo() {
108   return static_cast<IFWL_DateTimePicker*>(m_pIface)->CanUndo();
109 }
110 
CanRedo()111 FX_BOOL CFWL_DateTimePicker::CanRedo() {
112   return static_cast<IFWL_DateTimePicker*>(m_pIface)->CanRedo();
113 }
114 
Undo()115 FX_BOOL CFWL_DateTimePicker::Undo() {
116   return static_cast<IFWL_DateTimePicker*>(m_pIface)->Undo();
117 }
118 
Redo()119 FX_BOOL CFWL_DateTimePicker::Redo() {
120   return static_cast<IFWL_DateTimePicker*>(m_pIface)->Redo();
121 }
122 
CanCopy()123 FX_BOOL CFWL_DateTimePicker::CanCopy() {
124   return static_cast<IFWL_DateTimePicker*>(m_pIface)->CanCopy();
125 }
126 
CanCut()127 FX_BOOL CFWL_DateTimePicker::CanCut() {
128   return static_cast<IFWL_DateTimePicker*>(m_pIface)->CanCut();
129 }
130 
CanSelectAll()131 FX_BOOL CFWL_DateTimePicker::CanSelectAll() {
132   return static_cast<IFWL_DateTimePicker*>(m_pIface)->CanSelectAll();
133 }
134 
Copy(CFX_WideString & wsCopy)135 FX_BOOL CFWL_DateTimePicker::Copy(CFX_WideString& wsCopy) {
136   return static_cast<IFWL_DateTimePicker*>(m_pIface)->Copy(wsCopy);
137 }
138 
Cut(CFX_WideString & wsCut)139 FX_BOOL CFWL_DateTimePicker::Cut(CFX_WideString& wsCut) {
140   return static_cast<IFWL_DateTimePicker*>(m_pIface)->Copy(wsCut);
141 }
142 
Paste(const CFX_WideString & wsPaste)143 FX_BOOL CFWL_DateTimePicker::Paste(const CFX_WideString& wsPaste) {
144   return static_cast<IFWL_DateTimePicker*>(m_pIface)->Paste(wsPaste);
145 }
146 
SelectAll()147 FX_BOOL CFWL_DateTimePicker::SelectAll() {
148   return static_cast<IFWL_DateTimePicker*>(m_pIface)->SelectAll();
149 }
150 
Delete()151 FX_BOOL CFWL_DateTimePicker::Delete() {
152   return static_cast<IFWL_DateTimePicker*>(m_pIface)->Delete();
153 }
154 
DeSelect()155 FX_BOOL CFWL_DateTimePicker::DeSelect() {
156   return static_cast<IFWL_DateTimePicker*>(m_pIface)->DeSelect();
157 }
158 
GetBBox(CFX_RectF & rect)159 FWL_Error CFWL_DateTimePicker::GetBBox(CFX_RectF& rect) {
160   return static_cast<IFWL_DateTimePicker*>(m_pIface)->GetBBox(rect);
161 }
162 
SetEditLimit(int32_t nLimit)163 FWL_Error CFWL_DateTimePicker::SetEditLimit(int32_t nLimit) {
164   return static_cast<IFWL_DateTimePicker*>(m_pIface)->SetEditLimit(nLimit);
165 }
166 
ModifyEditStylesEx(uint32_t dwStylesExAdded,uint32_t dwStylesExRemoved)167 FWL_Error CFWL_DateTimePicker::ModifyEditStylesEx(uint32_t dwStylesExAdded,
168                                                   uint32_t dwStylesExRemoved) {
169   return static_cast<IFWL_DateTimePicker*>(m_pIface)
170       ->ModifyEditStylesEx(dwStylesExAdded, dwStylesExRemoved);
171 }
172