diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2018-11-25 08:51:51 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2018-11-25 08:51:51 +0200 |
| commit | c02a988bda6724dcbd1d689be2010ce55de59368 (patch) | |
| tree | f0e9bcc67c0db00fe04517b6bccbacb63a5214ac /Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels | |
| parent | 88a0169f624c77b77b21a871ace9e51a9245807d (diff) | |
| download | Tango-c02a988bda6724dcbd1d689be2010ce55de59368.tar.gz Tango-c02a988bda6724dcbd1d689be2010ce55de59368.zip | |
Storage Module!
Diffstat (limited to 'Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels')
| -rw-r--r-- | Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs new file mode 100644 index 000000000..cb48958dd --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs @@ -0,0 +1,135 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core.Commands; +using Tango.Explorer; +using Tango.PPC.Common; +using Tango.PPC.Common.Navigation; +using Tango.PPC.Storage.TaskBarItems; +using Tango.PPC.Storage.ViewContracts; + +namespace Tango.PPC.Storage.ViewModels +{ + /// <summary> + /// Represents the main view VM and entry point for <see cref="Storage.StorageModule"/>. + /// </summary> + /// <seealso cref="Tango.PPC.Common.PPCViewModel" /> + public class MainViewVM : PPCViewModel<IMainView>, INavigationResultProvider<ExplorerFileItem, String> + { + private bool _allow_exit; + private ExplorerFileItem _selectedItem; + + private String _currentPath; + public String CurrentPath + { + get { return _currentPath; } + set { _currentPath = value; RaisePropertyChangedAuto(); } + } + + public RelayCommand CloseCommand { get; set; } + + public RelayCommand<ExplorerFileItem> FileSelectedCommand { get; set; } + + public MainViewVM() + { + CloseCommand = new RelayCommand(Close); + FileSelectedCommand = new RelayCommand<ExplorerFileItem>(OnFileSelected); + } + + public override void OnApplicationStarted() + { + + } + + public override void OnApplicationReady() + { + base.OnApplicationReady(); + + NotificationProvider.PushTaskBarItem<StorageTaskBarItem>(); + StorageProvider.StorageConnected += StorageProvider_StorageConnected; + StorageProvider.StorageDisconnected += StorageProvider_StorageDisconnected; + } + + public override void OnNavigatedTo() + { + base.OnNavigatedTo(); + + _allow_exit = false; + _selectedItem = null; + + if (StorageProvider.Drive != null) + { + CurrentPath = StorageProvider.Drive.RootDirectory.FullName; + } + } + + private async void Close() + { + await NavigationManager.NavigateBack(); + } + + /// <summary> + /// Handles the storage connected event. + /// </summary> + /// <param name="sender">The sender.</param> + /// <param name="e">The drive info.</param> + private void StorageProvider_StorageConnected(object sender, System.IO.DriveInfo e) + { + InvokeUI(async () => + { + if (await NotificationProvider.ShowQuestion("Disk Inserted. Do you want to browse?")) + { + await NavigationManager.NavigateTo(Common.Navigation.NavigationView.StorageView); + } + }); + } + + /// <summary> + /// Handles the storage disconnected event. + /// </summary> + /// <param name="sender">The sender.</param> + /// <param name="e">The drive info.</param> + private void StorageProvider_StorageDisconnected(object sender, System.IO.DriveInfo e) + { + InvokeUI(async () => + { + if (IsVisible) + { + await NavigationManager.NavigateBack(); + } + }); + } + + public override Task<bool> OnNavigateBackRequest() + { + if (CurrentPath == StorageProvider.Drive.RootDirectory.FullName || _allow_exit) + { + return Task.FromResult(true); + } + else + { + View.NavigateBack(); + return Task.FromResult(false); + } + } + + private async void OnFileSelected(ExplorerFileItem fileItem) + { + _allow_exit = true; + await NavigationManager.NavigateBack(); + await NotificationProvider.ShowInfo($"File Selected: {fileItem.Name}"); + } + + public ExplorerFileItem GetNavigationResult() + { + return _selectedItem; + } + + public void OnNavigationObjectReceived(string extension) + { + + } + } +} |
