ZT/sources/EventMgr.cpp

177 lines
4.1 KiB
C++

/*******************************************************************************
* *
* Société de Transports de Montréal. *
* 2012 - 2013 *
* *
* Projet Zones Tests *
* *
* *
* *
*******************************************************************************/
/*
Description:
Cette classe gère la liste des fonctions désactivées. Pour chaque fonction
de détection désactivée, un objet "CEvent" est créé et ajouté à la liste.
Cette classe est utilisée par l'interface graphique est la machine à états
d'analyse d'erreurs afin de savoir quels déclenchements ignorer.
*/
/* ************************************************************************** */
/* Revision:
### YYYMMDD JFM
Verision d'origine.
### YYYYMMDD Description du besoin ou du bug
Description du changement.
*/
/* ************************************************************************** */
#include "EventMgr.h"
#include "ZTPage.h"
CEventMgr::CEventMgr()
{
}
unsigned int CEventMgr::UpdateEvents(CZTDetectionFunctionConfig *DetectionFuncCfg)
{
if(!DetectionFuncCfg->mZTDetectionConfig[DETECTION_FCT_FN].AnalysisActive ||
!DetectionFuncCfg->mZTDetectionConfig[DETECTION_FCT_FN].TKActive)
AddEvent(EVENT_FN_HS);
else
RemoveEvent(EVENT_FN_HS);
if(!DetectionFuncCfg->mZTDetectionConfig[DETECTION_FCT_PG].AnalysisActive ||
!DetectionFuncCfg->mZTDetectionConfig[DETECTION_FCT_PG].TKActive)
AddEvent(EVENT_PG_HS);
else
RemoveEvent(EVENT_PG_HS);
if(!DetectionFuncCfg->mZTDetectionConfig[DETECTION_FCT_PP].AnalysisActive ||
!DetectionFuncCfg->mZTDetectionConfig[DETECTION_FCT_PP].TKActive)
AddEvent(EVENT_PP_HS);
else
RemoveEvent(EVENT_PP_HS);
if(!DetectionFuncCfg->mZTDetectionConfig[DETECTION_FCT_PP2].AnalysisActive ||
!DetectionFuncCfg->mZTDetectionConfig[DETECTION_FCT_PP2].TKActive)
AddEvent(EVENT_PP2_HS);
else
RemoveEvent(EVENT_PP2_HS);
mMainPagePtr->UpdateEventsList();
return RET_OK;
}
bool CEventMgr::AddEvent(unsigned int EventID)
{
//Check if already on the list. If so, do nothing.
for(int i = 0; i < mEventsList.size(); i++)
{
if(mEventsList.at(i)->mEventType == EventID)
return false;
}
QString Label;
bool IsAnimated = false;
switch(EventID)
{
case EVENT_FN_HS:
{
Label = "Frotteur Négatif HS";
IsAnimated = true;
break;
}
case EVENT_PG_HS:
{
Label = "Pneu Guidage HS";
IsAnimated = true;
break;
}
case EVENT_PP_HS:
{
Label = "Pneu Porteur HS";
IsAnimated = true;
break;
}
case EVENT_PP2_HS:
{
Label = "Pneu Porteur ZT2 HS";
IsAnimated = true;
break;
}
case EVENT_TK1_HS:
{
Label = "TK1 HS";
break;
}
case EVENT_CA_PG:
{
Label = "Calibration Pneu Guidage";
IsAnimated = true;
break;
}
case EVENT_PEQ1:
{
Label = "Panne Équipement ZT1";
break;
}
case EVENT_MAINTENANCE:
{
Label = "Entretien ZT";
IsAnimated = true;
break;
}
}
CEvent *NewEvent = new CEvent(EventID,Label,IsAnimated);
mEventsList.append(NewEvent);
return true;
}
bool CEventMgr::RemoveEvent(unsigned int EventID)
{
//Find item in the list and remove it if present
for(int i = 0; i < mEventsList.size(); i++)
{
if(mEventsList.at(i)->mEventType == EventID)
{
delete mEventsList.at(i);
mEventsList.removeAt(i);
}
}
return true;
}
unsigned int CEventMgr::AddSingleEvent(unsigned int EventID)
{
if(AddEvent(EventID) == true)
{
mMainPagePtr->UpdateEventsList();
return RET_OK;
}
return RET_ERROR;
}
unsigned int CEventMgr::RemoveSingleEvent(unsigned int EventID)
{
if(RemoveEvent(EventID) == true)
{
mMainPagePtr->UpdateEventsList();
return RET_OK;
}
return RET_ERROR;
}