296 lines
5.8 KiB
C++
296 lines
5.8 KiB
C++
#include "..\enodes.h"
|
||
#include "..\elisteners.h"
|
||
#include "..\emanagers.h"
|
||
#include "..\Win\winbase.h"
|
||
|
||
e2d::EButtonToggle::EButtonToggle()
|
||
: EButton()
|
||
, m_bToggle(true)
|
||
, m_pNormalOn(nullptr)
|
||
, m_pMouseoverOn(nullptr)
|
||
, m_pSelectedOn(nullptr)
|
||
, m_pDisabledOn(nullptr)
|
||
, m_pNormalOff(nullptr)
|
||
, m_pMouseoverOff(nullptr)
|
||
, m_pSelectedOff(nullptr)
|
||
, m_pDisabledOff(nullptr)
|
||
{
|
||
}
|
||
|
||
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, const BUTTON_CLICK_CALLBACK & callback)
|
||
: EButtonToggle()
|
||
{
|
||
this->setNormal(toggleOnNormal);
|
||
this->setNormalOff(toggleOffNormal);
|
||
this->setCallback(callback);
|
||
}
|
||
|
||
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, ENode * toggleOnSelected, ENode * toggleOffSelected, const BUTTON_CLICK_CALLBACK & callback)
|
||
: EButtonToggle()
|
||
{
|
||
this->setNormal(toggleOnNormal);
|
||
this->setNormalOff(toggleOffNormal);
|
||
this->setSelected(toggleOnSelected);
|
||
this->setSelectedOff(toggleOffSelected);
|
||
this->setCallback(callback);
|
||
}
|
||
|
||
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, ENode * toggleOnMouseOver, ENode * toggleOffMouseOver, ENode * toggleOnSelected, ENode * toggleOffSelected, const BUTTON_CLICK_CALLBACK & callback)
|
||
: EButtonToggle()
|
||
{
|
||
this->setNormal(toggleOnNormal);
|
||
this->setNormalOff(toggleOffNormal);
|
||
this->setMouseOver(toggleOnMouseOver);
|
||
this->setMouseOverOff(toggleOffMouseOver);
|
||
this->setSelected(toggleOnSelected);
|
||
this->setSelectedOff(toggleOffSelected);
|
||
this->setCallback(callback);
|
||
}
|
||
|
||
e2d::EButtonToggle::EButtonToggle(ENode * toggleOnNormal, ENode * toggleOffNormal, ENode * toggleOnMouseOver, ENode * toggleOffMouseOver, ENode * toggleOnSelected, ENode * toggleOffSelected, ENode * toggleOnDisabled, ENode * toggleOffDisabled, const BUTTON_CLICK_CALLBACK & callback)
|
||
: EButtonToggle()
|
||
{
|
||
this->setNormal(toggleOnNormal);
|
||
this->setNormalOff(toggleOffNormal);
|
||
this->setMouseOver(toggleOnMouseOver);
|
||
this->setMouseOverOff(toggleOffMouseOver);
|
||
this->setSelected(toggleOnSelected);
|
||
this->setSelectedOff(toggleOffSelected);
|
||
this->setDisabled(toggleOnDisabled);
|
||
this->setDisabledOff(toggleOffDisabled);
|
||
this->setCallback(callback);
|
||
}
|
||
|
||
void e2d::EButtonToggle::toggle()
|
||
{
|
||
// <20><><EFBFBD>ð<EFBFBD>ť״̬
|
||
setToggle(!m_bToggle);
|
||
// ִ<>лص<D0BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||
if (m_Callback)
|
||
{
|
||
m_Callback();
|
||
}
|
||
}
|
||
|
||
bool e2d::EButtonToggle::isToggleOn() const
|
||
{
|
||
return m_bToggle;
|
||
}
|
||
|
||
void e2d::EButtonToggle::setToggle(bool toggle)
|
||
{
|
||
if (m_bToggle != toggle)
|
||
{
|
||
m_bToggle = toggle;
|
||
_updateToggle();
|
||
_updateVisiable();
|
||
}
|
||
}
|
||
|
||
void e2d::EButtonToggle::setNormal(ENode * normal)
|
||
{
|
||
if (normal != m_pNormalOn)
|
||
{
|
||
// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
|
||
if (m_pNormalOn)
|
||
{
|
||
this->removeChild(m_pNormalOn);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
|
||
if (normal)
|
||
{
|
||
this->addChild(normal);
|
||
}
|
||
m_pNormalOn = normal;
|
||
|
||
_updateToggle();
|
||
_updateVisiable();
|
||
}
|
||
}
|
||
|
||
void e2d::EButtonToggle::setMouseOver(ENode * mouseover)
|
||
{
|
||
if (mouseover != m_pMouseoverOn)
|
||
{
|
||
// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
|
||
if (m_pMouseoverOn)
|
||
{
|
||
this->removeChild(m_pMouseoverOn);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
|
||
if (mouseover)
|
||
{
|
||
this->addChild(mouseover);
|
||
}
|
||
m_pMouseoverOn = mouseover;
|
||
|
||
_updateToggle();
|
||
_updateVisiable();
|
||
}
|
||
}
|
||
|
||
void e2d::EButtonToggle::setSelected(ENode * selected)
|
||
{
|
||
if (selected != m_pSelectedOn)
|
||
{
|
||
// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
|
||
if (m_pSelectedOn)
|
||
{
|
||
this->removeChild(m_pSelectedOn);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
|
||
if (selected)
|
||
{
|
||
this->addChild(selected);
|
||
}
|
||
m_pSelectedOn = selected;
|
||
|
||
_updateToggle();
|
||
_updateVisiable();
|
||
}
|
||
}
|
||
|
||
void e2d::EButtonToggle::setDisabled(ENode * disabled)
|
||
{
|
||
if (disabled != m_pDisabledOn)
|
||
{
|
||
// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
|
||
if (m_pDisabledOn)
|
||
{
|
||
this->removeChild(m_pDisabledOn);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
|
||
if (disabled)
|
||
{
|
||
this->addChild(disabled);
|
||
}
|
||
m_pDisabledOn = disabled;
|
||
|
||
_updateToggle();
|
||
_updateVisiable();
|
||
}
|
||
}
|
||
|
||
void e2d::EButtonToggle::setNormalOff(ENode * normal)
|
||
{
|
||
if (normal != m_pNormalOff)
|
||
{
|
||
// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
|
||
if (m_pNormalOff)
|
||
{
|
||
this->removeChild(m_pNormalOff);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
|
||
if (normal)
|
||
{
|
||
this->addChild(normal);
|
||
}
|
||
m_pNormalOff = normal;
|
||
|
||
_updateToggle();
|
||
_updateVisiable();
|
||
}
|
||
}
|
||
|
||
void e2d::EButtonToggle::setMouseOverOff(ENode * mouseover)
|
||
{
|
||
if (mouseover != m_pMouseoverOff)
|
||
{
|
||
// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
|
||
if (m_pMouseoverOff)
|
||
{
|
||
this->removeChild(m_pMouseoverOff);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
|
||
if (mouseover)
|
||
{
|
||
this->addChild(mouseover);
|
||
}
|
||
m_pMouseoverOff = mouseover;
|
||
|
||
_updateToggle();
|
||
_updateVisiable();
|
||
}
|
||
}
|
||
|
||
void e2d::EButtonToggle::setSelectedOff(ENode * selected)
|
||
{
|
||
if (selected != m_pSelectedOff)
|
||
{
|
||
// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
|
||
if (m_pSelectedOff)
|
||
{
|
||
this->removeChild(m_pSelectedOff);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
|
||
if (selected)
|
||
{
|
||
this->addChild(selected);
|
||
}
|
||
m_pSelectedOff = selected;
|
||
|
||
_updateToggle();
|
||
_updateVisiable();
|
||
}
|
||
}
|
||
|
||
void e2d::EButtonToggle::setDisabledOff(ENode * disabled)
|
||
{
|
||
if (disabled != m_pDisabledOff)
|
||
{
|
||
// <20>Ƴ<EFBFBD><C6B3>ɵ<EFBFBD>
|
||
if (m_pDisabledOff)
|
||
{
|
||
this->removeChild(m_pDisabledOff);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
|
||
if (disabled)
|
||
{
|
||
this->addChild(disabled);
|
||
}
|
||
m_pDisabledOff = disabled;
|
||
|
||
_updateToggle();
|
||
_updateVisiable();
|
||
}
|
||
}
|
||
|
||
void e2d::EButtonToggle::_updateToggle()
|
||
{
|
||
if (m_bToggle)
|
||
{
|
||
m_pNormal = m_pNormalOn;
|
||
m_pMouseover = m_pMouseoverOn;
|
||
m_pSelected = m_pSelectedOn;
|
||
m_pDisabled = m_pDisabledOn;
|
||
|
||
if (m_pNormalOff) m_pNormalOff->setVisiable(false);
|
||
if (m_pMouseoverOff) m_pMouseoverOff->setVisiable(false);
|
||
if (m_pSelectedOff) m_pSelectedOff->setVisiable(false);
|
||
if (m_pDisabledOff) m_pDisabledOff->setVisiable(false);
|
||
}
|
||
else
|
||
{
|
||
m_pNormal = m_pNormalOff;
|
||
m_pMouseover = m_pMouseoverOff;
|
||
m_pSelected = m_pSelectedOff;
|
||
m_pDisabled = m_pDisabledOff;
|
||
|
||
if (m_pNormalOn) m_pNormalOn->setVisiable(false);
|
||
if (m_pMouseoverOn) m_pMouseoverOn->setVisiable(false);
|
||
if (m_pSelectedOn) m_pSelectedOn->setVisiable(false);
|
||
if (m_pDisabledOn) m_pDisabledOn->setVisiable(false);
|
||
}
|
||
}
|
||
|
||
void e2d::EButtonToggle::_runCallback()
|
||
{
|
||
m_bToggle = !m_bToggle;
|
||
_updateToggle();
|
||
|
||
if (m_Callback)
|
||
{
|
||
m_Callback();
|
||
}
|
||
}
|