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 "xfa/fxfa/include/xfa_ffdocview.h" | 7 #include "xfa/fxfa/include/xfa_ffdocview.h" |
8 | 8 |
9 #include "core/fxcrt/include/fx_ext.h" | 9 #include "core/fxcrt/include/fx_ext.h" |
10 #include "xfa/fxfa/app/xfa_ffbarcode.h" | 10 #include "xfa/fxfa/app/xfa_ffbarcode.h" |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 pFormNode->GetElementType() != XFA_Element::ExclGroup) { | 243 pFormNode->GetElementType() != XFA_Element::ExclGroup) { |
244 CXFA_WidgetAccIterator Iterator(this, pFormNode); | 244 CXFA_WidgetAccIterator Iterator(this, pFormNode); |
245 while (CXFA_WidgetAcc* pAcc = Iterator.MoveToNext()) { | 245 while (CXFA_WidgetAcc* pAcc = Iterator.MoveToNext()) { |
246 bChanged |= ResetSingleWidgetAccData(pAcc); | 246 bChanged |= ResetSingleWidgetAccData(pAcc); |
247 if (pAcc->GetNode()->GetElementType() == XFA_Element::ExclGroup) { | 247 if (pAcc->GetNode()->GetElementType() == XFA_Element::ExclGroup) { |
248 Iterator.SkipTree(); | 248 Iterator.SkipTree(); |
249 } | 249 } |
250 } | 250 } |
251 } | 251 } |
252 if (bChanged) { | 252 if (bChanged) { |
253 m_pDoc->GetDocProvider()->SetChangeMark(m_pDoc); | 253 m_pDoc->GetDocEnvironment()->SetChangeMark(m_pDoc); |
254 } | 254 } |
255 } | 255 } |
256 int32_t CXFA_FFDocView::ProcessWidgetEvent(CXFA_EventParam* pParam, | 256 int32_t CXFA_FFDocView::ProcessWidgetEvent(CXFA_EventParam* pParam, |
257 CXFA_WidgetAcc* pWidgetAcc) { | 257 CXFA_WidgetAcc* pWidgetAcc) { |
258 if (!pParam) | 258 if (!pParam) |
259 return XFA_EVENTERROR_Error; | 259 return XFA_EVENTERROR_Error; |
260 | 260 |
261 if (pParam->m_eType == XFA_EVENT_Validate) { | 261 if (pParam->m_eType == XFA_EVENT_Validate) { |
262 CFX_WideString wsValidateStr(L"preSubmit"); | 262 CFX_WideString wsValidateStr(L"preSubmit"); |
263 CXFA_Node* pConfigItem = | 263 CXFA_Node* pConfigItem = |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 } | 380 } |
381 CXFA_WidgetAcc* CXFA_FFDocView::GetFocusWidgetAcc() { | 381 CXFA_WidgetAcc* CXFA_FFDocView::GetFocusWidgetAcc() { |
382 return m_pFocusAcc; | 382 return m_pFocusAcc; |
383 } | 383 } |
384 void CXFA_FFDocView::SetFocusWidgetAcc(CXFA_WidgetAcc* pWidgetAcc) { | 384 void CXFA_FFDocView::SetFocusWidgetAcc(CXFA_WidgetAcc* pWidgetAcc) { |
385 CXFA_FFWidget* pNewFocus = | 385 CXFA_FFWidget* pNewFocus = |
386 pWidgetAcc ? pWidgetAcc->GetNextWidget(nullptr) : nullptr; | 386 pWidgetAcc ? pWidgetAcc->GetNextWidget(nullptr) : nullptr; |
387 if (SetFocus(pNewFocus)) { | 387 if (SetFocus(pNewFocus)) { |
388 m_pFocusAcc = pWidgetAcc; | 388 m_pFocusAcc = pWidgetAcc; |
389 if (m_iStatus == XFA_DOCVIEW_LAYOUTSTATUS_End) { | 389 if (m_iStatus == XFA_DOCVIEW_LAYOUTSTATUS_End) { |
390 m_pDoc->GetDocProvider()->SetFocusWidget(m_pDoc, m_pFocusWidget); | 390 m_pDoc->GetDocEnvironment()->SetFocusWidget(m_pDoc, m_pFocusWidget); |
391 } | 391 } |
392 } | 392 } |
393 } | 393 } |
394 void CXFA_FFDocView::DeleteLayoutItem(CXFA_FFWidget* pWidget) { | 394 void CXFA_FFDocView::DeleteLayoutItem(CXFA_FFWidget* pWidget) { |
395 if (m_pFocusAcc == pWidget->GetDataAcc()) { | 395 if (m_pFocusAcc == pWidget->GetDataAcc()) { |
396 m_pFocusAcc = nullptr; | 396 m_pFocusAcc = nullptr; |
397 m_pFocusWidget = nullptr; | 397 m_pFocusWidget = nullptr; |
398 m_pOldFocusWidget = nullptr; | 398 m_pOldFocusWidget = nullptr; |
399 } | 399 } |
400 } | 400 } |
401 static int32_t XFA_ProcessEvent(CXFA_FFDocView* pDocView, | 401 static int32_t XFA_ProcessEvent(CXFA_FFDocView* pDocView, |
402 CXFA_WidgetAcc* pWidgetAcc, | 402 CXFA_WidgetAcc* pWidgetAcc, |
403 CXFA_EventParam* pParam) { | 403 CXFA_EventParam* pParam) { |
404 if (!pParam || pParam->m_eType == XFA_EVENT_Unknown) { | 404 if (!pParam || pParam->m_eType == XFA_EVENT_Unknown) { |
405 return XFA_EVENTERROR_NotExist; | 405 return XFA_EVENTERROR_NotExist; |
406 } | 406 } |
407 if (!pWidgetAcc || pWidgetAcc->GetElementType() == XFA_Element::Draw) { | 407 if (!pWidgetAcc || pWidgetAcc->GetElementType() == XFA_Element::Draw) { |
408 return XFA_EVENTERROR_NotExist; | 408 return XFA_EVENTERROR_NotExist; |
409 } | 409 } |
410 switch (pParam->m_eType) { | 410 switch (pParam->m_eType) { |
411 case XFA_EVENT_Calculate: | 411 case XFA_EVENT_Calculate: |
412 return pWidgetAcc->ProcessCalculate(); | 412 return pWidgetAcc->ProcessCalculate(); |
413 case XFA_EVENT_Validate: | 413 case XFA_EVENT_Validate: |
414 if (((CXFA_FFDoc*)pDocView->GetDoc()) | 414 if (((CXFA_FFDoc*)pDocView->GetDoc()) |
415 ->GetDocProvider() | 415 ->GetDocEnvironment() |
416 ->IsValidationsEnabled(pDocView->GetDoc())) { | 416 ->IsValidationsEnabled(pDocView->GetDoc())) { |
417 return pWidgetAcc->ProcessValidate(0x01); | 417 return pWidgetAcc->ProcessValidate(0x01); |
418 } | 418 } |
419 return XFA_EVENTERROR_Disabled; | 419 return XFA_EVENTERROR_Disabled; |
420 case XFA_EVENT_InitCalculate: { | 420 case XFA_EVENT_InitCalculate: { |
421 CXFA_Calculate calc = pWidgetAcc->GetCalculate(); | 421 CXFA_Calculate calc = pWidgetAcc->GetCalculate(); |
422 if (!calc) { | 422 if (!calc) { |
423 return XFA_EVENTERROR_NotExist; | 423 return XFA_EVENTERROR_NotExist; |
424 } | 424 } |
425 if (pWidgetAcc->GetNode()->IsUserInteractive()) | 425 if (pWidgetAcc->GetNode()->IsUserInteractive()) |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 if (pNode) { | 519 if (pNode) { |
520 return (CXFA_WidgetAcc*)pNode->GetWidgetData(); | 520 return (CXFA_WidgetAcc*)pNode->GetWidgetData(); |
521 } | 521 } |
522 } | 522 } |
523 return nullptr; | 523 return nullptr; |
524 } | 524 } |
525 | 525 |
526 void CXFA_FFDocView::OnPageEvent(CXFA_ContainerLayoutItem* pSender, | 526 void CXFA_FFDocView::OnPageEvent(CXFA_ContainerLayoutItem* pSender, |
527 uint32_t dwEvent) { | 527 uint32_t dwEvent) { |
528 CXFA_FFPageView* pFFPageView = static_cast<CXFA_FFPageView*>(pSender); | 528 CXFA_FFPageView* pFFPageView = static_cast<CXFA_FFPageView*>(pSender); |
529 m_pDoc->GetDocProvider()->PageViewEvent(pFFPageView, dwEvent); | 529 m_pDoc->GetDocEnvironment()->PageViewEvent(pFFPageView, dwEvent); |
530 } | 530 } |
531 | 531 |
532 void CXFA_FFDocView::LockUpdate() { | 532 void CXFA_FFDocView::LockUpdate() { |
533 m_iLock++; | 533 m_iLock++; |
534 } | 534 } |
535 void CXFA_FFDocView::UnlockUpdate() { | 535 void CXFA_FFDocView::UnlockUpdate() { |
536 m_iLock--; | 536 m_iLock--; |
537 } | 537 } |
538 FX_BOOL CXFA_FFDocView::IsUpdateLocked() { | 538 FX_BOOL CXFA_FFDocView::IsUpdateLocked() { |
539 return m_iLock; | 539 return m_iLock; |
(...skipping 13 matching lines...) Expand all Loading... |
553 return; | 553 return; |
554 } | 554 } |
555 CFX_RectF* pRect = new CFX_RectF; | 555 CFX_RectF* pRect = new CFX_RectF; |
556 pRect->Set(rtInvalidate.left, rtInvalidate.top, rtInvalidate.width, | 556 pRect->Set(rtInvalidate.left, rtInvalidate.top, rtInvalidate.width, |
557 rtInvalidate.height); | 557 rtInvalidate.height); |
558 m_mapPageInvalidate[pPageView].reset(pRect); | 558 m_mapPageInvalidate[pPageView].reset(pRect); |
559 } | 559 } |
560 | 560 |
561 void CXFA_FFDocView::RunInvalidate() { | 561 void CXFA_FFDocView::RunInvalidate() { |
562 for (const auto& pair : m_mapPageInvalidate) | 562 for (const auto& pair : m_mapPageInvalidate) |
563 m_pDoc->GetDocProvider()->InvalidateRect(pair.first, *pair.second, 0); | 563 m_pDoc->GetDocEnvironment()->InvalidateRect(pair.first, *pair.second, 0); |
564 m_mapPageInvalidate.clear(); | 564 m_mapPageInvalidate.clear(); |
565 } | 565 } |
566 | 566 |
567 FX_BOOL CXFA_FFDocView::RunLayout() { | 567 FX_BOOL CXFA_FFDocView::RunLayout() { |
568 LockUpdate(); | 568 LockUpdate(); |
569 m_bInLayoutStatus = TRUE; | 569 m_bInLayoutStatus = TRUE; |
570 if (!m_pXFADocLayout->IncrementLayout() && | 570 if (!m_pXFADocLayout->IncrementLayout() && |
571 m_pXFADocLayout->StartLayout() < 100) { | 571 m_pXFADocLayout->StartLayout() < 100) { |
572 m_pXFADocLayout->DoLayout(); | 572 m_pXFADocLayout->DoLayout(); |
573 UnlockUpdate(); | 573 UnlockUpdate(); |
574 m_bInLayoutStatus = FALSE; | 574 m_bInLayoutStatus = FALSE; |
575 m_pDoc->GetDocProvider()->PageViewEvent(nullptr, | 575 m_pDoc->GetDocEnvironment()->PageViewEvent(nullptr, |
576 XFA_PAGEVIEWEVENT_StopLayout); | 576 XFA_PAGEVIEWEVENT_StopLayout); |
577 return TRUE; | 577 return TRUE; |
578 } | 578 } |
579 m_bInLayoutStatus = FALSE; | 579 m_bInLayoutStatus = FALSE; |
580 m_pDoc->GetDocProvider()->PageViewEvent(nullptr, | 580 m_pDoc->GetDocEnvironment()->PageViewEvent(nullptr, |
581 XFA_PAGEVIEWEVENT_StopLayout); | 581 XFA_PAGEVIEWEVENT_StopLayout); |
582 UnlockUpdate(); | 582 UnlockUpdate(); |
583 return FALSE; | 583 return FALSE; |
584 } | 584 } |
585 void CXFA_FFDocView::RunSubformIndexChange() { | 585 void CXFA_FFDocView::RunSubformIndexChange() { |
586 int32_t iSubforms = m_IndexChangedSubforms.GetSize(); | 586 int32_t iSubforms = m_IndexChangedSubforms.GetSize(); |
587 for (int32_t i = 0; i < iSubforms; i++) { | 587 for (int32_t i = 0; i < iSubforms; i++) { |
588 CXFA_Node* pSubformNode = m_IndexChangedSubforms[i]; | 588 CXFA_Node* pSubformNode = m_IndexChangedSubforms[i]; |
589 CXFA_WidgetAcc* pWidgetAcc = | 589 CXFA_WidgetAcc* pWidgetAcc = |
590 static_cast<CXFA_WidgetAcc*>(pSubformNode->GetWidgetData()); | 590 static_cast<CXFA_WidgetAcc*>(pSubformNode->GetWidgetData()); |
591 if (!pWidgetAcc) { | 591 if (!pWidgetAcc) { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 break; | 664 break; |
665 } | 665 } |
666 if ((pCurAcc->ProcessCalculate()) == XFA_EVENTERROR_Success) { | 666 if ((pCurAcc->ProcessCalculate()) == XFA_EVENTERROR_Success) { |
667 AddValidateWidget(pCurAcc); | 667 AddValidateWidget(pCurAcc); |
668 } | 668 } |
669 iIndex++; | 669 iIndex++; |
670 RunCalculateRecursive(iIndex); | 670 RunCalculateRecursive(iIndex); |
671 } | 671 } |
672 } | 672 } |
673 int32_t CXFA_FFDocView::RunCalculateWidgets() { | 673 int32_t CXFA_FFDocView::RunCalculateWidgets() { |
674 if (!m_pDoc->GetDocProvider()->IsCalculationsEnabled(m_pDoc)) { | 674 if (!m_pDoc->GetDocEnvironment()->IsCalculationsEnabled(m_pDoc)) { |
675 return XFA_EVENTERROR_Disabled; | 675 return XFA_EVENTERROR_Disabled; |
676 } | 676 } |
677 int32_t iCounts = m_CalculateAccs.GetSize(); | 677 int32_t iCounts = m_CalculateAccs.GetSize(); |
678 int32_t iIndex = 0; | 678 int32_t iIndex = 0; |
679 if (iCounts > 0) { | 679 if (iCounts > 0) { |
680 RunCalculateRecursive(iIndex); | 680 RunCalculateRecursive(iIndex); |
681 } | 681 } |
682 for (int32_t i = 0; i < m_CalculateAccs.GetSize(); i++) { | 682 for (int32_t i = 0; i < m_CalculateAccs.GetSize(); i++) { |
683 CXFA_WidgetAcc* pCurAcc = m_CalculateAccs[i]; | 683 CXFA_WidgetAcc* pCurAcc = m_CalculateAccs[i]; |
684 pCurAcc->GetNode()->SetUserData(XFA_CalcRefCount, (void*)(uintptr_t)0); | 684 pCurAcc->GetNode()->SetUserData(XFA_CalcRefCount, (void*)(uintptr_t)0); |
685 } | 685 } |
686 m_CalculateAccs.RemoveAll(); | 686 m_CalculateAccs.RemoveAll(); |
687 return XFA_EVENTERROR_Success; | 687 return XFA_EVENTERROR_Success; |
688 } | 688 } |
689 void CXFA_FFDocView::AddValidateWidget(CXFA_WidgetAcc* pWidget) { | 689 void CXFA_FFDocView::AddValidateWidget(CXFA_WidgetAcc* pWidget) { |
690 if (m_ValidateAccs.Find(pWidget) < 0) | 690 if (m_ValidateAccs.Find(pWidget) < 0) |
691 m_ValidateAccs.Add(pWidget); | 691 m_ValidateAccs.Add(pWidget); |
692 } | 692 } |
693 FX_BOOL CXFA_FFDocView::InitCalculate(CXFA_Node* pNode) { | 693 FX_BOOL CXFA_FFDocView::InitCalculate(CXFA_Node* pNode) { |
694 ExecEventActivityByDeepFirst(pNode, XFA_EVENT_InitCalculate, FALSE, TRUE, | 694 ExecEventActivityByDeepFirst(pNode, XFA_EVENT_InitCalculate, FALSE, TRUE, |
695 nullptr); | 695 nullptr); |
696 return TRUE; | 696 return TRUE; |
697 } | 697 } |
698 FX_BOOL CXFA_FFDocView::InitValidate(CXFA_Node* pNode) { | 698 FX_BOOL CXFA_FFDocView::InitValidate(CXFA_Node* pNode) { |
699 if (!m_pDoc->GetDocProvider()->IsValidationsEnabled(m_pDoc)) { | 699 if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc)) { |
700 return FALSE; | 700 return FALSE; |
701 } | 701 } |
702 ExecEventActivityByDeepFirst(pNode, XFA_EVENT_Validate, FALSE, TRUE, nullptr); | 702 ExecEventActivityByDeepFirst(pNode, XFA_EVENT_Validate, FALSE, TRUE, nullptr); |
703 m_ValidateAccs.RemoveAll(); | 703 m_ValidateAccs.RemoveAll(); |
704 return TRUE; | 704 return TRUE; |
705 } | 705 } |
706 FX_BOOL CXFA_FFDocView::RunValidate() { | 706 FX_BOOL CXFA_FFDocView::RunValidate() { |
707 if (!m_pDoc->GetDocProvider()->IsValidationsEnabled(m_pDoc)) { | 707 if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc)) { |
708 return FALSE; | 708 return FALSE; |
709 } | 709 } |
710 int32_t iCounts = m_ValidateAccs.GetSize(); | 710 int32_t iCounts = m_ValidateAccs.GetSize(); |
711 for (int32_t i = 0; i < iCounts; i++) { | 711 for (int32_t i = 0; i < iCounts; i++) { |
712 CXFA_WidgetAcc* pAcc = m_ValidateAccs[i]; | 712 CXFA_WidgetAcc* pAcc = m_ValidateAccs[i]; |
713 if (pAcc->GetNode()->HasRemovedChildren()) | 713 if (pAcc->GetNode()->HasRemovedChildren()) |
714 continue; | 714 continue; |
715 | 715 |
716 pAcc->ProcessValidate(); | 716 pAcc->ProcessValidate(); |
717 } | 717 } |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 } | 791 } |
792 pAcc->InsertItem(wsLabel, wsValue); | 792 pAcc->InsertItem(wsLabel, wsValue); |
793 } | 793 } |
794 } | 794 } |
795 m_BindItems.RemoveAll(); | 795 m_BindItems.RemoveAll(); |
796 } | 796 } |
797 void CXFA_FFDocView::SetChangeMark() { | 797 void CXFA_FFDocView::SetChangeMark() { |
798 if (m_iStatus < XFA_DOCVIEW_LAYOUTSTATUS_End) { | 798 if (m_iStatus < XFA_DOCVIEW_LAYOUTSTATUS_End) { |
799 return; | 799 return; |
800 } | 800 } |
801 m_pDoc->GetDocProvider()->SetChangeMark(m_pDoc); | 801 m_pDoc->GetDocEnvironment()->SetChangeMark(m_pDoc); |
802 } | 802 } |
803 CXFA_Node* CXFA_FFDocView::GetRootSubform() { | 803 CXFA_Node* CXFA_FFDocView::GetRootSubform() { |
804 CXFA_Node* pFormPacketNode = | 804 CXFA_Node* pFormPacketNode = |
805 ToNode(m_pDoc->GetXFADoc()->GetXFAObject(XFA_HASHCODE_Form)); | 805 ToNode(m_pDoc->GetXFADoc()->GetXFAObject(XFA_HASHCODE_Form)); |
806 if (!pFormPacketNode) { | 806 if (!pFormPacketNode) { |
807 return nullptr; | 807 return nullptr; |
808 } | 808 } |
809 return pFormPacketNode->GetFirstChildByClass(XFA_Element::Subform); | 809 return pFormPacketNode->GetFirstChildByClass(XFA_Element::Subform); |
810 } | 810 } |
811 | 811 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 } | 850 } |
851 | 851 |
852 FX_BOOL CXFA_WidgetAccIterator::SetCurrentWidgetAcc(CXFA_WidgetAcc* hWidget) { | 852 FX_BOOL CXFA_WidgetAccIterator::SetCurrentWidgetAcc(CXFA_WidgetAcc* hWidget) { |
853 return FALSE; | 853 return FALSE; |
854 } | 854 } |
855 | 855 |
856 void CXFA_WidgetAccIterator::SkipTree() { | 856 void CXFA_WidgetAccIterator::SkipTree() { |
857 m_ContentIterator.SkipChildrenAndMoveToNext(); | 857 m_ContentIterator.SkipChildrenAndMoveToNext(); |
858 m_pCurWidgetAcc = nullptr; | 858 m_pCurWidgetAcc = nullptr; |
859 } | 859 } |
OLD | NEW |