diff --git a/src/ClipCMD/App.axaml b/src/ClipCMD/App.axaml
index 0d29022..9f19caa 100644
--- a/src/ClipCMD/App.axaml
+++ b/src/ClipCMD/App.axaml
@@ -20,4 +20,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ClipCMD/App.axaml.cs b/src/ClipCMD/App.axaml.cs
index fea6b25..524f3f5 100644
--- a/src/ClipCMD/App.axaml.cs
+++ b/src/ClipCMD/App.axaml.cs
@@ -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();
+ }
+ }
}
\ No newline at end of file
diff --git a/src/ClipCMD/Assets/avalonia-logo.ico b/src/ClipCMD/Assets/avalonia-logo.ico
deleted file mode 100644
index da8d49f..0000000
Binary files a/src/ClipCMD/Assets/avalonia-logo.ico and /dev/null differ
diff --git a/src/ClipCMD/Assets/logo.ico b/src/ClipCMD/Assets/logo.ico
new file mode 100644
index 0000000..6d06cd8
Binary files /dev/null and b/src/ClipCMD/Assets/logo.ico differ
diff --git a/src/ClipCMD/ClipCmd.csproj b/src/ClipCMD/ClipCmd.csproj
index 30ab02a..17a6b6a 100644
--- a/src/ClipCMD/ClipCmd.csproj
+++ b/src/ClipCMD/ClipCmd.csproj
@@ -4,12 +4,18 @@
enable
latest
true
+ 1.0.0.0
+ false
+
+
+
+
diff --git a/src/ClipCMD/ViewModels/EditorViewModel.cs b/src/ClipCMD/ViewModels/EditorViewModel.cs
index 30aa479..aea18bd 100644
--- a/src/ClipCMD/ViewModels/EditorViewModel.cs
+++ b/src/ClipCMD/ViewModels/EditorViewModel.cs
@@ -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; }
diff --git a/src/ClipCMD/ViewModels/InputDialogViewModel.cs b/src/ClipCMD/ViewModels/InputDialogViewModel.cs
index 1d44928..de8e1c8 100644
--- a/src/ClipCMD/ViewModels/InputDialogViewModel.cs
+++ b/src/ClipCMD/ViewModels/InputDialogViewModel.cs
@@ -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;
diff --git a/src/ClipCMD/ViewModels/ViewModelBase.cs b/src/ClipCMD/ViewModels/ViewModelBase.cs
index 1ee54b7..62c4e32 100644
--- a/src/ClipCMD/ViewModels/ViewModelBase.cs
+++ b/src/ClipCMD/ViewModels/ViewModelBase.cs
@@ -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
+ }
+ }
}
\ No newline at end of file
diff --git a/src/ClipCMD/Views/EditorWindow.axaml b/src/ClipCMD/Views/EditorWindow.axaml
index fc5b5ce..80297e3 100644
--- a/src/ClipCMD/Views/EditorWindow.axaml
+++ b/src/ClipCMD/Views/EditorWindow.axaml
@@ -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">
diff --git a/src/ClipCMD/Views/MainWindow.axaml b/src/ClipCMD/Views/MainWindow.axaml
index 4e81e1c..74a8ad7 100644
--- a/src/ClipCMD/Views/MainWindow.axaml
+++ b/src/ClipCMD/Views/MainWindow.axaml
@@ -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">
\ No newline at end of file
diff --git a/src/ClipCMD/Views/MainWindow.axaml.cs b/src/ClipCMD/Views/MainWindow.axaml.cs
index b8ead51..04378a1 100644
--- a/src/ClipCMD/Views/MainWindow.axaml.cs
+++ b/src/ClipCMD/Views/MainWindow.axaml.cs
@@ -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;
+ }
+ }
}
\ No newline at end of file