Archived
1
0

Regions and languagaes improved. Video cards duration display fixed. Added settings updating system

Related Work Items: #236
This commit is contained in:
Michael Gordeev
2018-12-31 00:52:16 +03:00
parent ead4f76ded
commit 7f4eaa0c7a
8 changed files with 95 additions and 32 deletions
+21
View File
@@ -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;
+27 -9
View File
@@ -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) { }
}
+1 -4
View File
@@ -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;
}
+2 -4
View File
@@ -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))
+2 -2
View File
@@ -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
+1
View File
@@ -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"/>
+39 -11
View File
@@ -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)
+2 -2
View File
@@ -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;