about summary refs log tree commit diff
path: root/ModerationClient/Views
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2024-08-05 06:50:57 +0200
committerRory& <root@rory.gay>2024-08-08 03:02:10 +0200
commit7c2e468288365dcf7bfb089a680d27f61aa68bc9 (patch)
tree4ca319087074c4dc7f5a343db4826a3961bc7321 /ModerationClient/Views
parentInitial commit (diff)
downloadModerationClient-7c2e468288365dcf7bfb089a680d27f61aa68bc9.tar.xz
List rooms
Diffstat (limited to 'ModerationClient/Views')
-rw-r--r--ModerationClient/Views/ClientView.axaml50
-rw-r--r--ModerationClient/Views/ClientView.axaml.cs6
-rw-r--r--ModerationClient/Views/LoginView.axaml.cs19
-rw-r--r--ModerationClient/Views/MainWindow.axaml.cs37
4 files changed, 52 insertions, 60 deletions
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