14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/xfa_object.h" 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <map> 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <memory> 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <utility> 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <vector> 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_ext.h" 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fxjs/cfxjse_value.h" 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "third_party/base/ptr_util.h" 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "third_party/base/stl_util.h" 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fde/xml/fde_xml_imp.h" 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fgas/crt/fgas_codepage.h" 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/app/xfa_ffnotify.h" 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/cxfa_eventparam.h" 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_document.h" 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_layoutprocessor.h" 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_measurement.h" 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_occur.h" 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_scriptcontext.h" 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_simple_parser.h" 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/xfa_basic_data.h" 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannnamespace { 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid XFA_DeleteWideString(void* pData) { 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann delete static_cast<CFX_WideString*>(pData); 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid XFA_CopyWideString(void*& pData) { 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pData) { 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString* pNewData = new CFX_WideString(*(CFX_WideString*)pData); 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pData = pNewData; 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannXFA_MAPDATABLOCKCALLBACKINFO deleteWideStringCallBack = {XFA_DeleteWideString, 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_CopyWideString}; 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid XFA_DataNodeDeleteBindItem(void* pData) { 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann delete static_cast<CXFA_NodeArray*>(pData); 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannXFA_MAPDATABLOCKCALLBACKINFO deleteBindItemCallBack = { 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_DataNodeDeleteBindItem, nullptr}; 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t GetCount(CXFA_Node* pInstMgrNode) { 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pInstMgrNode); 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = 0; 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwNameHash = 0; 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = pInstMgrNode->GetNodeItem(XFA_NODEITEM_NextSibling); 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eCurType = pNode->GetElementType(); 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eCurType == XFA_Element::InstanceManager) 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if ((eCurType != XFA_Element::Subform) && 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (eCurType != XFA_Element::SubformSet)) { 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iCount == 0) { 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsName = pNode->GetCData(XFA_ATTRIBUTE_Name); 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsInstName = pInstMgrNode->GetCData(XFA_ATTRIBUTE_Name); 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsInstName.GetLength() < 1 || wsInstName.GetAt(0) != '_' || 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsInstName.Mid(1) != wsName) { 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return iCount; 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwNameHash = pNode->GetNameHash(); 744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwNameHash != pNode->GetNameHash()) 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iCount++; 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return iCount; 814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid SortNodeArrayByDocumentIdx(const CXFA_NodeSet& rgNodeSet, 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray& rgNodeArray, 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ArrayTemplate<int32_t>& rgIdxArray) { 864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = pdfium::CollectionSize<int32_t>(rgNodeSet); 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann rgNodeArray.SetSize(iCount); 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann rgIdxArray.SetSize(iCount); 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iCount == 0) 904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = -1; 934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iTotalIndex = -1; 944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pCommonParent = 954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (*rgNodeSet.begin())->GetNodeItem(XFA_NODEITEM_Parent); 964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = pCommonParent->GetNodeItem(XFA_NODEITEM_FirstChild); 974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode && iIndex < iCount; 984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iTotalIndex++; 1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pdfium::ContainsValue(rgNodeSet, pNode)) { 1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iIndex++; 1024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann rgNodeArray[iIndex] = pNode; 1034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann rgIdxArray[iIndex] = iTotalIndex; 1044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannusing CXFA_NodeSetPair = std::pair<CXFA_NodeSet, CXFA_NodeSet>; 1094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannusing CXFA_NodeSetPairMap = 1104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::map<uint32_t, std::unique_ptr<CXFA_NodeSetPair>>; 1114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannusing CXFA_NodeSetPairMapMap = 1124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::map<CXFA_Node*, std::unique_ptr<CXFA_NodeSetPairMap>>; 1134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_NodeSetPair* NodeSetPairForNode(CXFA_Node* pNode, 1154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSetPairMapMap* pMap) { 1164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParentNode = pNode->GetNodeItem(XFA_NODEITEM_Parent); 1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwNameHash = pNode->GetNameHash(); 1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pParentNode || !dwNameHash) 1194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 1204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(*pMap)[pParentNode]) 1224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (*pMap)[pParentNode] = pdfium::MakeUnique<CXFA_NodeSetPairMap>(); 1234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSetPairMap* pNodeSetPairMap = (*pMap)[pParentNode].get(); 1254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(*pNodeSetPairMap)[dwNameHash]) 1264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (*pNodeSetPairMap)[dwNameHash] = pdfium::MakeUnique<CXFA_NodeSetPair>(); 1274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return (*pNodeSetPairMap)[dwNameHash].get(); 1294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid ReorderDataNodes(const CXFA_NodeSet& sSet1, 1324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CXFA_NodeSet& sSet2, 1334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bInsertBefore) { 1344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSetPairMapMap rgMap; 1354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode : sSet1) { 1364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSetPair* pNodeSetPair = NodeSetPairForNode(pNode, &rgMap); 1374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNodeSetPair) 1384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNodeSetPair->first.insert(pNode); 1394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode : sSet2) { 1414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSetPair* pNodeSetPair = NodeSetPairForNode(pNode, &rgMap); 1424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNodeSetPair) { 1434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pdfium::ContainsValue(pNodeSetPair->first, pNode)) 1444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNodeSetPair->first.erase(pNode); 1454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann else 1464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNodeSetPair->second.insert(pNode); 1474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& iter1 : rgMap) { 1504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSetPairMap* pNodeSetPairMap = iter1.second.get(); 1514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNodeSetPairMap) 1524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 1534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& iter2 : *pNodeSetPairMap) { 1554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSetPair* pNodeSetPair = iter2.second.get(); 1564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNodeSetPair) 1574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 1584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNodeSetPair->first.empty() && !pNodeSetPair->second.empty()) { 1594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray rgNodeArray1; 1604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray rgNodeArray2; 1614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ArrayTemplate<int32_t> rgIdxArray1; 1624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ArrayTemplate<int32_t> rgIdxArray2; 1634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SortNodeArrayByDocumentIdx(pNodeSetPair->first, rgNodeArray1, 1644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann rgIdxArray1); 1654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SortNodeArrayByDocumentIdx(pNodeSetPair->second, rgNodeArray2, 1664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann rgIdxArray2); 1674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParentNode = nullptr; 1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBeforeNode = nullptr; 1694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bInsertBefore) { 1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBeforeNode = rgNodeArray2[0]; 1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentNode = pBeforeNode->GetNodeItem(XFA_NODEITEM_Parent); 1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 1734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pLastNode = rgNodeArray2[rgIdxArray2.GetSize() - 1]; 1744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentNode = pLastNode->GetNodeItem(XFA_NODEITEM_Parent); 1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBeforeNode = pLastNode->GetNodeItem(XFA_NODEITEM_NextSibling); 1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t iIdx = 0; iIdx < rgIdxArray1.GetSize(); iIdx++) { 1784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pCurNode = rgNodeArray1[iIdx]; 1794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentNode->RemoveChild(pCurNode); 1804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentNode->InsertChild(pCurNode, pBeforeNode); 1814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNodeSetPairMap->clear(); 1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* GetItem(CXFA_Node* pInstMgrNode, int32_t iIndex) { 1894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pInstMgrNode); 1904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = 0; 1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwNameHash = 0; 1924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = pInstMgrNode->GetNodeItem(XFA_NODEITEM_NextSibling); 1934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 1944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eCurType = pNode->GetElementType(); 1954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eCurType == XFA_Element::InstanceManager) 1964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if ((eCurType != XFA_Element::Subform) && 1984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (eCurType != XFA_Element::SubformSet)) { 1994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iCount == 0) { 2024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsName = pNode->GetCData(XFA_ATTRIBUTE_Name); 2034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsInstName = pInstMgrNode->GetCData(XFA_ATTRIBUTE_Name); 2044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsInstName.GetLength() < 1 || wsInstName.GetAt(0) != '_' || 2054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsInstName.Mid(1) != wsName) { 2064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 2074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwNameHash = pNode->GetNameHash(); 2094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwNameHash != pNode->GetNameHash()) 2114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iCount++; 2144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iCount > iIndex) 2154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNode; 2164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 2184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid InsertItem(CXFA_Node* pInstMgrNode, 2214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewInstance, 2224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iPos, 2234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = -1, 2244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bMoveDataBindingNodes = true) { 2254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iCount < 0) 2264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iCount = GetCount(pInstMgrNode); 2274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iPos < 0) 2284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iPos = iCount; 2294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iPos == iCount) { 2304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNextSibling = 2314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iCount > 0 2324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ? GetItem(pInstMgrNode, iCount - 1) 2334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->GetNodeItem(XFA_NODEITEM_NextSibling) 2344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : pInstMgrNode->GetNodeItem(XFA_NODEITEM_NextSibling); 2354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInstMgrNode->GetNodeItem(XFA_NODEITEM_Parent) 2364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->InsertChild(pNewInstance, pNextSibling); 2374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bMoveDataBindingNodes) { 2384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSet sNew; 2394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSet sAfter; 2404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeIteratorTemplate<CXFA_Node, 2414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_TraverseStrategy_XFAContainerNode> 2424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sIteratorNew(pNewInstance); 2434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = sIteratorNew.GetCurrent(); pNode; 2444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = sIteratorNew.MoveToNext()) { 2454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDataNode = pNode->GetBindData(); 2464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDataNode) 2474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 2484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sNew.insert(pDataNode); 2504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeIteratorTemplate<CXFA_Node, 2524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_TraverseStrategy_XFAContainerNode> 2534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sIteratorAfter(pNextSibling); 2544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = sIteratorAfter.GetCurrent(); pNode; 2554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = sIteratorAfter.MoveToNext()) { 2564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDataNode = pNode->GetBindData(); 2574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDataNode) 2584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 2594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sAfter.insert(pDataNode); 2614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ReorderDataNodes(sNew, sAfter, false); 2634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 2654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBeforeInstance = GetItem(pInstMgrNode, iPos); 2664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInstMgrNode->GetNodeItem(XFA_NODEITEM_Parent) 2674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->InsertChild(pNewInstance, pBeforeInstance); 2684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bMoveDataBindingNodes) { 2694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSet sNew; 2704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeSet sBefore; 2714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeIteratorTemplate<CXFA_Node, 2724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_TraverseStrategy_XFAContainerNode> 2734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sIteratorNew(pNewInstance); 2744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = sIteratorNew.GetCurrent(); pNode; 2754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = sIteratorNew.MoveToNext()) { 2764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDataNode = pNode->GetBindData(); 2774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDataNode) 2784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 2794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sNew.insert(pDataNode); 2814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeIteratorTemplate<CXFA_Node, 2834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_TraverseStrategy_XFAContainerNode> 2844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sIteratorBefore(pBeforeInstance); 2854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = sIteratorBefore.GetCurrent(); pNode; 2864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = sIteratorBefore.MoveToNext()) { 2874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDataNode = pNode->GetBindData(); 2884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDataNode) 2894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 2904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sBefore.insert(pDataNode); 2924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ReorderDataNodes(sNew, sBefore, true); 2944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid RemoveItem(CXFA_Node* pInstMgrNode, 2994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pRemoveInstance, 3004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bRemoveDataBinding = true) { 3014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInstMgrNode->GetNodeItem(XFA_NODEITEM_Parent)->RemoveChild(pRemoveInstance); 3024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bRemoveDataBinding) 3034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 3044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFAContainerNode> 3064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sIterator(pRemoveInstance); 3074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pFormNode = sIterator.GetCurrent(); pFormNode; 3084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFormNode = sIterator.MoveToNext()) { 3094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDataNode = pFormNode->GetBindData(); 3104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDataNode) 3114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 3124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pDataNode->RemoveBindItem(pFormNode) == 0) { 3144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (CXFA_Node* pDataParent = 3154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDataNode->GetNodeItem(XFA_NODEITEM_Parent)) { 3164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDataParent->RemoveChild(pDataNode); 3174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFormNode->SetObject(XFA_ATTRIBUTE_BindingNode, nullptr); 3204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CreateInstance(CXFA_Node* pInstMgrNode, bool bDataMerge) { 3244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Document* pDocument = pInstMgrNode->GetDocument(); 3254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pTemplateNode = pInstMgrNode->GetTemplateNode(); 3264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pFormParent = pInstMgrNode->GetNodeItem(XFA_NODEITEM_Parent); 3274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDataScope = nullptr; 3284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pRootBoundNode = pFormParent; 3294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRootBoundNode && pRootBoundNode->IsContainerNode(); 3304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRootBoundNode = pRootBoundNode->GetNodeItem(XFA_NODEITEM_Parent)) { 3314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDataScope = pRootBoundNode->GetBindData(); 3324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pDataScope) 3334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 3344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDataScope) { 3364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDataScope = ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Record)); 3374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pDataScope); 3384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pInstance = pDocument->DataMerge_CopyContainer( 3404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pTemplateNode, pFormParent, pDataScope, true, bDataMerge, true); 3414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pInstance) { 3424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDocument->DataMerge_UpdateBindingRelations(pInstance); 3434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFormParent->RemoveChild(pInstance); 3444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pInstance; 3464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannstruct XFA_ExecEventParaInfo { 3494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public: 3504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t m_uHash; 3514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const FX_WCHAR* m_lpcEventName; 3524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_EVENTTYPE m_eventType; 3534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t m_validFlags; 3544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 3554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannstatic const XFA_ExecEventParaInfo gs_eventParaInfos[] = { 3564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x02a6c55a, L"postSubmit", XFA_EVENT_PostSubmit, 0}, 3574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x0ab466bb, L"preSubmit", XFA_EVENT_PreSubmit, 0}, 3584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x109d7ce7, L"mouseEnter", XFA_EVENT_MouseEnter, 5}, 3594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x17fad373, L"postPrint", XFA_EVENT_PostPrint, 0}, 3604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x1bfc72d9, L"preOpen", XFA_EVENT_PreOpen, 7}, 3614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x2196a452, L"initialize", XFA_EVENT_Initialize, 1}, 3624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x27410f03, L"mouseExit", XFA_EVENT_MouseExit, 5}, 3634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x33c43dec, L"docClose", XFA_EVENT_DocClose, 0}, 3644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x361fa1b6, L"preSave", XFA_EVENT_PreSave, 0}, 3654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x36f1c6d8, L"preSign", XFA_EVENT_PreSign, 6}, 3664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x4731d6ba, L"exit", XFA_EVENT_Exit, 2}, 3674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x56bf456b, L"docReady", XFA_EVENT_DocReady, 0}, 3684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x7233018a, L"validate", XFA_EVENT_Validate, 1}, 3694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x8808385e, L"indexChange", XFA_EVENT_IndexChange, 3}, 3704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x891f4606, L"change", XFA_EVENT_Change, 4}, 3714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x9528a7b4, L"prePrint", XFA_EVENT_PrePrint, 0}, 3724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0x9f693b21, L"mouseDown", XFA_EVENT_MouseDown, 5}, 3734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0xcdce56b3, L"full", XFA_EVENT_Full, 4}, 3744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0xd576d08e, L"mouseUp", XFA_EVENT_MouseUp, 5}, 3754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0xd95657a6, L"click", XFA_EVENT_Click, 4}, 3764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0xdbfbe02e, L"calculate", XFA_EVENT_Calculate, 1}, 3774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0xe25fa7b8, L"postOpen", XFA_EVENT_PostOpen, 7}, 3784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0xe28dce7e, L"enter", XFA_EVENT_Enter, 2}, 3794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0xfc82d695, L"postSave", XFA_EVENT_PostSave, 0}, 3804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann {0xfd54fbb7, L"postSign", XFA_EVENT_PostSign, 6}, 3814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 3824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst XFA_ExecEventParaInfo* GetEventParaInfoByName( 3844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideStringC& wsEventName) { 3854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t uHash = FX_HashCode_GetW(wsEventName, false); 3864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iStart = 0; 3874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iEnd = (sizeof(gs_eventParaInfos) / sizeof(gs_eventParaInfos[0])) - 1; 3884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann do { 3894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iMid = (iStart + iEnd) / 2; 3904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ExecEventParaInfo* eventParaInfo = &gs_eventParaInfos[iMid]; 3914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (uHash == eventParaInfo->m_uHash) 3924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return eventParaInfo; 3934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (uHash < eventParaInfo->m_uHash) 3944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iEnd = iMid - 1; 3954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann else 3964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iStart = iMid + 1; 3974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } while (iStart <= iEnd); 3984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 3994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid StrToRGB(const CFX_WideString& strRGB, 4024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t& r, 4034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t& g, 4044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t& b) { 4054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann r = 0; 4064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann g = 0; 4074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann b = 0; 4084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_WCHAR zero = '0'; 4104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = 0; 4114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLen = strRGB.GetLength(); 4124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < iLen; ++i) { 4134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_WCHAR ch = strRGB.GetAt(i); 4144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (ch == L',') 4154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ++iIndex; 4164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iIndex > 2) 4174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 4184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iValue = ch - zero; 4204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iValue >= 0 && iValue <= 9) { 4214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (iIndex) { 4224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 0: 4234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann r = r * 10 + iValue; 4244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 4254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 1: 4264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann g = g * 10 + iValue; 4274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 4284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 4294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann b = b * 10 + iValue; 4304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 4314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannenum XFA_KEYTYPE { 4374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_KEYTYPE_Custom, 4384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_KEYTYPE_Element, 4394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 4404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid* GetMapKey_Custom(const CFX_WideStringC& wsKey) { 4424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwKey = FX_HashCode_GetW(wsKey, false); 4434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return (void*)(uintptr_t)((dwKey << 1) | XFA_KEYTYPE_Custom); 4444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid* GetMapKey_Element(XFA_Element eType, XFA_ATTRIBUTE eAttribute) { 4474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return (void*)(uintptr_t)((static_cast<int32_t>(eType) << 16) | 4484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (eAttribute << 8) | XFA_KEYTYPE_Element); 4494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst XFA_ATTRIBUTEINFO* GetAttributeOfElement(XFA_Element eElement, 4524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute, 4534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwPacket) { 4544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = 0; 4554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const uint8_t* pAttr = XFA_GetElementAttributes(eElement, iCount); 4564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pAttr || iCount < 1) 4574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 4584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!std::binary_search(pAttr, pAttr + iCount, eAttribute)) 4604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 4614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttribute); 4634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pInfo); 4644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwPacket == XFA_XDPPACKET_UNKNOWN) 4654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pInfo; 4664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return (dwPacket & pInfo->dwPackets) ? pInfo : nullptr; 4674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst XFA_ATTRIBUTEENUMINFO* GetAttributeEnumByID(XFA_ATTRIBUTEENUM eName) { 4704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return g_XFAEnumData + eName; 4714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} // namespace 4744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannstatic void XFA_DefaultFreeData(void* pData) {} 4764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannstatic XFA_MAPDATABLOCKCALLBACKINFO gs_XFADefaultFreeData = { 4784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_DefaultFreeData, nullptr}; 4794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannXFA_MAPMODULEDATA::XFA_MAPMODULEDATA() {} 4814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannXFA_MAPMODULEDATA::~XFA_MAPMODULEDATA() {} 4834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node::CXFA_Node(CXFA_Document* pDoc, 4854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint16_t ePacket, 4864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ObjectType oType, 4874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eType, 4884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideStringC& elementName) 4894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : CXFA_Object(pDoc, oType, eType, elementName), 4904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pNext(nullptr), 4914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pChild(nullptr), 4924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pLastChild(nullptr), 4934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pParent(nullptr), 4944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pXMLNode(nullptr), 4954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_ePacket(ePacket), 4964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_uNodeFlags(XFA_NodeFlag_None), 4974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_dwNameHash(0), 4984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pAuxNode(nullptr), 4994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pMapModuleData(nullptr) { 5004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(m_pDocument); 5014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node::~CXFA_Node() { 5044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(!m_pParent); 5054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann RemoveMapModuleKey(); 5064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = m_pChild; 5074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pNode) { 5084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNext = pNode->m_pNext; 5094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pParent = nullptr; 5104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann delete pNode; 5114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNext; 5124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_pXMLNode && IsOwnXMLNode()) 5145ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann delete m_pXMLNode; 5154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::Clone(bool bRecursive) { 5184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pClone = m_pDocument->CreateNode(m_ePacket, m_elementType); 5194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pClone) 5204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 5214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MergeAllData(pClone); 5234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->UpdateNameHash(); 5244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (IsNeedSavingXMLNode()) { 5254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pCloneXML = nullptr; 5264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (IsAttributeInXML()) { 5274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsName; 5284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetAttribute(XFA_ATTRIBUTE_Name, wsName, false); 5294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLElement* pCloneXMLElement = new CFDE_XMLElement(wsName); 5304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsValue = GetCData(XFA_ATTRIBUTE_Value); 5314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!wsValue.IsEmpty()) { 5324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pCloneXMLElement->SetTextData(CFX_WideString(wsValue)); 5334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pCloneXML = pCloneXMLElement; 5354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pCloneXMLElement = nullptr; 5364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->SetEnum(XFA_ATTRIBUTE_Contains, XFA_ATTRIBUTEENUM_Unknown); 5374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 5384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pCloneXML = m_pXMLNode->Clone(false); 5394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->SetXMLMappingNode(pCloneXML); 5414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->SetFlag(XFA_NodeFlag_OwnXMLNode, false); 5424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bRecursive) { 5444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pChild = GetNodeItem(XFA_NODEITEM_FirstChild); pChild; 5454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { 5464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->InsertChild(pChild->Clone(bRecursive)); 5474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->SetFlag(XFA_NodeFlag_Initialized, true); 5504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->SetObject(XFA_ATTRIBUTE_BindingNode, nullptr); 5514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pClone; 5524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetNodeItem(XFA_NODEITEM eItem) const { 5554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (eItem) { 5564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_NODEITEM_NextSibling: 5574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pNext; 5584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_NODEITEM_FirstChild: 5594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pChild; 5604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_NODEITEM_Parent: 5614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pParent; 5624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_NODEITEM_PrevSibling: 5634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_pParent) { 5644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pSibling = m_pParent->m_pChild; 5654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pPrev = nullptr; 5664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pSibling && pSibling != this) { 5674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPrev = pSibling; 5684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSibling = pSibling->m_pNext; 5694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pPrev; 5714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 5734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 5744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 5754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 5774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetNodeItem(XFA_NODEITEM eItem, 5804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ObjectType eType) const { 5814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = nullptr; 5824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (eItem) { 5834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_NODEITEM_NextSibling: 5844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = m_pNext; 5854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pNode && pNode->GetObjectType() != eType) 5864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->m_pNext; 5874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 5884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_NODEITEM_FirstChild: 5894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = m_pChild; 5904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pNode && pNode->GetObjectType() != eType) 5914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->m_pNext; 5924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 5934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_NODEITEM_Parent: 5944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = m_pParent; 5954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pNode && pNode->GetObjectType() != eType) 5964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->m_pParent; 5974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 5984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_NODEITEM_PrevSibling: 5994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_pParent) { 6004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pSibling = m_pParent->m_pChild; 6014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pSibling && pSibling != this) { 6024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == pSibling->GetObjectType()) 6034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pSibling; 6044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSibling = pSibling->m_pNext; 6064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 6094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 6104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 6114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNode; 6134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::GetNodeList(CXFA_NodeArray& nodes, 6164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwTypeFilter, 6174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eTypeFilter, 6184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLevel) { 6194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (--iLevel < 0) { 6204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nodes.GetSize(); 6214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eTypeFilter != XFA_Element::Unknown) { 6234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pChild = m_pChild; 6244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pChild) { 6254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pChild->GetElementType() == eTypeFilter) { 6264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nodes.Add(pChild); 6274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLevel > 0) { 6284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetNodeList(nodes, dwTypeFilter, eTypeFilter, iLevel); 6294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChild = pChild->m_pNext; 6324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (dwTypeFilter == 6344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (XFA_NODEFILTER_Children | XFA_NODEFILTER_Properties)) { 6354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pChild = m_pChild; 6364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pChild) { 6374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nodes.Add(pChild); 6384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLevel > 0) { 6394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetNodeList(nodes, dwTypeFilter, eTypeFilter, iLevel); 6404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChild = pChild->m_pNext; 6424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (dwTypeFilter != 0) { 6444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bFilterChildren = !!(dwTypeFilter & XFA_NODEFILTER_Children); 6454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bFilterProperties = !!(dwTypeFilter & XFA_NODEFILTER_Properties); 6464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bFilterOneOfProperties = 6474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann !!(dwTypeFilter & XFA_NODEFILTER_OneOfProperty); 6484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pChild = m_pChild; 6494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pChild) { 6504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_PROPERTY* pProperty = XFA_GetPropertyOfElement( 6514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetElementType(), pChild->GetElementType(), XFA_XDPPACKET_UNKNOWN); 6524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pProperty) { 6534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bFilterProperties) { 6544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nodes.Add(pChild); 6554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (bFilterOneOfProperties && 6564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (pProperty->uFlags & XFA_PROPERTYFLAG_OneOf)) { 6574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nodes.Add(pChild); 6584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (bFilterChildren && 6594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (pChild->GetElementType() == XFA_Element::Variables || 6604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChild->GetElementType() == XFA_Element::PageSet)) { 6614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nodes.Add(pChild); 6624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (bFilterChildren) { 6644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nodes.Add(pChild); 6654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChild = pChild->m_pNext; 6674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bFilterOneOfProperties && nodes.GetSize() < 1) { 6694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iProperties = 0; 6704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_PROPERTY* pProperty = 6714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_GetElementProperties(GetElementType(), iProperties); 6724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pProperty || iProperties < 1) 6734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 0; 6744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < iProperties; i++) { 6754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pProperty[i].uFlags & XFA_PROPERTYFLAG_DefaultOneOf) { 6764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_PACKETINFO* pPacket = XFA_GetPacketByID(GetPacketID()); 6774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewNode = 6784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->CreateNode(pPacket, pProperty[i].eName); 6794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNewNode) 6804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 6814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertChild(pNewNode, nullptr); 6824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNewNode->SetFlag(XFA_NodeFlag_Initialized, true); 6834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nodes.Add(pNewNode); 6844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 6854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nodes.GetSize(); 6904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::CreateSamePacketNode(XFA_Element eType, 6934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags) { 6944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = m_pDocument->CreateNode(m_ePacket, eType); 6954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->SetFlag(dwFlags, true); 6964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNode; 6974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::CloneTemplateToForm(bool bRecursive) { 7004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(m_ePacket == XFA_XDPPACKET_Template); 7014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pClone = 7024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->CreateNode(XFA_XDPPACKET_Form, m_elementType); 7034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pClone) 7044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 7054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->SetTemplateNode(this); 7074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->UpdateNameHash(); 7084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->SetXMLMappingNode(GetXMLMappingNode()); 7094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bRecursive) { 7104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pChild = GetNodeItem(XFA_NODEITEM_FirstChild); pChild; 7114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { 7124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->InsertChild(pChild->CloneTemplateToForm(bRecursive)); 7134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pClone->SetFlag(XFA_NodeFlag_Initialized, true); 7164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pClone; 7174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetTemplateNode() const { 7204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pAuxNode; 7214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::SetTemplateNode(CXFA_Node* pTemplateNode) { 7244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pAuxNode = pTemplateNode; 7254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetBindData() { 7284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(GetPacketID() == XFA_XDPPACKET_Form); 7294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); 7304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::GetBindItems(CXFA_NodeArray& formItems) { 7334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (BindsFormItems()) { 7344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray* pItems = nullptr; 7354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann TryObject(XFA_ATTRIBUTE_BindingNode, (void*&)pItems); 7364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann formItems.Copy(*pItems); 7374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return formItems.GetSize(); 7384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pFormNode = 7404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); 7414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pFormNode) 7424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann formItems.Add(pFormNode); 7434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return formItems.GetSize(); 7444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::AddBindItem(CXFA_Node* pFormNode) { 7474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pFormNode); 7484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (BindsFormItems()) { 7494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray* pItems = nullptr; 7504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann TryObject(XFA_ATTRIBUTE_BindingNode, (void*&)pItems); 7514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pItems); 7524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pItems->Find(pFormNode) < 0) { 7534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItems->Add(pFormNode); 7544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pItems->GetSize(); 7564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pOldFormItem = 7584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); 7594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pOldFormItem) { 7604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetObject(XFA_ATTRIBUTE_BindingNode, pFormNode); 7614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 1; 7624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pOldFormItem == pFormNode) { 7634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 1; 7644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray* pItems = new CXFA_NodeArray; 7664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetObject(XFA_ATTRIBUTE_BindingNode, pItems, &deleteBindItemCallBack); 7674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItems->Add(pOldFormItem); 7684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItems->Add(pFormNode); 7694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_uNodeFlags |= XFA_NodeFlag_BindFormItems; 7704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 2; 7714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::RemoveBindItem(CXFA_Node* pFormNode) { 7744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (BindsFormItems()) { 7754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray* pItems = nullptr; 7764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann TryObject(XFA_ATTRIBUTE_BindingNode, (void*&)pItems); 7774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pItems); 7784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = pItems->Find(pFormNode); 7794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = pItems->GetSize(); 7804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iIndex >= 0) { 7814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iIndex != iCount - 1) 7824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItems->SetAt(iIndex, pItems->GetAt(iCount - 1)); 7834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItems->RemoveAt(iCount - 1); 7844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iCount == 2) { 7854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pLastFormNode = pItems->GetAt(0); 7864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetObject(XFA_ATTRIBUTE_BindingNode, pLastFormNode); 7874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_uNodeFlags &= ~XFA_NodeFlag_BindFormItems; 7884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iCount--; 7904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return iCount; 7924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pOldFormItem = 7944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); 7954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pOldFormItem == pFormNode) { 7964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetObject(XFA_ATTRIBUTE_BindingNode, nullptr); 7974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pOldFormItem = nullptr; 7984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pOldFormItem ? 1 : 0; 8004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::HasBindItem() { 8034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return GetPacketID() == XFA_XDPPACKET_Datasets && 8044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetObject(XFA_ATTRIBUTE_BindingNode); 8054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_WidgetData* CXFA_Node::GetWidgetData() { 8084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return (CXFA_WidgetData*)GetObject(XFA_ATTRIBUTE_WidgetData); 8094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_WidgetData* CXFA_Node::GetContainerWidgetData() { 8124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetPacketID() != XFA_XDPPACKET_Form) 8134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 8144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eType = GetElementType(); 8154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::ExclGroup) 8164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 8174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); 8184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParentNode && pParentNode->GetElementType() == XFA_Element::ExclGroup) 8194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 8204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::Field) { 8224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pFieldWidgetData = GetWidgetData(); 8234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pFieldWidgetData && 8244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFieldWidgetData->GetChoiceListOpen() == 8254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTEENUM_MultiSelect) { 8264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 8274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 8284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsPicture; 8294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pFieldWidgetData) { 8304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFieldWidgetData->GetPictureContent(wsPicture, 8314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_VALUEPICTURE_DataBind); 8324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!wsPicture.IsEmpty()) 8344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pFieldWidgetData; 8354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDataNode = GetBindData(); 8364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDataNode) 8374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 8384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFieldWidgetData = nullptr; 8394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray formNodes; 8404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDataNode->GetBindItems(formNodes); 8414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < formNodes.GetSize(); i++) { 8424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pFormNode = formNodes.GetAt(i); 8434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pFormNode || pFormNode->HasRemovedChildren()) 8444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 8454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFieldWidgetData = pFormNode->GetWidgetData(); 8464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pFieldWidgetData) { 8474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFieldWidgetData->GetPictureContent(wsPicture, 8484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_VALUEPICTURE_DataBind); 8494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!wsPicture.IsEmpty()) 8514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 8524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFieldWidgetData = nullptr; 8534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pFieldWidgetData; 8554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pGrandNode = 8584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentNode ? pParentNode->GetNodeItem(XFA_NODEITEM_Parent) : nullptr; 8594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pValueNode = 8604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (pParentNode && pParentNode->GetElementType() == XFA_Element::Value) 8614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ? pParentNode 8624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : nullptr; 8634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pValueNode) { 8644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValueNode = 8654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (pGrandNode && pGrandNode->GetElementType() == XFA_Element::Value) 8664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ? pGrandNode 8674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : nullptr; 8684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParentOfValueNode = 8704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValueNode ? pValueNode->GetNodeItem(XFA_NODEITEM_Parent) : nullptr; 8714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pParentOfValueNode ? pParentOfValueNode->GetContainerWidgetData() 8724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : nullptr; 8734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 8744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::GetLocaleName(CFX_WideString& wsLocaleName) { 8764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pForm = GetDocument()->GetXFAObject(XFA_HASHCODE_Form)->AsNode(); 8774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pTopSubform = pForm->GetFirstChildByClass(XFA_Element::Subform); 8784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pTopSubform); 8794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pLocaleNode = this; 8804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bLocale = false; 8814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann do { 8824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bLocale = pLocaleNode->TryCData(XFA_ATTRIBUTE_Locale, wsLocaleName, false); 8834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bLocale) { 8844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pLocaleNode = pLocaleNode->GetNodeItem(XFA_NODEITEM_Parent); 8854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } while (pLocaleNode && pLocaleNode != pTopSubform && !bLocale); 8874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bLocale) 8884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 8894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pConfig = ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Config)); 8904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsLocaleName = GetDocument()->GetLocalMgr()->GetConfigLocaleName(pConfig); 8914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!wsLocaleName.IsEmpty()) 8924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 8934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pTopSubform && 8944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pTopSubform->TryCData(XFA_ATTRIBUTE_Locale, wsLocaleName, false)) { 8954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 8964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 8974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann IFX_Locale* pLocale = GetDocument()->GetLocalMgr()->GetDefLocale(); 8984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pLocale) { 8994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsLocaleName = pLocale->GetName(); 9004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 9014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 9034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannXFA_ATTRIBUTEENUM CXFA_Node::GetIntact() { 9064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pKeep = GetFirstChildByClass(XFA_Element::Keep); 9074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTEENUM eLayoutType = GetEnum(XFA_ATTRIBUTE_Layout); 9084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pKeep) { 9094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTEENUM eIntact; 9104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pKeep->TryEnum(XFA_ATTRIBUTE_Intact, eIntact, false)) { 9114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eIntact == XFA_ATTRIBUTEENUM_None && 9124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eLayoutType == XFA_ATTRIBUTEENUM_Row && 9134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetCurVersionMode() < XFA_VERSION_208) { 9144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pPreviewRow = GetNodeItem(XFA_NODEITEM_PrevSibling, 9154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ObjectType::ContainerNode); 9164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPreviewRow && 9174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPreviewRow->GetEnum(XFA_ATTRIBUTE_Layout) == 9184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTEENUM_Row) { 9194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTEENUM eValue; 9204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pKeep->TryEnum(XFA_ATTRIBUTE_Previous, eValue, false) && 9214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (eValue == XFA_ATTRIBUTEENUM_ContentArea || 9224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eValue == XFA_ATTRIBUTEENUM_PageArea)) { 9234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_ContentArea; 9244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = 9264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPreviewRow->GetFirstChildByClass(XFA_Element::Keep); 9274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode && pNode->TryEnum(XFA_ATTRIBUTE_Next, eValue, false) && 9284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (eValue == XFA_ATTRIBUTEENUM_ContentArea || 9294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eValue == XFA_ATTRIBUTEENUM_PageArea)) { 9304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_ContentArea; 9314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return eIntact; 9354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetElementType()) { 9384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Subform: 9394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (eLayoutType) { 9404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTEENUM_Position: 9414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTEENUM_Row: 9424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_ContentArea; 9434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTEENUM_Tb: 9444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTEENUM_Table: 9454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTEENUM_Lr_tb: 9464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTEENUM_Rl_tb: 9474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_None; 9484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 9494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 9504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 9524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Field: { 9534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); 9544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pParentNode || 9554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentNode->GetElementType() == XFA_Element::PageArea) 9564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_ContentArea; 9574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParentNode->GetIntact() == XFA_ATTRIBUTEENUM_None) { 9584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTEENUM eParLayout = 9594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentNode->GetEnum(XFA_ATTRIBUTE_Layout); 9604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eParLayout == XFA_ATTRIBUTEENUM_Position || 9614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eParLayout == XFA_ATTRIBUTEENUM_Row || 9624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eParLayout == XFA_ATTRIBUTEENUM_Table) { 9634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_None; 9644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_VERSION version = m_pDocument->GetCurVersionMode(); 9664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eParLayout == XFA_ATTRIBUTEENUM_Tb && version < XFA_VERSION_208) { 9674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Measurement measureH; 9684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (TryMeasure(XFA_ATTRIBUTE_H, measureH, false)) 9694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_ContentArea; 9704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_None; 9724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_ContentArea; 9744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Draw: 9764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_ContentArea; 9774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 9784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 9794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 9804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_ATTRIBUTEENUM_None; 9814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetDataDescriptionNode() { 9844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_ePacket == XFA_XDPPACKET_Datasets) 9854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pAuxNode; 9864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 9874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::SetDataDescriptionNode(CXFA_Node* pDataDescriptionNode) { 9904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(m_ePacket == XFA_XDPPACKET_Datasets); 9914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pAuxNode = pDataDescriptionNode; 9924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 9934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_TreeClass_ResolveNode(CFXJSE_Arguments* pArguments) { 9954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 9964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 9974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"resolveNode"); 9984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 9994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsExpression = 10014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); 10024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); 10034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pScriptContext) 10044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 10054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* refNode = this; 10064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (refNode->GetElementType() == XFA_Element::Xfa) 10074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann refNode = ToNode(pScriptContext->GetThisObject()); 10084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Attributes | 10094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | 10104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_Siblings; 10114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_RS resoveNodeRS; 10124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = pScriptContext->ResolveObjects( 10134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann refNode, wsExpression.AsStringC(), resoveNodeRS, dwFlag); 10144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iRet < 1) { 10154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 10164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 10174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { 10194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Object* pNode = resoveNodeRS.nodes[0]; 10204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->Assign( 10214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pScriptContext->GetJSValueFromMap(pNode)); 10224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 10234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo = 10244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann resoveNodeRS.pScriptAttribute; 10254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (lpAttributeInfo && lpAttributeInfo->eValueType == XFA_SCRIPT_Object) { 10264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<CFXJSE_Value> pValue( 10274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CFXJSE_Value(pScriptContext->GetRuntime())); 10284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (resoveNodeRS.nodes[0]->*(lpAttributeInfo->lpfnCallback))( 10294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue.get(), false, (XFA_ATTRIBUTE)lpAttributeInfo->eAttribute); 10304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->Assign(pValue.get()); 10314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 10324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 10334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_TreeClass_ResolveNodes(CFXJSE_Arguments* pArguments) { 10384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 10394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 10404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"resolveNodes"); 10414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 10424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsExpression = 10444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); 10454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Value* pValue = pArguments->GetReturnValue(); 10464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pValue) 10474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 10484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Attributes | 10494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | 10504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_Siblings; 10514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* refNode = this; 10524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (refNode->GetElementType() == XFA_Element::Xfa) 10534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann refNode = ToNode(m_pDocument->GetScriptContext()->GetThisObject()); 10544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Som_ResolveNodeList(pValue, wsExpression, dwFlag, refNode); 10554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_ResolveNodeList(CFXJSE_Value* pValue, 10584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsExpression, 10594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlag, 10604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* refNode) { 10614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); 10624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pScriptContext) 10634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 10644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_RS resoveNodeRS; 10654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!refNode) 10664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann refNode = this; 10674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pScriptContext->ResolveObjects(refNode, wsExpression.AsStringC(), 10684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann resoveNodeRS, dwFlag); 10694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ArrayNodeList* pNodeList = new CXFA_ArrayNodeList(m_pDocument); 10704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { 10714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < resoveNodeRS.nodes.GetSize(); i++) { 10724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (resoveNodeRS.nodes[i]->IsNode()) 10734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNodeList->Append(resoveNodeRS.nodes[i]->AsNode()); 10744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 10764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ValueArray valueArray(pScriptContext->GetRuntime()); 10774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (resoveNodeRS.GetAttributeResult(valueArray) > 0) { 10784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ObjArray objectArray; 10794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann valueArray.GetAttributeObject(objectArray); 10804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < objectArray.GetSize(); i++) { 10814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (objectArray[i]->IsNode()) 10824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNodeList->Append(objectArray[i]->AsNode()); 10834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetObject(pNodeList, pScriptContext->GetJseNormalClass()); 10874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 10884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_TreeClass_All(CFXJSE_Value* pValue, 10904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 10914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 10924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 10934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 10944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 10954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 10964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_ALL; 10984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsName; 10994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetAttribute(XFA_ATTRIBUTE_Name, wsName); 11005ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann CFX_WideString wsExpression = wsName + L"[*]"; 11014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Som_ResolveNodeList(pValue, wsExpression, dwFlag); 11024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_TreeClass_Nodes(CFXJSE_Value* pValue, 11054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 11064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 11074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); 11084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pScriptContext) 11094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 11104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 11114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsMessage = L"Unable to set "; 11125ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann FXJSE_ThrowMessage(wsMessage.UTF8Encode().AsStringC()); 11134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 11144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_AttachNodeList* pNodeList = new CXFA_AttachNodeList(m_pDocument, this); 11154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetObject(pNodeList, pScriptContext->GetJseNormalClass()); 11164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_TreeClass_ClassAll(CFXJSE_Value* pValue, 11204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 11214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 11224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 11234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 11244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 11254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_ALL; 11275ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann CFX_WideString wsExpression = L"#" + GetClassName() + L"[*]"; 11284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Som_ResolveNodeList(pValue, wsExpression, dwFlag); 11294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_TreeClass_Parent(CFXJSE_Value* pValue, 11324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 11334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 11344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 11354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 11364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 11374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParent = GetNodeItem(XFA_NODEITEM_Parent); 11394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParent) { 11404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->Assign(m_pDocument->GetScriptContext()->GetJSValueFromMap(pParent)); 11414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 11424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetNull(); 11434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_TreeClass_Index(CFXJSE_Value* pValue, 11474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 11484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 11494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 11504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 11514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 11524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(GetNodeSameNameIndex()); 11544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_TreeClass_ClassIndex(CFXJSE_Value* pValue, 11574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 11584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 11594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 11604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 11614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 11624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(GetNodeSameClassIndex()); 11644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_TreeClass_SomExpression(CFXJSE_Value* pValue, 11674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 11684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 11694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 11704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 11714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 11724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsSOMExpression; 11744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetSOMExpression(wsSOMExpression); 11755ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsSOMExpression.UTF8Encode().AsStringC()); 11764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_ApplyXSL(CFXJSE_Arguments* pArguments) { 11794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 11804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 11814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"applyXSL"); 11824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 11834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsExpression = 11854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); 11864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(weili): check whether we need to implement this, pdfium:501. 11874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // For now, just put the variables here to avoid unused variable warning. 11884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (void)wsExpression; 11894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 11904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_AssignNode(CFXJSE_Arguments* pArguments) { 11924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 11934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 1 || iLength > 3) { 11944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"assignNode"); 11954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 11964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 11974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsExpression; 11984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 11994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iAction = 0; 12004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsExpression = 12014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); 12024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 2) { 12034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = 12044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(1).AsStringC()); 12054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 3) 12074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iAction = pArguments->GetInt32(2); 12084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(weili): check whether we need to implement this, pdfium:501. 12094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // For now, just put the variables here to avoid unused variable warning. 12104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (void)wsExpression; 12114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (void)wsValue; 12124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (void)iAction; 12134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_Clone(CFXJSE_Arguments* pArguments) { 12164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 12174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 12184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"clone"); 12194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 12204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bClone = !!pArguments->GetInt32(0); 12224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pCloneNode = Clone(bClone); 12234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->Assign( 12244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(pCloneNode)); 12254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_GetAttribute(CFXJSE_Arguments* pArguments) { 12284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 12294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 12304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"getAttribute"); 12314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 12324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsExpression = 12344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); 12354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 12364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetAttribute(wsExpression.AsStringC(), wsValue); 12374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Value* pValue = pArguments->GetReturnValue(); 12384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue) 12395ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsValue.UTF8Encode().AsStringC()); 12404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_GetElement(CFXJSE_Arguments* pArguments) { 12434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 12444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 1 || iLength > 2) { 12454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"getElement"); 12464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 12474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsExpression; 12494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iValue = 0; 12504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsExpression = 12514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); 12524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 2) 12534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iValue = pArguments->GetInt32(1); 12544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = 12554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetProperty(iValue, XFA_GetElementTypeForName(wsExpression.AsStringC())); 12564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->Assign( 12574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(pNode)); 12584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_IsPropertySpecified( 12614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Arguments* pArguments) { 12624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 12634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 1 || iLength > 3) { 12644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"isPropertySpecified"); 12654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 12664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsExpression; 12684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bParent = true; 12694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = 0; 12704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsExpression = 12714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); 12724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 2) 12734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bParent = !!pArguments->GetInt32(1); 12744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 3) 12754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iIndex = pArguments->GetInt32(2); 12764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bHas = false; 12774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEINFO* pAttributeInfo = 12784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_GetAttributeByName(wsExpression.AsStringC()); 12794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 12804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pAttributeInfo) 12814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bHas = HasAttribute(pAttributeInfo->eName); 12824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bHas) { 12834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eType = XFA_GetElementTypeForName(wsExpression.AsStringC()); 12844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bHas = !!GetProperty(iIndex, eType); 12854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bHas && bParent && m_pParent) { 12864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Also check on the parent. 12874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bHas = m_pParent->HasAttribute(pAttributeInfo->eName); 12884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bHas) 12894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bHas = !!m_pParent->GetProperty(iIndex, eType); 12904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 12924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Value* pValue = pArguments->GetReturnValue(); 12934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue) 12944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetBoolean(bHas); 12954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_LoadXML(CFXJSE_Arguments* pArguments) { 12984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 12994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 1 || iLength > 3) { 13004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"loadXML"); 13014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 13024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsExpression; 13044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bIgnoreRoot = true; 13054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bOverwrite = 0; 13064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsExpression = 13074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); 13084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsExpression.IsEmpty()) 13094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 13104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 2) 13114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bIgnoreRoot = !!pArguments->GetInt32(1); 13124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 3) 13134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bOverwrite = !!pArguments->GetInt32(2); 13144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<CXFA_SimpleParser> pParser( 13154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CXFA_SimpleParser(m_pDocument, false)); 13164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pParser) 13174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 13184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLNode = nullptr; 13194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iParserStatus = 13204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParser->ParseXMLData(wsExpression, pXMLNode, nullptr); 13214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iParserStatus != XFA_PARSESTATUS_Done || !pXMLNode) 13224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 13234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bIgnoreRoot && 13244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (pXMLNode->GetType() != FDE_XMLNODE_Element || 13254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RecognizeRichText(static_cast<CFDE_XMLElement*>(pXMLNode)))) { 13264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bIgnoreRoot = false; 13274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pFakeRoot = Clone(false); 13294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsContentType = GetCData(XFA_ATTRIBUTE_ContentType); 13304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!wsContentType.IsEmpty()) { 13314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeRoot->SetCData(XFA_ATTRIBUTE_ContentType, 13324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString(wsContentType)); 13334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pFakeXMLRoot = pFakeRoot->GetXMLMappingNode(); 13354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pFakeXMLRoot) { 13364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pThisXMLRoot = GetXMLMappingNode(); 13374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeXMLRoot = pThisXMLRoot ? pThisXMLRoot->Clone(false) : nullptr; 13384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pFakeXMLRoot) 13404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeXMLRoot = new CFDE_XMLElement(CFX_WideString(GetClassName())); 13414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bIgnoreRoot) { 13434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLChild = pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild); 13444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pXMLChild) { 13454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLSibling = 13464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling); 13474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pXMLNode->RemoveChildNode(pXMLChild); 13484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeXMLRoot->InsertChildNode(pXMLChild); 13494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pXMLChild = pXMLSibling; 13504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 13524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLParent = pXMLNode->GetNodeItem(CFDE_XMLNode::Parent); 13534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pXMLParent) { 13544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pXMLParent->RemoveChildNode(pXMLNode); 13554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeXMLRoot->InsertChildNode(pXMLNode); 13574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParser->ConstructXFANode(pFakeRoot, pFakeXMLRoot); 13594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeRoot = pParser->GetRootNode(); 13604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pFakeRoot) { 13614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bOverwrite) { 13624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pChild = GetNodeItem(XFA_NODEITEM_FirstChild); 13634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewChild = pFakeRoot->GetNodeItem(XFA_NODEITEM_FirstChild); 13644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t index = 0; 13654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pNewChild) { 13664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pItem = pNewChild->GetNodeItem(XFA_NODEITEM_NextSibling); 13674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeRoot->RemoveChild(pNewChild); 13684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertChild(index++, pNewChild); 13694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNewChild->SetFlag(XFA_NodeFlag_Initialized, true); 13704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNewChild = pItem; 13714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pChild) { 13734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pItem = pChild->GetNodeItem(XFA_NODEITEM_NextSibling); 13744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann RemoveChild(pChild); 13754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeRoot->InsertChild(pChild); 13764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChild = pItem; 13774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetPacketID() == XFA_XDPPACKET_Form && 13794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetElementType() == XFA_Element::ExData) { 13804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pTempXMLNode = GetXMLMappingNode(); 13814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetXMLMappingNode(pFakeXMLRoot); 13824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetFlag(XFA_NodeFlag_OwnXMLNode, false); 13834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pTempXMLNode && !pTempXMLNode->GetNodeItem(CFDE_XMLNode::Parent)) { 13844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeXMLRoot = pTempXMLNode; 13854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 13864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeXMLRoot = nullptr; 13874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MoveBufferMapData(pFakeRoot, this, XFA_CalcData, true); 13904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 13914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pChild = pFakeRoot->GetNodeItem(XFA_NODEITEM_FirstChild); 13924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pChild) { 13934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pItem = pChild->GetNodeItem(XFA_NODEITEM_NextSibling); 13944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeRoot->RemoveChild(pChild); 13954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertChild(pChild); 13964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChild->SetFlag(XFA_NodeFlag_Initialized, true); 13974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChild = pItem; 13984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 13994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pFakeXMLRoot) { 14014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeRoot->SetXMLMappingNode(pFakeXMLRoot); 14024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeRoot->SetFlag(XFA_NodeFlag_OwnXMLNode, false); 14034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFakeRoot->SetFlag(XFA_NodeFlag_HasRemovedChildren, false); 14054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 14065ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann delete pFakeXMLRoot; 14075ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pFakeXMLRoot = nullptr; 14084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_SaveFilteredXML(CFXJSE_Arguments* pArguments) { 14124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(weili): Check whether we need to implement this, pdfium:501. 14134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_SaveXML(CFXJSE_Arguments* pArguments) { 14164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 14174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 0 || iLength > 1) { 14184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"saveXML"); 14194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 14204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bPrettyMode = false; 14224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength == 1) { 14234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetUTF8String(0) != "pretty") { 14244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowArgumentMismatchException(); 14254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 14264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bPrettyMode = true; 14284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteStringC bsXMLHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 14304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetPacketID() == XFA_XDPPACKET_Form || 14314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetPacketID() == XFA_XDPPACKET_Datasets) { 14324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pElement = nullptr; 14334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetPacketID() == XFA_XDPPACKET_Datasets) { 14344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pElement = GetXMLMappingNode(); 14354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pElement || pElement->GetType() != FDE_XMLNODE_Element) { 14364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetString(bsXMLHeader); 14374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 14384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_DataExporter_DealWithDataGroupNode(this); 14404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_RetainPtr<IFX_MemoryStream> pMemoryStream = 14424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann IFX_MemoryStream::Create(true); 14434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Note: ambiguious below without static_cast. 14454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_RetainPtr<IFGAS_Stream> pStream = IFGAS_Stream::CreateStream( 14464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_RetainPtr<IFX_SeekableWriteStream>(pMemoryStream), 14474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_STREAMACCESS_Text | FX_STREAMACCESS_Write | FX_STREAMACCESS_Append); 14484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pStream) { 14504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetString(bsXMLHeader); 14514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 14524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pStream->SetCodePage(FX_CODEPAGE_UTF8); 14544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pStream->WriteData(bsXMLHeader.raw_str(), bsXMLHeader.GetLength()); 14554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetPacketID() == XFA_XDPPACKET_Form) 14564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_DataExporter_RegenerateFormFile(this, pStream, nullptr, true); 14574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann else 14584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pElement->SaveXMLNode(pStream); 14594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(weili): Check whether we need to save pretty print XML, pdfium:501. 14604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // For now, just put it here to avoid unused variable warning. 14614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (void)bPrettyMode; 14624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetString( 14634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteStringC(pMemoryStream->GetBuffer(), pMemoryStream->GetSize())); 14644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 14654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetString(""); 14674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_SetAttribute(CFXJSE_Arguments* pArguments) { 14704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 14714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 2) { 14724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"setAttribute"); 14734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 14744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsAttributeValue = 14764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); 14774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsAttribute = 14784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(pArguments->GetUTF8String(1).AsStringC()); 14794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetAttribute(wsAttribute.AsStringC(), wsAttributeValue.AsStringC(), true); 14804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_SetElement(CFXJSE_Arguments* pArguments) { 14834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 14844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1 && iLength != 2) { 14854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"setElement"); 14864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 14874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 14884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = nullptr; 14894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsName; 14904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); 14914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength == 2) 14924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsName = CFX_WideString::FromUTF8(pArguments->GetUTF8String(1).AsStringC()); 14934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // TODO(weili): check whether we need to implement this, pdfium:501. 14944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // For now, just put the variables here to avoid unused variable warning. 14954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (void)pNode; 14964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (void)wsName; 14974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 14984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_Ns(CFXJSE_Value* pValue, 15004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 15014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 15024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 15034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 15044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 15054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsNameSpace; 15084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann TryNamespace(wsNameSpace); 15095ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsNameSpace.UTF8Encode().AsStringC()); 15104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_Model(CFXJSE_Value* pValue, 15134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 15144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 15154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 15164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 15174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 15184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->Assign( 15204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(GetModelNode())); 15214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_IsContainer(CFXJSE_Value* pValue, 15244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 15254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 15264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 15274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 15284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 15294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetBoolean(IsContainerNode()); 15314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_IsNull(CFXJSE_Value* pValue, 15344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 15354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 15364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 15374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 15384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 15394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetElementType() == XFA_Element::Subform) { 15414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetBoolean(false); 15424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 15434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString strValue; 15454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetBoolean(!TryContent(strValue) || strValue.IsEmpty()); 15464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_NodeClass_OneOfChild(CFXJSE_Value* pValue, 15494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 15504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 15514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 15524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 15534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 15544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray properts; 15574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iSize = GetNodeList(properts, XFA_NODEFILTER_OneOfProperty); 15584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iSize > 0) { 15594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->Assign( 15604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(properts[0])); 15614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ContainerClass_GetDelta(CFXJSE_Arguments* pArguments) {} 15654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ContainerClass_GetDeltas(CFXJSE_Arguments* pArguments) { 15674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ArrayNodeList* pFormNodes = new CXFA_ArrayNodeList(m_pDocument); 15684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetObject( 15694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFormNodes, m_pDocument->GetScriptContext()->GetJseNormalClass()); 15704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ModelClass_ClearErrorList(CFXJSE_Arguments* pArguments) { 15724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ModelClass_CreateNode(CFXJSE_Arguments* pArguments) { 15754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Template_CreateNode(pArguments); 15764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ModelClass_IsCompatibleNS(CFXJSE_Arguments* pArguments) { 15794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 15804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 1) { 15814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"isCompatibleNS"); 15824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 15834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsNameSpace; 15854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 15864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsNameSpace = pArguments->GetUTF8String(0); 15874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsNameSpace = CFX_WideString::FromUTF8(bsNameSpace.AsStringC()); 15884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 15894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsNodeNameSpace; 15904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann TryNamespace(wsNodeNameSpace); 15914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Value* pValue = pArguments->GetReturnValue(); 15924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue) 15934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetBoolean(wsNodeNameSpace == wsNameSpace); 15944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 15954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ModelClass_Context(CFXJSE_Value* pValue, 15974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 15984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 15994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ModelClass_AliasNode(CFXJSE_Value* pValue, 16014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 16024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 16034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Attribute_Integer(CFXJSE_Value* pValue, 16054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 16064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 16074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 16084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetInteger(eAttribute, pValue->ToInteger(), true); 16094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 16104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(GetInteger(eAttribute)); 16114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Attribute_IntegerRead(CFXJSE_Value* pValue, 16154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 16164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 16174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 16184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 16194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 16204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(GetInteger(eAttribute)); 16224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Attribute_BOOL(CFXJSE_Value* pValue, 16254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 16264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 16274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 16284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetBoolean(eAttribute, pValue->ToBoolean(), true); 16294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 16304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetString(GetBoolean(eAttribute) ? "1" : "0"); 16314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Attribute_BOOLRead(CFXJSE_Value* pValue, 16354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 16364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 16374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 16384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 16394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 16404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetString(GetBoolean(eAttribute) ? "1" : "0"); 16424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 16434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Attribute_SendAttributeChangeMessage( 16454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute, 16464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bScriptModify) { 16474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); 16484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pLayoutPro) 16494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 16504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 16524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 16534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 16544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwPacket = GetPacketID(); 16564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(dwPacket & XFA_XDPPACKET_Form)) { 16574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, this, this); 16584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 16594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNeedFindContainer = false; 16624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetElementType()) { 16634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Caption: 16644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNeedFindContainer = true; 16654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, this, 16664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetNodeItem(XFA_NODEITEM_Parent)); 16674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 16684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Font: 16694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Para: { 16704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNeedFindContainer = true; 16714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); 16724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParentNode->GetElementType() == XFA_Element::Caption) { 16734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, pParentNode, 16744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentNode->GetNodeItem(XFA_NODEITEM_Parent)); 16754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 16764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, this, pParentNode); 16774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 16794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Margin: { 16804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNeedFindContainer = true; 16814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); 16824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eParentType = pParentNode->GetElementType(); 16834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParentNode->IsContainerNode()) { 16844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, this, pParentNode); 16854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (eParentType == XFA_Element::Caption) { 16864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, pParentNode, 16874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentNode->GetNodeItem(XFA_NODEITEM_Parent)); 16884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 16894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent); 16904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode && pNode->GetElementType() == XFA_Element::Ui) { 16914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, pNode, 16924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->GetNodeItem(XFA_NODEITEM_Parent)); 16934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 16954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 16964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Comb: { 16974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pEditNode = GetNodeItem(XFA_NODEITEM_Parent); 16984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eUIType = pEditNode->GetElementType(); 16994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pEditNode && (eUIType == XFA_Element::DateTimeEdit || 17004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eUIType == XFA_Element::NumericEdit || 17014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eUIType == XFA_Element::TextEdit)) { 17024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pUINode = pEditNode->GetNodeItem(XFA_NODEITEM_Parent); 17034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pUINode) { 17044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, pUINode, 17054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pUINode->GetNodeItem(XFA_NODEITEM_Parent)); 17064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 17094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Button: 17104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Barcode: 17114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::ChoiceList: 17124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::DateTimeEdit: 17134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::NumericEdit: 17144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::PasswordEdit: 17154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::TextEdit: { 17164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pUINode = GetNodeItem(XFA_NODEITEM_Parent); 17174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pUINode) { 17184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, pUINode, 17194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pUINode->GetNodeItem(XFA_NODEITEM_Parent)); 17204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 17224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::CheckButton: { 17234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNeedFindContainer = true; 17244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pUINode = GetNodeItem(XFA_NODEITEM_Parent); 17254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pUINode) { 17264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, pUINode, 17274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pUINode->GetNodeItem(XFA_NODEITEM_Parent)); 17284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 17304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Keep: 17314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Bookend: 17324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Break: 17334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::BreakAfter: 17344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::BreakBefore: 17354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Overflow: 17364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNeedFindContainer = true; 17374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 17384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Area: 17394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Draw: 17404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::ExclGroup: 17414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Field: 17424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Subform: 17434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::SubformSet: 17444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pLayoutPro->AddChangedContainer(this); 17454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, this, this); 17464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 17474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Sharptext: 17484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::Sharpxml: 17494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_Element::SharpxHTML: { 17504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pTextNode = GetNodeItem(XFA_NODEITEM_Parent); 17514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pTextNode) { 17524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 17534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pValueNode = pTextNode->GetNodeItem(XFA_NODEITEM_Parent); 17554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pValueNode) { 17564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 17574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eType = pValueNode->GetElementType(); 17594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::Value) { 17604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNeedFindContainer = true; 17614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = pValueNode->GetNodeItem(XFA_NODEITEM_Parent); 17624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode && pNode->IsContainerNode()) { 17634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bScriptModify) { 17644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValueNode = pNode; 17654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, pValueNode, pNode); 17674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 17684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, pNode, 17694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->GetNodeItem(XFA_NODEITEM_Parent)); 17704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 17724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::Items) { 17734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = pValueNode->GetNodeItem(XFA_NODEITEM_Parent); 17744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode && pNode->IsContainerNode()) { 17754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanged(this, eAttribute, pValueNode, pNode); 17764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 17804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 17814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 17824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bNeedFindContainer) { 17844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParent = this; 17854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pParent) { 17864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParent->IsContainerNode()) 17874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 17884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 17894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParent = pParent->GetNodeItem(XFA_NODEITEM_Parent); 17904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParent) { 17924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pLayoutPro->AddChangedContainer(pParent); 17934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 17954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 17964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 17974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Attribute_String(CFXJSE_Value* pValue, 17984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 17994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 18004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 18014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue = pValue->ToWideString(); 18024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetAttribute(eAttribute, wsValue.AsStringC(), true); 18034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eAttribute == XFA_ATTRIBUTE_Use && 18044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetElementType() == XFA_Element::Desc) { 18054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pTemplateNode = 18064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Template)); 18074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pProtoRoot = 18084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pTemplateNode->GetFirstChildByClass(XFA_Element::Subform) 18094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->GetFirstChildByClass(XFA_Element::Proto); 18104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 18114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsID; 18124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsSOM; 18134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!wsValue.IsEmpty()) { 18144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsValue[0] == '#') { 18154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsID = CFX_WideString(wsValue.c_str() + 1, wsValue.GetLength() - 1); 18164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 18174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsSOM = wsValue; 18184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pProtoNode = nullptr; 18214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!wsSOM.IsEmpty()) { 18224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Children | 18234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_Attributes | 18244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | 18254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_Siblings; 18264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_RS resoveNodeRS; 18274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = m_pDocument->GetScriptContext()->ResolveObjects( 18284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pProtoRoot, wsSOM.AsStringC(), resoveNodeRS, dwFlag); 18294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iRet > 0 && resoveNodeRS.nodes[0]->IsNode()) { 18304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pProtoNode = resoveNodeRS.nodes[0]->AsNode(); 18314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (!wsID.IsEmpty()) { 18334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pProtoNode = m_pDocument->GetNodeByID(pProtoRoot, wsID.AsStringC()); 18344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pProtoNode) { 18364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pHeadChild = GetNodeItem(XFA_NODEITEM_FirstChild); 18374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pHeadChild) { 18384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pSibling = 18394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pHeadChild->GetNodeItem(XFA_NODEITEM_NextSibling); 18404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann RemoveChild(pHeadChild); 18414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pHeadChild = pSibling; 18424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pProtoForm = pProtoNode->CloneTemplateToForm(true); 18444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pHeadChild = pProtoForm->GetNodeItem(XFA_NODEITEM_FirstChild); 18454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pHeadChild) { 18464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pSibling = 18474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pHeadChild->GetNodeItem(XFA_NODEITEM_NextSibling); 18484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pProtoForm->RemoveChild(pHeadChild); 18494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertChild(pHeadChild); 18504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pHeadChild = pSibling; 18514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->RemovePurgeNode(pProtoForm); 18534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann delete pProtoForm; 18544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 18574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 18584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetAttribute(eAttribute, wsValue); 18595ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsValue.UTF8Encode().AsStringC()); 18604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 18624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 18634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Attribute_StringRead(CFXJSE_Value* pValue, 18644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 18654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 18664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 18674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 18684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 18694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 18714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 18724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetAttribute(eAttribute, wsValue); 18735ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsValue.UTF8Encode().AsStringC()); 18744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 18754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 18764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_WsdlConnection_Execute(CFXJSE_Arguments* pArguments) { 18774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t argc = pArguments->GetLength(); 18784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc != 0 && argc != 1) { 18794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execute"); 18804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 18814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 18824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(false); 18834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 18844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 18854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Delta_Restore(CFXJSE_Arguments* pArguments) { 18864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 18874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"restore"); 18884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 18894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 18904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Delta_CurrentValue(CFXJSE_Value* pValue, 18914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 18924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 18934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 18944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Delta_SavedValue(CFXJSE_Value* pValue, 18954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 18964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 18974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 18984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Delta_Target(CFXJSE_Value* pValue, 18994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 19004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 19014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 19024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_Message(CFXJSE_Value* pValue, 19034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 19044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_SOM_MESSAGETYPE iMessageType) { 19054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 19064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 19074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 19084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNew = false; 19104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Validate validate = pWidgetData->GetValidate(); 19114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!validate) { 19124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann validate = pWidgetData->GetValidate(true); 19134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNew = true; 19144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 19164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (iMessageType) { 19174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_SOM_ValidationMessage: 19184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann validate.SetScriptMessageText(pValue->ToWideString()); 19194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 19204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_SOM_FormatMessage: 19214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann validate.SetFormatMessageText(pValue->ToWideString()); 19224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 19234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_SOM_MandatoryMessage: 19244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann validate.SetNullMessageText(pValue->ToWideString()); 19254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 19264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 19274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 19284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bNew) { 19304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 19314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 19324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 19334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->AddCalcValidate(this); 19354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 19374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsMessage; 19384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (iMessageType) { 19394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_SOM_ValidationMessage: 19404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann validate.GetScriptMessageText(wsMessage); 19414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 19424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_SOM_FormatMessage: 19434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann validate.GetFormatMessageText(wsMessage); 19444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 19454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_SOM_MandatoryMessage: 19464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann validate.GetNullMessageText(wsMessage); 19474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 19484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 19494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 19504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19515ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsMessage.UTF8Encode().AsStringC()); 19524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 19544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 19554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_ValidationMessage(CFXJSE_Value* pValue, 19564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 19574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 19584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Som_Message(pValue, bSetting, XFA_SOM_ValidationMessage); 19594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 19604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 19614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_Length(CFXJSE_Value* pValue, 19624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 19634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 19644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 19654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 19664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 19674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 19694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 19704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 19714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(0); 19724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 19734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(pWidgetData->CountChoiceListItems(true)); 19754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 19764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 19774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_DefaultValue(CFXJSE_Value* pValue, 19784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 19794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 19804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eType = GetElementType(); 19814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::Field) { 19824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Field_DefaultValue(pValue, bSetting, eAttribute); 19834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 19844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::Draw) { 19864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Draw_DefaultValue(pValue, bSetting, eAttribute); 19874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 19884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::Boolean) { 19904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Boolean_Value(pValue, bSetting, eAttribute); 19914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 19924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 19934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 19944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsNewValue; 19954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(pValue && (pValue->IsNull() || pValue->IsUndefined()))) 19964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsNewValue = pValue->ToWideString(); 19974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 19984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsFormatValue(wsNewValue); 19994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pContainerWidgetData = nullptr; 20004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetPacketID() == XFA_XDPPACKET_Datasets) { 20014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray formNodes; 20024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetBindItems(formNodes); 20034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsPicture; 20044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < formNodes.GetSize(); i++) { 20054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pFormNode = formNodes.GetAt(i); 20064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pFormNode || pFormNode->HasRemovedChildren()) { 20074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 20084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pContainerWidgetData = pFormNode->GetContainerWidgetData(); 20104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pContainerWidgetData) { 20114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pContainerWidgetData->GetPictureContent(wsPicture, 20124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_VALUEPICTURE_DataBind); 20134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!wsPicture.IsEmpty()) { 20154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 20164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pContainerWidgetData = nullptr; 20184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (GetPacketID() == XFA_XDPPACKET_Form) { 20204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pContainerWidgetData = GetContainerWidgetData(); 20214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pContainerWidgetData) { 20234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pContainerWidgetData->GetFormatDataValue(wsNewValue, wsFormatValue); 20244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetScriptContent(wsNewValue, wsFormatValue, true, true); 20264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 20274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString content = GetScriptContent(true); 20284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (content.IsEmpty() && eType != XFA_Element::Text && 20294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eType != XFA_Element::SubmitUrl) { 20304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetNull(); 20314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (eType == XFA_Element::Integer) { 20324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(FXSYS_wtoi(content.c_str())); 20334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (eType == XFA_Element::Float || eType == XFA_Element::Decimal) { 20344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_Decimal decimal(content.AsStringC()); 20354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetFloat((FX_FLOAT)(double)decimal); 20364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 20375ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(content.UTF8Encode().AsStringC()); 20384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 20414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 20424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_DefaultValue_Read(CFXJSE_Value* pValue, 20434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 20444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 20454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 20464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 20474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 20484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 20504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString content = GetScriptContent(true); 20514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (content.IsEmpty()) { 20524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetNull(); 20534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 20544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20555ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(content.UTF8Encode().AsStringC()); 20564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 20574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 20584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Boolean_Value(CFXJSE_Value* pValue, 20594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 20604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 20614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 20624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString newValue; 20634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(pValue && (pValue->IsNull() || pValue->IsUndefined()))) 20644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann newValue = pValue->ToString(); 20654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 20664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iValue = FXSYS_atoi(newValue.c_str()); 20674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsNewValue(iValue == 0 ? L"0" : L"1"); 20684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsFormatValue(wsNewValue); 20694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pContainerWidgetData = GetContainerWidgetData(); 20704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pContainerWidgetData) { 20714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pContainerWidgetData->GetFormatDataValue(wsNewValue, wsFormatValue); 20724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetScriptContent(wsNewValue, wsFormatValue, true, true); 20744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 20754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue = GetScriptContent(true); 20765ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetBoolean(wsValue == L"1"); 20774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 20794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 20804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_BorderColor(CFXJSE_Value* pValue, 20814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 20824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 20834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 20844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 20854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 20864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Border border = pWidgetData->GetBorder(true); 20884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iSize = border.CountEdges(); 20894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 20904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t r = 0; 20914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t g = 0; 20924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t b = 0; 20934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann StrToRGB(pValue->ToWideString(), r, g, b); 20944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_ARGB rgb = ArgbEncode(100, r, g, b); 20954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < iSize; ++i) { 20964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Edge edge = border.GetEdge(i); 20974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann edge.SetColor(rgb); 20984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 20994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 21004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Edge edge = border.GetEdge(0); 21014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_ARGB color = edge.GetColor(); 21024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t a, r, g, b; 21034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ArgbDecode(color, a, r, g, b); 21044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString strColor; 21054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann strColor.Format(L"%d,%d,%d", r, g, b); 21065ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(strColor.UTF8Encode().AsStringC()); 21074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 21094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 21104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_BorderWidth(CFXJSE_Value* pValue, 21114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 21124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 21134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 21144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 21154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 21164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Border border = pWidgetData->GetBorder(true); 21184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iSize = border.CountEdges(); 21194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsThickness; 21204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 21214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsThickness = pValue->ToWideString(); 21224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < iSize; ++i) { 21234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Edge edge = border.GetEdge(i); 21244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Measurement thickness(wsThickness.AsStringC()); 21254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann edge.SetMSThickness(thickness); 21264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 21284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Edge edge = border.GetEdge(0); 21294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Measurement thickness = edge.GetMSThickness(); 21304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann thickness.ToString(wsThickness); 21315ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsThickness.UTF8Encode().AsStringC()); 21324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 21344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 21354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_FillColor(CFXJSE_Value* pValue, 21364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 21374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 21384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 21394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 21404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 21414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Border border = pWidgetData->GetBorder(true); 21434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Fill borderfill = border.GetFill(true); 21444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = borderfill.GetNode(); 21454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNode) { 21464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 21474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 21494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t r; 21504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t g; 21514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t b; 21524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann StrToRGB(pValue->ToWideString(), r, g, b); 21534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_ARGB color = ArgbEncode(0xff, r, g, b); 21544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann borderfill.SetColor(color); 21554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 21564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_ARGB color = borderfill.GetColor(); 21574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t a; 21584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t r; 21594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t g; 21604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t b; 21614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ArgbDecode(color, a, r, g, b); 21624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsColor; 21634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsColor.Format(L"%d,%d,%d", r, g, b); 21645ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsColor.UTF8Encode().AsStringC()); 21654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 21674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 21684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_DataNode(CFXJSE_Value* pValue, 21694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 21704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 21714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 21724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 21734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 21744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 21764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDataNode = GetBindData(); 21774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDataNode) { 21784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetNull(); 21794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 21804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 21824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->Assign(m_pDocument->GetScriptContext()->GetJSValueFromMap(pDataNode)); 21834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 21844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 21854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Draw_DefaultValue(CFXJSE_Value* pValue, 21864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 21874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 21884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 21894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue && pValue->IsString()) { 21904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 21914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pWidgetData); 21924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element uiType = pWidgetData->GetUIType(); 21934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (uiType == XFA_Element::Text) { 21944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsNewValue = pValue->ToWideString(); 21954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsFormatValue(wsNewValue); 21964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetScriptContent(wsNewValue, wsFormatValue, true, true); 21974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 21994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 22004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString content = GetScriptContent(true); 22015ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (content.IsEmpty()) 22024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetNull(); 22035ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann else 22045ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(content.UTF8Encode().AsStringC()); 22054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 22074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 22084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_DefaultValue(CFXJSE_Value* pValue, 22094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 22104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 22114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 22124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 22134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 22144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 22164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue && pValue->IsNull()) { 22174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->m_bPreNull = pWidgetData->m_bIsNull; 22184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->m_bIsNull = true; 22194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 22204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->m_bPreNull = pWidgetData->m_bIsNull; 22214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->m_bIsNull = false; 22224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsNewText; 22244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(pValue && (pValue->IsNull() || pValue->IsUndefined()))) 22254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsNewText = pValue->ToWideString(); 22264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 22274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pUIChild = pWidgetData->GetUIChild(); 22284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pUIChild->GetElementType() == XFA_Element::NumericEdit) { 22294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLeadDigits = 0; 22304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iFracDigits = 0; 22314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->GetLeadDigits(iLeadDigits); 22324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->GetFracDigits(iFracDigits); 22334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsNewText = 22344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->NumericLimit(wsNewText, iLeadDigits, iFracDigits); 22354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pContainerWidgetData = GetContainerWidgetData(); 22374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsFormatText(wsNewText); 22384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pContainerWidgetData) { 22394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pContainerWidgetData->GetFormatDataValue(wsNewText, wsFormatText); 22404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetScriptContent(wsNewText, wsFormatText, true, true); 22424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 22434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString content = GetScriptContent(true); 22444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (content.IsEmpty()) { 22454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetNull(); 22464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 22474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pUIChild = pWidgetData->GetUIChild(); 22484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Value defVal = pWidgetData->GetFormValue(); 22494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = defVal.GetNode()->GetNodeItem(XFA_NODEITEM_FirstChild); 22504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode && pNode->GetElementType() == XFA_Element::Decimal) { 22514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pUIChild->GetElementType() == XFA_Element::NumericEdit && 22524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (pNode->GetInteger(XFA_ATTRIBUTE_FracDigits) == -1)) { 22535ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(content.UTF8Encode().AsStringC()); 22544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 22554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_Decimal decimal(content.AsStringC()); 22564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetFloat((FX_FLOAT)(double)decimal); 22574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pNode && pNode->GetElementType() == XFA_Element::Integer) { 22594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(FXSYS_wtoi(content.c_str())); 22604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pNode && pNode->GetElementType() == XFA_Element::Boolean) { 22614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetBoolean(FXSYS_wtoi(content.c_str()) == 0 ? false : true); 22624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pNode && pNode->GetElementType() == XFA_Element::Float) { 22634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_Decimal decimal(content.AsStringC()); 22644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetFloat((FX_FLOAT)(double)decimal); 22654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 22665ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(content.UTF8Encode().AsStringC()); 22674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 22714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 22724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_EditValue(CFXJSE_Value* pValue, 22734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 22744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 22754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 22764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 22774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 22784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 22804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->SetValue(pValue->ToWideString(), XFA_VALUEPICTURE_Edit); 22814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 22824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 22834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->GetValue(wsValue, XFA_VALUEPICTURE_Edit); 22845ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsValue.UTF8Encode().AsStringC()); 22854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 22874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 22884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_FontColor(CFXJSE_Value* pValue, 22894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 22904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 22914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 22924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 22934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 22944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 22954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Font font = pWidgetData->GetFont(true); 22964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = font.GetNode(); 22974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNode) { 22984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 22994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 23004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 23014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t r; 23024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t g; 23034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t b; 23044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann StrToRGB(pValue->ToWideString(), r, g, b); 23054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_ARGB color = ArgbEncode(0xff, r, g, b); 23064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann font.SetColor(color); 23074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 23084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_ARGB color = font.GetColor(); 23094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t a; 23104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t r; 23114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t g; 23124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t b; 23134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ArgbDecode(color, a, r, g, b); 23144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsColor; 23154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsColor.Format(L"%d,%d,%d", r, g, b); 23165ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsColor.UTF8Encode().AsStringC()); 23174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 23184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 23194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 23204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_FormatMessage(CFXJSE_Value* pValue, 23214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 23224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 23234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Som_Message(pValue, bSetting, XFA_SOM_FormatMessage); 23244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 23254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 23264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_FormattedValue(CFXJSE_Value* pValue, 23274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 23284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 23294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 23304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 23314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 23324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 23334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 23344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->SetValue(pValue->ToWideString(), XFA_VALUEPICTURE_Display); 23354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 23364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 23374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->GetValue(wsValue, XFA_VALUEPICTURE_Display); 23385ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsValue.UTF8Encode().AsStringC()); 23394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 23404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 23414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 23424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_Mandatory(CFXJSE_Value* pValue, 23434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 23444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 23454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 23464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 23474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 23484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 23494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Validate validate = pWidgetData->GetValidate(true); 23504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 23514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann validate.SetNullTest(pValue->ToWideString()); 23524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 23534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iValue = validate.GetNullTest(); 23544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEENUMINFO* pInfo = 23554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetAttributeEnumByID((XFA_ATTRIBUTEENUM)iValue); 23564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 23574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pInfo) 23584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = pInfo->pName; 23595ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsValue.UTF8Encode().AsStringC()); 23604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 23614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 23624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 23634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_MandatoryMessage(CFXJSE_Value* pValue, 23644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 23654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 23664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Som_Message(pValue, bSetting, XFA_SOM_MandatoryMessage); 23674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 23684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 23694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_ParentSubform(CFXJSE_Value* pValue, 23704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 23714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 23724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 23734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 23744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 23754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 23764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetNull(); 23774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 23784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 23794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_SelectedIndex(CFXJSE_Value* pValue, 23804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 23814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 23824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 23834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 23844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 23854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 23864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 23874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = pValue->ToInteger(); 23884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iIndex == -1) { 23894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->ClearAllSelections(); 23904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 23914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 23924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->SetItemState(iIndex, true, true, true, true); 23934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 23944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(pWidgetData->GetSelectedItem()); 23954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 23964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 23974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 23984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_ClearItems(CFXJSE_Arguments* pArguments) { 23994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 24004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 24014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->DeleteItem(-1, true); 24044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 24054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_ExecEvent(CFXJSE_Arguments* pArguments) { 24074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 24084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execEvent"); 24094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString eventString = pArguments->GetUTF8String(0); 24134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = execSingleEventByName( 24144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(eventString.AsStringC()).AsStringC(), 24154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element::Field); 24164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eventString != "validate") 24174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean( 24204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (iRet == XFA_EVENTERROR_Error) ? false : true); 24214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 24224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_ExecInitialize(CFXJSE_Arguments* pArguments) { 24244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 24254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execInitialize"); 24264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 24304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 24314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize, false, false); 24344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 24354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_DeleteItem(CFXJSE_Arguments* pArguments) { 24374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 24384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 24394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"deleteItem"); 24404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 24434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 24444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = pArguments->GetInt32(0); 24474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bValue = pWidgetData->DeleteItem(iIndex, true, true); 24484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Value* pValue = pArguments->GetReturnValue(); 24494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue) 24504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetBoolean(bValue); 24514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 24524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_GetSaveItem(CFXJSE_Arguments* pArguments) { 24544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 24554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 24564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"getSaveItem"); 24574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = pArguments->GetInt32(0); 24604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iIndex < 0) { 24614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 24624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 24654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 24664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 24674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 24705ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (!pWidgetData->GetChoiceListItem(wsValue, iIndex, true)) { 24714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 24725ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return; 24734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24745ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pArguments->GetReturnValue()->SetString(wsValue.UTF8Encode().AsStringC()); 24754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 24764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_BoundItem(CFXJSE_Arguments* pArguments) { 24784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 24794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 24804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"boundItem"); 24814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 24844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 24854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 24864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 24874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsValue = pArguments->GetUTF8String(0); 24884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue = CFX_WideString::FromUTF8(bsValue.AsStringC()); 24894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsBoundValue; 24904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->GetItemValue(wsValue.AsStringC(), wsBoundValue); 24914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Value* pValue = pArguments->GetReturnValue(); 24924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue) 24935ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsBoundValue.UTF8Encode().AsStringC()); 24944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 24954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_GetItemState(CFXJSE_Arguments* pArguments) { 24974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 24984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 24994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"getItemState"); 25004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 25034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 25044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = pArguments->GetInt32(0); 25074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bValue = pWidgetData->GetItemState(iIndex); 25084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Value* pValue = pArguments->GetReturnValue(); 25094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue) 25104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetBoolean(bValue); 25114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 25124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 25134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_ExecCalculate(CFXJSE_Arguments* pArguments) { 25144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 25154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execCalculate"); 25164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 25194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 25204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 25214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 25234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate, false, false); 25244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 25254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 25264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_SetItems(CFXJSE_Arguments* pArguments) {} 25274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 25284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_GetDisplayItem(CFXJSE_Arguments* pArguments) { 25294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 25304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 25314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"getDisplayItem"); 25324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = pArguments->GetInt32(0); 25354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iIndex < 0) { 25364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 25374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 25404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 25414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 25424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 25455ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (!pWidgetData->GetChoiceListItem(wsValue, iIndex, false)) { 25464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 25475ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return; 25484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25495ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pArguments->GetReturnValue()->SetString(wsValue.UTF8Encode().AsStringC()); 25504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 25514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 25524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_SetItemState(CFXJSE_Arguments* pArguments) { 25534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 25544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 2) { 25554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"setItemState"); 25564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 25594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) 25604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 25624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = pArguments->GetInt32(0); 25634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetInt32(1) != 0) { 25644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->SetItemState(iIndex, true, true, true, true); 25654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 25664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pWidgetData->GetItemState(iIndex)) 25674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->SetItemState(iIndex, false, true, true, true); 25684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 25704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 25714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_AddItem(CFXJSE_Arguments* pArguments) { 25724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 25734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 1 || iLength > 2) { 25744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"addItem"); 25754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 25784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 25794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsLabel; 25824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue; 25834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 25844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsLabel = pArguments->GetUTF8String(0); 25854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsLabel = CFX_WideString::FromUTF8(bsLabel.AsStringC()); 25864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 2) { 25884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsValue = pArguments->GetUTF8String(1); 25894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = CFX_WideString::FromUTF8(bsValue.AsStringC()); 25904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->InsertItem(wsLabel, wsValue, -1, true); 25924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 25934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 25944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Field_ExecValidate(CFXJSE_Arguments* pArguments) { 25954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 25964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execValidate"); 25974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 25984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 25994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 26014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 26024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(false); 26034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 26044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 26054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = 26074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate, false, false); 26084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean( 26094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (iRet == XFA_EVENTERROR_Error) ? false : true); 26104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 26114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ExclGroup_ErrorText(CFXJSE_Value* pValue, 26134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 26144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 26154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) 26164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 26174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 26184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ExclGroup_DefaultAndRawValue(CFXJSE_Value* pValue, 26204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 26214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 26224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 26234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 26244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 26254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 26264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 26274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->SetSelectedMemberByValue(pValue->ToWideString().AsStringC(), 26284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann true, true, true); 26294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 26304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue = GetScriptContent(true); 26314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_VERSION curVersion = GetDocument()->GetCurVersionMode(); 26324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsValue.IsEmpty() && curVersion >= XFA_VERSION_300) { 26334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetNull(); 26344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 26355ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsValue.UTF8Encode().AsStringC()); 26364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 26374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 26384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 26394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ExclGroup_Transient(CFXJSE_Value* pValue, 26414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 26424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 26434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ExclGroup_ExecEvent(CFXJSE_Arguments* pArguments) { 26454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 26464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execEvent"); 26474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 26484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 26494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString eventString = pArguments->GetUTF8String(0); 26514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann execSingleEventByName( 26524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(eventString.AsStringC()).AsStringC(), 26534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element::ExclGroup); 26544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 26554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ExclGroup_SelectedMember(CFXJSE_Arguments* pArguments) { 26574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t argc = pArguments->GetLength(); 26584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc < 0 || argc > 1) { 26594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"selectedMember"); 26604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 26614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 26624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 26644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 26654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 26664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 26674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 26684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pReturnNode = nullptr; 26704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc == 0) { 26714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pReturnNode = pWidgetData->GetSelectedMember(); 26724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 26734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString szName; 26744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann szName = pArguments->GetUTF8String(0); 26754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pReturnNode = pWidgetData->SetSelectedMember( 26764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(szName.AsStringC()).AsStringC(), true); 26774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 26784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pReturnNode) { 26794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 26804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 26814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 26824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->Assign( 26834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(pReturnNode)); 26844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 26854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ExclGroup_ExecInitialize(CFXJSE_Arguments* pArguments) { 26874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 26884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execInitialize"); 26894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 26904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 26914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 26934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 26944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 26954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize); 26974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 26984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ExclGroup_ExecCalculate(CFXJSE_Arguments* pArguments) { 27004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 27014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execCalculate"); 27024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 27034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 27064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 27074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 27084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); 27104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 27114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_ExclGroup_ExecValidate(CFXJSE_Arguments* pArguments) { 27134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 27144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execValidate"); 27154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 27164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 27194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 27204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(false); 27214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 27224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); 27254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean( 27264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (iRet == XFA_EVENTERROR_Error) ? false : true); 27274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 27284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Som_InstanceIndex(CFXJSE_Value* pValue, 27304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 27314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 27324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 27334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iTo = pValue->ToInteger(); 27344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iFrom = Subform_and_SubformSet_InstanceIndex(); 27354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pManagerNode = nullptr; 27364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; 27374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { 27384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->GetElementType() == XFA_Element::InstanceManager) { 27394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pManagerNode = pNode; 27404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 27414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pManagerNode) { 27444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pManagerNode->InstanceManager_MoveInstance(iTo, iFrom); 27454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 27464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 27474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 27484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pToInstance = GetItem(pManagerNode, iTo); 27504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pToInstance && 27514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pToInstance->GetElementType() == XFA_Element::Subform) { 27524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->RunSubformIndexChange(pToInstance); 27534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pFromInstance = GetItem(pManagerNode, iFrom); 27554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pFromInstance && 27564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFromInstance->GetElementType() == XFA_Element::Subform) { 27574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->RunSubformIndexChange(pFromInstance); 27584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 27614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(Subform_and_SubformSet_InstanceIndex()); 27624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 27644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Subform_InstanceManager(CFXJSE_Value* pValue, 27664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 27674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 27684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 27694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 27704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 27714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsName = GetCData(XFA_ATTRIBUTE_Name); 27744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pInstanceMgr = nullptr; 27754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; 27764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { 27774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->GetElementType() == XFA_Element::InstanceManager) { 27784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsInstMgrName = pNode->GetCData(XFA_ATTRIBUTE_Name); 27794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsInstMgrName.GetLength() >= 1 && wsInstMgrName.GetAt(0) == '_' && 27804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsInstMgrName.Mid(1) == wsName) { 27814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInstanceMgr = pNode; 27824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 27844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pInstanceMgr) { 27874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetNull(); 27884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 27894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 27904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->Assign( 27924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(pInstanceMgr)); 27934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 27944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Subform_Locale(CFXJSE_Value* pValue, 27964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 27974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 27984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 27994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetCData(XFA_ATTRIBUTE_Locale, pValue->ToWideString(), true, true); 28004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 28014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsLocaleName; 28024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetLocaleName(wsLocaleName); 28035ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsLocaleName.UTF8Encode().AsStringC()); 28044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 28054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 28064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Subform_ExecEvent(CFXJSE_Arguments* pArguments) { 28084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 28094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execEvent"); 28104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 28114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 28124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString eventString = pArguments->GetUTF8String(0); 28144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann execSingleEventByName( 28154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(eventString.AsStringC()).AsStringC(), 28164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element::Subform); 28174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 28184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Subform_ExecInitialize(CFXJSE_Arguments* pArguments) { 28204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 28214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execInitialize"); 28224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 28234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 28244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 28264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 28274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 28284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize); 28304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 28314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Subform_ExecCalculate(CFXJSE_Arguments* pArguments) { 28334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 28344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execCalculate"); 28354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 28364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 28374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 28394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 28404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 28414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); 28434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 28444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Subform_ExecValidate(CFXJSE_Arguments* pArguments) { 28464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 28474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execValidate"); 28484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 28494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 28504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 28524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 28534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(false); 28544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 28554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 28564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); 28584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean( 28594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (iRet == XFA_EVENTERROR_Error) ? false : true); 28604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 28614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Subform_GetInvalidObjects(CFXJSE_Arguments* pArguments) { 28634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 28644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"getInvalidObjects"); 28654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 28664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::Subform_and_SubformSet_InstanceIndex() { 28684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t index = 0; 28694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; 28704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { 28714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if ((pNode->GetElementType() == XFA_Element::Subform) || 28724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (pNode->GetElementType() == XFA_Element::SubformSet)) { 28734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann index++; 28744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 28754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 28764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 28774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 28784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return index; 28794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 28804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Template_FormNodes(CFXJSE_Arguments* pArguments) { 28824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 28834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"formNodes"); 28844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 28854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 28864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(true); 28874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 28884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Template_Remerge(CFXJSE_Arguments* pArguments) { 28904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 28914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"remerge"); 28924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 28934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 28944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->DoDataRemerge(true); 28954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 28964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Template_ExecInitialize(CFXJSE_Arguments* pArguments) { 28984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 28994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execInitialize"); 29004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 29044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 29054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(false); 29064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(true); 29094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 29104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Template_CreateNode(CFXJSE_Arguments* pArguments) { 29124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t argc = pArguments->GetLength(); 29134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc <= 0 || argc >= 4) { 29144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"createNode"); 29154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString strName; 29194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString strNameSpace; 29204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsTagName = pArguments->GetUTF8String(0); 29214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString strTagName = CFX_WideString::FromUTF8(bsTagName.AsStringC()); 29224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc > 1) { 29234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsName = pArguments->GetUTF8String(1); 29244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann strName = CFX_WideString::FromUTF8(bsName.AsStringC()); 29254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc == 3) { 29264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsNameSpace = pArguments->GetUTF8String(2); 29274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann strNameSpace = CFX_WideString::FromUTF8(bsNameSpace.AsStringC()); 29284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eType = XFA_GetElementTypeForName(strTagName.AsStringC()); 29324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewNode = CreateSamePacketNode(eType); 29334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNewNode) { 29344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 29354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (strName.IsEmpty()) { 29394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->Assign( 29404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(pNewNode)); 29414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!GetAttributeOfElement(eType, XFA_ATTRIBUTE_Name, 29454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_XDPPACKET_UNKNOWN)) { 29464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowMissingPropertyException(strTagName, L"name"); 29474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNewNode->SetAttribute(XFA_ATTRIBUTE_Name, strName.AsStringC(), true); 29514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNewNode->GetPacketID() == XFA_XDPPACKET_Datasets) 29524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNewNode->CreateXMLMappingNode(); 29534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->Assign( 29554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(pNewNode)); 29564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 29574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Template_Recalculate(CFXJSE_Arguments* pArguments) { 29594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 29604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"recalculate"); 29614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(true); 29644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 29654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Template_ExecCalculate(CFXJSE_Arguments* pArguments) { 29674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 29684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execCalculate"); 29694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 29734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 29744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(false); 29754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(true); 29784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 29794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Template_ExecValidate(CFXJSE_Arguments* pArguments) { 29814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 29824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execValidate"); 29834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 29864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 29874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(false); 29884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(true); 29914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 29924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Manifest_Evaluate(CFXJSE_Arguments* pArguments) { 29944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 29954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"evaluate"); 29964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 29974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 29984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 30004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pWidgetData) { 30014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(false); 30024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 30034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(true); 30054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 30064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 30074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_InstanceManager_Max(CFXJSE_Value* pValue, 30084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 30094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 30104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 30114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 30124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 30134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Occur nodeOccur(GetOccurNode()); 30154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(nodeOccur.GetMax()); 30164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 30174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 30184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_InstanceManager_Min(CFXJSE_Value* pValue, 30194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 30204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 30214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 30224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 30234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 30244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Occur nodeOccur(GetOccurNode()); 30264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(nodeOccur.GetMin()); 30274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 30284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 30294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_InstanceManager_Count(CFXJSE_Value* pValue, 30304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 30314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 30324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 30334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iDesired = pValue->ToInteger(); 30344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InstanceManager_SetInstances(iDesired); 30354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 30364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(GetCount(this)); 30374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 30394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 30404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_InstanceManager_MoveInstance( 30414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Arguments* pArguments) { 30424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 2) { 30434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetUndefined(); 30444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 30454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iFrom = pArguments->GetInt32(0); 30474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iTo = pArguments->GetInt32(1); 30484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InstanceManager_MoveInstance(iTo, iFrom); 30494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 30504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 30514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 30524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pToInstance = GetItem(this, iTo); 30544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pToInstance && pToInstance->GetElementType() == XFA_Element::Subform) { 30554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->RunSubformIndexChange(pToInstance); 30564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pFromInstance = GetItem(this, iFrom); 30584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pFromInstance && 30594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFromInstance->GetElementType() == XFA_Element::Subform) { 30604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->RunSubformIndexChange(pFromInstance); 30614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 30634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 30644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_InstanceManager_RemoveInstance( 30654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Arguments* pArguments) { 30664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 30674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetUndefined(); 30684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 30694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = pArguments->GetInt32(0); 30714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = GetCount(this); 30724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iIndex < 0 || iIndex >= iCount) { 30734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowIndexOutOfBoundsException(); 30744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 30754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Occur nodeOccur(GetOccurNode()); 30774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iMin = nodeOccur.GetMin(); 30784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iCount - 1 < iMin) { 30794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowTooManyOccurancesException(L"min"); 30804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 30814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pRemoveInstance = GetItem(this, iIndex); 30834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann RemoveItem(this, pRemoveInstance); 30844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 30854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNotify) { 30864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = iIndex; i < iCount - 1; i++) { 30874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pSubformInstance = GetItem(this, i); 30884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pSubformInstance && 30894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSubformInstance->GetElementType() == XFA_Element::Subform) { 30904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->RunSubformIndexChange(pSubformInstance); 30914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); 30954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pLayoutPro) { 30964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 30974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 30984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pLayoutPro->AddChangedContainer( 30994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); 31004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 31014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 31024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_InstanceManager_SetInstances( 31034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Arguments* pArguments) { 31044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 31054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetUndefined(); 31064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 31074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iDesired = pArguments->GetInt32(0); 31094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InstanceManager_SetInstances(iDesired); 31104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 31114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 31124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_InstanceManager_AddInstance( 31134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Arguments* pArguments) { 31144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t argc = pArguments->GetLength(); 31154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc != 0 && argc != 1) { 31164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"addInstance"); 31174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 31184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool fFlags = true; 31204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc == 1) { 31214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann fFlags = pArguments->GetInt32(0) == 0 ? false : true; 31224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = GetCount(this); 31244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Occur nodeOccur(GetOccurNode()); 31254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iMax = nodeOccur.GetMax(); 31264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iMax >= 0 && iCount >= iMax) { 31274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowTooManyOccurancesException(L"max"); 31284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 31294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewInstance = CreateInstance(this, fFlags); 31314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertItem(this, pNewInstance, iCount, iCount, false); 31324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->Assign( 31334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(pNewInstance)); 31344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 31354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 31364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 31374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->RunNodeInitialize(pNewInstance); 31394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); 31404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pLayoutPro) { 31414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 31424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pLayoutPro->AddChangedContainer( 31444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); 31454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 31464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 31474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_InstanceManager_InsertInstance( 31484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Arguments* pArguments) { 31494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t argc = pArguments->GetLength(); 31504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc != 1 && argc != 2) { 31514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"insertInstance"); 31524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 31534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iIndex = pArguments->GetInt32(0); 31554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bBind = false; 31564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc == 2) { 31574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bBind = pArguments->GetInt32(1) == 0 ? false : true; 31584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Occur nodeOccur(GetOccurNode()); 31604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = GetCount(this); 31614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iIndex < 0 || iIndex > iCount) { 31624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowIndexOutOfBoundsException(); 31634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 31644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iMax = nodeOccur.GetMax(); 31664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iMax >= 0 && iCount >= iMax) { 31674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowTooManyOccurancesException(L"max"); 31684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 31694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewInstance = CreateInstance(this, bBind); 31714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertItem(this, pNewInstance, iIndex, iCount, true); 31724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->Assign( 31734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(pNewInstance)); 31744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 31754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 31764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 31774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->RunNodeInitialize(pNewInstance); 31794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); 31804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pLayoutPro) { 31814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 31824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pLayoutPro->AddChangedContainer( 31844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); 31854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 31864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 31874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::InstanceManager_SetInstances(int32_t iDesired) { 31884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Occur nodeOccur(GetOccurNode()); 31894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iMax = nodeOccur.GetMax(); 31904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iMin = nodeOccur.GetMin(); 31914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iDesired < iMin) { 31924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowTooManyOccurancesException(L"min"); 31934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 1; 31944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if ((iMax >= 0) && (iDesired > iMax)) { 31964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowTooManyOccurancesException(L"max"); 31974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 2; 31984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 31994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = GetCount(this); 32004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iDesired == iCount) { 32014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 0; 32024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iDesired < iCount) { 32044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsInstManagerName = GetCData(XFA_ATTRIBUTE_Name); 32054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsInstanceName = 32064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString(wsInstManagerName.IsEmpty() ? wsInstManagerName 32074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : wsInstManagerName.Mid(1)); 32084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dInstanceNameHash = 32094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_HashCode_GetW(wsInstanceName.AsStringC(), false); 32104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pPrevSibling = 32114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (iDesired == 0) ? this : GetItem(this, iDesired - 1); 32124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (iCount > iDesired) { 32134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pRemoveInstance = 32144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPrevSibling->GetNodeItem(XFA_NODEITEM_NextSibling); 32154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pRemoveInstance->GetElementType() != XFA_Element::Subform && 32164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRemoveInstance->GetElementType() != XFA_Element::SubformSet) { 32174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 32184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pRemoveInstance->GetElementType() == XFA_Element::InstanceManager) { 32204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(false); 32214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 32224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pRemoveInstance->GetNameHash() == dInstanceNameHash) { 32244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann RemoveItem(this, pRemoveInstance); 32254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iCount--; 32264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (iDesired > iCount) { 32294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (iCount < iDesired) { 32304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewInstance = CreateInstance(this, true); 32314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertItem(this, pNewInstance, iCount, iCount, false); 32324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iCount++; 32334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 32344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 32354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 0; 32364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->RunNodeInitialize(pNewInstance); 32384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); 32414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pLayoutPro) { 32424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pLayoutPro->AddChangedContainer( 32434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); 32444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 0; 32464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 32474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 32484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::InstanceManager_MoveInstance(int32_t iTo, int32_t iFrom) { 32494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = GetCount(this); 32504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iFrom > iCount || iTo > iCount - 1) { 32514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowIndexOutOfBoundsException(); 32524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 1; 32534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iFrom < 0 || iTo < 0 || iFrom == iTo) { 32554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 0; 32564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pMoveInstance = GetItem(this, iFrom); 32584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann RemoveItem(this, pMoveInstance, false); 32594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertItem(this, pMoveInstance, iTo, iCount - 1, true); 32604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); 32614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pLayoutPro) { 32624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pLayoutPro->AddChangedContainer( 32634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); 32644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 0; 32664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 32674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 32684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Occur_Max(CFXJSE_Value* pValue, 32694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 32704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 32714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Occur occur(this); 32724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 32734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iMax = pValue->ToInteger(); 32744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann occur.SetMax(iMax); 32754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 32764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(occur.GetMax()); 32774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 32794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 32804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Occur_Min(CFXJSE_Value* pValue, 32814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 32824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 32834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Occur occur(this); 32844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 32854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iMin = pValue->ToInteger(); 32864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann occur.SetMin(iMin); 32874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 32884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(occur.GetMin()); 32894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 32914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 32924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Desc_Metadata(CFXJSE_Arguments* pArguments) { 32934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t argc = pArguments->GetLength(); 32944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (argc != 0 && argc != 1) { 32954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"metadata"); 32964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 32974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 32984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetString(""); 32994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 33004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Form_FormNodes(CFXJSE_Arguments* pArguments) { 33024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 33034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"formNodes"); 33044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 33064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDataNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); 33084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDataNode) { 33094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowArgumentMismatchException(); 33104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 33124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray formItems; 33144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ArrayNodeList* pFormNodes = new CXFA_ArrayNodeList(m_pDocument); 33154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFormNodes->SetArrayNodeList(formItems); 33164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetObject( 33174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFormNodes, m_pDocument->GetScriptContext()->GetJseNormalClass()); 33184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 33194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Form_Remerge(CFXJSE_Arguments* pArguments) { 33214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 33224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"remerge"); 33234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 33254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->DoDataRemerge(true); 33274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 33284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Form_ExecInitialize(CFXJSE_Arguments* pArguments) { 33304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 33314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execInitialize"); 33324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 33344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 33364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 33374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize); 33404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 33414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Form_Recalculate(CFXJSE_Arguments* pArguments) { 33434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_EventParam* pEventParam = 33444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetEventParam(); 33454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pEventParam->m_eType == XFA_EVENT_Calculate || 33464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pEventParam->m_eType == XFA_EVENT_InitCalculate) { 33474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 33494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 33504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"recalculate"); 33514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 33534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 33554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 33564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetInt32(0) != 0) 33584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); 33614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); 33624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Ready, true); 33634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 33644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Form_ExecCalculate(CFXJSE_Arguments* pArguments) { 33664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 33674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execCalculate"); 33684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 33704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 33724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 33734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); 33764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 33774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Form_ExecValidate(CFXJSE_Arguments* pArguments) { 33794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) { 33804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"execValidate"); 33814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 33834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 33854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 33864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean(false); 33874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 33884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 33894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); 33914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetBoolean( 33924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (iRet == XFA_EVENTERROR_Error) ? false : true); 33934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 33944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Form_Checksum(CFXJSE_Value* pValue, 33964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 33974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 33984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 33994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetAttribute(XFA_ATTRIBUTE_Checksum, pValue->ToWideString().AsStringC()); 34004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 34014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsChecksum; 34034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetAttribute(XFA_ATTRIBUTE_Checksum, wsChecksum, false); 34045ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsChecksum.UTF8Encode().AsStringC()); 34054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 34064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Packet_GetAttribute(CFXJSE_Arguments* pArguments) { 34084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 34094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"getAttribute"); 34104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 34114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsAttributeName = pArguments->GetUTF8String(0); 34134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsAttributeValue; 34144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLNode = GetXMLMappingNode(); 34154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pXMLNode && pXMLNode->GetType() == FDE_XMLNODE_Element) { 34164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(pXMLNode)->GetString( 34174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(bsAttributeName.AsStringC()).c_str(), 34184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsAttributeValue); 34194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetString( 34215ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann wsAttributeValue.UTF8Encode().AsStringC()); 34224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 34234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Packet_SetAttribute(CFXJSE_Arguments* pArguments) { 34254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 2) { 34264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"setAttribute"); 34274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 34284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsValue = pArguments->GetUTF8String(0); 34304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsName = pArguments->GetUTF8String(1); 34314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLNode = GetXMLMappingNode(); 34324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pXMLNode && pXMLNode->GetType() == FDE_XMLNODE_Element) { 34334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(pXMLNode)->SetString( 34344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(bsName.AsStringC()), 34354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString::FromUTF8(bsValue.AsStringC())); 34364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 34384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 34394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Packet_RemoveAttribute(CFXJSE_Arguments* pArguments) { 34414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 1) { 34424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"removeAttribute"); 34434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 34444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsName = pArguments->GetUTF8String(0); 34474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsName = CFX_WideString::FromUTF8(bsName.AsStringC()); 34484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLNode = GetXMLMappingNode(); 34494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pXMLNode && pXMLNode->GetType() == FDE_XMLNODE_Element) { 34504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLNode); 34514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pXMLElement->HasAttribute(wsName.c_str())) { 34524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pXMLElement->RemoveAttribute(wsName.c_str()); 34534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->SetNull(); 34564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 34574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Packet_Content(CFXJSE_Value* pValue, 34594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 34604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 34614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 34624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLNode = GetXMLMappingNode(); 34634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pXMLNode && pXMLNode->GetType() == FDE_XMLNODE_Element) { 34644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLNode); 34654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pXMLElement->SetTextData(pValue->ToWideString()); 34664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 34684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsTextData; 34694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLNode = GetXMLMappingNode(); 34704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pXMLNode && pXMLNode->GetType() == FDE_XMLNODE_Element) { 34714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLNode); 34724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pXMLElement->GetTextData(wsTextData); 34734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34745ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(wsTextData.UTF8Encode().AsStringC()); 34754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 34764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 34774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Next(CFXJSE_Arguments* pArguments) { 34794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 34804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"next"); 34814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 34824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_CancelBatch(CFXJSE_Arguments* pArguments) { 34844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 34854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"cancelBatch"); 34864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 34874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_First(CFXJSE_Arguments* pArguments) { 34894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 34904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"first"); 34914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 34924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_UpdateBatch(CFXJSE_Arguments* pArguments) { 34944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 34954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"updateBatch"); 34964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 34974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Previous(CFXJSE_Arguments* pArguments) { 34994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"previous"); 35014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_IsBOF(CFXJSE_Arguments* pArguments) { 35044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"isBOF"); 35064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_IsEOF(CFXJSE_Arguments* pArguments) { 35094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"isEOF"); 35114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Cancel(CFXJSE_Arguments* pArguments) { 35144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"cancel"); 35164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Update(CFXJSE_Arguments* pArguments) { 35194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"update"); 35214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Open(CFXJSE_Arguments* pArguments) { 35244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"open"); 35264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Delete(CFXJSE_Arguments* pArguments) { 35294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"delete"); 35314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_AddNew(CFXJSE_Arguments* pArguments) { 35344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"addNew"); 35364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Requery(CFXJSE_Arguments* pArguments) { 35394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"requery"); 35414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Resync(CFXJSE_Arguments* pArguments) { 35444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"resync"); 35464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Close(CFXJSE_Arguments* pArguments) { 35494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"close"); 35514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Last(CFXJSE_Arguments* pArguments) { 35544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"last"); 35564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_HasDataChanged(CFXJSE_Arguments* pArguments) { 35594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pArguments->GetLength() != 0) 35604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"hasDataChanged"); 35614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Source_Db(CFXJSE_Value* pValue, 35644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 35654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 35664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Xfa_This(CFXJSE_Value* pValue, 35684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 35694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 35704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bSetting) { 35714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Object* pThis = m_pDocument->GetScriptContext()->GetThisObject(); 35724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pThis); 35734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->Assign(m_pDocument->GetScriptContext()->GetJSValueFromMap(pThis)); 35744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 35754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Handler_Version(CFXJSE_Value* pValue, 35784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 35794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 35804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_SubmitFormat_Mode(CFXJSE_Value* pValue, 35824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 35834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 35844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Extras_Type(CFXJSE_Value* pValue, 35864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 35874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 35884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Script_Stateless(CFXJSE_Value* pValue, 35904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 35914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 35924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 35934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 35944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 35954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 35965ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pValue->SetString(FX_UTF8Encode(CFX_WideStringC(L"0", 1)).AsStringC()); 35974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::Script_Encrypt_Format(CFXJSE_Value* pValue, 36004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 36014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) {} 36024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 36034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::HasAttribute(XFA_ATTRIBUTE eAttr, bool bCanInherit) { 36044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), eAttr); 36054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return HasMapModuleKey(pKey, bCanInherit); 36064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 36074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 36084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::SetAttribute(XFA_ATTRIBUTE eAttr, 36094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideStringC& wsValue, 36104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNotify) { 36114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEINFO* pAttr = XFA_GetAttributeByID(eAttr); 36124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pAttr) 36134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 36144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 36154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTETYPE eType = pAttr->eType; 36164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_ATTRIBUTETYPE_NOTSURE) { 36174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_NOTSUREATTRIBUTE* pNotsure = 36184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_GetNotsureAttribute(GetElementType(), pAttr->eName); 36194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eType = pNotsure ? pNotsure->eType : XFA_ATTRIBUTETYPE_Cdata; 36204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 36214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (eType) { 36224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Enum: { 36234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEENUMINFO* pEnum = XFA_GetAttributeEnumByName(wsValue); 36244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return SetEnum(pAttr->eName, 36254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pEnum ? pEnum->eName 36264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : (XFA_ATTRIBUTEENUM)(intptr_t)(pAttr->pDefValue), 36274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNotify); 36284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 36294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Cdata: 36304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return SetCData(pAttr->eName, CFX_WideString(wsValue), bNotify); 36314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Boolean: 36325ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann return SetBoolean(pAttr->eName, wsValue != L"0", bNotify); 36334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Integer: 36344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return SetInteger(pAttr->eName, 36354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FXSYS_round(FXSYS_wcstof(wsValue.c_str(), 36364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue.GetLength(), nullptr)), 36374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNotify); 36384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Measure: 36394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return SetMeasure(pAttr->eName, CXFA_Measurement(wsValue), bNotify); 36404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 36414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 36424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 36434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 36444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 36454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 36464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::GetAttribute(XFA_ATTRIBUTE eAttr, 36474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsValue, 36484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUseDefault) { 36494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEINFO* pAttr = XFA_GetAttributeByID(eAttr); 36504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pAttr) { 36514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 36524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 36534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTETYPE eType = pAttr->eType; 36544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_ATTRIBUTETYPE_NOTSURE) { 36554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_NOTSUREATTRIBUTE* pNotsure = 36564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_GetNotsureAttribute(GetElementType(), pAttr->eName); 36574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eType = pNotsure ? pNotsure->eType : XFA_ATTRIBUTETYPE_Cdata; 36584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 36594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (eType) { 36604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Enum: { 36614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTEENUM eValue; 36624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!TryEnum(pAttr->eName, eValue, bUseDefault)) { 36634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 36644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 36654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = GetAttributeEnumByID(eValue)->pName; 36664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 36674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 36684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Cdata: { 36694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsValueC; 36704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!TryCData(pAttr->eName, wsValueC, bUseDefault)) { 36714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 36724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 36734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = wsValueC; 36744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 36754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 36764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Boolean: { 36774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bValue; 36784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!TryBoolean(pAttr->eName, bValue, bUseDefault)) { 36794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 36804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 36815ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann wsValue = bValue ? L"1" : L"0"; 36824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 36834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 36844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Integer: { 36854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iValue; 36864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!TryInteger(pAttr->eName, iValue, bUseDefault)) { 36874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 36884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 36894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue.Format(L"%d", iValue); 36904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 36914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 36924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Measure: { 36934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Measurement mValue; 36944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!TryMeasure(pAttr->eName, mValue, bUseDefault)) { 36954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 36964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 36974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann mValue.ToString(wsValue); 36984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 36994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 37004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 37014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 37024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 37034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 37044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 37054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 37064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::SetAttribute(const CFX_WideStringC& wsAttr, 37074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideStringC& wsValue, 37084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNotify) { 37094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEINFO* pAttributeInfo = XFA_GetAttributeByName(wsValue); 37104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pAttributeInfo) { 37114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return SetAttribute(pAttributeInfo->eName, wsValue, bNotify); 37124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 37134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Custom(wsAttr); 37144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetMapModuleString(pKey, wsValue); 37154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 37164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 37174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 37184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::GetAttribute(const CFX_WideStringC& wsAttr, 37194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsValue, 37204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUseDefault) { 37214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEINFO* pAttributeInfo = XFA_GetAttributeByName(wsAttr); 37224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pAttributeInfo) { 37234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return GetAttribute(pAttributeInfo->eName, wsValue, bUseDefault); 37244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 37254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Custom(wsAttr); 37264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsValueC; 37274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetMapModuleString(pKey, wsValueC)) { 37284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = wsValueC; 37294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 37304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 37314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 37324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 37334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::RemoveAttribute(const CFX_WideStringC& wsAttr) { 37344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Custom(wsAttr); 37354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann RemoveMapModuleKey(pKey); 37364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 37374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 37384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 37394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::TryBoolean(XFA_ATTRIBUTE eAttr, 37404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool& bValue, 37414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUseDefault) { 37424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pValue = nullptr; 37434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!GetValue(eAttr, XFA_ATTRIBUTETYPE_Boolean, bUseDefault, pValue)) 37444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 37454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bValue = !!pValue; 37464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 37474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 37484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 37494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::TryInteger(XFA_ATTRIBUTE eAttr, 37504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t& iValue, 37514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUseDefault) { 37524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pValue = nullptr; 37534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!GetValue(eAttr, XFA_ATTRIBUTETYPE_Integer, bUseDefault, pValue)) 37544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 37554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iValue = (int32_t)(uintptr_t)pValue; 37564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 37574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 37584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 37594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::TryEnum(XFA_ATTRIBUTE eAttr, 37604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTEENUM& eValue, 37614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUseDefault) { 37624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pValue = nullptr; 37634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!GetValue(eAttr, XFA_ATTRIBUTETYPE_Enum, bUseDefault, pValue)) 37644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 37654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eValue = (XFA_ATTRIBUTEENUM)(uintptr_t)pValue; 37664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 37674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 37684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 37694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::SetMeasure(XFA_ATTRIBUTE eAttr, 37704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Measurement mValue, 37714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNotify) { 37724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), eAttr); 37734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann OnChanging(eAttr, bNotify); 37744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetMapModuleBuffer(pKey, &mValue, sizeof(CXFA_Measurement)); 37754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann OnChanged(eAttr, bNotify, false); 37764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 37774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 37784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 37794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::TryMeasure(XFA_ATTRIBUTE eAttr, 37804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Measurement& mValue, 37814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUseDefault) const { 37824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), eAttr); 37834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pValue; 37844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iBytes; 37854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetMapModuleBuffer(pKey, pValue, iBytes) && iBytes == sizeof(mValue)) { 37864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FXSYS_memcpy(&mValue, pValue, sizeof(mValue)); 37874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 37884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 37894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bUseDefault && 37904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_GetAttributeDefaultValue(pValue, GetElementType(), eAttr, 37914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTETYPE_Measure, m_ePacket)) { 37924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FXSYS_memcpy(&mValue, pValue, sizeof(mValue)); 37934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 37944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 37954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 37964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 37974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 37984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Measurement CXFA_Node::GetMeasure(XFA_ATTRIBUTE eAttr) const { 37994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Measurement mValue; 38004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return TryMeasure(eAttr, mValue, true) ? mValue : CXFA_Measurement(); 38014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 38024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 38034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::SetCData(XFA_ATTRIBUTE eAttr, 38044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsValue, 38054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNotify, 38064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bScriptModify) { 38074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), eAttr); 38084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann OnChanging(eAttr, bNotify); 38094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eAttr == XFA_ATTRIBUTE_Value) { 38104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString* pClone = new CFX_WideString(wsValue); 38114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetUserData(pKey, pClone, &deleteWideStringCallBack); 38124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 38134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetMapModuleString(pKey, wsValue.AsStringC()); 38144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eAttr == XFA_ATTRIBUTE_Name) 38154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann UpdateNameHash(); 38164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann OnChanged(eAttr, bNotify, bScriptModify); 38184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 38194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!IsNeedSavingXMLNode() || eAttr == XFA_ATTRIBUTE_QualifiedName || 38204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eAttr == XFA_ATTRIBUTE_BindingNode) { 38214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 38224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 38244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eAttr == XFA_ATTRIBUTE_Name && 38254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (m_elementType == XFA_Element::DataValue || 38264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_elementType == XFA_Element::DataGroup)) { 38274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 38284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 38304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eAttr == XFA_ATTRIBUTE_Value) { 38314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FDE_XMLNODETYPE eXMLType = m_pXMLNode->GetType(); 38324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (eXMLType) { 38334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case FDE_XMLNODE_Element: 38344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (IsAttributeInXML()) { 38354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(m_pXMLNode) 38364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->SetString(CFX_WideString(GetCData(XFA_ATTRIBUTE_QualifiedName)), 38374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue); 38384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 38394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bDeleteChildren = true; 38404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetPacketID() == XFA_XDPPACKET_Datasets) { 38414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pChildDataNode = 38424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetNodeItem(XFA_NODEITEM_FirstChild); 38434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChildDataNode; pChildDataNode = pChildDataNode->GetNodeItem( 38444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_NODEITEM_NextSibling)) { 38454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray formNodes; 38464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pChildDataNode->GetBindItems(formNodes) > 0) { 38474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bDeleteChildren = false; 38484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 38494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bDeleteChildren) { 38534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(m_pXMLNode)->DeleteChildren(); 38544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(m_pXMLNode)->SetTextData(wsValue); 38564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 38584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case FDE_XMLNODE_Text: 38594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLText*>(m_pXMLNode)->SetText(wsValue); 38604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 38614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 38624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(0); 38634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 38654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 38674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttr); 38684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pInfo) { 38694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(m_pXMLNode->GetType() == FDE_XMLNODE_Element); 38704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsAttrName = pInfo->pName; 38714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pInfo->eName == XFA_ATTRIBUTE_ContentType) { 38725ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann wsAttrName = L"xfa:" + wsAttrName; 38734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(m_pXMLNode)->SetString(wsAttrName, wsValue); 38754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 38764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 38774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 38784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 38794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::SetAttributeValue(const CFX_WideString& wsValue, 38804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsXMLValue, 38814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNotify, 38824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bScriptModify) { 38834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), XFA_ATTRIBUTE_Value); 38844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann OnChanging(XFA_ATTRIBUTE_Value, bNotify); 38854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString* pClone = new CFX_WideString(wsValue); 38864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetUserData(pKey, pClone, &deleteWideStringCallBack); 38874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann OnChanged(XFA_ATTRIBUTE_Value, bNotify, bScriptModify); 38884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (IsNeedSavingXMLNode()) { 38894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FDE_XMLNODETYPE eXMLType = m_pXMLNode->GetType(); 38904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (eXMLType) { 38914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case FDE_XMLNODE_Element: 38924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (IsAttributeInXML()) { 38934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(m_pXMLNode) 38944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->SetString(CFX_WideString(GetCData(XFA_ATTRIBUTE_QualifiedName)), 38954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsXMLValue); 38964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 38974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bDeleteChildren = true; 38984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetPacketID() == XFA_XDPPACKET_Datasets) { 38994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pChildDataNode = 39004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetNodeItem(XFA_NODEITEM_FirstChild); 39014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChildDataNode; pChildDataNode = pChildDataNode->GetNodeItem( 39024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_NODEITEM_NextSibling)) { 39034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray formNodes; 39044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pChildDataNode->GetBindItems(formNodes) > 0) { 39054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bDeleteChildren = false; 39064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 39074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bDeleteChildren) { 39114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(m_pXMLNode)->DeleteChildren(); 39124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(m_pXMLNode)->SetTextData(wsXMLValue); 39144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 39164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case FDE_XMLNODE_Text: 39174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLText*>(m_pXMLNode)->SetText(wsXMLValue); 39184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 39194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 39204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(0); 39214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 39244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 39254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 39264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::TryCData(XFA_ATTRIBUTE eAttr, 39274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsValue, 39284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUseDefault, 39294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bProto) { 39304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), eAttr); 39314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eAttr == XFA_ATTRIBUTE_Value) { 39324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString* pStr = (CFX_WideString*)GetUserData(pKey, bProto); 39334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pStr) { 39344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = *pStr; 39354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 39364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 39384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsValueC; 39394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetMapModuleString(pKey, wsValueC)) { 39404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = wsValueC; 39414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 39424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bUseDefault) { 39454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 39464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pValue = nullptr; 39484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (XFA_GetAttributeDefaultValue(pValue, GetElementType(), eAttr, 39494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTETYPE_Cdata, m_ePacket)) { 39504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = (const FX_WCHAR*)pValue; 39514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 39524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 39544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 39554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 39564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::TryCData(XFA_ATTRIBUTE eAttr, 39574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC& wsValue, 39584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUseDefault, 39594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bProto) { 39604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), eAttr); 39614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eAttr == XFA_ATTRIBUTE_Value) { 39624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString* pStr = (CFX_WideString*)GetUserData(pKey, bProto); 39634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pStr) { 39644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = pStr->AsStringC(); 39654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 39664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 39684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetMapModuleString(pKey, wsValue)) { 39694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 39704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bUseDefault) { 39734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 39744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pValue = nullptr; 39764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (XFA_GetAttributeDefaultValue(pValue, GetElementType(), eAttr, 39774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTETYPE_Cdata, m_ePacket)) { 39784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = (CFX_WideStringC)(const FX_WCHAR*)pValue; 39794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 39804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 39814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 39824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 39834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 39844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::SetObject(XFA_ATTRIBUTE eAttr, 39854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pData, 39864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPDATABLOCKCALLBACKINFO* pCallbackInfo) { 39874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), eAttr); 39884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return SetUserData(pKey, pData, pCallbackInfo); 39894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 39904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 39914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::TryObject(XFA_ATTRIBUTE eAttr, void*& pData) { 39924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), eAttr); 39934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pData = GetUserData(pKey); 39944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return !!pData; 39954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 39964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 39974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::SetValue(XFA_ATTRIBUTE eAttr, 39984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTETYPE eType, 39994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pValue, 40004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNotify) { 40014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), eAttr); 40024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann OnChanging(eAttr, bNotify); 40034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetMapModuleValue(pKey, pValue); 40044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann OnChanged(eAttr, bNotify, false); 40054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (IsNeedSavingXMLNode()) { 40064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(m_pXMLNode->GetType() == FDE_XMLNODE_Element); 40074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttr); 40084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pInfo) { 40094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (eType) { 40104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Enum: 40114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(m_pXMLNode) 40124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->SetString( 40134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInfo->pName, 40144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetAttributeEnumByID((XFA_ATTRIBUTEENUM)(uintptr_t)pValue) 40154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->pName); 40164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 40174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Boolean: 40184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(m_pXMLNode) 40194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->SetString(pInfo->pName, pValue ? L"1" : L"0"); 40204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 40214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ATTRIBUTETYPE_Integer: 40224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(m_pXMLNode) 40234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->SetInteger(pInfo->pName, (int32_t)(uintptr_t)pValue); 40244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 40254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 40264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(0); 40274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 40284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 40294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 40304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 40314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 40324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 40334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::GetValue(XFA_ATTRIBUTE eAttr, 40344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTETYPE eType, 40354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bUseDefault, 40364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void*& pValue) { 40374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey = GetMapKey_Element(GetElementType(), eAttr); 40384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetMapModuleValue(pKey, pValue)) { 40394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 40404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 40414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bUseDefault) { 40424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 40434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 40444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_GetAttributeDefaultValue(pValue, GetElementType(), eAttr, eType, 40454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_ePacket); 40464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 40474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 40484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::SetUserData(void* pKey, 40494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pData, 40504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPDATABLOCKCALLBACKINFO* pCallbackInfo) { 40514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetMapModuleBuffer(pKey, &pData, sizeof(void*), 40524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pCallbackInfo ? pCallbackInfo : &gs_XFADefaultFreeData); 40534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 40544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 40554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 40564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::TryUserData(void* pKey, void*& pData, bool bProtoAlso) { 40574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iBytes = 0; 40584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!GetMapModuleBuffer(pKey, pData, iBytes, bProtoAlso)) { 40594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 40604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 40614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return iBytes == sizeof(void*) && FXSYS_memcpy(&pData, pData, iBytes); 40624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 40634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 40644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::SetScriptContent(const CFX_WideString& wsContent, 40654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsXMLValue, 40664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNotify, 40674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bScriptModify, 40684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSyncData) { 40694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = nullptr; 40704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBindNode = nullptr; 40714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetObjectType()) { 40724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ObjectType::ContainerNode: { 40734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (XFA_FieldIsMultiListBox(this)) { 40744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pValue = GetProperty(0, XFA_Element::Value); 40754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild); 40764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pChildValue); 40774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChildValue->SetCData(XFA_ATTRIBUTE_ContentType, L"text/xml"); 40784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChildValue->SetScriptContent(wsContent, wsContent, bNotify, 40794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bScriptModify, false); 40804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBind = GetBindData(); 40814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSyncData && pBind) { 40824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CFX_WideString> wsSaveTextArray; 40834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iSize = 0; 40844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!wsContent.IsEmpty()) { 40854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iStart = 0; 40864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = wsContent.GetLength(); 40874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iEnd = wsContent.Find(L'\n', iStart); 40884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iEnd = (iEnd == -1) ? iLength : iEnd; 40894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (iEnd >= iStart) { 40904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsSaveTextArray.push_back(wsContent.Mid(iStart, iEnd - iStart)); 40914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iStart = iEnd + 1; 40924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iStart >= iLength) { 40934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 40944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 40954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iEnd = wsContent.Find(L'\n', iStart); 40964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iEnd < 0) { 40974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsSaveTextArray.push_back( 40984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsContent.Mid(iStart, iLength - iStart)); 40994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iSize = pdfium::CollectionSize<int32_t>(wsSaveTextArray); 41024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iSize == 0) { 41044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (CXFA_Node* pChildNode = 41054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBind->GetNodeItem(XFA_NODEITEM_FirstChild)) { 41064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBind->RemoveChild(pChildNode); 41074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 41094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray valueNodes; 41104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iDatas = pBind->GetNodeList( 41114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann valueNodes, XFA_NODEFILTER_Children, XFA_Element::DataValue); 41124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iDatas < iSize) { 41134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iAddNodes = iSize - iDatas; 41144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pValueNodes = nullptr; 41154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (iAddNodes-- > 0) { 41164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValueNodes = 41174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBind->CreateSamePacketNode(XFA_Element::DataValue); 41184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValueNodes->SetCData(XFA_ATTRIBUTE_Name, L"value"); 41194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValueNodes->CreateXMLMappingNode(); 41204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBind->InsertChild(pValueNodes); 41214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValueNodes = nullptr; 41234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (iDatas > iSize) { 41244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iDelNodes = iDatas - iSize; 41254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (iDelNodes-- > 0) { 41264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBind->RemoveChild(pBind->GetNodeItem(XFA_NODEITEM_FirstChild)); 41274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t i = 0; 41304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pValueNode = 41314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBind->GetNodeItem(XFA_NODEITEM_FirstChild); 41324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValueNode; pValueNode = pValueNode->GetNodeItem( 41334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_NODEITEM_NextSibling)) { 41344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValueNode->SetAttributeValue(wsSaveTextArray[i], 41354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsSaveTextArray[i], false); 41364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann i++; 41374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray nodeArray; 41404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBind->GetBindItems(nodeArray); 41414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < nodeArray.GetSize(); i++) { 41424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nodeArray[i] != this) { 41434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nodeArray[i]->SetScriptContent(wsContent, wsContent, bNotify, 41444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bScriptModify, false); 41454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 41494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (GetElementType() == XFA_Element::ExclGroup) { 41504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = this; 41514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 41524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pValue = GetProperty(0, XFA_Element::Value); 41534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild); 41544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pChildValue); 41554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pChildValue->SetScriptContent(wsContent, wsContent, bNotify, 41564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bScriptModify, false); 41574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBindNode = GetBindData(); 41594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBindNode && bSyncData) { 41604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBindNode->SetScriptContent(wsContent, wsXMLValue, bNotify, 41614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bScriptModify, false); 41624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray nodeArray; 41634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBindNode->GetBindItems(nodeArray); 41644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < nodeArray.GetSize(); i++) { 41654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nodeArray[i] != this) { 41664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nodeArray[i]->SetScriptContent(wsContent, wsContent, bNotify, true, 41674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann false); 41684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBindNode = nullptr; 41724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 41734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ObjectType::ContentNode: { 41754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsContentType; 41764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetElementType() == XFA_Element::ExData) { 41774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType, false); 41785ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (wsContentType == L"text/html") { 41795ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann wsContentType = L""; 41804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType.AsStringC()); 41814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pContentRawDataNode = GetNodeItem(XFA_NODEITEM_FirstChild); 41844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pContentRawDataNode) { 41854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pContentRawDataNode = CreateSamePacketNode( 41865ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann (wsContentType == L"text/xml") ? XFA_Element::Sharpxml 41875ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann : XFA_Element::Sharptext); 41884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertChild(pContentRawDataNode); 41894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 41904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pContentRawDataNode->SetScriptContent( 41914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsContent, wsXMLValue, bNotify, bScriptModify, bSyncData); 41924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } break; 41934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ObjectType::NodeC: 41944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ObjectType::TextNode: 41954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = this; 41964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 41974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ObjectType::NodeV: 41984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = this; 41994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSyncData && GetPacketID() == XFA_XDPPACKET_Form) { 42004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParent = GetNodeItem(XFA_NODEITEM_Parent); 42014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParent) { 42024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParent = pParent->GetNodeItem(XFA_NODEITEM_Parent); 42034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParent && pParent->GetElementType() == XFA_Element::Value) { 42054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParent = pParent->GetNodeItem(XFA_NODEITEM_Parent); 42064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParent && pParent->IsContainerNode()) { 42074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBindNode = pParent->GetBindData(); 42084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBindNode) { 42094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBindNode->SetScriptContent(wsContent, wsXMLValue, bNotify, 42104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bScriptModify, false); 42114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 42164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 42174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetElementType() == XFA_Element::DataValue) { 42184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = this; 42194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBindNode = this; 42204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 42224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode) { 42244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetAttributeValue(wsContent, wsXMLValue, bNotify, bScriptModify); 42254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBindNode && bSyncData) { 42264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_NodeArray nodeArray; 42274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBindNode->GetBindItems(nodeArray); 42284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < nodeArray.GetSize(); i++) { 42294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nodeArray[i]->SetScriptContent(wsContent, wsContent, bNotify, 42304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bScriptModify, false); 42314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 42344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 42364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 42374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 42384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::SetContent(const CFX_WideString& wsContent, 42394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsXMLValue, 42404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNotify, 42414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bScriptModify, 42424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSyncData) { 42434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return SetScriptContent(wsContent, wsXMLValue, bNotify, bScriptModify, 42444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bSyncData); 42454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 42464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 42474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCFX_WideString CXFA_Node::GetScriptContent(bool bScriptModify) { 42484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsContent; 42494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return TryContent(wsContent, bScriptModify) ? wsContent : CFX_WideString(); 42504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 42514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 42524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCFX_WideString CXFA_Node::GetContent() { 42534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return GetScriptContent(); 42544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 42554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 42564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::TryContent(CFX_WideString& wsContent, 42574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bScriptModify, 42584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bProto) { 42594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = nullptr; 42604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetObjectType()) { 42614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ObjectType::ContainerNode: 42624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetElementType() == XFA_Element::ExclGroup) { 42634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = this; 42644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 42654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pValue = GetChild(0, XFA_Element::Value); 42664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pValue) { 42674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 42684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild); 42704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pChildValue && XFA_FieldIsMultiListBox(this)) { 42715ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann pChildValue->SetAttribute(XFA_ATTRIBUTE_ContentType, L"text/xml"); 42724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pChildValue 42744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ? pChildValue->TryContent(wsContent, bScriptModify, bProto) 42754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : false; 42764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 42784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ObjectType::ContentNode: { 42794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pContentRawDataNode = GetNodeItem(XFA_NODEITEM_FirstChild); 42804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pContentRawDataNode) { 42814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element element = XFA_Element::Sharptext; 42824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetElementType() == XFA_Element::ExData) { 42834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsContentType; 42844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType, false); 42855ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann if (wsContentType == L"text/html") { 42864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann element = XFA_Element::SharpxHTML; 42875ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann } else if (wsContentType == L"text/xml") { 42884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann element = XFA_Element::Sharpxml; 42894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pContentRawDataNode = CreateSamePacketNode(element); 42924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertChild(pContentRawDataNode); 42934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pContentRawDataNode->TryContent(wsContent, bScriptModify, bProto); 42954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 42964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ObjectType::NodeC: 42974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ObjectType::NodeV: 42984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_ObjectType::TextNode: 42994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = this; 43004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 43014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetElementType() == XFA_Element::DataValue) { 43024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = this; 43034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 43054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode) { 43074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bScriptModify) { 43084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); 43094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pScriptContext) { 43104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->AddNodesOfRunScript(this); 43114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return TryCData(XFA_ATTRIBUTE_Value, wsContent, false, bProto); 43144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 43164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 43174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 43184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetModelNode() { 43194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetPacketID()) { 43204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_XDPPACKET_XDP: 43214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pDocument->GetRoot(); 43224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_XDPPACKET_Config: 43234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Config)); 43244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_XDPPACKET_Template: 43254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Template)); 43264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_XDPPACKET_Form: 43274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form)); 43284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_XDPPACKET_Datasets: 43294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Datasets)); 43304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_XDPPACKET_LocaleSet: 43314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_LocaleSet)); 43324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_XDPPACKET_ConnectionSet: 43334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_ConnectionSet)); 43344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_XDPPACKET_SourceSet: 43354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_SourceSet)); 43364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_XDPPACKET_Xdc: 43374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Xdc)); 43384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 43394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return this; 43404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 43424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 43434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::TryNamespace(CFX_WideString& wsNamespace) { 43444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsNamespace.clear(); 43454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (IsModelNode() || GetElementType() == XFA_Element::Packet) { 43464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLNode = GetXMLMappingNode(); 43474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pXMLNode || pXMLNode->GetType() != FDE_XMLNODE_Element) { 43484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 43494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(pXMLNode)->GetNamespaceURI(wsNamespace); 43514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 43524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (GetPacketID() == XFA_XDPPACKET_Datasets) { 43534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLNode* pXMLNode = GetXMLMappingNode(); 43544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pXMLNode) { 43554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 43564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pXMLNode->GetType() != FDE_XMLNODE_Element) { 43584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 43594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (GetElementType() == XFA_Element::DataValue && 43614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetEnum(XFA_ATTRIBUTE_Contains) == XFA_ATTRIBUTEENUM_MetaData) { 43624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_FDEExtension_ResolveNamespaceQualifier( 43634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(pXMLNode), 43644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetCData(XFA_ATTRIBUTE_QualifiedName), wsNamespace); 43654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(pXMLNode)->GetNamespaceURI(wsNamespace); 43674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 43684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 43694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pModelNode = GetModelNode(); 43704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pModelNode->TryNamespace(wsNamespace); 43714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 43734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 43744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetProperty(int32_t index, 43754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eProperty, 43764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bCreateProperty) { 43774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eType = GetElementType(); 43784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwPacket = GetPacketID(); 43794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_PROPERTY* pProperty = 43804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_GetPropertyOfElement(eType, eProperty, dwPacket); 43814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pProperty || index >= pProperty->uOccur) 43824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 43834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 43844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = m_pChild; 43854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = 0; 43864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 43874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->GetElementType() == eProperty) { 43884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iCount++; 43894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iCount > index) { 43904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNode; 43914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 43944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bCreateProperty) 43954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 43964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 43974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pProperty->uFlags & XFA_PROPERTYFLAG_OneOf) { 43984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = m_pChild; 43994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 44004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_PROPERTY* pExistProperty = 44014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_GetPropertyOfElement(eType, pNode->GetElementType(), dwPacket); 44024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pExistProperty && (pExistProperty->uFlags & XFA_PROPERTYFLAG_OneOf)) 44034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 44044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 44074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_PACKETINFO* pPacket = XFA_GetPacketByID(dwPacket); 44084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewNode = nullptr; 44094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (; iCount <= index; iCount++) { 44104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNewNode = m_pDocument->CreateNode(pPacket, eProperty); 44114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNewNode) 44124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 44134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann InsertChild(pNewNode, nullptr); 44144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNewNode->SetFlag(XFA_NodeFlag_Initialized, true); 44154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNewNode; 44174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 44184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 44194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::CountChildren(XFA_Element eType, bool bOnlyChild) { 44204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = m_pChild; 44214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = 0; 44224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 44234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->GetElementType() == eType || eType == XFA_Element::Unknown) { 44244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bOnlyChild) { 44254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_PROPERTY* pProperty = XFA_GetPropertyOfElement( 44264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetElementType(), pNode->GetElementType(), XFA_XDPPACKET_UNKNOWN); 44274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pProperty) { 44284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 44294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iCount++; 44324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return iCount; 44354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 44364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 44374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetChild(int32_t index, 44384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eType, 44394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bOnlyChild) { 44404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(index > -1); 44414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = m_pChild; 44424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = 0; 44434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 44444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->GetElementType() == eType || eType == XFA_Element::Unknown) { 44454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bOnlyChild) { 44464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_PROPERTY* pProperty = XFA_GetPropertyOfElement( 44474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetElementType(), pNode->GetElementType(), XFA_XDPPACKET_UNKNOWN); 44484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pProperty) { 44494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 44504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iCount++; 44534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iCount > index) { 44544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNode; 44554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 44594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 44604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 44614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::InsertChild(int32_t index, CXFA_Node* pNode) { 44624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(!pNode->m_pNext); 44634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pParent = this; 44644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool ret = m_pDocument->RemovePurgeNode(pNode); 44654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(ret); 44664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (void)ret; // Avoid unused variable warning. 44674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 44684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pChild || index == 0) { 44694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (index > 0) { 44704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return -1; 44714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pNext = m_pChild; 44734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pChild = pNode; 44744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann index = 0; 44754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (index < 0) { 44764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pLastChild->m_pNext = pNode; 44774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 44784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pPrev = m_pChild; 44794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iCount = 0; 44804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (++iCount != index && pPrev->m_pNext) { 44814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPrev = pPrev->m_pNext; 44824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (index > 0 && index != iCount) { 44844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return -1; 44854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pNext = pPrev->m_pNext; 44874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPrev->m_pNext = pNode; 44884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann index = iCount; 44894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNode->m_pNext) { 44914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pLastChild = pNode; 44924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 44934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(m_pLastChild); 44944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(!m_pLastChild->m_pNext); 44954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->ClearFlag(XFA_NodeFlag_HasRemovedChildren); 44964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 44974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNotify) 44984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnChildAdded(this); 44994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 45004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { 45014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(!pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent)); 45024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, index); 45034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->ClearFlag(XFA_NodeFlag_OwnXMLNode); 45044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return index; 45064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 45074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 45084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::InsertChild(CXFA_Node* pNode, CXFA_Node* pBeforeNode) { 45094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNode || pNode->m_pParent || 45104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (pBeforeNode && pBeforeNode->m_pParent != this)) { 45114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(false); 45124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 45134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool ret = m_pDocument->RemovePurgeNode(pNode); 45154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(ret); 45164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (void)ret; // Avoid unused variable warning. 45174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 45184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t nIndex = -1; 45194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pParent = this; 45204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pChild || pBeforeNode == m_pChild) { 45214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pNext = m_pChild; 45224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pChild = pNode; 45234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nIndex = 0; 45244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (!pBeforeNode) { 45254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pNext = m_pLastChild->m_pNext; 45264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pLastChild->m_pNext = pNode; 45274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 45284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nIndex = 1; 45294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pPrev = m_pChild; 45304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (pPrev->m_pNext != pBeforeNode) { 45314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPrev = pPrev->m_pNext; 45324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nIndex++; 45334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pNext = pPrev->m_pNext; 45354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPrev->m_pNext = pNode; 45364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNode->m_pNext) { 45384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pLastChild = pNode; 45394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(m_pLastChild); 45414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(!m_pLastChild->m_pNext); 45424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->ClearFlag(XFA_NodeFlag_HasRemovedChildren); 45434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 45444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNotify) 45454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnChildAdded(this); 45464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 45474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { 45484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(!pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent)); 45494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, nIndex); 45504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->ClearFlag(XFA_NodeFlag_OwnXMLNode); 45514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 45534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 45544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 45554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::Deprecated_GetPrevSibling() { 45564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pParent) { 45574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 45584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pSibling = m_pParent->m_pChild; pSibling; 45604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSibling = pSibling->m_pNext) { 45614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pSibling->m_pNext == this) { 45624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pSibling; 45634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 45664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 45674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 45684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::RemoveChild(CXFA_Node* pNode, bool bNotify) { 45694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNode || pNode->m_pParent != this) { 45704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(false); 45714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 45724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_pChild == pNode) { 45744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pChild = pNode->m_pNext; 45754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_pLastChild == pNode) { 45764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pLastChild = pNode->m_pNext; 45774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pNext = nullptr; 45794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pParent = nullptr; 45804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 45814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pPrev = pNode->Deprecated_GetPrevSibling(); 45824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pPrev->m_pNext = pNode->m_pNext; 45834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_pLastChild == pNode) { 45844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pLastChild = pNode->m_pNext ? pNode->m_pNext : pPrev; 45854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pNext = nullptr; 45874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pParent = nullptr; 45884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 45894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(!m_pLastChild || !m_pLastChild->m_pNext); 45904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann OnRemoved(bNotify); 45914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->SetFlag(XFA_NodeFlag_HasRemovedChildren, true); 45924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->AddPurgeNode(pNode); 45934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { 45944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->IsAttributeInXML()) { 45954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(pNode->m_pXMLNode == m_pXMLNode && 45964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pXMLNode->GetType() == FDE_XMLNODE_Element); 45974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->m_pXMLNode->GetType() == FDE_XMLNODE_Element) { 45984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLElement* pXMLElement = 45994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CFDE_XMLElement*>(pNode->m_pXMLNode); 46004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsAttributeName = 46014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->GetCData(XFA_ATTRIBUTE_QualifiedName); 46024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pXMLElement->RemoveAttribute(wsAttributeName.c_str()); 46034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsName; 46054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->GetAttribute(XFA_ATTRIBUTE_Name, wsName, false); 46064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFDE_XMLElement* pNewXMLElement = new CFDE_XMLElement(wsName); 46074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsValue = GetCData(XFA_ATTRIBUTE_Value); 46084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!wsValue.IsEmpty()) { 46094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNewXMLElement->SetTextData(CFX_WideString(wsValue)); 46104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_pXMLNode = pNewXMLElement; 46124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->SetEnum(XFA_ATTRIBUTE_Contains, XFA_ATTRIBUTEENUM_Unknown); 46134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 46144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pXMLNode->RemoveChildNode(pNode->m_pXMLNode); 46154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->SetFlag(XFA_NodeFlag_OwnXMLNode, false); 46174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 46194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 46204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 46214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetFirstChildByName(const CFX_WideStringC& wsName) const { 46224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return GetFirstChildByName(FX_HashCode_GetW(wsName, false)); 46234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 46244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 46254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetFirstChildByName(uint32_t dwNameHash) const { 46264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_FirstChild); pNode; 46274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 46284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->GetNameHash() == dwNameHash) { 46294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNode; 46304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 46334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 46344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 46354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetFirstChildByClass(XFA_Element eType) const { 46364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_FirstChild); pNode; 46374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 46384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->GetElementType() == eType) { 46394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNode; 46404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 46434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 46444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 46454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetNextSameNameSibling(uint32_t dwNameHash) const { 46464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_NextSibling); pNode; 46474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 46484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->GetNameHash() == dwNameHash) { 46494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNode; 46504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 46534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 46544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 46554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetNextSameNameSibling( 46564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideStringC& wsNodeName) const { 46574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return GetNextSameNameSibling(FX_HashCode_GetW(wsNodeName, false)); 46584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 46594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 46604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetNextSameClassSibling(XFA_Element eType) const { 46614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_NextSibling); pNode; 46624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 46634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->GetElementType() == eType) { 46644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNode; 46654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 46684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 46694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 46704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::GetNodeSameNameIndex() const { 46714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); 46724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pScriptContext) { 46734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return -1; 46744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pScriptContext->GetIndexByName(const_cast<CXFA_Node*>(this)); 46764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 46774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 46784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::GetNodeSameClassIndex() const { 46794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); 46804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pScriptContext) { 46814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return -1; 46824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pScriptContext->GetIndexByClassName(const_cast<CXFA_Node*>(this)); 46844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 46854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 46864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::GetSOMExpression(CFX_WideString& wsSOMExpression) { 46874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); 46884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pScriptContext) { 46894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 46904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 46914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pScriptContext->GetSomExpression(this, wsSOMExpression); 46924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 46934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 46944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetInstanceMgrOfSubform() { 46954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pInstanceMgr = nullptr; 46964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_ePacket == XFA_XDPPACKET_Form) { 46974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); 46984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pParentNode || pParentNode->GetElementType() == XFA_Element::Area) { 46994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pInstanceMgr; 47004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; 47024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { 47034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eType = pNode->GetElementType(); 47044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if ((eType == XFA_Element::Subform || eType == XFA_Element::SubformSet) && 47054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->m_dwNameHash != m_dwNameHash) { 47064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 47074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::InstanceManager) { 47094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsName = GetCData(XFA_ATTRIBUTE_Name); 47104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsInstName = pNode->GetCData(XFA_ATTRIBUTE_Name); 47114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsInstName.GetLength() > 0 && wsInstName.GetAt(0) == '_' && 47124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsInstName.Mid(1) == wsName) { 47134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pInstanceMgr = pNode; 47144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 47164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pInstanceMgr; 47204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 47214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 47224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_Node::GetOccurNode() { 47234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return GetFirstChildByClass(XFA_Element::Occur); 47244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 47254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 47264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::HasFlag(XFA_NodeFlag dwFlag) const { 47274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_uNodeFlags & dwFlag) 47284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 47294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwFlag == XFA_NodeFlag_HasRemovedChildren) 47304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pParent && m_pParent->HasFlag(dwFlag); 47314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 47324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 47334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 47344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::SetFlag(uint32_t dwFlag, bool bNotify) { 47354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwFlag == XFA_NodeFlag_Initialized && bNotify && !IsInitialized()) { 47364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 47374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNotify) { 47384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnNodeReady(this); 47394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_uNodeFlags |= dwFlag; 47424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 47434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 47444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::ClearFlag(uint32_t dwFlag) { 47454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_uNodeFlags &= ~dwFlag; 47464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 47474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 47484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::IsAttributeInXML() { 47494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return GetEnum(XFA_ATTRIBUTE_Contains) == XFA_ATTRIBUTEENUM_MetaData; 47504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 47514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 47524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::OnRemoved(bool bNotify) { 47534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bNotify) 47544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 47554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 47564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 47574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNotify) 47584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnChildRemoved(); 47594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 47604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 47614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::OnChanging(XFA_ATTRIBUTE eAttr, bool bNotify) { 47624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bNotify && IsInitialized()) { 47634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 47644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNotify) { 47654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OnValueChanging(this, eAttr); 47664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 47694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 47704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::OnChanged(XFA_ATTRIBUTE eAttr, 47714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNotify, 47724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bScriptModify) { 47734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bNotify && IsInitialized()) { 47744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann Script_Attribute_SendAttributeChangeMessage(eAttr, bScriptModify); 47754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 47774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 47784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Node::execSingleEventByName(const CFX_WideStringC& wsEventName, 47794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element eType) { 47804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = XFA_EVENTERROR_NotExist; 47814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ExecEventParaInfo* eventParaInfo = 47824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetEventParaInfoByName(wsEventName); 47834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eventParaInfo) { 47844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t validFlags = eventParaInfo->m_validFlags; 47854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 47864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 47874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return iRet; 47884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (validFlags == 1) { 47904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType); 47914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (validFlags == 2) { 47924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType, 47934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann false, false); 47944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (validFlags == 3) { 47954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::Subform) { 47964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType, 47974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann false, false); 47984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 47994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (validFlags == 4) { 48004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::ExclGroup || eType == XFA_Element::Field) { 48014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); 48024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParentNode && 48034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentNode->GetElementType() == XFA_Element::ExclGroup) { 48044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType, 48054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann false, false); 48064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType, 48084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann false, false); 48094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (validFlags == 5) { 48114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (eType == XFA_Element::Field) { 48124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType, 48134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann false, false); 48144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (validFlags == 6) { 48164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 48174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pWidgetData) { 48184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pUINode = pWidgetData->GetUIChild(); 48194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pUINode->m_elementType == XFA_Element::Signature) { 48204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType, 48214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann false, false); 48224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (validFlags == 7) { 48254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = GetWidgetData(); 48264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pWidgetData) { 48274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pUINode = pWidgetData->GetUIChild(); 48284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if ((pUINode->m_elementType == XFA_Element::ChoiceList) && 48294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (!pWidgetData->IsListBox())) { 48304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType, 48314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann false, false); 48324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return iRet; 48374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 48384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 48394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::UpdateNameHash() { 48404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_NOTSUREATTRIBUTE* pNotsure = 48414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_GetNotsureAttribute(GetElementType(), XFA_ATTRIBUTE_Name); 48424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsName; 48434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotsure || pNotsure->eType == XFA_ATTRIBUTETYPE_Cdata) { 48444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsName = GetCData(XFA_ATTRIBUTE_Name); 48454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_dwNameHash = FX_HashCode_GetW(wsName, false); 48464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pNotsure->eType == XFA_ATTRIBUTETYPE_Enum) { 48474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsName = GetAttributeEnumByID(GetEnum(XFA_ATTRIBUTE_Name))->pName; 48484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_dwNameHash = FX_HashCode_GetW(wsName, false); 48494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 48514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 48524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCFDE_XMLNode* CXFA_Node::CreateXMLMappingNode() { 48534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pXMLNode) { 48544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsTag(GetCData(XFA_ATTRIBUTE_Name)); 48554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pXMLNode = new CFDE_XMLElement(wsTag); 48564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetFlag(XFA_NodeFlag_OwnXMLNode, false); 48574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pXMLNode; 48594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 48604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 48614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::IsNeedSavingXMLNode() { 48624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pXMLNode && (GetPacketID() == XFA_XDPPACKET_Datasets || 48634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetElementType() == XFA_Element::Xfa); 48644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 48654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 48664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannXFA_MAPMODULEDATA* CXFA_Node::CreateMapModuleData() { 48674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pMapModuleData) 48684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pMapModuleData = new XFA_MAPMODULEDATA; 48694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pMapModuleData; 48704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 48714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 48724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannXFA_MAPMODULEDATA* CXFA_Node::GetMapModuleData() const { 48734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pMapModuleData; 48744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 48754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 48764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::SetMapModuleValue(void* pKey, void* pValue) { 48774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPMODULEDATA* pModule = CreateMapModuleData(); 48784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pModule->m_ValueMap[pKey] = pValue; 48794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 48804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 48814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::GetMapModuleValue(void* pKey, void*& pValue) { 48824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = this; pNode; pNode = pNode->GetTemplateNode()) { 48834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPMODULEDATA* pModule = pNode->GetMapModuleData(); 48844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pModule) { 48854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto it = pModule->m_ValueMap.find(pKey); 48864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (it != pModule->m_ValueMap.end()) { 48874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = it->second; 48884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 48894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pNode->GetPacketID() == XFA_XDPPACKET_Datasets) 48924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 48934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 48944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 48954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 48964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 48974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::SetMapModuleString(void* pKey, const CFX_WideStringC& wsValue) { 48984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetMapModuleBuffer(pKey, (void*)wsValue.c_str(), 48994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue.GetLength() * sizeof(FX_WCHAR)); 49004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 49014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 49024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::GetMapModuleString(void* pKey, CFX_WideStringC& wsValue) { 49034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pValue; 49044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iBytes; 49054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!GetMapModuleBuffer(pKey, pValue, iBytes)) { 49064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 49074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 49084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = CFX_WideStringC((const FX_WCHAR*)pValue, iBytes / sizeof(FX_WCHAR)); 49094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 49104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 49114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 49124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::SetMapModuleBuffer( 49134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey, 49144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pValue, 49154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iBytes, 49164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPDATABLOCKCALLBACKINFO* pCallbackInfo) { 49174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPMODULEDATA* pModule = CreateMapModuleData(); 49184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPDATABLOCK*& pBuffer = pModule->m_BufferMap[pKey]; 49194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pBuffer) { 49204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBuffer = 49214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann (XFA_MAPDATABLOCK*)FX_Alloc(uint8_t, sizeof(XFA_MAPDATABLOCK) + iBytes); 49224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pBuffer->iBytes != iBytes) { 49234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { 49244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); 49254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 49264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBuffer = (XFA_MAPDATABLOCK*)FX_Realloc(uint8_t, pBuffer, 49274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sizeof(XFA_MAPDATABLOCK) + iBytes); 49284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { 49294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); 49304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 49314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pBuffer) 49324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 49334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 49344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBuffer->pCallbackInfo = pCallbackInfo; 49354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBuffer->iBytes = iBytes; 49364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FXSYS_memcpy(pBuffer->GetData(), pValue, iBytes); 49374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 49384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 49394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::GetMapModuleBuffer(void* pKey, 49404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void*& pValue, 49414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t& iBytes, 49424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bProtoAlso) const { 49434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPDATABLOCK* pBuffer = nullptr; 49444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const CXFA_Node* pNode = this; pNode; pNode = pNode->GetTemplateNode()) { 49454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPMODULEDATA* pModule = pNode->GetMapModuleData(); 49464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pModule) { 49474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto it = pModule->m_BufferMap.find(pKey); 49484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (it != pModule->m_BufferMap.end()) { 49494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBuffer = it->second; 49504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 49514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 49524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 49534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bProtoAlso || pNode->GetPacketID() == XFA_XDPPACKET_Datasets) 49544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 49554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 49564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pBuffer) 49574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 49584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 49594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue = pBuffer->GetData(); 49604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iBytes = pBuffer->iBytes; 49614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 49624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 49634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 49644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Node::HasMapModuleKey(void* pKey, bool bProtoAlso) { 49654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (CXFA_Node* pNode = this; pNode; pNode = pNode->GetTemplateNode()) { 49664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPMODULEDATA* pModule = pNode->GetMapModuleData(); 49674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pModule) { 49684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto it1 = pModule->m_ValueMap.find(pKey); 49694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (it1 != pModule->m_ValueMap.end()) 49704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 49714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 49724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto it2 = pModule->m_BufferMap.find(pKey); 49734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (it2 != pModule->m_BufferMap.end()) 49744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 49754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 49764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!bProtoAlso || pNode->GetPacketID() == XFA_XDPPACKET_Datasets) 49774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 49784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 49794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 49804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 49814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 49824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::RemoveMapModuleKey(void* pKey) { 49834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPMODULEDATA* pModule = GetMapModuleData(); 49844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pModule) 49854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 49864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 49874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pKey) { 49884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto it = pModule->m_BufferMap.find(pKey); 49894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (it != pModule->m_BufferMap.end()) { 49904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPDATABLOCK* pBuffer = it->second; 49914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBuffer) { 49924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) 49934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); 49944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_Free(pBuffer); 49954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 49964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pModule->m_BufferMap.erase(it); 49974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 49984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pModule->m_ValueMap.erase(pKey); 49994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 50004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 50024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (auto& pair : pModule->m_BufferMap) { 50034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPDATABLOCK* pBuffer = pair.second; 50044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBuffer) { 50054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) 50064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); 50074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_Free(pBuffer); 50084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pModule->m_BufferMap.clear(); 50114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pModule->m_ValueMap.clear(); 50124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann delete pModule; 50134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 50144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 50154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::MergeAllData(void* pDstModule) { 50164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPMODULEDATA* pDstModuleData = 50174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann static_cast<CXFA_Node*>(pDstModule)->CreateMapModuleData(); 50184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPMODULEDATA* pSrcModuleData = GetMapModuleData(); 50194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pSrcModuleData) 50204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 50214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 50224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pair : pSrcModuleData->m_ValueMap) 50234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstModuleData->m_ValueMap[pair.first] = pair.second; 50244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 50254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (const auto& pair : pSrcModuleData->m_BufferMap) { 50264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPDATABLOCK* pSrcBuffer = pair.second; 50274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPDATABLOCK*& pDstBuffer = pDstModuleData->m_BufferMap[pair.first]; 50284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pSrcBuffer->pCallbackInfo && pSrcBuffer->pCallbackInfo->pFree && 50294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann !pSrcBuffer->pCallbackInfo->pCopy) { 50304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pDstBuffer) { 50314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstBuffer->pCallbackInfo->pFree(*(void**)pDstBuffer->GetData()); 50324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstModuleData->m_BufferMap.erase(pair.first); 50334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 50354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDstBuffer) { 50374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstBuffer = (XFA_MAPDATABLOCK*)FX_Alloc( 50384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint8_t, sizeof(XFA_MAPDATABLOCK) + pSrcBuffer->iBytes); 50394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pDstBuffer->iBytes != pSrcBuffer->iBytes) { 50404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pDstBuffer->pCallbackInfo && pDstBuffer->pCallbackInfo->pFree) { 50414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstBuffer->pCallbackInfo->pFree(*(void**)pDstBuffer->GetData()); 50424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstBuffer = (XFA_MAPDATABLOCK*)FX_Realloc( 50444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint8_t, pDstBuffer, sizeof(XFA_MAPDATABLOCK) + pSrcBuffer->iBytes); 50454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pDstBuffer->pCallbackInfo && pDstBuffer->pCallbackInfo->pFree) { 50464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstBuffer->pCallbackInfo->pFree(*(void**)pDstBuffer->GetData()); 50474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDstBuffer) { 50494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 50504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstBuffer->pCallbackInfo = pSrcBuffer->pCallbackInfo; 50524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstBuffer->iBytes = pSrcBuffer->iBytes; 50534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FXSYS_memcpy(pDstBuffer->GetData(), pSrcBuffer->GetData(), 50544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSrcBuffer->iBytes); 50554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pDstBuffer->pCallbackInfo && pDstBuffer->pCallbackInfo->pCopy) { 50564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstBuffer->pCallbackInfo->pCopy(*(void**)pDstBuffer->GetData()); 50574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 50604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 50614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::MoveBufferMapData(CXFA_Node* pDstModule, void* pKey) { 50624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDstModule) { 50634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 50644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bNeedMove = true; 50664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pKey) { 50674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNeedMove = false; 50684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pDstModule->GetElementType() != GetElementType()) { 50704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNeedMove = false; 50714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPMODULEDATA* pSrcModuleData = nullptr; 50734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPMODULEDATA* pDstModuleData = nullptr; 50744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bNeedMove) { 50754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSrcModuleData = GetMapModuleData(); 50764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pSrcModuleData) { 50774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bNeedMove = false; 50784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstModuleData = pDstModule->CreateMapModuleData(); 50804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bNeedMove) { 50824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto it = pSrcModuleData->m_BufferMap.find(pKey); 50834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (it != pSrcModuleData->m_BufferMap.end()) { 50844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_MAPDATABLOCK* pBufferBlockData = it->second; 50854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pBufferBlockData) { 50864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSrcModuleData->m_BufferMap.erase(pKey); 50874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstModuleData->m_BufferMap[pKey] = pBufferBlockData; 50884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pDstModule->IsNodeV()) { 50924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsValue = pDstModule->GetScriptContent(false); 50934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsFormatValue(wsValue); 50944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_WidgetData* pWidgetData = pDstModule->GetContainerWidgetData(); 50954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pWidgetData) { 50964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pWidgetData->GetFormatDataValue(wsValue, wsFormatValue); 50974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 50984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstModule->SetScriptContent(wsValue, wsFormatValue, true, true); 50994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 51004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 51014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 51024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::MoveBufferMapData(CXFA_Node* pSrcModule, 51034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDstModule, 51044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void* pKey, 51054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bRecursive) { 51064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pSrcModule || !pDstModule || !pKey) { 51074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 51084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 51094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bRecursive) { 51104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pSrcChild = pSrcModule->GetNodeItem(XFA_NODEITEM_FirstChild); 51114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDstChild = pDstModule->GetNodeItem(XFA_NODEITEM_FirstChild); 51124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (; pSrcChild && pDstChild; 51134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSrcChild = pSrcChild->GetNodeItem(XFA_NODEITEM_NextSibling), 51144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pDstChild = pDstChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { 51154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MoveBufferMapData(pSrcChild, pDstChild, pKey, true); 51164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 51174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 51184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSrcModule->MoveBufferMapData(pDstModule, pKey); 51194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 51204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 51214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::ThrowMissingPropertyException( 51224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& obj, 51234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& prop) const { 51244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowException(L"'%s' doesn't have property '%s'.", obj.c_str(), 51254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann prop.c_str()); 51264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 51274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 51284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Node::ThrowTooManyOccurancesException( 51294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& obj) const { 51304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowException( 51314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann L"The element [%s] has violated its allowable number of occurrences.", 51324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann obj.c_str()); 51334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5134