some work

This commit is contained in:
2024-09-07 09:45:38 +02:00
parent f6219c0aa8
commit 043b14e9a9
32 changed files with 356 additions and 163 deletions

View File

@@ -1,10 +1,12 @@
using ModpackUpdater.Apps.Manager.Api.Model;
using ModpackUpdater.Apps.Manager.Api.Plugins.Features;
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
using ModpackUpdater.Apps.Manager.LangRes;
using ModpackUpdater.Apps.Manager.Settings;
using Pilz.Plugins.Advanced;
using Pilz.Plugins.Advanced.UI.Telerik;
using Pilz.UI.Symbols;
using Telerik.WinControls;
using Telerik.WinControls.UI;
namespace ModpackUpdater.Apps.Manager;
@@ -12,9 +14,11 @@ namespace ModpackUpdater.Apps.Manager;
public partial class Form1 : RadForm, IMainApi
{
private IWorkspace? workspace;
public IWorkspace? Workspace => workspace;
private record RecentFileItemTag(WorkspaceConfig Config, WorkspaceFeature Feature);
public Form1()
{
InitializeComponent();
@@ -38,12 +42,19 @@ public partial class Form1 : RadForm, IMainApi
radMenuItem_RecentWorkspaces.Items.Clear();
foreach (var config in settings.Workspaces)
foreach (var config in settings.Workspaces.ToArray())
{
if (PluginFeatureController.Instance.Features.Get(FeatureTypes.Workspace).OfType<WorkspaceFeature>().FirstOrDefault(n => n.Identifier == config.ProviderId) is not WorkspaceFeature feature)
{
settings.Workspaces.Remove(config);
continue;
}
var item = new RadMenuItem
{
Text = config.DisplayText,
Tag = config,
Tag = new RecentFileItemTag(config, feature),
SvgImage = feature.Icon as RadSvgImage,
};
item.Click += RadMenuItem_OpenRecentWorkspace_Click;
@@ -52,9 +63,9 @@ public partial class Form1 : RadForm, IMainApi
}
if (radMenuItem_RecentWorkspaces.Items.Any())
radMenuItem_RecentWorkspaces.Visibility = Telerik.WinControls.ElementVisibility.Visible;
radMenuItem_RecentWorkspaces.Visibility = ElementVisibility.Visible;
else
radMenuItem_RecentWorkspaces.Visibility = Telerik.WinControls.ElementVisibility.Collapsed;
radMenuItem_RecentWorkspaces.Visibility = ElementVisibility.Collapsed;
}
private void AddToRecentFiles(IWorkspace workspace)
@@ -79,15 +90,44 @@ public partial class Form1 : RadForm, IMainApi
AddToRecentFiles(workspace);
Invoke(LoadRecentWorkspaces);
radWaitingBar_Updates.StartWaiting();
if (!await workspace.Load())
{
radWaitingBar_Updates.StopWaiting();
return;
}
Invoke(LoadWorkspace);
}
private void LoadWorkspace()
{
// ...
if (workspace?.Config is null || workspace.InstallInfos is null || workspace.UpdateInfos is null)
return;
radWaitingBar_Updates.StartWaiting();
Text = workspace.Config.DisplayText;
radTreeView_Updates.BeginUpdate();
radTreeView_Updates.Nodes.Clear();
radTreeView_Updates.Nodes.Add(new RadTreeNode
{
Text = string.Format(GeneralLangRes.Node_Install, workspace.InstallInfos.Version.ToString()),
Tag = workspace.InstallInfos,
});
foreach (var update in workspace.UpdateInfos.Updates)
{
radTreeView_Updates.Nodes.Add(new RadTreeNode
{
Text = string.Format(GeneralLangRes.Node_Update, update.Version.ToString()),
Tag = update,
});
}
radTreeView_Updates.EndUpdate();
radWaitingBar_Updates.StopWaiting();
}
private void LoadActionSet()
@@ -108,9 +148,7 @@ public partial class Form1 : RadForm, IMainApi
private async void RadMenuItem_OpenRecentWorkspace_Click(object? sender, EventArgs e)
{
if (sender is RadMenuItem item && item.Tag is WorkspaceConfig config
&& PluginFeatureController.Instance.Features.Get(FeatureTypes.Workspace).OfType<WorkspaceFeature>().FirstOrDefault(n => n.Identifier == config.ProviderId) is WorkspaceFeature feature
&& feature.CreateFromSettings(config) is IWorkspace workspace)
if (sender is RadMenuItem item && item.Tag is RecentFileItemTag tag && tag.Feature.CreateFromConfig(tag.Config) is IWorkspace workspace)
await LoadNewWorkspace(workspace);
}