231 lines
4.1 KiB
C++
231 lines
4.1 KiB
C++
#include "StdAfx.h"
|
|
#include "BaseCommand.h"
|
|
#include "../resource.h"
|
|
#include "../LS_launcherDlg.h"
|
|
#include "../LauncherTabCtrl.h"
|
|
|
|
|
|
BaseCommand::BaseCommand(DWORD type) : m_commandType(type)
|
|
{
|
|
Init();
|
|
}
|
|
|
|
BaseCommand::~BaseCommand(void)
|
|
{
|
|
Destroy();
|
|
}
|
|
|
|
|
|
void BaseCommand::Init()
|
|
{
|
|
m_launcher = NULL;
|
|
m_isServiceAll = FALSE;
|
|
m_isApplyAll = FALSE;
|
|
m_state = CST_BEFORE_EXCUTE;
|
|
m_error = CET_NOERROR;
|
|
}
|
|
|
|
void BaseCommand::Destroy()
|
|
{
|
|
}
|
|
|
|
BOOL BaseCommand::Execute()
|
|
{
|
|
if( NULL == m_launcher )
|
|
{
|
|
m_error = CET_WRONG_NO_LAUNCHER;
|
|
return FALSE;
|
|
}
|
|
|
|
if( m_isApplyAll )
|
|
{
|
|
if( m_isServiceAll )
|
|
{
|
|
for( int i = 0 ; i < GetDialogCount() ; i++ )
|
|
{
|
|
CServerDialog* dialog = GetDialog(i);
|
|
if( !ExecuteServiceAll( dialog ) )
|
|
return FALSE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for( int i = 0 ; i < GetDialogCount() ; i++ )
|
|
{
|
|
CServerDialog* dialog = GetDialog(i);
|
|
if( !ExecuteServiceOne( dialog ) )
|
|
return FALSE;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( m_isServiceAll )
|
|
{
|
|
for( UINT i = 0 ; i < m_tabIndexes.size() ; i++ )
|
|
{
|
|
CServerDialog* dialog = GetDialog(m_tabIndexes[i]);
|
|
if( !ExecuteServiceAll(dialog) )
|
|
return FALSE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for( UINT i = 0 ; i < m_tabIndexes.size() ; i++ )
|
|
{
|
|
CServerDialog* dialog = GetDialog(m_tabIndexes[i]);
|
|
if( !ExecuteServiceOne(dialog) )
|
|
return FALSE;
|
|
}
|
|
}
|
|
}
|
|
if( m_isWait && m_state != CST_ALREADY_EXCUTE )
|
|
{
|
|
m_state = CST_WAITING;
|
|
m_launcher->BatchWait();
|
|
return FALSE;
|
|
}
|
|
|
|
m_state = CST_EXCUTE_DONE;
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL BaseCommand::CheckContinue()
|
|
{
|
|
if( NULL == m_launcher )
|
|
{
|
|
m_error = CET_WRONG_NO_LAUNCHER;
|
|
return FALSE;
|
|
}
|
|
|
|
if( m_state != CST_WAITING )
|
|
return FALSE;
|
|
|
|
if( m_isApplyAll )
|
|
{
|
|
if( m_isServiceAll )
|
|
{
|
|
for( int i = 0 ; i < GetDialogCount() ; i++ )
|
|
{
|
|
CServerDialog* dialog = GetDialog(i);
|
|
if( !CheckContinueServiceAll(dialog) )
|
|
{
|
|
return FALSE;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for( int i = 0 ; i < GetDialogCount() ; i++ )
|
|
{
|
|
CServerDialog* dialog = GetDialog(i);
|
|
if( !CheckContinueServiceOne(dialog) )
|
|
{
|
|
return FALSE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( m_isServiceAll )
|
|
{
|
|
for( UINT i = 0 ; i < m_tabIndexes.size() ; i++ )
|
|
{
|
|
CServerDialog* dialog = GetDialog(m_tabIndexes[i]);
|
|
if( !CheckContinueServiceAll(dialog) )
|
|
return FALSE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for( UINT i = 0 ; i < m_tabIndexes.size() ; i++ )
|
|
{
|
|
CServerDialog* dialog = GetDialog(m_tabIndexes[i]);
|
|
if( !CheckContinueServiceOne(dialog) )
|
|
return FALSE;
|
|
}
|
|
}
|
|
}
|
|
|
|
m_state = CST_EXCUTE_DONE;
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL BaseCommand::IsValid()
|
|
{
|
|
// 전체적으로 체크할 오류?..
|
|
if( !m_launcher )
|
|
return FALSE;
|
|
|
|
// Apply All 처리 - TabIndex가 있으면 ApplyAll이 아니다
|
|
if( m_tabIndexes.empty() )
|
|
{
|
|
m_isApplyAll = TRUE;
|
|
}
|
|
else
|
|
{
|
|
m_isApplyAll = FALSE;
|
|
}
|
|
|
|
return IsValidDetail();
|
|
}
|
|
|
|
void BaseCommand::SetOption( DWORD optionBit )
|
|
{
|
|
m_isWait = FALSE;
|
|
if( BITCHK(optionBit, BOT_SERVICE_WAIT) )
|
|
{
|
|
m_isWait = TRUE;
|
|
}
|
|
|
|
m_isServiceAll = FALSE;
|
|
if( BITCHK(optionBit, BOT_ALL_SERVICE) )
|
|
{
|
|
m_isServiceAll = TRUE;
|
|
}
|
|
}
|
|
|
|
void BaseCommand::SetCommandText(const char* commandLine)
|
|
{
|
|
TCHAR tcommandLine[_MAX_FNAME];
|
|
#ifdef UNICODE
|
|
MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, commandLine, strlen(commandLine)+1, tcommandLine, _MAX_FNAME-1 );
|
|
#else
|
|
strcpy_s( tstring, string );
|
|
#endif
|
|
|
|
m_commandText.Format( _T("%s"), tcommandLine );
|
|
}
|
|
|
|
void BaseCommand::AddString( const char* string, int len )
|
|
{
|
|
TCHAR tstring[_MAX_FNAME];
|
|
CString temp;
|
|
|
|
#ifdef UNICODE
|
|
MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, string, len, tstring, _MAX_FNAME-1 );
|
|
tstring[len] = 0;
|
|
#else
|
|
strcpy_s( tstring, string );
|
|
#endif
|
|
|
|
temp.Format( _T("%s"), tstring );
|
|
m_strings.push_back( temp );
|
|
}
|
|
|
|
CServerDialog* BaseCommand::GetDialog(int index)
|
|
{
|
|
CServerDialog* dlg = m_launcher->GetTabDialog(index);
|
|
if(dlg)
|
|
{
|
|
m_launcher->m_serverTabs.UserFocus(index);
|
|
}
|
|
return dlg;
|
|
}
|
|
|
|
int BaseCommand::GetDialogCount()
|
|
{
|
|
return m_launcher->GetTabDialogCount();
|
|
}
|