// ************************************************************************** // // (C) Copyright 2009 Swiss SIMTEC AG // // ************************************************************************** // // $HeadURL$ // $LastChangedBy$ // $LastChangedDate$ // $LastChangedRevision$ // // ************************************************************************** #include "LogViewOptionDialog.hpp" #include #include #include #include #include #include #include #include #include #include #include #include namespace N_LogView { // static member initialization 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); // telegram specification files 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(); // injection 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(); // buttons 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); //setLayout(layout); } // --------------------------------------------------------------- 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; // check group wise for changes // specification files 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(); // injection settings 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(); } } // namespace N_LogView