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 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 return NULL; | 202 return NULL; |
203 } | 203 } |
204 return static_cast<CXFA_FFPageView*>(m_pXFADocLayout->GetPage(nIndex)); | 204 return static_cast<CXFA_FFPageView*>(m_pXFADocLayout->GetPage(nIndex)); |
205 } | 205 } |
206 | 206 |
207 CXFA_LayoutProcessor* CXFA_FFDocView::GetXFALayout() const { | 207 CXFA_LayoutProcessor* CXFA_FFDocView::GetXFALayout() const { |
208 return m_pDoc->GetXFADoc()->GetDocLayout(); | 208 return m_pDoc->GetXFADoc()->GetDocLayout(); |
209 } | 209 } |
210 FX_BOOL CXFA_FFDocView::ResetSingleWidgetAccData(CXFA_WidgetAcc* pWidgetAcc) { | 210 FX_BOOL CXFA_FFDocView::ResetSingleWidgetAccData(CXFA_WidgetAcc* pWidgetAcc) { |
211 CXFA_Node* pNode = pWidgetAcc->GetNode(); | 211 CXFA_Node* pNode = pWidgetAcc->GetNode(); |
212 XFA_Element eType = pNode->GetClassID(); | 212 XFA_Element eType = pNode->GetElementType(); |
213 if (eType != XFA_Element::Field && eType != XFA_Element::ExclGroup) { | 213 if (eType != XFA_Element::Field && eType != XFA_Element::ExclGroup) { |
214 return FALSE; | 214 return FALSE; |
215 } | 215 } |
216 pWidgetAcc->ResetData(); | 216 pWidgetAcc->ResetData(); |
217 pWidgetAcc->UpdateUIDisplay(); | 217 pWidgetAcc->UpdateUIDisplay(); |
218 if (CXFA_Validate validate = pWidgetAcc->GetValidate()) { | 218 if (CXFA_Validate validate = pWidgetAcc->GetValidate()) { |
219 AddValidateWidget(pWidgetAcc); | 219 AddValidateWidget(pWidgetAcc); |
220 validate.GetNode()->SetFlag(XFA_NodeFlag_NeedsInitApp, false); | 220 validate.GetNode()->SetFlag(XFA_NodeFlag_NeedsInitApp, false); |
221 } | 221 } |
222 return TRUE; | 222 return TRUE; |
223 } | 223 } |
224 void CXFA_FFDocView::ResetWidgetData(CXFA_WidgetAcc* pWidgetAcc) { | 224 void CXFA_FFDocView::ResetWidgetData(CXFA_WidgetAcc* pWidgetAcc) { |
225 m_bLayoutEvent = TRUE; | 225 m_bLayoutEvent = TRUE; |
226 FX_BOOL bChanged = FALSE; | 226 FX_BOOL bChanged = FALSE; |
227 CXFA_Node* pFormNode = NULL; | 227 CXFA_Node* pFormNode = NULL; |
228 if (pWidgetAcc) { | 228 if (pWidgetAcc) { |
229 bChanged = ResetSingleWidgetAccData(pWidgetAcc); | 229 bChanged = ResetSingleWidgetAccData(pWidgetAcc); |
230 pFormNode = pWidgetAcc->GetNode(); | 230 pFormNode = pWidgetAcc->GetNode(); |
231 } else { | 231 } else { |
232 pFormNode = GetRootSubform(); | 232 pFormNode = GetRootSubform(); |
233 } | 233 } |
234 if (!pFormNode) { | 234 if (!pFormNode) { |
235 return; | 235 return; |
236 } | 236 } |
237 if (pFormNode->GetClassID() != XFA_Element::Field && | 237 if (pFormNode->GetElementType() != XFA_Element::Field && |
238 pFormNode->GetClassID() != XFA_Element::ExclGroup) { | 238 pFormNode->GetElementType() != XFA_Element::ExclGroup) { |
239 CXFA_WidgetAccIterator Iterator(this, pFormNode); | 239 CXFA_WidgetAccIterator Iterator(this, pFormNode); |
240 while (CXFA_WidgetAcc* pAcc = Iterator.MoveToNext()) { | 240 while (CXFA_WidgetAcc* pAcc = Iterator.MoveToNext()) { |
241 bChanged |= ResetSingleWidgetAccData(pAcc); | 241 bChanged |= ResetSingleWidgetAccData(pAcc); |
242 if (pAcc->GetNode()->GetClassID() == XFA_Element::ExclGroup) { | 242 if (pAcc->GetNode()->GetElementType() == XFA_Element::ExclGroup) { |
243 Iterator.SkipTree(); | 243 Iterator.SkipTree(); |
244 } | 244 } |
245 } | 245 } |
246 } | 246 } |
247 if (bChanged) { | 247 if (bChanged) { |
248 m_pDoc->GetDocProvider()->SetChangeMark(m_pDoc); | 248 m_pDoc->GetDocProvider()->SetChangeMark(m_pDoc); |
249 } | 249 } |
250 } | 250 } |
251 int32_t CXFA_FFDocView::ProcessWidgetEvent(CXFA_EventParam* pParam, | 251 int32_t CXFA_FFDocView::ProcessWidgetEvent(CXFA_EventParam* pParam, |
252 CXFA_WidgetAcc* pWidgetAcc) { | 252 CXFA_WidgetAcc* pWidgetAcc) { |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 m_pFocusWidget = NULL; | 394 m_pFocusWidget = NULL; |
395 m_pOldFocusWidget = NULL; | 395 m_pOldFocusWidget = NULL; |
396 } | 396 } |
397 } | 397 } |
398 static int32_t XFA_ProcessEvent(CXFA_FFDocView* pDocView, | 398 static int32_t XFA_ProcessEvent(CXFA_FFDocView* pDocView, |
399 CXFA_WidgetAcc* pWidgetAcc, | 399 CXFA_WidgetAcc* pWidgetAcc, |
400 CXFA_EventParam* pParam) { | 400 CXFA_EventParam* pParam) { |
401 if (!pParam || pParam->m_eType == XFA_EVENT_Unknown) { | 401 if (!pParam || pParam->m_eType == XFA_EVENT_Unknown) { |
402 return XFA_EVENTERROR_NotExist; | 402 return XFA_EVENTERROR_NotExist; |
403 } | 403 } |
404 if (!pWidgetAcc || pWidgetAcc->GetClassID() == XFA_Element::Draw) { | 404 if (!pWidgetAcc || pWidgetAcc->GetElementType() == XFA_Element::Draw) { |
405 return XFA_EVENTERROR_NotExist; | 405 return XFA_EVENTERROR_NotExist; |
406 } | 406 } |
407 switch (pParam->m_eType) { | 407 switch (pParam->m_eType) { |
408 case XFA_EVENT_Calculate: | 408 case XFA_EVENT_Calculate: |
409 return pWidgetAcc->ProcessCalculate(); | 409 return pWidgetAcc->ProcessCalculate(); |
410 case XFA_EVENT_Validate: | 410 case XFA_EVENT_Validate: |
411 if (((CXFA_FFDoc*)pDocView->GetDoc()) | 411 if (((CXFA_FFDoc*)pDocView->GetDoc()) |
412 ->GetDocProvider() | 412 ->GetDocProvider() |
413 ->IsValidationsEnabled(pDocView->GetDoc())) { | 413 ->IsValidationsEnabled(pDocView->GetDoc())) { |
414 return pWidgetAcc->ProcessValidate(0x01); | 414 return pWidgetAcc->ProcessValidate(0x01); |
(...skipping 19 matching lines...) Expand all Loading... |
434 } | 434 } |
435 int32_t CXFA_FFDocView::ExecEventActivityByDeepFirst(CXFA_Node* pFormNode, | 435 int32_t CXFA_FFDocView::ExecEventActivityByDeepFirst(CXFA_Node* pFormNode, |
436 XFA_EVENTTYPE eEventType, | 436 XFA_EVENTTYPE eEventType, |
437 FX_BOOL bIsFormReady, | 437 FX_BOOL bIsFormReady, |
438 FX_BOOL bRecursive, | 438 FX_BOOL bRecursive, |
439 CXFA_Node* pExclude) { | 439 CXFA_Node* pExclude) { |
440 int32_t iRet = XFA_EVENTERROR_NotExist; | 440 int32_t iRet = XFA_EVENTERROR_NotExist; |
441 if (pFormNode == pExclude) { | 441 if (pFormNode == pExclude) { |
442 return iRet; | 442 return iRet; |
443 } | 443 } |
444 XFA_Element elementType = pFormNode->GetClassID(); | 444 XFA_Element elementType = pFormNode->GetElementType(); |
445 if (elementType == XFA_Element::Field) { | 445 if (elementType == XFA_Element::Field) { |
446 if (eEventType == XFA_EVENT_IndexChange) { | 446 if (eEventType == XFA_EVENT_IndexChange) { |
447 return iRet; | 447 return iRet; |
448 } | 448 } |
449 CXFA_WidgetAcc* pWidgetAcc = (CXFA_WidgetAcc*)pFormNode->GetWidgetData(); | 449 CXFA_WidgetAcc* pWidgetAcc = (CXFA_WidgetAcc*)pFormNode->GetWidgetData(); |
450 if (pWidgetAcc == NULL) { | 450 if (pWidgetAcc == NULL) { |
451 return iRet; | 451 return iRet; |
452 } | 452 } |
453 CXFA_EventParam eParam; | 453 CXFA_EventParam eParam; |
454 eParam.m_eType = eEventType; | 454 eParam.m_eType = eEventType; |
455 eParam.m_pTarget = pWidgetAcc; | 455 eParam.m_pTarget = pWidgetAcc; |
456 eParam.m_bIsFormReady = bIsFormReady; | 456 eParam.m_bIsFormReady = bIsFormReady; |
457 return XFA_ProcessEvent(this, pWidgetAcc, &eParam); | 457 return XFA_ProcessEvent(this, pWidgetAcc, &eParam); |
458 } | 458 } |
459 if (bRecursive) { | 459 if (bRecursive) { |
460 for (CXFA_Node* pNode = pFormNode->GetNodeItem( | 460 for (CXFA_Node* pNode = pFormNode->GetNodeItem( |
461 XFA_NODEITEM_FirstChild, XFA_ObjectType::ContainerNode); | 461 XFA_NODEITEM_FirstChild, XFA_ObjectType::ContainerNode); |
462 pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling, | 462 pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling, |
463 XFA_ObjectType::ContainerNode)) { | 463 XFA_ObjectType::ContainerNode)) { |
464 elementType = pNode->GetClassID(); | 464 elementType = pNode->GetElementType(); |
465 if (elementType != XFA_Element::Variables && | 465 if (elementType != XFA_Element::Variables && |
466 elementType != XFA_Element::Draw) { | 466 elementType != XFA_Element::Draw) { |
467 iRet |= ExecEventActivityByDeepFirst(pNode, eEventType, bIsFormReady, | 467 iRet |= ExecEventActivityByDeepFirst(pNode, eEventType, bIsFormReady, |
468 bRecursive, pExclude); | 468 bRecursive, pExclude); |
469 } | 469 } |
470 } | 470 } |
471 } | 471 } |
472 CXFA_WidgetAcc* pWidgetAcc = (CXFA_WidgetAcc*)pFormNode->GetWidgetData(); | 472 CXFA_WidgetAcc* pWidgetAcc = (CXFA_WidgetAcc*)pFormNode->GetWidgetData(); |
473 if (pWidgetAcc == NULL) { | 473 if (pWidgetAcc == NULL) { |
474 return iRet; | 474 return iRet; |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 eParam.m_pTarget = pWidgetAcc; | 593 eParam.m_pTarget = pWidgetAcc; |
594 pWidgetAcc->ProcessEvent(XFA_ATTRIBUTEENUM_IndexChange, &eParam); | 594 pWidgetAcc->ProcessEvent(XFA_ATTRIBUTEENUM_IndexChange, &eParam); |
595 } | 595 } |
596 m_IndexChangedSubforms.RemoveAll(); | 596 m_IndexChangedSubforms.RemoveAll(); |
597 } | 597 } |
598 void CXFA_FFDocView::AddNewFormNode(CXFA_Node* pNode) { | 598 void CXFA_FFDocView::AddNewFormNode(CXFA_Node* pNode) { |
599 m_NewAddedNodes.Add(pNode); | 599 m_NewAddedNodes.Add(pNode); |
600 InitLayout(pNode); | 600 InitLayout(pNode); |
601 } | 601 } |
602 void CXFA_FFDocView::AddIndexChangedSubform(CXFA_Node* pNode) { | 602 void CXFA_FFDocView::AddIndexChangedSubform(CXFA_Node* pNode) { |
603 ASSERT(pNode->GetClassID() == XFA_Element::Subform); | 603 ASSERT(pNode->GetElementType() == XFA_Element::Subform); |
604 m_IndexChangedSubforms.Add(pNode); | 604 m_IndexChangedSubforms.Add(pNode); |
605 } | 605 } |
606 void CXFA_FFDocView::RunDocClose() { | 606 void CXFA_FFDocView::RunDocClose() { |
607 CXFA_Node* pRootItem = | 607 CXFA_Node* pRootItem = |
608 ToNode(m_pDoc->GetXFADoc()->GetXFAObject(XFA_HASHCODE_Form)); | 608 ToNode(m_pDoc->GetXFADoc()->GetXFAObject(XFA_HASHCODE_Form)); |
609 if (!pRootItem) { | 609 if (!pRootItem) { |
610 return; | 610 return; |
611 } | 611 } |
612 ExecEventActivityByDeepFirst(pRootItem, XFA_EVENT_DocClose); | 612 ExecEventActivityByDeepFirst(pRootItem, XFA_EVENT_DocClose); |
613 } | 613 } |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 CXFA_WidgetAcc* CXFA_WidgetAccIterator::GetCurrentWidgetAcc() { | 841 CXFA_WidgetAcc* CXFA_WidgetAccIterator::GetCurrentWidgetAcc() { |
842 return NULL; | 842 return NULL; |
843 } | 843 } |
844 FX_BOOL CXFA_WidgetAccIterator::SetCurrentWidgetAcc(CXFA_WidgetAcc* hWidget) { | 844 FX_BOOL CXFA_WidgetAccIterator::SetCurrentWidgetAcc(CXFA_WidgetAcc* hWidget) { |
845 return FALSE; | 845 return FALSE; |
846 } | 846 } |
847 void CXFA_WidgetAccIterator::SkipTree() { | 847 void CXFA_WidgetAccIterator::SkipTree() { |
848 m_ContentIterator.SkipChildrenAndMoveToNext(); | 848 m_ContentIterator.SkipChildrenAndMoveToNext(); |
849 m_pCurWidgetAcc = NULL; | 849 m_pCurWidgetAcc = NULL; |
850 } | 850 } |
OLD | NEW |