brbrbr patapim

This commit is contained in:
Вячеслав 2026-01-01 05:11:23 +05:00
parent 3dc9c8c279
commit 13a076ad79
5 changed files with 388 additions and 236 deletions

View file

@ -0,0 +1,118 @@
using System.IO.Compression;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Platform.Storage;
using MetaforceInstaller.Core.Models;
using MetaforceInstaller.Core.Services;
namespace MetaforceInstaller.UI;
public partial class NewInstallationDialog : Window
{
private string? _zipPath;
private InstallationParts? _installationParts;
public NewInstallationDialog()
{
InitializeComponent();
RefreshCheckboxes();
CancelButton.Click += OnCancelClick;
ChooseZip.Click += OnChooseZipClick;
InstallButton.IsEnabled = false;
InstallButton.Click += OnInstallClick;
}
private async void RefreshCheckboxes()
{
var serverCheckbox = ServerCheckBox;
var pcAdminCheckbox = PcAdminCheckBox;
var androidAdminCheckbox = AndroidAdminCheckbox;
var vrClientCheckbox = VrClientCheckbox;
serverCheckbox.Content = TextDefaults.InstallServer;
serverCheckbox.IsEnabled = true;
pcAdminCheckbox.Content = TextDefaults.InstallAdmin;
pcAdminCheckbox.IsEnabled = true;
androidAdminCheckbox.Content = TextDefaults.SaveAndroidAdmin;
androidAdminCheckbox.IsEnabled = true;
vrClientCheckbox.Content = TextDefaults.SaveVRClient;
vrClientCheckbox.IsEnabled = true;
}
private async void OnChooseZipClick(object? sender, RoutedEventArgs e)
{
var topLevel = GetTopLevel(this);
var files = await topLevel!.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
{
Title = "Выберите архив с контентом",
AllowMultiple = false,
FileTypeFilter =
[
new FilePickerFileType("ZIP Files")
{
Patterns = ["*.zip"]
}
]
});
if (files.Count >= 1)
{
_zipPath = files[0].Path.LocalPath;
using var archive = ZipFile.OpenRead(_zipPath);
_installationParts = ZipScrapper.PeekFiles(archive);
UpdateCheckboxes();
archive.Dispose();
}
}
private async void OnInstallClick(object? sender, RoutedEventArgs e)
{
using var archive = ZipFile.OpenRead(_zipPath);
}
private void UpdateCheckboxes()
{
RefreshCheckboxes();
var serverCheckbox = ServerCheckBox;
var pcAdminCheckbox = PcAdminCheckBox;
var androidAdminCheckbox = AndroidAdminCheckbox;
var vrClientCheckbox = VrClientCheckbox;
if (!_installationParts.WindowsServerExists)
{
serverCheckbox.IsEnabled = false;
serverCheckbox.Content += "\nCouldn't find directory with server";
}
if (!_installationParts.WindowsAdminExists)
{
pcAdminCheckbox.IsEnabled = false;
pcAdminCheckbox.Content += "\nCouldn't find directory with PC admin";
}
if (!_installationParts.WindowsContentExists)
{
pcAdminCheckbox.IsEnabled = false;
pcAdminCheckbox.Content += "\nCouldn't find windows content";
}
if (!_installationParts.AndroidContentExists)
{
vrClientCheckbox.IsEnabled = false;
vrClientCheckbox.Content += "\nCouldn't find android content";
androidAdminCheckbox.IsEnabled = false;
androidAdminCheckbox.Content += "\nCouldn't find android content";
}
if (!_installationParts.PicoClientExists && !_installationParts.OculusClientExists)
{
vrClientCheckbox.IsEnabled = false;
vrClientCheckbox.Content += "\nCouldn't find any VR clients";
}
}
private void OnCancelClick(object? sender, RoutedEventArgs e)
{
Close();
}
}