altos/lisp: Fix uninitialized values in ao_lisp_make_const
[fw/altos] / altoslib / AltosPreferences.java
index f8101ce607e43024283ccc90dc9c04c8ac6f8064..35d44631ed22918acab2f4c5bada4959e36c33dc 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -133,19 +134,13 @@ public class AltosPreferences {
        static int      map_type;
 
        public static AltosFrequency[] load_common_frequencies() {
-
                AltosFrequency[] frequencies = null;
 
                try {
-                       AltosHashSet[]  sets = AltosHashSet.array(backend.getString(frequenciesPreference,null));
-                       if (sets != null) {
-                               frequencies = new AltosFrequency[sets.length];
-                               for (int i = 0; i < frequencies.length; i++)
-                                       frequencies[i] = new AltosFrequency(sets[i]);
-                       }
-
-               } catch (IOException ie) {
-                       frequencies = null;
+                       AltosJson json = AltosJson.fromString(backend.getString(frequenciesPreference,
+                                                                               null));
+                       frequencies = (AltosFrequency[]) json.make(frequencies.getClass());
+               } catch (Exception e) {
                }
 
                if (frequencies == null) {
@@ -153,14 +148,16 @@ public class AltosPreferences {
                                AltosPreferencesBackend node = backend.node(common_frequencies_node_name);
                                int             count = node.getInt(frequency_count, 0);
 
-                               frequencies = new AltosFrequency[count];
-                               for (int i = 0; i < count; i++) {
-                                       double  frequency;
-                                       String  description;
+                               if (count > 0) {
+                                       frequencies = new AltosFrequency[count];
+                                       for (int i = 0; i < count; i++) {
+                                               double  frequency;
+                                               String  description;
 
-                                       frequency = node.getDouble(String.format(frequency_format, i), 0.0);
-                                       description = node.getString(String.format(description_format, i), null);
-                                       frequencies[i] = new AltosFrequency(frequency, description);
+                                               frequency = node.getDouble(String.format(frequency_format, i), 0.0);
+                                               description = node.getString(String.format(description_format, i), null);
+                                               frequencies[i] = new AltosFrequency(frequency, description);
+                                       }
                                }
                        }
                }
@@ -176,13 +173,8 @@ public class AltosPreferences {
        }
 
        public static void save_common_frequencies() {
-               try {
-                       AltosHashSet[]  sets = new AltosHashSet[common_frequencies.length];
-                       for (int i = 0; i < sets.length; i++)
-                               sets[i] = common_frequencies[i].hashSet();
-                       backend.putString(frequenciesPreference, AltosHashSet.toString(sets));
-               } catch (IOException ie) {
-               }
+               AltosJson       json = new AltosJson(common_frequencies);
+               backend.putString(frequenciesPreference, json.toString());
                flush_preferences();
        }
 
@@ -374,7 +366,7 @@ public class AltosPreferences {
        public static void set_state(AltosState state) {
 
                synchronized(backend) {
-                       backend.putSerializable(String.format(statePreferenceFormat, state.serial), state);
+                       backend.putJson(String.format(statePreferenceFormat, state.serial), new AltosJson(state));
                        backend.putInt(statePreferenceLatest, state.serial);
                        flush_preferences();
                }
@@ -399,6 +391,7 @@ public class AltosPreferences {
        public static void remove_state(int serial) {
                synchronized(backend) {
                        backend.remove(String.format(statePreferenceFormat, serial));
+                       flush_preferences();
                }
        }
 
@@ -413,10 +406,12 @@ public class AltosPreferences {
        public static AltosState state(int serial) {
                synchronized(backend) {
                        try {
-                               return (AltosState) backend.getSerializable(String.format(statePreferenceFormat, serial), null);
+                               AltosJson json = backend.getJson(String.format(statePreferenceFormat, serial));
+                               if (json != null)
+                                       return (AltosState) (json.make(AltosState.class));
                        } catch (Exception e) {
-                               return null;
                        }
+                       return null;
                }
        }