183 lines
6.1 KiB
C++
183 lines
6.1 KiB
C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "LogViewOptionDialog.hpp"
|
|
#include <QCoreApplication>
|
|
#include <QDialogButtonBox>
|
|
#include <QDir>
|
|
#include <QGridLayout>
|
|
#include <QGroupBox>
|
|
#include <QFileDialog>
|
|
#include <QIntValidator>
|
|
#include <QLabel>
|
|
#include <QLineEdit>
|
|
#include <QPushButton>
|
|
#include <QRadioButton>
|
|
#include <QVBoxLayout>
|
|
|
|
namespace N_LogView
|
|
{
|
|
|
|
|
|
const QString LogViewOptionDialog::SPEC_FILES = tr("Spezifikations-Dateien (*.x)");
|
|
const QString LogViewOptionDialog::KRLOG_FILES = tr("Log-Dateien (*.krlog)");
|
|
const QLatin1String LogViewOptionDialog::SPEC_FILES_GROUP("SpecFiles");
|
|
const QLatin1String LogViewOptionDialog::DIR("Dir");
|
|
const QLatin1String LogViewOptionDialog::P0_FILENAME("Central2PrtCnv");
|
|
const QLatin1String LogViewOptionDialog::P5_FILENAME("PrtCnv2TETRA");
|
|
const QLatin1String LogViewOptionDialog::SERVER_GROUP("ServerPorts");
|
|
const QLatin1String LogViewOptionDialog::CENTRAL_PORT("Central");
|
|
const QLatin1String LogViewOptionDialog::TETRA_PORT("Tetra");
|
|
const QLatin1String LogViewOptionDialog::LOG_FILENAME("LogFilename");
|
|
const QLatin1String LogViewOptionDialog::INJECTION_GROUP("InjectionServer");
|
|
const QLatin1String LogViewOptionDialog::INJECTION_HOSTNAME("InjectionHostname");
|
|
const QLatin1String LogViewOptionDialog::INJECTION_PORT("InjectionPort");
|
|
|
|
|
|
|
|
LogViewOptionDialog::LogViewOptionDialog(QWidget* a_parent)
|
|
: QDialog(a_parent)
|
|
{
|
|
QVBoxLayout* layout = new QVBoxLayout(this);
|
|
|
|
|
|
m_Settings.beginGroup(LogViewOptionDialog::SPEC_FILES_GROUP);
|
|
QGroupBox* groupBox = new QGroupBox(tr("Telegramm-Spezifikations-Dateien"), this);
|
|
layout->addWidget(groupBox);
|
|
|
|
QGridLayout* groupLayout = new QGridLayout();
|
|
|
|
QLabel* p0Label = new QLabel(tr("&Zentrale - Protokollkonverter"), this);
|
|
groupLayout->addWidget(p0Label, 0, 0, 1, 2);
|
|
QString defString = QCoreApplication::applicationDirPath() + QLatin1String("/training_area_telegrams.h");
|
|
m_P0Edit = new QLineEdit(m_Settings.value(P0_FILENAME, defString).toString(), this);
|
|
m_P0Edit->setMinimumWidth(400);
|
|
groupLayout->addWidget(m_P0Edit);
|
|
QPushButton* p0Browse = new QPushButton(tr("Browse"), this);
|
|
p0Label->setBuddy(p0Browse);
|
|
connect(p0Browse, &QPushButton::clicked, this, &LogViewOptionDialog::browseP0File);
|
|
groupLayout->addWidget(p0Browse, 1, 1);
|
|
|
|
QLabel* p5Label = new QLabel(tr("Protokollkonverter - &TETRA"), this);
|
|
groupLayout->addWidget(p5Label, 2, 0, 1, 2);
|
|
defString = QCoreApplication::applicationDirPath() + QLatin1String("/zsksxd_tetraForLogView.x");
|
|
m_P5Edit = new QLineEdit(m_Settings.value(P5_FILENAME, defString).toString(), this);
|
|
groupLayout->addWidget(m_P5Edit);
|
|
QPushButton* p5Browse = new QPushButton(tr("Browse"), this);
|
|
p5Label->setBuddy(p5Browse);
|
|
connect(p5Browse, &QPushButton::clicked, this, &LogViewOptionDialog::browseP5File);
|
|
groupLayout->addWidget(p5Browse, 3, 1);
|
|
|
|
groupBox->setLayout(groupLayout);
|
|
m_Settings.endGroup();
|
|
|
|
|
|
m_Settings.beginGroup(LogViewOptionDialog::INJECTION_GROUP);
|
|
groupBox = new QGroupBox(tr("Telegram Injection Server"), this);
|
|
layout->addWidget(groupBox);
|
|
QGridLayout* injectLayout = new QGridLayout();
|
|
|
|
QLabel* injectPortLabel = new QLabel(tr("Port"), this);
|
|
injectLayout->addWidget(injectPortLabel, 1, 0);
|
|
m_InjectPortEdit = new QLineEdit(m_Settings.value(INJECTION_PORT).toString(), this);
|
|
QIntValidator* validator = new QIntValidator(1024, 65535, this);
|
|
m_InjectPortEdit->setValidator(validator);
|
|
injectLayout->addWidget(m_InjectPortEdit, 1, 1);
|
|
|
|
QLabel* injectHostnameLabel = new QLabel(tr("Hostname"), this);
|
|
injectLayout->addWidget(injectHostnameLabel, 0, 0);
|
|
m_InjectHostnameEdit = new QLineEdit(m_Settings.value(INJECTION_HOSTNAME).toString(), this);
|
|
injectLayout->addWidget(m_InjectHostnameEdit, 0, 1);
|
|
|
|
groupBox->setLayout(injectLayout);
|
|
m_Settings.endGroup();
|
|
|
|
|
|
layout->addStretch();
|
|
QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
|
connect(buttonBox, &QDialogButtonBox::accepted, this, &LogViewOptionDialog::save);
|
|
connect(buttonBox, &QDialogButtonBox::rejected, this, &LogViewOptionDialog::reject);
|
|
layout->addWidget(buttonBox);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void LogViewOptionDialog::browseP0File()
|
|
{
|
|
QString newFilename = QFileDialog::getOpenFileName(this,
|
|
tr("Zentrale - Protokollkonverter Spezifikations-Datei"),
|
|
m_Settings.value(DIR).toString(),
|
|
tr("TrainingArea Telegram Headerdatei (training_area_telegrams.h)"));
|
|
if (!newFilename.isEmpty())
|
|
{
|
|
m_P0Edit->setText(newFilename);
|
|
QDir dir;
|
|
m_Settings.beginGroup(LogViewOptionDialog::SPEC_FILES_GROUP);
|
|
m_Settings.setValue(DIR, dir.filePath(newFilename));
|
|
m_Settings.endGroup();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void LogViewOptionDialog::browseP5File()
|
|
{
|
|
QString newFilename = QFileDialog::getOpenFileName(this, tr("Protokollkonverter - TETRA Spezifikations-Datei"), m_Settings.value(DIR).toString(), SPEC_FILES);
|
|
if (!newFilename.isEmpty())
|
|
{
|
|
m_P5Edit->setText(newFilename);
|
|
QDir dir;
|
|
m_Settings.beginGroup(LogViewOptionDialog::SPEC_FILES_GROUP);
|
|
m_Settings.setValue(DIR, dir.filePath(newFilename));
|
|
m_Settings.endGroup();
|
|
}
|
|
}
|
|
|
|
|
|
void LogViewOptionDialog::save()
|
|
{
|
|
uint32_t changedFlags = 0;
|
|
|
|
|
|
|
|
m_Settings.beginGroup(LogViewOptionDialog::SPEC_FILES_GROUP);
|
|
QString string = m_Settings.value(P0_FILENAME).toString();
|
|
if ((string != m_P0Edit->text()) ||
|
|
(m_Settings.value(P5_FILENAME).toString() != m_P5Edit->text()))
|
|
{
|
|
m_Settings.setValue(P0_FILENAME, m_P0Edit->text());
|
|
m_Settings.setValue(P5_FILENAME, m_P5Edit->text());
|
|
changedFlags |= SpecFilesGroup;
|
|
}
|
|
m_Settings.endGroup();
|
|
|
|
|
|
m_Settings.beginGroup(LogViewOptionDialog::INJECTION_GROUP);
|
|
if ((m_Settings.value(INJECTION_HOSTNAME).toString() != m_InjectHostnameEdit->text()) ||
|
|
(m_Settings.value(INJECTION_PORT).toString() != m_InjectPortEdit->text()))
|
|
{
|
|
m_Settings.setValue(INJECTION_HOSTNAME, m_InjectHostnameEdit->text());
|
|
m_Settings.setValue(INJECTION_PORT, m_InjectPortEdit->text());
|
|
changedFlags |= InjectionGroup;
|
|
}
|
|
m_Settings.endGroup();
|
|
|
|
emit settingsChanged(changedFlags);
|
|
|
|
accept();
|
|
}
|
|
|
|
}
|