FX_BOOL CXFA_FFCheckButton::LoadWidget() { CFWL_CheckBox* pCheckBox = CFWL_CheckBox::Create(); pCheckBox->Initialize(); m_pNormalWidget = pCheckBox; m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pOldDelegate = m_pNormalWidget->SetDelegate(this); if (m_pDataAcc->IsRadioButton()) { pCheckBox->ModifyStylesEx(FWL_STYLEEXT_CKB_RadioButton, 0xFFFFFFFF); } m_pNormalWidget->LockUpdate(); UpdateWidgetProperty(); SetFWLCheckState(m_pDataAcc->GetCheckState()); m_pNormalWidget->UnlockUpdate(); return CXFA_FFField::LoadWidget(); }
bool CXFA_FFCheckButton::LoadWidget() { auto pNew = pdfium::MakeUnique<CFWL_CheckBox>(GetFWLApp()); CFWL_CheckBox* pCheckBox = pNew.get(); m_pNormalWidget = std::move(pNew); m_pNormalWidget->SetLayoutItem(this); CFWL_NoteDriver* pNoteDriver = m_pNormalWidget->GetOwnerApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(), m_pNormalWidget.get()); m_pOldDelegate = m_pNormalWidget->GetDelegate(); m_pNormalWidget->SetDelegate(this); if (m_pNode->IsRadioButton()) pCheckBox->ModifyStylesEx(FWL_STYLEEXT_CKB_RadioButton, 0xFFFFFFFF); m_pNormalWidget->LockUpdate(); UpdateWidgetProperty(); SetFWLCheckState(m_pNode->GetCheckState()); m_pNormalWidget->UnlockUpdate(); return CXFA_FFField::LoadWidget(); }
void CXFA_FFCheckButton::UpdateWidgetProperty() { CFWL_CheckBox* pCheckBox = (CFWL_CheckBox*)m_pNormalWidget; if (!m_pNormalWidget) { return; } FX_FLOAT fSize = m_pDataAcc->GetCheckButtonSize(); pCheckBox->SetBoxSize(fSize); uint32_t dwStyleEx = FWL_STYLEEXT_CKB_SignShapeCross; int32_t iCheckMark = m_pDataAcc->GetCheckButtonMark(); switch (iCheckMark) { case XFA_ATTRIBUTEENUM_Check: dwStyleEx = FWL_STYLEEXT_CKB_SignShapeCheck; break; case XFA_ATTRIBUTEENUM_Circle: dwStyleEx = FWL_STYLEEXT_CKB_SignShapeCircle; break; case XFA_ATTRIBUTEENUM_Cross: break; case XFA_ATTRIBUTEENUM_Diamond: dwStyleEx = FWL_STYLEEXT_CKB_SignShapeDiamond; break; case XFA_ATTRIBUTEENUM_Square: dwStyleEx = FWL_STYLEEXT_CKB_SignShapeSquare; break; case XFA_ATTRIBUTEENUM_Star: dwStyleEx = FWL_STYLEEXT_CKB_SignShapeStar; break; default: { int32_t iShape = m_pDataAcc->GetCheckButtonShape(); if (iShape == XFA_ATTRIBUTEENUM_Round) { dwStyleEx = FWL_STYLEEXT_CKB_SignShapeCircle; } } break; } if (m_pDataAcc->IsAllowNeutral()) { dwStyleEx |= FWL_STYLEEXT_CKB_3State; } pCheckBox->ModifyStylesEx( dwStyleEx, FWL_STYLEEXT_CKB_SignShapeMask | FWL_STYLEEXT_CKB_3State); }