mirror of
https://github.com/Stone-Red-Code/ClipCMD.git
synced 2026-09-09 23:39:00 +02:00
Add icon, tray icon and better title
This commit is contained in:
@@ -20,4 +20,16 @@
|
|||||||
<dialogHostAvalonia:DialogHostStyles />
|
<dialogHostAvalonia:DialogHostStyles />
|
||||||
<StyleInclude Source="avares://AvaloniaEdit/Themes/Fluent/AvaloniaEdit.xaml" />
|
<StyleInclude Source="avares://AvaloniaEdit/Themes/Fluent/AvaloniaEdit.xaml" />
|
||||||
</Application.Styles>
|
</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>
|
</Application>
|
||||||
@@ -56,4 +56,23 @@ public partial class App : Application
|
|||||||
|
|
||||||
base.OnFrameworkInitializationCompleted();
|
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>
|
<Nullable>enable</Nullable>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||||
|
<Version>1.0.0.0</Version>
|
||||||
|
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AvaloniaResource Include="Assets\**" />
|
<AvaloniaResource Include="Assets\**" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Remove="Assets\logo.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Avalonia" Version="$(AvaloniaVersion)" />
|
<PackageReference Include="Avalonia" Version="$(AvaloniaVersion)" />
|
||||||
<PackageReference Include="Avalonia.AvaloniaEdit" Version="11.0.6" />
|
<PackageReference Include="Avalonia.AvaloniaEdit" Version="11.0.6" />
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ internal class EditorViewModel : ViewModelBase
|
|||||||
{
|
{
|
||||||
private readonly ClipCmdCommandHandler clipCmdCommandHandler;
|
private readonly ClipCmdCommandHandler clipCmdCommandHandler;
|
||||||
|
|
||||||
public string Title => $"ClipCMD Editor - {Name}";
|
public new string Title => $"{base.Title} - Editing {Name}";
|
||||||
|
|
||||||
public string Name { get; }
|
public string Name { get; }
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace ClipCmd.ViewModels;
|
|||||||
|
|
||||||
internal class InputDialogViewModel(string title, string defaultValue = "") : ViewModelBase
|
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;
|
public string Value { get; set; } = defaultValue;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,26 @@
|
|||||||
using ReactiveUI;
|
using ReactiveUI;
|
||||||
|
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
namespace ClipCmd.ViewModels;
|
namespace ClipCmd.ViewModels;
|
||||||
|
|
||||||
public class ViewModelBase : ReactiveObject
|
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:Class="ClipCmd.Views.EditorWindow"
|
||||||
x:DataType="vm:EditorViewModel"
|
x:DataType="vm:EditorViewModel"
|
||||||
Title="{Binding Title}"
|
Title="{Binding Title}"
|
||||||
|
Icon="/Assets/logo.ico"
|
||||||
Width="800" Height="450"
|
Width="800" Height="450"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
Loaded="Window_Loaded">
|
Loaded="Window_Loaded">
|
||||||
|
|||||||
@@ -7,8 +7,10 @@
|
|||||||
xmlns:views="clr-namespace:ClipCmd.Views"
|
xmlns:views="clr-namespace:ClipCmd.Views"
|
||||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
x:Class="ClipCmd.Views.MainWindow"
|
x:Class="ClipCmd.Views.MainWindow"
|
||||||
Icon="/Assets/avalonia-logo.ico"
|
x:DataType="vm:ViewModelBase"
|
||||||
Title="ClipCmd" Width="800" Height="450">
|
Icon="/Assets/logo.ico"
|
||||||
|
Title="{Binding Title}" Width="800" Height="450"
|
||||||
|
Closing="Window_Closing">
|
||||||
|
|
||||||
<views:MainView />
|
<views:MainView />
|
||||||
</Window>
|
</Window>
|
||||||
@@ -1,10 +1,21 @@
|
|||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Controls.ApplicationLifetimes;
|
||||||
|
|
||||||
namespace ClipCmd.Views;
|
namespace ClipCmd.Views;
|
||||||
|
|
||||||
public partial class MainWindow : Window
|
public partial class MainWindow : Window
|
||||||
{
|
{
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
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