Skip to content

Commit 1883269

Browse files
committed
Update to Avalonia 11
This commit contains, what I hope is, the bare necessities for updating to Avalonia 11 without changing any functionality. This commit is the result of an experienced developer solving a problem in a new framework. This commit solves telstrapurple#91.
1 parent e254568 commit 1883269

14 files changed

+41
-38
lines changed

PurpleExplorer/App.xaml PurpleExplorer/App.axaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
xmlns:local="clr-namespace:PurpleExplorer"
44
xmlns:vm="clr-namespace:PurpleExplorer.ViewModels;assembly=PurpleExplorer"
55
x:Class="PurpleExplorer.App"
6+
RequestedThemeVariant="Default"
67
Name="Purple Explorer">
78
<Application.DataTemplates>
89
<local:ViewLocator />
910
</Application.DataTemplates>
1011

1112
<Application.Styles>
12-
<StyleInclude Source="avares://Avalonia.Themes.Default/DefaultTheme.xaml" />
13-
<StyleInclude Source="avares://Avalonia.Themes.Default/Accents/BaseLight.xaml" />
14-
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Default.xaml"/>
1513
<StyleInclude Source="/Styles/CommonStyles.xaml" />
14+
<SimpleTheme/>
15+
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Simple.xaml"/>
1616
</Application.Styles>
1717

1818
<Design.DataContext>

PurpleExplorer/App.xaml.cs PurpleExplorer/App.axaml.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public override void OnFrameworkInitializationCompleted()
3131
RxApp.SuspensionHost.CreateNewAppState = () => new AppState();
3232
RxApp.SuspensionHost.SetupDefaultSuspendResume(new NewtonsoftJsonSuspensionDriver(appStatePath));
3333
suspension.OnFrameworkInitializationCompleted();
34-
var state = RxApp.SuspensionHost.GetAppState<AppState>();
34+
var state = RxApp.SuspensionHost.GetAppState<AppState>() ?? new AppState();
3535

3636
Locator.CurrentMutable.RegisterLazySingleton(() => state, typeof(IAppState));
3737
Locator.CurrentMutable.RegisterLazySingleton(() => new LoggingService(), typeof(ILoggingService));

PurpleExplorer/Helpers/MessageBoxHelper.cs

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Avalonia;
22
using Avalonia.Controls.ApplicationLifetimes;
3-
using MessageBox.Avalonia.DTO;
4-
using MessageBox.Avalonia.Enums;
3+
using MsBox.Avalonia.Dto;
4+
using MsBox.Avalonia.Enums;
55
using System.Threading.Tasks;
66

77
namespace PurpleExplorer.Helpers;
@@ -27,7 +27,7 @@ public static async Task<ButtonResult> ShowMessage(string title, string message)
2727

2828
private static async Task<ButtonResult> ShowMessageBox(ButtonEnum buttons, Icon icon, string title, string message)
2929
{
30-
var msBoxStandardWindow = MessageBox.Avalonia.MessageBoxManager.GetMessageBoxStandardWindow(new MessageBoxStandardParams
30+
var msBoxStandardWindow = MsBox.Avalonia.MessageBoxManager.GetMessageBoxStandard(new MessageBoxStandardParams
3131
{
3232
ButtonDefinitions = buttons,
3333
ContentTitle = title,
@@ -37,8 +37,6 @@ private static async Task<ButtonResult> ShowMessageBox(ButtonEnum buttons, Icon
3737
CanResize = true,
3838
WindowStartupLocation = Avalonia.Controls.WindowStartupLocation.CenterOwner
3939
});
40-
41-
return await msBoxStandardWindow.ShowDialog((Application.Current.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime)
42-
.Windows[0]);
40+
return await msBoxStandardWindow.ShowAsync();
4341
}
4442
}

PurpleExplorer/Helpers/TopicHelper.cs

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
using System.Linq;
88
using System.Text;
99
using System.Threading.Tasks;
10-
using AvaloniaEdit.Utils;
1110
using Message = PurpleExplorer.Models.Message;
1211
using AzureMessage = Microsoft.Azure.ServiceBus.Message;
1312

PurpleExplorer/Program.cs

+8-5
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,13 @@ public static void Main(string[] args) => BuildAvaloniaApp()
1515

1616
// Avalonia configuration, don't remove; also used by visual designer.
1717
public static AppBuilder BuildAvaloniaApp()
18-
=> AppBuilder.Configure<App>()
18+
{
19+
IconProvider.Current
20+
.Register<FontAwesomeIconProvider>();
21+
22+
return AppBuilder.Configure<App>()
1923
.UsePlatformDetect()
2024
.LogToTrace()
21-
.UseReactiveUI()
22-
.WithIcons(container => container
23-
.Register<FontAwesomeIconProvider>());
24-
}
25+
.UseReactiveUI();
26+
}
27+
}

PurpleExplorer/PurpleExplorer.csproj

+9-8
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,17 @@
1818
<AvaloniaResource Include="Assets\**" />
1919
</ItemGroup>
2020
<ItemGroup>
21-
<PackageReference Include="Avalonia" Version="0.10.18" />
22-
<PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.18" />
23-
<PackageReference Include="Avalonia.Desktop" Version="0.10.18" />
21+
<PackageReference Include="Avalonia" Version="11.0.4" />
22+
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.0.4" />
23+
<PackageReference Include="Avalonia.Desktop" Version="11.0.4" />
2424
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
25-
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="0.10.18" />
26-
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.18" />
27-
<PackageReference Include="MessageBox.Avalonia" Version="2.1.0" />
25+
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.4" />
26+
<PackageReference Include="Avalonia.ReactiveUI" Version="11.0.4" />
27+
<PackageReference Include="Avalonia.Themes.Simple" Version="11.0.4" />
28+
<PackageReference Include="MessageBox.Avalonia" Version="3.1.4" />
2829
<PackageReference Include="Microsoft.Azure.ServiceBus" Version="5.2.0" />
29-
<PackageReference Include="Projektanker.Icons.Avalonia" Version="5.6.0" />
30-
<PackageReference Include="Projektanker.Icons.Avalonia.FontAwesome" Version="5.6.0" />
30+
<PackageReference Include="Projektanker.Icons.Avalonia" Version="8.2.0" />
31+
<PackageReference Include="Projektanker.Icons.Avalonia.FontAwesome" Version="8.2.0" />
3132
</ItemGroup>
3233
<ItemGroup>
3334
<None Update="appstate.json">

PurpleExplorer/ViewLocator.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class ViewLocator : IDataTemplate
1212
{
1313
public bool SupportsRecycling => false;
1414

15-
public IControl Build(object data)
15+
public Control Build(object data)
1616
{
1717
var name = data.GetType().FullName.Replace("ViewModel", "View");
1818
var type = Type.GetType(name);

PurpleExplorer/ViewModels/MainWindowViewModel.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
using PurpleExplorer.Views;
99
using ReactiveUI;
1010
using System.Threading.Tasks;
11-
using MessageBox.Avalonia.Enums;
11+
using MsBox.Avalonia.Enums;
1212
using Microsoft.Azure.ServiceBus;
1313
using PurpleExplorer.Services;
1414
using Splat;

PurpleExplorer/ViewModels/MessageDetailsWindowViewModel.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using System.Threading.Tasks;
22
using Avalonia.Controls;
3-
using MessageBox.Avalonia.Enums;
3+
using MsBox.Avalonia.Enums;
44
using PurpleExplorer.Helpers;
55
using PurpleExplorer.Models;
66
using PurpleExplorer.Services;

PurpleExplorer/Views/AddMessageWindow.xaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
TextWrapping="Wrap" Text="{Binding Path=Title, Mode=TwoWay}" Watermark="Save message with title:" />
4848
</StackPanel>
4949

50-
<DataGrid Grid.Row="2" Name="dgSavedMessages" Items="{Binding Path=SavedMessages, Mode=TwoWay}"
50+
<DataGrid Grid.Row="2" Name="dgSavedMessages" ItemsSource="{Binding Path=SavedMessages, Mode=TwoWay}"
5151
SelectionChanged="messageSelectionChanged"
5252
IsReadOnly="True">
5353
<DataGrid.Columns>

PurpleExplorer/Views/ConnectionStringWindow.xaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
</DockPanel>
4646

4747
<ListBox Grid.Row="4" Name="lsbSavedConnectionString" Margin="5,0,5,0"
48-
Items="{Binding Path=SavedConnectionStrings, Mode=TwoWay}"
48+
ItemsSource="{Binding Path=SavedConnectionStrings, Mode=TwoWay}"
4949
Width="600" Height="300" VerticalAlignment="Top"
5050
SelectionChanged="lsbConnectionStringSelectionChanged" HorizontalAlignment="Left">
5151

PurpleExplorer/Views/MainWindow.xaml

+4-4
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
<DockPanel Grid.Column="0" Grid.Row="1" Dock="Left">
8585
<TabControl Width="300">
8686
<TabItem Header="{Binding TopicTabHeader}">
87-
<TreeView SelectionChanged="TreeView_SelectionChanged" Items="{Binding ConnectedServiceBuses}" Name="tvTopics">
87+
<TreeView SelectionChanged="TreeView_SelectionChanged" ItemsSource="{Binding ConnectedServiceBuses}" Name="tvTopics">
8888
<TreeView.DataTemplates>
8989
<TreeDataTemplate DataType="models:ServiceBusResource" ItemsSource="{Binding Topics}">
9090
<StackPanel Orientation="Horizontal">
@@ -122,7 +122,7 @@
122122
</TreeView>
123123
</TabItem>
124124
<TabItem Header="{Binding QueueTabHeader}">
125-
<TreeView SelectionChanged="TreeView_SelectionChanged" Items="{Binding ConnectedServiceBuses}" Name="tvQueues">
125+
<TreeView SelectionChanged="TreeView_SelectionChanged" ItemsSource="{Binding ConnectedServiceBuses}" Name="tvQueues">
126126
<TreeView.DataTemplates>
127127
<TreeDataTemplate DataType="models:ServiceBusResource" ItemsSource="{Binding Queues}">
128128
<StackPanel Orientation="Horizontal">
@@ -157,7 +157,7 @@
157157

158158
<TabControl>
159159
<TabItem Header="{Binding MessagesTabHeader}" VerticalContentAlignment="Center">
160-
<DataGrid Items="{Binding Messages}" Tapped="MessagesGrid_Tapped"
160+
<DataGrid ItemsSource="{Binding Messages}" Tapped="MessagesGrid_Tapped"
161161
DoubleTapped="MessagesGrid_DoubleTapped"
162162
IsReadOnly="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
163163
<DataGrid.Columns>
@@ -172,7 +172,7 @@
172172
</DataGrid>
173173
</TabItem>
174174
<TabItem Header="{Binding DlqTabHeader}" VerticalContentAlignment="Center">
175-
<DataGrid Items="{Binding DlqMessages}" Tapped="MessagesGrid_Tapped"
175+
<DataGrid ItemsSource="{Binding DlqMessages}" Tapped="MessagesGrid_Tapped"
176176
DoubleTapped="MessagesGrid_DoubleTapped" IsReadOnly="True">
177177
<DataGrid.Columns>
178178
<DataGridTextColumn Header="Sequence Number" Binding="{Binding SequenceNumber}" />

PurpleExplorer/Views/MainWindow.xaml.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Avalonia;
22
using Avalonia.Controls;
3+
using Avalonia.Input;
34
using Avalonia.Interactivity;
45
using Avalonia.Markup.Xaml;
56
using PurpleExplorer.Helpers;
@@ -23,7 +24,7 @@ private void InitializeComponent()
2324
AvaloniaXamlLoader.Load(this);
2425
}
2526

26-
private async void MessagesGrid_DoubleTapped(object sender, RoutedEventArgs e)
27+
private async void MessagesGrid_DoubleTapped(object sender, TappedEventArgs e)
2728
{
2829
var grid = sender as DataGrid;
2930
var mainWindowViewModel = DataContext as MainWindowViewModel;
@@ -44,7 +45,7 @@ private async void MessagesGrid_DoubleTapped(object sender, RoutedEventArgs e)
4445
await ModalWindowHelper.ShowModalWindow<MessageDetailsWindow, MessageDetailsWindowViewModel>(viewModal);
4546
}
4647

47-
private void MessagesGrid_Tapped(object sender, RoutedEventArgs e)
48+
public void MessagesGrid_Tapped(object sender, TappedEventArgs e)
4849
{
4950
var grid = sender as DataGrid;
5051
var mainWindowViewModel = DataContext as MainWindowViewModel;

PurpleExplorer/Views/MessageDetailsWindow.xaml

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
33
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:i="clr-namespace:Projektanker.Icons.Avalonia;assembly=Projektanker.Icons.Avalonia"
56
mc:Ignorable="d" d:DesignWidth="780" d:DesignHeight="630"
67
x:Class="PurpleExplorer.Views.MessageDetailsWindow"
78
xmlns:vm="clr-namespace:PurpleExplorer.ViewModels;assembly=PurpleExplorer"
@@ -46,23 +47,23 @@
4647
Command="{Binding DeleteMessage}"
4748
CommandParameter="{Binding $parent[Window]}">
4849
<StackPanel Orientation="Horizontal">
49-
<DrawingPresenter Drawing="{DynamicResource Material.Delete}" />
50+
<i:Icon Value="fa-trash" />
5051
<TextBlock VerticalAlignment="Center">Delete message</TextBlock>
5152
</StackPanel>
5253
</Button>
5354
<Button Command="{Binding DeadletterMessage}"
5455
IsVisible="{Binding !Message.IsDlq}"
5556
Classes="topButton">
5657
<StackPanel Orientation="Horizontal">
57-
<DrawingPresenter Drawing="{DynamicResource Material.EmailSend}" />
58+
<i:Icon Value="fa-envelope" />
5859
<TextBlock VerticalAlignment="Center">Send to dead-letter</TextBlock>
5960
</StackPanel>
6061
</Button>
6162
<Button Name="ResendButton" Command="{Binding ResubmitMessage}"
6263
IsVisible="{Binding !!Message.IsDlq}"
6364
Classes="topButton">
6465
<StackPanel Orientation="Horizontal">
65-
<DrawingPresenter Drawing="{DynamicResource Material.EmailSend}" />
66+
<i:Icon Value="fa-envelope" />
6667
<TextBlock VerticalAlignment="Center">Resubmit back to topic</TextBlock>
6768
</StackPanel>
6869
</Button>

0 commit comments

Comments
 (0)