From 031d9ab36820dff98abedde1cd53ba57ec081a37 Mon Sep 17 00:00:00 2001 From: Michael Gordeev Date: Sat, 19 May 2018 23:37:42 +0300 Subject: [PATCH] Adaptive video card grid --- FoxTube/About.xaml | 20 +++---- FoxTube/Channel.xaml | 11 +--- FoxTube/MainPage.xaml | 3 +- FoxTube/MainPage.xaml.cs | 51 ++++++++++++++++++ FoxTube/VideoCard.xaml | 4 +- FoxTube/VideoGrid.xaml | 79 ++++++++++++++++------------ FoxTube/VideoGrid.xaml.cs | 108 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 217 insertions(+), 59 deletions(-) diff --git a/FoxTube/About.xaml b/FoxTube/About.xaml index 13be59f..027b245 100644 --- a/FoxTube/About.xaml +++ b/FoxTube/About.xaml @@ -23,34 +23,34 @@ - + - + - + - + - + - + - - - - + + + + diff --git a/FoxTube/Channel.xaml b/FoxTube/Channel.xaml index 06d8ec5..8f2aab1 100644 --- a/FoxTube/Channel.xaml +++ b/FoxTube/Channel.xaml @@ -59,16 +59,7 @@ - - - - - - - - - - + diff --git a/FoxTube/MainPage.xaml b/FoxTube/MainPage.xaml index 02212a4..89c6458 100644 --- a/FoxTube/MainPage.xaml +++ b/FoxTube/MainPage.xaml @@ -5,7 +5,8 @@ xmlns:local="using:FoxTube" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - mc:Ignorable="d"> + mc:Ignorable="d" + SizeChanged="Page_SizeChanged"> diff --git a/FoxTube/MainPage.xaml.cs b/FoxTube/MainPage.xaml.cs index 00f6e08..48fa88a 100644 --- a/FoxTube/MainPage.xaml.cs +++ b/FoxTube/MainPage.xaml.cs @@ -38,10 +38,17 @@ namespace FoxTube /// /// An empty page that can be used on its own or navigated to within a Frame. /// + + public enum RightPaneState { Full, Collapsed, Hidden } + public sealed partial class MainPage : Page { private bool loggedIn = false; UserCredential credential; + + RightPaneState paneState = RightPaneState.Full; + bool isForcedCollapsed = false; + public bool Logged { get @@ -231,6 +238,7 @@ namespace FoxTube content.Navigate(typeof(Home)); headerText.Text = "Home"; menu.DisplayMode = SplitViewDisplayMode.CompactInline; + isForcedCollapsed = false; menu.IsPaneOpen = true; } else if (topHamburger.SelectedIndex == 1) @@ -239,6 +247,7 @@ namespace FoxTube headerText.Text = "Video"; menu.DisplayMode = SplitViewDisplayMode.CompactOverlay; menu.IsPaneOpen = false; + isForcedCollapsed = true; } else if (bottomHaburger.SelectedIndex == 4) { @@ -246,6 +255,7 @@ namespace FoxTube headerText.Text = "Settings"; menu.DisplayMode = SplitViewDisplayMode.CompactOverlay; menu.IsPaneOpen = false; + isForcedCollapsed = true; } else if (bottomHaburger.SelectedIndex == 1) { @@ -253,6 +263,7 @@ namespace FoxTube headerText.Text = "Channel overview"; menu.DisplayMode = SplitViewDisplayMode.CompactOverlay; menu.IsPaneOpen = false; + isForcedCollapsed = true; } else if (bottomHaburger.SelectedIndex == 3) { @@ -571,5 +582,45 @@ namespace FoxTube Channel page = content.Content as Channel; page.Initialize(id); } + + private void Page_SizeChanged(object sender, SizeChangedEventArgs e) + { + if(isForcedCollapsed) + { + if (e.NewSize.Width >= 600 && paneState != RightPaneState.Collapsed) + { + menu.DisplayMode = SplitViewDisplayMode.CompactOverlay; + menu.IsPaneOpen = false; + paneState = RightPaneState.Collapsed; + } + else if (e.NewSize.Width < 600 && paneState != RightPaneState.Hidden) + { + menu.DisplayMode = SplitViewDisplayMode.Overlay; + menu.IsPaneOpen = false; + paneState = RightPaneState.Hidden; + } + } + else + { + if (e.NewSize.Width >= 1000 && paneState != RightPaneState.Full) + { + menu.DisplayMode = SplitViewDisplayMode.CompactInline; + menu.IsPaneOpen = true; + paneState = RightPaneState.Full; + } + else if(e.NewSize.Width >= 600 && e.NewSize.Width < 1000 && paneState != RightPaneState.Collapsed) + { + menu.DisplayMode = SplitViewDisplayMode.CompactOverlay; + menu.IsPaneOpen = false; + paneState = RightPaneState.Collapsed; + } + else if(e.NewSize.Width < 600 && paneState != RightPaneState.Hidden) + { + menu.DisplayMode = SplitViewDisplayMode.Overlay; + menu.IsPaneOpen = false; + paneState = RightPaneState.Hidden; + } + } + } } } diff --git a/FoxTube/VideoCard.xaml b/FoxTube/VideoCard.xaml index a80d955..8fa9b8e 100644 --- a/FoxTube/VideoCard.xaml +++ b/FoxTube/VideoCard.xaml @@ -10,9 +10,7 @@ VerticalAlignment="Top" SizeChanged="UserControl_SizeChanged" d:DesignHeight="290" - d:DesignWidth="384" - MaxHeight="300" - MaxWidth="400"> + d:DesignWidth="384">