client/src/Iri.Modernisation.Controls/ViewModel/ProductionView/ProductionViewVM.cs
changeset 25 a9c815025a1b
parent 24 c031f1132dde
child 26 44a2dc869e28
equal deleted inserted replaced
24:c031f1132dde 25:a9c815025a1b
    14 using Iri.Modernisation.Data.Models;
    14 using Iri.Modernisation.Data.Models;
    15 using System.Collections.ObjectModel;
    15 using System.Collections.ObjectModel;
    16 using System.Collections.Generic;
    16 using System.Collections.Generic;
    17 namespace Iri.Modernisation.Controls.ViewModel
    17 namespace Iri.Modernisation.Controls.ViewModel
    18 {
    18 {
       
    19     /// <summary>
       
    20     /// ViewModel de ProductionView
       
    21     /// </summary>
    19     public class ProductionViewVM : BaseMVVM.ViewModel.ViewModel
    22     public class ProductionViewVM : BaseMVVM.ViewModel.ViewModel
    20     {
    23     {
    21 
    24 
    22         private VideoSequence _selectedVideoSequence;
    25         private VideoSequence _selectedVideoSequence;
       
    26         /// <summary>
       
    27         /// VideoSequence Sélectionnée dans la liste
       
    28         /// </summary>
    23         public VideoSequence SelectedVideoSequence
    29         public VideoSequence SelectedVideoSequence
    24         {
    30         {
    25             get
    31             get
    26             {
    32             {
    27                 return _selectedVideoSequence;
    33                 return _selectedVideoSequence;
    34                
    40                
    35             }
    41             }
    36         }
    42         }
    37 
    43 
    38         private ObservableCollection<VideoSequence> _recordedVideoSequences;
    44         private ObservableCollection<VideoSequence> _recordedVideoSequences;
       
    45         /// <summary>
       
    46         /// Liste des VideoSéquences Enregistrées
       
    47         /// </summary>
    39         public ObservableCollection<VideoSequence> RecordedVideoSequences
    48         public ObservableCollection<VideoSequence> RecordedVideoSequences
    40         {
    49         {
    41             get
    50             get
    42             {
    51             {
    43                 return _recordedVideoSequences;
    52                 return _recordedVideoSequences;
    49             }
    58             }
    50         }
    59         }
    51 
    60 
    52 
    61 
    53         private HeaderProductionVM _headerProductionVM;
    62         private HeaderProductionVM _headerProductionVM;
       
    63         /// <summary>
       
    64         /// ViewModel de HeaderProduction
       
    65         /// </summary>
    54         public HeaderProductionVM ViewModelHeaderProduction
    66         public HeaderProductionVM ViewModelHeaderProduction
    55         {
    67         {
    56             get
    68             get
    57             {
    69             {
    58                 return _headerProductionVM;
    70                 return _headerProductionVM;
    61             {
    73             {
    62                 _headerProductionVM = value;
    74                 _headerProductionVM = value;
    63                 OnPropertyChanged("ViewModelHeaderProduction");
    75                 OnPropertyChanged("ViewModelHeaderProduction");
    64             }
    76             }
    65         }
    77         }
       
    78 
    66         private ProductionTimeLineVM _productionTimeLineVM;
    79         private ProductionTimeLineVM _productionTimeLineVM;
       
    80         /// <summary>
       
    81         /// ViewModel de ProductionTimeLine
       
    82         /// </summary>
    67         public ProductionTimeLineVM ViewModelProductionTimeLine
    83         public ProductionTimeLineVM ViewModelProductionTimeLine
    68         {
    84         {
    69             get
    85             get
    70             {
    86             {
    71                 return _productionTimeLineVM;
    87                 return _productionTimeLineVM;
    76                 OnPropertyChanged("ViewModelProductionTimeLine");
    92                 OnPropertyChanged("ViewModelProductionTimeLine");
    77             }
    93             }
    78         }
    94         }
    79 
    95 
    80         private ProductionEditorVM _productionEditorVM;
    96         private ProductionEditorVM _productionEditorVM;
       
    97         /// <summary>
       
    98         /// ViewModel du ProductionEditor
       
    99         /// </summary>
    81         public ProductionEditorVM ViewModelProductionEditor
   100         public ProductionEditorVM ViewModelProductionEditor
    82         {
   101         {
    83             get
   102             get
    84             {
   103             {
    85                 return _productionEditorVM;
   104                 return _productionEditorVM;
    90                 OnPropertyChanged("ViewModelProductionEditor");
   109                 OnPropertyChanged("ViewModelProductionEditor");
    91             }
   110             }
    92         }
   111         }
    93 
   112 
    94         private VideoViewerVM _masterVideoViewerVM;
   113         private VideoViewerVM _masterVideoViewerVM;
       
   114         /// <summary>
       
   115         /// ViewModel du Master
       
   116         /// </summary>
    95         public VideoViewerVM ViewModelMasterVideoViewer
   117         public VideoViewerVM ViewModelMasterVideoViewer
    96         {
   118         {
    97             get
   119             get
    98             {
   120             {
    99                 return _masterVideoViewerVM;
   121                 return _masterVideoViewerVM;
   103                 _masterVideoViewerVM = value;
   125                 _masterVideoViewerVM = value;
   104                 OnPropertyChanged("ViewModelMasterVideoViewer");
   126                 OnPropertyChanged("ViewModelMasterVideoViewer");
   105             }
   127             }
   106         }
   128         }
   107         
   129         
   108         //SelectedChapter
   130        private void InitializeCommands()
       
   131        {
       
   132             Commands.ProductionView.ClickAddSelectedRecord.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(ClickAddSelectedRecord_Executed);
       
   133             ViewModelProductionTimeLine.SwitchVideo += new EventHandler<ProductionTimeLineVMEventArgs>(ViewModelProductionTimeLine_SwitchVideo);
       
   134             ViewModelMasterVideoViewer.Tick += new EventHandler<VideoViewerVMEventArgs>(ViewModelMasterVideoViewer_Tick);
       
   135             
       
   136        }
   109         public ProductionViewVM()
   137         public ProductionViewVM()
   110         {
   138         {
   111             RecordedVideoSequences = new ObservableCollection<VideoSequence>();
   139             RecordedVideoSequences = new ObservableCollection<VideoSequence>();
   112             ViewModelHeaderProduction = new HeaderProductionVM();
   140             ViewModelHeaderProduction = new HeaderProductionVM();
   113             ViewModelProductionTimeLine = new ProductionTimeLineVM();
   141             ViewModelProductionTimeLine = new ProductionTimeLineVM();
   114             ViewModelProductionEditor = new ProductionEditorVM();
   142             ViewModelProductionEditor = new ProductionEditorVM();
   115             ViewModelMasterVideoViewer = new VideoViewerVM(true, false);
   143             ViewModelMasterVideoViewer = new VideoViewerVM(true, false);
   116            // ViewModelMasterVideoViewer.Source = Application.Current.Host.Source.Host.ToString() + "/video.mp4";
       
   117             
   144             
   118             ViewModelProductionTimeLine.ViewModelVideoViewer = ViewModelMasterVideoViewer;
   145             ViewModelProductionTimeLine.ViewModelVideoViewer = ViewModelMasterVideoViewer;
   119             Commands.ProductionView.ClickAddSelectedRecord.Executed += new EventHandler<SLExtensions.Input.ExecutedEventArgs>(ClickAddSelectedRecord_Executed);
       
   120             Random rndNumbers = new Random();
   146             Random rndNumbers = new Random();
       
   147             _recordedVideoSequences.Add(new VideoSequence()
       
   148             {
       
   149                 Path = Application.Current.Host.Source.Host.ToString() + "/test.wmv",
       
   150                 RunTime = new TimeSpan(0, rndNumbers.Next(10, 60), 0),
       
   151                 BeginTrim = new TimeSpan(0, 0, 0),
       
   152                 EndTrim = new TimeSpan(0, 0, 0),
       
   153             });
   121             for (int i = 0; i < 10; i++)
   154             for (int i = 0; i < 10; i++)
   122             {
   155             {
   123          
   156          
   124                 _recordedVideoSequences.Add(new VideoSequence()
   157                 _recordedVideoSequences.Add(new VideoSequence()
   125                 {
   158                 {
   127                     RunTime = new TimeSpan(0, rndNumbers.Next(10, 60), 0),
   160                     RunTime = new TimeSpan(0, rndNumbers.Next(10, 60), 0),
   128                     BeginTrim = new TimeSpan(0, 0, 0),
   161                     BeginTrim = new TimeSpan(0, 0, 0),
   129                     EndTrim = new TimeSpan(0, 0, 0),
   162                     EndTrim = new TimeSpan(0, 0, 0),
   130                 });
   163                 });
   131             }
   164             }
   132             ViewModelProductionTimeLine.SwitchVideo += new EventHandler<ProductionTimeLineVMEventArgs>(ViewModelProductionTimeLine_SwitchVideo);   
   165             InitializeCommands();
   133             ViewModelMasterVideoViewer.Tick += new EventHandler<VideoViewerVMEventArgs>(ViewModelMasterVideoViewer_Tick);
   166         }
   134            
   167 
   135         }
   168         private void ViewModelProductionTimeLine_SwitchVideo(object sender, ProductionTimeLineVMEventArgs e)
   136 
       
   137         void ViewModelProductionTimeLine_SwitchVideo(object sender, ProductionTimeLineVMEventArgs e)
       
   138         {
   169         {
   139             ViewModelMasterVideoViewer.Source = (e.VideoSequence.Path);
   170             ViewModelMasterVideoViewer.Source = (e.VideoSequence.Path);
   140             ViewModelMasterVideoViewer.GoTo(e.BeginAt);
   171             ViewModelMasterVideoViewer.GoTo(e.BeginAt);
   141         }
   172         }
   142 
   173 
   143         void ViewModelMasterVideoViewer_Tick(object sender, VideoViewerVMEventArgs e)
   174         private void ViewModelMasterVideoViewer_Tick(object sender, VideoViewerVMEventArgs e)
   144         {
   175         {
   145             double newPos = ViewModelProductionTimeLine.ActualVideoSequence.TimerIn.TotalMilliseconds+e.Position.TotalMilliseconds;
   176             double newPos = ViewModelProductionTimeLine.ActualVideoSequence.TimerIn.TotalMilliseconds+e.Position.TotalMilliseconds;
   146             if (ViewModelProductionTimeLine.ActualVideoSequence.TimerOut.TotalMilliseconds <= newPos)
   177             if (ViewModelProductionTimeLine.ActualVideoSequence.TimerOut.TotalMilliseconds <= newPos)
   147             {
   178             {
   148                 ViewModelProductionTimeLine.ActualVideoSequence = ViewModelProductionTimeLine.TimeLine[ViewModelProductionTimeLine.TimeLine.IndexOf(ViewModelProductionTimeLine.ActualVideoSequence) + 1];
   179                 ViewModelProductionTimeLine.ActualVideoSequence = ViewModelProductionTimeLine.TimeLine[ViewModelProductionTimeLine.TimeLine.IndexOf(ViewModelProductionTimeLine.ActualVideoSequence) + 1];
   149                 ViewModelMasterVideoViewer.Source = ViewModelProductionTimeLine.ActualVideoSequence.Path;
   180                 ViewModelMasterVideoViewer.Source = ViewModelProductionTimeLine.ActualVideoSequence.Path;
   150                 ViewModelMasterVideoViewer.GoTo(TimeSpan.Zero);
   181                 ViewModelMasterVideoViewer.GoTo(ViewModelProductionTimeLine.ActualVideoSequence.BeginTrim);
   151             }
   182             }
   152             ViewModelProductionTimeLine.Position = newPos;
   183             ViewModelProductionTimeLine.Position = newPos;
   153         }
   184         }
   154 
   185 
   155         void ClickAddSelectedRecord_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e)
   186         private void ClickAddSelectedRecord_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e)
   156         {
   187         {
   157             if (ViewModelProductionTimeLine.SelectedChapter != -1)
   188             if (ViewModelProductionTimeLine.SelectedChapter != -1)
   158             {
   189             {
   159                 if (!ViewModelProductionTimeLine.IsIndexing)
   190                 if (!ViewModelProductionTimeLine.IsIndexing)
   160                 {
   191                 {