feat: single view trial.
This commit is contained in:
@@ -16,9 +16,7 @@
|
||||
Icon="/Assets/Ursa.ico"
|
||||
mc:Ignorable="d">
|
||||
<u:UrsaWindow.RightContent>
|
||||
<u:ThemeToggleButton
|
||||
IsThreeState="True"
|
||||
Mode="Controller" />
|
||||
<views:TitleBarRightContent/>
|
||||
</u:UrsaWindow.RightContent>
|
||||
<views:MainView />
|
||||
</u:UrsaWindow>
|
||||
@@ -1,4 +1,4 @@
|
||||
<UserControl xmlns="https://github.com/avaloniaui"
|
||||
<u:UrsaView xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
@@ -7,8 +7,8 @@
|
||||
mc:Ignorable="d" d:DesignWidth="800"
|
||||
d:DesignHeight="450"
|
||||
x:Class="Ursa.Demo.Views.SingleView">
|
||||
<Panel>
|
||||
<views:MainView/>
|
||||
<u:OverlayDialogHost/>
|
||||
</Panel>
|
||||
</UserControl>
|
||||
<u:UrsaView.RightContent>
|
||||
<views:TitleBarRightContent/>
|
||||
</u:UrsaView.RightContent>
|
||||
<views:MainView/>
|
||||
</u:UrsaView>
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
using Avalonia.Controls;
|
||||
using Ursa.Controls;
|
||||
|
||||
namespace Ursa.Demo.Views;
|
||||
|
||||
public partial class SingleView : UserControl
|
||||
public partial class SingleView : UrsaView
|
||||
{
|
||||
public SingleView()
|
||||
{
|
||||
|
||||
20
demo/Ursa.Demo/Views/TitleBarRightContent.axaml
Normal file
20
demo/Ursa.Demo/Views/TitleBarRightContent.axaml
Normal file
@@ -0,0 +1,20 @@
|
||||
<UserControl xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:u="https://irihi.tech/ursa"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="Ursa.Demo.Views.TitleBarRightContent">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button Theme="{DynamicResource BorderlessButton}" Click="OpenRepository">
|
||||
<PathIcon
|
||||
Width="16"
|
||||
Height="16"
|
||||
Data="M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z"
|
||||
Foreground="{DynamicResource ButtonDefaultTertiaryForeground}" />
|
||||
</Button>
|
||||
<u:ThemeToggleButton
|
||||
IsThreeState="True"
|
||||
Mode="Controller" />
|
||||
</StackPanel>
|
||||
</UserControl>
|
||||
23
demo/Ursa.Demo/Views/TitleBarRightContent.axaml.cs
Normal file
23
demo/Ursa.Demo/Views/TitleBarRightContent.axaml.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Markup.Xaml;
|
||||
|
||||
namespace Ursa.Demo.Views;
|
||||
|
||||
public partial class TitleBarRightContent : UserControl
|
||||
{
|
||||
public TitleBarRightContent()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void OpenRepository(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var top = TopLevel.GetTopLevel(this);
|
||||
if (top is null) return;
|
||||
var launcher = top.Launcher;
|
||||
await launcher.LaunchUriAsync(new Uri("https://github.com/irihitech/Semi.Avalonia"));
|
||||
}
|
||||
}
|
||||
35
src/Ursa.Themes.Semi/Controls/UrsaView.axaml
Normal file
35
src/Ursa.Themes.Semi/Controls/UrsaView.axaml
Normal file
@@ -0,0 +1,35 @@
|
||||
<ResourceDictionary xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:u="https://irihi.tech/ursa">
|
||||
<!-- Add Resources Here -->
|
||||
<ControlTheme x:Key="{x:Type u:UrsaView}" TargetType="{x:Type u:UrsaView}">
|
||||
<Setter Property="Background" Value="{DynamicResource WindowDefaultBackground}" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource WindowDefaultForeground}" />
|
||||
<Setter Property="FontSize" Value="{DynamicResource DefaultFontSize}" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource DefaultFontFamily}" />
|
||||
<Setter Property="u:OverlayDialogHost.IsModalStatusScope" Value="True" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate TargetType="u:UrsaView">
|
||||
<Panel>
|
||||
<Border Background="{TemplateBinding Background}" IsHitTestVisible="False" />
|
||||
<Panel>
|
||||
<ContentPresenter
|
||||
Name="PART_ContentPresenter"
|
||||
Margin="{TemplateBinding Padding}"
|
||||
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}" />
|
||||
<u:TitleBar
|
||||
VerticalAlignment="Top"
|
||||
Content="{Binding $parent[u:UrsaWindow].TitleBarContent}"
|
||||
Margin="{Binding $parent[u:UrsaWindow].TitleBarMargin}"
|
||||
LeftContent="{Binding $parent[u:UrsaWindow].LeftContent}"
|
||||
RightContent="{Binding $parent[u:UrsaWindow].RightContent}" />
|
||||
<u:OverlayDialogHost IsModalStatusReporter="True" />
|
||||
</Panel>
|
||||
</Panel>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
</ControlTheme>
|
||||
</ResourceDictionary>
|
||||
@@ -48,6 +48,7 @@
|
||||
<ResourceInclude Source="TwoTonePathIcon.axaml" />
|
||||
<ResourceInclude Source="ToolBar.axaml" />
|
||||
<ResourceInclude Source="TimeBox.axaml"/>
|
||||
<ResourceInclude Source="UrsaView.axaml" />
|
||||
<ResourceInclude Source="UrsaWindow.axaml"/>
|
||||
<ResourceInclude Source="PinCode.axaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
55
src/Ursa/Windows/UrsaView.cs
Normal file
55
src/Ursa/Windows/UrsaView.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
|
||||
namespace Ursa.Controls;
|
||||
|
||||
/// <summary>
|
||||
/// Ursa window is designed to
|
||||
/// </summary>
|
||||
public class UrsaView: ContentControl
|
||||
{
|
||||
public static readonly StyledProperty<bool> IsTitleBarVisibleProperty =
|
||||
UrsaWindow.IsTitleBarVisibleProperty.AddOwner<UrsaView>();
|
||||
|
||||
public bool IsTitleBarVisible
|
||||
{
|
||||
get => GetValue(IsTitleBarVisibleProperty);
|
||||
set => SetValue(IsTitleBarVisibleProperty, value);
|
||||
}
|
||||
|
||||
public static readonly StyledProperty<object?> LeftContentProperty =
|
||||
UrsaWindow.LeftContentProperty.AddOwner<UrsaView>();
|
||||
|
||||
public object? LeftContent
|
||||
{
|
||||
get => GetValue(LeftContentProperty);
|
||||
set => SetValue(LeftContentProperty, value);
|
||||
}
|
||||
|
||||
public static readonly StyledProperty<object?> RightContentProperty =
|
||||
UrsaWindow.RightContentProperty.AddOwner<UrsaView>();
|
||||
|
||||
public object? RightContent
|
||||
{
|
||||
get => GetValue(RightContentProperty);
|
||||
set => SetValue(RightContentProperty, value);
|
||||
}
|
||||
|
||||
public static readonly StyledProperty<object?> TitleBarContentProperty =
|
||||
UrsaWindow.TitleBarContentProperty.AddOwner<UrsaView>();
|
||||
|
||||
public object? TitleBarContent
|
||||
{
|
||||
get => GetValue(TitleBarContentProperty);
|
||||
set => SetValue(TitleBarContentProperty, value);
|
||||
}
|
||||
|
||||
public static readonly StyledProperty<Thickness> TitleBarMarginProperty =
|
||||
UrsaWindow.TitleBarMarginProperty.AddOwner<UrsaView>();
|
||||
|
||||
public Thickness TitleBarMargin
|
||||
{
|
||||
get => GetValue(TitleBarMarginProperty);
|
||||
set => SetValue(TitleBarMarginProperty, value);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user