X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosPreferences.java;h=3f8e7a070a98715ab0749a80a35a4c1b32250e85;hb=2a4d741872449b5332f28e018fa3acc53ed7d891;hp=cc340d0342ae8d1e9d8fd910a779dcc7f2876784;hpb=ec20e2f72460010c4f59e6d59775671260e01026;p=fw%2Faltos diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index cc340d03..3f8e7a07 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_10; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; @@ -116,7 +116,7 @@ public class AltosPreferences { public final static String frequency_count = "COUNT"; public final static String frequency_format = "FREQUENCY-%d"; public final static String description_format = "DESCRIPTION-%d"; - public final static String frequenciesPreference = "FREQUENCIES"; + public final static String frequenciesPreference = "FREQUENCIES-1"; /* Units preference */ @@ -136,21 +136,33 @@ public class AltosPreferences { AltosFrequency[] frequencies = null; - frequencies = (AltosFrequency[]) backend.getSerializable(frequenciesPreference, null); + AltosHashSet[] sets = AltosHashSet.array(backend.getString(frequenciesPreference,null)); + if (sets != null) { + ArrayList freqs = new ArrayList(); + + for (int i = 0; i < sets.length; i++) { + AltosFrequency f = AltosFrequency.fromHashSet(sets[i], null); + if (f != null) + freqs.add(f); + } + frequencies = freqs.toArray(new AltosFrequency[0]); + } if (frequencies == null) { if (backend.nodeExists(common_frequencies_node_name)) { 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); + } } } } @@ -165,6 +177,14 @@ public class AltosPreferences { return frequencies; } + public static void save_common_frequencies() { + 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)); + flush_preferences(); + } + public static int launcher_serial; public static int launcher_channel; @@ -350,12 +370,12 @@ public class AltosPreferences { } } - public static void set_state(int serial, AltosState state, AltosListenerState listener_state) { + public static void set_state(AltosState state) { synchronized(backend) { - backend.putSerializable(String.format(statePreferenceFormat, serial), - new AltosSavedState(state, listener_state)); - backend.putInt(statePreferenceLatest, serial); + backend.putHashSet(String.format(statePreferenceFormat, state.serial), state.hashSet()); + backend.putInt(statePreferenceLatest, state.serial); + flush_preferences(); } } @@ -378,6 +398,7 @@ public class AltosPreferences { public static void remove_state(int serial) { synchronized(backend) { backend.remove(String.format(statePreferenceFormat, serial)); + flush_preferences(); } } @@ -389,9 +410,13 @@ public class AltosPreferences { return latest; } - public static AltosSavedState state(int serial) { + public static AltosState state(int serial) { synchronized(backend) { - return (AltosSavedState) backend.getSerializable(String.format(statePreferenceFormat, serial), null); + try { + return AltosState.fromHashSet(backend.getHashSet(String.format(statePreferenceFormat, serial))); + } catch (Exception e) { + return null; + } } } @@ -508,8 +533,8 @@ public class AltosPreferences { public static void set_common_frequencies(AltosFrequency[] frequencies) { synchronized(backend) { common_frequencies = frequencies; - backend.putSerializable(frequenciesPreference, frequencies); - flush_preferences(); + + save_common_frequencies(); } }