From 0d69f11e65963aadfcd690d58789f83a786c22a5 Mon Sep 17 00:00:00 2001 From: Denny Date: Sun, 15 Jul 2018 05:55:28 -0400 Subject: [PATCH] Resolved #370 Tuner Editor Lock State Resolves an issue with the previous implementation where the tuner editor was being refreshed repeatedly to update the lock state for the tuner, rendering the editor almost completely unusable. Now updates only the frequency control and the sample rate control to reflect the tuner's lock state. --- .../dsheirer/source/tuner/TunerEditor.java | 17 +++++++++++++++++ .../dsheirer/source/tuner/TunerViewPanel.java | 18 +++++++++++++----- .../source/tuner/airspy/AirspyTunerEditor.java | 6 ++++++ .../TunerConfigurationEditor.java | 8 ++++++++ .../tuner/fcd/proV1/FCD1TunerEditor.java | 6 ++++++ .../tuner/fcd/proplusV2/FCD2TunerEditor.java | 6 ++++++ .../source/tuner/hackrf/HackRFTunerEditor.java | 6 ++++++ .../source/tuner/rtl/e4k/E4KTunerEditor.java | 7 +++++++ .../tuner/rtl/r820t/R820TTunerEditor.java | 6 ++++++ 9 files changed, 75 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/dsheirer/source/tuner/TunerEditor.java b/src/main/java/io/github/dsheirer/source/tuner/TunerEditor.java index abb5f418..e72f7d11 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/TunerEditor.java +++ b/src/main/java/io/github/dsheirer/source/tuner/TunerEditor.java @@ -21,6 +21,7 @@ import io.github.dsheirer.gui.control.JFrequencyControl; import io.github.dsheirer.gui.editor.Editor; import io.github.dsheirer.gui.editor.EmptyEditor; import io.github.dsheirer.source.tuner.configuration.TunerConfiguration; +import io.github.dsheirer.source.tuner.configuration.TunerConfigurationEditor; import io.github.dsheirer.source.tuner.configuration.TunerConfigurationFactory; import io.github.dsheirer.source.tuner.configuration.TunerConfigurationModel; import net.miginfocom.swing.MigLayout; @@ -66,6 +67,22 @@ public class TunerEditor extends Editor init(); } + /** + * Updates the lock state of the tuner so that the frequency control and sample rate controls + * can be adjusted accordingly. + * + * @param locked true if the tuner is locked and the controls should be locked. + */ + public void setTunerLockState(boolean locked) + { + mFrequencyControl.setEnabled(!locked); + + if(mEditor instanceof TunerConfigurationEditor) + { + ((TunerConfigurationEditor)mEditor).setTunerLockState(locked); + } + } + public void init() { setLayout(new MigLayout("insets 0 0 0 0", "[grow,fill]", "[grow,fill]")); diff --git a/src/main/java/io/github/dsheirer/source/tuner/TunerViewPanel.java b/src/main/java/io/github/dsheirer/source/tuner/TunerViewPanel.java index c6f79799..04208ccd 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/TunerViewPanel.java +++ b/src/main/java/io/github/dsheirer/source/tuner/TunerViewPanel.java @@ -100,12 +100,20 @@ public class TunerViewPanel extends JPanel switch(tunerEvent.getEvent()) { case LOCK_STATE_CHANGE: - int row = mTunerTable.getSelectedRow(); - - if(row >= 0) + if(tunerEvent.getTuner() != null) { - int modelRow = mTunerTable.convertRowIndexToModel(row); - mTunerEditor.setItem(mTunerModel.getTuner(modelRow)); + int row = mTunerTable.getSelectedRow(); + + if(row >= 0) + { + int modelRow = mTunerTable.convertRowIndexToModel(row); + Tuner selectedTuner = mTunerModel.getTuner(modelRow); + + if(selectedTuner == tunerEvent.getTuner()) + { + mTunerEditor.setTunerLockState(selectedTuner.getTunerController().isLocked()); + } + } } break; } diff --git a/src/main/java/io/github/dsheirer/source/tuner/airspy/AirspyTunerEditor.java b/src/main/java/io/github/dsheirer/source/tuner/airspy/AirspyTunerEditor.java index 51d068f9..253fa784 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/airspy/AirspyTunerEditor.java +++ b/src/main/java/io/github/dsheirer/source/tuner/airspy/AirspyTunerEditor.java @@ -611,6 +611,12 @@ public class AirspyTunerEditor extends TunerConfigurationEditor } } + @Override + public void setTunerLockState(boolean locked) + { + mSampleRateCombo.setEnabled(!locked); + } + /** * Sets all controls to the argument enabled state */ diff --git a/src/main/java/io/github/dsheirer/source/tuner/configuration/TunerConfigurationEditor.java b/src/main/java/io/github/dsheirer/source/tuner/configuration/TunerConfigurationEditor.java index 50891f32..34d96a7d 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/configuration/TunerConfigurationEditor.java +++ b/src/main/java/io/github/dsheirer/source/tuner/configuration/TunerConfigurationEditor.java @@ -32,4 +32,12 @@ public abstract class TunerConfigurationEditor extends Editor