public void ToggleChildrenVisibility(DeckInformation parent, IAnkiDecksView decksView) { var children = GetChildren(parent); parent.IsShowChildren = !parent.IsShowChildren; foreach (var deck in children.Desks) { if (parent.IsShowChildren) { if (Collection.Deck.IsParent(parent.Name, deck.Name)) { deck.Visibility = Visibility.Visible; } } else { deck.Visibility = Visibility.Collapsed; deck.IsShowChildren = false; } var item = decksView.GetItemView(deck); if (item != null) { item.Visibility = deck.Visibility; } } }
public void UnFoldAllChildrenDecks(IAnkiDecksView decksView) { foreach (var parent in Decks) { if (!parent.IsParent) { continue; } var children = GetChildren(parent); parent.IsShowChildren = true; foreach (var deck in children.Desks) { if (!Collection.Deck.IsParent(parent.Name, deck.Name)) { continue; } deck.Visibility = Visibility.Visible; deck.IsShowChildren = true; var item = decksView.GetItemView(deck); if (item != null) { item.Visibility = Visibility.Visible; } } } }
public void ShowAllDecks(IAnkiDecksView decksView) { foreach (var deck in Decks) { deck.Visibility = Visibility.Visible; deck.IsShowChildren = true; var item = decksView.GetItemView(deck); if (item != null) { item.Visibility = deck.Visibility; } } }
public void DragAnDrop(DeckInformation parent, DeckInformation child, IAnkiDecksView deckView) { var oldName = child.Name; var oldParent = child.ParentName; var childrenOfChild = GetChildren(child); if (Collection.Deck.IsParent(parent.Name, child.Name)) { RemoveFromSubDeck(child); //Remove from children if child deck is dragged on parent deck } else { CreateSubDeck(parent, child); } //Children name of child must be updated later UpdateDeckName(child, false); //If name does not change no need to update anything if (oldName.Equals(child.Name, StringComparison.OrdinalIgnoreCase)) { return; } //Remove children of child first to avoid sorting errors RemoveChildrenFromDecks(childrenOfChild); if (Collection.Deck.IsParent(parent.Name, child.Name)) { parent.IsParent = true; if (!parent.IsShowChildren) { ToggleChildrenVisibility(parent, deckView); } SortIntoSubdeck(parent, child); } else { ResortNonSubdeck(child); } SetInShowChildrenState(child); UpdateChildrenPositionAndName(child, childrenOfChild); UpdateOldParent(oldParent); UpdateCardCountAllDecks(); Collection.SaveAndCommitAsync(); }
private void SwitchToListView() { MainPage.UserPrefs.IsDeckListView = true; if (deckGridView != null) { deckGridView.Visibility = Visibility.Collapsed; deckGridView.DataContext = null; } if (deckListView == null) { this.FindName("deckListView"); decksView = deckListView as IAnkiDecksView; HookDeckItemEvent(); } decksView = deckListView; decksView.DataContext = deckListViewModel.Decks; mainPage.ListViewButton.Visibility = Visibility.Collapsed; mainPage.GridViewButton.Visibility = Visibility.Visible; deckListViewModel.ShowAllDecks(decksView); deckListView.Visibility = Visibility.Visible; }