From cb05e58f1eb579f6a16e8a37176f334972939f06 Mon Sep 17 00:00:00 2001 From: Aleh Khantsevich Date: Sun, 1 Sep 2024 01:12:00 +0200 Subject: [PATCH 1/2] Center Sigmented and add tooltips --- Wino.Mail/Behaviors/BindableCommandBarBehavior.cs | 6 ++++++ Wino.Mail/Views/MailListPage.xaml | 6 ++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Wino.Mail/Behaviors/BindableCommandBarBehavior.cs b/Wino.Mail/Behaviors/BindableCommandBarBehavior.cs index afb917fa..3a41df09 100644 --- a/Wino.Mail/Behaviors/BindableCommandBarBehavior.cs +++ b/Wino.Mail/Behaviors/BindableCommandBarBehavior.cs @@ -115,6 +115,12 @@ namespace Wino.Behaviors DataContext = mailOperationMenuItem, }; + ToolTip toolTip = new ToolTip + { + Content = label + }; + ToolTipService.SetToolTip((DependencyObject)menuItem, toolTip); + ((AppBarButton)menuItem).Click -= Button_Click; ((AppBarButton)menuItem).Click += Button_Click; } diff --git a/Wino.Mail/Views/MailListPage.xaml b/Wino.Mail/Views/MailListPage.xaml index 09e5d4dd..bd3a942a 100644 --- a/Wino.Mail/Views/MailListPage.xaml +++ b/Wino.Mail/Views/MailListPage.xaml @@ -326,11 +326,10 @@ Style="{StaticResource PivotSegmentedStyle}"> - + @@ -566,7 +565,6 @@ Date: Sun, 1 Sep 2024 01:28:36 +0200 Subject: [PATCH 2/2] Remove redundand command bar classes --- .../Behaviors/BindableCommandBarBehavior.cs | 10 -- Wino.Mail/Controls/RendererCommandBar.cs | 136 ------------------ .../MenuFlyouts/RendererCommandBarItem.cs | 39 ----- .../RendererCommandBarItemTemplateSelector.cs | 84 ----------- Wino.Mail/Views/MailListPage.xaml | 27 +--- Wino.Mail/Views/MailRenderingPage.xaml | 27 +--- Wino.Mail/Wino.Mail.csproj | 3 - 7 files changed, 2 insertions(+), 324 deletions(-) delete mode 100644 Wino.Mail/Controls/RendererCommandBar.cs delete mode 100644 Wino.Mail/MenuFlyouts/RendererCommandBarItem.cs delete mode 100644 Wino.Mail/Selectors/RendererCommandBarItemTemplateSelector.cs diff --git a/Wino.Mail/Behaviors/BindableCommandBarBehavior.cs b/Wino.Mail/Behaviors/BindableCommandBarBehavior.cs index 3a41df09..2cf6c8c1 100644 --- a/Wino.Mail/Behaviors/BindableCommandBarBehavior.cs +++ b/Wino.Mail/Behaviors/BindableCommandBarBehavior.cs @@ -17,10 +17,6 @@ namespace Wino.Behaviors "PrimaryCommands", typeof(object), typeof(BindableCommandBarBehavior), new PropertyMetadata(null, UpdateCommands)); - public static readonly DependencyProperty ItemTemplateSelectorProperty = DependencyProperty.Register( - "ItemTemplateSelector", typeof(DataTemplateSelector), typeof(BindableCommandBarBehavior), - new PropertyMetadata(null, null)); - public ICommand ItemClickedCommand { get { return (ICommand)GetValue(ItemClickedCommandProperty); } @@ -29,12 +25,6 @@ namespace Wino.Behaviors public static readonly DependencyProperty ItemClickedCommandProperty = DependencyProperty.Register(nameof(ItemClickedCommand), typeof(ICommand), typeof(BindableCommandBarBehavior), new PropertyMetadata(null)); - public DataTemplateSelector ItemTemplateSelector - { - get { return (DataTemplateSelector)GetValue(ItemTemplateSelectorProperty); } - set { SetValue(ItemTemplateSelectorProperty, value); } - } - public object PrimaryCommands { get { return GetValue(PrimaryCommandsProperty); } diff --git a/Wino.Mail/Controls/RendererCommandBar.cs b/Wino.Mail/Controls/RendererCommandBar.cs deleted file mode 100644 index 693a7597..00000000 --- a/Wino.Mail/Controls/RendererCommandBar.cs +++ /dev/null @@ -1,136 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Windows.Input; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Models.Menus; -using Wino.Helpers; -using Wino.MenuFlyouts; - -namespace Wino.Controls -{ - public class RendererCommandBar : CommandBar, IDisposable - { - public static readonly DependencyProperty MenuItemsProperty = DependencyProperty.Register(nameof(MenuItemsProperty), typeof(ObservableCollection), typeof(RendererCommandBar), new PropertyMetadata(null, OnMenuItemsChanged)); - public static readonly DependencyProperty OperationClickedCommandProperty = DependencyProperty.Register(nameof(OperationClickedCommand), typeof(ICommand), typeof(RendererCommandBar), new PropertyMetadata(null)); - - public ICommand OperationClickedCommand - { - get { return (ICommand)GetValue(OperationClickedCommandProperty); } - set { SetValue(OperationClickedCommandProperty, value); } - } - - public ObservableCollection MenuItems - { - get { return (ObservableCollection)GetValue(MenuItemsProperty); } - set { SetValue(MenuItemsProperty, value); } - } - - public RendererCommandBar() - { - this.DefaultStyleKey = typeof(CommandBar); - } - - private static void OnMenuItemsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - if (obj is RendererCommandBar commandBar) - { - if (args.OldValue != null) - commandBar.UnregisterButtonCollection(args.NewValue as ObservableCollection); - - if (args.NewValue != null) - commandBar.RegisterButtonCollection(args.NewValue as ObservableCollection); - } - } - - private void RegisterButtonCollection(ObservableCollection collection) - { - collection.CollectionChanged -= ButtonCollectionChanged; - collection.CollectionChanged += ButtonCollectionChanged; - - InitItems(collection); - } - - private void UnregisterButtonCollection(ObservableCollection collection) - { - collection.CollectionChanged -= ButtonCollectionChanged; - } - - // One time initializer on registration. - private void InitItems(IEnumerable items) - { - foreach (var item in items) - { - var operationText = XamlHelpers.GetOperationString(item.Operation); - - var operationAppBarItem = new AppBarButton() - { - Label = operationText - }; - - ToolTipService.SetToolTip(operationAppBarItem, operationText); - - PrimaryCommands.Add(operationAppBarItem); - } - } - - private void ButtonCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) - { - if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Reset) - { - PrimaryCommands.Clear(); - SecondaryCommands.Clear(); - } - - if (e.NewItems != null) - { - foreach (var newItem in e.NewItems) - { - if (newItem is MailOperationMenuItem item) - { - var button = new RendererCommandBarItem(item.Operation, Clicked) - { - IsEnabled = item.IsEnabled - }; - - if (!item.IsSecondaryMenuPreferred) - PrimaryCommands.Add(button); - else - SecondaryCommands.Add(button); - } - } - } - } - - private void Clicked(MailOperation operation) - { - OperationClickedCommand?.Execute(operation); - } - - private void DisposeMenuItems() - { - foreach (var item in this.PrimaryCommands) - { - if (item is RendererCommandBarItem rendererCommandBarItem) - { - rendererCommandBarItem.Dispose(); - } - } - - foreach (var item in this.SecondaryCommands) - { - if (item is RendererCommandBarItem rendererCommandBarItem) - { - rendererCommandBarItem.Dispose(); - } - } - } - - public void Dispose() - { - DisposeMenuItems(); - } - } -} diff --git a/Wino.Mail/MenuFlyouts/RendererCommandBarItem.cs b/Wino.Mail/MenuFlyouts/RendererCommandBarItem.cs deleted file mode 100644 index 7e4b20d4..00000000 --- a/Wino.Mail/MenuFlyouts/RendererCommandBarItem.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Controls; -using Wino.Core.Domain.Enums; -using Wino.Helpers; - -namespace Wino.MenuFlyouts -{ - public class RendererCommandBarItem : AppBarButton, IDisposable - { - public MailOperation Operation { get; set; } - Action Clicked { get; set; } - - public RendererCommandBarItem(MailOperation operation, Action clicked) - { - Margin = new Thickness(6, 0, 6, 0); - CornerRadius = new CornerRadius(6); - - Operation = operation; - Clicked = clicked; - - Label = XamlHelpers.GetOperationString(operation); - Icon = new WinoFontIcon() { Icon = WinoIconGlyph.Archive }; - - Click += MenuClicked; - } - - private void MenuClicked(object sender, Windows.UI.Xaml.RoutedEventArgs e) - { - Clicked(Operation); - } - - public void Dispose() - { - Click -= MenuClicked; - } - } -} diff --git a/Wino.Mail/Selectors/RendererCommandBarItemTemplateSelector.cs b/Wino.Mail/Selectors/RendererCommandBarItemTemplateSelector.cs deleted file mode 100644 index 2ad2dd67..00000000 --- a/Wino.Mail/Selectors/RendererCommandBarItemTemplateSelector.cs +++ /dev/null @@ -1,84 +0,0 @@ -using Windows.Graphics.Printing.OptionDetails; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Models.Menus; - -namespace Wino.Selectors -{ - public class RendererCommandBarItemTemplateSelector : DataTemplateSelector - { - public DataTemplate Reply { get; set; } - public DataTemplate ReplyAll { get; set; } - public DataTemplate Archive { get; set; } - public DataTemplate Unarchive { get; set; } - public DataTemplate SetFlag { get; set; } - public DataTemplate ClearFlag { get; set; } - public DataTemplate MarkAsRead { get; set; } - public DataTemplate MarkAsUnread { get; set; } - public DataTemplate Delete { get; set; } - public DataTemplate Move { get; set; } - public DataTemplate MoveToJunk { get; set; } - public DataTemplate SaveAs { get; set; } - public DataTemplate Zoom { get; set; } - public DataTemplate Forward { get; set; } - public DataTemplate DarkEditor { get; set; } - public DataTemplate LightEditor { get; set; } - public DataTemplate SeperatorTemplate { get; set; } - public DataTemplate Find { get; set; } - public DataTemplate Print { get; set; } - protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) - { - if (item is MailOperationMenuItem mailOperationItem) - { - switch (mailOperationItem.Operation) - { - case MailOperation.None: - break; - case MailOperation.Archive: - return Archive; - case MailOperation.UnArchive: - return Unarchive; - case MailOperation.SoftDelete: - return Delete; - case MailOperation.Move: - return Move; - case MailOperation.MoveToJunk: - return MoveToJunk; - case MailOperation.SetFlag: - return SetFlag; - case MailOperation.ClearFlag: - return ClearFlag; - case MailOperation.MarkAsRead: - return MarkAsRead; - case MailOperation.MarkAsUnread: - return MarkAsUnread; - case MailOperation.Reply: - return Reply; - case MailOperation.ReplyAll: - return ReplyAll; - case MailOperation.Zoom: - return Zoom; - case MailOperation.SaveAs: - return SaveAs; - case MailOperation.Find: - return Find; - case MailOperation.Forward: - return Forward; - case MailOperation.DarkEditor: - return DarkEditor; - case MailOperation.LightEditor: - return LightEditor; - case MailOperation.Seperator: - return SeperatorTemplate; - case MailOperation.Print: - return Print; - default: - break; - } - } - - return base.SelectTemplateCore(item, container); - } - } -} diff --git a/Wino.Mail/Views/MailListPage.xaml b/Wino.Mail/Views/MailListPage.xaml index bd3a942a..1d87b243 100644 --- a/Wino.Mail/Views/MailListPage.xaml +++ b/Wino.Mail/Views/MailListPage.xaml @@ -33,28 +33,6 @@ IsSourceGrouped="True" Source="{x:Bind ViewModel.MailCollection.MailItems, Mode=OneWay}" /> - - 0,0,0,0 0,0,12,0 0,0,0,0 @@ -284,10 +262,7 @@ IsEnabled="{x:Bind helpers:XamlHelpers.CountToBooleanConverter(ViewModel.SelectedItemCount), Mode=OneWay}" OverflowButtonVisibility="Auto"> - + diff --git a/Wino.Mail/Views/MailRenderingPage.xaml b/Wino.Mail/Views/MailRenderingPage.xaml index e877e5d5..11d8d8b7 100644 --- a/Wino.Mail/Views/MailRenderingPage.xaml +++ b/Wino.Mail/Views/MailRenderingPage.xaml @@ -38,28 +38,6 @@ Content="{x:Bind DisplayName}" /> - - @@ -208,10 +186,7 @@ IsDynamicOverflowEnabled="True" OverflowButtonVisibility="Auto"> - + diff --git a/Wino.Mail/Wino.Mail.csproj b/Wino.Mail/Wino.Mail.csproj index 9bd8d94c..04bfc4f6 100644 --- a/Wino.Mail/Wino.Mail.csproj +++ b/Wino.Mail/Wino.Mail.csproj @@ -267,7 +267,6 @@ - AccountCreationDialog.xaml @@ -289,7 +288,6 @@ NewAccountDialog.xaml - @@ -301,7 +299,6 @@ -