You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
5.8 KiB
180 lines
5.8 KiB
/**************************************************************************************
|
|
|
|
Toolkit for WPF
|
|
|
|
Copyright (C) 2007-2016 Xceed Software Inc.
|
|
|
|
This program is provided to you under the terms of the Microsoft Public
|
|
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
|
|
|
|
For more features, controls, and fast professional support,
|
|
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
|
|
|
|
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
|
|
|
|
**************************************************************************************/
|
|
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
#if !OPEN_SOURCE
|
|
using System.Windows.Input;
|
|
using System.Windows.Media.Animation;
|
|
using System.Windows.Threading;
|
|
using Xceed.Wpf.Toolkit.MaterialControls;
|
|
#endif
|
|
namespace Xceed.Wpf.Toolkit.LiveExplorer.Samples.MaterialControls.Views
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for MaterialControlsView.xaml
|
|
/// </summary>
|
|
public partial class MaterialControlsView : MaterialDemoView
|
|
{
|
|
#if !OPEN_SOURCE
|
|
#region Members
|
|
|
|
private Storyboard _toastStoryboard = new Storyboard();
|
|
private Random _rand = new Random();
|
|
private List<MaterialToast> _toastList = new List<MaterialToast>();
|
|
|
|
#endregion
|
|
#endif
|
|
|
|
#region Constructors
|
|
|
|
public MaterialControlsView()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#if !OPEN_SOURCE
|
|
|
|
#region Private Methods
|
|
|
|
private int GetRandomInteger( int max )
|
|
{
|
|
return _rand.Next( max );
|
|
}
|
|
|
|
private void PopToast()
|
|
{
|
|
MaterialAccentEnum accent;
|
|
MaterialToastLocationEnum location;
|
|
string text;
|
|
|
|
switch( this.GetRandomInteger( 8 ) )
|
|
{
|
|
case 0: accent = MaterialAccentEnum.Blue; break;
|
|
case 1: accent = MaterialAccentEnum.LightBlue; break;
|
|
case 2: accent = MaterialAccentEnum.Cyan; break;
|
|
case 3: accent = MaterialAccentEnum.Teal; break;
|
|
case 4: accent = MaterialAccentEnum.Green; break;
|
|
case 5: accent = MaterialAccentEnum.LightGreen; break;
|
|
case 6: accent = MaterialAccentEnum.Lime; break;
|
|
default: accent = MaterialAccentEnum.Yellow; break;
|
|
}
|
|
switch( this.GetRandomInteger( 6 ) )
|
|
{
|
|
case 0: location = MaterialToastLocationEnum.Bottom; break;
|
|
case 1: location = MaterialToastLocationEnum.BottomLeft; break;
|
|
case 2: location = MaterialToastLocationEnum.BottomRight; break;
|
|
case 3: location = MaterialToastLocationEnum.Top; break;
|
|
case 4: location = MaterialToastLocationEnum.TopLeft; break;
|
|
default: location = MaterialToastLocationEnum.TopRight; break;
|
|
}
|
|
switch( this.GetRandomInteger( 6 ) )
|
|
{
|
|
case 0: text = "Warning"; break;
|
|
case 1: text = "New Appointments"; break;
|
|
case 2: text = "New Mail"; break;
|
|
case 3: text = "New Message"; break;
|
|
case 4: text = "Times Up!"; break;
|
|
default: text = "Task Completed!";break;
|
|
}
|
|
var materialToast = new MaterialToast( _toastGrid );
|
|
materialToast.MaterialAccent = accent;
|
|
materialToast.Location = location;
|
|
materialToast.Content = text;
|
|
materialToast.DisplayTime = System.TimeSpan.FromMilliseconds( 3000 );
|
|
materialToast.HideCompleted += this.MaterialToast_HideCompleted;
|
|
_toastList.Add( materialToast );
|
|
materialToast.ShowToast();
|
|
}
|
|
|
|
private void StartToastCircularProgressBar()
|
|
{
|
|
Storyboard storyboard = new Storyboard();
|
|
|
|
var valueAnim = new DoubleAnimation( 0d, 100d, System.TimeSpan.FromMilliseconds( 3000 ) );
|
|
Storyboard.SetTarget( valueAnim, _toastProgressBarCircular );
|
|
Storyboard.SetTargetProperty( valueAnim, new PropertyPath( MaterialProgressBarCircular.ValueProperty ) );
|
|
storyboard.Children.Add( valueAnim );
|
|
|
|
storyboard.Completed += this.ToastCircularPropgressBarAnimation_Completed;
|
|
storyboard.Begin( _toastProgressBarCircular );
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Event Handlers
|
|
|
|
private void MaterialProgressBar_MouseLeftButtonDown( object sender, MouseButtonEventArgs e )
|
|
{
|
|
var progressBar = sender as MaterialProgressBarBase;
|
|
if( progressBar != null )
|
|
{
|
|
var storyboard = new Storyboard();
|
|
|
|
// Animate ProgressBar
|
|
var valueAnim = new DoubleAnimation( progressBar.Minimum, progressBar.Maximum, System.TimeSpan.FromMilliseconds( 4000 ) );
|
|
Storyboard.SetTarget( valueAnim, progressBar );
|
|
Storyboard.SetTargetProperty( valueAnim, new PropertyPath( MaterialProgressBarBase.ValueProperty ) );
|
|
storyboard.Children.Add( valueAnim );
|
|
|
|
storyboard.Begin( this );
|
|
}
|
|
}
|
|
|
|
private void MaterialTabControl_SelectionChanged( object sender, SelectionChangedEventArgs e )
|
|
{
|
|
var materialTabItem = e.AddedItems[ 0 ] as MaterialTabItem;
|
|
if( (materialTabItem != null) && materialTabItem.Equals( _materialTabItem5 ) )
|
|
{
|
|
this.StartToastCircularProgressBar();
|
|
}
|
|
else
|
|
{
|
|
foreach( var toast in _toastList )
|
|
{
|
|
toast.HideToast();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void MaterialToast_HideCompleted( object sender, RoutedEventArgs e )
|
|
{
|
|
_toastList.Remove( sender as MaterialToast );
|
|
}
|
|
|
|
private void MaterialToastButton_Click( object sender, RoutedEventArgs e )
|
|
{
|
|
this.PopToast();
|
|
}
|
|
|
|
private void ToastCircularPropgressBarAnimation_Completed( object sender, EventArgs e )
|
|
{
|
|
if( _materialTabControl.SelectedItem.Equals( _materialTabItem5 ) )
|
|
{
|
|
this.PopToast();
|
|
this.StartToastCircularProgressBar();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
#endif
|
|
}
|
|
}
|
|
|