Fix block group browser not filtering
This commit is contained in:
parent
7162e16b49
commit
bdd121f48c
|
@ -84,7 +84,7 @@ namespace Filtration.ViewModels
|
||||||
void MoveBlockUp(IItemFilterBlockViewModelBase targetBlockViewModelBase);
|
void MoveBlockUp(IItemFilterBlockViewModelBase targetBlockViewModelBase);
|
||||||
void MoveBlockDown(IItemFilterBlockViewModelBase targetBlockViewModelBase);
|
void MoveBlockDown(IItemFilterBlockViewModelBase targetBlockViewModelBase);
|
||||||
void MoveBlockToBottom(IItemFilterBlockViewModelBase targetBlockViewModelBase);
|
void MoveBlockToBottom(IItemFilterBlockViewModelBase targetBlockViewModelBase);
|
||||||
void ToggleSection(IItemFilterCommentBlockViewModel targetCommentBlockViewModelBase, bool updateViewModels = true);
|
void ToggleSection(IItemFilterCommentBlockViewModel targetCommentBlockViewModelBase, bool deferPropertyChanged = false);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class ItemFilterScriptViewModel : PaneViewModel, IItemFilterScriptViewModel
|
internal class ItemFilterScriptViewModel : PaneViewModel, IItemFilterScriptViewModel
|
||||||
|
@ -103,8 +103,6 @@ namespace Filtration.ViewModels
|
||||||
private IItemFilterBlockViewModelBase _selectedBlockViewModel;
|
private IItemFilterBlockViewModelBase _selectedBlockViewModel;
|
||||||
private IItemFilterCommentBlockViewModel _sectionBrowserSelectedBlockViewModel;
|
private IItemFilterCommentBlockViewModel _sectionBrowserSelectedBlockViewModel;
|
||||||
private readonly ObservableCollection<IItemFilterBlockViewModelBase> _itemFilterBlockViewModels;
|
private readonly ObservableCollection<IItemFilterBlockViewModelBase> _itemFilterBlockViewModels;
|
||||||
private ObservableCollection<IItemFilterBlockViewModelBase> _viewItemFilterBlockViewModels;
|
|
||||||
private ICollectionView _itemFilterBlockViewModelsCollectionView;
|
|
||||||
private Predicate<IItemFilterBlockViewModel> _blockFilterPredicate;
|
private Predicate<IItemFilterBlockViewModel> _blockFilterPredicate;
|
||||||
private ICommandManager _scriptCommandManager;
|
private ICommandManager _scriptCommandManager;
|
||||||
|
|
||||||
|
@ -164,8 +162,6 @@ namespace Filtration.ViewModels
|
||||||
icon.EndInit();
|
icon.EndInit();
|
||||||
IconSource = icon;
|
IconSource = icon;
|
||||||
|
|
||||||
_viewItemFilterBlockViewModels = new ObservableCollection<IItemFilterBlockViewModelBase>();
|
|
||||||
|
|
||||||
_customSoundsAvailable = new ObservableCollection<string>();
|
_customSoundsAvailable = new ObservableCollection<string>();
|
||||||
|
|
||||||
var poeFolderFiles = Directory.GetFiles(persistenceService.DefaultPathOfExileDirectory() + "\\").Where(
|
var poeFolderFiles = Directory.GetFiles(persistenceService.DefaultPathOfExileDirectory() + "\\").Where(
|
||||||
|
@ -217,7 +213,6 @@ namespace Filtration.ViewModels
|
||||||
ContentId = "ScriptContentId";
|
ContentId = "ScriptContentId";
|
||||||
|
|
||||||
CollapseAllSections();
|
CollapseAllSections();
|
||||||
UpdateBlockModelsForView();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ItemFilterBlocksOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs)
|
private void ItemFilterBlocksOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs)
|
||||||
|
@ -241,7 +236,7 @@ namespace Filtration.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateBlockModelsForView();
|
RaisePropertyChanged(nameof(ViewItemFilterBlockViewModels));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CustomSoundsAvailableOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs)
|
private void CustomSoundsAvailableOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs)
|
||||||
|
@ -353,16 +348,34 @@ namespace Filtration.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ObservableCollection<IItemFilterBlockViewModelBase> ViewItemFilterBlockViewModels
|
public ICollectionView ViewItemFilterBlockViewModels
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return _viewItemFilterBlockViewModels;
|
ICollectionView filteredView = CollectionViewSource.GetDefaultView(ItemFilterBlockViewModels);
|
||||||
}
|
filteredView.Filter = BlockFilter;
|
||||||
set
|
|
||||||
{
|
IItemFilterBlockViewModelBase previousBlock = null;
|
||||||
_viewItemFilterBlockViewModels = value;
|
foreach (IItemFilterBlockViewModelBase block in filteredView)
|
||||||
RaisePropertyChanged();
|
{
|
||||||
|
if (block is IItemFilterBlockViewModel)
|
||||||
|
{
|
||||||
|
if (previousBlock is IItemFilterCommentBlockViewModel)
|
||||||
|
{
|
||||||
|
(previousBlock as IItemFilterCommentBlockViewModel).HasChild = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (block is IItemFilterCommentBlockViewModel)
|
||||||
|
{
|
||||||
|
(block as IItemFilterCommentBlockViewModel).HasChild = false;
|
||||||
|
}
|
||||||
|
previousBlock = block;
|
||||||
|
}
|
||||||
|
|
||||||
|
ICollectionView visibilityView = CollectionViewSource.GetDefaultView(filteredView.Cast<IItemFilterBlockViewModelBase>());
|
||||||
|
visibilityView.Filter = BlockVisibilityFilter;
|
||||||
|
|
||||||
|
return visibilityView;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,10 +383,6 @@ namespace Filtration.ViewModels
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
_itemFilterBlockViewModelsCollectionView =
|
|
||||||
CollectionViewSource.GetDefaultView(_itemFilterBlockViewModels);
|
|
||||||
_itemFilterBlockViewModelsCollectionView.Filter = BlockFilter;
|
|
||||||
|
|
||||||
return _itemFilterBlockViewModels;
|
return _itemFilterBlockViewModels;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -392,6 +401,11 @@ namespace Filtration.ViewModels
|
||||||
return ShowBlockBasedOnAdvanced(blockViewModel);
|
return ShowBlockBasedOnAdvanced(blockViewModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool BlockVisibilityFilter(object item)
|
||||||
|
{
|
||||||
|
return (bool)(item as IItemFilterBlockViewModelBase)?.IsVisible;
|
||||||
|
}
|
||||||
|
|
||||||
private bool ShowBlockBasedOnAdvanced(IItemFilterBlockViewModel blockViewModel)
|
private bool ShowBlockBasedOnAdvanced(IItemFilterBlockViewModel blockViewModel)
|
||||||
{
|
{
|
||||||
if (ShowAdvanced)
|
if (ShowAdvanced)
|
||||||
|
@ -414,7 +428,7 @@ namespace Filtration.ViewModels
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_blockFilterPredicate = value;
|
_blockFilterPredicate = value;
|
||||||
RaisePropertyChanged(nameof(ItemFilterBlockViewModels));
|
RaisePropertyChanged(nameof(ViewItemFilterBlockViewModels));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,7 +450,7 @@ namespace Filtration.ViewModels
|
||||||
{
|
{
|
||||||
_showAdvanced = value;
|
_showAdvanced = value;
|
||||||
RaisePropertyChanged();
|
RaisePropertyChanged();
|
||||||
RaisePropertyChanged(nameof(ItemFilterBlockViewModels));
|
RaisePropertyChanged(nameof(ViewItemFilterBlockViewModels));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1353,124 +1367,55 @@ namespace Filtration.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleSection(IItemFilterCommentBlockViewModel targetCommentBlockViewModelBase, bool updateViewModels = true)
|
public void ToggleSection(IItemFilterCommentBlockViewModel targetCommentBlockViewModelBase, bool deferPropertyChanged = false)
|
||||||
{
|
{
|
||||||
var newState = !targetCommentBlockViewModelBase.IsExpanded;
|
var newState = !targetCommentBlockViewModelBase.IsExpanded;
|
||||||
targetCommentBlockViewModelBase.IsExpanded = newState;
|
targetCommentBlockViewModelBase.IsExpanded = newState;
|
||||||
var sectionIndex = ItemFilterBlockViewModels.IndexOf(targetCommentBlockViewModelBase);
|
var sectionIndex = ItemFilterBlockViewModels.IndexOf(targetCommentBlockViewModelBase);
|
||||||
var viewIndex = ViewItemFilterBlockViewModels.IndexOf(targetCommentBlockViewModelBase);
|
|
||||||
for (int i = sectionIndex + 1; i < ItemFilterBlockViewModels.Count; i++)
|
for (int i = sectionIndex + 1; i < ItemFilterBlockViewModels.Count; i++)
|
||||||
{
|
{
|
||||||
var block = ItemFilterBlockViewModels[i] as IItemFilterBlockViewModel;
|
var block = ItemFilterBlockViewModels[i] as IItemFilterBlockViewModel;
|
||||||
if (block != null)
|
if (block != null)
|
||||||
{
|
{
|
||||||
if (newState)
|
|
||||||
viewIndex++;
|
|
||||||
|
|
||||||
if (newState == block.IsVisible)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(updateViewModels)
|
|
||||||
{
|
|
||||||
if(newState)
|
|
||||||
{
|
|
||||||
if(viewIndex < ViewItemFilterBlockViewModels.Count)
|
|
||||||
{
|
|
||||||
ViewItemFilterBlockViewModels.Insert(viewIndex, block);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ViewItemFilterBlockViewModels.Add(block);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ViewItemFilterBlockViewModels.RemoveAt(viewIndex + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
block.IsVisible = newState;
|
block.IsVisible = newState;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateBlockModelsForView()
|
if (!deferPropertyChanged)
|
||||||
{
|
RaisePropertyChanged(nameof(ViewItemFilterBlockViewModels));
|
||||||
ObservableCollection<IItemFilterBlockViewModelBase> blocksForView = new ObservableCollection<IItemFilterBlockViewModelBase>();
|
|
||||||
for (var i = 0; i < ItemFilterBlockViewModels.Count; i++)
|
|
||||||
{
|
|
||||||
var block = ItemFilterBlockViewModels[i];
|
|
||||||
if (block.IsVisible)
|
|
||||||
{
|
|
||||||
blocksForView.Add(block);
|
|
||||||
|
|
||||||
var blockAsComment = block as IItemFilterCommentBlockViewModel;
|
|
||||||
if(blockAsComment != null && i < (ItemFilterBlockViewModels.Count - 1))
|
|
||||||
{
|
|
||||||
var followingBlock = ItemFilterBlockViewModels[i + 1] as IItemFilterBlockViewModel;
|
|
||||||
if(followingBlock != null)
|
|
||||||
{
|
|
||||||
blockAsComment.HasChild = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
blockAsComment.HasChild = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ViewItemFilterBlockViewModels = blocksForView;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CollapseAllSections()
|
private void CollapseAllSections()
|
||||||
{
|
{
|
||||||
ObservableCollection<IItemFilterBlockViewModelBase> blocksForView = new ObservableCollection<IItemFilterBlockViewModelBase>();
|
|
||||||
for (int i = 0; i < ItemFilterBlockViewModels.Count; i++)
|
for (int i = 0; i < ItemFilterBlockViewModels.Count; i++)
|
||||||
{
|
{
|
||||||
var block = ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel;
|
var block = ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel;
|
||||||
if (block != null)
|
if (block != null)
|
||||||
{
|
{
|
||||||
blocksForView.Add(block);
|
|
||||||
|
|
||||||
if(block.IsExpanded)
|
if(block.IsExpanded)
|
||||||
{
|
{
|
||||||
ToggleSection(block, false);
|
ToggleSection(block, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SelectedBlockViewModel == null && blocksForView.Count > 0)
|
RaisePropertyChanged(nameof(ViewItemFilterBlockViewModels));
|
||||||
{
|
|
||||||
SelectedBlockViewModel = blocksForView[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
ViewItemFilterBlockViewModels = blocksForView;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ExpandAllSections()
|
private void ExpandAllSections()
|
||||||
{
|
{
|
||||||
ObservableCollection<IItemFilterBlockViewModelBase> blocksForView = new ObservableCollection<IItemFilterBlockViewModelBase>();
|
|
||||||
for (int i = 0; i < ItemFilterBlockViewModels.Count; i++)
|
for (int i = 0; i < ItemFilterBlockViewModels.Count; i++)
|
||||||
{
|
{
|
||||||
blocksForView.Add(ItemFilterBlockViewModels[i]);
|
|
||||||
|
|
||||||
var block = ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel;
|
var block = ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel;
|
||||||
if (block != null && !block.IsExpanded)
|
if (block != null && !block.IsExpanded)
|
||||||
{
|
{
|
||||||
ToggleSection(block, false);
|
ToggleSection(block, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(SelectedBlockViewModel == null && blocksForView.Count > 0)
|
RaisePropertyChanged(nameof(ViewItemFilterBlockViewModels));
|
||||||
{
|
|
||||||
SelectedBlockViewModel = blocksForView[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
ViewItemFilterBlockViewModels = blocksForView;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue