From ba6d50cf455b3ad8b4e270b5fcc9efd45d9c784c Mon Sep 17 00:00:00 2001 From: Ben Wallis Date: Wed, 28 Nov 2018 22:28:21 +0000 Subject: [PATCH] * Added auto-expand sections on open setting * Changed all sections to be expanded unless the new setting is disabled * Tidied up some casting in ItemFilterScriptViewModel by using pattern matching --- Filtration/App.config | 5 +- Filtration/Filtration.nuspec | 2 + Filtration/Properties/Settings.Designer.cs | 14 +- Filtration/Properties/Settings.settings | 5 +- .../DesignTimeSettingsPageViewModel.cs | 2 + .../ItemFilterBlockViewModelBase.cs | 6 +- .../ItemFilterCommentBlockViewModel.cs | 14 +- .../ViewModels/ItemFilterScriptViewModel.cs | 250 ++++++++---------- .../ViewModels/SettingsPageViewModel.cs | 15 +- Filtration/Views/SettingsPageView.xaml | 12 +- 10 files changed, 162 insertions(+), 163 deletions(-) diff --git a/Filtration/App.config b/Filtration/App.config index 05440e8..79a6b82 100644 --- a/Filtration/App.config +++ b/Filtration/App.config @@ -55,9 +55,12 @@ 800 - + + + True + diff --git a/Filtration/Filtration.nuspec b/Filtration/Filtration.nuspec index b8cf8b7..62492eb 100644 --- a/Filtration/Filtration.nuspec +++ b/Filtration/Filtration.nuspec @@ -10,7 +10,9 @@ false Copyright 2018 * All open filter scripts are now remembered on exit and reopened when the application is started rather than just the last opened one (#95) +* Filter sections are once again now expanded by default when scripts are opened, unless the new "Auto-expand all sections when opening scripts" setting is disabled * A new Clear Styles button has been added which removes all styles from the selected block (#96) +* Fixed theme saving (blank theme files were being saved) (#83) * Fixed checkboxes in Block Group Browser (#97) * Fixed the Select Path of Exile data directory dialog appearing after every upgrade (#94) * Fixed an issue where custom sounds were only populated from the default Path of Exile data directory rather than the configured directory diff --git a/Filtration/Properties/Settings.Designer.cs b/Filtration/Properties/Settings.Designer.cs index fd783e4..d6e7a4d 100644 --- a/Filtration/Properties/Settings.Designer.cs +++ b/Filtration/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace Filtration.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -229,5 +229,17 @@ namespace Filtration.Properties { this["LastOpenScripts"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool BlocksExpandedOnOpen { + get { + return ((bool)(this["BlocksExpandedOnOpen"])); + } + set { + this["BlocksExpandedOnOpen"] = value; + } + } } } diff --git a/Filtration/Properties/Settings.settings b/Filtration/Properties/Settings.settings index 802669b..551f84b 100644 --- a/Filtration/Properties/Settings.settings +++ b/Filtration/Properties/Settings.settings @@ -53,8 +53,11 @@ 800 - + + + True + \ No newline at end of file diff --git a/Filtration/ViewModels/DesignTime/DesignTimeSettingsPageViewModel.cs b/Filtration/ViewModels/DesignTime/DesignTimeSettingsPageViewModel.cs index a4ffea7..ac18848 100644 --- a/Filtration/ViewModels/DesignTime/DesignTimeSettingsPageViewModel.cs +++ b/Filtration/ViewModels/DesignTime/DesignTimeSettingsPageViewModel.cs @@ -12,6 +12,8 @@ namespace Filtration.ViewModels.DesignTime set { } } + public bool BlocksExpandedOnOpen { get; set; } + public bool ExtraLineBetweenBlocks { get => true; diff --git a/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs b/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs index b04053f..18c649b 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs @@ -7,7 +7,7 @@ namespace Filtration.ViewModels { internal interface IItemFilterBlockViewModelBase { - void Initialise(IItemFilterBlockBase itemfilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel); + void Initialise(IItemFilterBlockBase itemFilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel); IItemFilterBlockBase BaseBlock { get; } bool IsDirty { get; set; } bool IsVisible { get; set; } @@ -25,9 +25,9 @@ namespace Filtration.ViewModels } - public virtual void Initialise(IItemFilterBlockBase itemfilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel) + public virtual void Initialise(IItemFilterBlockBase itemFilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel) { - BaseBlock = itemfilterBlock; + BaseBlock = itemFilterBlock; _parentScriptViewModel = itemFilterScriptViewModel; CopyBlockCommand = new RelayCommand(OnCopyBlockCommand); diff --git a/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs b/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs index d4ab381..3b6bde6 100644 --- a/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs @@ -10,7 +10,8 @@ namespace Filtration.ViewModels IItemFilterCommentBlock ItemFilterCommentBlock { get; } string Comment { get; } bool IsExpanded { get; set; } - bool HasVisibleChild { get; } + bool HasVisibleChild { get; } + int ChildCount { get; set; } } internal class ItemFilterCommentBlockViewModel : ItemFilterBlockViewModelBase, IItemFilterCommentBlockViewModel @@ -28,13 +29,13 @@ namespace Filtration.ViewModels ToggleSectionCommand = new RelayCommand(OnToggleSectionCommand); } - public override void Initialise(IItemFilterBlockBase itemfilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel) + public override void Initialise(IItemFilterBlockBase itemFilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel) { _parentScriptViewModel = itemFilterScriptViewModel; - ItemFilterCommentBlock = itemfilterBlock as IItemFilterCommentBlock; + ItemFilterCommentBlock = itemFilterBlock as IItemFilterCommentBlock; BaseBlock = ItemFilterCommentBlock; - base.Initialise(itemfilterBlock, itemFilterScriptViewModel); + base.Initialise(itemFilterBlock, itemFilterScriptViewModel); } public RelayCommand ToggleSectionCommand { get; } @@ -43,10 +44,7 @@ namespace Filtration.ViewModels public string Comment { - get - { - return ItemFilterCommentBlock.Comment; - } + get => ItemFilterCommentBlock.Comment; set { if (ItemFilterCommentBlock.Comment != value) diff --git a/Filtration/ViewModels/ItemFilterScriptViewModel.cs b/Filtration/ViewModels/ItemFilterScriptViewModel.cs index ccad92a..60a54d3 100644 --- a/Filtration/ViewModels/ItemFilterScriptViewModel.cs +++ b/Filtration/ViewModels/ItemFilterScriptViewModel.cs @@ -37,11 +37,11 @@ namespace Filtration.ViewModels IEnumerable ItemFilterCommentBlockViewModels { get; } ObservableCollection CustomSoundsAvailable { get; } Predicate BlockFilterPredicate { get; set; } - + bool ShowAdvanced { get; } string Description { get; set; } string DisplayName { get; } - + void Initialise(IItemFilterScript itemFilterScript, bool newScript); void RemoveDirtyFlag(); void SetDirtyFlag(); @@ -63,7 +63,7 @@ namespace Filtration.ViewModels RelayCommand MoveBlockUpCommand { get; } RelayCommand MoveBlockDownCommand { get; } RelayCommand MoveBlockToTopCommand { get; } - RelayCommand MoveBlockToBottomCommand { get;} + RelayCommand MoveBlockToBottomCommand { get; } RelayCommand CopyBlockCommand { get; } RelayCommand PasteBlockCommand { get; } RelayCommand CopyBlockStyleCommand { get; } @@ -105,17 +105,13 @@ namespace Filtration.ViewModels private readonly IItemFilterPersistenceService _persistenceService; private readonly IMessageBoxService _messageBoxService; private readonly IClipboardService _clipboardService; - private readonly IBlockGroupHierarchyBuilder _blockGroupHierarchyBuilder; private bool _isDirty; - private readonly ObservableCollection _selectedBlockViewModels; private IItemFilterCommentBlockViewModel _sectionBrowserSelectedBlockViewModel; - private readonly ObservableCollection _itemFilterBlockViewModels; private Predicate _blockFilterPredicate; private ICommandManager _scriptCommandManager; private ObservableCollection _customSoundsAvailable; - private ListCollectionView _viewItemFilterBlockViewModels; private readonly List _lastAddedBlocks; public ItemFilterScriptViewModel(IItemFilterBlockBaseViewModelFactory itemFilterBlockBaseViewModelFactory, @@ -124,8 +120,7 @@ namespace Filtration.ViewModels IAvalonDockWorkspaceViewModel avalonDockWorkspaceViewModel, IItemFilterPersistenceService persistenceService, IMessageBoxService messageBoxService, - IClipboardService clipboardService, - IBlockGroupHierarchyBuilder blockGroupHierarchyBuilder) + IClipboardService clipboardService) { _itemFilterBlockBaseViewModelFactory = itemFilterBlockBaseViewModelFactory; _blockTranslator = blockTranslator; @@ -135,10 +130,9 @@ namespace Filtration.ViewModels _persistenceService = persistenceService; _messageBoxService = messageBoxService; _clipboardService = clipboardService; - _blockGroupHierarchyBuilder = blockGroupHierarchyBuilder; - _itemFilterBlockViewModels = new ObservableCollection(); - _selectedBlockViewModels = new ObservableCollection(); - _selectedBlockViewModels.CollectionChanged += (s, e) => + ItemFilterBlockViewModels = new ObservableCollection(); + SelectedBlockViewModels = new ObservableCollection(); + SelectedBlockViewModels.CollectionChanged += (s, e) => { RaisePropertyChanged(nameof(SelectedBlockViewModels)); RaisePropertyChanged(nameof(LastSelectedBlockViewModel)); @@ -154,9 +148,9 @@ namespace Filtration.ViewModels ToggleShowAdvancedCommand = new RelayCommand(OnToggleShowAdvancedCommand); ClearFilterCommand = new RelayCommand(OnClearFilterCommand, () => BlockFilterPredicate != null); - ClearStylesCommand = new RelayCommand(OnClearStylesCommand, () => SelectedBlockViewModels.OfType().Count() > 0); + ClearStylesCommand = new RelayCommand(OnClearStylesCommand, () => SelectedBlockViewModels.OfType().Any()); CloseCommand = new RelayCommand(async () => await OnCloseCommand()); - DeleteBlockCommand = new RelayCommand(OnDeleteBlockCommand, () => CanModifySelectedBlocks()); + DeleteBlockCommand = new RelayCommand(OnDeleteBlockCommand, CanModifySelectedBlocks); MoveBlockToTopCommand = new RelayCommand(OnMoveBlockToTopCommand, () => SelectedBlockViewModels.Count > 0 && CanModifySelectedBlocks()); MoveBlockToBottomCommand = new RelayCommand(OnMoveBlockToBottomCommand, () => SelectedBlockViewModels.Count > 0 && CanModifySelectedBlocks()); MoveBlockUpCommand = new RelayCommand(OnMoveBlockUpCommand, () => SelectedBlockViewModels.Count == 1 && ViewItemFilterBlockViewModels.IndexOf(LastSelectedBlockViewModel) > 0); @@ -217,11 +211,14 @@ namespace Filtration.ViewModels { Script.FilePath = "Untitled.filter"; } - + Title = Filename; ContentId = "ScriptContentId"; - CollapseAllSections(); + if (!Settings.Default.BlocksExpandedOnOpen) + { + CollapseAllSections(); + } } private void InitialiseCustomSounds() @@ -250,20 +247,20 @@ namespace Filtration.ViewModels switch (notifyCollectionChangedEventArgs.Action) { case NotifyCollectionChangedAction.Add: - { - AddItemFilterBlockViewModels(notifyCollectionChangedEventArgs.NewItems.Cast(), notifyCollectionChangedEventArgs.NewStartingIndex); - break; - } + { + AddItemFilterBlockViewModels(notifyCollectionChangedEventArgs.NewItems.Cast(), notifyCollectionChangedEventArgs.NewStartingIndex); + break; + } case NotifyCollectionChangedAction.Remove: - { - RemoveItemFilterBlockviewModels(notifyCollectionChangedEventArgs.OldItems.Cast()); - break; - } + { + RemoveItemFilterBlockViewModels(notifyCollectionChangedEventArgs.OldItems.Cast()); + break; + } default: - { - Debugger.Break(); // Unhandled NotifyCollectionChangedAction - break; - } + { + Debugger.Break(); // Unhandled NotifyCollectionChangedAction + break; + } } UpdateChildCount(); @@ -294,8 +291,7 @@ namespace Filtration.ViewModels _lastAddedBlocks.Add(vm); - var itemBlock = itemFilterBlock as IItemFilterBlock; - if (itemBlock != null) + if (itemFilterBlock is IItemFilterBlock itemBlock) { foreach (var customSoundBlockItem in itemBlock.BlockItems.OfType()) { @@ -308,7 +304,7 @@ namespace Filtration.ViewModels } } - private void RemoveItemFilterBlockviewModels(IEnumerable itemFilterBlocks) + private void RemoveItemFilterBlockViewModels(IEnumerable itemFilterBlocks) { foreach (var itemFilterBlock in itemFilterBlocks) { @@ -324,7 +320,7 @@ namespace Filtration.ViewModels private void UpdateFilteredBlockList() { - ICollectionView filteredBlocks = CollectionViewSource.GetDefaultView(_itemFilterBlockViewModels); + ICollectionView filteredBlocks = CollectionViewSource.GetDefaultView(ItemFilterBlockViewModels); filteredBlocks.Filter = BlockFilter; ItemFilterCommentBlockViewModel previousSection = new ItemFilterCommentBlockViewModel(); @@ -334,16 +330,16 @@ namespace Filtration.ViewModels { previousSection.VisibleChildCount++; } - else if (block is ItemFilterCommentBlockViewModel) + else if (block is ItemFilterCommentBlockViewModel model) { - previousSection = block as ItemFilterCommentBlockViewModel; + previousSection = model; previousSection.VisibleChildCount = 0; } } - _viewItemFilterBlockViewModels = (ListCollectionView)CollectionViewSource.GetDefaultView( + ViewItemFilterBlockViewModels = (ListCollectionView)CollectionViewSource.GetDefaultView( filteredBlocks.Cast().ToList()); - _viewItemFilterBlockViewModels.Filter = BlockVisibilityFilter; + ViewItemFilterBlockViewModels.Filter = BlockVisibilityFilter; Messenger.Default.Send(new NotificationMessage("SectionsChanged")); SelectedBlockViewModels.Clear(); @@ -360,24 +356,24 @@ namespace Filtration.ViewModels previousSection.ChildCount++; block.IsVisible = previousSection.IsExpanded; } - else if (block is ItemFilterCommentBlockViewModel) + else if (block is ItemFilterCommentBlockViewModel model) { - previousSection = block as ItemFilterCommentBlockViewModel; + previousSection = model; previousSection.ChildCount = 0; } } } - private List getChildren(IItemFilterCommentBlockViewModel targetBlockViewModel) + private List GetChildren(IItemFilterCommentBlockViewModel targetBlockViewModel) { return ItemFilterBlockViewModels.ToList().GetRange(ItemFilterBlockViewModels.IndexOf(targetBlockViewModel) + 1, - (targetBlockViewModel as ItemFilterCommentBlockViewModel).ChildCount); + targetBlockViewModel.ChildCount); } - private List getChildrenIndexes(IItemFilterCommentBlockViewModel targetBlockViewModel) + private List GetChildrenIndexes(IItemFilterCommentBlockViewModel targetBlockViewModel) { return Enumerable.Range(ItemFilterBlockViewModels.IndexOf(targetBlockViewModel) + 1, - (targetBlockViewModel as ItemFilterCommentBlockViewModel).ChildCount).ToList(); + targetBlockViewModel.ChildCount).ToList(); } private void ValidateSelectedBlocks() @@ -432,25 +428,16 @@ namespace Filtration.ViewModels public ObservableCollection CustomSoundsAvailable { get => _customSoundsAvailable; - set + private set { _customSoundsAvailable = value; RaisePropertyChanged(); } } - public ListCollectionView ViewItemFilterBlockViewModels - { - get => _viewItemFilterBlockViewModels; - } + public ListCollectionView ViewItemFilterBlockViewModels { get; private set; } - public ObservableCollection ItemFilterBlockViewModels - { - get - { - return _itemFilterBlockViewModels; - } - } + public ObservableCollection ItemFilterBlockViewModels { get; } private bool BlockFilter(object item) { @@ -555,7 +542,7 @@ namespace Filtration.ViewModels public bool HasSelectedCommentBlock() { - return SelectedBlockViewModels.OfType().Count() > 0; + return SelectedBlockViewModels.OfType().Any(); } public bool CanModifySelectedBlocks() @@ -586,18 +573,9 @@ namespace Filtration.ViewModels return itemFilterCommentBlock.ChildCount == itemFilterCommentBlock.VisibleChildCount; } - public ObservableCollection SelectedBlockViewModels - { - get => _selectedBlockViewModels; - } + public ObservableCollection SelectedBlockViewModels { get; } - public IItemFilterBlockViewModelBase LastSelectedBlockViewModel - { - get - { - return SelectedBlockViewModels.Count > 0 ? SelectedBlockViewModels.Last() : null; - } - } + public IItemFilterBlockViewModelBase LastSelectedBlockViewModel => SelectedBlockViewModels.Count > 0 ? SelectedBlockViewModels.Last() : null; public IItemFilterCommentBlockViewModel CommentBlockBrowserBrowserSelectedBlockViewModel { @@ -657,7 +635,7 @@ namespace Filtration.ViewModels private bool _filenameIsFake; private bool _showAdvanced; - + public async Task SaveAsync() { if (!ValidateScript()) return; @@ -706,7 +684,7 @@ namespace Filtration.ViewModels var result = saveDialog.ShowDialog(); if (result != DialogResult.OK) return; - + Messenger.Default.Send(new NotificationMessage("ShowLoadingBanner")); var previousFilePath = Script.FilePath; @@ -802,7 +780,7 @@ namespace Filtration.ViewModels { await Close(); } - + public async Task Close() { if (!IsDirty) @@ -817,24 +795,24 @@ namespace Filtration.ViewModels switch (result) { case MessageBoxResult.Yes: - { - await SaveAsync(); - CloseScript(); - break; - } + { + await SaveAsync(); + CloseScript(); + break; + } case MessageBoxResult.No: - { - CloseScript(); - break; - } + { + CloseScript(); + break; + } case MessageBoxResult.Cancel: - { - return; - } + { + return; + } } } } - + private void CloseScript() { var openMasterThemForScript = @@ -882,9 +860,9 @@ namespace Filtration.ViewModels foreach (var block in SelectedBlockViewModels.OfType()) { blocksToCopy.Add(block); - if (block is IItemFilterCommentBlockViewModel && !(block as IItemFilterCommentBlockViewModel).IsExpanded) + if (block is IItemFilterCommentBlockViewModel model && !model.IsExpanded) { - blocksToCopy.AddRange(getChildren(block as IItemFilterCommentBlockViewModel)); + blocksToCopy.AddRange(GetChildren(model)); } } @@ -901,14 +879,14 @@ namespace Filtration.ViewModels else { var blocksToCopy = new List { targetBlockViewModelBase }; - blocksToCopy.AddRange(getChildren(targetBlockViewModelBase as IItemFilterCommentBlockViewModel)); + blocksToCopy.AddRange(GetChildren((IItemFilterCommentBlockViewModel)targetBlockViewModelBase)); CopyBlocks(blocksToCopy); } } public void CopyBlocks(IEnumerable targetBlockViewModels) { - if (targetBlockViewModels.Count() < 1) + if (!targetBlockViewModels.Any()) { return; } @@ -931,8 +909,7 @@ namespace Filtration.ViewModels private void OnCopyBlockStyleCommand() { - var selectedBlockViewModel = LastSelectedBlockViewModel as IItemFilterBlockViewModel; - if (selectedBlockViewModel != null) + if (LastSelectedBlockViewModel is IItemFilterBlockViewModel selectedBlockViewModel) { CopyBlockStyle(selectedBlockViewModel); } @@ -963,8 +940,7 @@ namespace Filtration.ViewModels private void OnPasteBlockStyleCommand() { - var selectedBlockViewModel = LastSelectedBlockViewModel as IItemFilterBlockViewModel; - if (selectedBlockViewModel != null) + if (LastSelectedBlockViewModel is IItemFilterBlockViewModel selectedBlockViewModel) { PasteBlockStyle(selectedBlockViewModel); } @@ -993,7 +969,7 @@ namespace Filtration.ViewModels if (commentBlock != null && !commentBlock.IsExpanded) { targetBlockViewModelBase = ItemFilterBlockViewModels[ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase) + - (commentBlock as ItemFilterCommentBlockViewModel).ChildCount]; + commentBlock.ChildCount]; } try @@ -1051,12 +1027,12 @@ namespace Filtration.ViewModels var indexToMove = ItemFilterBlockViewModels.IndexOf( ViewItemFilterBlockViewModels.GetItemAt(blockIndex - 1) as IItemFilterBlockViewModelBase); - if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel && - !(targetBlockViewModelBase as IItemFilterCommentBlockViewModel).IsExpanded) + if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel model && + !model.IsExpanded) { ExecuteCommandAndSelectAdded(new MoveBlocksToIndexCommand(Script, - Enumerable.Range(ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase), - (targetBlockViewModelBase as ItemFilterCommentBlockViewModel).ChildCount + 1).ToList(), indexToMove)); + Enumerable.Range(ItemFilterBlockViewModels.IndexOf(model), + model.ChildCount + 1).ToList(), indexToMove)); if (_lastAddedBlocks.Count > 0) { ToggleSection(_lastAddedBlocks[0] as IItemFilterCommentBlockViewModel); @@ -1072,8 +1048,8 @@ namespace Filtration.ViewModels ExecuteCommandAndSelectAdded(new MoveBlocksToIndexCommand(Script, targetBlockViewModelBase.BaseBlock, indexToMove)); } - SetDirtyFlag(); - } + SetDirtyFlag(); + } private void OnMoveBlockDownCommand() { @@ -1093,13 +1069,13 @@ namespace Filtration.ViewModels indexToMove += (belowBlock as ItemFilterCommentBlockViewModel).ChildCount; } - if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel && - !(targetBlockViewModelBase as IItemFilterCommentBlockViewModel).IsExpanded) + if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel model && + !model.IsExpanded) { - indexToMove -= (targetBlockViewModelBase as ItemFilterCommentBlockViewModel).ChildCount; + indexToMove -= model.ChildCount; ExecuteCommandAndSelectAdded(new MoveBlocksToIndexCommand(Script, - Enumerable.Range(ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase), - (targetBlockViewModelBase as ItemFilterCommentBlockViewModel).ChildCount + 1).ToList(), indexToMove)); + Enumerable.Range(ItemFilterBlockViewModels.IndexOf(model), + model.ChildCount + 1).ToList(), indexToMove)); if (_lastAddedBlocks.Count > 0) { ToggleSection(_lastAddedBlocks[0] as IItemFilterCommentBlockViewModel); @@ -1124,15 +1100,14 @@ namespace Filtration.ViewModels public void AddBlock(IItemFilterBlockViewModelBase targetBlockViewModelBase) { - if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel && !(targetBlockViewModelBase as IItemFilterCommentBlockViewModel).IsExpanded) + if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel model && !model.IsExpanded) { - ToggleSection(targetBlockViewModelBase as IItemFilterCommentBlockViewModel); - targetBlockViewModelBase = ItemFilterBlockViewModels[ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase) + - (targetBlockViewModelBase as ItemFilterCommentBlockViewModel).ChildCount]; + ToggleSection(model); + targetBlockViewModelBase = ItemFilterBlockViewModels[ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase) + model.ChildCount]; } ExecuteCommandAndSelectAdded(new AddBlockCommand(Script, targetBlockViewModelBase?.BaseBlock)); - SetDirtyFlag(); + SetDirtyFlag(); } private void OnAddCommentBlockCommand() @@ -1160,7 +1135,7 @@ namespace Filtration.ViewModels blocksToDelete.Add(block); if (block is IItemFilterCommentBlockViewModel && !(block as IItemFilterCommentBlockViewModel).IsExpanded) { - blocksToDelete.AddRange(getChildren(block as IItemFilterCommentBlockViewModel)); + blocksToDelete.AddRange(GetChildren(block as IItemFilterCommentBlockViewModel)); } } @@ -1216,8 +1191,8 @@ namespace Filtration.ViewModels { _scriptCommandManager.ExecuteCommand(new MoveBlocksToBottomCommand(Script, targetBlockViewModelBase.BaseBlock)); } - - SetDirtyFlag(); + + SetDirtyFlag(); } public void MoveBlocksToBottom(IEnumerable targetCommentBlockViewModels) @@ -1228,7 +1203,7 @@ namespace Filtration.ViewModels sourceIndexes.Add(ItemFilterBlockViewModels.IndexOf(block)); if (block is IItemFilterCommentBlockViewModel && !(block as IItemFilterCommentBlockViewModel).IsExpanded) { - sourceIndexes.AddRange(getChildrenIndexes(block as IItemFilterCommentBlockViewModel)); + sourceIndexes.AddRange(GetChildrenIndexes(block as IItemFilterCommentBlockViewModel)); } } @@ -1251,11 +1226,11 @@ namespace Filtration.ViewModels public void MoveBlockToTop(IItemFilterBlockViewModelBase targetBlockViewModelBase) { - if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel && !(targetBlockViewModelBase as IItemFilterCommentBlockViewModel).IsExpanded) + if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel model && !model.IsExpanded) { ExecuteCommandAndSelectAdded(new MoveBlocksToTopCommand(Script, - Enumerable.Range(ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase), - (targetBlockViewModelBase as ItemFilterCommentBlockViewModel).ChildCount + 1).ToList())); + Enumerable.Range(ItemFilterBlockViewModels.IndexOf(model), + model.ChildCount + 1).ToList())); if (_lastAddedBlocks.Count > 0) { ToggleSection(_lastAddedBlocks[0] as IItemFilterCommentBlockViewModel); @@ -1275,23 +1250,23 @@ namespace Filtration.ViewModels foreach (var block in targetCommentBlockViewModels) { sourceIndexes.Add(ItemFilterBlockViewModels.IndexOf(block)); - if (block is IItemFilterCommentBlockViewModel && !(block as IItemFilterCommentBlockViewModel).IsExpanded) + if (block is IItemFilterCommentBlockViewModel model && !model.IsExpanded) { - sourceIndexes.AddRange(getChildrenIndexes(block as IItemFilterCommentBlockViewModel)); + sourceIndexes.AddRange(GetChildrenIndexes(model)); } } ExecuteCommandAndSelectAdded(new MoveBlocksToTopCommand(Script, sourceIndexes)); for (var i = 0; i < sourceIndexes.Count; i++) { - if (ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel != null) + if (ItemFilterBlockViewModels[i] is IItemFilterCommentBlockViewModel model) { - ToggleSection(ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel); + ToggleSection(model); } } SetDirtyFlag(); - } + } private void OnBlockBecameDirty(object sender, EventArgs e) { @@ -1318,11 +1293,11 @@ namespace Filtration.ViewModels { foreach (var block in SelectedBlockViewModels) { - if (block is IItemFilterCommentBlockViewModel) + if (block is IItemFilterCommentBlockViewModel model) { - if (!(block as IItemFilterCommentBlockViewModel).IsExpanded) + if (!model.IsExpanded) { - foreach (var child in getChildren(block as IItemFilterCommentBlockViewModel)) + foreach (var child in GetChildren(model)) { ((IItemFilterBlockViewModel)child).BlockEnabled = false; } @@ -1339,11 +1314,11 @@ namespace Filtration.ViewModels { foreach (var block in SelectedBlockViewModels) { - if (block is IItemFilterCommentBlockViewModel) + if (block is IItemFilterCommentBlockViewModel model) { - if (!(block as IItemFilterCommentBlockViewModel).IsExpanded) + if (!model.IsExpanded) { - foreach (var child in getChildren(block as IItemFilterCommentBlockViewModel)) + foreach (var child in GetChildren(model)) { ((IItemFilterBlockViewModel)child).BlockEnabled = true; } @@ -1360,7 +1335,7 @@ namespace Filtration.ViewModels { foreach (var block in SelectedBlockViewModels.OfType()) { - foreach (var child in getChildren(block as IItemFilterCommentBlockViewModel)) + foreach (var child in GetChildren(block)) { ((IItemFilterBlockViewModel)child).BlockEnabled = false; } @@ -1371,7 +1346,7 @@ namespace Filtration.ViewModels { foreach (var block in SelectedBlockViewModels.OfType()) { - foreach (var child in getChildren(block as IItemFilterCommentBlockViewModel)) + foreach (var child in GetChildren(block)) { ((IItemFilterBlockViewModel)child).BlockEnabled = true; } @@ -1404,7 +1379,7 @@ namespace Filtration.ViewModels { var newState = !targetCommentBlockViewModelBase.IsExpanded; targetCommentBlockViewModelBase.IsExpanded = newState; - foreach (var child in getChildren(targetCommentBlockViewModelBase)) + foreach (var child in GetChildren(targetCommentBlockViewModelBase)) { child.IsVisible = newState; } @@ -1419,15 +1394,11 @@ namespace Filtration.ViewModels private void CollapseAllSections() { - for (int i = 0; i < ItemFilterBlockViewModels.Count; i++) + foreach (var model in ItemFilterBlockViewModels.OfType()) { - var block = ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel; - if (block != null) + if (model.IsExpanded) { - if(block.IsExpanded) - { - ToggleSection(block, true); - } + ToggleSection(model, true); } } @@ -1438,12 +1409,11 @@ namespace Filtration.ViewModels private void ExpandAllSections() { - for (int i = 0; i < ItemFilterBlockViewModels.Count; i++) + foreach (var model in ItemFilterBlockViewModels.OfType()) { - var block = ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel; - if (block != null && !block.IsExpanded) + if (!model.IsExpanded) { - ToggleSection(block, true); + ToggleSection(model, true); } } diff --git a/Filtration/ViewModels/SettingsPageViewModel.cs b/Filtration/ViewModels/SettingsPageViewModel.cs index a2600fa..6779915 100644 --- a/Filtration/ViewModels/SettingsPageViewModel.cs +++ b/Filtration/ViewModels/SettingsPageViewModel.cs @@ -10,8 +10,9 @@ namespace Filtration.ViewModels RelayCommand SetItemFilterScriptDirectoryCommand { get; } string DefaultFilterDirectory { get; } - bool ExtraLineBetweenBlocks { get; set; } + bool BlocksExpandedOnOpen { get; set; } bool DownloadPrereleaseUpdates { get; set; } + bool ExtraLineBetweenBlocks { get; set; } } internal class SettingsPageViewModel : ViewModelBase, ISettingsPageViewModel @@ -28,10 +29,10 @@ namespace Filtration.ViewModels public string DefaultFilterDirectory => Settings.Default.DefaultFilterDirectory; - public bool ExtraLineBetweenBlocks + public bool BlocksExpandedOnOpen { - get => Settings.Default.ExtraLineBetweenBlocks; - set => Settings.Default.ExtraLineBetweenBlocks = value; + get => Settings.Default.BlocksExpandedOnOpen; + set => Settings.Default.BlocksExpandedOnOpen = value; } public bool DownloadPrereleaseUpdates @@ -40,6 +41,12 @@ namespace Filtration.ViewModels set => Settings.Default.DownloadPrereleaseUpdates = value; } + public bool ExtraLineBetweenBlocks + { + get => Settings.Default.ExtraLineBetweenBlocks; + set => Settings.Default.ExtraLineBetweenBlocks = value; + } + private void OnSetItemFilterScriptDirectoryCommand() { _itemFilterScriptDirectoryService.SetItemFilterScriptDirectory(); diff --git a/Filtration/Views/SettingsPageView.xaml b/Filtration/Views/SettingsPageView.xaml index 23f8832..83ba1a5 100644 --- a/Filtration/Views/SettingsPageView.xaml +++ b/Filtration/Views/SettingsPageView.xaml @@ -4,7 +4,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:designTime="clr-namespace:Filtration.ViewModels.DesignTime" - mc:Ignorable="d" d:DesignWidth="1200" + mc:Ignorable="d" d:DesignWidth="1200" d:DesignHeight="400" d:DataContext="{d:DesignInstance Type=designTime:DesignTimeSettingsPageViewModel, IsDesignTimeCreatable=True}"> @@ -22,8 +22,8 @@ - - + + @@ -40,8 +40,10 @@ Add blank line between blocks when saving - Download pre-release updates (use with caution) - + Download pre-release updates (use with caution) + + Auto-expand all sections when opening scripts +