add options to update and clear direct links
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui;
|
||||
using Pilz.Plugins.Advanced;
|
||||
using Telerik.WinControls.UI;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.CM;
|
||||
|
||||
internal class ClearDirectLinkFeature : PluginFunction, IPluginFeatureProvider<ClearDirectLinkFeature>
|
||||
{
|
||||
public static ClearDirectLinkFeature Instance { get; } = new();
|
||||
|
||||
public ClearDirectLinkFeature() : base(FeatureTypes.ActionsContextMenu, "origin.cleardirectlink", FeatureNamesLangRes.ClearDirectLinkFeature)
|
||||
{
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p
|
||||
|| p.Api.MainWindow is not MainForm mainForm
|
||||
|| mainForm.Controls.Find("radGridView_Actions", true).FirstOrDefault() is not RadGridView gridView
|
||||
|| gridView.SelectedRows.FirstOrDefault()?.Tag is not InstallAction selectedAction)
|
||||
return null;
|
||||
|
||||
SharedFunctions.ClearDirectLinks(p.Api, selectedAction);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using ModpackUpdater.Apps.Manager.Ui;
|
||||
using Pilz.Plugins.Advanced;
|
||||
using Telerik.WinControls.UI;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.CM;
|
||||
|
||||
internal class UpdateDirectLinkFeature : PluginFunction, IPluginFeatureProvider<UpdateDirectLinkFeature>
|
||||
{
|
||||
public static UpdateDirectLinkFeature Instance { get; } = new();
|
||||
|
||||
public UpdateDirectLinkFeature() : base(FeatureTypes.ActionsContextMenu, "origin.updatedirectlink", FeatureNamesLangRes.UpdateDirectLinkFeature)
|
||||
{
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p
|
||||
|| p.Api.MainWindow is not MainForm mainForm
|
||||
|| mainForm.Controls.Find("radGridView_Actions", true).FirstOrDefault() is not RadGridView gridView
|
||||
|| gridView.SelectedRows.FirstOrDefault()?.Tag is not InstallAction selectedAction)
|
||||
return null;
|
||||
|
||||
SharedFunctions.FindNewDirectLinks(p.Api, selectedAction);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Model;
|
||||
using ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
using ModpackUpdater.Apps.Manager.Ui;
|
||||
using ModpackUpdater.Manager;
|
||||
using Pilz.UI.Extensions;
|
||||
@@ -24,6 +23,7 @@ internal static class SharedFunctions
|
||||
|
||||
var failed = false;
|
||||
var msg = default(string);
|
||||
var factory = new ModpackFactory();
|
||||
|
||||
var rows = new Dictionary<GridViewRowInfo, InstallAction>();
|
||||
for (var i = 0; i < selectedRows.Length; i++)
|
||||
@@ -36,7 +36,6 @@ internal static class SharedFunctions
|
||||
{
|
||||
try
|
||||
{
|
||||
var factory = new ModpackFactory();
|
||||
var result = await factory.ResolveSourceUrl(action);
|
||||
failed = string.IsNullOrWhiteSpace(result);
|
||||
}
|
||||
@@ -107,4 +106,52 @@ internal static class SharedFunctions
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void FindNewDirectLinks(IMainApi api, params InstallAction[] actions)
|
||||
{
|
||||
var mainForm = api.MainWindow as MainForm;
|
||||
var gridView = mainForm?.Controls.Find("radGridView_Actions", true).FirstOrDefault() as RadGridView;
|
||||
var rwb = mainForm?.Controls.Find("radWaitingBar_Actions", true).FirstOrDefault() as RadWaitingBar;
|
||||
var factory = new ModpackFactory();
|
||||
|
||||
rwb?.StartWaiting();
|
||||
gridView?.BeginUpdate();
|
||||
|
||||
foreach (var action in actions)
|
||||
{
|
||||
if (action.SourceType != SourceType.DirectLink)
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
action.SourceUrl = await factory.ResolveSourceUrl(action);
|
||||
}).Wait();
|
||||
api.UpdateItem(action);
|
||||
}
|
||||
}
|
||||
|
||||
gridView?.EndUpdate();
|
||||
rwb?.StopWaiting();
|
||||
}
|
||||
|
||||
public static void ClearDirectLinks(IMainApi api, params InstallAction[] actions)
|
||||
{
|
||||
var mainForm = api.MainWindow as MainForm;
|
||||
var gridView = mainForm?.Controls.Find("radGridView_Actions", true).FirstOrDefault() as RadGridView;
|
||||
var rwb = mainForm?.Controls.Find("radWaitingBar_Actions", true).FirstOrDefault() as RadWaitingBar;
|
||||
|
||||
rwb?.StartWaiting();
|
||||
gridView?.BeginUpdate();
|
||||
|
||||
foreach (var action in actions)
|
||||
{
|
||||
if (action.SourceType != SourceType.DirectLink)
|
||||
{
|
||||
action.SourceUrl = null;
|
||||
api.UpdateItem(action);
|
||||
}
|
||||
}
|
||||
|
||||
gridView?.EndUpdate();
|
||||
rwb?.StopWaiting();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using Pilz.Plugins.Advanced;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
|
||||
internal class ClearDirectLinksFeature : PluginFunction, IPluginFeatureProvider<ClearDirectLinksFeature>
|
||||
{
|
||||
public static ClearDirectLinksFeature Instance { get; } = new();
|
||||
|
||||
public ClearDirectLinksFeature() : base(FeatureTypes.Tools, "origin.cleardirectlinks", FeatureNamesLangRes.ClearDirectLinksFeature)
|
||||
{
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p || p.Api.CurWorkspace?.InstallInfos is null)
|
||||
return null;
|
||||
|
||||
SharedFunctions.ClearDirectLinks(p.Api, [.. p.Api.CurWorkspace.InstallInfos.Actions]);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using ModpackUpdater.Apps.Manager.Api.Plugins.Params;
|
||||
using ModpackUpdater.Apps.Manager.LangRes;
|
||||
using Pilz.Plugins.Advanced;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
|
||||
internal class UpdateDirectLinksFeature : PluginFunction, IPluginFeatureProvider<UpdateDirectLinksFeature>
|
||||
{
|
||||
public static UpdateDirectLinksFeature Instance { get; } = new();
|
||||
|
||||
public UpdateDirectLinksFeature() : base(FeatureTypes.Tools, "origin.updatedirectlinks", FeatureNamesLangRes.UpdateDirectLinksFeature)
|
||||
{
|
||||
}
|
||||
|
||||
protected override object? ExecuteFunction(PluginFunctionParameter? @params)
|
||||
{
|
||||
if (@params is not MainApiParameters p || p.Api.CurWorkspace?.InstallInfos is null)
|
||||
return null;
|
||||
|
||||
SharedFunctions.FindNewDirectLinks(p.Api, [.. p.Api.CurWorkspace.InstallInfos.Actions]);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -78,6 +78,24 @@ namespace ModpackUpdater.Apps.Manager.LangRes {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Clear direct link ähnelt.
|
||||
/// </summary>
|
||||
internal static string ClearDirectLinkFeature {
|
||||
get {
|
||||
return ResourceManager.GetString("ClearDirectLinkFeature", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Clear direct links ähnelt.
|
||||
/// </summary>
|
||||
internal static string ClearDirectLinksFeature {
|
||||
get {
|
||||
return ResourceManager.GetString("ClearDirectLinksFeature", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die GitLab workspace ähnelt.
|
||||
/// </summary>
|
||||
@@ -96,6 +114,24 @@ namespace ModpackUpdater.Apps.Manager.LangRes {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Update direct link ähnelt.
|
||||
/// </summary>
|
||||
internal static string UpdateDirectLinkFeature {
|
||||
get {
|
||||
return ResourceManager.GetString("UpdateDirectLinkFeature", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Update direct links ähnelt.
|
||||
/// </summary>
|
||||
internal static string UpdateDirectLinksFeature {
|
||||
get {
|
||||
return ResourceManager.GetString("UpdateDirectLinksFeature", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Find updates ähnelt.
|
||||
/// </summary>
|
||||
|
||||
@@ -123,12 +123,24 @@
|
||||
<data name="CheckSingleActionHealthy" xml:space="preserve">
|
||||
<value>Check healthy</value>
|
||||
</data>
|
||||
<data name="ClearDirectLinkFeature" xml:space="preserve">
|
||||
<value>Clear direct link</value>
|
||||
</data>
|
||||
<data name="ClearDirectLinksFeature" xml:space="preserve">
|
||||
<value>Clear direct links</value>
|
||||
</data>
|
||||
<data name="GitLabWorkspace" xml:space="preserve">
|
||||
<value>GitLab workspace</value>
|
||||
</data>
|
||||
<data name="UpdateCollectorFeature" xml:space="preserve">
|
||||
<value>Find update</value>
|
||||
</data>
|
||||
<data name="UpdateDirectLinkFeature" xml:space="preserve">
|
||||
<value>Update direct link</value>
|
||||
</data>
|
||||
<data name="UpdateDirectLinksFeature" xml:space="preserve">
|
||||
<value>Update direct links</value>
|
||||
</data>
|
||||
<data name="UpdatesCollectorFeature" xml:space="preserve">
|
||||
<value>Find updates</value>
|
||||
</data>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
namespace ModpackUpdater.Apps.Manager.Ui;
|
||||
|
||||
partial class UpdatesCollectorUi
|
||||
{
|
||||
@@ -1,7 +1,7 @@
|
||||
using ModpackUpdater.Manager;
|
||||
using Telerik.WinControls.UI;
|
||||
|
||||
namespace ModpackUpdater.Apps.Manager.Features.Tools;
|
||||
namespace ModpackUpdater.Apps.Manager.Ui;
|
||||
|
||||
public partial class UpdatesCollectorUi : RadForm
|
||||
{
|
||||
Reference in New Issue
Block a user