banshee r3999 - in trunk/banshee: . build src/Core/Banshee.Services/Banshee.Metadata.Embedded src/Core/Banshee.Services/Banshee.Metadata.Rhapsody src/Core/Banshee.ThickClient/Banshee.Gui.Widgets src/Extensions src/Extensions/Banshee.CoverArt



Author: jwillcox
Date: Wed May 28 16:09:02 2008
New Revision: 3999
URL: http://svn.gnome.org/viewvc/banshee?rev=3999&view=rev

Log:
2008-05-28  James Willcox  <snorp novell com>

        * src/Extensions/Extensions.mds:
        * src/Extensions/Banshee.CoverArt/CoverArtJob.cs:
        * src/Extensions/Banshee.CoverArt/Banshee.CoverArt.addin.xml:
        * src/Extensions/Banshee.CoverArt/Banshee.CoverArt.mdp:
        * src/Extensions/Banshee.CoverArt/CoverArtService.cs:
        * src/Extensions/Makefile.am:

        Add Banshee.CoverArt extension which allows user-initiated and
        automatic cover art fetching for the entire MusicLibrary.

        * src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs:
        Close the response when we're done with it, fixes some timeout
        issues when fetching many things at a time.

        * src/Core/Banshee.Services/Banshee.Metadata.Embedded/EmbeddedQueryJob.cs:
        Don't assume Track.Uri is set

        * build/build.environment.mk: Add refs for Banshee.CoverArt
        * extension
        * configure.ac:



Added:
   trunk/banshee/src/Extensions/Banshee.CoverArt/
   trunk/banshee/src/Extensions/Banshee.CoverArt/Banshee.CoverArt.addin.xml
   trunk/banshee/src/Extensions/Banshee.CoverArt/Banshee.CoverArt.mdp
   trunk/banshee/src/Extensions/Banshee.CoverArt/CoverArtJob.cs
   trunk/banshee/src/Extensions/Banshee.CoverArt/CoverArtService.cs
Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/build/build.environment.mk
   trunk/banshee/configure.ac
   trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Embedded/EmbeddedQueryJob.cs
   trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs
   trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs
   trunk/banshee/src/Extensions/Extensions.mds
   trunk/banshee/src/Extensions/Makefile.am

Modified: trunk/banshee/build/build.environment.mk
==============================================================================
--- trunk/banshee/build/build.environment.mk	(original)
+++ trunk/banshee/build/build.environment.mk	Wed May 28 16:09:02 2008
@@ -111,6 +111,7 @@
 REF_EXTENSION_AUDIOCD = $(LINK_BANSHEE_THICKCLIENT_DEPS) $(LINK_MUSICBRAINZ_DEPS)
 REF_EXTENSION_BOOKMARKS = $(LINK_BANSHEE_THICKCLIENT_DEPS)
 REF_EXTENSION_BOOSCRIPT = $(LINK_BANSHEE_THICKCLIENT_DEPS) $(LINK_BOO)
+REF_EXTENSION_COVERART = $(LINK_BANSHEE_THICKCLIENT_DEPS)
 REF_EXTENSION_DAAP = $(LINK_BANSHEE_THICKCLIENT_DEPS) $(LINK_ICSHARP_ZIP_LIB) $(LINK_MONO_ZEROCONF)
 REF_EXTENSION_MINIMODE = $(LINK_BANSHEE_THICKCLIENT_DEPS)
 REF_EXTENSION_MULTIMEDIAKEYS = $(LINK_BANSHEE_SERVICES_DEPS)

Modified: trunk/banshee/configure.ac
==============================================================================
--- trunk/banshee/configure.ac	(original)
+++ trunk/banshee/configure.ac	Wed May 28 16:09:02 2008
@@ -158,6 +158,7 @@
 src/Extensions/Banshee.AudioCd/Makefile
 src/Extensions/Banshee.Bookmarks/Makefile
 src/Extensions/Banshee.BooScript/Makefile
+src/Extensions/Banshee.CoverArt/Makefile
 src/Extensions/Banshee.Daap/Makefile
 src/Extensions/Banshee.Lastfm/Makefile
 src/Extensions/Banshee.MiniMode/Makefile

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Embedded/EmbeddedQueryJob.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Embedded/EmbeddedQueryJob.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Embedded/EmbeddedQueryJob.cs	Wed May 28 16:09:02 2008
@@ -60,7 +60,7 @@
         
         protected void Fetch()
         {
-            if (!track.Uri.IsFile)
+            if (track.Uri == null || !track.Uri.IsFile)
                 return;
 
             string artist_album_id = track.ArtworkId;

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs	Wed May 28 16:09:02 2008
@@ -75,6 +75,7 @@
             
             string [] content_types = response.Headers.GetValues ("Content-Type");
             if (content_types.Length == 0 || content_types[0] != "text/xml") {
+                response.Close ();
                 return;
             }
             
@@ -98,6 +99,8 @@
                     AddTag(tag);
                 }
             }
+            
+            response.Close ();
         }
     }
 }

Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs	(original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs	Wed May 28 16:09:02 2008
@@ -239,6 +239,15 @@
             if (icon_pixbuf != null) {
                 icon.Pixbuf = icon_pixbuf;
                 icon.Show ();
+                return;
+            }
+
+            icon_pixbuf = new Gdk.Pixbuf (icon_names[0]);
+            if (icon_pixbuf != null) {
+                Gdk.Pixbuf scaled = icon_pixbuf.ScaleSimple (22, 22, Gdk.InterpType.Bilinear);
+                icon_pixbuf.Dispose ();
+                icon.Pixbuf = scaled;
+                icon.Show ();
             }
         }
         

Added: trunk/banshee/src/Extensions/Banshee.CoverArt/Banshee.CoverArt.addin.xml
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Extensions/Banshee.CoverArt/Banshee.CoverArt.addin.xml	Wed May 28 16:09:02 2008
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Addin 
+    id="Banshee.CoverArt"
+    version="1.0"
+    compatVersion="1.0"
+    copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
+    name="Cover Art Fetching"
+    category="User Interface"
+    description="Provides UI to enable the user to fetch cover art"
+    author="James Willcox"
+    url="http://banshee-project.org/";
+    defaultEnabled="true">
+
+  <Dependencies>
+    <Addin id="Banshee.Services" version="1.0"/>
+    <Addin id="Banshee.ThickClient" version="1.0"/>
+    <Service name="InterfaceActionService"/>
+  </Dependencies>
+
+  <Extension path="/Banshee/ServiceManager/Service">
+    <Service class="Banshee.CoverArt.CoverArtService"/>
+  </Extension>
+
+
+</Addin>

Added: trunk/banshee/src/Extensions/Banshee.CoverArt/Banshee.CoverArt.mdp
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Extensions/Banshee.CoverArt/Banshee.CoverArt.mdp	Wed May 28 16:09:02 2008
@@ -0,0 +1,34 @@
+<Project name="Banshee.CoverArt" fileversion="2.0" language="C#" clr-version="Net_2_0" UseParentDirectoryAsNamespace="True" ctype="DotNetProject">
+  <Configurations active="Debug">
+    <Configuration name="Debug" ctype="DotNetProjectConfiguration">
+      <Output directory="../../../bin" assemblyKeyFile="." assembly="Banshee.CoverArt" />
+      <Build debugmode="True" target="Library" />
+      <Execution runwithwarnings="True" consolepause="True" runtime="MsNet" clr-version="Net_2_0" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+  </Configurations>
+  <Contents>
+    <File name="Banshee.CoverArt.addin.xml" subtype="Code" buildaction="EmbedAsResource" />
+    <File name="CoverArtService.cs" subtype="Code" buildaction="Compile" />
+    <File name="Resources/CoverArtMenu.xml" subtype="Code" buildaction="EmbedAsResource" />
+    <File name="CoverArtJob.cs" subtype="Code" buildaction="Compile" />
+  </Contents>
+  <References>
+    <ProjectReference type="Project" localcopy="True" refto="Banshee.Core" />
+    <ProjectReference type="Project" localcopy="True" refto="Banshee.Services" />
+    <ProjectReference type="Project" localcopy="True" refto="Hyena" />
+    <ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Project" localcopy="True" refto="Banshee.ThickClient" />
+    <ProjectReference type="Project" localcopy="True" refto="Hyena.Gui" />
+    <ProjectReference type="Gac" localcopy="True" refto="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  </References>
+  <MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="True" RelativeMakefileName="./Makefile.am">
+    <BuildFilesVar Sync="True" Name="SOURCES" />
+    <DeployFilesVar />
+    <ResourcesVar Sync="True" Name="RESOURCES" />
+    <OthersVar />
+    <GacRefVar />
+    <AsmRefVar />
+    <ProjectRefVar />
+  </MonoDevelop.Autotools.MakefileInfo>
+</Project>
\ No newline at end of file

Added: trunk/banshee/src/Extensions/Banshee.CoverArt/CoverArtJob.cs
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Extensions/Banshee.CoverArt/CoverArtJob.cs	Wed May 28 16:09:02 2008
@@ -0,0 +1,152 @@
+//
+// CoverArtJob.cs
+//
+// Authors:
+//   James Willcox <snorp novell com>
+//
+// Copyright (C) 2005-2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Threading;
+using Mono.Unix;
+
+using Banshee.Base;
+using Banshee.Collection;
+using Banshee.Collection.Gui;
+using Banshee.Kernel;
+using Banshee.Metadata;
+using Banshee.ServiceStack;
+using Banshee.Library;
+using Hyena;
+using Gtk;
+
+namespace Banshee.CoverArt
+{
+    public class CoverArtJob : UserJob, IJob
+    {
+        private const int BatchSize = 10;
+        
+        private DateTime last_scan = DateTime.MinValue;
+        
+        public CoverArtJob (DateTime lastScan) : base (Catalog.GetString ("Downloading Cover Art"))
+        {
+            last_scan = lastScan;
+            CanCancel = true;
+        }
+        
+        public void Start ()
+        {
+            Register ();
+            Scheduler.Schedule (this);
+        }
+        
+        private IDataReader RunQuery (int iteration, bool count)
+        {
+            string query = String.Format (@"
+                SELECT {0}, CoreAlbums.Title, CoreArtists.Name
+                FROM CoreAlbums, CoreArtists, CoreTracks
+                WHERE
+                    CoreAlbums.ArtistID = CoreArtists.ArtistID AND
+                    CoreTracks.AlbumID = CoreAlbums.AlbumID AND
+                    CoreTracks.DateUpdatedStamp > ? AND
+                    CoreTracks.PrimarySourceID = ?
+                    ORDER BY CoreAlbums.Title ASC
+                    LIMIT {1} OFFSET {2}
+                ", count ? "count(DISTINCT CoreAlbums.AlbumID)" : "DISTINCT CoreAlbums.AlbumID",
+                BatchSize, iteration * BatchSize);
+            
+            return ServiceManager.DbConnection.Query (query, last_scan,
+                                                      ServiceManager.SourceManager.MusicLibrary.DbId);
+        }
+        
+        private void FetchForTrack (TrackInfo track)
+        {       
+            IMetadataLookupJob job = MetadataService.Instance.CreateJob (track);
+            try {
+                job.Run ();
+                string cover_file = CoverArtSpec.GetPath (track.ArtworkId);
+
+                if (File.Exists (cover_file)) {                       
+                    IconNames = new string[] { cover_file };              
+                }
+            } catch (Exception e) {
+                Log.Exception (e);
+            }
+        }
+        
+        public void Run ()
+        {            
+            this.Status = Catalog.GetString ("Preparing...");
+            
+            int current_track_count = 0;
+            int total_track_count = 0;
+            int offset = 0;
+            using (IDataReader reader = RunQuery (offset, true)) {
+                if (reader.Read ()) {
+                    total_track_count = reader.GetInt32 (0);
+                }
+            }
+            
+            if (total_track_count == 0) {
+                Finish ();
+                return;
+            }
+
+            TrackInfo track = new TrackInfo ();
+
+            while (true) {
+                using (IDataReader reader = RunQuery (offset++, false)) {
+                    int batch_count = 0;
+                    while (reader.Read ()) {
+                        if (IsCancelRequested) {
+                            Finish ();
+                            return;
+                        }
+                        
+                        batch_count++;
+                        if (!CoverArtSpec.CoverExists (reader.GetString (2),
+                                                       reader.GetString (1))) {
+                            track.AlbumTitle = reader.GetString (1);
+                            track.ArtistName = reader.GetString (2);
+                            
+                            Log.DebugFormat ("Downloading cover art for: {0} - {1}", track.ArtistName, track.AlbumTitle);
+                            this.Progress = (double) current_track_count / (double) total_track_count;
+                            this.Status = String.Format (Catalog.GetString ("Downloading cover art for '{0}'"), track.AlbumTitle);
+                            FetchForTrack (track);
+                        }
+                        
+                        current_track_count++;
+                    }
+                    
+                    if (batch_count != BatchSize)
+                        break;
+                }
+            }
+            
+            Finish ();
+        }
+    }
+}

Added: trunk/banshee/src/Extensions/Banshee.CoverArt/CoverArtService.cs
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Extensions/Banshee.CoverArt/CoverArtService.cs	Wed May 28 16:09:02 2008
@@ -0,0 +1,191 @@
+//
+// CoverArtService.cs
+//
+// Authors:
+//   James Willcox <snorp novell com>
+//
+// Copyright (C) 2005-2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data;
+using Gtk;
+using Mono.Unix;
+
+using Banshee.Base;
+using Banshee.Collection;
+using Banshee.Collection.Database;
+using Banshee.ServiceStack;
+using Banshee.Configuration;
+using Banshee.Gui;
+using Banshee.Collection.Gui;
+using Banshee.Library;
+using Banshee.Metadata;
+using Banshee.Networking;
+using Banshee.Sources;
+using Hyena;
+
+namespace Banshee.CoverArt
+{
+    public class CoverArtService : IExtensionService
+    {
+        private InterfaceActionService action_service;
+		private ActionGroup actions;
+        private bool disposed;
+        private uint ui_manager_id;
+        
+        private CoverArtJob job;
+        
+        public CoverArtService ()
+        {
+        }
+        
+        void IExtensionService.Initialize ()
+        {
+            action_service = ServiceManager.Get<InterfaceActionService> ();
+            
+            if (!ServiceStartup ()) {
+                ServiceManager.SourceManager.SourceAdded += OnSourceAdded;
+            }
+        }
+        
+        private void OnSourceAdded (SourceAddedArgs args)
+        {
+            if (ServiceStartup ()) {
+                ServiceManager.SourceManager.SourceAdded -= OnSourceAdded;
+            }
+        }
+        
+        private bool ServiceStartup ()
+        {
+            if (action_service == null || ServiceManager.SourceManager.MusicLibrary == null) {
+                return false;
+            }
+            
+            Initialize ();
+            
+            return true;
+        }
+        
+        private void Initialize ()
+        {            
+            actions = new ActionGroup ("CoverArt");
+            
+            ActionEntry[] action_list = new ActionEntry [] {
+                new ActionEntry ("CoverArtAction", null,
+                    Catalog.GetString ("_Cover Art"), null,
+                    Catalog.GetString ("Manage cover art"), null),
+				new ActionEntry ("FetchCoverArtAction", null,
+                    Catalog.GetString ("_Download Cover Art"), null,
+                    Catalog.GetString ("Download cover art for all tracks"), OnFetchCoverArt)
+            };
+            
+            actions.Add (action_list);
+            
+            action_service.UIManager.InsertActionGroup (actions, 0);
+            ui_manager_id = action_service.UIManager.AddUiFromResource ("CoverArtMenu.xml");
+            
+            ServiceManager.SourceManager.MusicLibrary.TracksAdded += OnTracksAdded;
+            ServiceManager.SourceManager.MusicLibrary.TracksChanged += OnTracksChanged;
+        }
+        
+        public void Dispose ()
+        {
+            if (disposed) {
+                return;
+            }
+            
+            Gtk.Action fetch_action = action_service.GlobalActions["FetchCoverArtAction"];
+            if (fetch_action != null) {
+                action_service.GlobalActions.Remove (fetch_action);
+            }
+            
+            action_service.RemoveActionGroup ("CoverArt");
+            action_service.UIManager.RemoveUi (ui_manager_id);
+            
+            actions = null;
+            action_service = null;
+            
+            ServiceManager.SourceManager.MusicLibrary.TracksAdded -= OnTracksAdded;
+            ServiceManager.SourceManager.MusicLibrary.TracksChanged -= OnTracksChanged;
+            
+            disposed = true;
+        }
+        
+        public void FetchCoverArt ()
+        {
+            bool force = false;
+            if (!String.IsNullOrEmpty (Environment.GetEnvironmentVariable ("BANSHEE_FORCE_COVER_ART_FETCH"))) {
+                Log.Debug ("Forcing cover art download session");
+                force = true;                
+            }
+            
+            FetchCoverArt (force);
+        }
+        
+        public void FetchCoverArt (bool force)
+        {
+            if (job == null && NetworkDetect.Instance.Connected) {
+                DateTime last_scan = DateTime.MinValue;
+                
+                if (!force) {
+                    last_scan = DatabaseConfigurationClient.Client.Get<DateTime> ("last_cover_art_scan",
+                                                                                  DateTime.MinValue);
+                }
+                Log.DebugFormat ("Last cover art scan was '{0}'", last_scan);
+                job = new CoverArtJob (last_scan);
+                job.Finished += delegate {
+                    DatabaseConfigurationClient.Client.Set<DateTime> ("last_cover_art_scan",
+                                                                      DateTime.Now);
+                    job = null;
+                };
+                job.Start ();
+            }
+        }
+        
+        private void OnFetchCoverArt (object o, EventArgs args)
+        {
+            FetchCoverArt ();
+        }
+        
+        private void OnTracksAdded (Source sender, TrackEventArgs args)
+        {
+            FetchCoverArt ();
+        }
+        
+        private void OnTracksChanged (Source sender, TrackEventArgs args)
+        {
+            FetchCoverArt ();
+        }
+    
+        string IService.ServiceName {
+            get { return "CoverArtService"; }
+        }
+        
+        public static readonly SchemaEntry<bool> EnabledSchema = new SchemaEntry<bool> (
+            "plugins.cover_art", "enabled",
+            true,
+            "Plugin enabled",
+            "Cover art plugin enabled"
+        );
+    }
+}

Modified: trunk/banshee/src/Extensions/Extensions.mds
==============================================================================
--- trunk/banshee/src/Extensions/Extensions.mds	(original)
+++ trunk/banshee/src/Extensions/Extensions.mds	Wed May 28 16:09:02 2008
@@ -13,6 +13,7 @@
       <Entry build="True" name="Banshee.Podcasting" configuration="Debug" />
       <Entry build="True" name="Banshee.Sample" configuration="Debug" />
       <Entry build="True" name="Banshee.BooScript" configuration="Debug" />
+      <Entry build="True" name="Banshee.CoverArt" configuration="Debug" />
     </Configuration>
   </Configurations>
   <StartMode startupentry="Banshee.Daap" single="True">
@@ -28,6 +29,7 @@
     <Execute type="None" entry="Banshee.Podcasting" />
     <Execute type="None" entry="Banshee.Sample" />
     <Execute type="None" entry="Banshee.BooScript" />
+    <Execute type="None" entry="Banshee.CoverArt" />
   </StartMode>
   <Entries>
     <Entry filename="Banshee.Daap/Banshee.Daap.mdp" />
@@ -42,5 +44,6 @@
     <Entry filename="Banshee.Podcasting/Banshee.Podcasting.mdp" />
     <Entry filename="Banshee.Sample/Banshee.Sample.mdp" />
     <Entry filename="Banshee.BooScript/Banshee.BooScript.mdp" />
+    <Entry filename="Banshee.CoverArt/Banshee.CoverArt.mdp" />
   </Entries>
 </Combine>
\ No newline at end of file

Modified: trunk/banshee/src/Extensions/Makefile.am
==============================================================================
--- trunk/banshee/src/Extensions/Makefile.am	(original)
+++ trunk/banshee/src/Extensions/Makefile.am	Wed May 28 16:09:02 2008
@@ -2,6 +2,7 @@
 	Banshee.AudioCd \
 	Banshee.Bookmarks \
 	Banshee.BooScript \
+	Banshee.CoverArt \
 	Banshee.Daap \
 	Banshee.Lastfm \
 	Banshee.MiniMode \



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