159 lines
5.0 KiB
C++
Executable File
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
|