Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,52 @@
|
||||
#
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
# Created by Patric Karwat, SLSE, 2016-07-03
|
||||
#
|
||||
|
||||
ADD_INTERFACE_LIBRARY(
|
||||
AesBCContaminationGuiPluginInterface
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/aes_bccontamination_gui_plugin_interface.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/..
|
||||
)
|
||||
|
||||
SET(aes_bccontamination_gui_SRCS
|
||||
aes_bccontamination_gui_plugin.cpp
|
||||
aes_bccontamination_gui_plugin.h
|
||||
aes_bccontamination_edit.cpp
|
||||
aes_bccontamination_edit.h
|
||||
aes_bccontamination_list.cpp
|
||||
aes_bccontamination_list.h
|
||||
aes_bccontaminations_model.cpp
|
||||
aes_bccontaminations_model.h
|
||||
CustomView/aes_bccontamination.cpp
|
||||
CustomView/aes_bccontamination.h
|
||||
InfoView/aes_bccontamination_info.cpp
|
||||
InfoView/aes_bccontamination_info.h
|
||||
)
|
||||
|
||||
NGL_WRAP_UI(aes_bccontamination_gui_SRCS
|
||||
aes_bccontamination_edit.ui
|
||||
CustomView/aes_bccontamination.ui
|
||||
InfoView/aes_bccontamination_info.ui
|
||||
)
|
||||
|
||||
NGL_ADD_LIBRARY(WS AesBcContaminationGuiPlugin MODULE ${aes_bccontamination_gui_SRCS})
|
||||
NGL_TARGET_LINK_LIBRARIES(AesBcContaminationGuiPlugin
|
||||
AesBaseGui
|
||||
AesBCContaminationGuiPluginInterface
|
||||
ngltools
|
||||
LtsSessionData
|
||||
NGLLogger
|
||||
LtsSession
|
||||
AesDataPluginInterface
|
||||
AesInfoGuiPluginInterface
|
||||
Qt5::Widgets
|
||||
LtsWidgets
|
||||
LtsUtilsSettings
|
||||
)
|
||||
|
||||
NGL_INSTALL_TARGET(AesBcContaminationGuiPlugin)
|
||||
|
||||
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* CustomView for Contamination
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Mike Wille, SLSE, 2016-04-08
|
||||
*/
|
||||
|
||||
#include "aes_bccontamination.h"
|
||||
#include "ui_aes_bccontamination.h"
|
||||
|
||||
#include "aes_bccontaminations_model.h"
|
||||
#include <Services/AreaEffectSimulation/Utils/polygons.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
CustomViewBCContamination::CustomViewBCContamination(QWidget *parent)
|
||||
: AbstractDisplayWidget(parent)
|
||||
, m_ui(new Ui::CustomViewBCContamination)
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
}
|
||||
|
||||
CustomViewBCContamination::~CustomViewBCContamination()
|
||||
{
|
||||
delete m_ui;
|
||||
}
|
||||
|
||||
bool CustomViewBCContamination::init(const QModelIndex &idx)
|
||||
{
|
||||
if (!idx.isValid())
|
||||
return false;
|
||||
|
||||
m_ui->lbName->setText(rowData(idx, AreaEffectSimulation::BCContaminationsModel::BcName).toString());
|
||||
m_ui->lbType->setText(rowData(idx, AreaEffectSimulation::BCContaminationsModel::BcChargeType).toString());
|
||||
m_ui->lbState->setText(rowData(idx, AreaEffectSimulation::BCContaminationsModel::BcEffectState).toString());
|
||||
m_ui->lbTime->setText(rowData(idx, AreaEffectSimulation::BCContaminationsModel::BcEffectStart).toString());
|
||||
m_ui->lblIcon->clear();
|
||||
m_ui->lblIcon->setAutoFillBackground(true);
|
||||
|
||||
const AesItemSortFilterProxyModel *sfpm = qobject_cast<const AesItemSortFilterProxyModel*>(idx.model());
|
||||
if (!sfpm)
|
||||
return false;
|
||||
const BCContaminationsModel *aesModel = qobject_cast<const BCContaminationsModel*>(sfpm->sourceModel());
|
||||
if (!aesModel)
|
||||
return false;
|
||||
const auto srcIdx = sfpm->mapToSource(idx);
|
||||
BCContamination bcContamin = aesModel->getRowData(srcIdx.row());
|
||||
calculateIcon(bcContamin, sfpm->partyColor(idx.row()));
|
||||
|
||||
qint64 durationMSecs = rowData(idx, AreaEffectSimulation::BCContaminationsModel::BcEffectDuration).toInt();
|
||||
if (durationMSecs > 0)
|
||||
{
|
||||
QString duration;
|
||||
if (durationMSecs % 1000 == 0 || durationMSecs > 60 * 1000)
|
||||
duration = QString::number(durationMSecs / 1000.0, 'f', 0);
|
||||
else
|
||||
duration = QString::number(durationMSecs / 1000.0, 'f', 3);
|
||||
|
||||
m_ui->lbDuration->setText(duration);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ui->label_4->hide();
|
||||
m_ui->lbDuration->hide();
|
||||
m_ui->label_6->hide();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CustomViewBCContamination::calculateIcon(const BCContamination &bcContamination, const QColor &color)
|
||||
{
|
||||
Database::AesBCContamination bcContaOut;
|
||||
bcContaOut.id = bcContamination.id();
|
||||
bcContaOut.chargeTypeId = bcContamination.chargeStruct().chargeTypeId();
|
||||
bcContaOut.effectStart = QDateTime::fromMSecsSinceEpoch(bcContamination.effectStart().is_set() ? bcContamination.effectStart().get() : 0);
|
||||
bcContaOut.impactPosition = QPointF(bcContamination.impactPosition().lon(), bcContamination.impactPosition().lat());
|
||||
bcContaOut.impactRadius = bcContamination.impactRadius();
|
||||
bcContaOut.propagationDirection = bcContamination.propagationDirection();
|
||||
|
||||
const QPolygonF poly = AreaEffectSimulation::Polygons::bcContamination(bcContaOut,
|
||||
ProjectDataManagement::VolatilityType_def::get_default(),
|
||||
bcContamination.impactRadius(),
|
||||
QDateTime::currentDateTime());
|
||||
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(bcContamination.effectStateId());
|
||||
const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
return true;
|
||||
}
|
||||
} // namespace AreaEffectSimulation
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* CustomView for AES Contamination
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Mike Wille, SLSE, 2016-04-08
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <Viewer/LtsDataView/abstract_display_widget.h>
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class CustomViewBCContamination;
|
||||
}
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
class BCContamination;
|
||||
class CustomViewBCContamination final : public LtsDataView::AbstractDisplayWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CustomViewBCContamination(QWidget *parent = nullptr);
|
||||
~CustomViewBCContamination();
|
||||
bool init(const QModelIndex &idx) override final;
|
||||
|
||||
private:
|
||||
bool calculateIcon(const AreaEffectSimulation::BCContamination &bcContamination, const QColor &color);
|
||||
|
||||
Ui::CustomViewBCContamination *m_ui;
|
||||
|
||||
};
|
||||
} // namespace AreaEffectSimulation
|
||||
+179
@@ -0,0 +1,179 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>CustomViewBCContamination</class>
|
||||
<widget class="QWidget" name="CustomViewBCContamination">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>350</width>
|
||||
<height>200</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="lbName">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">Name</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbType">
|
||||
<property name="font">
|
||||
<font>
|
||||
<italic>true</italic>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">Type</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>State:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbState">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">State</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="AreaEffectSimulation::PixmapLabel" name="lblIcon">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">icon</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="lbTime">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">Time</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">for</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbDuration">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">Duration</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>seconds</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>AreaEffectSimulation::PixmapLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>AreaEffectSimulation/Gui/Base/aes_pixmap_label.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
Executable
+57
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Info Dialog for B/C Contamination
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by diers, NLE, 2017-03-30
|
||||
*/
|
||||
|
||||
#include "aes_bccontamination_info.h"
|
||||
#include "ui_aes_bccontamination_info.h"
|
||||
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/InfoView/aes_base_info.h>
|
||||
#include <LtsSession/lts_session.h>
|
||||
#include <LtsCoordTrans/lts_coord_trans.h>
|
||||
#include <QDateTime>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
BCContaminationInfo::BCContaminationInfo(QWidget *parent)
|
||||
: LtsDialog(parent)
|
||||
, m_ui(new Ui::BCContaminationInfo)
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
}
|
||||
|
||||
BCContaminationInfo::~BCContaminationInfo()
|
||||
{
|
||||
delete m_ui;
|
||||
}
|
||||
|
||||
void BCContaminationInfo::retranslate()
|
||||
{
|
||||
translate(m_ui, tr("B/C-Contamination"));
|
||||
}
|
||||
|
||||
bool BCContaminationInfo::setData(const BCContamination *item)
|
||||
{
|
||||
m_ui->wBaseData->setData(item);
|
||||
|
||||
m_ui->lblImpactRadius->setText(QString::number(item->impactRadius()));
|
||||
m_ui->lblImpactPosition->setText(LtsCoordTrans::mgrsFromGeographic(item->impactPosition().lon(), item->impactPosition().lat()));
|
||||
m_ui->lblPropagationDirection->setText(tr("%1° = %2 mil").arg(item->propagationDirection(), 0, 'f', 2)
|
||||
.arg(item->propagationDirection() * 6400 / 360.0, 0, 'f', 0));
|
||||
m_ui->lblWindSpeed->setText(QString::number(item->windSpeed(), 'f', 2));
|
||||
m_ui->lblWeatherTimestamp->setText(QDateTime::fromMSecsSinceEpoch(item->weatherTimestamp()).toString());
|
||||
m_ui->lblWeatherPosition->setText(LtsCoordTrans::mgrsFromGeographic(item->weatherPosition().lon(), item->weatherPosition().lat()));
|
||||
return true;
|
||||
}
|
||||
|
||||
void BCContaminationInfo::init(LtsSession::LtsSession *session)
|
||||
{
|
||||
m_ui->wBaseData->init(session);
|
||||
}
|
||||
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Info Dialog for B/C Contamination
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by diers, NLE, 2017-03-30
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LtsWidgets/lts_dialog.h>
|
||||
#include <Services/AreaEffectSimulation/aes.hpp>
|
||||
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class BCContaminationInfo;
|
||||
}
|
||||
|
||||
namespace LtsSession
|
||||
{
|
||||
class LtsSession;
|
||||
}
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
class BCContaminationInfo : public LtsWidgets::LtsDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit BCContaminationInfo(QWidget *parent = nullptr);
|
||||
~BCContaminationInfo();
|
||||
|
||||
bool setData(const BCContamination *item);
|
||||
void init(LtsSession::LtsSession *session);
|
||||
|
||||
private:
|
||||
void retranslate() override;
|
||||
|
||||
Ui::BCContaminationInfo *m_ui;
|
||||
};
|
||||
|
||||
}
|
||||
Executable
+171
@@ -0,0 +1,171 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>BCContaminationInfo</class>
|
||||
<widget class="QWidget" name="BCContaminationInfo">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>286</width>
|
||||
<height>172</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">Aes B/C-Contamination Info</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLabel" name="lblPropagationDirection">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">90° = 1600'</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="lbxWindSpeed">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Wind Speed [m/s]:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="lbxImpactPosition">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Impact Position:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="lbxWeatherTimestamp">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Weather Timestamp:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="lbxImpactRadius">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Impact Radius [m]:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="lbxPropagationDirection">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Propagation Direction:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLabel" name="lblImpactPosition">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">32U MD 12345 67890</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="AreaEffectSimulation::BaseInfo" name="wBaseData" native="true"/>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="2">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QLabel" name="lblWindSpeed">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">2.34</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="lblImpactRadius">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="lbxWeatherPosition">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Weather Position:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLabel" name="lblWeatherTimestamp">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">12:34</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QLabel" name="lblWeatherPosition">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">32U MD 23456 78901</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>AreaEffectSimulation::BaseInfo</class>
|
||||
<extends>QWidget</extends>
|
||||
<header location="global">Plugins/AreaEffectSimulation/Gui/Base/InfoView/aes_base_info.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
+397
@@ -0,0 +1,397 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* AreaEffectSimulation - Contamination Edit Dialog
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Patric Karwat, SLSE, 2016-07-07
|
||||
*/
|
||||
|
||||
|
||||
#include "aes_bccontamination_edit.h"
|
||||
#include "ui_aes_bccontamination_edit.h"
|
||||
#include "../AesInfo/aes_danger_area_aes_item_info.h"
|
||||
|
||||
#include <LtsWidgets/lts_message_dialog.h>
|
||||
#include <LtsSession/lts_session_data.h>
|
||||
#include <PluginInterfaces/gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/aes_data_plugin_interface.h>
|
||||
#include <Plugins/SituationMapPlugin/situation_map_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/aes_info_gui_plugin_interface.h>
|
||||
|
||||
#include <AreaEffectSimulation/aes_translation.h>
|
||||
#include <LtsUtilsSettings/settings.h>
|
||||
#include <Services/AreaEffectSimulation/Utils/polygons.h>
|
||||
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
double BCContaminationEdit::s_minRadius;
|
||||
double BCContaminationEdit::s_maxRadius;
|
||||
double BCContaminationEdit::s_stepRadius;
|
||||
int BCContaminationEdit::s_minDurationHours;
|
||||
int BCContaminationEdit::s_maxDurationHours;
|
||||
double BCContaminationEdit::s_minAltitude;
|
||||
double BCContaminationEdit::s_maxAltitude;
|
||||
|
||||
static int s_lastChargeTypeB = 0;
|
||||
static int s_lastChargeTypeC = 0;
|
||||
|
||||
// Todo: Höhe und Radius in Abhängigkeit der Munitionsart berechnen
|
||||
|
||||
BCContaminationEdit::BCContaminationEdit(const QString &menuGroup, bool isChemical, QWidget *parent)
|
||||
: BaseEdit(menuGroup, QLatin1String("BCContaminationEdit"), parent)
|
||||
, m_isChemical(isChemical)
|
||||
, m_ui(new Ui::BCContaminationEdit)
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
s_minRadius = 50;
|
||||
s_maxRadius = 2500;
|
||||
s_stepRadius = 5;
|
||||
s_minDurationHours = 1;
|
||||
s_maxDurationHours = 4;
|
||||
s_minAltitude = 2;
|
||||
s_maxAltitude = 50;
|
||||
|
||||
m_ui->sbRadius->setMinimum(s_minRadius);
|
||||
m_ui->sbRadius->setMaximum(s_maxRadius);
|
||||
m_ui->sbRadius->setSingleStep(s_stepRadius);
|
||||
m_ui->sbDurationHours->setMinimum(s_minDurationHours);
|
||||
m_ui->sbDurationHours->setMaximum(s_maxDurationHours);
|
||||
m_ui->sbAltitude->setMinimum(s_minAltitude);
|
||||
m_ui->sbAltitude->setMaximum(s_maxAltitude);
|
||||
|
||||
m_uiRequirements->addRequirement({m_ui->lblPosition, [this]() { return (!m_ui->positionEdit->coordinate().isNull()); }});
|
||||
m_uiRequirements->addRequirement({m_ui->lblIdentifier, [this]() { return (!m_ui->leIdentifier->text().isEmpty()); }});
|
||||
m_uiRequirements->addRequirement({m_ui->lblEffectStart, [this]() { return hasValidEffectStart(m_ui->dteEffectStart); }});
|
||||
m_uiRequirements->addRequirement({m_ui->lblChargeType, [this]() { return (m_ui->cbChargeType->currentData().toInt() > 0); }});
|
||||
|
||||
connect(m_ui->pbDangerArea, &QPushButton::clicked, this, &BCContaminationEdit::onPbDangerAreaClicked);
|
||||
connect(m_ui->pbClear, &QPushButton::clicked, m_ui->positionEdit, &LtsCoordWidget::LtsCoordWidget::clear);
|
||||
|
||||
connect(m_ui->sbRadius, &QSpinBox::editingFinished, this, &BCContaminationEdit::correctSpinBoxValue);
|
||||
|
||||
// [GUEZE-2833] Inkonsistenz - Wetter Einstellungen bei A und C Feldern
|
||||
// Order changed AwsDynamic = 0, AwsStatic = 1,
|
||||
m_ui->cbWeather->addItem(toString(AesWeatherSource::AwsDynamic), AesWeatherSource::AwsDynamic);
|
||||
m_ui->cbWeather->addItem(toString(AesWeatherSource::AwsStatic), AesWeatherSource::AwsStatic);
|
||||
|
||||
LtsUtils::ProjectSettings *ps = LtsUtils::ProjectSettings::getInstance();
|
||||
const bool enableShowMeteoDataStations = ps->value(QStringLiteral("mdm"),
|
||||
QStringLiteral("enableShowMeteoDataStations")).toBool();
|
||||
if (!enableShowMeteoDataStations)
|
||||
{
|
||||
m_ui->cbWeather->hide();
|
||||
m_ui->lblWeather->hide();
|
||||
// cbWeather per default auf AesWeatherSource::AwsStatic
|
||||
}
|
||||
m_ui->lblAltitude->show();
|
||||
m_ui->sbAltitude->show();
|
||||
// Not yet needed, as no step is defined:
|
||||
// connect(m_ui->sbAltitude, &QSpinBox::editingFinished, this, &BCContaminationEdit::correctSpinBoxValue);
|
||||
// connect(m_ui->sbDurationMinutes, &QSpinBox::editingFinished, this, &BCContaminationEdit::correctSpinBoxValue);
|
||||
|
||||
// party is (currently) not user-visible
|
||||
// m_ui->lblParty->setVisible(false);
|
||||
// m_ui->cbParty->setVisible(false);
|
||||
|
||||
enaDisa();
|
||||
|
||||
if (m_isChemical)
|
||||
setOnlineHelpFilename(QStringLiteral("Situation-Add_C-Contamination"));
|
||||
else
|
||||
setOnlineHelpFilename(QStringLiteral("Situation-Add_B-Contamination"));
|
||||
}
|
||||
|
||||
BCContaminationEdit::~BCContaminationEdit()
|
||||
{
|
||||
delete m_ui;
|
||||
}
|
||||
|
||||
void BCContaminationEdit::retranslate()
|
||||
{
|
||||
translate(m_ui, m_aesItem, m_isChemical ? tr("C-Contamination") : tr("B-Contamination"));
|
||||
|
||||
if (m_isChemical)
|
||||
m_pdmGuiIfc->fillCComboBox(m_ui->cbChargeType);
|
||||
else
|
||||
m_pdmGuiIfc->fillBComboBox(m_ui->cbChargeType);
|
||||
setCombobxToValueIfPossible(m_ui->cbChargeType, m_isChemical ? s_lastChargeTypeC : s_lastChargeTypeB);
|
||||
}
|
||||
|
||||
void BCContaminationEdit::enableUiElements(bool enable)
|
||||
{
|
||||
m_ui->leIdentifier->setMaxLength(30);
|
||||
m_ui->cbChargeType->setEnabled(enable);
|
||||
m_ui->sbDurationHours->setEnabled(enable);
|
||||
m_ui->cbParty->setEnabled(enable);
|
||||
setEffectStartEnabled(m_ui->dteEffectStart, enable);
|
||||
|
||||
m_ui->pbPosition->setEnabled(m_sitMapGuiIfc && enable);
|
||||
m_ui->positionEdit->setEnabled(enable);
|
||||
m_ui->sbAltitude->setEnabled(enable);
|
||||
m_ui->cbLowerLimit->setEnabled(enable);
|
||||
m_ui->sbRadius->setEnabled(enable);
|
||||
m_ui->leIdentifier->setEnabled(enable || isOnlyNameModifiable());
|
||||
|
||||
m_ui->cbWeather->setEnabled(enable);
|
||||
m_ui->pbClear->setEnabled(enable);
|
||||
if (m_aesItem.effectStateId() == AesEffectState_def::EsExpired)
|
||||
{
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name()));
|
||||
__unchange__();
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState_def::EsActivated)
|
||||
{
|
||||
QString name = m_ui->leIdentifier->text();
|
||||
auto baseData = m_dtc->bCContamination(m_aesItem.id());
|
||||
setData(baseData, false);
|
||||
__unchange__();
|
||||
if (name != m_ui->leIdentifier->text())
|
||||
m_ui->leIdentifier->setText(name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool BCContaminationEdit::init(int aesItemId, bool copy,
|
||||
LtsSession::LtsSession *session)
|
||||
{
|
||||
if (!BaseEdit::init(aesItemId, session))
|
||||
return false;
|
||||
|
||||
bool editable = (LtsSessionData::LtsSessionData::getInstance()->hasOperatorRight(OperatorRights::CContaminationsEdit) && m_isChemical) ||
|
||||
(LtsSessionData::LtsSessionData::getInstance()->hasOperatorRight(OperatorRights::BContaminationsEdit) && !m_isChemical) ||
|
||||
m_session->app() == LtsAppDescriptor::App::OC;
|
||||
|
||||
bool readable = (LtsSessionData::LtsSessionData::getInstance()->hasOperatorRight(OperatorRights::CContaminationsShow) && m_isChemical) ||
|
||||
(LtsSessionData::LtsSessionData::getInstance()->hasOperatorRight(OperatorRights::BContaminationsShow) && !m_isChemical) ;
|
||||
|
||||
setPbDangerAreaText();
|
||||
if (!readable && !editable)
|
||||
return false;
|
||||
|
||||
// FIXME: in GUI plugin, nicht ausserhalb!
|
||||
if (!m_session->getForeignGuiInterface<ProjectDataManagement::ForeignGuiInterface>(m_pdmGuiIfc))
|
||||
return false;
|
||||
|
||||
m_ui->dteEffectStart->setMinimumTimeMSec(m_session->partitionTime());
|
||||
m_ui->dteEffectStart->setRetrieveCurrentTimeCallback([this]() { return m_session->partitionTime(); });
|
||||
|
||||
if (m_sitMapGuiIfc)
|
||||
connect(m_ui->pbPosition, &QPushButton::clicked, this, &BCContaminationEdit::getPosition);
|
||||
else
|
||||
m_ui->pbPosition->setEnabled(false);
|
||||
|
||||
if (m_isChemical)
|
||||
m_pdmGuiIfc->fillCComboBox(m_ui->cbChargeType);
|
||||
else
|
||||
m_pdmGuiIfc->fillBComboBox(m_ui->cbChargeType);
|
||||
|
||||
m_ppmGuiCbxIfc->fillPartyComboBox(m_ui->cbParty);
|
||||
|
||||
if (aesItemId > 0)
|
||||
{
|
||||
auto baseData = m_dtc->bCContamination(aesItemId);
|
||||
setData(baseData, copy);
|
||||
}
|
||||
|
||||
auto cb = [this](const DangerAreaCorrelatedAesItem &item)
|
||||
{
|
||||
if (item.aesItemId() == m_aesItem.id())
|
||||
m_dangerAreaIds << item.dangerAreaId();
|
||||
};
|
||||
m_dtc->dangerAreaCorrelatedAesItems(cb);
|
||||
setPbDangerAreaText();
|
||||
|
||||
enableUiElements(editable && isModifiable() && !isOnlyNameModifiable());
|
||||
|
||||
connect(m_dtc.get(), &AreaEffectSimulation::Interface::Dtc::dangerAreaCorrelatedAesItemChanged,
|
||||
this, &BCContaminationEdit::onDangerAreaChanged);
|
||||
|
||||
connect(m_dtc.get(), &AreaEffectSimulation::Interface::Dtc::bCContaminationChanged,
|
||||
this, &BaseEdit::onAreaChanged);
|
||||
|
||||
|
||||
|
||||
auto cbDangerArea = [this](const DangerArea &data)
|
||||
{
|
||||
if (data.effectStateId() != AesEffectState::EsRemoved && data.associatedAesId() == m_aesItem.id())
|
||||
m_associatedDangerId = data.id();
|
||||
};
|
||||
m_dtc->dangerAreas(cbDangerArea);
|
||||
if (m_associatedDangerId)
|
||||
{
|
||||
m_ui->chbDangerArea->setChecked(true);
|
||||
m_ui->chbDangerArea->setEnabled(false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void BCContaminationEdit::setPbDangerAreaText()
|
||||
{
|
||||
QStringList sl;
|
||||
sl.reserve(m_dangerAreaIds.size());
|
||||
for (int idx : qAsConst(m_dangerAreaIds))
|
||||
{
|
||||
sl << QString::fromStdString(m_dtc->dangerArea(idx).name());
|
||||
}
|
||||
m_ui->pbDangerArea->setEnabled(sl.size());
|
||||
m_ui->pbDangerArea->setText(sl.join(QStringLiteral(", ")));
|
||||
}
|
||||
|
||||
void BCContaminationEdit::onDangerAreaChanged(const DangerAreaCorrelatedAesItem &data, DataModification modType)
|
||||
{
|
||||
if (data.aesItemId() != m_aesItem.id())
|
||||
return;
|
||||
|
||||
if (modType == DataModification::eAdded)
|
||||
m_dangerAreaIds += data.dangerAreaId();
|
||||
|
||||
if (modType == DataModification::eRemoved)
|
||||
m_dangerAreaIds -= data.dangerAreaId();
|
||||
// Note: Modification cannot happen as the key is unique for the combination.
|
||||
|
||||
setPbDangerAreaText();
|
||||
}
|
||||
|
||||
void BCContaminationEdit::onPbDangerAreaClicked()
|
||||
{
|
||||
if (m_dangerAreaIds.isEmpty())
|
||||
return;
|
||||
|
||||
std::shared_ptr<ForeignInfoGuiInterface> infoGuiInterface;
|
||||
if (!m_session->getForeignGuiInterface<ForeignInfoGuiInterface>(infoGuiInterface))
|
||||
return;
|
||||
|
||||
LtsWidgets::LtsDialog *dialog = infoGuiInterface->showDangerAreaAesItemInfo(m_dangerAreaIds, {m_aesItem.id()});
|
||||
|
||||
addDialog(dialog, m_menuGroup, tr("Danger Areas for %1 %2").arg(m_isChemical ? tr("C-Contamination") : tr("B-Contamination"), m_ui->leIdentifier->text()), LtsWidgets::LayoutArea::eInfoTab);
|
||||
}
|
||||
|
||||
void BCContaminationEdit::setData(const BCContamination &contamination, bool copy)
|
||||
{
|
||||
m_aesItem = contamination;
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState_def::get_default());
|
||||
}
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(contamination.name()));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(contamination.effectStart().is_set() ? contamination.effectStart().get() : 0);
|
||||
m_ui->cbChargeType->setCurrentIndex(m_ui->cbChargeType->findData(contamination.chargeStruct().chargeTypeId())); // not user-visible
|
||||
m_ui->sbDurationHours->setValue(contamination.effectDuration() / 1000 / 60/ 60); // msecs -> mins -> hours
|
||||
m_ui->sbRadius->setValue(contamination.impactRadius());
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(contamination.partyId().is_set() ? contamination.partyId().get() : 0));
|
||||
m_ui->cbWeather->setCurrentIndex(contamination.weatherSource().underlying());
|
||||
|
||||
QPointF impactPosition(contamination.impactPosition().lon(), contamination.impactPosition().lat());
|
||||
if (!impactPosition.isNull())
|
||||
m_ui->positionEdit->setCoordinate(impactPosition);
|
||||
|
||||
m_ui->sbAltitude->setValue(contamination.upperOffset());
|
||||
m_ui->cbLowerLimit->setChecked(qFuzzyIsNull(contamination.lowerOffset()));
|
||||
|
||||
}
|
||||
|
||||
void BCContaminationEdit::getPosition()
|
||||
{
|
||||
if (!has2DMap())
|
||||
return;
|
||||
|
||||
m_sitMapGuiIfc->getCircle(this,
|
||||
SLOT(onCircleData(QPointF, double)),
|
||||
nullptr,
|
||||
s_minRadius,
|
||||
s_maxRadius,
|
||||
m_ui->positionEdit->coordinate(),
|
||||
m_ui->sbRadius->value()); //max
|
||||
}
|
||||
|
||||
void BCContaminationEdit::onCircleData(const QPointF &position, double radius)
|
||||
{
|
||||
m_previewCircleCenter = position;
|
||||
|
||||
// SB corrects value acc. singleStep
|
||||
m_ui->sbRadius->setValue(radius);
|
||||
m_previewCircleRadius = m_ui->sbRadius->value();
|
||||
|
||||
m_ui->positionEdit->setCoordinate(position);
|
||||
DEBUG_LOG(m_logger) << "Pos X: " << position.x() << " Y: " << position.y() << " R: " << radius;
|
||||
|
||||
showPreviewObject();
|
||||
}
|
||||
|
||||
bool BCContaminationEdit::apply()
|
||||
{
|
||||
std::string name = m_ui->leIdentifier->text().toStdString();
|
||||
qint64 effectStart = m_ui->dteEffectStart->msecsSinceEpoch();
|
||||
int duration = m_ui->sbDurationHours->value() * 60 * 1000 * 60; //hours -> mins -> msecs
|
||||
int chargeType = m_ui->cbChargeType->currentData().toInt();
|
||||
if (m_isChemical)
|
||||
s_lastChargeTypeC = chargeType;
|
||||
else
|
||||
s_lastChargeTypeB = chargeType;
|
||||
int partyId = m_ui->cbParty->currentData().toInt();
|
||||
int participantId = 0;
|
||||
int radius = m_ui->sbRadius->value();
|
||||
int weathersource = m_ui->cbWeather->currentData().toInt();
|
||||
double extrusionHeight = m_ui->sbAltitude->value();
|
||||
|
||||
double lowerOffset = 0.0;
|
||||
if (!m_ui->cbLowerLimit->isChecked())
|
||||
lowerOffset = -1000.0;
|
||||
|
||||
QPointF p(m_ui->positionEdit->coordinate());
|
||||
const Core::GeoPosition2D pos(p.x(), p.y());
|
||||
|
||||
|
||||
const BCContaminationModifyRequest req(m_aesItem.id(),
|
||||
name,
|
||||
LtsUtils::toOptional(effectStart),
|
||||
duration,
|
||||
chargeType,
|
||||
pos,
|
||||
radius,
|
||||
static_cast<AesWeatherSource::inner_enum>(weathersource),
|
||||
LtsUtils::toOptional(partyId),
|
||||
LtsUtils::toOptional(participantId),
|
||||
dds::core::optional<double>(),
|
||||
dds::core::optional<double>(),
|
||||
dds::core::optional<Core::GeoPosition2D>(),
|
||||
dds::core::optional<rti::core::int64>(),
|
||||
dds::core::optional<rti::core::int64>(),
|
||||
extrusionHeight,
|
||||
lowerOffset,
|
||||
m_ui->chbDangerArea->isChecked());
|
||||
|
||||
INFO_LOG(m_logger) << "apply "
|
||||
<< " extrusionHeight=" << extrusionHeight
|
||||
<< " req.upperOffset=" << req.upperOffset()
|
||||
<< " lowerOf"
|
||||
"fset=" << lowerOffset
|
||||
<< " req.lowerOffset=" << req.lowerOffset();
|
||||
|
||||
m_requestHelper->addRequest([this,req]()
|
||||
{
|
||||
return m_ftc->bCContaminationModifyRequest(req, this);
|
||||
});
|
||||
bool ret= m_requestHelper->startRequests();
|
||||
if (m_ui->chbDangerArea->isChecked() && ret)
|
||||
m_ui->chbDangerArea->setEnabled(false);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void BCContaminationEdit::showPreviewObject()
|
||||
{
|
||||
if (!m_sitMapGuiIfc)
|
||||
return;
|
||||
|
||||
if (m_previewCircleCenter.isNull())
|
||||
return;
|
||||
|
||||
m_sitMapGuiIfc->displayPreviewObject(this, m_previewCircleCenter, m_previewCircleRadius);
|
||||
}
|
||||
|
||||
} // namespace AreaEffectSimulation
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* AreaEffectSimulation - Explosion Edit Dialog
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Patric Karwat, SLSE, 2016-07-07
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <Plugins/ProjectDataManagement/pdm_gui_plugin_interface.h>
|
||||
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class BCContaminationEdit;
|
||||
}
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
class BCContaminationEdit final
|
||||
: public BaseEdit
|
||||
, protected AreaEffectSimulation::Interface::Ftc::BCContaminationModifyReplyHandler
|
||||
, protected AreaEffectSimulation::Interface::Ftc::DangerAreaModifyReplyHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit BCContaminationEdit(const QString &menuGroup, bool isChemical, QWidget *parent = nullptr);
|
||||
~BCContaminationEdit();
|
||||
|
||||
QString dialogIdentifier() const override
|
||||
{
|
||||
if (m_isChemical)
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddCContamination") : QStringLiteral("EditCContamination%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddBContamination") : QStringLiteral("EditBContamination%1").arg(m_aesItem.id());
|
||||
}
|
||||
bool init(int aesItemId, bool copy, LtsSession::LtsSession *session);
|
||||
|
||||
void onBCContaminationModifyReply(const Core::FunctionReplyObject &replyObject) override final { onAesItemModifyReply(replyObject); }
|
||||
void onDangerAreaModifyReply(const Core::FunctionReplyObject &replyObject) override final { onAesItemModifyReply(replyObject); }
|
||||
private:
|
||||
static double s_minRadius;
|
||||
static double s_maxRadius;
|
||||
static double s_stepRadius;
|
||||
static int s_minDurationHours;
|
||||
static int s_maxDurationHours;
|
||||
static double s_minAltitude;
|
||||
static double s_maxAltitude;
|
||||
|
||||
void retranslate() override;
|
||||
void setData(const BCContamination &contamination, bool copy);
|
||||
void enableUiElements(bool enable) override;
|
||||
void setPbDangerAreaText();
|
||||
|
||||
private Q_SLOTS:
|
||||
void getPosition();
|
||||
void onCircleData(const QPointF &position, double radius);
|
||||
bool apply() override;
|
||||
void onDangerAreaChanged(const DangerAreaCorrelatedAesItem &data, DataModification modType);
|
||||
void onPbDangerAreaClicked();
|
||||
void showPreviewObject() override;
|
||||
|
||||
private:
|
||||
bool m_isChemical;
|
||||
int m_associatedDangerId{0};
|
||||
QSet<int> m_dangerAreaIds;
|
||||
QPointF m_previewCircleCenter;
|
||||
double m_previewCircleRadius;
|
||||
Ui::BCContaminationEdit *m_ui;
|
||||
std::shared_ptr<ProjectDataManagement::ForeignGuiInterface> m_pdmGuiIfc;
|
||||
};
|
||||
|
||||
} //namespace AreaEffectSimulation
|
||||
+359
@@ -0,0 +1,359 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>BCContaminationEdit</class>
|
||||
<widget class="QWidget" name="BCContaminationEdit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>640</width>
|
||||
<height>208</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">Aes Contamination Edit</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="1">
|
||||
<widget class="LtsWidgets::LtsDateTimeEdit" name="dteEffectStart" native="true">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="checkable" stdset="0">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="withButtons" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="withSlider" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="withReset" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="5">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>2</width>
|
||||
<height>31</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="lblDuration">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Duration [h]:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="4" column="4">
|
||||
<widget class="LtsWidgets::LtsComboBox" name="cbParty">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="currentText">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="4">
|
||||
<widget class="QPushButton" name="pbDangerArea">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="lblEffectStart">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Effect Start:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<widget class="QLabel" name="lblDangerArea">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Danger Area:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<widget class="QLabel" name="lblWeather">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Weather:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="4">
|
||||
<widget class="QSpinBox" name="sbRadius">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="lblPosition">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Position:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QLabel" name="lblParty">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Firing Party:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="lblAltitude">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Altitude [m]:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="lblIdentifier">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Identifier:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="4">
|
||||
<widget class="LtsWidgets::LtsComboBox" name="cbWeather">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="currentText">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="lblChargeType">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Agent Type:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="4">
|
||||
<widget class="QSpinBox" name="sbAltitude">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLabel" name="lblRadius">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Radius [m]:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QSpinBox" name="sbDurationHours">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>4</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="LtsCoordWidget::LtsCoordWidget" name="positionEdit" native="true">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="showToolTip" stdset="0">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pbPosition">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>:/style/position.svg</normaloff>:/style/position.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pbClear">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>:/style/remove.svg</normaloff>:/style/remove.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="leIdentifier">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="LtsWidgets::LtsComboBox" name="cbChargeType">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="currentText">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<widget class="QCheckBox" name="cbLowerLimit">
|
||||
<property name="text">
|
||||
<string>Lower Limit</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="5">
|
||||
<widget class="QCheckBox" name="chbDangerArea">
|
||||
<property name="text">
|
||||
<string>With Danger Area</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>LtsCoordWidget::LtsCoordWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>LtsCoordTrans/lts_coord_widget.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>LtsWidgets::LtsDateTimeEdit</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>LtsWidgets/lts_date_time_edit.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>LtsWidgets::LtsComboBox</class>
|
||||
<extends>QComboBox</extends>
|
||||
<header>LtsWidgets/lts_combo_box.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>leIdentifier</tabstop>
|
||||
<tabstop>dteEffectStart</tabstop>
|
||||
<tabstop>cbChargeType</tabstop>
|
||||
<tabstop>sbDurationHours</tabstop>
|
||||
<tabstop>positionEdit</tabstop>
|
||||
<tabstop>pbPosition</tabstop>
|
||||
<tabstop>pbClear</tabstop>
|
||||
<tabstop>sbAltitude</tabstop>
|
||||
<tabstop>sbRadius</tabstop>
|
||||
<tabstop>pbDangerArea</tabstop>
|
||||
<tabstop>cbWeather</tabstop>
|
||||
<tabstop>cbParty</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
+154
@@ -0,0 +1,154 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* GUI Plugin for AreaEffectSimulation - Contamination
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Patric Karwat, SLSE, 2016-07-07
|
||||
*/
|
||||
|
||||
#include "aes_bccontamination_gui_plugin.h"
|
||||
#include "aes_bccontamination_edit.h"
|
||||
#include "aes_bccontamination_list.h"
|
||||
|
||||
#include "InfoView/aes_bccontamination_info.h"
|
||||
|
||||
#include <AreaEffectSimulation/aes_operator_rights.h>
|
||||
#include <LtsSession/lts_session.h>
|
||||
#include <LtsUtilsSettings/settings.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
std::shared_ptr<GuiPluginBase::Interface> GuiPlugin::createGuiInterface(LtsSession::LtsSession *session)
|
||||
{
|
||||
return std::make_shared<InterfaceImpl>(session);
|
||||
}
|
||||
|
||||
InterfaceImpl::InterfaceImpl(LtsSession::LtsSession *session)
|
||||
: AesBaseInterface(session, getLogger("Plugins.Gui.BcContamination"))
|
||||
, ForeignGuiInterface()
|
||||
, m_enableB(false)
|
||||
, m_enableC(false)
|
||||
, m_enableN(false)
|
||||
{
|
||||
LtsUtils::ProjectSettings *ps = LtsUtils::ProjectSettings::getInstance();
|
||||
m_enableB = ps->value(QStringLiteral("aes"),
|
||||
QStringLiteral("enableBiologicalContamination")).toBool();
|
||||
m_enableC = ps->value(QStringLiteral("aes"),
|
||||
QStringLiteral("enableChemicalContamination")).toBool();
|
||||
m_enableN = ps->value(QStringLiteral("aes"),
|
||||
QStringLiteral("enableNuclearContaminations")).toBool();
|
||||
|
||||
}
|
||||
|
||||
QString InterfaceImpl::menuGroup() const
|
||||
{
|
||||
if (!m_enableB && !m_enableC && m_enableN)
|
||||
return tr("Area Effect Simulation N");
|
||||
else if (m_enableB && !m_enableC && m_enableN)
|
||||
return tr("Area Effect Simulation NB");
|
||||
else if (!m_enableB && m_enableC && m_enableN)
|
||||
return tr("Area Effect Simulation NC");
|
||||
else if (m_enableB && !m_enableC && !m_enableN)
|
||||
return tr("Area Effect Simulation B");
|
||||
else if (m_enableB && m_enableC && !m_enableN)
|
||||
return tr("Area Effect Simulation BC");
|
||||
else if (!m_enableB && m_enableC && !m_enableN)
|
||||
return tr("Area Effect Simulation C");
|
||||
else
|
||||
return tr("Area Effect Simulation NBC");
|
||||
}
|
||||
|
||||
QVector<LtsWidgets::PluginData> InterfaceImpl::getActions()
|
||||
{
|
||||
QVector<LtsWidgets::PluginData> ret;
|
||||
|
||||
|
||||
|
||||
|
||||
if (m_enableC)
|
||||
{
|
||||
ret.append(LtsWidgets::PluginData(menuGroup(),
|
||||
tr("C-Contaminations"),
|
||||
QLatin1String("ListCContaminations"),
|
||||
QIcon(QLatin1String("icon:chemical_agents.svg")),
|
||||
[this](QWidget *parent) { return onShowBCContaminationListDialog(true, parent);},
|
||||
OperatorRights::CContaminationsShow,
|
||||
LtsWidgets::ExercisePart::eExecution));
|
||||
|
||||
|
||||
if (m_session->isExercisePartition() && appId() != LtsAppDescriptor::App::OC)
|
||||
ret.append(LtsWidgets::PluginData(menuGroup(),
|
||||
tr("Add C-Contamination"),
|
||||
QLatin1String("AddCContamination"),
|
||||
QIcon(QLatin1String("icon:chemical_agents_add.svg")),
|
||||
[this](QWidget *parent) { return onShowAddBCContaminationDialog(true, parent);},
|
||||
OperatorRights::CContaminationsEdit,
|
||||
LtsWidgets::ExercisePart::eExecution,
|
||||
LtsWidgets::ExerciseState::eCreated | LtsWidgets::ExerciseState::eStarted | LtsWidgets::ExerciseState::ePaused));
|
||||
}
|
||||
|
||||
if (m_enableB)
|
||||
{
|
||||
ret.append(LtsWidgets::PluginData(menuGroup(),
|
||||
tr("B-Contaminations"),
|
||||
QLatin1String("ListBContaminations"),
|
||||
QIcon(QLatin1String("icon:bio_agent.svg")),
|
||||
[this](QWidget *parent) { return onShowBCContaminationListDialog(false, parent);},
|
||||
OperatorRights::BContaminationsShow,
|
||||
LtsWidgets::ExercisePart::eExecution));
|
||||
|
||||
|
||||
if (m_session->isExercisePartition() && appId() != LtsAppDescriptor::App::OC)
|
||||
ret.append(LtsWidgets::PluginData(menuGroup(),
|
||||
tr("Add B-Contamination"),
|
||||
QLatin1String("AddBContamination"),
|
||||
QIcon(QLatin1String("icon:bio_agent_add.svg")),
|
||||
[this](QWidget *parent) { return onShowAddBCContaminationDialog(false, parent);},
|
||||
OperatorRights::BContaminationsEdit,
|
||||
LtsWidgets::ExercisePart::eExecution,
|
||||
LtsWidgets::ExerciseState::eCreated | LtsWidgets::ExerciseState::eStarted | LtsWidgets::ExerciseState::ePaused));
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool InterfaceImpl::fetchInterfaces()
|
||||
{
|
||||
std::shared_ptr<ProjectDataManagement::ForeignGuiInterface> pdmGuiIfc;
|
||||
if (!m_session->getForeignGuiInterface<ProjectDataManagement::ForeignGuiInterface>(pdmGuiIfc))
|
||||
return false;
|
||||
|
||||
return AesBaseInterface::fetchInterfaces();
|
||||
}
|
||||
|
||||
LtsWidgets::LtsDialog *InterfaceImpl::showInfoWindow(const AesItem *item)
|
||||
{
|
||||
const BCContamination *bcc = static_cast<const BCContamination*>(item);
|
||||
|
||||
BCContaminationInfo *dialog = new BCContaminationInfo();
|
||||
dialog->init(m_session);
|
||||
dialog->setData(bcc);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
|
||||
AreaEffectSimulation::BaseEdit *InterfaceImpl::showEditWindow(int aesEntityId, bool isChemical, QWidget *parent)
|
||||
{
|
||||
return LtsWidgets::initDialog(new BCContaminationEdit(menuGroup(), isChemical, parent),
|
||||
aesEntityId, false, m_session);
|
||||
}
|
||||
|
||||
LtsWidgets::LtsDialog *InterfaceImpl::onShowAddBCContaminationDialog(bool isChemical, QWidget *parent)
|
||||
{
|
||||
return showEditWindow(0, isChemical, parent);
|
||||
}
|
||||
|
||||
LtsWidgets::LtsDialog *InterfaceImpl::onShowBCContaminationListDialog(bool isChemical, QWidget *parent)
|
||||
{
|
||||
return LtsWidgets::initDialog(new BCContaminationList(menuGroup(), isChemical, parent),
|
||||
m_session);
|
||||
}
|
||||
|
||||
} // namespace AreaEffectSimulation
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Gui Plugin for AreaEffectSimulation - Contamination
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Patric Karwat, SLSE, 2016-07-07
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include "aes_bccontamination_gui_plugin_interface.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
class GuiPlugin final : public AesBaseGuiPlugin
|
||||
{
|
||||
Q_PLUGIN_METADATA(IID "gui:3:aes.bccontaminations")
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
GuiPlugin() = default;
|
||||
~GuiPlugin() = default;
|
||||
|
||||
QString pluginName() override { return QStringLiteral("AreaEffectSimuationBCContaminationGui"); }
|
||||
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 AesBaseInterface, public AesBCContamination::ForeignGuiInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit InterfaceImpl(LtsSession::LtsSession *session);
|
||||
|
||||
QString menuGroup() const override final;
|
||||
QVector<LtsWidgets::PluginData> getActions() override;
|
||||
LtsWidgets::LtsDialog *showInfoWindow(const AesItem *item) override;
|
||||
AreaEffectSimulation::BaseEdit *showEditWindow(int aesEntityId, bool isChemical, QWidget *parent) override;
|
||||
bool fetchInterfaces() override;
|
||||
|
||||
private:
|
||||
LtsWidgets::LtsDialog *onShowAddBCContaminationDialog(bool isChemical, QWidget *parent);
|
||||
LtsWidgets::LtsDialog *onShowBCContaminationListDialog(bool isChemical, QWidget *parent);
|
||||
bool m_enableB;
|
||||
bool m_enableC;
|
||||
bool m_enableN;
|
||||
|
||||
};
|
||||
|
||||
} // namespace AreaEffectSimulation
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* HMI Plugin for AreaEffectSimulation (Interface for access from other Plugins)
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Patric Karwat, SLSE, 2016-07-01
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
class QWidget;
|
||||
namespace LtsWidgets
|
||||
{
|
||||
class LtsDialog;
|
||||
}
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
class AesItem;
|
||||
class BaseEdit;
|
||||
}
|
||||
|
||||
namespace AesBCContamination
|
||||
{
|
||||
class ForeignGuiInterface
|
||||
{
|
||||
public:
|
||||
ForeignGuiInterface() = default;
|
||||
virtual ~ForeignGuiInterface() = default;
|
||||
|
||||
virtual LtsWidgets::LtsDialog *showInfoWindow(const AreaEffectSimulation::AesItem *item) = 0;
|
||||
virtual AreaEffectSimulation::BaseEdit *showEditWindow(int aesEntityId, bool isChemical, QWidget *parent) = 0;
|
||||
};
|
||||
} // namespace AesBCContamination
|
||||
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* ContaminationManangement - Contamination Overview Dialog
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Patric Karwat, SLSE, 2016-07-07
|
||||
*/
|
||||
|
||||
#include "aes_bccontamination_list.h"
|
||||
#include "aes_bccontaminations_model.h"
|
||||
#include "aes_bccontamination_edit.h"
|
||||
#include "CustomView/aes_bccontamination.h"
|
||||
|
||||
#include <LtsSession/lts_session_data.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
BCContaminationList::BCContaminationList(const QString &menuGroup, bool isChemical, QWidget *parent)
|
||||
: AesItemListTmpl<BCContamination>(menuGroup, parent)
|
||||
, m_isChemical(isChemical)
|
||||
{
|
||||
}
|
||||
|
||||
bool BCContaminationList::init(LtsSession::LtsSession *session)
|
||||
{
|
||||
if (!AesItemList::init(session))
|
||||
return false;
|
||||
|
||||
bool editable = (LtsSessionData::LtsSessionData::getInstance()->hasOperatorRight(OperatorRights::CContaminationsEdit) && m_isChemical) ||
|
||||
(LtsSessionData::LtsSessionData::getInstance()->hasOperatorRight(OperatorRights::BContaminationsEdit) && !m_isChemical) ||
|
||||
m_session->app() == LtsAppDescriptor::App::OC;
|
||||
if (session->isReplayPartition())
|
||||
editable = false;
|
||||
|
||||
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Edit, editable);
|
||||
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Add, editable);
|
||||
|
||||
QSortFilterProxyModel *m = m_model;
|
||||
setDataViewModel(m, [this]() { return new CustomViewBCContamination(this); });
|
||||
|
||||
#ifndef LTS_DEBUG
|
||||
hideColumn(CContaminationsModel::BcId);
|
||||
#endif
|
||||
hideColumn(CContaminationsModel::BcParticipant);
|
||||
hideColumn(CContaminationsModel::BcEffectSource);
|
||||
|
||||
setSortIndicator(CContaminationsModel::BcName);
|
||||
|
||||
enaDisa();
|
||||
|
||||
if (m_isChemical)
|
||||
setOnlineHelpFilename(QStringLiteral("Situation-C-Contaminations"));
|
||||
else
|
||||
setOnlineHelpFilename(QStringLiteral("Situation-B-Contaminations"));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void BCContaminationList::createModel()
|
||||
{
|
||||
m_model = new AesItemSortFilterProxyModelTmpl<BCContamination>(m_session, this);
|
||||
BCContaminationsModel *sourceModel;
|
||||
if (m_isChemical)
|
||||
sourceModel = new CContaminationsModel(this);
|
||||
else
|
||||
sourceModel = new BContaminationsModel(this);
|
||||
sourceModel->initModel(m_session);
|
||||
m_model->setSourceModel(sourceModel);
|
||||
}
|
||||
|
||||
void BCContaminationList::onAddAesItem()
|
||||
{
|
||||
BCContaminationEdit *dialog = new BCContaminationEdit(m_menuGroup, m_isChemical, this);
|
||||
|
||||
const int aesItemId = model()->aesId(currentRow());
|
||||
if (dialog->init(aesItemId, aesItemId > 0, m_session))
|
||||
addDialog(dialog, m_menuGroup, dialog->dialogIdentifier(), LtsWidgets::LayoutArea::eDialogTab);
|
||||
else
|
||||
delete dialog;
|
||||
}
|
||||
|
||||
void BCContaminationList::onEditAesItem()
|
||||
{
|
||||
const int aesItemId = model()->aesId(currentRow());
|
||||
|
||||
if (aesItemId <= 0)
|
||||
return;
|
||||
|
||||
DEBUG_LOG(m_logger) << "current ContaminationId: " << aesItemId;
|
||||
|
||||
BCContaminationEdit *dialog = new BCContaminationEdit(m_menuGroup, m_isChemical, this);
|
||||
if (dialog->init(aesItemId, false, m_session))
|
||||
addDialog(dialog, m_menuGroup, dialog->dialogIdentifier(), LtsWidgets::LayoutArea::eDialogTab);
|
||||
else
|
||||
delete dialog;
|
||||
}
|
||||
|
||||
void BCContaminationList::onRemoveAesItem()
|
||||
{
|
||||
const int aesItemId = model()->aesId(currentRow());
|
||||
Core::RemoveElementRequest req(aesItemId);
|
||||
m_requestHelper->startSingleRequest([req, this]()
|
||||
{
|
||||
return m_ftc->bCContaminationRemoveRequest(req, this);
|
||||
});
|
||||
}
|
||||
|
||||
void BCContaminationList::retranslate()
|
||||
{
|
||||
translateBase(m_isChemical ? tr("C-Contaminations") : tr("B-Contaminations"));
|
||||
}
|
||||
|
||||
void BCContaminationList::onBCContaminationRemoveReply(const Core::FunctionReplyObject &replyObject)
|
||||
{
|
||||
m_requestHelper->requestReply(replyObject);
|
||||
}
|
||||
|
||||
} // namespace AreaEffectSimulation
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* AreaEffectSimulation - Contamination Overview Dialog
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Patric Karwat, SLSE, 2016-07-07
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
class BCContaminationList final : public AesItemListTmpl<BCContamination>
|
||||
, protected AreaEffectSimulation::Interface::Ftc::BCContaminationRemoveReplyHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit BCContaminationList(const QString &menuGroup, bool isChemical, QWidget *parent = nullptr);
|
||||
|
||||
bool init(LtsSession::LtsSession *session) override;
|
||||
|
||||
private slots:
|
||||
void onAddAesItem() override;
|
||||
void onEditAesItem() override;
|
||||
void onRemoveAesItem() override;
|
||||
|
||||
private:
|
||||
void createModel() override;
|
||||
void retranslate() override;
|
||||
void onBCContaminationRemoveReply(const Core::FunctionReplyObject &replyObject) override;
|
||||
|
||||
bool m_isChemical;
|
||||
};
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* AreaEffectManangement - BcContamination Overview Dialog Model
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*
|
||||
* Created by Mike Wille, SLSE, 2016-09-26
|
||||
*/
|
||||
|
||||
#include "aes_bccontaminations_model.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
bool BCContaminationsModel::initModel(LtsSession::LtsSession *session)
|
||||
{
|
||||
if (!AesGuiBaseModel::initModel(session))
|
||||
return false;
|
||||
|
||||
connect(m_aesDtc.get(), &Interface::Dtc::bCContaminationChanged,
|
||||
this, &BCContaminationsModel::onDataChanged);
|
||||
|
||||
fillAvailableChargeIds(m_gearClass);
|
||||
|
||||
m_aesDtc->bCContaminations([this](const BCContamination &item) { insertRow(item); });
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace AreaEffectSimulation
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* HMI Plugin for AreaEffectSimulation - Contaminations Overview Dialog Model
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*
|
||||
* Created by Malte Diers, SLSE, 2017-02-20
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QSet>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
#include <ProjectDataManagement/pdm_enums.hpp>
|
||||
|
||||
namespace LtsSession
|
||||
{
|
||||
class LtsSession;
|
||||
}
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
|
||||
/************ Abstract Class for B AND C Contamination ***************/
|
||||
class BCContaminationsModel : public AesGuiBaseModel<BCContamination>
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
bool initModel(LtsSession::LtsSession *session);
|
||||
|
||||
ProjectDataManagement::GearClass gearClass() const { return m_gearClass; }
|
||||
|
||||
protected:
|
||||
explicit BCContaminationsModel(ProjectDataManagement::GearClass gc, QObject *parent = nullptr)
|
||||
: AesGuiBaseModel<BCContamination>(parent)
|
||||
, m_gearClass(gc)
|
||||
{}
|
||||
|
||||
ProjectDataManagement::GearClass m_gearClass;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/******************** Class for Biological Contamination ***************/
|
||||
/************ Use "BCContaminationsModel *ptr" nevertheless! ***********/
|
||||
|
||||
class BContaminationsModel final : public BCContaminationsModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit BContaminationsModel(QObject *parent)
|
||||
: BCContaminationsModel(ProjectDataManagement::GearClass::Biological, parent)
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
/******************** Class for Chemical Contamination *****************/
|
||||
/************ Use "BCContaminationsModel *ptr" nevertheless! ***********/
|
||||
|
||||
class CContaminationsModel final : public BCContaminationsModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CContaminationsModel(QObject *parent)
|
||||
: BCContaminationsModel(ProjectDataManagement::GearClass::Chemical, parent)
|
||||
{}
|
||||
};
|
||||
} //namespace AreaEffectSimulation
|
||||
|
||||
|
||||
Reference in new issue
Block a user