From 376b991b637b5b57d60e087957994cb3a9d914cf Mon Sep 17 00:00:00 2001
From: str4d <str4d@mail.i2p>
Date: Wed, 1 Aug 2012 02:44:18 +0000
Subject: [PATCH] Reverted i2psnark to storing theme itself, but checking
 routerconsole for universal theming

---
 .../src/org/klomp/snark/SnarkManager.java     | 49 +++++++++----------
 1 file changed, 24 insertions(+), 25 deletions(-)

diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
index d4733cd533..57b0c0e055 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
@@ -53,7 +53,6 @@ public class SnarkManager implements Snark.CompleteListener {
     private final Object _addSnarkLock;
     private /* FIXME final FIXME */ File _configFile;
     private Properties _config;
-    private String _theme;
     private final I2PAppContext _context;
     private final Log _log;
     private final Queue<String> _messages;
@@ -86,7 +85,8 @@ public class SnarkManager implements Snark.CompleteListener {
     //public static final String DEFAULT_LINK_PREFIX = "file:///";
     public static final String PROP_STARTUP_DELAY = "i2psnark.startupDelay";
     public static final String PROP_REFRESH_DELAY = "i2psnark.refreshSeconds";
-    public static final String THEME_CONFIG_FILE = "themes.config";
+    public static final String RC_PROP_THEME = "routerconsole.theme";
+    public static final String RC_PROP_UNIVERSAL_THEMING = "routerconsole.theme.universal";
     public static final String PROP_THEME = "i2psnark.theme";
     public static final String DEFAULT_THEME = "ubergine";
     private static final String PROP_USE_OPENTRACKERS = "i2psnark.useOpentrackers";
@@ -288,31 +288,33 @@ public class SnarkManager implements Snark.CompleteListener {
             _config.setProperty(PROP_REFRESH_DELAY, Integer.toString(DEFAULT_REFRESH_DELAY_SECS));
         if (!_config.containsKey(PROP_STARTUP_DELAY))
             _config.setProperty(PROP_STARTUP_DELAY, Integer.toString(DEFAULT_STARTUP_DELAY));
-        // Fetch theme
-        _theme = getTheme();
+        if (!_config.containsKey(PROP_THEME))
+            _config.setProperty(PROP_THEME, DEFAULT_THEME);
         updateConfig();
     }
     /**
-     * Get current theme - reads config file on every call.
-     * FIXME: only read in _theme on first call for each page load.
+     * Get current theme.
      * @return String -- the current theme
      */
     public String getTheme() {
-        Properties themeProps = _context.readConfigFile(THEME_CONFIG_FILE);
-        _theme = themeProps.getProperty(PROP_THEME);
-        // Ensure that theme config line exists in config file, and theme exists
-        String[] themes = getThemes();
-        boolean themeExists = false;
-        for (int i = 0; i < themes.length; i++) {
-            if (themes[i].equals(_theme))
-                themeExists = true;
-        }
-        if (_theme == null || !themeExists) {
-            _theme = DEFAULT_THEME;
-            themeProps.put(PROP_THEME, _theme);
-            _context.writeConfigFile(THEME_CONFIG_FILE, themeProps);
+        String theme = _config.getProperty(PROP_THEME);
+        boolean universalTheming = _context.getBooleanProperty(RC_PROP_UNIVERSAL_THEMING);
+        if (universalTheming) {
+            // Fetch routerconsole theme (or use our default if it doesn't exist)
+            theme = _context.getProperty(RC_PROP_THEME_NAME, DEFAULT_THEME);
+            // Ensure that theme exists
+            String[] themes = getThemes();
+            boolean themeExists = false;
+            for (int i = 0; i < themes.length; i++) {
+                if (themes[i].equals(_theme))
+                    themeExists = true;
+            }
+            if (!themeExists) {
+                theme = DEFAULT_THEME;
+                _config.setProperty(PROP_THEME, DEFAULT_THEME);
+            }
         }
-        return _theme;
+        return theme;
     }
 
     /**
@@ -581,8 +583,8 @@ public class SnarkManager implements Snark.CompleteListener {
             changed = true;
         }
         if (theme != null) {
-            if(!theme.equals(_theme)) {
-                _theme = theme;
+            if(!theme.equals(_config.getProperty(PROP_THEME))) {
+                _config.setProperty(PROP_THEME, theme);
                 addMessage(_("{0} theme loaded, return to main i2psnark page to view.", theme));
                 changed = true;
             }
@@ -677,9 +679,6 @@ public class SnarkManager implements Snark.CompleteListener {
             synchronized (_configFile) {
                 DataHelper.storeProps(_config, _configFile);
             }
-            Properties props = _context.readConfigFile(THEME_CONFIG_FILE);
-            props.put(PROP_THEME, _theme);
-            _context.writeConfigFile(THEME_CONFIG_FILE, props);
         } catch (IOException ioe) {
             addMessage(_("Unable to save the config to {0}", _configFile.getAbsolutePath()));
         }
-- 
GitLab