/// <summary> /// Add item to root folder combo box /// </summary> /// <param name="rootFolder"></param> private void AddRootFolderFilterItems(ContentRootFolder rootFolder) { this.FolderFilters.Add("Non-recursive: " + rootFolder.FullPath); foreach (ContentRootFolder child in rootFolder.ChildFolders) { AddRootFolderFilterItems(child); } }
private void ContentRootFolder_UpdateProgressChange(object sender, OrgProgressChangesEventArgs e) { ContentRootFolder folder = sender as ContentRootFolder; if (folder.ContentType == this.contentType) { contentUpdated = false; UpdateProgressSafe(e.ProgressPercentage, (string)e.UserState, e.ProgressPercentage < 100); } }
private void ContentRootFolder_UpdateProgressComplete(object sender, EventArgs e) { ContentRootFolder folder = sender as ContentRootFolder; if (folder.ContentType == this.contentType) { contentUpdated = true; UpdateGenresComboBoxSafe(); } }
private void UpdateMovieFolderItem(ContentRootFolder folder) { MenuItem item = new MenuItem(); item.Header = folder.FullPath; item.Command = new RelayCommand(param => this.SetMovieFolder(folder.FullPath)); this.MovieFolderItems.Add(item); foreach (ContentRootFolder subFolder in folder.ChildFolders) { UpdateMovieFolderItem(subFolder); } }
/// <summary> /// Clear default flag on all folders except for one (the new default). /// </summary> /// <param name="exception">Folder to allow default flag to be on.</param> /// <param name="folders">List of content folders to clear default on</param> private void ClearDefault(ContentRootFolder exception, ObservableCollection <ContentRootFolder> folders) { // Go thorough all content folders in list foreach (ContentRootFolder folder in folders) { // Clear default flag if not exception if (folder != exception) { folder.Default = false; } // Recursion of sub-content folders if (folder.ChildFolders.Count > 0) { ClearDefault(exception, folder.ChildFolders); } } }
private void AddFolder() { // Open folder browser VistaFolderBrowserDialog folderSel = new VistaFolderBrowserDialog(); // Add folder if valid folder selected if (folderSel.ShowDialog() == true && System.IO.Directory.Exists(folderSel.SelectedPath)) { ContentRootFolder folder = new ContentRootFolder(this.ContentType, folderSel.SelectedPath, folderSel.SelectedPath); if (RootFolders.Count == 0) { folder.Default = true; } folder.PropertyChanged += cloneFolder_PropertyChanged; RootFolders.Add(folder); UpdateAvailableFolders(); } }
private void AddChild() { if (this.SelectedRootFolder != null) { // Get list of sub-directories in content folder string[] subDirs = this.SelectedRootFolder.GetFolderSubDirectoryNamesThatArentChildren().ToArray(); // open selection form to allow user to chose a sub-folder SelectionWindow selForm = new SelectionWindow("Select Folder", subDirs); selForm.ShowDialog(); // If selection is valid set sub-folder as sub-content folder if (!string.IsNullOrEmpty(selForm.Results)) { ContentRootFolder newChild = new ContentRootFolder(this.ContentType, selForm.Results, System.IO.Path.Combine(this.SelectedRootFolder.FullPath, selForm.Results)); newChild.PropertyChanged += cloneFolder_PropertyChanged; this.SelectedRootFolder.ChildFolders.Add(newChild); } UpdateAvailableFolders(); } }
/// <summary> /// Recursive search to remove folder /// </summary> /// <param name="selFolder">Folder to remove</param> /// <param name="folders">List of folders to look for folder to remove in</param> /// <returns>True if folder was removed</returns> private bool RemoveFolder(ContentRootFolder selFolder, ObservableCollection <ContentRootFolder> folders) { // Loop through folders if (folders.Contains(selFolder)) { folders.Remove(selFolder); return(true); } for (int i = 0; i < folders.Count; i++) { // Check sub-folders if (RemoveFolder(selFolder, folders[i].ChildFolders)) { return(true); } } // Folder not removed yet return(false); }
/// <summary> /// Updates contents from Organization based on selected folder. /// </summary> public void UpdateContent() { // Save current selection from listview Content currentSel = this.SelectedContent; // Get selected folder ContentRootFolder folderName = this.SelectedFolder; // Get root folders bool recursive; List <ContentRootFolder> selRootFolders = GetFilteredRootFolders(out recursive); bool genreFilterEnable; GenreCollection genreFilter = GetSelectedGenres(out genreFilterEnable); // Set contents for listview List <Content> contents = Organization.GetContentFromRootFolders(selRootFolders, recursive, genreFilterEnable, genreFilter, this.YearFilterEnable, this.YearFilterStart, this.YearFilterStop, this.NameFilter); Contents.Clear(); foreach (Content content in contents) { this.Contents.Add(content); } }
/// <summary> /// Update Genres in combo box based on what genres are actually in the content displayed /// </summary> private void UpdateGenresComboBox() { // Save current selection string selGenre = this.SelectedGenreFilter; // Get selected folder ContentRootFolder selFolder = this.SelectedFolder; if (selFolder == null) { return; } // Add all available genres GenreCollection genres = null; switch (this.contentType) { case ContentType.Movie: if (selFolder.FullPath == "All") { genres = Organization.AllMovieGenres; } else { genres = selFolder.GetGenres(); } break; case ContentType.TvShow: if (selFolder.FullPath == "All") { genres = Organization.AllTvGenres; } else { genres = selFolder.GetGenres(); } break; default: throw new Exception("Unknown content type"); } // Check if genres haves changes bool changed = genres.Count != this.GenreFilters.Count; if (!changed) { foreach (string genre in genres) { if (!this.GenreFilters.Contains(genre)) { changed = true; break; } } } // Add genres to combo box if (changed) { this.GenreFilters.Clear(); this.GenreFilters.Add("All Genres"); lock (genres.AccessLock) foreach (string genre in genres) { this.GenreFilters.Add(genre); } // Set default selection if needed if (!string.IsNullOrEmpty(selGenre) && this.GenreFilters.Contains(selGenre)) { this.SelectedGenreFilter = selGenre; } else { this.SelectedGenreFilter = this.GenreFilters[0]; } } }