progressbar tweaks

This commit is contained in:
2025-11-17 15:51:50 +01:00
parent ea8d1522f1
commit d68df750a6
6 changed files with 96 additions and 71 deletions

View File

@@ -1,5 +1,4 @@
using Avalonia.Controls;
using Avalonia.Data;
using Avalonia.Interactivity;
using Avalonia.Media;
using ModpackUpdater.Apps.Manager.Api;
@@ -7,7 +6,6 @@ using ModpackUpdater.Apps.Manager.Api.Model;
using ModpackUpdater.Apps.Manager.Api.Plugins.Features;
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
using ModpackUpdater.Apps.Manager.Settings;
using ModpackUpdater.Apps.Manager.Ui.Models;
using ModpackUpdater.Apps.Manager.Ui.Models.MainWindow;
using Pilz.Features;
using Pilz.UI.AvaloniaUI.Features;
@@ -19,6 +17,8 @@ public partial class MainWindow : Window, IMainApi
{
public static IImage? ButtonImageAddAction => AppGlobals.Symbols.GetImageSource(AppSymbols.add);
public static IImage? ButtonImageRemoveAction => AppGlobals.Symbols.GetImageSource(AppSymbols.remove);
private WorkspaceFeature? curWs;
public MainWindowViewModel Model { get; } = new();
Window IMainApi.MainWindow => this;
@@ -57,19 +57,19 @@ public partial class MainWindow : Window, IMainApi
insertPrioSplitters: true);
}
private async Task LoadNewWorkspace(IWorkspace? workspace)
private async Task LoadNewWorkspace(IWorkspace? workspace, WorkspaceFeature feature)
{
if (workspace is null)
return;
if (!await workspace.Load())
{
// Error
return;
}
if (workspace != Model.CurrentWorkspace)
{
Model.CurrentWorkspace = workspace;
curWs = feature;
}
AddToRecentFiles(workspace);
LoadRecentWorkspaces();
@@ -124,14 +124,33 @@ public partial class MainWindow : Window, IMainApi
var context = new WorkspaceContext(MainApi, null);
await feature.Configure(context);
if (context.Workspace != null)
await LoadNewWorkspace(context.Workspace);
await LoadNewWorkspace(context.Workspace, feature);
}
private async void MenuItemWorkspacePreferences_OnClick(object? sender, RoutedEventArgs e)
{
if (curWs is null || Model.CurrentWorkspace is null)
return;
var context = new WorkspaceContext(MainApi, Model.CurrentWorkspace);
await curWs.Configure(context);
await LoadNewWorkspace(context.Workspace, curWs);
}
private async void MenuItemSaveWorkspace_OnClick(object? sender, RoutedEventArgs e)
{
if (Model.CurrentWorkspace is not { } ws)
return;
Model.Progress.Start();
await ws.Save();
Model.Progress.End();
}
private async void MenuItemRecentWorkspaceItem_Click(object? sender, RoutedEventArgs e)
{
if (sender is MenuItem item && item.DataContext is MainWindowRecentFilesItem tag && tag.Feature.CreateFromConfig(tag.Config) is IWorkspace workspace)
await LoadNewWorkspace(workspace);
await LoadNewWorkspace(workspace, tag.Feature);
}
private void MenuItemToolsItem_Click(object? sender, RoutedEventArgs e)