feat: single view trial.
This commit is contained in:
@@ -16,9 +16,7 @@
|
|||||||
Icon="/Assets/Ursa.ico"
|
Icon="/Assets/Ursa.ico"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<u:UrsaWindow.RightContent>
|
<u:UrsaWindow.RightContent>
|
||||||
<u:ThemeToggleButton
|
<views:TitleBarRightContent/>
|
||||||
IsThreeState="True"
|
|
||||||
Mode="Controller" />
|
|
||||||
</u:UrsaWindow.RightContent>
|
</u:UrsaWindow.RightContent>
|
||||||
<views:MainView />
|
<views:MainView />
|
||||||
</u:UrsaWindow>
|
</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:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
@@ -7,8 +7,8 @@
|
|||||||
mc:Ignorable="d" d:DesignWidth="800"
|
mc:Ignorable="d" d:DesignWidth="800"
|
||||||
d:DesignHeight="450"
|
d:DesignHeight="450"
|
||||||
x:Class="Ursa.Demo.Views.SingleView">
|
x:Class="Ursa.Demo.Views.SingleView">
|
||||||
<Panel>
|
<u:UrsaView.RightContent>
|
||||||
<views:MainView/>
|
<views:TitleBarRightContent/>
|
||||||
<u:OverlayDialogHost/>
|
</u:UrsaView.RightContent>
|
||||||
</Panel>
|
<views:MainView/>
|
||||||
</UserControl>
|
</u:UrsaView>
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
|
using Ursa.Controls;
|
||||||
|
|
||||||
namespace Ursa.Demo.Views;
|
namespace Ursa.Demo.Views;
|
||||||
|
|
||||||
public partial class SingleView : UserControl
|
public partial class SingleView : UrsaView
|
||||||
{
|
{
|
||||||
public SingleView()
|
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="TwoTonePathIcon.axaml" />
|
||||||
<ResourceInclude Source="ToolBar.axaml" />
|
<ResourceInclude Source="ToolBar.axaml" />
|
||||||
<ResourceInclude Source="TimeBox.axaml"/>
|
<ResourceInclude Source="TimeBox.axaml"/>
|
||||||
|
<ResourceInclude Source="UrsaView.axaml" />
|
||||||
<ResourceInclude Source="UrsaWindow.axaml"/>
|
<ResourceInclude Source="UrsaWindow.axaml"/>
|
||||||
<ResourceInclude Source="PinCode.axaml" />
|
<ResourceInclude Source="PinCode.axaml" />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</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