diff --git a/LANCommander/Components/ActionEditor.razor b/LANCommander/Components/ActionEditor.razor
index 5b3d7b1..18de7bc 100644
--- a/LANCommander/Components/ActionEditor.razor
+++ b/LANCommander/Components/ActionEditor.razor
@@ -1,141 +1,114 @@
@using LANCommander.Data.Models
@using LANCommander.Extensions
+@inject IDialogService DialogService
-@{
- int i = 0;
-}
-
+
+ Add
+
@code {
- [Parameter] public List Actions { get; set; }
- [Parameter] public Guid GameId { get; set; }
+ [Parameter] public IEnumerable Actions { get; set; }
+ [Parameter] public Guid ArchiveId { get; set; }
- protected override void OnInitialized()
+ private List OrderedActions { get; set; }
+
+ protected override async Task OnInitializedAsync()
{
- Actions = Actions.OrderBy(a => a.SortOrder).ToList();
-
- FixSortOrders();
-
- base.OnInitialized();
+ OrderedActions = Actions.OrderBy(a => a.SortOrder).ToList();
}
private void AddAction()
{
- if (Actions == null)
- Actions = new List();
+ if (OrderedActions == null)
+ OrderedActions = new List();
- Actions.Add(new Data.Models.Action()
+ OrderedActions.Add(new Data.Models.Action()
{
- PrimaryAction = Actions.Count == 0,
- SortOrder = Actions.Count
+ PrimaryAction = OrderedActions.Count == 0,
+ SortOrder = OrderedActions.Count
});
}
- private void RemoveAction(int index)
+ private void RemoveAction(Data.Models.Action action)
{
- Actions.Remove(Actions.ElementAt(index));
-
- FixSortOrders();
+ OrderedActions.Remove(action);
}
- private void MoveUp(int index)
+ private void MoveUp(Data.Models.Action action)
{
- if (index == 0)
- return;
-
- Actions.Move(Actions.ElementAt(index), index - 1);
- FixSortOrders();
+ if (action.SortOrder > 0)
+ OrderedActions.Move(action, action.SortOrder - 1);
}
- private void MoveDown(int index)
+ private void MoveDown(Data.Models.Action action)
{
- if (index == Actions.Count - 1)
- return;
-
- Actions.Move(Actions.ElementAt(index), index + 1);
- FixSortOrders();
+ if (action.SortOrder < OrderedActions.Count + 1)
+ OrderedActions.Move(action, action.SortOrder + 1);
}
- private void FixSortOrders() {
- for (int i = 0; i < Actions.Count; i++)
+ private async void BrowseForActionPath(Data.Models.Action action)
+ {
+ var parameters = new DialogParameters
{
- Actions.ElementAt(i).SortOrder = i;
+ ["ArchiveId"] = ArchiveId
+ };
+
+ var dialog = await DialogService.ShowAsync("File Selector", parameters);
+ var result = await dialog.Result;
+
+ if (!result.Canceled)
+ {
+ action.Path = result.Data as string;
+
+ var parts = action.Path.Split('/');
+
+ if (parts.Length > 1)
+ {
+ action.Path = parts.Last();
+ action.WorkingDirectory = "{InstallDir}/" + String.Join('/', parts.Take(parts.Length - 1));
+ }
+
+ StateHasChanged();
}
}
+
+ private void FixSortOrder()
+ {
+ int i = 0;
+
+ foreach (var action in OrderedActions)
+ {
+ action.SortOrder = i;
+
+ i++;
+ }
+
+ Actions = OrderedActions;
+ }
}
diff --git a/LANCommander/Pages/Games/Edit.razor b/LANCommander/Pages/Games/Edit.razor
index 05cc2cf..f3cbac8 100644
--- a/LANCommander/Pages/Games/Edit.razor
+++ b/LANCommander/Pages/Games/Edit.razor
@@ -42,6 +42,8 @@
}
+
+