AutoCatAvalonia/AutoCat/Windows/MainWindow.axaml.cs

79 lines
2.2 KiB
C#

using System.Linq;
using AutoCat.Pages;
using AutoCat.ViewModels;
using Avalonia.Controls;
using FluentAvalonia.UI.Controls;
namespace AutoCat.Windows;
public partial class MainWindow : Window
{
private readonly SettingsPage _settingsPage = new SettingsPage();
private readonly HistoryPage _historyPage = new HistoryPage();
private readonly SearchPage _searchPage = new SearchPage();
public MainWindow()
{
InitializeComponent();
NavView.SelectionChanged += NavSelectionChanged;
NavView.ItemInvoked += NavViewOnItemInvoked;
NavView.SelectedItem = NavView.MenuItems.First(x => (x as NavigationViewItem)?.Tag?.ToString() == "History");
}
private void NavViewOnItemInvoked(object? sender, NavigationViewItemInvokedEventArgs e)
{
switch (e.InvokedItemContainer.Tag)
{
case "Check":
ShowCheckNumberDialog();
break;
}
}
private void NavSelectionChanged(object? sender, NavigationViewSelectionChangedEventArgs args)
{
if (args.IsSettingsSelected)
{
NavView.Content = _settingsPage;
}
else if (args.SelectedItem is NavigationViewItem item)
{
NavView.Content = item.Tag switch
{
"History" => _historyPage,
"Search" => _searchPage,
_ => NavView.Content
};
}
}
private async void ShowCheckNumberDialog()
{
var dialog = new ContentDialog()
{
Title = "Check new number",
CloseButtonText = "Cancel"
};
var dialogContent = new CheckNumberDialog();
dialog.Content = dialogContent;
var dialogTask = dialog.ShowAsync();
if (dialogContent.DataContext is CheckNumberViewModel vm)
{
vm.AutoCloseEvent += async (_, _) =>
{
dialog.Hide();
if (_historyPage.DataContext is HistoryViewModel hvm && vm.Vehicle != null)
{
await hvm.AddVehicle(vm.Vehicle);
NavView.Content = _historyPage;
}
};
}
await dialogTask;
}
}