Regions and languagaes improved. Video cards duration display fixed. Added settings updating system
Related Work Items: #236
This commit is contained in:
@@ -7,6 +7,7 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
|
using System.Xml;
|
||||||
using Windows.ApplicationModel.Core;
|
using Windows.ApplicationModel.Core;
|
||||||
using Windows.ApplicationModel.DataTransfer;
|
using Windows.ApplicationModel.DataTransfer;
|
||||||
using Windows.Storage;
|
using Windows.Storage;
|
||||||
@@ -68,6 +69,26 @@ namespace FoxTube
|
|||||||
return arr[arr.Length - 1];
|
return arr[arr.Length - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static TimeSpan GetDuration(this string str)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return XmlConvert.ToTimeSpan(str);
|
||||||
|
}
|
||||||
|
catch (FormatException)
|
||||||
|
{
|
||||||
|
TimeSpan time = XmlConvert.ToTimeSpan("PT" + str.Split('T')[1]);
|
||||||
|
TimeSpan date = TimeSpan.FromDays(int.Parse(str.Split('W')[0].Replace("P", "")) * 7);
|
||||||
|
date.Add(time);
|
||||||
|
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return TimeSpan.FromMilliseconds(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static string GetAgo(DateTime dateTime)
|
public static string GetAgo(DateTime dateTime)
|
||||||
{
|
{
|
||||||
TimeSpan span = DateTime.Now - dateTime;
|
TimeSpan span = DateTime.Now - dateTime;
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ namespace FoxTube
|
|||||||
SaveData();
|
SaveData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static string Region
|
public static string RelevanceLanguage
|
||||||
{
|
{
|
||||||
get { return (string)settings[8]; }
|
get { return (string)settings[8]; }
|
||||||
set
|
set
|
||||||
@@ -95,17 +95,16 @@ namespace FoxTube
|
|||||||
SaveData();
|
SaveData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static int SafeSearch
|
public static string Region
|
||||||
{
|
{
|
||||||
get { return Convert.ToInt32(settings[9]); }
|
get { return (string)settings[9]; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
settings[9] = value;
|
settings[9] = value;
|
||||||
SaveData();
|
SaveData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public static int SafeSearch
|
||||||
public static int Theme
|
|
||||||
{
|
{
|
||||||
get { return Convert.ToInt32(settings[10]); }
|
get { return Convert.ToInt32(settings[10]); }
|
||||||
set
|
set
|
||||||
@@ -114,15 +113,25 @@ namespace FoxTube
|
|||||||
SaveData();
|
SaveData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static bool HasAccount
|
|
||||||
|
public static int Theme
|
||||||
{
|
{
|
||||||
get { return (bool)settings[11]; }
|
get { return Convert.ToInt32(settings[11]); }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
settings[11] = value;
|
settings[11] = value;
|
||||||
SaveData();
|
SaveData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public static bool HasAccount
|
||||||
|
{
|
||||||
|
get { return (bool)settings[12]; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
settings[12] = value;
|
||||||
|
SaveData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static string Version
|
public static string Version
|
||||||
{
|
{
|
||||||
@@ -175,7 +184,8 @@ namespace FoxTube
|
|||||||
100,
|
100,
|
||||||
|
|
||||||
(new[] { "ua", "ru", "by", "kz", "kg", "md", "lv", "ee" }).Contains(CultureInfo.InstalledUICulture.TwoLetterISOLanguageName) ? "ru-RU" : "en-US",
|
(new[] { "ua", "ru", "by", "kz", "kg", "md", "lv", "ee" }).Contains(CultureInfo.InstalledUICulture.TwoLetterISOLanguageName) ? "ru-RU" : "en-US",
|
||||||
CultureInfo.CurrentCulture.Name,
|
(new[] { "ua", "ru", "by", "kz", "kg", "md", "lv", "ee" }).Contains(CultureInfo.InstalledUICulture.TwoLetterISOLanguageName) ? "ru" : "en",
|
||||||
|
(new[] { "ua", "ru", "by", "kz", "kg", "md", "lv", "ee" }).Contains(CultureInfo.InstalledUICulture.TwoLetterISOLanguageName) ? "ru" : "US",
|
||||||
0,
|
0,
|
||||||
|
|
||||||
2,
|
2,
|
||||||
@@ -186,7 +196,15 @@ namespace FoxTube
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
settings = JsonConvert.DeserializeObject<object[]>(storage.Values["settings"] as string);
|
object[] saved = JsonConvert.DeserializeObject<object[]>(storage.Values["settings"] as string);
|
||||||
|
if (settings.Length > saved.Length)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < saved.Length; i++)
|
||||||
|
settings[i] = saved[i];
|
||||||
|
|
||||||
|
SaveData();
|
||||||
|
}
|
||||||
|
else settings = saved;
|
||||||
}
|
}
|
||||||
catch (ArgumentNullException) { }
|
catch (ArgumentNullException) { }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,10 +65,7 @@ namespace FoxTube.Controls
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
views.Text = $"{item.Statistics.ViewCount:0,0} views";
|
views.Text = $"{item.Statistics.ViewCount:0,0} views";
|
||||||
string dur = string.Empty;
|
info.Text = $"{item.ContentDetails.Duration.GetDuration()} | {Methods.GetAgo(item.Snippet.PublishedAt.Value)}";
|
||||||
try { XmlConvert.ToTimeSpan(item.ContentDetails.Duration); }
|
|
||||||
catch { }
|
|
||||||
info.Text = $"{dur} | {Methods.GetAgo(item.Snippet.PublishedAt.Value)}";
|
|
||||||
embed = false;
|
embed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,12 +25,10 @@ namespace FoxTube
|
|||||||
|
|
||||||
string trendToken;
|
string trendToken;
|
||||||
Dictionary<string, string> subsTokens = new Dictionary<string, string>();
|
Dictionary<string, string> subsTokens = new Dictionary<string, string>();
|
||||||
string reg;
|
|
||||||
|
|
||||||
public Home()
|
public Home()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
reg = CultureInfo.GetCultures(CultureTypes.AllCultures).Find(i => i.IetfLanguageTag == SettingsStorage.Region).IetfLanguageTag.Remove(0, 3);
|
|
||||||
|
|
||||||
trendGrid = ((trending.Content as ScrollViewer).Content as StackPanel).Children[0] as VideoGrid;
|
trendGrid = ((trending.Content as ScrollViewer).Content as StackPanel).Children[0] as VideoGrid;
|
||||||
trendMore = ((trending.Content as ScrollViewer).Content as StackPanel).Children[1] as ShowMore;
|
trendMore = ((trending.Content as ScrollViewer).Content as StackPanel).Children[1] as ShowMore;
|
||||||
@@ -54,7 +52,7 @@ namespace FoxTube
|
|||||||
request.PageToken = trendToken;
|
request.PageToken = trendToken;
|
||||||
|
|
||||||
request.Chart = VideosResource.ListRequest.ChartEnum.MostPopular;
|
request.Chart = VideosResource.ListRequest.ChartEnum.MostPopular;
|
||||||
request.RegionCode = reg;
|
request.RegionCode = SettingsStorage.Region;
|
||||||
VideoListResponse response = await request.ExecuteAsync();
|
VideoListResponse response = await request.ExecuteAsync();
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(response.NextPageToken))
|
if (!string.IsNullOrWhiteSpace(response.NextPageToken))
|
||||||
@@ -108,7 +106,7 @@ namespace FoxTube
|
|||||||
request.MaxResults = 48;
|
request.MaxResults = 48;
|
||||||
|
|
||||||
request.Chart = VideosResource.ListRequest.ChartEnum.MostPopular;
|
request.Chart = VideosResource.ListRequest.ChartEnum.MostPopular;
|
||||||
request.RegionCode = reg;
|
request.RegionCode = SettingsStorage.Region;
|
||||||
VideoListResponse response = await request.ExecuteAsync();
|
VideoListResponse response = await request.ExecuteAsync();
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(response.NextPageToken))
|
if (!string.IsNullOrWhiteSpace(response.NextPageToken))
|
||||||
|
|||||||
@@ -97,8 +97,8 @@ namespace FoxTube
|
|||||||
request.Q = arg.Term;
|
request.Q = arg.Term;
|
||||||
request.SafeSearch = (SearchResource.ListRequest.SafeSearchEnum)(int)settings.Values["safeSearch"];
|
request.SafeSearch = (SearchResource.ListRequest.SafeSearchEnum)(int)settings.Values["safeSearch"];
|
||||||
|
|
||||||
request.RegionCode = CultureInfo.GetCultures(CultureTypes.AllCultures).Find(i => i.IetfLanguageTag == SettingsStorage.Region).IetfLanguageTag.Remove(0, 3);
|
request.RegionCode = SettingsStorage.Region;
|
||||||
request.RelevanceLanguage = CultureInfo.GetCultures(CultureTypes.AllCultures).Find(i => i.IetfLanguageTag == SettingsStorage.Region).TwoLetterISOLanguageName;
|
request.RelevanceLanguage = SettingsStorage.RelevanceLanguage;
|
||||||
|
|
||||||
request.MaxResults = 48;
|
request.MaxResults = 48;
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
<TextBlock x:Uid="/General/restart" Foreground="Red" Text="Reopen the app to apply settings"/>
|
<TextBlock x:Uid="/General/restart" Foreground="Red" Text="Reopen the app to apply settings"/>
|
||||||
<Button x:Uid="/General/closeApp" Content="Close app" Background="Red" Margin="5" Click="Button_Click"/>
|
<Button x:Uid="/General/closeApp" Content="Close app" Background="Red" Margin="5" Click="Button_Click"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
<ComboBox Header="Search relevance language" MinWidth="250" Name="relLanguage" SelectionChanged="RelLanguage_SelectionChanged"/>
|
||||||
<ComboBox x:Uid="/General/region" Header="Region" MinWidth="250" Name="region" SelectionChanged="region_SelectionChanged"/>
|
<ComboBox x:Uid="/General/region" Header="Region" MinWidth="250" Name="region" SelectionChanged="region_SelectionChanged"/>
|
||||||
<ComboBox x:Uid="/General/safeSearch" Header="SafeSearch" MinWidth="250" Name="safeSearch" SelectionChanged="safeSearch_SelectionChanged">
|
<ComboBox x:Uid="/General/safeSearch" Header="SafeSearch" MinWidth="250" Name="safeSearch" SelectionChanged="safeSearch_SelectionChanged">
|
||||||
<ComboBoxItem x:Uid="/General/moderate" Content="Moderate"/>
|
<ComboBoxItem x:Uid="/General/moderate" Content="Moderate"/>
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ using Windows.ApplicationModel.Core;
|
|||||||
using Windows.UI;
|
using Windows.UI;
|
||||||
using Windows.UI.Xaml;
|
using Windows.UI.Xaml;
|
||||||
using Windows.UI.Xaml.Controls;
|
using Windows.UI.Xaml.Controls;
|
||||||
|
using Google.Apis.YouTube.v3;
|
||||||
|
using Google.Apis.YouTube.v3.Data;
|
||||||
|
|
||||||
namespace FoxTube.Pages.SettingsPages
|
namespace FoxTube.Pages.SettingsPages
|
||||||
{
|
{
|
||||||
@@ -17,16 +19,6 @@ namespace FoxTube.Pages.SettingsPages
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
language.SelectedItem = language.Items.Find(i => ((ComboBoxItem)i).Tag.ToString() == SettingsStorage.Language);
|
language.SelectedItem = language.Items.Find(i => ((ComboBoxItem)i).Tag.ToString() == SettingsStorage.Language);
|
||||||
CultureInfo.GetCultures(CultureTypes.AllCultures).FindAll(i => !i.IsNeutralCulture).ForEach(i =>
|
|
||||||
{
|
|
||||||
region.Items.Add(new ComboBoxItem
|
|
||||||
{
|
|
||||||
Content = i.DisplayName,
|
|
||||||
Tag = i.IetfLanguageTag
|
|
||||||
});
|
|
||||||
if (i.IetfLanguageTag == SettingsStorage.Region)
|
|
||||||
region.SelectedItem = region.Items.Last();
|
|
||||||
});
|
|
||||||
safeSearch.SelectedIndex = SettingsStorage.SafeSearch;
|
safeSearch.SelectedIndex = SettingsStorage.SafeSearch;
|
||||||
|
|
||||||
quality.SelectedItem = quality.Items.ToList().Find(i => ((ComboBoxItem)i).Tag.ToString() == SettingsStorage.VideoQuality);
|
quality.SelectedItem = quality.Items.ToList().Find(i => ((ComboBoxItem)i).Tag.ToString() == SettingsStorage.VideoQuality);
|
||||||
@@ -48,6 +40,37 @@ namespace FoxTube.Pages.SettingsPages
|
|||||||
system.IsChecked = true;
|
system.IsChecked = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InitializeRegions();
|
||||||
|
}
|
||||||
|
|
||||||
|
async void InitializeRegions()
|
||||||
|
{
|
||||||
|
I18nRegionsResource.ListRequest regRequest = SecretsVault.Service.I18nRegions.List("snippet");
|
||||||
|
I18nRegionListResponse regResponse = await regRequest.ExecuteAsync();
|
||||||
|
foreach(I18nRegion i in regResponse.Items)
|
||||||
|
{
|
||||||
|
region.Items.Add(new ComboBoxItem
|
||||||
|
{
|
||||||
|
Content = i.Snippet.Name,
|
||||||
|
Tag = i.Snippet.Gl
|
||||||
|
});
|
||||||
|
if (SettingsStorage.Region == i.Snippet.Gl)
|
||||||
|
region.SelectedItem = region.Items.Last();
|
||||||
|
}
|
||||||
|
|
||||||
|
I18nLanguagesResource.ListRequest langRequest = SecretsVault.Service.I18nLanguages.List("snippet");
|
||||||
|
I18nLanguageListResponse langResponse = await langRequest.ExecuteAsync();
|
||||||
|
foreach(I18nLanguage i in langResponse.Items)
|
||||||
|
{
|
||||||
|
relLanguage.Items.Add(new ComboBoxItem
|
||||||
|
{
|
||||||
|
Content = i.Snippet.Name,
|
||||||
|
Tag = i.Snippet.Hl
|
||||||
|
});
|
||||||
|
if (SettingsStorage.RelevanceLanguage == i.Snippet.Hl)
|
||||||
|
relLanguage.SelectedItem = relLanguage.Items.Last();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void language_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
private void language_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
@@ -79,9 +102,14 @@ namespace FoxTube.Pages.SettingsPages
|
|||||||
SettingsStorage.VideoNotifications = newVideo.IsOn;
|
SettingsStorage.VideoNotifications = newVideo.IsOn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void RelLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
SettingsStorage.RelevanceLanguage = ((ComboBoxItem)relLanguage.SelectedItem).Tag.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private void region_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
private void region_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
{
|
{
|
||||||
SettingsStorage.Region = CultureInfo.GetCultures(CultureTypes.AllCultures)[region.SelectedIndex].Name;
|
SettingsStorage.Region = ((ComboBoxItem)region.SelectedItem).Tag.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void safeSearch_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
private void safeSearch_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
|
|||||||
@@ -332,8 +332,8 @@ namespace FoxTube.Pages
|
|||||||
async void LoadRelatedVideos()
|
async void LoadRelatedVideos()
|
||||||
{
|
{
|
||||||
SearchResource.ListRequest request = SecretsVault.Service.Search.List("snippet");
|
SearchResource.ListRequest request = SecretsVault.Service.Search.List("snippet");
|
||||||
request.RegionCode = CultureInfo.GetCultures(CultureTypes.AllCultures).Find(i => i.IetfLanguageTag == SettingsStorage.Region).IetfLanguageTag.Remove(0, 3);
|
request.RegionCode = SettingsStorage.Region;
|
||||||
request.RelevanceLanguage = CultureInfo.GetCultures(CultureTypes.AllCultures).Find(i => i.IetfLanguageTag == SettingsStorage.Region).TwoLetterISOLanguageName;
|
request.RelevanceLanguage = SettingsStorage.RelevanceLanguage;
|
||||||
request.RelatedToVideoId = videoId;
|
request.RelatedToVideoId = videoId;
|
||||||
request.SafeSearch = (SearchResource.ListRequest.SafeSearchEnum)(int)settings.Values["safeSearch"];
|
request.SafeSearch = (SearchResource.ListRequest.SafeSearchEnum)(int)settings.Values["safeSearch"];
|
||||||
request.MaxResults = 20;
|
request.MaxResults = 20;
|
||||||
|
|||||||
Reference in New Issue
Block a user