diff --git a/ModerationClient/Views/ClientView.axaml b/ModerationClient/Views/ClientView.axaml
index 21ce5d9..0ed8021 100644
--- a/ModerationClient/Views/ClientView.axaml
+++ b/ModerationClient/Views/ClientView.axaml
@@ -7,24 +7,36 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="ModerationClient.Views.ClientView"
x:DataType="viewModels:ClientViewModel">
- <Grid Width="{Binding $parent.Width}">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="128" MinWidth="16" />
- <ColumnDefinition Width="1" />
- <ColumnDefinition Width="128" MinWidth="16" />
- <ColumnDefinition Width="1" />
- <ColumnDefinition Width="*" MinWidth="16" />
- </Grid.ColumnDefinitions>
- <TreeView Grid.Column="0" Background="Red" ItemsSource="{CompiledBinding DisplayedSpaces}">
- <TreeView.ItemTemplate>
- <TreeDataTemplate ItemsSource="{Binding Children}">
- <TextBlock Text="{Binding Name}" />
- </TreeDataTemplate>
- </TreeView.ItemTemplate>
- </TreeView>
- <GridSplitter Grid.Column="1" Background="Black" ResizeDirection="Columns" />
- <Rectangle Grid.Column="2" Fill="Green" />
- <GridSplitter Grid.Column="3" Background="Black" ResizeDirection="Columns" />
- <Rectangle Grid.Column="4" Fill="Blue" />
+ <Grid Width="{Binding $parent.Width}" Height="{Binding $parent.Height}" RowDefinitions="*,20">
+ <Grid Grid.Row="0">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="128" MinWidth="16" />
+ <ColumnDefinition Width="1" />
+ <ColumnDefinition Width="128" MinWidth="16" />
+ <ColumnDefinition Width="1" />
+ <ColumnDefinition Width="*" MinWidth="16" />
+ </Grid.ColumnDefinitions>
+ <TreeView Grid.Column="0" Background="Red" ItemsSource="{CompiledBinding DisplayedSpaces}" SelectedItem="{CompiledBinding CurrentSpace}">
+ <TreeView.ItemTemplate>
+ <TreeDataTemplate ItemsSource="{Binding ChildSpaces}">
+ <TextBlock Text="{Binding Name}" />
+ </TreeDataTemplate>
+ </TreeView.ItemTemplate>
+ </TreeView>
+ <GridSplitter Grid.Column="1" Background="Black" ResizeDirection="Columns" />
+ <!-- <Rectangle Grid.Column="2" Fill="Green" /> -->
+ <ListBox Grid.Column="2" Background="Green" ItemsSource="{CompiledBinding CurrentSpace.ChildRooms}">
+ <ListBox.ItemTemplate>
+ <DataTemplate DataType="viewModels:RoomNode">
+ <Label Content="{CompiledBinding Name}" />
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ <GridSplitter Grid.Column="3" Background="Black" ResizeDirection="Columns" />
+ <Rectangle Grid.Column="4" Fill="Blue" />
+ </Grid>
+ <Grid Grid.Row="1" ColumnDefinitions="Auto, *, Auto">
+ <Label Grid.Column="2">Text here</Label>
+ </Grid>
</Grid>
</UserControl>
\ No newline at end of file
diff --git a/ModerationClient/Views/ClientView.axaml.cs b/ModerationClient/Views/ClientView.axaml.cs
index 1ca5a89..894e807 100644
--- a/ModerationClient/Views/ClientView.axaml.cs
+++ b/ModerationClient/Views/ClientView.axaml.cs
@@ -1,5 +1,3 @@
-using System;
-using System.Linq;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
@@ -26,8 +24,4 @@ public partial class ClientView : UserControl {
// }
// };
}
-
- private void InitializeComponent() {
- AvaloniaXamlLoader.Load(this);
- }
}
diff --git a/ModerationClient/Views/LoginView.axaml.cs b/ModerationClient/Views/LoginView.axaml.cs
index 2e95e80..5e84ace 100644
--- a/ModerationClient/Views/LoginView.axaml.cs
+++ b/ModerationClient/Views/LoginView.axaml.cs
@@ -1,33 +1,18 @@
using System;
-using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
-using Avalonia.VisualTree;
-using Microsoft.Extensions.DependencyInjection;
-using ModerationClient.Services;
using ModerationClient.ViewModels;
namespace ModerationClient.Views;
public partial class LoginView : UserControl {
- private MatrixAuthenticationService AuthService { get; set; }
-
public LoginView() {
InitializeComponent();
}
-
- private void InitializeComponent() {
- Console.WriteLine("LoginWindow loaded");
-
- AvaloniaXamlLoader.Load(this);
- Console.WriteLine("LoginWindow loaded 2");
- }
// ReSharper disable once AsyncVoidMethod
- private async void Login(object? sender, RoutedEventArgs e) {
- Console.WriteLine("Login????");
- // await AuthService.LoginAsync(Username, Password);
- await ((LoginViewModel)DataContext).LoginAsync();
+ private async void Login(object? _, RoutedEventArgs __) {
+ await (DataContext as LoginViewModel ?? throw new InvalidCastException("LoginView did not receive LoginViewModel?")).LoginAsync();
}
}
diff --git a/ModerationClient/Views/MainWindow.axaml.cs b/ModerationClient/Views/MainWindow.axaml.cs
index ccabd71..884e90c 100644
--- a/ModerationClient/Views/MainWindow.axaml.cs
+++ b/ModerationClient/Views/MainWindow.axaml.cs
@@ -1,10 +1,8 @@
using System;
-using System.Threading;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Diagnostics;
using Avalonia.Input;
-using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using ModerationClient.Services;
@@ -13,11 +11,10 @@ using ModerationClient.ViewModels;
namespace ModerationClient.Views;
public partial class MainWindow : Window {
- //viewmodel
- private MainWindowViewModel? _viewModel { get; set; }
-
public MainWindow(CommandLineConfiguration cfg, MainWindowViewModel dataContext, IHostApplicationLifetime appLifetime) {
InitializeComponent();
+ DataContext = dataContext;
+ _ = dataContext.AuthService.LoadProfileAsync();
Console.WriteLine("mainwnd");
#if DEBUG
this.AttachDevTools(new DevToolsOptions() {
@@ -30,19 +27,17 @@ public partial class MainWindow : Window {
switch (args.Property.Name) {
case nameof(Height):
case nameof(Width): {
- if (_viewModel is null) {
+ if (DataContext is not MainWindowViewModel viewModel) {
Console.WriteLine("WARN: MainWindowViewModel is null, ignoring height/width change!");
return;
}
// Console.WriteLine("height/width changed");
- _viewModel.Scale = _viewModel.Scale;
+ viewModel.Scale = viewModel.Scale;
break;
}
}
};
- DataContext = _viewModel = dataContext;
- _ = dataContext.AuthService.LoadProfileAsync();
dataContext.AuthService.PropertyChanged += (sender, args) => {
if (args.PropertyName == nameof(MatrixAuthenticationService.IsLoggedIn)) {
if (dataContext.AuthService.IsLoggedIn) {
@@ -68,26 +63,32 @@ public partial class MainWindow : Window {
protected override void OnKeyDown(KeyEventArgs e) => OnKeyDown(this, e);
private void OnKeyDown(object? _, KeyEventArgs e) {
- if (_viewModel is null) {
- Console.WriteLine("WARN: MainWindowViewModel is null, ignoring key press!");
+ if (DataContext is not MainWindowViewModel viewModel) {
+ Console.WriteLine($"WARN: DataContext is {DataContext?.GetType().Name ?? "null"}, ignoring key press!");
return;
}
// Console.WriteLine("MainWindow KeyDown: " + e.Key);
if (e.Key == Key.Escape) {
- _viewModel.Scale = 1.0f;
+ viewModel.Scale = 1.0f;
}
else if (e.Key == Key.F1) {
- _viewModel.Scale -= 0.1f;
- if (_viewModel.Scale < 0.1f) {
- _viewModel.Scale = 0.1f;
+ viewModel.Scale -= 0.1f;
+ if (viewModel.Scale < 0.1f) {
+ viewModel.Scale = 0.1f;
}
}
else if (e.Key == Key.F2) {
- _viewModel.Scale += 0.1f;
- if (_viewModel.Scale > 5.0f) {
- _viewModel.Scale = 5.0f;
+ viewModel.Scale += 0.1f;
+ if (viewModel.Scale > 5.0f) {
+ viewModel.Scale = 5.0f;
+ }
+ }
+ else if (e.Key == Key.K && e.KeyModifiers == KeyModifiers.Control) {
+ if(viewModel.CurrentViewModel is ClientViewModel clientViewModel) {
+ Console.WriteLine("QuickSwitcher invoked");
}
+ else Console.WriteLine("WARN: CurrentViewModel is not ClientViewModel, ignoring Quick Switcher");
}
}
}
\ No newline at end of file
|