From 750a78ccd8f1ef0bc6f204d7f342d939149d2ec9 Mon Sep 17 00:00:00 2001 From: Michael Gordeev Date: Wed, 2 May 2018 22:01:32 +0300 Subject: [PATCH] Search system --- FoxTube/About.xaml | 8 +-- FoxTube/Assets/videoThumbSample.png | Bin 0 -> 8755 bytes FoxTube/ChannelCard.xaml | 36 ++++++++++ FoxTube/ChannelCard.xaml.cs | 49 ++++++++++++++ FoxTube/FoxTube.csproj | 36 ++++++++++ FoxTube/MainPage.xaml | 15 +++-- FoxTube/MainPage.xaml.cs | 63 ++++++++++++++++-- FoxTube/Search.xaml | 42 ++++++++++++ FoxTube/Search.xaml.cs | 99 ++++++++++++++++++++++++++++ FoxTube/Video.xaml | 23 +++++++ FoxTube/Video.xaml.cs | 30 +++++++++ FoxTube/VideoCard.xaml | 39 +++++++---- FoxTube/VideoCard.xaml.cs | 6 ++ FoxTube/VideoCardWide.xaml | 46 +++++++++++++ FoxTube/VideoCardWide.xaml.cs | 41 ++++++++++++ FoxTube/VideoGrid.xaml | 26 +++++++- FoxTube/VideoList.xaml | 17 +++++ FoxTube/VideoList.xaml.cs | 30 +++++++++ Src/videoThumbSample.png | Bin 0 -> 8755 bytes 19 files changed, 576 insertions(+), 30 deletions(-) create mode 100644 FoxTube/Assets/videoThumbSample.png create mode 100644 FoxTube/ChannelCard.xaml create mode 100644 FoxTube/ChannelCard.xaml.cs create mode 100644 FoxTube/Search.xaml create mode 100644 FoxTube/Search.xaml.cs create mode 100644 FoxTube/Video.xaml create mode 100644 FoxTube/Video.xaml.cs create mode 100644 FoxTube/VideoCardWide.xaml create mode 100644 FoxTube/VideoCardWide.xaml.cs create mode 100644 FoxTube/VideoList.xaml create mode 100644 FoxTube/VideoList.xaml.cs create mode 100644 Src/videoThumbSample.png diff --git a/FoxTube/About.xaml b/FoxTube/About.xaml index 587c430..13be59f 100644 --- a/FoxTube/About.xaml +++ b/FoxTube/About.xaml @@ -23,7 +23,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -51,9 +51,9 @@ - + - + diff --git a/FoxTube/Assets/videoThumbSample.png b/FoxTube/Assets/videoThumbSample.png new file mode 100644 index 0000000000000000000000000000000000000000..28c0f63ba63030139c85b608ff94a61b82d71249 GIT binary patch literal 8755 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 literal 0 HcmV?d00001 diff --git a/FoxTube/ChannelCard.xaml b/FoxTube/ChannelCard.xaml new file mode 100644 index 0000000..8c38112 --- /dev/null +++ b/FoxTube/ChannelCard.xaml @@ -0,0 +1,36 @@ + + + + diff --git a/FoxTube/ChannelCard.xaml.cs b/FoxTube/ChannelCard.xaml.cs new file mode 100644 index 0000000..6a44152 --- /dev/null +++ b/FoxTube/ChannelCard.xaml.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Media.Imaging; +using Windows.UI.Xaml.Navigation; + +// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236 + +namespace FoxTube +{ + public sealed partial class ChannelCard : UserControl + { + string channelId; + public ChannelCard() + { + this.InitializeComponent(); + } + + public void AddInfo(string name, int videos, string avatarUrl, string channelUrl, int subs, Visibility live) + { + channelName.Text = name; + videoCount.Text = string.Format("{0} videos", videos); + + avatar.ProfilePicture = new BitmapImage(new Uri(avatarUrl)); + + subscribers.Text = string.Format("{0} subscribers", subs); + + channelId = channelUrl; + liveTag.Visibility = live; + } + + private void Button_Click(object sender, RoutedEventArgs e) + { + /*Debug.WriteLine(channelId); + Process.Start(channelId);*/ + } + } +} diff --git a/FoxTube/FoxTube.csproj b/FoxTube/FoxTube.csproj index 121f385..c0dd4e1 100644 --- a/FoxTube/FoxTube.csproj +++ b/FoxTube/FoxTube.csproj @@ -101,6 +101,9 @@ Channel.xaml + + ChannelCard.xaml + ChannelVideos.xaml @@ -121,18 +124,30 @@ + + Search.xaml + Settings.xaml Translate.xaml + + Video.xaml + VideoCard.xaml + + VideoCardWide.xaml + VideoGrid.xaml + + VideoList.xaml + @@ -182,6 +197,7 @@ + @@ -208,6 +224,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -232,6 +252,10 @@ MSBuild:Compile Designer + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -240,14 +264,26 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile + + Designer + MSBuild:Compile + diff --git a/FoxTube/MainPage.xaml b/FoxTube/MainPage.xaml index c10dced..b5d8b8e 100644 --- a/FoxTube/MainPage.xaml +++ b/FoxTube/MainPage.xaml @@ -101,18 +101,18 @@ - - + diff --git a/FoxTube/VideoCardWide.xaml.cs b/FoxTube/VideoCardWide.xaml.cs new file mode 100644 index 0000000..20ae434 --- /dev/null +++ b/FoxTube/VideoCardWide.xaml.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Media.Imaging; +using Windows.UI.Xaml.Navigation; + +// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236 + +namespace FoxTube +{ + public sealed partial class VideoCardWide : UserControl + { + public VideoCardWide() + { + this.InitializeComponent(); + } + public void AddInfo(string name, string description, string thumbUrl, string avatarUrl, string channelUrl, string channel, string subs, Visibility live) + { + title.Text = name; + info.Text = description; + + thumbnail.Source = new BitmapImage(new Uri(thumbUrl)); + //avatar.ProfilePicture = new BitmapImage(new Uri(avatarUrl)); + + channelName.Text = channel; + channelSubs.Text = string.Format("{0} subscribers", subs); + channelLink.NavigateUri = new Uri(channelUrl); + liveTag.Visibility = live; + } + } +} diff --git a/FoxTube/VideoGrid.xaml b/FoxTube/VideoGrid.xaml index 34ad9bc..e7bfaf9 100644 --- a/FoxTube/VideoGrid.xaml +++ b/FoxTube/VideoGrid.xaml @@ -13,8 +13,30 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FoxTube/VideoList.xaml b/FoxTube/VideoList.xaml new file mode 100644 index 0000000..7cf9438 --- /dev/null +++ b/FoxTube/VideoList.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/FoxTube/VideoList.xaml.cs b/FoxTube/VideoList.xaml.cs new file mode 100644 index 0000000..62cee54 --- /dev/null +++ b/FoxTube/VideoList.xaml.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238 + +namespace FoxTube +{ + /// + /// An empty page that can be used on its own or navigated to within a Frame. + /// + public sealed partial class VideoList : Page + { + public VideoList() + { + this.InitializeComponent(); + } + } +} diff --git a/Src/videoThumbSample.png b/Src/videoThumbSample.png new file mode 100644 index 0000000000000000000000000000000000000000..28c0f63ba63030139c85b608ff94a61b82d71249 GIT binary patch literal 8755 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 literal 0 HcmV?d00001