/** * @RDE_HEADER@ * GUI Plugin for AreaEffectSimulation - Contamination * $Id$ * $HeadURL$ * $Author$ * Created by Patric Karwat, SLSE, 2016-07-07 */ #include "aes_bccontamination_gui_plugin.h" #include "aes_bccontamination_edit.h" #include "aes_bccontamination_list.h" #include "InfoView/aes_bccontamination_info.h" #include #include #include namespace AreaEffectSimulation { std::shared_ptr GuiPlugin::createGuiInterface(LtsSession::LtsSession *session) { return std::make_shared(session); } InterfaceImpl::InterfaceImpl(LtsSession::LtsSession *session) : AesBaseInterface(session, getLogger("Plugins.Gui.BcContamination")) , ForeignGuiInterface() , m_enableB(false) , m_enableC(false) , m_enableN(false) { LtsUtils::ProjectSettings *ps = LtsUtils::ProjectSettings::getInstance(); m_enableB = ps->value(QStringLiteral("aes"), QStringLiteral("enableBiologicalContamination")).toBool(); m_enableC = ps->value(QStringLiteral("aes"), QStringLiteral("enableChemicalContamination")).toBool(); m_enableN = ps->value(QStringLiteral("aes"), QStringLiteral("enableNuclearContaminations")).toBool(); } QString InterfaceImpl::menuGroup() const { if (!m_enableB && !m_enableC && m_enableN) return tr("Area Effect Simulation N"); else if (m_enableB && !m_enableC && m_enableN) return tr("Area Effect Simulation NB"); else if (!m_enableB && m_enableC && m_enableN) return tr("Area Effect Simulation NC"); else if (m_enableB && !m_enableC && !m_enableN) return tr("Area Effect Simulation B"); else if (m_enableB && m_enableC && !m_enableN) return tr("Area Effect Simulation BC"); else if (!m_enableB && m_enableC && !m_enableN) return tr("Area Effect Simulation C"); else return tr("Area Effect Simulation NBC"); } QVector InterfaceImpl::getActions() { QVector ret; if (m_enableC) { ret.append(LtsWidgets::PluginData(menuGroup(), tr("C-Contaminations"), QLatin1String("ListCContaminations"), QIcon(QLatin1String("icon:chemical_agents.svg")), [this](QWidget *parent) { return onShowBCContaminationListDialog(true, parent);}, OperatorRights::CContaminationsShow, LtsWidgets::ExercisePart::eExecution)); if (m_session->isExercisePartition() && appId() != LtsAppDescriptor::App::OC) ret.append(LtsWidgets::PluginData(menuGroup(), tr("Add C-Contamination"), QLatin1String("AddCContamination"), QIcon(QLatin1String("icon:chemical_agents_add.svg")), [this](QWidget *parent) { return onShowAddBCContaminationDialog(true, parent);}, OperatorRights::CContaminationsEdit, LtsWidgets::ExercisePart::eExecution, LtsWidgets::ExerciseState::eCreated | LtsWidgets::ExerciseState::eStarted | LtsWidgets::ExerciseState::ePaused)); } if (m_enableB) { ret.append(LtsWidgets::PluginData(menuGroup(), tr("B-Contaminations"), QLatin1String("ListBContaminations"), QIcon(QLatin1String("icon:bio_agent.svg")), [this](QWidget *parent) { return onShowBCContaminationListDialog(false, parent);}, OperatorRights::BContaminationsShow, LtsWidgets::ExercisePart::eExecution)); if (m_session->isExercisePartition() && appId() != LtsAppDescriptor::App::OC) ret.append(LtsWidgets::PluginData(menuGroup(), tr("Add B-Contamination"), QLatin1String("AddBContamination"), QIcon(QLatin1String("icon:bio_agent_add.svg")), [this](QWidget *parent) { return onShowAddBCContaminationDialog(false, parent);}, OperatorRights::BContaminationsEdit, LtsWidgets::ExercisePart::eExecution, LtsWidgets::ExerciseState::eCreated | LtsWidgets::ExerciseState::eStarted | LtsWidgets::ExerciseState::ePaused)); } return ret; } bool InterfaceImpl::fetchInterfaces() { std::shared_ptr pdmGuiIfc; if (!m_session->getForeignGuiInterface(pdmGuiIfc)) return false; return AesBaseInterface::fetchInterfaces(); } LtsWidgets::LtsDialog *InterfaceImpl::showInfoWindow(const AesItem *item) { const BCContamination *bcc = static_cast(item); BCContaminationInfo *dialog = new BCContaminationInfo(); dialog->init(m_session); dialog->setData(bcc); return dialog; } AreaEffectSimulation::BaseEdit *InterfaceImpl::showEditWindow(int aesEntityId, bool isChemical, QWidget *parent) { return LtsWidgets::initDialog(new BCContaminationEdit(menuGroup(), isChemical, parent), aesEntityId, false, m_session); } LtsWidgets::LtsDialog *InterfaceImpl::onShowAddBCContaminationDialog(bool isChemical, QWidget *parent) { return showEditWindow(0, isChemical, parent); } LtsWidgets::LtsDialog *InterfaceImpl::onShowBCContaminationListDialog(bool isChemical, QWidget *parent) { return LtsWidgets::initDialog(new BCContaminationList(menuGroup(), isChemical, parent), m_session); } } // namespace AreaEffectSimulation