using System.Globalization; using Windows.Storage; namespace FoxTube { public static class Settings { static readonly ApplicationDataContainer settings = ApplicationData.Current.RoamingSettings; public static string DesiredVideoQuality { get => (string)settings.Values["DesiredVideoQuality"] ?? "auto"; set => settings.Values["DesiredVideoQuality"] = value; } public static string RememberedQuality { get => (string)settings.Values["RememberedVideoQuality"] ?? "1080p"; set => settings.Values["RememberedVideoQuality"] = value; } public static bool VideoNotifications { get => (bool?)settings.Values["NewVideosNotificationsAll"] ?? true; set => settings.Values["NewVideosNotificationsAll"] = value; } public static bool DevNotifications { get => (bool?)settings.Values["DevelopersNewsNotifications"] ?? true; set => settings.Values["DevelopersNewsNotifications"] = value; } public static bool CheckConnection { get => (bool?)settings.Values["WarnIfOnMeteredConnection"] ?? false; set => settings.Values["WarnIfOnMeteredConnection"] = value; } public static bool Autoplay { get => (bool?)settings.Values["VideoAutoplay"] ?? true; set => settings.Values["VideoAutoplay"] = value; } public static double Volume { get => (double?)settings.Values["Volume"] ?? 1; set => settings.Values["Volume"] = value; } public static string Language { get => (string)settings.Values["InterfaceLanguage"] ?? GetDefaultLanguage(); set => settings.Values["InterfaceLanguage"] = value; } public static string RelevanceLanguage { get => (string)settings.Values["DesiredContentLanguage"] ?? CultureInfo.InstalledUICulture.TwoLetterISOLanguageName; set => settings.Values["DesiredContentLanguage"] = value; } public static string Region { get => (string)settings.Values["Region"] ?? CultureInfo.InstalledUICulture.Name.Split('-')[1]; set => settings.Values["Region"] = value; } public static int SafeSearch { get => (int?)settings.Values["SafeSearch"] ?? 0; //Moderate set => settings.Values["SafeSearch"] = value; } public static bool BlockExplicitContent { get => (bool?)settings.Values["BlockExplicitContent"] ?? true; set => settings.Values["BlockExplicitContent"] = value; } public static bool HasAccount { get => (bool?)settings.Values["HasAccount"] ?? false; set => settings.Values["HasAccount"] = value; } public static int Theme { get => (int?)settings.Values["PreferedUITheme"] ?? 2; //System set => settings.Values["PreferedUITheme"] = value; } public static bool PromptReview { get => (bool?)settings.Values["PromptReview"] ?? Metrics.Uptime.TotalHours > 24; set => settings.Values["PromptReview"] = value; } public static bool PromptFeedback { get => (bool?)settings.Values["PromptFeedback"] ?? Metrics.Uptime.TotalHours > 12; set => settings.Values["PromptFeedback"] = value; } public static bool ProcessClipboard { get => (bool?)settings.Values["ProcessClipboardEntry"] ?? true; set => settings.Values["ProcessClipboardEntry"] = value; } public static string LastReviewedVersion { get { if (settings.Values["LastReviewedVersion"] == null) settings.Values["LastReviewedVersion"] = Metrics.CurrentVersion; return (string)settings.Values["LastReviewedVersion"]; } set => settings.Values["LastReviewedVersion"] = value; } 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"; } public static void ResetSettings() => settings.Values.Clear(); } }