OLD | NEW |
1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fxfa/parser/cxfa_widgetdata.h" | 7 #include "xfa/fxfa/parser/cxfa_widgetdata.h" |
8 | 8 |
9 #include "core/fxcrt/include/fx_ext.h" | 9 #include "core/fxcrt/include/fx_ext.h" |
10 #include "xfa/fxbarcode/include/BC_Library.h" | 10 #include "xfa/fxbarcode/include/BC_Library.h" |
(...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 pItemNode = pItemNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 881 pItemNode = pItemNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
882 if (pItemNode->GetClassID() != XFA_ELEMENT_Items) | 882 if (pItemNode->GetClassID() != XFA_ELEMENT_Items) |
883 continue; | 883 continue; |
884 | 884 |
885 listitems.Add(pItemNode); | 885 listitems.Add(pItemNode); |
886 iCount++; | 886 iCount++; |
887 } | 887 } |
888 if (iCount < 1) { | 888 if (iCount < 1) { |
889 CXFA_Node* pItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items); | 889 CXFA_Node* pItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items); |
890 m_pNode->InsertChild(-1, pItems); | 890 m_pNode->InsertChild(-1, pItems); |
891 InsertListTextItem(pItems, wsLabel.AsStringC(), nIndex); | 891 InsertListTextItem(pItems, wsLabel, nIndex); |
892 CXFA_Node* pSaveItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items); | 892 CXFA_Node* pSaveItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items); |
893 m_pNode->InsertChild(-1, pSaveItems); | 893 m_pNode->InsertChild(-1, pSaveItems); |
894 pSaveItems->SetBoolean(XFA_ATTRIBUTE_Save, TRUE); | 894 pSaveItems->SetBoolean(XFA_ATTRIBUTE_Save, TRUE); |
895 InsertListTextItem(pSaveItems, wsNewValue.AsStringC(), nIndex); | 895 InsertListTextItem(pSaveItems, wsNewValue, nIndex); |
896 } else if (iCount > 1) { | 896 } else if (iCount > 1) { |
897 for (int32_t i = 0; i < 2; i++) { | 897 for (int32_t i = 0; i < 2; i++) { |
898 CXFA_Node* pNode = listitems[i]; | 898 CXFA_Node* pNode = listitems[i]; |
899 FX_BOOL bHasSave = pNode->GetBoolean(XFA_ATTRIBUTE_Save); | 899 FX_BOOL bHasSave = pNode->GetBoolean(XFA_ATTRIBUTE_Save); |
900 if (bHasSave) | 900 if (bHasSave) |
901 InsertListTextItem(pNode, wsNewValue.AsStringC(), nIndex); | 901 InsertListTextItem(pNode, wsNewValue, nIndex); |
902 else | 902 else |
903 InsertListTextItem(pNode, wsLabel.AsStringC(), nIndex); | 903 InsertListTextItem(pNode, wsLabel, nIndex); |
904 } | 904 } |
905 } else { | 905 } else { |
906 CXFA_Node* pNode = listitems[0]; | 906 CXFA_Node* pNode = listitems[0]; |
907 pNode->SetBoolean(XFA_ATTRIBUTE_Save, FALSE); | 907 pNode->SetBoolean(XFA_ATTRIBUTE_Save, FALSE); |
908 pNode->SetEnum(XFA_ATTRIBUTE_Presence, XFA_ATTRIBUTEENUM_Visible); | 908 pNode->SetEnum(XFA_ATTRIBUTE_Presence, XFA_ATTRIBUTEENUM_Visible); |
909 CXFA_Node* pSaveItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items); | 909 CXFA_Node* pSaveItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items); |
910 m_pNode->InsertChild(-1, pSaveItems); | 910 m_pNode->InsertChild(-1, pSaveItems); |
911 pSaveItems->SetBoolean(XFA_ATTRIBUTE_Save, TRUE); | 911 pSaveItems->SetBoolean(XFA_ATTRIBUTE_Save, TRUE); |
912 pSaveItems->SetEnum(XFA_ATTRIBUTE_Presence, XFA_ATTRIBUTEENUM_Hidden); | 912 pSaveItems->SetEnum(XFA_ATTRIBUTE_Presence, XFA_ATTRIBUTEENUM_Hidden); |
913 listitems.RemoveAll(); | 913 listitems.RemoveAll(); |
914 CXFA_Node* pListNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 914 CXFA_Node* pListNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
915 int32_t i = 0; | 915 int32_t i = 0; |
916 while (pListNode) { | 916 while (pListNode) { |
917 CFX_WideString wsOldValue; | 917 CFX_WideString wsOldValue; |
918 pListNode->TryContent(wsOldValue); | 918 pListNode->TryContent(wsOldValue); |
919 InsertListTextItem(pSaveItems, wsOldValue.AsStringC(), i); | 919 InsertListTextItem(pSaveItems, wsOldValue, i); |
920 i++; | 920 i++; |
921 pListNode = pListNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 921 pListNode = pListNode->GetNodeItem(XFA_NODEITEM_NextSibling); |
922 } | 922 } |
923 InsertListTextItem(pNode, wsLabel.AsStringC(), nIndex); | 923 InsertListTextItem(pNode, wsLabel, nIndex); |
924 InsertListTextItem(pSaveItems, wsNewValue.AsStringC(), nIndex); | 924 InsertListTextItem(pSaveItems, wsNewValue, nIndex); |
925 } | 925 } |
926 if (!bNotify) | 926 if (!bNotify) |
927 return; | 927 return; |
928 | 928 |
929 m_pNode->GetDocument()->GetNotify()->OnWidgetListItemAdded( | 929 m_pNode->GetDocument()->GetNotify()->OnWidgetListItemAdded( |
930 this, wsLabel.c_str(), wsValue.c_str(), nIndex); | 930 this, wsLabel.c_str(), wsValue.c_str(), nIndex); |
931 } | 931 } |
932 | 932 |
933 void CXFA_WidgetData::GetItemLabel(const CFX_WideStringC& wsValue, | 933 void CXFA_WidgetData::GetItemLabel(const CFX_WideStringC& wsValue, |
934 CFX_WideString& wsLabel) { | 934 CFX_WideString& wsLabel) { |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1067 CXFA_Node* pUIChild = GetUIChild(); | 1067 CXFA_Node* pUIChild = GetUIChild(); |
1068 if (!pUIChild) | 1068 if (!pUIChild) |
1069 return -1; | 1069 return -1; |
1070 if (CXFA_Node* pNode = pUIChild->GetChild(0, XFA_ELEMENT_Comb)) | 1070 if (CXFA_Node* pNode = pUIChild->GetChild(0, XFA_ELEMENT_Comb)) |
1071 return pNode->GetInteger(XFA_ATTRIBUTE_NumberOfCells); | 1071 return pNode->GetInteger(XFA_ATTRIBUTE_NumberOfCells); |
1072 return -1; | 1072 return -1; |
1073 } | 1073 } |
1074 | 1074 |
1075 CFX_WideString CXFA_WidgetData::GetBarcodeType() { | 1075 CFX_WideString CXFA_WidgetData::GetBarcodeType() { |
1076 CXFA_Node* pUIChild = GetUIChild(); | 1076 CXFA_Node* pUIChild = GetUIChild(); |
1077 return pUIChild ? pUIChild->GetCData(XFA_ATTRIBUTE_Type) : NULL; | 1077 return pUIChild ? CFX_WideString(pUIChild->GetCData(XFA_ATTRIBUTE_Type)) |
| 1078 : nullptr; |
1078 } | 1079 } |
1079 | 1080 |
1080 FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_CharEncoding(int32_t& val) { | 1081 FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_CharEncoding(int32_t& val) { |
1081 CXFA_Node* pUIChild = GetUIChild(); | 1082 CXFA_Node* pUIChild = GetUIChild(); |
1082 CFX_WideString wsCharEncoding; | 1083 CFX_WideString wsCharEncoding; |
1083 if (pUIChild->TryCData(XFA_ATTRIBUTE_CharEncoding, wsCharEncoding)) { | 1084 if (pUIChild->TryCData(XFA_ATTRIBUTE_CharEncoding, wsCharEncoding)) { |
1084 if (wsCharEncoding.CompareNoCase(L"UTF-16")) { | 1085 if (wsCharEncoding.CompareNoCase(L"UTF-16")) { |
1085 val = CHAR_ENCODING_UNICODE; | 1086 val = CHAR_ENCODING_UNICODE; |
1086 return TRUE; | 1087 return TRUE; |
1087 } else if (wsCharEncoding.CompareNoCase(L"UTF-8")) { | 1088 } |
| 1089 if (wsCharEncoding.CompareNoCase(L"UTF-8")) { |
1088 val = CHAR_ENCODING_UTF8; | 1090 val = CHAR_ENCODING_UTF8; |
1089 return TRUE; | 1091 return TRUE; |
1090 } | 1092 } |
1091 } | 1093 } |
1092 return FALSE; | 1094 return FALSE; |
1093 } | 1095 } |
1094 | 1096 |
1095 FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_Checksum(int32_t& val) { | 1097 FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_Checksum(int32_t& val) { |
1096 CXFA_Node* pUIChild = GetUIChild(); | 1098 CXFA_Node* pUIChild = GetUIChild(); |
1097 XFA_ATTRIBUTEENUM eChecksum; | 1099 XFA_ATTRIBUTEENUM eChecksum; |
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1468 if (!m_pNode) | 1470 if (!m_pNode) |
1469 return pLocale; | 1471 return pLocale; |
1470 | 1472 |
1471 FX_BOOL bLocale = FALSE; | 1473 FX_BOOL bLocale = FALSE; |
1472 CFX_WideString wsLocaleName; | 1474 CFX_WideString wsLocaleName; |
1473 bLocale = m_pNode->GetLocaleName(wsLocaleName); | 1475 bLocale = m_pNode->GetLocaleName(wsLocaleName); |
1474 if (bLocale) { | 1476 if (bLocale) { |
1475 if (wsLocaleName == FX_WSTRC(L"ambient")) { | 1477 if (wsLocaleName == FX_WSTRC(L"ambient")) { |
1476 pLocale = m_pNode->GetDocument()->GetLocalMgr()->GetDefLocale(); | 1478 pLocale = m_pNode->GetDocument()->GetLocalMgr()->GetDefLocale(); |
1477 } else { | 1479 } else { |
1478 pLocale = m_pNode->GetDocument()->GetLocalMgr()->GetLocaleByName( | 1480 pLocale = |
1479 wsLocaleName.AsStringC()); | 1481 m_pNode->GetDocument()->GetLocalMgr()->GetLocaleByName(wsLocaleName); |
1480 } | 1482 } |
1481 } | 1483 } |
1482 return pLocale; | 1484 return pLocale; |
1483 } | 1485 } |
1484 | 1486 |
1485 FX_BOOL CXFA_WidgetData::GetValue(CFX_WideString& wsValue, | 1487 FX_BOOL CXFA_WidgetData::GetValue(CFX_WideString& wsValue, |
1486 XFA_VALUEPICTURE eValueType) { | 1488 XFA_VALUEPICTURE eValueType) { |
1487 wsValue = m_pNode->GetContent(); | 1489 wsValue = m_pNode->GetContent(); |
1488 | 1490 |
1489 if (eValueType == XFA_VALUEPICTURE_Display) | 1491 if (eValueType == XFA_VALUEPICTURE_Display) |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1732 | 1734 |
1733 CFX_WideString wsFormatValue(wsValue); | 1735 CFX_WideString wsFormatValue(wsValue); |
1734 CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData(); | 1736 CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData(); |
1735 if (pContainerWidgetData) | 1737 if (pContainerWidgetData) |
1736 pContainerWidgetData->GetFormatDataValue(wsValue, wsFormatValue); | 1738 pContainerWidgetData->GetFormatDataValue(wsValue, wsFormatValue); |
1737 | 1739 |
1738 m_pNode->SetContent(wsValue, wsFormatValue, bNotify); | 1740 m_pNode->SetContent(wsValue, wsFormatValue, bNotify); |
1739 } | 1741 } |
1740 | 1742 |
1741 void CXFA_WidgetData::InsertListTextItem(CXFA_Node* pItems, | 1743 void CXFA_WidgetData::InsertListTextItem(CXFA_Node* pItems, |
1742 const CFX_WideStringC& wsText, | 1744 const CFX_WideString& wsText, |
1743 int32_t nIndex) { | 1745 int32_t nIndex) { |
1744 CXFA_Node* pText = pItems->CreateSamePacketNode(XFA_ELEMENT_Text); | 1746 CXFA_Node* pText = pItems->CreateSamePacketNode(XFA_ELEMENT_Text); |
1745 pItems->InsertChild(nIndex, pText); | 1747 pItems->InsertChild(nIndex, pText); |
1746 pText->SetContent(wsText, wsText, FALSE, FALSE, FALSE); | 1748 pText->SetContent(wsText, wsText, FALSE, FALSE, FALSE); |
1747 } | 1749 } |
1748 | 1750 |
1749 CFX_WideString CXFA_WidgetData::NumericLimit(const CFX_WideString& wsValue, | 1751 CFX_WideString CXFA_WidgetData::NumericLimit(const CFX_WideString& wsValue, |
1750 int32_t iLead, | 1752 int32_t iLead, |
1751 int32_t iTread) const { | 1753 int32_t iTread) const { |
1752 if ((iLead == -1) && (iTread == -1)) | 1754 if ((iLead == -1) && (iTread == -1)) |
(...skipping 29 matching lines...) Expand all Loading... |
1782 } | 1784 } |
1783 } | 1785 } |
1784 } else if (wc == L'.') { | 1786 } else if (wc == L'.') { |
1785 iTread_ = 0; | 1787 iTread_ = 0; |
1786 iLead = -1; | 1788 iLead = -1; |
1787 } | 1789 } |
1788 wsRet += wc; | 1790 wsRet += wc; |
1789 } | 1791 } |
1790 return wsRet; | 1792 return wsRet; |
1791 } | 1793 } |
OLD | NEW |