Files
2022-10-26 12:25:11 +08:00

215 lines
5.3 KiB
Objective-C

#ifndef __USER_INTERFACE_SYSTEM_CONFIRM_H__
#define __USER_INTERFACE_SYSTEM_CONFIRM_H__
//------------------------------------------------------------------------------
/**
@class uiSystemConfirm
system confirm
(C) 2005 ckbang
*/
#include "uiSystemConfirm_def.h"
#include "uibase.h"
#include "interfacemanager.h"
#include "uiSystemMan/uiSystemMan.h"
#include "GlobalFunc.h"
class Command;
class uiSystemConfirm :
public uiBase
{
enum eDIALOG_POS
{
DLGPOS_BTN_YES=0,
DLGPOS_BTN_NO,
DLGPOS_LST_CONFIRM_MSG,
DLGPOS_BTN_CLOSE,
DIALOG_MAX,
};
public:
uiSystemConfirm(InterfaceManager *pUIMan);
virtual ~uiSystemConfirm();
//--------------------------------------------------------------------------
// init/release
//
public:
virtual void Init(CDrawBase* pDrawBase);
virtual void Release();
void Clear();
void ClearToken();
private:
Command* m_pOkCommand;
Command* m_pCancelCommand;
public:
void SetOkCommand( Command* pCommand );
void SetCancelCommand( Command* pCommand );
//--------------------------------------------------------------------------
// helper/comms.
//
public:
fn_SysConfirm m_fnSysConfirm;
fn_SysConfirmCloseButton m_fnSysConfirmCloseButton;
void SetConfirmMessage(const TCHAR * pszMessage);
void SetLockingEffect();
bool GetLockingEffect();
//--------------------------------------------------------------------------
// functions
//
public:
void RenderRect(RECT rc, WzColor color);
void SetTitle(LPCTSTR pszTitle);
void SetSubject(LPCTSTR pszSubject);
void SetBtnStringID(DWORD dwOkID, DWORD dwCancleID);
void SetShowCancleButton(bool is_show);
//--------------------------------------------------------------------------
// dialog functions
//
public:
DWORD m_dwDialogKey;
protected:
virtual void OnShowWindow( BOOL val );
virtual void OnUpdateSolarDialog();
virtual void OnRenderSolarDialog();
private:
protected:
CControlWZ * getControl( POSTYPE AtPos );
POSTYPE getCtrlIDToPos( WzID wzId );
CCtrlStaticWZ * getCtrlText(POSTYPE pos);
static WzID m_wzId[DIALOG_MAX];
//--------------------------------------------------------------------------
// procedure
//
public:
virtual void NetworkProc( MSG_BASE * pMsg ) {}; // Pure
virtual void MessageProc( SI_MESSAGE * pMessage ); // Pure
void SetbShow(BOOL bShow);
void OnClose();
void SetTimer(DWORD dwIntervalTime){ m_Timer.SetTimer(dwIntervalTime); }
void ClearTimer(){ m_Timer.Clear();}
void SetTitleTextGap(BYTE gap) { m_TitleTextGap = gap; }
//--------------------------------------------------------------------------
// member vars
//
private:
bool m_bLockingEffect;
BOOL m_bShow;
std::vector<util::_tstring> m_vstr;
std::vector<util::_tstring> m_vSubject;
util::_tstring m_strTitle;
DWORD m_dwOKStrID;
DWORD m_dwCancleStrID;
CCtrlStaticWZ * m_pCtrlStatic[2];
WzSimpleMesh *m_pMessageMesh;
util::Timer m_Timer;
bool m_bDestroyWindow;
DWORD m_TimerKey;
BYTE m_TitleTextGap;
};
//////////////////////////////////////////////////////////////////////////
//
inline
void
uiSystemConfirm::SetbShow(BOOL bShow)
{
m_bShow = bShow;
}
//------------------------------------------------------------------------------
/**
*/
inline
void
uiSystemConfirm::SetConfirmMessage(const TCHAR * pszMessage)
{
SetBtnStringID( this->m_dwOKStrID, this->m_dwCancleStrID );
CControlWZ * pLstControl = getControl( DLGPOS_LST_CONFIRM_MSG );
if( pLstControl )
{
RECT rcCtrl = pLstControl->GetSizeRect();
int iCtrlWidth = rcCtrl.right - rcCtrl.left - 14;
GlobalFunc::ProcessWordWrapByFontSize( &this->m_vstr, const_cast<TCHAR *>(pszMessage), c_wiSystemMsgFont, _tcslen(pszMessage), iCtrlWidth );
}
}
//------------------------------------------------------------------------------
/**
*/
inline
POSTYPE
uiSystemConfirm::getCtrlIDToPos( WzID wzId )
{
for( POSTYPE i = 0 ; i < DIALOG_MAX ; ++i )
{
if( m_wzId[i] == wzId )
{
return i;
}
}
return DIALOG_MAX;
}
//------------------------------------------------------------------------------
/**
*/
inline
CControlWZ *
uiSystemConfirm::getControl( POSTYPE AtPos )
{
assert( AtPos < DIALOG_MAX );
return GetControlWZ( m_wzId[AtPos] );
}
//------------------------------------------------------------------------------
/**
*/
inline
void
uiSystemConfirm::SetLockingEffect()
{
this->m_bLockingEffect = true;
}
//------------------------------------------------------------------------------
/**
*/
inline
bool
uiSystemConfirm::GetLockingEffect()
{
return this->m_bLockingEffect;
}
//------------------------------------------------------------------------------
#endif // __USER_INTERFACE_SYSTEM_CONFIRM_H__