From 00abfed1b35a9ea47a74900d1f8740ff1a725d0f Mon Sep 17 00:00:00 2001 From: Tsanie Lily Date: Wed, 6 May 2020 20:47:06 +0800 Subject: [PATCH] update folder structure --- Pixiview.iOS/Pixiview.iOS.csproj | 2 + Pixiview.iOS/Renderers/AdaptedPageRenderer.cs | 2 - Pixiview.iOS/Renderers/AppShellRenderer.cs | 26 ++++++++++ Pixiview.iOS/Resources/userprofile.jpg | Bin 0 -> 20952 bytes Pixiview/AppShell.xaml | 48 +++++++++++++----- Pixiview/AppShell.xaml.cs | 28 +++++++++- Pixiview/{ => Illust}/MainPage.xaml | 18 ++++--- Pixiview/{ => Illust}/MainPage.xaml.cs | 2 +- Pixiview/{ => Illust}/NewsPage.xaml | 2 +- Pixiview/{ => Illust}/NewsPage.xaml.cs | 2 +- Pixiview/{ => Illust}/RankingPage.xaml | 2 +- Pixiview/{ => Illust}/RankingPage.xaml.cs | 2 +- Pixiview/{ => Illust}/ViewIllustPage.xaml | 21 ++++---- Pixiview/{ => Illust}/ViewIllustPage.xaml.cs | 48 +++++++++++++++++- Pixiview/OptionPage.xaml | 6 +++ Pixiview/OptionPage.xaml.cs | 15 ++++++ Pixiview/Pixiview.csproj | 1 + Pixiview/UI/AdaptedPage.cs | 25 --------- Pixiview/UI/CardView.cs | 3 +- Pixiview/UI/Theme/DarkTheme.cs | 2 + Pixiview/UI/Theme/LightTheme.cs | 2 + Pixiview/UI/Theme/ThemeBase.cs | 2 + Pixiview/Utils/Extensions.cs | 8 ++- 23 files changed, 197 insertions(+), 70 deletions(-) create mode 100644 Pixiview.iOS/Renderers/AppShellRenderer.cs create mode 100644 Pixiview.iOS/Resources/userprofile.jpg rename Pixiview/{ => Illust}/MainPage.xaml (89%) rename Pixiview/{ => Illust}/MainPage.xaml.cs (99%) rename Pixiview/{ => Illust}/NewsPage.xaml (93%) rename Pixiview/{ => Illust}/NewsPage.xaml.cs (89%) rename Pixiview/{ => Illust}/RankingPage.xaml (92%) rename Pixiview/{ => Illust}/RankingPage.xaml.cs (89%) rename Pixiview/{ => Illust}/ViewIllustPage.xaml (75%) rename Pixiview/{ => Illust}/ViewIllustPage.xaml.cs (82%) create mode 100644 Pixiview/OptionPage.xaml create mode 100644 Pixiview/OptionPage.xaml.cs diff --git a/Pixiview.iOS/Pixiview.iOS.csproj b/Pixiview.iOS/Pixiview.iOS.csproj index 93ee590..fc5ab43 100644 --- a/Pixiview.iOS/Pixiview.iOS.csproj +++ b/Pixiview.iOS/Pixiview.iOS.csproj @@ -76,6 +76,7 @@ + @@ -149,5 +150,6 @@ + \ No newline at end of file diff --git a/Pixiview.iOS/Renderers/AdaptedPageRenderer.cs b/Pixiview.iOS/Renderers/AdaptedPageRenderer.cs index df6b31c..546d3ce 100644 --- a/Pixiview.iOS/Renderers/AdaptedPageRenderer.cs +++ b/Pixiview.iOS/Renderers/AdaptedPageRenderer.cs @@ -39,8 +39,6 @@ namespace Pixiview.iOS.Renderers base.Dispose(disposing); } - public override bool PrefersHomeIndicatorAutoHidden => Screen.GetHomeIndicatorAutoHidden(Element); - public override void ViewDidAppear(bool animated) { base.ViewDidAppear(animated); diff --git a/Pixiview.iOS/Renderers/AppShellRenderer.cs b/Pixiview.iOS/Renderers/AppShellRenderer.cs new file mode 100644 index 0000000..c53bda9 --- /dev/null +++ b/Pixiview.iOS/Renderers/AppShellRenderer.cs @@ -0,0 +1,26 @@ +using Pixiview.iOS.Renderers; +using Pixiview.Utils; +using UIKit; +using Xamarin.Forms; +using Xamarin.Forms.Platform.iOS; + +[assembly: ExportRenderer(typeof(Shell), typeof(AppShellRenderer))] +namespace Pixiview.iOS.Renderers +{ + public class AppShellRenderer : ShellRenderer + { + public override bool PrefersHomeIndicatorAutoHidden => Screen.GetHomeIndicatorAutoHidden(Element); + + protected override IShellSectionRenderer CreateShellSectionRenderer(ShellSection shellSection) + { + var renderer = base.CreateShellSectionRenderer(shellSection); + if (renderer is ShellSectionRenderer sr && Element is AppShell shell) + { + shell.SetNavigationBarHeight( + sr.NavigationBar.Frame.Height, + UIApplication.SharedApplication.StatusBarFrame.Height); + } + return renderer; + } + } +} diff --git a/Pixiview.iOS/Resources/userprofile.jpg b/Pixiview.iOS/Resources/userprofile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..91428d889ed1a0883ca5fb2c4907a646febed461 GIT binary patch literal 20952 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 sP`p~!D!HnT=Y->w - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/Pixiview/AppShell.xaml.cs b/Pixiview/AppShell.xaml.cs index e1fc87c..ec476b0 100644 --- a/Pixiview/AppShell.xaml.cs +++ b/Pixiview/AppShell.xaml.cs @@ -1,12 +1,38 @@ -using Xamarin.Forms; +using System; +using Xamarin.Forms; namespace Pixiview { public partial class AppShell : Shell { + public static new AppShell Current => Shell.Current as AppShell; + + public static Thickness NavigationBarOffset { get; private set; } + public static Thickness TotalBarOffset { get; private set; } + + public event EventHandler NavigationBarHeightChanged; + public AppShell() { InitializeComponent(); } + + public void SetNavigationBarHeight(double height, double statusHeight) + { + NavigationBarOffset = new Thickness(0, height, 0, 0); + TotalBarOffset = new Thickness(0, height + statusHeight, 0, 0); + + NavigationBarHeightChanged?.Invoke(this, new BarHeightEventArgs + { + NavigationBarHeight = height, + StatusBarHeight = statusHeight + }); + } + } + + public class BarHeightEventArgs : EventArgs + { + public double NavigationBarHeight { get; set; } + public double StatusBarHeight { get; set; } } } diff --git a/Pixiview/MainPage.xaml b/Pixiview/Illust/MainPage.xaml similarity index 89% rename from Pixiview/MainPage.xaml rename to Pixiview/Illust/MainPage.xaml index 6c52cce..5449465 100644 --- a/Pixiview/MainPage.xaml +++ b/Pixiview/Illust/MainPage.xaml @@ -3,12 +3,12 @@ xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:p="clr-namespace:Pixiview" + xmlns:mdl="clr-namespace:Pixiview.Illust" xmlns:u="clr-namespace:Pixiview.UI" xmlns:util="clr-namespace:Pixiview.Utils" xmlns:r="clr-namespace:Pixiview.Resources" mc:Ignorable="d" - x:Class="Pixiview.MainPage" + x:Class="Pixiview.Illust.MainPage" util:Screen.StatusBarStyle="{DynamicResource StatusBarStyle}" Shell.NavBarHasShadow="True" BackgroundColor="{DynamicResource WindowColor}" @@ -19,12 +19,12 @@ IconImageSource="{DynamicResource FontIconRefresh}"/> - + - + - + + + \ No newline at end of file diff --git a/Pixiview/MainPage.xaml.cs b/Pixiview/Illust/MainPage.xaml.cs similarity index 99% rename from Pixiview/MainPage.xaml.cs rename to Pixiview/Illust/MainPage.xaml.cs index 316badc..4c16705 100644 --- a/Pixiview/MainPage.xaml.cs +++ b/Pixiview/Illust/MainPage.xaml.cs @@ -10,7 +10,7 @@ using Pixiview.Utils; using Xamarin.Essentials; using Xamarin.Forms; -namespace Pixiview +namespace Pixiview.Illust { // Learn more about making custom code visible in the Xamarin.Forms previewer // by visiting https://aka.ms/xamarinforms-previewer diff --git a/Pixiview/NewsPage.xaml b/Pixiview/Illust/NewsPage.xaml similarity index 93% rename from Pixiview/NewsPage.xaml rename to Pixiview/Illust/NewsPage.xaml index 118c615..85bd6c1 100644 --- a/Pixiview/NewsPage.xaml +++ b/Pixiview/Illust/NewsPage.xaml @@ -1,5 +1,5 @@  - + diff --git a/Pixiview/NewsPage.xaml.cs b/Pixiview/Illust/NewsPage.xaml.cs similarity index 89% rename from Pixiview/NewsPage.xaml.cs rename to Pixiview/Illust/NewsPage.xaml.cs index 795b7f2..279895f 100644 --- a/Pixiview/NewsPage.xaml.cs +++ b/Pixiview/Illust/NewsPage.xaml.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using Xamarin.Forms; -namespace Pixiview +namespace Pixiview.Illust { public partial class NewsPage : ContentPage { diff --git a/Pixiview/RankingPage.xaml b/Pixiview/Illust/RankingPage.xaml similarity index 92% rename from Pixiview/RankingPage.xaml rename to Pixiview/Illust/RankingPage.xaml index 0067e83..e09bc73 100644 --- a/Pixiview/RankingPage.xaml +++ b/Pixiview/Illust/RankingPage.xaml @@ -1,5 +1,5 @@  - + diff --git a/Pixiview/RankingPage.xaml.cs b/Pixiview/Illust/RankingPage.xaml.cs similarity index 89% rename from Pixiview/RankingPage.xaml.cs rename to Pixiview/Illust/RankingPage.xaml.cs index caf3382..b47b5ff 100644 --- a/Pixiview/RankingPage.xaml.cs +++ b/Pixiview/Illust/RankingPage.xaml.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using Xamarin.Forms; -namespace Pixiview +namespace Pixiview.Illust { public partial class RankingPage : ContentPage { diff --git a/Pixiview/ViewIllustPage.xaml b/Pixiview/Illust/ViewIllustPage.xaml similarity index 75% rename from Pixiview/ViewIllustPage.xaml rename to Pixiview/Illust/ViewIllustPage.xaml index fbdd4a5..fc48957 100644 --- a/Pixiview/ViewIllustPage.xaml +++ b/Pixiview/Illust/ViewIllustPage.xaml @@ -1,26 +1,29 @@  - + - + - + BackgroundColor="{DynamicResource MaskColor}"> + - diff --git a/Pixiview/ViewIllustPage.xaml.cs b/Pixiview/Illust/ViewIllustPage.xaml.cs similarity index 82% rename from Pixiview/ViewIllustPage.xaml.cs rename to Pixiview/Illust/ViewIllustPage.xaml.cs index 07c146b..45908a6 100644 --- a/Pixiview/ViewIllustPage.xaml.cs +++ b/Pixiview/Illust/ViewIllustPage.xaml.cs @@ -6,7 +6,7 @@ using Pixiview.Utils; using Xamarin.Essentials; using Xamarin.Forms; -namespace Pixiview +namespace Pixiview.Illust { public partial class ViewIllustPage : AdaptedPage { @@ -18,6 +18,8 @@ namespace Pixiview nameof(IsPageVisible), typeof(bool), typeof(ViewIllustPage)); public static readonly BindableProperty IllustItemProperty = BindableProperty.Create( nameof(IllustItem), typeof(IllustItem), typeof(ViewIllustPage)); + public static readonly BindableProperty PageTopMarginProperty = BindableProperty.Create( + nameof(PageTopMargin), typeof(Thickness), typeof(ViewIllustPage)); public IllustDetailItem[] Illusts { @@ -39,6 +41,11 @@ namespace Pixiview get => (IllustItem)GetValue(IllustItemProperty); private set => SetValue(IllustItemProperty, value); } + public Thickness PageTopMargin + { + get => (Thickness)GetValue(PageTopMarginProperty); + private set => SetValue(PageTopMarginProperty, value); + } public int CurrentPage { get; private set; } @@ -79,9 +86,48 @@ namespace Pixiview } Illusts = items; + OnOrientationChanged(CurrentOrientation); Task.Run(DoLoadImages); } + public override void OnOrientationChanged(Orientation orientation) + { + switch (orientation) + { + case Orientation.Portrait: + PageTopMargin = AppShell.TotalBarOffset; + break; + case Orientation.PortraitUpsideDown: + if (DeviceInfo.Idiom == DeviceIdiom.Phone) + { + PageTopMargin = AppShell.NavigationBarOffset; + } + else + { + PageTopMargin = AppShell.TotalBarOffset; + } + break; + case Orientation.Unknown: + case Orientation.LandscapeLeft: + case Orientation.LandscapeRight: + default: + PageTopMargin = AppShell.NavigationBarOffset; + break; + } + } + + protected override void OnAppearing() + { + base.OnAppearing(); + Screen.SetHomeIndicatorAutoHidden(Shell.Current, true); + } + + protected override void OnDisappearing() + { + base.OnDisappearing(); + Screen.SetHomeIndicatorAutoHidden(Shell.Current, false); + } + private void CarouselView_PositionChanged(object sender, PositionChangedEventArgs e) { var index = e.CurrentPosition; diff --git a/Pixiview/OptionPage.xaml b/Pixiview/OptionPage.xaml new file mode 100644 index 0000000..85a87e0 --- /dev/null +++ b/Pixiview/OptionPage.xaml @@ -0,0 +1,6 @@ + + + + + diff --git a/Pixiview/OptionPage.xaml.cs b/Pixiview/OptionPage.xaml.cs new file mode 100644 index 0000000..6a493b5 --- /dev/null +++ b/Pixiview/OptionPage.xaml.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; + +using Xamarin.Forms; + +namespace Pixiview +{ + public partial class OptionPage : ContentPage + { + public OptionPage() + { + InitializeComponent(); + } + } +} diff --git a/Pixiview/Pixiview.csproj b/Pixiview/Pixiview.csproj index 87eb65b..bc395f3 100644 --- a/Pixiview/Pixiview.csproj +++ b/Pixiview/Pixiview.csproj @@ -21,6 +21,7 @@ + diff --git a/Pixiview/UI/AdaptedPage.cs b/Pixiview/UI/AdaptedPage.cs index 4638b06..b52bd34 100644 --- a/Pixiview/UI/AdaptedPage.cs +++ b/Pixiview/UI/AdaptedPage.cs @@ -5,18 +5,6 @@ namespace Pixiview.UI { public class AdaptedPage : ContentPage { - static readonly Thickness LandscapeLeftPadding = new Thickness(34, 0, 0, 0); - static readonly Thickness LandscapeRightPadding = new Thickness(0, 0, 34, 0); - - public static readonly BindableProperty StatusBarPaddingProperty = BindableProperty.Create( - nameof(StatusBarPadding), typeof(Thickness), typeof(AdaptedPage), default(Thickness)); - - public Thickness StatusBarPadding - { - get => (Thickness)GetValue(StatusBarPaddingProperty); - set => SetValue(StatusBarPaddingProperty, value); - } - public Orientation CurrentOrientation { get; private set; } public event EventHandler Load; @@ -35,19 +23,6 @@ namespace Pixiview.UI public virtual void OnOrientationChanged(Orientation orientation) { - if (orientation == Orientation.LandscapeLeft || orientation == Orientation.PortraitUpsideDown) - { - StatusBarPadding = StyleDefinition.IsFullscreenDevice ? LandscapeLeftPadding : default; - } - else if (orientation == Orientation.LandscapeRight) - { - StatusBarPadding = StyleDefinition.IsFullscreenDevice ? LandscapeRightPadding : default; - } - else - { - StatusBarPadding = default; - } - OrientationChanged?.Invoke(this, new OrientationEventArgs { CurrentOrientation = orientation }); } diff --git a/Pixiview/UI/CardView.cs b/Pixiview/UI/CardView.cs index ac3aaa8..224cfc5 100644 --- a/Pixiview/UI/CardView.cs +++ b/Pixiview/UI/CardView.cs @@ -1,4 +1,5 @@ -using Xamarin.Forms; +using Pixiview.Illust; +using Xamarin.Forms; namespace Pixiview.UI { diff --git a/Pixiview/UI/Theme/DarkTheme.cs b/Pixiview/UI/Theme/DarkTheme.cs index b35e791..d33aacb 100644 --- a/Pixiview/UI/Theme/DarkTheme.cs +++ b/Pixiview/UI/Theme/DarkTheme.cs @@ -35,6 +35,8 @@ namespace Pixiview.UI.Theme Add(MainTextColor, Color.White); Add(SubColor, Color.FromRgb(0x33, 0x33, 0x33)); Add(MaskColor, Color.FromRgba(0xff, 0xff, 0xff, 0x50)); + Add(NavColor, Color.Black); + Add(SubNavColor, Color.FromRgb(0x22, 0x22, 0x22)); } } } diff --git a/Pixiview/UI/Theme/LightTheme.cs b/Pixiview/UI/Theme/LightTheme.cs index 1595721..447e334 100644 --- a/Pixiview/UI/Theme/LightTheme.cs +++ b/Pixiview/UI/Theme/LightTheme.cs @@ -35,6 +35,8 @@ namespace Pixiview.UI.Theme Add(MainTextColor, Color.Black); Add(SubColor, Color.FromRgb(0xf0, 0xf0, 0xf0)); // Color.FromRgb(0xfa, 0xfa, 0xf0) Add(MaskColor, Color.FromRgba(0, 0, 0, 0x50)); + Add(NavColor, Color.FromRgb(0xee, 0xee, 0xee)); + Add(SubNavColor, Color.White); } } } diff --git a/Pixiview/UI/Theme/ThemeBase.cs b/Pixiview/UI/Theme/ThemeBase.cs index fe12633..df44823 100644 --- a/Pixiview/UI/Theme/ThemeBase.cs +++ b/Pixiview/UI/Theme/ThemeBase.cs @@ -21,6 +21,8 @@ namespace Pixiview.UI.Theme public const string MainTextColor = nameof(MainTextColor); public const string SubColor = nameof(SubColor); public const string MaskColor = nameof(MaskColor); + public const string NavColor = nameof(NavColor); + public const string SubNavColor = nameof(SubNavColor); public const string IconLightFontFamily = nameof(IconLightFontFamily); public const string IconRegularFontFamily = nameof(IconRegularFontFamily); diff --git a/Pixiview/Utils/Extensions.cs b/Pixiview/Utils/Extensions.cs index f97844a..d69a6f2 100644 --- a/Pixiview/Utils/Extensions.cs +++ b/Pixiview/Utils/Extensions.cs @@ -12,16 +12,14 @@ namespace Pixiview.Utils typeof(StatusBarStyles), typeof(Page), StatusBarStyles.WhiteText); + public static StatusBarStyles GetStatusBarStyle(VisualElement page) => (StatusBarStyles)page.GetValue(StatusBarStyleProperty); + public static void SetStatusBarStyle(VisualElement page, StatusBarStyles value) => page.SetValue(StatusBarStyleProperty, value); public static readonly BindableProperty HomeIndicatorAutoHiddenProperty = BindableProperty.CreateAttached( HomeIndicatorAutoHidden, typeof(bool), - typeof(Page), + typeof(Shell), false); - - public static StatusBarStyles GetStatusBarStyle(VisualElement page) => (StatusBarStyles)page.GetValue(StatusBarStyleProperty); - public static void SetStatusBarStyle(VisualElement page, StatusBarStyles value) => page.SetValue(StatusBarStyleProperty, value); - public static bool GetHomeIndicatorAutoHidden(VisualElement page) => (bool)page.GetValue(HomeIndicatorAutoHiddenProperty); public static void SetHomeIndicatorAutoHidden(VisualElement page, bool value) => page.SetValue(HomeIndicatorAutoHiddenProperty, value); }