client/src/Iri.Modernisation.Controls/View/BookTimeLine/BookTimeLine.xaml.cs
author totetm <>
Thu, 11 Feb 2010 17:29:23 +0100
changeset 42 594fdedecf7f
parent 41 b51a10574e7f
child 45 de06fa7242ae
permissions -rw-r--r--
Fixed| bouton close sur BookTimeLine Fixed| loading blocker sur les éléments du corpus vidéolivre (book a charger) Fixed| afficher l'état sur on load et loader sur les éléments du corpus vidéolivre ("book a charger") Fixed| bug du title sur book timline Fixed| Actualisation de l'affichage des annotations sur seek de la timline sans play Fixed| Seek possible quand play Fixed| Bug sur le placement tetris ? Fixed| texte par default sur les champs d'annotations
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     1
using System;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     2
using System.Windows.Data;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     3
using System.Collections.Generic;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     4
using System.Linq;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     5
using System.Net;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     6
using System.Windows;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     7
using System.Windows.Controls;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     8
using System.Windows.Documents;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     9
using System.Windows.Input;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    10
using System.Windows.Media;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    11
using System.Windows.Media.Animation;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    12
using System.Windows.Shapes;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    13
using Iri.Modernisation.Data.Models;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    14
using Iri.Modernisation.Controls.ViewModel;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    15
using Iri.Modernisation.BaseMVVM.Commands;
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    16
using System.IO;
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    17
namespace Iri.Modernisation.Controls.View
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    18
{
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    19
    public partial class BookTimeLine : UserControl
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    20
    {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    21
        public BookTimeLine()
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    22
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    23
            InitializeComponent();
42
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    24
          
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    25
            
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    26
            TimeStripsPanel.SizeChanged += new SizeChangedEventHandler(TimeStripsPanel_SizeChanged);
42
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    27
            
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    28
            BookTimeLineSlider.MouseLeftButtonUp += new MouseButtonEventHandler(BookTimeLineSlider_MouseLeftButtonUp);
41
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
    29
            //saveAnnotationsButton.Click += new RoutedEventHandler(saveAnnotationsButton_Click);
42
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    30
        
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    31
            Commands.AnnotationMaker.NewAnnotationFinished.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(NewAnnotationFinished_Executed);
42
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    32
            BookTimeLineSlider.ThumbDragStarted += new EventHandler<EventArgs>(TimeSlider_ThumbDragStarted);
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    33
            BookTimeLineSlider.ThumbDragCompleted += new EventHandler<EventArgs>(TimeSlider_ThumbDragCompleted);
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    34
           
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    35
           
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    36
        }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    37
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    38
        void saveAnnotationsButton_Click(object sender, RoutedEventArgs e)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    39
        {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    40
            SaveFileDialog mySaveDialog = new SaveFileDialog();
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    41
            mySaveDialog.Filter = "Ldt File (.ldt)|*.ldt|All Files|*.*";
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    42
            bool? ret = mySaveDialog.ShowDialog();
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    43
            if (ret == true)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    44
            {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    45
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    46
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    47
                VideoBookUploader.UpdateAnnotation(((BookTimeLineVM)DataContext).SelectedBook, new StreamWriter(mySaveDialog.OpenFile()));
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    48
               
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    49
            }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    50
    
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    51
        }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    52
        private bool _saveVideoViewerState { get; set; }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    53
        private void TimeSlider_ThumbDragCompleted(object sender, EventArgs e)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    54
        {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    55
            if (_saveVideoViewerState)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    56
            {
42
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    57
              
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    58
                ((BookTimeLineVM)DataContext).ViewModelVideoViewer.Play();
42
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    59
               
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    60
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    61
            }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    62
        }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    63
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    64
        private void TimeSlider_ThumbDragStarted(object sender, EventArgs e)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    65
        {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    66
            _saveVideoViewerState = ((BookTimeLineVM)DataContext).ViewModelVideoViewer.IsPLayed;
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    67
            ((BookTimeLineVM)DataContext).ViewModelVideoViewer.Pause();
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    68
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    69
        }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    70
        private void NewAnnotationFinished_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    71
        {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    72
            Draw();
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    73
        }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    74
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    75
        private void BookTimeLineSlider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    76
        {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    77
            Commands.TimeChange.Execute(BookTimeLineSlider.Value,DataContext);
42
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    78
            
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
    79
            
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    80
        }
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    81
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    82
        private void TimeStripsPanel_SizeChanged(object sender, SizeChangedEventArgs e)
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    83
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    84
            Draw();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    85
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    86
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    87
       
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    88
        public void Draw()
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    89
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    90
            BookTimeLineVM VM = (BookTimeLineVM)DataContext;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    91
            BookTimeLineElementPanel.Children.Clear();
18
66911d0f0eb6 Update ProductionView
Matthieu Totet
parents: 7
diff changeset
    92
            BookTimeLineAnnotationPanel.Children.Clear();
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    93
            foreach (List<SegmentIndex> LIndex in VM.SegmentIndex)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    94
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    95
                foreach (SegmentIndex Index in LIndex)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    96
                {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    97
                   
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    98
                    PolemicElementControl pol = new PolemicElementControl();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    99
                    pol.SetValue(Canvas.ZIndexProperty, 10);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   100
                    pol.DataContext = new PolemicElementVM(Index);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   101
                    BookTimeLineElementPanel.Children.Add(pol);
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   102
                    double timeleft = (double)((Index.TimerIn.TotalMilliseconds  / BookTimeLineVM.ratioPixMs) * ScaleTimeLine.Value);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   103
                    Canvas.SetLeft(pol,timeleft);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   104
                    pol.Width = (Index.Duration.TotalMilliseconds / BookTimeLineVM.ratioPixMs) * ScaleTimeLine.Value;
41
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   105
                    pol.MouseLeftButtonUp += new MouseButtonEventHandler(Element_MouseLeftButtonUp);
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   106
                }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   107
            }
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   108
            int basi = 0;
42
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
   109
           
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   110
            foreach (List<Annotation> LAnnotation in VM.Annotations)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   111
            {
42
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
   112
                LAnnotation.Sort((a, b) => TimeSpan.Compare( b.Duration,a.Duration));
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   113
                foreach (Annotation Annotation in LAnnotation)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   114
                {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   115
                    PolemicElementControl pol = new PolemicElementControl();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   116
                    pol.SetValue(Canvas.ZIndexProperty, 10);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   117
                    pol.DataContext = new PolemicElementVM(Annotation);
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   118
                    
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   119
                    Canvas.SetLeft(pol, (Annotation.TimerIn.TotalMilliseconds / BookTimeLineVM.ratioPixMs)* ScaleTimeLine.Value);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   120
                   
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   121
                    /** It's TETRIS time **/
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   122
                    foreach (PolemicElementControl lockedControl in BookTimeLineAnnotationPanel.Children)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   123
                    {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   124
                        if (
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   125
                            ((PolemicElementVM)pol.DataContext).TimerIn >= ((PolemicElementVM)lockedControl.DataContext).TimerIn && ((PolemicElementVM)pol.DataContext).TimerIn <= ((PolemicElementVM)lockedControl.DataContext).TimerOut
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   126
                            || ((PolemicElementVM)pol.DataContext).TimerOut >= ((PolemicElementVM)lockedControl.DataContext).TimerIn && ((PolemicElementVM)pol.DataContext).TimerOut <= ((PolemicElementVM)lockedControl.DataContext).TimerOut
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   127
                           
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   128
                           )
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   129
                        {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   130
                            int actualTop = (int)Canvas.GetTop(lockedControl);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   131
                            if (basi <= actualTop)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   132
                           {
42
594fdedecf7f Fixed| bouton close sur BookTimeLine
totetm <>
parents: 41
diff changeset
   133
                                basi += 12;
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   134
                           }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   135
                            
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   136
                        }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   137
                    }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   138
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   139
                    Canvas.SetTop(pol, basi);
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   140
                  /***********************/
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   141
                    
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   142
                    
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   143
                 //   pol.Width = (Annotation.Duration.TotalMilliseconds * ScaleTimeLine.Value) / VM.TotalDuration;
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   144
                    pol.Width = (Annotation.Duration.TotalMilliseconds / BookTimeLineVM.ratioPixMs)* ScaleTimeLine.Value;
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   145
                    BookTimeLineAnnotationPanel.Children.Add(pol);
41
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   146
                    pol.MouseLeftButtonUp += new MouseButtonEventHandler(Element_MouseLeftButtonUp);
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   147
                    basi = 0;
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   148
                }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   149
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   150
            BookTimeLineElementPanel.UpdateLayout();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   151
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   152
41
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   153
        void Element_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   154
        {
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   155
            PolemicElementVM VMPolemicElement = ((PolemicElementVM)((PolemicElementControl)sender).DataContext);
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   156
           
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   157
                Commands.BookTimeLine.LeftClickOnElement.Execute(VMPolemicElement.TimerIn, VMPolemicElement);
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   158
               
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   159
            
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   160
        }
b51a10574e7f LeftClick on an element in BookTimeLine set time at begining of the element.
totetm <>
parents: 38
diff changeset
   161
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   162
       
7
de7ba61f66c7 Add element to personal chutier
Matthieu Totet
parents: 0
diff changeset
   163
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   164
        
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   165
        
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   166
        
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   167
       
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   168
    }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   169
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   170
}