[banshee] [FileSystemQueue] Delete from drive command (bgo#609100)



commit 0bbb4145f506f32e3446f54c4107fefb2444aa74
Author: Andrés G. Aragoneses <knocte gmail com>
Date:   Sun Feb 7 20:29:26 2010 +1100

    [FileSystemQueue] Delete from drive command (bgo#609100)
    
    Signed-off-by: Alexander Kojevnikov <alexander kojevnikov com>

 .../Banshee.Library/LibrarySource.cs               |   11 -----------
 .../Banshee.Sources/PrimarySource.cs               |   11 ++++++++++-
 .../Banshee.Gui/TrackActions.cs                    |    4 +++-
 .../FileSystemQueueSource.cs                       |    7 ++-----
 4 files changed, 15 insertions(+), 18 deletions(-)
---
diff --git a/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs b/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs
index c55ea11..c09382c 100644
--- a/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs
+++ b/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs
@@ -118,17 +118,6 @@ namespace Banshee.Library
             Banshee.IO.File.Copy (track.Uri, uri, false);
         }*/
 
-        protected override bool DeleteTrack (DatabaseTrackInfo track)
-        {
-            try {
-                Banshee.IO.Utilities.DeleteFileTrimmingParentDirectories (track.Uri);
-            } catch (System.IO.FileNotFoundException) {
-            } catch (System.IO.DirectoryNotFoundException) {
-            }
-
-            return true;
-        }
-
         protected override void AddTrack (DatabaseTrackInfo track)
         {
             // Ignore if already have it
diff --git a/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs b/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs
index 1dc248c..59a6266 100644
--- a/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs
+++ b/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs
@@ -545,7 +545,16 @@ namespace Banshee.Sources
 
         protected virtual bool DeleteTrack (DatabaseTrackInfo track)
         {
-            throw new Exception ("PrimarySource DeleteTrack method not implemented");
+            if (!track.Uri.IsLocalPath)
+                throw new Exception ("Cannot delete a non-local resource: " + track.Uri.Scheme);
+
+            try {
+                Banshee.IO.Utilities.DeleteFileTrimmingParentDirectories (track.Uri);
+            } catch (System.IO.FileNotFoundException) {
+            } catch (System.IO.DirectoryNotFoundException) {
+            }
+
+            return true;
         }
 
         public override bool AcceptsInputFromSource (Source source)
diff --git a/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs b/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
index 775f0d4..fde8ee8 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
@@ -237,7 +237,9 @@ namespace Banshee.Gui
                     UpdateAction ("AddToPlaylistAction", in_database && primary_source != null &&
                             primary_source.SupportsPlaylists && !primary_source.PlaylistsReadOnly, has_selection, null);
 
-                    if (primary_source != null && !(primary_source is LibrarySource)) {
+                    if (primary_source != null &&
+                        !(primary_source is LibrarySource) &&
+                        primary_source.StorageName != null) {
                         this["DeleteTracksFromDriveAction"].Label = String.Format (
                             Catalog.GetString ("_Delete From \"{0}\""), primary_source.StorageName);
                     }
diff --git a/src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs b/src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs
index 4f2084d..a5e799c 100644
--- a/src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs
+++ b/src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs
@@ -106,6 +106,8 @@ namespace Banshee.FileSystemQueue
                     Enqueue (Path.GetFullPath (path));
                 }
             }
+
+            StorageName = null;
         }
 
         public void Enqueue (string path)
@@ -198,11 +200,6 @@ namespace Banshee.FileSystemQueue
             }
         }
 
-        // until we implement DeleteTrack, at least
-        public override bool CanDeleteTracks {
-            get { return false; }
-        }
-
         public override void Dispose ()
         {
             ServiceManager.Get<DBusCommandService> ().ArgumentPushed -= OnCommandLineArgument;



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