79 lines
2.2 KiB
C#
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;
|
|
}
|
|
} |