diff --git a/frameplaybackwindow.cpp b/frameplaybackwindow.cpp index 93515c1d..10cce131 100644 --- a/frameplaybackwindow.cpp +++ b/frameplaybackwindow.cpp @@ -576,6 +576,7 @@ void FramePlaybackWindow::btnLoadLive() void FramePlaybackWindow::btnBackOneClick() { + if (!checkNoSeqLoaded()) return; forward = false; isPlaying = false; wantPlaying = false; @@ -593,6 +594,7 @@ void FramePlaybackWindow::btnPauseClick() void FramePlaybackWindow::btnReverseClick() { + if (!checkNoSeqLoaded()) return; forward = false; wantPlaying = true; if (!ui->ckWaitForTraffic->isChecked()) @@ -628,6 +630,7 @@ void FramePlaybackWindow::btnStopClick() void FramePlaybackWindow::btnPlayClick() { + if (!checkNoSeqLoaded()) return; forward = true; wantPlaying = true; if (!ui->ckWaitForTraffic->isChecked()) @@ -640,6 +643,7 @@ void FramePlaybackWindow::btnPlayClick() void FramePlaybackWindow::btnFwdOneClick() { + if (!checkNoSeqLoaded()) return; forward = true; isPlaying = false; wantPlaying = false; @@ -647,6 +651,16 @@ void FramePlaybackWindow::btnFwdOneClick() updateFrameLabel(); } +bool FramePlaybackWindow::checkNoSeqLoaded() +{ + if (seqItems.count() == 0) + { + QMessageBox::warning(this, "Warning", "Cannot begin playback until at\nleast one playback source is loaded."); + return false; + } + return true; +} + void FramePlaybackWindow::changePlaybackSpeed(int newSpeed) { playbackObject.setPlaybackInterval(newSpeed); diff --git a/frameplaybackwindow.h b/frameplaybackwindow.h index 860b614d..a56bfc85 100644 --- a/frameplaybackwindow.h +++ b/frameplaybackwindow.h @@ -69,6 +69,7 @@ private slots: void readSettings(); void writeSettings(); void calculateWhichBus(); + bool checkNoSeqLoaded(); bool eventFilter(QObject *obj, QEvent *event); }; diff --git a/re/udsscanwindow.cpp b/re/udsscanwindow.cpp index 52081271..80dc87ef 100644 --- a/re/udsscanwindow.cpp +++ b/re/udsscanwindow.cpp @@ -127,6 +127,7 @@ void UDSScanWindow::displayScanEntry(int idx) { if (inhibitUpdates) return; if (idx == -1) return; + inhibitUpdates = true; //need to do this so it doesn't mess things up as we fill in the fields currEditEntry = &scanEntries.data()[idx]; ui->spinStartID->setValue(currEditEntry->startID); ui->spinEndID->setValue(currEditEntry->endID); @@ -143,6 +144,7 @@ void UDSScanWindow::displayScanEntry(int idx) ui->spinLowerSubfunc->setValue(currEditEntry->subfunctLower); ui->spinUpperSubfunc->setValue(currEditEntry->subfunctUpper); ui->spinIncrement->setValue(currEditEntry->subfunctIncrement); + inhibitUpdates = false; } void UDSScanWindow::deleteSelectedScan() @@ -215,7 +217,7 @@ void UDSScanWindow::loadScans() QMessageBox::warning(this, "Cannot Load File", "File is not a supported version.\nCannot load it!"); return; } - inhibitUpdates = true;; + inhibitUpdates = true; scanEntries.clear(); ui->listScansToRun->clear(); int numEntries; @@ -223,12 +225,22 @@ void UDSScanWindow::loadScans() for (int i = 0; i < numEntries; i++) { ScanEntry entry; - load >> entry.startID >> entry.endID; - load >> entry.idOffset >> entry.bAdaptiveOffset >> entry.bShowNoReplies; - load >> entry.busToScan >> entry.maxWaitTime >> entry.scanType; - load >> entry.sessType >> entry.subfunctLen >> entry.subfunctLower; - load >> entry.subfunctUpper >> entry.subfunctIncrement; - load >> entry.serviceLower >> entry.serviceUpper; + load >> entry.startID; + load >> entry.endID; + load >> entry.idOffset; + load >> entry.bAdaptiveOffset; + load >> entry.bShowNoReplies; + load >> entry.busToScan; + load >> entry.maxWaitTime; + load >> entry.scanType; + load >> entry.sessType; + load >> entry.subfunctLen; + load >> entry.subfunctLower; + load >> entry.subfunctUpper; + load >> entry.subfunctIncrement; + load >> entry.serviceLower; + load >> entry.serviceUpper; + scanEntries.append(entry); ui->listScansToRun->addItem(generateListDesc(scanEntries.length() - 1)); } diff --git a/ui/udsscanwindow.ui b/ui/udsscanwindow.ui index b9ad2623..dd8cf663 100644 --- a/ui/udsscanwindow.ui +++ b/ui/udsscanwindow.ui @@ -345,7 +345,7 @@ 1024 - 8 + 1 16