[longomatch] Make playlists work again
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Make playlists work again
- Date: Mon, 6 Feb 2012 02:13:00 +0000 (UTC)
commit 8d8a418f39923cf62620afe3b6990d6b3a5e14d2
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Mon Jan 30 22:21:04 2012 +0100
Make playlists work again
LongoMatch.Services/Services/Core.cs | 11 +++++---
LongoMatch.Services/Services/PlaylistManager.cs | 33 ++++++++++++++++------
2 files changed, 31 insertions(+), 13 deletions(-)
---
diff --git a/LongoMatch.Services/Services/Core.cs b/LongoMatch.Services/Services/Core.cs
index 94f2ee5..cecac51 100644
--- a/LongoMatch.Services/Services/Core.cs
+++ b/LongoMatch.Services/Services/Core.cs
@@ -36,6 +36,8 @@ namespace LongoMatch.Services
static EventsManager eManager;
static HotKeysManager hkManager;
static GameUnitsManager guManager;
+ static PlaylistManager plManager;
+ static RenderingJobsManager videoRenderer;
static IMainWindow mainWindow;
static IGUIToolkit guiToolkit;
@@ -61,7 +63,6 @@ namespace LongoMatch.Services
}
public static void StartServices(IGUIToolkit guiToolkit, IMultimediaToolkit multimediaToolkit){
- RenderingJobsManager videoRenderer;
ProjectsManager projectsManager;
/* Start TemplatesService */
@@ -80,16 +81,17 @@ namespace LongoMatch.Services
/* Start the rendering jobs manager */
videoRenderer = new RenderingJobsManager(multimediaToolkit, guiToolkit);
- mainWindow.RenderPlaylistEvent += (playlist) => {
- videoRenderer.AddJob(guiToolkit.ConfigureRenderingJob(playlist));};
/* Start Game Units manager */
guManager = new GameUnitsManager(mainWindow, mainWindow.Player);
+ /* Start playlists manager */
+ plManager = new PlaylistManager(guiToolkit, videoRenderer);
+
projectsManager = new ProjectsManager(guiToolkit, multimediaToolkit);
projectsManager.OpenedProjectChanged += OnOpenedProjectChanged;
}
-
+
public static void BindEvents(IMainWindow mainWindow) {
/* Connect player events */
/* FIXME:
@@ -146,6 +148,7 @@ namespace LongoMatch.Services
eManager.OpenedProjectType = projectType;
guManager.OpenedProject = project;
+ plManager.OpenedProject = project;
}
private static void SetupBaseDir() {
diff --git a/LongoMatch.Services/Services/PlaylistManager.cs b/LongoMatch.Services/Services/PlaylistManager.cs
index 6fb0ccd..5952274 100644
--- a/LongoMatch.Services/Services/PlaylistManager.cs
+++ b/LongoMatch.Services/Services/PlaylistManager.cs
@@ -33,15 +33,16 @@ namespace LongoMatch.Services
IPlaylistWidget playlistWidget;
IPlayList playlist;
IPlayer player;
+ IRenderingJobsManager videoRenderer;
/* FIXME */
- Project openedProject;
TimeNode selectedTimeNode;
bool clockStarted;
Timer timeout;
- public PlaylistManager (IGUIToolkit guiToolkit)
+ public PlaylistManager (IGUIToolkit guiToolkit, IRenderingJobsManager videoRenderer)
{
+ this.videoRenderer = videoRenderer;
this.guiToolkit = guiToolkit;
playlistWidget = guiToolkit.MainWindow.Playlist;
player = guiToolkit.MainWindow.Player;
@@ -52,6 +53,11 @@ namespace LongoMatch.Services
StopClock();
}
+ public Project OpenedProject {
+ get;
+ set;
+ }
+
public void Load(string filePath) {
try {
playlist = PlayList.Load(filePath);
@@ -77,6 +83,7 @@ namespace LongoMatch.Services
mainWindow.PlayListNodeAddedEvent += OnPlayListNodeAdded;
mainWindow.PlayListNodeSelectedEvent += LoadPlaylistPlay;
mainWindow.ApplyRateEvent += (p) => {p.Rate = player.Rate;};
+ mainWindow.RenderPlaylistEvent += OnRenderPlaylistEvent;
/* Handle Next/Prev from the player */
player.Next += () => {Next();};
@@ -93,6 +100,13 @@ namespace LongoMatch.Services
private void LoadPlaylistPlay(PlayListPlay play)
{
+ if(OpenedProject != null) {
+ guiToolkit.ErrorMessage(Catalog.GetString(
+ "Please, close the opened project to play the playlist."));
+ Stop();
+ return;
+ }
+
StartClock();
player.SetPlayListElement(play.MediaFile.FilePath, play.Start.MSeconds,
play.Stop.MSeconds, play.Rate, playlist.HasNext());
@@ -100,12 +114,6 @@ namespace LongoMatch.Services
}
private bool Next() {
- if(openedProject != null) {
- guiToolkit.ErrorMessage(Catalog.GetString("Please, close the opened project to play the playlist."));
- Stop();
- return false;
- }
-
if (!playlist.HasNext()) {
Stop();
return false;
@@ -157,10 +165,17 @@ namespace LongoMatch.Services
return;
}
+ protected virtual void OnRenderPlaylistEvent (IPlayList playlist)
+ {
+ Job job = guiToolkit.ConfigureRenderingJob(playlist);
+ if (job != null)
+ videoRenderer.AddJob(job);
+ }
+
protected virtual void OnPlayListNodeAdded(Play play)
{
Add(new PlayListPlay {
- MediaFile = openedProject.Description.File,
+ MediaFile = OpenedProject.Description.File,
Drawings = play.Drawings,
Start = play.Start,
Stop = play.Stop,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]