diff --git a/ModerationClient/Views/MainWindow/ClientView.axaml b/ModerationClient/Views/MainWindow/ClientView.axaml
index e0cd4e0..6db948a 100644
--- a/ModerationClient/Views/MainWindow/ClientView.axaml
+++ b/ModerationClient/Views/MainWindow/ClientView.axaml
@@ -19,11 +19,6 @@
</Grid.ColumnDefinitions>
<TreeView Grid.Column="0" Background="#202020" ItemsSource="{CompiledBinding DisplayedSpaces}" SelectedItem="{CompiledBinding CurrentSpace}">
<TreeView.ItemTemplate>
- <!-- <TreeView.Styles> -->
- <!-- <Style Selector="TreeViewItem"> -->
- <!-- <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> -->
- <!-- </Style> -->
- <!-- </TreeView.Styles> -->
<TreeDataTemplate ItemsSource="{Binding ChildSpaces}" DataType="spaceTreeNodes:SpaceNode">
<TextBlock Text="{Binding Name}" Height="20" />
</TreeDataTemplate>
@@ -31,7 +26,7 @@
</TreeView>
<GridSplitter Grid.Column="1" Background="Black" ResizeDirection="Columns" />
<!-- <Rectangle Grid.Column="2" Fill="Green" /> -->
- <ListBox Grid.Column="2" Background="#242424" ItemsSource="{CompiledBinding CurrentSpace.ChildRooms}">
+ <ListBox Grid.Column="2" Background="#242424" ItemsSource="{CompiledBinding CurrentSpace.ChildRooms}" SelectedItem="{CompiledBinding CurrentRoom}">
<ListBox.ItemTemplate>
<DataTemplate DataType="spaceTreeNodes:RoomNode">
<TextBlock Text="{CompiledBinding Name}" Height="20" />
@@ -39,7 +34,7 @@
</ListBox.ItemTemplate>
</ListBox>
<GridSplitter Grid.Column="3" Background="Black" ResizeDirection="Columns" />
- <Rectangle Grid.Column="4" Fill="#282828" />
+ <ContentControl Grid.Column="4" Content="{CompiledBinding CurrentRoomViewModel}" />
</Grid>
<Grid Grid.Row="1" ColumnDefinitions="Auto, *, Auto" Background="Black">
<Label Grid.Column="2" Content="{CompiledBinding Status}" />
diff --git a/ModerationClient/Views/MainWindow/EventView.axaml b/ModerationClient/Views/MainWindow/EventView.axaml
new file mode 100644
index 0000000..1815430
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/EventView.axaml
@@ -0,0 +1,10 @@
+<UserControl xmlns="https://github.com/avaloniaui"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:libMatrix="clr-namespace:LibMatrix;assembly=LibMatrix"
+ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+ x:Class="ModerationClient.Views.EventView"
+ x:DataType="libMatrix:StateEventResponse">
+ Welcome to Avalonia!
+</UserControl>
diff --git a/ModerationClient/Views/MainWindow/EventView.axaml.cs b/ModerationClient/Views/MainWindow/EventView.axaml.cs
new file mode 100644
index 0000000..f07103f
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/EventView.axaml.cs
@@ -0,0 +1,11 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace ModerationClient.Views;
+
+public partial class EventView : UserControl {
+ public EventView() {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/ModerationClient/Views/MainWindow/LoginView.axaml b/ModerationClient/Views/MainWindow/LoginView.axaml
index 5dc6533..e5fcb84 100644
--- a/ModerationClient/Views/MainWindow/LoginView.axaml
+++ b/ModerationClient/Views/MainWindow/LoginView.axaml
@@ -14,6 +14,10 @@
<TextBox MinWidth="250" Text="{Binding Username, Mode=TwoWay}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
+ <Label Width="100">Homeserver</Label>
+ <TextBox MinWidth="250" Text="{Binding Homeserver, Mode=TwoWay}" />
+ </StackPanel>
+ <StackPanel Orientation="Horizontal">
<Label Width="100">Password</Label>
<MaskedTextBox MinWidth="250" PasswordChar="*" Text="{Binding Password, Mode=TwoWay}" />
</StackPanel>
diff --git a/ModerationClient/Views/MainWindow/MainWindow.axaml.cs b/ModerationClient/Views/MainWindow/MainWindow.axaml.cs
index cc3534d..b632b87 100644
--- a/ModerationClient/Views/MainWindow/MainWindow.axaml.cs
+++ b/ModerationClient/Views/MainWindow/MainWindow.axaml.cs
@@ -22,7 +22,7 @@ namespace ModerationClient.Views.MainWindow;
public partial class MainWindow : Window {
private readonly CommandLineConfiguration _cfg;
- public MainWindow(CommandLineConfiguration cfg, MainWindowViewModel dataContext, IHostApplicationLifetime appLifetime) {
+ public MainWindow(CommandLineConfiguration cfg, MainWindowViewModel dataContext, IHostApplicationLifetime appLifetime, HomeserverResolverService hsResolver) {
_cfg = cfg;
InitializeComponent();
DataContext = dataContext;
@@ -33,7 +33,7 @@ public partial class MainWindow : Window {
dataContext.CurrentViewModel = dataContext.AuthService.IsLoggedIn
? App.Current.Host.Services.GetRequiredService<ClientViewModel>()
- : new LoginViewModel(dataContext.AuthService);
+ : new LoginViewModel(dataContext.AuthService, hsResolver);
if (!dataContext.AuthService.IsLoggedIn) {
dataContext.AuthService.PropertyChanged += (sender, args) => {
@@ -45,7 +45,7 @@ public partial class MainWindow : Window {
// window.Show();
}
else {
- dataContext.CurrentViewModel = new LoginViewModel(dataContext.AuthService);
+ dataContext.CurrentViewModel = new LoginViewModel(dataContext.AuthService, hsResolver);
}
}
};
diff --git a/ModerationClient/Views/MainWindow/RoomView.axaml b/ModerationClient/Views/MainWindow/RoomView.axaml
new file mode 100644
index 0000000..cd74b0d
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/RoomView.axaml
@@ -0,0 +1,53 @@
+<UserControl xmlns="https://github.com/avaloniaui"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:viewModels="clr-namespace:ModerationClient.ViewModels"
+ xmlns:libMatrix="clr-namespace:LibMatrix;assembly=LibMatrix"
+ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+ x:Class="ModerationClient.Views.RoomView"
+ x:DataType="viewModels:RoomViewModel">
+ <Grid RowDefinitions="32,*">
+ <Grid>
+ <Image Source="{CompiledBinding RoomIconBitmap}"></Image>
+ <Label Content="{CompiledBinding Room.Name}" />
+ </Grid>
+ <Grid Grid.Row="1" Grid.ColumnDefinitions="*,1,200">
+ <!-- timeline -->
+ <ScrollViewer Grid.Column="0" Background="#222222">
+ <ItemsControl ItemsSource="{CompiledBinding Room.Timeline}">
+ <ItemsControl.ItemTemplate>
+ <DataTemplate DataType="libMatrix:StateEventResponse">
+ <Grid ColumnDefinitions="32, *">
+ <Image></Image>
+ <Grid Grid.Column="1" RowDefinitions="*,*">
+ <TextBlock Text="{CompiledBinding Sender}" />
+ <TextBlock Grid.Row="1" Text="{CompiledBinding RawContent}" />
+ </Grid>
+ </Grid>
+ </DataTemplate>
+ </ItemsControl.ItemTemplate>
+ </ItemsControl>
+ </ScrollViewer>
+ <GridSplitter Grid.Column="1" Background="Black" ResizeDirection="Columns" />
+ <!-- members -->
+ <ScrollViewer Grid.Column="2" Background="#222222">
+ <ItemsControl ItemsSource="{CompiledBinding Users}">
+ <ItemsControl.ItemTemplate>
+ <DataTemplate DataType="viewModels:RoomMember">
+ <Grid ColumnDefinitions="32,*" Margin="0,4">
+ <Image Source="{CompiledBinding UserAvatarBitmap}" Height="32" Width="32" Margin="0,0,4,0" />
+ <Grid Grid.Column="1" RowDefinitions="*,*">
+ <TextBlock Text="{CompiledBinding DisplayName}" />
+ <TextBlock Grid.Row="1" Text="{CompiledBinding UserId}" FontSize="10" FontStyle="Italic" />
+ </Grid>
+
+ <WrapPanel Children=""></WrapPanel>
+ </Grid>
+ </DataTemplate>
+ </ItemsControl.ItemTemplate>
+ </ItemsControl>
+ </ScrollViewer>
+ </Grid>
+ </Grid>
+</UserControl>
\ No newline at end of file
diff --git a/ModerationClient/Views/MainWindow/RoomView.axaml.cs b/ModerationClient/Views/MainWindow/RoomView.axaml.cs
new file mode 100644
index 0000000..aedd8e9
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/RoomView.axaml.cs
@@ -0,0 +1,11 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace ModerationClient.Views;
+
+public partial class RoomView : UserControl {
+ public RoomView() {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/ModerationClient/Views/MainWindow/StatusBar.axaml b/ModerationClient/Views/MainWindow/StatusBar.axaml
new file mode 100644
index 0000000..d299278
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/StatusBar.axaml
@@ -0,0 +1,10 @@
+<UserControl xmlns="https://github.com/avaloniaui"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+ x:Class="ModerationClient.Views.MainWindow.StatusBar">
+ <Grid ColumnDefinitions="*,*,*">
+
+ </Grid>
+</UserControl>
\ No newline at end of file
diff --git a/ModerationClient/Views/MainWindow/StatusBar.axaml.cs b/ModerationClient/Views/MainWindow/StatusBar.axaml.cs
new file mode 100644
index 0000000..78a74ca
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/StatusBar.axaml.cs
@@ -0,0 +1,15 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using ModerationClient.Services;
+
+namespace ModerationClient.Views.MainWindow;
+
+public partial class StatusBar : UserControl {
+ public StatusBarService StatusBarService { get; }
+
+ public StatusBar(StatusBarService statusBarService) {
+ StatusBarService = statusBarService;
+ InitializeComponent();
+ }
+}
\ No newline at end of file
|