using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using SharedSettingsAbstraction.Extensions; namespace SharedSettingsAbstraction { /// /// Key Value Pair /// /// Value Type public class SettingsKey { public string key { get; private set; } private T value; private string _preferenceName; private T _defaultValue; /// /// Abstraction around shared preferences /// /// Name the key /// Name the preference (should be consistant accross all settings) /// Give a default value public SettingsKey(string _key, string preferenceName, T defaultValue) { key = _key; _preferenceName = preferenceName; _defaultValue = defaultValue; } /// /// Gets the setting /// /// context /// public T GetSetting(Context con ) { var shared = con.GetSharedPreferences(_preferenceName, FileCreationMode.WorldReadable); value = (T)shared.All.Where(x => x.Key == key).FirstOrDefault().Value; if (value == null) SetSetting(con, _defaultValue); return value; } /// /// Set the setting with a new setting /// /// /// /// public SettingsKey SetSetting(Context con, T val) { var shared = con.GetSharedPreferences(_preferenceName, FileCreationMode.WorldWriteable); var edit = shared.Edit(); edit.SaveObject(key, val); edit.Commit(); value = val; return this; } } }