Index: xfa/fwl/core/ifwl_checkbox.cpp |
diff --git a/xfa/fwl/basewidget/fwl_checkboximp.cpp b/xfa/fwl/core/ifwl_checkbox.cpp |
similarity index 88% |
rename from xfa/fwl/basewidget/fwl_checkboximp.cpp |
rename to xfa/fwl/core/ifwl_checkbox.cpp |
index 581e45319f1c53241befcd8d137ed55d61f25b7b..d822d3e8203fcd0a4ddab8b5e71c189f68ec4ad4 100644 |
--- a/xfa/fwl/basewidget/fwl_checkboximp.cpp |
+++ b/xfa/fwl/core/ifwl_checkbox.cpp |
@@ -4,18 +4,17 @@ |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
-#include "xfa/fwl/basewidget/fwl_checkboximp.h" |
+#include "xfa/fwl/core/ifwl_checkbox.h" |
#include <algorithm> |
#include "xfa/fde/tto/fde_textout.h" |
-#include "xfa/fwl/basewidget/ifwl_checkbox.h" |
#include "xfa/fwl/core/cfwl_message.h" |
#include "xfa/fwl/core/cfwl_themebackground.h" |
#include "xfa/fwl/core/cfwl_themetext.h" |
#include "xfa/fwl/core/cfwl_widgetmgr.h" |
#include "xfa/fwl/core/fwl_noteimp.h" |
-#include "xfa/fwl/core/fwl_widgetimp.h" |
+#include "xfa/fwl/core/ifwl_checkbox.h" |
#include "xfa/fwl/core/ifwl_themeprovider.h" |
namespace { |
@@ -27,23 +26,12 @@ const int kCaptionMargin = 5; |
// static |
IFWL_CheckBox* IFWL_CheckBox::Create(const CFWL_WidgetImpProperties& properties, |
IFWL_Widget* pOuter) { |
- IFWL_CheckBox* pCheckBox = new IFWL_CheckBox; |
- CFWL_CheckBoxImp* pCheckBoxImpl = new CFWL_CheckBoxImp(properties, pOuter); |
- pCheckBox->SetImpl(pCheckBoxImpl); |
- pCheckBoxImpl->SetInterface(pCheckBox); |
- return pCheckBox; |
-} |
-IFWL_CheckBox::IFWL_CheckBox() {} |
-int32_t IFWL_CheckBox::GetCheckState() { |
- return static_cast<CFWL_CheckBoxImp*>(GetImpl())->GetCheckState(); |
-} |
-FWL_Error IFWL_CheckBox::SetCheckState(int32_t iCheck) { |
- return static_cast<CFWL_CheckBoxImp*>(GetImpl())->SetCheckState(iCheck); |
+ return new IFWL_CheckBox(properties, pOuter); |
} |
-CFWL_CheckBoxImp::CFWL_CheckBoxImp(const CFWL_WidgetImpProperties& properties, |
- IFWL_Widget* pOuter) |
- : CFWL_WidgetImp(properties, pOuter), |
+IFWL_CheckBox::IFWL_CheckBox(const CFWL_WidgetImpProperties& properties, |
+ IFWL_Widget* pOuter) |
+ : IFWL_Widget(properties, pOuter), |
m_dwTTOStyles(FDE_TTOSTYLE_SingleLine), |
m_iTTOAlign(FDE_TTOALIGNMENT_Center), |
m_bBtnDown(FALSE) { |
@@ -53,31 +41,32 @@ CFWL_CheckBoxImp::CFWL_CheckBoxImp(const CFWL_WidgetImpProperties& properties, |
m_rtFocus.Reset(); |
} |
-CFWL_CheckBoxImp::~CFWL_CheckBoxImp() {} |
+IFWL_CheckBox::~IFWL_CheckBox() {} |
-FWL_Error CFWL_CheckBoxImp::GetClassName(CFX_WideString& wsClass) const { |
+FWL_Error IFWL_CheckBox::GetClassName(CFX_WideString& wsClass) const { |
wsClass = FWL_CLASS_CheckBox; |
return FWL_Error::Succeeded; |
} |
-FWL_Type CFWL_CheckBoxImp::GetClassID() const { |
+FWL_Type IFWL_CheckBox::GetClassID() const { |
return FWL_Type::CheckBox; |
} |
-FWL_Error CFWL_CheckBoxImp::Initialize() { |
- if (CFWL_WidgetImp::Initialize() != FWL_Error::Succeeded) |
+FWL_Error IFWL_CheckBox::Initialize() { |
+ if (IFWL_Widget::Initialize() != FWL_Error::Succeeded) |
return FWL_Error::Indefinite; |
m_pDelegate = new CFWL_CheckBoxImpDelegate(this); |
return FWL_Error::Succeeded; |
} |
-FWL_Error CFWL_CheckBoxImp::Finalize() { |
+FWL_Error IFWL_CheckBox::Finalize() { |
delete m_pDelegate; |
m_pDelegate = nullptr; |
- return CFWL_WidgetImp::Finalize(); |
+ return IFWL_Widget::Finalize(); |
} |
-FWL_Error CFWL_CheckBoxImp::GetWidgetRect(CFX_RectF& rect, FX_BOOL bAutoSize) { |
+ |
+FWL_Error IFWL_CheckBox::GetWidgetRect(CFX_RectF& rect, FX_BOOL bAutoSize) { |
if (bAutoSize) { |
rect.Set(0, 0, 0, 0); |
if (!m_pProperties->m_pThemeProvider) |
@@ -87,7 +76,7 @@ FWL_Error CFWL_CheckBoxImp::GetWidgetRect(CFX_RectF& rect, FX_BOOL bAutoSize) { |
if (!m_pProperties->m_pDataProvider) |
return FWL_Error::Indefinite; |
CFX_WideString wsCaption; |
- m_pProperties->m_pDataProvider->GetCaption(m_pInterface, wsCaption); |
+ m_pProperties->m_pDataProvider->GetCaption(this, wsCaption); |
if (wsCaption.GetLength() > 0) { |
CFX_SizeF sz = CalcTextSize( |
wsCaption, m_pProperties->m_pThemeProvider, |
@@ -97,18 +86,19 @@ FWL_Error CFWL_CheckBoxImp::GetWidgetRect(CFX_RectF& rect, FX_BOOL bAutoSize) { |
rect.Inflate(kCaptionMargin, kCaptionMargin); |
IFWL_CheckBoxDP* pData = |
static_cast<IFWL_CheckBoxDP*>(m_pProperties->m_pDataProvider); |
- FX_FLOAT fCheckBox = pData->GetBoxSize(m_pInterface); |
+ FX_FLOAT fCheckBox = pData->GetBoxSize(this); |
rect.width += fCheckBox; |
if (rect.height < fCheckBox) { |
rect.height = fCheckBox; |
} |
- CFWL_WidgetImp::GetWidgetRect(rect, TRUE); |
+ IFWL_Widget::GetWidgetRect(rect, TRUE); |
} else { |
rect = m_pProperties->m_rtWidget; |
} |
return FWL_Error::Succeeded; |
} |
-FWL_Error CFWL_CheckBoxImp::Update() { |
+ |
+FWL_Error IFWL_CheckBox::Update() { |
if (IsLocked()) { |
return FWL_Error::Indefinite; |
} |
@@ -119,8 +109,9 @@ FWL_Error CFWL_CheckBoxImp::Update() { |
Layout(); |
return FWL_Error::Succeeded; |
} |
-FWL_Error CFWL_CheckBoxImp::DrawWidget(CFX_Graphics* pGraphics, |
- const CFX_Matrix* pMatrix) { |
+ |
+FWL_Error IFWL_CheckBox::DrawWidget(CFX_Graphics* pGraphics, |
+ const CFX_Matrix* pMatrix) { |
if (!pGraphics) |
return FWL_Error::Indefinite; |
if (!m_pProperties->m_pThemeProvider) |
@@ -136,7 +127,7 @@ FWL_Error CFWL_CheckBoxImp::DrawWidget(CFX_Graphics* pGraphics, |
int32_t dwStates = GetPartStates(); |
{ |
CFWL_ThemeBackground param; |
- param.m_pWidget = m_pInterface; |
+ param.m_pWidget = this; |
param.m_iPart = CFWL_Part::Background; |
param.m_dwStates = dwStates; |
param.m_pGraphics = pGraphics; |
@@ -156,12 +147,12 @@ FWL_Error CFWL_CheckBoxImp::DrawWidget(CFX_Graphics* pGraphics, |
return FWL_Error::Indefinite; |
{ |
CFX_WideString wsCaption; |
- m_pProperties->m_pDataProvider->GetCaption(m_pInterface, wsCaption); |
+ m_pProperties->m_pDataProvider->GetCaption(this, wsCaption); |
int32_t iLen = wsCaption.GetLength(); |
if (iLen <= 0) |
return FWL_Error::Indefinite; |
CFWL_ThemeText textParam; |
- textParam.m_pWidget = m_pInterface; |
+ textParam.m_pWidget = this; |
textParam.m_iPart = CFWL_Part::Caption; |
textParam.m_dwStates = dwStates; |
textParam.m_pGraphics = pGraphics; |
@@ -176,7 +167,8 @@ FWL_Error CFWL_CheckBoxImp::DrawWidget(CFX_Graphics* pGraphics, |
} |
return FWL_Error::Succeeded; |
} |
-int32_t CFWL_CheckBoxImp::GetCheckState() { |
+ |
+int32_t IFWL_CheckBox::GetCheckState() { |
if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_3State) && |
((m_pProperties->m_dwStates & FWL_STATE_CKB_CheckMask) == |
FWL_STATE_CKB_Neutral)) { |
@@ -188,7 +180,8 @@ int32_t CFWL_CheckBoxImp::GetCheckState() { |
} |
return 0; |
} |
-FWL_Error CFWL_CheckBoxImp::SetCheckState(int32_t iCheck) { |
+ |
+FWL_Error IFWL_CheckBox::SetCheckState(int32_t iCheck) { |
m_pProperties->m_dwStates &= ~FWL_STATE_CKB_CheckMask; |
switch (iCheck) { |
case 0: { |
@@ -209,7 +202,8 @@ FWL_Error CFWL_CheckBoxImp::SetCheckState(int32_t iCheck) { |
Repaint(&m_rtClient); |
return FWL_Error::Succeeded; |
} |
-void CFWL_CheckBoxImp::Layout() { |
+ |
+void IFWL_CheckBox::Layout() { |
int32_t width = int32_t(m_pProperties->m_rtWidget.width + 0.5f); |
int32_t height = int32_t(m_pProperties->m_rtWidget.height + 0.5f); |
m_pProperties->m_rtWidget.width = (FX_FLOAT)width; |
@@ -224,7 +218,7 @@ void CFWL_CheckBoxImp::Layout() { |
return; |
IFWL_CheckBoxDP* pData = |
static_cast<IFWL_CheckBoxDP*>(m_pProperties->m_pDataProvider); |
- FX_FLOAT fCheckBox = pData->GetBoxSize(m_pInterface); |
+ FX_FLOAT fCheckBox = pData->GetBoxSize(this); |
switch (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_VLayoutMask) { |
case FWL_STYLEEXT_CKB_Top: { |
fBoxTop = m_rtClient.top; |
@@ -256,7 +250,7 @@ void CFWL_CheckBoxImp::Layout() { |
rtFocus.Set(m_rtCaption.left, m_rtCaption.top, m_rtCaption.width, |
m_rtCaption.height); |
CFX_WideString wsCaption; |
- m_pProperties->m_pDataProvider->GetCaption(m_pInterface, wsCaption); |
+ m_pProperties->m_pDataProvider->GetCaption(this, wsCaption); |
if (wsCaption.IsEmpty()) { |
m_rtFocus.Set(0, 0, 0, 0); |
} else { |
@@ -288,7 +282,8 @@ void CFWL_CheckBoxImp::Layout() { |
m_rtFocus.Inflate(1, 1); |
} |
} |
-uint32_t CFWL_CheckBoxImp::GetPartStates() { |
+ |
+uint32_t IFWL_CheckBox::GetPartStates() { |
int32_t dwStates = CFWL_PartState_Normal; |
if ((m_pProperties->m_dwStates & FWL_STATE_CKB_CheckMask) == |
FWL_STATE_CKB_Neutral) { |
@@ -311,7 +306,8 @@ uint32_t CFWL_CheckBoxImp::GetPartStates() { |
} |
return dwStates; |
} |
-void CFWL_CheckBoxImp::UpdateTextOutStyles() { |
+ |
+void IFWL_CheckBox::UpdateTextOutStyles() { |
m_iTTOAlign = FDE_TTOALIGNMENT_Center; |
switch (m_pProperties->m_dwStyleExes & |
(FWL_STYLEEXT_CKB_HLayoutMask | FWL_STYLEEXT_CKB_VLayoutMask)) { |
@@ -363,7 +359,8 @@ void CFWL_CheckBoxImp::UpdateTextOutStyles() { |
m_dwTTOStyles |= FDE_TTOSTYLE_SingleLine; |
} |
} |
-void CFWL_CheckBoxImp::NextStates() { |
+ |
+void IFWL_CheckBox::NextStates() { |
uint32_t dwFirststate = m_pProperties->m_dwStates; |
if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_RadioButton) { |
if ((m_pProperties->m_dwStates & FWL_STATE_CKB_CheckMask) == |
@@ -371,12 +368,12 @@ void CFWL_CheckBoxImp::NextStates() { |
CFWL_WidgetMgr* pWidgetMgr = CFWL_WidgetMgr::GetInstance(); |
if (!pWidgetMgr->IsFormDisabled()) { |
CFX_ArrayTemplate<IFWL_Widget*> radioarr; |
- pWidgetMgr->GetSameGroupRadioButton(m_pInterface, radioarr); |
+ pWidgetMgr->GetSameGroupRadioButton(this, radioarr); |
IFWL_CheckBox* pCheckBox = nullptr; |
int32_t iCount = radioarr.GetSize(); |
for (int32_t i = 0; i < iCount; i++) { |
pCheckBox = static_cast<IFWL_CheckBox*>(radioarr[i]); |
- if (pCheckBox != m_pInterface && |
+ if (pCheckBox != this && |
pCheckBox->GetStates() & FWL_STATE_CKB_Checked) { |
pCheckBox->SetCheckState(0); |
CFX_RectF rt; |
@@ -411,11 +408,12 @@ void CFWL_CheckBoxImp::NextStates() { |
uint32_t dwLaststate = m_pProperties->m_dwStates; |
if (dwFirststate != dwLaststate) { |
CFWL_EvtCkbCheckStateChanged wmCheckBoxState; |
- wmCheckBoxState.m_pSrcTarget = m_pInterface; |
+ wmCheckBoxState.m_pSrcTarget = this; |
DispatchEvent(&wmCheckBoxState); |
} |
} |
-CFWL_CheckBoxImpDelegate::CFWL_CheckBoxImpDelegate(CFWL_CheckBoxImp* pOwner) |
+ |
+CFWL_CheckBoxImpDelegate::CFWL_CheckBoxImpDelegate(IFWL_CheckBox* pOwner) |
: m_pOwner(pOwner) {} |
void CFWL_CheckBoxImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { |
@@ -465,9 +463,7 @@ void CFWL_CheckBoxImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { |
OnKeyDown(pKey); |
break; |
} |
- default: { |
- break; |
- } |
+ default: { break; } |
} |
CFWL_WidgetImpDelegate::OnProcessMessage(pMessage); |
@@ -482,6 +478,7 @@ void CFWL_CheckBoxImpDelegate::OnActivate(CFWL_Message* pMsg) { |
m_pOwner->m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Deactivated; |
m_pOwner->Repaint(&(m_pOwner->m_rtClient)); |
} |
+ |
void CFWL_CheckBoxImpDelegate::OnFocusChanged(CFWL_Message* pMsg, |
FX_BOOL bSet) { |
if (bSet) { |
@@ -491,6 +488,7 @@ void CFWL_CheckBoxImpDelegate::OnFocusChanged(CFWL_Message* pMsg, |
} |
m_pOwner->Repaint(&(m_pOwner->m_rtClient)); |
} |
+ |
void CFWL_CheckBoxImpDelegate::OnLButtonDown(CFWL_MsgMouse* pMsg) { |
if (m_pOwner->m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) { |
return; |
@@ -503,6 +501,7 @@ void CFWL_CheckBoxImpDelegate::OnLButtonDown(CFWL_MsgMouse* pMsg) { |
m_pOwner->m_pProperties->m_dwStates |= FWL_STATE_CKB_Pressed; |
m_pOwner->Repaint(&(m_pOwner->m_rtClient)); |
} |
+ |
void CFWL_CheckBoxImpDelegate::OnLButtonUp(CFWL_MsgMouse* pMsg) { |
if (!m_pOwner->m_bBtnDown) { |
return; |
@@ -515,6 +514,7 @@ void CFWL_CheckBoxImpDelegate::OnLButtonUp(CFWL_MsgMouse* pMsg) { |
m_pOwner->m_pProperties->m_dwStates &= ~FWL_STATE_CKB_Pressed; |
m_pOwner->NextStates(); |
} |
+ |
void CFWL_CheckBoxImpDelegate::OnMouseMove(CFWL_MsgMouse* pMsg) { |
if (m_pOwner->m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) { |
return; |
@@ -552,6 +552,7 @@ void CFWL_CheckBoxImpDelegate::OnMouseMove(CFWL_MsgMouse* pMsg) { |
m_pOwner->Repaint(&(m_pOwner->m_rtBox)); |
} |
} |
+ |
void CFWL_CheckBoxImpDelegate::OnMouseLeave(CFWL_MsgMouse* pMsg) { |
if (m_pOwner->m_bBtnDown) { |
m_pOwner->m_pProperties->m_dwStates |= FWL_STATE_CKB_Hovered; |
@@ -560,6 +561,7 @@ void CFWL_CheckBoxImpDelegate::OnMouseLeave(CFWL_MsgMouse* pMsg) { |
} |
m_pOwner->Repaint(&(m_pOwner->m_rtBox)); |
} |
+ |
void CFWL_CheckBoxImpDelegate::OnKeyDown(CFWL_MsgKey* pMsg) { |
if (pMsg->m_dwKeyCode == FWL_VKEY_Tab) { |
m_pOwner->DispatchKeyEvent(pMsg); |