Skip to content

Commit 6df84e2

Browse files
committed
Implement maximized message
- Implemented a fullscreen-panel that displays the text as the main element (black text on a light background), which is why it occupies a large part of the panel. For the files, only their count is mentioned.
1 parent 1e0085b commit 6df84e2

7 files changed

+94
-2
lines changed

Assets/File-Purple.png

28 KB
Loading

Assets/X-Purple.png

43.6 KB
Loading

src/ViewModels/MainWindowViewModel.cs

+22-1
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@ internal sealed class MainWindowViewModel : ViewModelBase
1313
private bool _isNotificationListVisible;
1414
private bool _isContactsListVisible;
1515
private bool _isProfilePageVisible;
16-
16+
17+
private bool _isMaximizedMessageVisible;
1718
private bool _isWelcomeScreenVisible;
1819

20+
private MessagePackage? _maximizedMessage;
21+
1922
internal MainWindowViewModel()
2023
{
2124
Instance = this;
@@ -54,6 +57,18 @@ private bool IsProfilePageVisible
5457
set => this.RaiseAndSetIfChanged(ref _isProfilePageVisible, value);
5558
}
5659

60+
private bool IsMaximizedMessageVisible
61+
{
62+
get => _isMaximizedMessageVisible;
63+
set => this.RaiseAndSetIfChanged(ref _isMaximizedMessageVisible, value);
64+
}
65+
66+
private MessagePackage? MaximizedMessage
67+
{
68+
get => _maximizedMessage;
69+
set => this.RaiseAndSetIfChanged(ref _maximizedMessage, value);
70+
}
71+
5772
internal static void ShowNotification(Notification notification)
5873
{
5974
NotificationManager?.Show(notification);
@@ -98,4 +113,10 @@ internal void OpenMenu(MenuType menuType)
98113
return;
99114
}
100115
}
116+
117+
internal void ToggleMaximizedMessage(MessagePackage? message)
118+
{
119+
MaximizedMessage = message;
120+
IsMaximizedMessageVisible = message is not null;
121+
}
101122
}

src/Views/MainWindow.axaml

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
<views:ReceiveView Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
2121
</Grid>
2222
</DockPanel>
23+
<popups:MaximizedTextView HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
24+
IsVisible="{Binding $parent[views:MainWindow].DataContext.IsMaximizedMessageVisible}"/>
2325
<popups:WelcomeScreenView HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
2426
IsVisible="{Binding $parent[views:MainWindow].DataContext.IsWelcomeScreenVisible}"/>
2527
</Panel>
+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<UserControl xmlns="https://github.com/avaloniaui"
2+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:views="clr-namespace:FileTransfer.Views"
6+
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
7+
x:Class="FileTransfer.Views.Popups.MaximizedTextView">
8+
9+
<Panel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{StaticResource DarkenedDialogBackground}">
10+
<Border CornerRadius="30" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="40,50"
11+
Background="{StaticResource MainBackground}">
12+
<Grid RowDefinitions="Auto,*,Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="20">
13+
<Grid Grid.Row="0" RowDefinitions="Auto,Auto" HorizontalAlignment="Stretch">
14+
<Viewbox Grid.Row="0" HorizontalAlignment="Left" MaxHeight="54" Margin="0,0,70,0">
15+
<TextBlock HorizontalAlignment="Left" FontSize="48" FontWeight="Bold" TextAlignment="Left"
16+
Foreground="{StaticResource AppPurple}" Margin="0,0,0,5"
17+
Text="{Binding MaximizedMessage.Sender.Nickname}"/>
18+
</Viewbox>
19+
<TextBlock Grid.Row="1" HorizontalAlignment="Left" FontSize="20" Foreground="{StaticResource AppPurple}"
20+
Text="{Binding MaximizedMessage.TimeString}" FontStyle="Italic"/>
21+
<Button Grid.Row="0" Grid.RowSpan="2" Classes="selectable-button-effect highlight-no-change"
22+
HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,10,10,0"
23+
Command="{Binding $parent[views:MainWindow].DataContext.ToggleMaximizedMessage}"
24+
CommandParameter="null">
25+
<Button.Template>
26+
<ControlTemplate>
27+
<Image Source="/Assets/X-Purple.png" Width="40" Height="40"/>
28+
</ControlTemplate>
29+
</Button.Template>
30+
</Button>
31+
</Grid>
32+
<Border Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Padding="0,20"
33+
Margin="0,5" BorderThickness="0,2,0,2" BorderBrush="{StaticResource AppPurple}">
34+
<ScrollViewer Classes="standard" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
35+
HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
36+
<TextBox x:Name="TextMessage" Classes="text-acting-textbox" HorizontalAlignment="Stretch" FontSize="24"
37+
Foreground="{StaticResource Black}" TextAlignment="Left" TextWrapping="Wrap"
38+
Text="{Binding MaximizedMessage.TextMessage}"/>
39+
</ScrollViewer>
40+
</Border>
41+
<Grid Grid.Row="2" ColumnDefinitions="Auto,Auto" HorizontalAlignment="Left">
42+
<Image Grid.Column="0" Source="/Assets/File-Purple.png" Width="28" Height="28" Margin="0,0,10,0"/>
43+
<TextBlock Grid.Column="1" Foreground="{StaticResource AppPurple}" FontSize="28"
44+
Text="{Binding MaximizedMessage.Files.Length, StringFormat='{}{0} files attached'}"/>
45+
</Grid>
46+
</Grid>
47+
</Border>
48+
</Panel>
49+
50+
</UserControl>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using Avalonia.Controls;
2+
using Avalonia.Markup.Xaml;
3+
4+
namespace FileTransfer.Views.Popups;
5+
6+
public class MaximizedTextView : UserControl
7+
{
8+
public MaximizedTextView()
9+
{
10+
InitializeComponent();
11+
}
12+
13+
private void InitializeComponent()
14+
{
15+
AvaloniaXamlLoader.Load(this);
16+
}
17+
}

src/Views/Popups/MessagePackageView.axaml

+3-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,9 @@
152152
</ControlTemplate>
153153
</Button.Template>
154154
</Button>
155-
<Button Grid.Column="1" Classes="selectable-button-effect highlight-no-change" Margin="7.5,0,0,0">
155+
<Button Grid.Column="1" Classes="selectable-button-effect highlight-no-change" Margin="7.5,0,0,0"
156+
Command="{Binding $parent[views:MainWindow].DataContext.ToggleMaximizedMessage}"
157+
CommandParameter="{Binding Message}">
156158
<Button.Template>
157159
<ControlTemplate>
158160
<Image Source="/Assets/Maximize-Light.png" Width="28" Height="28"/>

0 commit comments

Comments
 (0)