UI - Added sidebar pinning, this closes #493

UI - Wrap long tooltips, this closes #480
This commit is contained in:
SpoinkyNL committed 2020-11-21 10:58:20 +01:00
1 parent bc8ac61388
commit 47dffc0fa0
7 files changed
+138 -34

No files matched your search

@@ -23,6 +23,23 @@
Source="/Resources/Images/Sidebar/sidebar-header.png"
Stretch="UniformToFill"
VerticalAlignment="Top" Height="120" />
<ToggleButton Grid.Row="0"
Style="{StaticResource MaterialDesignSwitchLightToggleButton}"
ToolTip="Pin sidebar"
HorizontalAlignment="Right"
IsChecked="{Binding PinSidebar.Value, Delay=300}"
Margin="10 0">
<materialDesign:PackIcon Kind="Pin" RenderTransformOrigin=".5,.5">
<materialDesign:PackIcon.RenderTransform>
<RotateTransform Angle="45" />
</materialDesign:PackIcon.RenderTransform>
</materialDesign:PackIcon>
<materialDesign:ToggleButtonAssist.OnContent>
<materialDesign:PackIcon Kind="Pin" />
</materialDesign:ToggleButtonAssist.OnContent>
</ToggleButton>
<TextBlock Grid.Row="1"
Style="{StaticResource MaterialDesignHeadline6TextBlock}"
Foreground="{StaticResource PrimaryHueDarkForegroundBrush}"
@@ -26,6 +26,7 @@ namespace Artemis.UI.Screens.Sidebar
{
private readonly Timer _activeModulesUpdateTimer;
private readonly IKernel _kernel;
private readonly ISettingsService _settingsService;
private readonly IModuleVmFactory _moduleVmFactory;
private readonly IPluginManagementService _pluginManagementService;
private string _activeModules;
@@ -34,14 +35,17 @@ namespace Artemis.UI.Screens.Sidebar
private BindableCollection<INavigationItem> _sidebarItems;
private Dictionary<INavigationItem, Module> _sidebarModules;
public SidebarViewModel(IKernel kernel, IEventAggregator eventAggregator, IModuleVmFactory moduleVmFactory, IPluginManagementService pluginManagementService)
public SidebarViewModel(IKernel kernel, ISettingsService settingsService, IEventAggregator eventAggregator, IModuleVmFactory moduleVmFactory, IPluginManagementService pluginManagementService)
{
_kernel = kernel;
_settingsService = settingsService;
_moduleVmFactory = moduleVmFactory;
_pluginManagementService = pluginManagementService;
SidebarModules = new Dictionary<INavigationItem, Module>();
SidebarItems = new BindableCollection<INavigationItem>();
PinSidebar = settingsService.GetSetting("UI.PinSidebar", false);
PinSidebar.AutoSave = true;
_activeModulesUpdateTimer = new Timer(1000);
_activeModulesUpdateTimer.Start();
@@ -54,6 +58,8 @@ namespace Artemis.UI.Screens.Sidebar
eventAggregator.Subscribe(this);
}
public PluginSetting<bool> PinSidebar { get; }
public BindableCollection<INavigationItem> SidebarItems
{
get => _sidebarItems;
@@ -108,6 +114,10 @@ namespace Artemis.UI.Screens.Sidebar
foreach (Module module in modules)
AddModule(module);
// Set the sidebar as open if it's pinned
if (PinSidebar.Value)
IsSidebarOpen = true;
// Select the top item, which will be one of the defaults
Task.Run(() => SelectSidebarItem(SidebarItems[0]));
}