about summary refs log tree commit diff
path: root/ModerationClient/Views
diff options
context:
space:
mode:
Diffstat (limited to 'ModerationClient/Views')
-rw-r--r--ModerationClient/Views/MainWindow/ClientView.axaml9
-rw-r--r--ModerationClient/Views/MainWindow/EventView.axaml10
-rw-r--r--ModerationClient/Views/MainWindow/EventView.axaml.cs11
-rw-r--r--ModerationClient/Views/MainWindow/LoginView.axaml4
-rw-r--r--ModerationClient/Views/MainWindow/MainWindow.axaml.cs6
-rw-r--r--ModerationClient/Views/MainWindow/RoomView.axaml53
-rw-r--r--ModerationClient/Views/MainWindow/RoomView.axaml.cs11
-rw-r--r--ModerationClient/Views/MainWindow/StatusBar.axaml10
-rw-r--r--ModerationClient/Views/MainWindow/StatusBar.axaml.cs15
-rw-r--r--ModerationClient/Views/UserManagementWindow.axaml2
-rw-r--r--ModerationClient/Views/UserManagementWindow.axaml.cs17
11 files changed, 132 insertions, 16 deletions
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 diff --git a/ModerationClient/Views/UserManagementWindow.axaml b/ModerationClient/Views/UserManagementWindow.axaml
index ef93517..688b687 100644 --- a/ModerationClient/Views/UserManagementWindow.axaml +++ b/ModerationClient/Views/UserManagementWindow.axaml
@@ -37,7 +37,7 @@ <ContentControl DataContext="{CompiledBinding Path=CurrentViewModel}"> <ItemsControl ItemsSource="{ReflectionBinding Users}"> <ItemsControl.ItemTemplate> - <DataTemplate DataType="vm:User"> + <DataTemplate DataType="vm:SynapseAdminUser"> <StackPanel Orientation="Vertical"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{CompiledBinding Name}" /> diff --git a/ModerationClient/Views/UserManagementWindow.axaml.cs b/ModerationClient/Views/UserManagementWindow.axaml.cs
index 2d2dfb4..f5b4d56 100644 --- a/ModerationClient/Views/UserManagementWindow.axaml.cs +++ b/ModerationClient/Views/UserManagementWindow.axaml.cs
@@ -1,4 +1,5 @@ using System; +using System.IO; using ArcaneLibs.Extensions; using Avalonia; using Avalonia.Controls; @@ -64,7 +65,7 @@ public partial class UserManagementWindow : Window { dataContext.CurrentViewModel = App.Current.Host.Services.GetRequiredService<ClientViewModel>(); } else { - dataContext.CurrentViewModel = new LoginViewModel(dataContext.AuthService); + Close(); } } }; @@ -118,7 +119,7 @@ public partial class UserManagementWindow : Window { return; } - if (button.Tag is not User user) { + if (button.Tag is not SynapseAdminUser user) { Console.WriteLine("WARN: Tag is not User, ignoring PuppetButtonClicked!"); return; } @@ -129,8 +130,14 @@ public partial class UserManagementWindow : Window { } var puppet = await synapse.Admin.LoginUserAsync(user.Name, TimeSpan.FromMinutes(5)); - - System.Diagnostics.Process.Start(System.Diagnostics.Process.GetCurrentProcess().MainModule!.FileName, - (_cfg with { IsTemporary = true, LoginData = puppet.ToJson() }).Serialise()); + // var currentProcess = System.Diagnostics.Process.GetCurrentProcess().MainModule!.FileName; + // if(Path.GetFileName(currentProcess) == "dotnet") { + // Console.WriteLine("WARN: Running in dotnet, trying again...!"); + // // get the path to the current executable + // var path = System.Reflection.Assembly.GetEntryAssembly()!.Location; + // Console.WriteLine(path); + // return; + // } + System.Diagnostics.Process.Start("steam-run", ["dotnet", System.Reflection.Assembly.GetEntryAssembly()!.Location, "--", ..(_cfg with { IsTemporary = true, LoginData = puppet.ToJson() }).Serialise()]); } } \ No newline at end of file