From 7a1f918df204d071a9217b29f469d449140c9508 Mon Sep 17 00:00:00 2001 From: Michael Gordeev Date: Sun, 23 Jun 2019 18:03:04 +0300 Subject: [PATCH] Added video categories link to video page and improved search to display video categories --- ...SearchPaameters.cs => SearchParameters.cs} | 21 ++++++++++---- FoxTube/FoxTube.csproj | 2 +- FoxTube/Pages/Search.xaml.cs | 11 ++++++-- FoxTube/Pages/VideoPage.xaml | 2 +- FoxTube/Pages/VideoPage.xaml.cs | 28 ++++++++++++++++++- FoxTube/Strings/en-US/Search.resw | 3 ++ FoxTube/Strings/en-US/VideoPage.resw | 3 ++ FoxTube/Strings/ru-RU/Search.resw | 3 ++ FoxTube/Strings/ru-RU/VideoPage.resw | 3 ++ 9 files changed, 66 insertions(+), 10 deletions(-) rename FoxTube/Classes/{SearchPaameters.cs => SearchParameters.cs} (90%) diff --git a/FoxTube/Classes/SearchPaameters.cs b/FoxTube/Classes/SearchParameters.cs similarity index 90% rename from FoxTube/Classes/SearchPaameters.cs rename to FoxTube/Classes/SearchParameters.cs index 17299bd..bd31364 100644 --- a/FoxTube/Classes/SearchPaameters.cs +++ b/FoxTube/Classes/SearchParameters.cs @@ -1,4 +1,5 @@ -using System; +using Google.Apis.YouTube.v3.Data; +using System; using System.Collections.Generic; using static Google.Apis.YouTube.v3.SearchResource.ListRequest; @@ -34,11 +35,11 @@ namespace FoxTube case Enumerations.ConversionType.Captions: if (Captions) return VideoCaptionEnum.ClosedCaption; - else return null; + else return VideoCaptionEnum.Any; case Enumerations.ConversionType.CreativeCommons: if (CreativeCommons) return VideoLicenseEnum.CreativeCommon; - else return null; + else return VideoLicenseEnum.Any; case Enumerations.ConversionType.Date: switch(Date) { @@ -61,7 +62,7 @@ namespace FoxTube case Enumerations.ConversionType.HD: if (HD) return VideoDefinitionEnum.High; - else return null; + else return VideoDefinitionEnum.Any; case Enumerations.ConversionType.LiveEvent: if (LiveEvent) return EventTypeEnum.Live; @@ -79,7 +80,7 @@ namespace FoxTube case Enumerations.ConversionType.ThreeD: if (Is3D) return VideoDimensionEnum.Value3d; - else return null; + else return VideoDimensionEnum.Any; case Enumerations.ConversionType.Type: switch(Type) { @@ -100,6 +101,7 @@ namespace FoxTube public string Term { get; private set; } public string Channel { get; private set; } + public VideoCategory Category { get; set; } public Filters Filter { get; private set; } = new Filters(); public SearchParameters(string term) @@ -107,6 +109,13 @@ namespace FoxTube Term = term; } + public SearchParameters(VideoCategory category) + { + Category = category; + Filter = new Filters(); + Filter.Type = Filters.Enumerations.Type.Video; + } + public SearchParameters(string term, Filters filters) { Term = term; @@ -119,6 +128,7 @@ namespace FoxTube Channel = channelId; } + public SearchParameters(string term, string channelId, Filters filters) { Term = term; @@ -130,6 +140,7 @@ namespace FoxTube { return $@"Term: {Term} Channel id: {Channel} +Category id: {Category} Filters: Order: {Filter.Order} Type: {Filter.Type} diff --git a/FoxTube/FoxTube.csproj b/FoxTube/FoxTube.csproj index 07e15a2..2207327 100644 --- a/FoxTube/FoxTube.csproj +++ b/FoxTube/FoxTube.csproj @@ -107,7 +107,7 @@ - + diff --git a/FoxTube/Pages/Search.xaml.cs b/FoxTube/Pages/Search.xaml.cs index 6f4dc51..2d91044 100644 --- a/FoxTube/Pages/Search.xaml.cs +++ b/FoxTube/Pages/Search.xaml.cs @@ -77,12 +77,20 @@ namespace FoxTube { Parameters = arg; request = SecretsVault.Service.Search.List("id,snippet"); + + searchTerm.Text = $"{resources.GetString("/Search/header")} '{Parameters.Term}'"; if (!string.IsNullOrWhiteSpace(arg.Channel)) { request.ChannelId = arg.Channel; (type.Items[2] as ComboBoxItem).Visibility = Visibility.Collapsed; (grid.Children[1] as CommandBar).Visibility = Visibility.Collapsed; } + else if (arg.Category != null) + { + (filters.Children[0] as GridView).Items.Remove(type); + searchTerm.Text = $"{resources.GetString("/Search/category")} '{arg.Category.Snippet.Title}'"; + request.VideoCategoryId = arg.Category.Id; + } request.Q = arg.Term; request.SafeSearch = (SearchResource.ListRequest.SafeSearchEnum)SettingsStorage.SafeSearch; @@ -101,7 +109,7 @@ namespace FoxTube request.VideoDefinition = (SearchResource.ListRequest.VideoDefinitionEnum)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.HD); request.VideoDimension = (SearchResource.ListRequest.VideoDimensionEnum)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.ThreeD); request.VideoCaption = (SearchResource.ListRequest.VideoCaptionEnum)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.Captions); - request.EventType = (SearchResource.ListRequest.EventTypeEnum)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.LiveEvent); + request.EventType = (SearchResource.ListRequest.EventTypeEnum?)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.LiveEvent); request.VideoLicense = (SearchResource.ListRequest.VideoLicenseEnum)arg.Filter.GetParameter(SearchParameters.Filters.Enumerations.ConversionType.CreativeCommons); } @@ -120,7 +128,6 @@ namespace FoxTube features.SelectedItems.Add(features.Items[4]); SearchListResponse response = await request.ExecuteAsync(); - searchTerm.Text = $"{resources.GetString("/Search/header")} '{Parameters.Term}'"; resultsCount.Text = $"{resources.GetString("/Search/found")}: {SetResults(response.PageInfo.TotalResults)} {resources.GetString("/Search/items")}"; if (!string.IsNullOrWhiteSpace(response.NextPageToken)) diff --git a/FoxTube/Pages/VideoPage.xaml b/FoxTube/Pages/VideoPage.xaml index c889205..7a4bafc 100644 --- a/FoxTube/Pages/VideoPage.xaml +++ b/FoxTube/Pages/VideoPage.xaml @@ -66,7 +66,7 @@