diff --git a/src/properties/SystemProperties.java b/src/properties/SystemProperties.java index eeb0feaa..a36a171b 100644 --- a/src/properties/SystemProperties.java +++ b/src/properties/SystemProperties.java @@ -82,12 +82,9 @@ public class SystemProperties { out = new FileOutputStream( propsPath.toString() ); - String comments = - "SDRTrunk - SDR Trunking Decoder Application Settings"; + String comments = "SDRTrunk - SDR Trunking Decoder Application Settings"; mProperties.store( out, comments ); - - mLog.info( "saved current properties [" + propsPath.toString() + "]" ); } catch( Exception e ) { diff --git a/src/spectrum/DFTProcessor.java b/src/spectrum/DFTProcessor.java index 45734e9e..ef9b745f 100644 --- a/src/spectrum/DFTProcessor.java +++ b/src/spectrum/DFTProcessor.java @@ -30,6 +30,7 @@ import org.jtransforms.fft.FloatFFT_1D; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import properties.SystemProperties; import sample.Buffer; import sample.Listener; import sample.SampleType; @@ -61,6 +62,8 @@ public class DFTProcessor implements Listener, private ScheduledExecutorService mScheduler = Executors .newScheduledThreadPool( 1, new NamingThreadFactory( "spectrum dft" ) ); + public static final String FRAME_RATE_PROPERTY = "spectral.display.frame.rate"; + private DFTSize mDFTSize = DFTSize.FFT04096; private DFTSize mNewDFTSize = DFTSize.FFT04096; @@ -89,7 +92,16 @@ public class DFTProcessor implements Listener, public DFTProcessor( SampleType sampleType ) { setSampleType( sampleType ); - setFrameRate( 20 ); + + loadSettings(); + } + + private void loadSettings() + { + int frameRate = SystemProperties.getInstance() + .get( DFTProcessor.FRAME_RATE_PROPERTY, 20 ); + + setFrameRate( frameRate ); } public void dispose() @@ -171,6 +183,10 @@ public class DFTProcessor implements Listener, mFrameRate = framesPerSecond; + SystemProperties properties = SystemProperties.getInstance(); + properties.set( FRAME_RATE_PROPERTY, String.valueOf( mFrameRate ) ); + properties.save(); + calculateConsumptionRate(); restart(); diff --git a/src/spectrum/SpectralDisplayPanel.java b/src/spectrum/SpectralDisplayPanel.java index b2cb7dd8..d335f2a8 100644 --- a/src/spectrum/SpectralDisplayPanel.java +++ b/src/spectrum/SpectralDisplayPanel.java @@ -55,6 +55,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import playlist.PlaylistManager; +import properties.SystemProperties; import sample.Listener; import sample.SampleType; import sample.complex.ComplexBuffer; @@ -99,8 +100,10 @@ public class SpectralDisplayPanel extends JPanel private static DecimalFormat sCURSOR_FORMAT = new DecimalFormat( "000.00000" ); + public static final String FFT_SIZE_PROPERTY = "spectral.display.dft.size"; public static final int NO_ZOOM = 0; public static final int MAX_ZOOM = 6; + private DFTSize mDFTSize = DFTSize.FFT04096; private int mZoom = 0; @@ -150,6 +153,36 @@ public class SpectralDisplayPanel extends JPanel } init(); + + loadSettings(); + } + + private void loadSettings() + { + SystemProperties properties = SystemProperties.getInstance(); + + String rawSize = properties.get( FFT_SIZE_PROPERTY, DFTSize.FFT04096.name() ); + + DFTSize size = null; + + if( rawSize != null ) + { + try + { + size = DFTSize.valueOf( rawSize ); + } + catch( Exception e ) + { + //Do nothing, we couldn't parse the stored value + } + } + + if( size == null ) + { + size = DFTSize.FFT04096; + } + + setDFTSize( size ); } public void dispose() @@ -194,6 +227,10 @@ public class SpectralDisplayPanel extends JPanel mDFTProcessor.setDFTSize( size ); mOverlayPanel.setDFTSize( size ); mDFTSize = size; + + SystemProperties properties = SystemProperties.getInstance(); + properties.set( FFT_SIZE_PROPERTY, size.name() ); + properties.save(); setZoom( 0, 0, 0 ); } diff --git a/src/spectrum/WaterfallPanel.java b/src/spectrum/WaterfallPanel.java index 2aa7e37a..336e8c6c 100644 --- a/src/spectrum/WaterfallPanel.java +++ b/src/spectrum/WaterfallPanel.java @@ -121,6 +121,8 @@ public class WaterfallPanel extends JPanel implements DFTResultsListener, mMemoryImageSource.setAnimated( true ); mWaterfallImage = createImage( mMemoryImageSource ); + + repaint(); } /**