コード例 #1
0
ファイル: Store.cs プロジェクト: gsterjov/fusemc
        /// <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 ();
                });
            }
        }
コード例 #2
0
ファイル: Store.cs プロジェクト: gsterjov/fusemc
        // 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);
            }
        }