Page navigation, CogwheelConsole
This commit is contained in:
@@ -1,11 +1,90 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Input;
|
||||
using Cogwheel;
|
||||
using SessionZero.Cogwheel;
|
||||
using SessionZero.Pages;
|
||||
|
||||
namespace SessionZero;
|
||||
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
private Dictionary<string, IPageBase> _pages = new();
|
||||
|
||||
private ContentControl? _mainContentControl;
|
||||
private ContentControl? _overlayContentControl;
|
||||
private Button? _homeButton;
|
||||
private Button? _sessionsButton;
|
||||
private Button? _libraryButton;
|
||||
private Button? _settingsButton;
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
InitControls();
|
||||
InitPages();
|
||||
|
||||
KeyDownEvent.AddClassHandler<TopLevel>(OnKeyDown, handledEventsToo: true);
|
||||
|
||||
ChangePage("Home");
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangePage(string pageName)
|
||||
{
|
||||
if (_pages.TryGetValue(pageName.ToLower(), out var page))
|
||||
{
|
||||
_mainContentControl?.Content = page;
|
||||
}
|
||||
else
|
||||
{
|
||||
COGWHEEL.LogError($"Page {pageName} does not exist");
|
||||
}
|
||||
}
|
||||
|
||||
public void ToggleOverlay(bool visible)
|
||||
{
|
||||
_overlayContentControl?.IsVisible = visible;
|
||||
_overlayContentControl?.IsHitTestVisible = visible;
|
||||
}
|
||||
|
||||
public void ToggleConsole(bool visible)
|
||||
{
|
||||
ToggleOverlay(visible);
|
||||
_overlayContentControl?.Content = visible ? AppManager.ConsoleControl : null;
|
||||
}
|
||||
|
||||
private void OnKeyDown(TopLevel topLevel, KeyEventArgs keyEventArgs)
|
||||
{
|
||||
if (keyEventArgs.Key == Key.OemTilde)
|
||||
ToggleConsole(!_overlayContentControl.IsVisible);
|
||||
}
|
||||
|
||||
private void InitControls()
|
||||
{
|
||||
_mainContentControl = this.FindControl<ContentControl>("MainContentControl");
|
||||
_overlayContentControl = this.FindControl<ContentControl>("Overlay");
|
||||
_homeButton = this.FindControl<Button>("HomeButton");
|
||||
_sessionsButton = this.FindControl<Button>("SessionsButton");
|
||||
_libraryButton = this.FindControl<Button>("LibraryButton");
|
||||
_settingsButton = this.FindControl<Button>("SettingsButton");
|
||||
|
||||
SetupButtonEvents();
|
||||
}
|
||||
|
||||
private void InitPages()
|
||||
{
|
||||
var homePage = new HomePage();
|
||||
_pages.Add(homePage.PageName.ToLower(), homePage);
|
||||
var sessionsPage = new SessionsPage();
|
||||
_pages.Add(sessionsPage.PageName.ToLower(), sessionsPage);
|
||||
}
|
||||
|
||||
private void SetupButtonEvents()
|
||||
{
|
||||
_homeButton?.Click += (_, _) => ChangePage("Home");
|
||||
_sessionsButton?.Click += (_, _) => ChangePage("Sessions");
|
||||
_libraryButton?.Click += (_, _) => ChangePage("Library");
|
||||
_settingsButton?.Click += (_, _) => ChangePage("Settings");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user