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