/// <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();
            }
        }
示例#4
0
        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);
            }
        }
示例#5
0
        /// <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);
                }
            }
        }
示例#6
0
        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();
            }
        }
示例#7
0
        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();
            }
        }
示例#8
0
        /// <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];
                }
            }
        }