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/lightwidget/cfwl_edit.h" | 7 #include "xfa/fwl/lightwidget/cfwl_edit.h" |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "xfa/fwl/basewidget/ifwl_edit.h" | 12 IFWL_Edit* CFWL_Edit::GetWidget() { |
| 13 return static_cast<IFWL_Edit*>(m_pIface.get()); |
| 14 } |
| 15 |
| 16 const IFWL_Edit* CFWL_Edit::GetWidget() const { |
| 17 return static_cast<IFWL_Edit*>(m_pIface.get()); |
| 18 } |
13 | 19 |
14 CFWL_Edit* CFWL_Edit::Create() { | 20 CFWL_Edit* CFWL_Edit::Create() { |
15 return new CFWL_Edit; | 21 return new CFWL_Edit; |
16 } | 22 } |
17 | 23 |
18 FWL_Error CFWL_Edit::Initialize(const CFWL_WidgetProperties* pProperties) { | 24 FWL_Error CFWL_Edit::Initialize(const CFWL_WidgetProperties* pProperties) { |
19 if (m_pIface) | 25 if (m_pIface) |
20 return FWL_Error::Indefinite; | 26 return FWL_Error::Indefinite; |
21 if (pProperties) { | 27 if (pProperties) { |
22 *m_pProperties = *pProperties; | 28 *m_pProperties = *pProperties; |
23 } | 29 } |
24 std::unique_ptr<IFWL_Edit> pEdit(IFWL_Edit::Create( | 30 std::unique_ptr<IFWL_Edit> pEdit(IFWL_Edit::Create( |
25 m_pProperties->MakeWidgetImpProperties(nullptr), nullptr)); | 31 m_pProperties->MakeWidgetImpProperties(nullptr), nullptr)); |
26 FWL_Error ret = pEdit->Initialize(); | 32 FWL_Error ret = pEdit->Initialize(); |
27 if (ret != FWL_Error::Succeeded) { | 33 if (ret != FWL_Error::Succeeded) { |
28 return ret; | 34 return ret; |
29 } | 35 } |
30 m_pIface = pEdit.release(); | 36 m_pIface = std::move(pEdit); |
31 CFWL_Widget::Initialize(); | 37 CFWL_Widget::Initialize(); |
32 return FWL_Error::Succeeded; | 38 return FWL_Error::Succeeded; |
33 } | 39 } |
34 | 40 |
35 FWL_Error CFWL_Edit::SetText(const CFX_WideString& wsText) { | 41 FWL_Error CFWL_Edit::SetText(const CFX_WideString& wsText) { |
36 if (!m_pIface) | 42 if (!GetWidget()) |
37 return FWL_Error::Indefinite; | 43 return FWL_Error::Indefinite; |
38 return static_cast<IFWL_Edit*>(m_pIface)->SetText(wsText); | 44 return GetWidget()->SetText(wsText); |
39 } | 45 } |
40 | 46 |
41 int32_t CFWL_Edit::GetTextLength() const { | 47 int32_t CFWL_Edit::GetTextLength() const { |
42 if (!m_pIface) | 48 if (!GetWidget()) |
43 return 0; | 49 return 0; |
44 return static_cast<IFWL_Edit*>(m_pIface)->GetTextLength(); | 50 return GetWidget()->GetTextLength(); |
45 } | 51 } |
46 | 52 |
47 FWL_Error CFWL_Edit::GetText(CFX_WideString& wsText, | 53 FWL_Error CFWL_Edit::GetText(CFX_WideString& wsText, |
48 int32_t nStart, | 54 int32_t nStart, |
49 int32_t nCount) const { | 55 int32_t nCount) const { |
50 if (!m_pIface) | 56 if (!GetWidget()) |
51 return FWL_Error::Indefinite; | 57 return FWL_Error::Indefinite; |
52 return static_cast<IFWL_Edit*>(m_pIface)->GetText(wsText, nStart, nCount); | 58 return GetWidget()->GetText(wsText, nStart, nCount); |
53 } | 59 } |
54 | 60 |
55 FWL_Error CFWL_Edit::ClearText() { | 61 FWL_Error CFWL_Edit::ClearText() { |
56 if (!m_pIface) | 62 if (!GetWidget()) |
57 return FWL_Error::Indefinite; | 63 return FWL_Error::Indefinite; |
58 return static_cast<IFWL_Edit*>(m_pIface)->ClearText(); | 64 return GetWidget()->ClearText(); |
59 } | 65 } |
60 | 66 |
61 int32_t CFWL_Edit::GetCaretPos() const { | 67 int32_t CFWL_Edit::GetCaretPos() const { |
62 if (!m_pIface) | 68 if (!GetWidget()) |
63 return -1; | 69 return -1; |
64 return static_cast<IFWL_Edit*>(m_pIface)->GetCaretPos(); | 70 return GetWidget()->GetCaretPos(); |
65 } | 71 } |
66 | 72 |
67 int32_t CFWL_Edit::SetCaretPos(int32_t nIndex, FX_BOOL bBefore) { | 73 int32_t CFWL_Edit::SetCaretPos(int32_t nIndex, FX_BOOL bBefore) { |
68 if (!m_pIface) | 74 if (!GetWidget()) |
69 return -1; | 75 return -1; |
70 return static_cast<IFWL_Edit*>(m_pIface)->SetCaretPos(nIndex, bBefore); | 76 return GetWidget()->SetCaretPos(nIndex, bBefore); |
71 } | 77 } |
72 | 78 |
73 int32_t CFWL_Edit::AddSelRange(int32_t nStart, int32_t nCount) { | 79 int32_t CFWL_Edit::AddSelRange(int32_t nStart, int32_t nCount) { |
74 if (!m_pIface) | 80 if (!GetWidget()) |
75 return -1; | 81 return -1; |
76 static_cast<IFWL_Edit*>(m_pIface)->AddSelRange(nStart, nCount); | 82 GetWidget()->AddSelRange(nStart, nCount); |
77 int32_t pos = 0; | 83 int32_t pos = 0; |
78 int32_t sum = static_cast<IFWL_Edit*>(m_pIface)->GetTextLength(); | 84 int32_t sum = GetWidget()->GetTextLength(); |
79 if (nCount == -1) { | 85 if (nCount == -1) { |
80 pos = sum; | 86 pos = sum; |
81 } else { | 87 } else { |
82 pos = nStart + nCount; | 88 pos = nStart + nCount; |
83 } | 89 } |
84 return static_cast<IFWL_Edit*>(m_pIface)->SetCaretPos(pos); | 90 return GetWidget()->SetCaretPos(pos); |
85 } | 91 } |
86 | 92 |
87 int32_t CFWL_Edit::CountSelRanges() { | 93 int32_t CFWL_Edit::CountSelRanges() { |
88 if (!m_pIface) | 94 if (!GetWidget()) |
89 return 0; | 95 return 0; |
90 return static_cast<IFWL_Edit*>(m_pIface)->CountSelRanges(); | 96 return GetWidget()->CountSelRanges(); |
91 } | 97 } |
92 | 98 |
93 int32_t CFWL_Edit::GetSelRange(int32_t nIndex, int32_t& nStart) { | 99 int32_t CFWL_Edit::GetSelRange(int32_t nIndex, int32_t& nStart) { |
94 if (!m_pIface) | 100 if (!GetWidget()) |
95 return 0; | 101 return 0; |
96 return static_cast<IFWL_Edit*>(m_pIface)->GetSelRange(nIndex, nStart); | 102 return GetWidget()->GetSelRange(nIndex, nStart); |
97 } | 103 } |
98 | 104 |
99 FWL_Error CFWL_Edit::ClearSelections() { | 105 FWL_Error CFWL_Edit::ClearSelections() { |
100 if (!m_pIface) | 106 if (!GetWidget()) |
101 return FWL_Error::Indefinite; | 107 return FWL_Error::Indefinite; |
102 return static_cast<IFWL_Edit*>(m_pIface)->ClearSelections(); | 108 return GetWidget()->ClearSelections(); |
103 } | 109 } |
104 | 110 |
105 int32_t CFWL_Edit::GetLimit() { | 111 int32_t CFWL_Edit::GetLimit() { |
106 if (!m_pIface) | 112 if (!GetWidget()) |
107 return -1; | 113 return -1; |
108 return static_cast<IFWL_Edit*>(m_pIface)->GetLimit(); | 114 return GetWidget()->GetLimit(); |
109 } | 115 } |
110 | 116 |
111 FWL_Error CFWL_Edit::SetLimit(int32_t nLimit) { | 117 FWL_Error CFWL_Edit::SetLimit(int32_t nLimit) { |
112 if (!m_pIface) | 118 if (!GetWidget()) |
113 return FWL_Error::Indefinite; | 119 return FWL_Error::Indefinite; |
114 return static_cast<IFWL_Edit*>(m_pIface)->SetLimit(nLimit); | 120 return GetWidget()->SetLimit(nLimit); |
115 } | 121 } |
116 | 122 |
117 FWL_Error CFWL_Edit::SetAliasChar(FX_WCHAR wAlias) { | 123 FWL_Error CFWL_Edit::SetAliasChar(FX_WCHAR wAlias) { |
118 if (!m_pIface) | 124 if (!GetWidget()) |
119 return FWL_Error::Indefinite; | 125 return FWL_Error::Indefinite; |
120 return static_cast<IFWL_Edit*>(m_pIface)->SetAliasChar(wAlias); | 126 return GetWidget()->SetAliasChar(wAlias); |
121 } | 127 } |
122 | 128 |
123 FWL_Error CFWL_Edit::Insert(int32_t nStart, | 129 FWL_Error CFWL_Edit::Insert(int32_t nStart, |
124 const FX_WCHAR* lpText, | 130 const FX_WCHAR* lpText, |
125 int32_t nLen) { | 131 int32_t nLen) { |
126 if (!m_pIface) | 132 if (!GetWidget()) |
127 return FWL_Error::Indefinite; | 133 return FWL_Error::Indefinite; |
128 return static_cast<IFWL_Edit*>(m_pIface)->Insert(nStart, lpText, nLen); | 134 return GetWidget()->Insert(nStart, lpText, nLen); |
129 } | 135 } |
130 | 136 |
131 FWL_Error CFWL_Edit::DeleteSelections() { | 137 FWL_Error CFWL_Edit::DeleteSelections() { |
132 if (!m_pIface) | 138 if (!GetWidget()) |
133 return FWL_Error::Indefinite; | 139 return FWL_Error::Indefinite; |
134 return static_cast<IFWL_Edit*>(m_pIface)->DeleteSelections(); | 140 return GetWidget()->DeleteSelections(); |
135 } | 141 } |
136 | 142 |
137 FWL_Error CFWL_Edit::DeleteRange(int32_t nStart, int32_t nCount) { | 143 FWL_Error CFWL_Edit::DeleteRange(int32_t nStart, int32_t nCount) { |
138 if (!m_pIface) | 144 if (!GetWidget()) |
139 return FWL_Error::Indefinite; | 145 return FWL_Error::Indefinite; |
140 return static_cast<IFWL_Edit*>(m_pIface)->DeleteRange(nStart, nCount); | 146 return GetWidget()->DeleteRange(nStart, nCount); |
141 } | 147 } |
142 | 148 |
143 FWL_Error CFWL_Edit::Replace(int32_t nStart, | 149 FWL_Error CFWL_Edit::Replace(int32_t nStart, |
144 int32_t nLen, | 150 int32_t nLen, |
145 const CFX_WideStringC& wsReplace) { | 151 const CFX_WideStringC& wsReplace) { |
146 if (!m_pIface) | 152 if (!GetWidget()) |
147 return FWL_Error::Indefinite; | 153 return FWL_Error::Indefinite; |
148 return static_cast<IFWL_Edit*>(m_pIface)->Replace(nStart, nLen, wsReplace); | 154 return GetWidget()->Replace(nStart, nLen, wsReplace); |
149 } | 155 } |
150 | 156 |
151 FWL_Error CFWL_Edit::DoClipboard(int32_t iCmd) { | 157 FWL_Error CFWL_Edit::DoClipboard(int32_t iCmd) { |
152 if (!m_pIface) | 158 if (!GetWidget()) |
153 return FWL_Error::Indefinite; | 159 return FWL_Error::Indefinite; |
154 return static_cast<IFWL_Edit*>(m_pIface)->DoClipboard(iCmd); | 160 return GetWidget()->DoClipboard(iCmd); |
155 } | 161 } |
156 | 162 |
157 FX_BOOL CFWL_Edit::Redo(const IFDE_TxtEdtDoRecord* pRecord) { | 163 FX_BOOL CFWL_Edit::Redo(const IFDE_TxtEdtDoRecord* pRecord) { |
158 return m_pIface && static_cast<IFWL_Edit*>(m_pIface)->Redo(pRecord); | 164 return GetWidget() && GetWidget()->Redo(pRecord); |
159 } | 165 } |
160 | 166 |
161 FX_BOOL CFWL_Edit::Undo(const IFDE_TxtEdtDoRecord* pRecord) { | 167 FX_BOOL CFWL_Edit::Undo(const IFDE_TxtEdtDoRecord* pRecord) { |
162 return m_pIface && static_cast<IFWL_Edit*>(m_pIface)->Undo(pRecord); | 168 return GetWidget() && GetWidget()->Undo(pRecord); |
163 } | 169 } |
164 | 170 |
165 FWL_Error CFWL_Edit::SetTabWidth(FX_FLOAT fTabWidth, FX_BOOL bEquidistant) { | 171 FWL_Error CFWL_Edit::SetTabWidth(FX_FLOAT fTabWidth, FX_BOOL bEquidistant) { |
166 if (!m_pIface) | 172 if (!GetWidget()) |
167 return FWL_Error::Indefinite; | 173 return FWL_Error::Indefinite; |
168 return static_cast<IFWL_Edit*>(m_pIface) | 174 return GetWidget()->SetTabWidth(fTabWidth, bEquidistant); |
169 ->SetTabWidth(fTabWidth, bEquidistant); | |
170 } | 175 } |
171 | 176 |
172 FWL_Error CFWL_Edit::SetNumberRange(int32_t iMin, int32_t iMax) { | 177 FWL_Error CFWL_Edit::SetNumberRange(int32_t iMin, int32_t iMax) { |
173 if (iMin > iMax) { | 178 if (iMin > iMax) { |
174 return FWL_Error::ParameterInvalid; | 179 return FWL_Error::ParameterInvalid; |
175 } | 180 } |
176 return static_cast<IFWL_Edit*>(m_pIface)->SetNumberRange(iMin, iMax); | 181 return GetWidget()->SetNumberRange(iMin, iMax); |
177 } | 182 } |
178 | 183 |
179 FWL_Error CFWL_Edit::SetBackColor(uint32_t dwColor) { | 184 FWL_Error CFWL_Edit::SetBackColor(uint32_t dwColor) { |
180 if (!m_pIface) | 185 if (!GetWidget()) |
181 return FWL_Error::Indefinite; | 186 return FWL_Error::Indefinite; |
182 return static_cast<IFWL_Edit*>(m_pIface)->SetBackColor(dwColor); | 187 return GetWidget()->SetBackColor(dwColor); |
183 } | 188 } |
184 | 189 |
185 FWL_Error CFWL_Edit::SetFont(const CFX_WideString& wsFont, FX_FLOAT fSize) { | 190 FWL_Error CFWL_Edit::SetFont(const CFX_WideString& wsFont, FX_FLOAT fSize) { |
186 if (!m_pIface) | 191 if (!GetWidget()) |
187 return FWL_Error::Indefinite; | 192 return FWL_Error::Indefinite; |
188 return static_cast<IFWL_Edit*>(m_pIface)->SetFont(wsFont, fSize); | 193 return GetWidget()->SetFont(wsFont, fSize); |
189 } | 194 } |
190 | 195 |
191 FX_BOOL CFWL_Edit::CanUndo() { | 196 FX_BOOL CFWL_Edit::CanUndo() { |
192 return static_cast<IFWL_Edit*>(m_pIface)->CanUndo(); | 197 return GetWidget()->CanUndo(); |
193 } | 198 } |
194 | 199 |
195 FX_BOOL CFWL_Edit::CanRedo() { | 200 FX_BOOL CFWL_Edit::CanRedo() { |
196 return static_cast<IFWL_Edit*>(m_pIface)->CanRedo(); | 201 return GetWidget()->CanRedo(); |
197 } | 202 } |
198 | 203 |
199 FX_BOOL CFWL_Edit::Undo() { | 204 FX_BOOL CFWL_Edit::Undo() { |
200 return static_cast<IFWL_Edit*>(m_pIface)->Undo(); | 205 return GetWidget()->Undo(); |
201 } | 206 } |
202 | 207 |
203 FX_BOOL CFWL_Edit::Redo() { | 208 FX_BOOL CFWL_Edit::Redo() { |
204 return static_cast<IFWL_Edit*>(m_pIface)->Undo(); | 209 return GetWidget()->Undo(); |
205 } | 210 } |
206 | 211 |
207 FX_BOOL CFWL_Edit::Copy(CFX_WideString& wsCopy) { | 212 FX_BOOL CFWL_Edit::Copy(CFX_WideString& wsCopy) { |
208 return static_cast<IFWL_Edit*>(m_pIface)->Copy(wsCopy); | 213 return GetWidget()->Copy(wsCopy); |
209 } | 214 } |
210 | 215 |
211 FX_BOOL CFWL_Edit::Cut(CFX_WideString& wsCut) { | 216 FX_BOOL CFWL_Edit::Cut(CFX_WideString& wsCut) { |
212 return static_cast<IFWL_Edit*>(m_pIface)->Cut(wsCut); | 217 return GetWidget()->Cut(wsCut); |
213 } | 218 } |
214 | 219 |
215 FX_BOOL CFWL_Edit::Paste(const CFX_WideString& wsPaste) { | 220 FX_BOOL CFWL_Edit::Paste(const CFX_WideString& wsPaste) { |
216 return static_cast<IFWL_Edit*>(m_pIface)->Paste(wsPaste); | 221 return GetWidget()->Paste(wsPaste); |
217 } | 222 } |
218 | 223 |
219 FX_BOOL CFWL_Edit::Delete() { | 224 FX_BOOL CFWL_Edit::Delete() { |
220 return static_cast<IFWL_Edit*>(m_pIface)->Delete(); | 225 return GetWidget()->Delete(); |
221 } | 226 } |
222 | 227 |
223 void CFWL_Edit::SetScrollOffset(FX_FLOAT fScrollOffset) { | 228 void CFWL_Edit::SetScrollOffset(FX_FLOAT fScrollOffset) { |
224 return static_cast<IFWL_Edit*>(m_pIface)->SetScrollOffset(fScrollOffset); | 229 return GetWidget()->SetScrollOffset(fScrollOffset); |
225 } | 230 } |
226 | 231 |
227 FX_BOOL CFWL_Edit::GetSuggestWords(CFX_PointF pointf, | 232 FX_BOOL CFWL_Edit::GetSuggestWords(CFX_PointF pointf, |
228 std::vector<CFX_ByteString>& sSuggest) { | 233 std::vector<CFX_ByteString>& sSuggest) { |
229 return static_cast<IFWL_Edit*>(m_pIface)->GetSuggestWords(pointf, sSuggest); | 234 return GetWidget()->GetSuggestWords(pointf, sSuggest); |
230 } | 235 } |
231 | 236 |
232 FX_BOOL CFWL_Edit::ReplaceSpellCheckWord(CFX_PointF pointf, | 237 FX_BOOL CFWL_Edit::ReplaceSpellCheckWord(CFX_PointF pointf, |
233 const CFX_ByteStringC& bsReplace) { | 238 const CFX_ByteStringC& bsReplace) { |
234 return static_cast<IFWL_Edit*>(m_pIface) | 239 return GetWidget()->ReplaceSpellCheckWord(pointf, bsReplace); |
235 ->ReplaceSpellCheckWord(pointf, bsReplace); | |
236 } | 240 } |
237 | 241 |
238 CFWL_Edit::CFWL_Edit() {} | 242 CFWL_Edit::CFWL_Edit() {} |
239 | 243 |
240 CFWL_Edit::~CFWL_Edit() {} | 244 CFWL_Edit::~CFWL_Edit() {} |
OLD | NEW |