/** * Retrieve information about which exercise is using which radio group * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-14 */ #include "exm_handler.h" #include "main_handler.h" namespace TrainingAreaBase { ExmHandler::ExmHandler(MainHandler *mainHandler) : m_mainHandler(mainHandler) , m_logger(getLogger("ExmHandler")) {} bool ExmHandler::init() { m_exmDtc = ExerciseManagement::Interface::Dtc::create(m_mainHandler->ddsHandler()->ddsConnector()); connect(m_exmDtc.get(), &ExerciseManagement::Interface::Dtc::exerciseChanged, this, &ExmHandler::onExerciseChanged); connect(m_exmDtc.get(), &ExerciseManagement::Interface::Dtc::exerciseChanged, this, &ExmHandler::exerciseChanged); if (!m_exmDtc->enableExercise()) { ERROR_LOG(m_logger) << "Can not read equipment/exercise mappings from PPM"; return false; } return true; } ExerciseManagement::Exercise ExmHandler::exercise(int exerciseId) { m_exmDtc->waitForHistoricalDataExercise(10 * 1000); return m_exmDtc->exercise(exerciseId); } void ExmHandler::onExerciseChanged(const ExerciseManagement::Exercise &data, DataModification modType) { if (!data.radioGroupId().is_set() || data.radioGroupId().get() == 0) modType = DataModification::eRemoved; bool bExercise2RadioGroupChanged = false; switch (modType) { case DataModification::eAdded: case DataModification::eModified: { auto &val = m_exercise2RadioGroup[data.id()]; if (val != data.radioGroupId().get()) { bExercise2RadioGroupChanged = true; val = data.radioGroupId().get(); } break; } case DataModification::eRemoved: { auto it = m_exercise2RadioGroup.find(data.id()); if (it != m_exercise2RadioGroup.end()) { bExercise2RadioGroupChanged = true; m_exercise2RadioGroup.erase(it); } break; } } if (bExercise2RadioGroupChanged) emit exercise2RadioGroupChanged(); } } // namespace TrainingAreaBase