119 lines
4.5 KiB
C#
119 lines
4.5 KiB
C#
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();
|
|
}
|
|
}
|