From fa28824ae8902538e19cbb9b5c8d73488709d41c Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Wed, 15 Oct 2025 22:05:55 +0100 Subject: [PATCH] Add colors. --- Aaru.Tui/Aaru.Tui.csproj | 6 +- Aaru.Tui/Models/FileModel.cs | 10 ++++ .../ViewModels/Windows/MainWindowViewModel.cs | 55 +++++++++++++++++-- Aaru.Tui/Views/Windows/MainWindow.axaml | 22 +++++++- Aaru.Tui/Views/Windows/MainWindow.axaml.cs | 2 +- 5 files changed, 85 insertions(+), 10 deletions(-) create mode 100644 Aaru.Tui/Models/FileModel.cs diff --git a/Aaru.Tui/Aaru.Tui.csproj b/Aaru.Tui/Aaru.Tui.csproj index 70a1d6df3..99564c245 100644 --- a/Aaru.Tui/Aaru.Tui.csproj +++ b/Aaru.Tui/Aaru.Tui.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,4 +18,8 @@ + + + + diff --git a/Aaru.Tui/Models/FileModel.cs b/Aaru.Tui/Models/FileModel.cs new file mode 100644 index 000000000..b85c8650c --- /dev/null +++ b/Aaru.Tui/Models/FileModel.cs @@ -0,0 +1,10 @@ +using Avalonia.Media; + +namespace Aaru.Tui.Models; + +public class FileModel +{ + public string Path { get; set; } + public string Filename { get; set; } + public IBrush ForegroundBrush { get; set; } // Add this property for ListBox Foreground binding +} \ No newline at end of file diff --git a/Aaru.Tui/ViewModels/Windows/MainWindowViewModel.cs b/Aaru.Tui/ViewModels/Windows/MainWindowViewModel.cs index e76bb300e..1a64665c3 100644 --- a/Aaru.Tui/ViewModels/Windows/MainWindowViewModel.cs +++ b/Aaru.Tui/ViewModels/Windows/MainWindowViewModel.cs @@ -1,17 +1,23 @@ using System.Collections.ObjectModel; using System.Reflection; using System.Windows.Input; +using Aaru.Helpers; +using Aaru.Tui.Models; using Avalonia; using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Media; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; +using Color = Avalonia.Media.Color; namespace Aaru.Tui.ViewModels.Windows; -public sealed class MainWindowViewModel : ViewModelBase +public sealed partial class MainWindowViewModel : ViewModelBase { [ObservableProperty] - ObservableCollection _files = []; + public string _copyright; + [ObservableProperty] + ObservableCollection _files = []; [ObservableProperty] public string _informationalVersion; @@ -24,6 +30,8 @@ public sealed class MainWindowViewModel : ViewModelBase .GetCustomAttribute() ?.InformationalVersion ?? "?.?.?"; + + Copyright = Assembly.GetExecutingAssembly().GetCustomAttribute()?.Copyright ?? ""; } public ICommand ExitCommand { get; } @@ -36,10 +44,47 @@ public sealed class MainWindowViewModel : ViewModelBase public void LoadComplete() { - Files.Add(".."); + var parentDirectory = new FileModel + { + Filename = "..", + Path = Path.GetRelativePath(Directory.GetCurrentDirectory(), ".."), + ForegroundBrush = + new SolidColorBrush(Color.Parse(DirColorsParser.Instance.DirectoryColor ?? + DirColorsParser.Instance.NormalColor)) + }; + + Files.Add(parentDirectory); + + foreach(FileModel model in Directory + .GetDirectories(Directory.GetCurrentDirectory(), "*", SearchOption.TopDirectoryOnly) + .Select(directory => new FileModel + { + Path = directory, + Filename = Path.GetFileName(directory), + ForegroundBrush = + new SolidColorBrush(Color.Parse(DirColorsParser.Instance.DirectoryColor ?? + DirColorsParser.Instance.NormalColor)) + })) + Files.Add(model); foreach(string file in - Directory.GetFiles(Directory.GetCurrentDirectory(), "*.*", SearchOption.TopDirectoryOnly)) - Files.Add(Path.GetFileName(file)); + Directory.GetFiles(Directory.GetCurrentDirectory(), "*", SearchOption.TopDirectoryOnly)) + { + var model = new FileModel + { + Path = file, + Filename = Path.GetFileName(file) + }; + + string extension = Path.GetExtension(file); + + model.ForegroundBrush = + new SolidColorBrush(Color.Parse(DirColorsParser.Instance.ExtensionColors.TryGetValue(extension, + out string? hex) + ? hex + : DirColorsParser.Instance.NormalColor)); + + Files.Add(model); + } } } \ No newline at end of file diff --git a/Aaru.Tui/Views/Windows/MainWindow.axaml b/Aaru.Tui/Views/Windows/MainWindow.axaml index 5502276e5..4b0ea676f 100644 --- a/Aaru.Tui/Views/Windows/MainWindow.axaml +++ b/Aaru.Tui/Views/Windows/MainWindow.axaml @@ -2,6 +2,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:console="https://github.com/jinek/consolonia" xmlns:windows="clr-namespace:Aaru.Tui.ViewModels.Windows" + xmlns:models="clr-namespace:Aaru.Tui.Models" x:Class="Aaru.Tui.Views.Windows.MainWindow" RequestedThemeVariant="Dark" Title="Aaru"> @@ -22,7 +23,15 @@ + BorderThickness="1" + Background="Transparent"> + + + + + @@ -39,8 +48,15 @@ - - + + + diff --git a/Aaru.Tui/Views/Windows/MainWindow.axaml.cs b/Aaru.Tui/Views/Windows/MainWindow.axaml.cs index 334dce8c1..3b832e871 100644 --- a/Aaru.Tui/Views/Windows/MainWindow.axaml.cs +++ b/Aaru.Tui/Views/Windows/MainWindow.axaml.cs @@ -4,7 +4,7 @@ using Avalonia.Interactivity; namespace Aaru.Tui.Views.Windows; -public class MainWindow : Window +public partial class MainWindow : Window { public MainWindow() {