Initial commit

This commit is contained in:
torsten committed 2026-08-13 18:33:10 +02:00
commit b7d90b9afe
16245 files changed
+3396666

No files matched your search

@@ -0,0 +1,162 @@
/**
* @RDE_HEADER@
* Evaluations - Criterium Create / Edit Dialog
* $Id$
* $HeadURL$
* $Author$
*
* Created by Hanna E. Rathje, SLSE, 2017-11-01
*/
#include "evl_edit_dialog.h"
#include "ui_evl_edit_dialog.h"
#include <LtsSession/lts_session.h>
#include <LtsSession/lts_session_data.h>
#include <Evaluations/evl_translation.h>
#include <PluginInterfaces/gui_plugin_interface.h>
#include <FileManagement/flm_translation.h>
#include <QJsonObject>
#include <QJsonDocument>
namespace Evaluations
{
CriteriumEditDialog::CriteriumEditDialog(QWidget *parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkCancel)
, m_requestHelper(new LtsUtils::RequestHelper(this))
, m_ui(new Ui::CriteriumEditDialog)
, m_logger(getLogger("CriteriumEditDialog"))
{
DEBUG_LOG(m_logger) << "CriteriumEditDialog ctor";
m_ui->setupUi(this);
m_uiRequirements->addRequirement({ m_ui->lblName, [this]() { return !m_ui->leName->text().isEmpty(); } });
}
CriteriumEditDialog::~CriteriumEditDialog()
{
delete m_ui;
}
void CriteriumEditDialog::retranslate()
{
translate(m_ui, m_dtc->evaluationCriterium(m_criteriumId), tr("Criterium"));
}
bool CriteriumEditDialog::init(int criteriumId,
LtsSession::LtsSession *session,
const std::shared_ptr<Interface::Dtc> &dtc,
const std::shared_ptr<Interface::Ftc> &ftc,
const std::shared_ptr<OperatorManagement::ForeignGuiComboboxInterface> &opmCbxDtc)
{
DEBUG_LOG(m_logger) << "CriteriumEditDialog::init";
m_criteriumId = criteriumId;
m_dtc = dtc;
m_ftc = ftc;
m_session = session;
opmCbxDtc->fillOperatorComboBox(m_ui->cbxOperators);
if (m_criteriumId > 0) //edit
{
Evaluations::EvaluationCriterium eval = m_dtc->evaluationCriterium(m_criteriumId);
m_ui->leName->setText(QString::fromStdString(eval.name()));
m_ui->teDesc->setText(QString::fromStdString(eval.description()));
m_ui->cbxOperators->setCurrentIndex(m_ui->cbxOperators->findData(eval.operatorId()));
}
else
{
m_ui->cbxOperators->setCurrentIndex(m_ui->cbxOperators->findData(LtsSessionData::LtsSessionData::getInstance()->getOperatorId()));
}
m_ui->leName->setFocus();
// Save/Load from Library Button
m_buttonBox->connectLibraryButton(this, &CriteriumEditDialog::onImportButtonClicked,
&CriteriumEditDialog::onExportButtonClicked);
if (!m_session->getForeignGuiInterface<FileManagement::ForeignGuiInterface>(m_flmGui))
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Library, false);
return true;
}
bool CriteriumEditDialog::apply()
{
// prepare request
EvlCriteriumModifyRequest req;
req.id(m_criteriumId);
req.name(m_ui->leName->text().toStdString());
req.description(m_ui->teDesc->toPlainText().toStdString());
req.operatorId(m_ui->cbxOperators->currentData().toInt());
return m_requestHelper->startSingleRequest([this, req]()
{
return m_ftc->evlCriteriumModifyRequest(req, this);
});
}
QByteArray CriteriumEditDialog::UiToJson()
{
QJsonObject obj;
obj[QStringLiteral("XmlType")] = FileManagement::toString(FileManagement::XmlType::EVLCriteriumEdit);
obj[QStringLiteral("Name")] = m_ui->leName->text();
obj[QStringLiteral("Description")] = m_ui->teDesc->toPlainText();
obj[QStringLiteral("OperatorId")] = m_ui->cbxOperators->currentData().toInt();
return QJsonDocument(obj).toJson(QJsonDocument::Compact);
} // end UiToJson
void CriteriumEditDialog::jsonToUi(const QByteArray &content)
{
// TODO: check for json error ...
const QJsonDocument doc(QJsonDocument::fromJson(content));
const QJsonObject obj(doc.object());
QString name = obj[QStringLiteral("Name")].toString();
QString description = obj[QStringLiteral("Description")].toString();;
int operatorId = obj[QStringLiteral("OperatorId")].toInt();
m_ui->leName->setText(name);
m_ui->teDesc->setText(description);
m_ui->cbxOperators->setCurrentIndex(m_ui->cbxOperators->findData(operatorId));
} // end jsonToUi
void CriteriumEditDialog::onExportButtonClicked()
{
QByteArray byteArray = UiToJson();
int fileId = m_flmGui->saveFileContent(this, FileManagement::FileType::Xml, m_session->exerciseId(), byteArray);
if (fileId > 0)
DEBUG_LOG(m_logger) << "Saved file with id = " << fileId;
else
ERROR_LOG(m_logger) << "Could not save file in library ";
}
void CriteriumEditDialog::onImportButtonClicked()
{
QByteArray content;
int fileId = m_flmGui->loadFileContent(this, content, {FileManagement::FileType::Xml}, m_session->exerciseId(), FileManagement::toString(FileManagement::XmlType::EVLCriteriumEdit));
if (fileId > 0)
{
if (!m_flmGui->isXmlType(content, FileManagement::toString(FileManagement::XmlType::EVLCriteriumEdit)))
{
QHash<LtsWidgets::Button, QString> texts({{LtsWidgets::Button::Yes, tr("Ok")}});
LtsWidgets::LtsMessageDialog::showMessage(this,
tr("Invalid xml file content"),
windowTitle(),
LtsWidgets::Behaviour::Modal,
LtsWidgets::Button::Yes,
texts);
}
else
{
jsonToUi(content);
}
}
} // end onImportButtonClicked
} // namespace Evaluations