altosdroid: Split setup functions to separate dialog
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / AltosDroidPreferences.java
index bd3bd9421f54a8cbf99d91fa8193ad99c4a4e911..dd86c818b06b5822af48335ca465e23ec69c7fdf 100644 (file)
  */
 package org.altusmetrum.AltosDroid;
 
+import java.io.*;
+import java.util.*;
+import java.text.*;
+
 import android.content.Context;
 import org.altusmetrum.altoslib_10.*;
 
@@ -65,12 +69,19 @@ public class AltosDroidPreferences extends AltosPreferences {
                }
        }
 
+       static LinkedList<AltosDroidMapSourceListener> map_source_listeners;
+
        public static void set_map_source(int map_source) {
                synchronized(backend) {
                        AltosDroidPreferences.map_source = map_source;
                        backend.putInt(mapSourcePreference, map_source);
                        flush_preferences();
                }
+               if (map_source_listeners != null) {
+                       for (AltosDroidMapSourceListener l : map_source_listeners) {
+                               l.map_source_changed(map_source);
+                       }
+               }
        }
 
        public static int map_source() {
@@ -78,4 +89,18 @@ public class AltosDroidPreferences extends AltosPreferences {
                        return map_source;
                }
        }
+
+       public static void register_map_source_listener(AltosDroidMapSourceListener l) {
+               synchronized(backend) {
+                       if (map_source_listeners == null)
+                               map_source_listeners = new LinkedList<AltosDroidMapSourceListener>();
+                       map_source_listeners.add(l);
+               }
+       }
+
+       public static void unregister_map_source_listener(AltosDroidMapSourceListener l) {
+               synchronized(backend) {
+                       map_source_listeners.remove(l);
+               }
+       }
 }