| 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_ComboBox.h" |
| 8 |
| 7 #include "fpdfsdk/include/formfiller/FFL_CBA_Fontmap.h" | 9 #include "fpdfsdk/include/formfiller/FFL_CBA_Fontmap.h" |
| 8 #include "fpdfsdk/include/formfiller/FFL_ComboBox.h" | |
| 9 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h" | 10 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h" |
| 10 #include "fpdfsdk/include/formfiller/FFL_IFormFiller.h" | 11 #include "fpdfsdk/include/formfiller/FFL_IFormFiller.h" |
| 11 #include "fpdfsdk/include/formfiller/FormFiller.h" | 12 #include "fpdfsdk/include/fsdk_common.h" |
| 12 | 13 #include "fpdfsdk/include/fsdk_mgr.h" |
| 13 /* ------------------------------- CFFL_ComboBox ------------------------------- | 14 #include "fpdfsdk/include/pdfwindow/PWL_ComboBox.h" |
| 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; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT)) | 80 if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT)) |
| 81 return nCurSel != m_pWidget->GetSelectedIndex(0); | 81 return nCurSel != m_pWidget->GetSelectedIndex(0); |
| 82 | 82 |
| 83 if (nCurSel >= 0) | 83 if (nCurSel >= 0) |
| 84 return nCurSel != m_pWidget->GetSelectedIndex(0); | 84 return nCurSel != m_pWidget->GetSelectedIndex(0); |
| 85 | 85 |
| 86 return pWnd->GetText() != m_pWidget->GetValue(); | 86 return pWnd->GetText() != m_pWidget->GetValue(); |
| 87 } | 87 } |
| 88 | 88 |
| 89 void CFFL_ComboBox::SaveData(CPDFSDK_PageView* pPageView) { | 89 void CFFL_ComboBox::SaveData(CPDFSDK_PageView* pPageView) { |
| 90 if (CPWL_ComboBox* pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { | 90 CPWL_ComboBox* pWnd = |
| 91 CFX_WideString swText = pWnd->GetText(); | 91 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE)); |
| 92 int32_t nCurSel = pWnd->GetSelect(); | 92 if (!pWnd) |
| 93 return; |
| 93 | 94 |
| 94 // mantis:0004157 | 95 CFX_WideString swText = pWnd->GetText(); |
| 95 FX_BOOL bSetValue = TRUE; | 96 int32_t nCurSel = pWnd->GetSelect(); |
| 96 | 97 |
| 97 if (m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT) { | 98 bool bSetValue = false; |
| 98 if (nCurSel >= 0) { | |
| 99 if (swText != m_pWidget->GetOptionLabel(nCurSel)) | |
| 100 bSetValue = TRUE; | |
| 101 else | |
| 102 bSetValue = FALSE; | |
| 103 } else | |
| 104 bSetValue = TRUE; | |
| 105 } else | |
| 106 bSetValue = FALSE; | |
| 107 | 99 |
| 108 CFX_WideString sOldValue; | 100 if (m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT) |
| 101 bSetValue = (nCurSel < 0) || (swText != m_pWidget->GetOptionLabel(nCurSel)); |
| 109 | 102 |
| 110 if (bSetValue) { | 103 if (bSetValue) { |
| 111 sOldValue = m_pWidget->GetValue(); | 104 m_pWidget->SetValue(swText, FALSE); |
| 112 m_pWidget->SetValue(swText, FALSE); | 105 } else { |
| 113 } else { | 106 m_pWidget->GetSelectedIndex(0); |
| 114 m_pWidget->GetSelectedIndex(0); | 107 m_pWidget->SetOptionSelection(nCurSel, TRUE, FALSE); |
| 115 m_pWidget->SetOptionSelection(nCurSel, TRUE, FALSE); | 108 } |
| 116 } | |
| 117 | 109 |
| 118 m_pWidget->ResetFieldAppearance(TRUE); | 110 m_pWidget->ResetFieldAppearance(TRUE); |
| 119 m_pWidget->UpdateField(); | 111 m_pWidget->UpdateField(); |
| 120 SetChangeMark(); | 112 SetChangeMark(); |
| 121 | 113 |
| 122 m_pWidget->GetPDFPage(); | 114 m_pWidget->GetPDFPage(); |
| 123 } | |
| 124 } | 115 } |
| 125 | 116 |
| 126 void CFFL_ComboBox::GetActionData(CPDFSDK_PageView* pPageView, | 117 void CFFL_ComboBox::GetActionData(CPDFSDK_PageView* pPageView, |
| 127 CPDF_AAction::AActionType type, | 118 CPDF_AAction::AActionType type, |
| 128 PDFSDK_FieldAction& fa) { | 119 PDFSDK_FieldAction& fa) { |
| 129 switch (type) { | 120 switch (type) { |
| 130 case CPDF_AAction::KeyStroke: | 121 case CPDF_AAction::KeyStroke: |
| 131 if (CPWL_ComboBox* pComboBox = | 122 if (CPWL_ComboBox* pComboBox = |
| 132 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { | 123 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { |
| 133 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { | 124 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 m_State.sValue = pEdit->GetText(); | 200 m_State.sValue = pEdit->GetText(); |
| 210 } | 201 } |
| 211 } | 202 } |
| 212 } | 203 } |
| 213 | 204 |
| 214 void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView) { | 205 void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView) { |
| 215 ASSERT(pPageView); | 206 ASSERT(pPageView); |
| 216 | 207 |
| 217 if (CPWL_ComboBox* pComboBox = | 208 if (CPWL_ComboBox* pComboBox = |
| 218 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, TRUE))) { | 209 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, TRUE))) { |
| 219 if (m_State.nIndex >= 0) | 210 if (m_State.nIndex >= 0) { |
| 220 pComboBox->SetSelect(m_State.nIndex); | 211 pComboBox->SetSelect(m_State.nIndex); |
| 221 else { | 212 } else { |
| 222 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { | 213 if (CPWL_Edit* pEdit = pComboBox->GetEdit()) { |
| 223 pEdit->SetText(m_State.sValue.c_str()); | 214 pEdit->SetText(m_State.sValue.c_str()); |
| 224 pEdit->SetSel(m_State.nStart, m_State.nEnd); | 215 pEdit->SetSel(m_State.nStart, m_State.nEnd); |
| 225 } | 216 } |
| 226 } | 217 } |
| 227 } | 218 } |
| 228 } | 219 } |
| 229 | 220 |
| 230 CPWL_Wnd* CFFL_ComboBox::ResetPDFWindow(CPDFSDK_PageView* pPageView, | 221 CPWL_Wnd* CFFL_ComboBox::ResetPDFWindow(CPDFSDK_PageView* pPageView, |
| 231 FX_BOOL bRestoreValue) { | 222 FX_BOOL bRestoreValue) { |
| 232 if (bRestoreValue) | 223 if (bRestoreValue) |
| 233 SaveState(pPageView); | 224 SaveState(pPageView); |
| 234 | 225 |
| 235 DestroyPDFWindow(pPageView); | 226 DestroyPDFWindow(pPageView); |
| 236 | 227 |
| 237 CPWL_Wnd* pRet = NULL; | 228 CPWL_Wnd* pRet = NULL; |
| 238 | 229 |
| 239 if (bRestoreValue) { | 230 if (bRestoreValue) { |
| 240 RestoreState(pPageView); | 231 RestoreState(pPageView); |
| 241 pRet = GetPDFWindow(pPageView, FALSE); | 232 pRet = GetPDFWindow(pPageView, FALSE); |
| 242 } else | 233 } else { |
| 243 pRet = GetPDFWindow(pPageView, TRUE); | 234 pRet = GetPDFWindow(pPageView, TRUE); |
| 235 } |
| 244 | 236 |
| 245 m_pWidget->UpdateField(); | 237 m_pWidget->UpdateField(); |
| 246 | 238 |
| 247 return pRet; | 239 return pRet; |
| 248 } | 240 } |
| 249 | 241 |
| 250 #ifdef PDF_ENABLE_XFA | 242 #ifdef PDF_ENABLE_XFA |
| 251 FX_BOOL CFFL_ComboBox::IsFieldFull(CPDFSDK_PageView* pPageView) { | 243 FX_BOOL CFFL_ComboBox::IsFieldFull(CPDFSDK_PageView* pPageView) { |
| 252 if (CPWL_ComboBox* pComboBox = | 244 if (CPWL_ComboBox* pComboBox = |
| 253 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { | 245 static_cast<CPWL_ComboBox*>(GetPDFWindow(pPageView, FALSE))) { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 |