From 44f8ee0695eb72d5bf4e574392c0047f7ca06f70 Mon Sep 17 00:00:00 2001 From: Milkitic Date: Sun, 15 Nov 2020 16:58:40 +0800 Subject: [PATCH] better support for navbar --- .../Configuration/GeneralSection.cs | 1 + .../Converters/GetOutlinedTextConverter.cs | 49 +++++++++++++++++++ OsuPlayer.Wpf/OsuPlayer.Wpf.csproj | 1 + OsuPlayer.Wpf/Styles/ConverterDictionary.xaml | 1 + .../RadioButtonComponent/SwitchRadio.xaml | 2 + .../ViewModels/MainWindowViewModel.cs | 4 ++ OsuPlayer.Wpf/Windows/MainWindow.xaml | 40 +++++++++++++-- OsuPlayer.Wpf/Windows/MainWindow.xaml.cs | 1 + 8 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 OsuPlayer.Wpf/Converters/GetOutlinedTextConverter.cs diff --git a/OsuPlayer.Common/Configuration/GeneralSection.cs b/OsuPlayer.Common/Configuration/GeneralSection.cs index 7821cdf1..2a97738a 100644 --- a/OsuPlayer.Common/Configuration/GeneralSection.cs +++ b/OsuPlayer.Common/Configuration/GeneralSection.cs @@ -13,6 +13,7 @@ public class GeneralSection public string CustomSongsPath { get; set; } = Path.Combine(Domain.CurrentPath, "Songs"); public bool? ExitWhenClosed { get; set; } = null; public bool FirstOpen { get; set; } = true; + public bool IsNavigationCollapsed { get; set; } public Point? MiniLastPosition { get; set; } public Rectangle? MiniWorkingArea { get; set; } } diff --git a/OsuPlayer.Wpf/Converters/GetOutlinedTextConverter.cs b/OsuPlayer.Wpf/Converters/GetOutlinedTextConverter.cs new file mode 100644 index 00000000..01b80b0a --- /dev/null +++ b/OsuPlayer.Wpf/Converters/GetOutlinedTextConverter.cs @@ -0,0 +1,49 @@ +using System; +using System.Globalization; +using System.Linq; +using System.Windows.Data; + +namespace Milky.OsuPlayer.Converters +{ + class GetOutlinedTextConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is string s) + { + string result = null; + var split = s.Split(' '); + if (split.Length > 1) + { + result = (split[0].Substring(0, 1) + split[1].Substring(0, 1)).ToUpper(); + } + else if (split.Length > 0) + { + if (split[0].Length > 1) + { + result = split[0].Substring(0, 2); + } + else + result = split[0].Substring(0, 1); + } + + if (result == null) return null; + if (result.All(k => k >= 32 && k <= 255)) + { + return result; + } + else + { + return result.Substring(0, 1); + } + } + + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/OsuPlayer.Wpf/OsuPlayer.Wpf.csproj b/OsuPlayer.Wpf/OsuPlayer.Wpf.csproj index 9456fa6b..8c8f439c 100644 --- a/OsuPlayer.Wpf/OsuPlayer.Wpf.csproj +++ b/OsuPlayer.Wpf/OsuPlayer.Wpf.csproj @@ -172,6 +172,7 @@ + diff --git a/OsuPlayer.Wpf/Styles/ConverterDictionary.xaml b/OsuPlayer.Wpf/Styles/ConverterDictionary.xaml index db85b6a4..4ac02507 100644 --- a/OsuPlayer.Wpf/Styles/ConverterDictionary.xaml +++ b/OsuPlayer.Wpf/Styles/ConverterDictionary.xaml @@ -22,4 +22,5 @@ + \ No newline at end of file diff --git a/OsuPlayer.Wpf/UiComponents/RadioButtonComponent/SwitchRadio.xaml b/OsuPlayer.Wpf/UiComponents/RadioButtonComponent/SwitchRadio.xaml index 5ec34ab1..1f5bc3e7 100644 --- a/OsuPlayer.Wpf/UiComponents/RadioButtonComponent/SwitchRadio.xaml +++ b/OsuPlayer.Wpf/UiComponents/RadioButtonComponent/SwitchRadio.xaml @@ -140,6 +140,8 @@ + + +