private bool TryMerge(PushOperation op1, PushOperation op2, out PushOperation res) { if (op1 is ActivityPushOperation <TViewModel> startActivityPushOperation) { if (op2 is FragmentPushOperation <TViewModel> showFragmentPushOperation) { if (startActivityPushOperation.ActivityStack == showFragmentPushOperation.HostStack) { //merge show fragment in start activity startActivityPushOperation.FragmentStacksToPush.AddRange(showFragmentPushOperation.FragmentStacksToPush); res = startActivityPushOperation; return(true); } } } else if (op1 is FragmentPushOperation <TViewModel> showFragmentPushOperation1 && op2 is FragmentPushOperation <TViewModel> showFragmentPushOperation2) { if (showFragmentPushOperation1.HostStack == showFragmentPushOperation2.HostStack) { showFragmentPushOperation1.FragmentStacksToPush.AddRange(showFragmentPushOperation2.FragmentStacksToPush); res = showFragmentPushOperation1; return(true); } } res = null; return(false); }
public void PushMoney(Account accnt, decimal deltaMoney) { CheckAccess(OperationsTypes.PushMoney); var pushOp = new PushOperation(accnt, CurrentEmployee, deltaMoney); pushOp.Apply(); OperationsHistory.Add(pushOp); }
private bool TryMerge(PopOperation popOp, PushOperation pushOp, out MergedPopPushOperation res) { if (popOp is NavigationControllerPopOperation navigationControllerPopOperation && pushOp is NavigationControllerPushOperation navigationControllerPushOperation) { if (navigationControllerPopOperation.HostStack == navigationControllerPushOperation.HostStack) { res = new MergedPopPushNavigationControllerOperation(navigationControllerPopOperation, navigationControllerPushOperation); return(true); } } res = null; return(false); }
private bool TryMerge(PushOperation op1, PushOperation op2, out PushOperation res) { if (op1 is NavigationControllerPushOperation nav1 && op2 is NavigationControllerPushOperation nav2) { if (nav1.HostStack == nav2.HostStack) { NavigationControllerPushOperation result = new NavigationControllerPushOperation(nav1.HostStack); result.Controllers.AddRange(nav1.Controllers); result.Controllers.AddRange(nav2.Controllers); res = result; return(true); } } res = null; return(false); }
private bool TryMerge(PopOperation popOp, PushOperation pushOp, out MergedPopPushOperation res) { if (popOp is FragmentPopOperation <TViewModel> fragmentPopOperation && pushOp is FragmentPushOperation <TViewModel> fragmentPushOperation) { if (fragmentPopOperation.HostStack == fragmentPushOperation.HostStack) { res = new MergedFragmentPopPushOperation <TViewModel>(fragmentPopOperation.HostStack, fragmentPopOperation.FragmentStacksToPop, fragmentPushOperation.FragmentStacksToPush); return(true); } } if (popOp is ActivityPopOperation <TViewModel> activityPopOperation && pushOp is ActivityPushOperation <TViewModel> activityPushOperation) { res = new MergedActivityPopPushOperation <TViewModel>(activityPopOperation, activityPushOperation); return(true); } res = null; return(false); }