Skip to content

Commit c8e2189

Browse files
committed
Removed ThemeManagerFactory and use dependency injection for ThemeManager instead.
1 parent 2131c81 commit c8e2189

25 files changed

Lines changed: 131 additions & 42 deletions

Source/Clients/NostalgicPlayer/Composition/CompositionRoot.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Polycode.NostalgicPlayer.Client.GuiPlayer.Services;
99
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.AudiusWindow;
1010
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.MainWindow;
11+
using Polycode.NostalgicPlayer.Controls.Composition;
1112
using Polycode.NostalgicPlayer.External.Composition;
1213
using Polycode.NostalgicPlayer.Library.Application;
1314
using Polycode.NostalgicPlayer.Logic.Composition;
@@ -31,6 +32,7 @@ public static void Register(Container container)
3132
container.RegisterLogic();
3233
container.RegisterExternal();
3334
container.RegisterPlatform();
35+
container.RegisterControls();
3436

3537
RegisterSettings(container);
3638
RegisterFactories(container);

Source/Clients/NostalgicPlayer/Services/ControlInitializerService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using System.Linq;
88
using System.Reflection;
99
using System.Windows.Forms;
10-
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows;
10+
using Polycode.NostalgicPlayer.Controls;
1111
using Polycode.NostalgicPlayer.Kit.Utility.Interfaces;
1212

1313
namespace Polycode.NostalgicPlayer.Client.GuiPlayer.Services

Source/Clients/NostalgicPlayer/Services/FormCreatorService.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
/* license of NostalgicPlayer is keep. See the LICENSE file for more */
44
/* information. */
55
/******************************************************************************/
6+
using System.ComponentModel;
67
using System.Linq;
78
using System.Reflection;
89
using System.Windows.Forms;
10+
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows;
11+
using Polycode.NostalgicPlayer.Controls;
912
using Polycode.NostalgicPlayer.Kit.Utility.Interfaces;
1013

1114
namespace Polycode.NostalgicPlayer.Client.GuiPlayer.Services
@@ -41,6 +44,7 @@ public FormCreatorService(IApplicationContext applicationContext, IControlInitia
4144
{
4245
T form = new T();
4346

47+
CallComponentInitializeMethod(form);
4448
controlInitializerService.InitializeControls(form.Controls);
4549

4650
CallInitializeMethod(form, "InitializeBaseForm");
@@ -50,6 +54,41 @@ public FormCreatorService(IApplicationContext applicationContext, IControlInitia
5054
}
5155

5256
#region Private methods
57+
/********************************************************************/
58+
/// <summary>
59+
/// Check to see if the form has a component collection. If so,
60+
/// call initialize on them
61+
/// </summary>
62+
/********************************************************************/
63+
private void CallComponentInitializeMethod(Form form)
64+
{
65+
FieldInfo field = form.GetType().GetField("components", BindingFlags.NonPublic | BindingFlags.Instance);
66+
67+
if (field != null)
68+
{
69+
if (field.GetValue(form) is IContainer container)
70+
{
71+
foreach (Component component in container.Components)
72+
{
73+
if (component is IDependencyInjectionControl diComponent)
74+
{
75+
MethodInfo initializeMethod = diComponent.GetType().GetMethod("InitializeComponent", BindingFlags.Public | BindingFlags.Instance);
76+
77+
if (initializeMethod != null)
78+
{
79+
ParameterInfo[] parameters = initializeMethod.GetParameters();
80+
object[] arguments = parameters.Select(p => applicationContext.Container.GetInstance(p.ParameterType)).ToArray();
81+
82+
initializeMethod.Invoke(diComponent, arguments);
83+
}
84+
}
85+
}
86+
}
87+
}
88+
}
89+
90+
91+
5392
/********************************************************************/
5493
/// <summary>
5594
/// Try to find the given method and call it

Source/Clients/NostalgicPlayer/Windows/AudiusWindow/AudiusListControl.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.AudiusWindow.Events;
1515
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.AudiusWindow.ListItems;
1616
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.MainWindow;
17+
using Polycode.NostalgicPlayer.Controls;
1718
using Polycode.NostalgicPlayer.External.Download;
1819

1920
namespace Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.AudiusWindow

Source/Clients/NostalgicPlayer/Windows/AudiusWindow/Pages/ProfilePlaylistsPageControl.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Windows.Forms;
99
using Polycode.NostalgicPlayer.Client.GuiPlayer.Controls;
1010
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.AudiusWindow.ListItems;
11+
using Polycode.NostalgicPlayer.Controls;
1112
using Polycode.NostalgicPlayer.External;
1213
using Polycode.NostalgicPlayer.External.Audius;
1314
using Polycode.NostalgicPlayer.External.Audius.Interfaces;

Source/Clients/NostalgicPlayer/Windows/AudiusWindow/Pages/ProfileTracksPageControl.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.Windows.Forms;
1010
using Polycode.NostalgicPlayer.Client.GuiPlayer.Controls;
1111
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.AudiusWindow.ListItems;
12+
using Polycode.NostalgicPlayer.Controls;
1213
using Polycode.NostalgicPlayer.External;
1314
using Polycode.NostalgicPlayer.External.Audius;
1415
using Polycode.NostalgicPlayer.External.Audius.Interfaces;

Source/Clients/NostalgicPlayer/Windows/AudiusWindow/Pages/SearchPageControl.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Polycode.NostalgicPlayer.Client.GuiPlayer.Services;
1313
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.AudiusWindow.Events;
1414
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.AudiusWindow.ListItems;
15+
using Polycode.NostalgicPlayer.Controls;
1516
using Polycode.NostalgicPlayer.External;
1617
using Polycode.NostalgicPlayer.External.Audius;
1718
using Polycode.NostalgicPlayer.External.Audius.Interfaces;

Source/Clients/NostalgicPlayer/Windows/AudiusWindow/Pages/TrendingPageControl.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Krypton.Toolkit;
1212
using Polycode.NostalgicPlayer.Client.GuiPlayer.Controls;
1313
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.AudiusWindow.ListItems;
14+
using Polycode.NostalgicPlayer.Controls;
1415
using Polycode.NostalgicPlayer.External;
1516
using Polycode.NostalgicPlayer.External.Audius;
1617
using Polycode.NostalgicPlayer.External.Audius.Interfaces;

Source/Clients/NostalgicPlayer/Windows/SettingsWindow/Pages/AgentsListUserControl.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using Polycode.NostalgicPlayer.Client.GuiPlayer.Containers.Settings;
1414
using Polycode.NostalgicPlayer.Client.GuiPlayer.Services;
1515
using Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.MainWindow;
16+
using Polycode.NostalgicPlayer.Controls;
1617
using Polycode.NostalgicPlayer.Kit.Containers;
1718
using Polycode.NostalgicPlayer.Kit.Gui.Components;
1819
using Polycode.NostalgicPlayer.Kit.Gui.Extensions;

Source/Clients/NostalgicPlayer/Windows/SettingsWindow/Pages/AgentsPageControl.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using Krypton.Navigator;
1010
using Krypton.Toolkit;
1111
using Polycode.NostalgicPlayer.Client.GuiPlayer.Containers.Settings;
12+
using Polycode.NostalgicPlayer.Controls;
1213
using Polycode.NostalgicPlayer.Kit.Utility.Interfaces;
1314

1415
namespace Polycode.NostalgicPlayer.Client.GuiPlayer.Windows.SettingsWindow.Pages

0 commit comments

Comments
 (0)