/// <summary> /// Called when [validation finished handler]. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> void OnValidationFinishedHandler(object sender, EventArgs e) { ChannelSetupControl control = sender as ChannelSetupControl; if (control.IsValidated) { if (control.InviteFriends) { // Send out viral var message = Messages.Next(); var config = control.ChannelConfiguration; var status = new UserStatus { Status = message, StatusType = StatusTypes.MyUpdate, SortDate = DateTime.Now, DateCreated = DateTime.Now, TargetChannelId = config.ChannelId.ToString() }; new BackgroundActionTask(delegate { var channel = ChannelsManager.GetChannelObject(config.ChannelId); ChannelContext.Current.ClientContext = new ChannelClientContext(ClientState.Current.Context, config); channel.StatusUpdatesChannel.UpdateMyStatus(status.DuckCopy <ChannelStatusUpdate>()); }).ExecuteAsync(); } var firstItem = (FrameworkElement)transitionContainer.Items[0]; var secondItem = (FrameworkElement)transitionContainer.Items[1]; TimeSpan duration = new TimeSpan(0, 0, 0); transitionContainer.RestDuration = new Duration(duration); transitionContainer.ApplyTransition(firstItem, secondItem); } OnPropertyChanged("HasConfiguredChannels"); }
/// <summary> /// Edits the channel. /// </summary> /// <param name="configuration">The configuration.</param> void EditChannel(ChannelConfiguration configuration) { if (configuration != null) { ChannelSetupControlPanel.Children.Clear(); // Setup Control ChannelSetupControl setupControl = new ChannelSetupControl(configuration.Clone()); setupControl.IsInEditModus = true; setupControl.Username = configuration.InputChannel.Authentication.Username; setupControl.HorizontalAlignment = HorizontalAlignment.Center; setupControl.VerticalAlignment = VerticalAlignment.Center; setupControl.OnValidationFinished += OnValidationFinishedHandler; setupControl.OnCancel += OnCancelHandler; setupControl.RenderTransform = new TranslateTransform(0, 0); ChannelSetupControlPanel.Children.Add(setupControl); // Play Animation var firstItem = (FrameworkElement)transitionContainer.Items[0]; var secondItem = (FrameworkElement)transitionContainer.Items[1]; FlipTransition transition = Resources["FlipTransition"] as FlipTransition; transition.Rotation = Direction.RightToLeft; transitionContainer.Transition = transition; transitionContainer.TransitionCompleted -= OnTransitionCompleted; transitionContainer.ApplyTransition(firstItem, secondItem); OnPropertyChanged("AllChannelConfigurations"); OnPropertyChanged("ChannelConfiguration"); } }
/// <summary> /// Handles the Click event of the ChannelAddWrapPannel control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Windows.RoutedEventArgs"/> instance containing the event data.</param> void ChannelAddWrapPannel_Click(object sender, RoutedEventArgs e) { if (ChannelSetupControlPanel.Children.Count == 0) { ChannelAddControl channelAddControl = e.Source as ChannelAddControl; // Setup Control ChannelSetupControl setupControl = new ChannelSetupControl(channelAddControl.ChannelConfiguration.Clone()); setupControl.IsInEditModus = false; setupControl.HorizontalAlignment = HorizontalAlignment.Center; setupControl.VerticalAlignment = VerticalAlignment.Center; setupControl.OnValidationFinished += OnValidationFinishedHandler; setupControl.OnCancel += OnCancelHandler; setupControl.RenderTransform = new TranslateTransform(0, 0); ChannelSetupControlPanel.Children.Add(setupControl); // Play Animation var firstItem = (FrameworkElement)transitionContainer.Items[0]; var secondItem = (FrameworkElement)transitionContainer.Items[1]; FlipTransition transition = Resources["FlipTransition"] as FlipTransition; transition.Rotation = Direction.RightToLeft; transitionContainer.Transition = transition; transitionContainer.TransitionCompleted -= OnTransitionCompleted; transitionContainer.ApplyTransition(firstItem, secondItem); } OnPropertyChanged("AllChannelConfigurations"); OnPropertyChanged("ChannelConfiguration"); e.Handled = true; }
/// <summary> /// Called when [channel add animation complete]. /// </summary> /// <param name="channelAddControl">The channel add control.</param> private void OnChannelAddAnimationComplete(ChannelAddControl channelAddControl) { if (transitionContainer.Items.Count == 0) { // Set Canvas Top if (channelAddControl.ChannelConfiguration.DisplayStyle == DisplayStyle.Other) { Canvas.SetTop(ChannelSetupStackPanel, 0); } else { Canvas.SetTop(ChannelSetupStackPanel, 110); } // Tranisition Settings transitionContainer.Opacity = 0; // Setup Control ChannelSetupControl setupControl = new ChannelSetupControl(channelAddControl.ChannelConfiguration.Clone()); setupControl.IsInEditModus = false; setupControl.OnValidationFinished += OnValidationFinishedHandler; setupControl.OnCancel += OnCancelHandler; setupControl.RenderTransform = new TranslateTransform(0, 0); setupControl.OnFormLayoutUpdated += delegate { // Set Canvas Top if (setupControl.ChannelConfiguration.DisplayStyle == DisplayStyle.Other || setupControl.IsManuallyCustomized) { Canvas.SetTop(ChannelSetupStackPanel, 0); } else { Canvas.SetTop(ChannelSetupStackPanel, 110); } }; transitionContainer.Items.Add(setupControl); // Empty Control Control emptyControl = new Control(); emptyControl.HorizontalAlignment = HorizontalAlignment.Stretch; emptyControl.VerticalAlignment = VerticalAlignment.Bottom; emptyControl.RenderTransform = new TranslateTransform(0, 0); transitionContainer.Items.Add(emptyControl); // NOTE: This is a workaround to get the focus // correctly on the SetupControl. This way the command binding // on the CheckCredentials button is triggerd correctly. emptyControl.Focus(); setupControl.Focus(); // Animate Opacity Tween PennerDoubleAnimation.Equations equation = PennerDoubleAnimation.Equations.QuintEaseOut; int durationMS = 750; Animator.AnimatePenner(transitionContainer, OpacityProperty, equation, transitionContainer.Opacity, 1, durationMS, delegate { }); } OnPropertyChanged("HasConfiguredChannels"); }