package envoy.client; import java.awt.Color; import java.util.HashMap; import java.util.Map; import java.util.prefs.Preferences; import envoy.client.ui.Theme; import envoy.schema.User; /** * Project: envoy-client
* File: Settings.java
* Created: 11 Nov 2019
* * @author Leon Hofmeister * @author Maximilian Käfer * @since Envoy v0.2-alpha */ public class Settings { private String username; private String email; private boolean enterToSend = true; private Map themes = new HashMap<>(); private String currentTheme; // private Image profilePic; private static Settings settings; private Preferences prefs = Preferences.userNodeForPackage(Settings.class); /** * The way to instantiate the settings. * Is set to private to deny other instances of that object. * * @since Envoy v0.2-alpha */ private Settings() {} /** * This method is used to ensure that there is only one instance of Settings. * * @return the instance of Settings * @since Envoy v0.2-alpha */ public static Settings getInstance() { if (settings == null) { settings = new Settings(); settings.load(); } return settings; } public void load() { settings.setUsername(prefs.get("username", "")); settings.setEmail(prefs.get("email", "")); settings.setEnterToSend(prefs.getBoolean("enterToSend", true)); // currentTheme = "dark"; Activate once if NullPointerException on currentTheme // and change theme to dark or white in Settings settings.setCurrentTheme(prefs.get("theme", "dark")); } public void save() { prefs.put("username", settings.getUsername()); prefs.put("email", settings.getEmail()); prefs.put("theme", currentTheme); System.out.println(currentTheme); prefs.putBoolean("enterToSend", settings.isEnterToSend()); // TODO: override themes map } public void firstSave(User user) { // TODO: load themes settings.getThemes() .put("dark", new Theme("dark", Color.black, Color.darkGray, Color.white, Color.blue, Color.white, Color.orange, Color.blue, Color.white, Color.white)); settings.getThemes() .put("light", new Theme("light", new Color(235, 235, 235), Color.white, Color.white, Color.darkGray, Color.black, Color.orange, Color.darkGray, Color.black, Color.black)); prefs.put("username", user.getName()); // prefs.put("email", user.getEmail()); // prefs.putBoolean("darkMode", true); // prefs.putBoolean("enterToSend", true); } public void addNewThemeToMap(Theme theme) { settings.getThemes().put(theme.getThemeName(), theme); currentTheme = theme.getThemeName(); } public String getCurrentTheme() { return currentTheme; } public void setCurrentTheme(String themeName) { currentTheme = themeName; } /** * @return the username * @since Envoy v0.2-alpha */ public String getUsername() { return username; } /** * @param username the username to set * @since Envoy v0.2-alpha */ public void setUsername(String username) { this.username = username; } /** * @return the email associated with that user. * @since Envoy v0.2-alpha */ public String getEmail() { return email; } /** * @param email the email to set * @since Envoy v0.2-alpha */ public void setEmail(String email) { this.email = email; } /** * @return true, if "enter" suffices to send a message, else it has to be "ctrl" * + "enter" * @since Envoy v0.2-alpha */ public boolean isEnterToSend() { return enterToSend; } /** * Change mode of posting a message via Keystroke. * * @param enterToSend if true, "enter" suffices to send a message,
* else it has to be "ctrl" + "enter" * @since Envoy v0.2-alpha */ public void setEnterToSend(boolean enterToSend) { this.enterToSend = enterToSend; } public Map getThemes() { return themes; } public void setThemes(Map themes) { this.themes = themes; } // /** // * @return the profilePic // * @since Envoy v0.2-alpha // */ // public Image getProfilePic() { return profilePic; } // // /** // * @param profilePic the profilePic to set // * @since Envoy v0.1-alpha // */ // public void setProfilePic(Image profilePic) { this.profilePic = profilePic; } }