ps2_manager/PS2_Manager/AddGameWindow.axaml.cs
2025-04-22 04:14:30 +02:00

103 lines
No EOL
2.8 KiB
C#

using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Media.Imaging;
using Avalonia.Platform.Storage;
using PS2_Manager.Core;
namespace PS2_Manager;
public partial class AddGameWindow : Window
{
public string Gamepath { get; set; }
public Game newGame { get; set; }
public AddGameWindow(string filePath)
{
this.newGame = new Game(filePath);
InitializeComponent();
}
private void RefreshPreview()
{
Console.Info("Refreshing AddGameWindow Preview");
IsoPathBox.Text = this.newGame.GamePath;
SerialBox.Text = this.newGame.GameID;
GameNameBox.Text = this.newGame.Name;
CoverImage.Source = this.newGame.ArtworkFront;
}
private void Control_OnLoaded(object? sender, RoutedEventArgs e)
{
RefreshPreview();
}
private void WindowDrag(object? sender, PointerPressedEventArgs e)
{
if (e.GetCurrentPoint(this).Properties.IsLeftButtonPressed)
{
BeginMoveDrag(e);
}
}
private void WindowClose(object? sender, PointerPressedEventArgs e)
{
this.Close();
}
private void InstallButton_OnClick(object? sender, RoutedEventArgs e)
{
InstallButton.IsEnabled = false;
GameNameBox.IsEnabled = false;
InstallButton.Content = "Installing...";
newGame.Install();
newGame.InstallProgress.ValueChanged += () =>
{
InstallationProgressBar.Value = newGame.InstallProgress.Value;
};
newGame.InstallationFinished += (o, args) =>
{
Console.WriteLine("Installation for " + newGame + " finished");
this.Close();
};
}
private void GameNameBox_OnTextChanged(object? sender, TextChangedEventArgs e)
{
this.newGame.Name = GameNameBox.Text ?? "";
}
private async void CoverImage_OnPointerPressed(object? sender, PointerPressedEventArgs e)
{
var topLevel = TopLevel.GetTopLevel(this);
var files = await topLevel.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
{
Title = "Select a Cover for the PS2 Game",
AllowMultiple = false,
FileTypeFilter = new []
{
Globals.FileDialogTypes.PS2Cover
}
});
if (files.Count >= 1)
{
Console.Info("Updating " + Artwork.Type.Front + " Artwork for " + this.newGame.GameID);
this.newGame.ArtworkFront = new Bitmap(files[0].Path.LocalPath);
RefreshPreview();
}
else
{
Console.Error("OpenFilePicker was called but Canceled or no Files selected");
}
}
}