/// <summary> /// Add the folder into the media library. /// </summary> public void AddFolder(string path) { // make sure the folder isnt already in the list bool exists = false; this.Foreach (delegate (TreeModel model, TreePath tree_path, TreeIter iter) { Folder node = (Folder) model.GetValue (iter, 0); if (node.Path == path) exists = true; return exists; }); // add the folder if it isnt already in the list if (exists) library.MainPage.ThrowError ("The folder is already in the library:\n" + path); else { Folder folder = new Folder (path); this.AppendValues (root_iter, folder); library.MainPage.DataManager.AddFolder (folder); // load the files within the directory Progress progress = new Progress (library.MediaBox); progress.Start (Utils.FileCount (path)); progress.Push ("Waiting in queue: " + Utils.GetFolderName (path)); // queue process delegate_queue.Enqueue (delegate { addDirRecurse (path, progress, folder); progress.End (); }); } }
// recursively add directories into the media library void addDirRecurse(string path, Progress progress, Folder folder) { // add all files within the directory foreach (string file in Directory.GetFiles (path)) { if (progress.Canceled) return; progress.Push ("Loading File: " + System.IO.Path.GetFileName (file)); library.MediaStore.AddMedia (file, folder); progress.Step (); } // recurse into directories, if any foreach (string dir in Directory.GetDirectories (path)) { if (progress.Canceled) return; addDirRecurse (dir, progress, folder); } }