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 "fpdfsdk/include/formfiller/FFL_CBA_Fontmap.h" | 7 #include "fpdfsdk/include/formfiller/FFL_CBA_Fontmap.h" |
8 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h" | 8 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h" |
9 #include "fpdfsdk/include/formfiller/FFL_IFormFiller.h" | 9 #include "fpdfsdk/include/formfiller/FFL_IFormFiller.h" |
10 #include "fpdfsdk/include/formfiller/FFL_ListBox.h" | 10 #include "fpdfsdk/include/formfiller/FFL_ListBox.h" |
11 #include "fpdfsdk/include/formfiller/FormFiller.h" | 11 #include "fpdfsdk/include/formfiller/FormFiller.h" |
12 | 12 |
13 #define FFL_DEFAULTLISTBOXFONTSIZE 12.0f | 13 #define FFL_DEFAULTLISTBOXFONTSIZE 12.0f |
14 | 14 |
15 /* ------------------------------- CFFL_ListBox ------------------------------- | 15 /* ------------------------------- CFFL_ListBox ------------------------------- |
16 */ | 16 */ |
17 | 17 |
18 CFFL_ListBox::CFFL_ListBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget) | 18 CFFL_ListBox::CFFL_ListBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget) |
19 : CFFL_FormFiller(pApp, pWidget), m_pFontMap(NULL) {} | 19 : CFFL_FormFiller(pApp, pWidget), m_pFontMap(NULL) {} |
20 | 20 |
21 CFFL_ListBox::~CFFL_ListBox() { | 21 CFFL_ListBox::~CFFL_ListBox() { |
22 delete m_pFontMap; | 22 delete m_pFontMap; |
23 } | 23 } |
24 | 24 |
25 PWL_CREATEPARAM CFFL_ListBox::GetCreateParam() { | 25 PWL_CREATEPARAM CFFL_ListBox::GetCreateParam() { |
26 PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam(); | 26 PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam(); |
27 | 27 |
28 ASSERT(m_pWidget != NULL); | |
29 FX_DWORD dwFieldFlag = m_pWidget->GetFieldFlags(); | 28 FX_DWORD dwFieldFlag = m_pWidget->GetFieldFlags(); |
30 | 29 |
31 if (dwFieldFlag & FIELDFLAG_MULTISELECT) { | 30 if (dwFieldFlag & FIELDFLAG_MULTISELECT) { |
32 cp.dwFlags |= PLBS_MULTIPLESEL; | 31 cp.dwFlags |= PLBS_MULTIPLESEL; |
33 } | 32 } |
34 | 33 |
35 cp.dwFlags |= PWS_VSCROLL; | 34 cp.dwFlags |= PWS_VSCROLL; |
36 | 35 |
37 if (cp.dwFlags & PWS_AUTOFONTSIZE) | 36 if (cp.dwFlags & PWS_AUTOFONTSIZE) |
38 cp.fFontSize = FFL_DEFAULTLISTBOXFONTSIZE; | 37 cp.fFontSize = FFL_DEFAULTLISTBOXFONTSIZE; |
39 | 38 |
40 if (!m_pFontMap) { | 39 if (!m_pFontMap) { |
41 m_pFontMap = new CBA_FontMap(m_pWidget, m_pApp->GetSysHandler()); | 40 m_pFontMap = new CBA_FontMap(m_pWidget, m_pApp->GetSysHandler()); |
42 m_pFontMap->Initial(); | 41 m_pFontMap->Initial(); |
43 } | 42 } |
44 cp.pFontMap = m_pFontMap; | 43 cp.pFontMap = m_pFontMap; |
45 | 44 |
46 return cp; | 45 return cp; |
47 } | 46 } |
48 | 47 |
49 CPWL_Wnd* CFFL_ListBox::NewPDFWindow(const PWL_CREATEPARAM& cp, | 48 CPWL_Wnd* CFFL_ListBox::NewPDFWindow(const PWL_CREATEPARAM& cp, |
50 CPDFSDK_PageView* pPageView) { | 49 CPDFSDK_PageView* pPageView) { |
51 CPWL_ListBox* pWnd = new CPWL_ListBox(); | 50 CPWL_ListBox* pWnd = new CPWL_ListBox(); |
52 pWnd->AttachFFLData(this); | 51 pWnd->AttachFFLData(this); |
53 pWnd->Create(cp); | 52 pWnd->Create(cp); |
54 | 53 |
55 ASSERT(m_pApp != NULL); | |
56 CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller(); | 54 CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller(); |
57 pWnd->SetFillerNotify(pIFormFiller); | 55 pWnd->SetFillerNotify(pIFormFiller); |
58 | 56 |
59 for (int32_t i = 0, sz = m_pWidget->CountOptions(); i < sz; i++) | 57 for (int32_t i = 0, sz = m_pWidget->CountOptions(); i < sz; i++) |
60 pWnd->AddString(m_pWidget->GetOptionLabel(i).c_str()); | 58 pWnd->AddString(m_pWidget->GetOptionLabel(i).c_str()); |
61 | 59 |
62 if (pWnd->HasFlag(PLBS_MULTIPLESEL)) { | 60 if (pWnd->HasFlag(PLBS_MULTIPLESEL)) { |
63 m_OriginSelections.clear(); | 61 m_OriginSelections.clear(); |
64 | 62 |
65 FX_BOOL bSetCaret = FALSE; | 63 FX_BOOL bSetCaret = FALSE; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 ++nSelCount; | 106 ++nSelCount; |
109 } | 107 } |
110 } | 108 } |
111 | 109 |
112 return nSelCount != m_OriginSelections.size(); | 110 return nSelCount != m_OriginSelections.size(); |
113 } | 111 } |
114 return pListBox->GetCurSel() != m_pWidget->GetSelectedIndex(0); | 112 return pListBox->GetCurSel() != m_pWidget->GetSelectedIndex(0); |
115 } | 113 } |
116 | 114 |
117 void CFFL_ListBox::SaveData(CPDFSDK_PageView* pPageView) { | 115 void CFFL_ListBox::SaveData(CPDFSDK_PageView* pPageView) { |
118 ASSERT(m_pWidget != NULL); | 116 ASSERT(m_pWidget); |
119 | 117 |
120 if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) { | 118 if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) { |
121 CFX_IntArray aOldSelect, aNewSelect; | 119 CFX_IntArray aOldSelect, aNewSelect; |
122 | 120 |
123 { | 121 { |
124 for (int i = 0, sz = m_pWidget->CountOptions(); i < sz; i++) { | 122 for (int i = 0, sz = m_pWidget->CountOptions(); i < sz; i++) { |
125 if (m_pWidget->IsOptionSelected(i)) { | 123 if (m_pWidget->IsOptionSelected(i)) { |
126 aOldSelect.Add(i); | 124 aOldSelect.Add(i); |
127 } | 125 } |
128 } | 126 } |
(...skipping 25 matching lines...) Expand all Loading... |
154 void CFFL_ListBox::GetActionData(CPDFSDK_PageView* pPageView, | 152 void CFFL_ListBox::GetActionData(CPDFSDK_PageView* pPageView, |
155 CPDF_AAction::AActionType type, | 153 CPDF_AAction::AActionType type, |
156 PDFSDK_FieldAction& fa) { | 154 PDFSDK_FieldAction& fa) { |
157 switch (type) { | 155 switch (type) { |
158 case CPDF_AAction::Validate: | 156 case CPDF_AAction::Validate: |
159 if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) { | 157 if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) { |
160 fa.sValue = L""; | 158 fa.sValue = L""; |
161 } else { | 159 } else { |
162 if (CPWL_ListBox* pListBox = | 160 if (CPWL_ListBox* pListBox = |
163 (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) { | 161 (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) { |
164 ASSERT(m_pWidget != NULL); | |
165 int32_t nCurSel = pListBox->GetCurSel(); | 162 int32_t nCurSel = pListBox->GetCurSel(); |
166 if (nCurSel >= 0) | 163 if (nCurSel >= 0) |
167 fa.sValue = m_pWidget->GetOptionLabel(nCurSel); | 164 fa.sValue = m_pWidget->GetOptionLabel(nCurSel); |
168 } | 165 } |
169 } | 166 } |
170 break; | 167 break; |
171 case CPDF_AAction::LoseFocus: | 168 case CPDF_AAction::LoseFocus: |
172 case CPDF_AAction::GetFocus: | 169 case CPDF_AAction::GetFocus: |
173 if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) { | 170 if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) { |
174 fa.sValue = L""; | 171 fa.sValue = L""; |
175 } else { | 172 } else { |
176 ASSERT(m_pWidget != NULL); | |
177 int32_t nCurSel = m_pWidget->GetSelectedIndex(0); | 173 int32_t nCurSel = m_pWidget->GetSelectedIndex(0); |
178 if (nCurSel >= 0) | 174 if (nCurSel >= 0) |
179 fa.sValue = m_pWidget->GetOptionLabel(nCurSel); | 175 fa.sValue = m_pWidget->GetOptionLabel(nCurSel); |
180 } | 176 } |
181 break; | 177 break; |
182 default: | 178 default: |
183 break; | 179 break; |
184 } | 180 } |
185 } | 181 } |
186 | 182 |
187 void CFFL_ListBox::SetActionData(CPDFSDK_PageView* pPageView, | 183 void CFFL_ListBox::SetActionData(CPDFSDK_PageView* pPageView, |
188 CPDF_AAction::AActionType type, | 184 CPDF_AAction::AActionType type, |
189 const PDFSDK_FieldAction& fa) {} | 185 const PDFSDK_FieldAction& fa) {} |
190 | 186 |
191 void CFFL_ListBox::SaveState(CPDFSDK_PageView* pPageView) { | 187 void CFFL_ListBox::SaveState(CPDFSDK_PageView* pPageView) { |
192 ASSERT(pPageView != NULL); | 188 ASSERT(pPageView); |
193 | 189 |
194 if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) { | 190 if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) { |
195 for (int32_t i = 0, sz = pListBox->GetCount(); i < sz; i++) { | 191 for (int32_t i = 0, sz = pListBox->GetCount(); i < sz; i++) { |
196 if (pListBox->IsItemSelected(i)) { | 192 if (pListBox->IsItemSelected(i)) { |
197 m_State.Add(i); | 193 m_State.Add(i); |
198 } | 194 } |
199 } | 195 } |
200 } | 196 } |
201 } | 197 } |
202 | 198 |
(...skipping 16 matching lines...) Expand all Loading... |
219 if (bRestoreValue) { | 215 if (bRestoreValue) { |
220 RestoreState(pPageView); | 216 RestoreState(pPageView); |
221 pRet = GetPDFWindow(pPageView, FALSE); | 217 pRet = GetPDFWindow(pPageView, FALSE); |
222 } else | 218 } else |
223 pRet = GetPDFWindow(pPageView, TRUE); | 219 pRet = GetPDFWindow(pPageView, TRUE); |
224 | 220 |
225 m_pWidget->UpdateField(); | 221 m_pWidget->UpdateField(); |
226 | 222 |
227 return pRet; | 223 return pRet; |
228 } | 224 } |
OLD | NEW |