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 802 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
813 break; | 813 break; |
814 } | 814 } |
815 } | 815 } |
816 SetSelectedItems(iSelArray, bNotify, bScriptModify, bSyncData); | 816 SetSelectedItems(iSelArray, bNotify, bScriptModify, bSyncData); |
817 } | 817 } |
818 } else { | 818 } else { |
819 if (bSelected) { | 819 if (bSelected) { |
820 if (iSel < 0) { | 820 if (iSel < 0) { |
821 CFX_WideString wsSaveText = wsSaveTextArray[nIndex]; | 821 CFX_WideString wsSaveText = wsSaveTextArray[nIndex]; |
822 CFX_WideString wsFormatText(wsSaveText); | 822 CFX_WideString wsFormatText(wsSaveText); |
823 GetFormatDataValue(wsSaveText.AsStringC(), wsFormatText); | 823 GetFormatDataValue(wsSaveText, wsFormatText); |
824 m_pNode->SetContent(wsSaveText, wsFormatText, bNotify, bScriptModify, | 824 m_pNode->SetContent(wsSaveText, wsFormatText, bNotify, bScriptModify, |
825 bSyncData); | 825 bSyncData); |
826 } | 826 } |
827 } else if (iSel >= 0) { | 827 } else if (iSel >= 0) { |
828 m_pNode->SetContent(CFX_WideString(), CFX_WideString(), bNotify, | 828 m_pNode->SetContent(CFX_WideString(), CFX_WideString(), bNotify, |
829 bScriptModify, bSyncData); | 829 bScriptModify, bSyncData); |
830 } | 830 } |
831 } | 831 } |
832 } | 832 } |
833 | 833 |
834 void CXFA_WidgetData::SetSelectedItems(CFX_Int32Array& iSelArray, | 834 void CXFA_WidgetData::SetSelectedItems(CFX_Int32Array& iSelArray, |
835 FX_BOOL bNotify, | 835 FX_BOOL bNotify, |
836 FX_BOOL bScriptModify, | 836 FX_BOOL bScriptModify, |
837 FX_BOOL bSyncData) { | 837 FX_BOOL bSyncData) { |
838 CFX_WideString wsValue; | 838 CFX_WideString wsValue; |
839 int32_t iSize = iSelArray.GetSize(); | 839 int32_t iSize = iSelArray.GetSize(); |
840 if (iSize >= 1) { | 840 if (iSize >= 1) { |
841 CFX_WideStringArray wsSaveTextArray; | 841 CFX_WideStringArray wsSaveTextArray; |
842 GetChoiceListItems(wsSaveTextArray, TRUE); | 842 GetChoiceListItems(wsSaveTextArray, TRUE); |
843 CFX_WideString wsItemValue; | 843 CFX_WideString wsItemValue; |
844 for (int32_t i = 0; i < iSize; i++) { | 844 for (int32_t i = 0; i < iSize; i++) { |
845 wsItemValue = (iSize == 1) | 845 wsItemValue = (iSize == 1) |
846 ? wsSaveTextArray[iSelArray[i]] | 846 ? wsSaveTextArray[iSelArray[i]] |
847 : wsSaveTextArray[iSelArray[i]] + FX_WSTRC(L"\n"); | 847 : wsSaveTextArray[iSelArray[i]] + FX_WSTRC(L"\n"); |
848 wsValue += wsItemValue; | 848 wsValue += wsItemValue; |
849 } | 849 } |
850 } | 850 } |
851 CFX_WideString wsFormat(wsValue); | 851 CFX_WideString wsFormat(wsValue); |
852 if (GetChoiceListOpen() != XFA_ATTRIBUTEENUM_MultiSelect) | 852 if (GetChoiceListOpen() != XFA_ATTRIBUTEENUM_MultiSelect) |
853 GetFormatDataValue(wsValue.AsStringC(), wsFormat); | 853 GetFormatDataValue(wsValue, wsFormat); |
854 | 854 |
855 m_pNode->SetContent(wsValue, wsFormat, bNotify, bScriptModify, bSyncData); | 855 m_pNode->SetContent(wsValue, wsFormat, bNotify, bScriptModify, bSyncData); |
856 } | 856 } |
857 | 857 |
858 void CXFA_WidgetData::ClearAllSelections() { | 858 void CXFA_WidgetData::ClearAllSelections() { |
859 CXFA_Node* pBind = m_pNode->GetBindData(); | 859 CXFA_Node* pBind = m_pNode->GetBindData(); |
860 if (pBind && GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) { | 860 if (pBind && GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) { |
861 while (CXFA_Node* pChildNode = | 861 while (CXFA_Node* pChildNode = |
862 pBind->GetNodeItem(XFA_NODEITEM_FirstChild)) { | 862 pBind->GetNodeItem(XFA_NODEITEM_FirstChild)) { |
863 pBind->RemoveChild(pChildNode); | 863 pBind->RemoveChild(pChildNode); |
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1552 } | 1552 } |
1553 default: | 1553 default: |
1554 break; | 1554 break; |
1555 } | 1555 } |
1556 widgetValue.FormatPatterns(wsValue, wsPicture, pLocale, eValueType); | 1556 widgetValue.FormatPatterns(wsValue, wsPicture, pLocale, eValueType); |
1557 } | 1557 } |
1558 return TRUE; | 1558 return TRUE; |
1559 } | 1559 } |
1560 | 1560 |
1561 FX_BOOL CXFA_WidgetData::GetNormalizeDataValue( | 1561 FX_BOOL CXFA_WidgetData::GetNormalizeDataValue( |
1562 const CFX_WideStringC& wsValue, | 1562 const CFX_WideString& wsValue, |
1563 CFX_WideString& wsNormalizeValue) { | 1563 CFX_WideString& wsNormalizeValue) { |
1564 wsNormalizeValue = wsValue; | 1564 wsNormalizeValue = wsValue; |
1565 if (wsValue.IsEmpty()) | 1565 if (wsValue.IsEmpty()) |
1566 return TRUE; | 1566 return TRUE; |
1567 | 1567 |
1568 CFX_WideString wsPicture; | 1568 CFX_WideString wsPicture; |
1569 GetPictureContent(wsPicture, XFA_VALUEPICTURE_DataBind); | 1569 GetPictureContent(wsPicture, XFA_VALUEPICTURE_DataBind); |
1570 if (wsPicture.IsEmpty()) | 1570 if (wsPicture.IsEmpty()) |
1571 return TRUE; | 1571 return TRUE; |
1572 | 1572 |
1573 FXSYS_assert(GetNode()); | 1573 FXSYS_assert(GetNode()); |
1574 CXFA_LocaleMgr* pLocalMgr = GetNode()->GetDocument()->GetLocalMgr(); | 1574 CXFA_LocaleMgr* pLocalMgr = GetNode()->GetDocument()->GetLocalMgr(); |
1575 IFX_Locale* pLocale = GetLocal(); | 1575 IFX_Locale* pLocale = GetLocal(); |
1576 CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(this); | 1576 CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(this); |
1577 if (widgetValue.ValidateValue(wsValue, wsPicture, pLocale, &wsPicture)) { | 1577 if (widgetValue.ValidateValue(wsValue, wsPicture, pLocale, &wsPicture)) { |
1578 widgetValue = CXFA_LocaleValue(widgetValue.GetType(), wsNormalizeValue, | 1578 widgetValue = CXFA_LocaleValue(widgetValue.GetType(), wsNormalizeValue, |
1579 wsPicture, pLocale, pLocalMgr); | 1579 wsPicture, pLocale, pLocalMgr); |
1580 wsNormalizeValue = widgetValue.GetValue(); | 1580 wsNormalizeValue = widgetValue.GetValue(); |
1581 return TRUE; | 1581 return TRUE; |
1582 } | 1582 } |
1583 return FALSE; | 1583 return FALSE; |
1584 } | 1584 } |
1585 | 1585 |
1586 FX_BOOL CXFA_WidgetData::GetFormatDataValue(const CFX_WideStringC& wsValue, | 1586 FX_BOOL CXFA_WidgetData::GetFormatDataValue(const CFX_WideString& wsValue, |
1587 CFX_WideString& wsFormatedValue) { | 1587 CFX_WideString& wsFormatedValue) { |
1588 wsFormatedValue = wsValue; | 1588 wsFormatedValue = wsValue; |
1589 if (wsValue.IsEmpty()) | 1589 if (wsValue.IsEmpty()) |
1590 return TRUE; | 1590 return TRUE; |
1591 | 1591 |
1592 CFX_WideString wsPicture; | 1592 CFX_WideString wsPicture; |
1593 GetPictureContent(wsPicture, XFA_VALUEPICTURE_DataBind); | 1593 GetPictureContent(wsPicture, XFA_VALUEPICTURE_DataBind); |
1594 if (wsPicture.IsEmpty()) | 1594 if (wsPicture.IsEmpty()) |
1595 return TRUE; | 1595 return TRUE; |
1596 | 1596 |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1731 } | 1731 } |
1732 | 1732 |
1733 void CXFA_WidgetData::SyncValue(const CFX_WideString& wsValue, | 1733 void CXFA_WidgetData::SyncValue(const CFX_WideString& wsValue, |
1734 FX_BOOL bNotify) { | 1734 FX_BOOL bNotify) { |
1735 if (!m_pNode) | 1735 if (!m_pNode) |
1736 return; | 1736 return; |
1737 | 1737 |
1738 CFX_WideString wsFormatValue(wsValue); | 1738 CFX_WideString wsFormatValue(wsValue); |
1739 CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData(); | 1739 CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData(); |
1740 if (pContainerWidgetData) | 1740 if (pContainerWidgetData) |
1741 pContainerWidgetData->GetFormatDataValue(wsValue.AsStringC(), | 1741 pContainerWidgetData->GetFormatDataValue(wsValue, wsFormatValue); |
1742 wsFormatValue); | |
1743 | 1742 |
1744 m_pNode->SetContent(wsValue, wsFormatValue, bNotify); | 1743 m_pNode->SetContent(wsValue, wsFormatValue, bNotify); |
1745 } | 1744 } |
1746 | 1745 |
1747 void CXFA_WidgetData::InsertListTextItem(CXFA_Node* pItems, | 1746 void CXFA_WidgetData::InsertListTextItem(CXFA_Node* pItems, |
1748 const CFX_WideStringC& wsText, | 1747 const CFX_WideStringC& wsText, |
1749 int32_t nIndex) { | 1748 int32_t nIndex) { |
1750 CXFA_Node* pText = pItems->CreateSamePacketNode(XFA_ELEMENT_Text); | 1749 CXFA_Node* pText = pItems->CreateSamePacketNode(XFA_ELEMENT_Text); |
1751 pItems->InsertChild(nIndex, pText); | 1750 pItems->InsertChild(nIndex, pText); |
1752 pText->SetContent(wsText, wsText, FALSE, FALSE, FALSE); | 1751 pText->SetContent(wsText, wsText, FALSE, FALSE, FALSE); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1788 } | 1787 } |
1789 } | 1788 } |
1790 } else if (wc == L'.') { | 1789 } else if (wc == L'.') { |
1791 iTread_ = 0; | 1790 iTread_ = 0; |
1792 iLead = -1; | 1791 iLead = -1; |
1793 } | 1792 } |
1794 wsRet += wc; | 1793 wsRet += wc; |
1795 } | 1794 } |
1796 return wsRet; | 1795 return wsRet; |
1797 } | 1796 } |
OLD | NEW |