OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fxfa/app/xfa_ffchoicelist.h" | 7 #include "xfa/fxfa/app/xfa_ffchoicelist.h" |
8 | 8 |
9 #include "xfa/fwl/core/cfwl_combobox.h" | 9 #include "xfa/fwl/core/cfwl_combobox.h" |
10 #include "xfa/fwl/core/cfwl_listbox.h" | 10 #include "xfa/fwl/core/cfwl_listbox.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 uint32_t dwExtendedStyle = FWL_STYLEEXT_LTB_ShowScrollBarFocus; | 56 uint32_t dwExtendedStyle = FWL_STYLEEXT_LTB_ShowScrollBarFocus; |
57 if (m_pDataAcc->GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) { | 57 if (m_pDataAcc->GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) { |
58 dwExtendedStyle |= FWL_STYLEEXT_LTB_MultiSelection; | 58 dwExtendedStyle |= FWL_STYLEEXT_LTB_MultiSelection; |
59 } | 59 } |
60 dwExtendedStyle |= GetAlignment(); | 60 dwExtendedStyle |= GetAlignment(); |
61 m_pNormalWidget->ModifyStylesEx(dwExtendedStyle, 0xFFFFFFFF); | 61 m_pNormalWidget->ModifyStylesEx(dwExtendedStyle, 0xFFFFFFFF); |
62 CFX_Int32Array iSelArray; | 62 CFX_Int32Array iSelArray; |
63 m_pDataAcc->GetSelectedItems(iSelArray); | 63 m_pDataAcc->GetSelectedItems(iSelArray); |
64 int32_t iSelCount = iSelArray.GetSize(); | 64 int32_t iSelCount = iSelArray.GetSize(); |
65 for (int32_t j = 0; j < iSelCount; j++) { | 65 for (int32_t j = 0; j < iSelCount; j++) { |
66 IFWL_ListItem* item = pListBox->GetItem(iSelArray[j]); | 66 CFWL_ListItem* item = pListBox->GetItem(iSelArray[j]); |
67 pListBox->SetSelItem(item, true); | 67 pListBox->SetSelItem(item, true); |
68 } | 68 } |
69 m_pNormalWidget->UnlockUpdate(); | 69 m_pNormalWidget->UnlockUpdate(); |
70 return CXFA_FFField::LoadWidget(); | 70 return CXFA_FFField::LoadWidget(); |
71 } | 71 } |
72 | 72 |
73 bool CXFA_FFListBox::OnKillFocus(CXFA_FFWidget* pNewFocus) { | 73 bool CXFA_FFListBox::OnKillFocus(CXFA_FFWidget* pNewFocus) { |
74 if (!ProcessCommittedData()) | 74 if (!ProcessCommittedData()) |
75 UpdateFWLData(); | 75 UpdateFWLData(); |
76 CXFA_FFField::OnKillFocus(pNewFocus); | 76 CXFA_FFField::OnKillFocus(pNewFocus); |
(...skipping 13 matching lines...) Expand all Loading... |
90 bool CXFA_FFListBox::IsDataChanged() { | 90 bool CXFA_FFListBox::IsDataChanged() { |
91 CFX_Int32Array iSelArray; | 91 CFX_Int32Array iSelArray; |
92 m_pDataAcc->GetSelectedItems(iSelArray); | 92 m_pDataAcc->GetSelectedItems(iSelArray); |
93 int32_t iOldSels = iSelArray.GetSize(); | 93 int32_t iOldSels = iSelArray.GetSize(); |
94 CFWL_ListBox* pListBox = (CFWL_ListBox*)m_pNormalWidget; | 94 CFWL_ListBox* pListBox = (CFWL_ListBox*)m_pNormalWidget; |
95 int32_t iSels = pListBox->CountSelItems(); | 95 int32_t iSels = pListBox->CountSelItems(); |
96 if (iOldSels != iSels) | 96 if (iOldSels != iSels) |
97 return true; | 97 return true; |
98 | 98 |
99 for (int32_t i = 0; i < iSels; ++i) { | 99 for (int32_t i = 0; i < iSels; ++i) { |
100 IFWL_ListItem* hlistItem = pListBox->GetItem(iSelArray[i]); | 100 CFWL_ListItem* hlistItem = pListBox->GetItem(iSelArray[i]); |
101 if (!(pListBox->GetItemStates(hlistItem) & FWL_ITEMSTATE_LTB_Selected)) | 101 if (!(pListBox->GetItemStates(hlistItem) & FWL_ITEMSTATE_LTB_Selected)) |
102 return true; | 102 return true; |
103 } | 103 } |
104 return false; | 104 return false; |
105 } | 105 } |
106 | 106 |
107 uint32_t CXFA_FFListBox::GetAlignment() { | 107 uint32_t CXFA_FFListBox::GetAlignment() { |
108 uint32_t dwExtendedStyle = 0; | 108 uint32_t dwExtendedStyle = 0; |
109 if (CXFA_Para para = m_pDataAcc->GetPara()) { | 109 if (CXFA_Para para = m_pDataAcc->GetPara()) { |
110 int32_t iHorz = para.GetHorizontalAlign(); | 110 int32_t iHorz = para.GetHorizontalAlign(); |
(...skipping 15 matching lines...) Expand all Loading... |
126 break; | 126 break; |
127 } | 127 } |
128 } | 128 } |
129 return dwExtendedStyle; | 129 return dwExtendedStyle; |
130 } | 130 } |
131 bool CXFA_FFListBox::UpdateFWLData() { | 131 bool CXFA_FFListBox::UpdateFWLData() { |
132 if (!m_pNormalWidget) { | 132 if (!m_pNormalWidget) { |
133 return false; | 133 return false; |
134 } | 134 } |
135 CFWL_ListBox* pListBox = ((CFWL_ListBox*)m_pNormalWidget); | 135 CFWL_ListBox* pListBox = ((CFWL_ListBox*)m_pNormalWidget); |
136 CFX_ArrayTemplate<IFWL_ListItem*> selItemArray; | 136 CFX_ArrayTemplate<CFWL_ListItem*> selItemArray; |
137 CFX_Int32Array iSelArray; | 137 CFX_Int32Array iSelArray; |
138 m_pDataAcc->GetSelectedItems(iSelArray); | 138 m_pDataAcc->GetSelectedItems(iSelArray); |
139 int32_t iSelCount = iSelArray.GetSize(); | 139 int32_t iSelCount = iSelArray.GetSize(); |
140 for (int32_t j = 0; j < iSelCount; j++) { | 140 for (int32_t j = 0; j < iSelCount; j++) { |
141 IFWL_ListItem* lpItemSel = pListBox->GetSelItem(iSelArray[j]); | 141 CFWL_ListItem* lpItemSel = pListBox->GetSelItem(iSelArray[j]); |
142 selItemArray.Add(lpItemSel); | 142 selItemArray.Add(lpItemSel); |
143 } | 143 } |
144 pListBox->SetSelItem(pListBox->GetSelItem(-1), false); | 144 pListBox->SetSelItem(pListBox->GetSelItem(-1), false); |
145 for (int32_t i = 0; i < iSelCount; i++) { | 145 for (int32_t i = 0; i < iSelCount; i++) { |
146 ((CFWL_ListBox*)m_pNormalWidget)->SetSelItem(selItemArray[i], true); | 146 ((CFWL_ListBox*)m_pNormalWidget)->SetSelItem(selItemArray[i], true); |
147 } | 147 } |
148 m_pNormalWidget->Update(); | 148 m_pNormalWidget->Update(); |
149 return true; | 149 return true; |
150 } | 150 } |
151 void CXFA_FFListBox::OnSelectChanged(IFWL_Widget* pWidget, | 151 void CXFA_FFListBox::OnSelectChanged(IFWL_Widget* pWidget, |
152 const CFX_Int32Array& arrSels) { | 152 const CFX_Int32Array& arrSels) { |
153 CXFA_EventParam eParam; | 153 CXFA_EventParam eParam; |
154 eParam.m_eType = XFA_EVENT_Change; | 154 eParam.m_eType = XFA_EVENT_Change; |
155 eParam.m_pTarget = m_pDataAcc; | 155 eParam.m_pTarget = m_pDataAcc; |
156 m_pDataAcc->GetValue(eParam.m_wsPrevText, XFA_VALUEPICTURE_Raw); | 156 m_pDataAcc->GetValue(eParam.m_wsPrevText, XFA_VALUEPICTURE_Raw); |
157 CFWL_ListBox* pListBox = (CFWL_ListBox*)m_pNormalWidget; | 157 CFWL_ListBox* pListBox = (CFWL_ListBox*)m_pNormalWidget; |
158 int32_t iSels = pListBox->CountSelItems(); | 158 int32_t iSels = pListBox->CountSelItems(); |
159 if (iSels > 0) { | 159 if (iSels > 0) { |
160 pListBox->GetItemText(pListBox->GetSelItem(0), eParam.m_wsNewText); | 160 pListBox->GetItemText(pListBox->GetSelItem(0), eParam.m_wsNewText); |
161 } | 161 } |
162 m_pDataAcc->ProcessEvent(XFA_ATTRIBUTEENUM_Change, &eParam); | 162 m_pDataAcc->ProcessEvent(XFA_ATTRIBUTEENUM_Change, &eParam); |
163 } | 163 } |
164 void CXFA_FFListBox::SetItemState(int32_t nIndex, bool bSelected) { | 164 void CXFA_FFListBox::SetItemState(int32_t nIndex, bool bSelected) { |
165 IFWL_ListItem* item = ((CFWL_ListBox*)m_pNormalWidget)->GetSelItem(nIndex); | 165 CFWL_ListItem* item = ((CFWL_ListBox*)m_pNormalWidget)->GetSelItem(nIndex); |
166 ((CFWL_ListBox*)m_pNormalWidget)->SetSelItem(item, bSelected); | 166 ((CFWL_ListBox*)m_pNormalWidget)->SetSelItem(item, bSelected); |
167 m_pNormalWidget->Update(); | 167 m_pNormalWidget->Update(); |
168 AddInvalidateRect(); | 168 AddInvalidateRect(); |
169 } | 169 } |
170 void CXFA_FFListBox::InsertItem(const CFX_WideStringC& wsLabel, | 170 void CXFA_FFListBox::InsertItem(const CFX_WideStringC& wsLabel, |
171 int32_t nIndex) { | 171 int32_t nIndex) { |
172 CFX_WideString wsTemp(wsLabel); | 172 CFX_WideString wsTemp(wsLabel); |
173 ((CFWL_ListBox*)m_pNormalWidget)->AddString(wsTemp.AsStringC()); | 173 ((CFWL_ListBox*)m_pNormalWidget)->AddString(wsTemp.AsStringC()); |
174 m_pNormalWidget->Update(); | 174 m_pNormalWidget->Update(); |
175 AddInvalidateRect(); | 175 AddInvalidateRect(); |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 default: | 532 default: |
533 break; | 533 break; |
534 } | 534 } |
535 m_pOldDelegate->OnProcessEvent(pEvent); | 535 m_pOldDelegate->OnProcessEvent(pEvent); |
536 } | 536 } |
537 | 537 |
538 void CXFA_FFComboBox::OnDrawWidget(CFX_Graphics* pGraphics, | 538 void CXFA_FFComboBox::OnDrawWidget(CFX_Graphics* pGraphics, |
539 const CFX_Matrix* pMatrix) { | 539 const CFX_Matrix* pMatrix) { |
540 m_pOldDelegate->OnDrawWidget(pGraphics, pMatrix); | 540 m_pOldDelegate->OnDrawWidget(pGraphics, pMatrix); |
541 } | 541 } |
OLD | NEW |