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

Side by Side Diff: fpdfsdk/cpdfsdk_widget.cpp

Issue 2410893002: Merge CPDFSDK_Document into CPDFSDK_FormFillEnvironment (Closed)
Patch Set: Rebase to master Created 4 years, 2 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
OLDNEW
1 // Copyright 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 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/cpdfsdk_widget.h" 7 #include "fpdfsdk/cpdfsdk_widget.h"
8 8
9 #include <memory> 9 #include <memory>
10 10
11 #include "core/fpdfapi/parser/cpdf_dictionary.h" 11 #include "core/fpdfapi/parser/cpdf_dictionary.h"
12 #include "core/fpdfapi/parser/cpdf_document.h" 12 #include "core/fpdfapi/parser/cpdf_document.h"
13 #include "core/fpdfapi/parser/cpdf_stream.h" 13 #include "core/fpdfapi/parser/cpdf_stream.h"
14 #include "core/fpdfdoc/cpdf_defaultappearance.h" 14 #include "core/fpdfdoc/cpdf_defaultappearance.h"
15 #include "core/fpdfdoc/cpdf_formcontrol.h" 15 #include "core/fpdfdoc/cpdf_formcontrol.h"
16 #include "core/fpdfdoc/cpdf_formfield.h" 16 #include "core/fpdfdoc/cpdf_formfield.h"
17 #include "core/fpdfdoc/cpdf_iconfit.h" 17 #include "core/fpdfdoc/cpdf_iconfit.h"
18 #include "core/fpdfdoc/cpdf_interform.h" 18 #include "core/fpdfdoc/cpdf_interform.h"
19 #include "core/fxge/cfx_graphstatedata.h" 19 #include "core/fxge/cfx_graphstatedata.h"
20 #include "core/fxge/cfx_pathdata.h" 20 #include "core/fxge/cfx_pathdata.h"
21 #include "core/fxge/cfx_renderdevice.h" 21 #include "core/fxge/cfx_renderdevice.h"
22 #include "fpdfsdk/cpdfsdk_document.h"
23 #include "fpdfsdk/cpdfsdk_formfillenvironment.h" 22 #include "fpdfsdk/cpdfsdk_formfillenvironment.h"
24 #include "fpdfsdk/cpdfsdk_interform.h" 23 #include "fpdfsdk/cpdfsdk_interform.h"
25 #include "fpdfsdk/cpdfsdk_pageview.h" 24 #include "fpdfsdk/cpdfsdk_pageview.h"
26 #include "fpdfsdk/formfiller/cba_fontmap.h" 25 #include "fpdfsdk/formfiller/cba_fontmap.h"
27 #include "fpdfsdk/fsdk_actionhandler.h" 26 #include "fpdfsdk/fsdk_actionhandler.h"
28 #include "fpdfsdk/fsdk_define.h" 27 #include "fpdfsdk/fsdk_define.h"
29 #include "fpdfsdk/fxedit/fxet_edit.h" 28 #include "fpdfsdk/fxedit/fxet_edit.h"
30 #include "fpdfsdk/pdfwindow/PWL_Edit.h" 29 #include "fpdfsdk/pdfwindow/PWL_Edit.h"
31 #include "fpdfsdk/pdfwindow/PWL_Utils.h" 30 #include "fpdfsdk/pdfwindow/PWL_Utils.h"
32 31
(...skipping 29 matching lines...) Expand all
62 m_hMixXFAWidget(nullptr), 61 m_hMixXFAWidget(nullptr),
63 m_pWidgetHandler(nullptr) 62 m_pWidgetHandler(nullptr)
64 #endif // PDF_ENABLE_XFA 63 #endif // PDF_ENABLE_XFA
65 { 64 {
66 } 65 }
67 66
68 CPDFSDK_Widget::~CPDFSDK_Widget() {} 67 CPDFSDK_Widget::~CPDFSDK_Widget() {}
69 68
70 #ifdef PDF_ENABLE_XFA 69 #ifdef PDF_ENABLE_XFA
71 CXFA_FFWidget* CPDFSDK_Widget::GetMixXFAWidget() const { 70 CXFA_FFWidget* CPDFSDK_Widget::GetMixXFAWidget() const {
72 CPDFXFA_Document* pDoc = 71 CPDFXFA_Document* pDoc = m_pPageView->GetFormFillEnv()->GetXFADocument();
73 m_pPageView->GetFormFillEnv()->GetSDKDocument()->GetXFADocument();
74 if (pDoc->GetDocType() == DOCTYPE_STATIC_XFA) { 72 if (pDoc->GetDocType() == DOCTYPE_STATIC_XFA) {
75 if (!m_hMixXFAWidget) { 73 if (!m_hMixXFAWidget) {
76 if (CXFA_FFDocView* pDocView = pDoc->GetXFADocView()) { 74 if (CXFA_FFDocView* pDocView = pDoc->GetXFADocView()) {
77 CFX_WideString sName; 75 CFX_WideString sName;
78 if (GetFieldType() == FIELDTYPE_RADIOBUTTON) { 76 if (GetFieldType() == FIELDTYPE_RADIOBUTTON) {
79 sName = GetAnnotName(); 77 sName = GetAnnotName();
80 if (sName.IsEmpty()) 78 if (sName.IsEmpty())
81 sName = GetName(); 79 sName = GetName();
82 } else { 80 } else {
83 sName = GetName(); 81 sName = GetName();
84 } 82 }
85 83
86 if (!sName.IsEmpty()) 84 if (!sName.IsEmpty())
87 m_hMixXFAWidget = pDocView->GetWidgetByName(sName, nullptr); 85 m_hMixXFAWidget = pDocView->GetWidgetByName(sName, nullptr);
88 } 86 }
89 } 87 }
90 return m_hMixXFAWidget; 88 return m_hMixXFAWidget;
91 } 89 }
92 90
93 return nullptr; 91 return nullptr;
94 } 92 }
95 93
96 CXFA_FFWidget* CPDFSDK_Widget::GetGroupMixXFAWidget() { 94 CXFA_FFWidget* CPDFSDK_Widget::GetGroupMixXFAWidget() {
97 CPDFXFA_Document* pDoc = 95 CPDFXFA_Document* pDoc = m_pPageView->GetFormFillEnv()->GetXFADocument();
98 m_pPageView->GetFormFillEnv()->GetSDKDocument()->GetXFADocument();
99 if (pDoc->GetDocType() == DOCTYPE_STATIC_XFA) { 96 if (pDoc->GetDocType() == DOCTYPE_STATIC_XFA) {
100 if (CXFA_FFDocView* pDocView = pDoc->GetXFADocView()) { 97 if (CXFA_FFDocView* pDocView = pDoc->GetXFADocView()) {
101 CFX_WideString sName = GetName(); 98 CFX_WideString sName = GetName();
102 if (!sName.IsEmpty()) 99 if (!sName.IsEmpty())
103 return pDocView->GetWidgetByName(sName, nullptr); 100 return pDocView->GetWidgetByName(sName, nullptr);
104 } 101 }
105 } 102 }
106 103
107 return nullptr; 104 return nullptr;
108 } 105 }
109 106
110 CXFA_FFWidgetHandler* CPDFSDK_Widget::GetXFAWidgetHandler() const { 107 CXFA_FFWidgetHandler* CPDFSDK_Widget::GetXFAWidgetHandler() const {
111 CPDFXFA_Document* pDoc = 108 CPDFXFA_Document* pDoc = m_pPageView->GetFormFillEnv()->GetXFADocument();
112 m_pPageView->GetFormFillEnv()->GetSDKDocument()->GetXFADocument();
113 if (pDoc->GetDocType() == DOCTYPE_STATIC_XFA) { 109 if (pDoc->GetDocType() == DOCTYPE_STATIC_XFA) {
114 if (!m_pWidgetHandler) { 110 if (!m_pWidgetHandler) {
115 if (CXFA_FFDocView* pDocView = pDoc->GetXFADocView()) 111 if (CXFA_FFDocView* pDocView = pDoc->GetXFADocView())
116 m_pWidgetHandler = pDocView->GetWidgetHandler(); 112 m_pWidgetHandler = pDocView->GetWidgetHandler();
117 } 113 }
118 return m_pWidgetHandler; 114 return m_pWidgetHandler;
119 } 115 }
120 116
121 return nullptr; 117 return nullptr;
122 } 118 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 } 212 }
217 } 213 }
218 214
219 pAcc = hWidget->GetDataAcc(); 215 pAcc = hWidget->GetDataAcc();
220 return pXFAWidgetHandler->HasEvent(pAcc, eEventType); 216 return pXFAWidgetHandler->HasEvent(pAcc, eEventType);
221 } 217 }
222 218
223 FX_BOOL CPDFSDK_Widget::OnXFAAAction(PDFSDK_XFAAActionType eXFAAAT, 219 FX_BOOL CPDFSDK_Widget::OnXFAAAction(PDFSDK_XFAAActionType eXFAAAT,
224 PDFSDK_FieldAction& data, 220 PDFSDK_FieldAction& data,
225 CPDFSDK_PageView* pPageView) { 221 CPDFSDK_PageView* pPageView) {
226 CPDFXFA_Document* pDoc = 222 CPDFXFA_Document* pDoc = m_pPageView->GetFormFillEnv()->GetXFADocument();
227 m_pPageView->GetFormFillEnv()->GetSDKDocument()->GetXFADocument();
228 223
229 CXFA_FFWidget* hWidget = GetMixXFAWidget(); 224 CXFA_FFWidget* hWidget = GetMixXFAWidget();
230 if (!hWidget) 225 if (!hWidget)
231 return FALSE; 226 return FALSE;
232 227
233 XFA_EVENTTYPE eEventType = GetXFAEventType(eXFAAAT); 228 XFA_EVENTTYPE eEventType = GetXFAEventType(eXFAAAT);
234 if (eEventType == XFA_EVENT_Unknown) 229 if (eEventType == XFA_EVENT_Unknown)
235 return FALSE; 230 return FALSE;
236 231
237 CXFA_FFWidgetHandler* pXFAWidgetHandler = GetXFAWidgetHandler(); 232 CXFA_FFWidgetHandler* pXFAWidgetHandler = GetXFAWidgetHandler();
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 pWidgetAcc->SetValue(pFormField->GetValue(), XFA_VALUEPICTURE_Edit); 315 pWidgetAcc->SetValue(pFormField->GetValue(), XFA_VALUEPICTURE_Edit);
321 break; 316 break;
322 } 317 }
323 } 318 }
324 319
325 if (bSynchronizeElse) 320 if (bSynchronizeElse)
326 pWidgetAcc->ProcessValueChanged(); 321 pWidgetAcc->ProcessValueChanged();
327 } 322 }
328 323
329 void CPDFSDK_Widget::SynchronizeXFAValue() { 324 void CPDFSDK_Widget::SynchronizeXFAValue() {
330 CPDFXFA_Document* pDoc = 325 CPDFXFA_Document* pDoc = m_pPageView->GetFormFillEnv()->GetXFADocument();
331 m_pPageView->GetFormFillEnv()->GetSDKDocument()->GetXFADocument();
332 CXFA_FFDocView* pXFADocView = pDoc->GetXFADocView(); 326 CXFA_FFDocView* pXFADocView = pDoc->GetXFADocView();
333 if (!pXFADocView) 327 if (!pXFADocView)
334 return; 328 return;
335 329
336 if (CXFA_FFWidget* hWidget = GetMixXFAWidget()) { 330 if (CXFA_FFWidget* hWidget = GetMixXFAWidget()) {
337 if (GetXFAWidgetHandler()) { 331 if (GetXFAWidgetHandler()) {
338 CPDFSDK_Widget::SynchronizeXFAValue(pXFADocView, hWidget, GetFormField(), 332 CPDFSDK_Widget::SynchronizeXFAValue(pXFADocView, hWidget, GetFormField(),
339 GetFormControl()); 333 GetFormControl());
340 } 334 }
341 } 335 }
342 } 336 }
343 337
344 void CPDFSDK_Widget::SynchronizeXFAItems() { 338 void CPDFSDK_Widget::SynchronizeXFAItems() {
345 CPDFXFA_Document* pDoc = 339 CPDFXFA_Document* pDoc = m_pPageView->GetFormFillEnv()->GetXFADocument();
346 m_pPageView->GetFormFillEnv()->GetSDKDocument()->GetXFADocument();
347 CXFA_FFDocView* pXFADocView = pDoc->GetXFADocView(); 340 CXFA_FFDocView* pXFADocView = pDoc->GetXFADocView();
348 if (!pXFADocView) 341 if (!pXFADocView)
349 return; 342 return;
350 343
351 if (CXFA_FFWidget* hWidget = GetMixXFAWidget()) { 344 if (CXFA_FFWidget* hWidget = GetMixXFAWidget()) {
352 if (GetXFAWidgetHandler()) 345 if (GetXFAWidgetHandler())
353 SynchronizeXFAItems(pXFADocView, hWidget, GetFormField(), nullptr); 346 SynchronizeXFAItems(pXFADocView, hWidget, GetFormField(), nullptr);
354 } 347 }
355 } 348 }
356 349
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 return TRUE; 495 return TRUE;
503 } 496 }
504 497
505 int CPDFSDK_Widget::GetFieldType() const { 498 int CPDFSDK_Widget::GetFieldType() const {
506 CPDF_FormField* pField = GetFormField(); 499 CPDF_FormField* pField = GetFormField();
507 return pField ? pField->GetFieldType() : FIELDTYPE_UNKNOWN; 500 return pField ? pField->GetFieldType() : FIELDTYPE_UNKNOWN;
508 } 501 }
509 502
510 FX_BOOL CPDFSDK_Widget::IsAppearanceValid() { 503 FX_BOOL CPDFSDK_Widget::IsAppearanceValid() {
511 #ifdef PDF_ENABLE_XFA 504 #ifdef PDF_ENABLE_XFA
512 CPDFXFA_Document* pDoc = 505 CPDFXFA_Document* pDoc = m_pPageView->GetFormFillEnv()->GetXFADocument();
513 m_pPageView->GetFormFillEnv()->GetSDKDocument()->GetXFADocument();
514 int nDocType = pDoc->GetDocType(); 506 int nDocType = pDoc->GetDocType();
515 if (nDocType != DOCTYPE_PDF && nDocType != DOCTYPE_STATIC_XFA) 507 if (nDocType != DOCTYPE_PDF && nDocType != DOCTYPE_STATIC_XFA)
516 return TRUE; 508 return TRUE;
517 #endif // PDF_ENABLE_XFA 509 #endif // PDF_ENABLE_XFA
518 return CPDFSDK_BAAnnot::IsAppearanceValid(); 510 return CPDFSDK_BAAnnot::IsAppearanceValid();
519 } 511 }
520 512
521 int CPDFSDK_Widget::GetLayoutOrder() const { 513 int CPDFSDK_Widget::GetLayoutOrder() const {
522 return 2; 514 return 2;
523 } 515 }
(...skipping 1303 matching lines...) Expand 10 before | Expand all | Expand 10 after
1827 if (CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDictFor("AP")) 1819 if (CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDictFor("AP"))
1828 pAPDict->RemoveFor(sAPType); 1820 pAPDict->RemoveFor(sAPType);
1829 } 1821 }
1830 1822
1831 FX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type, 1823 FX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type,
1832 PDFSDK_FieldAction& data, 1824 PDFSDK_FieldAction& data,
1833 CPDFSDK_PageView* pPageView) { 1825 CPDFSDK_PageView* pPageView) {
1834 CPDFSDK_FormFillEnvironment* pFormFillEnv = pPageView->GetFormFillEnv(); 1826 CPDFSDK_FormFillEnvironment* pFormFillEnv = pPageView->GetFormFillEnv();
1835 1827
1836 #ifdef PDF_ENABLE_XFA 1828 #ifdef PDF_ENABLE_XFA
1837 CPDFXFA_Document* pDoc = pFormFillEnv->GetSDKDocument()->GetXFADocument(); 1829 CPDFXFA_Document* pDoc = pFormFillEnv->GetXFADocument();
1838 if (CXFA_FFWidget* hWidget = GetMixXFAWidget()) { 1830 if (CXFA_FFWidget* hWidget = GetMixXFAWidget()) {
1839 XFA_EVENTTYPE eEventType = GetXFAEventType(type, data.bWillCommit); 1831 XFA_EVENTTYPE eEventType = GetXFAEventType(type, data.bWillCommit);
1840 1832
1841 if (eEventType != XFA_EVENT_Unknown) { 1833 if (eEventType != XFA_EVENT_Unknown) {
1842 if (CXFA_FFWidgetHandler* pXFAWidgetHandler = GetXFAWidgetHandler()) { 1834 if (CXFA_FFWidgetHandler* pXFAWidgetHandler = GetXFAWidgetHandler()) {
1843 CXFA_EventParam param; 1835 CXFA_EventParam param;
1844 param.m_eType = eEventType; 1836 param.m_eType = eEventType;
1845 param.m_wsChange = data.sChange; 1837 param.m_wsChange = data.sChange;
1846 param.m_iCommitKey = data.nCommitKey; 1838 param.m_iCommitKey = data.nCommitKey;
1847 param.m_bShift = data.bShift; 1839 param.m_bShift = data.bShift;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1931 return FALSE; 1923 return FALSE;
1932 1924
1933 if (!IsVisible()) 1925 if (!IsVisible())
1934 return FALSE; 1926 return FALSE;
1935 1927
1936 if ((GetFieldFlags() & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) 1928 if ((GetFieldFlags() & FIELDFLAG_READONLY) == FIELDFLAG_READONLY)
1937 return FALSE; 1929 return FALSE;
1938 1930
1939 return TRUE; 1931 return TRUE;
1940 } 1932 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698