Add icon, tray icon and better title

This commit is contained in:
Stone_Red
2024-05-07 16:19:35 +02:00
parent 9322e10913
commit 93dbf73b23
11 changed files with 74 additions and 4 deletions
+12
View File
@@ -20,4 +20,16 @@
<dialogHostAvalonia:DialogHostStyles />
<StyleInclude Source="avares://AvaloniaEdit/Themes/Fluent/AvaloniaEdit.xaml" />
</Application.Styles>
<TrayIcon.Icons>
<TrayIcons>
<TrayIcon Icon="/Assets/logo.ico" ToolTipText="ClipCMD" Clicked="TrayIcon_Clicked">
<TrayIcon.Menu>
<NativeMenu>
<NativeMenuItem Header="Quit" Click="NativeMenuItem_Click_Quit" />
</NativeMenu>
</TrayIcon.Menu>
</TrayIcon>
</TrayIcons>
</TrayIcon.Icons>
</Application>
+19
View File
@@ -56,4 +56,23 @@ public partial class App : Application
base.OnFrameworkInitializationCompleted();
}
private void TrayIcon_Clicked(object? sender, EventArgs e)
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop && desktop.MainWindow is not null)
{
desktop.MainWindow.WindowState = Avalonia.Controls.WindowState.Normal;
desktop.MainWindow.Show();
desktop.MainWindow.Activate();
}
}
private void NativeMenuItem_Click_Quit(object? sender, EventArgs e)
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
Settings.SaveSettings();
desktop.Shutdown();
}
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

+6
View File
@@ -4,12 +4,18 @@
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
<Version>1.0.0.0</Version>
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
</PropertyGroup>
<ItemGroup>
<AvaloniaResource Include="Assets\**" />
</ItemGroup>
<ItemGroup>
<None Remove="Assets\logo.ico" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="$(AvaloniaVersion)" />
<PackageReference Include="Avalonia.AvaloniaEdit" Version="11.0.6" />
+1 -1
View File
@@ -8,7 +8,7 @@ internal class EditorViewModel : ViewModelBase
{
private readonly ClipCmdCommandHandler clipCmdCommandHandler;
public string Title => $"ClipCMD Editor - {Name}";
public new string Title => $"{base.Title} - Editing {Name}";
public string Name { get; }
@@ -8,7 +8,7 @@ namespace ClipCmd.ViewModels;
internal class InputDialogViewModel(string title, string defaultValue = "") : ViewModelBase
{
public string Title { get; set; } = title;
public new string Title { get; set; } = title;
public string Value { get; set; } = defaultValue;
+19
View File
@@ -1,7 +1,26 @@
using ReactiveUI;
using System.Diagnostics;
using System.Reflection;
namespace ClipCmd.ViewModels;
public class ViewModelBase : ReactiveObject
{
public string Title
{
get
{
string title = "ClipCMD";
Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location);
string? version = fileVersionInfo.ProductVersion;
#if DEBUG
return $"{title} - Dev {version}";
#else
return $"{title} - {version}";
#endif
}
}
}
+1
View File
@@ -8,6 +8,7 @@
x:Class="ClipCmd.Views.EditorWindow"
x:DataType="vm:EditorViewModel"
Title="{Binding Title}"
Icon="/Assets/logo.ico"
Width="800" Height="450"
WindowStartupLocation="CenterScreen"
Loaded="Window_Loaded">
+4 -2
View File
@@ -7,8 +7,10 @@
xmlns:views="clr-namespace:ClipCmd.Views"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="ClipCmd.Views.MainWindow"
Icon="/Assets/avalonia-logo.ico"
Title="ClipCmd" Width="800" Height="450">
x:DataType="vm:ViewModelBase"
Icon="/Assets/logo.ico"
Title="{Binding Title}" Width="800" Height="450"
Closing="Window_Closing">
<views:MainView />
</Window>
+11
View File
@@ -1,10 +1,21 @@
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
namespace ClipCmd.Views;
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Closing(object? sender, WindowClosingEventArgs e)
{
if (Avalonia.Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop && desktop.MainWindow is not null)
{
desktop.MainWindow.Hide();
e.Cancel = true;
}
}
}