Refactored core
UI navigation framework Related Work Items: #408, #414, #416
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
using Windows.Storage;
|
||||
using System.Globalization;
|
||||
using System.Diagnostics;
|
||||
using Windows.UI.Xaml;
|
||||
|
||||
namespace FoxTube.Services
|
||||
{
|
||||
public class SettingsService
|
||||
{
|
||||
private static readonly ApplicationDataContainer storage = ApplicationData.Current.RoamingSettings;
|
||||
|
||||
public static void ResetSettings() =>
|
||||
storage.Values.Clear();
|
||||
|
||||
public static ElementTheme Theme
|
||||
{
|
||||
get => (ElementTheme)GetValue(ElementTheme.Default);
|
||||
set => SetValue((int)value);
|
||||
}
|
||||
|
||||
public static string RelevanceLanguage
|
||||
{
|
||||
get => GetValue(GetDefaultLanguage());
|
||||
set => SetValue(value);
|
||||
}
|
||||
|
||||
public static bool AllowAnalytics
|
||||
{
|
||||
get => GetValue(true);
|
||||
set => SetValue(value);
|
||||
}
|
||||
|
||||
public static bool AskEveryDownload
|
||||
{
|
||||
get => GetValue(true);
|
||||
set => SetValue(value);
|
||||
}
|
||||
|
||||
public static string DefaultDownloadsFolder
|
||||
{
|
||||
get => GetValue(null);
|
||||
set => SetValue(value);
|
||||
}
|
||||
|
||||
#region Service methods
|
||||
private static string GetDefaultLanguage()
|
||||
{
|
||||
if (CultureInfo.InstalledUICulture.TwoLetterISOLanguageName.Belongs("ua", "ru", "by", "kz", "kg", "md", "lv", "ee")) // Languages for Russian-speaking countries
|
||||
return "ru-RU";
|
||||
else
|
||||
return "en-US";
|
||||
}
|
||||
|
||||
private static dynamic GetValue(object defaultValue)
|
||||
{
|
||||
string propName = (new StackTrace()).GetFrame(1).GetMethod().Name.Substring(4);
|
||||
return storage.Values[$"Settings.{propName}"] ?? defaultValue;
|
||||
}
|
||||
|
||||
private static void SetValue(object value)
|
||||
{
|
||||
string propName = (new StackTrace()).GetFrame(1).GetMethod().Name.Substring(4);
|
||||
storage.Values[$"Settings.{propName}"] = value;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user