private async Task GetSubfoldersAsync(SubfolderViewModel activeSubfolder) { this.Subfolders = null; // Required to correctly reset the selectedSubfolder this.SubfolderBreadCrumbs = null; this.activeSubfolderPath = string.Empty; if (this.selectedFolder != null) { this.Subfolders = new ObservableCollection <SubfolderViewModel>(await this.foldersService.GetSubfoldersAsync(this.selectedFolder, activeSubfolder)); this.activeSubfolderPath = this.subfolders.Count > 0 && this.subfolders.Any(x => x.IsGoToParent) ? this.subfolders.Where(x => x.IsGoToParent).First().Path : this.selectedFolder.Path; this.SubfolderBreadCrumbs = new ObservableCollection <SubfolderBreadCrumbViewModel>(await this.foldersService.GetSubfolderBreadCrumbsAsync(this.selectedFolder, this.activeSubfolderPath)); await this.GetTracksAsync(); await this.foldersService.SetPlayingSubFolderAsync(this.Subfolders); } }
public async Task <IList <SubfolderViewModel> > GetSubfoldersAsync(FolderViewModel selectedRootFolder, SubfolderViewModel selectedSubfolder) { // If no root folder is selected, return no subfolders. if (selectedRootFolder == null) { return(new List <SubfolderViewModel>()); } IList <SubfolderViewModel> subFolders = new List <SubfolderViewModel>(); await Task.Run(() => { string[] directories = null; if (selectedSubfolder == null) { // If no subfolder is selected, return the subfolders of the root folder. directories = Directory.GetDirectories(selectedRootFolder.Path); } else { string subfolderPathToBrowse = selectedSubfolder.Path; // If the ".." subfolder is selected, go to the parent folder. if (selectedSubfolder.IsGoToParent) { subfolderPathToBrowse = Directory.GetParent(selectedSubfolder.Path).FullName; } // If we're not browing the root folder, show a folder to go up 1 level. if (!subfolderPathToBrowse.ToSafePath().Equals(selectedRootFolder.SafePath)) { subFolders.Add(new SubfolderViewModel(subfolderPathToBrowse, true)); } // Return the subfolders of the selected subfolder directories = Directory.GetDirectories(subfolderPathToBrowse); } if (directories != null) { foreach (string directory in directories) { subFolders.Add(new SubfolderViewModel(directory, false)); } } }); return(subFolders); }
public async Task <IList <SubfolderViewModel> > GetSubfoldersAsync(FolderViewModel selectedRootFolder, SubfolderViewModel selectedSubfolder) { // If no root folder is selected, return no subfolders. if (selectedRootFolder == null) { return(new List <SubfolderViewModel>()); } IList <SubfolderViewModel> subFolders = new List <SubfolderViewModel>(); await Task.Run(() => { string[] directories = null; if (selectedSubfolder == null) { try { // If no subfolder is selected, return the subfolders of the root folder. if (Directory.Exists(selectedRootFolder.Path)) { directories = Directory.GetDirectories(selectedRootFolder.Path); } } catch (Exception ex) { LogClient.Error($"Could not get directories for root folder. Exception: {ex.Message}"); } } else { if (Directory.Exists(selectedSubfolder.Path)) { try { string subfolderPathToBrowse = selectedSubfolder.Path; // If the ".." subfolder is selected, go to the parent folder. if (selectedSubfolder.IsGoToParent) { subfolderPathToBrowse = Directory.GetParent(selectedSubfolder.Path).FullName; } // If we're not browing the root folder, show a folder to go up 1 level. if (!subfolderPathToBrowse.Equals(selectedRootFolder.Path)) { subFolders.Add(new SubfolderViewModel(subfolderPathToBrowse, true)); } // Return the subfolders of the selected subfolder directories = Directory.GetDirectories(subfolderPathToBrowse); } catch (Exception ex) { LogClient.Error($"Could not get directories for sub folder. Exception: {ex.Message}"); } } } if (directories != null) { foreach (string directory in directories) { subFolders.Add(new SubfolderViewModel(directory, false)); } } }); return(subFolders); }