diff --git a/src/main/java/org/correomqtt/business/model/ThemeSettingsDTO.java b/src/main/java/org/correomqtt/business/model/ThemeSettingsDTO.java index 423fb07dd..e73eb3f74 100644 --- a/src/main/java/org/correomqtt/business/model/ThemeSettingsDTO.java +++ b/src/main/java/org/correomqtt/business/model/ThemeSettingsDTO.java @@ -17,4 +17,5 @@ @JsonIgnoreProperties(ignoreUnknown = true) public class ThemeSettingsDTO { private ThemeDTO activeTheme; + private ThemeDTO nextTheme; } diff --git a/src/main/java/org/correomqtt/business/provider/SettingsProvider.java b/src/main/java/org/correomqtt/business/provider/SettingsProvider.java index cc11e860a..d4818bc78 100644 --- a/src/main/java/org/correomqtt/business/provider/SettingsProvider.java +++ b/src/main/java/org/correomqtt/business/provider/SettingsProvider.java @@ -89,6 +89,11 @@ public static synchronized SettingsProvider getInstance() { private ThemeProvider getActiveTheme() { if (activeThemeProvider == null) { + if(configDTO.getThemesSettings().getNextTheme() != null) { + configDTO.getThemesSettings().setActiveTheme(configDTO.getThemesSettings().getNextTheme()); + configDTO.getThemesSettings().setNextTheme(null); + saveDTO(); + } String activeThemeName = configDTO.getThemesSettings().getActiveTheme().getName(); ArrayList themes = new ArrayList<>(PluginManager.getInstance().getExtensions(ThemeProviderHook.class)); activeThemeProvider = themes.stream().filter(t -> t.getName().equals(activeThemeName)).findFirst().orElse(new LightThemeProvider()); @@ -127,7 +132,6 @@ public ThemeSettingsDTO getThemeSettings() { } public void saveSettings(boolean showRestartRequiredDialog) { - this.activeThemeProvider = null; saveDTO(); saveToUserDirectory(CSS_FILE_NAME, getActiveTheme().getCss()); ConfigDispatcher.getInstance().onSettingsUpdated(showRestartRequiredDialog); diff --git a/src/main/java/org/correomqtt/gui/controller/SettingsViewController.java b/src/main/java/org/correomqtt/gui/controller/SettingsViewController.java index af56c8738..fc0e4bb7c 100644 --- a/src/main/java/org/correomqtt/gui/controller/SettingsViewController.java +++ b/src/main/java/org/correomqtt/gui/controller/SettingsViewController.java @@ -158,7 +158,12 @@ public ThemeProvider fromString(String string) { themeComboBox.getSelectionModel().select(themes. stream() - .filter(t -> t.getName().equals(SettingsProvider.getInstance().getThemeSettings().getActiveTheme().getName())) + .filter(t -> { + if(SettingsProvider.getInstance().getThemeSettings().getNextTheme() != null) { + return t.getName().equals(SettingsProvider.getInstance().getThemeSettings().getNextTheme().getName()); + } + return t.getName().equals(SettingsProvider.getInstance().getThemeSettings().getActiveTheme().getName()); + }) .findFirst() .orElse(new LightThemeProvider())); @@ -253,7 +258,7 @@ private void saveSettings() { settings.setSearchUpdates(searchUpdatesCheckbox.isSelected()); ThemeProvider selectedTheme = themeComboBox.getSelectionModel().getSelectedItem(); settings.setSavedLocale(languageComboBox.getSelectionModel().getSelectedItem().getLocale()); - SettingsProvider.getInstance().getThemeSettings().setActiveTheme(new ThemeDTO(selectedTheme.getName(), selectedTheme.getIconMode())); + SettingsProvider.getInstance().getThemeSettings().setNextTheme(new ThemeDTO(selectedTheme.getName(), selectedTheme.getIconMode())); SettingsProvider.getInstance().saveSettings(true); }