[banshee/moblin] improved implementations of the queue



commit df86b05a94b1d928e0c2e4c47fae630264caf228
Author: Michael Meeks <michael meeks novell com>
Date:   Tue Sep 8 14:03:40 2009 +0100

    improved implementations of the queue

 .../Banshee.MoblinBackend/MoblinBognor.cs          |   19 ++++++++++++++++---
 .../Banshee.PlayQueue/PlayQueueSource.cs           |    6 ++++++
 2 files changed, 22 insertions(+), 3 deletions(-)
---
diff --git a/src/Backends/Banshee.Moblin/Banshee.MoblinBackend/MoblinBognor.cs b/src/Backends/Banshee.Moblin/Banshee.MoblinBackend/MoblinBognor.cs
index 18f304b..b42d055 100644
--- a/src/Backends/Banshee.Moblin/Banshee.MoblinBackend/MoblinBognor.cs
+++ b/src/Backends/Banshee.Moblin/Banshee.MoblinBackend/MoblinBognor.cs
@@ -62,6 +62,10 @@ internal class TrackModel
 		return uris.FindIndex (start, uris.Count - start,
 				       val => val == uri);
 	}
+ 	public bool Contains (string uri)
+	{
+		return uris.Contains (uri);
+	}
 	public void Add (string uri, int pos)
 	{
 		if ((uint) pos > (uint) uris.Count + 1) {
@@ -212,20 +216,29 @@ namespace Banshee.MoblinBackend.BognorRegis
 		public void PlayUri (string uri, string mimeType)
 		{
 			Console.WriteLine ("Play URI " + uri + " type " + mimeType);
-			ServiceManager.PlayerEngine.OpenPlay (new SafeUri (uri));
+
+			int idx = model.FindIndexFrom (0, uri);
+			if (idx == 0) { // already playing
+				Play(); 
+				return;
+			}
+			else if (idx >= 0) // don't pile up duplicates
+				Remove (idx);
+			Queue.EnqueuePlay (uri);
 		}
 		public void AddUri (string uri, string mimeType)
 		{
-			Queue.EnqueueUri (uri);
+			Queue.EnqueueUri (uri, false);
 		}
 		public void InsertUri (string uri, string mimeType, int pos)
 		{
+			Console.WriteLine ("Unimplemented - unused by mutter-moblin");
 			// 'int pos' is hardish - cf. PlayQueueSource.cs ...
 			// cf. PlaylistSource.ReorderSelectedTracks (eg.)
 		}
 		public void Remove (int index)
 		{
-//			RemoveTrackRange (DatabaseTrackModel, new Hyena.Collections.RangeCollection.Range (0, Count));
+			Queue.RemoveTrack (index);
 		}
 		public void Clear ()
 		{
diff --git a/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs b/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
index 76957b7..6bacaf3 100644
--- a/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
+++ b/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
@@ -106,6 +106,12 @@ namespace Banshee.PlayQueue
         
 #region IPlayQueue, IDBusExportable
 
+	public void EnqueuePlay (string uri)
+	{
+		EnqueueUri (uri, true);
+		((IBasicPlaybackController)this).Next (true);
+	}
+
         public void EnqueueUri (string uri)
         {
             EnqueueUri (uri, false);



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