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);
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }