public override PopOperation AsSpecificPopOperation(int count) { var result = new FragmentPopOperation <TViewModel>(this); for (int i = 0, index = FragmentStack.Count - 1; i < count; ++i, index--) { switch (FragmentStack[index]) { case DialogFragmentInnerStack <TViewModel> dialogFragmentInnerStack: result.FragmentStacksToPop.Add(dialogFragmentInnerStack); break; case FragmentInnerStack <TViewModel> fragmentInnerStack: result.FragmentStacksToPop.Add(fragmentInnerStack); break; default: throw new InvalidOperationException("Specific pop operation on unsupported child type"); } } FragmentStack.RemoveRange(FragmentStack.Count - count, count); return(result); }
public override PopOperation AsSpecificPopOperation(InnerStack <TViewModel> child) { if (child is FragmentInnerStack <TViewModel> fragmentInnerStack) { FragmentStack.RemoveAt(FragmentStack.Count - 1); return(new FragmentPopOperation <TViewModel>(this) { FragmentStacksToPop = { fragmentInnerStack } }); } throw new InvalidOperationException("Specific pop operation on unsupported child type"); }
public override PopOperation AsPopOperation() { FragmentStack.Clear(); //TODO: do we really want to finish the activity if it's the last one of the app ? return(new ActivityPopOperation <TViewModel>(this)); }