diff --git a/src/abstractreader.cpp b/src/abstractreader.cpp --- a/src/abstractreader.cpp +++ b/src/abstractreader.cpp @@ -41,13 +41,11 @@ void AbstractReader::enable(bool enabled { if (enabled) { - firstReadAfterEnable = true; QObject::connect(_device, &QIODevice::readyRead, this, &AbstractReader::onDataReady); } else { - firstReadAfterEnable = false; QObject::disconnect(_device, 0, this, 0); disconnectSinks(); } diff --git a/src/abstractreader.h b/src/abstractreader.h --- a/src/abstractreader.h +++ b/src/abstractreader.h @@ -44,7 +44,7 @@ public: /// Reader should only read when enabled. Default state should be /// 'disabled'. - void enable(bool enabled = true); + virtual void enable(bool enabled = true); /// None of the current readers support X channel at the moment bool hasX() const final { return false; }; @@ -68,7 +68,6 @@ protected: QIODevice* _device; bool paused; unsigned _numChannels; - bool firstReadAfterEnable = false; protected slots: /// all derived readers has to override this function diff --git a/src/asciireader.cpp b/src/asciireader.cpp --- a/src/asciireader.cpp +++ b/src/asciireader.cpp @@ -58,6 +58,22 @@ QWidget* AsciiReader::settingsWidget() return &_settingsWidget; } +void AsciiReader::enable(bool enabled) +{ + if (enabled) + { + firstReadAfterEnable = true; + QObject::connect(_device, &QIODevice::readyRead, + this, &AsciiReader::onDataReady); + } + else + { + firstReadAfterEnable = false; + QObject::disconnect(_device, 0, this, 0); + disconnectSinks(); + } +} + void AsciiReader::onDataReady() { while(_device->canReadLine()) diff --git a/src/asciireader.h b/src/asciireader.h --- a/src/asciireader.h +++ b/src/asciireader.h @@ -32,6 +32,7 @@ class AsciiReader : public AbstractReade public: explicit AsciiReader(QIODevice* device, QObject *parent = 0); QWidget* settingsWidget(); + void enable(bool enabled); /// Stores settings into a `QSettings` void saveSettings(QSettings* settings); /// Loads settings from a `QSettings`. @@ -43,6 +44,8 @@ private: unsigned autoNumOfChannels; QChar delimiter; ///< selected column delimiter + bool firstReadAfterEnable = false; + private slots: void onDataReady() override; };