Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(392)

Side by Side Diff: fpdfsdk/src/javascript/Field.cpp

Issue 1430213002: Remove CFX_PtrArray usage in fpdfsdk. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "Field.h" 7 #include "Field.h"
8 8
9 #include "../../include/fsdk_mgr.h" // For CPDFDoc_Environment. 9 #include "../../include/fsdk_mgr.h" // For CPDFDoc_Environment.
10 #include "../../include/javascript/IJavaScript.h" 10 #include "../../include/javascript/IJavaScript.h"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 JS_STATIC_METHOD_ENTRY(signatureSign) 107 JS_STATIC_METHOD_ENTRY(signatureSign)
108 JS_STATIC_METHOD_ENTRY(signatureValidate) 108 JS_STATIC_METHOD_ENTRY(signatureValidate)
109 END_JS_STATIC_METHOD() 109 END_JS_STATIC_METHOD()
110 110
111 IMPLEMENT_JS_CLASS(CJS_Field, Field) 111 IMPLEMENT_JS_CLASS(CJS_Field, Field)
112 112
113 void CJS_Field::InitInstance(IJS_Runtime* pIRuntime) { 113 void CJS_Field::InitInstance(IJS_Runtime* pIRuntime) {
114 CJS_Runtime* pRuntime = static_cast<CJS_Runtime*>(pIRuntime); 114 CJS_Runtime* pRuntime = static_cast<CJS_Runtime*>(pIRuntime);
115 Field* pField = static_cast<Field*>(GetEmbedObject()); 115 Field* pField = static_cast<Field*>(GetEmbedObject());
116 pField->SetIsolate(pRuntime->GetIsolate()); 116 pField->SetIsolate(pRuntime->GetIsolate());
117 }; 117 }
Tom Sepez 2015/11/09 21:25:32 Good catch. This code is littered with stray semi
Lei Zhang 2015/11/09 22:45:28 Acknowledged.
118 118
119 Field::Field(CJS_Object* pJSObject) 119 Field::Field(CJS_Object* pJSObject)
120 : CJS_EmbedObj(pJSObject), 120 : CJS_EmbedObj(pJSObject),
121 m_pJSDoc(NULL), 121 m_pJSDoc(NULL),
122 m_pDocument(NULL), 122 m_pDocument(NULL),
123 m_nFormControlIndex(-1), 123 m_nFormControlIndex(-1),
124 m_bCanSet(FALSE), 124 m_bCanSet(FALSE),
125 m_bDelay(FALSE), 125 m_bDelay(FALSE),
126 m_isolate(NULL) {} 126 m_isolate(NULL) {}
127 127
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 m_nFormControlIndex = iControlNo; 186 m_nFormControlIndex = iControlNo;
187 return TRUE; 187 return TRUE;
188 } 188 }
189 189
190 m_FieldName = swFieldNameTemp; 190 m_FieldName = swFieldNameTemp;
191 m_nFormControlIndex = -1; 191 m_nFormControlIndex = -1;
192 192
193 return TRUE; 193 return TRUE;
194 } 194 }
195 195
196 void Field::GetFormFields(CPDFSDK_Document* pDocument, 196 std::vector<CPDF_FormField*> Field::GetFormFields(
197 const CFX_WideString& csFieldName, 197 CPDFSDK_Document* pDocument,
198 CFX_PtrArray& FieldArray) { 198 const CFX_WideString& csFieldName) {
199 ASSERT(pDocument != NULL); 199 std::vector<CPDF_FormField*> fields;
200
201 CPDFSDK_InterForm* pReaderInterForm = pDocument->GetInterForm(); 200 CPDFSDK_InterForm* pReaderInterForm = pDocument->GetInterForm();
202 ASSERT(pReaderInterForm != NULL);
203
204 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm(); 201 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
205 ASSERT(pInterForm != NULL); 202 for (int i = 0, sz = pInterForm->CountFields(csFieldName); i < sz; ++i) {
206
207 ASSERT(FieldArray.GetSize() == 0);
208
209 for (int i = 0, sz = pInterForm->CountFields(csFieldName); i < sz; i++) {
210 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName)) 203 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName))
211 FieldArray.Add((void*)pFormField); 204 fields.push_back(pFormField);
212 } 205 }
206 return fields;
213 } 207 }
214 208
215 void Field::GetFormFields(const CFX_WideString& csFieldName, 209 std::vector<CPDF_FormField*> Field::GetFormFields(
216 CFX_PtrArray& FieldArray) { 210 const CFX_WideString& csFieldName) const {
217 ASSERT(m_pDocument != NULL); 211 return Field::GetFormFields(m_pDocument, csFieldName);
218
219 Field::GetFormFields(m_pDocument, csFieldName, FieldArray);
220 } 212 }
221 213
222 void Field::UpdateFormField(CPDFSDK_Document* pDocument, 214 void Field::UpdateFormField(CPDFSDK_Document* pDocument,
223 CPDF_FormField* pFormField, 215 CPDF_FormField* pFormField,
224 FX_BOOL bChangeMark, 216 FX_BOOL bChangeMark,
225 FX_BOOL bResetAP, 217 FX_BOOL bResetAP,
226 FX_BOOL bRefresh) { 218 FX_BOOL bRefresh) {
227 ASSERT(pDocument != NULL); 219 ASSERT(pDocument != NULL);
Tom Sepez 2015/11/09 21:25:32 nit: segv on 222 otherwise.
Lei Zhang 2015/11/09 22:45:29 Done.
228 ASSERT(pFormField != NULL); 220 ASSERT(pFormField != NULL);
229 221
230 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 222 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
231 ASSERT(pInterForm != NULL); 223 ASSERT(pInterForm != NULL);
Tom Sepez 2015/11/09 21:25:32 nit: segv on 226 otherwise.
Lei Zhang 2015/11/09 22:45:28 Done.
232 224
233 CFX_PtrArray widgets; 225 std::vector<CPDFSDK_Widget*> widgets;
234 pInterForm->GetWidgets(pFormField, widgets); 226 pInterForm->GetWidgets(pFormField, &widgets);
235 227
236 if (bResetAP) { 228 if (bResetAP) {
237 int nFieldType = pFormField->GetFieldType(); 229 int nFieldType = pFormField->GetFieldType();
238 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) { 230 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) {
239 for (int i = 0, sz = widgets.GetSize(); i < sz; i++) { 231 for (CPDFSDK_Widget* pWidget : widgets) {
240 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i); 232 FX_BOOL bFormatted = FALSE;
241 ASSERT(pWidget != NULL); 233 CFX_WideString sValue = pWidget->OnFormat(bFormatted);
242 234 pWidget->ResetAppearance(bFormatted ? sValue.c_str() : nullptr, FALSE);
243 FX_BOOL bFormated = FALSE;
244 CFX_WideString sValue = pWidget->OnFormat(bFormated);
245 if (bFormated)
246 pWidget->ResetAppearance(sValue.c_str(), FALSE);
247 else
248 pWidget->ResetAppearance(NULL, FALSE);
249 } 235 }
250 } else { 236 } else {
251 for (int i = 0, sz = widgets.GetSize(); i < sz; i++) { 237 for (CPDFSDK_Widget* pWidget : widgets) {
252 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i); 238 pWidget->ResetAppearance(nullptr, FALSE);
253 ASSERT(pWidget != NULL);
254
255 pWidget->ResetAppearance(NULL, FALSE);
256 } 239 }
257 } 240 }
258 } 241 }
259 242
260 if (bRefresh) { 243 if (bRefresh) {
261 for (int i = 0, sz = widgets.GetSize(); i < sz; i++) { 244 for (CPDFSDK_Widget* pWidget : widgets) {
262 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i); 245 CPDFSDK_Document* pDoc = pWidget->GetInterForm()->GetDocument();
263 ASSERT(pWidget != NULL); 246 pDoc->UpdateAllViews(nullptr, pWidget);
264
265 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm();
266 CPDFSDK_Document* pDoc = pInterForm->GetDocument();
267 // CReader_Page* pPage = pWidget->GetPage();
268 ASSERT(pDoc != NULL);
269 pDoc->UpdateAllViews(NULL, pWidget);
270 } 247 }
271 } 248 }
272 249
273 if (bChangeMark) 250 if (bChangeMark)
274 pDocument->SetChangeMark(); 251 pDocument->SetChangeMark();
275 } 252 }
276 253
277 void Field::UpdateFormControl(CPDFSDK_Document* pDocument, 254 void Field::UpdateFormControl(CPDFSDK_Document* pDocument,
278 CPDF_FormControl* pFormControl, 255 CPDF_FormControl* pFormControl,
279 FX_BOOL bChangeMark, 256 FX_BOOL bChangeMark,
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 CFX_ByteString alignStr; 341 CFX_ByteString alignStr;
365 vp >> alignStr; 342 vp >> alignStr;
366 343
367 if (m_bDelay) { 344 if (m_bDelay) {
368 AddDelay_String(FP_ALIGNMENT, alignStr); 345 AddDelay_String(FP_ALIGNMENT, alignStr);
369 } else { 346 } else {
370 Field::SetAlignment(m_pDocument, m_FieldName, m_nFormControlIndex, 347 Field::SetAlignment(m_pDocument, m_FieldName, m_nFormControlIndex,
371 alignStr); 348 alignStr);
372 } 349 }
373 } else { 350 } else {
374 CFX_PtrArray FieldArray; 351 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
375 GetFormFields(m_FieldName, FieldArray); 352 if (FieldArray.empty())
376 if (FieldArray.GetSize() <= 0)
377 return FALSE; 353 return FALSE;
378 354
379 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 355 CPDF_FormField* pFormField = FieldArray[0];
380 ASSERT(pFormField != NULL);
381
382 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 356 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
383 return FALSE; 357 return FALSE;
384 358
385 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 359 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
386 if (!pFormControl) 360 if (!pFormControl)
387 return FALSE; 361 return FALSE;
388 362
389 switch (pFormControl->GetControlAlignment()) { 363 switch (pFormControl->GetControlAlignment()) {
390 case 1: 364 case 1:
391 vp << L"center"; 365 vp << L"center";
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 CFX_ByteString strType = ""; 397 CFX_ByteString strType = "";
424 vp >> strType; 398 vp >> strType;
425 399
426 if (m_bDelay) { 400 if (m_bDelay) {
427 AddDelay_String(FP_BORDERSTYLE, strType); 401 AddDelay_String(FP_BORDERSTYLE, strType);
428 } else { 402 } else {
429 Field::SetBorderStyle(m_pDocument, m_FieldName, m_nFormControlIndex, 403 Field::SetBorderStyle(m_pDocument, m_FieldName, m_nFormControlIndex,
430 strType); 404 strType);
431 } 405 }
432 } else { 406 } else {
433 CFX_PtrArray FieldArray; 407 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
434 GetFormFields(m_FieldName, FieldArray); 408 if (FieldArray.empty())
435 if (FieldArray.GetSize() <= 0)
436 return FALSE; 409 return FALSE;
437 410
438 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 411 CPDF_FormField* pFormField = FieldArray[0];
439 if (!pFormField) 412 if (!pFormField)
440 return FALSE; 413 return FALSE;
441 414
442 CPDFSDK_Widget* pWidget = 415 CPDFSDK_Widget* pWidget =
443 GetWidget(m_pDocument, GetSmartFieldControl(pFormField)); 416 GetWidget(m_pDocument, GetSmartFieldControl(pFormField));
444 if (!pWidget) 417 if (!pWidget)
445 return FALSE; 418 return FALSE;
446 419
447 int nBorderstyle = pWidget->GetBorderStyle(); 420 int nBorderstyle = pWidget->GetBorderStyle();
448 421
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 nBorderStyle = BBS_BEVELED; 458 nBorderStyle = BBS_BEVELED;
486 else if (string == "dashed") 459 else if (string == "dashed")
487 nBorderStyle = BBS_DASH; 460 nBorderStyle = BBS_DASH;
488 else if (string == "inset") 461 else if (string == "inset")
489 nBorderStyle = BBS_INSET; 462 nBorderStyle = BBS_INSET;
490 else if (string == "underline") 463 else if (string == "underline")
491 nBorderStyle = BBS_UNDERLINE; 464 nBorderStyle = BBS_UNDERLINE;
492 else 465 else
493 return; 466 return;
494 467
495 CFX_PtrArray FieldArray; 468 std::vector<CPDF_FormField*> FieldArray =
496 GetFormFields(pDocument, swFieldName, FieldArray); 469 GetFormFields(pDocument, swFieldName);
497 470 for (CPDF_FormField* pFormField : FieldArray) {
498 for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
499 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
500 ASSERT(pFormField != NULL);
501
502 if (nControlIndex < 0) { 471 if (nControlIndex < 0) {
503 FX_BOOL bSet = FALSE; 472 FX_BOOL bSet = FALSE;
504 for (int j = 0, jsz = pFormField->CountControls(); j < jsz; j++) { 473 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
505 if (CPDFSDK_Widget* pWidget = 474 if (CPDFSDK_Widget* pWidget =
506 GetWidget(pDocument, pFormField->GetControl(j))) { 475 GetWidget(pDocument, pFormField->GetControl(i))) {
507 if (pWidget->GetBorderStyle() != nBorderStyle) { 476 if (pWidget->GetBorderStyle() != nBorderStyle) {
508 pWidget->SetBorderStyle(nBorderStyle); 477 pWidget->SetBorderStyle(nBorderStyle);
509 bSet = TRUE; 478 bSet = TRUE;
510 } 479 }
511 } 480 }
512 } 481 }
513 if (bSet) 482 if (bSet)
514 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); 483 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
515 } else { 484 } else {
516 if (nControlIndex >= pFormField->CountControls()) 485 if (nControlIndex >= pFormField->CountControls())
(...skipping 23 matching lines...) Expand all
540 int nVP; 509 int nVP;
541 vp >> nVP; 510 vp >> nVP;
542 511
543 if (m_bDelay) { 512 if (m_bDelay) {
544 AddDelay_Int(FP_BUTTONALIGNX, nVP); 513 AddDelay_Int(FP_BUTTONALIGNX, nVP);
545 } else { 514 } else {
546 Field::SetButtonAlignX(m_pDocument, m_FieldName, m_nFormControlIndex, 515 Field::SetButtonAlignX(m_pDocument, m_FieldName, m_nFormControlIndex,
547 nVP); 516 nVP);
548 } 517 }
549 } else { 518 } else {
550 CFX_PtrArray FieldArray; 519 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
551 GetFormFields(m_FieldName, FieldArray); 520 if (FieldArray.empty())
552 if (FieldArray.GetSize() <= 0)
553 return FALSE; 521 return FALSE;
554 522
555 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 523 CPDF_FormField* pFormField = FieldArray[0];
556 ASSERT(pFormField != NULL);
557
558 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 524 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
559 return FALSE; 525 return FALSE;
560 526
561 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 527 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
562 if (!pFormControl) 528 if (!pFormControl)
563 return FALSE; 529 return FALSE;
564 530
565 CPDF_IconFit IconFit = pFormControl->GetIconFit(); 531 CPDF_IconFit IconFit = pFormControl->GetIconFit();
566 532
567 FX_FLOAT fLeft, fBottom; 533 FX_FLOAT fLeft, fBottom;
(...skipping 24 matching lines...) Expand all
592 int nVP; 558 int nVP;
593 vp >> nVP; 559 vp >> nVP;
594 560
595 if (m_bDelay) { 561 if (m_bDelay) {
596 AddDelay_Int(FP_BUTTONALIGNY, nVP); 562 AddDelay_Int(FP_BUTTONALIGNY, nVP);
597 } else { 563 } else {
598 Field::SetButtonAlignY(m_pDocument, m_FieldName, m_nFormControlIndex, 564 Field::SetButtonAlignY(m_pDocument, m_FieldName, m_nFormControlIndex,
599 nVP); 565 nVP);
600 } 566 }
601 } else { 567 } else {
602 CFX_PtrArray FieldArray; 568 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
603 GetFormFields(m_FieldName, FieldArray); 569 if (FieldArray.empty())
604 if (FieldArray.GetSize() <= 0)
605 return FALSE; 570 return FALSE;
606 571
607 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 572 CPDF_FormField* pFormField = FieldArray[0];
Tom Sepez 2015/11/09 21:25:32 I think I've seen this pattern somewhere before.
Lei Zhang 2015/11/09 22:45:29 Me too. Maybe another day though.
608 ASSERT(pFormField != NULL);
609
610 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 573 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
611 return FALSE; 574 return FALSE;
612 575
613 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 576 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
614 if (!pFormControl) 577 if (!pFormControl)
615 return FALSE; 578 return FALSE;
616 579
617 CPDF_IconFit IconFit = pFormControl->GetIconFit(); 580 CPDF_IconFit IconFit = pFormControl->GetIconFit();
618 581
619 FX_FLOAT fLeft, fBottom; 582 FX_FLOAT fLeft, fBottom;
(...skipping 24 matching lines...) Expand all
644 bool bVP; 607 bool bVP;
645 vp >> bVP; 608 vp >> bVP;
646 609
647 if (m_bDelay) { 610 if (m_bDelay) {
648 AddDelay_Bool(FP_BUTTONFITBOUNDS, bVP); 611 AddDelay_Bool(FP_BUTTONFITBOUNDS, bVP);
649 } else { 612 } else {
650 Field::SetButtonFitBounds(m_pDocument, m_FieldName, m_nFormControlIndex, 613 Field::SetButtonFitBounds(m_pDocument, m_FieldName, m_nFormControlIndex,
651 bVP); 614 bVP);
652 } 615 }
653 } else { 616 } else {
654 CFX_PtrArray FieldArray; 617 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
655 GetFormFields(m_FieldName, FieldArray); 618 if (FieldArray.empty())
656 if (FieldArray.GetSize() <= 0)
657 return FALSE; 619 return FALSE;
658 620
659 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 621 CPDF_FormField* pFormField = FieldArray[0];
660 ASSERT(pFormField != NULL);
661
662 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 622 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
663 return FALSE; 623 return FALSE;
664 624
665 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 625 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
666 if (!pFormControl) 626 if (!pFormControl)
667 return FALSE; 627 return FALSE;
668 628
669 CPDF_IconFit IconFit = pFormControl->GetIconFit(); 629 CPDF_IconFit IconFit = pFormControl->GetIconFit();
670 vp << IconFit.GetFittingBounds(); 630 vp << IconFit.GetFittingBounds();
671 } 631 }
(...skipping 20 matching lines...) Expand all
692 int nVP; 652 int nVP;
693 vp >> nVP; 653 vp >> nVP;
694 654
695 if (m_bDelay) { 655 if (m_bDelay) {
696 AddDelay_Int(FP_BUTTONPOSITION, nVP); 656 AddDelay_Int(FP_BUTTONPOSITION, nVP);
697 } else { 657 } else {
698 Field::SetButtonPosition(m_pDocument, m_FieldName, m_nFormControlIndex, 658 Field::SetButtonPosition(m_pDocument, m_FieldName, m_nFormControlIndex,
699 nVP); 659 nVP);
700 } 660 }
701 } else { 661 } else {
702 CFX_PtrArray FieldArray; 662 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
703 GetFormFields(m_FieldName, FieldArray); 663 if (FieldArray.empty())
704 if (FieldArray.GetSize() <= 0)
705 return FALSE; 664 return FALSE;
706 665
707 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 666 CPDF_FormField* pFormField = FieldArray[0];
708 ASSERT(pFormField != NULL);
709
710 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 667 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
711 return FALSE; 668 return FALSE;
712 669
713 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 670 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
714 if (!pFormControl) 671 if (!pFormControl)
715 return FALSE; 672 return FALSE;
716 673
717 vp << pFormControl->GetTextPosition(); 674 vp << pFormControl->GetTextPosition();
718 } 675 }
719 return TRUE; 676 return TRUE;
(...skipping 18 matching lines...) Expand all
738 int nVP; 695 int nVP;
739 vp >> nVP; 696 vp >> nVP;
740 697
741 if (m_bDelay) { 698 if (m_bDelay) {
742 AddDelay_Int(FP_BUTTONSCALEHOW, nVP); 699 AddDelay_Int(FP_BUTTONSCALEHOW, nVP);
743 } else { 700 } else {
744 Field::SetButtonScaleHow(m_pDocument, m_FieldName, m_nFormControlIndex, 701 Field::SetButtonScaleHow(m_pDocument, m_FieldName, m_nFormControlIndex,
745 nVP); 702 nVP);
746 } 703 }
747 } else { 704 } else {
748 CFX_PtrArray FieldArray; 705 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
749 GetFormFields(m_FieldName, FieldArray); 706 if (FieldArray.empty())
750 if (FieldArray.GetSize() <= 0)
751 return FALSE; 707 return FALSE;
752 708
753 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 709 CPDF_FormField* pFormField = FieldArray[0];
754 ASSERT(pFormField != NULL);
755
756 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 710 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
757 return FALSE; 711 return FALSE;
758 712
759 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 713 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
760 if (!pFormControl) 714 if (!pFormControl)
761 return FALSE; 715 return FALSE;
762 716
763 CPDF_IconFit IconFit = pFormControl->GetIconFit(); 717 CPDF_IconFit IconFit = pFormControl->GetIconFit();
764 if (IconFit.IsProportionalScale()) 718 if (IconFit.IsProportionalScale())
765 vp << (int32_t)0; 719 vp << (int32_t)0;
(...skipping 23 matching lines...) Expand all
789 int nVP; 743 int nVP;
790 vp >> nVP; 744 vp >> nVP;
791 745
792 if (m_bDelay) { 746 if (m_bDelay) {
793 AddDelay_Int(FP_BUTTONSCALEWHEN, nVP); 747 AddDelay_Int(FP_BUTTONSCALEWHEN, nVP);
794 } else { 748 } else {
795 Field::SetButtonScaleWhen(m_pDocument, m_FieldName, m_nFormControlIndex, 749 Field::SetButtonScaleWhen(m_pDocument, m_FieldName, m_nFormControlIndex,
796 nVP); 750 nVP);
797 } 751 }
798 } else { 752 } else {
799 CFX_PtrArray FieldArray; 753 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
800 GetFormFields(m_FieldName, FieldArray); 754 if (FieldArray.empty())
801 if (FieldArray.GetSize() <= 0)
802 return FALSE; 755 return FALSE;
803 756
804 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 757 CPDF_FormField* pFormField = FieldArray[0];
805 ASSERT(pFormField != NULL);
806
807 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 758 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
808 return FALSE; 759 return FALSE;
809 760
810 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 761 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
811 if (!pFormControl) 762 if (!pFormControl)
812 return FALSE; 763 return FALSE;
813 764
814 CPDF_IconFit IconFit = pFormControl->GetIconFit(); 765 CPDF_IconFit IconFit = pFormControl->GetIconFit();
815 int ScaleM = IconFit.GetScaleMethod(); 766 int ScaleM = IconFit.GetScaleMethod();
816 switch (ScaleM) { 767 switch (ScaleM) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 int nVP; 802 int nVP;
852 vp >> nVP; 803 vp >> nVP;
853 804
854 if (m_bDelay) { 805 if (m_bDelay) {
855 AddDelay_Int(FP_CALCORDERINDEX, nVP); 806 AddDelay_Int(FP_CALCORDERINDEX, nVP);
856 } else { 807 } else {
857 Field::SetCalcOrderIndex(m_pDocument, m_FieldName, m_nFormControlIndex, 808 Field::SetCalcOrderIndex(m_pDocument, m_FieldName, m_nFormControlIndex,
858 nVP); 809 nVP);
859 } 810 }
860 } else { 811 } else {
861 CFX_PtrArray FieldArray; 812 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
862 GetFormFields(m_FieldName, FieldArray); 813 if (FieldArray.empty())
863 if (FieldArray.GetSize() <= 0)
864 return FALSE; 814 return FALSE;
865 815
866 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 816 CPDF_FormField* pFormField = FieldArray[0];
867 ASSERT(pFormField != NULL);
868
869 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && 817 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
870 pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 818 pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) {
871 return FALSE; 819 return FALSE;
820 }
872 821
873 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm(); 822 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
874 ASSERT(pRDInterForm != NULL); 823 ASSERT(pRDInterForm != NULL);
875 824
876 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); 825 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
877 ASSERT(pInterForm != NULL); 826 ASSERT(pInterForm != NULL);
878 827
879 vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField); 828 vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField);
880 } 829 }
881 830
(...skipping 18 matching lines...) Expand all
900 849
901 int nVP; 850 int nVP;
902 vp >> nVP; 851 vp >> nVP;
903 852
904 if (m_bDelay) { 853 if (m_bDelay) {
905 AddDelay_Int(FP_CHARLIMIT, nVP); 854 AddDelay_Int(FP_CHARLIMIT, nVP);
906 } else { 855 } else {
907 Field::SetCharLimit(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 856 Field::SetCharLimit(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
908 } 857 }
909 } else { 858 } else {
910 CFX_PtrArray FieldArray; 859 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
911 GetFormFields(m_FieldName, FieldArray); 860 if (FieldArray.empty())
912 if (FieldArray.GetSize() <= 0)
913 return FALSE; 861 return FALSE;
914 862
915 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 863 CPDF_FormField* pFormField = FieldArray[0];
916 ASSERT(pFormField != NULL);
917
918 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 864 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
919 return FALSE; 865 return FALSE;
920 866
921 vp << (int32_t)pFormField->GetMaxLen(); 867 vp << (int32_t)pFormField->GetMaxLen();
922 } 868 }
923 return TRUE; 869 return TRUE;
924 } 870 }
925 871
926 void Field::SetCharLimit(CPDFSDK_Document* pDocument, 872 void Field::SetCharLimit(CPDFSDK_Document* pDocument,
927 const CFX_WideString& swFieldName, 873 const CFX_WideString& swFieldName,
(...skipping 13 matching lines...) Expand all
941 887
942 bool bVP; 888 bool bVP;
943 vp >> bVP; 889 vp >> bVP;
944 890
945 if (m_bDelay) { 891 if (m_bDelay) {
946 AddDelay_Bool(FP_COMB, bVP); 892 AddDelay_Bool(FP_COMB, bVP);
947 } else { 893 } else {
948 Field::SetComb(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 894 Field::SetComb(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
949 } 895 }
950 } else { 896 } else {
951 CFX_PtrArray FieldArray; 897 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
952 GetFormFields(m_FieldName, FieldArray); 898 if (FieldArray.empty())
953 if (FieldArray.GetSize() <= 0)
954 return FALSE; 899 return FALSE;
955 900
956 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 901 CPDF_FormField* pFormField = FieldArray[0];
957 ASSERT(pFormField != NULL);
958
959 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 902 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
960 return FALSE; 903 return FALSE;
961 904
962 if (pFormField->GetFieldFlags() & FIELDFLAG_COMB) 905 if (pFormField->GetFieldFlags() & FIELDFLAG_COMB)
963 vp << true; 906 vp << true;
964 else 907 else
965 vp << false; 908 vp << false;
966 } 909 }
967 910
968 return TRUE; 911 return TRUE;
(...skipping 18 matching lines...) Expand all
987 bool bVP; 930 bool bVP;
988 vp >> bVP; 931 vp >> bVP;
989 932
990 if (m_bDelay) { 933 if (m_bDelay) {
991 AddDelay_Bool(FP_COMMITONSELCHANGE, bVP); 934 AddDelay_Bool(FP_COMMITONSELCHANGE, bVP);
992 } else { 935 } else {
993 Field::SetCommitOnSelChange(m_pDocument, m_FieldName, m_nFormControlIndex, 936 Field::SetCommitOnSelChange(m_pDocument, m_FieldName, m_nFormControlIndex,
994 bVP); 937 bVP);
995 } 938 }
996 } else { 939 } else {
997 CFX_PtrArray FieldArray; 940 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
998 GetFormFields(m_FieldName, FieldArray); 941 if (FieldArray.empty())
999 if (FieldArray.GetSize() <= 0)
1000 return FALSE; 942 return FALSE;
1001 943
1002 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 944 CPDF_FormField* pFormField = FieldArray[0];
1003 ASSERT(pFormField != NULL);
1004
1005 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && 945 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
1006 pFormField->GetFieldType() != FIELDTYPE_LISTBOX) 946 pFormField->GetFieldType() != FIELDTYPE_LISTBOX) {
1007 return FALSE; 947 return FALSE;
948 }
1008 949
1009 if (pFormField->GetFieldFlags() & FIELDFLAG_COMMITONSELCHANGE) 950 if (pFormField->GetFieldFlags() & FIELDFLAG_COMMITONSELCHANGE)
1010 vp << true; 951 vp << true;
1011 else 952 else
1012 vp << false; 953 vp << false;
1013 } 954 }
1014 955
1015 return TRUE; 956 return TRUE;
1016 } 957 }
1017 958
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1049 } 990 }
1050 } 991 }
1051 992
1052 if (m_bDelay) { 993 if (m_bDelay) {
1053 AddDelay_WordArray(FP_CURRENTVALUEINDICES, array); 994 AddDelay_WordArray(FP_CURRENTVALUEINDICES, array);
1054 } else { 995 } else {
1055 Field::SetCurrentValueIndices(m_pDocument, m_FieldName, 996 Field::SetCurrentValueIndices(m_pDocument, m_FieldName,
1056 m_nFormControlIndex, array); 997 m_nFormControlIndex, array);
1057 } 998 }
1058 } else { 999 } else {
1059 CFX_PtrArray FieldArray; 1000 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1060 GetFormFields(m_FieldName, FieldArray); 1001 if (FieldArray.empty())
1061 if (FieldArray.GetSize() <= 0)
1062 return FALSE; 1002 return FALSE;
1063 1003
1064 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1004 CPDF_FormField* pFormField = FieldArray[0];
1065 ASSERT(pFormField != NULL); 1005 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
1006 pFormField->GetFieldType() != FIELDTYPE_LISTBOX) {
1007 return FALSE;
1008 }
1066 1009
1067 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && 1010 if (pFormField->CountSelectedItems() == 1) {
1068 pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
1069 return FALSE;
1070
1071 if (pFormField->CountSelectedItems() == 1)
1072 vp << pFormField->GetSelectedIndex(0); 1011 vp << pFormField->GetSelectedIndex(0);
1073 else if (pFormField->CountSelectedItems() > 1) { 1012 } else if (pFormField->CountSelectedItems() > 1) {
1074 CJS_Array SelArray(pRuntime); 1013 CJS_Array SelArray(pRuntime);
1075 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) { 1014 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) {
1076 SelArray.SetElement( 1015 SelArray.SetElement(
1077 i, CJS_Value(pRuntime, pFormField->GetSelectedIndex(i))); 1016 i, CJS_Value(pRuntime, pFormField->GetSelectedIndex(i)));
1078 } 1017 }
1079 vp << SelArray; 1018 vp << SelArray;
1080 } else 1019 } else {
1081 vp << -1; 1020 vp << -1;
1021 }
1082 } 1022 }
1083 1023
1084 return TRUE; 1024 return TRUE;
1085 } 1025 }
1086 1026
1087 void Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument, 1027 void Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument,
1088 const CFX_WideString& swFieldName, 1028 const CFX_WideString& swFieldName,
1089 int nControlIndex, 1029 int nControlIndex,
1090 const CFX_DWordArray& array) { 1030 const CFX_DWordArray& array) {
1091 ASSERT(pDocument != NULL); 1031 ASSERT(pDocument != NULL);
1092 1032
1093 CFX_PtrArray FieldArray; 1033 std::vector<CPDF_FormField*> FieldArray =
1094 GetFormFields(pDocument, swFieldName, FieldArray); 1034 GetFormFields(pDocument, swFieldName);
1095 1035 for (CPDF_FormField* pFormField : FieldArray) {
1096 for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
1097 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1098 ASSERT(pFormField != NULL);
1099
1100 int nFieldType = pFormField->GetFieldType(); 1036 int nFieldType = pFormField->GetFieldType();
1101 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX) { 1037 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX) {
1102 FX_DWORD dwFieldFlags = pFormField->GetFieldFlags(); 1038 FX_DWORD dwFieldFlags = pFormField->GetFieldFlags();
1103 pFormField->ClearSelection(TRUE); 1039 pFormField->ClearSelection(TRUE);
1104 1040
1105 for (int i = 0, sz = array.GetSize(); i < sz; i++) { 1041 for (int i = 0, sz = array.GetSize(); i < sz; i++) {
1106 if (i > 0 && !(dwFieldFlags & (1 << 21))) { 1042 if (i > 0 && !(dwFieldFlags & (1 << 21))) {
1107 break; 1043 break;
1108 } 1044 }
1109 1045
1110 int iSelecting = (int32_t)array.GetAt(i); 1046 int iSelecting = (int32_t)array.GetAt(i);
1111 if (iSelecting < pFormField->CountOptions() && 1047 if (iSelecting < pFormField->CountOptions() &&
1112 !pFormField->IsItemSelected(iSelecting)) 1048 !pFormField->IsItemSelected(iSelecting))
1113 pFormField->SetItemSelection(iSelecting, TRUE); 1049 pFormField->SetItemSelection(iSelecting, TRUE);
1114 } 1050 }
1115 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); 1051 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
1116 } 1052 }
1117 } 1053 }
1118 } 1054 }
1119 1055
1120 FX_BOOL Field::defaultStyle(IJS_Context* cc, 1056 FX_BOOL Field::defaultStyle(IJS_Context* cc,
1121 CJS_PropValue& vp, 1057 CJS_PropValue& vp,
1122 CFX_WideString& sError) { 1058 CFX_WideString& sError) {
1123 // MQG sError = JSGetStringFromID(IDS_STRING_NOTSUPPORT);
1124 return FALSE; 1059 return FALSE;
1125
1126 if (vp.IsSetting()) {
1127 if (!m_bCanSet)
1128 return FALSE;
1129
1130 ;
1131 } else {
1132 ;
1133 }
1134 return TRUE;
1135 } 1060 }
1136 1061
1137 void Field::SetDefaultStyle(CPDFSDK_Document* pDocument, 1062 void Field::SetDefaultStyle(CPDFSDK_Document* pDocument,
1138 const CFX_WideString& swFieldName, 1063 const CFX_WideString& swFieldName,
1139 int nControlIndex) { 1064 int nControlIndex) {
1140 // Not supported. 1065 // Not supported.
1141 } 1066 }
1142 1067
1143 FX_BOOL Field::defaultValue(IJS_Context* cc, 1068 FX_BOOL Field::defaultValue(IJS_Context* cc,
1144 CJS_PropValue& vp, 1069 CJS_PropValue& vp,
1145 CFX_WideString& sError) { 1070 CFX_WideString& sError) {
1146 ASSERT(m_pDocument != NULL); 1071 ASSERT(m_pDocument != NULL);
1147 1072
1148 if (vp.IsSetting()) { 1073 if (vp.IsSetting()) {
1149 if (!m_bCanSet) 1074 if (!m_bCanSet)
1150 return FALSE; 1075 return FALSE;
1151 1076
1152 CFX_WideString WideStr; 1077 CFX_WideString WideStr;
1153 vp >> WideStr; 1078 vp >> WideStr;
1154 1079
1155 if (m_bDelay) { 1080 if (m_bDelay) {
1156 AddDelay_WideString(FP_DEFAULTVALUE, WideStr); 1081 AddDelay_WideString(FP_DEFAULTVALUE, WideStr);
1157 } else { 1082 } else {
1158 Field::SetDefaultValue(m_pDocument, m_FieldName, m_nFormControlIndex, 1083 Field::SetDefaultValue(m_pDocument, m_FieldName, m_nFormControlIndex,
1159 WideStr); 1084 WideStr);
1160 } 1085 }
1161 } else { 1086 } else {
1162 CFX_PtrArray FieldArray; 1087 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1163 GetFormFields(m_FieldName, FieldArray); 1088 if (FieldArray.empty())
1164 if (FieldArray.GetSize() <= 0)
1165 return FALSE; 1089 return FALSE;
1166 1090
1167 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1091 CPDF_FormField* pFormField = FieldArray[0];
1168 ASSERT(pFormField != NULL);
1169
1170 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON || 1092 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON ||
1171 pFormField->GetFieldType() == FIELDTYPE_SIGNATURE) 1093 pFormField->GetFieldType() == FIELDTYPE_SIGNATURE) {
1172 return FALSE; 1094 return FALSE;
1095 }
1173 1096
1174 vp << pFormField->GetDefaultValue(); 1097 vp << pFormField->GetDefaultValue();
1175 } 1098 }
1176 return TRUE; 1099 return TRUE;
1177 } 1100 }
1178 1101
1179 void Field::SetDefaultValue(CPDFSDK_Document* pDocument, 1102 void Field::SetDefaultValue(CPDFSDK_Document* pDocument,
1180 const CFX_WideString& swFieldName, 1103 const CFX_WideString& swFieldName,
1181 int nControlIndex, 1104 int nControlIndex,
1182 const CFX_WideString& string) { 1105 const CFX_WideString& string) {
(...skipping 11 matching lines...) Expand all
1194 1117
1195 bool bVP; 1118 bool bVP;
1196 vp >> bVP; 1119 vp >> bVP;
1197 1120
1198 if (m_bDelay) { 1121 if (m_bDelay) {
1199 AddDelay_Bool(FP_DONOTSCROLL, bVP); 1122 AddDelay_Bool(FP_DONOTSCROLL, bVP);
1200 } else { 1123 } else {
1201 Field::SetDoNotScroll(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 1124 Field::SetDoNotScroll(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1202 } 1125 }
1203 } else { 1126 } else {
1204 CFX_PtrArray FieldArray; 1127 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1205 GetFormFields(m_FieldName, FieldArray); 1128 if (FieldArray.empty())
1206 if (FieldArray.GetSize() <= 0)
1207 return FALSE; 1129 return FALSE;
1208 1130
1209 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1131 CPDF_FormField* pFormField = FieldArray[0];
1210 ASSERT(pFormField != NULL);
1211
1212 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 1132 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
1213 return FALSE; 1133 return FALSE;
1214 1134
1215 if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSCROLL) 1135 if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSCROLL)
1216 vp << true; 1136 vp << true;
1217 else 1137 else
1218 vp << false; 1138 vp << false;
1219 } 1139 }
1220 1140
1221 return TRUE; 1141 return TRUE;
(...skipping 11 matching lines...) Expand all
1233 CFX_WideString& sError) { 1153 CFX_WideString& sError) {
1234 ASSERT(m_pDocument != NULL); 1154 ASSERT(m_pDocument != NULL);
1235 1155
1236 if (vp.IsSetting()) { 1156 if (vp.IsSetting()) {
1237 if (!m_bCanSet) 1157 if (!m_bCanSet)
1238 return FALSE; 1158 return FALSE;
1239 1159
1240 bool bVP; 1160 bool bVP;
1241 vp >> bVP; 1161 vp >> bVP;
1242 } else { 1162 } else {
1243 CFX_PtrArray FieldArray; 1163 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1244 GetFormFields(m_FieldName, FieldArray); 1164 if (FieldArray.empty())
1245 if (FieldArray.GetSize() <= 0)
1246 return FALSE; 1165 return FALSE;
1247 1166
1248 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1167 CPDF_FormField* pFormField = FieldArray[0];
1249 ASSERT(pFormField != NULL);
1250
1251 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD && 1168 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD &&
1252 pFormField->GetFieldType() != FIELDTYPE_COMBOBOX) 1169 pFormField->GetFieldType() != FIELDTYPE_COMBOBOX) {
1253 return FALSE; 1170 return FALSE;
1171 }
1254 1172
1255 if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSPELLCHECK) 1173 if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSPELLCHECK)
1256 vp << true; 1174 vp << true;
1257 else 1175 else
1258 vp << false; 1176 vp << false;
1259 } 1177 }
1260 1178
1261 return TRUE; 1179 return TRUE;
1262 } 1180 }
1263 1181
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1298 1216
1299 int nVP; 1217 int nVP;
1300 vp >> nVP; 1218 vp >> nVP;
1301 1219
1302 if (m_bDelay) { 1220 if (m_bDelay) {
1303 AddDelay_Int(FP_DISPLAY, nVP); 1221 AddDelay_Int(FP_DISPLAY, nVP);
1304 } else { 1222 } else {
1305 Field::SetDisplay(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 1223 Field::SetDisplay(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
1306 } 1224 }
1307 } else { 1225 } else {
1308 CFX_PtrArray FieldArray; 1226 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1309 GetFormFields(m_FieldName, FieldArray); 1227 if (FieldArray.empty())
1310 if (FieldArray.GetSize() <= 0)
1311 return FALSE; 1228 return FALSE;
1312 1229
1313 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1230 CPDF_FormField* pFormField = FieldArray[0];
1314 ASSERT(pFormField != NULL); 1231 ASSERT(pFormField);
1315
1316 CPDFSDK_InterForm* pInterForm = 1232 CPDFSDK_InterForm* pInterForm =
1317 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 1233 (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1318 ASSERT(pInterForm != NULL);
1319
1320 CPDFSDK_Widget* pWidget = 1234 CPDFSDK_Widget* pWidget =
1321 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); 1235 pInterForm->GetWidget(GetSmartFieldControl(pFormField));
1322 if (!pWidget) 1236 if (!pWidget)
1323 return FALSE; 1237 return FALSE;
1324 1238
1325 FX_DWORD dwFlag = pWidget->GetFlags(); 1239 FX_DWORD dwFlag = pWidget->GetFlags();
1326 1240
1327 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) { 1241 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) {
1328 vp << (int32_t)1; 1242 vp << (int32_t)1;
1329 } else { 1243 } else {
(...skipping 14 matching lines...) Expand all
1344 1258
1345 void Field::SetDisplay(CPDFSDK_Document* pDocument, 1259 void Field::SetDisplay(CPDFSDK_Document* pDocument,
1346 const CFX_WideString& swFieldName, 1260 const CFX_WideString& swFieldName,
1347 int nControlIndex, 1261 int nControlIndex,
1348 int number) { 1262 int number) {
1349 ASSERT(pDocument != NULL); 1263 ASSERT(pDocument != NULL);
1350 1264
1351 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 1265 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1352 ASSERT(pInterForm != NULL); 1266 ASSERT(pInterForm != NULL);
1353 1267
1354 CFX_PtrArray FieldArray; 1268 std::vector<CPDF_FormField*> FieldArray =
1355 GetFormFields(pDocument, swFieldName, FieldArray); 1269 GetFormFields(pDocument, swFieldName);
1356 1270 for (CPDF_FormField* pFormField : FieldArray) {
1357 for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
1358 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1359 ASSERT(pFormField != NULL);
1360
1361 if (nControlIndex < 0) { 1271 if (nControlIndex < 0) {
1362 FX_BOOL bSet = FALSE; 1272 FX_BOOL bSet = FALSE;
1363 for (int j = 0, jsz = pFormField->CountControls(); j < jsz; j++) { 1273 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
1364 CPDF_FormControl* pFormControl = pFormField->GetControl(j); 1274 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
1365 ASSERT(pFormControl != NULL); 1275 ASSERT(pFormControl != NULL);
1366 1276
1367 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { 1277 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
1368 FX_DWORD dwFlag = pWidget->GetFlags(); 1278 FX_DWORD dwFlag = pWidget->GetFlags();
1369 switch (number) { 1279 switch (number) {
1370 case 0: 1280 case 0:
1371 dwFlag &= (~ANNOTFLAG_INVISIBLE); 1281 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1372 dwFlag &= (~ANNOTFLAG_HIDDEN); 1282 dwFlag &= (~ANNOTFLAG_HIDDEN);
1373 dwFlag &= (~ANNOTFLAG_NOVIEW); 1283 dwFlag &= (~ANNOTFLAG_NOVIEW);
1374 dwFlag |= ANNOTFLAG_PRINT; 1284 dwFlag |= ANNOTFLAG_PRINT;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1453 CJS_PropValue& vp, 1363 CJS_PropValue& vp,
1454 CFX_WideString& sError) { 1364 CFX_WideString& sError) {
1455 ASSERT(m_pDocument != NULL); 1365 ASSERT(m_pDocument != NULL);
1456 if (vp.IsSetting()) { 1366 if (vp.IsSetting()) {
1457 if (!m_bCanSet) 1367 if (!m_bCanSet)
1458 return FALSE; 1368 return FALSE;
1459 1369
1460 bool bVP; 1370 bool bVP;
1461 vp >> bVP; 1371 vp >> bVP;
1462 } else { 1372 } else {
1463 CFX_PtrArray FieldArray; 1373 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1464 GetFormFields(m_FieldName, FieldArray); 1374 if (FieldArray.empty())
1465 if (FieldArray.GetSize() <= 0)
1466 return FALSE; 1375 return FALSE;
1467 1376
1468 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1377 CPDF_FormField* pFormField = FieldArray[0];
1469 ASSERT(pFormField != NULL);
1470
1471 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX) 1378 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
1472 return FALSE; 1379 return FALSE;
1473 1380
1474 if (pFormField->GetFieldFlags() & FIELDFLAG_EDIT) 1381 if (pFormField->GetFieldFlags() & FIELDFLAG_EDIT)
1475 vp << true; 1382 vp << true;
1476 else 1383 else
1477 vp << false; 1384 vp << false;
1478 } 1385 }
1479 1386
1480 return TRUE; 1387 return TRUE;
1481 } 1388 }
1482 1389
1483 FX_BOOL Field::exportValues(IJS_Context* cc, 1390 FX_BOOL Field::exportValues(IJS_Context* cc,
1484 CJS_PropValue& vp, 1391 CJS_PropValue& vp,
1485 CFX_WideString& sError) { 1392 CFX_WideString& sError) {
1486 CFX_PtrArray FieldArray; 1393 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1487 GetFormFields(m_FieldName, FieldArray); 1394 if (FieldArray.empty())
1488 if (FieldArray.GetSize() <= 0)
1489 return FALSE; 1395 return FALSE;
1490 1396
1491 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1397 CPDF_FormField* pFormField = FieldArray[0];
1492 if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX && 1398 if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX &&
1493 pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON) 1399 pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON) {
1494 return FALSE; 1400 return FALSE;
1401 }
1495 1402
1496 if (vp.IsSetting()) { 1403 if (vp.IsSetting()) {
1497 if (!m_bCanSet) 1404 if (!m_bCanSet)
1498 return FALSE; 1405 return FALSE;
1499 1406
1500 if (!vp.IsArrayObject()) 1407 if (!vp.IsArrayObject())
1501 return FALSE; 1408 return FALSE;
1502 } else { 1409 } else {
1503 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1410 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1504 CJS_Array ExportValusArray(pRuntime); 1411 CJS_Array ExportValusArray(pRuntime);
(...skipping 18 matching lines...) Expand all
1523 vp << ExportValusArray; 1430 vp << ExportValusArray;
1524 } 1431 }
1525 return TRUE; 1432 return TRUE;
1526 } 1433 }
1527 1434
1528 FX_BOOL Field::fileSelect(IJS_Context* cc, 1435 FX_BOOL Field::fileSelect(IJS_Context* cc,
1529 CJS_PropValue& vp, 1436 CJS_PropValue& vp,
1530 CFX_WideString& sError) { 1437 CFX_WideString& sError) {
1531 ASSERT(m_pDocument != NULL); 1438 ASSERT(m_pDocument != NULL);
1532 1439
1533 CFX_PtrArray FieldArray; 1440 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1534 GetFormFields(m_FieldName, FieldArray); 1441 if (FieldArray.empty())
1535 if (FieldArray.GetSize() <= 0)
1536 return FALSE; 1442 return FALSE;
1537 1443
1538 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1444 CPDF_FormField* pFormField = FieldArray[0];
1539 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 1445 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
1540 return FALSE; 1446 return FALSE;
1541 1447
1542 if (vp.IsSetting()) { 1448 if (vp.IsSetting()) {
1543 if (!m_bCanSet) 1449 if (!m_bCanSet)
1544 return FALSE; 1450 return FALSE;
1545 1451
1546 bool bVP; 1452 bool bVP;
1547 vp >> bVP; 1453 vp >> bVP;
1548 } else { 1454 } else {
1549 if (pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) 1455 if (pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT)
1550 vp << true; 1456 vp << true;
1551 else 1457 else
1552 vp << false; 1458 vp << false;
1553 } 1459 }
1554 return TRUE; 1460 return TRUE;
1555 } 1461 }
1556 1462
1557 FX_BOOL Field::fillColor(IJS_Context* cc, 1463 FX_BOOL Field::fillColor(IJS_Context* cc,
1558 CJS_PropValue& vp, 1464 CJS_PropValue& vp,
1559 CFX_WideString& sError) { 1465 CFX_WideString& sError) {
1560 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1466 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1561 CJS_Array crArray(pRuntime); 1467 CJS_Array crArray(pRuntime);
1562 CFX_PtrArray FieldArray; 1468 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1563 GetFormFields(m_FieldName, FieldArray); 1469 if (FieldArray.empty())
1564 if (FieldArray.GetSize() <= 0)
1565 return FALSE; 1470 return FALSE;
1566 1471
1567 if (vp.IsSetting()) { 1472 if (vp.IsSetting()) {
1568 if (!m_bCanSet) 1473 if (!m_bCanSet)
1569 return FALSE; 1474 return FALSE;
1570 1475
1571 if (!vp.IsArrayObject()) 1476 if (!vp.IsArrayObject())
1572 return FALSE; 1477 return FALSE;
1573 1478
1574 vp >> crArray; 1479 vp >> crArray;
1575 1480
1576 CPWL_Color color; 1481 CPWL_Color color;
1577 color::ConvertArrayToPWLColor(crArray, color); 1482 color::ConvertArrayToPWLColor(crArray, color);
1578 if (m_bDelay) { 1483 if (m_bDelay) {
1579 AddDelay_Color(FP_FILLCOLOR, color); 1484 AddDelay_Color(FP_FILLCOLOR, color);
1580 } else { 1485 } else {
1581 Field::SetFillColor(m_pDocument, m_FieldName, m_nFormControlIndex, color); 1486 Field::SetFillColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
1582 } 1487 }
1583 } else { 1488 } else {
1584 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1489 CPDF_FormField* pFormField = FieldArray[0];
1585 ASSERT(pFormField != NULL); 1490 ASSERT(pFormField);
1586
1587 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 1491 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1588 if (!pFormControl) 1492 if (!pFormControl)
1589 return FALSE; 1493 return FALSE;
1590 1494
1591 int iColorType; 1495 int iColorType;
1592 pFormControl->GetBackgroundColor(iColorType); 1496 pFormControl->GetBackgroundColor(iColorType);
1593 1497
1594 CPWL_Color color; 1498 CPWL_Color color;
1595 if (iColorType == COLORTYPE_TRANSPARENT) { 1499 if (iColorType == COLORTYPE_TRANSPARENT) {
1596 color = CPWL_Color(COLORTYPE_TRANSPARENT); 1500 color = CPWL_Color(COLORTYPE_TRANSPARENT);
1597 } else if (iColorType == COLORTYPE_GRAY) { 1501 } else if (iColorType == COLORTYPE_GRAY) {
1598 color = CPWL_Color(COLORTYPE_GRAY, 1502 color = CPWL_Color(COLORTYPE_GRAY,
1599 pFormControl->GetOriginalBackgroundColor(0)); 1503 pFormControl->GetOriginalBackgroundColor(0));
1600 } else if (iColorType == COLORTYPE_RGB) { 1504 } else if (iColorType == COLORTYPE_RGB) {
1601 color = 1505 color =
1602 CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBackgroundColor(0), 1506 CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBackgroundColor(0),
1603 pFormControl->GetOriginalBackgroundColor(1), 1507 pFormControl->GetOriginalBackgroundColor(1),
1604 pFormControl->GetOriginalBackgroundColor(2)); 1508 pFormControl->GetOriginalBackgroundColor(2));
1605 } else if (iColorType == COLORTYPE_CMYK) { 1509 } else if (iColorType == COLORTYPE_CMYK) {
1606 color = CPWL_Color(COLORTYPE_CMYK, 1510 color = CPWL_Color(COLORTYPE_CMYK,
1607 pFormControl->GetOriginalBackgroundColor(0), 1511 pFormControl->GetOriginalBackgroundColor(0),
1608 pFormControl->GetOriginalBackgroundColor(1), 1512 pFormControl->GetOriginalBackgroundColor(1),
1609 pFormControl->GetOriginalBackgroundColor(2), 1513 pFormControl->GetOriginalBackgroundColor(2),
1610 pFormControl->GetOriginalBackgroundColor(3)); 1514 pFormControl->GetOriginalBackgroundColor(3));
1611 } else 1515 } else {
1612 return FALSE; 1516 return FALSE;
1517 }
1613 1518
1614 color::ConvertPWLColorToArray(color, crArray); 1519 color::ConvertPWLColorToArray(color, crArray);
1615 vp << crArray; 1520 vp << crArray;
1616 } 1521 }
1617 1522
1618 return TRUE; 1523 return TRUE;
1619 } 1524 }
1620 1525
1621 void Field::SetFillColor(CPDFSDK_Document* pDocument, 1526 void Field::SetFillColor(CPDFSDK_Document* pDocument,
1622 const CFX_WideString& swFieldName, 1527 const CFX_WideString& swFieldName,
(...skipping 13 matching lines...) Expand all
1636 1541
1637 bool bVP; 1542 bool bVP;
1638 vp >> bVP; 1543 vp >> bVP;
1639 1544
1640 if (m_bDelay) { 1545 if (m_bDelay) {
1641 AddDelay_Bool(FP_HIDDEN, bVP); 1546 AddDelay_Bool(FP_HIDDEN, bVP);
1642 } else { 1547 } else {
1643 Field::SetHidden(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 1548 Field::SetHidden(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1644 } 1549 }
1645 } else { 1550 } else {
1646 CFX_PtrArray FieldArray; 1551 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1647 GetFormFields(m_FieldName, FieldArray); 1552 if (FieldArray.empty())
1648 if (FieldArray.GetSize() <= 0)
1649 return FALSE; 1553 return FALSE;
1650 1554
1651 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1555 CPDF_FormField* pFormField = FieldArray[0];
1652 ASSERT(pFormField != NULL); 1556 ASSERT(pFormField);
1653
1654 CPDFSDK_InterForm* pInterForm = 1557 CPDFSDK_InterForm* pInterForm =
1655 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 1558 (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1656 ASSERT(pInterForm != NULL);
1657
1658 CPDFSDK_Widget* pWidget = 1559 CPDFSDK_Widget* pWidget =
1659 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); 1560 pInterForm->GetWidget(GetSmartFieldControl(pFormField));
1660 if (!pWidget) 1561 if (!pWidget)
1661 return FALSE; 1562 return FALSE;
1662 1563
1663 FX_DWORD dwFlags = pWidget->GetFlags(); 1564 FX_DWORD dwFlags = pWidget->GetFlags();
1664 1565
1665 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) { 1566 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags)
1666 vp << true; 1567 vp << true;
1667 } else 1568 else
1668 vp << false; 1569 vp << false;
1669 } 1570 }
1670 1571
1671 return TRUE; 1572 return TRUE;
1672 } 1573 }
1673 1574
1674 void Field::SetHidden(CPDFSDK_Document* pDocument, 1575 void Field::SetHidden(CPDFSDK_Document* pDocument,
1675 const CFX_WideString& swFieldName, 1576 const CFX_WideString& swFieldName,
1676 int nControlIndex, 1577 int nControlIndex,
1677 bool b) { 1578 bool b) {
1678 ASSERT(pDocument != NULL); 1579 ASSERT(pDocument != NULL);
1679 1580
1680 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 1581 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1681 ASSERT(pInterForm != NULL); 1582 ASSERT(pInterForm != NULL);
1682 1583
1683 CFX_PtrArray FieldArray; 1584 std::vector<CPDF_FormField*> FieldArray =
1684 GetFormFields(pDocument, swFieldName, FieldArray); 1585 GetFormFields(pDocument, swFieldName);
1685 1586 for (CPDF_FormField* pFormField : FieldArray) {
1686 for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
1687 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1688 ASSERT(pFormField != NULL);
1689
1690 if (nControlIndex < 0) { 1587 if (nControlIndex < 0) {
1691 FX_BOOL bSet = FALSE; 1588 FX_BOOL bSet = FALSE;
1692 for (int j = 0, jsz = pFormField->CountControls(); j < jsz; j++) { 1589 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
1693 if (CPDFSDK_Widget* pWidget = 1590 if (CPDFSDK_Widget* pWidget =
1694 pInterForm->GetWidget(pFormField->GetControl(j))) { 1591 pInterForm->GetWidget(pFormField->GetControl(i))) {
1695 FX_DWORD dwFlags = pWidget->GetFlags(); 1592 FX_DWORD dwFlags = pWidget->GetFlags();
1696 1593
1697 if (b) { 1594 if (b) {
1698 dwFlags &= (~ANNOTFLAG_INVISIBLE); 1595 dwFlags &= (~ANNOTFLAG_INVISIBLE);
1699 dwFlags &= (~ANNOTFLAG_NOVIEW); 1596 dwFlags &= (~ANNOTFLAG_NOVIEW);
1700 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); 1597 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1701 } else { 1598 } else {
1702 dwFlags &= (~ANNOTFLAG_INVISIBLE); 1599 dwFlags &= (~ANNOTFLAG_INVISIBLE);
1703 dwFlags &= (~ANNOTFLAG_HIDDEN); 1600 dwFlags &= (~ANNOTFLAG_HIDDEN);
1704 dwFlags &= (~ANNOTFLAG_NOVIEW); 1601 dwFlags &= (~ANNOTFLAG_NOVIEW);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1755 CFX_ByteString strMode; 1652 CFX_ByteString strMode;
1756 vp >> strMode; 1653 vp >> strMode;
1757 1654
1758 if (m_bDelay) { 1655 if (m_bDelay) {
1759 AddDelay_String(FP_HIGHLIGHT, strMode); 1656 AddDelay_String(FP_HIGHLIGHT, strMode);
1760 } else { 1657 } else {
1761 Field::SetHighlight(m_pDocument, m_FieldName, m_nFormControlIndex, 1658 Field::SetHighlight(m_pDocument, m_FieldName, m_nFormControlIndex,
1762 strMode); 1659 strMode);
1763 } 1660 }
1764 } else { 1661 } else {
1765 CFX_PtrArray FieldArray; 1662 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1766 GetFormFields(m_FieldName, FieldArray); 1663 if (FieldArray.empty())
1767 if (FieldArray.GetSize() <= 0)
1768 return FALSE; 1664 return FALSE;
1769 1665
1770 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1666 CPDF_FormField* pFormField = FieldArray[0];
1771 ASSERT(pFormField != NULL);
1772
1773 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 1667 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
1774 return FALSE; 1668 return FALSE;
1775 1669
1776 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 1670 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1777 if (!pFormControl) 1671 if (!pFormControl)
1778 return FALSE; 1672 return FALSE;
1779 1673
1780 int eHM = pFormControl->GetHighlightingMode(); 1674 int eHM = pFormControl->GetHighlightingMode();
1781 switch (eHM) { 1675 switch (eHM) {
1782 case CPDF_FormControl::None: 1676 case CPDF_FormControl::None:
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1819 int iWidth; 1713 int iWidth;
1820 vp >> iWidth; 1714 vp >> iWidth;
1821 1715
1822 if (m_bDelay) { 1716 if (m_bDelay) {
1823 AddDelay_Int(FP_LINEWIDTH, iWidth); 1717 AddDelay_Int(FP_LINEWIDTH, iWidth);
1824 } else { 1718 } else {
1825 Field::SetLineWidth(m_pDocument, m_FieldName, m_nFormControlIndex, 1719 Field::SetLineWidth(m_pDocument, m_FieldName, m_nFormControlIndex,
1826 iWidth); 1720 iWidth);
1827 } 1721 }
1828 } else { 1722 } else {
1829 CFX_PtrArray FieldArray; 1723 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1830 GetFormFields(m_FieldName, FieldArray); 1724 if (FieldArray.empty())
1831 if (FieldArray.GetSize() <= 0)
1832 return FALSE; 1725 return FALSE;
1833 1726
1834 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1727 CPDF_FormField* pFormField = FieldArray[0];
1835 ASSERT(pFormField != NULL); 1728 ASSERT(pFormField);
1836
1837 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 1729 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1838 if (!pFormControl) 1730 if (!pFormControl)
1839 return FALSE; 1731 return FALSE;
1840 1732
1841 CPDFSDK_InterForm* pInterForm = 1733 CPDFSDK_InterForm* pInterForm =
1842 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 1734 (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1843 ASSERT(pInterForm != NULL); 1735 ASSERT(pInterForm != NULL);
1844 1736
1845 if (!pFormField->CountControls()) 1737 if (!pFormField->CountControls())
1846 return FALSE; 1738 return FALSE;
(...skipping 10 matching lines...) Expand all
1857 1749
1858 void Field::SetLineWidth(CPDFSDK_Document* pDocument, 1750 void Field::SetLineWidth(CPDFSDK_Document* pDocument,
1859 const CFX_WideString& swFieldName, 1751 const CFX_WideString& swFieldName,
1860 int nControlIndex, 1752 int nControlIndex,
1861 int number) { 1753 int number) {
1862 ASSERT(pDocument != NULL); 1754 ASSERT(pDocument != NULL);
1863 1755
1864 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 1756 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1865 ASSERT(pInterForm != NULL); 1757 ASSERT(pInterForm != NULL);
1866 1758
1867 CFX_PtrArray FieldArray; 1759 std::vector<CPDF_FormField*> FieldArray =
1868 GetFormFields(pDocument, swFieldName, FieldArray); 1760 GetFormFields(pDocument, swFieldName);
1869 1761 for (CPDF_FormField* pFormField : FieldArray) {
1870 for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
1871 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1872 ASSERT(pFormField != NULL);
1873
1874 if (nControlIndex < 0) { 1762 if (nControlIndex < 0) {
1875 FX_BOOL bSet = FALSE; 1763 FX_BOOL bSet = FALSE;
1876 for (int j = 0, jsz = pFormField->CountControls(); j < jsz; j++) { 1764 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
1877 CPDF_FormControl* pFormControl = pFormField->GetControl(j); 1765 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
1878 ASSERT(pFormControl != NULL); 1766 ASSERT(pFormControl != NULL);
1879 1767
1880 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { 1768 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
1881 if (number != pWidget->GetBorderWidth()) { 1769 if (number != pWidget->GetBorderWidth()) {
1882 pWidget->SetBorderWidth(number); 1770 pWidget->SetBorderWidth(number);
1883 bSet = TRUE; 1771 bSet = TRUE;
1884 } 1772 }
1885 } 1773 }
1886 } 1774 }
1887 if (bSet) 1775 if (bSet)
(...skipping 25 matching lines...) Expand all
1913 1801
1914 bool bVP; 1802 bool bVP;
1915 vp >> bVP; 1803 vp >> bVP;
1916 1804
1917 if (m_bDelay) { 1805 if (m_bDelay) {
1918 AddDelay_Bool(FP_MULTILINE, bVP); 1806 AddDelay_Bool(FP_MULTILINE, bVP);
1919 } else { 1807 } else {
1920 Field::SetMultiline(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 1808 Field::SetMultiline(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1921 } 1809 }
1922 } else { 1810 } else {
1923 CFX_PtrArray FieldArray; 1811 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1924 GetFormFields(m_FieldName, FieldArray); 1812 if (FieldArray.empty())
1925 if (FieldArray.GetSize() <= 0)
1926 return FALSE; 1813 return FALSE;
1927 1814
1928 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1815 CPDF_FormField* pFormField = FieldArray[0];
1929 ASSERT(pFormField != NULL);
1930
1931 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 1816 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
1932 return FALSE; 1817 return FALSE;
1933 1818
1934 if (pFormField->GetFieldFlags() & FIELDFLAG_MULTILINE) 1819 if (pFormField->GetFieldFlags() & FIELDFLAG_MULTILINE)
1935 vp << true; 1820 vp << true;
1936 else 1821 else
1937 vp << false; 1822 vp << false;
1938 } 1823 }
1939 1824
1940 return TRUE; 1825 return TRUE;
(...skipping 18 matching lines...) Expand all
1959 bool bVP; 1844 bool bVP;
1960 vp >> bVP; 1845 vp >> bVP;
1961 1846
1962 if (m_bDelay) { 1847 if (m_bDelay) {
1963 AddDelay_Bool(FP_MULTIPLESELECTION, bVP); 1848 AddDelay_Bool(FP_MULTIPLESELECTION, bVP);
1964 } else { 1849 } else {
1965 Field::SetMultipleSelection(m_pDocument, m_FieldName, m_nFormControlIndex, 1850 Field::SetMultipleSelection(m_pDocument, m_FieldName, m_nFormControlIndex,
1966 bVP); 1851 bVP);
1967 } 1852 }
1968 } else { 1853 } else {
1969 CFX_PtrArray FieldArray; 1854 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1970 GetFormFields(m_FieldName, FieldArray); 1855 if (FieldArray.empty())
1971 if (FieldArray.GetSize() <= 0)
1972 return FALSE; 1856 return FALSE;
1973 1857
1974 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1858 CPDF_FormField* pFormField = FieldArray[0];
1975 ASSERT(pFormField != NULL);
1976
1977 if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX) 1859 if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
1978 return FALSE; 1860 return FALSE;
1979 1861
1980 if (pFormField->GetFieldFlags() & FIELDFLAG_MULTISELECT) 1862 if (pFormField->GetFieldFlags() & FIELDFLAG_MULTISELECT)
1981 vp << true; 1863 vp << true;
1982 else 1864 else
1983 vp << false; 1865 vp << false;
1984 } 1866 }
1985 1867
1986 return TRUE; 1868 return TRUE;
1987 } 1869 }
1988 1870
1989 void Field::SetMultipleSelection(CPDFSDK_Document* pDocument, 1871 void Field::SetMultipleSelection(CPDFSDK_Document* pDocument,
1990 const CFX_WideString& swFieldName, 1872 const CFX_WideString& swFieldName,
1991 int nControlIndex, 1873 int nControlIndex,
1992 bool b) { 1874 bool b) {
1993 // Not supported. 1875 // Not supported.
1994 } 1876 }
1995 1877
1996 FX_BOOL Field::name(IJS_Context* cc, 1878 FX_BOOL Field::name(IJS_Context* cc,
1997 CJS_PropValue& vp, 1879 CJS_PropValue& vp,
1998 CFX_WideString& sError) { 1880 CFX_WideString& sError) {
1999 if (!vp.IsGetting()) 1881 if (!vp.IsGetting())
2000 return FALSE; 1882 return FALSE;
2001 1883
2002 CFX_PtrArray FieldArray; 1884 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2003 GetFormFields(m_FieldName, FieldArray); 1885 if (FieldArray.empty())
2004 if (FieldArray.GetSize() <= 0)
2005 return FALSE; 1886 return FALSE;
2006 1887
2007 vp << m_FieldName; 1888 vp << m_FieldName;
2008 1889
2009 return TRUE; 1890 return TRUE;
2010 } 1891 }
2011 1892
2012 FX_BOOL Field::numItems(IJS_Context* cc, 1893 FX_BOOL Field::numItems(IJS_Context* cc,
2013 CJS_PropValue& vp, 1894 CJS_PropValue& vp,
2014 CFX_WideString& sError) { 1895 CFX_WideString& sError) {
2015 if (!vp.IsGetting()) 1896 if (!vp.IsGetting())
2016 return FALSE; 1897 return FALSE;
2017 1898
2018 CFX_PtrArray FieldArray; 1899 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2019 GetFormFields(m_FieldName, FieldArray); 1900 if (FieldArray.empty())
2020 if (FieldArray.GetSize() <= 0)
2021 return FALSE; 1901 return FALSE;
2022 1902
2023 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1903 CPDF_FormField* pFormField = FieldArray[0];
2024 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && 1904 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
2025 pFormField->GetFieldType() != FIELDTYPE_LISTBOX) 1905 pFormField->GetFieldType() != FIELDTYPE_LISTBOX) {
2026 return FALSE; 1906 return FALSE;
1907 }
2027 1908
2028 vp << (int32_t)pFormField->CountOptions(); 1909 vp << (int32_t)pFormField->CountOptions();
2029 return TRUE; 1910 return TRUE;
2030 } 1911 }
2031 1912
2032 FX_BOOL Field::page(IJS_Context* cc, 1913 FX_BOOL Field::page(IJS_Context* cc,
2033 CJS_PropValue& vp, 1914 CJS_PropValue& vp,
2034 CFX_WideString& sError) { 1915 CFX_WideString& sError) {
2035 if (!vp.IsGetting()) 1916 if (!vp.IsGetting())
2036 return FALSE; 1917 return FALSE;
2037 1918
2038 CFX_PtrArray FieldArray; 1919 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2039 GetFormFields(m_FieldName, FieldArray); 1920 if (FieldArray.empty())
2040 if (FieldArray.GetSize() <= 0)
2041 return FALSE; 1921 return FALSE;
2042 1922
2043 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1923 CPDF_FormField* pFormField = FieldArray[0];
2044 if (!pFormField) 1924 if (!pFormField)
2045 return FALSE; 1925 return FALSE;
2046 1926
2047 CFX_PtrArray widgetArray; 1927 std::vector<CPDFSDK_Widget*> widgets;
2048 CPDFSDK_InterForm* pInterForm = 1928 m_pDocument->GetInterForm()->GetWidgets(pFormField, &widgets);
2049 (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2050 pInterForm->GetWidgets(pFormField, widgetArray);
2051 1929
2052 if (widgetArray.GetSize() > 0) { 1930 if (widgets.empty()) {
1931 vp << (int32_t)-1;
1932 } else {
Tom Sepez 2015/11/09 21:25:32 nit: else considered harmful? Maybe return TRUE.
Lei Zhang 2015/11/09 22:45:28 Done.
2053 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1933 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
2054 CJS_Array PageArray(pRuntime); 1934 CJS_Array PageArray(pRuntime);
2055 for (int i = 0, sz = widgetArray.GetSize(); i < sz; i++) { 1935 for (size_t i = 0; i < widgets.size(); ++i) {
2056 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgetArray.GetAt(i); 1936 CPDFSDK_PageView* pPageView = widgets[i]->GetPageView();
2057 CPDFSDK_PageView* pPageView = pWidget->GetPageView();
2058 if (!pPageView) 1937 if (!pPageView)
2059 return FALSE; 1938 return FALSE;
2060 1939
2061 PageArray.SetElement( 1940 PageArray.SetElement(
2062 i, CJS_Value(pRuntime, (int32_t)pPageView->GetPageIndex())); 1941 i, CJS_Value(pRuntime, (int32_t)pPageView->GetPageIndex()));
2063 } 1942 }
2064 1943
2065 vp << PageArray; 1944 vp << PageArray;
2066 } else {
2067 vp << (int32_t)-1;
2068 } 1945 }
2069 1946
2070 return TRUE; 1947 return TRUE;
2071 } 1948 }
2072 1949
2073 FX_BOOL Field::password(IJS_Context* cc, 1950 FX_BOOL Field::password(IJS_Context* cc,
2074 CJS_PropValue& vp, 1951 CJS_PropValue& vp,
2075 CFX_WideString& sError) { 1952 CFX_WideString& sError) {
2076 ASSERT(m_pDocument != NULL); 1953 ASSERT(m_pDocument != NULL);
2077 1954
2078 if (vp.IsSetting()) { 1955 if (vp.IsSetting()) {
2079 if (!m_bCanSet) 1956 if (!m_bCanSet)
2080 return FALSE; 1957 return FALSE;
2081 1958
2082 bool bVP; 1959 bool bVP;
2083 vp >> bVP; 1960 vp >> bVP;
2084 1961
2085 if (m_bDelay) { 1962 if (m_bDelay) {
2086 AddDelay_Bool(FP_PASSWORD, bVP); 1963 AddDelay_Bool(FP_PASSWORD, bVP);
2087 } else { 1964 } else {
2088 Field::SetPassword(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 1965 Field::SetPassword(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2089 } 1966 }
2090 } else { 1967 } else {
2091 CFX_PtrArray FieldArray; 1968 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2092 GetFormFields(m_FieldName, FieldArray); 1969 if (FieldArray.empty())
2093 if (FieldArray.GetSize() <= 0)
2094 return FALSE; 1970 return FALSE;
2095 1971
2096 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1972 CPDF_FormField* pFormField = FieldArray[0];
2097 ASSERT(pFormField != NULL);
2098
2099 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 1973 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2100 return FALSE; 1974 return FALSE;
2101 1975
2102 if (pFormField->GetFieldFlags() & FIELDFLAG_PASSWORD) 1976 if (pFormField->GetFieldFlags() & FIELDFLAG_PASSWORD)
2103 vp << true; 1977 vp << true;
2104 else 1978 else
2105 vp << false; 1979 vp << false;
2106 } 1980 }
2107 1981
2108 return TRUE; 1982 return TRUE;
2109 } 1983 }
2110 1984
2111 void Field::SetPassword(CPDFSDK_Document* pDocument, 1985 void Field::SetPassword(CPDFSDK_Document* pDocument,
2112 const CFX_WideString& swFieldName, 1986 const CFX_WideString& swFieldName,
2113 int nControlIndex, 1987 int nControlIndex,
2114 bool b) { 1988 bool b) {
2115 // Not supported. 1989 // Not supported.
2116 } 1990 }
2117 1991
2118 FX_BOOL Field::print(IJS_Context* cc, 1992 FX_BOOL Field::print(IJS_Context* cc,
2119 CJS_PropValue& vp, 1993 CJS_PropValue& vp,
2120 CFX_WideString& sError) { 1994 CFX_WideString& sError) {
2121 ASSERT(m_pDocument != NULL); 1995 ASSERT(m_pDocument != NULL);
2122 1996
2123 CPDFSDK_InterForm* pInterForm = 1997 CPDFSDK_InterForm* pInterForm =
2124 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 1998 (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2125 ASSERT(pInterForm != NULL); 1999 ASSERT(pInterForm != NULL);
2126 2000
2127 CFX_PtrArray FieldArray; 2001 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2128 GetFormFields(m_FieldName, FieldArray); 2002 if (FieldArray.empty())
2129 if (FieldArray.GetSize() <= 0)
2130 return FALSE; 2003 return FALSE;
2131 2004
2132 if (vp.IsSetting()) { 2005 if (vp.IsSetting()) {
2133 if (!m_bCanSet) 2006 if (!m_bCanSet)
2134 return FALSE; 2007 return FALSE;
2135 2008
2136 bool bVP; 2009 bool bVP;
2137 vp >> bVP; 2010 vp >> bVP;
2138 2011
2139 for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) { 2012 for (CPDF_FormField* pFormField : FieldArray) {
2140 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
2141 ASSERT(pFormField != NULL);
2142
2143 if (m_nFormControlIndex < 0) { 2013 if (m_nFormControlIndex < 0) {
2144 FX_BOOL bSet = FALSE; 2014 FX_BOOL bSet = FALSE;
2145 for (int j = 0, jsz = pFormField->CountControls(); j < jsz; j++) { 2015 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
2146 if (CPDFSDK_Widget* pWidget = 2016 if (CPDFSDK_Widget* pWidget =
2147 pInterForm->GetWidget(pFormField->GetControl(j))) { 2017 pInterForm->GetWidget(pFormField->GetControl(i))) {
2148 FX_DWORD dwFlags = pWidget->GetFlags(); 2018 FX_DWORD dwFlags = pWidget->GetFlags();
2149 if (bVP) 2019 if (bVP)
2150 dwFlags |= ANNOTFLAG_PRINT; 2020 dwFlags |= ANNOTFLAG_PRINT;
2151 else 2021 else
2152 dwFlags &= ~ANNOTFLAG_PRINT; 2022 dwFlags &= ~ANNOTFLAG_PRINT;
2153 2023
2154 if (dwFlags != pWidget->GetFlags()) { 2024 if (dwFlags != pWidget->GetFlags()) {
2155 pWidget->SetFlags(dwFlags); 2025 pWidget->SetFlags(dwFlags);
2156 bSet = TRUE; 2026 bSet = TRUE;
2157 } 2027 }
(...skipping 18 matching lines...) Expand all
2176 pWidget->SetFlags(dwFlags); 2046 pWidget->SetFlags(dwFlags);
2177 UpdateFormControl(m_pDocument, 2047 UpdateFormControl(m_pDocument,
2178 pFormField->GetControl(m_nFormControlIndex), 2048 pFormField->GetControl(m_nFormControlIndex),
2179 TRUE, FALSE, TRUE); 2049 TRUE, FALSE, TRUE);
2180 } 2050 }
2181 } 2051 }
2182 } 2052 }
2183 } 2053 }
2184 } 2054 }
2185 } else { 2055 } else {
2186 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2056 CPDF_FormField* pFormField = FieldArray[0];
2187 ASSERT(pFormField != NULL);
2188
2189 CPDFSDK_Widget* pWidget = 2057 CPDFSDK_Widget* pWidget =
2190 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); 2058 pInterForm->GetWidget(GetSmartFieldControl(pFormField));
2191 if (!pWidget) 2059 if (!pWidget)
2192 return FALSE; 2060 return FALSE;
2193 2061
2194 if (pWidget->GetFlags() & ANNOTFLAG_PRINT) 2062 if (pWidget->GetFlags() & ANNOTFLAG_PRINT)
2195 vp << true; 2063 vp << true;
2196 else 2064 else
2197 vp << false; 2065 vp << false;
2198 } 2066 }
2199 2067
2200 return TRUE; 2068 return TRUE;
2201 } 2069 }
2202 2070
2203 FX_BOOL Field::radiosInUnison(IJS_Context* cc, 2071 FX_BOOL Field::radiosInUnison(IJS_Context* cc,
2204 CJS_PropValue& vp, 2072 CJS_PropValue& vp,
2205 CFX_WideString& sError) { 2073 CFX_WideString& sError) {
2206 ASSERT(m_pDocument != NULL); 2074 ASSERT(m_pDocument != NULL);
2207 2075
2208 CFX_PtrArray FieldArray; 2076 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2209 GetFormFields(m_FieldName, FieldArray); 2077 if (FieldArray.empty())
2210 if (FieldArray.GetSize() <= 0)
2211 return FALSE; 2078 return FALSE;
2212 2079
2213 if (vp.IsSetting()) { 2080 if (vp.IsSetting()) {
2214 if (!m_bCanSet) 2081 if (!m_bCanSet)
2215 return FALSE; 2082 return FALSE;
2216 2083
2217 bool bVP; 2084 bool bVP;
2218 vp >> bVP; 2085 vp >> bVP;
2219 2086
2220 } else { 2087 } else {
2221 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2088 CPDF_FormField* pFormField = FieldArray[0];
2222 ASSERT(pFormField != NULL);
2223
2224 if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON) 2089 if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
2225 return FALSE; 2090 return FALSE;
2226 2091
2227 if (pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON) 2092 if (pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON)
2228 vp << true; 2093 vp << true;
2229 else 2094 else
2230 vp << false; 2095 vp << false;
2231 } 2096 }
2232 2097
2233 return TRUE; 2098 return TRUE;
2234 } 2099 }
2235 2100
2236 FX_BOOL Field::readonly(IJS_Context* cc, 2101 FX_BOOL Field::readonly(IJS_Context* cc,
2237 CJS_PropValue& vp, 2102 CJS_PropValue& vp,
2238 CFX_WideString& sError) { 2103 CFX_WideString& sError) {
2239 ASSERT(m_pDocument != NULL); 2104 ASSERT(m_pDocument != NULL);
2240 2105
2241 CFX_PtrArray FieldArray; 2106 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2242 GetFormFields(m_FieldName, FieldArray); 2107 if (FieldArray.empty())
2243 if (FieldArray.GetSize() <= 0)
2244 return FALSE; 2108 return FALSE;
2245 2109
2246 if (vp.IsSetting()) { 2110 if (vp.IsSetting()) {
2247 if (!m_bCanSet) 2111 if (!m_bCanSet)
2248 return FALSE; 2112 return FALSE;
2249 2113
2250 bool bVP; 2114 bool bVP;
2251 vp >> bVP; 2115 vp >> bVP;
2252 2116
2253 } else { 2117 } else {
2254 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2118 CPDF_FormField* pFormField = FieldArray[0];
2255 ASSERT(pFormField != NULL);
2256
2257 if (pFormField->GetFieldFlags() & FIELDFLAG_READONLY) 2119 if (pFormField->GetFieldFlags() & FIELDFLAG_READONLY)
2258 vp << true; 2120 vp << true;
2259 else 2121 else
2260 vp << false; 2122 vp << false;
2261 } 2123 }
2262 2124
2263 return TRUE; 2125 return TRUE;
2264 } 2126 }
2265 2127
2266 FX_BOOL Field::rect(IJS_Context* cc, 2128 FX_BOOL Field::rect(IJS_Context* cc,
(...skipping 24 matching lines...) Expand all
2291 pArray[2] = (FX_FLOAT)Lower_Rightx.ToInt(); 2153 pArray[2] = (FX_FLOAT)Lower_Rightx.ToInt();
2292 pArray[3] = (FX_FLOAT)Upper_Lefty.ToInt(); 2154 pArray[3] = (FX_FLOAT)Upper_Lefty.ToInt();
2293 2155
2294 CPDF_Rect crRect(pArray); 2156 CPDF_Rect crRect(pArray);
2295 if (m_bDelay) { 2157 if (m_bDelay) {
2296 AddDelay_Rect(FP_RECT, crRect); 2158 AddDelay_Rect(FP_RECT, crRect);
2297 } else { 2159 } else {
2298 Field::SetRect(m_pDocument, m_FieldName, m_nFormControlIndex, crRect); 2160 Field::SetRect(m_pDocument, m_FieldName, m_nFormControlIndex, crRect);
2299 } 2161 }
2300 } else { 2162 } else {
2301 CFX_PtrArray FieldArray; 2163 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2302 GetFormFields(m_FieldName, FieldArray); 2164 if (FieldArray.empty())
2303 if (FieldArray.GetSize() <= 0)
2304 return FALSE; 2165 return FALSE;
2305 2166
2306 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2167 CPDF_FormField* pFormField = FieldArray[0];
2307 CPDFSDK_InterForm* pInterForm = 2168 CPDFSDK_InterForm* pInterForm =
2308 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 2169 (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2309 CPDFSDK_Widget* pWidget = 2170 CPDFSDK_Widget* pWidget =
2310 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); 2171 pInterForm->GetWidget(GetSmartFieldControl(pFormField));
2311 if (!pWidget) 2172 if (!pWidget)
2312 return FALSE; 2173 return FALSE;
2313 2174
2314 CFX_FloatRect crRect = pWidget->GetRect(); 2175 CFX_FloatRect crRect = pWidget->GetRect();
2315 Upper_Leftx = (int32_t)crRect.left; 2176 Upper_Leftx = (int32_t)crRect.left;
2316 Upper_Lefty = (int32_t)crRect.top; 2177 Upper_Lefty = (int32_t)crRect.top;
(...skipping 12 matching lines...) Expand all
2329 2190
2330 void Field::SetRect(CPDFSDK_Document* pDocument, 2191 void Field::SetRect(CPDFSDK_Document* pDocument,
2331 const CFX_WideString& swFieldName, 2192 const CFX_WideString& swFieldName,
2332 int nControlIndex, 2193 int nControlIndex,
2333 const CPDF_Rect& rect) { 2194 const CPDF_Rect& rect) {
2334 ASSERT(pDocument != NULL); 2195 ASSERT(pDocument != NULL);
2335 2196
2336 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 2197 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
2337 ASSERT(pInterForm != NULL); 2198 ASSERT(pInterForm != NULL);
2338 2199
2339 CFX_PtrArray FieldArray; 2200 std::vector<CPDF_FormField*> FieldArray =
2340 GetFormFields(pDocument, swFieldName, FieldArray); 2201 GetFormFields(pDocument, swFieldName);
2341 2202 for (CPDF_FormField* pFormField : FieldArray) {
2342 for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
2343 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
2344 ASSERT(pFormField != NULL);
2345
2346 if (nControlIndex < 0) { 2203 if (nControlIndex < 0) {
2347 FX_BOOL bSet = FALSE; 2204 FX_BOOL bSet = FALSE;
2348 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) { 2205 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
2349 CPDF_FormControl* pFormControl = pFormField->GetControl(i); 2206 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
2350 ASSERT(pFormControl != NULL); 2207 ASSERT(pFormControl != NULL);
2351 2208
2352 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { 2209 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
2353 CPDF_Rect crRect = rect; 2210 CPDF_Rect crRect = rect;
2354 2211
2355 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); 2212 CPDF_Page* pPDFPage = pWidget->GetPDFPage();
2356 ASSERT(pPDFPage != NULL);
2357
2358 // CPDF_Page* pPDFPage = pPage->GetPage();
2359 // ASSERT(pPDFPage != NULL);
2360
2361 crRect.Intersect(pPDFPage->GetPageBBox()); 2213 crRect.Intersect(pPDFPage->GetPageBBox());
2362 2214
2363 if (!crRect.IsEmpty()) { 2215 if (!crRect.IsEmpty()) {
2364 CPDF_Rect rcOld = pWidget->GetRect(); 2216 CPDF_Rect rcOld = pWidget->GetRect();
2365 if (crRect.left != rcOld.left || crRect.right != rcOld.right || 2217 if (crRect.left != rcOld.left || crRect.right != rcOld.right ||
2366 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) { 2218 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) {
2367 pWidget->SetRect(crRect); 2219 pWidget->SetRect(crRect);
2368 bSet = TRUE; 2220 bSet = TRUE;
2369 } 2221 }
2370 } 2222 }
(...skipping 30 matching lines...) Expand all
2401 } 2253 }
2402 } 2254 }
2403 } 2255 }
2404 } 2256 }
2405 2257
2406 FX_BOOL Field::required(IJS_Context* cc, 2258 FX_BOOL Field::required(IJS_Context* cc,
2407 CJS_PropValue& vp, 2259 CJS_PropValue& vp,
2408 CFX_WideString& sError) { 2260 CFX_WideString& sError) {
2409 ASSERT(m_pDocument != NULL); 2261 ASSERT(m_pDocument != NULL);
2410 2262
2411 CFX_PtrArray FieldArray; 2263 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2412 GetFormFields(m_FieldName, FieldArray); 2264 if (FieldArray.empty())
2413 if (FieldArray.GetSize() <= 0)
2414 return FALSE; 2265 return FALSE;
2415 2266
2416 if (vp.IsSetting()) { 2267 if (vp.IsSetting()) {
2417 if (!m_bCanSet) 2268 if (!m_bCanSet)
2418 return FALSE; 2269 return FALSE;
2419 2270
2420 bool bVP; 2271 bool bVP;
2421 vp >> bVP; 2272 vp >> bVP;
2422 2273
2423 } else { 2274 } else {
2424 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2275 CPDF_FormField* pFormField = FieldArray[0];
2425 ASSERT(pFormField != NULL);
2426
2427 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON) 2276 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
2428 return FALSE; 2277 return FALSE;
2429 2278
2430 if (pFormField->GetFieldFlags() & FIELDFLAG_REQUIRED) 2279 if (pFormField->GetFieldFlags() & FIELDFLAG_REQUIRED)
2431 vp << true; 2280 vp << true;
2432 else 2281 else
2433 vp << false; 2282 vp << false;
2434 } 2283 }
2435 2284
2436 return TRUE; 2285 return TRUE;
(...skipping 10 matching lines...) Expand all
2447 2296
2448 bool bVP; 2297 bool bVP;
2449 vp >> bVP; 2298 vp >> bVP;
2450 2299
2451 if (m_bDelay) { 2300 if (m_bDelay) {
2452 AddDelay_Bool(FP_RICHTEXT, bVP); 2301 AddDelay_Bool(FP_RICHTEXT, bVP);
2453 } else { 2302 } else {
2454 Field::SetRichText(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 2303 Field::SetRichText(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2455 } 2304 }
2456 } else { 2305 } else {
2457 CFX_PtrArray FieldArray; 2306 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2458 GetFormFields(m_FieldName, FieldArray); 2307 if (FieldArray.empty())
2459 if (FieldArray.GetSize() <= 0)
2460 return FALSE; 2308 return FALSE;
2461 2309
2462 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2310 CPDF_FormField* pFormField = FieldArray[0];
2463 ASSERT(pFormField != NULL);
2464
2465 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 2311 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2466 return FALSE; 2312 return FALSE;
2467 2313
2468 if (pFormField->GetFieldFlags() & FIELDFLAG_RICHTEXT) 2314 if (pFormField->GetFieldFlags() & FIELDFLAG_RICHTEXT)
2469 vp << true; 2315 vp << true;
2470 else 2316 else
2471 vp << false; 2317 vp << false;
2472 } 2318 }
2473 2319
2474 return TRUE; 2320 return TRUE;
2475 } 2321 }
2476 2322
2477 void Field::SetRichText(CPDFSDK_Document* pDocument, 2323 void Field::SetRichText(CPDFSDK_Document* pDocument,
2478 const CFX_WideString& swFieldName, 2324 const CFX_WideString& swFieldName,
2479 int nControlIndex, 2325 int nControlIndex,
2480 bool b) { 2326 bool b) {
2481 // Not supported. 2327 // Not supported.
2482 } 2328 }
2483 2329
2484 FX_BOOL Field::richValue(IJS_Context* cc, 2330 FX_BOOL Field::richValue(IJS_Context* cc,
2485 CJS_PropValue& vp, 2331 CJS_PropValue& vp,
2486 CFX_WideString& sError) { 2332 CFX_WideString& sError) {
2487 return TRUE; 2333 return TRUE;
2488 if (vp.IsSetting()) {
2489 if (!m_bCanSet)
2490 return FALSE;
2491 ;
2492 } else {
2493 ;
2494 }
2495 return TRUE;
2496 } 2334 }
2497 2335
2498 void Field::SetRichValue(CPDFSDK_Document* pDocument, 2336 void Field::SetRichValue(CPDFSDK_Document* pDocument,
2499 const CFX_WideString& swFieldName, 2337 const CFX_WideString& swFieldName,
2500 int nControlIndex) { 2338 int nControlIndex) {
2501 // Not supported. 2339 // Not supported.
2502 } 2340 }
2503 2341
2504 FX_BOOL Field::rotation(IJS_Context* cc, 2342 FX_BOOL Field::rotation(IJS_Context* cc,
2505 CJS_PropValue& vp, 2343 CJS_PropValue& vp,
2506 CFX_WideString& sError) { 2344 CFX_WideString& sError) {
2507 ASSERT(m_pDocument != NULL); 2345 ASSERT(m_pDocument != NULL);
2508 2346
2509 if (vp.IsSetting()) { 2347 if (vp.IsSetting()) {
2510 if (!m_bCanSet) 2348 if (!m_bCanSet)
2511 return FALSE; 2349 return FALSE;
2512 2350
2513 int nVP; 2351 int nVP;
2514 vp >> nVP; 2352 vp >> nVP;
2515 2353
2516 if (m_bDelay) { 2354 if (m_bDelay) {
2517 AddDelay_Int(FP_ROTATION, nVP); 2355 AddDelay_Int(FP_ROTATION, nVP);
2518 } else { 2356 } else {
2519 Field::SetRotation(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 2357 Field::SetRotation(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
2520 } 2358 }
2521 } else { 2359 } else {
2522 CFX_PtrArray FieldArray; 2360 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2523 GetFormFields(m_FieldName, FieldArray); 2361 if (FieldArray.empty())
2524 if (FieldArray.GetSize() <= 0)
2525 return FALSE; 2362 return FALSE;
2526 2363
2527 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2364 CPDF_FormField* pFormField = FieldArray[0];
2528 ASSERT(pFormField != NULL);
2529
2530 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2365 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2531 if (!pFormControl) 2366 if (!pFormControl)
2532 return FALSE; 2367 return FALSE;
2533 2368
2534 vp << (int32_t)pFormControl->GetRotation(); 2369 vp << (int32_t)pFormControl->GetRotation();
2535 } 2370 }
2536 2371
2537 return TRUE; 2372 return TRUE;
2538 } 2373 }
2539 2374
(...skipping 22 matching lines...) Expand all
2562 CPWL_Color color; 2397 CPWL_Color color;
2563 color::ConvertArrayToPWLColor(crArray, color); 2398 color::ConvertArrayToPWLColor(crArray, color);
2564 2399
2565 if (m_bDelay) { 2400 if (m_bDelay) {
2566 AddDelay_Color(FP_STROKECOLOR, color); 2401 AddDelay_Color(FP_STROKECOLOR, color);
2567 } else { 2402 } else {
2568 Field::SetStrokeColor(m_pDocument, m_FieldName, m_nFormControlIndex, 2403 Field::SetStrokeColor(m_pDocument, m_FieldName, m_nFormControlIndex,
2569 color); 2404 color);
2570 } 2405 }
2571 } else { 2406 } else {
2572 CFX_PtrArray FieldArray; 2407 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2573 GetFormFields(m_FieldName, FieldArray); 2408 if (FieldArray.empty())
2574 if (FieldArray.GetSize() <= 0)
2575 return FALSE; 2409 return FALSE;
2576 2410
2577 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2411 CPDF_FormField* pFormField = FieldArray[0];
2578 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2412 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2579 if (!pFormControl) 2413 if (!pFormControl)
2580 return FALSE; 2414 return FALSE;
2581 2415
2582 int iColorType; 2416 int iColorType;
2583 pFormControl->GetBorderColor(iColorType); 2417 pFormControl->GetBorderColor(iColorType);
2584 2418
2585 CPWL_Color color; 2419 CPWL_Color color;
2586 if (iColorType == COLORTYPE_TRANSPARENT) { 2420 if (iColorType == COLORTYPE_TRANSPARENT) {
2587 color = CPWL_Color(COLORTYPE_TRANSPARENT); 2421 color = CPWL_Color(COLORTYPE_TRANSPARENT);
2588 } else if (iColorType == COLORTYPE_GRAY) { 2422 } else if (iColorType == COLORTYPE_GRAY) {
2589 color = 2423 color =
2590 CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBorderColor(0)); 2424 CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBorderColor(0));
2591 } else if (iColorType == COLORTYPE_RGB) { 2425 } else if (iColorType == COLORTYPE_RGB) {
2592 color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBorderColor(0), 2426 color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBorderColor(0),
2593 pFormControl->GetOriginalBorderColor(1), 2427 pFormControl->GetOriginalBorderColor(1),
2594 pFormControl->GetOriginalBorderColor(2)); 2428 pFormControl->GetOriginalBorderColor(2));
2595 } else if (iColorType == COLORTYPE_CMYK) { 2429 } else if (iColorType == COLORTYPE_CMYK) {
2596 color = 2430 color =
2597 CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBorderColor(0), 2431 CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBorderColor(0),
2598 pFormControl->GetOriginalBorderColor(1), 2432 pFormControl->GetOriginalBorderColor(1),
2599 pFormControl->GetOriginalBorderColor(2), 2433 pFormControl->GetOriginalBorderColor(2),
2600 pFormControl->GetOriginalBorderColor(3)); 2434 pFormControl->GetOriginalBorderColor(3));
2601 } else 2435 } else {
2602 return FALSE; 2436 return FALSE;
2437 }
2603 2438
2604 color::ConvertPWLColorToArray(color, crArray); 2439 color::ConvertPWLColorToArray(color, crArray);
2605 vp << crArray; 2440 vp << crArray;
2606 } 2441 }
2607 return TRUE; 2442 return TRUE;
2608 } 2443 }
2609 2444
2610 void Field::SetStrokeColor(CPDFSDK_Document* pDocument, 2445 void Field::SetStrokeColor(CPDFSDK_Document* pDocument,
2611 const CFX_WideString& swFieldName, 2446 const CFX_WideString& swFieldName,
2612 int nControlIndex, 2447 int nControlIndex,
(...skipping 13 matching lines...) Expand all
2626 CFX_ByteString csBCaption; 2461 CFX_ByteString csBCaption;
2627 vp >> csBCaption; 2462 vp >> csBCaption;
2628 2463
2629 if (m_bDelay) { 2464 if (m_bDelay) {
2630 AddDelay_String(FP_STYLE, csBCaption); 2465 AddDelay_String(FP_STYLE, csBCaption);
2631 } else { 2466 } else {
2632 Field::SetStyle(m_pDocument, m_FieldName, m_nFormControlIndex, 2467 Field::SetStyle(m_pDocument, m_FieldName, m_nFormControlIndex,
2633 csBCaption); 2468 csBCaption);
2634 } 2469 }
2635 } else { 2470 } else {
2636 CFX_PtrArray FieldArray; 2471 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2637 GetFormFields(m_FieldName, FieldArray); 2472 if (FieldArray.empty())
2638 if (FieldArray.GetSize() <= 0)
2639 return FALSE; 2473 return FALSE;
2640 2474
2641 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2475 CPDF_FormField* pFormField = FieldArray[0];
2642 ASSERT(pFormField != NULL);
2643
2644 if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON && 2476 if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON &&
2645 pFormField->GetFieldType() != FIELDTYPE_CHECKBOX) 2477 pFormField->GetFieldType() != FIELDTYPE_CHECKBOX) {
2646 return FALSE; 2478 return FALSE;
2479 }
2647 2480
2648 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2481 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2649 if (!pFormControl) 2482 if (!pFormControl)
2650 return FALSE; 2483 return FALSE;
2651 2484
2652 CFX_WideString csWCaption = pFormControl->GetNormalCaption(); 2485 CFX_WideString csWCaption = pFormControl->GetNormalCaption();
2653 CFX_ByteString csBCaption; 2486 CFX_ByteString csBCaption;
2654 2487
2655 switch (csWCaption[0]) { 2488 switch (csWCaption[0]) {
2656 case L'l': 2489 case L'l':
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
2708 2541
2709 CPWL_Color color; 2542 CPWL_Color color;
2710 color::ConvertArrayToPWLColor(crArray, color); 2543 color::ConvertArrayToPWLColor(crArray, color);
2711 2544
2712 if (m_bDelay) { 2545 if (m_bDelay) {
2713 AddDelay_Color(FP_TEXTCOLOR, color); 2546 AddDelay_Color(FP_TEXTCOLOR, color);
2714 } else { 2547 } else {
2715 Field::SetTextColor(m_pDocument, m_FieldName, m_nFormControlIndex, color); 2548 Field::SetTextColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
2716 } 2549 }
2717 } else { 2550 } else {
2718 CFX_PtrArray FieldArray; 2551 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2719 GetFormFields(m_FieldName, FieldArray); 2552 if (FieldArray.empty())
2720 if (FieldArray.GetSize() <= 0)
2721 return FALSE; 2553 return FALSE;
2722 2554
2723 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2555 CPDF_FormField* pFormField = FieldArray[0];
2724 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2556 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2725 if (!pFormControl) 2557 if (!pFormControl)
2726 return FALSE; 2558 return FALSE;
2727 2559
2728 int iColorType; 2560 int iColorType;
2729 FX_ARGB color; 2561 FX_ARGB color;
2730 CPDF_DefaultAppearance FieldAppearance = 2562 CPDF_DefaultAppearance FieldAppearance =
2731 pFormControl->GetDefaultAppearance(); 2563 pFormControl->GetDefaultAppearance();
2732 FieldAppearance.GetColor(color, iColorType); 2564 FieldAppearance.GetColor(color, iColorType);
2733 int32_t a, r, g, b; 2565 int32_t a, r, g, b;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2766 if (csFontName.IsEmpty()) 2598 if (csFontName.IsEmpty())
2767 return FALSE; 2599 return FALSE;
2768 2600
2769 if (m_bDelay) { 2601 if (m_bDelay) {
2770 AddDelay_String(FP_TEXTFONT, csFontName); 2602 AddDelay_String(FP_TEXTFONT, csFontName);
2771 } else { 2603 } else {
2772 Field::SetTextFont(m_pDocument, m_FieldName, m_nFormControlIndex, 2604 Field::SetTextFont(m_pDocument, m_FieldName, m_nFormControlIndex,
2773 csFontName); 2605 csFontName);
2774 } 2606 }
2775 } else { 2607 } else {
2776 CFX_PtrArray FieldArray; 2608 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2777 GetFormFields(m_FieldName, FieldArray); 2609 if (FieldArray.empty())
2778 if (FieldArray.GetSize() <= 0)
2779 return FALSE; 2610 return FALSE;
2780 2611
2781 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2612 CPDF_FormField* pFormField = FieldArray[0];
2782 ASSERT(pFormField != NULL); 2613 ASSERT(pFormField);
2783
2784 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2614 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2785 if (!pFormControl) 2615 if (!pFormControl)
2786 return FALSE; 2616 return FALSE;
2787 2617
2788 int nFieldType = pFormField->GetFieldType(); 2618 int nFieldType = pFormField->GetFieldType();
2789 2619
2790 if (nFieldType == FIELDTYPE_PUSHBUTTON || 2620 if (nFieldType == FIELDTYPE_PUSHBUTTON ||
2791 nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX || 2621 nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX ||
2792 nFieldType == FIELDTYPE_TEXTFIELD) { 2622 nFieldType == FIELDTYPE_TEXTFIELD) {
2793 CPDF_Font* pFont = pFormControl->GetDefaultControlFont(); 2623 CPDF_Font* pFont = pFormControl->GetDefaultControlFont();
2794 if (!pFont) 2624 if (!pFont)
2795 return FALSE; 2625 return FALSE;
2796 2626
2797 vp << pFont->GetBaseFont(); 2627 vp << pFont->GetBaseFont();
2798 } else 2628 } else {
2799 return FALSE; 2629 return FALSE;
2630 }
2800 } 2631 }
2801 2632
2802 return TRUE; 2633 return TRUE;
2803 } 2634 }
2804 2635
2805 void Field::SetTextFont(CPDFSDK_Document* pDocument, 2636 void Field::SetTextFont(CPDFSDK_Document* pDocument,
2806 const CFX_WideString& swFieldName, 2637 const CFX_WideString& swFieldName,
2807 int nControlIndex, 2638 int nControlIndex,
2808 const CFX_ByteString& string) { 2639 const CFX_ByteString& string) {
2809 // Not supported. 2640 // Not supported.
(...skipping 10 matching lines...) Expand all
2820 2651
2821 int nVP; 2652 int nVP;
2822 vp >> nVP; 2653 vp >> nVP;
2823 2654
2824 if (m_bDelay) { 2655 if (m_bDelay) {
2825 AddDelay_Int(FP_TEXTSIZE, nVP); 2656 AddDelay_Int(FP_TEXTSIZE, nVP);
2826 } else { 2657 } else {
2827 Field::SetTextSize(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 2658 Field::SetTextSize(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
2828 } 2659 }
2829 } else { 2660 } else {
2830 CFX_PtrArray FieldArray; 2661 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2831 GetFormFields(m_FieldName, FieldArray); 2662 if (FieldArray.empty())
2832 if (FieldArray.GetSize() <= 0)
2833 return FALSE; 2663 return FALSE;
2834 2664
2835 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2665 CPDF_FormField* pFormField = FieldArray[0];
2836 ASSERT(pFormField != NULL); 2666 ASSERT(pFormField);
2837
2838 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2667 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2839 if (!pFormControl) 2668 if (!pFormControl)
2840 return FALSE; 2669 return FALSE;
2841 2670
2842 CPDF_DefaultAppearance FieldAppearance = 2671 CPDF_DefaultAppearance FieldAppearance =
2843 pFormControl->GetDefaultAppearance(); 2672 pFormControl->GetDefaultAppearance();
2844 2673
2845 CFX_ByteString csFontNameTag; 2674 CFX_ByteString csFontNameTag;
2846 FX_FLOAT fFontSize; 2675 FX_FLOAT fFontSize;
2847 FieldAppearance.GetFont(csFontNameTag, fFontSize); 2676 FieldAppearance.GetFont(csFontNameTag, fFontSize);
(...skipping 12 matching lines...) Expand all
2860 } 2689 }
2861 2690
2862 FX_BOOL Field::type(IJS_Context* cc, 2691 FX_BOOL Field::type(IJS_Context* cc,
2863 CJS_PropValue& vp, 2692 CJS_PropValue& vp,
2864 CFX_WideString& sError) { 2693 CFX_WideString& sError) {
2865 ASSERT(m_pDocument != NULL); 2694 ASSERT(m_pDocument != NULL);
2866 2695
2867 if (!vp.IsGetting()) 2696 if (!vp.IsGetting())
2868 return FALSE; 2697 return FALSE;
2869 2698
2870 CFX_PtrArray FieldArray; 2699 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2871 GetFormFields(m_FieldName, FieldArray); 2700 if (FieldArray.empty())
2872 if (FieldArray.GetSize() <= 0)
2873 return FALSE; 2701 return FALSE;
2874 2702
2875 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2703 CPDF_FormField* pFormField = FieldArray[0];
2876 ASSERT(pFormField != NULL);
2877
2878 switch (pFormField->GetFieldType()) { 2704 switch (pFormField->GetFieldType()) {
2879 case FIELDTYPE_UNKNOWN: 2705 case FIELDTYPE_UNKNOWN:
2880 vp << L"unknown"; 2706 vp << L"unknown";
2881 break; 2707 break;
2882 case FIELDTYPE_PUSHBUTTON: 2708 case FIELDTYPE_PUSHBUTTON:
2883 vp << L"button"; 2709 vp << L"button";
2884 break; 2710 break;
2885 case FIELDTYPE_CHECKBOX: 2711 case FIELDTYPE_CHECKBOX:
2886 vp << L"checkbox"; 2712 vp << L"checkbox";
2887 break; 2713 break;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2919 2745
2920 CFX_WideString swName; 2746 CFX_WideString swName;
2921 vp >> swName; 2747 vp >> swName;
2922 2748
2923 if (m_bDelay) { 2749 if (m_bDelay) {
2924 AddDelay_WideString(FP_USERNAME, swName); 2750 AddDelay_WideString(FP_USERNAME, swName);
2925 } else { 2751 } else {
2926 Field::SetUserName(m_pDocument, m_FieldName, m_nFormControlIndex, swName); 2752 Field::SetUserName(m_pDocument, m_FieldName, m_nFormControlIndex, swName);
2927 } 2753 }
2928 } else { 2754 } else {
2929 CFX_PtrArray FieldArray; 2755 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2930 GetFormFields(m_FieldName, FieldArray); 2756 if (FieldArray.empty())
2931 if (FieldArray.GetSize() <= 0)
2932 return FALSE; 2757 return FALSE;
2933 2758
2934 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2759 CPDF_FormField* pFormField = FieldArray[0];
2935 ASSERT(pFormField != NULL);
2936
2937 vp << (CFX_WideString)pFormField->GetAlternateName(); 2760 vp << (CFX_WideString)pFormField->GetAlternateName();
2938 } 2761 }
2939 2762
2940 return TRUE; 2763 return TRUE;
2941 } 2764 }
2942 2765
2943 void Field::SetUserName(CPDFSDK_Document* pDocument, 2766 void Field::SetUserName(CPDFSDK_Document* pDocument,
2944 const CFX_WideString& swFieldName, 2767 const CFX_WideString& swFieldName,
2945 int nControlIndex, 2768 int nControlIndex,
2946 const CFX_WideString& string) { 2769 const CFX_WideString& string) {
(...skipping 24 matching lines...) Expand all
2971 vp >> swValue; 2794 vp >> swValue;
2972 strArray.Add(swValue); 2795 strArray.Add(swValue);
2973 } 2796 }
2974 2797
2975 if (m_bDelay) { 2798 if (m_bDelay) {
2976 AddDelay_WideStringArray(FP_VALUE, strArray); 2799 AddDelay_WideStringArray(FP_VALUE, strArray);
2977 } else { 2800 } else {
2978 Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray); 2801 Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray);
2979 } 2802 }
2980 } else { 2803 } else {
2981 CFX_PtrArray FieldArray; 2804 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2982 GetFormFields(m_FieldName, FieldArray); 2805 if (FieldArray.empty())
2983 if (FieldArray.GetSize() <= 0)
2984 return FALSE; 2806 return FALSE;
2985 2807
2986 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2808 CPDF_FormField* pFormField = FieldArray[0];
2987 switch (pFormField->GetFieldType()) { 2809 switch (pFormField->GetFieldType()) {
2988 case FIELDTYPE_PUSHBUTTON: 2810 case FIELDTYPE_PUSHBUTTON:
2989 return FALSE; 2811 return FALSE;
2990 case FIELDTYPE_COMBOBOX: 2812 case FIELDTYPE_COMBOBOX:
2991 case FIELDTYPE_TEXTFIELD: { 2813 case FIELDTYPE_TEXTFIELD: {
2992 CFX_WideString swValue = pFormField->GetValue(); 2814 CFX_WideString swValue = pFormField->GetValue();
2993 2815
2994 double dRet; 2816 double dRet;
2995 FX_BOOL bDot; 2817 FX_BOOL bDot;
2996 if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet, 2818 if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet,
2997 bDot)) { 2819 bDot)) {
2998 if (bDot) 2820 if (bDot)
2999 vp << dRet; 2821 vp << dRet;
3000 else 2822 else
3001 vp << dRet; 2823 vp << dRet;
3002 } else 2824 } else {
3003 vp << swValue; 2825 vp << swValue;
2826 }
3004 } break; 2827 } break;
3005 case FIELDTYPE_LISTBOX: { 2828 case FIELDTYPE_LISTBOX: {
3006 if (pFormField->CountSelectedItems() > 1) { 2829 if (pFormField->CountSelectedItems() > 1) {
3007 CJS_Array ValueArray(pRuntime); 2830 CJS_Array ValueArray(pRuntime);
3008 CJS_Value ElementValue(pRuntime); 2831 CJS_Value ElementValue(pRuntime);
3009 int iIndex; 2832 int iIndex;
3010 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) { 2833 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) {
3011 iIndex = pFormField->GetSelectedIndex(i); 2834 iIndex = pFormField->GetSelectedIndex(i);
3012 ElementValue = pFormField->GetOptionValue(iIndex).c_str(); 2835 ElementValue = pFormField->GetOptionValue(iIndex).c_str();
3013 if (FXSYS_wcslen(ElementValue.ToCFXWideString().c_str()) == 0) 2836 if (FXSYS_wcslen(ElementValue.ToCFXWideString().c_str()) == 0)
3014 ElementValue = pFormField->GetOptionLabel(iIndex).c_str(); 2837 ElementValue = pFormField->GetOptionLabel(iIndex).c_str();
3015 ValueArray.SetElement(i, ElementValue); 2838 ValueArray.SetElement(i, ElementValue);
3016 } 2839 }
3017 vp << ValueArray; 2840 vp << ValueArray;
3018 } else { 2841 } else {
3019 CFX_WideString swValue = pFormField->GetValue(); 2842 CFX_WideString swValue = pFormField->GetValue();
3020 2843
3021 double dRet; 2844 double dRet;
3022 FX_BOOL bDot; 2845 FX_BOOL bDot;
3023 if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet, 2846 if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet,
3024 bDot)) { 2847 bDot)) {
3025 if (bDot) 2848 if (bDot)
3026 vp << dRet; 2849 vp << dRet;
3027 else 2850 else
3028 vp << dRet; 2851 vp << dRet;
3029 } else 2852 } else {
3030 vp << swValue; 2853 vp << swValue;
2854 }
3031 } 2855 }
3032 } break; 2856 } break;
3033 case FIELDTYPE_CHECKBOX: 2857 case FIELDTYPE_CHECKBOX:
3034 case FIELDTYPE_RADIOBUTTON: { 2858 case FIELDTYPE_RADIOBUTTON: {
3035 FX_BOOL bFind = FALSE; 2859 FX_BOOL bFind = FALSE;
3036 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) { 2860 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) {
3037 if (pFormField->GetControl(i)->IsChecked()) { 2861 if (!pFormField->GetControl(i)->IsChecked())
3038 CFX_WideString swValue = 2862 continue;
3039 pFormField->GetControl(i)->GetExportValue();
3040 double dRet;
3041 FX_BOOL bDot;
3042 if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet,
3043 bDot)) {
3044 if (bDot)
3045 vp << dRet;
3046 else
3047 vp << dRet;
3048 } else
3049 vp << swValue;
3050 2863
3051 bFind = TRUE; 2864 CFX_WideString swValue = pFormField->GetControl(i)->GetExportValue();
3052 break; 2865 double dRet;
3053 } else 2866 FX_BOOL bDot;
3054 continue; 2867 if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet,
2868 bDot)) {
2869 if (bDot)
Tom Sepez 2015/11/09 21:25:32 huh?
Lei Zhang 2015/11/09 22:45:28 Huh! (Copy + pasted)
2870 vp << dRet;
2871 else
2872 vp << dRet;
2873 } else {
2874 vp << swValue;
2875 }
2876
2877 bFind = TRUE;
2878 break;
3055 } 2879 }
3056 if (!bFind) 2880 if (!bFind)
3057 vp << L"Off"; 2881 vp << L"Off";
3058 } break; 2882 } break;
3059 default: 2883 default:
3060 vp << pFormField->GetValue(); 2884 vp << pFormField->GetValue();
3061 break; 2885 break;
3062 } 2886 }
3063 } 2887 }
3064 2888
3065 return TRUE; 2889 return TRUE;
3066 } 2890 }
3067 2891
3068 void Field::SetValue(CPDFSDK_Document* pDocument, 2892 void Field::SetValue(CPDFSDK_Document* pDocument,
3069 const CFX_WideString& swFieldName, 2893 const CFX_WideString& swFieldName,
3070 int nControlIndex, 2894 int nControlIndex,
3071 const CJS_WideStringArray& strArray) { 2895 const CJS_WideStringArray& strArray) {
3072 ASSERT(pDocument != NULL); 2896 ASSERT(pDocument != NULL);
3073 2897
3074 if (strArray.GetSize() < 1) 2898 if (strArray.GetSize() < 1)
3075 return; 2899 return;
3076 2900
3077 CFX_PtrArray FieldArray; 2901 std::vector<CPDF_FormField*> FieldArray =
3078 GetFormFields(pDocument, swFieldName, FieldArray); 2902 GetFormFields(pDocument, swFieldName);
3079 2903
3080 for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) { 2904 for (CPDF_FormField* pFormField : FieldArray) {
3081 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
3082 ASSERT(pFormField != NULL);
3083
3084 if (pFormField->GetFullName().Compare(swFieldName) != 0) 2905 if (pFormField->GetFullName().Compare(swFieldName) != 0)
3085 continue; 2906 continue;
3086 2907
3087 switch (pFormField->GetFieldType()) { 2908 switch (pFormField->GetFieldType()) {
3088 case FIELDTYPE_TEXTFIELD: 2909 case FIELDTYPE_TEXTFIELD:
3089 case FIELDTYPE_COMBOBOX: 2910 case FIELDTYPE_COMBOBOX:
3090 if (pFormField->GetValue() != strArray.GetAt(0)) { 2911 if (pFormField->GetValue() != strArray.GetAt(0)) {
3091 CFX_WideString WideString = strArray.GetAt(0); 2912 CFX_WideString WideString = strArray.GetAt(0);
3092 pFormField->SetValue(strArray.GetAt(0), TRUE); 2913 pFormField->SetValue(strArray.GetAt(0), TRUE);
3093 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); 2914 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
3129 } 2950 }
3130 2951
3131 FX_BOOL Field::valueAsString(IJS_Context* cc, 2952 FX_BOOL Field::valueAsString(IJS_Context* cc,
3132 CJS_PropValue& vp, 2953 CJS_PropValue& vp,
3133 CFX_WideString& sError) { 2954 CFX_WideString& sError) {
3134 ASSERT(m_pDocument != NULL); 2955 ASSERT(m_pDocument != NULL);
3135 2956
3136 if (!vp.IsGetting()) 2957 if (!vp.IsGetting())
3137 return FALSE; 2958 return FALSE;
3138 2959
3139 CFX_PtrArray FieldArray; 2960 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3140 GetFormFields(m_FieldName, FieldArray); 2961 if (FieldArray.empty())
3141 if (FieldArray.GetSize() <= 0)
3142 return FALSE; 2962 return FALSE;
3143 2963
3144 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2964 CPDF_FormField* pFormField = FieldArray[0];
3145 ASSERT(pFormField != NULL);
3146
3147 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON) 2965 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
3148 return FALSE; 2966 return FALSE;
3149 2967
3150 if (pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) { 2968 if (pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) {
3151 if (!pFormField->CountControls()) 2969 if (!pFormField->CountControls())
3152 return FALSE; 2970 return FALSE;
3153 2971
3154 if (pFormField->GetControl(0)->IsChecked()) 2972 if (pFormField->GetControl(0)->IsChecked())
3155 vp << L"Yes"; 2973 vp << L"Yes";
3156 else 2974 else
3157 vp << L"Off"; 2975 vp << L"Off";
3158 } else if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON && 2976 } else if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON &&
3159 !(pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON)) { 2977 !(pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON)) {
3160 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) { 2978 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) {
3161 if (pFormField->GetControl(i)->IsChecked()) { 2979 if (pFormField->GetControl(i)->IsChecked()) {
3162 vp << pFormField->GetControl(i)->GetExportValue().c_str(); 2980 vp << pFormField->GetControl(i)->GetExportValue().c_str();
3163 break; 2981 break;
3164 } else 2982 } else {
3165 vp << L"Off"; 2983 vp << L"Off";
2984 }
3166 } 2985 }
3167 } else if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX && 2986 } else if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX &&
3168 (pFormField->CountSelectedItems() > 1)) { 2987 (pFormField->CountSelectedItems() > 1)) {
3169 vp << L""; 2988 vp << L"";
3170 } else 2989 } else {
3171 vp << pFormField->GetValue().c_str(); 2990 vp << pFormField->GetValue().c_str();
2991 }
3172 2992
3173 return TRUE; 2993 return TRUE;
3174 } 2994 }
3175 2995
3176 /* --------------------------------- methods --------------------------------- 2996 /* --------------------------------- methods ---------------------------------
3177 */ 2997 */
3178 2998
3179 FX_BOOL Field::browseForFileToSubmit(IJS_Context* cc, 2999 FX_BOOL Field::browseForFileToSubmit(IJS_Context* cc,
3180 const CJS_Parameters& params, 3000 const CJS_Parameters& params,
3181 CJS_Value& vRet, 3001 CJS_Value& vRet,
3182 CFX_WideString& sError) { 3002 CFX_WideString& sError) {
3183 ASSERT(m_pDocument != NULL); 3003 ASSERT(m_pDocument != NULL);
3184 3004
3185 CFX_PtrArray FieldArray; 3005 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3186 GetFormFields(m_FieldName, FieldArray); 3006 if (FieldArray.empty())
3187 if (FieldArray.GetSize() <= 0)
3188 return FALSE; 3007 return FALSE;
3189 3008
3190 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3009 CPDF_FormField* pFormField = FieldArray[0];
3191 ASSERT(pFormField != NULL);
3192
3193 CPDFDoc_Environment* pApp = m_pDocument->GetEnv(); 3010 CPDFDoc_Environment* pApp = m_pDocument->GetEnv();
3194 ASSERT(pApp != NULL);
3195
3196 if ((pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) && 3011 if ((pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) &&
3197 (pFormField->GetFieldType() == FIELDTYPE_TEXTFIELD)) { 3012 (pFormField->GetFieldType() == FIELDTYPE_TEXTFIELD)) {
3198 CFX_WideString wsFileName = pApp->JS_fieldBrowse(); 3013 CFX_WideString wsFileName = pApp->JS_fieldBrowse();
3199 if (!wsFileName.IsEmpty()) { 3014 if (!wsFileName.IsEmpty()) {
3200 pFormField->SetValue(wsFileName); 3015 pFormField->SetValue(wsFileName);
3201 UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE); 3016 UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
3202 } 3017 }
3203 } else 3018 return TRUE;
3204 return FALSE; 3019 }
3205 3020 return FALSE;
3206 return TRUE;
3207 } 3021 }
3208 3022
3209 FX_BOOL Field::buttonGetCaption(IJS_Context* cc, 3023 FX_BOOL Field::buttonGetCaption(IJS_Context* cc,
3210 const CJS_Parameters& params, 3024 const CJS_Parameters& params,
3211 CJS_Value& vRet, 3025 CJS_Value& vRet,
3212 CFX_WideString& sError) { 3026 CFX_WideString& sError) {
3213 ASSERT(m_pDocument != NULL); 3027 ASSERT(m_pDocument != NULL);
3214 3028
3215 int nface = 0; 3029 int nface = 0;
3216 int iSize = params.size(); 3030 int iSize = params.size();
3217 if (iSize >= 1) 3031 if (iSize >= 1)
3218 nface = params[0].ToInt(); 3032 nface = params[0].ToInt();
3219 3033
3220 CFX_PtrArray FieldArray; 3034 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3221 GetFormFields(m_FieldName, FieldArray); 3035 if (FieldArray.empty())
3222 if (FieldArray.GetSize() <= 0)
3223 return FALSE; 3036 return FALSE;
3224 3037
3225 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3038 CPDF_FormField* pFormField = FieldArray[0];
3226 ASSERT(pFormField != NULL);
3227
3228 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 3039 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
3229 return FALSE; 3040 return FALSE;
3230 3041
3231 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 3042 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3232 if (!pFormControl) 3043 if (!pFormControl)
3233 return FALSE; 3044 return FALSE;
3234 3045
3235 if (nface == 0) 3046 if (nface == 0)
3236 vRet = pFormControl->GetNormalCaption().c_str(); 3047 vRet = pFormControl->GetNormalCaption().c_str();
3237 else if (nface == 1) 3048 else if (nface == 1)
3238 vRet = pFormControl->GetDownCaption().c_str(); 3049 vRet = pFormControl->GetDownCaption().c_str();
3239 else if (nface == 2) 3050 else if (nface == 2)
3240 vRet = pFormControl->GetRolloverCaption().c_str(); 3051 vRet = pFormControl->GetRolloverCaption().c_str();
3241 else 3052 else
3242 return FALSE; 3053 return FALSE;
3243 3054
3244 return TRUE; 3055 return TRUE;
3245 } 3056 }
3246 3057
3247 //#pragma warning(disable: 4800)
3248
3249 FX_BOOL Field::buttonGetIcon(IJS_Context* cc, 3058 FX_BOOL Field::buttonGetIcon(IJS_Context* cc,
3250 const CJS_Parameters& params, 3059 const CJS_Parameters& params,
3251 CJS_Value& vRet, 3060 CJS_Value& vRet,
3252 CFX_WideString& sError) { 3061 CFX_WideString& sError) {
3253 ASSERT(m_pDocument != NULL); 3062 ASSERT(m_pDocument != NULL);
3254 3063
3255 int nface = 0; 3064 int nface = 0;
3256 int iSize = params.size(); 3065 int iSize = params.size();
3257 if (iSize >= 1) 3066 if (iSize >= 1)
3258 nface = params[0].ToInt(); 3067 nface = params[0].ToInt();
3259 3068
3260 CFX_PtrArray FieldArray; 3069 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3261 GetFormFields(m_FieldName, FieldArray); 3070 if (FieldArray.empty())
3262 if (FieldArray.GetSize() <= 0)
3263 return FALSE; 3071 return FALSE;
3264 3072
3265 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3073 CPDF_FormField* pFormField = FieldArray[0];
3266 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 3074 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
3267 return FALSE; 3075 return FALSE;
3268 3076
3269 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 3077 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3270 if (!pFormControl) 3078 if (!pFormControl)
3271 return FALSE; 3079 return FALSE;
3272 3080
3273 CJS_Context* pContext = (CJS_Context*)cc; 3081 CJS_Context* pContext = (CJS_Context*)cc;
3274 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 3082 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
3275 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( 3083 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj(
(...skipping 16 matching lines...) Expand all
3292 pIcon->SetStream(pIconStream); 3100 pIcon->SetStream(pIconStream);
3293 vRet = pJS_Icon; 3101 vRet = pJS_Icon;
3294 3102
3295 return TRUE; 3103 return TRUE;
3296 } 3104 }
3297 3105
3298 FX_BOOL Field::buttonImportIcon(IJS_Context* cc, 3106 FX_BOOL Field::buttonImportIcon(IJS_Context* cc,
3299 const CJS_Parameters& params, 3107 const CJS_Parameters& params,
3300 CJS_Value& vRet, 3108 CJS_Value& vRet,
3301 CFX_WideString& sError) { 3109 CFX_WideString& sError) {
3302 #if 0
3303 ASSERT(m_pDocument != NULL);
3304
3305 CFX_PtrArray FieldArray;
3306 GetFormFields(m_FieldName,FieldArray);
3307 if (FieldArray.GetSize() <= 0) return FALSE;
3308
3309 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3310 if (!pFormField)return FALSE;
3311
3312 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
3313 ASSERT(pEnv);
3314
3315 CFX_WideString sIconFileName = pEnv->JS_fieldBrowse();
3316 if (sIconFileName.IsEmpty())
3317 {
3318 vRet = 1;
3319 return TRUE;
3320 }
3321
3322 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterFor m();
3323 ASSERT(pInterForm != NULL);
3324
3325 CPDF_Stream* pStream = pInterForm->LoadImageFromFile(sIconFileName);
3326 if (!pStream)
3327 {
3328 vRet = -1;
3329 return TRUE;
3330 }
3331
3332 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3333 if (!pFormControl)return FALSE;
3334
3335 pFormControl->SetNormalIcon(pStream);
3336 UpdateFormControl(m_pDocument, pFormControl, TRUE, TRUE, TRUE);
3337
3338 vRet = 0;
3339 #endif // 0
3340 return TRUE; 3110 return TRUE;
3341 } 3111 }
3342 3112
3343 FX_BOOL Field::buttonSetCaption(IJS_Context* cc, 3113 FX_BOOL Field::buttonSetCaption(IJS_Context* cc,
3344 const CJS_Parameters& params, 3114 const CJS_Parameters& params,
3345 CJS_Value& vRet, 3115 CJS_Value& vRet,
3346 CFX_WideString& sError) { 3116 CFX_WideString& sError) {
3347 return FALSE; 3117 return FALSE;
3348 } 3118 }
3349 3119
(...skipping 16 matching lines...) Expand all
3366 int iSize = params.size(); 3136 int iSize = params.size();
3367 if (iSize < 1) 3137 if (iSize < 1)
3368 return FALSE; 3138 return FALSE;
3369 3139
3370 int nWidget = params[0].ToInt(); 3140 int nWidget = params[0].ToInt();
3371 3141
3372 FX_BOOL bCheckit = TRUE; 3142 FX_BOOL bCheckit = TRUE;
3373 if (iSize >= 2) 3143 if (iSize >= 2)
3374 bCheckit = params[1].ToBool(); 3144 bCheckit = params[1].ToBool();
3375 3145
3376 CFX_PtrArray FieldArray; 3146 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3377 GetFormFields(m_FieldName, FieldArray); 3147 if (FieldArray.empty())
3378 if (FieldArray.GetSize() <= 0)
3379 return FALSE; 3148 return FALSE;
3380 3149
3381 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3150 CPDF_FormField* pFormField = FieldArray[0];
3382 ASSERT(pFormField != NULL);
3383
3384 if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX && 3151 if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX &&
3385 pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON) 3152 pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
3386 return FALSE; 3153 return FALSE;
3387 if (nWidget < 0 || nWidget >= pFormField->CountControls()) 3154 if (nWidget < 0 || nWidget >= pFormField->CountControls())
3388 return FALSE; 3155 return FALSE;
3389 if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON) 3156 if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)
3390 pFormField->CheckControl(nWidget, bCheckit, TRUE); 3157 pFormField->CheckControl(nWidget, bCheckit, TRUE);
3391 else 3158 else
3392 pFormField->CheckControl(nWidget, bCheckit, TRUE); 3159 pFormField->CheckControl(nWidget, bCheckit, TRUE);
3393 3160
(...skipping 16 matching lines...) Expand all
3410 3177
3411 if (!m_bCanSet) 3178 if (!m_bCanSet)
3412 return FALSE; 3179 return FALSE;
3413 3180
3414 int iSize = params.size(); 3181 int iSize = params.size();
3415 if (iSize < 1) 3182 if (iSize < 1)
3416 return FALSE; 3183 return FALSE;
3417 3184
3418 int nWidget = params[0].ToInt(); 3185 int nWidget = params[0].ToInt();
3419 3186
3420 CFX_PtrArray FieldArray; 3187 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3421 GetFormFields(m_FieldName, FieldArray); 3188 if (FieldArray.empty())
3422 if (FieldArray.GetSize() <= 0)
3423 return FALSE; 3189 return FALSE;
3424 3190
3425 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3191 CPDF_FormField* pFormField = FieldArray[0];
3426 ASSERT(pFormField != NULL);
3427
3428 if (nWidget < 0 || nWidget >= pFormField->CountControls()) { 3192 if (nWidget < 0 || nWidget >= pFormField->CountControls()) {
3429 vRet = FALSE; 3193 vRet = FALSE;
3430 return FALSE; 3194 return FALSE;
3431 } 3195 }
3432 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) || 3196 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) ||
3433 (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) { 3197 (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) {
3434 vRet = TRUE; 3198 vRet = TRUE;
3435 } else 3199 } else {
Tom Sepez 2015/11/09 21:25:32 nit: vRet = (FormField->GetFieldType() == FIELDTYP
Lei Zhang 2015/11/09 22:45:29 Done.
3436 vRet = FALSE; 3200 vRet = FALSE;
3201 }
3437 3202
3438 return TRUE; 3203 return TRUE;
3439 } 3204 }
3440 3205
3441 FX_BOOL Field::deleteItemAt(IJS_Context* cc, 3206 FX_BOOL Field::deleteItemAt(IJS_Context* cc,
3442 const CJS_Parameters& params, 3207 const CJS_Parameters& params,
3443 CJS_Value& vRet, 3208 CJS_Value& vRet,
3444 CFX_WideString& sError) { 3209 CFX_WideString& sError) {
3445 return TRUE; 3210 return TRUE;
3446 } 3211 }
3447 3212
3448 int JS_COMPARESTRING(CFX_WideString* ps1, CFX_WideString* ps2) { 3213 int JS_COMPARESTRING(CFX_WideString* ps1, CFX_WideString* ps2) {
3449 ASSERT(ps1 != NULL); 3214 ASSERT(ps1 != NULL);
3450 ASSERT(ps2 != NULL); 3215 ASSERT(ps2 != NULL);
3451 3216
3452 return ps1->Compare(*ps2); 3217 return ps1->Compare(*ps2);
3453 } 3218 }
3454 3219
3455 FX_BOOL Field::getArray(IJS_Context* cc, 3220 FX_BOOL Field::getArray(IJS_Context* cc,
3456 const CJS_Parameters& params, 3221 const CJS_Parameters& params,
3457 CJS_Value& vRet, 3222 CJS_Value& vRet,
3458 CFX_WideString& sError) { 3223 CFX_WideString& sError) {
3459 ASSERT(m_pDocument != NULL); 3224 ASSERT(m_pDocument != NULL);
3460 3225
3461 CFX_PtrArray FieldArray; 3226 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3462 GetFormFields(m_FieldName, FieldArray); 3227 if (FieldArray.empty())
3463 if (FieldArray.GetSize() <= 0)
3464 return FALSE; 3228 return FALSE;
3465 3229
3466 CGW_ArrayTemplate<CFX_WideString*> swSort; 3230 CGW_ArrayTemplate<CFX_WideString*> swSort;
3467 3231
3468 for (int i = 0, sz = FieldArray.GetSize(); i < sz; i++) { 3232 for (CPDF_FormField* pFormField : FieldArray)
3469 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
3470 ASSERT(pFormField != NULL);
3471
3472 swSort.Add(new CFX_WideString(pFormField->GetFullName())); 3233 swSort.Add(new CFX_WideString(pFormField->GetFullName()));
3473 }
3474 swSort.Sort(JS_COMPARESTRING); 3234 swSort.Sort(JS_COMPARESTRING);
3475 3235
3476 CJS_Context* pContext = (CJS_Context*)cc; 3236 CJS_Context* pContext = (CJS_Context*)cc;
3477 ASSERT(pContext != NULL);
3478 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 3237 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
3479 ASSERT(pRuntime != NULL); 3238 ASSERT(pRuntime);
3480 3239
3481 CJS_Array FormFieldArray(pRuntime); 3240 CJS_Array FormFieldArray(pRuntime);
3482 for (int j = 0, jsz = swSort.GetSize(); j < jsz; j++) { 3241 for (int j = 0, jsz = swSort.GetSize(); j < jsz; j++) {
3483 nonstd::unique_ptr<CFX_WideString> pStr(swSort.GetAt(j)); 3242 nonstd::unique_ptr<CFX_WideString> pStr(swSort.GetAt(j));
3484 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( 3243 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj(
3485 pRuntime->GetIsolate(), pRuntime, CJS_Field::g_nObjDefnID); 3244 pRuntime->GetIsolate(), pRuntime, CJS_Field::g_nObjDefnID);
3486 ASSERT(!pObj.IsEmpty()); 3245 ASSERT(!pObj.IsEmpty());
3487 3246
3488 CJS_Field* pJSField = 3247 CJS_Field* pJSField =
3489 (CJS_Field*)FXJS_GetPrivate(pRuntime->GetIsolate(), pObj); 3248 (CJS_Field*)FXJS_GetPrivate(pRuntime->GetIsolate(), pObj);
(...skipping 18 matching lines...) Expand all
3508 int iSize = params.size(); 3267 int iSize = params.size();
3509 3268
3510 int nIdx = -1; 3269 int nIdx = -1;
3511 if (iSize >= 1) 3270 if (iSize >= 1)
3512 nIdx = params[0].ToInt(); 3271 nIdx = params[0].ToInt();
3513 3272
3514 FX_BOOL bExport = TRUE; 3273 FX_BOOL bExport = TRUE;
3515 if (iSize >= 2) 3274 if (iSize >= 2)
3516 bExport = params[1].ToBool(); 3275 bExport = params[1].ToBool();
3517 3276
3518 CFX_PtrArray FieldArray; 3277 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3519 GetFormFields(m_FieldName, FieldArray); 3278 if (FieldArray.empty())
3520 if (FieldArray.GetSize() <= 0)
3521 return FALSE; 3279 return FALSE;
3522 3280
3523 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3281 CPDF_FormField* pFormField = FieldArray[0];
3524 ASSERT(pFormField != NULL);
3525
3526 if ((pFormField->GetFieldType() == FIELDTYPE_LISTBOX) || 3282 if ((pFormField->GetFieldType() == FIELDTYPE_LISTBOX) ||
3527 (pFormField->GetFieldType() == FIELDTYPE_COMBOBOX)) { 3283 (pFormField->GetFieldType() == FIELDTYPE_COMBOBOX)) {
3528 if (nIdx == -1 || nIdx > pFormField->CountOptions()) 3284 if (nIdx == -1 || nIdx > pFormField->CountOptions())
3529 nIdx = pFormField->CountOptions() - 1; 3285 nIdx = pFormField->CountOptions() - 1;
3530 if (bExport) { 3286 if (bExport) {
3531 CFX_WideString strval = pFormField->GetOptionValue(nIdx); 3287 CFX_WideString strval = pFormField->GetOptionValue(nIdx);
3532 if (strval.IsEmpty()) 3288 if (strval.IsEmpty())
3533 vRet = pFormField->GetOptionLabel(nIdx).c_str(); 3289 vRet = pFormField->GetOptionLabel(nIdx).c_str();
3534 else 3290 else
3535 vRet = strval.c_str(); 3291 vRet = strval.c_str();
3536 } else 3292 } else {
3537 vRet = pFormField->GetOptionLabel(nIdx).c_str(); 3293 vRet = pFormField->GetOptionLabel(nIdx).c_str();
3538 } else 3294 }
3295 } else {
3539 return FALSE; 3296 return FALSE;
3297 }
3540 3298
3541 return TRUE; 3299 return TRUE;
3542 } 3300 }
3543 3301
3544 FX_BOOL Field::getLock(IJS_Context* cc, 3302 FX_BOOL Field::getLock(IJS_Context* cc,
3545 const CJS_Parameters& params, 3303 const CJS_Parameters& params,
3546 CJS_Value& vRet, 3304 CJS_Value& vRet,
3547 CFX_WideString& sError) { 3305 CFX_WideString& sError) {
3548 return FALSE; 3306 return FALSE;
3549 } 3307 }
3550 3308
3551 FX_BOOL Field::insertItemAt(IJS_Context* cc, 3309 FX_BOOL Field::insertItemAt(IJS_Context* cc,
3552 const CJS_Parameters& params, 3310 const CJS_Parameters& params,
3553 CJS_Value& vRet, 3311 CJS_Value& vRet,
3554 CFX_WideString& sError) { 3312 CFX_WideString& sError) {
3555 return TRUE; 3313 return TRUE;
3556 } 3314 }
3557 3315
3558 FX_BOOL Field::isBoxChecked(IJS_Context* cc, 3316 FX_BOOL Field::isBoxChecked(IJS_Context* cc,
3559 const CJS_Parameters& params, 3317 const CJS_Parameters& params,
3560 CJS_Value& vRet, 3318 CJS_Value& vRet,
3561 CFX_WideString& sError) { 3319 CFX_WideString& sError) {
3562 ASSERT(m_pDocument != NULL); 3320 ASSERT(m_pDocument != NULL);
3563 3321
3564 int nIndex = -1; 3322 int nIndex = -1;
3565 if (params.size() >= 1) 3323 if (params.size() >= 1)
3566 nIndex = params[0].ToInt(); 3324 nIndex = params[0].ToInt();
3567 3325
3568 CFX_PtrArray FieldArray; 3326 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3569 GetFormFields(m_FieldName, FieldArray); 3327 if (FieldArray.empty())
3570 if (FieldArray.GetSize() <= 0)
3571 return FALSE; 3328 return FALSE;
3572 3329
3573 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3330 CPDF_FormField* pFormField = FieldArray[0];
3574 ASSERT(pFormField != NULL);
3575
3576 if (nIndex < 0 || nIndex >= pFormField->CountControls()) { 3331 if (nIndex < 0 || nIndex >= pFormField->CountControls()) {
3577 vRet = FALSE; 3332 vRet = FALSE;
3578 return FALSE; 3333 return FALSE;
3579 } 3334 }
3580 3335
3581 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) || 3336 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) ||
3582 (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) { 3337 (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) {
3583 if (pFormField->GetControl(nIndex)->IsChecked() != 0) 3338 if (pFormField->GetControl(nIndex)->IsChecked() != 0)
3584 vRet = TRUE; 3339 vRet = TRUE;
3585 else 3340 else
3586 vRet = FALSE; 3341 vRet = FALSE;
3587 } else 3342 } else {
3588 vRet = FALSE; 3343 vRet = FALSE;
3344 }
3589 3345
3590 return TRUE; 3346 return TRUE;
3591 } 3347 }
3592 3348
3593 FX_BOOL Field::isDefaultChecked(IJS_Context* cc, 3349 FX_BOOL Field::isDefaultChecked(IJS_Context* cc,
3594 const CJS_Parameters& params, 3350 const CJS_Parameters& params,
3595 CJS_Value& vRet, 3351 CJS_Value& vRet,
3596 CFX_WideString& sError) { 3352 CFX_WideString& sError) {
3597 ASSERT(m_pDocument != NULL); 3353 ASSERT(m_pDocument != NULL);
3598 3354
3599 int nIndex = -1; 3355 int nIndex = -1;
3600 if (params.size() >= 1) 3356 if (params.size() >= 1)
3601 nIndex = params[0].ToInt(); 3357 nIndex = params[0].ToInt();
3602 3358
3603 CFX_PtrArray FieldArray; 3359 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3604 GetFormFields(m_FieldName, FieldArray); 3360 if (FieldArray.empty())
3605 if (FieldArray.GetSize() <= 0)
3606 return FALSE; 3361 return FALSE;
3607 3362
3608 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3363 CPDF_FormField* pFormField = FieldArray[0];
3609 ASSERT(pFormField != NULL);
3610
3611 if (nIndex < 0 || nIndex >= pFormField->CountControls()) { 3364 if (nIndex < 0 || nIndex >= pFormField->CountControls()) {
3612 vRet = FALSE; 3365 vRet = FALSE;
3613 return FALSE; 3366 return FALSE;
3614 } 3367 }
3615 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) || 3368 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) ||
3616 (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) { 3369 (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) {
3617 if (pFormField->GetControl(nIndex)->IsDefaultChecked() != 0) 3370 if (pFormField->GetControl(nIndex)->IsDefaultChecked() != 0)
3618 vRet = TRUE; 3371 vRet = TRUE;
3619 else 3372 else
3620 vRet = FALSE; 3373 vRet = FALSE;
3621 } else 3374 } else {
3622 vRet = FALSE; 3375 vRet = FALSE;
3376 }
3623 3377
3624 return TRUE; 3378 return TRUE;
3625 } 3379 }
3626 3380
3627 FX_BOOL Field::setAction(IJS_Context* cc, 3381 FX_BOOL Field::setAction(IJS_Context* cc,
3628 const CJS_Parameters& params, 3382 const CJS_Parameters& params,
3629 CJS_Value& vRet, 3383 CJS_Value& vRet,
3630 CFX_WideString& sError) { 3384 CFX_WideString& sError) {
3631 return TRUE; 3385 return TRUE;
3632 } 3386 }
3633 3387
3634 FX_BOOL Field::setFocus(IJS_Context* cc, 3388 FX_BOOL Field::setFocus(IJS_Context* cc,
3635 const CJS_Parameters& params, 3389 const CJS_Parameters& params,
3636 CJS_Value& vRet, 3390 CJS_Value& vRet,
3637 CFX_WideString& sError) { 3391 CFX_WideString& sError) {
3638 ASSERT(m_pDocument != NULL); 3392 ASSERT(m_pDocument != NULL);
3639 3393
3640 CFX_PtrArray FieldArray; 3394 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3641 GetFormFields(m_FieldName, FieldArray); 3395 if (FieldArray.empty())
3642 if (FieldArray.GetSize() <= 0)
3643 return FALSE; 3396 return FALSE;
3644 3397
3645 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3398 CPDF_FormField* pFormField = FieldArray[0];
3646 ASSERT(pFormField != NULL);
3647
3648 int32_t nCount = pFormField->CountControls(); 3399 int32_t nCount = pFormField->CountControls();
3649
3650 if (nCount < 1) 3400 if (nCount < 1)
3651 return FALSE; 3401 return FALSE;
3652 3402
3653 CPDFSDK_InterForm* pInterForm = 3403 CPDFSDK_InterForm* pInterForm =
3654 (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 3404 (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
3655 ASSERT(pInterForm != NULL); 3405 ASSERT(pInterForm != NULL);
3656 3406
3657 CPDFSDK_Widget* pWidget = NULL; 3407 CPDFSDK_Widget* pWidget = NULL;
3658 if (nCount == 1) { 3408 if (nCount == 1) {
3659 pWidget = pInterForm->GetWidget(pFormField->GetControl(0)); 3409 pWidget = pInterForm->GetWidget(pFormField->GetControl(0));
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
4001 #define JS_FIELD_MINWIDTH 1 3751 #define JS_FIELD_MINWIDTH 1
4002 #define JS_FIELD_MINHEIGHT 1 3752 #define JS_FIELD_MINHEIGHT 1
4003 3753
4004 void Field::AddField(CPDFSDK_Document* pDocument, 3754 void Field::AddField(CPDFSDK_Document* pDocument,
4005 int nPageIndex, 3755 int nPageIndex,
4006 int nFieldType, 3756 int nFieldType,
4007 const CFX_WideString& sName, 3757 const CFX_WideString& sName,
4008 const CPDF_Rect& rcCoords) { 3758 const CPDF_Rect& rcCoords) {
4009 // Not supported. 3759 // Not supported.
4010 } 3760 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698