diff --git a/Hyperbar.Windows.MediaController/Hyperbar.Windows.MediaController.csproj b/Hyperbar.Windows.MediaController/Hyperbar.Windows.MediaController.csproj
new file mode 100644
index 0000000..36a8d9c
--- /dev/null
+++ b/Hyperbar.Windows.MediaController/Hyperbar.Windows.MediaController.csproj
@@ -0,0 +1,42 @@
+
+
+ net8.0-windows10.0.19041.0
+ 10.0.17763.0
+ win10-x86;win10-x64;win10-arm64
+ true
+ true
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MSBuild:Compile
+
+
+
+
+ MSBuild:Compile
+
+
+
+
+ MSBuild:Compile
+
+
+
\ No newline at end of file
diff --git a/Hyperbar.Windows.MediaController/MediaController.cs b/Hyperbar.Windows.MediaController/MediaController.cs
new file mode 100644
index 0000000..5deeec7
--- /dev/null
+++ b/Hyperbar.Windows.MediaController/MediaController.cs
@@ -0,0 +1,10 @@
+namespace Hyperbar.Windows.Primary;
+
+public class MediaController :
+ IInitializer
+{
+ public Task InitializeAsync()
+ {
+ throw new NotImplementedException();
+ }
+}
diff --git a/Hyperbar.Windows/Views/CommandView.xaml b/Hyperbar.Windows.MediaController/MediaControllerView.xaml
similarity index 71%
rename from Hyperbar.Windows/Views/CommandView.xaml
rename to Hyperbar.Windows.MediaController/MediaControllerView.xaml
index c0a7e1d..f9d3f7f 100644
--- a/Hyperbar.Windows/Views/CommandView.xaml
+++ b/Hyperbar.Windows.MediaController/MediaControllerView.xaml
@@ -1,14 +1,14 @@
-
+ xmlns:ui="using:Hyperbar.Windows.UI">
+
-
\ No newline at end of file
+
diff --git a/Hyperbar.Windows.MediaController/MediaControllerView.xaml.cs b/Hyperbar.Windows.MediaController/MediaControllerView.xaml.cs
new file mode 100644
index 0000000..f89f5d2
--- /dev/null
+++ b/Hyperbar.Windows.MediaController/MediaControllerView.xaml.cs
@@ -0,0 +1,9 @@
+using Microsoft.UI.Xaml.Controls;
+
+namespace Hyperbar.Windows.MediaController;
+
+public sealed partial class MediaControllerView :
+ UserControl
+{
+ public MediaControllerView() => InitializeComponent();
+}
diff --git a/Hyperbar.Windows.MediaController/MediaControllerViewModel.cs b/Hyperbar.Windows.MediaController/MediaControllerViewModel.cs
new file mode 100644
index 0000000..622d169
--- /dev/null
+++ b/Hyperbar.Windows.MediaController/MediaControllerViewModel.cs
@@ -0,0 +1,37 @@
+using CommunityToolkit.Mvvm.ComponentModel;
+
+namespace Hyperbar.Windows.Primary;
+
+public partial class MediaInformationViewModel :
+ WidgetComponentViewModel
+{
+ [ObservableProperty]
+ private string title = "this is a test";
+
+ [ObservableProperty]
+ private string description = "this is a test description";
+
+ public MediaInformationViewModel(ITemplateFactory templateFactory) : base(templateFactory)
+ {
+ }
+}
+
+public class MediaControllerViewModel :
+ ObservableCollectionViewModel,
+ ITemplatedViewModel
+{
+ public MediaControllerViewModel(ITemplateFactory templateFactory,
+ IServiceFactory serviceFactory,
+ IMediator mediator) : base(serviceFactory, mediator)
+ {
+ TemplateFactory = templateFactory;
+
+ this.Add();
+ this.Add("\uEB9E");
+ this.Add("\uE768");
+ this.Add("\uE769");
+ this.Add("\uEB9D");
+ }
+
+ public ITemplateFactory TemplateFactory { get; set; }
+}
\ No newline at end of file
diff --git a/Hyperbar.Windows.MediaController/MediaControllerWidgetProvider.cs b/Hyperbar.Windows.MediaController/MediaControllerWidgetProvider.cs
new file mode 100644
index 0000000..fe761f1
--- /dev/null
+++ b/Hyperbar.Windows.MediaController/MediaControllerWidgetProvider.cs
@@ -0,0 +1,17 @@
+using Hyperbar.Windows.MediaController;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+
+namespace Hyperbar.Windows.Primary;
+
+public class MediaControllerWidgetProvider :
+ IWidgetProvider
+{
+ public void Create(HostBuilderContext comtext, IServiceCollection services) =>
+ services.AddWidgetTemplate()
+ .AddContentTemplate()
+ .AddContentTemplate()
+ .AddContentTemplate()
+ .AddContentTemplate();
+
+}
\ No newline at end of file
diff --git a/Hyperbar.Windows.MediaController/MediaControllerWidgetView.xaml b/Hyperbar.Windows.MediaController/MediaControllerWidgetView.xaml
new file mode 100644
index 0000000..f606297
--- /dev/null
+++ b/Hyperbar.Windows.MediaController/MediaControllerWidgetView.xaml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Hyperbar.Windows.MediaController/MediaControllerWidgetView.xaml.cs b/Hyperbar.Windows.MediaController/MediaControllerWidgetView.xaml.cs
new file mode 100644
index 0000000..709e11f
--- /dev/null
+++ b/Hyperbar.Windows.MediaController/MediaControllerWidgetView.xaml.cs
@@ -0,0 +1,8 @@
+using Microsoft.UI.Xaml.Controls;
+namespace Hyperbar.Windows.MediaController;
+
+public sealed partial class MediaControllerWidgetView :
+ UserControl
+{
+ public MediaControllerWidgetView() => InitializeComponent();
+}
diff --git a/Hyperbar.Windows.MediaController/MediaControllerWidgetViewModel.cs b/Hyperbar.Windows.MediaController/MediaControllerWidgetViewModel.cs
new file mode 100644
index 0000000..dd53641
--- /dev/null
+++ b/Hyperbar.Windows.MediaController/MediaControllerWidgetViewModel.cs
@@ -0,0 +1,12 @@
+namespace Hyperbar.Windows.Primary;
+
+public class MediaControllerWidgetViewModel(ITemplateFactory templateFactory,
+ IServiceFactory serviceFactory,
+ IMediator mediator,
+ IEnumerable items) :
+ ObservableCollectionViewModel(serviceFactory, mediator, items),
+ IWidgetViewModel,
+ ITemplatedViewModel
+{
+ public ITemplateFactory TemplateFactory => templateFactory;
+}
\ No newline at end of file
diff --git a/Hyperbar.Windows.MediaController/MediaInformationView.xaml b/Hyperbar.Windows.MediaController/MediaInformationView.xaml
new file mode 100644
index 0000000..798e5dd
--- /dev/null
+++ b/Hyperbar.Windows.MediaController/MediaInformationView.xaml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/Hyperbar.Windows.MediaController/MediaInformationView.xaml.cs b/Hyperbar.Windows.MediaController/MediaInformationView.xaml.cs
new file mode 100644
index 0000000..b66b612
--- /dev/null
+++ b/Hyperbar.Windows.MediaController/MediaInformationView.xaml.cs
@@ -0,0 +1,9 @@
+using Microsoft.UI.Xaml.Controls;
+
+namespace Hyperbar.Windows.MediaController;
+
+public sealed partial class MediaInformationView :
+ UserControl
+{
+ public MediaInformationView() => InitializeComponent();
+}
diff --git a/Hyperbar.Windows.Primary/Hyperbar.Widget.Primary.csproj b/Hyperbar.Windows.Primary/Hyperbar.Widget.Primary.csproj
index f3e9e72..4a8f052 100644
--- a/Hyperbar.Windows.Primary/Hyperbar.Widget.Primary.csproj
+++ b/Hyperbar.Windows.Primary/Hyperbar.Widget.Primary.csproj
@@ -7,7 +7,6 @@
-
diff --git a/Hyperbar.Windows.Primary/PrimaryWidgetViewModel.cs b/Hyperbar.Windows.Primary/PrimaryWidgetViewModel.cs
index f013476..42e89c9 100644
--- a/Hyperbar.Windows.Primary/PrimaryWidgetViewModel.cs
+++ b/Hyperbar.Windows.Primary/PrimaryWidgetViewModel.cs
@@ -1,18 +1,13 @@
namespace Hyperbar.Windows.Primary;
-public class PrimaryWidgetViewModel :
- ObservableCollectionViewModel,
+public class PrimaryWidgetViewModel(ITemplateFactory templateFactory,
+ IServiceFactory serviceFactory,
+ IMediator mediator,
+ IEnumerable items) :
+ ObservableCollectionViewModel(serviceFactory, mediator, items),
IWidgetViewModel,
ITemplatedViewModel
{
- public PrimaryWidgetViewModel(ITemplateFactory templateFactory,
- IServiceFactory serviceFactory,
- IMediator mediator,
- IEnumerable items) : base(serviceFactory, mediator, items)
- {
- TemplateFactory = templateFactory;
- }
-
- public ITemplateFactory TemplateFactory { get; }
+ public ITemplateFactory TemplateFactory => templateFactory;
}
\ No newline at end of file
diff --git a/Hyperbar.Windows.UI/WindowExtensions.cs b/Hyperbar.Windows.UI/Extensions/WindowExtensions.cs
similarity index 100%
rename from Hyperbar.Windows.UI/WindowExtensions.cs
rename to Hyperbar.Windows.UI/Extensions/WindowExtensions.cs
diff --git a/Hyperbar.Windows.UI/WindowPlacement.cs b/Hyperbar.Windows.UI/Extensions/WindowPlacement.cs
similarity index 100%
rename from Hyperbar.Windows.UI/WindowPlacement.cs
rename to Hyperbar.Windows.UI/Extensions/WindowPlacement.cs
diff --git a/Hyperbar.Windows.UI/Hyperbar.Windows.UI.csproj b/Hyperbar.Windows.UI/Hyperbar.Windows.UI.csproj
index f1444b8..ad3d34f 100644
--- a/Hyperbar.Windows.UI/Hyperbar.Windows.UI.csproj
+++ b/Hyperbar.Windows.UI/Hyperbar.Windows.UI.csproj
@@ -14,5 +14,6 @@
+
\ No newline at end of file
diff --git a/Hyperbar.Windows.UI/Templates/DataTemplateConverter.cs b/Hyperbar.Windows.UI/Templates/DataTemplateConverter.cs
new file mode 100644
index 0000000..6c4a4cb
--- /dev/null
+++ b/Hyperbar.Windows.UI/Templates/DataTemplateConverter.cs
@@ -0,0 +1,15 @@
+using Microsoft.UI.Xaml.Controls;
+
+namespace Hyperbar.Windows.UI;
+
+public class DataTemplateConverter :
+ ValueConverter