#include "StdAfx.h" #include "TEtTriggerObject.h" #include "TEtTriggerElement.h" #include "SundriesFuncEx.h" CTEtTriggerObject::CTEtTriggerObject( CEtTrigger *pTrigger ) : CEtTriggerObject( pTrigger ) { } CTEtTriggerObject::~CTEtTriggerObject() { } void CTEtTriggerObject::SetCategory( const char *szName ) { m_szCategory = szName; } void CTEtTriggerObject::SetTriggerName( const char *szName ) { m_szTriggerName = szName; } void CTEtTriggerObject::AddConditionElement( CEtTriggerElement *pElement ) { m_pVecCondition.push_back( pElement ); } void CTEtTriggerObject::AddActionElement( CEtTriggerElement *pElement ) { m_pVecAction.push_back( pElement ); } void CTEtTriggerObject::AddEventElement( CEtTriggerElement *pElement ) { m_pVecEvent.push_back( pElement ); } CEtTriggerElement *CTEtTriggerObject::AllocTriggerElement() { return new CTEtTriggerElement( this ); } CTEtTriggerElement *CTEtTriggerObject::GetElementFromTreeIndex( HTREEITEM hti ) { for( DWORD i=0; iGetTreeItem() == hti ) return pElement; } for( DWORD i=0; iGetTreeItem() == hti ) return pElement; } for( DWORD i=0; iGetTreeItem() == hti ) return pElement; } return NULL; } void CTEtTriggerObject::RemoveElementFromTreeIndex( HTREEITEM hti ) { for( DWORD i=0; iGetTreeItem() == hti ) { SAFE_DELETE( m_pVecCondition[i] ); m_pVecCondition.erase( m_pVecCondition.begin() + i ); return; } } for( DWORD i=0; iGetTreeItem() == hti ) { SAFE_DELETE( m_pVecAction[i] ); m_pVecAction.erase( m_pVecAction.begin() + i ); return; } } for( DWORD i=0; iGetTreeItem() == hti ) { SAFE_DELETE( m_pVecEvent[i] ); m_pVecEvent.erase( m_pVecEvent.begin() + i ); return; } } } bool CTEtTriggerObject::RemoveElement( CEtTriggerElement *pTriggerElement ) { for( DWORD i=0; i *pVecList; switch( pElement->GetType() ) { case CEtTriggerElement::Event: pVecList = &m_pVecEvent; break; case CEtTriggerElement::Condition: pVecList = &m_pVecCondition; break; case CEtTriggerElement::Action: pVecList = &m_pVecAction; break; } for( DWORD i=0; isize(); i++ ) { if( (*pVecList)[i] == pElement ) { pVecList->erase( pVecList->begin() + i ); break; } } if( pPrevElement == NULL ) { pVecList->insert( pVecList->begin(), pElement ); } else { for( DWORD i=0; isize(); i++ ) { if( (*pVecList)[i] == pPrevElement ) { pVecList->insert( pVecList->begin() + i + 1, pElement ); break; } } } } bool CTEtTriggerObject::Save( FILE *fp ) { CTEtTriggerElement *pElement; char *pDummyBuf = new char[ s_nDummySize ]; memset( pDummyBuf, 0, s_nDummySize ); WriteCString( &CString(m_szCategory.c_str()), fp ); WriteCString( &CString(m_szTriggerName.c_str()), fp ); fwrite( &m_bRepeat, sizeof(bool), 1, fp ); fwrite( pDummyBuf, s_nDummySize, 1, fp ); DWORD dwCount = GetConditionCount(); fwrite( &dwCount, sizeof(DWORD), 1, fp ); for( DWORD i=0; iSave(fp); } dwCount = GetActionCount(); fwrite( &dwCount, sizeof(DWORD), 1, fp ); for( DWORD i=0; iSave(fp); } dwCount = GetEventCount(); fwrite( &dwCount, sizeof(DWORD), 1, fp ); for( DWORD i=0; iSave(fp); } CString szStr = m_szDescription.c_str(); WriteCString( &szStr, fp ); SAFE_DELETEA( pDummyBuf ); return true; } CTEtTriggerObject &CTEtTriggerObject::operator = ( CTEtTriggerObject &e ) { m_szCategory = e.m_szCategory; m_szTriggerName = e.m_szTriggerName; m_szDescription = e.m_szDescription; for( DWORD i=0; i