/** * @RDE_HEADER@ * GUI Plugin for AreaEffectSimulation - NContaminations * $Id$ * $HeadURL$ * $Author$ * Created by Patric Karwat, SLSE, 2016-07-07 */ #include "aes_ncontamination_gui_plugin.h" #include "aes_ncontamination_edit.h" #include "aes_ncontamination_list.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.NContamination")) , 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"); if (m_enableB && !m_enableC && m_enableN) return tr("Area Effect Simulation NB"); if (!m_enableB && m_enableC && m_enableN) return tr("Area Effect Simulation NC"); if (m_enableB && !m_enableC && !m_enableN) return tr("Area Effect Simulation B"); if (m_enableB && m_enableC && !m_enableN) return tr("Area Effect Simulation BC"); if (!m_enableB && m_enableC && !m_enableN) return tr("Area Effect Simulation C"); return tr("Area Effect Simulation NBC"); } QVector InterfaceImpl::getActions() { QVector ret; if (m_enableN) { // N-Contamination ret.append(LtsWidgets::PluginData(menuGroup(), tr("N-Contaminations"), QLatin1String("ListNContaminations"), QIcon(QLatin1String("icon:nuclear_agents.svg")), [this](QWidget *parent) { return onShowNContaminationListDialog(parent);}, OperatorRights::NContaminationsShow, LtsWidgets::ExercisePart::eExecution)); if (m_session->isExercisePartition() && appId() != LtsAppDescriptor::App::OC) ret.append(LtsWidgets::PluginData(menuGroup(), tr("Add N-Contamination"), QLatin1String("AddNContamination"), QIcon(QLatin1String("icon:nuclear_agents_add.svg")), [this](QWidget *parent) { return onShowAddNContaminationDialog(parent);}, OperatorRights::NContaminationsEdit, LtsWidgets::ExercisePart::eExecution, LtsWidgets::ExerciseState::eCreated | LtsWidgets::ExerciseState::eStarted | LtsWidgets::ExerciseState::ePaused)); } return ret; } AreaEffectSimulation::BaseEdit *InterfaceImpl::showEditWindow(int aesEntityId, QWidget *parent) { NContaminationEdit *editWidget = new NContaminationEdit(menuGroup(), parent); if (editWidget->init(aesEntityId, false, m_session)) return editWidget; delete editWidget; return nullptr; } LtsWidgets::LtsDialog *InterfaceImpl::onShowAddNContaminationDialog(QWidget *parent) { NContaminationEdit *editWidget = new NContaminationEdit(menuGroup(), parent); if (editWidget->init(0, false, m_session)) return editWidget; delete editWidget; return nullptr; } LtsWidgets::LtsDialog *InterfaceImpl::onShowNContaminationListDialog(QWidget *parent) { NContaminationList *listWidget = new NContaminationList(menuGroup(), parent); if (listWidget->init(m_session)) return listWidget; delete listWidget; return nullptr; } } // namespace AreaEffectSimulation