1
0
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:
Robert 2021-11-12 20:39:02 +01:00
parent 19685eb516
commit 26639ca8fd
5 changed files with 29 additions and 20 deletions

View File

@ -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}">

View File

@ -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>

View File

@ -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()

View File

@ -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>

View File

@ -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>