Merge branch 'master' into RGB.NET_update

This commit is contained in:
Robert committed 2021-03-05 15:40:15 +01:00
commit da90c0d3a1
94 files changed
+1525 -1007

No files matched your search

@@ -54,12 +54,6 @@
</CheckBox>
<materialDesign:PopupBox Style="{StaticResource MaterialDesignToolPopupBox}" Padding="2 0 2 0">
<StackPanel>
<Button Command="{s:Action ShowDeviceDebugger}">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="Tools" Margin="0 0 10 0 " VerticalAlignment="Center" />
<TextBlock VerticalAlignment="Center">Show device debugger</TextBlock>
</StackPanel>
</Button>
<Button Command="{s:Action OpenPluginDirectory}">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="FolderOpen" Margin="0 0 10 0 " VerticalAlignment="Center" />
@@ -60,11 +60,6 @@ namespace Artemis.UI.Screens.Settings.Tabs.Devices
_deviceService.IdentifyDevice(Device);
}
public void ShowDeviceDebugger()
{
_windowManager.ShowWindow(_deviceDebugVmFactory.Create(Device));
}
public void OpenPluginDirectory()
{
try
@@ -87,16 +82,10 @@ namespace Artemis.UI.Screens.Settings.Tabs.Devices
_rgbService.SaveDevice(Device);
}
public async Task ViewProperties()
public void ViewProperties()
{
object madeChanges = await _dialogService.ShowDialog<SurfaceDeviceConfigViewModel>(
new Dictionary<string, object> {{"device", Device}}
);
if ((bool) madeChanges)
_rgbService.SaveDevice(Device);
_windowManager.ShowDialog(_deviceDebugVmFactory.DeviceDialogViewModel(Device));
}
private async Task UpdateIsDeviceEnabled(bool value)
{
if (!value)
@@ -59,12 +59,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
{
Items.Clear();
await Task.Delay(200);
_instances = _pluginManagementService.GetAllPlugins()
.Select(p => _settingsVmFactory.CreatePluginSettingsViewModel(p))
.OrderBy(i => i.Plugin.Info.Name)
.ToList();
UpdatePluginSearch();
GetPluginInstances();
});
base.OnActivate();
@@ -80,14 +75,21 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
{
Plugin plugin = _pluginManagementService.ImportPlugin(dialog.FileName);
_instances = _pluginManagementService.GetAllPlugins()
.Select(p => _settingsVmFactory.CreatePluginSettingsViewModel(p))
.OrderBy(i => i.Plugin.Info.Name)
.ToList();
GetPluginInstances();
SearchPluginInput = plugin.Info.Name;
_messageService.ShowMessage($"Imported plugin: {plugin.Info.Name}");
}
}
public void GetPluginInstances()
{
_instances = _pluginManagementService.GetAllPlugins()
.Select(p => _settingsVmFactory.CreatePluginSettingsViewModel(p))
.OrderBy(i => i.Plugin.Info.Name)
.ToList();
UpdatePluginSearch();
}
}
}
@@ -53,15 +53,28 @@
</Grid>
<Button Grid.Row="1"
Grid.Column="0"
<StackPanel Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Bottom"
Orientation="Horizontal">
<Button
VerticalAlignment="Bottom"
Style="{StaticResource MaterialDesignOutlinedButton}"
ToolTip="Open the plugins settings window"
Margin="4"
Command="{s:Action OpenSettings}">
SETTINGS
</Button>
SETTINGS
</Button>
<Button
VerticalAlignment="Bottom"
Style="{StaticResource MaterialDesignOutlinedButton}"
ToolTip="Remove plugin"
Margin="4"
Command="{s:Action Remove}">
<materialDesign:PackIcon Kind="DeleteForever" />
</Button>
</StackPanel>
<CheckBox Grid.Row="1"
Grid.Column="1"
@@ -70,7 +83,13 @@
Margin="8"
Visibility="{Binding Enabling, Converter={x:Static s:BoolToVisibilityConverter.InverseInstance}, Mode=OneWay}"
Style="{StaticResource MaterialDesignCheckBox}" IsChecked="{Binding IsEnabled}">
Plugin enabled
<StackPanel Orientation="Horizontal">
<TextBlock>Plugin enabled</TextBlock>
<materialDesign:PackIcon Kind="ShieldHalfFull"
Margin="5 0 0 0"
ToolTip="Plugin requires admin rights"
Visibility="{Binding Plugin.Info.RequiresAdmin, Converter={x:Static s:BoolToVisibilityConverter.Instance}, Mode=OneWay}"/>
</StackPanel>
</CheckBox>
<ProgressBar Grid.Row="1"
@@ -19,6 +19,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
private readonly IDialogService _dialogService;
private readonly IPluginManagementService _pluginManagementService;
private readonly ISettingsVmFactory _settingsVmFactory;
private readonly ICoreService _coreService;
private readonly IMessageService _messageService;
private readonly IWindowManager _windowManager;
private bool _enabling;
@@ -26,6 +27,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
public PluginSettingsViewModel(Plugin plugin,
ISettingsVmFactory settingsVmFactory,
ICoreService coreService,
IWindowManager windowManager,
IDialogService dialogService,
IPluginManagementService pluginManagementService,
@@ -34,6 +36,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
Plugin = plugin;
_settingsVmFactory = settingsVmFactory;
_coreService = coreService;
_windowManager = windowManager;
_dialogService = dialogService;
_pluginManagementService = pluginManagementService;
@@ -82,6 +85,24 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
}
}
public async Task Remove()
{
bool confirmed = await _dialogService.ShowConfirmDialog("Delete plugin", "Are you sure you want to delete this plugin?");
if (!confirmed)
return;
try
{
_pluginManagementService.RemovePlugin(Plugin);
((PluginSettingsTabViewModel) Parent).GetPluginInstances();
}
catch (Exception e)
{
_dialogService.ShowExceptionDialog("Failed to remove plugin", e);
throw;
}
}
public void ShowLogsFolder()
{
try
@@ -124,6 +145,18 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
{
Enabling = true;
if (Plugin.Info.RequiresAdmin && !_coreService.IsElevated)
{
bool confirmed = await _dialogService.ShowConfirmDialog("Enable plugin", "This plugin requires admin rights, are you sure you want to enable it?");
if (!confirmed)
{
Enabling = false;
NotifyOfPropertyChange(nameof(IsEnabled));
NotifyOfPropertyChange(nameof(CanOpenSettings));
return;
}
}
try
{
await Task.Run(() => _pluginManagementService.EnablePlugin(Plugin, true));