/** * @RDE_HEADER@ * HMI Plugin for Observer Controller - Settings Dialog * $Id$ * $HeadURL$ * $Author$ * Created by Patric Karwat, SLSE, 2018-01-17 */ #include "osc_settings.h" #include "ui_osc_settings.h" #include #include #include #include namespace OcSituationClient { Settings::Settings(LtsSession::LtsSession *session, QWidget *parent) : LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel) , m_mediaplayer(new QMediaPlayer(this)) , m_ocGroupString(QStringLiteral("ObserverController")) , m_opSettings(LtsUtils::OperatorSettings::getInstance()) , m_ui(new Ui::Settings) // , m_logger(getLogger("SettingsDialog")) { m_ui->setupUi(this); //optional session->getForeignGuiInterface(m_sitMapGuiIfc); //connects connect(m_ui->pbSoundCheck, &LtsWidgets::LtsDragIcon::clicked, this, &Settings::onSoundCheck); connect(m_ui->pbResetRange, &LtsWidgets::LtsDragIcon::clicked, this, &Settings::onResetRange); connect(m_ui->slWarningRange, &QSlider::valueChanged, this, [this](int range) { m_ui->lblRange->setText(QString::number(range)); }); #ifdef WIN32 m_handler = CreateFile(L"\\\\.\\LCD",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0, NULL); m_monitorLightBrightness = getMonitorCurrentLightBrightness(); connect(m_ui->slMonitorBrightness, &QSlider::valueChanged, this, [this](int range) { m_ui->lblMonitorBrightness->setText(QString::number(range)); setMonitorLightBrightness(range); }); if(m_monitorLightBrightness >= 0) { m_ui->slMonitorBrightness->setValue(m_monitorLightBrightness); } m_ui->lblMonitorBrightness->setText(QString::number(m_ui->slMonitorBrightness->value())); connect(m_buttonBox->getButton(LtsWidgets::DialogButton::Close), &QPushButton::clicked, this, [this]() { //reset to old Value setMonitorLightBrightness(m_monitorLightBrightness); }); #else m_ui->slMonitorBrightness->hide(); m_ui->lblMonitorBrightness->hide(); m_ui->LblMonitorBrightness->hide(); #endif connect(m_ui->cbxAcusticWarning, &LtsWidgets::LtsDragIcon::clicked, this, &Settings::slotChangesMade); connect(m_ui->cbxVisualWarning, &LtsWidgets::LtsDragIcon::clicked, this, &Settings::slotChangesMade); connect(m_ui->cbxOcSituationBorder, &LtsWidgets::LtsDragIcon::clicked, this, &Settings::slotChangesMade); connect(m_ui->cbxMovingMapToSelf, &LtsWidgets::LtsDragIcon::clicked, this, &Settings::slotChangesMade); //load OperatorSettings and set Ui Values loadOperatorSettings(); //set audio file m_mediaplayer->setMedia(QUrl(QLatin1String("qrc:/beep.wav"))); m_mediaplayer->setVolume(100); setOnlineHelpFilename(QStringLiteral("OC-Settings")); } Settings::~Settings() { delete m_ui; } /*! * \brief Settings::setMonitorLightBrightness * this method set the light brightness of an windows os monitor * \warning this funcion work only for windows os * \param value */ void Settings::setMonitorLightBrightness(const int value) { #ifdef WIN32 m_displayBrightness.ucDisplayPolicy = 0; m_displayBrightness.ucACBrightness = 0; m_displayBrightness.ucDCBrightness = value; DWORD ret = 0; DWORD nOutBufferSize = sizeof(m_displayBrightness); if(m_handler == INVALID_HANDLE_VALUE) { m_handler = CreateFile(L"\\\\.\\LCD", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if(m_handler == INVALID_HANDLE_VALUE) { qCritical()<<" couldn't CreateFile for setting monitor light brightness. Error: "<slWarningRange->setValue(WARNINGRANGEDEFAULT); } void Settings::onSoundCheck() { m_mediaplayer->play(); } void Settings::loadOperatorSettings() { // now set values m_ui->slWarningRange->setValue(m_opSettings->value(m_ocGroupString, QStringLiteral("WarningRange"), WARNINGRANGEDEFAULT).toInt()); m_ui->cbxAcusticWarning->setChecked(m_opSettings->value(m_ocGroupString, QStringLiteral("AcousticWarning"), false).toBool()); m_ui->cbxVisualWarning->setChecked(m_opSettings->value(m_ocGroupString, QStringLiteral("VisualWarning"), false).toBool()); m_ui->cbxOcSituationBorder->setChecked(m_opSettings->value(m_ocGroupString, QStringLiteral("OcSituationBorder"), false).toBool()); m_ui->cbxMovingMapToSelf->setChecked(m_opSettings->value(m_ocGroupString, QStringLiteral("MovingMapToSelf"), false).toBool()); } void Settings::retranslate() { translate(m_ui, tr("Settings") ); } bool Settings::apply() { //write qsettings m_opSettings->setValue(m_ocGroupString, QStringLiteral("WarningRange"), m_ui->slWarningRange->value()); m_opSettings->setValue(m_ocGroupString, QStringLiteral("AcousticWarning"), m_ui->cbxAcusticWarning->isChecked()); m_opSettings->setValue(m_ocGroupString, QStringLiteral("VisualWarning"), m_ui->cbxVisualWarning->isChecked()); m_opSettings->setValue(m_ocGroupString, QStringLiteral("OcSituationBorder"), m_ui->cbxOcSituationBorder->isChecked()); m_opSettings->setValue(m_ocGroupString, QStringLiteral("MovingMapToSelf"), m_ui->cbxMovingMapToSelf->isChecked()); m_sitMapGuiIfc->ocSituationRange_show(m_ui->cbxOcSituationBorder->isChecked()); #ifdef WIN32 m_monitorLightBrightness = getMonitorCurrentLightBrightness(); #endif return true; } } // namespace OcSituationClient