diff -r ed1d52c5aa94 -r 763d3961400b project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Datastructures/Schemes.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Datastructures/Schemes.java Sat Aug 18 00:22:33 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Datastructures/Schemes.java Sat Aug 18 00:47:51 2012 +0200 @@ -3,14 +3,9 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.TreeMap; -import org.hedgewars.hedgeroid.Utils; import org.hedgewars.hedgeroid.frontlib.Flib; -import org.hedgewars.hedgeroid.frontlib.Frontlib.MetaschemePtr; import org.hedgewars.hedgeroid.frontlib.Frontlib.SchemelistPtr; import android.content.Context; @@ -32,57 +27,49 @@ return new File(c.getFilesDir(), "schemes_builtin.ini"); } - public static Map loadAllSchemes(Context c) throws IOException { - Map result = loadUserSchemes(c); - result.putAll(loadBuiltinSchemes(c)); + public static List loadAllSchemes(Context c) throws IOException { + List result = loadBuiltinSchemes(c); + result.addAll(loadUserSchemes(c)); return result; } - public static Map loadUserSchemes(Context c) throws IOException { + public static List loadUserSchemes(Context c) throws IOException { return loadSchemes(c, getUserSchemesFile(c)); } - public static Map loadBuiltinSchemes(Context c) throws IOException { + public static List loadBuiltinSchemes(Context c) throws IOException { return loadSchemes(c, getBuiltinSchemesFile(c)); } - public static Map loadSchemes(Context c, File schemeFile) throws IOException { - Map result = new TreeMap(); - String metaschemePath = new File(Utils.getDataPathFile(c), "metasettings.ini").getAbsolutePath(); + public static List loadSchemes(Context c, File schemeFile) throws IOException { if(!schemeFile.isFile()) { // No schemes file == no schemes, no error - return new TreeMap(); + return new ArrayList(); } - MetaschemePtr meta = null; SchemelistPtr schemeListPtr = null; try { - meta = Flib.INSTANCE.flib_metascheme_from_ini(metaschemePath); - if(meta==null) { - throw new IOException("Unable to read metascheme"); - } - schemeListPtr = Flib.INSTANCE.flib_schemelist_from_ini(meta, schemeFile.getAbsolutePath()); + schemeListPtr = Flib.INSTANCE.flib_schemelist_from_ini(schemeFile.getAbsolutePath()); if(schemeListPtr == null) { throw new IOException("Unable to read schemelist"); } - List schemeList = schemeListPtr.deref(); - for(Scheme scheme : schemeList) { - result.put(scheme.name, scheme); - } - return result; + return schemeListPtr.deref(); } finally { if(schemeListPtr != null) { Flib.INSTANCE.flib_schemelist_destroy(schemeListPtr); } - if(meta != null) { - Flib.INSTANCE.flib_metascheme_release(meta); - } } } - public static void saveUserSchemes(Context c, Map schemes) throws IOException { - List schemeList = new ArrayList(schemes.values()); - Collections.sort(schemeList, Scheme.caseInsensitiveNameComparator); - SchemelistPtr ptr = SchemelistPtr.createJavaOwned(schemeList); + public static void saveUserSchemes(Context c, List schemes) throws IOException { + SchemelistPtr ptr = SchemelistPtr.createJavaOwned(schemes); Flib.INSTANCE.flib_schemelist_to_ini(getUserSchemesFile(c).getAbsolutePath(), ptr); } + + public static List toNameList(List schemes) { + List result = new ArrayList(); + for(Scheme scheme : schemes) { + result.add(scheme.name); + } + return result; + } }