style(claude-do): merge Material icons: window chrome + Mission Control
ClaudeDo-Task: d92ba41f-11ba-4760-b6ae-c9e1f5cf40dd
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
<ResourceDictionary xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:ctl="using:ClaudeDo.Ui.Views.Controls">
|
||||
xmlns:ctl="using:ClaudeDo.Ui.Views.Controls"
|
||||
xmlns:cconv="using:ClaudeDo.Ui.Converters">
|
||||
<ControlTheme x:Key="{x:Type ctl:ModalShell}" TargetType="ctl:ModalShell">
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
@@ -26,12 +27,15 @@
|
||||
<Button Name="PART_MaxButton" Grid.Column="2" Classes="icon-btn"
|
||||
IsVisible="{TemplateBinding ShowMaximizeButton}"
|
||||
VerticalAlignment="Center">
|
||||
<PathIcon Name="PART_MaxIcon" Data="{StaticResource Icon.WinMax}" Width="10" Height="10"/>
|
||||
<PathIcon Name="PART_MaxIcon" Width="14" Height="14"
|
||||
Data="{Binding Source='mdi:WindowMaximize', Converter={x:Static cconv:IconKeyConverter.Instance}}"/>
|
||||
</Button>
|
||||
<Button Grid.Column="3" Classes="icon-btn" Content="✕"
|
||||
FontSize="{DynamicResource FontSizeBody}"
|
||||
<Button Grid.Column="3" Classes="icon-btn"
|
||||
Command="{TemplateBinding CloseCommand}"
|
||||
VerticalAlignment="Center"/>
|
||||
VerticalAlignment="Center">
|
||||
<PathIcon Width="14" Height="14"
|
||||
Data="{Binding Source='mdi:WindowClose', Converter={x:Static cconv:IconKeyConverter.Instance}}"/>
|
||||
</Button>
|
||||
</Grid>
|
||||
</Border>
|
||||
<Border Name="PART_Footer" DockPanel.Dock="Bottom"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.Globalization;
|
||||
using System.Windows.Input;
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
@@ -5,6 +6,7 @@ using Avalonia.Controls.Primitives;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Media;
|
||||
using ClaudeDo.Ui.Converters;
|
||||
|
||||
namespace ClaudeDo.Ui.Views.Controls;
|
||||
|
||||
@@ -84,9 +86,8 @@ public class ModalShell : ContentControl
|
||||
{
|
||||
if (_maxIcon is null || _window is null) return;
|
||||
var maximized = _window.WindowState == WindowState.Maximized;
|
||||
var key = maximized ? "Icon.WinRestore" : "Icon.WinMax";
|
||||
if (this.TryFindResource(key, out var geometry) && geometry is Geometry g)
|
||||
_maxIcon.Data = g;
|
||||
_maxIcon.Data = (Geometry?)IconKeyConverter.Instance.Convert(
|
||||
maximized ? "mdi:WindowRestore" : "mdi:WindowMaximize", typeof(Geometry), null, CultureInfo.InvariantCulture);
|
||||
if (_maxButton is not null)
|
||||
{
|
||||
var tipKey = maximized ? "modals.diff.restore" : "modals.diff.maximize";
|
||||
|
||||
@@ -115,16 +115,16 @@
|
||||
<Button Classes="title-ctrl"
|
||||
Command="{Binding OpenMissionControlCommand}"
|
||||
ToolTip.Tip="{loc:Tr missionControl.windowTitle}">
|
||||
<PathIcon Data="{StaticResource Icon.Grid}" Width="12" Height="12"/>
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:ViewGridOutline', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
<Button Classes="title-ctrl" Click="OnMinimize">
|
||||
<PathIcon Data="{StaticResource Icon.WinMin}" Width="10" Height="10"/>
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:WindowMinimize', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
<Button Classes="title-ctrl" Click="OnToggleMax">
|
||||
<PathIcon x:Name="MaxIcon" Data="{StaticResource Icon.WinMax}" Width="10" Height="10"/>
|
||||
<PathIcon x:Name="MaxIcon" Width="14" Height="14" Data="{Binding Source='mdi:WindowMaximize', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
<Button Classes="title-ctrl close" Click="OnClose">
|
||||
<PathIcon Data="{StaticResource Icon.WinClose}" Width="10" Height="10"/>
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:WindowClose', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Avalonia;
|
||||
@@ -5,6 +6,7 @@ using Avalonia.Controls;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Layout;
|
||||
using Avalonia.Media;
|
||||
using ClaudeDo.Ui.Converters;
|
||||
using ClaudeDo.Ui.Localization;
|
||||
using ClaudeDo.Ui.Services;
|
||||
using ClaudeDo.Ui.ViewModels;
|
||||
@@ -64,9 +66,8 @@ public partial class MainWindow : Window
|
||||
|
||||
private void UpdateMaxIcon()
|
||||
{
|
||||
var key = WindowState == WindowState.Maximized ? "Icon.WinRestore" : "Icon.WinMax";
|
||||
if (this.TryFindResource(key, out var geometry) && geometry is Geometry g)
|
||||
MaxIcon.Data = g;
|
||||
MaxIcon.Data = (Geometry?)IconKeyConverter.Instance.Convert(
|
||||
WindowState == WindowState.Maximized ? "mdi:WindowRestore" : "mdi:WindowMaximize", typeof(Geometry), null, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
private void OnDataContextChanged(object? sender, EventArgs e)
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<Button Grid.Column="3" Classes="title-ctrl"
|
||||
Command="{Binding CloseCommand}"
|
||||
ToolTip.Tip="{loc:Tr missionControl.closeSession}">
|
||||
<PathIcon Data="{StaticResource Icon.WinClose}" Width="12" Height="12"/>
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:WindowClose', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
VerticalAlignment="Center"/>
|
||||
<Button Classes="icon-btn"
|
||||
ToolTip.Tip="{loc:Tr missionControl.newSession}">
|
||||
<PathIcon Data="{StaticResource Icon.Plus}" Width="15" Height="15"/>
|
||||
<PathIcon Width="16" Height="16" Data="{Binding Source='mdi:Plus', Converter={StaticResource IconKey}}"/>
|
||||
<Button.Flyout>
|
||||
<MenuFlyout ItemsSource="{Binding SessionTargets}" Opening="OnSessionFlyoutOpening">
|
||||
<MenuFlyout.ItemContainerTheme>
|
||||
@@ -60,7 +60,7 @@
|
||||
</Button>
|
||||
<Button x:Name="RecentSessionsButton" Classes="icon-btn"
|
||||
ToolTip.Tip="{loc:Tr missionControl.recentSessions}">
|
||||
<PathIcon Data="{StaticResource Icon.Clock}" Width="15" Height="15"/>
|
||||
<PathIcon Width="16" Height="16" Data="{Binding Source='mdi:ClockOutline', Converter={StaticResource IconKey}}"/>
|
||||
<Button.Flyout>
|
||||
<Flyout Placement="BottomEdgeAlignedRight" ShowMode="Standard" Opening="OnRecentSessionsFlyoutOpening">
|
||||
<StackPanel Width="380" Spacing="8" Margin="4">
|
||||
@@ -136,12 +136,12 @@
|
||||
<Button Classes="icon-btn"
|
||||
Command="{Binding ToggleLayoutCommand}"
|
||||
ToolTip.Tip="{Binding LayoutToggleLabel}">
|
||||
<PathIcon Data="{StaticResource Icon.Grid}" Width="15" Height="15"/>
|
||||
<PathIcon Width="16" Height="16" Data="{Binding Source='mdi:ViewGridOutline', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
<Button Classes="icon-btn"
|
||||
Command="{Binding OpenSettingsCommand}"
|
||||
ToolTip.Tip="{loc:Tr missionControl.settings}">
|
||||
<PathIcon Data="{StaticResource Icon.Settings}" Width="15" Height="15"/>
|
||||
<PathIcon Width="16" Height="16" Data="{Binding Source='mdi:Cog', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
Reference in New Issue
Block a user