[banshee] Dap.MassStorage: Add FolderSeparator property to devices



commit dd1917cade76804d35d04e40f06cb39356936be3
Author: William Witt <william witt-family net>
Date:   Sun Jan 22 15:31:57 2012 +0000

    Dap.MassStorage: Add FolderSeparator property to devices
    
    Fetch FolderSeparator from .mpi file or from
    .is_audio_player file (expect either "DOS" or nothing)
    in the hardware layer, and add a property for its
    value in MassStorageDevice class.
    
    This is part of the fix for bgo#587964.

 .../DeviceMediaCapabilities.cs                     |   20 ++++++++++++++++++--
 .../Banshee.Hardware/IDeviceMediaCapabilities.cs   |    1 +
 .../Banshee.Dap.MassStorage/MassStorageDevice.cs   |   16 ++++++++++++++++
 3 files changed, 35 insertions(+), 2 deletions(-)
---
diff --git a/src/Backends/Banshee.Gio/Banshee.Hardware.Gio/DeviceMediaCapabilities.cs b/src/Backends/Banshee.Gio/Banshee.Hardware.Gio/DeviceMediaCapabilities.cs
index e4c1611..43d744f 100644
--- a/src/Backends/Banshee.Gio/Banshee.Hardware.Gio/DeviceMediaCapabilities.cs
+++ b/src/Backends/Banshee.Gio/Banshee.Hardware.Gio/DeviceMediaCapabilities.cs
@@ -95,6 +95,10 @@ namespace Banshee.Hardware.Gio
             }
         }
 
+        public char FolderSeparator {
+            get { return mpi.FolderSeparator; }
+        }
+
 
         public bool IsType (string type)
         {
@@ -170,6 +174,8 @@ namespace Banshee.Hardware.Gio
                 get; private set;
             }
 
+            public char FolderSeparator { get; private set; }
+
             public string[] AccessProtocols {
                 get; private set;
             }
@@ -218,8 +224,17 @@ namespace Banshee.Hardware.Gio
                     }
                 }
 
-                if (mpi_file.HasGroup (PlaylistGroup) && mpi_file.HasKey (PlaylistGroup, "Formats")) {
-                    PlaylistFormats = mpi_file.GetStringList (PlaylistGroup, "Formats") ?? new string [] {};
+                if (mpi_file.HasGroup (PlaylistGroup)) {
+                    if (mpi_file.HasKey (PlaylistGroup, "Formats")) {
+                        PlaylistFormats = mpi_file.GetStringList (PlaylistGroup, "Formats") ?? new string [] {};
+                    }
+
+                    if (mpi_file.HasKey (PlaylistGroup, "FolderSeparator")) {
+                        string folder_separator = mpi_file.GetString (PlaylistGroup, "FolderSeparator");
+                        if (folder_separator == "DOS") {
+                            FolderSeparator = '\\';
+                        }
+                    }
                 }
 
                 if (mpi_file.HasGroup (DeviceGroup) && mpi_file.HasKey (DeviceGroup, "AccessProtocols")) {
@@ -236,6 +251,7 @@ namespace Banshee.Hardware.Gio
                 OutputFormats = new string[] {};
                 PlaylistFormats = new string[] {};
                 AccessProtocols = new string[] {};
+                FolderSeparator = '/';
             }
         }
     }
diff --git a/src/Core/Banshee.Services/Banshee.Hardware/IDeviceMediaCapabilities.cs b/src/Core/Banshee.Services/Banshee.Hardware/IDeviceMediaCapabilities.cs
index 3f3de49..874ff6e 100644
--- a/src/Core/Banshee.Services/Banshee.Hardware/IDeviceMediaCapabilities.cs
+++ b/src/Core/Banshee.Services/Banshee.Hardware/IDeviceMediaCapabilities.cs
@@ -42,6 +42,7 @@ namespace Banshee.Hardware
         string [] PlaylistFormats { get; }
         string PlaylistPath { get; }
         string [] PlaybackMimeTypes { get; }
+        char FolderSeparator { get; }
         bool IsType (string type);
     }
 }
diff --git a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageDevice.cs b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageDevice.cs
index 351ed70..2da4448 100644
--- a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageDevice.cs
+++ b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageDevice.cs
@@ -122,6 +122,13 @@ namespace Banshee.Dap.MassStorage
             playlist_formats = MergeValues ("playlist_formats", config, DefaultPlaylistFormats);
             playlist_path = GetPreferredValue ("playlist_path", config, DefaultPlaylistPath);
             folder_depth = GetPreferredValue ("folder_depth", config, DefaultFolderDepth);
+
+            string preferred_folder_separator = GetPreferredValue ("folder_separator", config, DefaultFolderSeparator);
+            if (preferred_folder_separator == "\\" || preferred_folder_separator == "DOS") {
+               folder_separator = '\\';
+            } else {
+                folder_separator = '/';
+            }
         }
 
         private string[] MergeValues (string key, IDictionary<string, string[]> config, string[] defaultValues)
@@ -200,6 +207,15 @@ namespace Banshee.Dap.MassStorage
             get { return FolderDepth; }
         }
 
+        protected virtual string DefaultFolderSeparator {
+            get { return null; }
+        }
+
+        private char folder_separator;
+        public virtual char FolderSeparator {
+            get { return folder_separator; }
+        }
+
         protected virtual string [] DefaultAudioFolders {
             get { return new string[0]; }
         }



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