51 lines
1.8 KiB
C#
51 lines
1.8 KiB
C#
using System.Reflection;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using Avalonia.Platform.Storage;
|
|
using Avalonia.Threading;
|
|
using ModpackUpdater.Apps.Client.Gui.LangRes;
|
|
using Pilz.Extensions;
|
|
using Pilz.UI.Symbols;
|
|
|
|
namespace ModpackUpdater.Apps.Client.Gui;
|
|
|
|
public partial class MainView : Window
|
|
{
|
|
public MainViewModel Model => DataContext as MainViewModel ?? throw new NullReferenceException();
|
|
|
|
public MainView()
|
|
{
|
|
InitializeComponent();
|
|
|
|
Title = $"{Title} (v{Assembly.GetExecutingAssembly().GetAppVersion().ToShortHumanString()})";
|
|
|
|
ButtonSearchProfileFolder.ImageSource = AppGlobals.Symbols.GetImageSource(AppSymbols.opened_folder);
|
|
ButtonCheckForUpdates.ImageSource = AppGlobals.Symbols.GetImageSource(AppSymbols.update_done);
|
|
ButtonInstall.ImageSource = AppGlobals.Symbols.GetImageSource(AppSymbols.software_installer);
|
|
MenuItemRepair.Icon = AppGlobals.Symbols.GetImage(AppSymbols.wrench, SymbolSize.Small);
|
|
}
|
|
|
|
private async void InitializeViewModel()
|
|
{
|
|
await Model.CheckForUpdates(this);
|
|
await Model.Initialize();
|
|
}
|
|
|
|
private void Control_OnLoaded(object? sender, RoutedEventArgs e)
|
|
{
|
|
Dispatcher.UIThread.Post(InitializeViewModel, DispatcherPriority.Background);
|
|
}
|
|
|
|
private async void ButtonSearchProfileFolder_Click(object? sender, RoutedEventArgs e)
|
|
{
|
|
var filePaths = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
|
|
{
|
|
Title = GeneralLangRes.SelectMinecraftProfileFolder,
|
|
SuggestedStartLocation = await StorageProvider.TryGetFolderFromPathAsync(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)),
|
|
AllowMultiple = false,
|
|
});
|
|
|
|
if (filePaths.Count >= 1)
|
|
Model.MinecraftProfileFolder = filePaths[0].Path.AbsolutePath;
|
|
}
|
|
} |