/** * @RDE_HEADER@ * GUI Plugin for ParticipantManagement - ParticipantEdit * $Id$ * $HeadURL$ * $Author$ * Created by Patric Karwat, SLSE, 2016-10-17 */ #include "participant_edit_gui_plugin.h" #include "participant_organisation.h" #include "participant_edit.h" #include "tactical_organisation.h" #include #include #include namespace ParticipantManagement { std::shared_ptr GuiPlugin::createGuiInterface(LtsSession::LtsSession *session) { return std::make_shared(session); } InterfaceImpl::InterfaceImpl(LtsSession::LtsSession *session) : GuiPluginBase::Interface(session, getLogger("Plugins.Gui.Ppm.ParticipantTemplates")) , m_dtc(nullptr) , m_ftc(nullptr) , m_ppmGuiTemplateIfc(nullptr) , m_ppmGuiCbxIfc(nullptr) {} QVector InterfaceImpl::getActions() { LtsUtils::ProjectSettings *ps = LtsUtils::ProjectSettings::getInstance(); QVector ret; //were are in Exercise so only use exercise participants LtsWidgets::PluginData pd; pd.menuGroup = menuGroup(); pd.layoutArea = LtsWidgets::LayoutArea::eDialogTab; pd.menuText = tr("Organise Participants"); pd.identifier = QStringLiteral("organiseParticipants"); pd.menuIcon = QIcon(QLatin1String("icon:force_organization.svg")); pd.createWidgetFunc = [this](QWidget *parent) { return onParticipantOrganisation(parent, false); }; pd.operatorRight = OperatorRights::ParticipantEdit::ParticipantsOrganise; pd.exercisePart = LtsWidgets::ExercisePart::ePlanning; ret.append(pd); pd.menuText = tr("Edit Participants"); pd.identifier = QStringLiteral("editParticipants"); pd.menuIcon = QIcon(QLatin1String("icon:force_player_configuration.svg")); pd.createWidgetFunc = [this](QWidget *parent) { return onParticipantEdit(parent, false); }; pd.operatorRight = OperatorRights::ParticipantEdit::ParticipantsEdit; pd.exercisePart = LtsWidgets::ExercisePart::ePlanning; pd.exerciseStates = LtsWidgets::ExcState::eCreated | LtsWidgets::ExcState::eStarted | LtsWidgets::ExcState::ePaused; ret.append(pd); pd.menuText = tr("Tactical Organisation"); pd.identifier = QStringLiteral("tacticalParticipantOrganisation"); pd.menuIcon = QIcon(QLatin1String("icon:tactical_organization.svg")); pd.createWidgetFunc = [this](QWidget *parent) { return onTacticalParticipantOrganisation(parent); }; pd.operatorRight = OperatorRights::ParticipantEdit::TacticalParticipantOrganisation; pd.exercisePart = LtsWidgets::ExercisePart::eExecution; ret.append(pd); if (ps->value(QStringLiteral("ppm"), QStringLiteral("enableSupportParticipantsOrganise")).toBool()) { pd.menuText = tr("Organise Support Participants"); pd.identifier = QStringLiteral("organiseSupParticipants"); pd.menuIcon = QIcon(QLatin1String("icon:oc_composition.svg")); pd.createWidgetFunc = [this](QWidget *parent) { return onParticipantOrganisation(parent, true); }; pd.operatorRight = OperatorRights::ParticipantEdit::SupportParticipantsOrganise; pd.exercisePart = LtsWidgets::ExercisePart::ePlanning; ret.append(pd); } if (ps->value(QStringLiteral("ppm"), QStringLiteral("enableSupportParticipantsEdit")).toBool()) { pd.menuText = tr("Edit Support Participants"); pd.identifier = QStringLiteral("editSupportParticipants"); pd.menuIcon = QIcon(QLatin1String("icon:oc_player_configuration.svg")); pd.createWidgetFunc = [this](QWidget *parent) { return onParticipantEdit(parent, true); }; pd.operatorRight = OperatorRights::ParticipantEdit::SupportParticipantsEdit; pd.exercisePart = LtsWidgets::ExercisePart::ePlanning; pd.exerciseStates = LtsWidgets::ExcState::eCreated | LtsWidgets::ExcState::eStarted | LtsWidgets::ExcState::ePaused; ret.append(pd); } return ret; } QString InterfaceImpl::menuGroup() const { return tr("Participants"); } QString InterfaceImpl::menuGroupSup() const // TODO: UNUSED! { return tr("Support"); } bool InterfaceImpl::fetchInterfaces() { if (!m_session->getDtc(m_dtc)) return false; if (!m_session->getFtc(m_ftc)) return false; if (!m_session->getForeignGuiInterface(m_ppmGuiTemplateIfc)) return false; if (!m_session->getForeignGuiInterface(m_ppmGuiCbxIfc)) return false; m_session->getForeignDataInterface(m_asb); return true; } void InterfaceImpl::clearInterfaces() { m_ppmGuiTemplateIfc = nullptr; m_ppmGuiCbxIfc = nullptr; m_dtc = nullptr; m_ftc = nullptr; m_asb = nullptr; } LtsWidgets::LtsDialog *InterfaceImpl::onParticipantEdit(QWidget *parent, bool asSupportService) { return LtsWidgets::initDialog(new ParticipantEdit(m_session, asSupportService, parent), m_dtc, m_ftc, m_ppmGuiCbxIfc, m_asb); } LtsWidgets::LtsDialog *InterfaceImpl::onParticipantOrganisation(QWidget *parent, bool asSupportService) { return LtsWidgets::initDialog(new ParticipantOrganisationDialog(m_session, asSupportService, parent), m_dtc, m_ftc, m_ppmGuiTemplateIfc, m_ppmGuiCbxIfc, m_asb); } LtsWidgets::LtsDialog *InterfaceImpl::onTacticalParticipantOrganisation(QWidget *parent) { return LtsWidgets::initDialog(new TacticalOrganisation(m_session, parent), m_dtc, m_ftc, m_ppmGuiCbxIfc, m_asb); } } // namespace ParticipantManagement