Merge remote-tracking branch 'origin/master' into micropeak-logging
[fw/altos] / altoslib / AltosPreferences.java
index a82ea3f67f0e4ba5229a5dc6d2abb0314c9ab663..e50b9b5cf05a9a856b1b60fb3af6fe604ac3db39 100644 (file)
@@ -19,7 +19,6 @@ package org.altusmetrum.AltosLib;
 
 import java.io.*;
 import java.util.*;
-import javax.swing.filechooser.FileSystemView;
 
 public class AltosPreferences {
        public static AltosPreferencesBackend backend = null;
@@ -145,8 +144,7 @@ public class AltosPreferences {
                if (logdir_string != null)
                        logdir = new File(logdir_string);
                else {
-                       /* Use the file system view default directory */
-                       logdir = new File(FileSystemView.getFileSystemView().getDefaultDirectory(), logdirName);
+                       logdir = new File(backend.homeDirectory(), logdirName);
                        if (!logdir.exists())
                                logdir.mkdirs();
                }
@@ -369,6 +367,8 @@ public class AltosPreferences {
                set_common_frequencies(new_frequencies);
        }
 
+       static LinkedList<AltosUnitsListener> units_listeners;
+
        public static boolean imperial_units() {
                synchronized(backend) {
                        return AltosConvert.imperial_units;
@@ -381,5 +381,24 @@ public class AltosPreferences {
                        backend.putBoolean(unitsPreference, imperial_units);
                        flush_preferences();
                }
+               if (units_listeners != null) {
+                       for (AltosUnitsListener l : units_listeners) {
+                               l.units_changed(imperial_units);
+                       }
+               }
+       }
+
+       public static void register_units_listener(AltosUnitsListener l) {
+               synchronized(backend) {
+                       if (units_listeners == null)
+                               units_listeners = new LinkedList<AltosUnitsListener>();
+                       units_listeners.add(l);
+               }
+       }
+
+       public static void unregister_units_listener(AltosUnitsListener l) {
+               synchronized(backend) {
+                       units_listeners.remove(l);
+               }
        }
 }