diff options
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs index 3f8772f0e..070beefa6 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs @@ -1,4 +1,5 @@ using Google.Protobuf; +using Microsoft.Practices.ServiceLocation; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -10,7 +11,7 @@ using System.Threading; using System.Threading.Tasks; using Tango.Core.Commands; using Tango.Core.Helpers; -using Tango.DAL.Observables; +using Tango.Integration.Observables; using Tango.Integration.Services; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.Common.StudioApplication; @@ -23,6 +24,10 @@ using Tango.Synchronization.Remote; namespace Tango.MachineStudio.Synchronization.ViewModels { + /// <summary> + /// Represents the 'Direct Synchronization' view model. + /// </summary> + /// <seealso cref="Tango.SharedUI.ViewModel" /> public class DirectSynchronizationViewVM : ViewModel { private SyncNavigationManager _navigation; @@ -31,9 +36,16 @@ namespace Tango.MachineStudio.Synchronization.ViewModels private LocalDBComparer _comparer; private INotificationProvider _notification; private String _comparedSerialNumber; + private MainViewVM _mainView; - public IStudioApplicationManager ApplicationManager { get; set; } + #region Constructors + /// <summary> + /// Initializes a new instance of the <see cref="DirectSynchronizationViewVM"/> class. + /// </summary> + /// <param name="applicationManager">The application manager.</param> + /// <param name="navigation">The navigation.</param> + /// <param name="notification">The notification.</param> public DirectSynchronizationViewVM(IStudioApplicationManager applicationManager, SyncNavigationManager navigation, INotificationProvider notification) { ApplicationManager = applicationManager; @@ -49,6 +61,8 @@ namespace Tango.MachineStudio.Synchronization.ViewModels CommitAllCommand = new RelayCommand(Synchronize, (x) => Differences.Count > 0 && !IsWorking && SelectedMachine != null); } + #endregion + #region Commands /// <summary> @@ -90,6 +104,8 @@ namespace Tango.MachineStudio.Synchronization.ViewModels #region Properties + public IStudioApplicationManager ApplicationManager { get; set; } + private bool _isWorking; /// <summary> /// Gets or sets a value indicating whether this instance is working. @@ -146,11 +162,29 @@ namespace Tango.MachineStudio.Synchronization.ViewModels #endregion + #region Event Handlers + + private void Comparer_Progress(object sender, string e) + { + if (_mainView == null) + { + _mainView = ServiceLocator.Current.GetInstance<MainViewVM>(); + _mainView.Log = String.Empty; + } + + _mainView.Log += ("[" + DateTime.Now.ToTimeString() + "] " + e + Environment.NewLine); + } + + #endregion + #region Private Methods + /// <summary> + /// Compares the selected machine against the remote database. + /// </summary> private void Compare() { - if (SelectedMachine.SerialNumber != ApplicationManager.ConnectedMachine.SerialNumber) + if (SelectedMachine.SerialNumber != ApplicationManager.ConnectedMachine.As<ExternalBridgeTcpClient>().SerialNumber) { if (!_notification.ShowQuestion("The selected machine serial number does not match the connected machine. Are you sure you want to continue?")) { @@ -195,6 +229,7 @@ namespace Tango.MachineStudio.Synchronization.ViewModels using (_notification.PushTaskItem("Comparing database...")) { _comparer = new LocalDBComparer(new SQLiteDataBase(_masterDBFile), new SQLiteDataBase(_slaveDBFile)); + _comparer.Progress += Comparer_Progress; var diffs = _comparer.Compare(); Differences = new ObservableCollection<Diff>(diffs); @@ -236,6 +271,10 @@ namespace Tango.MachineStudio.Synchronization.ViewModels }); } + + /// <summary> + /// Synchronizes the selected machine with the remote database. + /// </summary> private void Synchronize() { if (IsClearMachine) @@ -313,11 +352,19 @@ namespace Tango.MachineStudio.Synchronization.ViewModels }); } + /// <summary> + /// Displays an error message. + /// </summary> + /// <param name="message">The message.</param> private void ShowError(String message) { InvokeUINow(() => _notification.ShowError(message)); } + /// <summary> + /// Displays an information message. + /// </summary> + /// <param name="message">The message.</param> private void ShowInfo(String message) { InvokeUINow(() => _notification.ShowInfo(message)); |
