[banshee] Dap.MassStorage: M3U playlist support for DOS folder separator



commit 52b5657c5e6a893d99e66febd0b49ed9ed2cdf19
Author: William Witt <william witt-family net>
Date:   Sun Jan 22 15:43:54 2012 +0000

    Dap.MassStorage: M3U playlist support for DOS folder separator
    
    Updates PlaylistFormat to include a FolderSeparator property, and
    adds DOS folder separator support to M3U playlists.
    Fixes bgo#587964.

 .../Banshee.Playlists.Formats/IPlaylistFormat.cs   |    1 +
 .../Banshee.Playlists.Formats/M3uPlaylistFormat.cs |    9 ++++++++-
 .../PlaylistFormatBase.cs                          |    2 ++
 .../Banshee.Dap.MassStorage/MassStorageSource.cs   |    1 +
 4 files changed, 12 insertions(+), 1 deletions(-)
---
diff --git a/src/Core/Banshee.Services/Banshee.Playlists.Formats/IPlaylistFormat.cs b/src/Core/Banshee.Services/Banshee.Playlists.Formats/IPlaylistFormat.cs
index a8076e5..98d8114 100644
--- a/src/Core/Banshee.Services/Banshee.Playlists.Formats/IPlaylistFormat.cs
+++ b/src/Core/Banshee.Services/Banshee.Playlists.Formats/IPlaylistFormat.cs
@@ -46,5 +46,6 @@ namespace Banshee.Playlists.Formats
 
         Uri BaseUri { get; set; }
         string Title { get; set; }
+        char FolderSeparator { get; set; }
     }
 }
diff --git a/src/Core/Banshee.Services/Banshee.Playlists.Formats/M3uPlaylistFormat.cs b/src/Core/Banshee.Services/Banshee.Playlists.Formats/M3uPlaylistFormat.cs
index 480d996..d7ac56d 100644
--- a/src/Core/Banshee.Services/Banshee.Playlists.Formats/M3uPlaylistFormat.cs
+++ b/src/Core/Banshee.Services/Banshee.Playlists.Formats/M3uPlaylistFormat.cs
@@ -40,6 +40,9 @@ namespace Banshee.Playlists.Formats
 {
     public class M3uPlaylistFormat : PlaylistFormatBase
     {
+        private const char DosFolderSeparator = '\\';
+        private const char UnixFolderSeparator = '/';
+
         public static readonly PlaylistFormatDescription FormatDescription = new PlaylistFormatDescription(
             typeof(M3uPlaylistFormat), MagicHandler, Catalog.GetString("MPEG Version 3.0 Extended (*.m3u)"),
             "m3u", new string [] {"audio/x-mpegurl", "audio/m3u", "audio/mpeg-url"});
@@ -122,7 +125,11 @@ namespace Banshee.Playlists.Formats
                     }
 
                     writer.WriteLine("#EXTINF:{0},{1} - {2}", duration, track.DisplayArtistName, track.DisplayTrackTitle);
-                    writer.WriteLine(ExportUri(track.Uri));
+                    string trackpath = ExportUri (track.Uri);
+                    if (FolderSeparator == DosFolderSeparator) {
+                        trackpath = trackpath.Replace (UnixFolderSeparator, DosFolderSeparator);
+                    }
+                    writer.WriteLine( trackpath );
                 }
             }
         }
diff --git a/src/Core/Banshee.Services/Banshee.Playlists.Formats/PlaylistFormatBase.cs b/src/Core/Banshee.Services/Banshee.Playlists.Formats/PlaylistFormatBase.cs
index 6ff3e44..d84b89c 100644
--- a/src/Core/Banshee.Services/Banshee.Playlists.Formats/PlaylistFormatBase.cs
+++ b/src/Core/Banshee.Services/Banshee.Playlists.Formats/PlaylistFormatBase.cs
@@ -132,5 +132,7 @@ namespace Banshee.Playlists.Formats
             get { return title; }
             set { title = value; }
         }
+
+        public virtual char FolderSeparator { get; set; }
     }
 }
diff --git a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs
index 3b274f7..3e23b30 100644
--- a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs
+++ b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs
@@ -330,6 +330,7 @@ namespace Banshee.Dap.MassStorage
                     from.Reload ();
                     if (playlist_format == null) {
                         playlist_format = Activator.CreateInstance (PlaylistTypes[0].Type) as PlaylistFormatBase;
+                        playlist_format.FolderSeparator = MediaCapabilities.FolderSeparator;
                     }
 
                     SafeUri playlist_path = new SafeUri (System.IO.Path.Combine (



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