| author | totetm <> |
| Fri, 12 Feb 2010 16:22:57 +0100 | |
| changeset 47 | 9b26023b8c83 |
| parent 38 | bd33267300aa |
| 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); |
|
| 36 | 135 |
|
| 25 | 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; |
| 38 | 150 |
ViewModelHeaderProduction.EditClicked += new EventHandler(ViewModelHeaderProduction_EditClicked); |
151 |
ViewModelHeaderProduction.IndexClicked += new EventHandler(ViewModelHeaderProduction_IndexClicked); |
|
152 |
|
|
| 36 | 153 |
|
| 30 | 154 |
|
| 25 | 155 |
InitializeCommands(); |
| 27 | 156 |
OnPropertyChanged(String.Empty); |
| 26 | 157 |
|
| 16 | 158 |
} |
| 38 | 159 |
|
160 |
void ViewModelHeaderProduction_IndexClicked(object sender, EventArgs e) |
|
161 |
{ |
|
162 |
if(ViewModelProductionTimeLine.SelectedIndex.Count!=0) |
|
163 |
{ |
|
164 |
ViewModelHeaderProduction.IndexOk(); |
|
165 |
} |
|
166 |
else |
|
167 |
{ |
|
168 |
MessageBox.Show("Vous devez mettre au moins 1 index !"); |
|
169 |
} |
|
170 |
} |
|
171 |
||
172 |
void ViewModelHeaderProduction_EditClicked(object sender, EventArgs e) |
|
173 |
{ |
|
174 |
if(ViewModelProductionTimeLine.SelectedVideoSequences.Count !=0) |
|
175 |
{ |
|
176 |
ViewModelHeaderProduction.EditOk(); |
|
177 |
} |
|
178 |
else |
|
179 |
{ |
|
180 |
MessageBox.Show("Vous devez mettre au moins 1 séquence !"); |
|
181 |
} |
|
182 |
} |
|
| 35 | 183 |
void PublishClick_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e) |
184 |
{ |
|
185 |
IRIFile newFile = new IRIFile(); |
|
186 |
IRIDecoupage decoupage = new IRIDecoupage() |
|
187 |
{ |
|
188 |
Author = "this author", |
|
189 |
Id = "Index" |
|
| 18 | 190 |
|
| 35 | 191 |
}; |
192 |
foreach (ObservableCollection<SegmentIndex> Ocsi in this.ViewModelProductionTimeLine.ListIndex) |
|
193 |
{ |
|
194 |
foreach (SegmentIndex si in Ocsi) |
|
195 |
{ |
|
196 |
IRIElement temp = new IRIElement() |
|
197 |
{ |
|
198 |
|
|
199 |
Chapter = si.Chapter.IdChap, |
|
200 |
Begin = si.TimerIn, |
|
201 |
Dur = si.Duration, |
|
202 |
Title = si.Description, |
|
203 |
Abstract = si.Description, |
|
204 |
Tags = si.Tags |
|
205 |
}; |
|
206 |
decoupage.Elements.Add(temp); |
|
207 |
} |
|
208 |
||
209 |
} |
|
210 |
IRIMedia videoMedia = new IRIMedia() { Id = "video" }; |
|
211 |
||
212 |
||
213 |
foreach (VideoSequence vs in this.ViewModelProductionTimeLine.TimeLine) |
|
214 |
{ |
|
215 |
videoMedia.Videos.Add(new IRIVideo() |
|
216 |
{ |
|
217 |
Begin = vs.TimerIn, |
|
218 |
Dur = vs.Duration, |
|
219 |
Src = vs.Path, |
|
220 |
||
221 |
} |
|
222 |
); |
|
223 |
} |
|
224 |
IRIEnsemble ensemble = new IRIEnsemble() |
|
225 |
{ |
|
226 |
Id = "VideoBookIndex" |
|
227 |
}; |
|
228 |
ensemble.Decoupages.Add(decoupage); |
|
229 |
newFile.Body.Ensembles.Add(ensemble); |
|
230 |
newFile.Body.Medias.Add(videoMedia); |
|
231 |
||
232 |
MessageBox.Show(newFile.ToString()); |
|
233 |
} |
|
| 27 | 234 |
void ViewModelHeaderProduction_Change(object sender, HeaderProductionVMArgs e) |
235 |
{ |
|
| 35 | 236 |
if (e.ChapterHeader.Indexing == false && e.ChapterHeader.Editing == true) |
237 |
{ |
|
238 |
ViewModelProductionTimeLine.IsIndexing = true; |
|
239 |
} |
|
240 |
else |
|
241 |
{ |
|
242 |
ViewModelProductionTimeLine.IsIndexing = false; |
|
243 |
} |
|
| 27 | 244 |
ViewModelProductionTimeLine.SelectedChapter = e.ChapterHeader.ChapterDescription.Id ; |
245 |
} |
|
246 |
||
| 36 | 247 |
|
| 24 | 248 |
|
| 25 | 249 |
private void ViewModelMasterVideoViewer_Tick(object sender, VideoViewerVMEventArgs e) |
|
23
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
250 |
{ |
| 36 | 251 |
double newPos = ViewModelProductionTimeLine.ActualVideoSequence.TimerIn.TotalMilliseconds + e.Position.TotalMilliseconds; |
| 24 | 252 |
if (ViewModelProductionTimeLine.ActualVideoSequence.TimerOut.TotalMilliseconds <= newPos) |
253 |
{ |
|
| 36 | 254 |
if (ViewModelProductionTimeLine.TimeLine.IndexOf(ViewModelProductionTimeLine.ActualVideoSequence) + 1 < ViewModelProductionTimeLine.TimeLine.Count) |
255 |
{ |
|
256 |
ViewModelProductionTimeLine.ActualVideoSequence = ViewModelProductionTimeLine.TimeLine[ViewModelProductionTimeLine.TimeLine.IndexOf(ViewModelProductionTimeLine.ActualVideoSequence) + 1]; |
|
257 |
ViewModelMasterVideoViewer.BeginIn = ViewModelProductionTimeLine.ActualVideoSequence.BeginTrim; |
|
258 |
ViewModelMasterVideoViewer.Source = ViewModelProductionTimeLine.ActualVideoSequence.Path; |
|
259 |
ViewModelMasterVideoViewer.GoTo(ViewModelProductionTimeLine.ActualVideoSequence.BeginTrim); |
|
260 |
} |
|
261 |
else |
|
262 |
{ |
|
263 |
ViewModelMasterVideoViewer.Pause(); |
|
264 |
} |
|
| 24 | 265 |
} |
266 |
ViewModelProductionTimeLine.Position = newPos; |
|
|
23
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
267 |
} |
|
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
268 |
|
| 25 | 269 |
private void ClickAddSelectedRecord_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e) |
| 19 | 270 |
{ |
| 30 | 271 |
if (ViewModelHeaderProduction.SelectedChapter != null && ViewModelHeaderProduction.SelectedChapter.IsActive) |
| 20 | 272 |
{ |
273 |
if (!ViewModelProductionTimeLine.IsIndexing) |
|
274 |
{ |
|
| 24 | 275 |
if (SelectedVideoSequence != null) |
276 |
{ |
|
277 |
ViewModelMasterVideoViewer.Source = SelectedVideoSequence.Path; |
|
278 |
||
279 |
VideoSequence newVideo = new VideoSequence(SelectedVideoSequence); |
|
280 |
ViewModelProductionTimeLine.ActualVideoSequence = newVideo; |
|
281 |
ViewModelProductionTimeLine.SelectedVideoSequences.Add(newVideo); |
|
282 |
ViewModelProductionTimeLine.Position = ViewModelProductionTimeLine.TimeLine[ViewModelProductionTimeLine.TimeLine.Count - 1].TimerIn.TotalMilliseconds; |
|
283 |
} |
|
| 20 | 284 |
} |
285 |
|
|
286 |
} |
|
|
23
10acb6a11a73
Update VideoViewer ( Allow Multi-VideoViewer)
Matthieu Totet
parents:
22
diff
changeset
|
287 |
|
| 19 | 288 |
|
289 |
} |
|
290 |
|
|
| 18 | 291 |
|
| 16 | 292 |
} |
293 |
} |