DragonNest/Common/EtInterface/EtUITabDialog.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

164 lines
3.8 KiB
C++

#include "StdAfx.h"
#include "EtUITabDialog.h"
#include "EtUIRadioButton.h"
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
CEtUITabDialog::CEtUITabDialog( UI_DIALOG_TYPE dialogType, CEtUIDialog *pParentDialog, int nID, CEtUICallback *pCallback, bool bAutoCursor )
: CEtUIDialog( dialogType, pParentDialog, nID, pCallback, bAutoCursor )
{
}
CEtUITabDialog::~CEtUITabDialog(void)
{
}
void CEtUITabDialog::AddTabDialog( CEtUIControl *pControl, CEtUIDialog *pDialog )
{
ASSERT(pControl&&pDialog&&"CEtUITabDialog::AddTabDialog");
if (pControl->GetType() != UI_CONTROL_RADIOBUTTON)
{
_ASSERT(0);
return;
}
CEtUIRadioButton* pRadioBtn = static_cast<CEtUIRadioButton*>(pControl);
int tabID = pRadioBtn->GetTabID();
#if defined (_DEBUG) || defined (_RDEBUG)
std::vector< std::pair<DWORD, CEtUIControl*> >::const_iterator iter = m_vecTabControl.begin();
for(;iter != m_vecTabControl.end(); ++iter)
{
const std::pair<DWORD, CEtUIControl*> &id_ctl_pair = *iter;
if (id_ctl_pair.first == tabID)
{
_ASSERT(0 && "TabDialog ID already exists!");
break;
}
}
#endif
m_vecTabControl.push_back( std::pair<DWORD, CEtUIControl*>(tabID , pControl) );
m_groupTabDialog.AddDialog( static_cast<CEtUIRadioButton*>(pControl)->GetTabID(), pDialog );
}
void CEtUITabDialog::ChangeDialog( CEtUIControl * pControl, CEtUIDialog * pDialog )
{
m_groupTabDialog.ChangeDialog( static_cast<CEtUIRadioButton*>(pControl)->GetTabID(), pDialog );
}
void CEtUITabDialog::SetCheckedTab( DWORD dwControlID )
{
int nVecSize = (int)m_vecTabControl.size();
for( int i=0; i<nVecSize; ++i )
{
std::pair<DWORD, CEtUIControl*> &id_ctl_pair = m_vecTabControl[i];
if( id_ctl_pair.first == dwControlID )
{
static_cast<CEtUIRadioButton*>(id_ctl_pair.second)->SetChecked(true);
return;
}
}
}
CEtUIRadioButton* CEtUITabDialog::GetTabControl(DWORD dwTabID)
{
if (dwTabID < 0 || dwTabID >= (DWORD)m_vecTabControl.size())
return NULL;
int nVecSize = (int)m_vecTabControl.size();
for( int i=0; i<nVecSize; ++i )
{
std::pair<DWORD, CEtUIControl*> &id_ctl_pair = m_vecTabControl[i];
if( id_ctl_pair.first == dwTabID )
return static_cast<CEtUIRadioButton*>(id_ctl_pair.second);
}
return NULL;
}
DWORD CEtUITabDialog::GetCurrentTabID()
{
int nVecSize = (int)m_vecTabControl.size();
for( int i=0; i<nVecSize; ++i )
{
std::pair<DWORD, CEtUIControl*> &id_ctl_pair = m_vecTabControl[i];
if( static_cast<CEtUIRadioButton*>(id_ctl_pair.second)->IsChecked() )
{
return id_ctl_pair.first;
}
}
return UINT_MAX;
}
const CEtUIRadioButton* CEtUITabDialog::GetCurrentTabControl() const
{
int nVecSize = (int)m_vecTabControl.size();
for( int i=0; i<nVecSize; ++i )
{
const std::pair<DWORD, CEtUIControl*> &id_ctl_pair = m_vecTabControl[i];
const CEtUIRadioButton* pBtn = static_cast<const CEtUIRadioButton*>(id_ctl_pair.second);
if (pBtn && pBtn->IsChecked())
return pBtn;
}
return NULL;
}
void CEtUITabDialog::ProcessCommand( UINT nCommand, bool bTriggeredByUser, CEtUIControl *pControl, UINT uMsg )
{
ASSERT(pControl&&"CEtUITabDialog::ProcessCommand, pControl is NULL!");
if( nCommand == EVENT_RADIOBUTTON_CHANGED )
{
m_groupTabDialog.ShowDialog( static_cast<CEtUIRadioButton*>(pControl)->GetTabID(), true );
}
CEtUIDialog::ProcessCommand( nCommand, bTriggeredByUser, pControl, uMsg );
}
void CEtUITabDialog::Show( bool bShow )
{
CEtUIDialog::Show( bShow );
DWORD dwDlgID(UINT_MAX);
if( bShow )
{
dwDlgID = GetCurrentTabID();
}
else
{
dwDlgID = m_groupTabDialog.GetShowDialogID();
}
if( dwDlgID != UINT_MAX )
{
m_groupTabDialog.ShowDialog( dwDlgID, bShow );
}
}
void CEtUITabDialog::MoveDialog( float fX, float fY )
{
CEtUIDialog::MoveDialog( fX, fY );
m_groupTabDialog.MoveDialog( fX, fY);
}
int CEtUITabDialog::GetFrontTabID()
{
if( m_vecTabControl.empty() ) {
return -1;
}
return m_vecTabControl.front().first;
}