public override async Task NavigateTo(IVLCStorageItem storageItem) { var item = storageItem as VLCStorageFolder; if (item != null) { BackStack.Add(item); var _ = Task.Run(async() => await GetFiles()); } else { var vlcFile = storageItem as VLCStorageFile; if (vlcFile == null) { return; } var file = vlcFile.StorageItem as StorageFile; if (VLCFileExtensions.AudioExtensions.Contains(file.FileType)) { await Locator.MediaPlaybackViewModel.PlayAudioFile(file); } else if (VLCFileExtensions.VideoExtensions.Contains(file.FileType)) { await Locator.MediaPlaybackViewModel.PlayVideoFile(file); } } OnPropertyChanged(nameof(CurrentFolderName)); }
public override async void Execute(object parameter) { IVLCStorageItem storageItem = ((ItemClickEventArgs)parameter).ClickedItem as IVLCStorageItem; if (Locator.NavigationService.CurrentPage == VLCPage.MainPageFileExplorer) { await Locator.FileExplorerVM.CurrentStorageVM.NavigateTo(storageItem); } }
public override async Task GetFiles() { try { await DispatchHelper.InvokeInUIThread(CoreDispatcherPriority.Normal, () => { StorageItems.Clear(); IsFolderEmpty = false; IsLoadingFiles = true; }); var currentMedia = BackStack.Last().Media; if (currentMedia == null) { return; } var mediaList = await Locator.MediaLibrary.DiscoverMediaList(currentMedia); for (int i = 0; i < mediaList.count(); i++) { var media = mediaList.itemAtIndex(i); IVLCStorageItem storageItem = null; if (media.type() == MediaType.Directory) { storageItem = new VLCStorageFolder(media); } else if (media.type() == MediaType.File) { storageItem = new VLCStorageFile(media); } if (storageItem == null) { return; } await DispatchHelper.InvokeInUIThread(CoreDispatcherPriority.Normal, () => StorageItems.Add(storageItem)); } await DispatchHelper.InvokeInUIThread(CoreDispatcherPriority.Low, () => { OnPropertyChanged(nameof(StorageItems)); IsFolderEmpty = !StorageItems.Any(); IsLoadingFiles = false; }); } catch (Exception e) { Debug.WriteLine($"Exception when getting network files {e.ToString()}"); } }
public override async void Execute(object parameter) { var clickedItem = ((ItemClickEventArgs)parameter).ClickedItem; // For some reason, when clicking early while the page is loading, it seems we can click "null items" if (clickedItem == null) { return; } IVLCStorageItem storageItem = clickedItem as IVLCStorageItem; if (Locator.NavigationService.CurrentPage == VLCPage.MainPageFileExplorer) { await Locator.FileExplorerVM.CurrentStorageVM.NavigateTo(storageItem); } }
public override async Task NavigateTo(IVLCStorageItem storageItem) { var item = storageItem as VLCStorageFolder; if (item != null) { BackStack.Add(item); await GetFiles(); } else { var file = storageItem as VLCStorageFile; // TODO : Difference between audio and video, here ? Hint: i don't think so var video = MediaLibraryHelper.GetStreamItem(file); await Locator.PlaybackService.SetPlaylist(new List <IMediaItem> { video }); } OnPropertyChanged(nameof(CurrentFolderName)); }
public abstract Task NavigateTo(IVLCStorageItem storageItem);