2026-07-23 19:47:22 -05:00
|
|
|
using Avalonia.Controls;
|
|
|
|
|
|
2026-07-28 19:06:33 -05:00
|
|
|
namespace LANCommander.Launcher.Plugins.Extensions;
|
2026-07-23 19:47:22 -05:00
|
|
|
|
|
|
|
|
/// <summary>
|
2026-07-28 19:06:33 -05:00
|
|
|
/// Adds a top-level navigable destination reachable from the launcher shell. The view model
|
2026-07-23 19:47:22 -05:00
|
|
|
/// is registered with the <see cref="IViewRegistry"/> so the shell's content control can render the
|
|
|
|
|
/// associated view when navigated to.
|
|
|
|
|
/// </summary>
|
2026-07-28 19:06:33 -05:00
|
|
|
public interface INavigationPageExtension
|
2026-07-23 19:47:22 -05:00
|
|
|
{
|
|
|
|
|
/// <summary>Label shown for the navigation entry.</summary>
|
|
|
|
|
string Label { get; }
|
|
|
|
|
|
2026-07-28 19:06:33 -05:00
|
|
|
/// <summary>Relative position among extension destinations; lower values appear first.</summary>
|
2026-07-23 19:47:22 -05:00
|
|
|
int Order { get; }
|
|
|
|
|
|
|
|
|
|
/// <summary>The view model type used both as the navigation target and the registry key.</summary>
|
|
|
|
|
Type ViewModelType { get; }
|
|
|
|
|
|
|
|
|
|
/// <summary>Creates the view model instance shown when the destination is activated.</summary>
|
|
|
|
|
PluginViewModelBase CreateViewModel();
|
|
|
|
|
|
|
|
|
|
/// <summary>Builds the control that renders <see cref="ViewModelType"/>.</summary>
|
|
|
|
|
Control BuildView();
|
|
|
|
|
}
|