mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
[GUI] Update image handling to use SvgImage for media logos
This commit is contained in:
@@ -27,9 +27,10 @@
|
||||
<PackageReference Include="Humanizer.Core"/>
|
||||
<PackageReference Include="JetBrains.Annotations"/>
|
||||
<PackageReference Include="MessageBox.Avalonia"/>
|
||||
<PackageReference Include="Sentry" />
|
||||
<PackageReference Include="Sentry"/>
|
||||
<PackageReference Include="Avalonia"/>
|
||||
<PackageReference Include="Avalonia.Desktop"/>
|
||||
<PackageReference Include="Svg.Controls.Avalonia"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Aaru.Core\Aaru.Core.csproj"/>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using Aaru.CommonTypes.Interfaces;
|
||||
using Aaru.Gui.ViewModels.Panels;
|
||||
using Avalonia.Media.Imaging;
|
||||
using Avalonia.Media;
|
||||
|
||||
namespace Aaru.Gui.Models;
|
||||
|
||||
@@ -43,7 +43,7 @@ public sealed class ImageModel : RootModel
|
||||
|
||||
public string Path { get; set; }
|
||||
public string FileName { get; set; }
|
||||
public Bitmap Icon { get; set; }
|
||||
public IImage Icon { get; set; }
|
||||
public ObservableCollection<RootModel> PartitionSchemesOrFileSystems { get; }
|
||||
public IMediaImage Image { get; set; }
|
||||
public ImageInfoViewModel ViewModel { get; set; }
|
||||
|
||||
@@ -51,8 +51,10 @@ using Aaru.Gui.Views.Windows;
|
||||
using Aaru.Helpers;
|
||||
using Aaru.Localization;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Media;
|
||||
using Avalonia.Media.Imaging;
|
||||
using Avalonia.Platform;
|
||||
using Avalonia.Svg;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using Humanizer;
|
||||
using Humanizer.Bytes;
|
||||
@@ -104,10 +106,13 @@ public sealed class ImageInfoViewModel : ViewModelBase
|
||||
var genericFolderIcon =
|
||||
new Bitmap(AssetLoader.Open(new Uri("avares://Aaru.Gui/Assets/Icons/oxygen/32x32/inode-directory.png")));
|
||||
|
||||
var mediaResource = new Uri($"avares://Aaru.Gui/Assets/Logos/Media/{imageFormat.Info.MediaType}.png");
|
||||
var mediaResource = new Uri($"avares://Aaru.Gui/Assets/Logos/Media/{imageFormat.Info.MediaType}.svg");
|
||||
|
||||
MediaLogo = AssetLoader.Exists(mediaResource)
|
||||
? new Bitmap(AssetLoader.Open(mediaResource))
|
||||
? new SvgImage
|
||||
{
|
||||
Source = SvgSource.Load(AssetLoader.Open(mediaResource))
|
||||
}
|
||||
: imageFormat.Info.MetadataMediaType == MetadataMediaType.BlockMedia
|
||||
? genericHddIcon
|
||||
: imageFormat.Info.MetadataMediaType == MetadataMediaType.OpticalDisc
|
||||
@@ -237,9 +242,8 @@ public sealed class ImageInfoViewModel : ViewModelBase
|
||||
}
|
||||
|
||||
if(imageFormat.Info.ReadableMediaTags is { Count: > 0 })
|
||||
{
|
||||
foreach(MediaTagType tag in imageFormat.Info.ReadableMediaTags.Order()) MediaTagsList.Add(tag.Humanize());
|
||||
}
|
||||
foreach(MediaTagType tag in imageFormat.Info.ReadableMediaTags.Order())
|
||||
MediaTagsList.Add(tag.Humanize());
|
||||
|
||||
if(imageFormat.Info.ReadableSectorTags is { Count: > 0 })
|
||||
{
|
||||
@@ -758,8 +762,9 @@ public sealed class ImageInfoViewModel : ViewModelBase
|
||||
try
|
||||
{
|
||||
if(opticalMediaImage.Sessions is { Count: > 0 })
|
||||
foreach(Session session in opticalMediaImage.Sessions)
|
||||
Sessions.Add(session);
|
||||
{
|
||||
foreach(Session session in opticalMediaImage.Sessions) Sessions.Add(session);
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
@@ -769,8 +774,9 @@ public sealed class ImageInfoViewModel : ViewModelBase
|
||||
try
|
||||
{
|
||||
if(opticalMediaImage.Tracks is { Count: > 0 })
|
||||
foreach(Track track in opticalMediaImage.Tracks)
|
||||
Tracks.Add(track);
|
||||
{
|
||||
foreach(Track track in opticalMediaImage.Tracks) Tracks.Add(track);
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
@@ -809,7 +815,7 @@ public sealed class ImageInfoViewModel : ViewModelBase
|
||||
public XboxInfo XboxInfo { get; }
|
||||
public PcmciaInfo PcmciaInfo { get; }
|
||||
public SdMmcInfo SdMmcInfo { get; }
|
||||
public Bitmap MediaLogo { get; }
|
||||
public IImage MediaLogo { get; }
|
||||
public string ImagePathText { get; }
|
||||
public string FilterText { get; }
|
||||
public string ImageIdentifiedText { get; }
|
||||
|
||||
@@ -24,6 +24,7 @@ using Avalonia.Controls.ApplicationLifetimes;
|
||||
using Avalonia.Media.Imaging;
|
||||
using Avalonia.Platform;
|
||||
using Avalonia.Platform.Storage;
|
||||
using Avalonia.Svg;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using JetBrains.Annotations;
|
||||
@@ -147,14 +148,14 @@ public partial class MainWindowViewModel : ViewModelBase
|
||||
|
||||
break;
|
||||
case PartitionModel partitionModel:
|
||||
ContentPanel = new Aaru.Gui.Views.Panels.Partition
|
||||
ContentPanel = new Views.Panels.Partition
|
||||
{
|
||||
DataContext = partitionModel.ViewModel
|
||||
};
|
||||
|
||||
break;
|
||||
case FileSystemModel fileSystemModel:
|
||||
ContentPanel = new Aaru.Gui.Views.Panels.FileSystem
|
||||
ContentPanel = new Views.Panels.FileSystem
|
||||
{
|
||||
DataContext = fileSystemModel.ViewModel
|
||||
};
|
||||
@@ -239,13 +240,16 @@ public partial class MainWindowViewModel : ViewModelBase
|
||||
}
|
||||
|
||||
// Create image model with appropriate icon based on media type
|
||||
var mediaResource = new Uri($"avares://Aaru.Gui/Assets/Logos/Media/{imageFormat.Info.MediaType}.png");
|
||||
var mediaResource = new Uri($"avares://Aaru.Gui/Assets/Logos/Media/{imageFormat.Info.MediaType}.svg");
|
||||
|
||||
var imageModel = new ImageModel
|
||||
{
|
||||
Path = result[0].Path.LocalPath,
|
||||
Icon = AssetLoader.Exists(mediaResource)
|
||||
? new Bitmap(AssetLoader.Open(mediaResource))
|
||||
? new SvgImage
|
||||
{
|
||||
Source = SvgSource.Load(AssetLoader.Open(mediaResource))
|
||||
}
|
||||
: imageFormat.Info.MetadataMediaType == MetadataMediaType.BlockMedia
|
||||
? _genericHddIcon
|
||||
: imageFormat.Info.MetadataMediaType == MetadataMediaType.OpticalDisc
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
<PackageVersion Include="Spectre.Console" Version="0.52.0"/>
|
||||
<PackageVersion Include="Spectre.Console.Cli" Version="0.52.0"/>
|
||||
<PackageVersion Include="Spectre.Console.Json" Version="0.52.0"/>
|
||||
<PackageVersion Include="Svg.Controls.Avalonia" Version="11.3.6.2"/>
|
||||
<PackageVersion Include="System.Collections" Version="4.3.0"/>
|
||||
<PackageVersion Include="System.ComponentModel.Annotations" Version="6.0.0-preview.4.21253.7"/>
|
||||
<PackageVersion Include="System.Diagnostics.Debug" Version="4.3.0"/>
|
||||
|
||||
Reference in New Issue
Block a user