/** * @RDE_HEADER@ * The ExerciseAssignmentDialog shows how many assets are needed for a specific schedule, needed elsewhere, * totally possessed, free, and missing * $Id: ism_exercise_assignment_dialog.cpp 57779 2022-08-03 08:07:45Z ojog_i $ * $HeadURL: svn://192.168.133.21/TDS/branches/product/iterations/22_01_homer/Lts/Plugins/InfrastructureManagement/Gui/AudioVideoConfig/ExerciseAssignment/ism_exercise_assignment_dialog.cpp $ * $Author: ojog_i $ * Created by Hannes Baeuerle, SLSE, 2017-06-29 */ #include "ism_exercise_assignment_dialog.h" #include "ui_ism_exercise_assignment_dialog.h" #include "ism_exercise_assignment_dialog_model.h" #include #include #include #include #include #include #include namespace InfrastructureManagement { ExerciseAssignmentDialog::ExerciseAssignmentDialog(LtsSession::LtsSession *session, QWidget *parent) : LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly) , m_session(session) , m_ui(new Ui::ExerciseAssignmentDialog) , m_ismDtc(nullptr) , m_ismFtc(nullptr) , m_exmDtc(nullptr) , m_model(nullptr) , m_requestHelper(new LtsUtils::RequestHelper(this)) , m_logger(getLogger("ExerciseAssignmentDialog")) { m_ui->setupUi(this); m_ui->assetListView->setSelectionMode(QAbstractItemView::MultiSelection); m_buttonBox->connectButton(LtsWidgets::DialogButton::Print, this, &ExerciseAssignmentDialog::onPrint); setOnlineHelpFilename(QStringLiteral("Ressourcen-Exercise_Assignment")); } ExerciseAssignmentDialog::~ExerciseAssignmentDialog() { delete m_ui; } void ExerciseAssignmentDialog::retranslate() { translate(m_ui, tr("Exercise Assignment")); } bool ExerciseAssignmentDialog::init(const std::shared_ptr &ismDtc, const std::shared_ptr &ismFtc, const std::shared_ptr &exmDtc) { m_ismDtc = ismDtc; m_ismFtc = ismFtc; m_exmDtc = exmDtc; delete m_model; if (!m_ismFtc->enableInstrumentationAssetModify()) { ERROR_LOG(m_logger) << "Could not enable FT InstrumentationAssetModify of ISM"; return false; } if (!m_ismFtc->enableMainStructureElementModify()) { ERROR_LOG(m_logger) << "Could not enable FT MainStructureElementModify of ISM"; return false; } if (!m_exmDtc->enableExercise()) { ERROR_LOG(m_logger) << "Could not enable DT Exercise of EXM"; return false; } // Add all available exercises to comboBox const QMap exercises = m_exmDtc->exercises(); m_ui->cbExercises->addItem(QStringLiteral("-"), 0); for (const auto &exercise : exercises) m_ui->cbExercises->addItem(QString::fromStdString(exercise.name()), exercise.id()); m_ui->pbAssigned->setEnabled(false); m_model = new ExerciseAssignmentDialogModel(this); if (!m_model->initModel(m_ismDtc, m_exmDtc)) { ERROR_LOG(m_logger) << "Could not init model"; delete m_model; m_model = nullptr; return false; } m_ui->assetListView->setModel(m_model); connect(m_ui->assetListView, &LtsDataView::LtsDataView::selectionChanged, this, &ExerciseAssignmentDialog::onSelectionChanged); connect(m_ui->pbAssigned, &QPushButton::clicked, this, &ExerciseAssignmentDialog::onAssignedClicked); return true; } void ExerciseAssignmentDialog::onMainStructureElementModifyReply(const Core::FunctionReplyObject &replyObject) { m_requestHelper->requestReply(replyObject); } void ExerciseAssignmentDialog::onAssignedClicked() { const QModelIndexList selectedIndexs = m_ui->assetListView->selectedRows(); if (selectedIndexs.size() < 1) return; for (const auto &index : selectedIndexs) { m_requestHelper->addRequest([this, index]() { MainStructureElementModifyRequest request; MainStructureElement &req = request; req = m_model->getRowData(index.row()); QJsonObject obj = QJsonDocument::fromJson(QByteArray::fromStdString(request.properties())).object(); // Exercise choose? QJsonArray array; if (m_ui->cbExercises->currentIndex() != 0) array.push_back(m_ui->cbExercises->currentData().toInt()); obj.insert(QStringLiteral("available_in_exercise"), array); request.properties(QJsonDocument(obj).toJson(QJsonDocument::Compact).toStdString()); return m_ismFtc->mainStructureElementModifyRequest(request, this); }); } m_requestHelper->startRequests(); //m_requestHelper->startSingleRequest([this, request]() {return m_ismFtc->mainStructureElementModifyRequest(request, this);}); } void ExerciseAssignmentDialog::onSelectionChanged() { const auto selectedIndexes = m_ui->assetListView->selectedRows(); m_ui->pbAssigned->setEnabled(!selectedIndexes.isEmpty()); m_ui->cbExercises->setCurrentIndex(0); } void ExerciseAssignmentDialog::onPrint() { LtsPrinting::printView(m_session, this, m_ui->assetListView->treeView()); } } // namespace InfrastructureManagement