diff --git a/src/spectrum/DFTProcessor.java b/src/spectrum/DFTProcessor.java index 7e844301..c3761f66 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; @@ -90,6 +93,15 @@ public class DFTProcessor implements Listener, { setSampleType( sampleType ); setFrameRate( 20 ); + + loadSettings(); + } + + private void loadSettings() + { + int frameRate = SystemProperties.getInstance().get( FRAME_RATE_PROPERTY, 20 ); + + setFrameRate( frameRate ); } public void dispose() @@ -170,6 +182,11 @@ public class DFTProcessor implements Listener, } mFrameRate = framesPerSecond; + + SystemProperties properties = SystemProperties.getInstance(); + + properties.set( FRAME_RATE_PROPERTY, String.valueOf( mFrameRate ) ); + properties.save(); calculateConsumptionRate(); diff --git a/src/spectrum/SpectralDisplayPanel.java b/src/spectrum/SpectralDisplayPanel.java index 9d76b912..8c3cc6ae 100644 --- a/src/spectrum/SpectralDisplayPanel.java +++ b/src/spectrum/SpectralDisplayPanel.java @@ -54,6 +54,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,6 +100,7 @@ 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; @@ -155,6 +157,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 + } + } + + if( size == null ) + { + size = DFTSize.FFT04096; + } + + setDFTSize( size ); } public void dispose() @@ -199,6 +231,11 @@ 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(); } /**