diff --git a/canframemodel.cpp b/canframemodel.cpp index cdd57cc..79f557c 100644 --- a/canframemodel.cpp +++ b/canframemodel.cpp @@ -528,6 +528,18 @@ QVariant CANFrameModel::headerData(int section, Qt::Orientation orientation, return QVariant(); } +bool CANFrameModel::any_filters_are_configured(void) +{ + for (auto const &val : filters) + { + if (val == true) + continue; + else + return true; + } + return false; +} + void CANFrameModel::addFrame(const CANFrame& frame, bool autoRefresh = false) { @@ -542,7 +554,11 @@ void CANFrameModel::addFrame(const CANFrame& frame, bool autoRefresh = false) //if this ID isn't found in the filters list then add it and show it by default if (!filters.contains(tempFrame.ID)) { - filters.insert(tempFrame.ID, true); + // if there are any filters already configured, leave the new filter disabled + if (any_filters_are_configured()) + filters.insert(tempFrame.ID, false); + else + filters.insert(tempFrame.ID, true); needFilterRefresh = true; } diff --git a/canframemodel.h b/canframemodel.h index cc3c1d7..011bf8f 100644 --- a/canframemodel.h +++ b/canframemodel.h @@ -73,6 +73,7 @@ private: void qSortCANFrameAsc(QVector* frames, Column column, int lowerBound, int upperBound); void qSortCANFrameDesc(QVector* frames, Column column, int lowerBound, int upperBound); uint64_t getCANFrameVal(int row, Column col); + bool any_filters_are_configured(void); QVector frames; QVector filteredFrames; diff --git a/connections/newconnectiondialog.cpp b/connections/newconnectiondialog.cpp index 92ee31b..1f03eba 100644 --- a/connections/newconnectiondialog.cpp +++ b/connections/newconnectiondialog.cpp @@ -9,7 +9,18 @@ NewConnectionDialog::NewConnectionDialog(QVector* ips, QWidget *parent) { ui->setupUi(this); - ui->rbSocketCAN->setEnabled(isSerialBusAvailable()); + if (isSerialBusAvailable()) + { + ui->rbSocketCAN->setEnabled(true); + } + else + { + ui->rbSocketCAN->setEnabled(false); + QString errorString; + const QList devices = QCanBus::instance()->availableDevices(QStringLiteral("socketcan"), &errorString); + if (!errorString.isEmpty()) ui->rbSocketCAN->setToolTip(errorString); + } + connect(ui->rbGVRET, &QAbstractButton::clicked, this, &NewConnectionDialog::handleConnTypeChanged); connect(ui->rbSocketCAN, &QAbstractButton::clicked, this, &NewConnectionDialog::handleConnTypeChanged); diff --git a/main.cpp b/main.cpp index 688ff1d..3373145 100644 --- a/main.cpp +++ b/main.cpp @@ -5,6 +5,12 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); + //These things are used by QSettings to set up setting storage + a.setOrganizationName("EVTV"); + a.setApplicationName("SavvyCAN"); + a.setOrganizationDomain("evtv.me"); + QSettings::setDefaultFormat(QSettings::IniFormat); + MainWindow w; QSettings settings; diff --git a/mainsettingsdialog.cpp b/mainsettingsdialog.cpp index 1a503d5..71246fb 100644 --- a/mainsettingsdialog.cpp +++ b/mainsettingsdialog.cpp @@ -6,6 +6,7 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::MainSettingsDialog) { + QSettings settings; ui->setupUi(this); ui->comboSendingBus->addItem(tr("None")); @@ -14,29 +15,27 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) : ui->comboSendingBus->addItem(tr("Both")); ui->comboSendingBus->addItem(tr("From File")); - settings = new QSettings(); - //update the GUI with all the settings we have stored giving things //defaults if nothing was stored (if this is the first time) - ui->cbDisplayHex->setChecked(settings->value("Main/UseHex", true).toBool()); - ui->cbFlowAutoRef->setChecked(settings->value("FlowView/AutoRef", false).toBool()); - ui->cbFlowUseTimestamp->setChecked(settings->value("FlowView/UseTimestamp", true).toBool()); - ui->cbInfoAutoExpand->setChecked(settings->value("InfoCompare/AutoExpand", false).toBool()); - ui->cbMainAutoScroll->setChecked(settings->value("Main/AutoScroll", false).toBool()); - ui->cbPlaybackLoop->setChecked(settings->value("Playback/AutoLoop", false).toBool()); - ui->cbRestorePositions->setChecked(settings->value("Main/SaveRestorePositions", true).toBool()); - ui->cbValidate->setChecked(settings->value("Main/ValidateComm", true).toBool()); - ui->spinPlaybackSpeed->setValue(settings->value("Playback/DefSpeed", 5).toInt()); - ui->lineClockFormat->setText(settings->value("Main/TimeFormat", "MMM-dd HH:mm:ss.zzz").toString()); - ui->lineRemoteHost->setText(settings->value("Remote/Host", "api.savvycan.com").toString()); - ui->lineRemotePort->setText(settings->value("Remote/Port", "21315").toString()); // = 0x5343 = SC. Yep, really creative port number - ui->cbAutoStartRemote->setChecked(settings->value("Remote/AutoStart", false).toBool()); - ui->cbLoadConnections->setChecked(settings->value("Main/SaveRestoreConnections", false).toBool()); + ui->cbDisplayHex->setChecked(settings.value("Main/UseHex", true).toBool()); + ui->cbFlowAutoRef->setChecked(settings.value("FlowView/AutoRef", false).toBool()); + ui->cbFlowUseTimestamp->setChecked(settings.value("FlowView/UseTimestamp", true).toBool()); + ui->cbInfoAutoExpand->setChecked(settings.value("InfoCompare/AutoExpand", false).toBool()); + ui->cbMainAutoScroll->setChecked(settings.value("Main/AutoScroll", false).toBool()); + ui->cbPlaybackLoop->setChecked(settings.value("Playback/AutoLoop", false).toBool()); + ui->cbRestorePositions->setChecked(settings.value("Main/SaveRestorePositions", true).toBool()); + ui->cbValidate->setChecked(settings.value("Main/ValidateComm", true).toBool()); + ui->spinPlaybackSpeed->setValue(settings.value("Playback/DefSpeed", 5).toInt()); + ui->lineClockFormat->setText(settings.value("Main/TimeFormat", "MMM-dd HH:mm:ss.zzz").toString()); + ui->lineRemoteHost->setText(settings.value("Remote/Host", "api.savvycan.com").toString()); + ui->lineRemotePort->setText(settings.value("Remote/Port", "21315").toString()); // = 0x5343 = SC. Yep, really creative port number + ui->cbAutoStartRemote->setChecked(settings.value("Remote/AutoStart", false).toBool()); + ui->cbLoadConnections->setChecked(settings.value("Main/SaveRestoreConnections", false).toBool()); - ui->spinFontSize->setValue(settings->value("Main/FontSize", ui->cbDisplayHex->font().pointSize()).toUInt()); + ui->spinFontSize->setValue(settings.value("Main/FontSize", ui->cbDisplayHex->font().pointSize()).toUInt()); - bool secondsMode = settings->value("Main/TimeSeconds", false).toBool(); - bool clockMode = settings->value("Main/TimeClock", false).toBool(); + bool secondsMode = settings.value("Main/TimeSeconds", false).toBool(); + bool clockMode = settings.value("Main/TimeClock", false).toBool(); if (clockMode) { ui->rbSeconds->setChecked(false); @@ -59,9 +58,9 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) : } } - ui->comboSendingBus->setCurrentIndex(settings->value("Playback/SendingBus", 4).toInt()); - ui->cbUseFiltered->setChecked(settings->value("Main/UseFiltered", false).toBool()); - ui->cbUseOpenGL->setChecked(settings->value("Main/UseOpenGL", false).toBool()); + ui->comboSendingBus->setCurrentIndex(settings.value("Playback/SendingBus", 4).toInt()); + ui->cbUseFiltered->setChecked(settings.value("Main/UseFiltered", false).toBool()); + ui->cbUseOpenGL->setChecked(settings.value("Main/UseOpenGL", false).toBool()); //just for simplicity they all call the same function and that function updates all settings at once connect(ui->cbDisplayHex, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); @@ -90,7 +89,6 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) : MainSettingsDialog::~MainSettingsDialog() { delete ui; - delete settings; } void MainSettingsDialog::closeEvent(QCloseEvent *event) @@ -98,7 +96,6 @@ void MainSettingsDialog::closeEvent(QCloseEvent *event) Q_UNUSED(event); removeEventFilter(this); updateSettings(); - settings->sync(); } bool MainSettingsDialog::eventFilter(QObject *obj, QEvent *event) @@ -122,27 +119,29 @@ bool MainSettingsDialog::eventFilter(QObject *obj, QEvent *event) void MainSettingsDialog::updateSettings() { - settings->setValue("Main/UseHex", ui->cbDisplayHex->isChecked()); - settings->setValue("FlowView/AutoRef", ui->cbFlowAutoRef->isChecked()); - settings->setValue("FlowView/UseTimestamp", ui->cbFlowUseTimestamp->isChecked()); - settings->setValue("InfoCompare/AutoExpand", ui->cbInfoAutoExpand->isChecked()); - settings->setValue("Main/AutoScroll", ui->cbMainAutoScroll->isChecked()); - settings->setValue("Playback/AutoLoop", ui->cbPlaybackLoop->isChecked()); - settings->setValue("Main/SaveRestorePositions", ui->cbRestorePositions->isChecked()); - settings->setValue("Main/SaveRestoreConnections", ui->cbLoadConnections->isChecked()); - settings->setValue("Main/ValidateComm", ui->cbValidate->isChecked()); - settings->setValue("Playback/DefSpeed", ui->spinPlaybackSpeed->value()); - settings->setValue("Main/TimeSeconds", ui->rbSeconds->isChecked()); - settings->setValue("Main/TimeClock", ui->rbSysClock->isChecked()); - settings->setValue("Playback/SendingBus", ui->comboSendingBus->currentIndex()); - settings->setValue("Main/UseFiltered", ui->cbUseFiltered->isChecked()); - settings->setValue("Main/UseOpenGL", ui->cbUseOpenGL->isChecked()); - settings->setValue("Main/TimeFormat", ui->lineClockFormat->text()); - settings->setValue("Main/FontSize", ui->spinFontSize->value()); - settings->setValue("Remote/Host", ui->lineRemoteHost->text()); - settings->setValue("Remote/Port", ui->lineRemotePort->text()); - settings->setValue("Remote/AutoStart", ui->cbAutoStartRemote->isChecked()); + QSettings settings; - settings->sync(); + settings.setValue("Main/UseHex", ui->cbDisplayHex->isChecked()); + settings.setValue("FlowView/AutoRef", ui->cbFlowAutoRef->isChecked()); + settings.setValue("FlowView/UseTimestamp", ui->cbFlowUseTimestamp->isChecked()); + settings.setValue("InfoCompare/AutoExpand", ui->cbInfoAutoExpand->isChecked()); + settings.setValue("Main/AutoScroll", ui->cbMainAutoScroll->isChecked()); + settings.setValue("Playback/AutoLoop", ui->cbPlaybackLoop->isChecked()); + settings.setValue("Main/SaveRestorePositions", ui->cbRestorePositions->isChecked()); + settings.setValue("Main/SaveRestoreConnections", ui->cbLoadConnections->isChecked()); + settings.setValue("Main/ValidateComm", ui->cbValidate->isChecked()); + settings.setValue("Playback/DefSpeed", ui->spinPlaybackSpeed->value()); + settings.setValue("Main/TimeSeconds", ui->rbSeconds->isChecked()); + settings.setValue("Main/TimeClock", ui->rbSysClock->isChecked()); + settings.setValue("Playback/SendingBus", ui->comboSendingBus->currentIndex()); + settings.setValue("Main/UseFiltered", ui->cbUseFiltered->isChecked()); + settings.setValue("Main/UseOpenGL", ui->cbUseOpenGL->isChecked()); + settings.setValue("Main/TimeFormat", ui->lineClockFormat->text()); + settings.setValue("Main/FontSize", ui->spinFontSize->value()); + settings.setValue("Remote/Host", ui->lineRemoteHost->text()); + settings.setValue("Remote/Port", ui->lineRemotePort->text()); + settings.setValue("Remote/AutoStart", ui->cbAutoStartRemote->isChecked()); + + settings.sync(); emit updatedSettings(); } diff --git a/mainsettingsdialog.h b/mainsettingsdialog.h index d3ef3a5..0ffb0ec 100644 --- a/mainsettingsdialog.h +++ b/mainsettingsdialog.h @@ -24,7 +24,6 @@ public slots: private: Ui::MainSettingsDialog *ui; - QSettings *settings; void closeEvent(QCloseEvent *event); bool eventFilter(QObject *obj, QEvent *event); diff --git a/mainwindow.cpp b/mainwindow.cpp index ca9c39d..1f9a2a8 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -34,11 +34,6 @@ MainWindow::MainWindow(QWidget *parent) : useHex = true; - //These things are used by QSettings to set up setting storage - QCoreApplication::setOrganizationName("EVTV"); - QCoreApplication::setOrganizationDomain("evtv.me"); - QCoreApplication::setApplicationName("SavvyCAN"); - selfRef = this; this->setWindowTitle("Savvy CAN V" + QString::number(VERSION));