diff --git a/HeadMeld.csproj.user b/HeadMeld.csproj.user
index b34fcfe..b8a14eb 100644
--- a/HeadMeld.csproj.user
+++ b/HeadMeld.csproj.user
@@ -7,12 +7,12 @@
-
+
Code
-
+
Designer
diff --git a/MainWindow.xaml b/MainWindow.xaml
deleted file mode 100644
index 13a0fa6..0000000
--- a/MainWindow.xaml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs
deleted file mode 100644
index 78b3a1b..0000000
--- a/MainWindow.xaml.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System.Collections.Generic;
-using System.Windows;
-
-namespace HeadMeld
-{
- ///
- /// Interaction logic for MainWindow.xaml
- ///
- public partial class MainWindow : Window
- {
- ConfigManager configManager = new();
- public MainWindow()
- {
- InitializeComponent();
- }
-
- private void Window_Loaded(object sender, RoutedEventArgs e)
- {
- foreach (var item in configManager.configFile)
- {
- btnRadioProfiles.Items.Add(item);
- }
- }
-
- private void btnExit_Click(object sender, RoutedEventArgs e)
- {
- Application.Current.Shutdown();
- }
-
- private void Window_Activated(object sender, System.EventArgs e)
- {
- // Set window position based on taskbar location
- var desktopWorkArea = SystemParameters.WorkArea;
- Left = desktopWorkArea.Right - Width - 15;
- Top = desktopWorkArea.Bottom - Height - 15;
- }
-
- private void toggleAPOEnabled_Toggled(object sender, RoutedEventArgs e)
- {
- configManager.ToggleProfiles(new List
- {
- "# Include: ATH-M50x.txt",
- "Include: 900ProX.txt"
- },
- toggleAPOEnabled.IsOn);
- configManager.Write();
- }
-
- private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
- {
- Visibility = Visibility.Collapsed;
- e.Cancel = true;
- }
- }
-}
diff --git a/Models/MainWindowModel.cs b/Models/MainWindowModel.cs
new file mode 100644
index 0000000..052761c
--- /dev/null
+++ b/Models/MainWindowModel.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HeadMeld.Models
+{
+ sealed class MainWindowModel
+ {
+ public bool ToggleAPOEnabled { get; set; }
+ public List Profiles { get; set; }
+ }
+}
diff --git a/ViewModels/MainWindowViewModel.cs b/ViewModels/MainWindowViewModel.cs
new file mode 100644
index 0000000..a228f30
--- /dev/null
+++ b/ViewModels/MainWindowViewModel.cs
@@ -0,0 +1,50 @@
+using System.Collections.Generic;
+using System.ComponentModel;
+using HeadMeld.Models;
+
+namespace HeadMeld.ViewModels
+{
+ sealed class MainWindowViewModel : INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler? PropertyChanged;
+ protected void OnPropertyChange(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+
+ private MainWindowModel _model = new();
+
+ public bool ToggleAPOEnabled
+ {
+ get { return _model.ToggleAPOEnabled; }
+ set
+ {
+ if (_model.ToggleAPOEnabled != value)
+ {
+ _model.ToggleAPOEnabled = value;
+ OnPropertyChange(nameof(ToggleAPOEnabled));
+ }
+ }
+ }
+
+ public List Profiles
+ {
+ get { return _model.Profiles; }
+ set
+ {
+ if (_model.Profiles != value)
+ {
+ _model.Profiles = value;
+ OnPropertyChange(nameof(Profiles));
+ }
+ }
+ }
+
+ public MainWindowViewModel()
+ {
+ _model = new()
+ {
+ ToggleAPOEnabled = true,
+ Profiles = new List() { "1", "2"}
+ };
+ }
+
+ }
+}
diff --git a/Views/MainWindowView.xaml b/Views/MainWindowView.xaml
new file mode 100644
index 0000000..37d0445
--- /dev/null
+++ b/Views/MainWindowView.xaml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Views/MainWindowView.xaml.cs b/Views/MainWindowView.xaml.cs
new file mode 100644
index 0000000..74c7852
--- /dev/null
+++ b/Views/MainWindowView.xaml.cs
@@ -0,0 +1,21 @@
+using System.Windows;
+using HeadMeld.ViewModels;
+
+namespace HeadMeld
+{
+ ///
+ /// Interaction logic for MainWindow.xaml
+ ///
+ public partial class MainWindow : Window
+ {
+ private readonly MainWindowViewModel viewModel;
+
+ public MainWindow()
+ {
+ InitializeComponent();
+
+ viewModel = new MainWindowViewModel();
+ DataContext = viewModel;
+ }
+ }
+}