using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Application = System.Windows.Application;
using KeyEventArgs = System.Windows.Input.KeyEventArgs;
using KeyEventHandler = System.Windows.Input.KeyEventHandler;
using OpenFileDialog = Microsoft.Win32.OpenFileDialog;
namespace Wpf_AvcTeam
{
/// <summary>
/// Logique d'interaction pour MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
/// <summary>
/// New WPF Window
///#region </summary>Medias
private Display _avc = new Display();
/// <summary>
/// Mp3 Player
/// </summary>
private MediaPlayer _raoulraoul = new MediaPlayer();
private bool _videoIsPlaying;
private bool _imageIsDisplaying;
private bool _backgroundImageIsPlayiing;
private bool _textIsDisplaying;
private bool _musicIsPlaying;
/// <summary>
/// Video Url
/// </summary>
private readonly string _videoUrl = @"D:\Cédric\Cesi\A2\Projets\DotNetA2\WPF_test_for_HoloAVC\Wpf_AvcTeam\Data\";#endregion
///#region <summary>Booleans
///private Videobool UrlvideoIsPlaying Accessors= false;
///private </summary>bool imageIsDisplaying = false;
private bool backgroundImageIsPlayiing = false;
private bool textIsDisplaying = false;
private bool musicIsPlaying = false;
#endregion
#region Url
private string _videoUrl = @"D:\Cédric\Cesi\A2\Projets\DotNetA2\WPF_test_for_HoloAVC\Wpf_AvcTeam\Data\";
public string VideoUrl => _videoUrl;
/// <summary>#endregion
///#region Constructor
///& </summary>override
public MainWindow()
{
//ICI FAIRE RECHERCHE DB
InitializeComponent();
_avc.Show();
pause_btn.IsEnabled = false;
play_btn.IsEnabled = false;
this.PreviewKeyDown += HandleEsc;new KeyEventHandler(HandleEsc);
/*textBox.PreviewKeyDown += EnterClicked;*/
}
/// <summary>
/// Closes Program if Window closed
/// </summary>
/// <param name="e"></param>
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Application.Current.Shutdown();
}
#endregion
/// <summary>
/// Button putting Text into next Window
/// </summary>
/// <param name="sender"></param>
/// <param#region name="e"></param>Buttons
private void disp_btn_Click(object sender, RoutedEventArgs e)
{
DisplayText(ref _avc);
}
/// <summary>
/// Media Opener
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void open_btn_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Video files (*.mp4;)|*.mp4|Audio files (*.mp3;*.wav;*.flac)|*.mp3;*.wav;*.flac|Image files (*.png;*.jpg;*.jpeg)|*.png;*.jpg;*.jpeg|All files (*.*)|*.*";
if (openFileDialog.ShowDialog() == true)
{
varstring fileExtentionstr = openFileDialog.FileName.Remove(0, openFileDialog.FileName.LastIndexOf(".", StringComparison.Ordinal));
switch (fileExtentionstr)
{
case ".mp3":
case ".wav":
case ".flac":
_raoulraoul.Close();
_raoulraoul.Open(new Uri(openFileDialog.FileName));
_raoulraoul.Play();
break;
case ".mp4":
PlayVideoHolo(ref _avc, openFileDialog.FileName);
break;
case ".png":
case ".jpg":
case ".jpeg":
DisplayImage(ref _avc, openFileDialog.FileName);
break;
}
}
}
/// <summary>
/// Restart Media / Play Button
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void play_btn_Click(object sender, RoutedEventArgs e)
{
if (!_musicIsPlayingmusicIsPlaying)
{
_raoulraoul.Play();
_musicIsPlayingmusicIsPlaying = true;
}
if (_backgroundImageIsPlayiingbackgroundImageIsPlayiing)
{
_avc.BackgroundMediaElement.Play();
}
else if (_videoIsPlayingvideoIsPlaying)
{
_avc.FrontDisplayElement1.Play();
_avc.FrontDisplayElement2.Play();
_avc.FrontDisplayElement3.Play();
_avc.FrontDisplayElement4.Play();
}
play_btn.IsEnabled = false;
pause_btn.IsEnabled = true;
}
/// <summary>
/// Pause Button
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pause_btn_Click(object sender, RoutedEventArgs e)
{
if (_musicIsPlayingmusicIsPlaying)
{
_raoulraoul.Pause();
_musicIsPlayingmusicIsPlaying = false;
}
if (_backgroundImageIsPlayiingbackgroundImageIsPlayiing)
{
_avc.BackgroundMediaElement.Pause();
}
else if (_videoIsPlayingvideoIsPlaying)
{
_avc.FrontDisplayElement1.Pause();
_avc.FrontDisplayElement2.Pause();
_avc.FrontDisplayElement3.Pause();
_avc.FrontDisplayElement4.Pause();
}
pause_btn.IsEnabled = false;
play_btn.IsEnabled = true;
}
#endregion
/// <summary>
/// Displays Preconfigured Background Video
/// </summary>
/// <param name="sender"></param>
#region ///ListBox <paramof name="e"></param>videos
private void ironMan_listBx_Selected(object sender, RoutedEventArgs e)
{
if (_imageIsDisplayingimageIsDisplaying)
{
HideImages(ref _avc);
}
if (_textIsDisplayingtextIsDisplaying)
{
HideText(ref _avc);
}
if (_videoIsPlayingvideoIsPlaying)
{
HideVideoHolo(ref _avc);
}
PlayVideo(ref _avc.BackgroundMediaElement, @"iron_man.mp4");
_backgroundImageIsPlayiingbackgroundImageIsPlayiing = true;
}
/// <summary>
/// Displays Preconfigured Background Video
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void linkShield_listBx_Selected(object sender, RoutedEventArgs e)
{
if (_imageIsDisplayingimageIsDisplaying)
{
HideImages(ref _avc);
}
if (_textIsDisplayingtextIsDisplaying)
{
HideText(ref _avc);
}
if (_videoIsPlayingvideoIsPlaying)
{
HideVideoHolo(ref _avc);
}
PlayVideo(ref _avc.BackgroundMediaElement, @"link_shield.mp4");
_backgroundImageIsPlayiingbackgroundImageIsPlayiing = true;
}
/// <summary>
/// Displays Preconfigured Background Video
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void daftPunk_listBx_Selected(object sender, RoutedEventArgs e)
{
if (_imageIsDisplayingimageIsDisplaying)
{
HideImages(ref _avc);
}
if (_textIsDisplayingtextIsDisplaying)
{
HideText(ref _avc);
}
if (_videoIsPlayingvideoIsPlaying)
{
HideVideoHolo(ref _avc);
}
PlayVideo(ref _avc.BackgroundMediaElement, @"playmobil_daftpunk.mp4");
_backgroundImageIsPlayiingbackgroundImageIsPlayiing = true;
}
/// <summary>
/// Displays Preconfigured Background Video
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void anonymous_listBx_Selected(object sender, RoutedEventArgs e)
{
if (_imageIsDisplayingimageIsDisplaying)
{
HideImages(ref _avc);
}
if (_textIsDisplayingtextIsDisplaying)
{
HideText(ref _avc);
}
if (_videoIsPlayingvideoIsPlaying)
{
HideVideoHolo(ref _avc);
}
PlayVideo(ref _avc.BackgroundMediaElement, @"anonymous_mask.mp4");
_backgroundImageIsPlayiingbackgroundImageIsPlayiing = true;
}
#endregion
/// <summary>
/// Tetris Theme
/// </summary>
/// <param name="sender"></param>
#region ///ListBox <paramof name="e"></param>music
private void tetris_listBx_Selected(object sender, RoutedEventArgs e)
{
PlaySound(_raoulref raoul, @"tetris.mp3");
}
/// <summary>
/// We are Number One - Lazy Town
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void wano__listBx_Selected(object sender, RoutedEventArgs e)
{
PlaySound(_raoulref raoul, @"wano.mp3");
}
/// <summary>
/// Ultimate - Denzel Curry
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ultimate_listBx_Selected(object sender, RoutedEventArgs e)
{
PlaySound(_raoulref raoul, @"ultimate.mp3");
}
/// <summary>
/// CsGo theme Song
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void csGo_listBx_Selected(object sender, RoutedEventArgs e)
{
PlaySound(_raoulref raoul, @"csgo.mp3");
}
/// <summary>#endregion
/// Sets Medialement Url
/// </summary>
/// <param name="a"></param>
#region Videos, Text ///and <paramSound name="url"></param>Player
private void PlayVideo(ref MediaElement a, string url)
{
var path = System.IO.Path.Combine(VideoUrl + url);
a.Source = new Uri(path);
a.Play();
a.MediaEnded += BackgroundMediaElement_MediaEnded;new RoutedEventHandler(me_MediaEnded);
pause_btn.IsEnabled = true;
}
/// <summary>
/// Load & Start front Videos
/// </summary>
/// <param name="display"></param>
/// <param name="url"></param>
private void PlayVideoHolo(ref Display displayx, string urla)
{
if (_imageIsDisplayingimageIsDisplaying)
{
HideImages(displayref x);
}
if (_textIsDisplayingtextIsDisplaying)
{
HideText(displayref x);
}
if (_backgroundImageIsPlayiingbackgroundImageIsPlayiing)
{
HideBackgroundVideoHideVideo(displayref x);
}
if (displayx.FrontDisplayElement4.Visibility == Visibility.Hidden)
{
displayx.FrontDisplayElement1.Visibility =
displayx.FrontDisplayElement2.Visibility =
displayx.FrontDisplayElement3.Visibility = displayx.FrontDisplayElement4.Visibility = Visibility.Visible;
}
displayx.FrontDisplayElement1.Source = displayx.FrontDisplayElement2.Source = displayx.FrontDisplayElement3.Source = displayx.FrontDisplayElement4.Source = new Uri(urla);
displayx.FrontDisplayElement1.Play();
displayx.FrontDisplayElement2.Play();
displayx.FrontDisplayElement3.Play();
displayx.FrontDisplayElement4.Play();
_videoIsPlayingvideoIsPlaying = true;
displayx.FrontDisplayElement1.MediaEnded += video_MediaEnded;new RoutedEventHandler(vid_MediaEnded);
pause_btn.IsEnabled = true;
}
/// <summary>
/// Load & Start Music
/// </summary>
/// <param name="b"></param>
/// <param name="url"></param>
private void PlaySound(ref MediaPlayer b, string url)
{
var path = System.IO.Path.Combine(VideoUrl + url);
b.Open(new Uri(path));
b.Play();
b.MediaEnded += sound_MediaEnded;new EventHandler(sound_MediaEnded);
_musicIsPlayingmusicIsPlaying = true;
pause_btn.IsEnabled = true;
}
/// <summary>
/// Displays Text
/// </summary>
/// <param name="display"></param>
private void DisplayText(ref Display displayt)
{
HideVideoHolo(displayref t);
HideImages(displayref t);
displayt.textBlock1.Text = displayt.textBlock2.Text = displayt.textBlock3.Text = displayt.textBlock4.Text = textBox.Text;
_textIsDisplayingtextIsDisplaying = true;
}
/// <summary>
/// Displays Images
/// </summary>
/// <param name="display"></param>
/// <param name="url"></param>
private void DisplayImage(ref Display displayy, string urlx)
{
if (_videoIsPlayingvideoIsPlaying)
{
HideVideoHolo(displayref y);
}
if (displayy.image.Visibility == Visibility.Hidden)
{
displayy.image.Visibility = displayy.image1.Visibility = displayy.image2.Visibility = displayy.image3.Visibility = Visibility.Visible;
_imageIsDisplayingimageIsDisplaying = false;
}
displayy.image.Source = displayy.image1.Source = displayy.image2.Source = displayy.image3.Source = new BitmapImage(new Uri(urlx));
_imageIsDisplayingimageIsDisplaying = true;
}
/// <summary>
/// Removes Text
/// </summary>
/// <param name="display"></param>
private void HideText(ref Display displayt)
{
displayt.textBlock1.Text = displayt.textBlock2.Text = displayt.textBlock3.Text = displayt.textBlock4.Text = null;
_textIsDisplayingtextIsDisplaying = false;
}
/// <summary>
/// Remove pictures
/// </summary>
/// <param name="display"></param>
private void HideImages(ref Display displayf)
{
displayf.image.Visibility = displayf.image1.Visibility = displayf.image2.Visibility = displayf.image3.Visibility = Visibility.Hidden;
_imageIsDisplayingimageIsDisplaying = false;
}
/// <summary>
/// Removes front videos
/// </summary>
/// <param name="display"></param>
private void HideVideoHolo(ref Display displayf)
{
displayf.FrontDisplayElement1.Visibility =
displayf.FrontDisplayElement2.Visibility =
displayf.FrontDisplayElement3.Visibility = displayf.FrontDisplayElement4.Visibility = Visibility.Hidden;
displayf.FrontDisplayElement1.Close();
displayf.FrontDisplayElement2.Close();
displayf.FrontDisplayElement3.Close();
displayf.FrontDisplayElement4.Close();
_videoIsPlayingvideoIsPlaying = false;
}
/// <summary>
/// Removes background video
/// </summary>
/// <param name="display"></param>
private void HideBackgroundVideoHideVideo(ref Display displayf)
{
displayf.BackgroundMediaElement.Close();
_backgroundImageIsPlayiingbackgroundImageIsPlayiing = false;
}
/// <summary>
/// Loop background video if ended
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BackgroundMediaElement_MediaEndedme_MediaEnded(object sender, EventArgs e)
{
//play video again
_avc.BackgroundMediaElement.Position = TimeSpan.FromMilliseconds(1);
_avc.BackgroundMediaElement.Play();
}
/// <summary>
/// Loop front videos if ended
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void video_MediaEndedvid_MediaEnded(object sender, EventArgs e)
{
//play video again
_avc.FrontDisplayElement1.Position = _avc.FrontDisplayElement2.Position = _avc.FrontDisplayElement3.Position = _avc.FrontDisplayElement4.Position = TimeSpan.FromMilliseconds(1);
_avc.FrontDisplayElement1.Play();
_avc.FrontDisplayElement2.Play();
_avc.FrontDisplayElement3.Play();
_avc.FrontDisplayElement4.Play();
}
/// <summary>
/// Loop music if ended
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void sound_MediaEnded(object sender, EventArgs e)
{
//play video again
_raoulraoul.Position = TimeSpan.FromMilliseconds(1);
_raoulraoul.Play();
_musicIsPlayingmusicIsPlaying = true;
}
#endregion
/// <summary>
/// Use echap key to exit program
/// </summary>
/// <param name="sender"></param>
/// <param#region name="e"></param>Keyhandler
private void HandleEsc(object sender, KeyEventArgs e)
{
if (e.Key == Key.Escape)
Close();
}
#endregion
}
}
}