[longomatch] Move startup code from service constructor to IService.Start.



commit 063ca44c9c2df1ce387adc6da8738461a0a82219
Author: Julien Moutte <julien fluendo com>
Date:   Mon Apr 13 12:03:24 2015 +0200

    Move startup code from service constructor to IService.Start.

 LongoMatch.Services/DataBaseManager.cs      |   16 ++++--
 LongoMatch.Services/EventsManager.cs        |   75 ++++++++++++++++----------
 LongoMatch.Services/HotKeysManager.cs       |   16 ++++--
 LongoMatch.Services/PlaylistManager.cs      |   48 ++++++++++-------
 LongoMatch.Services/ProjectsManager.cs      |   34 +++++++-----
 LongoMatch.Services/RenderingJobsManager.cs |   16 +++---
 LongoMatch.Services/ToolsManager.cs         |   77 ++++++++++++++------------
 7 files changed, 164 insertions(+), 118 deletions(-)
---
diff --git a/LongoMatch.Services/DataBaseManager.cs b/LongoMatch.Services/DataBaseManager.cs
index b478d41..8b2e9ff 100644
--- a/LongoMatch.Services/DataBaseManager.cs
+++ b/LongoMatch.Services/DataBaseManager.cs
@@ -38,11 +38,6 @@ namespace LongoMatch.DB
                {
                        this.DBDir = DBDir;
                        this.guiToolkit = guiToolkit;
-                       Config.EventsBroker.ManageDatabasesEvent += HandleManageDatabase;
-                       Config.EventsBroker.OpenedProjectChanged += (p, pt, f, a) => {
-                               OpenedProject = p;
-                       };
-                       UpdateDatabases ();
                }
 
                public Project OpenedProject {
@@ -159,17 +154,26 @@ namespace LongoMatch.DB
 
                public string Name {
                        get {
-                               return "Database manager";
+                               return "Database";
                        }
                }
 
                public bool Start ()
                {
+                       Config.EventsBroker.ManageDatabasesEvent += HandleManageDatabase;
+                       Config.EventsBroker.OpenedProjectChanged += (p, pt, f, a) => {
+                               OpenedProject = p;
+                       };
+
+                       UpdateDatabases ();
+
                        return true;
                }
 
                public bool Stop ()
                {
+                       Config.EventsBroker.ManageDatabasesEvent -= HandleManageDatabase;
+
                        return true;
                }
 
diff --git a/LongoMatch.Services/EventsManager.cs b/LongoMatch.Services/EventsManager.cs
index 4cda117..2340993 100644
--- a/LongoMatch.Services/EventsManager.cs
+++ b/LongoMatch.Services/EventsManager.cs
@@ -51,7 +51,6 @@ namespace LongoMatch.Services
                {
                        this.guiToolkit = guiToolkit;
                        this.renderer = renderer;
-                       ConnectSignals ();
                }
 
                void HandleOpenedProjectChanged (Project project, ProjectType projectType,
@@ -85,32 +84,6 @@ namespace LongoMatch.Services
                        }
                }
 
-               private void ConnectSignals ()
-               {
-                       Config.EventsBroker.NewEventEvent += OnNewTag;
-                       Config.EventsBroker.NewDashboardEventEvent += HandleNewPlay;
-                       Config.EventsBroker.EventsDeletedEvent += OnPlaysDeleted;
-                       Config.EventsBroker.MoveToEventTypeEvent += OnPlayCategoryChanged;
-                       Config.EventsBroker.DuplicateEventsEvent += OnDuplicatePlays;
-                       Config.EventsBroker.SnapshotSeries += OnSnapshotSeries;
-                       Config.EventsBroker.EventLoadedEvent += HandlePlayLoaded;
-                       Config.EventsBroker.PlaylistElementSelectedEvent += 
HandlePlaylistElementSelectedEvent;
-                       Config.EventsBroker.PlayerSubstitutionEvent += HandlePlayerSubstitutionEvent;
-                       Config.EventsBroker.DashboardEditedEvent += HandleDashboardEditedEvent;
-                       
-                       Config.EventsBroker.ShowProjectStatsEvent += HandleShowProjectStatsEvent;
-                       Config.EventsBroker.TagSubcategoriesChangedEvent += 
HandleTagSubcategoriesChangedEvent;
-                       
-                       Config.EventsBroker.OpenedProjectChanged += HandleOpenedProjectChanged;
-
-                       Config.EventsBroker.DrawFrame += HandleDrawFrame;
-                       Config.EventsBroker.Detach += HandleDetach;
-                       
-                       Config.EventsBroker.ShowFullScreenEvent += HandleShowFullScreenEvent;
-                       
-                       Config.EventsBroker.KeyPressed += HandleKeyPressed;
-               }
-
                void DeletePlays (List<TimelineEvent> plays, bool update = true)
                {
                        Log.Debug (plays.Count + " plays deleted");
@@ -437,17 +410,63 @@ namespace LongoMatch.Services
 
                public string Name {
                        get {
-                               return "Events manager";
+                               return "Events";
                        }
                }
 
                public bool Start ()
                {
+                       Config.EventsBroker.NewEventEvent += OnNewTag;
+                       Config.EventsBroker.NewDashboardEventEvent += HandleNewPlay;
+                       Config.EventsBroker.EventsDeletedEvent += OnPlaysDeleted;
+                       Config.EventsBroker.MoveToEventTypeEvent += OnPlayCategoryChanged;
+                       Config.EventsBroker.DuplicateEventsEvent += OnDuplicatePlays;
+                       Config.EventsBroker.SnapshotSeries += OnSnapshotSeries;
+                       Config.EventsBroker.EventLoadedEvent += HandlePlayLoaded;
+                       Config.EventsBroker.PlaylistElementSelectedEvent += 
HandlePlaylistElementSelectedEvent;
+                       Config.EventsBroker.PlayerSubstitutionEvent += HandlePlayerSubstitutionEvent;
+                       Config.EventsBroker.DashboardEditedEvent += HandleDashboardEditedEvent;
+
+                       Config.EventsBroker.ShowProjectStatsEvent += HandleShowProjectStatsEvent;
+                       Config.EventsBroker.TagSubcategoriesChangedEvent += 
HandleTagSubcategoriesChangedEvent;
+
+                       Config.EventsBroker.OpenedProjectChanged += HandleOpenedProjectChanged;
+
+                       Config.EventsBroker.DrawFrame += HandleDrawFrame;
+                       Config.EventsBroker.Detach += HandleDetach;
+
+                       Config.EventsBroker.ShowFullScreenEvent += HandleShowFullScreenEvent;
+
+                       Config.EventsBroker.KeyPressed += HandleKeyPressed;
+
                        return true;
                }
 
                public bool Stop ()
                {
+                       Config.EventsBroker.NewEventEvent -= OnNewTag;
+                       Config.EventsBroker.NewDashboardEventEvent -= HandleNewPlay;
+                       Config.EventsBroker.EventsDeletedEvent -= OnPlaysDeleted;
+                       Config.EventsBroker.MoveToEventTypeEvent -= OnPlayCategoryChanged;
+                       Config.EventsBroker.DuplicateEventsEvent -= OnDuplicatePlays;
+                       Config.EventsBroker.SnapshotSeries -= OnSnapshotSeries;
+                       Config.EventsBroker.EventLoadedEvent -= HandlePlayLoaded;
+                       Config.EventsBroker.PlaylistElementSelectedEvent -= 
HandlePlaylistElementSelectedEvent;
+                       Config.EventsBroker.PlayerSubstitutionEvent -= HandlePlayerSubstitutionEvent;
+                       Config.EventsBroker.DashboardEditedEvent -= HandleDashboardEditedEvent;
+
+                       Config.EventsBroker.ShowProjectStatsEvent -= HandleShowProjectStatsEvent;
+                       Config.EventsBroker.TagSubcategoriesChangedEvent -= 
HandleTagSubcategoriesChangedEvent;
+
+                       Config.EventsBroker.OpenedProjectChanged -= HandleOpenedProjectChanged;
+
+                       Config.EventsBroker.DrawFrame -= HandleDrawFrame;
+                       Config.EventsBroker.Detach -= HandleDetach;
+
+                       Config.EventsBroker.ShowFullScreenEvent -= HandleShowFullScreenEvent;
+
+                       Config.EventsBroker.KeyPressed -= HandleKeyPressed;
+
                        return true;
                }
 
diff --git a/LongoMatch.Services/HotKeysManager.cs b/LongoMatch.Services/HotKeysManager.cs
index 3f6aacd..ae0a4a9 100644
--- a/LongoMatch.Services/HotKeysManager.cs
+++ b/LongoMatch.Services/HotKeysManager.cs
@@ -47,11 +47,6 @@ namespace LongoMatch.Services
                public HotKeysManager ()
                {
                        dashboardHotkeys = new Dictionary<HotKey,DashboardButton> ();
-                       Config.EventsBroker.OpenedProjectChanged += HandleOpenedProjectChanged;
-                       Config.EventsBroker.KeyPressed += DashboardKeyListener;
-                       Config.EventsBroker.KeyPressed += UIKeyListener;
-                       Config.EventsBroker.DashboardEditedEvent += HandleDashboardEditedEvent;
-                       timer = new System.Threading.Timer (HandleTimeout);
                }
 
                void TagPlayer ()
@@ -248,17 +243,26 @@ namespace LongoMatch.Services
 
                public string Name {
                        get {
-                               return "HotKeys manager";
+                               return "HotKeys";
                        }
                }
 
                public bool Start ()
                {
+                       Config.EventsBroker.OpenedProjectChanged += HandleOpenedProjectChanged;
+                       Config.EventsBroker.KeyPressed += DashboardKeyListener;
+                       Config.EventsBroker.KeyPressed += UIKeyListener;
+                       Config.EventsBroker.DashboardEditedEvent += HandleDashboardEditedEvent;
+                       timer = new System.Threading.Timer (HandleTimeout);
                        return true;
                }
 
                public bool Stop ()
                {
+                       Config.EventsBroker.OpenedProjectChanged -= HandleOpenedProjectChanged;
+                       Config.EventsBroker.KeyPressed -= DashboardKeyListener;
+                       Config.EventsBroker.KeyPressed -= UIKeyListener;
+                       Config.EventsBroker.DashboardEditedEvent -= HandleDashboardEditedEvent;
                        return true;
                }
 
diff --git a/LongoMatch.Services/PlaylistManager.cs b/LongoMatch.Services/PlaylistManager.cs
index fd0777a..94023e4 100644
--- a/LongoMatch.Services/PlaylistManager.cs
+++ b/LongoMatch.Services/PlaylistManager.cs
@@ -45,24 +45,6 @@ namespace LongoMatch.Services
                {
                        this.videoRenderer = videoRenderer;
                        this.guiToolkit = guiToolkit;
-                       BindEvents ();
-               }
-
-               void BindEvents ()
-               {
-                       Config.EventsBroker.NewPlaylistEvent += HandleNewPlaylist;
-                       Config.EventsBroker.AddPlaylistElementEvent += HandleAddPlaylistElement;
-                       Config.EventsBroker.RenderPlaylist += HandleRenderPlaylist;
-                       Config.EventsBroker.OpenedProjectChanged += HandleOpenedProjectChanged;
-                       Config.EventsBroker.PreviousPlaylistElementEvent += HandlePrev;
-                       Config.EventsBroker.NextPlaylistElementEvent += HandleNext;
-                       Config.EventsBroker.LoadEventEvent += HandleLoadPlayEvent;
-                       Config.EventsBroker.PlaylistElementSelectedEvent += HandlePlaylistElementSelected;
-                       Config.EventsBroker.PlaybackRateChanged += HandlePlaybackRateChanged;
-                       Config.EventsBroker.TimeNodeChanged += HandlePlayChanged;
-                       Config.EventsBroker.SeekEvent += HandleSeekEvent;
-                       Config.EventsBroker.TogglePlayEvent += HandleTogglePlayEvent;
-                       Config.EventsBroker.KeyPressed += HandleKeyPressed;
                }
 
                void LoadPlay (TimelineEvent play, Time seekTime, bool playing)
@@ -318,17 +300,45 @@ namespace LongoMatch.Services
 
                public string Name {
                        get {
-                               return "Playlist manager";
+                               return "Playlists";
                        }
                }
 
                public bool Start ()
                {
+                       Config.EventsBroker.NewPlaylistEvent += HandleNewPlaylist;
+                       Config.EventsBroker.AddPlaylistElementEvent += HandleAddPlaylistElement;
+                       Config.EventsBroker.RenderPlaylist += HandleRenderPlaylist;
+                       Config.EventsBroker.OpenedProjectChanged += HandleOpenedProjectChanged;
+                       Config.EventsBroker.PreviousPlaylistElementEvent += HandlePrev;
+                       Config.EventsBroker.NextPlaylistElementEvent += HandleNext;
+                       Config.EventsBroker.LoadEventEvent += HandleLoadPlayEvent;
+                       Config.EventsBroker.PlaylistElementSelectedEvent += HandlePlaylistElementSelected;
+                       Config.EventsBroker.PlaybackRateChanged += HandlePlaybackRateChanged;
+                       Config.EventsBroker.TimeNodeChanged += HandlePlayChanged;
+                       Config.EventsBroker.SeekEvent += HandleSeekEvent;
+                       Config.EventsBroker.TogglePlayEvent += HandleTogglePlayEvent;
+                       Config.EventsBroker.KeyPressed += HandleKeyPressed;
+
                        return true;
                }
 
                public bool Stop ()
                {
+                       Config.EventsBroker.NewPlaylistEvent -= HandleNewPlaylist;
+                       Config.EventsBroker.AddPlaylistElementEvent -= HandleAddPlaylistElement;
+                       Config.EventsBroker.RenderPlaylist -= HandleRenderPlaylist;
+                       Config.EventsBroker.OpenedProjectChanged -= HandleOpenedProjectChanged;
+                       Config.EventsBroker.PreviousPlaylistElementEvent -= HandlePrev;
+                       Config.EventsBroker.NextPlaylistElementEvent -= HandleNext;
+                       Config.EventsBroker.LoadEventEvent -= HandleLoadPlayEvent;
+                       Config.EventsBroker.PlaylistElementSelectedEvent -= HandlePlaylistElementSelected;
+                       Config.EventsBroker.PlaybackRateChanged -= HandlePlaybackRateChanged;
+                       Config.EventsBroker.TimeNodeChanged -= HandlePlayChanged;
+                       Config.EventsBroker.SeekEvent -= HandleSeekEvent;
+                       Config.EventsBroker.TogglePlayEvent -= HandleTogglePlayEvent;
+                       Config.EventsBroker.KeyPressed -= HandleKeyPressed;
+
                        return true;
                }
 
diff --git a/LongoMatch.Services/ProjectsManager.cs b/LongoMatch.Services/ProjectsManager.cs
index a3c001a..81b189e 100644
--- a/LongoMatch.Services/ProjectsManager.cs
+++ b/LongoMatch.Services/ProjectsManager.cs
@@ -38,20 +38,6 @@ namespace LongoMatch.Services
                {
                        this.multimediaToolkit = multimediaToolkit;
                        this.guiToolkit = guiToolkit;
-                       ConnectSignals ();
-               }
-
-               public void ConnectSignals ()
-               {
-                       Config.EventsBroker.NewProjectEvent += NewProject;
-                       Config.EventsBroker.OpenProjectEvent += OpenProject;
-                       Config.EventsBroker.OpenProjectIDEvent += OpenProjectID;
-                       Config.EventsBroker.OpenNewProjectEvent += OpenNewProject;
-                       Config.EventsBroker.CloseOpenedProjectEvent += PromptCloseProject;
-                       Config.EventsBroker.SaveProjectEvent += SaveProject;
-                       Config.EventsBroker.CaptureError += HandleCaptureError;
-                       Config.EventsBroker.CaptureFinished += HandleCaptureFinished;
-                       Config.EventsBroker.MultimediaError += HandleMultimediaError;
                }
 
                public Project OpenedProject {
@@ -412,17 +398,35 @@ namespace LongoMatch.Services
 
                public string Name {
                        get {
-                               return "Projects manager";
+                               return "Projects";
                        }
                }
 
                public bool Start ()
                {
+                       Config.EventsBroker.NewProjectEvent += NewProject;
+                       Config.EventsBroker.OpenProjectEvent += OpenProject;
+                       Config.EventsBroker.OpenProjectIDEvent += OpenProjectID;
+                       Config.EventsBroker.OpenNewProjectEvent += OpenNewProject;
+                       Config.EventsBroker.CloseOpenedProjectEvent += PromptCloseProject;
+                       Config.EventsBroker.SaveProjectEvent += SaveProject;
+                       Config.EventsBroker.CaptureError += HandleCaptureError;
+                       Config.EventsBroker.CaptureFinished += HandleCaptureFinished;
+                       Config.EventsBroker.MultimediaError += HandleMultimediaError;
                        return true;
                }
 
                public bool Stop ()
                {
+                       Config.EventsBroker.NewProjectEvent -= NewProject;
+                       Config.EventsBroker.OpenProjectEvent -= OpenProject;
+                       Config.EventsBroker.OpenProjectIDEvent -= OpenProjectID;
+                       Config.EventsBroker.OpenNewProjectEvent -= OpenNewProject;
+                       Config.EventsBroker.CloseOpenedProjectEvent -= PromptCloseProject;
+                       Config.EventsBroker.SaveProjectEvent -= SaveProject;
+                       Config.EventsBroker.CaptureError -= HandleCaptureError;
+                       Config.EventsBroker.CaptureFinished -= HandleCaptureFinished;
+                       Config.EventsBroker.MultimediaError -= HandleMultimediaError;
                        return true;
                }
 
diff --git a/LongoMatch.Services/RenderingJobsManager.cs b/LongoMatch.Services/RenderingJobsManager.cs
index d538ada..8ed83fc 100644
--- a/LongoMatch.Services/RenderingJobsManager.cs
+++ b/LongoMatch.Services/RenderingJobsManager.cs
@@ -47,13 +47,6 @@ namespace LongoMatch.Services
                        this.stateBar = guiToolkit.RenderingStateBar;
                        jobs = new List<Job> ();
                        pendingJobs = new List<Job> ();
-                       stateBar.Cancel += (sender, e) => CancelCurrentJob ();
-                       stateBar.ManageJobs += (sender, e) => ManageJobs ();
-                       Config.EventsBroker.ConvertVideoFilesEvent += (inputFiles, encSettings) => {
-                               ConversionJob job = new ConversionJob (inputFiles, encSettings);
-                               AddJob (job);
-                       };
-                       ; 
                }
 
                public List<Job> Jobs {
@@ -421,12 +414,19 @@ namespace LongoMatch.Services
 
                public string Name {
                        get {
-                               return "Rendering jobs manager";
+                               return "Rendering jobs";
                        }
                }
 
                public bool Start ()
                {
+                       stateBar.Cancel += (sender, e) => CancelCurrentJob ();
+                       stateBar.ManageJobs += (sender, e) => ManageJobs ();
+                       Config.EventsBroker.ConvertVideoFilesEvent += (inputFiles, encSettings) => {
+                               ConversionJob job = new ConversionJob (inputFiles, encSettings);
+                               AddJob (job);
+                       };
+
                        return true;
                }
 
diff --git a/LongoMatch.Services/ToolsManager.cs b/LongoMatch.Services/ToolsManager.cs
index 06ac2cf..ed335c9 100644
--- a/LongoMatch.Services/ToolsManager.cs
+++ b/LongoMatch.Services/ToolsManager.cs
@@ -43,41 +43,6 @@ namespace LongoMatch.Services
                        this.guiToolkit = guiToolkit;
                        this.dbManager = dbManager;
                        ProjectImporters = new List<ProjectImporter> ();
-                       
-                       RegisterImporter (Project.Import, Catalog.GetString ("Import project"),
-                               Constants.PROJECT_NAME,
-                               new string[] { "*" + Constants.PROJECT_EXT }, false, false);
-
-                       Config.EventsBroker.OpenedProjectChanged += (pr, pt, f, a) => {
-                               this.openedProject = pr;
-                       };
-                       
-                       Config.EventsBroker.EditPreferencesEvent += () => {
-                               guiToolkit.OpenPreferencesEditor ();
-                       };
-                       
-                       Config.EventsBroker.ManageCategoriesEvent += () => {
-                               if (openedProject == null || Config.EventsBroker.EmitCloseOpenedProject ()) {
-                                       guiToolkit.OpenCategoriesTemplatesManager ();
-                               }
-                       };
-                       
-                       Config.EventsBroker.ManageTeamsEvent += () => {
-                               if (openedProject == null || Config.EventsBroker.EmitCloseOpenedProject ()) {
-                                       guiToolkit.OpenTeamsTemplatesManager ();
-                               }
-                       };
-                       
-                       Config.EventsBroker.ManageProjectsEvent += () => {
-                               if (openedProject == null || Config.EventsBroker.EmitCloseOpenedProject ()) {
-                                       guiToolkit.OpenProjectsManager (this.openedProject);
-                               }
-                       };
-                       
-                       Config.EventsBroker.MigrateDB += HandleMigrateDB;
-                       
-                       Config.EventsBroker.ExportProjectEvent += ExportProject;
-                       Config.EventsBroker.ImportProjectEvent += ImportProject;
                }
 
                public void RegisterImporter (Func<string, Project> importFunction,
@@ -238,17 +203,57 @@ namespace LongoMatch.Services
 
                public string Name {
                        get {
-                               return "Tools manager";
+                               return "Tools";
                        }
                }
 
                public bool Start ()
                {
+                       RegisterImporter (Project.Import, Catalog.GetString ("Import project"),
+                               Constants.PROJECT_NAME,
+                               new string[] { "*" + Constants.PROJECT_EXT }, false, false);
+
+                       Config.EventsBroker.OpenedProjectChanged += (pr, pt, f, a) => {
+                               this.openedProject = pr;
+                       };
+
+                       Config.EventsBroker.EditPreferencesEvent += () => {
+                               guiToolkit.OpenPreferencesEditor ();
+                       };
+
+                       Config.EventsBroker.ManageCategoriesEvent += () => {
+                               if (openedProject == null || Config.EventsBroker.EmitCloseOpenedProject ()) {
+                                       guiToolkit.OpenCategoriesTemplatesManager ();
+                               }
+                       };
+
+                       Config.EventsBroker.ManageTeamsEvent += () => {
+                               if (openedProject == null || Config.EventsBroker.EmitCloseOpenedProject ()) {
+                                       guiToolkit.OpenTeamsTemplatesManager ();
+                               }
+                       };
+
+                       Config.EventsBroker.ManageProjectsEvent += () => {
+                               if (openedProject == null || Config.EventsBroker.EmitCloseOpenedProject ()) {
+                                       guiToolkit.OpenProjectsManager (this.openedProject);
+                               }
+                       };
+
+                       Config.EventsBroker.MigrateDB += HandleMigrateDB;
+
+                       Config.EventsBroker.ExportProjectEvent += ExportProject;
+                       Config.EventsBroker.ImportProjectEvent += ImportProject;
+
                        return true;
                }
 
                public bool Stop ()
                {
+                       Config.EventsBroker.MigrateDB -= HandleMigrateDB;
+
+                       Config.EventsBroker.ExportProjectEvent -= ExportProject;
+                       Config.EventsBroker.ImportProjectEvent -= ImportProject;
+
                        return true;
                }
 


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