Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions src/Beutl.Extensibility/PageExtension.cs
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
using System.Diagnostics.CodeAnalysis;

using Avalonia.Controls;
using Avalonia.Controls;

using FluentAvalonia.UI.Controls;

namespace Beutl.Extensibility;

[Obsolete("Use ToolWindowExtension instead.")]
public abstract class PageExtension : Extension
{
public abstract Control CreateControl();

public abstract IPageContext CreateContext();

[Obsolete]
public abstract IconSource GetFilledIcon();

public abstract IconSource GetRegularIcon();
}

[Obsolete("Use ToolWindowContext instead.")]
public interface IPageContext : IDisposable
{
PageExtension Extension { get; }
Expand Down
21 changes: 21 additions & 0 deletions src/Beutl.Extensibility/ToolWindowExtension.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using Avalonia.Controls;

namespace Beutl.Extensibility;

public abstract class ToolWindowExtension : Extension
{
public abstract bool AllowMultiple { get; }

public abstract bool ShowAsDialog { get; }

public abstract bool RequiresEditorContext { get; }

public abstract Window? CreateWindow(IEditorContext? editorContext);

public abstract IToolWindowContext? CreateContext(IEditorContext? editorContext);
}

public interface IToolWindowContext : IDisposable
{
ToolWindowExtension Extension { get; }
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
<UserControl x:Class="Beutl.Pages.ExtensionsPage"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:lang="using:Beutl.Language"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="using:FluentAvalonia.UI.Controls"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<Window x:Class="Beutl.Pages.ExtensionsDialog"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:lang="using:Beutl.Language"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="using:FluentAvalonia.UI.Controls"
Title="{x:Static lang:Strings.Extensions}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<Panel>
<ui:NavigationView x:Name="nav"
IsBackButtonVisible="True"
Expand Down Expand Up @@ -79,4 +80,4 @@
</Grid>
</StackPanel>
</Panel>
</UserControl>
</Window>
Original file line number Diff line number Diff line change
@@ -1,33 +1,40 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Interactivity;
using Avalonia.LogicalTree;

using Avalonia.Platform;
using Beutl.Logging;
using Beutl.Pages.ExtensionsPages;
using Beutl.Pages.ExtensionsPages.DevelopPages;
using Beutl.Pages.ExtensionsPages.DiscoverPages;
using Beutl.Services;
using Beutl.ViewModels;
using Beutl.ViewModels.ExtensionsPages;
using Beutl.ViewModels.ExtensionsPages.DiscoverPages;
using Beutl.Views;

using FluentAvalonia.UI.Controls;
using FluentAvalonia.UI.Media.Animation;
using FluentAvalonia.UI.Navigation;

using FluentAvalonia.UI.Windowing;
using Microsoft.Extensions.Logging;

namespace Beutl.Pages;

public sealed partial class ExtensionsPage : UserControl
public sealed partial class ExtensionsDialog : AppWindow
{
private readonly ILogger _logger = Log.CreateLogger<ExtensionsPage>();
private readonly ILogger _logger = Log.CreateLogger<ExtensionsDialog>();

public ExtensionsPage()
public ExtensionsDialog()
{
InitializeComponent();
if (OperatingSystem.IsWindows())
{
TitleBar.ExtendsContentIntoTitleBar = true;
TitleBar.Height = 40;
}
else if (OperatingSystem.IsMacOS())
{
ExtendClientAreaToDecorationsHint = true;
ExtendClientAreaChromeHints = ExtendClientAreaChromeHints.PreferSystemChrome;
}

List<NavigationViewItem> items = GetItems();
nav.MenuItemsSource = items;
Expand All @@ -41,38 +48,31 @@ public ExtensionsPage()
nav.SelectedItem = selected;
}

protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
protected override void OnOpened(EventArgs e)
{
base.OnAttachedToVisualTree(e);
base.OnOpened(e);
if (nav.SelectedItem is NavigationViewItem selected)
{
OnItemInvoked(selected);
}
}

protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
{
base.OnDetachedFromVisualTree(e);
frame.SetNavigationState("|\n0\n0");
}

private void Search_Click(object? sender, RoutedEventArgs e)
{
frame.Navigate(typeof(SearchPage), searchTextBox.Text);
}

private async void OpenSettings_Click(object? sender, RoutedEventArgs e)
{
if (this.FindLogicalAncestorOfType<MainView>() is not { DataContext: MainViewModel viewModel })
return;

if (TopLevel.GetTopLevel(this) is not Window window)
return;
var mainViewModel = Application.Current!.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime lifetime
? lifetime.MainWindow!.DataContext as MainViewModel
: null;
if (mainViewModel is null) return;

var dialogViewModel = viewModel.SettingsDialog;
var dialogViewModel = mainViewModel.SettingsDialog;
var dialog = new SettingsDialog { DataContext = dialogViewModel };
dialogViewModel.GoToAccountSettingsPage();
await dialog.ShowDialog(window);
await dialog.ShowDialog(this);
}

private static List<NavigationViewItem> GetItems()
Expand All @@ -83,28 +83,19 @@ private static List<NavigationViewItem> GetItems()
{
Content = "Home",
Tag = typeof(DiscoverPage),
IconSource = new SymbolIconSource
{
Symbol = Symbol.Home
}
IconSource = new SymbolIconSource { Symbol = Symbol.Home }
},
new NavigationViewItem()
{
Content = "Library",
Tag = typeof(LibraryPage),
IconSource = new SymbolIconSource
{
Symbol = Symbol.Library
}
IconSource = new SymbolIconSource { Symbol = Symbol.Library }
},
new NavigationViewItem()
{
Content = "Develop",
Tag = typeof(DevelopPage),
IconSource = new SymbolIconSource
{
Symbol = Symbol.Code
}
IconSource = new SymbolIconSource { Symbol = Symbol.Code }
}
];
}
Expand All @@ -125,7 +116,7 @@ private void Nav_ItemInvoked(object? sender, NavigationViewItemInvokedEventArgs
private void OnItemInvoked(NavigationViewItem nvi)
{
if (nvi.Tag is Type typ
&& DataContext is ExtensionsPageViewModel { IsAuthorized.Value: true } viewModel)
&& DataContext is ExtensionsDialogViewModel { IsAuthorized.Value: true } viewModel)
{
NavigationTransitionInfo transitionInfo = SharedNavigationTransitionInfo.Instance;
if (typ == typeof(DevelopPage))
Expand Down Expand Up @@ -179,6 +170,7 @@ private void Frame_Navigating(object sender, NavigatingCancelEventArgs e)
entrance.FromHorizontalOffset = 28;
}
}

entrance.FromVerticalOffset = 0;
}
}
Expand Down Expand Up @@ -212,8 +204,8 @@ private static int ToNumber(Type type)
return 0;
}
else if (type == typeof(PackageDetailsPage)
|| type == typeof(PublicPackageDetailsPage)
|| type == typeof(RankingPageViewModel))
|| type == typeof(PublicPackageDetailsPage)
|| type == typeof(RankingPageViewModel))
{
return 1;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ private void DestoryDataContext()

private DataContextFactory GetDataContextFactory()
{
return ((ExtensionsPageViewModel)this.FindLogicalAncestorOfType<ExtensionsPage>()!.DataContext!).Develop.DataContextFactory;
return ((ExtensionsDialogViewModel)this.FindLogicalAncestorOfType<ExtensionsDialog>()!.DataContext!).Develop.DataContextFactory;
}

private void NavigatePackageSettingsPage_Click(object? sender, RoutedEventArgs e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ private void DestoryDataContext()

private DataContextFactory GetDataContextFactory()
{
return ((ExtensionsPageViewModel)this.FindLogicalAncestorOfType<ExtensionsPage>()!.DataContext!).Develop.DataContextFactory;
return ((ExtensionsDialogViewModel)this.FindLogicalAncestorOfType<ExtensionsDialog>()!.DataContext!).Develop.DataContextFactory;
}

private void OnReleasesListPointerReleased(object? sender, PointerReleasedEventArgs e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ private void DestoryDataContext()

private DataContextFactory GetDataContextFactory()
{
return ((ExtensionsPageViewModel)this.FindLogicalAncestorOfType<ExtensionsPage>()!.DataContext!).Develop.DataContextFactory;
return ((ExtensionsDialogViewModel)this.FindLogicalAncestorOfType<ExtensionsDialog>()!.DataContext!).Develop.DataContextFactory;
}

private void NavigatePackageDetailsPage_Click(object? sender, RoutedEventArgs e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ private void DestoryDataContext()

private DataContextFactory GetDataContextFactory()
{
return ((ExtensionsPageViewModel)this.FindLogicalAncestorOfType<ExtensionsPage>()!.DataContext!).Develop.DataContextFactory;
return ((ExtensionsDialogViewModel)this.FindLogicalAncestorOfType<ExtensionsDialog>()!.DataContext!).Develop.DataContextFactory;
}

private void NavigatePackageDetailsPage_Click(object? sender, RoutedEventArgs e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private void DestoryDataContext()

private DataContextFactory GetDataContextFactory()
{
return ((ExtensionsPageViewModel)this.FindLogicalAncestorOfType<ExtensionsPage>()!.DataContext!).Discover.DataContextFactory;
return ((ExtensionsDialogViewModel)this.FindLogicalAncestorOfType<ExtensionsDialog>()!.DataContext!).Discover.DataContextFactory;
}

private async void OpenWebSite_Click(object? sender, RoutedEventArgs e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private void DestoryDataContext()

private DataContextFactory GetDataContextFactory()
{
return ((ExtensionsPageViewModel)this.FindLogicalAncestorOfType<ExtensionsPage>()!.DataContext!).Discover.DataContextFactory;
return ((ExtensionsDialogViewModel)this.FindLogicalAncestorOfType<ExtensionsDialog>()!.DataContext!).Discover.DataContextFactory;
}

private void Package_Click(object? sender, RoutedEventArgs e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private void DestoryDataContext()

private DataContextFactory GetDataContextFactory()
{
return ((ExtensionsPageViewModel)this.FindLogicalAncestorOfType<ExtensionsPage>()!.DataContext!).Discover.DataContextFactory;
return ((ExtensionsDialogViewModel)this.FindLogicalAncestorOfType<ExtensionsDialog>()!.DataContext!).Discover.DataContextFactory;
}

private void Package_Click(object? sender, RoutedEventArgs e)
Expand Down
2 changes: 1 addition & 1 deletion src/Beutl/Pages/OutputDialog.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
xmlns:viewModel="using:Beutl.ViewModels"
d:DesignHeight="450"
d:DesignWidth="800"
x:DataType="viewModel:OutputPageViewModel"
x:DataType="viewModel:OutputDialogViewModel"
mc:Ignorable="d">
<Grid Name="Grid"
ColumnDefinitions="300,*"
Expand Down
8 changes: 4 additions & 4 deletions src/Beutl/Pages/OutputDialog.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public OutputDialog()
protected override void OnOpened(EventArgs e)
{
base.OnOpened(e);
if (DataContext is OutputPageViewModel viewModel)
if (DataContext is OutputDialogViewModel viewModel)
{
viewModel.Restore();
}
Expand All @@ -47,15 +47,15 @@ protected override void OnOpened(EventArgs e)
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
if (DataContext is OutputPageViewModel viewModel)
if (DataContext is OutputDialogViewModel viewModel)
{
viewModel.Save();
}
}

private async void OnAddClick(object? sender, RoutedEventArgs e)
{
if (DataContext is OutputPageViewModel viewModel)
if (DataContext is OutputDialogViewModel viewModel)
{
var dialogViewModel = new AddOutputQueueViewModel();
var dialog = new AddOutputQueueDialog { DataContext = dialogViewModel };
Expand All @@ -69,7 +69,7 @@ private async void OnAddClick(object? sender, RoutedEventArgs e)

private void OnRemoveClick(object? sender, RoutedEventArgs e)
{
if (DataContext is OutputPageViewModel viewModel)
if (DataContext is OutputDialogViewModel viewModel)
{
viewModel.RemoveSelected();
viewModel.Save();
Expand Down
43 changes: 0 additions & 43 deletions src/Beutl/Services/PrimitiveImpls/ExtensionPageExtension.cs

This file was deleted.

Loading
Loading