aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-04-08 16:55:37 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-04-08 16:55:37 +0300
commit17a77c30765fe8a0d3ca57a9ec60fb43b82432d2 (patch)
tree54881e3de14aaef3ad5e699f28d903a11a024b57 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs
parentb3bc15a29d8fff24edc5bcd4576e18c9141f76a6 (diff)
downloadTango-17a77c30765fe8a0d3ca57a9ec60fb43b82432d2.tar.gz
Tango-17a77c30765fe8a0d3ca57a9ec60fb43b82432d2.zip
Implemented timeline events !
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs53
1 files changed, 49 insertions, 4 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs
index b3d717263..af65c1430 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs
@@ -8,16 +8,21 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
+using Tango.BL.Entities;
+using Tango.BL.Enumerations;
using Tango.Core.Commands;
+using Tango.Core.Helpers;
using Tango.Integration.Diagnostics;
using Tango.Integration.Operation;
using Tango.Integration.Services;
using Tango.MachineStudio.Common.Diagnostics;
+using Tango.MachineStudio.Common.EventLogging;
using Tango.MachineStudio.Common.Notifications;
using Tango.MachineStudio.Common.StudioApplication;
using Tango.MachineStudio.Common.Video;
using Tango.MachineStudio.DataCapture.Recording;
using Tango.MachineStudio.DataCapture.Views;
+using Tango.MachineStudio.Logging.ViewModels;
using Tango.PMR.Diagnostics;
using Tango.Settings;
using Tango.SharedUI;
@@ -34,6 +39,7 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
private INotificationProvider _notification;
private IStudioApplicationManager _applicationManager;
private IDiagnosticsFrameProvider _frameProvider;
+ private IEventLogger _eventLogger;
private String _recordingsFolder;
private BarItem _recordingBarItem;
private BarItem _playerBarItem;
@@ -100,6 +106,16 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
set { _captureDevices = value; RaisePropertyChangedAuto(); }
}
+ private TimelineViewVM _timelineViewVM;
+ /// <summary>
+ /// Gets or sets the timeline view VM.
+ /// </summary>
+ public TimelineViewVM TimelineViewVM
+ {
+ get { return _timelineViewVM; }
+ set { _timelineViewVM = value; RaisePropertyChangedAuto(); }
+ }
+
#endregion
#region Commands
@@ -161,15 +177,20 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
/// <summary>
/// Initializes a new instance of the <see cref="MainViewVM"/> class.
/// </summary>
- public MainViewVM(IVideoCaptureProvider videoCaptureProvider, INotificationProvider notification, IStudioApplicationManager applicationManager, IDiagnosticsFrameProvider frameProvider)
+ public MainViewVM(IVideoCaptureProvider videoCaptureProvider, INotificationProvider notification, IStudioApplicationManager applicationManager, IDiagnosticsFrameProvider frameProvider, IEventLogger eventLogger)
{
_notification = notification;
_applicationManager = applicationManager;
_frameProvider = frameProvider;
+ _eventLogger = eventLogger;
+
+ _eventLogger.NewLog += _eventLogger_NewLog;
Recorder = new DiagnosticsFileRecorder();
Player = new DiagnosticsFilePlayer();
+ TimelineViewVM = new TimelineViewVM(notification) { EnableTimeMarker = true };
+
VideoCaptureProvider = videoCaptureProvider;
Recordings = new ObservableCollection<DataRecording>();
@@ -204,6 +225,14 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
#region Event Handlers
+ private void _eventLogger_NewLog(object sender, MachinesEvent ev)
+ {
+ if (Recorder.IsRecording)
+ {
+ Recorder.Write(ev);
+ }
+ }
+
private void ApplicationManager_ConnectedMachineChanged(object sender, IExternalBridgeClient machine)
{
MachineOperator = machine;
@@ -222,7 +251,10 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
{
CaptureDevices.First().Invoke(() =>
{
- Recorder.Write(CaptureDevices.Where(x => x.VideoSource != null).Select(x => x.VideoSource.GetAsFrozen() as BitmapSource));
+ if (Recorder.IsRecording)
+ {
+ Recorder.Write(CaptureDevices.Where(x => x.VideoSource != null).Select(x => x.VideoSource.GetAsFrozen() as BitmapSource));
+ }
});
});
}
@@ -240,6 +272,8 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
{
Recordings.Add(new DataRecording(file, File.GetCreationTime(file)));
}
+
+ Recordings = Recordings.OrderByDescending(x => x.Date).ToObservableCollection();
}
/// <summary>
@@ -248,7 +282,11 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
/// <param name="recording">The recording.</param>
private void RemoveRecording(DataRecording recording)
{
- Recordings.Remove(recording);
+ if (_notification.ShowQuestion("Are you sure you want to remove the specified recording?"))
+ {
+ Recordings.Remove(recording);
+ PathHelper.TryDeleteFile(recording.FilePath);
+ }
}
/// <summary>
@@ -275,6 +313,8 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
{
SelectedRecording.Player = new DiagnosticsFilePlayer();
await SelectedRecording.Player.Load(SelectedRecording.FilePath);
+ TimelineViewVM.Initialize(SelectedRecording.Player.MachineEvents);
+ TimelineViewVM.TimelineMaxTime = SelectedRecording.Player.TotalTime;
}
}
@@ -327,6 +367,8 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
CaptureDevices[i].VideoSource = frame.VideoFrames[i].ToByteArray().ToBitmapSource();
}
});
+
+ TimelineViewVM.CurrentPosition = (sender as DiagnosticsFilePlayer).CurrentTime;
}
}
@@ -335,7 +377,7 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
using (_notification.PushTaskItem("Starting Recording..."))
{
Recorder.Start();
-
+ _eventLogger.Log(EventTypes.RecordingStarted, "Recording Started...");
_recordingBarItem.Push();
}
@@ -350,6 +392,8 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
{
await Recorder.Stop();
_recordingBarItem.Pop();
+
+ _eventLogger.Log(EventTypes.RecordingStopped, "Recording Stopped...");
}
String recordingName = _notification.ShowTextInput("Enter recording name", "Recording name");
@@ -370,6 +414,7 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
else if (Player.IsPlaying)
{
await Player.Stop();
+ TimelineViewVM.CurrentPosition = TimeSpan.Zero;
CaptureDevices.ForEach(x => x.EnableSourceUpdate());
_frameProvider.Disable = false;
_playerBarItem.Pop();