Beispiel #1
0
        private bool TryMerge(PopOperation op1, PopOperation op2, out PopOperation res)
        {
            if (op1 is FragmentPopOperation <TViewModel> fragmentPopOperation)
            {
                if (op2 is FragmentPopOperation <TViewModel> fragmentPopOperation2)
                {
                    if (fragmentPopOperation.HostStack == fragmentPopOperation2.HostStack)
                    {
                        fragmentPopOperation.FragmentStacksToPop.AddRange(fragmentPopOperation2.FragmentStacksToPop);
                        res = fragmentPopOperation;
                        return(true);
                    }
                }
                else if (op2 is ActivityPopOperation <TViewModel> finishActivityPopOperation)
                {
                    if (fragmentPopOperation.HostStack == finishActivityPopOperation.ActivityStack)
                    {
                        // avoid popping fragment if activity will be stopped anyway
                        res = finishActivityPopOperation;
                        return(true);
                    }
                }
            }

            res = null;
            return(false);
        }
        private bool TryMerge(PopOperation op1, PopOperation op2, out PopOperation res)
        {
            if (op1 is NavigationControllerPopOperation nav1 && op2 is NavigationControllerPopOperation nav2)
            {
                if (nav1.HostStack == nav2.HostStack)
                {
                    res = new NavigationControllerPopOperation(nav1.HostStack, nav1.CountToPop + nav2.CountToPop);
                    return(true);
                }
            }

            res = null;
            return(false);
        }
        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);
        }
Beispiel #4
0
        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);
        }