some work
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user