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,48 @@
#
# $Id$
# $HeadURL$
# $Author$
# Created by Christian Ehrlicher, SLSE, 2016-02-29
#
SET(san_edit_gui_SRCS
san_nine_liner_edit_gui_plugin.cpp
san_nine_liner_edit_gui_plugin.h
san_nine_liner_dialog.cpp
san_nine_liner_dialog.h
san_nine_liner_dialog_model.cpp
san_nine_liner_dialog_model.h
san_nine_liner_edit_dialog.cpp
san_nine_liner_edit_dialog.h
)
NGL_WRAP_UI(san_edit_gui_SRCS
san_nine_liner_dialog.ui
san_nine_liner_edit_dialog.ui
)
NGL_ADD_LIBRARY(WS EvlSanNineLinerEditGuiPlugin MODULE ${san_edit_gui_SRCS})
NGL_TARGET_LINK_LIBRARIES(EvlSanNineLinerEditGuiPlugin
ngltools # dtg
ngltranslator
NGLLogger
LtsSession
EvlDataPluginInterface
EvlGuiPluginInterface
svcEvlCommon
Qt5::Widgets
LtsCoordTrans
ltsCoordWidget
LtsWidgets
LtsDataView
LtsUtilsGuiDds
LtsUtilsSettings
LtsSessionData
ProjectConfig
LtsUtilsGuiConnectDialog
)
NGL_INSTALL_TARGET(EvlSanNineLinerEditGuiPlugin)
@@ -0,0 +1,136 @@
/**
* @RDE_HEADER@
* SanNineLiner - Overview Dialog
* $Id$
* $HeadURL$
* $Author$
* Created by Hanna E. Rathje, SLSE, 2020-05-14
*/
#include "san_nine_liner_dialog.h"
#include "ui_san_nine_liner_dialog.h"
#include "san_nine_liner_dialog_model.h"
#include "san_nine_liner_edit_dialog.h"
#include <Plugins/Evaluations/evl_data_plugin_interface.h>
#include <LtsSession/lts_session_data.h>
#include <LtsUtilsSettings/settings.h>
namespace Evaluations
{
//---------------------------------
// SanNineLinerDialog
//---------------------------------
SanNineLinerDialog::SanNineLinerDialog(const QString &menuGroup, QWidget *parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly)
, m_ui(new Ui::SanNineLinerDialog)
, m_menuGroup(menuGroup)
, m_requestHelper(new LtsUtils::RequestHelper(this))
, m_logger(getLogger("SanNineLinerDialog"))
{
m_ui->setupUi(this);
setOnlineHelpFilename(QStringLiteral("Situation-SanNineLiner"));
m_buttonBox->connectButton(LtsWidgets::DialogButton::Add, this, &SanNineLinerDialog::onAddSanNineLiner);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Edit, this, &SanNineLinerDialog::onEditSanNineLiner);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Remove, this, &SanNineLinerDialog::onRemoveSanNineLiner);
connect(m_ui->widget, &LtsDataView::LtsDataView::signalDoubleClicked,
this, &SanNineLinerDialog::onEditSanNineLiner);
}
SanNineLinerDialog::~SanNineLinerDialog()
{
delete m_ui;
}
void SanNineLinerDialog::retranslate()
{
translate(m_ui, tr("SanNineLiner"));
}
void SanNineLinerDialog::tableColumnOrganiserSetting()
{
//LtsColumnOrganiser
m_ui->widget->setColumnsOrganiserEnabled(identifier(), true);
}
bool SanNineLinerDialog::init(LtsSession::LtsSessionDataDds *session)
{
m_session = session;
std::shared_ptr<Evaluations::Interface::Dtc> dtc;
if (!m_session->getDtc<Evaluations::DataInterface>(dtc))
return false;
if (!m_session->getFtc<Evaluations::DataInterface>(m_ftc))
return false;
m_model = new SanNineLinerDialogModel(this);
m_model->initModel(dtc);
auto proxy = new SanNineLinerProxyModel(this);
proxy->setSourceModel(m_model);
m_ui->widget->setModel(proxy);
connect(m_ui->widget, &LtsDataView::LtsDataView::signalSelectionChanged,
this, &SanNineLinerDialog::enaDisa);
enaDisa();
return true;
}
void SanNineLinerDialog::enaDisa()
{
QModelIndexList selectedRows = m_ui->widget->selectedRows();
const int cntSelectedRows = selectedRows.size();
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Edit, cntSelectedRows == 1);
const QModelIndex curIdx = m_ui->widget->currentIndex();
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Remove, curIdx.isValid() && cntSelectedRows == 1);
}
void SanNineLinerDialog::onAddSanNineLiner()
{
SanNineLinerEditDialog *dialog = new SanNineLinerEditDialog(this);
dialog->init(m_session, m_menuGroup, 0 /* new sanNineLiner */);
addDialog(dialog, m_menuGroup, QStringLiteral("New SanNineLiner"));
}
void SanNineLinerDialog::onRemoveSanNineLiner()
{
const QModelIndex curIdx = m_ui->widget->currentIndex();
if (!curIdx.isValid())
return;
const int sanNineLinerId = m_model->getRowData(curIdx.row()).id();
Core::RemoveElementRequest req(sanNineLinerId);
m_requestHelper->startSingleRequest([req, this]()
{
return m_ftc->sanNineLinerRemoveRequest(req, this);
});
}
void SanNineLinerDialog::onEditSanNineLiner()
{
const QModelIndex idx = m_ui->widget->currentIndex();
const Evaluations::SanNineLiner san = m_model->getRowData(idx.row());
if (san.id() <= 0)
return;
DEBUG_LOG(m_logger) << "current SanNineLinerId: " << san.id();
SanNineLinerEditDialog *dialog = new SanNineLinerEditDialog(this);
dialog->init(m_session, m_menuGroup, san.id());
const QString identifier = QStringLiteral("EditSanNineLiner%1").arg(san.id());
addDialog(dialog, m_menuGroup, identifier);
}
} // namespace Evaluations
@@ -0,0 +1,60 @@
/**
* @RDE_HEADER@
* SanNineLiner - Overview Dialog
* $Id$
* $HeadURL$
* $Author$
* Created by Hanna E. Rathje, SLSE, 2020-05-14
*/
#pragma once
#include <Evaluations/evl_ftc.h>
#include <Evaluations/logger.h>
#include <LtsWidgets/lts_dialog.h>
#include <LtsUtilsGuiDds/request_helper.h>
#include <LtsSession/lts_session_data_dds.h>
namespace Ui
{
class SanNineLinerDialog;
}
namespace Evaluations
{
class SanNineLinerDialogModel;
// --------------------------------------------------------
// SanNineLinerDialog
// --------------------------------------------------------
class SanNineLinerDialog : public LtsWidgets::LtsDialog
, protected Evaluations::Interface::Ftc::SanNineLinerRemoveReplyHandler
{
Q_OBJECT
public:
explicit SanNineLinerDialog(const QString &menuGroup, QWidget *parent = nullptr);
~SanNineLinerDialog();
bool init(LtsSession::LtsSessionDataDds *session);
private slots:
void enaDisa();
void onAddSanNineLiner();
void onEditSanNineLiner();
void onRemoveSanNineLiner();
private:
void retranslate() override;
void onSanNineLinerRemoveReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); }
void tableColumnOrganiserSetting() override;
SanNineLinerDialogModel *m_model{nullptr};
Ui::SanNineLinerDialog *m_ui{nullptr};
LtsSession::LtsSessionDataDds *m_session{nullptr};
std::shared_ptr<Evaluations::Interface::Ftc> m_ftc;
QString m_menuGroup;
LtsUtils::RequestHelper *m_requestHelper{nullptr};
LOGGER_T m_logger;
};
}
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SanNineLinerDialog</class>
<widget class="QWidget" name="SanNineLinerDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>500</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">Exercise Management</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="LtsDataView::LtsDataView" name="widget">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>250</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>LtsDataView::LtsDataView</class>
<extends>QWidget</extends>
<header>LtsDataView/lts_data_view.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>
@@ -0,0 +1,90 @@
/**
* @RDE_HEADER@
* HMI Plugin for SanNineLiner - San NineLiner Dialog Model
* $Id$
* $HeadURL$
* $Author$
* Created by Hanna E. Rathje, 2020-05-18
*/
#include "san_nine_liner_dialog_model.h"
#include <LtsUtilsCore/dds_vector.h>
#include <ngltools/ngltools_dtg.h>
#include <Evaluations/evl_translation.h>
#include <LtsCoordTrans/lts_coord_trans.h>
namespace Evaluations
{
//---------------------------------
// SanNineLinerDialogModel
//---------------------------------
SanNineLinerDialogModel::SanNineLinerDialogModel(QObject *parent)
: LtsWidgets::LtsAbstractTableModel<Evaluations::SanNineLiner>({tr("Id"),
tr("Created"),
tr("Position"),
tr("Radio frequency / Call Sign / Suffix")
},
parent)
, m_logger(getLogger("SanNineLinerDialogModel"))
{}
bool SanNineLinerDialogModel::initModel(const std::shared_ptr<Evaluations::Interface::Dtc> &dtc)
{
m_evlDtc = dtc;
connect(m_evlDtc.get(), &Evaluations::Interface::Dtc::sanNineLinerChanged,
this, &SanNineLinerDialogModel::onDataChanged);
// insert Model
m_evlDtc->sanNineLiners([this](const Evaluations::SanNineLiner &san)
{
insertRow(san);
});
INFO_LOG(m_logger) << "initModel - #sanNineLiner: " << m_vecData.size();
return true;
}
QVariant SanNineLinerDialogModel::data(const QModelIndex &index, int role) const
{
if (role != Qt::DisplayRole || !indexIsValid(index))
return QVariant();
const Evaluations::SanNineLiner &san = m_vecData.at(index.row());
switch (index.column())
{
case SanNineLinerDialogModel::Columns::Id:
return san.id();
case SanNineLinerDialogModel::Columns::Created:
return QDateTime::fromMSecsSinceEpoch(san.lastModified());
case SanNineLinerDialogModel::Columns::Position:
{
if (std::isnan(san.line1_position().lat()) || std::isnan(san.line1_position().lon()))
return tr("---");
return LtsCoordTrans::mgrsFromGeographic(san.line1_position().lon(), san.line1_position().lat());
}
case SanNineLinerDialogModel::Columns::RadioFrequencyCallSignSuffix:
return QString::fromStdString(san.line2_RadioFrequencyCallSignSuffix());
default:
return QVariant();
}
return QVariant();
}
//
// SanNineLinerProxyModel
//
void SanNineLinerProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
{
m_sourceModel = qobject_cast<SanNineLinerDialogModel*>(sourceModel);
LtsWidgets::LtsColumnFilterProxyModel::setSourceModel(sourceModel);
}
} // namespace Evaluations
@@ -0,0 +1,58 @@
/**
* @RDE_HEADER@
* HMI Plugin for SanNineLiner - San NineLiner Dialog Model
* $Id$
* $HeadURL$
* $Author$
* Created by Hanna E. Rathje, 2020-05-18
*/
#pragma once
#include <Evaluations/logger.h>
#include <LtsWidgets/lts_abstract_table_model.h>
#include <LtsWidgets/lts_column_filter_proxy_model.h>
#include <Evaluations/evl_dtc.h>
namespace Evaluations
{
// --------------------------------------------------------
// SanNineLinerModel
// --------------------------------------------------------
class SanNineLinerDialogModel final : public LtsWidgets::LtsAbstractTableModel<Evaluations::SanNineLiner>
{
Q_OBJECT
public:
enum Columns
{
Id,
Created,
Position,
RadioFrequencyCallSignSuffix
};
explicit SanNineLinerDialogModel(QObject *parent = nullptr);
bool initModel(const std::shared_ptr<Evaluations::Interface::Dtc> &dtc);
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override final;
private:
std::shared_ptr<Evaluations::Interface::Dtc> m_evlDtc;
LOGGER_T m_logger;
friend class SanNineLinerProxyModel;
};
class SanNineLinerProxyModel final : public LtsWidgets::LtsColumnFilterProxyModel
{
Q_OBJECT
public:
using LtsWidgets::LtsColumnFilterProxyModel::LtsColumnFilterProxyModel;
void setSourceModel(QAbstractItemModel *sourceModel) override;
private:
SanNineLinerDialogModel *m_sourceModel{nullptr};
};
}
@@ -0,0 +1,332 @@
/**
* @RDE_HEADER@
* Evaluations - SanNineLiner Edit Dialog
* $Id$
* $HeadURL$
* $Author$
* Created by Hanna E. Rathje, SLSE, 2020-05-18
*/
#include "san_nine_liner_edit_dialog.h"
#include "ui_san_nine_liner_edit_dialog.h"
#include <Services/Evaluations/san_category_line_json.h>
#include <LtsWidgets/lts_message_dialog.h>
#include <LtsUtilsCore/dds_vector.h>
#include <LtsUtilsSettings/settings.h>
#include <LtsSession/lts_session_data.h>
#include <PluginInterfaces/gui_plugin_interface.h>
#include <Plugins/SituationMapPlugin/situation_map_gui_plugin_interface.h>
#include <Plugins/Evaluations/evl_data_plugin_interface.h>
#include <ngltools/ngltools_dtg.h>
#include <ngltranslator/ngltranslator.h>
#include <QJsonDocument>
#include <QIntValidator>
namespace Evaluations
{
// --------------------------------------------------------
// ExerciseManangementEditDialog
// --------------------------------------------------------
SanNineLinerEditDialog::SanNineLinerEditDialog(QWidget *parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel)
, m_ui(new Ui::SanNineLinerEditDialog)
, m_validator(new QIntValidator(this))
, m_requestHelper(new LtsUtils::RequestHelper(this))
, m_logger(getLogger("SanNineLinerEditDialog"))
{
m_ui->setupUi(this);
m_validator->setRange(0, 99);
m_ui->le3A->setValidator(m_validator);
m_ui->le3B->setValidator(m_validator);
m_ui->le3C->setValidator(m_validator);
m_ui->le3D->setValidator(m_validator);
m_ui->le3E->setValidator(m_validator);
m_ui->le4A->setValidator(m_validator);
m_ui->le4B->setValidator(m_validator);
m_ui->le4C->setValidator(m_validator);
m_ui->le4D->setValidator(m_validator);
m_ui->le5A->setValidator(m_validator);
m_ui->le5B->setValidator(m_validator);
m_ui->le8A->setValidator(m_validator);
m_ui->le8B->setValidator(m_validator);
m_ui->le8C->setValidator(m_validator);
m_ui->le8D->setValidator(m_validator);
m_ui->le8E->setValidator(m_validator);
connect(m_ui->pbClear, &QPushButton::clicked,
m_ui->positionEdit, &LtsCoordWidget::LtsCoordWidget::clear);
}
SanNineLinerEditDialog::~SanNineLinerEditDialog()
{
delete m_ui;
}
void SanNineLinerEditDialog::retranslate()
{
translate(m_ui, QLatin1String("SanNineLiner"), m_sanNineLinerId, QLatin1String("Custom"), tr("SanNineLiner Edit"));
}
bool SanNineLinerEditDialog::init(LtsSession::LtsSessionDataDds *session,
const QString &menuGroup,
const int sanNineLinerId)
{
m_session = session;
m_menuGroup = menuGroup;
m_sanNineLinerId = sanNineLinerId;
if (!m_session->getDtc<Evaluations::DataInterface>(m_dtc))
return false;
if (!m_session->getFtc<Evaluations::DataInterface>(m_ftc))
return false;
m_session->getForeignGuiInterface<SituationMap::ForeignGuiInterface>(m_sitMapGuiIfc);
if (m_sitMapGuiIfc)
connect(m_ui->pbPosition, &QPushButton::clicked, this, &SanNineLinerEditDialog::getPosition);
else
m_ui->pbPosition->setEnabled(false);
m_ui->dtTime->setRetrieveCurrentTimeCallback([this]() { return m_session->partitionTime(); });
Evaluations::SanNineLiner data = m_dtc->sanNineLiner(sanNineLinerId);
// set data from dds
if (data.id() > 0)
{
m_ui->dtTime->setMsecsSinceEpoch(data.lastModified());
m_ui->leRadioFrequencyCallSignSuffix->setText(QString::fromStdString(data.line2_RadioFrequencyCallSignSuffix()));
QPointF position(data.line1_position().lon(), data.line1_position().lat());
if (!position.isNull())
m_ui->positionEdit->setCoordinate(position);
// FromJson line 3 - 9
QVector<Database::SanCategoryLine> linesCategory = SanCategoryLine::fromJson(data.lines(), data.id());
INFO_LOG(m_logger) << "linesCategory size: " << linesCategory.size();
for (const Database::SanCategoryLine &cl : qAsConst(linesCategory))
{
// line 3,4,5,8
QString leName = QStringLiteral("le") + QString::number(cl.line) + cl.category;
QLineEdit *leLineAmount = findChild<QLineEdit*>(leName);
if (leLineAmount)
{
INFO_LOG(m_logger) << "leName: " << leName << ", amount: " << cl.amount;
leLineAmount->setText(QString::number(cl.amount));
continue;
}
// line 6
QString rbName = QStringLiteral("rb") + QString::number(cl.line) + cl.category;
QRadioButton *rbCategory = findChild<QRadioButton*>(rbName);
if (rbCategory)
{
INFO_LOG(m_logger) << "rbName: " << rbName;
rbCategory->setChecked(true);
continue;
}
// line 7, 9
QString cbxName = QStringLiteral("cbx") + QString::number(cl.line) + cl.category + (cl.category == QStringLiteral("N") ? QStringLiteral("u") : QString());
QCheckBox *cbxCategory = findChild<QCheckBox*>(cbxName);
if (cbxCategory)
{
INFO_LOG(m_logger) << "cbxName: " << cbxName;
cbxCategory->setChecked(true);
}
}
}
else
{
m_ui->dtTime->setMsecsSinceEpoch(m_session->partitionTime());
}
setOnlineHelpFilename(QStringLiteral("Situation-SanNineLiner"));
enaDisa();
return true;
}
void SanNineLinerEditDialog::enaDisa()
{
m_ui->lblLine1_DE->hide();
m_ui->lblLine2_DE->hide();
m_ui->lblLine3_DE->hide();
m_ui->lblLine4_DE->hide();
m_ui->lblLine5_DE->hide();
m_ui->lblLine6_DE->hide();
m_ui->lblLine7_DE->hide();
m_ui->lblLine8_DE->hide();
m_ui->lblLine9_DE->hide();
if (NGL::translationLocale() == "de_DE")
{
m_ui->lblLine1_DE->show();
m_ui->lblLine2_DE->show();
m_ui->gbLine3->setTitle(m_ui->gbLine3->title()+m_ui->lblLine3_DE->text());
m_ui->gbLine4->setTitle(m_ui->gbLine4->title()+m_ui->lblLine4_DE->text());
m_ui->gbLine5->setTitle(m_ui->gbLine5->title()+m_ui->lblLine5_DE->text());
m_ui->gbLine6->setTitle(m_ui->gbLine6->title()+m_ui->lblLine6_DE->text());
m_ui->gbLine7->setTitle(m_ui->gbLine7->title()+m_ui->lblLine7_DE->text());
m_ui->gbLine8->setTitle(m_ui->gbLine8->title()+m_ui->lblLine8_DE->text());
m_ui->gbLine9->setTitle(m_ui->gbLine9->title()+m_ui->lblLine9_DE->text());
}
}
bool SanNineLinerEditDialog::apply() // TODO: clean me up !
{
SanNineLinerModifyRequest request;
request.id(m_sanNineLinerId);
// Update Data of Existing san nine liner
request.id(m_sanNineLinerId);
request.lastModified(m_ui->dtTime->msecsSinceEpoch());
const Core::GeoPosition2D pos(m_ui->positionEdit->coordinate().x(), m_ui->positionEdit->coordinate().y());
request.line1_position(pos);
request.line2_radioFrequencyCallSignSuffix(m_ui->leRadioFrequencyCallSignSuffix->text().toStdString());
m_vecCategoryLine.clear();
// line 3 to 9 in m_vecCategoryLine
int line = 3;
// line 3
setCategoryLine(line, QStringLiteral("A"), m_ui->le3A);
setCategoryLine(line, QStringLiteral("B"), m_ui->le3B);
setCategoryLine(line, QStringLiteral("C"), m_ui->le3C);
setCategoryLine(line, QStringLiteral("D"), m_ui->le3D);
setCategoryLine(line, QStringLiteral("E"), m_ui->le3E);
// line 4
line = 4;
setCategoryLine(line, QStringLiteral("A"), m_ui->le4A);
setCategoryLine(line, QStringLiteral("B"), m_ui->le4B);
setCategoryLine(line, QStringLiteral("C"), m_ui->le4C);
setCategoryLine(line, QStringLiteral("D"), m_ui->le4D);
// line 5
line = 5;
setCategoryLine(line, QStringLiteral("A"), m_ui->le5A);
setCategoryLine(line, QStringLiteral("B"), m_ui->le5B);
// line 6
line = 6;
setCategoryLine(line, QStringLiteral("A"), m_ui->rb6A);
setCategoryLine(line, QStringLiteral("B"), m_ui->rb6B);
// line 7
line = 7;
setCategoryLine(line, QStringLiteral("A"), m_ui->cbx7A);
setCategoryLine(line, QStringLiteral("B"), m_ui->cbx7B);
setCategoryLine(line, QStringLiteral("C"), m_ui->cbx7C);
setCategoryLine(line, QStringLiteral("D"), m_ui->cbx7D);
setCategoryLine(line, QStringLiteral("E"), m_ui->cbx7E);
// line 8
line = 8;
setCategoryLine(line, QStringLiteral("A"), m_ui->le8A);
setCategoryLine(line, QStringLiteral("B"), m_ui->le8B);
setCategoryLine(line, QStringLiteral("C"), m_ui->le8C);
setCategoryLine(line, QStringLiteral("D"), m_ui->le8D);
setCategoryLine(line, QStringLiteral("E"), m_ui->le8E);
// line 9
line = 9;
setCategoryLine(line, QStringLiteral("N"), m_ui->cbx9Nu);
setCategoryLine(line, QStringLiteral("B"), m_ui->cbx9B);
setCategoryLine(line, QStringLiteral("C"), m_ui->cbx9C);
setCategoryLine(line, QStringLiteral("None"), m_ui->cbx9None);
QJsonDocument doc = SanCategoryLine::toJson(m_vecCategoryLine);
request.lines(doc.toJson().toStdString());
if (!m_requestHelper->startSingleRequest([this, request]()
{
return m_ftc->sanNineLinerModifyRequest(request, this);
}))
return false;
if (request.id() <= 0)
{
m_sanNineLinerId = m_requestHelper->getRepliedId();
ERROR_LOG(m_logger) << "Created new san nine liner with id " << m_sanNineLinerId;
}
return true;
}
bool SanNineLinerEditDialog::has2DMap()
{
if (!m_sitMapGuiIfc)
return false;
if (m_sitMapGuiIfc->mapMode() != SituationMap::MapMode::MapMode_2D)
{
LtsWidgets::LtsMessageDialog::showMessage(this, tr("Only available in 2D mode"));
return false;
}
return true;
}
void SanNineLinerEditDialog::getPosition()
{
if (!has2DMap())
return;
m_sitMapGuiIfc->getCoordinate(this, SLOT(onCoordinate(QPointF)), nullptr);
}
void SanNineLinerEditDialog::onCoordinate(const QPointF &centerPoint)
{
m_ui->positionEdit->setCoordinate(centerPoint);
}
void SanNineLinerEditDialog::setCategoryLine( int line, const QString &category, QLineEdit* leAmount)
{
Database::SanCategoryLine cl;
cl.nineLinerId = m_sanNineLinerId;
cl.line = line;
cl.category = category;
cl.amount = leAmount->text().toInt();
if (cl.amount > 0)
m_vecCategoryLine.push_back(std::move(cl));
}
void SanNineLinerEditDialog::setCategoryLine( int line, const QString &category, QRadioButton *rb)
{
Database::SanCategoryLine cl;
cl.nineLinerId = m_sanNineLinerId;
cl.line = line;
cl.category = category;
cl.amount = 0;
if (rb->isChecked())
m_vecCategoryLine.push_back(std::move(cl));
}
void SanNineLinerEditDialog::setCategoryLine(int line, const QString &category, QCheckBox *cbx)
{
Database::SanCategoryLine cl;
cl.nineLinerId = m_sanNineLinerId;
cl.line = line;
cl.category = category;
cl.amount = 0;
if (cbx->isChecked())
m_vecCategoryLine.push_back(std::move(cl));
}
} // namespace Evaluations
@@ -0,0 +1,91 @@
/**
* @RDE_HEADER@
* Evaluations - SanNineLiner Edit Dialog
* $Id$
* $HeadURL$
* $Author$
* Created by Hanna E. Rathje, SLSE, 2020-05-18
*/
#pragma once
#include <Evaluations/evl_ftc.h>
#include <Evaluations/evl_dtc.h>
#include <Evaluations/logger.h>
#include <LtsWidgets/lts_dialog.h>
#include <LtsUtilsGuiDds/request_helper.h>
#include <LtsSession/lts_session_data_dds.h>
#include <Evaluations/evl_db_structs.h>
namespace Ui
{
class SanNineLinerEditDialog;
}
namespace SituationMap
{
class ForeignGuiInterface;
}
class QIntValidator;
namespace Evaluations
{
// --------------------------------------------------------
// SanNineLinerEditDialog
// --------------------------------------------------------
class SanNineLinerEditDialog final : public LtsWidgets::LtsDialog
, protected Evaluations::Interface::Ftc::SanNineLinerModifyReplyHandler
{
Q_OBJECT
public:
explicit SanNineLinerEditDialog(QWidget *parent = nullptr);
bool init(LtsSession::LtsSessionDataDds *session,
const QString &menuGroup,
const int sanNineLinerId);
~SanNineLinerEditDialog();
protected:
void onSanNineLinerModifyReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); }
private slots:
void onCoordinate(const QPointF &centerPoint);
void getPosition();
signals:
void sendData(const Evaluations::SanNineLiner &data);
private:
void retranslate() override;
bool apply() override final;
bool has2DMap();
void setCategoryLine(int line, const QString &category, QLineEdit* leAmount);
void setCategoryLine( int line, const QString &category, QRadioButton *rb);
void setCategoryLine( int line, const QString &category, QCheckBox *cbx);
void enaDisa();
Ui::SanNineLinerEditDialog *m_ui{nullptr};
LtsSession::LtsSessionDataDds *m_session{nullptr};
int m_sanNineLinerId{0};
std::vector<Database::SanCategoryLine> m_vecCategoryLine;
std::shared_ptr<Interface::Dtc> m_dtc;
std::shared_ptr<Interface::Ftc> m_ftc;
std::shared_ptr<SituationMap::ForeignGuiInterface> m_sitMapGuiIfc;
QString m_menuGroup;
QIntValidator *m_validator{nullptr};
LtsUtils::RequestHelper *m_requestHelper{nullptr};
LOGGER_T m_logger;
};
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,78 @@
/**
* @RDE_HEADER@
* GUI Plugin for ExerciseManangement
* $Id$
* $HeadURL$
* $Author$
* Created by Christian Ehrlicher, SLSE, 2016-02-29
*/
#include "san_nine_liner_edit_gui_plugin.h"
#include "san_nine_liner_dialog.h"
#include <LtsSession/lts_session.h>
#include <Evaluations/evl_operator_rights.h>
namespace Evaluations
{
std::shared_ptr<GuiPluginBase::Interface> GuiPlugin::createGuiInterface(LtsSession::LtsSession *session)
{
return std::make_shared<InterfaceImpl>(session);
}
InterfaceImpl::InterfaceImpl(LtsSession::LtsSession *session)
: GuiPluginBase::Interface(session, getLogger("Plugins.Gui.San.Edit"))
, m_dtc(nullptr)
{}
QVector<LtsWidgets::PluginData> InterfaceImpl::getActions()
{
QVector<LtsWidgets::PluginData> ret;
LtsWidgets::PluginData plData;
plData.menuGroup = menuGroup();
plData.menuText = tr("SanNineLiner");
plData.menuIcon = QIcon(QLatin1String("icon:set_exercise_process.svg"));
plData.identifier = QLatin1String("sanNineLinerEdit");
plData.operatorRight = OperatorRights::SanNineLinerEdit;
plData.exercisePart = LtsWidgets::ExercisePart::eExecution;
plData.createWidgetFunc = [this](QWidget *parent)
{
return onShowSanNineLinerDialog(parent);
};
ret.append(plData);
return ret;
}
bool InterfaceImpl::fetchInterfaces()
{
if (!m_session->getDtc<Evaluations::DataInterface>(m_dtc))
return false;
for (const QString &option : getOptions())
DEBUG_LOG(m_logger) << "option: " << option;
return true;
}
void InterfaceImpl::clearInterfaces()
{
m_dtc = nullptr;
}
LtsWidgets::LtsDialog *InterfaceImpl::onShowSanNineLinerDialog(QWidget *parent)
{
SanNineLinerDialog *dialog = new SanNineLinerDialog(menuGroup(), parent);
dialog->init(m_session);
return dialog;
}
} // namespace Evaluations
@@ -0,0 +1,61 @@
/**
* @RDE_HEADER@
* Gui Plugin for ExerciseManangement
* $Id$
* $HeadURL$
* $Author$
* Created by Christian Ehrlicher, SLSE, 2016-02-29
*/
#pragma once
#include <PluginInterfaces/gui_plugin_interface.h>
#include <Common/ProjectConfig/project_defines.h>
#include <Plugins/Evaluations/evl_data_plugin_interface.h>
#include <Plugins/Evaluations/evl_gui_plugin_interface.h>
namespace Evaluations
{
class GuiPlugin final : public QObject, public GuiPluginBase::Plugin
{
Q_PLUGIN_METADATA(IID "gui:3:san.edit")
Q_INTERFACES(GuiPluginBase::Plugin)
Q_OBJECT
public:
explicit GuiPlugin() = default;
~GuiPlugin() = default;
QString pluginName() override { return QLatin1String("EvlSanNineLinerEditGuiPlugin"); }
std::shared_ptr<GuiPluginBase::Interface> createGuiInterface(LtsSession::LtsSession *session) override;
bool availableInPartition(IDL::PartitionType partition) const override
{
return (partition == IDL::PartitionType::Exercise || partition == IDL::PartitionType::Replay) ;
}
};
class InterfaceImpl final : public QObject, public GuiPluginBase::Interface
{
Q_OBJECT
public:
explicit InterfaceImpl(LtsSession::LtsSession *session);
QVector<LtsWidgets::PluginData> getActions() override;
QString menuGroup() const override { return tr("Evaluation"); }
bool fetchInterfaces() override;
void clearInterfaces() override;
bool availableInPartition(IDL::PartitionType partition) const override
{
return (partition == IDL::PartitionType::Exercise || partition == IDL::PartitionType::Replay);
}
private:
LtsWidgets::LtsDialog *onShowSanNineLinerDialog(QWidget *parent);
std::shared_ptr<Evaluations::Interface::Dtc> m_dtc;
};
} // namespace Evaluations