Files
minecraft-modpack-updater/ModpackUpdater.Apps.Client.Gui/MainView.axaml.cs

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;
}
}