/** * @RDE_HEADER@ * ExerciseManangement - Exercise Edit Dialog * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-02-29 */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Ui { class ExerciseManagementEditDialog; } namespace ExerciseManagement { namespace JsonKeys { // general inline QString XMLTYPE() { return QStringLiteral("XmlType"); } inline QString XMLTYPEVALUE() { return FileManagement::toString(FileManagement::XmlType::EXMExerciseDescription); } // Exercise inline QString PHASES() { return QStringLiteral("phases"); } inline QString OPERATORS() { return QStringLiteral("operators"); } inline QString FORCES() { return QStringLiteral("forces"); } inline QString DESCRIPTION() { return QStringLiteral("description"); } // ExercisePhase: inline QString PID() { return QStringLiteral("phaseId"); } inline QString PNAME() { return QStringLiteral("phaseName"); } inline QString PISDELETED() { return QStringLiteral("phaseIsDeleted"); } inline QString PISUSED() { return QStringLiteral("phaseIsUsed"); } inline QString PBEGINTIME() { return QStringLiteral("phaseBeginTime"); } inline QString PENDTIME() { return QStringLiteral("phaseEndTime"); } inline QString PDESCRIPTION() { return QStringLiteral("phaseDescription"); } inline QString PEXERCISEID() { return QStringLiteral("phaseExerciseId"); } } // namespace JsonKeys class ExercisePhaseModel; class ExercisePhaseProxyModel; class ExerciseOperatorModel; // -------------------------------------------------------- // ExerciseManagementEditDialog // -------------------------------------------------------- class ExerciseManagementEditDialog final : public LtsWidgets::LtsDialog , protected ExerciseManagement::Interface::Ftc::ExerciseCreateReplyHandler , protected ExerciseManagement::Interface::Ftc::ExerciseModifyReplyHandler , protected ExerciseManagement::Interface::Ftc::ExerciseImageModifyReplyHandler , protected ExerciseManagement::Interface::Ftc::GetExerciseImageReplyHandler , protected ExerciseManagement::Interface::Ftc::ExercisePhaseRemoveReplyHandler , protected OperatorManagement::Interface::Ftc::OperatorCreateModifyReplyHandler , protected FileManagement::Interface::Ftc::FolderModifyReplyHandler , protected FileManagement::Interface::Ftc::FolderRemoveReplyHandler { Q_OBJECT public: explicit ExerciseManagementEditDialog(QWidget *parent = nullptr); bool init(LtsSession::LtsSessionDataDds *session, const QString &menuGroup, const int exerciseId); ~ExerciseManagementEditDialog(); protected: void onExerciseCreateReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); } void onExerciseModifyReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); } void onExerciseImageModifyReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); imageModifyError(); } void onGetExerciseImageReply(const GetExerciseImageReply &reply) override final; void onExercisePhaseRemoveReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); } void onOperatorCreateModifyReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); } void onFolderModifyReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); } void onFolderRemoveReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); } private slots: void slotChangeImage(); void enaDisaOperatorsButtons(); void enaDisaPhaseButtons(); void onAddExercisePhase(); void onEditVisibleParties(); void onEditExercisePhase(); void onRemoveExercisePhase(); void onExport(); void onImport(); void onCreateFolders(); void onExerciseChanged(const Exercise &data, DataModification modType); void onExercisePhaseChanged(const ExercisePhase &data, DataModification modType); void onContextMenuRequested(const QPoint &position); void onSelectAllUsers(); void onUnselectAllUsers(); void onTimeZoneChanged(); signals: void sendData(const ExerciseManagement::Exercise &data); private: void retranslate() override; bool apply() override final; void enaDisa(); void fillStateCbx(); void fillTrainingAreaCbx(); void fillActivePhaseCbx(); void fillRadioGroupCbx(); void fillLinkedExercisesCbx(); void fillAllCbx(); void imageModifyError(); void sendModifiedOperators(int thisExerciseId); int createFolder(int parentFolderId, const QString &folderName, bool isHidden = false); bool createFolders(int newExId); bool createExerciseFolders(int parentFolderId, const QStringList &folderNames); ExerciseModifyRequest setRequestContent() const; QByteArray exerciseToJson() const; ExerciseModifyRequest jsonToExercise(const QByteArray &content) const; void requestImage(); const QPixmap getPixmap() const; int getExerciseFolder(); Ui::ExerciseManagementEditDialog *m_ui{nullptr}; LtsSession::LtsSessionDataDds *m_session{nullptr}; ExercisePhaseModel *m_phaseModel{nullptr}; ExercisePhaseProxyModel *m_phaseProxyModel{nullptr}; ExerciseOperatorModel *m_operatorModel{nullptr}; bool m_pictureChanged{false}; int m_exerciseId{-1}; QVariant m_initialRadioGroupId; ExerciseState m_currentState; std::shared_ptr m_dtc; std::shared_ptr m_ftc; std::shared_ptr m_opmDtc; std::shared_ptr m_asmDtc; std::shared_ptr m_pdmDtc; std::shared_ptr m_ppmDtc; std::shared_ptr m_flmDtc; std::shared_ptr m_flmFtc; std::shared_ptr m_flmGui; QString m_menuGroup; LtsUtils::RequestHelper *m_requestHelper{nullptr}; LOGGER_T m_logger; template bool removeElement(std::vector &vec, T elem); bool hasVisibleParties(const std::vector vpbe) const; }; }