banshee r4502 - in trunk/banshee: . build src/Backends/Banshee.GStreamer src/Backends/Banshee.Gnome src/Backends/Banshee.Hal src/Backends/Banshee.NowPlaying.X11 src/Backends/Banshee.Unix src/Clients/Beroe src/Clients/Beroe/Beroe src/Clients/Muinshee src/Clients/Nereid src/Core/Banshee.Core src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Core/Banshee.Configuration src/Core/Banshee.Services src/Core/Banshee.Services/Banshee.Collection.Database src/Core/Banshee.Services/Banshee.Collection.Indexer src/Core/Banshee.Services/Banshee.Configuration src/Core/Banshee.Services/Banshee.Library src/Core/Banshee.Services/Banshee.ServiceStack src/Core/Banshee.Services/Banshee.Sources src/Core/Banshee.ThickClient/Banshee.Gui src/Core/Banshee.Widgets src/Dap/Banshee.Dap src/Dap/Banshee.Dap.Ipod src/Dap/Banshee.Dap.MassStorage src/Dap/Banshee.Dap.Mtp src/Extensions/Banshee.AudioCd src/Extensions/Banshee.AudioCd/Banshee.AudioCd src/Extensions/Banshee.BooScript src/Extensions/ Banshee.Bookmarks src/Extensions/Banshee.CoverArt src/Extensions/Banshee.Daap src/Extensions/Banshee.FileSystemQueue src/Extensions/Banshee.InternetRadio src/Extensions/Banshee.Lastfm src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio src/Extensions/Banshee.MediaWeb src/Extensions/Banshee.MiniMode src/Extensions/Banshee.MultimediaKeys src/Extensions/Banshee.NotificationArea src/Extensions/Banshee.NowPlaying src/Extensions/Banshee.PlayQueue src/Extensions/Banshee.Sample src/Extensions/Banshee.SqlDebugConsole src/Extensions/Banshee.Torrent src/Libraries/Hyena src/Libraries/Hyena.Gui src/Libraries/Hyena/Hyena src/Libraries/Hyena/Hyena.Data.Sqlite src/Libraries/Hyena/Hyena.Query src/Libraries/Lastfm src/Libraries/Lastfm.Gui src/Libraries/Migo src/Libraries/Migo/Migo.Syndication src/Libraries/Mono.Media src/Libraries/Mtp src/Libraries/MusicBrainz
- From: abock svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r4502 - in trunk/banshee: . build src/Backends/Banshee.GStreamer src/Backends/Banshee.Gnome src/Backends/Banshee.Hal src/Backends/Banshee.NowPlaying.X11 src/Backends/Banshee.Unix src/Clients/Beroe src/Clients/Beroe/Beroe src/Clients/Muinshee src/Clients/Nereid src/Core/Banshee.Core src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Core/Banshee.Configuration src/Core/Banshee.Services src/Core/Banshee.Services/Banshee.Collection.Database src/Core/Banshee.Services/Banshee.Collection.Indexer src/Core/Banshee.Services/Banshee.Configuration src/Core/Banshee.Services/Banshee.Library src/Core/Banshee.Services/Banshee.ServiceStack src/Core/Banshee.Services/Banshee.Sources src/Core/Banshee.ThickClient/Banshee.Gui src/Core/Banshee.Widgets src/Dap/Banshee.Dap src/Dap/Banshee.Dap.Ipod src/Dap/Banshee.Dap.MassStorage src/Dap/Banshee.Dap.Mtp src/Extensions/Banshee.AudioCd src/Extensions/Banshee.AudioCd/Banshee.AudioCd src/Extensions/Banshee.BooScript src/Extensions/ Banshee.Bookmarks src/Extensions/Banshee.CoverArt src/Extensions/Banshee.Daap src/Extensions/Banshee.FileSystemQueue src/Extensions/Banshee.InternetRadio src/Extensions/Banshee.Lastfm src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio src/Extensions/Banshee.MediaWeb src/Extensions/Banshee.MiniMode src/Extensions/Banshee.MultimediaKeys src/Extensions/Banshee.NotificationArea src/Extensions/Banshee.NowPlaying src/Extensions/Banshee.PlayQueue src/Extensions/Banshee.Sample src/Extensions/Banshee.SqlDebugConsole src/Extensions/Banshee.Torrent src/Libraries/Hyena src/Libraries/Hyena.Gui src/Libraries/Hyena/Hyena src/Libraries/Hyena/Hyena.Data.Sqlite src/Libraries/Hyena/Hyena.Query src/Libraries/Lastfm src/Libraries/Lastfm.Gui src/Libraries/Migo src/Libraries/Migo/Migo.Syndication src/Libraries/Mono.Media src/Libraries/Mtp src/Libraries/MusicBrainz
- Date: Tue, 9 Sep 2008 22:10:06 +0000 (UTC)
Author: abock
Date: Tue Sep 9 22:10:05 2008
New Revision: 4502
URL: http://svn.gnome.org/viewvc/banshee?rev=4502&view=rev
Log:
2008-09-09 Aaron Bockover <abock gnome org>
This commit implements the first pass at providing a mechanism for
third party applications to query and index Banshee's collection in
a safe way - both in process and over DBus. This is for you, GNOME Do.
Still incomplete, but soon to be there. Lots already working. Yay.
* src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexerService.cs:
* src/Core/Banshee.Services/Banshee.Collection.Indexer/ICollectionIndexerService.cs:
Factory service for creating indexers; accessible internally or over DBus
* src/Core/Banshee.Services/Banshee.Collection.Indexer/ICollectionIndexer.cs:
* src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexer.cs:
Collection indexer implementation; allows snapshotting a track model
and iterating over it to request tracks internally or over DBus; will
be the object for third party applications to use to query/index Banshee's
collection (GNOME Do, Beagle, Tangerine...)
* src/Clients/Beroe/Beroe/Client.cs: A small standalone client that
boots only enough services to run the collection indexer service so
applications can read the collection even if Banshee may not already
be running
* src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Finish
implementing the exportable reflector, cache reflection results for faster
subsequent exports; support property aggregation and set linking through
the type hirearchy so all properties marked as exportable are handled
regardless of the defining type; used for exporting/serializing objects
over DBus and for merging different track objects (track editor)
* src/Core/Banshee.Services/Banshee.Sources/ITrackModelSource.cs:
* src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs:
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs:
* src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs:
* src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs:
Implement/Added ITrackModelSource.Indexable property
* src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs:
Split the service manager initialization/registration chunks into separate
methods so clients can have more control over which services they will
depend on
* src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs:
Call the new startup methods on the service manager in a new Initialize
method that clients can use
* src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs: Call
Application.Initialize
* src/Core/Banshee.Services/Banshee.ServiceStack/DBusConnection.cs:
Added GLib mainloop support for clients that may strictly do DBus (Beroe)
* src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs:
Implemented object unregistering
* src/Core/Banshee.Services/Banshee.Collection.Database/CachedList.cs:
Implement a method to snapshot the origin model into a cache model
* src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs:
Made UnfilteredQuery property public
* src/Core/Banshee.Core/Banshee.Configuration/MemoryConfigurationClient.cs:
Implemented a configuration client that stores everything to memory
and does not persist
* src/Core/Banshee.Services/Banshee.Configuration/DatabaseConfigurationClient.cs:
Small fixes/optimization
* src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs:
Make MemoryConfigurationClient the default client if Mono.Addins is
not initialized, otherwise clients are loaded from extensions, and
the XmlConfigurationClient is the fallback
* src/Libraries/Hyena/Hyena/Timer.cs: Output the timer to stderr
* src/Libraries/Hyena/Hyena.Query/QueryOrder.cs:
* src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs:
* src/Libraries/Migo/Migo.Syndication/Feed.cs:
* build/build.rules.mk: Build fixes for gmcs 2.0
Added:
trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/MemoryConfigurationClient.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexerService.cs (contents, props changed)
- copied, changed from r4466, /trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexer.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/ICollectionIndexer.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/ICollectionIndexerService.cs
Modified:
trunk/banshee/ChangeLog
trunk/banshee/build/build.rules.mk
trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer.csproj
trunk/banshee/src/Backends/Banshee.Gnome/Banshee.Gnome.csproj
trunk/banshee/src/Backends/Banshee.Hal/Banshee.Hal.csproj
trunk/banshee/src/Backends/Banshee.NowPlaying.X11/Banshee.NowPlaying.X11.csproj
trunk/banshee/src/Backends/Banshee.Unix/Banshee.Unix.csproj
trunk/banshee/src/Clients/Beroe/Beroe.csproj
trunk/banshee/src/Clients/Beroe/Beroe/Client.cs
trunk/banshee/src/Clients/Muinshee/Muinshee.csproj
trunk/banshee/src/Clients/Nereid/Nereid.csproj
trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs
trunk/banshee/src/Core/Banshee.Core/Banshee.Core.csproj
trunk/banshee/src/Core/Banshee.Core/Makefile.am
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/CachedList.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexer.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Configuration/DatabaseConfigurationClient.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusConnection.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Services.csproj
trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/ITrackModelSource.cs
trunk/banshee/src/Core/Banshee.Services/Makefile.am
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
trunk/banshee/src/Core/Banshee.Widgets/Banshee.Widgets.csproj
trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod.csproj
trunk/banshee/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.csproj
trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.csproj
trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.csproj
trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd.csproj
trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs
trunk/banshee/src/Extensions/Banshee.BooScript/Banshee.BooScript.csproj
trunk/banshee/src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.csproj
trunk/banshee/src/Extensions/Banshee.CoverArt/Banshee.CoverArt.csproj
trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap.csproj
trunk/banshee/src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue.csproj
trunk/banshee/src/Extensions/Banshee.InternetRadio/Banshee.InternetRadio.csproj
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.csproj
trunk/banshee/src/Extensions/Banshee.MediaWeb/Banshee.MediaWeb.csproj
trunk/banshee/src/Extensions/Banshee.MiniMode/Banshee.MiniMode.csproj
trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys.csproj
trunk/banshee/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea.csproj
trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.csproj
trunk/banshee/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue.csproj
trunk/banshee/src/Extensions/Banshee.Sample/Banshee.Sample.csproj
trunk/banshee/src/Extensions/Banshee.SqlDebugConsole/Banshee.SqlDebugConsole.csproj
trunk/banshee/src/Extensions/Banshee.Torrent/Banshee.Torrent.csproj
trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Gui.csproj
trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs
trunk/banshee/src/Libraries/Hyena/Hyena.Query/QueryOrder.cs
trunk/banshee/src/Libraries/Hyena/Hyena.csproj
trunk/banshee/src/Libraries/Hyena/Hyena/Timer.cs
trunk/banshee/src/Libraries/Lastfm.Gui/Lastfm.Gui.csproj
trunk/banshee/src/Libraries/Lastfm/Lastfm.csproj
trunk/banshee/src/Libraries/Migo/Migo.Syndication/Feed.cs
trunk/banshee/src/Libraries/Migo/Migo.csproj
trunk/banshee/src/Libraries/Mono.Media/Mono.Media.csproj
trunk/banshee/src/Libraries/Mtp/Mtp.csproj
trunk/banshee/src/Libraries/MusicBrainz/MusicBrainz.csproj
Modified: trunk/banshee/build/build.rules.mk
==============================================================================
--- trunk/banshee/build/build.rules.mk (original)
+++ trunk/banshee/build/build.rules.mk Tue Sep 9 22:10:05 2008
@@ -53,7 +53,7 @@
test "x$$colors" = "xyes" && \
echo -e "\033[1mCompiling $(notdir $@)...\033[0m" || \
echo "Compiling $(notdir $@)...";
- @test "x$(DEVEL_BUILD)" = "xyes" && warn="-warnaserror"; $(BUILD) -target:$(TARGET) -out:$@ $$warn -define:HAVE_GTK_2_10 -define:NET_2_0 $(ENABLE_TESTS_FLAG) $(FILTERED_LINK) $(RESOURCES_BUILD) $(SOURCES_BUILD)
+ @test "x$(DEVEL_BUILD)" = "xyes" && warn="-warnaserror"; $(BUILD) -nowarn:0078 -target:$(TARGET) -out:$@ $$warn -define:HAVE_GTK_2_10 -define:NET_2_0 $(ENABLE_TESTS_FLAG) $(FILTERED_LINK) $(RESOURCES_BUILD) $(SOURCES_BUILD)
@if [ -e $(notdir $ config) ]; then \
cp $(notdir $ config) $(top_builddir)/bin; \
fi;
Modified: trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer.csproj
==============================================================================
--- trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer.csproj (original)
+++ trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.MediaEngine.GStreamer</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Backends/Banshee.Gnome/Banshee.Gnome.csproj
==============================================================================
--- trunk/banshee/src/Backends/Banshee.Gnome/Banshee.Gnome.csproj (original)
+++ trunk/banshee/src/Backends/Banshee.Gnome/Banshee.Gnome.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.Gnome</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Backends/Banshee.Hal/Banshee.Hal.csproj
==============================================================================
--- trunk/banshee/src/Backends/Banshee.Hal/Banshee.Hal.csproj (original)
+++ trunk/banshee/src/Backends/Banshee.Hal/Banshee.Hal.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.Hal</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Backends/Banshee.NowPlaying.X11/Banshee.NowPlaying.X11.csproj
==============================================================================
--- trunk/banshee/src/Backends/Banshee.NowPlaying.X11/Banshee.NowPlaying.X11.csproj (original)
+++ trunk/banshee/src/Backends/Banshee.NowPlaying.X11/Banshee.NowPlaying.X11.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.NowPlaying.X11</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Backends/Banshee.Unix/Banshee.Unix.csproj
==============================================================================
--- trunk/banshee/src/Backends/Banshee.Unix/Banshee.Unix.csproj (original)
+++ trunk/banshee/src/Backends/Banshee.Unix/Banshee.Unix.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.Unix</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Clients/Beroe/Beroe.csproj
==============================================================================
--- trunk/banshee/src/Clients/Beroe/Beroe.csproj (original)
+++ trunk/banshee/src/Clients/Beroe/Beroe.csproj Tue Sep 9 22:10:05 2008
@@ -25,6 +25,7 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
+ <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Core\Banshee.Services\Banshee.Services.csproj">
Modified: trunk/banshee/src/Clients/Beroe/Beroe/Client.cs
==============================================================================
--- trunk/banshee/src/Clients/Beroe/Beroe/Client.cs (original)
+++ trunk/banshee/src/Clients/Beroe/Beroe/Client.cs Tue Sep 9 22:10:05 2008
@@ -29,11 +29,13 @@
using System;
using NDesk.DBus;
-
using Hyena;
+
using Banshee.Base;
+using Banshee.Database;
using Banshee.ServiceStack;
-using Banshee.Library;
+using Banshee.Sources;
+using Banshee.Collection.Indexer;
namespace Beroe
{
@@ -46,10 +48,10 @@
}
if (!DBusConnection.Enabled) {
- Error ("All commands ignored, DBus support is disabled");
+ Log.Error ("All commands ignored, DBus support is disabled");
return;
} else if (DBusConnection.InstanceAlreadyRunning) {
- Error ("Banshee is already running");
+ Log.Error ("Banshee is already running");
return;
}
@@ -58,24 +60,19 @@
private static void Startup ()
{
- /*ThreadAssist.InitializeMainThread ();
+ ThreadAssist.InitializeMainThread ();
ServiceManager.Initialize ();
- ServiceManager.RegisterService<Banshee.Database.BansheeDbConnection> ();
- ServiceManager.RegisterService<Banshee.Sources.SourceManager> ();
+ ServiceManager.RegisterService<DBusServiceManager> ();
+ ServiceManager.RegisterService<BansheeDbConnection> ();
+ ServiceManager.RegisterService<SourceManager> ();
+ ServiceManager.RegisterService<CollectionIndexerService> ();
ServiceManager.Run ();
- ServiceManager.SourceManager.AddSource (new MusicLibrarySource (), true);
- ServiceManager.SourceManager.AddSource (new VideoLibrarySource (), false);
+ ServiceManager.SourceManager.AddSource (new Banshee.Library.MusicLibrarySource ());
+ ServiceManager.SourceManager.AddSource (new Banshee.Library.VideoLibrarySource ());
- while (true) {
- System.Threading.Thread.Sleep (100);
- }*/
- }
-
- private static void Error (string error, params object [] args)
- {
- Console.WriteLine ("Error: {0}", String.Format (error, args));
+ DBusConnection.RunMainLoop ();
}
}
}
Modified: trunk/banshee/src/Clients/Muinshee/Muinshee.csproj
==============================================================================
--- trunk/banshee/src/Clients/Muinshee/Muinshee.csproj (original)
+++ trunk/banshee/src/Clients/Muinshee/Muinshee.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Exe</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Muinshee</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Clients/Nereid/Nereid.csproj
==============================================================================
--- trunk/banshee/src/Clients/Nereid/Nereid.csproj (original)
+++ trunk/banshee/src/Clients/Nereid/Nereid.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Exe</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Nereid</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs Tue Sep 9 22:10:05 2008
@@ -459,12 +459,20 @@
}
}
+#region Exportable Properties
+
public static void ExportableMerge (TrackInfo source, TrackInfo dest)
{
- foreach (PropertyInfo property in typeof (TrackInfo).GetProperties (BindingFlags.Public | BindingFlags.Instance)) {
+ // Use the high level TrackInfo type if the source and dest types differ
+ Type type = dest.GetType ();
+ if (source.GetType () != type) {
+ type = typeof (TrackInfo);
+ }
+
+ foreach (KeyValuePair<string, PropertyInfo> iter in GetExportableProperties (type)) {
try {
- object [] exportable_attrs = property.GetCustomAttributes (typeof (TrackInfo.ExportableAttribute), true);
- if (exportable_attrs != null && exportable_attrs.Length > 0 && property.CanWrite) {
+ PropertyInfo property = iter.Value;
+ if (property.CanWrite && property.CanRead) {
property.SetValue (dest, property.GetValue (source, null), null);
}
} catch (Exception e) {
@@ -472,23 +480,14 @@
}
}
}
-
- // Generates a{sv} of self according to http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces#.22Metadata.22
+
public IDictionary<string, object> GenerateExportable ()
{
Dictionary<string, object> dict = new Dictionary<string, object> ();
-
- foreach (PropertyInfo property in GetType ().GetProperties (BindingFlags.Public | BindingFlags.Instance)) {
- object [] exportable_attrs = property.GetCustomAttributes (typeof (TrackInfo.ExportableAttribute), true);
- if (exportable_attrs == null || exportable_attrs.Length == 0) {
- continue;
- }
-
- string export_name = ((ExportableAttribute)exportable_attrs[0]).ExportName
- ?? StringUtil.CamelCaseToUnderCase (property.Name, '-');
-
- object value = property.GetValue (this, null);
- if (String.IsNullOrEmpty (export_name) || value == null) {
+
+ foreach (KeyValuePair<string, PropertyInfo> property in GetExportableProperties (GetType ())) {
+ object value = property.Value.GetValue (this, null);
+ if (value == null) {
continue;
}
@@ -508,14 +507,115 @@
value is float || value is double ||
value is bool || value is string)) {
Log.WarningFormat ("Invalid property in {0} marked as [Exportable]: ({1} is a {2})",
- property.DeclaringType, property.Name, value.GetType ());
+ property.Value.DeclaringType, property.Value.Name, value.GetType ());
continue;
}
- dict.Add (export_name, value);
+ dict.Add (property.Key, value);
}
return dict;
}
+
+ private static Dictionary<Type, Dictionary<string, PropertyInfo>> exportable_properties;
+ private static object exportable_properties_mutex = new object ();
+
+ private static void FindExportableProperties (Type type)
+ {
+ lock (exportable_properties_mutex) {
+ if (exportable_properties == null) {
+ exportable_properties = new Dictionary<Type, Dictionary<string, PropertyInfo>> ();
+ } else if (exportable_properties.ContainsKey (type)) {
+ return;
+ }
+
+ // Build a stack of types to reflect
+ Stack<Type> probe_types = new Stack<Type> ();
+ Type probe_type = type;
+ while (probe_type != null) {
+ probe_types.Push (probe_type);
+ if (probe_type == typeof (TrackInfo)) {
+ break;
+ }
+ probe_type = probe_type.BaseType;
+ }
+
+ // Iterate through all types
+ while (probe_types.Count > 0) {
+ probe_type = probe_types.Pop ();
+ if (exportable_properties.ContainsKey (probe_type)) {
+ continue;
+ }
+
+ Dictionary<string, PropertyInfo> properties = null;
+
+ // Reflect the type for exportable properties
+ foreach (PropertyInfo property in probe_type.GetProperties (BindingFlags.Public | BindingFlags.Instance)) {
+ if (property.DeclaringType != probe_type) {
+ continue;
+ }
+
+ object [] exportable_attrs = property.GetCustomAttributes (typeof (ExportableAttribute), true);
+ if (exportable_attrs == null || exportable_attrs.Length == 0) {
+ continue;
+ }
+
+ string export_name = ((ExportableAttribute)exportable_attrs[0]).ExportName
+ ?? StringUtil.CamelCaseToUnderCase (property.Name, '-');
+
+ if (String.IsNullOrEmpty (export_name) || (properties != null && properties.ContainsKey (export_name))) {
+ continue;
+ }
+
+ if (properties == null) {
+ properties = new Dictionary<string, PropertyInfo> ();
+ exportable_properties.Add (probe_type, properties);
+ }
+
+ properties.Add (export_name, property);
+ }
+
+ // Merge properties in the type hierarchy through linking or aggregation
+ Type parent_type = probe_type.BaseType;
+ bool link = !exportable_properties.ContainsKey (probe_type);
+
+ while (parent_type != null) {
+ Dictionary<string, PropertyInfo> parent_properties = null;
+ if (!exportable_properties.TryGetValue (parent_type, out parent_properties)) {
+ parent_type = parent_type.BaseType;
+ continue;
+ }
+
+ if (link) {
+ // Link entire property set between types
+ exportable_properties.Add (probe_type, parent_properties);
+ return;
+ } else {
+ // Aggregate properties in parent sets
+ foreach (KeyValuePair<string, PropertyInfo> parent_property in parent_properties) {
+ properties.Add (parent_property.Key, parent_property.Value);
+ }
+ }
+
+ parent_type = parent_type.BaseType;
+ }
+ }
+ }
+ }
+
+ private static IEnumerable<KeyValuePair<string, PropertyInfo>> GetExportableProperties (Type type)
+ {
+ FindExportableProperties (type);
+
+ Dictionary<string, PropertyInfo> properties = null;
+ if (exportable_properties.TryGetValue (type, out properties)) {
+ foreach (KeyValuePair<string, PropertyInfo> property in properties) {
+ yield return property;
+ }
+ }
+ }
+
+#endregion
+
}
}
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs Tue Sep 9 22:10:05 2008
@@ -45,20 +45,24 @@
return;
}
- foreach (TypeExtensionNode node in AddinManager.GetExtensionNodes (
- "/Banshee/Platform/ConfigurationClient")) {
- try {
- client = (IConfigurationClient)node.CreateInstance (typeof (IConfigurationClient));
- if (client != null) {
- break;
+ if (AddinManager.IsInitialized) {
+ foreach (TypeExtensionNode node in AddinManager.GetExtensionNodes (
+ "/Banshee/Platform/ConfigurationClient")) {
+ try {
+ client = (IConfigurationClient)node.CreateInstance (typeof (IConfigurationClient));
+ if (client != null) {
+ break;
+ }
+ } catch (Exception e) {
+ Log.Warning ("Configuration client extension failed to load", e.Message);
}
- } catch (Exception e) {
- Log.Warning ("Configuration client extension failed to load", e.Message);
}
- }
-
- if (client == null) {
- client = new XmlConfigurationClient ();
+
+ if (client == null) {
+ client = new XmlConfigurationClient ();
+ }
+ } else {
+ client = new MemoryConfigurationClient ();
}
Log.DebugFormat ("Configuration client extension loaded ({0})", client.GetType ().FullName);
Added: trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/MemoryConfigurationClient.cs
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/MemoryConfigurationClient.cs Tue Sep 9 22:10:05 2008
@@ -0,0 +1,107 @@
+//
+// MemoryConfigurationClient.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright (C) 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;
+
+namespace Banshee.Configuration
+{
+ public class MemoryConfigurationClient : IConfigurationClient
+ {
+ private Dictionary<string, object> config = new Dictionary<string, object> ();
+
+#region Helper Overrides
+
+ public T Get<T> (SchemaEntry<T> entry)
+ {
+ return Get (entry.Namespace, entry.Key, entry.DefaultValue);
+ }
+
+ public T Get<T> (SchemaEntry<T> entry, T fallback)
+ {
+ return Get (entry.Namespace, entry.Key, fallback);
+ }
+
+ public T Get<T> (string key, T fallback)
+ {
+ return Get (null, key, fallback);
+ }
+
+ public void Set<T> (SchemaEntry<T> entry, T value)
+ {
+ Set (entry.Namespace, entry.Key, value);
+ }
+
+ public void Set<T> (string key, T value)
+ {
+ Set (null, key, value);
+ }
+
+#endregion
+
+#region Implementation
+
+ public T Get<T> (string namespce, string key, T fallback)
+ {
+ lock (this) {
+ string fq_key = MakeKey (namespce, key);
+ object value;
+
+ if (config.TryGetValue (fq_key, out value)) {
+ if (value == null) {
+ return default (T);
+ } else if (value.GetType () == typeof (T)) {
+ return (T)value;
+ }
+ }
+
+ return fallback;
+ }
+ }
+
+ public void Set<T> (string namespce, string key, T value)
+ {
+ lock (this) {
+ string fq_key = MakeKey (namespce, key);
+ if (config.ContainsKey (fq_key)) {
+ config[fq_key] = value;
+ } else {
+ config.Add (fq_key, value);
+ }
+ }
+ }
+
+ public static string MakeKey (string namespce, string key)
+ {
+ return String.Format ("{0}{1}{2}", namespce, String.IsNullOrEmpty (namespce) ? String.Empty : ".", key);
+ }
+
+#endregion
+
+ }
+}
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Core.csproj
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Core.csproj (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Core.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.Core</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -97,6 +98,7 @@
<Compile Include="Banshee.Kernel\DelegateJob.cs" />
<Compile Include="Banshee.Collection\CacheableItem.cs" />
<Compile Include="Banshee.IO\DirectoryScannerPipelineElement.cs" />
+ <Compile Include="Banshee.Configuration\MemoryConfigurationClient.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\contributors.xml">
Modified: trunk/banshee/src/Core/Banshee.Core/Makefile.am
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Makefile.am (original)
+++ trunk/banshee/src/Core/Banshee.Core/Makefile.am Tue Sep 9 22:10:05 2008
@@ -32,6 +32,7 @@
Banshee.Configuration.Schema/LibrarySchema.cs \
Banshee.Configuration/ConfigurationClient.cs \
Banshee.Configuration/IConfigurationClient.cs \
+ Banshee.Configuration/MemoryConfigurationClient.cs \
Banshee.Configuration/SchemaEntry.cs \
Banshee.Configuration/XmlConfigurationClient.cs \
Banshee.I18n/AssemblyCatalogAttribute.cs \
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/CachedList.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/CachedList.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/CachedList.cs Tue Sep 9 22:10:05 2008
@@ -54,6 +54,24 @@
private BansheeModelCache<T> cache;
+ public static CachedList<DatabaseTrackInfo> CreateFromSourceModel (DatabaseTrackListModel model)
+ {
+ CachedList<DatabaseTrackInfo> list = new CachedList<DatabaseTrackInfo> (DatabaseTrackInfo.Provider);
+
+ HyenaSqliteCommand model_cache_command = new HyenaSqliteCommand (String.Format (@"
+ INSERT INTO CoreCache (ModelID, ItemID)
+ SELECT ?, CoreTracks.TrackID {0}", model.UnfilteredQuery
+ ));
+
+ lock (model) {
+ ServiceManager.DbConnection.Execute (model_cache_command, list.CacheId);
+ }
+
+ list.cache.UpdateAggregates ();
+
+ return list;
+ }
+
public static CachedList<DatabaseTrackInfo> CreateFromModel (DatabaseTrackListModel model)
{
Selection selection = new Selection ();
@@ -83,7 +101,6 @@
}
list.cache.UpdateAggregates ();
-
return list;
}
@@ -91,10 +108,10 @@
{
string uuid = NextCacheId ();
cache = new BansheeModelCache <T> (ServiceManager.DbConnection, uuid, CacheableDatabaseModel.Instance, provider);
- Clear ();
+ Dispose ();
}
- public void Clear ()
+ public void Dispose ()
{
ServiceManager.DbConnection.Execute ("DELETE FROM CoreCache WHERE ModelId = ?", CacheId);
}
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs Tue Sep 9 22:10:05 2008
@@ -188,7 +188,7 @@
}
private string unfiltered_query;
- protected string UnfilteredQuery {
+ public string UnfilteredQuery {
get {
return unfiltered_query ?? unfiltered_query = String.Format (
"FROM {0}{1} WHERE {2} {3}",
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexer.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexer.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexer.cs Tue Sep 9 22:10:05 2008
@@ -27,13 +27,135 @@
//
using System;
+using System.Collections.Generic;
+
+using Hyena;
+
+using Banshee.Sources;
+using Banshee.Library;
+using Banshee.ServiceStack;
+using Banshee.Collection;
+using Banshee.Collection.Database;
namespace Banshee.Collection.Indexer
{
- public class CollectionIndexer
+ public class CollectionIndexer : ICollectionIndexer, IDisposable
{
- public CollectionIndexer ()
+ private static int instance_count = 0;
+
+ private CollectionIndexerService service;
+ private List<CachedList<DatabaseTrackInfo>> model_caches = new List<CachedList<DatabaseTrackInfo>> ();
+
+ private event IndexingFinishedHandler indexing_finished;
+ event IndexingFinishedHandler ICollectionIndexer.IndexingFinished {
+ add { indexing_finished += value; }
+ remove { indexing_finished -= value; }
+ }
+
+ public event EventHandler IndexingFinished;
+
+ internal CollectionIndexer (CollectionIndexerService service)
+ {
+ this.service = service;
+ }
+
+ public void Dispose ()
+ {
+ DisposeModels ();
+
+ if (service != null) {
+ service.DisposeIndexer (this);
+ }
+ }
+
+ private void DisposeModels ()
+ {
+ foreach (CachedList<DatabaseTrackInfo> model in model_caches) {
+ model.Dispose ();
+ }
+
+ model_caches.Clear ();
+ }
+
+ public void Start ()
+ {
+ lock (this) {
+ DisposeModels ();
+
+ foreach (Source source in ServiceManager.SourceManager.Sources) {
+ DatabaseSource db_source = source as DatabaseSource;
+ if (db_source != null && db_source.Indexable) {
+ model_caches.Add (CachedList<DatabaseTrackInfo>.CreateFromSourceModel (
+ (DatabaseTrackListModel)db_source.TrackModel));
+ }
+ }
+ }
+
+ OnIndexingFinished ();
+ }
+
+ public bool SaveToXml (string path)
{
+ lock (this) {
+ return false;
+ }
+ }
+
+ public IDictionary<string, object> GetResult (int modelIndex, int itemIndex)
+ {
+ lock (this) {
+ if (modelIndex < 0 || modelIndex >= model_caches.Count) {
+ throw new IndexOutOfRangeException ("modelIndex");
+ }
+
+ CachedList<DatabaseTrackInfo> model = model_caches[modelIndex];
+
+ if (itemIndex < 0 || itemIndex >= model.Count) {
+ throw new IndexOutOfRangeException ("itemIndex");
+ }
+
+ return model[modelIndex].GenerateExportable ();
+ }
+ }
+
+ public int GetModelCounts ()
+ {
+ lock (this) {
+ return model_caches.Count;
+ }
+ }
+
+ public int GetModelResultsCount (int modelIndex)
+ {
+ lock (this) {
+ if (modelIndex < 0 || modelIndex >= model_caches.Count) {
+ return -1;
+ }
+
+ return model_caches[modelIndex].Count;
+ }
+ }
+
+ protected virtual void OnIndexingFinished ()
+ {
+ EventHandler handler = IndexingFinished;
+ if (handler != null) {
+ handler (this, EventArgs.Empty);
+ }
+
+ IndexingFinishedHandler dbus_handler = indexing_finished;
+ if (dbus_handler != null) {
+ dbus_handler ();
+ }
+ }
+
+ private string service_name = String.Format ("CollectionIndexer_{0}", instance_count++);
+ string IService.ServiceName {
+ get { return service_name; }
+ }
+
+ IDBusExportable IDBusExportable.Parent {
+ get { return service; }
}
}
}
Copied: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexerService.cs (from r4466, /trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexer.cs)
==============================================================================
--- /trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexer.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexerService.cs Tue Sep 9 22:10:05 2008
@@ -27,13 +27,59 @@
//
using System;
+using System.Collections.Generic;
+
+using NDesk.DBus;
+
+using Banshee.ServiceStack;
namespace Banshee.Collection.Indexer
{
- public class CollectionIndexer
+ public class CollectionIndexerService : ICollectionIndexerService
{
- public CollectionIndexer ()
+ private List<TrackListModel> models = new List<TrackListModel> ();
+
+ public void AddModel (TrackListModel model)
+ {
+ models.Add (model);
+ }
+
+ public IEnumerable<IDictionary<string, object>> CreateIndex ()
+ {
+ yield break;
+ }
+
+ public IEnumerable<IDictionary<string, object>> GenerateExportable ()
+ {
+ foreach (TrackListModel model in models) {
+ model.Reload ();
+ for (int i = 0, n = model.Count; i < n; i++) {
+ yield return model[i].GenerateExportable ();
+ }
+ }
+ }
+
+ public ICollectionIndexer CreateIndexer ()
+ {
+ return new CollectionIndexer (null);
+ }
+
+ internal void DisposeIndexer (CollectionIndexer indexer)
{
+ ServiceManager.DBusServiceManager.UnregisterObject (indexer);
+ }
+
+ ObjectPath ICollectionIndexerService.CreateIndexer ()
+ {
+ return ServiceManager.DBusServiceManager.RegisterObject (new CollectionIndexer (this));
+ }
+
+ IDBusExportable IDBusExportable.Parent {
+ get { return null; }
+ }
+
+ string IService.ServiceName {
+ get { return "CollectionIndexerService"; }
}
}
}
Added: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/ICollectionIndexer.cs
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/ICollectionIndexer.cs Tue Sep 9 22:10:05 2008
@@ -0,0 +1,53 @@
+//
+// ICollectionIndexer.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright (C) 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 NDesk.DBus;
+
+using Banshee.ServiceStack;
+
+namespace Banshee.Collection.Indexer
+{
+ public delegate void IndexingFinishedHandler ();
+
+ [Interface ("org.bansheeproject.Banshee.CollectionIndexer")]
+ public interface ICollectionIndexer : IService, IDBusExportable
+ {
+ event IndexingFinishedHandler IndexingFinished;
+
+ void Start ();
+ void Dispose ();
+
+ int GetModelCounts ();
+ int GetModelResultsCount (int modelIndex);
+ IDictionary<string, object> GetResult (int modelIndex, int itemIndex);
+
+ bool SaveToXml (string path);
+ }
+}
Added: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/ICollectionIndexerService.cs
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/ICollectionIndexerService.cs Tue Sep 9 22:10:05 2008
@@ -0,0 +1,43 @@
+//
+// ICollectionIndexer.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright (C) 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 NDesk.DBus;
+
+using Banshee.ServiceStack;
+
+namespace Banshee.Collection.Indexer
+{
+ public delegate void CollectionChangedHandler ();
+
+ [Interface ("org.bansheeproject.Banshee.CollectionIndexerService")]
+ public interface ICollectionIndexerService : IService, IDBusExportable
+ {
+ ObjectPath CreateIndexer ();
+ }
+}
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Configuration/DatabaseConfigurationClient.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Configuration/DatabaseConfigurationClient.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Configuration/DatabaseConfigurationClient.cs Tue Sep 9 22:10:05 2008
@@ -95,7 +95,8 @@
private IDataReader Get (string namespce, string key)
{
- return connection.Query (select_value_command, MakeKey (namespce, key));
+ return connection.Query (select_value_command,
+ Banshee.Configuration.MemoryConfigurationClient.MakeKey (namespce, key));
}
public void Set <T> (SchemaEntry<T> entry, T value)
@@ -110,21 +111,14 @@
public void Set <T> (string namespce, string key, T value)
{
- if (connection.Query<int> (select_id_command, MakeKey (namespce, key)) > 0) {
- connection.Execute (update_command, value.ToString (), MakeKey (namespce, key));
+ string fq_key = Banshee.Configuration.MemoryConfigurationClient.MakeKey (namespce, key);
+ if (connection.Query<int> (select_id_command, fq_key) > 0) {
+ connection.Execute (update_command, value.ToString (), fq_key);
} else {
- connection.Execute (insert_command, MakeKey (namespce, key), value.ToString ());
+ connection.Execute (insert_command, fq_key, value.ToString ());
}
}
-
- private static string MakeKey (string namespce, string key)
- {
- return String.Format (
- "{0}{1}{2}",
- namespce, String.IsNullOrEmpty (namespce) ? String.Empty : ".", key
- );
- }
-
+
protected virtual string TableName {
get { return "CoreConfiguration"; }
}
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs Tue Sep 9 22:10:05 2008
@@ -79,6 +79,10 @@
public override string BaseDirectory {
get { return Paths.CachedLibraryLocation; }
}
+
+ public override bool Indexable {
+ get { return true; }
+ }
/*public override void CopyTrackTo (DatabaseTrackInfo track, SafeUri uri, UserJob job)
{
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs Tue Sep 9 22:10:05 2008
@@ -71,6 +71,11 @@
private static Stack<Client> running_clients = new Stack<Client> ();
private static bool shutting_down;
+ public static void Initialize ()
+ {
+ ServiceManager.DefaultInitialize ();
+ }
+
public static void Run ()
{
Banshee.Base.PlatformHacks.TrapMonoJitSegv ();
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusConnection.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusConnection.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusConnection.cs Tue Sep 9 22:10:05 2008
@@ -84,5 +84,25 @@
Log.DebugFormat ("NDesk.DBus.Bus.Session.RequestName ('{0}') => {1}", BusName, name_reply);
return name_reply;
}
+
+ private static GLib.MainLoop mainloop;
+
+ public static void RunMainLoop ()
+ {
+ if (mainloop == null) {
+ mainloop = new GLib.MainLoop ();
+ }
+
+ if (!mainloop.IsRunning) {
+ mainloop.Run ();
+ }
+ }
+
+ public static void QuitMainLoop ()
+ {
+ if (mainloop != null && mainloop.IsRunning) {
+ mainloop.Quit ();
+ }
+ }
}
}
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs Tue Sep 9 22:10:05 2008
@@ -42,6 +42,7 @@
public class DBusServiceManager : IService
{
public const string ObjectRoot = "/org/bansheeproject/Banshee";
+ private Dictionary<object, ObjectPath> registered_objects = new Dictionary<object, ObjectPath> ();
public DBusServiceManager ()
{
@@ -96,23 +97,41 @@
return paths.ToArray ();
}
- public void RegisterObject (IDBusExportable o)
+ public ObjectPath RegisterObject (IDBusExportable o)
{
- RegisterObject (o, MakeObjectPath (o));
+ return RegisterObject (o, MakeObjectPath (o));
}
- public void RegisterObject (object o, string objectName)
+ public ObjectPath RegisterObject (object o, string objectName)
{
+ ObjectPath path = null;
+
if (DBusConnection.Enabled && Bus.Session != null) {
+ lock (registered_objects) {
+ registered_objects.Add (o, path = new ObjectPath (objectName));
+ }
#pragma warning disable 0618
- Bus.Session.Register (DBusConnection.BusName, new ObjectPath (objectName), o);
+ Bus.Session.Register (DBusConnection.BusName, path, o);
#pragma warning restore 0618
}
+
+ return path;
}
public void UnregisterObject (object o)
{
- //TODO: unregistering objects with managed dbus
+ ObjectPath path = null;
+ lock (registered_objects) {
+ if (!registered_objects.TryGetValue (o, out path)) {
+ Log.WarningFormat ("Unable to unregister DBus object {0}, does not appear to be registered",
+ o.GetType ());
+ return;
+ }
+
+ registered_objects.Remove (o);
+ }
+
+ Bus.Session.Unregister (path);
}
public static T FindInstance<T> (string objectPath) where T : class
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs Tue Sep 9 22:10:05 2008
@@ -59,7 +59,33 @@
public static event EventHandler StartupFinished;
public static event ServiceStartedHandler ServiceStarted;
- static ServiceManager ()
+ public static void Initialize ()
+ {
+ Application.ClientStarted += OnClientStarted;
+ }
+
+ public static void InitializeAddins ()
+ {
+ AddinManager.Initialize (ApplicationContext.CommandLine.Contains ("uninstalled")
+ ? "." : Paths.ApplicationData);
+
+ IProgressStatus monitor = ApplicationContext.CommandLine.Contains ("debug-addins")
+ ? new ConsoleProgressStatus (true)
+ : null;
+
+ if (ApplicationContext.Debugging) {
+ AddinManager.Registry.Rebuild (monitor);
+ } else {
+ AddinManager.Registry.Update (monitor);
+ }
+ }
+
+ public static void RegisterAddinServices ()
+ {
+ extension_nodes = AddinManager.GetExtensionNodes ("/Banshee/ServiceManager/Service");
+ }
+
+ public static void RegisterDefaultServices ()
{
RegisterService<DBusServiceManager> ();
RegisterService<DBusCommandService> ();
@@ -74,23 +100,15 @@
RegisterService<LibraryImportManager> ();
RegisterService<UserJobManager> ();
RegisterService<Banshee.Hardware.HardwareManager> ();
-
- AddinManager.Initialize (ApplicationContext.CommandLine.Contains ("uninstalled")
- ? "." : Paths.ApplicationData);
-
- IProgressStatus monitor = ApplicationContext.CommandLine.Contains ("debug-addins")
- ? new ConsoleProgressStatus (true)
- : null;
+ RegisterService<Banshee.Collection.Indexer.CollectionIndexerService> ();
+ }
- if (ApplicationContext.Debugging) {
- AddinManager.Registry.Rebuild (monitor);
- } else {
- AddinManager.Registry.Update (monitor);
- }
-
- extension_nodes = AddinManager.GetExtensionNodes ("/Banshee/ServiceManager/Service");
-
- Application.ClientStarted += OnClientStarted;
+ public static void DefaultInitialize ()
+ {
+ Initialize ();
+ InitializeAddins ();
+ RegisterDefaultServices ();
+ RegisterAddinServices ();
}
private static void OnClientStarted (Client client)
@@ -109,11 +127,15 @@
RegisterService (type);
}
- foreach (TypeExtensionNode node in extension_nodes) {
- StartExtension (node);
+ if (extension_nodes != null) {
+ foreach (TypeExtensionNode node in extension_nodes) {
+ StartExtension (node);
+ }
}
- AddinManager.AddExtensionNodeHandler ("/Banshee/ServiceManager/Service", OnExtensionChanged);
+ if (AddinManager.IsInitialized) {
+ AddinManager.AddExtensionNodeHandler ("/Banshee/ServiceManager/Service", OnExtensionChanged);
+ }
is_initialized = true;
@@ -351,7 +373,7 @@
}
public static DBusServiceManager DBusServiceManager {
- get { return (DBusServiceManager)Get ("DBusServiceManager"); }
+ get { return Get<DBusServiceManager> (); }
}
public static BansheeDbConnection DbConnection {
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Services.csproj
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Services.csproj (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Services.csproj Tue Sep 9 22:10:05 2008
@@ -226,6 +226,9 @@
<Compile Include="Banshee.Collection\MoveOnInfoSaveJob.cs" />
<Compile Include="Banshee.ServiceStack\IRegisterOnDemandService.cs" />
<Compile Include="Banshee.Web\HttpRequest.cs" />
+ <Compile Include="Banshee.Collection.Indexer\CollectionIndexerService.cs" />
+ <Compile Include="Banshee.Collection.Indexer\ICollectionIndexerService.cs" />
+ <Compile Include="Banshee.Collection.Indexer\ICollectionIndexer.cs" />
<Compile Include="Banshee.Collection.Indexer\CollectionIndexer.cs" />
<Compile Include="Banshee.Configuration\DefaultApplicationHelper.cs" />
</ItemGroup>
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs Tue Sep 9 22:10:05 2008
@@ -255,6 +255,10 @@
get { return true; }
}
+ public virtual bool Indexable {
+ get { return false; }
+ }
+
private int saved_count;
protected int SavedCount {
get { return saved_count; }
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/ITrackModelSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/ITrackModelSource.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/ITrackModelSource.cs Tue Sep 9 22:10:05 2008
@@ -51,5 +51,6 @@
bool ConfirmRemoveTracks { get; }
bool ShowBrowser { get; }
+ bool Indexable { get; }
}
}
Modified: trunk/banshee/src/Core/Banshee.Services/Makefile.am
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Makefile.am (original)
+++ trunk/banshee/src/Core/Banshee.Services/Makefile.am Tue Sep 9 22:10:05 2008
@@ -23,6 +23,9 @@
Banshee.Collection.Database/IDatabaseTrackModelProvider.cs \
Banshee.Collection.Database/QueryFilterInfo.cs \
Banshee.Collection.Indexer/CollectionIndexer.cs \
+ Banshee.Collection.Indexer/CollectionIndexerService.cs \
+ Banshee.Collection.Indexer/ICollectionIndexer.cs \
+ Banshee.Collection.Indexer/ICollectionIndexerService.cs \
Banshee.Collection/AlbumListModel.cs \
Banshee.Collection/ArtistListModel.cs \
Banshee.Collection/BansheeListModel.cs \
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs Tue Sep 9 22:10:05 2008
@@ -48,6 +48,7 @@
private static Type client_type;
private static string user_gtkrc = Path.Combine (Paths.ApplicationData, "gtkrc");
+
public static void Startup<T> (string [] args) where T : GtkBaseClient
{
if (CheckHelpVersion ()) {
@@ -236,6 +237,8 @@
// Set the process name so system process listings and commands are pretty
PlatformHacks.TrySetProcessName (Application.InternalName);
+ Application.Initialize ();
+
// Initialize GTK
Gtk.Application.Init ();
Gtk.Window.DefaultIconName = default_icon_name;
Modified: trunk/banshee/src/Core/Banshee.Widgets/Banshee.Widgets.csproj
==============================================================================
--- trunk/banshee/src/Core/Banshee.Widgets/Banshee.Widgets.csproj (original)
+++ trunk/banshee/src/Core/Banshee.Widgets/Banshee.Widgets.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.Widgets</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod.csproj
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod.csproj (original)
+++ trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod.csproj Tue Sep 9 22:10:05 2008
@@ -7,6 +7,7 @@
<ProjectGuid>{371ECE68-8D0F-4AFE-AC8F-147167AE3674}</ProjectGuid>
<OutputType>Library</OutputType>
<AssemblyName>Banshee.Dap.Ipod</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.csproj
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.csproj (original)
+++ trunk/banshee/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.csproj Tue Sep 9 22:10:05 2008
@@ -7,6 +7,7 @@
<ProjectGuid>{6B73E278-23FB-4A59-9B44-AB7F0212B936}</ProjectGuid>
<OutputType>Library</OutputType>
<AssemblyName>Banshee.AudioCd</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.csproj
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.csproj (original)
+++ trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.csproj Tue Sep 9 22:10:05 2008
@@ -7,6 +7,7 @@
<ProjectGuid>{3935AE8A-E283-4C0D-9094-7435A937DC90}</ProjectGuid>
<OutputType>Library</OutputType>
<AssemblyName>Banshee.AudioCd</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.csproj
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.csproj (original)
+++ trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.csproj Tue Sep 9 22:10:05 2008
@@ -7,6 +7,7 @@
<ProjectGuid>{BC2E94DF-7A82-461E-BE7C-60E41ADC3562}</ProjectGuid>
<OutputType>Library</OutputType>
<AssemblyName>Banshee.AudioCd</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.AudioCd</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs Tue Sep 9 22:10:05 2008
@@ -312,6 +312,10 @@
get { return false; }
}
+ public bool Indexable {
+ get { return false; }
+ }
+
#endregion
#region IUnmapableSource Implementation
Modified: trunk/banshee/src/Extensions/Banshee.BooScript/Banshee.BooScript.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.BooScript/Banshee.BooScript.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.BooScript/Banshee.BooScript.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.BooScript</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.Bookmarks</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.CoverArt/Banshee.CoverArt.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.CoverArt/Banshee.CoverArt.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.CoverArt/Banshee.CoverArt.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.CoverArt</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.Daap</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.FileSystemQueue</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.InternetRadio/Banshee.InternetRadio.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.InternetRadio/Banshee.InternetRadio.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.InternetRadio/Banshee.InternetRadio.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.InternetRadio</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs Tue Sep 9 22:10:05 2008
@@ -491,6 +491,10 @@
public bool ShowBrowser {
get { return false; }
}
+
+ public bool Indexable {
+ get { return false; }
+ }
#endregion
Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.Plugins.LastFM</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.MediaWeb/Banshee.MediaWeb.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.MediaWeb/Banshee.MediaWeb.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.MediaWeb/Banshee.MediaWeb.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.MediaWeb</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.MiniMode/Banshee.MiniMode.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.MiniMode/Banshee.MiniMode.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.MiniMode/Banshee.MiniMode.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.MiniMode</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.MultimediaKeys</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.NotificationArea</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.NowPlaying</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.PlayQueue</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.Sample/Banshee.Sample.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Sample/Banshee.Sample.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.Sample/Banshee.Sample.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.Sample</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.SqlDebugConsole/Banshee.SqlDebugConsole.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.SqlDebugConsole/Banshee.SqlDebugConsole.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.SqlDebugConsole/Banshee.SqlDebugConsole.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.SqlDebugConsole</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Extensions/Banshee.Torrent/Banshee.Torrent.csproj
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Torrent/Banshee.Torrent.csproj (original)
+++ trunk/banshee/src/Extensions/Banshee.Torrent/Banshee.Torrent.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Banshee.Torrent</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Gui.csproj
==============================================================================
--- trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Gui.csproj (original)
+++ trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Gui.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Hyena.Gui</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs Tue Sep 9 22:10:05 2008
@@ -574,7 +574,7 @@
protected virtual HyenaSqliteCommand SelectRangeCommand {
get {
if (select_range_command == null) {
- select_command = new HyenaSqliteCommand (
+ select_range_command = new HyenaSqliteCommand (
String.Format (
"SELECT {0} FROM {1}{2}{3} LIMIT ?, ?",
Select, From,
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Query/QueryOrder.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.Query/QueryOrder.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Query/QueryOrder.cs Tue Sep 9 22:10:05 2008
@@ -61,6 +61,7 @@
this.name = name;
this.label = label;
this.order_sql = order_sql;
+ this.field = field;
}
public string ToSql ()
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.csproj
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.csproj (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Hyena</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Libraries/Hyena/Hyena/Timer.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena/Timer.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena/Timer.cs Tue Sep 9 22:10:05 2008
@@ -47,7 +47,7 @@
public void WriteElapsed (string message)
{
- Console.WriteLine ("{0} {1} {2}", label, message, ElapsedTime);
+ Console.Error.WriteLine ("{0} {1} {2}", label, message, ElapsedTime);
}
public void Dispose ()
Modified: trunk/banshee/src/Libraries/Lastfm.Gui/Lastfm.Gui.csproj
==============================================================================
--- trunk/banshee/src/Libraries/Lastfm.Gui/Lastfm.Gui.csproj (original)
+++ trunk/banshee/src/Libraries/Lastfm.Gui/Lastfm.Gui.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Lastfm</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Libraries/Lastfm/Lastfm.csproj
==============================================================================
--- trunk/banshee/src/Libraries/Lastfm/Lastfm.csproj (original)
+++ trunk/banshee/src/Libraries/Lastfm/Lastfm.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Lastfm</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Libraries/Migo/Migo.Syndication/Feed.cs
==============================================================================
--- trunk/banshee/src/Libraries/Migo/Migo.Syndication/Feed.cs (original)
+++ trunk/banshee/src/Libraries/Migo/Migo.Syndication/Feed.cs Tue Sep 9 22:10:05 2008
@@ -111,8 +111,8 @@
}
//private bool canceled;
- private bool deleted;
- private bool updating;
+ //private bool deleted;
+ //private bool updating;
//private ManualResetEvent updatingHandle = new ManualResetEvent (true);
@@ -510,12 +510,12 @@
public void Delete (bool deleteEnclosures)
{
lock (sync) {
- if (deleted)
- return;
+ //if (deleted)
+ // return;
- if (updating) {
- Manager.CancelUpdate (this);
- }
+ //if (updating) {
+ // Manager.CancelUpdate (this);
+ //}
foreach (FeedItem item in Items) {
item.Delete (deleteEnclosures);
Modified: trunk/banshee/src/Libraries/Migo/Migo.csproj
==============================================================================
--- trunk/banshee/src/Libraries/Migo/Migo.csproj (original)
+++ trunk/banshee/src/Libraries/Migo/Migo.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Migo</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Libraries/Mono.Media/Mono.Media.csproj
==============================================================================
--- trunk/banshee/src/Libraries/Mono.Media/Mono.Media.csproj (original)
+++ trunk/banshee/src/Libraries/Mono.Media/Mono.Media.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Mono.Media</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Libraries/Mtp/Mtp.csproj
==============================================================================
--- trunk/banshee/src/Libraries/Mtp/Mtp.csproj (original)
+++ trunk/banshee/src/Libraries/Mtp/Mtp.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>Mtp</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Modified: trunk/banshee/src/Libraries/MusicBrainz/MusicBrainz.csproj
==============================================================================
--- trunk/banshee/src/Libraries/MusicBrainz/MusicBrainz.csproj (original)
+++ trunk/banshee/src/Libraries/MusicBrainz/MusicBrainz.csproj Tue Sep 9 22:10:05 2008
@@ -8,6 +8,7 @@
<OutputType>Library</OutputType>
<UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
<AssemblyName>MusicBrainz</AssemblyName>
+ <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]