banshee r3485 - in trunk/banshee: . src/Core/Banshee.Services/Banshee.PlaybackController src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying
- From: abock svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3485 - in trunk/banshee: . src/Core/Banshee.Services/Banshee.PlaybackController src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying
- Date: Wed, 19 Mar 2008 07:01:07 +0000 (GMT)
Author: abock
Date: Wed Mar 19 07:01:07 2008
New Revision: 3485
URL: http://svn.gnome.org/viewvc/banshee?rev=3485&view=rev
Log:
2008-03-19 Aaron Bockover <abock gnome org>
* src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs:
Added a TrackStarted event that will always be raised, even if the
playback controller did not transition to the track, but most importantly
it will _always_ be raised after the Transition event; this allows
users to connect to both events to determine if the track that is
playing was manually played or not
* src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs:
Activate the now playing source if the user manually started playing a
track with a video stream; uses the nice transition/track start stuff
noted above
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs
trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs Wed Mar 19 07:01:07 2008
@@ -52,6 +52,8 @@
private TrackInfo current_track;
private TrackInfo changing_to_track;
+ private bool raise_started_after_transition = false;
+ private bool transition_track_started = false;
private Random random = new Random ();
@@ -70,6 +72,7 @@
public event EventHandler Stopped;
public event EventHandler SourceChanged;
+ public event EventHandler TrackStarted;
public event EventHandler Transition;
public PlaybackControllerService ()
@@ -111,41 +114,54 @@
}
changing_to_track = null;
+
+ if (!raise_started_after_transition) {
+ transition_track_started = false;
+ OnTrackStarted ();
+ } else {
+ transition_track_started = true;
+ }
break;
}
}
public void First ()
{
- OnTransition ();
+ raise_started_after_transition = true;
if (Source is IBasicPlaybackController) {
((IBasicPlaybackController)Source).First ();
} else {
((ICanonicalPlaybackController)this).First ();
}
+
+ OnTransition ();
}
public void Next ()
{
- OnTransition ();
+ raise_started_after_transition = true;
if (Source is IBasicPlaybackController) {
((IBasicPlaybackController)Source).Next ();
} else {
((ICanonicalPlaybackController)this).Next ();
}
+
+ OnTransition ();
}
public void Previous ()
{
- OnTransition ();
+ raise_started_after_transition = true;
if (Source is IBasicPlaybackController) {
((IBasicPlaybackController)Source).Previous ();
} else {
((ICanonicalPlaybackController)this).Previous ();
}
+
+ OnTransition ();
}
void ICanonicalPlaybackController.First ()
@@ -239,6 +255,13 @@
if (handler != null) {
handler (this, EventArgs.Empty);
}
+
+ if (raise_started_after_transition && transition_track_started) {
+ OnTrackStarted ();
+ }
+
+ raise_started_after_transition = false;
+ transition_track_started = false;
}
protected virtual void OnSourceChanged ()
@@ -249,6 +272,14 @@
}
}
+ protected virtual void OnTrackStarted ()
+ {
+ EventHandler handler = TrackStarted;
+ if (handler != null) {
+ handler (this, EventArgs.Empty);
+ }
+ }
+
public TrackInfo CurrentTrack {
get { return current_track; }
protected set { current_track = value; }
Modified: trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs Wed Mar 19 07:01:07 2008
@@ -31,13 +31,18 @@
using Gtk;
using Banshee.Sources;
-using Banshee.Sources.Gui;
using Banshee.ServiceStack;
+using Banshee.MediaEngine;
+using Banshee.Collection;
+
+using Banshee.Sources.Gui;
namespace Banshee.NowPlaying
{
public class NowPlayingSource : Source, IDisposable
- {
+ {
+ private TrackInfo transitioned_track;
+
public NowPlayingSource () : base ("now-playing", Catalog.GetString ("Now Playing"), 0)
{
Properties.SetString ("Icon.Name", "media-playback-start");
@@ -45,6 +50,23 @@
Properties.Set<bool> ("Nereid.SourceContents.HeaderVisible", false);
ServiceManager.SourceManager.AddSource (this);
+
+ ServiceManager.PlaybackController.Transition += OnPlaybackControllerTransition;
+ ServiceManager.PlaybackController.TrackStarted += OnPlaybackControllerTrackStarted;
+ }
+
+ private void OnPlaybackControllerTransition (object o, EventArgs args)
+ {
+ transitioned_track = ServiceManager.PlaybackController.CurrentTrack;
+ }
+
+ private void OnPlaybackControllerTrackStarted (object o, EventArgs args)
+ {
+ TrackInfo current_track = ServiceManager.PlaybackController.CurrentTrack;
+ if (current_track != null && transitioned_track != current_track &&
+ (current_track.MediaAttributes & TrackMediaAttributes.VideoStream) != 0) {
+ ServiceManager.SourceManager.SetActiveSource (this);
+ }
}
public void Dispose ()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]