void radioListGropus_GroupViewClosing(object sender, GroupViewClosingEventArgs e) { e.Cancel = true; SwivelTransition transition = new SwivelTransition(); ItemContainerGenerator itemContainerGenerator = e.ItemsControl.ItemContainerGenerator; int animationFinished = 0; int itemCount = e.ItemsControl.Items.Count; for (int i = 0; i < itemCount; i++) { UIElement element = itemContainerGenerator.ContainerFromIndex(i) as UIElement; ITransition animation = transition.GetTransition(element); animation.Completed += delegate { // close the group view when all animations have completed if ((++animationFinished) == itemCount) { radioListGropus.CloseGroupView(); radioListGropus.ScrollToGroup(e.SelectedGroup); } }; animation.Begin(); } }
/// <summary> /// Called when the visual layout changes. /// </summary> /// <param name="sender">The event sender.</param> /// <param name="e">The event information.</param> private void CustomMessageBox_LayoutUpdated(object sender, EventArgs e) { SwivelTransition backwardIn = new SwivelTransition { Mode = SwivelTransitionMode.BackwardIn }; ITransition swivelTransition = backwardIn.GetTransition(this); swivelTransition.Completed += (s1, e1) => swivelTransition.Stop(); swivelTransition.Begin(); LayoutUpdated -= CustomMessageBox_LayoutUpdated; }
/// <summary> /// Dismisses the message box. /// </summary> /// <param name="source"> /// The source that caused the dismission. /// </param> /// <param name="useTransition"> /// If true, the message box is dismissed after swiveling /// backward and out. /// </param> private void Dismiss(CustomMessageBoxResult source, bool useTransition) { // Ensure only a single Dismiss is being handled at a time if (_isBeingDismissed) { return; } _isBeingDismissed = true; // Handle the dismissing event. var handlerDismissing = Dismissing; if (handlerDismissing != null) { DismissingEventArgs args = new DismissingEventArgs(source); handlerDismissing(this, args); if (args.Cancel) { _isBeingDismissed = false; return; } } // Set the current instance to null. _currentInstance = null; // Cache this variable to avoid a race condition. bool restoreOriginalValues = _mustRestore; // Close popup. if (useTransition) { SwivelTransition backwardOut = new SwivelTransition { Mode = SwivelTransitionMode.BackwardOut }; ITransition swivelTransition = backwardOut.GetTransition(this); swivelTransition.Completed += (s, e) => { swivelTransition.Stop(); ClosePopup(restoreOriginalValues, source); }; swivelTransition.Begin(); } else { ClosePopup(restoreOriginalValues, source); } _isBeingDismissed = false; }
/// <summary> /// Dismisses the message box. /// </summary> /// <param name="source"> /// The source that caused the dismission. /// </param> /// <param name="useTransition"> /// If true, the message box is dismissed after swiveling /// backward and out. /// </param> private void Dismiss(CustomMessageBoxResult source, bool useTransition) { // Handle the dismissing event. var handlerDismissing = Dismissing; if (handlerDismissing != null) { DismissingEventArgs args = new DismissingEventArgs(source); handlerDismissing(this, args); if (args.Cancel) { return; } } // Handle the dismissed event. var handlerDismissed = Dismissed; if (handlerDismissed != null) { DismissedEventArgs args = new DismissedEventArgs(source); handlerDismissed(this, args); } // Set the current instance to null. _currentInstance = null; // Cache this variable to avoid a race condition. bool restoreOriginalValues = _mustRestore; // Close popup. if (useTransition) { SwivelTransition backwardOut = new SwivelTransition { Mode = SwivelTransitionMode.BackwardOut }; ITransition swivelTransition = backwardOut.GetTransition(this); swivelTransition.Completed += (s, e) => { swivelTransition.Stop(); ClosePopup(restoreOriginalValues); }; Deployment.Current.Dispatcher.BeginInvoke(swivelTransition.Begin); } else { ClosePopup(restoreOriginalValues); } }
/** * Applies transition to the current content and calls the given delegate in a specific moment * (before/after animation) in order to distingues between transition applied on the current * "page/screen" or the next. * * @param aDelegate a delegate invoked in different moments, depending on the transition type. * The delegate must be responsible for switching screens/context/adding children widgets. * @param transitionType a transition type. */ public static void doScreenTransition(Delegate_SwitchContentDelegate aDelegate, int transitionType) { if (null != aDelegate) { TransitionElement transition = null; bool doTransitionOnCurrentScreen = false; switch (transitionType) { case MoSync.Constants.MAW_TRANSITION_TYPE_SLIDE_RIGHT: transition = new SlideTransition(); (transition as SlideTransition).Mode = SlideTransitionMode.SlideRightFadeIn; break; case MoSync.Constants.MAW_TRANSITION_TYPE_SLIDE_LEFT: transition = new SlideTransition(); (transition as SlideTransition).Mode = SlideTransitionMode.SlideLeftFadeIn; break; case MoSync.Constants.MAW_TRANSITION_TYPE_SWIVEL_IN: transition = new SwivelTransition(); (transition as SwivelTransition).Mode = SwivelTransitionMode.FullScreenIn; break; case MoSync.Constants.MAW_TRANSITION_TYPE_SWIVEL_OUT: transition = new SwivelTransition(); (transition as SwivelTransition).Mode = SwivelTransitionMode.FullScreenOut; doTransitionOnCurrentScreen = true; break; case MoSync.Constants.MAW_TRANSITION_TYPE_TURNSTILE_FOREWARD: transition = new TurnstileTransition(); (transition as TurnstileTransition).Mode = TurnstileTransitionMode.ForwardOut; doTransitionOnCurrentScreen = true; break; case MoSync.Constants.MAW_TRANSITION_TYPE_TURNSTILE_BACKWARD: transition = new TurnstileTransition(); (transition as TurnstileTransition).Mode = TurnstileTransitionMode.BackwardIn; break; case MoSync.Constants.MAW_TRANSITION_TYPE_NONE: default: aDelegate(); return; } PhoneApplicationPage page = (PhoneApplicationPage)((PhoneApplicationFrame)Application.Current.RootVisual).Content; ITransition transInterf = transition.GetTransition(page); transInterf.Completed += delegate { transInterf.Stop(); if (doTransitionOnCurrentScreen) { aDelegate(); } }; transInterf.Begin(); if (!doTransitionOnCurrentScreen) { aDelegate(); } } }
/** * Applies transition to the current content and calls the given delegate in a specific moment * (before/after animation) in order to distingues between transition applied on the current * "page/screen" or the next. * * @param aDelegate a delegate invoked in different moments, depending on the transition type. * The delegate must be responsible for switching screens/context/adding children widgets. * @param transitionType a transition type. */ static public void doScreenTransition(Delegate_SwitchContentDelegate aDelegate, int transitionType) { if (null != aDelegate) { TransitionElement transition = null; bool doTransitionOnCurrentScreen = false; switch (transitionType) { case MoSync.Constants.MAW_TRANSITION_TYPE_SLIDE_RIGHT: transition = new SlideTransition(); (transition as SlideTransition).Mode = SlideTransitionMode.SlideRightFadeIn; break; case MoSync.Constants.MAW_TRANSITION_TYPE_SLIDE_LEFT: transition = new SlideTransition(); (transition as SlideTransition).Mode = SlideTransitionMode.SlideLeftFadeIn; break; case MoSync.Constants.MAW_TRANSITION_TYPE_SWIVEL_IN: transition = new SwivelTransition(); (transition as SwivelTransition).Mode = SwivelTransitionMode.FullScreenIn; break; case MoSync.Constants.MAW_TRANSITION_TYPE_SWIVEL_OUT: transition = new SwivelTransition(); (transition as SwivelTransition).Mode = SwivelTransitionMode.FullScreenOut; doTransitionOnCurrentScreen = true; break; case MoSync.Constants.MAW_TRANSITION_TYPE_TURNSTILE_FOREWARD: transition = new TurnstileTransition(); (transition as TurnstileTransition).Mode = TurnstileTransitionMode.ForwardOut; doTransitionOnCurrentScreen = true; break; case MoSync.Constants.MAW_TRANSITION_TYPE_TURNSTILE_BACKWARD: transition = new TurnstileTransition(); (transition as TurnstileTransition).Mode = TurnstileTransitionMode.BackwardIn; break; case MoSync.Constants.MAW_TRANSITION_TYPE_NONE: default: aDelegate(); return; } PhoneApplicationPage page = (PhoneApplicationPage)((PhoneApplicationFrame)Application.Current.RootVisual).Content; ITransition transInterf = transition.GetTransition(page); transInterf.Completed += delegate { transInterf.Stop(); if (doTransitionOnCurrentScreen) { aDelegate(); } }; transInterf.Begin(); if (!doTransitionOnCurrentScreen) { aDelegate(); } } }
private static TransitionElement ResolveForwardWaveTransition(NodeTransition transitionType) { TransitionElement res = null; switch (transitionType) { case NodeTransition.SlideFromRight: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideLeftFadeIn; res = slt; break; } case NodeTransition.SlideFromLeft: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideRightFadeIn; res = slt; break; } case NodeTransition.SlideOverFromRight: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideLeftFadeIn; res = slt; break; } case NodeTransition.SlideOffToRight: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideRightFadeOut; res = slt; break; } case NodeTransition.SpringOn: { SwivelTransition swt = new SwivelTransition(); swt.Mode = SwivelTransitionMode.ForwardIn; res = swt; break; } case NodeTransition.SpringOff: { SwivelTransition swt = new SwivelTransition(); swt.Mode = SwivelTransitionMode.BackwardOut; res = swt; break; } case NodeTransition.SlideFromTop: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideDownFadeIn; res = slt; break; } case NodeTransition.SlideFromBottom: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideUpFadeIn; res = slt; break; } case NodeTransition.SlideOverFromLeft: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideRightFadeIn; res = slt; break; } case NodeTransition.SlideOverFromTop: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideDownFadeIn; res = slt; break; } case NodeTransition.SlideOverFromBottom: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideUpFadeIn; res = slt; break; } case NodeTransition.SlideOffToLeft: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideLeftFadeOut; res = slt; break; } case NodeTransition.SlideOffToTop: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideUpFadeOut; res = slt; break; } case NodeTransition.SlideOffToBottom: { SlideTransition slt = new SlideTransition(); slt.Mode = SlideTransitionMode.SlideDownFadeOut; res = slt; break; } } return(res); }