| author | totetm <> |
| Mon, 25 Jan 2010 09:30:22 +0100 | |
| changeset 35 | 43bb1b8ed555 |
| parent 34 | 4d9ebc6fbbe8 |
| child 36 | b6df6fce6e5d |
| permissions | -rw-r--r-- |
| 16 | 1 |
using System; |
2 |
using System.Net; |
|
3 |
using System.Windows; |
|
4 |
using System.Windows.Controls; |
|
5 |
using System.Windows.Documents; |
|
6 |
using System.Windows.Ink; |
|
7 |
using System.Windows.Input; |
|
8 |
using System.Windows.Media; |
|
9 |
using System.Windows.Media.Animation; |
|
10 |
using System.Windows.Shapes; |
|
11 |
using Iri.Modernisation.BaseMVVM.Commands; |
|
12 |
using Iri.Modernisation.BaseMVVM.ViewModel; |
|
| 18 | 13 |
using Iri.Modernisation.Controls.View; |
| 19 | 14 |
using Iri.Modernisation.Data.Models; |
15 |
using System.Collections.ObjectModel; |
|
16 |
using System.Collections.Generic; |
|
| 35 | 17 |
using Iri.Modernisation.Data.LDTClass; |
| 16 | 18 |
namespace Iri.Modernisation.Controls.ViewModel |
19 |
{ |
|
| 25 | 20 |
/// <summary> |
21 |
/// ViewModel de ProductionView |
|
22 |
/// </summary> |
|
| 16 | 23 |
public class ProductionViewVM : BaseMVVM.ViewModel.ViewModel |
24 |
{ |
|
| 19 | 25 |
|
26 |
private VideoSequence _selectedVideoSequence; |
|
| 25 | 27 |
/// <summary> |
28 |
/// VideoSequence Sélectionnée dans la liste |
|
29 |
/// </summary> |
|
| 19 | 30 |
public VideoSequence SelectedVideoSequence |
31 |
{ |
|
32 |
get |
|
33 |
{ |
|
34 |
return _selectedVideoSequence; |
|
35 |
} |
|
36 |
set |
|
37 |
{ |
|
38 |
_selectedVideoSequence = value; |
|
| 22 | 39 |
ViewModelProductionEditor = new ProductionEditorVM(value); |
| 19 | 40 |
OnPropertyChanged("SelectedVideoSequence"); |
41 |
|
|
42 |
} |
|
43 |
} |
|
44 |
||
45 |
private ObservableCollection<VideoSequence> _recordedVideoSequences; |
|
| 25 | 46 |
/// <summary> |
47 |
/// Liste des VideoSéquences Enregistrées |
|
48 |
/// </summary> |
|
| 19 | 49 |
public ObservableCollection<VideoSequence> RecordedVideoSequences |
50 |
{ |
|
51 |
get |
|
52 |
{ |
|
53 |
return _recordedVideoSequences; |
|
54 |
} |
|
55 |
set |
|
56 |
{ |
|
57 |
_recordedVideoSequences = value; |
|
58 |
OnPropertyChanged("RecordedVideoSequences"); |
|
59 |
} |
|
60 |
} |
|
61 |
||
62 |
||
| 16 | 63 |
private HeaderProductionVM _headerProductionVM; |
| 25 | 64 |
/// <summary> |
65 |
/// ViewModel de HeaderProduction |
|
66 |
/// </summary> |
|
| 16 | 67 |
public HeaderProductionVM ViewModelHeaderProduction |
68 |
{ |
|
69 |
get |
|
70 |
{ |
|
71 |
return _headerProductionVM; |
|
72 |
} |
|
73 |
set |
|
74 |
{ |
|
75 |
_headerProductionVM = value; |
|
76 |
OnPropertyChanged("ViewModelHeaderProduction"); |
|
77 |
} |
|
78 |
} |
|
| 25 | 79 |
|
| 16 | 80 |
private ProductionTimeLineVM _productionTimeLineVM; |
| 25 | 81 |
/// <summary> |
82 |
/// ViewModel de ProductionTimeLine |
|
83 |
/// </summary> |
|
| 16 | 84 |
public ProductionTimeLineVM ViewModelProductionTimeLine |
85 |
{ |
|
86 |
get |
|
87 |
{ |
|
88 |
return _productionTimeLineVM; |
|
89 |
} |
|
90 |
set |
|
91 |
{ |
|
92 |
_productionTimeLineVM = value; |
|
93 |
OnPropertyChanged("ViewModelProductionTimeLine"); |
|
94 |
} |
|
95 |
} |
|
| 21 | 96 |
|
97 |
private ProductionEditorVM _productionEditorVM; |
|
| 25 | 98 |
/// <summary> |
99 |
/// ViewModel du ProductionEditor |
|
100 |
/// </summary> |
|
| 21 | 101 |
public ProductionEditorVM ViewModelProductionEditor |
102 |
{ |
|
103 |
get |
|
104 |
{ |
|
105 |
return _productionEditorVM; |
|
106 |
} |
|
107 |
set |
|
108 |
{ |
|
109 |
_productionEditorVM = value; |
|
110 |
OnPropertyChanged("ViewModelProductionEditor"); |
|
111 |
} |
|
112 |
} |
|
|
23
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
113 |
|
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
114 |
private VideoViewerVM _masterVideoViewerVM; |
| 25 | 115 |
/// <summary> |
116 |
/// ViewModel du Master |
|
117 |
/// </summary> |
|
|
23
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
118 |
public VideoViewerVM ViewModelMasterVideoViewer |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
119 |
{ |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
120 |
get |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
121 |
{ |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
122 |
return _masterVideoViewerVM; |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
123 |
} |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
124 |
set |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
125 |
{ |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
126 |
_masterVideoViewerVM = value; |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
127 |
OnPropertyChanged("ViewModelMasterVideoViewer"); |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
128 |
} |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
129 |
} |
| 35 | 130 |
|
131 |
||
| 25 | 132 |
private void InitializeCommands() |
133 |
{ |
|
134 |
Commands.ProductionView.ClickAddSelectedRecord.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(ClickAddSelectedRecord_Executed); |
|
135 |
ViewModelProductionTimeLine.SwitchVideo += new EventHandler<ProductionTimeLineVMEventArgs>(ViewModelProductionTimeLine_SwitchVideo); |
|
136 |
ViewModelMasterVideoViewer.Tick += new EventHandler<VideoViewerVMEventArgs>(ViewModelMasterVideoViewer_Tick); |
|
| 30 | 137 |
ViewModelHeaderProduction.Change += new EventHandler<HeaderProductionVMArgs>(ViewModelHeaderProduction_Change); |
| 35 | 138 |
Commands.HeaderProduction.PublishClick.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(PublishClick_Executed); |
139 |
|
|
| 25 | 140 |
} |
| 16 | 141 |
public ProductionViewVM() |
142 |
{ |
|
| 19 | 143 |
RecordedVideoSequences = new ObservableCollection<VideoSequence>(); |
| 16 | 144 |
ViewModelHeaderProduction = new HeaderProductionVM(); |
145 |
ViewModelProductionTimeLine = new ProductionTimeLineVM(); |
|
| 21 | 146 |
ViewModelProductionEditor = new ProductionEditorVM(); |
|
23
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
147 |
ViewModelMasterVideoViewer = new VideoViewerVM(true, false); |
| 35 | 148 |
|
| 24 | 149 |
ViewModelProductionTimeLine.ViewModelVideoViewer = ViewModelMasterVideoViewer; |
| 19 | 150 |
Random rndNumbers = new Random(); |
| 25 | 151 |
_recordedVideoSequences.Add(new VideoSequence() |
152 |
{ |
|
153 |
Path = Application.Current.Host.Source.Host.ToString() + "/test.wmv", |
|
154 |
RunTime = new TimeSpan(0, rndNumbers.Next(10, 60), 0), |
|
155 |
BeginTrim = new TimeSpan(0, 0, 0), |
|
156 |
EndTrim = new TimeSpan(0, 0, 0), |
|
157 |
}); |
|
| 34 | 158 |
|
| 19 | 159 |
|
160 |
_recordedVideoSequences.Add(new VideoSequence() |
|
161 |
{ |
|
| 35 | 162 |
Path = "/video.mp4", |
| 19 | 163 |
RunTime = new TimeSpan(0, rndNumbers.Next(10, 60), 0), |
164 |
BeginTrim = new TimeSpan(0, 0, 0), |
|
165 |
EndTrim = new TimeSpan(0, 0, 0), |
|
166 |
}); |
|
| 34 | 167 |
|
| 30 | 168 |
|
| 25 | 169 |
InitializeCommands(); |
| 27 | 170 |
OnPropertyChanged(String.Empty); |
| 26 | 171 |
|
| 16 | 172 |
} |
| 35 | 173 |
void PublishClick_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e) |
174 |
{ |
|
175 |
IRIFile newFile = new IRIFile(); |
|
176 |
IRIDecoupage decoupage = new IRIDecoupage() |
|
177 |
{ |
|
178 |
Author = "this author", |
|
179 |
Id = "Index" |
|
| 18 | 180 |
|
| 35 | 181 |
}; |
182 |
foreach (ObservableCollection<SegmentIndex> Ocsi in this.ViewModelProductionTimeLine.ListIndex) |
|
183 |
{ |
|
184 |
foreach (SegmentIndex si in Ocsi) |
|
185 |
{ |
|
186 |
IRIElement temp = new IRIElement() |
|
187 |
{ |
|
188 |
|
|
189 |
Chapter = si.Chapter.IdChap, |
|
190 |
Begin = si.TimerIn, |
|
191 |
Dur = si.Duration, |
|
192 |
Title = si.Description, |
|
193 |
Abstract = si.Description, |
|
194 |
Tags = si.Tags |
|
195 |
}; |
|
196 |
decoupage.Elements.Add(temp); |
|
197 |
} |
|
198 |
||
199 |
} |
|
200 |
IRIMedia videoMedia = new IRIMedia() { Id = "video" }; |
|
201 |
||
202 |
||
203 |
foreach (VideoSequence vs in this.ViewModelProductionTimeLine.TimeLine) |
|
204 |
{ |
|
205 |
videoMedia.Videos.Add(new IRIVideo() |
|
206 |
{ |
|
207 |
Begin = vs.TimerIn, |
|
208 |
Dur = vs.Duration, |
|
209 |
Src = vs.Path, |
|
210 |
||
211 |
} |
|
212 |
); |
|
213 |
} |
|
214 |
IRIEnsemble ensemble = new IRIEnsemble() |
|
215 |
{ |
|
216 |
Id = "VideoBookIndex" |
|
217 |
}; |
|
218 |
ensemble.Decoupages.Add(decoupage); |
|
219 |
newFile.Body.Ensembles.Add(ensemble); |
|
220 |
newFile.Body.Medias.Add(videoMedia); |
|
221 |
||
222 |
MessageBox.Show(newFile.ToString()); |
|
223 |
} |
|
| 27 | 224 |
void ViewModelHeaderProduction_Change(object sender, HeaderProductionVMArgs e) |
225 |
{ |
|
| 35 | 226 |
if (e.ChapterHeader.Indexing == false && e.ChapterHeader.Editing == true) |
227 |
{ |
|
228 |
ViewModelProductionTimeLine.IsIndexing = true; |
|
229 |
} |
|
230 |
else |
|
231 |
{ |
|
232 |
ViewModelProductionTimeLine.IsIndexing = false; |
|
233 |
} |
|
| 27 | 234 |
ViewModelProductionTimeLine.SelectedChapter = e.ChapterHeader.ChapterDescription.Id ; |
235 |
} |
|
236 |
||
| 25 | 237 |
private void ViewModelProductionTimeLine_SwitchVideo(object sender, ProductionTimeLineVMEventArgs e) |
| 24 | 238 |
{ |
239 |
ViewModelMasterVideoViewer.Source = (e.VideoSequence.Path); |
|
240 |
ViewModelMasterVideoViewer.GoTo(e.BeginAt); |
|
241 |
} |
|
242 |
||
| 25 | 243 |
private void ViewModelMasterVideoViewer_Tick(object sender, VideoViewerVMEventArgs e) |
|
23
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
244 |
{ |
| 24 | 245 |
double newPos = ViewModelProductionTimeLine.ActualVideoSequence.TimerIn.TotalMilliseconds+e.Position.TotalMilliseconds; |
246 |
if (ViewModelProductionTimeLine.ActualVideoSequence.TimerOut.TotalMilliseconds <= newPos) |
|
247 |
{ |
|
248 |
ViewModelProductionTimeLine.ActualVideoSequence = ViewModelProductionTimeLine.TimeLine[ViewModelProductionTimeLine.TimeLine.IndexOf(ViewModelProductionTimeLine.ActualVideoSequence) + 1]; |
|
249 |
ViewModelMasterVideoViewer.Source = ViewModelProductionTimeLine.ActualVideoSequence.Path; |
|
| 25 | 250 |
ViewModelMasterVideoViewer.GoTo(ViewModelProductionTimeLine.ActualVideoSequence.BeginTrim); |
| 24 | 251 |
} |
252 |
ViewModelProductionTimeLine.Position = newPos; |
|
|
23
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
253 |
} |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
254 |
|
| 25 | 255 |
private void ClickAddSelectedRecord_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e) |
| 19 | 256 |
{ |
| 30 | 257 |
if (ViewModelHeaderProduction.SelectedChapter != null && ViewModelHeaderProduction.SelectedChapter.IsActive) |
| 20 | 258 |
{ |
259 |
if (!ViewModelProductionTimeLine.IsIndexing) |
|
260 |
{ |
|
| 24 | 261 |
if (SelectedVideoSequence != null) |
262 |
{ |
|
263 |
ViewModelMasterVideoViewer.Source = SelectedVideoSequence.Path; |
|
264 |
||
265 |
VideoSequence newVideo = new VideoSequence(SelectedVideoSequence); |
|
266 |
ViewModelProductionTimeLine.ActualVideoSequence = newVideo; |
|
267 |
ViewModelProductionTimeLine.SelectedVideoSequences.Add(newVideo); |
|
268 |
ViewModelProductionTimeLine.Position = ViewModelProductionTimeLine.TimeLine[ViewModelProductionTimeLine.TimeLine.Count - 1].TimerIn.TotalMilliseconds; |
|
269 |
} |
|
| 20 | 270 |
} |
271 |
|
|
272 |
} |
|
|
23
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
273 |
|
| 19 | 274 |
|
275 |
} |
|
276 |
|
|
| 18 | 277 |
|
| 16 | 278 |
} |
279 |
} |