mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
need this elsewhere
This commit is contained in:
parent
1d789bf23c
commit
906efdac98
@ -131,6 +131,9 @@ namespace Artemis.UI.Screens.ProfileEditor.DisplayConditions
|
|||||||
|
|
||||||
foreach (var childViewModel in Items)
|
foreach (var childViewModel in Items)
|
||||||
childViewModel.Update();
|
childViewModel.Update();
|
||||||
|
|
||||||
|
if (IsRootGroup)
|
||||||
|
((DisplayConditionsViewModel) Parent).DisplayStartHint = !Items.Any();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -15,161 +15,146 @@
|
|||||||
<converters:InverseBooleanConverter x:Key="InverseBooleanConverter" />
|
<converters:InverseBooleanConverter x:Key="InverseBooleanConverter" />
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
|
|
||||||
<materialDesign:Transitioner AutoApplyTransitionOrigins="True" SelectedIndex="{Binding TransitionerIndex}">
|
<Grid Margin="10">
|
||||||
<!-- Conditions intro -->
|
<Grid.RowDefinitions>
|
||||||
<materialDesign:ColorZone Mode="PrimaryDark" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" VerticalContentAlignment="Stretch">
|
<RowDefinition Height="Auto" />
|
||||||
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Margin="32">
|
<RowDefinition Height="Auto" />
|
||||||
<TextBlock Style="{StaticResource MaterialDesignHeadline6TextBlock}" TextWrapping="Wrap" TextAlignment="Center" Margin="0 15">Unleash Artemis's true potential</TextBlock>
|
<RowDefinition Height="*" />
|
||||||
<TextBlock TextWrapping="Wrap" TextAlignment="Center">Start using conditions to dynamically show and hide groups and layers</TextBlock>
|
<RowDefinition Height="Auto" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignSubtitle1TextBlock}" Margin="0 0 0 -4">
|
||||||
|
Display conditions
|
||||||
|
</TextBlock>
|
||||||
|
<Separator Grid.Row="1" Grid.Column="0" Style="{StaticResource MaterialDesignDarkSeparator}" Margin="-2 0" />
|
||||||
|
|
||||||
<Button Style="{DynamicResource MaterialDesignFloatingActionAccentButton}" Command="{x:Static materialDesign:Transitioner.MoveNextCommand}" Margin="16">
|
<Grid Grid.Row="2" Grid.Column="0">
|
||||||
<materialDesign:PackIcon Kind="ArrowRight" />
|
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Background="{StaticResource MaterialDesignCardBackground}">
|
||||||
</Button>
|
<ContentControl s:View.Model="{Binding ActiveItem}" />
|
||||||
</StackPanel>
|
</ScrollViewer>
|
||||||
</materialDesign:ColorZone>
|
|
||||||
|
|
||||||
<!-- Conditions content -->
|
|
||||||
<Grid Margin="10">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignSubtitle1TextBlock}" Margin="0 0 0 -4">
|
|
||||||
Display conditions
|
|
||||||
</TextBlock>
|
|
||||||
<Separator Grid.Row="1" Grid.Column="0" Style="{StaticResource MaterialDesignDarkSeparator}" Margin="-2 0" />
|
|
||||||
|
|
||||||
<Grid Grid.Row="2" Grid.Column="0">
|
|
||||||
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Background="{StaticResource MaterialDesignCardBackground}">
|
|
||||||
<ContentControl s:View.Model="{Binding ActiveItem}" />
|
|
||||||
</ScrollViewer>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<Grid Grid.Row="3">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="20" />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" MinWidth="140" />
|
|
||||||
<ColumnDefinition Width="*" MinWidth="170" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<!-- Play mode -->
|
|
||||||
<StackPanel Grid.Column="0" Orientation="Horizontal">
|
|
||||||
<materialDesign:PackIcon Kind="PlayOutline" VerticalAlignment="Center" />
|
|
||||||
<TextBlock Text="Play mode" VerticalAlignment="Center">
|
|
||||||
<TextBlock.ToolTip>
|
|
||||||
<ToolTip Placement="Center" VerticalOffset="-30">
|
|
||||||
<TextBlock>
|
|
||||||
Configure how the layer should act while the conditions above are met
|
|
||||||
</TextBlock>
|
|
||||||
</ToolTip>
|
|
||||||
</TextBlock.ToolTip>
|
|
||||||
</TextBlock>
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<materialDesign:ColorZone Grid.Row="1" Grid.Column="0" Mode="Standard" CornerRadius="3" Margin="0 0 2 0">
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition />
|
|
||||||
<ColumnDefinition />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<RadioButton Grid.Column="0"
|
|
||||||
Style="{StaticResource MaterialDesignTabRadioButton}"
|
|
||||||
IsChecked="{Binding DisplayContinuously}"
|
|
||||||
MinWidth="0"
|
|
||||||
Padding="5 0">
|
|
||||||
<RadioButton.ToolTip>
|
|
||||||
<ToolTip Placement="Center" VerticalOffset="-40">
|
|
||||||
<TextBlock>
|
|
||||||
Continue repeating the main segment of the timeline while the condition is met
|
|
||||||
</TextBlock>
|
|
||||||
</ToolTip>
|
|
||||||
</RadioButton.ToolTip>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<materialDesign:PackIcon Kind="Repeat" VerticalAlignment="Center" />
|
|
||||||
<TextBlock FontSize="12" VerticalAlignment="Center">REPEAT</TextBlock>
|
|
||||||
</StackPanel>
|
|
||||||
</RadioButton>
|
|
||||||
<RadioButton Grid.Column="1"
|
|
||||||
Style="{StaticResource MaterialDesignTabRadioButton}"
|
|
||||||
IsChecked="{Binding DisplayContinuously, Converter={StaticResource InverseBooleanConverter}}"
|
|
||||||
MinWidth="0"
|
|
||||||
Padding="5 0">
|
|
||||||
<RadioButton.ToolTip>
|
|
||||||
<ToolTip Placement="Center" VerticalOffset="-40">
|
|
||||||
<TextBlock>
|
|
||||||
Only play the timeline once when the condition is met
|
|
||||||
</TextBlock>
|
|
||||||
</ToolTip>
|
|
||||||
</RadioButton.ToolTip>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<materialDesign:PackIcon Kind="StopwatchOutline" VerticalAlignment="Center" />
|
|
||||||
<TextBlock FontSize="12" VerticalAlignment="Center">ONCE</TextBlock>
|
|
||||||
</StackPanel>
|
|
||||||
</RadioButton>
|
|
||||||
</Grid>
|
|
||||||
</materialDesign:ColorZone>
|
|
||||||
|
|
||||||
<!-- Stop mode -->
|
|
||||||
<StackPanel Grid.Column="1" Orientation="Horizontal">
|
|
||||||
<materialDesign:PackIcon Kind="Stop" VerticalAlignment="Center" />
|
|
||||||
<TextBlock Text="Stop mode" VerticalAlignment="Center">
|
|
||||||
<TextBlock.ToolTip>
|
|
||||||
<ToolTip Placement="Center" VerticalOffset="-30">
|
|
||||||
<TextBlock>
|
|
||||||
Configure how the layer should act when the conditions above are no longer met
|
|
||||||
</TextBlock>
|
|
||||||
</ToolTip>
|
|
||||||
</TextBlock.ToolTip>
|
|
||||||
</TextBlock>
|
|
||||||
</StackPanel>
|
|
||||||
<materialDesign:ColorZone Grid.Row="1" Grid.Column="1" Mode="Standard" CornerRadius="3" Margin="2 0 0 0" HorizontalAlignment="Stretch">
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition />
|
|
||||||
<ColumnDefinition MinWidth="100" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<RadioButton Grid.Column="0"
|
|
||||||
Style="{StaticResource MaterialDesignTabRadioButton}"
|
|
||||||
IsChecked="{Binding AlwaysFinishTimeline}"
|
|
||||||
MinWidth="0"
|
|
||||||
Padding="5 0">
|
|
||||||
<RadioButton.ToolTip>
|
|
||||||
<ToolTip Placement="Center" VerticalOffset="-40">
|
|
||||||
<TextBlock>
|
|
||||||
When conditions are no longer met, finish the the current run of the main timeline
|
|
||||||
</TextBlock>
|
|
||||||
</ToolTip>
|
|
||||||
</RadioButton.ToolTip>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<materialDesign:PackIcon Kind="PlayOutline" VerticalAlignment="Center" />
|
|
||||||
<TextBlock FontSize="12" VerticalAlignment="Center">FINISH</TextBlock>
|
|
||||||
</StackPanel>
|
|
||||||
</RadioButton>
|
|
||||||
<RadioButton Grid.Column="1"
|
|
||||||
Style="{StaticResource MaterialDesignTabRadioButton}"
|
|
||||||
IsChecked="{Binding AlwaysFinishTimeline, Converter={StaticResource InverseBooleanConverter}}"
|
|
||||||
MinWidth="0"
|
|
||||||
Padding="5 0">
|
|
||||||
<RadioButton.ToolTip>
|
|
||||||
<ToolTip Placement="Center" VerticalOffset="-40">
|
|
||||||
<TextBlock>
|
|
||||||
When conditions are no longer met, skip to the end segment of the timeline
|
|
||||||
</TextBlock>
|
|
||||||
</ToolTip>
|
|
||||||
</RadioButton.ToolTip>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<materialDesign:PackIcon Kind="SkipNextOutline" VerticalAlignment="Center" />
|
|
||||||
<TextBlock FontSize="12" VerticalAlignment="Center">SKIP TO END</TextBlock>
|
|
||||||
</StackPanel>
|
|
||||||
</RadioButton>
|
|
||||||
</Grid>
|
|
||||||
</materialDesign:ColorZone>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</materialDesign:Transitioner>
|
|
||||||
|
<Grid Grid.Row="3">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="20" />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" MinWidth="140" />
|
||||||
|
<ColumnDefinition Width="*" MinWidth="170" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<!-- Play mode -->
|
||||||
|
<StackPanel Grid.Column="0" Orientation="Horizontal">
|
||||||
|
<materialDesign:PackIcon Kind="PlayOutline" VerticalAlignment="Center" />
|
||||||
|
<TextBlock Text="Play mode" VerticalAlignment="Center">
|
||||||
|
<TextBlock.ToolTip>
|
||||||
|
<ToolTip Placement="Center" VerticalOffset="-30">
|
||||||
|
<TextBlock>
|
||||||
|
Configure how the layer should act while the conditions above are met
|
||||||
|
</TextBlock>
|
||||||
|
</ToolTip>
|
||||||
|
</TextBlock.ToolTip>
|
||||||
|
</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<materialDesign:ColorZone Grid.Row="1" Grid.Column="0" Mode="Standard" CornerRadius="3" Margin="0 0 2 0">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<RadioButton Grid.Column="0"
|
||||||
|
Style="{StaticResource MaterialDesignTabRadioButton}"
|
||||||
|
IsChecked="{Binding DisplayContinuously}"
|
||||||
|
MinWidth="0"
|
||||||
|
Padding="5 0">
|
||||||
|
<RadioButton.ToolTip>
|
||||||
|
<ToolTip Placement="Center" VerticalOffset="-40">
|
||||||
|
<TextBlock>
|
||||||
|
Continue repeating the main segment of the timeline while the condition is met
|
||||||
|
</TextBlock>
|
||||||
|
</ToolTip>
|
||||||
|
</RadioButton.ToolTip>
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<materialDesign:PackIcon Kind="Repeat" VerticalAlignment="Center" />
|
||||||
|
<TextBlock FontSize="12" VerticalAlignment="Center">REPEAT</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
</RadioButton>
|
||||||
|
<RadioButton Grid.Column="1"
|
||||||
|
Style="{StaticResource MaterialDesignTabRadioButton}"
|
||||||
|
IsChecked="{Binding DisplayContinuously, Converter={StaticResource InverseBooleanConverter}}"
|
||||||
|
MinWidth="0"
|
||||||
|
Padding="5 0">
|
||||||
|
<RadioButton.ToolTip>
|
||||||
|
<ToolTip Placement="Center" VerticalOffset="-40">
|
||||||
|
<TextBlock>
|
||||||
|
Only play the timeline once when the condition is met
|
||||||
|
</TextBlock>
|
||||||
|
</ToolTip>
|
||||||
|
</RadioButton.ToolTip>
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<materialDesign:PackIcon Kind="StopwatchOutline" VerticalAlignment="Center" />
|
||||||
|
<TextBlock FontSize="12" VerticalAlignment="Center">ONCE</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
</RadioButton>
|
||||||
|
</Grid>
|
||||||
|
</materialDesign:ColorZone>
|
||||||
|
|
||||||
|
<!-- Stop mode -->
|
||||||
|
<StackPanel Grid.Column="1" Orientation="Horizontal">
|
||||||
|
<materialDesign:PackIcon Kind="Stop" VerticalAlignment="Center" />
|
||||||
|
<TextBlock Text="Stop mode" VerticalAlignment="Center">
|
||||||
|
<TextBlock.ToolTip>
|
||||||
|
<ToolTip Placement="Center" VerticalOffset="-30">
|
||||||
|
<TextBlock>
|
||||||
|
Configure how the layer should act when the conditions above are no longer met
|
||||||
|
</TextBlock>
|
||||||
|
</ToolTip>
|
||||||
|
</TextBlock.ToolTip>
|
||||||
|
</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
<materialDesign:ColorZone Grid.Row="1" Grid.Column="1" Mode="Standard" CornerRadius="3" Margin="2 0 0 0" HorizontalAlignment="Stretch">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition MinWidth="100" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<RadioButton Grid.Column="0"
|
||||||
|
Style="{StaticResource MaterialDesignTabRadioButton}"
|
||||||
|
IsChecked="{Binding AlwaysFinishTimeline}"
|
||||||
|
MinWidth="0"
|
||||||
|
Padding="5 0">
|
||||||
|
<RadioButton.ToolTip>
|
||||||
|
<ToolTip Placement="Center" VerticalOffset="-40">
|
||||||
|
<TextBlock>
|
||||||
|
When conditions are no longer met, finish the the current run of the main timeline
|
||||||
|
</TextBlock>
|
||||||
|
</ToolTip>
|
||||||
|
</RadioButton.ToolTip>
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<materialDesign:PackIcon Kind="PlayOutline" VerticalAlignment="Center" />
|
||||||
|
<TextBlock FontSize="12" VerticalAlignment="Center">FINISH</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
</RadioButton>
|
||||||
|
<RadioButton Grid.Column="1"
|
||||||
|
Style="{StaticResource MaterialDesignTabRadioButton}"
|
||||||
|
IsChecked="{Binding AlwaysFinishTimeline, Converter={StaticResource InverseBooleanConverter}}"
|
||||||
|
MinWidth="0"
|
||||||
|
Padding="5 0">
|
||||||
|
<RadioButton.ToolTip>
|
||||||
|
<ToolTip Placement="Center" VerticalOffset="-40">
|
||||||
|
<TextBlock>
|
||||||
|
When conditions are no longer met, skip to the end segment of the timeline
|
||||||
|
</TextBlock>
|
||||||
|
</ToolTip>
|
||||||
|
</RadioButton.ToolTip>
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<materialDesign:PackIcon Kind="SkipNextOutline" VerticalAlignment="Center" />
|
||||||
|
<TextBlock FontSize="12" VerticalAlignment="Center">SKIP TO END</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
</RadioButton>
|
||||||
|
</Grid>
|
||||||
|
</materialDesign:ColorZone>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@ -12,7 +12,7 @@ namespace Artemis.UI.Screens.ProfileEditor.DisplayConditions
|
|||||||
private readonly IDisplayConditionsVmFactory _displayConditionsVmFactory;
|
private readonly IDisplayConditionsVmFactory _displayConditionsVmFactory;
|
||||||
private readonly IProfileEditorService _profileEditorService;
|
private readonly IProfileEditorService _profileEditorService;
|
||||||
private RenderProfileElement _renderProfileElement;
|
private RenderProfileElement _renderProfileElement;
|
||||||
private int _transitionerIndex;
|
private bool _displayStartHint;
|
||||||
|
|
||||||
public DisplayConditionsViewModel(IProfileEditorService profileEditorService, IDisplayConditionsVmFactory displayConditionsVmFactory)
|
public DisplayConditionsViewModel(IProfileEditorService profileEditorService, IDisplayConditionsVmFactory displayConditionsVmFactory)
|
||||||
{
|
{
|
||||||
@ -20,13 +20,12 @@ namespace Artemis.UI.Screens.ProfileEditor.DisplayConditions
|
|||||||
_displayConditionsVmFactory = displayConditionsVmFactory;
|
_displayConditionsVmFactory = displayConditionsVmFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int TransitionerIndex
|
public bool DisplayStartHint
|
||||||
{
|
{
|
||||||
get => _transitionerIndex;
|
get => _displayStartHint;
|
||||||
set => SetAndNotify(ref _transitionerIndex, value);
|
set => SetAndNotify(ref _displayStartHint, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public RenderProfileElement RenderProfileElement
|
public RenderProfileElement RenderProfileElement
|
||||||
{
|
{
|
||||||
get => _renderProfileElement;
|
get => _renderProfileElement;
|
||||||
@ -89,8 +88,7 @@ namespace Artemis.UI.Screens.ProfileEditor.DisplayConditions
|
|||||||
ActiveItem.Update();
|
ActiveItem.Update();
|
||||||
|
|
||||||
// Only show the intro to conditions once, and only if the layer has no conditions
|
// Only show the intro to conditions once, and only if the layer has no conditions
|
||||||
if (TransitionerIndex != 1)
|
DisplayStartHint = !ActiveItem.Items.Any();
|
||||||
TransitionerIndex = ActiveItem.Items.Any() ? 1 : 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -23,9 +23,11 @@ namespace Artemis.UI.Screens.Settings.Tabs.Devices
|
|||||||
protected override void OnActivate()
|
protected override void OnActivate()
|
||||||
{
|
{
|
||||||
// Take it off the UI thread to avoid freezing on tab change
|
// Take it off the UI thread to avoid freezing on tab change
|
||||||
Task.Run(() =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
Items.Clear();
|
Items.Clear();
|
||||||
|
await Task.Delay(200);
|
||||||
|
|
||||||
var instances = _surfaceService.ActiveSurface.Devices.Select(d => _settingsVmFactory.CreateDeviceSettingsViewModel(d)).ToList();
|
var instances = _surfaceService.ActiveSurface.Devices.Select(d => _settingsVmFactory.CreateDeviceSettingsViewModel(d)).ToList();
|
||||||
foreach (var deviceSettingsViewModel in instances)
|
foreach (var deviceSettingsViewModel in instances)
|
||||||
Items.Add(deviceSettingsViewModel);
|
Items.Add(deviceSettingsViewModel);
|
||||||
|
|||||||
@ -23,10 +23,16 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
|||||||
protected override void OnActivate()
|
protected override void OnActivate()
|
||||||
{
|
{
|
||||||
// Take it off the UI thread to avoid freezing on tab change
|
// Take it off the UI thread to avoid freezing on tab change
|
||||||
Items.Clear();
|
Task.Run(async () =>
|
||||||
var instances = _pluginService.GetAllPluginInfo().Select(p => _settingsVmFactory.CreatePluginSettingsViewModel(p.Instance)).ToList();
|
{
|
||||||
foreach (var pluginSettingsViewModel in instances)
|
Items.Clear();
|
||||||
Items.Add(pluginSettingsViewModel);
|
await Task.Delay(200);
|
||||||
|
|
||||||
|
var instances = _pluginService.GetAllPluginInfo().Select(p => _settingsVmFactory.CreatePluginSettingsViewModel(p.Instance)).ToList();
|
||||||
|
foreach (var pluginSettingsViewModel in instances)
|
||||||
|
Items.Add(pluginSettingsViewModel);
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user