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