150 lines
No EOL
4.2 KiB
C#
150 lines
No EOL
4.2 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.Reflection;
|
|
using AdvancedSharpAdbClient.Models;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using Avalonia.Threading;
|
|
using MetaforceInstaller.Core.Intefaces;
|
|
using MetaforceInstaller.Core.Models;
|
|
using MetaforceInstaller.Core.Services;
|
|
using MetaforceInstaller.UI.ViewModels;
|
|
|
|
namespace MetaforceInstaller.UI.Windows;
|
|
|
|
public partial class MainWindow : Window
|
|
{
|
|
private MainWindowViewModel _viewModel;
|
|
private IStorageService _storageService;
|
|
private AdbService _adbService;
|
|
|
|
public MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
|
|
_viewModel = new MainWindowViewModel();
|
|
_storageService = new StorageService();
|
|
_adbService = new AdbService();
|
|
|
|
DataContext = _viewModel;
|
|
|
|
VersionLabel.Content = Assembly.GetExecutingAssembly()
|
|
.GetCustomAttribute<AssemblyFileVersionAttribute>()?.Version;
|
|
|
|
NewInstallationButton.Click += OnNewInstalltionClick;
|
|
|
|
_adbService.DeviceConnected += OnAdbDeviceConnected;
|
|
_adbService.DeviceDisconnected += OnAdbDeviceDisconnected;
|
|
_adbService.DeviceChanged += OnAdbDeviceChanged;
|
|
|
|
LoadInstallations();
|
|
UpdateDeviceStatus();
|
|
}
|
|
|
|
private void UpdateDeviceStatus()
|
|
{
|
|
var isConnected = _adbService.IsDeviceConnected;
|
|
_viewModel.IsDeviceConnected = isConnected;
|
|
|
|
if (isConnected)
|
|
{
|
|
try
|
|
{
|
|
var deviceInfo = _adbService.GetDeviceInfo();
|
|
_viewModel.DeviceSerial = deviceInfo.SerialNumber;
|
|
}
|
|
catch
|
|
{
|
|
_viewModel.DeviceSerial = "Unknown";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
_viewModel.DeviceSerial = string.Empty;
|
|
}
|
|
}
|
|
|
|
private void OnAdbDeviceConnected(object? sender, DeviceDataEventArgs e)
|
|
{
|
|
Dispatcher.UIThread.Post(() =>
|
|
{
|
|
UpdateDeviceStatus();
|
|
});
|
|
}
|
|
|
|
private void OnAdbDeviceDisconnected(object? sender, DeviceDataEventArgs e)
|
|
{
|
|
Dispatcher.UIThread.Post(() =>
|
|
{
|
|
UpdateDeviceStatus();
|
|
});
|
|
}
|
|
|
|
private void OnAdbDeviceChanged(object? sender, DeviceDataEventArgs e)
|
|
{
|
|
Dispatcher.UIThread.Post(() =>
|
|
{
|
|
UpdateDeviceStatus();
|
|
});
|
|
}
|
|
|
|
private void LoadInstallations()
|
|
{
|
|
var appData = _storageService.Load();
|
|
_viewModel.LoadInstallations(appData.Installations);
|
|
}
|
|
|
|
public async void OnNewInstalltionClick(object? sender, RoutedEventArgs e)
|
|
{
|
|
var newInstallationDialog = new NewInstallationDialog(_storageService);
|
|
await newInstallationDialog.ShowDialog<NewInstallationDialog>(this);
|
|
LoadInstallations();
|
|
}
|
|
|
|
public async void OnDeleteInstallationClick(object? sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is Button button && button.DataContext is InstallationData installationData)
|
|
{
|
|
var name = installationData.Title;
|
|
Console.WriteLine($"Delete {name}");
|
|
}
|
|
}
|
|
|
|
public async void OnLaunchServerClick(object? sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is Button button && button.DataContext is InstallationData installationData)
|
|
{
|
|
var exePath = installationData.Parts.WindowsServerPath;
|
|
var processInfo = new ProcessStartInfo
|
|
{
|
|
FileName = exePath,
|
|
UseShellExecute = false,
|
|
};
|
|
Process.Start(processInfo);
|
|
}
|
|
}
|
|
|
|
public async void OnLaunchAdminClick(object? sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is Button button && button.DataContext is InstallationData installationData)
|
|
{
|
|
var exePath = installationData.Parts.WindowsAdminPath;
|
|
var processInfo = new ProcessStartInfo
|
|
{
|
|
FileName = exePath,
|
|
UseShellExecute = false,
|
|
};
|
|
Process.Start(processInfo);
|
|
}
|
|
}
|
|
|
|
protected override void OnClosed(EventArgs e)
|
|
{
|
|
_adbService.DeviceConnected -= OnAdbDeviceConnected;
|
|
_adbService.DeviceDisconnected -= OnAdbDeviceDisconnected;
|
|
_adbService.DeviceChanged -= OnAdbDeviceChanged;
|
|
_adbService.Dispose();
|
|
|
|
base.OnClosed(e);
|
|
}
|
|
} |