Improve UI performance
This commit is contained in:
parent
4c76dc9bab
commit
1eaf0b6fe5
|
@ -82,7 +82,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);
|
void ToggleSection(IItemFilterCommentBlockViewModel targetCommentBlockViewModelBase, bool updateViewModels = true);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class ItemFilterScriptViewModel : PaneViewModel, IItemFilterScriptViewModel
|
internal class ItemFilterScriptViewModel : PaneViewModel, IItemFilterScriptViewModel
|
||||||
|
@ -1293,23 +1293,48 @@ namespace Filtration.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ToggleSection(IItemFilterCommentBlockViewModel targetCommentBlockViewModelBase)
|
public void ToggleSection(IItemFilterCommentBlockViewModel targetCommentBlockViewModelBase, bool updateViewModels = true)
|
||||||
{
|
{
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateBlockModelsForView();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateBlockModelsForView()
|
private void UpdateBlockModelsForView()
|
||||||
|
@ -1343,26 +1368,49 @@ namespace Filtration.ViewModels
|
||||||
|
|
||||||
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 && block.IsExpanded)
|
if (block != null)
|
||||||
{
|
{
|
||||||
ToggleSection(block);
|
blocksForView.Add(block);
|
||||||
|
|
||||||
|
if(block.IsExpanded)
|
||||||
|
{
|
||||||
|
ToggleSection(block, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (SelectedBlockViewModel == null && blocksForView.Count > 0)
|
||||||
|
{
|
||||||
|
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);
|
ToggleSection(block, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(SelectedBlockViewModel == null && blocksForView.Count > 0)
|
||||||
|
{
|
||||||
|
SelectedBlockViewModel = blocksForView[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
ViewItemFilterBlockViewModels = blocksForView;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue