src/FingersDance.Control.ListVideo/UserControlListVideo.xaml.cs
author PAMPHILE Jonathan <pamphile@efrei.fr>
Wed, 23 Sep 2009 16:47:42 +0200
changeset 84 067f4a6c0cca
parent 77 e95e916eb018
child 95 07972aa3f2e0
permissions -rw-r--r--
ListVideo
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
     1
using System;
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
     2
using System.IO;
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
     3
using System.Net;
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
     4
using System.Windows;
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
     5
using System.Windows.Controls;
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
     6
using System.Windows.Data;
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
     7
using System.Windows.Media;
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
     8
using System.Windows.Media.Animation;
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
     9
using System.Windows.Navigation;
84
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    10
using Microsoft.Surface;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    11
using Microsoft.Surface.Presentation;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    12
using Microsoft.Surface.Presentation.Controls;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    13
using System.Collections.Generic;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    14
using System.Windows.Media.Imaging;
72
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    15
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    16
namespace FingersDance.Control.ListVideo
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    17
{
84
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    18
    public partial class UserControlListVideo
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    19
    {
77
e95e916eb018 Travail sur le Pivot et le control Session Input
sarias
parents: 72
diff changeset
    20
        //Creation d'un Event pour Chaque Item Video
72
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    21
        public event EventHandler EH_ItemVideo1_ContactDown;
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    22
        public event EventHandler EH_ItemVideo2_ContactDown;
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    23
84
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    24
        List<string> _Videos = new List<string>();
72
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    25
84
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    26
        public UserControlListVideo()
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    27
        {
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    28
            this.InitializeComponent();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    29
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    30
            // Insert code required on object creation below this point.
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    31
        }
72
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    32
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    33
        private void ItemVideo1_ContactDown(object sender, Microsoft.Surface.Presentation.ContactEventArgs e)
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    34
        {
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    35
            if (EH_ItemVideo1_ContactDown != null)
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    36
                EH_ItemVideo1_ContactDown(this, new EventArgs());
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    37
        }
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    38
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    39
        private void ItemVideo2_ContactDown(object sender, Microsoft.Surface.Presentation.ContactEventArgs e)
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    40
        {
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    41
            if (EH_ItemVideo2_ContactDown != null)
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    42
                EH_ItemVideo2_ContactDown(this, new EventArgs());
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    43
        }
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    44
77
e95e916eb018 Travail sur le Pivot et le control Session Input
sarias
parents: 72
diff changeset
    45
        //Event appelé lors de la selection d'un Item dans la Video List
72
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    46
        private void ItemVideo1_ContactTapGesture(object sender, Microsoft.Surface.Presentation.ContactEventArgs e)
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    47
        {
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    48
            if (EH_ItemVideo1_ContactDown != null)
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    49
                EH_ItemVideo1_ContactDown(this, new EventArgs());
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
    50
        }
84
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    51
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    52
        private void ButtonImporter_ContactDown(object sender, Microsoft.Surface.Presentation.ContactEventArgs e)
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    53
        {
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    54
            AddVideoToList();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    55
        }
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    56
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    57
        private void ButtonImporter_Click(object sender, System.Windows.RoutedEventArgs e)
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    58
        {
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    59
            AddVideoToList();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    60
        }
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    61
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    62
        private void AddVideoToList()
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    63
        {
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    64
            try
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    65
            {
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    66
                string[] Files = new string[1];
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    67
                if (System.IO.Directory.Exists(PathImporter.Text))
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    68
                    Files = System.IO.Directory.GetFiles(PathImporter.Text);
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    69
                else
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    70
                    if (System.IO.File.Exists(PathImporter.Text))
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    71
                        Files[0] = PathImporter.Text;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    72
                if (Files != null)
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    73
                    foreach (string elt in Files)
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    74
                        if (elt.ToLower().EndsWith(".wmv")) // .....
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    75
                            try
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    76
                            {
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    77
                                Image item = getFirstPreview(elt);
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    78
                                if (item != null)
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    79
                                {
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    80
                                    SurfaceListBoxItem Contener = new SurfaceListBoxItem();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    81
                                    Contener.Content = item;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    82
                                    Contener.ContactHoldGesture += new ContactEventHandler(Contener_ContactHoldGesture);
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    83
                                    stackPanel.Children.Add(Contener);
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    84
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    85
                                    _Videos.Add(elt);
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    86
                                }
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    87
                            }
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    88
                            catch (Exception ex) { }
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    89
            }
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    90
            catch (Exception) { }
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    91
        }
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    92
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    93
        void Contener_ContactHoldGesture(object sender, ContactEventArgs e)
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    94
        {
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    95
            SurfaceContextMenu Menu = new SurfaceContextMenu();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    96
            Menu.Items.Add("Supprimer");
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    97
            ((SurfaceListBoxItem)sender).ContextMenu = Menu;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    98
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
    99
        }
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   100
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   101
        Image getFirstPreview(string path)
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   102
        {
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   103
            MediaPlayer _player = new MediaPlayer();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   104
            _player.Open(new Uri(path));
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   105
            _player.Play();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   106
            _player.Position = new TimeSpan(0, 0, 5);
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   107
            System.Threading.Thread.Sleep(800);
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   108
            RenderTargetBitmap target = new RenderTargetBitmap(100, 100, 1 / 100, 1 / 100, PixelFormats.Pbgra32);
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   109
            DrawingVisual visual = new DrawingVisual();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   110
            DrawingContext context = visual.RenderOpen();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   111
            Rect frameRect = new Rect();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   112
            frameRect.Height = target.Height;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   113
            frameRect.Width = target.Width;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   114
            context.DrawVideo(_player, frameRect);
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   115
            context.Close();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   116
            target.Render(visual);
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   117
            Image _prev = new Image();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   118
            _prev.Source = BitmapFrame.Create(target).GetAsFrozen() as BitmapFrame;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   119
            _player.Stop();
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   120
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   121
            return _prev;
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   122
        }
067f4a6c0cca ListVideo
PAMPHILE Jonathan <pamphile@efrei.fr>
parents: 77
diff changeset
   123
    }
72
f1ca0958c992 Travail sur le control List Video et comunication entre ListVideo et FingersDance
sarias
parents:
diff changeset
   124
}