Initial commit
This commit is contained in:
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
|
||||
Reference in new issue
Block a user