[longomatch] Use the vevents broker for player and capturer events
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Use the vevents broker for player and capturer events
- Date: Mon, 7 Jul 2014 11:31:19 +0000 (UTC)
commit 9326b706cebd41daab7627bc9ac262e1304739d6
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Sun Jun 22 13:58:06 2014 +0200
Use the vevents broker for player and capturer events
LongoMatch.Core/Common/EventsBroker.cs | 65 ++++++++++++++++++++
LongoMatch.Core/Handlers/Handlers.cs | 2 +-
LongoMatch.Core/Interfaces/GUI/IAnalysisWindow.cs | 1 +
LongoMatch.Core/Interfaces/GUI/ICapturerBin.cs | 3 -
LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs | 9 ---
LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs | 22 ++-----
LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs | 46 +++++---------
LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs | 62 -------------------
LongoMatch.GUI.Multimedia/gtk-gui/objects.xml | 24 +-------
LongoMatch.GUI/Gui/Component/AnalysisComponent.cs | 3 +-
LongoMatch.GUI/gtk-gui/objects.xml | 28 ++-------
LongoMatch.Services/Services/EventsManager.cs | 29 ++++-----
LongoMatch.Services/Services/PlaylistManager.cs | 14 ++---
LongoMatch.Services/Services/ProjectsManager.cs | 33 ++++++----
14 files changed, 134 insertions(+), 207 deletions(-)
---
diff --git a/LongoMatch.Core/Common/EventsBroker.cs b/LongoMatch.Core/Common/EventsBroker.cs
index 5265f66..dd2abc2 100644
--- a/LongoMatch.Core/Common/EventsBroker.cs
+++ b/LongoMatch.Core/Common/EventsBroker.cs
@@ -78,9 +78,18 @@ namespace LongoMatch.Common
public event OpenedProjectChangedHandler OpenedProjectChanged;
+ /* Player and Capturer */
public event TickHandler Tick;
public event ErrorHandler MultimediaError;
+ public event ErrorHandler CaptureError;
+ public event CaptureFinishedHandler CaptureFinished;
public event SegmentClosedHandler SegmentClosed;
+ public event NextButtonClickedHandler Next;
+ public event PrevButtonClickedHandler Prev;
+ public event DrawFrameHandler DrawFrame;
+ public event DetachPlayerHandler Detach;
+ public event PlaybackRateChangedHandler PlaybackRateChanged;
+
public EventsBroker ()
@@ -318,6 +327,62 @@ namespace LongoMatch.Common
TeamTagsChanged ();
}
}
+
+ public void EmitCaptureFinished (bool close)
+ {
+ if (CaptureFinished != null) {
+ CaptureFinished (close);
+ }
+ }
+
+ public void EmitCaptureError (string message)
+ {
+ if (CaptureError != null) {
+ CaptureError (message);
+ }
+ }
+
+ public void EmitMultimediaError (string message)
+ {
+ if (MultimediaError != null) {
+ MultimediaError (message);
+ }
+ }
+
+ public void EmitDetach ()
+ {
+ if (Detach != null) {
+ Detach ();
+ }
+ }
+
+ public void EmitNext ()
+ {
+ if (Next != null) {
+ Next ();
+ }
+ }
+
+ public void EmitPrev ()
+ {
+ if (Prev != null) {
+ Prev ();
+ }
+ }
+
+ public void EmitDrawFrame (Time currentTime)
+ {
+ if (DrawFrame != null) {
+ DrawFrame (currentTime);
+ }
+ }
+
+ public void EmitPlaybackRateChanged (float val)
+ {
+ if (PlaybackRateChanged != null) {
+ PlaybackRateChanged (val);
+ }
+ }
}
}
diff --git a/LongoMatch.Core/Handlers/Handlers.cs b/LongoMatch.Core/Handlers/Handlers.cs
index 4386334..48184cd 100644
--- a/LongoMatch.Core/Handlers/Handlers.cs
+++ b/LongoMatch.Core/Handlers/Handlers.cs
@@ -142,7 +142,7 @@ namespace LongoMatch.Handlers
/* The plays filter was updated */
public delegate void FilterUpdatedHandler ();
- public delegate void DetachPlayerHandler (bool detach);
+ public delegate void DetachPlayerHandler ();
/* Show project stats */
public delegate void ShowProjectStats(Project project);
diff --git a/LongoMatch.Core/Interfaces/GUI/IAnalysisWindow.cs
b/LongoMatch.Core/Interfaces/GUI/IAnalysisWindow.cs
index 56365c0..3df9abd 100644
--- a/LongoMatch.Core/Interfaces/GUI/IAnalysisWindow.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IAnalysisWindow.cs
@@ -32,6 +32,7 @@ namespace LongoMatch.Interfaces.GUI
void AddPlay(Play play);
void UpdateCategories ();
void DeletePlays (List<Play> plays);
+ void DetachPlayer ();
bool Fullscreen {set;}
diff --git a/LongoMatch.Core/Interfaces/GUI/ICapturerBin.cs b/LongoMatch.Core/Interfaces/GUI/ICapturerBin.cs
index c11cb48..00af422 100644
--- a/LongoMatch.Core/Interfaces/GUI/ICapturerBin.cs
+++ b/LongoMatch.Core/Interfaces/GUI/ICapturerBin.cs
@@ -26,9 +26,6 @@ namespace LongoMatch.Interfaces.GUI
{
public interface ICapturerBin
{
- event CaptureFinishedHandler CaptureFinished;
- event ErrorHandler Error;
-
Time CurrentTime {get;}
bool Capturing {get;}
Image CurrentMiniatureFrame {get;}
diff --git a/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs b/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs
index 56315ab..f2b1951 100644
--- a/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs
@@ -24,23 +24,14 @@ namespace LongoMatch.Interfaces.GUI
{
public interface IPlayerBin
{
- event SegmentClosedHandler SegmentClosedEvent;
- event TickHandler Tick;
- event ErrorHandler Error;
event StateChangeHandler PlayStateChanged;
- event NextButtonClickedHandler Next;
- event PrevButtonClickedHandler Prev;
- event DrawFrameHandler DrawFrame;
event SeekEventHandler SeekEvent;
- event DetachPlayerHandler Detach;
- event PlaybackRateChangedHandler PlaybackRateChanged;
Time CurrentTime {get;}
Time StreamLength {get;}
Image CurrentMiniatureFrame {get;}
Image CurrentFrame {get;}
bool Opened {get;}
- bool Detached {get;set;}
bool SeekingEnabled {set;}
bool Sensitive {set; get;}
diff --git a/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs b/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
index 4685063..2ff0621 100644
--- a/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
@@ -44,9 +44,6 @@ namespace LongoMatch.Gui
[System.ComponentModel.ToolboxItem(true)]
public partial class CapturerBin : Gtk.Bin, ICapturerBin
{
- public event CaptureFinishedHandler CaptureFinished;
- public event ErrorHandler Error;
-
CaptureSettings settings;
CapturerType type;
bool delayStart;
@@ -237,17 +234,12 @@ namespace LongoMatch.Gui
stopbutton.Clicked += (sender, e) => StopPeriod ();
finishbutton.Clicked += (sender, e) => {
string msg = Catalog.GetString ("Do you want to finish the current capture?");
-
if (!MessagesHelpers.QuestionMessage (this, msg)) {
return;
}
- if (CaptureFinished != null)
- CaptureFinished (false);
- };
- cancelbutton.Clicked += (sender, e) => {
- if (CaptureFinished != null)
- CaptureFinished (true);
+ Config.EventsBroker.EmitCaptureFinished (false);
};
+ cancelbutton.Clicked += (sender, e) => Config.EventsBroker.EmitCaptureFinished (true);
videodrawingarea.Realized += (sender, e) => {
if (delayStart) {
Configure ();
@@ -284,12 +276,6 @@ namespace LongoMatch.Gui
delayStart = false;
}
- void OnError (string message)
- {
- if(Error != null)
- Error(message);
- }
-
void OnTick(Time ellapsedTime) {
string text = "";
Time duration = new Time (0);
@@ -308,6 +294,10 @@ namespace LongoMatch.Gui
}
timelabel.Markup = String.Format("<span font=\"30px bold\">{0}</span> ", text);
}
+
+ void OnError (string message) {
+ Config.EventsBroker.EmitCaptureError (message);
+ }
void OnDeviceChange(int deviceID)
{
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
index 4dc821e..71d8ad2 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
@@ -47,16 +47,10 @@ namespace LongoMatch.Gui
public Time Stop;
}
- public event SegmentClosedHandler SegmentClosedEvent;
- public event LongoMatch.Handlers.TickHandler Tick;
- public event LongoMatch.Handlers.ErrorHandler Error;
+
+ public event TickHandler Tick;
public event LongoMatch.Handlers.StateChangeHandler PlayStateChanged;
- public event NextButtonClickedHandler Next;
- public event PrevButtonClickedHandler Prev;
- public event LongoMatch.Handlers.DrawFrameHandler DrawFrame;
public event SeekEventHandler SeekEvent;
- public event DetachPlayerHandler Detach;
- public event PlaybackRateChangedHandler PlaybackRateChanged;
const int THUMBNAIL_MAX_WIDTH = 100;
const int SCALE_FPS = 25;
@@ -97,7 +91,7 @@ namespace LongoMatch.Gui
seeksQueue = new double[2];
seeksQueue [0] = -1;
seeksQueue [1] = -1;
- detachbutton.Clicked += (sender, e) => EmitDetach();
+ detachbutton.Clicked += (sender, e) => Config.EventsBroker.EmitDetach ();
seeker = new Seeker();
seeker.SeekEvent += HandleSeekEvent;
segment.Start = new Time(-1);
@@ -271,8 +265,7 @@ namespace LongoMatch.Gui
segment.Stop = new Time (int.MaxValue);
SetScaleValue (SCALE_FPS);
//timescale.Sensitive = true;
- if (SegmentClosedEvent != null)
- SegmentClosedEvent();
+ Config.EventsBroker.EmitSegmentClosed ();
}
public void SetSensitive() {
@@ -401,20 +394,15 @@ namespace LongoMatch.Gui
}
}
- void EmitDetach () {
- if (Detach != null)
- Detach(!Detached);
- }
-
void CreatePlayer ()
{
videodrawingarea.DoubleBuffered = false;
player = Config.MultimediaToolkit.GetPlayer ();
- player.Tick += OnTick;
+ player.Tick += OnTick;
+ player.Error += Config.EventsBroker.EmitMultimediaError;
player.StateChange += OnStateChanged;
player.Eos += OnEndOfStream;
- player.Error += OnError;
player.ReadyToSeek += OnReadyToSeek;
videoeventbox.ButtonPressEvent += OnVideoboxButtonPressEvent;
@@ -485,9 +473,11 @@ namespace LongoMatch.Gui
}
}
- if (Tick != null)
+ if (Tick != null) {
Tick (currentTime, streamLength, currentPosition);
-
+ }
+
+ Config.EventsBroker.EmitTick (currentTime, streamLength, currentPosition);
}
void OnTimescaleAdjustBounds(object o, Gtk.AdjustBoundsArgs args)
@@ -558,8 +548,7 @@ namespace LongoMatch.Gui
}
void OnError(string message) {
- if(Error != null)
- Error(message);
+ Config.EventsBroker.EmitMultimediaError (message);
}
void OnClosebuttonClicked(object sender, System.EventArgs e)
@@ -572,14 +561,12 @@ namespace LongoMatch.Gui
{
if (segment.Start.MSeconds > 0)
Seek (segment.Start, true);
- if(Prev != null)
- Prev();
+ Config.EventsBroker.EmitPrev();
}
void OnNextbuttonClicked(object sender, System.EventArgs e)
{
- if(Next != null)
- Next();
+ Config.EventsBroker.EmitNext();
}
void OnVscale1FormatValue(object o, Gtk.FormatValueArgs args)
@@ -608,8 +595,8 @@ namespace LongoMatch.Gui
player.Volume = previousVLevel;
player.Rate = val;
- if (PlaybackRateChanged != null && emitRateScale) {
- PlaybackRateChanged (val);
+ if (emitRateScale) {
+ Config.EventsBroker.EmitPlaybackRateChanged (val);
}
}
@@ -647,8 +634,7 @@ namespace LongoMatch.Gui
void OnDrawButtonClicked(object sender, System.EventArgs e)
{
- if(DrawFrame != null)
- DrawFrame (CurrentTime);
+ Config.EventsBroker.EmitDrawFrame (CurrentTime);
}
void HandleRealized (object sender, EventArgs e)
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
b/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
index e4c923f..5a974d3 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
@@ -29,22 +29,9 @@ namespace LongoMatch.Gui
[System.ComponentModel.ToolboxItem(true)]
public partial class PlayerCapturerBin : Gtk.Bin, IPlayerBin, ICapturerBin
{
- /* Common events */
- public event ErrorHandler Error;
-
- /* Capturer events */
- public event CaptureFinishedHandler CaptureFinished;
-
/* Player Events */
- public event SegmentClosedHandler SegmentClosedEvent;
- public event TickHandler Tick;
public event StateChangeHandler PlayStateChanged;
- public event NextButtonClickedHandler Next;
- public event PrevButtonClickedHandler Prev;
- public event DrawFrameHandler DrawFrame;
public event SeekEventHandler SeekEvent;
- public event DetachPlayerHandler Detach;
- public event PlaybackRateChangedHandler PlaybackRateChanged;
public enum PlayerOperationMode {
Player,
@@ -280,65 +267,16 @@ namespace LongoMatch.Gui
}
void ConnectSignals () {
- capturerbin.CaptureFinished += (bool close) => {
- if (CaptureFinished != null)
- CaptureFinished (close);
- };
-
- capturerbin.Error += delegate(string message) {
- if (Error != null)
- Error (message);
- };
-
- playerbin.Error += delegate(string message) {
- if (Error != null)
- Error (message);
- };
-
- playerbin.SegmentClosedEvent += delegate () {
- if (SegmentClosedEvent != null)
- SegmentClosedEvent ();
- };
-
- playerbin.Tick += delegate (Time t, Time s, double p) {
- if (Tick != null)
- Tick (t, s, p);
- };
-
playerbin.PlayStateChanged += delegate (bool playing) {
if (PlayStateChanged != null)
PlayStateChanged (playing);
};
- playerbin.Next += delegate () {
- if (Next != null)
- Next ();
- };
-
- playerbin.Prev += delegate () {
- if (Prev != null)
- Prev ();
- };
-
- playerbin.DrawFrame += delegate (Time time) {
- if (DrawFrame != null)
- DrawFrame (time);
- };
-
playerbin.SeekEvent += delegate (Time pos) {
if (SeekEvent != null)
SeekEvent (pos);
};
- playerbin.Detach += delegate (bool detach) {
- if (Detach != null)
- Detach (detach);
- };
-
- playerbin.PlaybackRateChanged += (rate) => {
- if (PlaybackRateChanged != null)
- PlaybackRateChanged (rate);
- };
}
void LoadBackgroundPlayer (string filename) {
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml b/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
index 949d29c..d7dd50b 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
@@ -6,54 +6,32 @@
</itemgroup>
</itemgroups>
<signals>
- <itemgroup label="ICapturerBin Signals">
- <signal name="CaptureFinished" />
- <signal name="Error" />
- </itemgroup>
</signals>
</object>
<object type="LongoMatch.Gui.PlayerBin" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
<itemgroups>
<itemgroup label="IPlayerBin Properties">
- <property name="Detached" />
<property name="Sensitive" />
</itemgroup>
</itemgroups>
<signals>
<itemgroup label="IPlayerBin Signals">
- <signal name="SegmentClosedEvent" />
- <signal name="Tick" />
- <signal name="Error" />
<signal name="PlayStateChanged" />
- <signal name="Next" />
- <signal name="Prev" />
- <signal name="DrawFrame" />
<signal name="SeekEvent" />
- <signal name="Detach" />
- <signal name="PlaybackRateChanged" />
+ <signal name="Tick" />
</itemgroup>
</signals>
</object>
<object type="LongoMatch.Gui.PlayerCapturerBin" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
<itemgroups>
<itemgroup label="IPlayerBin Properties">
- <property name="Detached" />
<property name="Sensitive" />
</itemgroup>
</itemgroups>
<signals>
<itemgroup label="ICapturerBin Signals">
- <signal name="Error" />
- <signal name="CaptureFinished" />
- <signal name="SegmentClosedEvent" />
- <signal name="Tick" />
<signal name="PlayStateChanged" />
- <signal name="Next" />
- <signal name="Prev" />
- <signal name="DrawFrame" />
<signal name="SeekEvent" />
- <signal name="Detach" />
- <signal name="PlaybackRateChanged" />
</itemgroup>
</signals>
</object>
diff --git a/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
b/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
index 0a428c2..f973cd1 100644
--- a/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
+++ b/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
@@ -87,7 +87,6 @@ namespace LongoMatch.Gui.Component
}
private void ConnectSignals() {
- playercapturer.Detach += DetachPlayer;
KeyPressEvent += (o, args) => (
Config.EventsBroker.EmitKeyPressed(o, (int)args.Event.Key,
(int)args.Event.State));
}
@@ -104,7 +103,7 @@ namespace LongoMatch.Gui.Component
playerWindow = new Gtk.Window(Constants.SOFTWARE_NAME);
playerWindow.Icon = Stetic.IconLoader.LoadIcon(this, "longomatch",
IconSize.Button);
- playerWindow.DeleteEvent += (o, args) => DetachPlayer(false);
+ playerWindow.DeleteEvent += (o, args) => DetachPlayer();
box = new EventBox();
box.KeyPressEvent += (o, args) => OnKeyPressEvent(args.Event);
diff --git a/LongoMatch.GUI/gtk-gui/objects.xml b/LongoMatch.GUI/gtk-gui/objects.xml
index 7636673..083d16c 100644
--- a/LongoMatch.GUI/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -313,56 +313,38 @@
<signals />
</object>
<object type="LongoMatch.Gui.CapturerBin" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
- <itemgroups />
- <signals>
- <itemgroup label="ICapturerBin Signals">
- <signal name="CaptureFinished" />
- <signal name="Error" />
+ <itemgroups>
+ <itemgroup label="CapturerBin Properties">
+ <property name="Capturing" />
</itemgroup>
+ </itemgroups>
+ <signals>
</signals>
</object>
<object type="LongoMatch.Gui.PlayerBin" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
<itemgroups>
<itemgroup label="IPlayerBin Properties">
- <property name="Detached" />
<property name="Sensitive" />
</itemgroup>
</itemgroups>
<signals>
<itemgroup label="IPlayerBin Signals">
- <signal name="SegmentClosedEvent" />
<signal name="Tick" />
- <signal name="Error" />
<signal name="PlayStateChanged" />
- <signal name="Next" />
- <signal name="Prev" />
- <signal name="DrawFrame" />
<signal name="SeekEvent" />
- <signal name="Detach" />
- <signal name="PlaybackRateChanged" />
</itemgroup>
</signals>
</object>
<object type="LongoMatch.Gui.PlayerCapturerBin" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
<itemgroups>
<itemgroup label="IPlayerBin Properties">
- <property name="Detached" />
<property name="Sensitive" />
</itemgroup>
</itemgroups>
<signals>
<itemgroup label="ICapturerBin Signals">
- <signal name="Error" />
- <signal name="CaptureFinished" />
- <signal name="SegmentClosedEvent" />
- <signal name="Tick" />
<signal name="PlayStateChanged" />
- <signal name="Next" />
- <signal name="Prev" />
- <signal name="DrawFrame" />
<signal name="SeekEvent" />
- <signal name="Detach" />
- <signal name="PlaybackRateChanged" />
</itemgroup>
</signals>
</object>
diff --git a/LongoMatch.Services/Services/EventsManager.cs b/LongoMatch.Services/Services/EventsManager.cs
index e52ee78..fb141ef 100644
--- a/LongoMatch.Services/Services/EventsManager.cs
+++ b/LongoMatch.Services/Services/EventsManager.cs
@@ -52,7 +52,6 @@ namespace LongoMatch.Services
{
this.guiToolkit = guiToolkit;
this.renderer = renderer;
- Config.EventsBroker.OpenedProjectChanged += HandleOpenedProjectChanged;
catsTime = new Dictionary<Category, Time>();
ConnectSignals ();
}
@@ -68,24 +67,9 @@ namespace LongoMatch.Services
if (project == null)
return;
- if (player != null) {
- player.Prev -= OnPrev;
- player.SegmentClosedEvent -= OnSegmentClosedEvent;
- player.DrawFrame -= OnDrawFrame;
- player.PlaybackRateChanged -= HandlePlaybackRateChanged;
- }
-
this.analysisWindow = analysisWindow;
player = analysisWindow.Player;
capturer = analysisWindow.Capturer;
-
- if (player != null) {
- player.Prev += OnPrev;
- player.SegmentClosedEvent += OnSegmentClosedEvent;
- player.DrawFrame += OnDrawFrame;
- player.PlaybackRateChanged += HandlePlaybackRateChanged;
- }
-
}
void Save (Project project) {
@@ -110,6 +94,19 @@ namespace LongoMatch.Services
Config.EventsBroker.ShowProjectStatsEvent += HandleShowProjectStatsEvent;
Config.EventsBroker.TagSubcategoriesChangedEvent +=
HandleTagSubcategoriesChangedEvent;
+
+ Config.EventsBroker.OpenedProjectChanged += HandleOpenedProjectChanged;
+
+ Config.EventsBroker.SegmentClosed += OnSegmentClosedEvent;
+ Config.EventsBroker.Prev += OnPrev;
+ Config.EventsBroker.DrawFrame += OnDrawFrame;
+ Config.EventsBroker.PlaybackRateChanged += HandlePlaybackRateChanged;
+ Config.EventsBroker.Detach += HandleDetach;
+ }
+
+ void HandleDetach ()
+ {
+ analysisWindow.DetachPlayer ();
}
void HandleTagSubcategoriesChangedEvent (bool tagsubcategories)
diff --git a/LongoMatch.Services/Services/PlaylistManager.cs b/LongoMatch.Services/Services/PlaylistManager.cs
index 8b71f98..1e85bc8 100644
--- a/LongoMatch.Services/Services/PlaylistManager.cs
+++ b/LongoMatch.Services/Services/PlaylistManager.cs
@@ -89,15 +89,11 @@ namespace LongoMatch.Services
Config.EventsBroker.PlayListNodeSelectedEvent += LoadPlaylistPlay;
Config.EventsBroker.RenderPlaylist += OnRenderPlaylistEvent;
Config.EventsBroker.SegmentClosed += () => {selectedTimeNode = null;};
-
- /* Handle Next/Prev from the player */
- if (analysisWindow.Player != null) {
- analysisWindow.Player.Next += () => {Next();};
- analysisWindow.Player.Prev += () => {
- if(selectedTimeNode is PlayListPlay)
- Prev();
- };
- }
+ Config.EventsBroker.Next += () => {Next ();};
+ Config.EventsBroker.Prev += () => {
+ if(selectedTimeNode is PlayListPlay)
+ Prev();
+ };
}
private void Add(List<Play> plays) {
diff --git a/LongoMatch.Services/Services/ProjectsManager.cs b/LongoMatch.Services/Services/ProjectsManager.cs
index 127ab98..c5ba731 100644
--- a/LongoMatch.Services/Services/ProjectsManager.cs
+++ b/LongoMatch.Services/Services/ProjectsManager.cs
@@ -58,6 +58,9 @@ namespace LongoMatch.Services
Config.EventsBroker.CloseOpenedProjectEvent += () => PromptCloseProject();
Config.EventsBroker.SaveProjectEvent += SaveProject;
Config.EventsBroker.KeyPressed += HandleKeyPressed;
+ Config.EventsBroker.CaptureError += HandleCaptureError;
+ Config.EventsBroker.CaptureFinished += HandleCaptureFinished;
+ Config.EventsBroker.MultimediaError += HandleMultimediaError;
}
public Project OpenedProject {
@@ -180,19 +183,6 @@ namespace LongoMatch.Services
OpenedProjectType = projectType;
if (Player != null) {
- Player.Tick += Config.EventsBroker.EmitTick;
- Player.Error += HandleMultimediaError;
- Player.SegmentClosedEvent += Config.EventsBroker.EmitSegmentClosed;
- }
- if (Capturer != null) {
- Capturer.CaptureFinished += (close) => {
- CloseOpenedProject (!close);
- if (!close) {
- OpenProjectID (project.ID);
- }
- };
- if (Capturer != Player)
- Capturer.Error += HandleMultimediaError;
}
if(projectType == ProjectType.FileProject) {
@@ -387,6 +377,23 @@ namespace LongoMatch.Services
" the current project will be closed:")+"\n" + message);
CloseOpenedProject (true);
}
+
+ void HandleCaptureFinished (bool close)
+ {
+ Guid id = OpenedProject.ID;
+ ProjectType type = OpenedProjectType;
+ CloseOpenedProject (!close);
+ if (!close && type != ProjectType.FakeCaptureProject) {
+ OpenProjectID (id);
+ }
+ }
+
+ void HandleCaptureError (string message)
+ {
+ guiToolkit.ErrorMessage (Catalog.GetString("The following error happened and" +
+ " the current capture will be closed:")+"\n" + message);
+ HandleCaptureFinished (false);
+ }
void HandleKeyPressed (object sender, int key, int modifier)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]