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