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.Text.RegularExpressions;
|
||||
using System.Web;
|
||||
using System.Xml;
|
||||
using Windows.ApplicationModel.Core;
|
||||
using Windows.ApplicationModel.DataTransfer;
|
||||
using Windows.Storage;
|
||||
@@ -68,6 +69,26 @@ namespace FoxTube
|
||||
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)
|
||||
{
|
||||
TimeSpan span = DateTime.Now - dateTime;
|
||||
|
||||
@@ -86,7 +86,7 @@ namespace FoxTube
|
||||
SaveData();
|
||||
}
|
||||
}
|
||||
public static string Region
|
||||
public static string RelevanceLanguage
|
||||
{
|
||||
get { return (string)settings[8]; }
|
||||
set
|
||||
@@ -95,17 +95,16 @@ namespace FoxTube
|
||||
SaveData();
|
||||
}
|
||||
}
|
||||
public static int SafeSearch
|
||||
public static string Region
|
||||
{
|
||||
get { return Convert.ToInt32(settings[9]); }
|
||||
get { return (string)settings[9]; }
|
||||
set
|
||||
{
|
||||
settings[9] = value;
|
||||
SaveData();
|
||||
}
|
||||
}
|
||||
|
||||
public static int Theme
|
||||
public static int SafeSearch
|
||||
{
|
||||
get { return Convert.ToInt32(settings[10]); }
|
||||
set
|
||||
@@ -114,15 +113,25 @@ namespace FoxTube
|
||||
SaveData();
|
||||
}
|
||||
}
|
||||
public static bool HasAccount
|
||||
|
||||
public static int Theme
|
||||
{
|
||||
get { return (bool)settings[11]; }
|
||||
get { return Convert.ToInt32(settings[11]); }
|
||||
set
|
||||
{
|
||||
settings[11] = value;
|
||||
SaveData();
|
||||
}
|
||||
}
|
||||
public static bool HasAccount
|
||||
{
|
||||
get { return (bool)settings[12]; }
|
||||
set
|
||||
{
|
||||
settings[12] = value;
|
||||
SaveData();
|
||||
}
|
||||
}
|
||||
|
||||
public static string Version
|
||||
{
|
||||
@@ -175,7 +184,8 @@ namespace FoxTube
|
||||
100,
|
||||
|
||||
(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,
|
||||
|
||||
2,
|
||||
@@ -186,7 +196,15 @@ namespace FoxTube
|
||||
{
|
||||
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) { }
|
||||
}
|
||||
|
||||
@@ -65,10 +65,7 @@ namespace FoxTube.Controls
|
||||
else
|
||||
{
|
||||
views.Text = $"{item.Statistics.ViewCount:0,0} views";
|
||||
string dur = string.Empty;
|
||||
try { XmlConvert.ToTimeSpan(item.ContentDetails.Duration); }
|
||||
catch { }
|
||||
info.Text = $"{dur} | {Methods.GetAgo(item.Snippet.PublishedAt.Value)}";
|
||||
info.Text = $"{item.ContentDetails.Duration.GetDuration()} | {Methods.GetAgo(item.Snippet.PublishedAt.Value)}";
|
||||
embed = false;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,12 +25,10 @@ namespace FoxTube
|
||||
|
||||
string trendToken;
|
||||
Dictionary<string, string> subsTokens = new Dictionary<string, string>();
|
||||
string reg;
|
||||
|
||||
public Home()
|
||||
{
|
||||
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;
|
||||
trendMore = ((trending.Content as ScrollViewer).Content as StackPanel).Children[1] as ShowMore;
|
||||
@@ -54,7 +52,7 @@ namespace FoxTube
|
||||
request.PageToken = trendToken;
|
||||
|
||||
request.Chart = VideosResource.ListRequest.ChartEnum.MostPopular;
|
||||
request.RegionCode = reg;
|
||||
request.RegionCode = SettingsStorage.Region;
|
||||
VideoListResponse response = await request.ExecuteAsync();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(response.NextPageToken))
|
||||
@@ -108,7 +106,7 @@ namespace FoxTube
|
||||
request.MaxResults = 48;
|
||||
|
||||
request.Chart = VideosResource.ListRequest.ChartEnum.MostPopular;
|
||||
request.RegionCode = reg;
|
||||
request.RegionCode = SettingsStorage.Region;
|
||||
VideoListResponse response = await request.ExecuteAsync();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(response.NextPageToken))
|
||||
|
||||
@@ -97,8 +97,8 @@ namespace FoxTube
|
||||
request.Q = arg.Term;
|
||||
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.RelevanceLanguage = CultureInfo.GetCultures(CultureTypes.AllCultures).Find(i => i.IetfLanguageTag == SettingsStorage.Region).TwoLetterISOLanguageName;
|
||||
request.RegionCode = SettingsStorage.Region;
|
||||
request.RelevanceLanguage = SettingsStorage.RelevanceLanguage;
|
||||
|
||||
request.MaxResults = 48;
|
||||
try
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<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"/>
|
||||
</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/safeSearch" Header="SafeSearch" MinWidth="250" Name="safeSearch" SelectionChanged="safeSearch_SelectionChanged">
|
||||
<ComboBoxItem x:Uid="/General/moderate" Content="Moderate"/>
|
||||
|
||||
@@ -4,6 +4,8 @@ using Windows.ApplicationModel.Core;
|
||||
using Windows.UI;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
using Google.Apis.YouTube.v3;
|
||||
using Google.Apis.YouTube.v3.Data;
|
||||
|
||||
namespace FoxTube.Pages.SettingsPages
|
||||
{
|
||||
@@ -17,16 +19,6 @@ namespace FoxTube.Pages.SettingsPages
|
||||
InitializeComponent();
|
||||
|
||||
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;
|
||||
|
||||
quality.SelectedItem = quality.Items.ToList().Find(i => ((ComboBoxItem)i).Tag.ToString() == SettingsStorage.VideoQuality);
|
||||
@@ -48,6 +40,37 @@ namespace FoxTube.Pages.SettingsPages
|
||||
system.IsChecked = true;
|
||||
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)
|
||||
@@ -79,9 +102,14 @@ namespace FoxTube.Pages.SettingsPages
|
||||
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)
|
||||
{
|
||||
SettingsStorage.Region = CultureInfo.GetCultures(CultureTypes.AllCultures)[region.SelectedIndex].Name;
|
||||
SettingsStorage.Region = ((ComboBoxItem)region.SelectedItem).Tag.ToString();
|
||||
}
|
||||
|
||||
private void safeSearch_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
|
||||
@@ -332,8 +332,8 @@ namespace FoxTube.Pages
|
||||
async void LoadRelatedVideos()
|
||||
{
|
||||
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.RelevanceLanguage = CultureInfo.GetCultures(CultureTypes.AllCultures).Find(i => i.IetfLanguageTag == SettingsStorage.Region).TwoLetterISOLanguageName;
|
||||
request.RegionCode = SettingsStorage.Region;
|
||||
request.RelevanceLanguage = SettingsStorage.RelevanceLanguage;
|
||||
request.RelatedToVideoId = videoId;
|
||||
request.SafeSearch = (SearchResource.ListRequest.SafeSearchEnum)(int)settings.Values["safeSearch"];
|
||||
request.MaxResults = 20;
|
||||
|
||||
Reference in New Issue
Block a user