aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/BackupRestoreViewVM.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/BackupRestoreViewVM.cs')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/BackupRestoreViewVM.cs91
1 files changed, 91 insertions, 0 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/BackupRestoreViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/BackupRestoreViewVM.cs
new file mode 100644
index 000000000..416ece24b
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/BackupRestoreViewVM.cs
@@ -0,0 +1,91 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core.Commands;
+using Tango.Core.DI;
+using Tango.PPC.Common;
+using Tango.PPC.Common.BackupRestore;
+using Tango.PPC.UI.ViewsContracts;
+
+namespace Tango.PPC.UI.ViewModels
+{
+ public class BackupRestoreViewVM : PPCViewModel<IBackupRestoreView>
+ {
+ private Stack<BackupRestoreView> _navigation_history;
+ private BackupRestoreView _currentView;
+ private bool _canNavigateBack;
+
+ public enum BackupRestoreView
+ {
+ MainView,
+ BackupView,
+ RestoreView
+ }
+
+ [TangoInject]
+ public IBackupManager BackupManager { get; set; }
+
+ public RelayCommand<String> NavigateCommand { get; set; }
+
+ public RelayCommand NavigateBackCommand { get; set; }
+
+ public BackupRestoreViewVM()
+ {
+ NavigateCommand = new RelayCommand<string>(HandleNavigateCommand);
+ NavigateBackCommand = new RelayCommand(NavigateBack, () => _canNavigateBack);
+
+ _navigation_history = new Stack<BackupRestoreView>();
+ _canNavigateBack = true;
+ }
+
+ public override void OnNavigatedTo()
+ {
+ base.OnNavigatedTo();
+
+ _navigation_history = new Stack<BackupRestoreView>();
+ _currentView = BackupRestoreView.MainView;
+ }
+
+ private void HandleNavigateCommand(string view)
+ {
+ var v = (BackupRestoreView)Enum.Parse(typeof(BackupRestoreView), view);
+ NavigateTo(v);
+ }
+
+ private Task NavigateTo(BackupRestoreView view, bool pushHistory = true)
+ {
+ if (pushHistory)
+ {
+ _navigation_history.Push(_currentView);
+ }
+
+ _currentView = view;
+ return View.NavigateTo(view);
+ }
+
+ private async void NavigateBack()
+ {
+ _canNavigateBack = false;
+ InvalidateRelayCommands();
+
+ if (_navigation_history.Count > 0)
+ {
+ await NavigateTo(_navigation_history.Pop(), false);
+ }
+ else
+ {
+ await NavigationManager.NavigateBack();
+ }
+
+ _canNavigateBack = true;
+ InvalidateRelayCommands();
+ }
+
+ public override void OnApplicationStarted()
+ {
+
+ }
+ }
+}