/* Copyright © 2016 Hasan Yavuz Özderya This file is part of serialplot. serialplot is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. serialplot is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with serialplot. If not, see . */ #include "utils.h" #include "framedreadersettings.h" #include "ui_framedreadersettings.h" FramedReaderSettings::FramedReaderSettings(QWidget *parent) : QWidget(parent), ui(new Ui::FramedReaderSettings) { ui->setupUi(this); ui->leSyncWord->setMode(false); // hex mode connect(ui->cbChecksum, &QCheckBox::toggled, [this](bool enabled) { emit checksumChanged(enabled); }); connect(ui->rbFixedSize, &QRadioButton::toggled, ui->spSize, &QWidget::setEnabled); connect(ui->rbFixedSize, &QRadioButton::toggled, [this](bool checked) { emit frameSizeChanged(frameSize()); }); // Note: if directly connected we get a runtime warning on incompatible signal arguments connect(ui->spSize, SELECT::OVERLOAD_OF(&QSpinBox::valueChanged), [this](int value) { emit frameSizeChanged(value); }); connect(ui->spNumOfChannels, SELECT::OVERLOAD_OF(&QSpinBox::valueChanged), [this](int value) { emit numOfChannelsChanged(value); }); connect(ui->leSyncWord, &QLineEdit::textChanged, this, &FramedReaderSettings::onSyncWordEdited); connect(ui->nfBox, SIGNAL(selectionChanged(NumberFormat)), this, SIGNAL(numberFormatChanged(NumberFormat))); } FramedReaderSettings::~FramedReaderSettings() { delete ui; } void FramedReaderSettings::showMessage(QString message, bool error) { ui->lMessage->setText(message); if (error) { ui->lMessage->setStyleSheet("color: red;"); } else { ui->lMessage->setStyleSheet(""); } } unsigned FramedReaderSettings::numOfChannels() { return ui->spNumOfChannels->value(); } NumberFormat FramedReaderSettings::numberFormat() { return ui->nfBox->currentSelection(); } Endianness FramedReaderSettings::endianness() { return ui->endiBox->currentSelection(); } QByteArray FramedReaderSettings::syncWord() { QString text = ui->leSyncWord->text().remove(' '); // check if nibble is missing if (text.size() % 2 == 1) { // TODO: remove this warning return QByteArray(); } else { return QByteArray::fromHex(text.toLatin1()); } } void FramedReaderSettings::onSyncWordEdited() { // TODO: emit with a delay so that error message doesn't flash! emit syncWordChanged(syncWord()); } unsigned FramedReaderSettings::frameSize() { if (ui->rbFixedSize->isChecked()) { return ui->spSize->value(); } else { return 0; // frame byte is enabled } } bool FramedReaderSettings::checksumEnabled() { return ui->cbChecksum->isChecked(); }