mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Sidebar - Reorganized buttons and context menus
This commit is contained in:
parent
6ed349d4c8
commit
87bf85c2e4
@ -15,23 +15,6 @@
|
||||
<UserControl.Resources>
|
||||
<converters:ColorOpacityConverter x:Key="ColorOpacityConverter" />
|
||||
<MenuFlyout x:Key="CategoryMenuFlyout" Placement="Bottom">
|
||||
<MenuItem Header="Rename" Command="{CompiledBinding RenameCategory}">
|
||||
<MenuItem.Icon>
|
||||
<avalonia:MaterialIcon Kind="RenameBox" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Header="-" />
|
||||
<MenuItem Header="Create profile" Command="{CompiledBinding AddProfile}">
|
||||
<MenuItem.Icon>
|
||||
<avalonia:MaterialIcon Kind="Plus" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Import profile" Command="{CompiledBinding ImportProfile}">
|
||||
<MenuItem.Icon>
|
||||
<avalonia:MaterialIcon Kind="Import" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Header="-" />
|
||||
<MenuItem Header="Suspend" Command="{CompiledBinding ToggleSuspended}">
|
||||
<MenuItem.Icon>
|
||||
<avalonia:MaterialIcon Kind="Check" IsVisible="{CompiledBinding IsSuspended}" />
|
||||
@ -48,12 +31,29 @@
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Header="-" />
|
||||
<MenuItem Header="Rename" Command="{CompiledBinding RenameCategory}">
|
||||
<MenuItem.Icon>
|
||||
<avalonia:MaterialIcon Kind="RenameBox" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Delete" Command="{CompiledBinding DeleteCategory}">
|
||||
<MenuItem.Icon>
|
||||
<avalonia:MaterialIcon Kind="TrashCan" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</MenuFlyout>
|
||||
<MenuFlyout x:Key="PlusMenuFlyout" Placement="Bottom">
|
||||
<MenuItem Header="Create profile" Command="{CompiledBinding AddProfile}">
|
||||
<MenuItem.Icon>
|
||||
<avalonia:MaterialIcon Kind="Plus" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Import profile" Command="{CompiledBinding ImportProfile}">
|
||||
<MenuItem.Icon>
|
||||
<avalonia:MaterialIcon Kind="Import" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</MenuFlyout>
|
||||
</UserControl.Resources>
|
||||
<UserControl.Styles>
|
||||
<Style Selector=":is(Button).properties-button">
|
||||
@ -64,6 +64,9 @@
|
||||
</Style>
|
||||
<Style Selector="Grid#ContainerGrid.flyout-open :is(Button).properties-button">
|
||||
<Setter Property="IsVisible" Value="True" />
|
||||
</Style>
|
||||
<Style Selector="Grid#ContainerGrid.plus-flyout-open :is(Button).properties-button">
|
||||
<Setter Property="IsVisible" Value="True" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="avalonia|MaterialIcon.chevron-collapsed">
|
||||
@ -137,7 +140,8 @@
|
||||
Margin="0 8 0 0"
|
||||
RowDefinitions="Auto,*"
|
||||
ContextFlyout="{StaticResource CategoryMenuFlyout}"
|
||||
Classes.flyout-open="{Binding IsOpen, Source={StaticResource CategoryMenuFlyout}}">
|
||||
Classes.flyout-open="{Binding IsOpen, Source={StaticResource CategoryMenuFlyout}}"
|
||||
Classes.plus-flyout-open="{Binding IsOpen, Source={StaticResource PlusMenuFlyout}}">
|
||||
<Grid Grid.Row="0" Background="Transparent" Margin="0 0 6 0" ColumnDefinitions="Auto,*,Auto,Auto,Auto">
|
||||
<avalonia:MaterialIcon Classes.chevron-collapsed="{CompiledBinding !IsCollapsed}"
|
||||
Kind="ChevronUp"
|
||||
@ -188,13 +192,21 @@
|
||||
<Button Classes="properties-button icon-button icon-button-small"
|
||||
Grid.Column="2"
|
||||
HorizontalAlignment="Right"
|
||||
Flyout="{StaticResource PlusMenuFlyout}"
|
||||
Margin="0 0 2 0">
|
||||
<avalonia:MaterialIcon Kind="Plus" />
|
||||
</Button>
|
||||
|
||||
<Button Classes="properties-button icon-button icon-button-small"
|
||||
Grid.Column="3"
|
||||
HorizontalAlignment="Right"
|
||||
Flyout="{StaticResource CategoryMenuFlyout}"
|
||||
Margin="0 0 2 0">
|
||||
<avalonia:MaterialIcon Kind="Cog" />
|
||||
</Button>
|
||||
<Button Classes="icon-button icon-button-small"
|
||||
Command="{CompiledBinding ToggleSuspended}"
|
||||
Grid.Column="3"
|
||||
Grid.Column="4"
|
||||
ToolTip.Tip="Suspend/resume category"
|
||||
Margin="0 0 2 0">
|
||||
<Panel>
|
||||
|
||||
@ -71,14 +71,33 @@ public class SidebarCategoryViewModel : ActivatableViewModelBase
|
||||
.Subscribe(e => profileConfigurations.RemoveMany(profileConfigurations.Items.Where(c => c == e.EventArgs.ProfileConfiguration)))
|
||||
.DisposeWith(d);
|
||||
|
||||
profileEditorService.ProfileConfiguration.Subscribe(p => SelectedProfileConfiguration = ProfileConfigurations.FirstOrDefault(c => ReferenceEquals(c.ProfileConfiguration, p)))
|
||||
profileEditorService.ProfileConfiguration
|
||||
.Subscribe(p => SelectedProfileConfiguration = ProfileConfigurations.FirstOrDefault(c => ReferenceEquals(c.ProfileConfiguration, p)))
|
||||
.DisposeWith(d);
|
||||
|
||||
_isCollapsed = ProfileCategory.WhenAnyValue(vm => vm.IsCollapsed).ToProperty(this, vm => vm.IsCollapsed).DisposeWith(d);
|
||||
_isSuspended = ProfileCategory.WhenAnyValue(vm => vm.IsSuspended).ToProperty(this, vm => vm.IsSuspended).DisposeWith(d);
|
||||
|
||||
// Change the current profile configuration when a new one is selected
|
||||
this.WhenAnyValue(vm => vm.SelectedProfileConfiguration).WhereNotNull().Subscribe(s => profileEditorService.ChangeCurrentProfileConfiguration(s.ProfileConfiguration));
|
||||
this.WhenAnyValue(vm => vm.SelectedProfileConfiguration)
|
||||
.WhereNotNull()
|
||||
.Subscribe(s =>
|
||||
{
|
||||
try
|
||||
{
|
||||
profileEditorService.ChangeCurrentProfileConfiguration(s.ProfileConfiguration);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (s.ProfileConfiguration.BrokenState != null && s.ProfileConfiguration.BrokenStateException != null)
|
||||
_windowService.ShowExceptionDialog(s.ProfileConfiguration.BrokenState, s.ProfileConfiguration.BrokenStateException);
|
||||
else
|
||||
_windowService.ShowExceptionDialog(e.Message, e);
|
||||
|
||||
profileEditorService.ChangeCurrentProfileConfiguration(null);
|
||||
SelectedProfileConfiguration = null;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
profileConfigurations.Edit(updater =>
|
||||
@ -88,10 +107,7 @@ public class SidebarCategoryViewModel : ActivatableViewModelBase
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
public ReactiveCommand<Unit, Unit> ImportProfile { get; }
|
||||
|
||||
public ReactiveCommand<Unit, Unit> ToggleCollapsed { get; }
|
||||
public ReactiveCommand<Unit, Unit> ToggleSuspended { get; }
|
||||
public ReactiveCommand<Unit, Unit> AddProfile { get; }
|
||||
@ -154,7 +170,7 @@ public class SidebarCategoryViewModel : ActivatableViewModelBase
|
||||
SelectedProfileConfiguration = viewModel;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private async Task ExecuteImportProfile()
|
||||
{
|
||||
string[]? result = await _windowService.CreateOpenFileDialog()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user