Browse Source

Start minimized setting

frans 8 years ago
parent
commit
60f8574a55

+ 1 - 2
README.md

@@ -22,5 +22,4 @@ A Java-based, open-source alternative to the default control software for the NZ
 ##TODO
 - Make it possible to set weights for different temperature readings.
 - Unit tests
-- GUI Improvements
-  - More menu items (start minimized, start on boot, etc.)
+- Start on boot for Windows and Linux

+ 8 - 2
src/main/java/eu/tankernn/grid/GridControl.java

@@ -35,6 +35,7 @@ public class GridControl implements Runnable {
 	private ComputerModel model = new ComputerModel();
 
 	private GridControlPanel frame;
+	private boolean startMinimized = false;
 
 	public GridControl(boolean gui) {
 		readSettings();
@@ -52,7 +53,7 @@ public class GridControl implements Runnable {
 			frame.setIconImage(image);
 			frame.pack();
 			frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-			frame.setVisible(true);
+			frame.setVisible(!startMinimized);
 			addTrayIcon(image);
 		}
 
@@ -98,6 +99,7 @@ public class GridControl implements Runnable {
 				model.getGrid().getFan(i).setProfile(model.getProfile(settings.fanProfiles[i]));
 			pollingSpeed = settings.pollingRate;
 			model.setMinSpeed(settings.minSpeed);
+			startMinimized = settings.startMinimized;
 		} catch (FileNotFoundException e) {
 			System.out.println("No config file found, using default settings.");
 			for (int i = 0; i < 6; i++)
@@ -119,7 +121,7 @@ public class GridControl implements Runnable {
 		try (Writer writer = new FileWriter(SETTINGS_PATH)) {
 			gson.toJson(new Settings(model.getGrid().getCommunicator().getPortName(),
 					model.getGrid().fanStream().map(f -> f.getProfile().name).toArray(String[]::new), pollingSpeed,
-					model.getMinSpeed()), writer);
+					model.getMinSpeed(), this.startMinimized), writer);
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
@@ -181,5 +183,9 @@ public class GridControl implements Runnable {
 	public int getPollingSpeed() {
 		return pollingSpeed;
 	}
+	
+	public void setStartMinimized(boolean startMinimized) {
+		this.startMinimized = startMinimized;
+	}
 
 }

+ 3 - 1
src/main/java/eu/tankernn/grid/Settings.java

@@ -7,11 +7,13 @@ public class Settings {
 	 */
 	public final String[] fanProfiles;
 	public final int pollingRate, minSpeed;
+	public final boolean startMinimized;
 	
-	public Settings(String portname, String[] fanProfiles, int pollingRate, int minSpeed) {
+	public Settings(String portname, String[] fanProfiles, int pollingRate, int minSpeed, boolean startMinimized) {
 		this.portname = portname;
 		this.fanProfiles = fanProfiles;
 		this.pollingRate = pollingRate;
 		this.minSpeed = minSpeed;
+		this.startMinimized = startMinimized;
 	}
 }

+ 4 - 1
src/main/java/eu/tankernn/grid/frame/GridControlPanel.java

@@ -8,6 +8,7 @@ import java.awt.event.ItemListener;
 import java.text.DecimalFormat;
 import java.util.Arrays;
 
+import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JComboBox;
 import javax.swing.JComponent;
 import javax.swing.JFrame;
@@ -38,7 +39,7 @@ public class GridControlPanel extends JFrame {
 	private JMenu fileMenu = new JMenu("File"), settingsMenu = new JMenu("Settings"),
 			profileMenu = new JMenu("Profiles");
 	private JMenuItem saveSettings = new JMenuItem("Save settings..."), exit = new JMenuItem("Exit"),
-			sensorConf = new JMenuItem("Configure sensors..."), addProfile = new JMenuItem("Add profile...");
+			sensorConf = new JMenuItem("Configure sensors..."), startMinimized = new JCheckBoxMenuItem("Start minimized"), addProfile = new JMenuItem("Add profile...");
 
 	private FanPanel[] fanPanels;
 	private JPanel serialPanel = new JPanel(), gridPanel = new JPanel(), infoPanel = new JPanel();
@@ -76,6 +77,8 @@ public class GridControlPanel extends JFrame {
 		menuBar.add(settingsMenu);
 		settingsMenu.add(sensorConf);
 		sensorConf.addActionListener(e -> new SensorConfig(model.getSensor()));
+		settingsMenu.add(startMinimized);
+		startMinimized.addActionListener(e -> control.setStartMinimized(startMinimized.isEnabled()));
 		menuBar.add(profileMenu);
 		profileMenu.add(addProfile);
 		addProfile.addActionListener(e -> {