mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Startup wizard - Implemented auto-run and update settings
This commit is contained in:
parent
bfa1d60dec
commit
090d5b76e8
@ -122,7 +122,7 @@
|
|||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<!-- Update settings -->
|
<!-- Update settings -->
|
||||||
<StackPanel IsVisible="{CompiledBinding IsUpdatingSupported}">
|
<StackPanel IsVisible="{CompiledBinding IsUpdatingSupported}">
|
||||||
<TextBlock Classes="h4" Margin="0 15">
|
<TextBlock Classes="h4" Margin="0 15">
|
||||||
Updating
|
Updating
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
|
|||||||
@ -32,6 +32,7 @@ namespace Artemis.UI.Screens.Settings
|
|||||||
private readonly IWindowService _windowService;
|
private readonly IWindowService _windowService;
|
||||||
private readonly IUpdateService _updateService;
|
private readonly IUpdateService _updateService;
|
||||||
private readonly IAutoRunProvider? _autoRunProvider;
|
private readonly IAutoRunProvider? _autoRunProvider;
|
||||||
|
private bool _startupWizardOpen;
|
||||||
|
|
||||||
public GeneralTabViewModel(IKernel kernel,
|
public GeneralTabViewModel(IKernel kernel,
|
||||||
ISettingsService settingsService,
|
ISettingsService settingsService,
|
||||||
@ -156,7 +157,6 @@ namespace Artemis.UI.Screens.Settings
|
|||||||
Utilities.OpenFolder(Constants.LogsFolder);
|
Utilities.OpenFolder(Constants.LogsFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private async Task ExecuteCheckForUpdate(CancellationToken cancellationToken)
|
private async Task ExecuteCheckForUpdate(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
await _updateService.ManualUpdate();
|
await _updateService.ManualUpdate();
|
||||||
@ -164,7 +164,9 @@ namespace Artemis.UI.Screens.Settings
|
|||||||
|
|
||||||
private async Task ExecuteShowSetupWizard()
|
private async Task ExecuteShowSetupWizard()
|
||||||
{
|
{
|
||||||
|
_startupWizardOpen = true;
|
||||||
await _windowService.ShowDialogAsync<StartupWizardViewModel, bool>();
|
await _windowService.ShowDialogAsync<StartupWizardViewModel, bool>();
|
||||||
|
_startupWizardOpen = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ExecuteShowDebugger()
|
private void ExecuteShowDebugger()
|
||||||
@ -179,7 +181,7 @@ namespace Artemis.UI.Screens.Settings
|
|||||||
|
|
||||||
private async Task ApplyAutoRun()
|
private async Task ApplyAutoRun()
|
||||||
{
|
{
|
||||||
if (_autoRunProvider == null)
|
if (_autoRunProvider == null || _startupWizardOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -202,7 +204,7 @@ namespace Artemis.UI.Screens.Settings
|
|||||||
|
|
||||||
private async void UIAutoRunDelayOnSettingChanged(object? sender, EventArgs e)
|
private async void UIAutoRunDelayOnSettingChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (_autoRunProvider == null || !UIAutoRun.Value)
|
if (_autoRunProvider == null || !UIAutoRun.Value || _startupWizardOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|||||||
@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
<Button Grid.Row="1" Grid.Column="0" Command="{CompiledBinding SkipOrFinishWizard}" IsVisible="{CompiledBinding !ShowFinish}">Skip & close</Button>
|
<Button Grid.Row="1" Grid.Column="0" Command="{CompiledBinding SkipOrFinishWizard}" IsVisible="{CompiledBinding !ShowFinish}">Skip & close</Button>
|
||||||
<StackPanel Grid.Row="1" Grid.Column="1" HorizontalAlignment="Right" Orientation="Horizontal" Spacing="5" Margin="0 15 0 0">
|
<StackPanel Grid.Row="1" Grid.Column="1" HorizontalAlignment="Right" Orientation="Horizontal" Spacing="5" Margin="0 15 0 0">
|
||||||
<Button Command="{CompiledBinding GoBack}" IsVisible="{CompiledBinding ShowGoBack}">Back</Button>
|
<Button Command="{CompiledBinding GoBack}" IsEnabled="{CompiledBinding ShowGoBack}">Back</Button>
|
||||||
<Button Command="{CompiledBinding Continue}" IsVisible="{CompiledBinding ShowContinue}" Width="80">Continue</Button>
|
<Button Command="{CompiledBinding Continue}" IsVisible="{CompiledBinding !ShowFinish}" IsEnabled="{CompiledBinding ShowContinue}" Width="80">Continue</Button>
|
||||||
<Button Command="{CompiledBinding SkipOrFinishWizard}" IsVisible="{CompiledBinding ShowFinish}" Width="80">Finish</Button>
|
<Button Command="{CompiledBinding SkipOrFinishWizard}" IsVisible="{CompiledBinding ShowFinish}" Width="80">Finish</Button>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@ -1,31 +1,44 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reactive;
|
using System.Reactive;
|
||||||
|
using System.Reactive.Disposables;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Artemis.Core;
|
using Artemis.Core;
|
||||||
using Artemis.Core.DeviceProviders;
|
using Artemis.Core.DeviceProviders;
|
||||||
using Artemis.Core.Services;
|
using Artemis.Core.Services;
|
||||||
using Artemis.UI.Ninject.Factories;
|
using Artemis.UI.Ninject.Factories;
|
||||||
using Artemis.UI.Screens.Plugins;
|
using Artemis.UI.Screens.Plugins;
|
||||||
|
using Artemis.UI.Services.Interfaces;
|
||||||
using Artemis.UI.Shared;
|
using Artemis.UI.Shared;
|
||||||
|
using Artemis.UI.Shared.Providers;
|
||||||
|
using Artemis.UI.Shared.Services;
|
||||||
|
using Ninject;
|
||||||
using ReactiveUI;
|
using ReactiveUI;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.StartupWizard;
|
namespace Artemis.UI.Screens.StartupWizard;
|
||||||
|
|
||||||
public class StartupWizardViewModel : DialogViewModelBase<bool>
|
public class StartupWizardViewModel : DialogViewModelBase<bool>
|
||||||
{
|
{
|
||||||
|
private readonly IAutoRunProvider? _autoRunProvider;
|
||||||
private readonly IRgbService _rgbService;
|
private readonly IRgbService _rgbService;
|
||||||
private readonly ISettingsService _settingsService;
|
private readonly ISettingsService _settingsService;
|
||||||
|
private readonly IUpdateService _updateService;
|
||||||
|
private readonly IWindowService _windowService;
|
||||||
private int _currentStep;
|
private int _currentStep;
|
||||||
private bool _showContinue;
|
private bool _showContinue;
|
||||||
private bool _showGoBack;
|
|
||||||
private bool _showFinish;
|
private bool _showFinish;
|
||||||
|
private bool _showGoBack;
|
||||||
|
|
||||||
public StartupWizardViewModel(ISettingsService settingsService, IRgbService rgbService, IPluginManagementService pluginManagementService, ISettingsVmFactory settingsVmFactory)
|
public StartupWizardViewModel(IKernel kernel, ISettingsService settingsService, IRgbService rgbService, IPluginManagementService pluginManagementService, IWindowService windowService,
|
||||||
|
IUpdateService updateService, ISettingsVmFactory settingsVmFactory)
|
||||||
{
|
{
|
||||||
_settingsService = settingsService;
|
_settingsService = settingsService;
|
||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
|
_windowService = windowService;
|
||||||
|
_updateService = updateService;
|
||||||
|
_autoRunProvider = kernel.TryGet<IAutoRunProvider>();
|
||||||
|
|
||||||
Continue = ReactiveCommand.Create(ExecuteContinue);
|
Continue = ReactiveCommand.Create(ExecuteContinue);
|
||||||
GoBack = ReactiveCommand.Create(ExecuteGoBack);
|
GoBack = ReactiveCommand.Create(ExecuteGoBack);
|
||||||
@ -43,9 +56,22 @@ public class StartupWizardViewModel : DialogViewModelBase<bool>
|
|||||||
|
|
||||||
CurrentStep = 1;
|
CurrentStep = 1;
|
||||||
SetupButtons();
|
SetupButtons();
|
||||||
|
|
||||||
|
this.WhenActivated(d =>
|
||||||
|
{
|
||||||
|
UIAutoRun.SettingChanged += UIAutoRunOnSettingChanged;
|
||||||
|
UIAutoRunDelay.SettingChanged += UIAutoRunDelayOnSettingChanged;
|
||||||
|
|
||||||
|
Disposable.Create(() =>
|
||||||
|
{
|
||||||
|
UIAutoRun.SettingChanged -= UIAutoRunOnSettingChanged;
|
||||||
|
UIAutoRunDelay.SettingChanged -= UIAutoRunDelayOnSettingChanged;
|
||||||
|
|
||||||
|
_settingsService.SaveAllSettings();
|
||||||
|
}).DisposeWith(d);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public ReactiveCommand<Unit, Unit> Continue { get; }
|
public ReactiveCommand<Unit, Unit> Continue { get; }
|
||||||
public ReactiveCommand<Unit, Unit> GoBack { get; }
|
public ReactiveCommand<Unit, Unit> GoBack { get; }
|
||||||
public ReactiveCommand<Unit, Unit> SkipOrFinishWizard { get; }
|
public ReactiveCommand<Unit, Unit> SkipOrFinishWizard { get; }
|
||||||
@ -53,11 +79,15 @@ public class StartupWizardViewModel : DialogViewModelBase<bool>
|
|||||||
|
|
||||||
public string Version { get; }
|
public string Version { get; }
|
||||||
public ObservableCollection<PluginViewModel> DeviceProviders { get; }
|
public ObservableCollection<PluginViewModel> DeviceProviders { get; }
|
||||||
|
|
||||||
|
public bool IsAutoRunSupported => _autoRunProvider != null;
|
||||||
|
public bool IsUpdatingSupported => _updateService.UpdatingSupported;
|
||||||
|
|
||||||
public PluginSetting<bool> UIAutoRun => _settingsService.GetSetting("UI.AutoRun", false);
|
public PluginSetting<bool> UIAutoRun => _settingsService.GetSetting("UI.AutoRun", false);
|
||||||
public PluginSetting<int> UIAutoRunDelay => _settingsService.GetSetting("UI.AutoRunDelay", 15);
|
public PluginSetting<int> UIAutoRunDelay => _settingsService.GetSetting("UI.AutoRunDelay", 15);
|
||||||
public PluginSetting<bool> UIShowOnStartup => _settingsService.GetSetting("UI.ShowOnStartup", true);
|
public PluginSetting<bool> UIShowOnStartup => _settingsService.GetSetting("UI.ShowOnStartup", true);
|
||||||
public PluginSetting<bool> UICheckForUpdates => _settingsService.GetSetting("UI.CheckForUpdates", true);
|
public PluginSetting<bool> UICheckForUpdates => _settingsService.GetSetting("UI.CheckForUpdates", true);
|
||||||
|
public PluginSetting<bool> UIAutoUpdate => _settingsService.GetSetting("UI.AutoUpdate", false);
|
||||||
|
|
||||||
public int CurrentStep
|
public int CurrentStep
|
||||||
{
|
{
|
||||||
@ -88,6 +118,10 @@ public class StartupWizardViewModel : DialogViewModelBase<bool>
|
|||||||
if (CurrentStep > 1)
|
if (CurrentStep > 1)
|
||||||
CurrentStep--;
|
CurrentStep--;
|
||||||
|
|
||||||
|
// Skip the settings step if none of it's contents are supported
|
||||||
|
if (CurrentStep == 4 && !IsAutoRunSupported && !IsUpdatingSupported)
|
||||||
|
CurrentStep--;
|
||||||
|
|
||||||
SetupButtons();
|
SetupButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,6 +130,10 @@ public class StartupWizardViewModel : DialogViewModelBase<bool>
|
|||||||
if (CurrentStep < 5)
|
if (CurrentStep < 5)
|
||||||
CurrentStep++;
|
CurrentStep++;
|
||||||
|
|
||||||
|
// Skip the settings step if none of it's contents are supported
|
||||||
|
if (CurrentStep == 4 && !IsAutoRunSupported && !IsUpdatingSupported)
|
||||||
|
CurrentStep++;
|
||||||
|
|
||||||
SetupButtons();
|
SetupButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,4 +161,42 @@ public class StartupWizardViewModel : DialogViewModelBase<bool>
|
|||||||
|
|
||||||
ExecuteContinue();
|
ExecuteContinue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task ApplyAutoRun()
|
||||||
|
{
|
||||||
|
if (_autoRunProvider == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (UIAutoRun.Value)
|
||||||
|
await _autoRunProvider.EnableAutoRun(false, UIAutoRunDelay.Value);
|
||||||
|
else
|
||||||
|
await _autoRunProvider.DisableAutoRun();
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
_windowService.ShowExceptionDialog("Failed to apply auto-run", exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void UIAutoRunOnSettingChanged(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
await ApplyAutoRun();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void UIAutoRunDelayOnSettingChanged(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (_autoRunProvider == null || !UIAutoRun.Value)
|
||||||
|
return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await _autoRunProvider.EnableAutoRun(true, UIAutoRunDelay.Value);
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
_windowService.ShowExceptionDialog("Failed to apply auto-run", exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -3,6 +3,9 @@
|
|||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:startupWizard="clr-namespace:Artemis.UI.Screens.StartupWizard"
|
xmlns:startupWizard="clr-namespace:Artemis.UI.Screens.StartupWizard"
|
||||||
|
xmlns:controls="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
|
||||||
|
xmlns:behaviors="clr-namespace:Artemis.UI.Shared.Behaviors;assembly=Artemis.UI.Shared"
|
||||||
|
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
||||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
x:Class="Artemis.UI.Screens.StartupWizard.Steps.SettingsStep"
|
x:Class="Artemis.UI.Screens.StartupWizard.Steps.SettingsStep"
|
||||||
x:DataType="startupWizard:StartupWizardViewModel">
|
x:DataType="startupWizard:StartupWizardViewModel">
|
||||||
@ -15,60 +18,94 @@
|
|||||||
Below you can find a few relevant settings, many more can be changed later on the settings page.
|
Below you can find a few relevant settings, many more can be changed later on the settings page.
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
|
|
||||||
<Border Classes="card" Margin="0 15 0 0">
|
<!-- Auto-run settings -->
|
||||||
<StackPanel>
|
<StackPanel IsVisible="{CompiledBinding IsAutoRunSupported}">
|
||||||
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
|
<TextBlock Classes="h4" Margin="0 15">
|
||||||
<StackPanel Grid.Column="0">
|
Auto-run
|
||||||
<TextBlock>Auto-run on startup</TextBlock>
|
</TextBlock>
|
||||||
</StackPanel>
|
<Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0">
|
||||||
<ToggleSwitch Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" IsChecked="{CompiledBinding UIAutoRun.Value}" MinWidth="0" Margin="0 -10" />
|
<StackPanel>
|
||||||
</Grid>
|
<StackPanel IsVisible="{CompiledBinding IsAutoRunSupported}">
|
||||||
<Separator Classes="card-separator" />
|
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock>Auto-run on startup</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
<ToggleSwitch Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" IsChecked="{CompiledBinding UIAutoRun.Value}" MinWidth="0" Margin="0 -10" />
|
||||||
|
</Grid>
|
||||||
|
<Separator Classes="card-separator" />
|
||||||
|
|
||||||
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
|
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
|
||||||
<StackPanel Grid.Column="0">
|
<StackPanel Grid.Column="0">
|
||||||
<TextBlock>Hide window on auto-run</TextBlock>
|
<TextBlock>Hide window on auto-run</TextBlock>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
<ToggleSwitch IsChecked="{CompiledBinding !UIShowOnStartup.Value}" IsEnabled="{CompiledBinding UIAutoRun.Value}" MinWidth="0" Margin="0 -10" />
|
<ToggleSwitch IsChecked="{CompiledBinding !UIShowOnStartup.Value}" IsEnabled="{CompiledBinding UIAutoRun.Value}" MinWidth="0" Margin="0 -10" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Separator Classes="card-separator" />
|
<Separator Classes="card-separator" />
|
||||||
|
|
||||||
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
|
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
|
||||||
<StackPanel Grid.Column="0">
|
<StackPanel Grid.Column="0">
|
||||||
<TextBlock>Startup delay</TextBlock>
|
<TextBlock>Startup delay</TextBlock>
|
||||||
<TextBlock Classes="subtitle" TextWrapping="Wrap">
|
<TextBlock Classes="subtitle" TextWrapping="Wrap">
|
||||||
Set the amount of seconds to wait before auto-running Artemis.
|
Set the amount of seconds to wait before auto-running Artemis.
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
<TextBlock Classes="subtitle" TextWrapping="Wrap">
|
<TextBlock Classes="subtitle" TextWrapping="Wrap">
|
||||||
If some devices don't work because Artemis starts before the manufacturer's software, try increasing this value.
|
If some devices don't work because Artemis starts before the manufacturer's software, try increasing this value.
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Orientation="Horizontal">
|
||||||
|
<controls:NumberBox IsEnabled="{CompiledBinding UIAutoRun.Value}" Width="120">
|
||||||
|
<Interaction.Behaviors>
|
||||||
|
<behaviors:LostFocusNumberBoxBindingBehavior Value="{CompiledBinding UIAutoRunDelay.Value}" />
|
||||||
|
</Interaction.Behaviors>
|
||||||
|
</controls:NumberBox>
|
||||||
|
<TextBlock VerticalAlignment="Center" TextAlignment="Right" Width="30">sec</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Orientation="Horizontal">
|
</StackPanel>
|
||||||
<TextBox Text="{CompiledBinding UIAutoRunDelay.Value}" IsEnabled="{CompiledBinding UIAutoRun.Value}" Width="120" />
|
</Border>
|
||||||
<TextBlock VerticalAlignment="Center" TextAlignment="Right" Width="30">sec</TextBlock>
|
</StackPanel>
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
<Separator Classes="card-separator" />
|
|
||||||
|
|
||||||
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
|
<!-- Update settings -->
|
||||||
<StackPanel Grid.Column="0">
|
<StackPanel IsVisible="{CompiledBinding IsUpdatingSupported}">
|
||||||
<TextBlock>
|
<TextBlock Classes="h4" Margin="0 15">
|
||||||
Check for updates
|
Updating
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
<TextBlock Classes="subtitle" TextWrapping="Wrap">
|
<Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0">
|
||||||
If enabled, we'll check for updates on startup and periodically while running.
|
<StackPanel>
|
||||||
</TextBlock>
|
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
|
||||||
</StackPanel>
|
<StackPanel Grid.Column="0">
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
<TextBlock>
|
||||||
<ToggleSwitch IsChecked="{CompiledBinding UICheckForUpdates.Value}" MinWidth="0" />
|
Check for updates
|
||||||
</StackPanel>
|
</TextBlock>
|
||||||
</Grid>
|
<TextBlock Classes="subtitle" TextWrapping="Wrap">
|
||||||
</StackPanel>
|
If enabled, we'll check for updates on startup and periodically while running.
|
||||||
</Border>
|
</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
|
<ToggleSwitch IsChecked="{CompiledBinding UICheckForUpdates.Value}" MinWidth="0" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Separator Classes="card-separator" />
|
||||||
|
|
||||||
|
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock>
|
||||||
|
Auto-install updates
|
||||||
|
</TextBlock>
|
||||||
|
<TextBlock Classes="subtitle" TextWrapping="Wrap">
|
||||||
|
If enabled, new updates will automatically be installed.
|
||||||
|
</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
|
<ToggleSwitch IsEnabled="{CompiledBinding UICheckForUpdates.Value}" IsChecked="{CompiledBinding UIAutoUpdate.Value}" MinWidth="0" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
|
|
||||||
</Border>
|
</Border>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
Loading…
x
Reference in New Issue
Block a user