Skip to content

Commit a95a8bc

Browse files
Merge pull request #49 from MattEqualsCoder/smz3-changes
v2.0.1 Changes
2 parents 8a96a18 + 66d051d commit a95a8bc

23 files changed

+187
-59
lines changed

MSURandomizer/MSURandomizer.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
77
<ApplicationManifest>app.manifest</ApplicationManifest>
88
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
9-
<PackageIcon>MSURandomizerIcon.ico</PackageIcon>
10-
<Version>2.0.0</Version>
9+
<Version>2.0.1-rc.1</Version>
1110
<ApplicationIcon>MSURandomizerIcon.ico</ApplicationIcon>
11+
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
12+
<PackageId>MattEqualsCoder.MSURandomizer.Avalonia</PackageId>
1213
</PropertyGroup>
1314

1415
<ItemGroup>
@@ -30,7 +31,7 @@
3031

3132
<ItemGroup>
3233
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
33-
<PackageReference Include="MattEqualsCoder.AvaloniaControls" Version="0.9.5" />
34+
<PackageReference Include="MattEqualsCoder.AvaloniaControls" Version="0.9.14" />
3435
<PackageReference Include="MattEqualsCoder.GitHubReleaseChecker" Version="1.1.2" />
3536
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
3637
<PackageReference Include="ReactiveUI.Fody" Version="19.5.41" />
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
using AvaloniaControls.ControlServices;
2+
using AvaloniaControls.Extensions;
23
using Microsoft.Extensions.DependencyInjection;
34
using MSURandomizer.Views;
45
using MSURandomizer.Services;
6+
using MSURandomizerLibrary;
57

68
namespace MSURandomizer;
79

810
public static class MsuRandomizerAppServiceExtensions
911
{
1012
public static IServiceCollection AddMsuRandomizerAppServices(this IServiceCollection services)
1113
{
12-
services.AddSingleton<MsuWindow>();
14+
services.AddSingleton<AppInitializationService>();
15+
services.AddTransient<MsuWindow>();
1316
services.AddTransient<MsuList>();
17+
services.AddAvaloniaControlServices<Program>();
18+
services.AddMsuRandomizerServices();
1419
return services;
1520
}
1621
}

MSURandomizer/Program.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,7 @@ public static void Main(string[] args)
6060
})
6161
.ConfigureServices(services =>
6262
{
63-
services.AddAvaloniaControlServices<Program>();
64-
services.AddMsuRandomizerServices();
6563
services.AddMsuRandomizerAppServices();
66-
services.AddSingleton<AppInitializationService>();
6764
services.AddGitHubReleaseCheckerServices();
6865
})
6966
.Build();

MSURandomizer/Services/AppInitializationService.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ public class AppInitializationService(
2323
{
2424
public void Initialize(string[] args)
2525
{
26+
if (!IsEnabled)
27+
{
28+
return;
29+
}
30+
2631
msuRandomizerInitializationService.Initialize(new MsuRandomizerInitializationRequest()
2732
{
2833
InitializeAppSettings = true,
@@ -55,8 +60,16 @@ public void Initialize(string[] args)
5560
}
5661
}
5762

63+
public bool IsEnabled { get; set; } = true;
64+
5865
public void FinishInitialization()
5966
{
67+
if (!IsEnabled)
68+
{
69+
IsLoading = false;
70+
return;
71+
}
72+
6073
Task.Run(() =>
6174
{
6275
_ = VerifyVersionNumber();

MSURandomizer/Services/MsuMonitorWindowService.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
using System;
2+
using System.IO;
23
using System.Linq;
34
using AutoMapper;
45
using AvaloniaControls;
56
using AvaloniaControls.ControlServices;
67
using AvaloniaControls.Services;
78
using Microsoft.Extensions.Logging;
89
using MSURandomizer.ViewModels;
10+
using MSURandomizerLibrary;
911
using MSURandomizerLibrary.Configs;
1012
using MSURandomizerLibrary.Models;
1113
using MSURandomizerLibrary.Services;
@@ -37,6 +39,9 @@ public MsuMonitorWindowViewModel InitializeModel()
3739
return _model;
3840
}
3941

42+
public string RestoreFilePath =>
43+
Path.Combine(msuAppSettingsService.MsuAppSettings.SaveDataDirectory.ExpandSpecialFolders(), "msu-monitor.json");
44+
4045
public void StartMonitor(Msu? msu = null, MsuType? outputMsuType = null)
4146
{
4247
if (msu == null)

MSURandomizer/Services/MsuWindowService.cs

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.IO;
34
using System.Linq;
45
using Avalonia.Threading;
56
using AvaloniaControls.Controls;
@@ -27,7 +28,10 @@ public class MsuWindowService(ILogger<MsuWindowService> logger,
2728
IRomCopyService romCopyService) : ControlService
2829
{
2930
public MsuWindowViewModel Model { get; set; } = new();
30-
31+
32+
public string RestoreFilePath =>
33+
Path.Combine(appSettings.MsuAppSettings.SaveDataDirectory.ExpandSpecialFolders(), "main-window.json");
34+
3135
public event EventHandler? MsuMonitorStarted;
3236

3337
public event EventHandler? MsuMonitorStopped;
@@ -62,9 +66,20 @@ public MsuWindowViewModel InitializeModel()
6266
Model.CanDisplayRandomMsuButton = settings.MsuWindowDisplayRandomButton == true;
6367
Model.CanDisplayShuffledMsuButton = settings.MsuWindowDisplayShuffleButton == true;
6468
Model.CanDisplayContinuousShuffleButton = settings.MsuWindowDisplayContinuousButton == true;
69+
Model.CanDisplaySelectMsuButton = settings.MsuWindowDisplaySelectButton == true;
6570
Model.CanDisplayCancelButton = settings.MsuWindowDisplaySelectButton == true;
66-
Model.HasMsuFolder = userOptions.MsuUserOptions.HasMsuFolder();
6771
Model.IsHardwareModeButtonVisible = !appSettings.MsuAppSettings.DisableHardwareMode;
72+
Model.MsuWindowDisplayOptionsButton = appSettings.MsuAppSettings.MsuWindowDisplayOptionsButton != false;
73+
Model.HasMsuFolder = Model.MsuWindowDisplayOptionsButton && userOptions.MsuUserOptions.HasMsuFolder();
74+
Model.AreMsusLoading = msuLookupService.Status is MsuLoadStatus.Default or MsuLoadStatus.Loading;
75+
76+
if (!string.IsNullOrEmpty(settings.ForcedMsuType))
77+
{
78+
Model.SelectedMsuType = settings.ForcedMsuType;
79+
Model.DisplayMsuTypeComboBox = false;
80+
Model.FilterColumnIndex = 0;
81+
}
82+
6883
return Model;
6984
}
7085

@@ -273,6 +288,16 @@ public bool GenerateMsu(out string error, out bool openContinuousWindow, out Msu
273288

274289
public bool ShouldOpenMonitorWindow => userOptions.MsuUserOptions.OpenMonitorWindow;
275290

291+
public void SetMsuBasePath(string? msuBasePath)
292+
{
293+
if (string.IsNullOrEmpty(msuBasePath) || !Directory.Exists(msuBasePath))
294+
{
295+
return;
296+
}
297+
298+
userOptions.MsuUserOptions.DefaultMsuPath = msuBasePath;
299+
}
300+
276301
public MsuType? GetMsuType(string msuTypeName)
277302
{
278303
return msuTypeService.GetMsuType(msuTypeName);

MSURandomizer/ViewModels/MsuListViewModel.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System.Collections.Generic;
2+
using Avalonia.Controls;
3+
using AvaloniaControls.Models;
24
using MSURandomizerLibrary.Configs;
35
using ReactiveUI.Fody.Helpers;
46

@@ -25,4 +27,11 @@ public class MsuListViewModel : ViewModelBase
2527
[Reactive] public bool IsMsuMonitorDisabled { get; set; }
2628

2729
[Reactive] public bool HardwareMode { get; set; }
30+
31+
[Reactive]
32+
[ReactiveLinkedProperties(nameof(SelectionMode))]
33+
public bool IsSingleSelectionMode { get; set; }
34+
35+
public SelectionMode SelectionMode =>
36+
IsSingleSelectionMode ? SelectionMode.Single : SelectionMode.Multiple | SelectionMode.Toggle;
2837
}

MSURandomizer/ViewModels/MsuWindowViewModel.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ public class MsuWindowViewModel : ViewModelBase
2929
[Reactive] public bool WasClosed { get; set; }
3030

3131
[Reactive] public bool IsHardwareModeButtonVisible { get; set; } = true;
32+
33+
[Reactive] public bool MsuWindowDisplayOptionsButton { get; set; } = true;
34+
35+
[Reactive] public bool DisplayMsuTypeComboBox { get; set; } = true;
3236

3337
[Reactive]
3438
[ReactiveLinkedProperties(nameof(IsShuffledMsuButtonVisible), nameof(IsContinuousShuffleButtonVisible))]
@@ -62,6 +66,9 @@ public class MsuWindowViewModel : ViewModelBase
6266
[Reactive]
6367
[ReactiveLinkedProperties(nameof(HasGitHubUrl))]
6468
public string? GitHubUrl { get; set; }
69+
70+
[Reactive]
71+
public bool IsSingleSelectionMode { get; set; }
6572

6673
public bool IsSelectMsuEnabled => MsuCount > 0 && !AreMsusLoading && !IsMsuMonitorActive;
6774

@@ -82,4 +89,6 @@ public class MsuWindowViewModel : ViewModelBase
8289
public bool HasGitHubUrl => !string.IsNullOrEmpty(GitHubUrl);
8390

8491
public bool HasMsuFolder { get; set; }
92+
93+
public int FilterColumnIndex { get; set; } = 1;
8594
}

MSURandomizer/Views/MsuList.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
</StackPanel>
2222
<ListBox IsVisible="{Binding !IsLoading}"
2323
ItemsSource="{Binding FilteredMsus}"
24-
SelectionMode="Multiple,Toggle"
24+
SelectionMode="{Binding SelectionMode}"
2525
SelectedItems="{Binding SelectedMsus}"
2626
BorderThickness="0"
2727
SelectionChanged="SelectingItemsControl_OnSelectionChanged"

MSURandomizer/Views/MsuList.axaml.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ public int? SelectedMsuCount
6565
set => SetValue(SelectedMsuCountProperty, value);
6666
}
6767

68+
public void SetIsSingleSelectionMode(bool value)
69+
{
70+
_model.IsSingleSelectionMode = value;
71+
}
72+
6873
public void FilterMSUs(MsuType msuType, MsuFilter msuFilter)
6974
{
7075
_service?.FilterMSUs(msuType, msuFilter);

0 commit comments

Comments
 (0)