client/src/Iri.Modernisation.Controls/ViewModel/ProductionTimeLine/ProductionTimeLineVM.cs
author Matthieu Totet
Wed, 16 Dec 2009 17:14:38 +0100
changeset 24 c031f1132dde
parent 23 10acb6a11a73
child 25 a9c815025a1b
permissions -rw-r--r--
Update ProductionView
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.Net;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     3
using System.Windows;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     4
using System.Windows.Controls;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     5
using System.Windows.Documents;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     6
using System.Windows.Ink;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     7
using System.Windows.Input;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     8
using System.Windows.Media;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     9
using System.Windows.Media.Animation;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    10
using System.Windows.Shapes;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    11
using Iri.Modernisation.Data.Models;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    12
using Iri.Modernisation.BaseMVVM.Commands;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    13
using Iri.Modernisation.BaseMVVM.ViewModel;
17
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    14
using Iri.Modernisation.Controls.View;
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    15
using System.Collections.Generic;
20
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
    16
using System.Collections.ObjectModel;
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
    17
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    18
namespace Iri.Modernisation.Controls.ViewModel
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    19
{
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    20
    public class ProductionTimeLineVM : BaseMVVM.ViewModel.ViewModel
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    21
    {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    22
17
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    23
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    24
        private bool _isIndexing;
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    25
        public bool IsIndexing
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    26
        {
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    27
            get
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    28
            {
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    29
                return _isIndexing;
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    30
            }
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    31
            set
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    32
            {
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    33
                _isIndexing = value;
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    34
                OnPropertyChanged("IsIndexing");
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    35
            }
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    36
        }
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    37
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    38
        private VideoBook _newBook;
19
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    39
        private ObservableCollection<VideoSequence>[] _listVideoSequences = new ObservableCollection<VideoSequence>[4];
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    40
        public ObservableCollection<VideoSequence>[] ListVideoSequences
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    41
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    42
            get
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    43
            {
19
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    44
                return _listVideoSequences;
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    45
            }
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    46
            set
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    47
            {
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    48
                _listVideoSequences = value;
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    49
                OnPropertyChanged("ListVideoSequences");
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    50
            }
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    51
        }
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    52
        
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    53
        public ObservableCollection<VideoSequence> SelectedVideoSequences
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    54
        {
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    55
            get
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    56
            {
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    57
                
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    58
                return _listVideoSequences[SelectedChapter];
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    59
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    60
            set
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    61
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    62
                _listVideoSequences[SelectedChapter] = value;
19
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
    63
                //_newBook.Chapters[SelectedChapter].VideoSequences = value;
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    64
                OnPropertyChanged("SelectedVideoSequences");
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    65
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    66
        }
23
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    67
        public TimeSpan TotalBookDuration
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    68
        {
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    69
            get
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    70
            {
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    71
                TimeSpan temp = TimeSpan.Zero;
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    72
                foreach (ObservableCollection<VideoSequence> Ocvs in _listVideoSequences)
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    73
                {
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    74
                    foreach (VideoSequence Vs in Ocvs)
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    75
                    {
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    76
                        temp += Vs.Duration;
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    77
                    }
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    78
                }
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    79
                return temp;
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    80
            }
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
    81
        }
17
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    82
        public VideoChapter[] Chapters
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    83
        {
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    84
            get
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    85
            {
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    86
                return _newBook.Chapters;
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    87
            }
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    88
          
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    89
        
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    90
        }
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    91
        public VideoChapter SelectedBookChapter
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    92
        {
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    93
            get
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    94
            {
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    95
                return _newBook.Chapters[SelectedChapter];
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    96
            }
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    97
        }
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
    98
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
    99
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   100
        private VideoSequence _actualVideoSequence;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   101
        public VideoSequence ActualVideoSequence
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   102
        {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   103
            get
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   104
            {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   105
                return _actualVideoSequence;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   106
            }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   107
            set
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   108
            {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   109
                _actualVideoSequence = value;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   110
                OnPropertyChanged("ActualVideoSequence");
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   111
            }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   112
        }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   113
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   114
     
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   115
        public List<VideoSequence> TimeLine
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   116
        {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   117
            get
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   118
            {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   119
                List<VideoSequence> _tmp = new List<VideoSequence>();
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   120
                TimeSpan temp = TimeSpan.Zero;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   121
                foreach (ObservableCollection<VideoSequence> Ocvs in ListVideoSequences)
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   122
                {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   123
                    foreach (VideoSequence Vs in Ocvs)
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   124
                    {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   125
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   126
                        Vs.TimerIn = temp;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   127
                        _tmp.Add(Vs);
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   128
                        temp += Vs.Duration;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   129
                    
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   130
                    }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   131
                }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   132
                return _tmp;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   133
            }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   134
        }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   135
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   136
        private int _selectedChapter=0;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   137
        public int SelectedChapter
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   138
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   139
            get
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   140
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   141
                return _selectedChapter;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   142
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   143
            set
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   144
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   145
                _selectedChapter = value;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   146
                OnPropertyChanged("SelectedChapter");
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   147
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   148
        }
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   149
        private VideoViewerVM _videoViewerVM;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   150
        public VideoViewerVM ViewModelVideoViewer
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   151
        {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   152
            get
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   153
            {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   154
                return _videoViewerVM;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   155
            }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   156
            set
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   157
            {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   158
                _videoViewerVM = value;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   159
                OnPropertyChanged("ViewModelVideoViewer");
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   160
            }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   161
        }
20
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   162
23
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   163
        private double _position;
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   164
        public double Position
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   165
        {
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   166
            get
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   167
            {
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   168
                return _position;
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   169
            }
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   170
            set
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   171
            {
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   172
                _position = value;
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   173
             
23
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   174
                OnPropertyChanged("Position");
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   175
            }
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   176
        }
20
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   177
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   178
        private ObservableCollection<SegmentIndex>[] _listSegmentIndex;
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   179
        public ObservableCollection<SegmentIndex>[] ListIndex
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   180
        {
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   181
            get
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   182
            {
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   183
                return _listSegmentIndex;
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   184
            }
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   185
        }
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   186
        public ObservableCollection<SegmentIndex> SelectedIndex
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   187
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   188
            get
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   189
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   190
                return _listSegmentIndex[SelectedChapter];
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   191
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   192
            set
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   193
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   194
                _listSegmentIndex[SelectedChapter] = value;
20
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   195
                //_newBook.Chapters[SelectedChapter].Index = value;
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   196
                OnPropertyChanged("SelectedIndex");
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   197
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   198
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   199
17
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   200
        private VideoChapterType _selectedChapterType;
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   201
        public VideoChapterType SelectedChapterType
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   202
        {
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   203
            get
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   204
            {
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   205
                return _selectedChapterType;
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   206
            }
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   207
            set
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   208
            {
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   209
                _selectedChapterType = value;
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   210
                OnPropertyChanged("SelectedChapterType");
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   211
            }
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   212
        }
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   213
 
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   214
      
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   215
        public ProductionTimeLineVM()
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   216
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   217
            _newBook = new VideoBook();
19
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   218
            _listVideoSequences = new ObservableCollection<VideoSequence>[4]
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   219
            {
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   220
                new ObservableCollection<VideoSequence>(),
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   221
                new ObservableCollection<VideoSequence>(),
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   222
                new ObservableCollection<VideoSequence>(),
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   223
                new ObservableCollection<VideoSequence>()
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   224
            };
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   225
           // PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(ProductionTimeLineVM_PropertyChanged);
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   226
           // SelectedVideoSequences = new ObservableCollection<VideoSequence>();
20
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   227
            Commands.ProductionView.DelVideoSequence.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(DelVideoSequence_Executed);
17
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   228
            Commands.ProductionTimeLine.EditorPartSelected.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(EditorPartSelected_Executed);
18
66911d0f0eb6 Update ProductionView
Matthieu Totet
parents: 17
diff changeset
   229
            Commands.ProductionTimeLine.EditorPartFinished.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(EditorPartFinished_Executed);
20
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   230
            Commands.ProductionView.ClickAddIndex.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(ClickAddIndex_Executed);
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   231
            Commands.TimeChange.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(TimeChange_Executed);
19
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   232
            _listVideoSequences[0].CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(SelectedVideoSequences_CollectionChanged);
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   233
            _listVideoSequences[1].CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(SelectedVideoSequences_CollectionChanged);
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   234
            _listVideoSequences[2].CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(SelectedVideoSequences_CollectionChanged);
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   235
            _listVideoSequences[3].CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(SelectedVideoSequences_CollectionChanged);
20
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   236
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   237
            _listSegmentIndex = new ObservableCollection<SegmentIndex>[4]
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   238
            {
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   239
                new ObservableCollection<SegmentIndex>(),
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   240
                new ObservableCollection<SegmentIndex>(),
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   241
                new ObservableCollection<SegmentIndex>(),
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   242
                new ObservableCollection<SegmentIndex>()
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   243
            };
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   244
            _listSegmentIndex[0].CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(SelectedVideoSequences_CollectionChanged);
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   245
            _listSegmentIndex[1].CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(SelectedVideoSequences_CollectionChanged);
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   246
            _listSegmentIndex[2].CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(SelectedVideoSequences_CollectionChanged);
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   247
            _listSegmentIndex[3].CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(SelectedVideoSequences_CollectionChanged);
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   248
        }
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   249
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   250
        void TimeChange_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e)
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   251
        {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   252
            double newValue = ((double)e.Parameter);
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   253
            if(e.Source == this)
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   254
            {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   255
                if (ActualVideoSequence.TimerIn.TotalMilliseconds > newValue || ActualVideoSequence.TimerOut.TotalMilliseconds < newValue)
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   256
                {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   257
                    foreach (VideoSequence Vs in TimeLine)
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   258
                    {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   259
                        if (Vs.TimerIn.TotalMilliseconds <= newValue && Vs.TimerOut.TotalMilliseconds > newValue)
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   260
                        {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   261
                            ActualVideoSequence = Vs;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   262
                            ViewModelVideoViewer.GoTo(TimeSpan.FromMilliseconds(newValue) - Vs.TimerIn +Vs.BeginTrim);
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   263
                        }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   264
                    }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   265
                }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   266
                else
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   267
                {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   268
                    ViewModelVideoViewer.GoTo(TimeSpan.FromMilliseconds(newValue) - ActualVideoSequence.TimerIn);
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   269
                }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   270
                
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   271
               
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   272
            }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   273
        }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   274
20
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   275
        void ClickAddIndex_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e)
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   276
        {
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   277
            if(IsIndexing)
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   278
            {
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   279
                TimeSpan dur = TimeSpan.Zero;
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   280
                // Permet de créer un Index avec une durée calé sur les videos.
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   281
                foreach (VideoSequence Vs in SelectedVideoSequences)
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   282
                {
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   283
                    dur += Vs.Duration;
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   284
                }
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   285
                foreach (SegmentIndex Si in SelectedIndex)
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   286
                {
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   287
                    dur -= Si.Duration;
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   288
                }
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   289
                SelectedIndex.Add(new SegmentIndex(SelectedBookChapter) 
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   290
                { 
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   291
                    TimerIn = TimeSpan.Zero, 
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   292
                    TimerOut = dur,
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   293
                    Chapter = SelectedBookChapter
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   294
                });
23
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   295
20
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   296
            }
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   297
 
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   298
        }
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   299
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   300
        void DelVideoSequence_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e)
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   301
        {
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   302
            SelectedVideoSequences.Remove(((CustomableVideoElementVM)e.Parameter).VideoSequence);
23
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   303
            OnPropertyChanged("TotalBookDuration");
19
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   304
        }
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   305
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   306
        void SelectedVideoSequences_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   307
        {
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   308
            
23
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   309
            OnPropertyChanged("TotalBookDuration");
19
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   310
            Commands.ProductionView.VideoRecordUpdated.Execute();
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   311
        }
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   312
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   313
        void ProductionTimeLineVM_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   314
        {
20
c2dd8119a6c1 Update ProductionView
Matthieu Totet
parents: 19
diff changeset
   315
            //Commands.ProductionView.VideoRecordUpdated.Execute();
19
7d044e7562ea Update ProductionView
Matthieu Totet
parents: 18
diff changeset
   316
        }
17
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   317
18
66911d0f0eb6 Update ProductionView
Matthieu Totet
parents: 17
diff changeset
   318
        void EditorPartFinished_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e)
66911d0f0eb6 Update ProductionView
Matthieu Totet
parents: 17
diff changeset
   319
        {
66911d0f0eb6 Update ProductionView
Matthieu Totet
parents: 17
diff changeset
   320
            SelectedChapter = -1;
66911d0f0eb6 Update ProductionView
Matthieu Totet
parents: 17
diff changeset
   321
        }
66911d0f0eb6 Update ProductionView
Matthieu Totet
parents: 17
diff changeset
   322
17
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   323
        void EditorPartSelected_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e)
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   324
        {
18
66911d0f0eb6 Update ProductionView
Matthieu Totet
parents: 17
diff changeset
   325
           
66911d0f0eb6 Update ProductionView
Matthieu Totet
parents: 17
diff changeset
   326
            SelectedChapter = (int)((HeaderProductionEventArgs)e.Source).ChapterType;
17
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   327
            SelectedChapterType = ((HeaderProductionEventArgs)e.Source).ChapterType ;
0e4e63f6f567 Update ProductinoView and Components
Matthieu Totet
parents: 0
diff changeset
   328
            IsIndexing = ((HeaderProductionEventArgs)e.Source).IsIndexPart;
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   329
        }
23
10acb6a11a73 Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents: 20
diff changeset
   330
24
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   331
        public event EventHandler<ProductionTimeLineVMEventArgs> SwitchVideo;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   332
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   333
    }
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   334
    public class ProductionTimeLineVMEventArgs : EventArgs
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   335
    {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   336
        public VideoSequence VideoSequence{get;set;}
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   337
        public TimeSpan BeginAt{get;set;}
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   338
        public ProductionTimeLineVMEventArgs(VideoSequence videoSequence,TimeSpan beginAt)
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   339
        {
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   340
            VideoSequence = videoSequence;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   341
            BeginAt = beginAt;
c031f1132dde Update ProductionView
Matthieu Totet
parents: 23
diff changeset
   342
        }
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   343
    }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   344
}