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" |
11 #include "fpdfsdk/include/formfiller/FormFiller.h" | 11 #include "fpdfsdk/include/formfiller/FormFiller.h" |
12 | 12 |
13 /* ------------------------------- CFFL_ComboBox ------------------------------- | 13 /* ------------------------------- CFFL_ComboBox ------------------------------- |
14 */ | 14 */ |
15 | 15 |
16 CFFL_ComboBox::CFFL_ComboBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot) | 16 CFFL_ComboBox::CFFL_ComboBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot) |
17 : CFFL_FormFiller(pApp, pAnnot), m_pFontMap(NULL) { | 17 : CFFL_FormFiller(pApp, pAnnot), m_pFontMap(NULL) { |
18 m_State.nIndex = 0; | 18 m_State.nIndex = 0; |
19 m_State.nStart = 0; | 19 m_State.nStart = 0; |
20 m_State.nEnd = 0; | 20 m_State.nEnd = 0; |
21 } | 21 } |
22 | 22 |
23 CFFL_ComboBox::~CFFL_ComboBox() { | 23 CFFL_ComboBox::~CFFL_ComboBox() { |
24 delete m_pFontMap; | 24 delete m_pFontMap; |
25 } | 25 } |
26 | 26 |
27 PWL_CREATEPARAM CFFL_ComboBox::GetCreateParam() { | 27 PWL_CREATEPARAM CFFL_ComboBox::GetCreateParam() { |
28 PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam(); | 28 PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam(); |
29 | 29 |
30 ASSERT(m_pWidget != NULL); | |
31 | |
32 int nFlags = m_pWidget->GetFieldFlags(); | 30 int nFlags = m_pWidget->GetFieldFlags(); |
33 | |
34 if (nFlags & FIELDFLAG_EDIT) { | 31 if (nFlags & FIELDFLAG_EDIT) { |
35 cp.dwFlags |= PCBS_ALLOWCUSTOMTEXT; | 32 cp.dwFlags |= PCBS_ALLOWCUSTOMTEXT; |
36 } | 33 } |
37 | 34 |
38 if (!m_pFontMap) { | 35 if (!m_pFontMap) { |
39 m_pFontMap = new CBA_FontMap(m_pWidget, GetSystemHandler()); | 36 m_pFontMap = new CBA_FontMap(m_pWidget, GetSystemHandler()); |
40 m_pFontMap->Initial(); | 37 m_pFontMap->Initial(); |
41 } | 38 } |
42 | 39 |
43 cp.pFontMap = m_pFontMap; | 40 cp.pFontMap = m_pFontMap; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT)) | 83 if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT)) |
87 return nCurSel != m_pWidget->GetSelectedIndex(0); | 84 return nCurSel != m_pWidget->GetSelectedIndex(0); |
88 | 85 |
89 if (nCurSel >= 0) | 86 if (nCurSel >= 0) |
90 return nCurSel != m_pWidget->GetSelectedIndex(0); | 87 return nCurSel != m_pWidget->GetSelectedIndex(0); |
91 | 88 |
92 return pWnd->GetText() != m_pWidget->GetValue(); | 89 return pWnd->GetText() != m_pWidget->GetValue(); |
93 } | 90 } |
94 | 91 |
95 void CFFL_ComboBox::SaveData(CPDFSDK_PageView* pPageView) { | 92 void CFFL_ComboBox::SaveData(CPDFSDK_PageView* pPageView) { |
96 ASSERT(m_pWidget != NULL); | |
97 | |
98 if (CPWL_ComboBox* pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { | 93 if (CPWL_ComboBox* pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { |
99 CFX_WideString swText = pWnd->GetText(); | 94 CFX_WideString swText = pWnd->GetText(); |
100 int32_t nCurSel = pWnd->GetSelect(); | 95 int32_t nCurSel = pWnd->GetSelect(); |
101 | 96 |
102 // mantis:0004157 | 97 // mantis:0004157 |
103 FX_BOOL bSetValue = TRUE; | 98 FX_BOOL bSetValue = TRUE; |
104 | 99 |
105 if (m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT) { | 100 if (m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT) { |
106 if (nCurSel >= 0) { | 101 if (nCurSel >= 0) { |
107 if (swText != m_pWidget->GetOptionLabel(nCurSel)) | 102 if (swText != m_pWidget->GetOptionLabel(nCurSel)) |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 case CPDF_AAction::Validate: | 153 case CPDF_AAction::Validate: |
159 if (CPWL_ComboBox* pComboBox = | 154 if (CPWL_ComboBox* pComboBox = |
160 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { | 155 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { |
161 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { | 156 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { |
162 fa.sValue = pEdit->GetText(); | 157 fa.sValue = pEdit->GetText(); |
163 } | 158 } |
164 } | 159 } |
165 break; | 160 break; |
166 case CPDF_AAction::LoseFocus: | 161 case CPDF_AAction::LoseFocus: |
167 case CPDF_AAction::GetFocus: | 162 case CPDF_AAction::GetFocus: |
168 ASSERT(m_pWidget != NULL); | |
169 fa.sValue = m_pWidget->GetValue(); | 163 fa.sValue = m_pWidget->GetValue(); |
170 break; | 164 break; |
171 default: | 165 default: |
172 break; | 166 break; |
173 } | 167 } |
174 } | 168 } |
175 | 169 |
176 void CFFL_ComboBox::SetActionData(CPDFSDK_PageView* pPageView, | 170 void CFFL_ComboBox::SetActionData(CPDFSDK_PageView* pPageView, |
177 CPDF_AAction::AActionType type, | 171 CPDF_AAction::AActionType type, |
178 const PDFSDK_FieldAction& fa) { | 172 const PDFSDK_FieldAction& fa) { |
(...skipping 21 matching lines...) Expand all Loading... |
200 faOld.nSelStart != faNew.nSelStart || | 194 faOld.nSelStart != faNew.nSelStart || |
201 faOld.sChange != faNew.sChange; | 195 faOld.sChange != faNew.sChange; |
202 default: | 196 default: |
203 break; | 197 break; |
204 } | 198 } |
205 | 199 |
206 return FALSE; | 200 return FALSE; |
207 } | 201 } |
208 | 202 |
209 void CFFL_ComboBox::SaveState(CPDFSDK_PageView* pPageView) { | 203 void CFFL_ComboBox::SaveState(CPDFSDK_PageView* pPageView) { |
210 ASSERT(pPageView != NULL); | 204 ASSERT(pPageView); |
211 | 205 |
212 if (CPWL_ComboBox* pComboBox = | 206 if (CPWL_ComboBox* pComboBox = |
213 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { | 207 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { |
214 m_State.nIndex = pComboBox->GetSelect(); | 208 m_State.nIndex = pComboBox->GetSelect(); |
215 | 209 |
216 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { | 210 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { |
217 pEdit->GetSel(m_State.nStart, m_State.nEnd); | 211 pEdit->GetSel(m_State.nStart, m_State.nEnd); |
218 m_State.sValue = pEdit->GetText(); | 212 m_State.sValue = pEdit->GetText(); |
219 } | 213 } |
220 } | 214 } |
221 } | 215 } |
222 | 216 |
223 void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView) { | 217 void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView) { |
224 ASSERT(pPageView != NULL); | 218 ASSERT(pPageView); |
225 | 219 |
226 if (CPWL_ComboBox* pComboBox = | 220 if (CPWL_ComboBox* pComboBox = |
227 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, TRUE))) { | 221 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, TRUE))) { |
228 if (m_State.nIndex >= 0) | 222 if (m_State.nIndex >= 0) |
229 pComboBox->SetSelect(m_State.nIndex); | 223 pComboBox->SetSelect(m_State.nIndex); |
230 else { | 224 else { |
231 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { | 225 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { |
232 pEdit->SetText(m_State.sValue.c_str()); | 226 pEdit->SetText(m_State.sValue.c_str()); |
233 pEdit->SetSel(m_State.nStart, m_State.nEnd); | 227 pEdit->SetSel(m_State.nStart, m_State.nEnd); |
234 } | 228 } |
(...skipping 15 matching lines...) Expand all Loading... |
250 pRet = GetPDFWindow(pPageView, FALSE); | 244 pRet = GetPDFWindow(pPageView, FALSE); |
251 } else | 245 } else |
252 pRet = GetPDFWindow(pPageView, TRUE); | 246 pRet = GetPDFWindow(pPageView, TRUE); |
253 | 247 |
254 m_pWidget->UpdateField(); | 248 m_pWidget->UpdateField(); |
255 | 249 |
256 return pRet; | 250 return pRet; |
257 } | 251 } |
258 | 252 |
259 void CFFL_ComboBox::OnSetFocus(CPWL_Wnd* pWnd) { | 253 void CFFL_ComboBox::OnSetFocus(CPWL_Wnd* pWnd) { |
260 ASSERT(m_pApp != NULL); | 254 ASSERT(m_pApp); |
261 | |
262 ASSERT(pWnd != NULL); | |
263 | 255 |
264 if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) { | 256 if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) { |
265 CPWL_Edit* pEdit = (CPWL_Edit*)pWnd; | 257 CPWL_Edit* pEdit = (CPWL_Edit*)pWnd; |
266 pEdit->SetCharSet(134); | 258 pEdit->SetCharSet(134); |
267 pEdit->SetCodePage(936); | 259 pEdit->SetCodePage(936); |
268 | 260 |
269 pEdit->SetReadyToInput(); | 261 pEdit->SetReadyToInput(); |
270 CFX_WideString wsText = pEdit->GetText(); | 262 CFX_WideString wsText = pEdit->GetText(); |
271 int nCharacters = wsText.GetLength(); | 263 int nCharacters = wsText.GetLength(); |
272 CFX_ByteString bsUTFText = wsText.UTF16LE_Encode(); | 264 CFX_ByteString bsUTFText = wsText.UTF16LE_Encode(); |
273 unsigned short* pBuffer = (unsigned short*)bsUTFText.c_str(); | 265 unsigned short* pBuffer = (unsigned short*)bsUTFText.c_str(); |
274 m_pApp->FFI_OnSetFieldInputFocus(m_pWidget->GetFormField(), pBuffer, | 266 m_pApp->FFI_OnSetFieldInputFocus(m_pWidget->GetFormField(), pBuffer, |
275 nCharacters, TRUE); | 267 nCharacters, TRUE); |
276 | 268 |
277 pEdit->SetEditNotify(this); | 269 pEdit->SetEditNotify(this); |
278 } | 270 } |
279 } | 271 } |
280 | 272 |
281 void CFFL_ComboBox::OnKillFocus(CPWL_Wnd* pWnd) { | 273 void CFFL_ComboBox::OnKillFocus(CPWL_Wnd* pWnd) { |
282 ASSERT(m_pApp != NULL); | 274 ASSERT(m_pApp); |
283 } | 275 } |
284 | 276 |
285 void CFFL_ComboBox::OnAddUndo(CPWL_Edit* pEdit) { | 277 void CFFL_ComboBox::OnAddUndo(CPWL_Edit* pEdit) { |
286 ASSERT(pEdit != NULL); | 278 ASSERT(pEdit); |
287 } | 279 } |
288 | 280 |
289 CFX_WideString CFFL_ComboBox::GetSelectExportText() { | 281 CFX_WideString CFFL_ComboBox::GetSelectExportText() { |
290 CFX_WideString swRet; | 282 CFX_WideString swRet; |
291 | 283 |
292 int nExport = -1; | 284 int nExport = -1; |
293 CPDFSDK_PageView* pPageView = GetCurPageView(); | 285 CPDFSDK_PageView* pPageView = GetCurPageView(); |
294 if (CPWL_ComboBox* pComboBox = | 286 if (CPWL_ComboBox* pComboBox = |
295 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { | 287 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { |
296 nExport = pComboBox->GetSelect(); | 288 nExport = pComboBox->GetSelect(); |
297 } | 289 } |
298 | 290 |
299 if (nExport >= 0) { | 291 if (nExport >= 0) { |
300 if (CPDF_FormField* pFormField = m_pWidget->GetFormField()) { | 292 if (CPDF_FormField* pFormField = m_pWidget->GetFormField()) { |
301 swRet = pFormField->GetOptionValue(nExport); | 293 swRet = pFormField->GetOptionValue(nExport); |
302 if (swRet.IsEmpty()) | 294 if (swRet.IsEmpty()) |
303 swRet = pFormField->GetOptionLabel(nExport); | 295 swRet = pFormField->GetOptionLabel(nExport); |
304 } | 296 } |
305 } | 297 } |
306 | 298 |
307 return swRet; | 299 return swRet; |
308 } | 300 } |
OLD | NEW |