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 "../../include/formfiller/FormFiller.h" | 7 #include "../../include/formfiller/FormFiller.h" |
8 #include "../../include/formfiller/FFL_FormFiller.h" | 8 #include "../../include/formfiller/FFL_FormFiller.h" |
9 #include "../../include/formfiller/FFL_IFormFiller.h" | 9 #include "../../include/formfiller/FFL_IFormFiller.h" |
10 #include "../../include/formfiller/FFL_CBA_Fontmap.h" | 10 #include "../../include/formfiller/FFL_CBA_Fontmap.h" |
11 #include "../../include/formfiller/FFL_ComboBox.h" | 11 #include "../../include/formfiller/FFL_ComboBox.h" |
12 | 12 |
13 | 13 /* ------------------------------- CFFL_ComboBox ------------------------------- |
14 /* ------------------------------- CFFL_ComboBox -------------------------------
*/ | 14 */ |
15 | 15 |
16 CFFL_ComboBox::CFFL_ComboBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot) : | 16 CFFL_ComboBox::CFFL_ComboBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot) |
17 CFFL_FormFiller(pApp, pAnnot), m_pFontMap( NULL ) | 17 : CFFL_FormFiller(pApp, pAnnot), m_pFontMap(NULL) { |
18 { | 18 // m_pFontMap = new CBA_FontMap( pAnnot, GetSystemHandler() ); |
19 //m_pFontMap = new CBA_FontMap( pAnnot, GetSystemHandler() ); | 19 m_State.nIndex = 0; |
20 m_State.nIndex = 0; | 20 m_State.nStart = 0; |
21 m_State.nStart = 0; | 21 m_State.nEnd = 0; |
22 m_State.nEnd = 0; | 22 } |
23 } | 23 |
24 | 24 CFFL_ComboBox::~CFFL_ComboBox() { |
25 CFFL_ComboBox::~CFFL_ComboBox() | 25 if (m_pFontMap) { |
26 { | 26 delete m_pFontMap; |
27 if (m_pFontMap) | 27 m_pFontMap = NULL; |
28 { | 28 } |
29 delete m_pFontMap; | 29 |
30 m_pFontMap = NULL; | 30 // for (int i=0,sz=m_IMBox.GetSize(); i<sz; i++) |
31 } | 31 // { |
32 | 32 // delete m_IMBox.GetAt(i); |
33 // for (int i=0,sz=m_IMBox.GetSize(); i<sz; i++) | 33 // } |
34 // { | 34 // |
35 // delete m_IMBox.GetAt(i); | 35 // m_IMBox.RemoveAll(); |
36 // } | 36 } |
37 // | 37 |
38 // m_IMBox.RemoveAll(); | 38 PWL_CREATEPARAM CFFL_ComboBox::GetCreateParam() { |
39 } | 39 PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam(); |
40 | 40 |
41 PWL_CREATEPARAM CFFL_ComboBox::GetCreateParam() | 41 ASSERT(m_pWidget != NULL); |
42 { | 42 |
43 PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam(); | 43 int nFlags = m_pWidget->GetFieldFlags(); |
44 | 44 |
45 ASSERT(m_pWidget != NULL); | 45 if (nFlags & FIELDFLAG_EDIT) { |
46 | 46 cp.dwFlags |= PCBS_ALLOWCUSTOMTEXT; |
47 int nFlags = m_pWidget->GetFieldFlags(); | 47 } |
48 | 48 |
49 if (nFlags & FIELDFLAG_EDIT) | 49 /* |
50 { | 50 if (nFlags & FIELDFLAG_COMMITONSELCHANGE) |
51 cp.dwFlags |= PCBS_ALLOWCUSTOMTEXT; | 51 { |
52 } | 52 m_bCommitOnSelectChange = TRUE; |
53 | 53 } |
54 /* | 54 */ |
55 if (nFlags & FIELDFLAG_COMMITONSELCHANGE) | 55 |
56 { | 56 if (!m_pFontMap) { |
57 m_bCommitOnSelectChange = TRUE; | 57 ASSERT(this->m_pApp != NULL); |
58 } | 58 m_pFontMap = new CBA_FontMap(m_pWidget, GetSystemHandler()); |
59 */ | 59 m_pFontMap->Initial(); |
60 | 60 } |
61 if (!m_pFontMap) | 61 |
62 { | 62 cp.pFontMap = m_pFontMap; |
63 ASSERT(this->m_pApp != NULL); | 63 cp.pFocusHandler = this; |
64 m_pFontMap = new CBA_FontMap(m_pWidget, GetSystemHandler()); | 64 |
65 m_pFontMap->Initial(); | 65 return cp; |
66 } | 66 } |
67 | 67 |
68 cp.pFontMap = m_pFontMap; | 68 CPWL_Wnd* CFFL_ComboBox::NewPDFWindow(const PWL_CREATEPARAM& cp, |
69 cp.pFocusHandler = this; | 69 CPDFSDK_PageView* pPageView) { |
70 | 70 CPWL_ComboBox* pWnd = new CPWL_ComboBox(); |
71 return cp; | 71 pWnd->AttachFFLData(this); |
72 } | 72 pWnd->Create(cp); |
73 | 73 |
74 CPWL_Wnd* CFFL_ComboBox::NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageVie
w* pPageView) | 74 ASSERT(m_pApp != NULL); |
75 { | 75 CFFL_IFormFiller* pFormFiller = m_pApp->GetIFormFiller(); |
76 CPWL_ComboBox * pWnd = new CPWL_ComboBox(); | 76 pWnd->SetFillerNotify(pFormFiller); |
77 pWnd->AttachFFLData(this); | 77 |
78 pWnd->Create(cp); | 78 ASSERT(m_pWidget != NULL); |
79 | 79 FX_INT32 nCurSel = m_pWidget->GetSelectedIndex(0); |
80 ASSERT(m_pApp != NULL); | 80 |
81 CFFL_IFormFiller* pFormFiller = m_pApp->GetIFormFiller(); | 81 CFX_WideString swText; |
82 pWnd->SetFillerNotify(pFormFiller); | 82 |
83 | 83 if (nCurSel < 0) |
84 ASSERT(m_pWidget != NULL); | 84 swText = m_pWidget->GetValue(); |
85 FX_INT32 nCurSel = m_pWidget->GetSelectedIndex(0); | 85 else |
86 | 86 swText = m_pWidget->GetOptionLabel(nCurSel); |
87 CFX_WideString swText; | 87 |
88 | 88 for (FX_INT32 i = 0, sz = m_pWidget->CountOptions(); i < sz; i++) { |
89 if (nCurSel < 0) | 89 pWnd->AddString(m_pWidget->GetOptionLabel(i)); |
90 swText = m_pWidget->GetValue(); | 90 } |
91 else | 91 |
92 swText = m_pWidget->GetOptionLabel(nCurSel); | 92 pWnd->SetSelect(nCurSel); |
93 | 93 pWnd->SetText(swText); |
94 for (FX_INT32 i=0,sz=m_pWidget->CountOptions(); i<sz; i++) | 94 |
95 { | 95 return pWnd; |
96 pWnd->AddString(m_pWidget->GetOptionLabel(i)); | 96 } |
97 } | 97 |
98 | 98 FX_BOOL CFFL_ComboBox::OnChar(CPDFSDK_Annot* pAnnot, |
99 pWnd->SetSelect(nCurSel); | 99 FX_UINT nChar, |
100 pWnd->SetText(swText); | 100 FX_UINT nFlags) { |
101 | 101 return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags); |
102 return pWnd; | 102 } |
103 } | 103 |
104 | 104 FX_BOOL CFFL_ComboBox::IsDataChanged(CPDFSDK_PageView* pPageView) { |
105 | 105 if (CPWL_ComboBox* pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { |
106 FX_BOOL CFFL_ComboBox::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFla
gs) | 106 FX_INT32 nCurSel = pWnd->GetSelect(); |
107 { | 107 |
108 return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags); | 108 ASSERT(m_pWidget != NULL); |
109 } | 109 |
110 | 110 if (m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT) { |
111 FX_BOOL CFFL_ComboBox::IsDataChanged(CPDFSDK_PageView* pPageView) | 111 if (nCurSel >= 0) { |
112 { | 112 return nCurSel != m_pWidget->GetSelectedIndex(0); |
113 if (CPWL_ComboBox * pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE
)) | 113 } else { |
114 { | 114 return pWnd->GetText() != m_pWidget->GetValue(); |
115 FX_INT32 nCurSel = pWnd->GetSelect(); | 115 } |
116 | 116 } else { |
117 ASSERT(m_pWidget != NULL); | 117 return nCurSel != m_pWidget->GetSelectedIndex(0); |
118 | 118 } |
119 if (m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT) | 119 } |
120 { | 120 |
121 if (nCurSel >= 0) | 121 return FALSE; |
122 { | 122 } |
123 return nCurSel != m_pWidget->GetSelectedIndex(0)
; | 123 |
124 } | 124 void CFFL_ComboBox::SaveData(CPDFSDK_PageView* pPageView) { |
125 else | 125 ASSERT(m_pWidget != NULL); |
126 { | 126 |
127 return pWnd->GetText() != m_pWidget->GetValue(); | 127 if (CPWL_ComboBox* pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { |
128 } | 128 CFX_WideString swText = pWnd->GetText(); |
129 } | 129 FX_INT32 nCurSel = pWnd->GetSelect(); |
130 else | 130 |
131 { | 131 // mantis:0004157 |
132 return nCurSel != m_pWidget->GetSelectedIndex(0); | 132 FX_BOOL bSetValue = TRUE; |
133 } | 133 |
134 } | 134 if (m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT) { |
135 | 135 if (nCurSel >= 0) { |
136 return FALSE; | 136 if (swText != m_pWidget->GetOptionLabel(nCurSel)) |
137 } | 137 bSetValue = TRUE; |
138 | 138 else |
139 void CFFL_ComboBox::SaveData(CPDFSDK_PageView* pPageView) | 139 bSetValue = FALSE; |
140 { | 140 } else |
141 ASSERT(m_pWidget != NULL); | 141 bSetValue = TRUE; |
142 | 142 } else |
143 if (CPWL_ComboBox* pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)
) | 143 bSetValue = FALSE; |
144 { | 144 |
145 CFX_WideString swText = pWnd->GetText(); | 145 CFX_WideString sOldValue; |
146 FX_INT32 nCurSel = pWnd->GetSelect(); | 146 |
147 | 147 if (bSetValue) { |
148 //mantis:0004157 | 148 sOldValue = m_pWidget->GetValue(); |
149 FX_BOOL bSetValue = TRUE; | 149 m_pWidget->SetValue(swText, FALSE); |
150 | 150 } else { |
151 if (m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT) | 151 m_pWidget->GetSelectedIndex(0); |
152 { | 152 m_pWidget->SetOptionSelection(nCurSel, TRUE, FALSE); |
153 if (nCurSel >= 0) | 153 } |
154 { | 154 |
155 if (swText != m_pWidget->GetOptionLabel(nCurSel)
) | 155 m_pWidget->ResetFieldAppearance(TRUE); |
156 bSetValue = TRUE; | 156 m_pWidget->UpdateField(); |
157 else | 157 SetChangeMark(); |
158 bSetValue = FALSE; | 158 |
159 } | 159 m_pWidget->GetPDFPage(); |
160 else | 160 } |
161 bSetValue = TRUE; | 161 } |
162 } | 162 |
163 else | 163 void CFFL_ComboBox::GetActionData(CPDFSDK_PageView* pPageView, |
164 bSetValue = FALSE; | 164 CPDF_AAction::AActionType type, |
165 | 165 PDFSDK_FieldAction& fa) { |
166 CFX_WideString sOldValue; | 166 switch (type) { |
167 | 167 case CPDF_AAction::KeyStroke: |
168 | 168 if (CPWL_ComboBox* pComboBox = |
169 if (bSetValue) | 169 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { |
170 { | 170 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { |
171 sOldValue = m_pWidget->GetValue(); | 171 fa.bFieldFull = pEdit->IsTextFull(); |
172 m_pWidget->SetValue(swText, FALSE); | 172 int nSelStart = 0; |
173 } | 173 int nSelEnd = 0; |
174 else | 174 pEdit->GetSel(nSelStart, nSelEnd); |
175 { | 175 fa.nSelEnd = nSelEnd; |
176 m_pWidget->GetSelectedIndex(0); | 176 fa.nSelStart = nSelStart; |
177 m_pWidget->SetOptionSelection(nCurSel, TRUE, FALSE); | 177 fa.sValue = pEdit->GetText(); |
178 } | 178 fa.sChangeEx = GetSelectExportText(); |
179 | 179 |
180 m_pWidget->ResetFieldAppearance(TRUE); | 180 if (fa.bFieldFull) { |
181 m_pWidget->UpdateField(); | 181 fa.sChange = L""; |
182 SetChangeMark(); | 182 fa.sChangeEx = L""; |
183 | 183 } |
184 m_pWidget->GetPDFPage(); | 184 } |
185 | 185 } |
186 | 186 break; |
187 } | 187 case CPDF_AAction::Validate: |
188 } | 188 if (CPWL_ComboBox* pComboBox = |
189 | 189 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { |
190 void CFFL_ComboBox::GetActionData( CPDFSDK_PageView* pPageView, CPDF_AAction::A
ActionType type, PDFSDK_FieldAction& fa) | 190 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { |
191 { | 191 fa.sValue = pEdit->GetText(); |
192 switch (type) | 192 } |
193 { | 193 } |
194 case CPDF_AAction::KeyStroke: | 194 break; |
195 if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPag
eView, FALSE)) | 195 case CPDF_AAction::LoseFocus: |
196 { | 196 case CPDF_AAction::GetFocus: |
197 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) | 197 ASSERT(m_pWidget != NULL); |
198 { | 198 fa.sValue = m_pWidget->GetValue(); |
199 fa.bFieldFull = pEdit->IsTextFull(); | 199 break; |
200 int nSelStart = 0; | 200 default: |
201 int nSelEnd = 0; | 201 break; |
202 pEdit->GetSel(nSelStart, nSelEnd); | 202 } |
203 fa.nSelEnd = nSelEnd; | 203 } |
204 fa.nSelStart = nSelStart; | 204 |
205 fa.sValue = pEdit->GetText(); | 205 void CFFL_ComboBox::SetActionData(CPDFSDK_PageView* pPageView, |
206 fa.sChangeEx = GetSelectExportText(); | 206 CPDF_AAction::AActionType type, |
207 | 207 const PDFSDK_FieldAction& fa) { |
208 if (fa.bFieldFull) | 208 switch (type) { |
209 { | 209 case CPDF_AAction::KeyStroke: |
210 fa.sChange = L""; | 210 if (CPWL_ComboBox* pComboBox = |
211 fa.sChangeEx = L""; | 211 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { |
212 } | 212 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { |
213 } | 213 pEdit->SetSel(fa.nSelStart, fa.nSelEnd); |
214 } | 214 pEdit->ReplaceSel(fa.sChange); |
215 break; | 215 } |
216 case CPDF_AAction::Validate: | 216 } |
217 if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPag
eView, FALSE)) | 217 break; |
218 { | 218 default: |
219 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) | 219 break; |
220 { | 220 } |
221 fa.sValue = pEdit->GetText(); | 221 } |
222 } | 222 |
223 } | 223 FX_BOOL CFFL_ComboBox::IsActionDataChanged(CPDF_AAction::AActionType type, |
224 break; | 224 const PDFSDK_FieldAction& faOld, |
225 case CPDF_AAction::LoseFocus: | 225 const PDFSDK_FieldAction& faNew) { |
226 case CPDF_AAction::GetFocus: | 226 switch (type) { |
227 ASSERT(m_pWidget != NULL); | 227 case CPDF_AAction::KeyStroke: |
228 fa.sValue = m_pWidget->GetValue(); | 228 return (!faOld.bFieldFull && faOld.nSelEnd != faNew.nSelEnd) || |
229 break; | 229 faOld.nSelStart != faNew.nSelStart || |
230 default: | 230 faOld.sChange != faNew.sChange; |
231 break; | 231 default: |
232 } | 232 break; |
233 } | 233 } |
234 | 234 |
235 | 235 return FALSE; |
236 | 236 } |
237 void CFFL_ComboBox::SetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AAc
tionType type, | 237 |
238 const PD
FSDK_FieldAction& fa) | 238 void CFFL_ComboBox::SaveState(CPDFSDK_PageView* pPageView) { |
239 { | 239 ASSERT(pPageView != NULL); |
240 switch (type) | 240 |
241 { | 241 if (CPWL_ComboBox* pComboBox = |
242 case CPDF_AAction::KeyStroke: | 242 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { |
243 if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPag
eView, FALSE)) | 243 m_State.nIndex = pComboBox->GetSelect(); |
244 { | 244 |
245 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) | 245 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { |
246 { | 246 pEdit->GetSel(m_State.nStart, m_State.nEnd); |
247 pEdit->SetSel(fa.nSelStart, fa.nSelEnd); | 247 m_State.sValue = pEdit->GetText(); |
248 pEdit->ReplaceSel(fa.sChange); | 248 } |
249 } | 249 } |
250 } | 250 } |
251 break; | 251 |
252 default: | 252 void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView) { |
253 break; | 253 ASSERT(pPageView != NULL); |
254 } | 254 |
255 } | 255 if (CPWL_ComboBox* pComboBox = |
256 | 256 (CPWL_ComboBox*)GetPDFWindow(pPageView, TRUE)) { |
257 FX_BOOL CFFL_ComboBox::IsActionDataChanged(CPDF_AAction::AActionType type, const
PDFSDK_FieldAction& faOld, | 257 if (m_State.nIndex >= 0) |
258 const PD
FSDK_FieldAction& faNew) | 258 pComboBox->SetSelect(m_State.nIndex); |
259 { | 259 else { |
260 switch (type) | 260 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) { |
261 { | 261 pEdit->SetText(m_State.sValue); |
262 case CPDF_AAction::KeyStroke: | 262 pEdit->SetSel(m_State.nStart, m_State.nEnd); |
263 return (!faOld.bFieldFull && faOld.nSelEnd != faNew.nSelEnd) ||
faOld.nSelStart != faNew.nSelStart || | 263 } |
264 faOld.sChange != faNew.sChange; | 264 } |
265 default: | 265 } |
266 break; | 266 } |
267 } | 267 |
268 | 268 CPWL_Wnd* CFFL_ComboBox::ResetPDFWindow(CPDFSDK_PageView* pPageView, |
269 return FALSE; | 269 FX_BOOL bRestoreValue) { |
270 } | 270 if (bRestoreValue) |
271 | 271 SaveState(pPageView); |
272 void CFFL_ComboBox::SaveState(CPDFSDK_PageView* pPageView) | 272 |
273 { | 273 DestroyPDFWindow(pPageView); |
274 ASSERT(pPageView != NULL); | 274 |
275 | 275 CPWL_Wnd* pRet = NULL; |
276 if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPageView, F
ALSE)) | 276 |
277 { | 277 if (bRestoreValue) { |
278 m_State.nIndex = pComboBox->GetSelect(); | 278 RestoreState(pPageView); |
279 | 279 pRet = this->GetPDFWindow(pPageView, FALSE); |
280 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) | 280 } else |
281 { | 281 pRet = this->GetPDFWindow(pPageView, TRUE); |
282 pEdit->GetSel(m_State.nStart, m_State.nEnd); | 282 |
283 m_State.sValue = pEdit->GetText(); | 283 m_pWidget->UpdateField(); |
284 } | 284 |
285 } | 285 return pRet; |
286 } | 286 } |
287 | 287 |
288 void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView) | 288 void CFFL_ComboBox::OnKeyStroke(FX_BOOL bKeyDown, FX_UINT nFlag) { |
289 { | 289 ASSERT(m_pWidget != NULL); |
290 ASSERT(pPageView != NULL); | 290 |
291 | 291 int nFlags = m_pWidget->GetFieldFlags(); |
292 if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPageView, T
RUE)) | 292 |
293 { | 293 if (nFlags & FIELDFLAG_COMMITONSELCHANGE) { |
294 if (m_State.nIndex >= 0) | 294 if (m_bValid) { |
295 pComboBox->SetSelect(m_State.nIndex); | 295 CPDFSDK_PageView* pPageView = this->GetCurPageView(); |
296 else | 296 ASSERT(pPageView != NULL); |
297 { | 297 |
298 if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) | 298 if (CommitData(pPageView, nFlag)) { |
299 { | 299 DestroyPDFWindow(pPageView); |
300 pEdit->SetText(m_State.sValue); | 300 m_bValid = FALSE; |
301 pEdit->SetSel(m_State.nStart, m_State.nEnd); | 301 } |
302 } | 302 } |
303 } | 303 } |
304 } | 304 } |
305 } | 305 |
306 | 306 void CFFL_ComboBox::OnSetFocus(CPWL_Wnd* pWnd) { |
307 CPWL_Wnd* CFFL_ComboBox::ResetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bRe
storeValue) | 307 ASSERT(m_pApp != NULL); |
308 { | 308 |
309 if (bRestoreValue) | 309 ASSERT(pWnd != NULL); |
310 SaveState(pPageView); | 310 |
311 | 311 if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) { |
312 DestroyPDFWindow(pPageView); | 312 CPWL_Edit* pEdit = (CPWL_Edit*)pWnd; |
313 | 313 pEdit->SetCharSet(134); |
314 CPWL_Wnd* pRet = NULL; | 314 pEdit->SetCodePage(936); |
315 | 315 |
316 if (bRestoreValue) | 316 pEdit->SetReadyToInput(); |
317 { | 317 CFX_WideString wsText = pEdit->GetText(); |
318 RestoreState(pPageView); | 318 int nCharacters = wsText.GetLength(); |
319 pRet = this->GetPDFWindow(pPageView, FALSE); | 319 CFX_ByteString bsUTFText = wsText.UTF16LE_Encode(); |
320 } | 320 unsigned short* pBuffer = (unsigned short*)(FX_LPCSTR) bsUTFText; |
321 else | 321 m_pApp->FFI_OnSetFieldInputFocus( |
322 pRet = this->GetPDFWindow(pPageView, TRUE); | 322 m_pWidget->GetFormField(), pBuffer, nCharacters, TRUE); |
323 | 323 |
324 m_pWidget->UpdateField(); | 324 pEdit->SetEditNotify(this); |
325 | 325 } |
326 return pRet; | 326 } |
327 } | 327 |
328 | 328 void CFFL_ComboBox::OnKillFocus(CPWL_Wnd* pWnd) { |
329 void CFFL_ComboBox::OnKeyStroke(FX_BOOL bKeyDown, FX_UINT nFlag) | 329 ASSERT(m_pApp != NULL); |
330 { | 330 } |
331 ASSERT(m_pWidget != NULL); | 331 |
332 | 332 FX_BOOL CFFL_ComboBox::CanCopy(CPDFSDK_Document* pDocument) { |
333 int nFlags = m_pWidget->GetFieldFlags(); | 333 ASSERT(pDocument != NULL); |
334 | 334 |
335 if (nFlags & FIELDFLAG_COMMITONSELCHANGE) | 335 return FALSE; |
336 { | 336 } |
337 if (m_bValid) | 337 |
338 { | 338 FX_BOOL CFFL_ComboBox::CanCut(CPDFSDK_Document* pDocument) { |
339 CPDFSDK_PageView* pPageView = this->GetCurPageView(); | 339 ASSERT(pDocument != NULL); |
340 ASSERT(pPageView != NULL); | 340 |
341 | 341 return FALSE; |
342 if (CommitData(pPageView, nFlag)) | 342 } |
343 { | 343 |
344 DestroyPDFWindow(pPageView); | 344 FX_BOOL CFFL_ComboBox::CanPaste(CPDFSDK_Document* pDocument) { |
345 m_bValid = FALSE; | 345 ASSERT(pDocument != NULL); |
346 } | 346 |
347 } | 347 return FALSE; |
348 } | 348 } |
349 } | 349 |
350 | 350 void CFFL_ComboBox::DoCopy(CPDFSDK_Document* pDocument) { |
351 void CFFL_ComboBox::OnSetFocus(CPWL_Wnd* pWnd) | 351 ASSERT(pDocument != NULL); |
352 { | 352 } |
353 ASSERT(m_pApp != NULL); | 353 |
354 | 354 void CFFL_ComboBox::DoCut(CPDFSDK_Document* pDocument) { |
355 ASSERT(pWnd != NULL); | 355 ASSERT(pDocument != NULL); |
356 | 356 } |
357 if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) | 357 |
358 { | 358 void CFFL_ComboBox::DoPaste(CPDFSDK_Document* pDocument) { |
359 CPWL_Edit* pEdit = (CPWL_Edit*)pWnd; | 359 ASSERT(pDocument != NULL); |
360 pEdit->SetCharSet(134); | 360 } |
361 pEdit->SetCodePage(936); | 361 |
362 | 362 void CFFL_ComboBox::OnAddUndo(CPWL_Edit* pEdit) { |
363 pEdit->SetReadyToInput(); | 363 ASSERT(pEdit != NULL); |
364 CFX_WideString wsText = pEdit->GetText(); | 364 } |
365 int nCharacters = wsText.GetLength(); | 365 |
366 CFX_ByteString bsUTFText = wsText.UTF16LE_Encode(); | 366 CFX_WideString CFFL_ComboBox::GetSelectExportText() { |
367 unsigned short* pBuffer = (unsigned short*)(FX_LPCSTR)bsUTFText; | 367 CFX_WideString swRet; |
368 m_pApp->FFI_OnSetFieldInputFocus(m_pWidget->GetFormField(), pBuf
fer, nCharacters, TRUE); | 368 |
369 | 369 int nExport = -1; |
370 pEdit->SetEditNotify(this); | 370 CPDFSDK_PageView* pPageView = GetCurPageView(); |
371 } | 371 if (CPWL_ComboBox* pComboBox = |
372 } | 372 (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) { |
373 | 373 nExport = pComboBox->GetSelect(); |
374 void CFFL_ComboBox::OnKillFocus(CPWL_Wnd* pWnd) | 374 } |
375 { | 375 |
376 ASSERT(m_pApp != NULL); | 376 if (nExport >= 0) { |
377 } | 377 if (CPDF_FormField* pFormField = m_pWidget->GetFormField()) { |
378 | 378 swRet = pFormField->GetOptionValue(nExport); |
379 FX_BOOL CFFL_ComboBox::CanCopy(CPDFSDK_Document* pDocument) | 379 if (swRet.IsEmpty()) |
380 { | 380 swRet = pFormField->GetOptionLabel(nExport); |
381 ASSERT(pDocument != NULL); | 381 } |
382 | 382 } |
383 return FALSE; | 383 |
384 } | 384 return swRet; |
385 | 385 } |
386 FX_BOOL CFFL_ComboBox::CanCut(CPDFSDK_Document* pDocument) | |
387 { | |
388 ASSERT(pDocument != NULL); | |
389 | |
390 return FALSE; | |
391 } | |
392 | |
393 FX_BOOL CFFL_ComboBox::CanPaste(CPDFSDK_Document* pDocument) | |
394 { | |
395 ASSERT(pDocument != NULL); | |
396 | |
397 return FALSE; | |
398 } | |
399 | |
400 void CFFL_ComboBox::DoCopy(CPDFSDK_Document* pDocument) | |
401 { | |
402 ASSERT(pDocument != NULL); | |
403 } | |
404 | |
405 void CFFL_ComboBox::DoCut(CPDFSDK_Document* pDocument) | |
406 { | |
407 ASSERT(pDocument != NULL); | |
408 } | |
409 | |
410 void CFFL_ComboBox::DoPaste(CPDFSDK_Document* pDocument) | |
411 { | |
412 ASSERT(pDocument != NULL); | |
413 } | |
414 | |
415 void CFFL_ComboBox::OnAddUndo(CPWL_Edit* pEdit) | |
416 { | |
417 ASSERT(pEdit != NULL); | |
418 } | |
419 | |
420 CFX_WideString CFFL_ComboBox::GetSelectExportText() | |
421 { | |
422 CFX_WideString swRet; | |
423 | |
424 int nExport = -1; | |
425 CPDFSDK_PageView *pPageView = GetCurPageView(); | |
426 if (CPWL_ComboBox * pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPageView,
FALSE)) | |
427 { | |
428 nExport = pComboBox->GetSelect(); | |
429 } | |
430 | |
431 if (nExport >= 0) | |
432 { | |
433 if (CPDF_FormField * pFormField = m_pWidget->GetFormField()) | |
434 { | |
435 swRet = pFormField->GetOptionValue(nExport); | |
436 if (swRet.IsEmpty()) | |
437 swRet = pFormField->GetOptionLabel(nExport); | |
438 } | |
439 } | |
440 | |
441 return swRet; | |
442 } | |
OLD | NEW |