[banshee] [ImportManager] Add SkipHiddenChildren property



commit 58692ed7eb2ca9595eba68ec44326b66bfcf9924
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Tue Jul 27 03:22:37 2010 -0700

    [ImportManager] Add SkipHiddenChildren property
    
    By default we skip directories and files that start with ".", but this
    lets you override that.

 .../Banshee.IO/DirectoryScannerPipelineElement.cs  |   13 ++++++++++---
 .../Banshee.Collection/ImportManager.cs            |    4 ++++
 2 files changed, 14 insertions(+), 3 deletions(-)
---
diff --git a/src/Core/Banshee.Core/Banshee.IO/DirectoryScannerPipelineElement.cs b/src/Core/Banshee.Core/Banshee.IO/DirectoryScannerPipelineElement.cs
index 80da60a..5125fbe 100644
--- a/src/Core/Banshee.Core/Banshee.IO/DirectoryScannerPipelineElement.cs
+++ b/src/Core/Banshee.Core/Banshee.IO/DirectoryScannerPipelineElement.cs
@@ -37,6 +37,11 @@ namespace Banshee.IO
 {
     public class DirectoryScannerPipelineElement : QueuePipelineElement<string>
     {
+        public DirectoryScannerPipelineElement ()
+        {
+            SkipHiddenChildren = true;
+        }
+
         protected override string ProcessItem (string item)
         {
             try {
@@ -48,6 +53,8 @@ namespace Banshee.IO
             return null;
         }
 
+        public bool SkipHiddenChildren { get; set; }
+
         private readonly HashSet<string> visited_dirs = new HashSet<string> ();
         private void ScanForFiles (string source, bool skip_hidden)
         {
@@ -67,7 +74,7 @@ namespace Banshee.IO
 
             if (is_regular_file) {
                 try {
-                    if (!Path.GetFileName (source).StartsWith (".")) {
+                    if (!skip_hidden || !Path.GetFileName (source).StartsWith (".")) {
                         EnqueueDownstream (source);
                     }
                 } catch (System.ArgumentException) {
@@ -79,12 +86,12 @@ namespace Banshee.IO
                         visited_dirs.Add (source);
                         try {
                             foreach (string file in Banshee.IO.Directory.GetFiles (source)) {
-                                ScanForFiles (file, true);
+                                ScanForFiles (file, SkipHiddenChildren);
                             }
 
                             foreach (string directory in Banshee.IO.Directory.GetDirectories (source)) {
                                 if (!visited_dirs.Contains (directory)) {
-                                    ScanForFiles (directory, true);
+                                    ScanForFiles (directory, SkipHiddenChildren);
                                 }
                             }
                         } catch (Exception e) {
diff --git a/src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs b/src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs
index 11518bb..4898342 100644
--- a/src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs
+++ b/src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs
@@ -252,6 +252,10 @@ namespace Banshee.Collection
             set { import_element.Threaded = scanner_element.Threaded = value; }
         }
 
+        public bool SkipHiddenChildren {
+            set { scanner_element.SkipHiddenChildren = value; }
+        }
+
         protected int TotalCount {
             get { return import_element == null ? 0 : import_element.TotalCount; }
         }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]