167 lines
5.3 KiB
C++
Executable File
167 lines
5.3 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* PresentationManagement - Script Create / Edit Dialog
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
*
|
|
* Created by Mike Wille, SLSE, 2017-03-20
|
|
*/
|
|
|
|
#include "pre_edit_dialog.h"
|
|
#include "ui_pre_edit_dialog.h"
|
|
|
|
#include <LtsSession/lts_session.h>
|
|
#include <LtsSession/lts_session_data.h>
|
|
#include <ngltools/ngltools_dtg.h>
|
|
#include <PresentationManagement/pre_translation.h>
|
|
|
|
#include <QDateTime>
|
|
|
|
namespace PresentationManagement
|
|
{
|
|
PresentationEditDialog::PresentationEditDialog(QWidget *parent)
|
|
: LtsWidgets::LtsFramelessDialog(parent, LtsWidgets::Behaviour::Modal)
|
|
, m_dtc(nullptr)
|
|
, m_ftc(nullptr)
|
|
, m_opmDtc(nullptr)
|
|
, m_presentationId(-1)
|
|
, m_ui(new Ui::PresentationEditDialog)
|
|
, m_logger(getLogger("PresentationEditDialog"))
|
|
{
|
|
DEBUG_LOG(m_logger) << "PresentationEditDialog ctor";
|
|
// setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint | Qt::Dialog); // hints..
|
|
|
|
m_ui->setupUi(this);
|
|
setWindowFlags( Qt::Dialog | Qt::WindowStaysOnTopHint | Qt::CustomizeWindowHint | Qt::WindowTitleHint ); // hints..
|
|
|
|
connect(m_ui->ltsDialogButtonBox->getButton(LtsWidgets::DialogButton::Close), &QPushButton::clicked, this, &PresentationEditDialog::close);
|
|
|
|
connect(m_ui->leName, &QLineEdit::textChanged, this, &PresentationEditDialog::validate);
|
|
connect(m_ui->leName, &QLineEdit::returnPressed, this, &PresentationEditDialog::onReturnPressed);
|
|
|
|
// TODO: undo this all:
|
|
m_ui->ltsDialogButtonBox->getButton(LtsWidgets::DialogButton::Apply)->hide();
|
|
m_ui->ltsDialogButtonBox->getButton(LtsWidgets::DialogButton::Ok)->hide();
|
|
|
|
m_ui->ltsDialogButtonBox->setText(LtsWidgets::DialogButton::Add, tr("OK"));
|
|
m_ui->ltsDialogButtonBox->connectButton(LtsWidgets::DialogButton::Add, this, &PresentationEditDialog::onSavePresentation,
|
|
Qt::UniqueConnection);
|
|
}
|
|
|
|
PresentationEditDialog::~PresentationEditDialog()
|
|
{
|
|
delete m_ui;
|
|
}
|
|
|
|
bool PresentationEditDialog::init(int presentationId,
|
|
const std::shared_ptr<Interface::Dtc> &dtc,
|
|
const std::shared_ptr<Interface::Ftc> &ftc,
|
|
const std::shared_ptr<OperatorManagement::Interface::Dtc> &opmDtc)
|
|
{
|
|
DEBUG_LOG(m_logger) << "PresentationEditDialog::init";
|
|
m_presentationId = presentationId;
|
|
m_dtc = dtc;
|
|
m_ftc = ftc;
|
|
m_opmDtc = opmDtc;
|
|
|
|
m_ui->lblFileStatus->setVisible(false);
|
|
m_ui->leFileStatus->setVisible(false);
|
|
|
|
m_ui->lblLastModified->setVisible(false);
|
|
m_ui->leLastModified->setVisible(false);
|
|
|
|
m_ui->lblOperator->setVisible(false);
|
|
m_ui->leOperator->setVisible(false);
|
|
|
|
if (m_presentationId > 0) //edit
|
|
{
|
|
PresentationManagement::Presentation p = m_dtc->presentation(m_presentationId);
|
|
m_ui->leName->setText(QString::fromStdString(p.name()));
|
|
m_ui->teDesc->setText(QString::fromStdString(p.description()));
|
|
|
|
m_ui->lblFileStatus->setVisible(true);
|
|
m_ui->leFileStatus->setVisible(true);
|
|
|
|
m_ui->lblLastModified->setVisible(true);
|
|
m_ui->leLastModified->setVisible(true);
|
|
|
|
m_ui->lblOperator->setVisible(true);
|
|
m_ui->leOperator->setVisible(true);
|
|
|
|
m_ui->leOperator->setText(QString::fromStdString(m_opmDtc->user(p.operatorId()).name()));
|
|
m_ui->leLastModified->setText(DTG::toStringMSec(p.lastModified()));
|
|
m_ui->leFileStatus->setText(PresentationManagement::toString(p.fileStatus()));
|
|
|
|
}
|
|
m_ui->ltsDialogButtonBox->getButton(LtsWidgets::DialogButton::Add)->setDisabled(m_ui->leName->text().isEmpty());
|
|
|
|
//touchable
|
|
#ifdef TABLET_MODE
|
|
m_ui->leName->setFocusPolicy(Qt::ClickFocus);
|
|
m_ui->teDesc->setFocusPolicy(Qt::ClickFocus);
|
|
#else
|
|
m_ui->leName->setFocus();
|
|
#endif
|
|
|
|
|
|
return true;
|
|
}
|
|
|
|
void PresentationEditDialog::validate(const QString &fileName)
|
|
{
|
|
m_ui->ltsDialogButtonBox->getButton(LtsWidgets::DialogButton::Add)->setDisabled(fileName.isEmpty());
|
|
}
|
|
|
|
void PresentationEditDialog::onReturnPressed()
|
|
{
|
|
if (m_ui->ltsDialogButtonBox->getButton(LtsWidgets::DialogButton::Add)->isEnabled())
|
|
m_ui->ltsDialogButtonBox->getButton(LtsWidgets::DialogButton::Add)->setFocus();
|
|
}
|
|
|
|
void PresentationEditDialog::onSavePresentation()
|
|
{
|
|
if (apply())
|
|
close();
|
|
}
|
|
|
|
bool PresentationEditDialog::apply()
|
|
{
|
|
PresentationModifyRequest req;
|
|
req.id(m_presentationId);
|
|
req.name(m_ui->leName->text().toStdString());
|
|
req.description(m_ui->teDesc->toPlainText().toStdString());
|
|
req.operatorId(LtsSessionData::LtsSessionData::getInstance()->getOperatorId());
|
|
req.lastModified(QDateTime::currentMSecsSinceEpoch());
|
|
req.fileStatus(FileStatus::Valid);
|
|
|
|
try
|
|
{
|
|
if (m_presentationId > 0) // first request already saved content
|
|
{
|
|
auto reply(m_ftc->getPresentationContentRequest(GetPresentationContentRequest(m_presentationId)));
|
|
|
|
m_content = reply.content();
|
|
if (m_content.empty())
|
|
{
|
|
throw std::runtime_error(QStringLiteral("No content for presentation with id %1").arg(reply.id()).toStdString().c_str());
|
|
}
|
|
}
|
|
|
|
DEBUG_LOG(m_logger) << "Content size = " << m_content.size() << " for presentationId: " << m_presentationId;
|
|
req.content(m_content);
|
|
|
|
m_presentationId = m_ftc->presentationModifyRequest(req);
|
|
}
|
|
catch(...)
|
|
{
|
|
LtsWidgets::LtsMessageDialog::showMessage(this, tr("Failed to save the script. Please try again later."));
|
|
return false;
|
|
}
|
|
|
|
emit newScript(m_presentationId);
|
|
return true;
|
|
}
|
|
|
|
} // namespace PresentationManagement
|