begin application build overhaul
This commit is contained in:
131
Views/WorkerEditWindow.axaml.cs
Normal file
131
Views/WorkerEditWindow.axaml.cs
Normal file
@@ -0,0 +1,131 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Platform.Storage;
|
||||
using UnifiedFarmLauncher.Models;
|
||||
using UnifiedFarmLauncher.Services;
|
||||
using UnifiedFarmLauncher.ViewModels;
|
||||
using MsBox.Avalonia;
|
||||
using MsBox.Avalonia.Enums;
|
||||
|
||||
namespace UnifiedFarmLauncher.Views
|
||||
{
|
||||
public partial class WorkerEditWindow : Window
|
||||
{
|
||||
private readonly WorkerEditViewModel _viewModel;
|
||||
private bool _result;
|
||||
|
||||
public WorkerEditWindow(WorkerConfig? worker = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
var configService = new ConfigService();
|
||||
_viewModel = new WorkerEditViewModel(configService, worker);
|
||||
DataContext = _viewModel;
|
||||
SetupEventHandlers();
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
Avalonia.Markup.Xaml.AvaloniaXamlLoader.Load(this);
|
||||
}
|
||||
|
||||
private void SetupEventHandlers()
|
||||
{
|
||||
OkButton.Click += OkButton_Click;
|
||||
CancelButton.Click += CancelButton_Click;
|
||||
BrowseFlamencoPathButton.Click += BrowseFlamencoPathButton_Click;
|
||||
AddDriveButton.Click += AddDriveButton_Click;
|
||||
RemoveDriveButton.Click += RemoveDriveButton_Click;
|
||||
AddPathButton.Click += AddPathButton_Click;
|
||||
RemovePathButton.Click += RemovePathButton_Click;
|
||||
}
|
||||
|
||||
private async void OkButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(_viewModel.Name))
|
||||
{
|
||||
var box = MessageBoxManager.GetMessageBoxStandard("Error",
|
||||
"Worker name is required.",
|
||||
ButtonEnum.Ok, Icon.Error);
|
||||
await box.ShowAsync();
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
_viewModel.Save();
|
||||
_result = true;
|
||||
Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var errorBox = MessageBoxManager.GetMessageBoxStandard("Error",
|
||||
$"Failed to save worker: {ex.Message}",
|
||||
ButtonEnum.Ok, Icon.Error);
|
||||
await errorBox.ShowAsync();
|
||||
}
|
||||
}
|
||||
|
||||
private void CancelButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
_result = false;
|
||||
Close();
|
||||
}
|
||||
|
||||
private async void BrowseFlamencoPathButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var topLevel = TopLevel.GetTopLevel(this);
|
||||
if (topLevel?.StorageProvider.CanPickFolder == true)
|
||||
{
|
||||
var folders = await topLevel.StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
|
||||
{
|
||||
Title = "Select Flamenco Worker Path"
|
||||
});
|
||||
|
||||
if (folders.Count > 0 && folders[0].TryGetLocalPath() is { } localPath)
|
||||
{
|
||||
_viewModel.FlamencoWorkerPath = localPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void AddDriveButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
// Simplified: use a simple input box
|
||||
// In a full implementation, you'd use a proper input dialog
|
||||
_viewModel.NetworkDrives.Add("A:");
|
||||
}
|
||||
|
||||
private void RemoveDriveButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (NetworkDrivesListBox.SelectedItem is string drive)
|
||||
{
|
||||
_viewModel.NetworkDrives.Remove(drive);
|
||||
}
|
||||
}
|
||||
|
||||
private async void AddPathButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
// Simplified: use a simple input box
|
||||
// In a full implementation, you'd use a proper input dialog
|
||||
_viewModel.NetworkPaths.Add("\\\\SERVER\\share");
|
||||
}
|
||||
|
||||
private void RemovePathButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (NetworkPathsListBox.SelectedItem is string path)
|
||||
{
|
||||
_viewModel.NetworkPaths.Remove(path);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> ShowDialogAsync(Window parent)
|
||||
{
|
||||
await base.ShowDialog(parent);
|
||||
return _result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user