[banshee] CoverArtService: Prune CoverArtDownloads table when removing tracks



commit 9731c722117dd8e58e3dc2da5065773df3915973
Author: Age Bosma <agebosma gmail com>
Date:   Thu Oct 6 18:53:11 2011 +0200

    CoverArtService: Prune CoverArtDownloads table when removing tracks
    
    This makes sure the content of the CoverArtDownloads stays in sync when
    an album is removed. Fixes bgo#658803.
    
    Signed-off-by: Bertrand Lorentz <bertrand lorentz gmail com>

 .../Banshee.CoverArt/CoverArtService.cs            |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)
---
diff --git a/src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs b/src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs
index e0cedcc..e57091d 100644
--- a/src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs
+++ b/src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs
@@ -33,6 +33,7 @@ using Gtk;
 using Mono.Unix;
 
 using Hyena;
+using Hyena.Data.Sqlite;
 
 using Banshee.Base;
 using Banshee.Collection;
@@ -96,6 +97,7 @@ namespace Banshee.CoverArt
         {
             ServiceManager.SourceManager.MusicLibrary.TracksAdded += OnTracksAdded;
             ServiceManager.SourceManager.MusicLibrary.TracksChanged += OnTracksChanged;
+            ServiceManager.SourceManager.MusicLibrary.TracksDeleted += OnTracksDeleted;
             FetchCoverArt ();
         }
 
@@ -107,6 +109,7 @@ namespace Banshee.CoverArt
 
             ServiceManager.SourceManager.MusicLibrary.TracksAdded -= OnTracksAdded;
             ServiceManager.SourceManager.MusicLibrary.TracksChanged -= OnTracksChanged;
+            ServiceManager.SourceManager.MusicLibrary.TracksDeleted -= OnTracksDeleted;
 
             disposed = true;
         }
@@ -168,6 +171,14 @@ namespace Banshee.CoverArt
             }
         }
 
+        private static HyenaSqliteCommand delete_query = new HyenaSqliteCommand (
+            "DELETE FROM CoverArtDownloads WHERE AlbumID NOT IN (SELECT AlbumID FROM CoreAlbums)");
+
+        private void OnTracksDeleted (Source sender, TrackEventArgs args)
+        {
+            ServiceManager.DbConnection.Execute (delete_query);
+        }
+
         string IService.ServiceName {
             get { return "CoverArtService"; }
         }



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