mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-22 00:54:26 +08:00
settings_re4
This commit is contained in:
54
LanMountainDesktop.PluginSdk/SettingsPageBase.cs
Normal file
54
LanMountainDesktop.PluginSdk/SettingsPageBase.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using Avalonia.Controls;
|
||||
|
||||
namespace LanMountainDesktop.PluginSdk;
|
||||
|
||||
public abstract class SettingsPageBase : UserControl
|
||||
{
|
||||
public static readonly string DialogHostIdentifier = "LanMountainDesktop.SettingsWindow";
|
||||
|
||||
private ISettingsPageHostContext? _hostContext;
|
||||
|
||||
public ISettingsPageHostContext? HostContext => _hostContext;
|
||||
|
||||
public Uri? NavigationUri { get; set; }
|
||||
|
||||
public void InitializeHostContext(ISettingsPageHostContext hostContext)
|
||||
{
|
||||
_hostContext = hostContext;
|
||||
}
|
||||
|
||||
public virtual void OnNavigatedTo(object? parameter)
|
||||
{
|
||||
}
|
||||
|
||||
protected void OpenDrawer(Control content, string? title = null)
|
||||
{
|
||||
_hostContext?.OpenDrawer(content, title);
|
||||
}
|
||||
|
||||
protected void OpenDrawer(object content, bool usePageDataContext = false, object? dataContext = null, string? title = null)
|
||||
{
|
||||
if (content is Control control && !usePageDataContext)
|
||||
{
|
||||
control.DataContext = dataContext ?? DataContext ?? this;
|
||||
OpenDrawer(control, title);
|
||||
return;
|
||||
}
|
||||
|
||||
if (content is Control drawerControl)
|
||||
{
|
||||
OpenDrawer(drawerControl, title);
|
||||
}
|
||||
}
|
||||
|
||||
protected void CloseDrawer()
|
||||
{
|
||||
_hostContext?.CloseDrawer();
|
||||
}
|
||||
|
||||
protected void RequestRestart(string? reason = null)
|
||||
{
|
||||
_hostContext?.RequestRestart(reason);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user