mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Settings - Added plugin search
This commit is contained in:
parent
19685eb516
commit
26639ca8fd
@ -7,7 +7,7 @@
|
||||
xmlns:shared="clr-namespace:Artemis.UI.Avalonia.Shared.Controls;assembly=Artemis.UI.Avalonia.Shared"
|
||||
mc:Ignorable="d" d:DesignWidth="900" d:DesignHeight="450"
|
||||
x:Class="Artemis.UI.Avalonia.Screens.Plugins.Views.PluginSettingsView">
|
||||
<Border Classes="card" Width="900" Padding="15" Margin="0 5">
|
||||
<Border Classes="card" Padding="15" Margin="0 5">
|
||||
<Grid RowDefinitions="*,Auto" ColumnDefinitions="4*,5*">
|
||||
<Grid Grid.Row="0" RowDefinitions="Auto,Auto,*" ColumnDefinitions="80,*">
|
||||
<shared:ArtemisIcon Icon="{Binding Plugin.Info.ResolvedIcon}"
|
||||
@ -72,13 +72,13 @@
|
||||
</controls:SplitButton.Flyout>
|
||||
</controls:SplitButton>
|
||||
|
||||
<controls:HyperlinkButton Classes="icon-button"
|
||||
<controls:HyperlinkButton Classes="icon-button icon-button-large"
|
||||
Margin="5 0"
|
||||
IsVisible="{Binding Plugin.Info.Website, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
|
||||
NavigateUri="{Binding Plugin.Info.Website}">
|
||||
<avalonia:MaterialIcon Kind="Web" />
|
||||
</controls:HyperlinkButton>
|
||||
<controls:HyperlinkButton Classes="icon-button"
|
||||
<controls:HyperlinkButton Classes="icon-button icon-button-large"
|
||||
Margin="5 0"
|
||||
IsVisible="{Binding Plugin.Info.Repository, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
|
||||
NavigateUri="{Binding Plugin.Info.Repository}">
|
||||
|
||||
@ -13,14 +13,12 @@
|
||||
|
||||
<ContentControl Grid.Column="0" Content="{Binding SidebarViewModel}" />
|
||||
|
||||
<Border Classes="router-container" Grid.Column="1" Margin="0 40 0 0">
|
||||
<!-- <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" > -->
|
||||
<reactiveUi:RoutedViewHost Router="{Binding Router}">
|
||||
<reactiveUi:RoutedViewHost.PageTransition>
|
||||
<CrossFade Duration="0.1" />
|
||||
</reactiveUi:RoutedViewHost.PageTransition>
|
||||
</reactiveUi:RoutedViewHost>
|
||||
<!-- </ScrollViewer> -->
|
||||
<Border Classes="router-container" Grid.Column="1" Margin="0 10 0 0">
|
||||
<reactiveUi:RoutedViewHost Router="{Binding Router}">
|
||||
<reactiveUi:RoutedViewHost.PageTransition>
|
||||
<CrossFade Duration="0.1" />
|
||||
</reactiveUi:RoutedViewHost.PageTransition>
|
||||
</reactiveUi:RoutedViewHost>
|
||||
</Border>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@ -19,12 +19,12 @@ namespace Artemis.UI.Avalonia.Screens.Settings.Tabs.ViewModels
|
||||
{
|
||||
public class PluginsTabViewModel : ActivatableViewModelBase
|
||||
{
|
||||
private readonly IPluginManagementService _pluginManagementService;
|
||||
private readonly INotificationService _notificationService;
|
||||
private readonly IWindowService _windowService;
|
||||
private readonly IPluginManagementService _pluginManagementService;
|
||||
private readonly ISettingsVmFactory _settingsVmFactory;
|
||||
private string? _searchPluginInput;
|
||||
private readonly IWindowService _windowService;
|
||||
private List<PluginSettingsViewModel>? _instances;
|
||||
private string? _searchPluginInput;
|
||||
|
||||
public PluginsTabViewModel(IPluginManagementService pluginManagementService, INotificationService notificationService, IWindowService windowService, ISettingsVmFactory settingsVmFactory)
|
||||
{
|
||||
@ -36,7 +36,7 @@ namespace Artemis.UI.Avalonia.Screens.Settings.Tabs.ViewModels
|
||||
DisplayName = "Plugins";
|
||||
Plugins = new ObservableCollection<PluginSettingsViewModel>();
|
||||
|
||||
this.WhenAnyValue(x => x.SearchPluginInput).Throttle(TimeSpan.FromMilliseconds(300)).Subscribe(SearchPlugins);
|
||||
this.WhenAnyValue(x => x.SearchPluginInput).Throttle(TimeSpan.FromMilliseconds(100)).Subscribe(SearchPlugins);
|
||||
this.WhenActivated((CompositeDisposable _) => GetPluginInstances());
|
||||
}
|
||||
|
||||
@ -48,7 +48,10 @@ namespace Artemis.UI.Avalonia.Screens.Settings.Tabs.ViewModels
|
||||
set => this.RaiseAndSetIfChanged(ref _searchPluginInput, value);
|
||||
}
|
||||
|
||||
public void OpenUrl(string url) => Utilities.OpenUrl(url);
|
||||
public void OpenUrl(string url)
|
||||
{
|
||||
Utilities.OpenUrl(url);
|
||||
}
|
||||
|
||||
public async Task ImportPlugin()
|
||||
{
|
||||
@ -66,7 +69,7 @@ namespace Artemis.UI.Avalonia.Screens.Settings.Tabs.ViewModels
|
||||
|
||||
// Enable it via the VM to enable the prerequisite dialog
|
||||
PluginSettingsViewModel pluginViewModel = Plugins.FirstOrDefault(i => i.Plugin == plugin);
|
||||
if (pluginViewModel is { IsEnabled: false })
|
||||
if (pluginViewModel is {IsEnabled: false})
|
||||
pluginViewModel.IsEnabled = true;
|
||||
|
||||
_notificationService.CreateNotification()
|
||||
|
||||
@ -2,7 +2,10 @@
|
||||
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"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
mc:Ignorable="d" d:DesignWidth="1200" d:DesignHeight="450"
|
||||
x:Class="Artemis.UI.Avalonia.Screens.Settings.Tabs.Views.PluginsTabView">
|
||||
<ItemsControl Items="{Binding Plugins}"></ItemsControl>
|
||||
</UserControl>
|
||||
<Grid RowDefinitions="Auto,*" ColumnDefinitions="*,*" Width="900">
|
||||
<TextBox Grid.Row="0" Grid.Column="0" Text="{Binding SearchPluginInput}" Watermark="Search plugins" Margin="0 10" />
|
||||
<ItemsControl Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Items="{Binding Plugins}" />
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@ -49,6 +49,11 @@
|
||||
<Setter Property="Height" Value="14" />
|
||||
</Style>
|
||||
|
||||
<Style Selector=":is(Button).icon-button-large avalonia|MaterialIcon">
|
||||
<Setter Property="Width" Value="20" />
|
||||
<Setter Property="Height" Value="20" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="controls|HyperlinkButton.icon-button">
|
||||
<Setter Property="Foreground" Value="{DynamicResource ButtonForeground}" />
|
||||
</Style>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user