Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/RomManager/AppLogger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;

namespace RomManager;

public static class AppLogger
{
// Globally accessible static logger instance
public static ILogger Instance { get; private set; } = NullLogger.Instance;

public static void Initialize(ILoggerFactory factory)
{
// Creates a named logger for your static context
Instance = factory.CreateLogger("GlobalApplication");
}
}
Binary file added src/RomManager/Assets/Icons/Games/favourite.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/RomManager/Assets/Icons/Games/unfavourite.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
59 changes: 59 additions & 0 deletions src/RomManager/Converters/FavouriteToImageConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Globalization;
using Avalonia.Data.Converters;
using Avalonia.Media;
using Avalonia.Media.Imaging;
using Avalonia.Platform;
using RomManager.Core.RegionDetection;

namespace RomManager.Converters;

public sealed class FavouriteToImageConverter : IValueConverter
{

private IImage? _favourite;
private IImage? _unfavourite;




public FavouriteToImageConverter()
{
_favourite = LoadImage("favourite.png");
_unfavourite = LoadImage("unfavourite.png");
}

private static IImage? LoadImage(string fileName)
{
try
{
var uri = new Uri($"avares://RomManager/Assets/Icons/Games/{fileName}");
using var stream = AssetLoader.Open(uri);

Check notice on line 33 in src/RomManager/Converters/FavouriteToImageConverter.cs

View check run for this annotation

codefactor.io / CodeFactor

src/RomManager/Converters/FavouriteToImageConverter.cs#L33

Code should not contain multiple blank lines in a row. (SA1507)
return new Bitmap(stream);
}
catch (Exception)
{
return null;
}
}
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)

Check notice on line 41 in src/RomManager/Converters/FavouriteToImageConverter.cs

View check run for this annotation

codefactor.io / CodeFactor

src/RomManager/Converters/FavouriteToImageConverter.cs#L41

An opening brace should not be followed by a blank line. (SA1505)
{
if (value is not bool icon)
{
return null;
}

return icon ? _favourite : _unfavourite;
}

public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
{
throw new NotSupportedException();
}

Check notice on line 55 in src/RomManager/Converters/FavouriteToImageConverter.cs

View check run for this annotation

codefactor.io / CodeFactor

src/RomManager/Converters/FavouriteToImageConverter.cs#L55

Code should not contain multiple blank lines in a row. (SA1507)



}

Check notice on line 59 in src/RomManager/Converters/FavouriteToImageConverter.cs

View check run for this annotation

codefactor.io / CodeFactor

src/RomManager/Converters/FavouriteToImageConverter.cs#L59

A closing brace should not be preceded by a blank line. (SA1508)
8 changes: 6 additions & 2 deletions src/RomManager/Models/Game.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using Avalonia.Media;
using Avalonia.Media.Imaging;
using Avalonia.Platform;
using CommunityToolkit.Mvvm.ComponentModel;
using RomManager.Core.RegionDetection;
using RomManager.Models.FileTypes;
Expand All @@ -19,12 +21,13 @@
private IEnumerable<IHasFilename> _files = [];

[ObservableProperty] private IImage? _coverArt;
[ObservableProperty] private GameInfo? _info;
[ObservableProperty] private GameInfo? _info ;

[ObservableProperty] private SystemInfo[] _systems;

[ObservableProperty] private Region[] _regions = [Region.Unknown];


public void Load()
{
var art = Files.OfType<CoverArtImage>().FirstOrDefault();
Expand All @@ -32,7 +35,8 @@
{
CoverArt = new Bitmap(art.Filename);
}

Check notice on line 38 in src/RomManager/Models/Game.cs

View check run for this annotation

codefactor.io / CodeFactor

src/RomManager/Models/Game.cs#L38

Code should not contain multiple blank lines in a row. (SA1507)

Systems = Files.OfType<RomFile>().Select(f => f.SystemInfo).ToArray();

// Detect regions from the ROM file
Expand Down
1 change: 1 addition & 0 deletions src/RomManager/Models/SystemInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@
{
GameInfo gameInfo;
if (!GameList.GamesByFilename.TryGetValue(System.IO.Path.GetFileName(file), out gameInfo))
{

Check notice on line 75 in src/RomManager/Models/SystemInfo.cs

View check run for this annotation

codefactor.io / CodeFactor

src/RomManager/Models/SystemInfo.cs#L75

An opening brace should not be followed by a blank line. (SA1505)

gameInfo = new GameInfo { Path = file, Name = System.IO.Path.GetFileNameWithoutExtension(file) };
}

Expand Down
11 changes: 10 additions & 1 deletion src/RomManager/Pages/LibraryPage.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<converters:SystemIconNameToImageConverter x:Key="SystemIconNameToImageConverter" />
<converters:RegionToImageConverter x:Key="RegionToImageConverter" />
<converters:FilterComboBoxItemToTextConverter x:Key="FilterComboBoxItemToTextConverter" />
<converters:FavouriteToImageConverter x:Key="FavouriteToImageConverter" />
</UserControl.Resources>

<Grid RowDefinitions="Auto,Auto,*,Auto" RowSpacing="8">
Expand Down Expand Up @@ -149,11 +150,19 @@
Width="18" HorizontalAlignment="Center" VerticalAlignment="Center"
Height="18"
ToolTip.Tip="{Binding Name}" />

</Border>
</DataTemplate>

</ItemsControl.ItemTemplate>
</ItemsControl>

<!--
<Image Source="{Binding FavouritePAth}"
Width="18" HorizontalAlignment="Right" VerticalAlignment="Top"
Height="18" IsVisible="True" />-->
<Image Source="{Binding Info.IsFavorite ,Converter={StaticResource FavouriteToImageConverter }}"
Width="18" HorizontalAlignment="Right" VerticalAlignment="Top"
Height="18" IsVisible="True" />
<ItemsControl ItemsSource="{Binding Regions}"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Expand Down
16 changes: 16 additions & 0 deletions src/RomManager/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
using Avalonia.Controls;
using RomManager.Hosting;
using Velopack;
using Microsoft.Extensions.Logging;
using RomManager;

Check notice on line 9 in src/RomManager/Program.cs

View check run for this annotation

codefactor.io / CodeFactor

src/RomManager/Program.cs#L9

Code should not contain multiple blank lines in a row. (SA1507)

namespace RomManager;

Expand All @@ -24,6 +27,8 @@
return;
}

InitialiseLoggerFactory();

if (!Design.IsDesignMode)
{
VelopackApp
Expand All @@ -42,4 +47,15 @@
.UsePlatformDetect()
.WithInterFont()
.LogToTrace();
public static void InitialiseLoggerFactory()
{
using ILoggerFactory factory = LoggerFactory.Create(builder =>
{
builder.AddConsole();
builder.SetMinimumLevel(LogLevel.Debug);
});
AppLogger.Initialize(factory);
AppLogger.Instance.LogInformation("Application started via static pipeline.");
}
}

2 changes: 2 additions & 0 deletions src/RomManager/ViewModels/LibraryPageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@
[ObservableProperty] private int _pageCount = 1;
[ObservableProperty] private int _pageSize = 30;
[ObservableProperty] private int _filteredGamesCount;

Check notice on line 30 in src/RomManager/ViewModels/LibraryPageViewModel.cs

View check run for this annotation

codefactor.io / CodeFactor

src/RomManager/ViewModels/LibraryPageViewModel.cs#L30

Code should not contain multiple blank lines in a row. (SA1507)


public LibraryPageViewModel(Core.RomManager romManager, FilenameFilterBuilder filenameFilterBuilder, IOptions<PathsConfiguration> pathsConfiguration)
{
_filenameFilterBuilder = filenameFilterBuilder;
Expand Down