118 lines
No EOL
3.9 KiB
C#
118 lines
No EOL
3.9 KiB
C#
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 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 (string.IsNullOrEmpty(_installationParts.WindowsServerPath))
|
||
{
|
||
serverCheckbox.IsEnabled = false;
|
||
serverCheckbox.Content += "\nCouldn't find directory with server";
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(_installationParts.WindowsAdminPath))
|
||
{
|
||
pcAdminCheckbox.IsEnabled = false;
|
||
pcAdminCheckbox.Content += "\nCouldn't find directory with PC admin";
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(_installationParts.WindowsContentPath))
|
||
{
|
||
pcAdminCheckbox.IsEnabled = false;
|
||
pcAdminCheckbox.Content += "\nCouldn't find windows content";
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(_installationParts.AndroidContentPath))
|
||
{
|
||
vrClientCheckbox.IsEnabled = false;
|
||
vrClientCheckbox.Content += "\nCouldn't find android content";
|
||
androidAdminCheckbox.IsEnabled = false;
|
||
androidAdminCheckbox.Content += "\nCouldn't find android content";
|
||
}
|
||
|
||
if (string.IsNullOrEmpty(_installationParts.PicoClientPath) &&
|
||
string.IsNullOrEmpty(_installationParts.OculusClientPath))
|
||
{
|
||
vrClientCheckbox.IsEnabled = false;
|
||
vrClientCheckbox.Content += "\nCouldn't find any VR clients";
|
||
}
|
||
}
|
||
|
||
private void OnCancelClick(object? sender, RoutedEventArgs e)
|
||
{
|
||
Close();
|
||
}
|
||
} |