Files
qt5-legatus-legacy/Lts/Plugins/InfrastructureManagement/Gui/ExerciseAssignmentClassic/ism_exercise_assignment_dialog.cpp
T
2026-08-13 18:33:10 +02:00

159 lines
5.0 KiB
C++
Executable File

/**
* @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 <LtsUtilsGuiDds/request_helper.h>
#include <LtsSession/lts_session.h>
#include <LtsPrinting/printing.h>
#include <QTreeView>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
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<Interface::Dtc> &ismDtc,
const std::shared_ptr<Interface::Ftc> &ismFtc,
const std::shared_ptr<ExerciseManagement::Interface::Dtc> &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<qint32, ExerciseManagement::Exercise> 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