package com.fsck.k9.preferences; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.TreeMap; import android.content.SharedPreferences; import com.fsck.k9.mail.Folder.FolderClass; import com.fsck.k9.preferences.Settings.*; public class FolderSettings { public static final Map> SETTINGS; public static final Map UPGRADERS; static { Map> s = new LinkedHashMap>(); /** * When adding new settings here, be sure to increment {@link Settings.VERSION} * and use that for whatever you add here. */ s.put("displayMode", Settings.versions( new V(1, new EnumSetting(FolderClass.class, FolderClass.NO_CLASS)) )); s.put("syncMode", Settings.versions( new V(1, new EnumSetting(FolderClass.class, FolderClass.INHERITED)) )); s.put("pushMode", Settings.versions( new V(1, new EnumSetting(FolderClass.class, FolderClass.INHERITED)) )); s.put("inTopGroup", Settings.versions( new V(1, new BooleanSetting(false)) )); s.put("integrate", Settings.versions( new V(1, new BooleanSetting(false)) )); SETTINGS = Collections.unmodifiableMap(s); Map u = new HashMap(); UPGRADERS = Collections.unmodifiableMap(u); } public static Map validate(int version, Map importedSettings, boolean useDefaultValues) { return Settings.validate(version, SETTINGS, importedSettings, useDefaultValues); } public static Set upgrade(int version, Map validatedSettings) { return Settings.upgrade(version, UPGRADERS, SETTINGS, validatedSettings); } public static Map convert(Map settings) { return Settings.convert(settings, SETTINGS); } public static Map getFolderSettings(SharedPreferences storage, String uuid, String folderName) { Map result = new HashMap(); String prefix = uuid + "." + folderName + "."; for (String key : SETTINGS.keySet()) { String value = storage.getString(prefix + key, null); if (value != null) { result.put(key, value); } } return result; } }