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 "fpdfsdk/include/formfiller/FFL_CBA_Fontmap.h" | 7 #include "fpdfsdk/include/formfiller/FFL_CBA_Fontmap.h" |
8 #include "fpdfsdk/include/formfiller/FFL_ComboBox.h" | 8 #include "fpdfsdk/include/formfiller/FFL_ComboBox.h" |
9 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h" | 9 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h" |
10 #include "fpdfsdk/include/formfiller/FFL_IFormFiller.h" | 10 #include "fpdfsdk/include/formfiller/FFL_IFormFiller.h" |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 m_pWidget->GetPDFPage(); | 130 m_pWidget->GetPDFPage(); |
131 } | 131 } |
132 } | 132 } |
133 | 133 |
134 void CFFL_ComboBox::GetActionData(CPDFSDK_PageView* pPageView, | 134 void CFFL_ComboBox::GetActionData(CPDFSDK_PageView* pPageView, |
135 CPDF_AAction::AActionType type, | 135 CPDF_AAction::AActionType type, |
136 PDFSDK_FieldAction& fa) { | 136 PDFSDK_FieldAction& fa) { |
137 switch (type) { | 137 switch (type) { |
138 case CPDF_AAction::KeyStroke: | 138 case CPDF_AAction::KeyStroke: |
139 if (CPWL_ComboBox* pComboBox = | 139 if (CPWL_ComboBox* pComboBox = |
140 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { | 140 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { |
141 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { | 141 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { |
142 fa.bFieldFull = pEdit->IsTextFull(); | 142 fa.bFieldFull = pEdit->IsTextFull(); |
143 int nSelStart = 0; | 143 int nSelStart = 0; |
144 int nSelEnd = 0; | 144 int nSelEnd = 0; |
145 pEdit->GetSel(nSelStart, nSelEnd); | 145 pEdit->GetSel(nSelStart, nSelEnd); |
146 fa.nSelEnd = nSelEnd; | 146 fa.nSelEnd = nSelEnd; |
147 fa.nSelStart = nSelStart; | 147 fa.nSelStart = nSelStart; |
148 fa.sValue = pEdit->GetText(); | 148 fa.sValue = pEdit->GetText(); |
149 fa.sChangeEx = GetSelectExportText(); | 149 fa.sChangeEx = GetSelectExportText(); |
150 | 150 |
151 if (fa.bFieldFull) { | 151 if (fa.bFieldFull) { |
152 fa.sChange = L""; | 152 fa.sChange = L""; |
153 fa.sChangeEx = L""; | 153 fa.sChangeEx = L""; |
154 } | 154 } |
155 } | 155 } |
156 } | 156 } |
157 break; | 157 break; |
158 case CPDF_AAction::Validate: | 158 case CPDF_AAction::Validate: |
159 if (CPWL_ComboBox* pComboBox = | 159 if (CPWL_ComboBox* pComboBox = |
160 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { | 160 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { |
161 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { | 161 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { |
162 fa.sValue = pEdit->GetText(); | 162 fa.sValue = pEdit->GetText(); |
163 } | 163 } |
164 } | 164 } |
165 break; | 165 break; |
166 case CPDF_AAction::LoseFocus: | 166 case CPDF_AAction::LoseFocus: |
167 case CPDF_AAction::GetFocus: | 167 case CPDF_AAction::GetFocus: |
168 ASSERT(m_pWidget != NULL); | 168 ASSERT(m_pWidget != NULL); |
169 fa.sValue = m_pWidget->GetValue(); | 169 fa.sValue = m_pWidget->GetValue(); |
170 break; | 170 break; |
171 default: | 171 default: |
172 break; | 172 break; |
173 } | 173 } |
174 } | 174 } |
175 | 175 |
176 void CFFL_ComboBox::SetActionData(CPDFSDK_PageView* pPageView, | 176 void CFFL_ComboBox::SetActionData(CPDFSDK_PageView* pPageView, |
177 CPDF_AAction::AActionType type, | 177 CPDF_AAction::AActionType type, |
178 const PDFSDK_FieldAction& fa) { | 178 const PDFSDK_FieldAction& fa) { |
179 switch (type) { | 179 switch (type) { |
180 case CPDF_AAction::KeyStroke: | 180 case CPDF_AAction::KeyStroke: |
181 if (CPWL_ComboBox* pComboBox = | 181 if (CPWL_ComboBox* pComboBox = |
182 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { | 182 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { |
183 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { | 183 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { |
184 pEdit->SetSel(fa.nSelStart, fa.nSelEnd); | 184 pEdit->SetSel(fa.nSelStart, fa.nSelEnd); |
185 pEdit->ReplaceSel(fa.sChange.c_str()); | 185 pEdit->ReplaceSel(fa.sChange.c_str()); |
186 } | 186 } |
187 } | 187 } |
188 break; | 188 break; |
189 default: | 189 default: |
190 break; | 190 break; |
191 } | 191 } |
192 } | 192 } |
193 | 193 |
194 FX_BOOL CFFL_ComboBox::IsActionDataChanged(CPDF_AAction::AActionType type, | 194 FX_BOOL CFFL_ComboBox::IsActionDataChanged(CPDF_AAction::AActionType type, |
195 const PDFSDK_FieldAction& faOld, | 195 const PDFSDK_FieldAction& faOld, |
196 const PDFSDK_FieldAction& faNew) { | 196 const PDFSDK_FieldAction& faNew) { |
197 switch (type) { | 197 switch (type) { |
198 case CPDF_AAction::KeyStroke: | 198 case CPDF_AAction::KeyStroke: |
199 return (!faOld.bFieldFull && faOld.nSelEnd != faNew.nSelEnd) || | 199 return (!faOld.bFieldFull && faOld.nSelEnd != faNew.nSelEnd) || |
200 faOld.nSelStart != faNew.nSelStart || | 200 faOld.nSelStart != faNew.nSelStart || |
201 faOld.sChange != faNew.sChange; | 201 faOld.sChange != faNew.sChange; |
202 default: | 202 default: |
203 break; | 203 break; |
204 } | 204 } |
205 | 205 |
206 return FALSE; | 206 return FALSE; |
207 } | 207 } |
208 | 208 |
209 void CFFL_ComboBox::SaveState(CPDFSDK_PageView* pPageView) { | 209 void CFFL_ComboBox::SaveState(CPDFSDK_PageView* pPageView) { |
210 ASSERT(pPageView != NULL); | 210 ASSERT(pPageView != NULL); |
211 | 211 |
212 if (CPWL_ComboBox* pComboBox = | 212 if (CPWL_ComboBox* pComboBox = |
213 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { | 213 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { |
214 m_State.nIndex = pComboBox->GetSelect(); | 214 m_State.nIndex = pComboBox->GetSelect(); |
215 | 215 |
216 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { | 216 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { |
217 pEdit->GetSel(m_State.nStart, m_State.nEnd); | 217 pEdit->GetSel(m_State.nStart, m_State.nEnd); |
218 m_State.sValue = pEdit->GetText(); | 218 m_State.sValue = pEdit->GetText(); |
219 } | 219 } |
220 } | 220 } |
221 } | 221 } |
222 | 222 |
223 void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView) { | 223 void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView) { |
224 ASSERT(pPageView != NULL); | 224 ASSERT(pPageView != NULL); |
225 | 225 |
226 if (CPWL_ComboBox* pComboBox = | 226 if (CPWL_ComboBox* pComboBox = |
227 (CPWL_ComboBox*)GetPDFWindow(pPageView, TRUE)) { | 227 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, TRUE))) { |
228 if (m_State.nIndex >= 0) | 228 if (m_State.nIndex >= 0) |
229 pComboBox->SetSelect(m_State.nIndex); | 229 pComboBox->SetSelect(m_State.nIndex); |
230 else { | 230 else { |
231 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { | 231 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { |
232 pEdit->SetText(m_State.sValue.c_str()); | 232 pEdit->SetText(m_State.sValue.c_str()); |
233 pEdit->SetSel(m_State.nStart, m_State.nEnd); | 233 pEdit->SetSel(m_State.nStart, m_State.nEnd); |
234 } | 234 } |
235 } | 235 } |
236 } | 236 } |
237 } | 237 } |
238 | 238 |
239 CPWL_Wnd* CFFL_ComboBox::ResetPDFWindow(CPDFSDK_PageView* pPageView, | 239 CPWL_Wnd* CFFL_ComboBox::ResetPDFWindow(CPDFSDK_PageView* pPageView, |
240 FX_BOOL bRestoreValue) { | 240 FX_BOOL bRestoreValue) { |
241 if (bRestoreValue) | 241 if (bRestoreValue) |
242 SaveState(pPageView); | 242 SaveState(pPageView); |
243 | 243 |
244 DestroyPDFWindow(pPageView); | 244 DestroyPDFWindow(pPageView); |
245 | 245 |
246 CPWL_Wnd* pRet = NULL; | 246 CPWL_Wnd* pRet = NULL; |
247 | 247 |
248 if (bRestoreValue) { | 248 if (bRestoreValue) { |
249 RestoreState(pPageView); | 249 RestoreState(pPageView); |
250 pRet = GetPDFWindow(pPageView, FALSE); | 250 pRet = GetPDFWindow(pPageView, FALSE); |
251 } else | 251 } else |
252 pRet = GetPDFWindow(pPageView, TRUE); | 252 pRet = GetPDFWindow(pPageView, TRUE); |
253 | 253 |
254 m_pWidget->UpdateField(); | 254 m_pWidget->UpdateField(); |
255 | 255 |
256 return pRet; | 256 return pRet; |
257 } | 257 } |
258 | 258 |
259 FX_BOOL CFFL_ComboBox::IsFieldFull(CPDFSDK_PageView* pPageView) { | 259 FX_BOOL CFFL_ComboBox::IsFieldFull(CPDFSDK_PageView* pPageView) { |
260 if (CPWL_ComboBox* pComboBox = | 260 if (CPWL_ComboBox* pComboBox = |
261 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { | 261 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { |
262 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { | 262 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) |
263 return pEdit->IsTextFull(); | 263 return pEdit->IsTextFull(); |
264 } | |
265 } | 264 } |
266 | |
267 return FALSE; | 265 return FALSE; |
268 } | 266 } |
269 | 267 |
270 void CFFL_ComboBox::OnSetFocus(CPWL_Wnd* pWnd) { | 268 void CFFL_ComboBox::OnSetFocus(CPWL_Wnd* pWnd) { |
271 ASSERT(m_pApp != NULL); | 269 ASSERT(m_pApp != NULL); |
272 | 270 |
273 ASSERT(pWnd != NULL); | 271 ASSERT(pWnd != NULL); |
274 | 272 |
275 if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) { | 273 if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) { |
276 CPWL_Edit* pEdit = (CPWL_Edit*)pWnd; | 274 CPWL_Edit* pEdit = (CPWL_Edit*)pWnd; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 if (nExport >= 0) { | 308 if (nExport >= 0) { |
311 if (CPDF_FormField* pFormField = m_pWidget->GetFormField()) { | 309 if (CPDF_FormField* pFormField = m_pWidget->GetFormField()) { |
312 swRet = pFormField->GetOptionValue(nExport); | 310 swRet = pFormField->GetOptionValue(nExport); |
313 if (swRet.IsEmpty()) | 311 if (swRet.IsEmpty()) |
314 swRet = pFormField->GetOptionLabel(nExport); | 312 swRet = pFormField->GetOptionLabel(nExport); |
315 } | 313 } |
316 } | 314 } |
317 | 315 |
318 return swRet; | 316 return swRet; |
319 } | 317 } |
OLD | NEW |