Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1489)

Side by Side Diff: fpdfsdk/src/fsdk_baseform.cpp

Issue 1668483004: Merge to XFA: Fix prototypes for CPDF_FormNotify. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: One more identifier to replace. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/include/fsdk_baseform.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/fsdk_baseform.h" 7 #include "fpdfsdk/include/fsdk_baseform.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 2304 matching lines...) Expand 10 before | Expand all | Expand 10 after
2315 UnderlyingPageType* pPage = pWidget->GetUnderlyingPage(); 2315 UnderlyingPageType* pPage = pWidget->GetUnderlyingPage();
2316 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage, FALSE); 2316 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage, FALSE);
2317 FX_RECT rcBBox = pIFormFiller->GetViewBBox(pPageView, pWidget); 2317 FX_RECT rcBBox = pIFormFiller->GetViewBBox(pPageView, pWidget);
2318 2318
2319 pEnv->FFI_Invalidate(pPage, rcBBox.left, rcBBox.top, rcBBox.right, 2319 pEnv->FFI_Invalidate(pPage, rcBBox.left, rcBBox.top, rcBBox.right,
2320 rcBBox.bottom); 2320 rcBBox.bottom);
2321 } 2321 }
2322 } 2322 }
2323 } 2323 }
2324 2324
2325 void CPDFSDK_InterForm::OnKeyStrokeCommit(CPDF_FormField* pFormField, 2325 FX_BOOL CPDFSDK_InterForm::OnKeyStrokeCommit(CPDF_FormField* pFormField,
2326 CFX_WideString& csValue, 2326 const CFX_WideString& csValue) {
2327 FX_BOOL& bRC) {
2328 CPDF_AAction aAction = pFormField->GetAdditionalAction(); 2327 CPDF_AAction aAction = pFormField->GetAdditionalAction();
2329 if (aAction && aAction.ActionExist(CPDF_AAction::KeyStroke)) { 2328 if (!aAction || !aAction.ActionExist(CPDF_AAction::KeyStroke))
2330 CPDF_Action action = aAction.GetAction(CPDF_AAction::KeyStroke); 2329 return TRUE;
2331 if (action) {
2332 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
2333 CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
2334 PDFSDK_FieldAction fa;
2335 fa.bModifier = pEnv->FFI_IsCTRLKeyDown(0);
2336 fa.bShift = pEnv->FFI_IsSHIFTKeyDown(0);
2337 fa.sValue = csValue;
2338 2330
2339 pActionHandler->DoAction_FieldJavaScript(action, CPDF_AAction::KeyStroke, 2331 CPDF_Action action = aAction.GetAction(CPDF_AAction::KeyStroke);
2340 m_pDocument, pFormField, fa); 2332 if (!action)
2341 bRC = fa.bRC; 2333 return TRUE;
2342 } 2334
2343 } 2335 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
2336 CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
2337 PDFSDK_FieldAction fa;
2338 fa.bModifier = pEnv->FFI_IsCTRLKeyDown(0);
2339 fa.bShift = pEnv->FFI_IsSHIFTKeyDown(0);
2340 fa.sValue = csValue;
2341 pActionHandler->DoAction_FieldJavaScript(action, CPDF_AAction::KeyStroke,
2342 m_pDocument, pFormField, fa);
2343 return fa.bRC;
2344 } 2344 }
2345 2345
2346 void CPDFSDK_InterForm::OnValidate(CPDF_FormField* pFormField, 2346 FX_BOOL CPDFSDK_InterForm::OnValidate(CPDF_FormField* pFormField,
2347 CFX_WideString& csValue, 2347 const CFX_WideString& csValue) {
2348 FX_BOOL& bRC) {
2349 CPDF_AAction aAction = pFormField->GetAdditionalAction(); 2348 CPDF_AAction aAction = pFormField->GetAdditionalAction();
2350 if (aAction && aAction.ActionExist(CPDF_AAction::Validate)) { 2349 if (!aAction || !aAction.ActionExist(CPDF_AAction::Validate))
2351 CPDF_Action action = aAction.GetAction(CPDF_AAction::Validate); 2350 return TRUE;
2352 if (action) {
2353 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
2354 CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
2355 PDFSDK_FieldAction fa;
2356 fa.bModifier = pEnv->FFI_IsCTRLKeyDown(0);
2357 fa.bShift = pEnv->FFI_IsSHIFTKeyDown(0);
2358 fa.sValue = csValue;
2359 2351
2360 pActionHandler->DoAction_FieldJavaScript(action, CPDF_AAction::Validate, 2352 CPDF_Action action = aAction.GetAction(CPDF_AAction::Validate);
2361 m_pDocument, pFormField, fa); 2353 if (!action)
2362 bRC = fa.bRC; 2354 return TRUE;
2363 } 2355
2364 } 2356 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
2357 CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
2358 PDFSDK_FieldAction fa;
2359 fa.bModifier = pEnv->FFI_IsCTRLKeyDown(0);
2360 fa.bShift = pEnv->FFI_IsSHIFTKeyDown(0);
2361 fa.sValue = csValue;
2362 pActionHandler->DoAction_FieldJavaScript(action, CPDF_AAction::Validate,
2363 m_pDocument, pFormField, fa);
2364 return fa.bRC;
2365 } 2365 }
2366 2366
2367 FX_BOOL CPDFSDK_InterForm::DoAction_Hide(const CPDF_Action& action) { 2367 FX_BOOL CPDFSDK_InterForm::DoAction_Hide(const CPDF_Action& action) {
2368 ASSERT(action); 2368 ASSERT(action);
2369 2369
2370 CPDF_ActionFields af = action.GetWidgets(); 2370 CPDF_ActionFields af = action.GetWidgets();
2371 std::vector<CPDF_Object*> fieldObjects = af.GetAllFields(); 2371 std::vector<CPDF_Object*> fieldObjects = af.GetAllFields();
2372 std::vector<CPDF_FormField*> fields = GetFieldFromObjects(fieldObjects); 2372 std::vector<CPDF_FormField*> fields = GetFieldFromObjects(fieldObjects);
2373 2373
2374 FX_BOOL bHide = action.GetHideStatus(); 2374 FX_BOOL bHide = action.GetHideStatus();
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
2601 if (pObject && pObject->IsString()) { 2601 if (pObject && pObject->IsString()) {
2602 CFX_WideString csName = pObject->GetUnicodeText(); 2602 CFX_WideString csName = pObject->GetUnicodeText();
2603 CPDF_FormField* pField = m_pInterForm->GetField(0, csName); 2603 CPDF_FormField* pField = m_pInterForm->GetField(0, csName);
2604 if (pField) 2604 if (pField)
2605 fields.push_back(pField); 2605 fields.push_back(pField);
2606 } 2606 }
2607 } 2607 }
2608 return fields; 2608 return fields;
2609 } 2609 }
2610 2610
2611 int CPDFSDK_InterForm::BeforeValueChange(const CPDF_FormField* pField, 2611 int CPDFSDK_InterForm::BeforeValueChange(CPDF_FormField* pField,
2612 CFX_WideString& csValue) { 2612 const CFX_WideString& csValue) {
2613 CPDF_FormField* pFormField = (CPDF_FormField*)pField; 2613 int nType = pField->GetFieldType();
2614 int nType = pFormField->GetFieldType(); 2614 if (nType != FIELDTYPE_COMBOBOX && nType != FIELDTYPE_TEXTFIELD)
2615 if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD) {
2616 FX_BOOL bRC = TRUE;
2617 OnKeyStrokeCommit(pFormField, csValue, bRC);
2618 if (bRC) {
2619 OnValidate(pFormField, csValue, bRC);
2620 return bRC ? 1 : -1;
2621 }
2622 return -1;
2623 }
2624 return 0;
2625 }
2626
2627 int CPDFSDK_InterForm::AfterValueChange(const CPDF_FormField* pField) {
2628 CPDF_FormField* pFormField = (CPDF_FormField*)pField;
2629 #ifdef PDF_ENABLE_XFA
2630 SynchronizeField(pFormField, FALSE);
2631 #endif // PDF_ENABLE_XFA
2632 int nType = pFormField->GetFieldType();
2633 if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD) {
2634 OnCalculate(pFormField);
2635 FX_BOOL bFormated = FALSE;
2636 CFX_WideString sValue = OnFormat(pFormField, bFormated);
2637 if (bFormated)
2638 ResetFieldAppearance(pFormField, sValue.c_str(), TRUE);
2639 else
2640 ResetFieldAppearance(pFormField, NULL, TRUE);
2641 UpdateField(pFormField);
2642 }
2643 return 0;
2644 }
2645
2646 int CPDFSDK_InterForm::BeforeSelectionChange(const CPDF_FormField* pField,
2647 CFX_WideString& csValue) {
2648 CPDF_FormField* pFormField = (CPDF_FormField*)pField;
2649 if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
2650 return 0; 2615 return 0;
2651 2616
2652 FX_BOOL bRC = TRUE; 2617 if (!OnKeyStrokeCommit(pField, csValue))
2653 OnKeyStrokeCommit(pFormField, csValue, bRC);
2654 if (!bRC)
2655 return -1; 2618 return -1;
2656 2619
2657 OnValidate(pFormField, csValue, bRC); 2620 if (!OnValidate(pField, csValue))
2658 if (!bRC)
2659 return -1; 2621 return -1;
2660 2622
2661 return 1; 2623 return 1;
2662 } 2624 }
2663 2625
2664 int CPDFSDK_InterForm::AfterSelectionChange(const CPDF_FormField* pField) { 2626 void CPDFSDK_InterForm::AfterValueChange(CPDF_FormField* pField) {
2665 CPDF_FormField* pFormField = (CPDF_FormField*)pField; 2627 #ifdef PDF_ENABLE_XFA
2666 if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX) { 2628 SynchronizeField(pField, FALSE);
2667 OnCalculate(pFormField); 2629 #endif // PDF_ENABLE_XFA
2668 ResetFieldAppearance(pFormField, NULL, TRUE); 2630 int nType = pField->GetFieldType();
2669 UpdateField(pFormField); 2631 if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD) {
2632 OnCalculate(pField);
2633 FX_BOOL bFormated = FALSE;
2634 CFX_WideString sValue = OnFormat(pField, bFormated);
2635 ResetFieldAppearance(pField, bFormated ? sValue.c_str() : nullptr, TRUE);
2636 UpdateField(pField);
2670 } 2637 }
2671 return 0; 2638 }
2639
2640 int CPDFSDK_InterForm::BeforeSelectionChange(CPDF_FormField* pField,
2641 const CFX_WideString& csValue) {
2642 if (pField->GetFieldType() != FIELDTYPE_LISTBOX)
2643 return 0;
2644
2645 if (!OnKeyStrokeCommit(pField, csValue))
2646 return -1;
2647
2648 if (!OnValidate(pField, csValue))
2649 return -1;
2650
2651 return 1;
2652 }
2653
2654 void CPDFSDK_InterForm::AfterSelectionChange(CPDF_FormField* pField) {
2655 if (pField->GetFieldType() == FIELDTYPE_LISTBOX) {
2656 OnCalculate(pField);
2657 ResetFieldAppearance(pField, NULL, TRUE);
2658 UpdateField(pField);
2659 }
2672 } 2660 }
2673 2661
2674 void CPDFSDK_InterForm::AfterCheckedStatusChange(CPDF_FormField* pField) { 2662 void CPDFSDK_InterForm::AfterCheckedStatusChange(CPDF_FormField* pField) {
2675 int nType = pField->GetFieldType(); 2663 int nType = pField->GetFieldType();
2676 if (nType == FIELDTYPE_CHECKBOX || nType == FIELDTYPE_RADIOBUTTON) { 2664 if (nType == FIELDTYPE_CHECKBOX || nType == FIELDTYPE_RADIOBUTTON) {
2677 OnCalculate(pField); 2665 OnCalculate(pField);
2678 UpdateField(pField); 2666 UpdateField(pField);
2679 } 2667 }
2680 } 2668 }
2681 2669
2682 int CPDFSDK_InterForm::BeforeFormReset(const CPDF_InterForm* pForm) { 2670 int CPDFSDK_InterForm::BeforeFormReset(CPDF_InterForm* pForm) {
2683 return 0; 2671 return 0;
2684 } 2672 }
2685 2673
2686 int CPDFSDK_InterForm::AfterFormReset(const CPDF_InterForm* pForm) { 2674 void CPDFSDK_InterForm::AfterFormReset(CPDF_InterForm* pForm) {
2687 OnCalculate(nullptr); 2675 OnCalculate(nullptr);
2676 }
2677
2678 int CPDFSDK_InterForm::BeforeFormImportData(CPDF_InterForm* pForm) {
2688 return 0; 2679 return 0;
2689 } 2680 }
2690 2681
2691 int CPDFSDK_InterForm::BeforeFormImportData(const CPDF_InterForm* pForm) { 2682 void CPDFSDK_InterForm::AfterFormImportData(CPDF_InterForm* pForm) {
2692 return 0;
2693 }
2694
2695 int CPDFSDK_InterForm::AfterFormImportData(const CPDF_InterForm* pForm) {
2696 OnCalculate(nullptr); 2683 OnCalculate(nullptr);
2697 return 0;
2698 } 2684 }
2699 2685
2700 FX_BOOL CPDFSDK_InterForm::IsNeedHighLight(int nFieldType) { 2686 FX_BOOL CPDFSDK_InterForm::IsNeedHighLight(int nFieldType) {
2701 if (nFieldType < 1 || nFieldType > kNumFieldTypes) 2687 if (nFieldType < 1 || nFieldType > kNumFieldTypes)
2702 return FALSE; 2688 return FALSE;
2703 return m_bNeedHightlight[nFieldType - 1]; 2689 return m_bNeedHightlight[nFieldType - 1];
2704 } 2690 }
2705 2691
2706 void CPDFSDK_InterForm::RemoveAllHighLight() { 2692 void CPDFSDK_InterForm::RemoveAllHighLight() {
2707 for (int i = 0; i < kNumFieldTypes; ++i) 2693 for (int i = 0; i < kNumFieldTypes; ++i)
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
2889 break; 2875 break;
2890 } 2876 }
2891 } 2877 }
2892 } 2878 }
2893 2879
2894 CPDF_Rect CBA_AnnotIterator::GetAnnotRect(const CPDFSDK_Annot* pAnnot) { 2880 CPDF_Rect CBA_AnnotIterator::GetAnnotRect(const CPDFSDK_Annot* pAnnot) {
2895 CPDF_Rect rcAnnot; 2881 CPDF_Rect rcAnnot;
2896 pAnnot->GetPDFAnnot()->GetRect(rcAnnot); 2882 pAnnot->GetPDFAnnot()->GetRect(rcAnnot);
2897 return rcAnnot; 2883 return rcAnnot;
2898 } 2884 }
OLDNEW
« no previous file with comments | « fpdfsdk/include/fsdk_baseform.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698