From 27ebb1efa8cba5668f447c859341da576b105be2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81d=C3=A1m=20Kov=C3=A1cs?= Date: Fri, 28 Jul 2023 00:12:00 +0200 Subject: [PATCH] Show icons when items are on clipbaord --- .../Services/IClipboardService.cs | 3 +- .../Services/ClipboardService.cs | 16 ++++---- .../Resources/Converters.axaml | 3 +- .../ViewModels/IMainWindowViewModel.cs | 1 + .../ViewModels/MainWindowViewModel.cs | 1 + .../FileTime.GuiApp/Views/MainWindow.axaml | 37 ++++++++++++++----- 6 files changed, 40 insertions(+), 21 deletions(-) diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Services/IClipboardService.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Services/IClipboardService.cs index df4f0e3..4738606 100644 --- a/src/AppCommon/FileTime.App.Core.Abstraction/Services/IClipboardService.cs +++ b/src/AppCommon/FileTime.App.Core.Abstraction/Services/IClipboardService.cs @@ -1,3 +1,4 @@ +using System.Collections.ObjectModel; using FileTime.Core.Command; using FileTime.Core.Models; @@ -6,7 +7,7 @@ namespace FileTime.App.Core.Services; public interface IClipboardService { Type? CommandFactoryType { get; } - IReadOnlyList Content { get; } + ReadOnlyObservableCollection Content { get; } void AddContent(FullName absolutePath); void RemoveContent(FullName absolutePath); diff --git a/src/AppCommon/FileTime.App.Core/Services/ClipboardService.cs b/src/AppCommon/FileTime.App.Core/Services/ClipboardService.cs index 76af963..01a599d 100644 --- a/src/AppCommon/FileTime.App.Core/Services/ClipboardService.cs +++ b/src/AppCommon/FileTime.App.Core/Services/ClipboardService.cs @@ -1,3 +1,4 @@ +using System.Collections.ObjectModel; using FileTime.Core.Command; using FileTime.Core.Models; @@ -5,14 +6,14 @@ namespace FileTime.App.Core.Services; public class ClipboardService : IClipboardService { - private List _content; - public IReadOnlyList Content { get; private set; } + private readonly ObservableCollection _content; + public ReadOnlyObservableCollection Content { get; } public Type? CommandFactoryType { get; private set; } public ClipboardService() { - _content = new List(); - Content = _content.AsReadOnly(); + _content = new ObservableCollection(); + Content = new(_content); } public void AddContent(FullName absolutePath) @@ -38,13 +39,10 @@ public class ClipboardService : IClipboardService public void Clear() { - _content = new List(); - Content = _content.AsReadOnly(); + _content.Clear(); CommandFactoryType = null; } public void SetCommand() where T : ITransportationCommandFactory - { - CommandFactoryType = typeof(T); - } + => CommandFactoryType = typeof(T); } \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Converters.axaml b/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Converters.axaml index d8644aa..d4053eb 100644 --- a/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Converters.axaml +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Converters.axaml @@ -32,8 +32,9 @@ - + + diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/ViewModels/IMainWindowViewModel.cs b/src/GuiApp/Avalonia/FileTime.GuiApp/ViewModels/IMainWindowViewModel.cs index f763989..480e832 100644 --- a/src/GuiApp/Avalonia/FileTime.GuiApp/ViewModels/IMainWindowViewModel.cs +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/ViewModels/IMainWindowViewModel.cs @@ -16,4 +16,5 @@ public interface IMainWindowViewModel : IMainWindowViewModelBase ICommandPaletteService CommandPaletteService { get; } IRefreshSmoothnessCalculator RefreshSmoothnessCalculator { get; } IAdminElevationManager AdminElevationManager { get; } + IClipboardService ClipboardService { get; } } \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/ViewModels/MainWindowViewModel.cs b/src/GuiApp/Avalonia/FileTime.GuiApp/ViewModels/MainWindowViewModel.cs index 159ffae..7de1d6b 100644 --- a/src/GuiApp/Avalonia/FileTime.GuiApp/ViewModels/MainWindowViewModel.cs +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/ViewModels/MainWindowViewModel.cs @@ -31,6 +31,7 @@ namespace FileTime.GuiApp.ViewModels; [Inject(typeof(ICommandPaletteService), PropertyAccessModifier = AccessModifier.Public)] [Inject(typeof(IRefreshSmoothnessCalculator), PropertyAccessModifier = AccessModifier.Public)] [Inject(typeof(IAdminElevationManager), PropertyAccessModifier = AccessModifier.Public)] +[Inject(typeof(IClipboardService), PropertyAccessModifier = AccessModifier.Public)] public partial class MainWindowViewModel : IMainWindowViewModel { public bool Loading => false; diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/Views/MainWindow.axaml b/src/GuiApp/Avalonia/FileTime.GuiApp/Views/MainWindow.axaml index 78b4c61..5252fa9 100644 --- a/src/GuiApp/Avalonia/FileTime.GuiApp/Views/MainWindow.axaml +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/Views/MainWindow.axaml @@ -70,9 +70,26 @@ Height="20" HorizontalAlignment="Left" IsVisible="{Binding AdminElevationManager.IsAdminInstanceRunning}" + Margin="10,0,0,0" Source="{SvgImage /Assets/material/security.svg}" VerticalAlignment="Center" Width="20" /> + + @@ -458,7 +475,7 @@ Foreground="{DynamicResource ErrorBrush}" Grid.Row="1" HorizontalAlignment="Center" - IsVisible="{Binding AppState.SelectedTab^.CurrentItems.Value.Count, Converter={StaticResource EqualityConverter}, ConverterParameter=0}" + IsVisible="{Binding AppState.SelectedTab^.CurrentItems.Value.Count, Converter={StaticResource EqualsConverter}, ConverterParameter=0}" Margin="10" x:Name="CurrentEmpty"> Empty @@ -517,7 +534,7 @@ FontWeight="Bold" Foreground="{DynamicResource ErrorBrush}" HorizontalAlignment="Center" - IsVisible="{Binding AppState.SelectedTab^.SelectedsChildren.Value.Count, Converter={StaticResource EqualityConverter}, ConverterParameter=0}" + IsVisible="{Binding AppState.SelectedTab^.SelectedsChildren.Value.Count, Converter={StaticResource EqualsConverter}, ConverterParameter=0}" Margin="10" x:Name="ChildEmpty"> Empty @@ -547,13 +564,13 @@ - + - + - +