aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels
diff options
context:
space:
mode:
authorRoy <roy.mail.net@gmail.com>2018-02-15 00:29:13 +0200
committerRoy <roy.mail.net@gmail.com>2018-02-15 00:29:13 +0200
commite4c917c43e90a4453c6cd5b1842a418dc0f1b514 (patch)
tree165829adcac4b2fc600640b18bb3a743a55a3bea /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels
parentd5018576f325fb85983c4ad34c169d4b4e8d1a55 (diff)
downloadTango-e4c917c43e90a4453c6cd5b1842a418dc0f1b514.tar.gz
Tango-e4c917c43e90a4453c6cd5b1842a418dc0f1b514.zip
Working on Data Capture Module..
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs83
1 files changed, 56 insertions, 27 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 b63ee51d0..269007dac 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
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
+using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
@@ -32,6 +33,8 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
private IStudioApplicationManager _applicationManager;
private IDiagnosticsFrameProvider _frameProvider;
private String _recordingsFolder;
+ private BarItem _recordingBarItem;
+ private BarItem _playerBarItem;
#region Properties
@@ -52,7 +55,7 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
public DataRecording SelectedRecording
{
get { return _selectedRecording; }
- set { _selectedRecording = value; RaisePropertyChangedAuto(); }
+ set { _selectedRecording = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
}
/// <summary>
@@ -140,35 +143,29 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
ToggleCameraCommand = new RelayCommand<CaptureDevice>(ToggleCamera);
- Recordings.Add(new DataRecording()
- {
- Name = "Recording 1"
- });
- Recordings.Add(new DataRecording()
- {
- Name = "Recording 2"
- });
- Recordings.Add(new DataRecording()
- {
- Name = "Recording 3"
- });
-
RemoveRecordingCommand = new RelayCommand<DataRecording>(RemoveRecording);
MediaRecordingCommand = new RelayCommand(StartDiagnosticsRecording, () => !Recorder.IsRecording && MachineOperator != null && !Player.IsPlaying);
MediaStopCommand = new RelayCommand(StopRecorderOrPlayer, () => Recorder.IsRecording || Player.IsPlaying);
- MediaPlayPauseCommand = new RelayCommand(DiagnosticsTogglePlayPause, () => !Recorder.IsRecording && Player.IsLoaded);
+ MediaPlayPauseCommand = new RelayCommand(DiagnosticsTogglePlayPause, () => !Recorder.IsRecording && SelectedRecording != null);
_recordingsFolder = Path.Combine(SettingsManager.DefaultFolder, "Recordings");
Directory.CreateDirectory(_recordingsFolder);
_frameProvider.FrameReceived += _frameProvider_FrameReceived;
- _notification.PushBarItem(new RecordingBarView() { DataContext = this });
-
applicationManager.ConnectedMachineChanged += ApplicationManager_ConnectedMachineChanged;
+
+ _recordingBarItem = new BarItem(_notification, new RecordingBarView() { DataContext = this });
+ _playerBarItem = new BarItem(_notification, new PlayingBarView() { DataContext = this });
+
+ LoadRecordings();
}
+ #endregion
+
+ #region Event Handlers
+
private void ApplicationManager_ConnectedMachineChanged(object sender, Integration.Services.IExternalBridgeClient machine)
{
MachineOperator = machine;
@@ -186,10 +183,19 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
}
}
+
#endregion
#region Private Methods
+ private void LoadRecordings()
+ {
+ foreach (var file in Directory.GetFiles(_recordingsFolder, "*.tdr"))
+ {
+ Recordings.Add(new DataRecording(file, File.GetCreationTime(file)));
+ }
+ }
+
/// <summary>
/// Removes the recording.
/// </summary>
@@ -211,11 +217,28 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
}
}
- private void DiagnosticsTogglePlayPause()
+ private async void DiagnosticsTogglePlayPause()
{
if (!Player.IsPlaying || Player.IsPaused)
{
_frameProvider.Disable = true;
+
+ if (SelectedRecording.Player == null)
+ {
+ using (_notification.PushTaskItem("Loading Recording..."))
+ {
+ SelectedRecording.Player = new DiagnosticsFilePlayer();
+ await SelectedRecording.Player.Load(SelectedRecording.FilePath);
+ }
+ }
+
+ RegisterPlayer(SelectedRecording.Player);
+
+ if (!Player.IsPlaying)
+ {
+ _playerBarItem.Push();
+ }
+
Player.Play();
}
else
@@ -226,21 +249,21 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
InvalidateRelayCommands();
}
- private async void LoadSelectedRecording()
+ private void RegisterPlayer(DiagnosticsFilePlayer player)
{
- using (_notification.PushTaskItem("Loading Recording..."))
+ foreach (var recording in Recordings)
{
- if (Player != null)
+ if (recording.Player != null)
{
- Player.Dispose();
+ recording.Player.FrameReceived -= Player_FrameReceived;
}
+ }
- Player = new DiagnosticsFilePlayer();
+ if (player != null)
+ {
+ Player = player;
Player.FrameReceived += Player_FrameReceived;
- await Player.Load(SelectedRecording.FilePath);
}
-
- InvalidateRelayCommands();
}
private void Player_FrameReceived(object sender, DataFileFrame frame)
@@ -256,6 +279,8 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
using (_notification.PushTaskItem("Starting Recording..."))
{
Recorder.Start();
+
+ _recordingBarItem.Push();
}
InvalidateRelayCommands();
@@ -268,6 +293,7 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
using (_notification.PushTaskItem("Stopping Recording..."))
{
await Recorder.Stop();
+ _recordingBarItem.Pop();
}
String recordingName = _notification.ShowTextInput("Enter recording name", "Recording name");
@@ -276,7 +302,9 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
{
using (_notification.PushTaskItem("Saving Recording..."))
{
- await Recorder.Save(Path.Combine(_recordingsFolder, recordingName + ".tdr"));
+ String filePath = Path.Combine(_recordingsFolder, recordingName + ".tdr");
+ await Recorder.Save(filePath);
+ Recordings.Insert(0, new DataRecording(filePath));
}
}
@@ -287,6 +315,7 @@ namespace Tango.MachineStudio.DataCapture.ViewModels
{
await Player.Stop();
_frameProvider.Disable = false;
+ _playerBarItem.Pop();
}
InvalidateRelayCommands();