| 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 |