[banshee] [Banshee.Moblin] Go to NowPlaying if video starts
- From: Gabriel Burt <gburt src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [banshee] [Banshee.Moblin] Go to NowPlaying if video starts
- Date: Fri, 23 Oct 2009 00:27:35 +0000 (UTC)
commit 91396992257e45d7428eb930713a25220839dcc2
Author: Gabriel Burt <gabriel burt gmail com>
Date: Thu Oct 22 17:23:13 2009 -0700
[Banshee.Moblin] Go to NowPlaying if video starts
.../Banshee.Moblin/Banshee.Moblin/MoblinService.cs | 48 +++++++++++++++++++-
1 files changed, 47 insertions(+), 1 deletions(-)
---
diff --git a/src/Extensions/Banshee.Moblin/Banshee.Moblin/MoblinService.cs b/src/Extensions/Banshee.Moblin/Banshee.Moblin/MoblinService.cs
index 37b652d..f51ebd5 100644
--- a/src/Extensions/Banshee.Moblin/Banshee.Moblin/MoblinService.cs
+++ b/src/Extensions/Banshee.Moblin/Banshee.Moblin/MoblinService.cs
@@ -32,7 +32,10 @@ using Gtk;
using Hyena;
using Banshee.Base;
+using Banshee.Collection;
+using Banshee.Sources;
using Banshee.ServiceStack;
+using Banshee.MediaEngine;
using Banshee.Gui;
using Mutter;
@@ -43,6 +46,9 @@ namespace Banshee.Moblin
{
private GtkElementsService elements_service;
private InterfaceActionService interface_action_service;
+ private SourceManager source_manager;
+ private PlayerEngineService player;
+ private Banshee.Sources.Source now_playing;
public MoblinService ()
{
@@ -52,6 +58,8 @@ namespace Banshee.Moblin
{
elements_service = ServiceManager.Get<GtkElementsService> ();
interface_action_service = ServiceManager.Get<InterfaceActionService> ();
+ source_manager = ServiceManager.SourceManager;
+ player = ServiceManager.PlayerEngine;
if (!ServiceStartup ()) {
ServiceManager.ServiceStarted += OnServiceStarted;
@@ -64,6 +72,10 @@ namespace Banshee.Moblin
interface_action_service = (InterfaceActionService)args.Service;
} else if (args.Service is GtkElementsService) {
elements_service = (GtkElementsService)args.Service;
+ } else if (args.Service is SourceManager) {
+ source_manager = ServiceManager.SourceManager;
+ } else if (args.Service is PlayerEngineService) {
+ player = ServiceManager.PlayerEngine;
}
ServiceStartup ();
@@ -71,7 +83,7 @@ namespace Banshee.Moblin
private bool ServiceStartup ()
{
- if (elements_service == null || interface_action_service == null) {
+ if (elements_service == null || interface_action_service == null || source_manager == null || player == null) {
return false;
}
@@ -108,6 +120,9 @@ namespace Banshee.Moblin
elements_service.PrimaryWindow.Hide ();
return false;
};
+
+ FindNowPlaying ();
+ ServiceManager.PlayerEngine.ConnectEvent (OnPlayerStateChanged, PlayerEvent.StateChange | PlayerEvent.StartOfStream);
}
private void ReflectionHackeryUpTheNereid ()
@@ -174,6 +189,37 @@ namespace Banshee.Moblin
// FIXME: We should have something like PlayerEngine.InternalVolumeEnabled = false
ServiceManager.PlayerEngine.Volume = 100;
}
+
+ private void OnPlayerStateChanged (PlayerEventArgs args)
+ {
+ var player = ServiceManager.PlayerEngine;
+ if (player.CurrentState == PlayerState.Playing && player.CurrentTrack.HasAttribute (TrackMediaAttributes.VideoStream)) {
+ if (now_playing != null) {
+ ServiceManager.SourceManager.SetActiveSource (now_playing);
+ }
+
+ PresentPrimaryInterface ();
+ }
+ }
+
+ private void FindNowPlaying ()
+ {
+ foreach (var src in ServiceManager.SourceManager.Sources) {
+ if (src.UniqueId.Contains ("now-playing")) {
+ now_playing = src;
+ break;
+ }
+ }
+
+ if (now_playing != null)
+ return;
+
+ Banshee.ServiceStack.ServiceManager.SourceManager.SourceAdded += (args) => {
+ if (now_playing == null && args.Source.UniqueId.Contains ("now-playing")) {
+ now_playing = args.Source;
+ }
+ };
+ }
public void PresentPrimaryInterface ()
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]