mirror of
https://github.com/Stone-Red-Code/ClipCMD.git
synced 2026-09-04 08:56:11 +02:00
Add icon, tray icon and better title
This commit is contained in:
@@ -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>
|
||||
@@ -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 |
@@ -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" />
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user