client/src/Iri.Modernisation.Controls/View/BookTimeLine/BookTimeLine.xaml.cs
author totetm <>
Thu, 04 Feb 2010 16:38:04 +0100
changeset 38 bd33267300aa
parent 24 c031f1132dde
child 41 b51a10574e7f
permissions -rw-r--r--
- FranceCulture Project - Ldt and Iri Parse Method - Bug MenuableUserControl
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();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    24
       
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    25
            TimeStripsPanel.SizeChanged += new SizeChangedEventHandler(TimeStripsPanel_SizeChanged);
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    26
            BookTimeLineSlider.ThumbDragStarted += new EventHandler<EventArgs>(TimeSlider_ThumbDragCompleted);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    27
            BookTimeLineSlider.ThumbDragCompleted += new EventHandler<EventArgs>(TimeSlider_ThumbDragCompleted);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    28
            BookTimeLineSlider.MouseLeftButtonUp += new MouseButtonEventHandler(BookTimeLineSlider_MouseLeftButtonUp);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    29
            saveAnnotationsButton.Click += new RoutedEventHandler(saveAnnotationsButton_Click);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    30
            Commands.AnnotationMaker.NewAnnotationFinished.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(NewAnnotationFinished_Executed);
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    31
        }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    32
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    33
        void saveAnnotationsButton_Click(object sender, RoutedEventArgs e)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    34
        {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    35
            SaveFileDialog mySaveDialog = new SaveFileDialog();
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    36
            mySaveDialog.Filter = "Ldt File (.ldt)|*.ldt|All Files|*.*";
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    37
            bool? ret = mySaveDialog.ShowDialog();
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    38
            if (ret == true)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    39
            {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    40
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    41
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    42
                VideoBookUploader.UpdateAnnotation(((BookTimeLineVM)DataContext).SelectedBook, new StreamWriter(mySaveDialog.OpenFile()));
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    43
               
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
        private bool _saveVideoViewerState { get; set; }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    48
        private void TimeSlider_ThumbDragCompleted(object sender, EventArgs e)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    49
        {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    50
            if (_saveVideoViewerState)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    51
            {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    52
                ((BookTimeLineVM)DataContext).ViewModelVideoViewer.Play();
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    53
            }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    54
        }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    55
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    56
        private void TimeSlider_ThumbDragStarted(object sender, EventArgs e)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    57
        {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    58
            _saveVideoViewerState = ((BookTimeLineVM)DataContext).ViewModelVideoViewer.IsPLayed;
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    59
            ((BookTimeLineVM)DataContext).ViewModelVideoViewer.Pause();
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    60
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    61
        }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    62
        private void NewAnnotationFinished_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    63
        {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    64
            Draw();
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    65
        }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    66
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    67
        private void BookTimeLineSlider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    68
        {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    69
            Commands.TimeChange.Execute(BookTimeLineSlider.Value,DataContext);
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    70
        }
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    71
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    72
        private void TimeStripsPanel_SizeChanged(object sender, SizeChangedEventArgs e)
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    73
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    74
            Draw();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    75
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    76
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    77
       
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    78
        public void Draw()
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    79
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    80
            BookTimeLineVM VM = (BookTimeLineVM)DataContext;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    81
            BookTimeLineElementPanel.Children.Clear();
18
66911d0f0eb6 Update ProductionView
Matthieu Totet
parents: 7
diff changeset
    82
            BookTimeLineAnnotationPanel.Children.Clear();
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    83
            foreach (List<SegmentIndex> LIndex in VM.SegmentIndex)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    84
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    85
                foreach (SegmentIndex Index in LIndex)
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
                    PolemicElementControl pol = new PolemicElementControl();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    89
                    pol.SetValue(Canvas.ZIndexProperty, 10);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    90
                    pol.DataContext = new PolemicElementVM(Index);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    91
                    BookTimeLineElementPanel.Children.Add(pol);
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    92
                    double timeleft = (double)((Index.TimerIn.TotalMilliseconds  / BookTimeLineVM.ratioPixMs) * ScaleTimeLine.Value);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    93
                    Canvas.SetLeft(pol,timeleft);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    94
                    pol.Width = (Index.Duration.TotalMilliseconds / BookTimeLineVM.ratioPixMs) * ScaleTimeLine.Value;
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    95
                }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    96
            }
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
    97
            int basi = 0;
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    98
            foreach (List<Annotation> LAnnotation in VM.Annotations)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    99
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   100
                foreach (Annotation Annotation in LAnnotation)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   101
                {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   102
                    PolemicElementControl pol = new PolemicElementControl();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   103
                    pol.SetValue(Canvas.ZIndexProperty, 10);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   104
                    pol.DataContext = new PolemicElementVM(Annotation);
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   105
                    
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   106
                    Canvas.SetLeft(pol, (Annotation.TimerIn.TotalMilliseconds / BookTimeLineVM.ratioPixMs)* ScaleTimeLine.Value);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   107
                   
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   108
                    /** It's TETRIS time **/
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   109
                    foreach (PolemicElementControl lockedControl in BookTimeLineAnnotationPanel.Children)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   110
                    {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   111
                        if (
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   112
                            ((PolemicElementVM)pol.DataContext).TimerIn >= ((PolemicElementVM)lockedControl.DataContext).TimerIn && ((PolemicElementVM)pol.DataContext).TimerIn <= ((PolemicElementVM)lockedControl.DataContext).TimerOut
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   113
                            || ((PolemicElementVM)pol.DataContext).TimerOut >= ((PolemicElementVM)lockedControl.DataContext).TimerIn && ((PolemicElementVM)pol.DataContext).TimerOut <= ((PolemicElementVM)lockedControl.DataContext).TimerOut
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   114
                           
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   115
                           )
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   116
                        {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   117
                            int actualTop = (int)Canvas.GetTop(lockedControl);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   118
                            if (basi <= actualTop)
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   119
                           {
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   120
                                basi += 10;
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   121
                           }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   122
                            
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   123
                        }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   124
                    }
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   125
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   126
                    Canvas.SetTop(pol, basi);
38
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
                 //   pol.Width = (Annotation.Duration.TotalMilliseconds * ScaleTimeLine.Value) / VM.TotalDuration;
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   131
                    pol.Width = (Annotation.Duration.TotalMilliseconds / BookTimeLineVM.ratioPixMs)* ScaleTimeLine.Value;
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   132
                    BookTimeLineAnnotationPanel.Children.Add(pol);
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   133
                    basi = 0;
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   134
                }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   135
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   136
            BookTimeLineElementPanel.UpdateLayout();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   137
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   138
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 24
diff changeset
   139
       
7
de7ba61f66c7 Add element to personal chutier
Matthieu Totet
parents: 0
diff changeset
   140
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   141
        
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   142
        
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   143
        
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   144
       
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   145
    }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   146
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   147
}