OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fxfa/app/xfa_ffwidgetacc.h" | 7 #include "xfa/fxfa/app/xfa_ffwidgetacc.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 break; | 354 break; |
355 case XFA_ELEMENT_Submit: { | 355 case XFA_ELEMENT_Submit: { |
356 CXFA_Submit submit = event.GetSubmit(); | 356 CXFA_Submit submit = event.GetSubmit(); |
357 return GetDoc()->GetDocProvider()->SubmitData(GetDoc(), submit); | 357 return GetDoc()->GetDocProvider()->SubmitData(GetDoc(), submit); |
358 } | 358 } |
359 default: | 359 default: |
360 break; | 360 break; |
361 } | 361 } |
362 return XFA_EVENTERROR_NotExist; | 362 return XFA_EVENTERROR_NotExist; |
363 } | 363 } |
| 364 |
364 int32_t CXFA_WidgetAcc::ProcessCalculate() { | 365 int32_t CXFA_WidgetAcc::ProcessCalculate() { |
365 if (GetClassID() == XFA_ELEMENT_Draw) { | 366 if (GetClassID() == XFA_ELEMENT_Draw) { |
366 return XFA_EVENTERROR_NotExist; | 367 return XFA_EVENTERROR_NotExist; |
367 } | 368 } |
368 CXFA_Calculate calc = GetCalculate(); | 369 CXFA_Calculate calc = GetCalculate(); |
369 if (!calc) { | 370 if (!calc) { |
370 return XFA_EVENTERROR_NotExist; | 371 return XFA_EVENTERROR_NotExist; |
371 } | 372 } |
372 if (GetNode()->HasFlag(XFA_NODEFLAG_UserInteractive)) { | 373 if (GetNode()->HasFlag(XFA_NODEFLAG_UserInteractive)) { |
373 return XFA_EVENTERROR_Disabled; | 374 return XFA_EVENTERROR_Disabled; |
374 } | 375 } |
375 CXFA_EventParam EventParam; | 376 CXFA_EventParam EventParam; |
376 EventParam.m_eType = XFA_EVENT_Calculate; | 377 EventParam.m_eType = XFA_EVENT_Calculate; |
377 CXFA_Script script = calc.GetScript(); | 378 CXFA_Script script = calc.GetScript(); |
378 int32_t iRet = ExecuteScript(script, &EventParam); | 379 int32_t iRet = ExecuteScript(script, &EventParam); |
379 if (iRet == XFA_EVENTERROR_Success) { | 380 if (iRet != XFA_EVENTERROR_Success) |
380 if (GetRawValue() != EventParam.m_wsResult) { | 381 return iRet; |
381 const bool bNotify = GetDoc()->GetDocType() == XFA_DOCTYPE_Static; | 382 |
382 SetValue(EventParam.m_wsResult, XFA_VALUEPICTURE_Raw); | 383 if (GetRawValue() != EventParam.m_wsResult) { |
383 UpdateUIDisplay(); | 384 SetValue(EventParam.m_wsResult, XFA_VALUEPICTURE_Raw); |
384 if (bNotify) { | 385 UpdateUIDisplay(); |
385 NotifyEvent(XFA_WIDGETEVENT_PostContentChanged, NULL, NULL, NULL); | |
386 } | |
387 iRet = XFA_EVENTERROR_Success; | |
388 } | |
389 } | 386 } |
390 return iRet; | 387 return XFA_EVENTERROR_Success; |
391 } | 388 } |
| 389 |
392 void CXFA_WidgetAcc::ProcessScriptTestValidate(CXFA_Validate validate, | 390 void CXFA_WidgetAcc::ProcessScriptTestValidate(CXFA_Validate validate, |
393 int32_t iRet, | 391 int32_t iRet, |
394 FXJSE_HVALUE pRetValue, | 392 FXJSE_HVALUE pRetValue, |
395 FX_BOOL bVersionFlag) { | 393 FX_BOOL bVersionFlag) { |
396 if (iRet == XFA_EVENTERROR_Success && pRetValue) { | 394 if (iRet == XFA_EVENTERROR_Success && pRetValue) { |
397 if (FXJSE_Value_IsBoolean(pRetValue) && !FXJSE_Value_ToBoolean(pRetValue)) { | 395 if (FXJSE_Value_IsBoolean(pRetValue) && !FXJSE_Value_ToBoolean(pRetValue)) { |
398 IXFA_AppProvider* pAppProvider = GetAppProvider(); | 396 IXFA_AppProvider* pAppProvider = GetAppProvider(); |
399 if (!pAppProvider) { | 397 if (!pAppProvider) { |
400 return; | 398 return; |
401 } | 399 } |
(...skipping 10 matching lines...) Expand all Loading... |
412 GetValidateMessage(pAppProvider, wsScriptMsg, FALSE, bVersionFlag); | 410 GetValidateMessage(pAppProvider, wsScriptMsg, FALSE, bVersionFlag); |
413 } | 411 } |
414 if (bVersionFlag) { | 412 if (bVersionFlag) { |
415 pAppProvider->MsgBox(wsScriptMsg.AsStringC(), wsTitle.AsStringC(), | 413 pAppProvider->MsgBox(wsScriptMsg.AsStringC(), wsTitle.AsStringC(), |
416 XFA_MBICON_Warning, XFA_MB_OK); | 414 XFA_MBICON_Warning, XFA_MB_OK); |
417 return; | 415 return; |
418 } | 416 } |
419 if (pAppProvider->MsgBox(wsScriptMsg.AsStringC(), wsTitle.AsStringC(), | 417 if (pAppProvider->MsgBox(wsScriptMsg.AsStringC(), wsTitle.AsStringC(), |
420 XFA_MBICON_Warning, | 418 XFA_MBICON_Warning, |
421 XFA_MB_YesNo) == XFA_IDYes) { | 419 XFA_MB_YesNo) == XFA_IDYes) { |
422 GetNode()->SetFlag(XFA_NODEFLAG_UserInteractive, TRUE, FALSE); | 420 GetNode()->SetFlag(XFA_NODEFLAG_UserInteractive, false); |
423 } | 421 } |
424 } else { | 422 } else { |
425 if (wsScriptMsg.IsEmpty()) { | 423 if (wsScriptMsg.IsEmpty()) { |
426 GetValidateMessage(pAppProvider, wsScriptMsg, TRUE, bVersionFlag); | 424 GetValidateMessage(pAppProvider, wsScriptMsg, TRUE, bVersionFlag); |
427 } | 425 } |
428 pAppProvider->MsgBox(wsScriptMsg.AsStringC(), wsTitle.AsStringC(), | 426 pAppProvider->MsgBox(wsScriptMsg.AsStringC(), wsTitle.AsStringC(), |
429 XFA_MBICON_Error, XFA_MB_OK); | 427 XFA_MBICON_Error, XFA_MB_OK); |
430 } | 428 } |
431 } | 429 } |
432 } | 430 } |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 if (wsFormatMsg.IsEmpty()) { | 467 if (wsFormatMsg.IsEmpty()) { |
470 GetValidateMessage(pAppProvider, wsFormatMsg, FALSE, bVersionFlag); | 468 GetValidateMessage(pAppProvider, wsFormatMsg, FALSE, bVersionFlag); |
471 } | 469 } |
472 if (bVersionFlag) { | 470 if (bVersionFlag) { |
473 pAppProvider->MsgBox(wsFormatMsg.AsStringC(), wsTitle.AsStringC(), | 471 pAppProvider->MsgBox(wsFormatMsg.AsStringC(), wsTitle.AsStringC(), |
474 XFA_MBICON_Warning, XFA_MB_OK); | 472 XFA_MBICON_Warning, XFA_MB_OK); |
475 return XFA_EVENTERROR_Success; | 473 return XFA_EVENTERROR_Success; |
476 } | 474 } |
477 if (pAppProvider->MsgBox(wsFormatMsg.AsStringC(), wsTitle.AsStringC(), | 475 if (pAppProvider->MsgBox(wsFormatMsg.AsStringC(), wsTitle.AsStringC(), |
478 XFA_MBICON_Warning, XFA_MB_YesNo) == XFA_IDYes) { | 476 XFA_MBICON_Warning, XFA_MB_YesNo) == XFA_IDYes) { |
479 GetNode()->SetFlag(XFA_NODEFLAG_UserInteractive, TRUE, FALSE); | 477 GetNode()->SetFlag(XFA_NODEFLAG_UserInteractive, false); |
480 } | 478 } |
481 return XFA_EVENTERROR_Success; | 479 return XFA_EVENTERROR_Success; |
482 } | 480 } |
483 } | 481 } |
484 return XFA_EVENTERROR_NotExist; | 482 return XFA_EVENTERROR_NotExist; |
485 } | 483 } |
486 int32_t CXFA_WidgetAcc::ProcessNullTestValidate(CXFA_Validate validate, | 484 int32_t CXFA_WidgetAcc::ProcessNullTestValidate(CXFA_Validate validate, |
487 int32_t iFlags, | 485 int32_t iFlags, |
488 FX_BOOL bVersionFlag) { | 486 FX_BOOL bVersionFlag) { |
489 CFX_WideString wsValue; | 487 CFX_WideString wsValue; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
540 } | 538 } |
541 if (wsNullMsg.IsEmpty()) { | 539 if (wsNullMsg.IsEmpty()) { |
542 GetValidateCaptionName(wsCaptionName, bVersionFlag); | 540 GetValidateCaptionName(wsCaptionName, bVersionFlag); |
543 CFX_WideString wsWarning; | 541 CFX_WideString wsWarning; |
544 pAppProvider->LoadString(XFA_IDS_ValidateNullWarning, wsWarning); | 542 pAppProvider->LoadString(XFA_IDS_ValidateNullWarning, wsWarning); |
545 wsNullMsg.Format(wsWarning.c_str(), wsCaptionName.c_str(), | 543 wsNullMsg.Format(wsWarning.c_str(), wsCaptionName.c_str(), |
546 wsCaptionName.c_str()); | 544 wsCaptionName.c_str()); |
547 } | 545 } |
548 if (pAppProvider->MsgBox(wsNullMsg.AsStringC(), wsTitle.AsStringC(), | 546 if (pAppProvider->MsgBox(wsNullMsg.AsStringC(), wsTitle.AsStringC(), |
549 XFA_MBICON_Warning, XFA_MB_YesNo) == XFA_IDYes) { | 547 XFA_MBICON_Warning, XFA_MB_YesNo) == XFA_IDYes) { |
550 GetNode()->SetFlag(XFA_NODEFLAG_UserInteractive, TRUE, FALSE); | 548 GetNode()->SetFlag(XFA_NODEFLAG_UserInteractive, false); |
551 } | 549 } |
552 return XFA_EVENTERROR_Error; | 550 return XFA_EVENTERROR_Error; |
553 } | 551 } |
554 case XFA_ATTRIBUTEENUM_Disabled: | 552 case XFA_ATTRIBUTEENUM_Disabled: |
555 default: | 553 default: |
556 break; | 554 break; |
557 } | 555 } |
558 return XFA_EVENTERROR_Success; | 556 return XFA_EVENTERROR_Success; |
559 } | 557 } |
560 void CXFA_WidgetAcc::GetValidateCaptionName(CFX_WideString& wsCaptionName, | 558 void CXFA_WidgetAcc::GetValidateCaptionName(CFX_WideString& wsCaptionName, |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 ((bInitDoc || bStatus) && GetRawValue().IsEmpty()) | 618 ((bInitDoc || bStatus) && GetRawValue().IsEmpty()) |
621 ? nullptr | 619 ? nullptr |
622 : &pRetValue); | 620 : &pRetValue); |
623 } | 621 } |
624 XFA_VERSION version = GetDoc()->GetXFADoc()->GetCurVersionMode(); | 622 XFA_VERSION version = GetDoc()->GetXFADoc()->GetCurVersionMode(); |
625 FX_BOOL bVersionFlag = FALSE; | 623 FX_BOOL bVersionFlag = FALSE; |
626 if (version < XFA_VERSION_208) { | 624 if (version < XFA_VERSION_208) { |
627 bVersionFlag = TRUE; | 625 bVersionFlag = TRUE; |
628 } | 626 } |
629 if (bInitDoc) { | 627 if (bInitDoc) { |
630 validate.GetNode()->SetFlag(XFA_NODEFLAG_NeedsInitApp, FALSE, FALSE); | 628 validate.GetNode()->ClearFlag(XFA_NODEFLAG_NeedsInitApp); |
631 } else { | 629 } else { |
632 iFormat = ProcessFormatTestValidate(validate, bVersionFlag); | 630 iFormat = ProcessFormatTestValidate(validate, bVersionFlag); |
633 if (!bVersionFlag) { | 631 if (!bVersionFlag) { |
634 bVersionFlag = GetDoc()->GetXFADoc()->HasFlag(XFA_DOCFLAG_Scripting); | 632 bVersionFlag = GetDoc()->GetXFADoc()->HasFlag(XFA_DOCFLAG_Scripting); |
635 } | 633 } |
636 iRet |= ProcessNullTestValidate(validate, iFlags, bVersionFlag); | 634 iRet |= ProcessNullTestValidate(validate, iFlags, bVersionFlag); |
637 } | 635 } |
638 if (iFormat != XFA_EVENTERROR_Success) { | 636 if (iFormat != XFA_EVENTERROR_Success) { |
639 ProcessScriptTestValidate(validate, iRet, pRetValue, bVersionFlag); | 637 ProcessScriptTestValidate(validate, iRet, pRetValue, bVersionFlag); |
640 } | 638 } |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
744 CXFA_FFWidget* pWidget = NULL; | 742 CXFA_FFWidget* pWidget = NULL; |
745 while ((pWidget = GetNextWidget(pWidget))) { | 743 while ((pWidget = GetNextWidget(pWidget))) { |
746 if (pWidget == pExcept || !pWidget->IsLoaded() || | 744 if (pWidget == pExcept || !pWidget->IsLoaded() || |
747 (GetUIType() != XFA_ELEMENT_CheckButton && pWidget->IsFocused())) { | 745 (GetUIType() != XFA_ELEMENT_CheckButton && pWidget->IsFocused())) { |
748 continue; | 746 continue; |
749 } | 747 } |
750 pWidget->UpdateFWLData(); | 748 pWidget->UpdateFWLData(); |
751 pWidget->AddInvalidateRect(); | 749 pWidget->AddInvalidateRect(); |
752 } | 750 } |
753 } | 751 } |
754 void CXFA_WidgetAcc::NotifyEvent(uint32_t dwEvent, | 752 |
755 CXFA_FFWidget* pWidget, | |
756 void* pParam, | |
757 void* pAdditional) { | |
758 IXFA_DocProvider* pDocProvider = GetDoc()->GetDocProvider(); | |
759 if (pWidget) { | |
760 pDocProvider->WidgetEvent(pWidget, this, dwEvent, pParam, pAdditional); | |
761 } else { | |
762 pWidget = GetNextWidget(pWidget); | |
763 if (pWidget == NULL) { | |
764 pDocProvider->WidgetEvent(NULL, this, dwEvent, pParam, pAdditional); | |
765 return; | |
766 } | |
767 while (pWidget) { | |
768 pDocProvider->WidgetEvent(pWidget, this, dwEvent, pParam, pAdditional); | |
769 pWidget = GetNextWidget(pWidget); | |
770 } | |
771 } | |
772 } | |
773 void CXFA_WidgetAcc::CalcCaptionSize(CFX_SizeF& szCap) { | 753 void CXFA_WidgetAcc::CalcCaptionSize(CFX_SizeF& szCap) { |
774 CXFA_Caption caption = GetCaption(); | 754 CXFA_Caption caption = GetCaption(); |
775 if (!caption || caption.GetPresence() != XFA_ATTRIBUTEENUM_Visible) { | 755 if (!caption || caption.GetPresence() != XFA_ATTRIBUTEENUM_Visible) { |
776 return; | 756 return; |
777 } | 757 } |
778 LoadCaption(); | 758 LoadCaption(); |
779 XFA_ELEMENT eUIType = (XFA_ELEMENT)GetUIType(); | 759 XFA_ELEMENT eUIType = (XFA_ELEMENT)GetUIType(); |
780 int32_t iCapPlacement = caption.GetPlacementType(); | 760 int32_t iCapPlacement = caption.GetPlacementType(); |
781 FX_FLOAT fCapReserve = caption.GetReserve(); | 761 FX_FLOAT fCapReserve = caption.GetReserve(); |
782 const bool bVert = iCapPlacement == XFA_ATTRIBUTEENUM_Top || | 762 const bool bVert = iCapPlacement == XFA_ATTRIBUTEENUM_Top || |
(...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1716 if (pIDNode) { | 1696 if (pIDNode) { |
1717 pEmbAcc = (CXFA_WidgetAcc*)pIDNode->GetWidgetData(); | 1697 pEmbAcc = (CXFA_WidgetAcc*)pIDNode->GetWidgetData(); |
1718 } | 1698 } |
1719 if (pEmbAcc) { | 1699 if (pEmbAcc) { |
1720 pEmbAcc->GetValue(wsValue, XFA_VALUEPICTURE_Display); | 1700 pEmbAcc->GetValue(wsValue, XFA_VALUEPICTURE_Display); |
1721 return TRUE; | 1701 return TRUE; |
1722 } | 1702 } |
1723 } | 1703 } |
1724 return FALSE; | 1704 return FALSE; |
1725 } | 1705 } |
OLD | NEW |