This commit is contained in:
2025-11-16 19:48:28 +01:00
parent 7469d037d5
commit e47d6599b5

View File

@@ -15,8 +15,6 @@ namespace ModpackUpdater.Apps.Manager.Ui;
public partial class MainWindow : Window, IMainApi public partial class MainWindow : Window, IMainApi
{ {
private WorkspaceFeature? wsFeature;
public static IImage? ButtonImageAddAction => AppGlobals.Symbols.GetImageSource(AppSymbols.add); public static IImage? ButtonImageAddAction => AppGlobals.Symbols.GetImageSource(AppSymbols.add);
public static IImage? ButtonImageRemoveAction => AppGlobals.Symbols.GetImageSource(AppSymbols.remove); public static IImage? ButtonImageRemoveAction => AppGlobals.Symbols.GetImageSource(AppSymbols.remove);
@@ -56,7 +54,7 @@ public partial class MainWindow : Window, IMainApi
insertPrioSplitters: true); insertPrioSplitters: true);
} }
private async Task LoadNewWorkspace(IWorkspace? workspace, WorkspaceFeature feature) private async Task LoadNewWorkspace(IWorkspace? workspace)
{ {
if (workspace is null) if (workspace is null)
return; return;
@@ -68,10 +66,7 @@ public partial class MainWindow : Window, IMainApi
} }
if (workspace != Model.CurrentWorkspace) if (workspace != Model.CurrentWorkspace)
{
wsFeature = feature;
Model.CurrentWorkspace = workspace; Model.CurrentWorkspace = workspace;
}
AddToRecentFiles(workspace); AddToRecentFiles(workspace);
LoadRecentWorkspaces(); LoadRecentWorkspaces();
@@ -122,13 +117,13 @@ public partial class MainWindow : Window, IMainApi
var context = new WorkspaceContext(MainApi, null); var context = new WorkspaceContext(MainApi, null);
await feature.Configure(context); await feature.Configure(context);
if (context.Workspace != null) if (context.Workspace != null)
await LoadNewWorkspace(context.Workspace, feature); await LoadNewWorkspace(context.Workspace);
} }
private async void MenuItemRecentWorkspaceItem_Click(object? sender, RoutedEventArgs e) 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) if (sender is MenuItem item && item.DataContext is MainWindowRecentFilesItem tag && tag.Feature.CreateFromConfig(tag.Config) is IWorkspace workspace)
await LoadNewWorkspace(workspace, tag.Feature); await LoadNewWorkspace(workspace);
} }
private void MenuItemToolsItem_Click(object? sender, RoutedEventArgs e) private void MenuItemToolsItem_Click(object? sender, RoutedEventArgs e)
@@ -137,23 +132,73 @@ public partial class MainWindow : Window, IMainApi
func.Execute(new MainApiParameters(this)); func.Execute(new MainApiParameters(this));
} }
private void ButtonAddAction_OnClick(object? sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}
private void ButtonRemoveAction_OnClick(object? sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}
private void MenuItemCreateUpdate_OnClick(object? sender, RoutedEventArgs e) private void MenuItemCreateUpdate_OnClick(object? sender, RoutedEventArgs e)
{ {
throw new NotImplementedException(); if (Model.CurrentWorkspace?.UpdateInfos is null
|| Model.CurrentTreeNodes?.ElementAtOrDefault(1) is not { } nodeUpdates)
return;
var update = new UpdateInfo();
Model.CurrentWorkspace.UpdateInfos.Updates.Add(update);
nodeUpdates.Nodes.Add(new ActionSetTreeNode(update));
} }
private void MenuItemRemoveUpdate_OnClick(object? sender, RoutedEventArgs e) private void MenuItemRemoveUpdate_OnClick(object? sender, RoutedEventArgs e)
{ {
throw new NotImplementedException(); if (Model.CurrentWorkspace?.UpdateInfos is null
|| Model.CurrentTreeNodes?.ElementAtOrDefault(1) is not { } nodeUpdates
|| Model.SelectedTreeNode is not ActionSetTreeNode nodeUpdate
|| nodeUpdate.Infos is not UpdateInfo update)
return;
nodeUpdates.Nodes.Remove(nodeUpdate);
Model.CurrentWorkspace.UpdateInfos.Updates.Remove(update);
}
private void ButtonAddAction_OnClick(object? sender, RoutedEventArgs e)
{
if (Model.CurrentWorkspace?.InstallInfos is not { } rootInfos
|| Model.SelectedTreeNode is not ActionSetTreeNode nodeUpdate
|| Model.CurrentGridRows is not { } rows)
return;
InstallAction action;
switch (nodeUpdate.Infos)
{
case UpdateInfo updateInfos:
updateInfos.Actions.Add((UpdateAction)(action = new UpdateAction()));
break;
case InstallInfos installInfos:
installInfos.Actions.Add(action = new InstallAction());
break;
default:
return;
}
rows.Add(new MainWindowGridRow(action, rootInfos));
}
private void ButtonRemoveAction_OnClick(object? sender, RoutedEventArgs e)
{
if (Model.SelectedGridRow is not { } row
|| Model.SelectedTreeNode is not ActionSetTreeNode nodeUpdate
|| Model.CurrentGridRows is not { } rows)
return;
switch (nodeUpdate.Infos)
{
case UpdateInfo updateInfos:
if (row.Action is UpdateAction action)
updateInfos.Actions.Remove(action);
break;
case InstallInfos installInfos:
installInfos.Actions.Remove(row.Action);
break;
default:
return;
}
rows.Remove(row);
} }
} }