altosuilib: Make map cache size configurable
[fw/altos] / altosuilib / AltosUIPreferences.java
index 509faaff90b0653bf32966b521990ec339538b54..ecab20d4ee7e54846660002fe4a5775dad110b5d 100644 (file)
@@ -34,6 +34,9 @@ public class AltosUIPreferences extends AltosPreferences {
        /* Window position preference name */
        final static String positionPreference = "POSITION";
 
+       /* Maps cache size preference name */
+       final static String mapCachePreference = "MAP-CACHE";
+
        /* UI Component to pop dialogs up */
        static Component component;
 
@@ -52,6 +55,10 @@ public class AltosUIPreferences extends AltosPreferences {
 
        public static int position = AltosUILib.position_top_left;
 
+       static LinkedList<AltosUIMapCacheListener> map_cache_listeners;
+
+       public static int map_cache = 9;
+
        public static void init() {
                AltosPreferences.init(new AltosUIPreferencesBackend());
 
@@ -68,6 +75,9 @@ public class AltosUIPreferences extends AltosPreferences {
 
                position = backend.getInt(positionPreference, AltosUILib.position_top_left);
                position_listeners = new LinkedList<AltosPositionListener>();
+
+               map_cache = backend.getInt(mapCachePreference, 9);
+               map_cache_listeners = new LinkedList<AltosUIMapCacheListener>();
        }
 
        static { init(); }
@@ -215,4 +225,32 @@ public class AltosUIPreferences extends AltosPreferences {
                        return position;
                }
        }
+
+       public static void register_map_cache_listener(AltosUIMapCacheListener l) {
+               synchronized(backend) {
+                       map_cache_listeners.add(l);
+               }
+       }
+
+       public static void unregister_map_cache_listener(AltosUIMapCacheListener l) {
+               synchronized (backend) {
+                       map_cache_listeners.remove(l);
+               }
+       }
+
+       public static void set_map_cache(int new_map_cache) {
+               synchronized(backend) {
+                       map_cache = new_map_cache;
+                       backend.putInt(mapCachePreference, map_cache);
+                       flush_preferences();
+                       for (AltosUIMapCacheListener l: map_cache_listeners)
+                               l.map_cache_changed(map_cache);
+               }
+       }
+
+       public static int map_cache() {
+               synchronized(backend) {
+                       return map_cache;
+               }
+       }
 }