# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2016-09-06 02:42:09 # Node ID a9d626540c2c5700b79e3e3e3e1839e826f2a56a # Parent 5b3f4916ebcf380de03aefbddd66353acbff862f implemented settings for framed reader diff --git a/src/dataformatpanel.cpp b/src/dataformatpanel.cpp --- a/src/dataformatpanel.cpp +++ b/src/dataformatpanel.cpp @@ -173,6 +173,7 @@ void DataFormatPanel::saveSettings(QSett // save reader settings bsReader.saveSettings(settings); asciiReader.saveSettings(settings); + framedReader.saveSettings(settings); } void DataFormatPanel::loadSettings(QSettings* settings) @@ -204,4 +205,5 @@ void DataFormatPanel::loadSettings(QSett // load reader settings bsReader.loadSettings(settings); asciiReader.loadSettings(settings); + framedReader.loadSettings(settings); } diff --git a/src/framedreader.cpp b/src/framedreader.cpp --- a/src/framedreader.cpp +++ b/src/framedreader.cpp @@ -353,3 +353,13 @@ template double FramedReader return double(data); } + +void FramedReader::saveSettings(QSettings* settings) +{ + _settingsWidget.saveSettings(settings); +} + +void FramedReader::loadSettings(QSettings* settings) +{ + _settingsWidget.loadSettings(settings); +} diff --git a/src/framedreader.h b/src/framedreader.h --- a/src/framedreader.h +++ b/src/framedreader.h @@ -20,6 +20,8 @@ #ifndef FRAMEDREADER_H #define FRAMEDREADER_H +#include + #include "abstractreader.h" #include "framedreadersettings.h" @@ -35,6 +37,10 @@ public: QWidget* settingsWidget(); unsigned numOfChannels(); void enable(bool enabled = true); + /// Stores settings into a `QSettings` + void saveSettings(QSettings* settings); + /// Loads settings from a `QSettings`. + void loadSettings(QSettings* settings); public slots: void pause(bool); diff --git a/src/framedreadersettings.cpp b/src/framedreadersettings.cpp --- a/src/framedreadersettings.cpp +++ b/src/framedreadersettings.cpp @@ -20,6 +20,7 @@ #include #include "utils.h" +#include "setting_defines.h" #include "framedreadersettings.h" #include "ui_framedreadersettings.h" @@ -150,3 +151,73 @@ bool FramedReaderSettings::isDebugModeEn { return ui->cbDebugMode->isChecked(); } + +void FramedReaderSettings::saveSettings(QSettings* settings) +{ + settings->beginGroup(SettingGroup_CustomFrame); + settings->setValue(SG_CustomFrame_NumOfChannels, numOfChannels()); + settings->setValue(SG_CustomFrame_NumberFormat, numberFormatToStr(numberFormat())); + settings->setValue(SG_CustomFrame_Endianness, + endianness() == LittleEndian ? "little" : "big"); + settings->setValue(SG_CustomFrame_FrameStart, ui->leSyncWord->text()); + settings->setValue(SG_CustomFrame_FixedSize, ui->rbFixedSize->isChecked()); + settings->setValue(SG_CustomFrame_FrameSize, ui->spSize->value()); + settings->setValue(SG_CustomFrame_Checksum, ui->cbChecksum->isChecked()); + settings->setValue(SG_CustomFrame_DebugMode, ui->cbDebugMode->isChecked()); + settings->endGroup(); +} + +void FramedReaderSettings::loadSettings(QSettings* settings) +{ + settings->beginGroup(SettingGroup_CustomFrame); + + // load number of channels + ui->spNumOfChannels->setValue( + settings->value(SG_CustomFrame_NumOfChannels, numOfChannels()).toInt()); + + // load number format + NumberFormat nfSetting = + strToNumberFormat(settings->value(SG_CustomFrame_NumberFormat, + QString()).toString()); + if (nfSetting == NumberFormat_INVALID) nfSetting = numberFormat(); + ui->nfBox->setSelection(nfSetting); + + // load endianness + QString endiannessSetting = + settings->value(SG_CustomFrame_Endianness, QString()).toString(); + if (endiannessSetting == "little") + { + ui->endiBox->setSelection(LittleEndian); + } + else if (endiannessSetting == "big") + { + ui->endiBox->setSelection(BigEndian); + } // else don't change + + // load frame start + QString frameStartSetting = + settings->value(SG_CustomFrame_FrameStart, ui->leSyncWord->text()).toString(); + auto validator = ui->leSyncWord->validator(); + validator->fixup(frameStartSetting); + int pos = 0; + if (validator->validate(frameStartSetting, pos) != QValidator::Invalid) + { + ui->leSyncWord->setText(frameStartSetting); + } + + // load frame size + ui->spSize->setValue( + settings->value(SG_CustomFrame_FrameSize, ui->spSize->value()).toInt()); + ui->rbFixedSize->setChecked( + settings->value(SG_CustomFrame_FixedSize, ui->rbFixedSize->isChecked()).toBool()); + + // load checksum + ui->cbChecksum->setChecked( + settings->value(SG_CustomFrame_Checksum, ui->cbChecksum->isChecked()).toBool()); + + // load debug mode + ui->cbDebugMode->setChecked( + settings->value(SG_CustomFrame_DebugMode, ui->cbDebugMode->isChecked()).toBool()); + + settings->endGroup(); +} diff --git a/src/framedreadersettings.h b/src/framedreadersettings.h --- a/src/framedreadersettings.h +++ b/src/framedreadersettings.h @@ -22,6 +22,7 @@ #include #include +#include #include "numberformatbox.h" #include "endiannessbox.h" @@ -47,6 +48,10 @@ public: unsigned frameSize(); /// If frame bye is enabled `0` is returned bool isChecksumEnabled(); bool isDebugModeEnabled(); + /// Save settings into a `QSettings` + void saveSettings(QSettings* settings); + /// Loads settings from a `QSettings`. + void loadSettings(QSettings* settings); signals: /// If sync word is invalid (empty or 1 nibble missing at the end) diff --git a/src/setting_defines.h b/src/setting_defines.h --- a/src/setting_defines.h +++ b/src/setting_defines.h @@ -25,6 +25,7 @@ const char SettingGroup_Port[] = "Port"; const char SettingGroup_DataFormat[] = "DataFormat"; const char SettingGroup_Binary[] = "DataFormat_Binary"; const char SettingGroup_ASCII[] = "DataFormat_ASCII"; +const char SettingGroup_CustomFrame[] = "DataFormat_CustomFrame"; const char SettingGroup_Channels[] = "Channels"; const char SettingGroup_Plot[] = "Plot"; const char SettingGroup_Commands[] = "Commands"; @@ -54,4 +55,14 @@ const char SG_Binary_Endianness[] = "end // ascii reader keys const char SG_ASCII_NumOfChannels[] = "numOfChannels"; +// framed reader keys +const char SG_CustomFrame_NumOfChannels[] = "numOfChannels"; +const char SG_CustomFrame_FrameStart[] = "frameStart"; +const char SG_CustomFrame_FixedSize[] = "fixedSize"; +const char SG_CustomFrame_FrameSize[] = "frameSize"; +const char SG_CustomFrame_NumberFormat[] = "numberFormat"; +const char SG_CustomFrame_Endianness[] = "endianness"; +const char SG_CustomFrame_Checksum[] = "checksum"; +const char SG_CustomFrame_DebugMode[] = "debugMode"; + #endif // SETTING_DEFINES_H