/** * @RDE_HEADER@ * ExerciseManangement - Phase Edit Dialog * $Id: exm_edit_dialog.h 41137 2018-04-20 08:50:55Z schroeder_m $ * $HeadURL: svn://slssvn/TDS/branches/product/devel/trunk/Lts/Plugins/ExerciseManagement/Gui/ExerciseEdit/exm_edit_dialog.h $ * $Author: schroeder_m $ * Created by Malte Schröder, SLSE, 2018-04-23 */ #include "exm_phase_edit.h" #include "ui_exm_phase_edit.h" #include "exm_phase_model.h" #include "exm_edit_phase_dialog.h" #include namespace ExerciseManagement { ExerciseManagementPhaseEdit::ExerciseManagementPhaseEdit(const QString &menuGroup, QWidget *parent) : LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly) , m_ui(new Ui::ExerciseManagementPhaseEdit) , m_dtc(nullptr) , m_ftc(nullptr) , m_flmDtc(nullptr) , m_flmFtc(nullptr) , m_session(nullptr) , m_phaseModel(nullptr) , m_menuGroup(menuGroup) , m_exercise() , m_requestHelper(new LtsUtils::RequestHelper(this)) , m_logger(getLogger("ExerciseManagementStateEdit")) { m_ui->setupUi(this); setOnlineHelpFilename(QStringLiteral("Situation-Exercise_Phases")); } ExerciseManagementPhaseEdit::~ExerciseManagementPhaseEdit() { delete m_ui; } bool ExerciseManagementPhaseEdit::init(LtsSession::LtsSessionDataDds *session) { m_session = session; if (!m_session->getDtc(m_dtc)) return false; if (!m_session->getFtc(m_ftc)) return false; if (!m_session->getDtc(m_flmDtc)) return false; if (!m_session->getFtc(m_flmFtc)) return false; m_exercise = m_dtc->exercise(m_session->exerciseId()); m_phaseModel = new ExercisePhaseModel(this); m_phaseModel->initModel(m_exercise.id(), m_dtc); m_ui->dvPhases->setModel(m_phaseModel); m_ui->dvPhases->hideColumn(3); // do not show the description m_ui->dvPhases->hideColumn(4); // do not show the ExerciseId m_ui->dvPhases->seamless(); m_buttonBox->connectButton(LtsWidgets::DialogButton::Add, this, &ExerciseManagementPhaseEdit::onAddExercisePhase); m_buttonBox->connectButton(LtsWidgets::DialogButton::Edit, this, &ExerciseManagementPhaseEdit::onEditExercisePhase); m_buttonBox->connectButton(LtsWidgets::DialogButton::Remove, this, &ExerciseManagementPhaseEdit::onRemoveExercisePhase); connect(m_ui->dvPhases, &LtsDataView::LtsDataView::signalDoubleClicked, this, &ExerciseManagementPhaseEdit::onEditExercisePhase); connect(m_ui->dvPhases, &LtsDataView::LtsDataView::signalSelectionChanged, this, &ExerciseManagementPhaseEdit::enaDisaPhaseButtons); enaDisaPhaseButtons(); return true; } void ExerciseManagementPhaseEdit::enaDisaPhaseButtons() { QModelIndexList selectedRows = m_ui->dvPhases->selectedRows(); const int cntSelectedRows = selectedRows.size(); m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Edit, cntSelectedRows == 1); m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Remove, cntSelectedRows == 1); } void ExerciseManagementPhaseEdit::onAddExercisePhase() { ExerciseManagementPhaseEditDialog *dialog = new ExerciseManagementPhaseEditDialog(this); dialog->init(m_session, m_exercise.id(), -1 /* new exercise phase */); addDialog(dialog, m_menuGroup, QLatin1String("NewExercisePhase"), LtsWidgets::LayoutArea::eDialogTab); } void ExerciseManagementPhaseEdit::onEditExercisePhase() { const QModelIndex idx = m_ui->dvPhases->currentIndex(); const ExercisePhase exPhase = m_phaseModel->getRowData(idx.row()); if (exPhase.id() <= 0) return; DEBUG_LOG(m_logger) << "current exPhase Id: " << exPhase.id(); ExerciseManagementPhaseEditDialog *dialog = new ExerciseManagementPhaseEditDialog(this); dialog->init(m_session, m_exercise.id(), exPhase.id()); const QString identifier = QLatin1String("EditExercisePhase") + QString::number(exPhase.id()); addDialog(dialog, m_menuGroup, identifier, LtsWidgets::LayoutArea::eDialogTab); } void ExerciseManagementPhaseEdit::onRemoveExercisePhase() { const int phId = m_phaseModel->getRowData(m_ui->dvPhases->currentIndex().row()).id(); int exeFolderId = m_flmDtc->getExerciseFolderId(m_exercise.id()); const int folderId = m_flmDtc->getPhaseFolderId(exeFolderId, phId); if (folderId > 0) { Core::RemoveElementRequest req(folderId); m_requestHelper->startSingleRequest([req, this]() { return m_flmFtc->folderRemoveRequest(req, this); }); } Core::RemoveElementRequest req(m_phaseModel->getRowData(m_ui->dvPhases->currentIndex().row()).id()); m_requestHelper->startSingleRequest([req, this]() { m_ftc->enableExercisePhaseRemove(); return m_ftc->exercisePhaseRemoveRequest(req, this); }); } void ExerciseManagementPhaseEdit::retranslate() { translate(m_ui, tr("Exercise Phases")); } }