fixed issues with multiple instances of view models and the config file not being present
This commit is contained in:
parent
48d9879645
commit
984f96b7fd
Binary file not shown.
Binary file not shown.
@ -9,6 +9,7 @@ using RGBController2.ViewModels.Dialogs;
|
|||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace RGBController2.ViewModels
|
namespace RGBController2.ViewModels
|
||||||
{
|
{
|
||||||
@ -18,6 +19,7 @@ namespace RGBController2.ViewModels
|
|||||||
public ICommand NewTabCommand { get; }
|
public ICommand NewTabCommand { get; }
|
||||||
public static ICollection<Tab> Tabs { get; set; }
|
public static ICollection<Tab> Tabs { get; set; }
|
||||||
|
|
||||||
|
private string configLocation = "config.xml";
|
||||||
public MainViewModel()
|
public MainViewModel()
|
||||||
{
|
{
|
||||||
NewTabCommand = new ActionCommand(p => NewTab());
|
NewTabCommand = new ActionCommand(p => NewTab());
|
||||||
@ -28,42 +30,44 @@ namespace RGBController2.ViewModels
|
|||||||
Tabs = _tabs;
|
Tabs = _tabs;
|
||||||
|
|
||||||
// Check here that the config file exists
|
// Check here that the config file exists
|
||||||
|
if (File.Exists(configLocation))
|
||||||
// Load the config file
|
|
||||||
using (XmlReader reader = XmlReader.Create("config.xml"))
|
|
||||||
{
|
{
|
||||||
string name = "";
|
// Load the config file
|
||||||
string type = "";
|
using (XmlReader reader = XmlReader.Create("config.xml"))
|
||||||
while (reader.Read())
|
|
||||||
{
|
{
|
||||||
if (reader.IsStartElement())
|
string name = "";
|
||||||
|
string type = "";
|
||||||
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
//return only when you have START tag
|
if (reader.IsStartElement())
|
||||||
switch (reader.Name.ToString())
|
|
||||||
{
|
{
|
||||||
case "name":
|
//return only when you have START tag
|
||||||
name = reader.ReadString();
|
switch (reader.Name.ToString())
|
||||||
break;
|
{
|
||||||
case "type":
|
case "name":
|
||||||
type = reader.ReadString();
|
name = reader.ReadString();
|
||||||
break;
|
break;
|
||||||
|
case "type":
|
||||||
|
type = reader.ReadString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
// Create the tab here
|
||||||
// Create the tab here
|
if (name != "" && type != "")
|
||||||
if (name != "" && type != "")
|
|
||||||
{
|
|
||||||
switch(type)
|
|
||||||
{
|
{
|
||||||
case "arduino":
|
switch (type)
|
||||||
_tabs.Add(new ArduinoTab(name));
|
{
|
||||||
break;
|
case "arduino":
|
||||||
case "cue":
|
_tabs.Add(new ArduinoTab(name));
|
||||||
_tabs.Add(new CueDeviceTab(name));
|
break;
|
||||||
break;
|
case "cue":
|
||||||
}
|
_tabs.Add(new CueDeviceTab(name));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
name = "";
|
name = "";
|
||||||
type = "";
|
type = "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -121,10 +125,16 @@ namespace RGBController2.ViewModels
|
|||||||
/// <param name="e"></param>
|
/// <param name="e"></param>
|
||||||
public void OnWindowClosing(object sender, CancelEventArgs e)
|
public void OnWindowClosing(object sender, CancelEventArgs e)
|
||||||
{
|
{
|
||||||
// ToDo - Save the config to disk
|
// Check if the config file currently exists
|
||||||
|
// if it does then we will need to delete it beofre we can save a new config
|
||||||
|
if (File.Exists(configLocation))
|
||||||
|
{
|
||||||
|
File.Delete(configLocation);
|
||||||
|
}
|
||||||
|
|
||||||
// This may need to be saved somwhere better, for now we will just save it
|
// This may need to be saved somwhere better, for now we will just save it
|
||||||
// with the executable
|
// with the executable
|
||||||
XmlWriter xmlWriter = XmlWriter.Create("config.xml");
|
XmlWriter xmlWriter = XmlWriter.Create(configLocation);
|
||||||
xmlWriter.WriteStartDocument();
|
xmlWriter.WriteStartDocument();
|
||||||
|
|
||||||
xmlWriter.WriteStartElement("tabs");
|
xmlWriter.WriteStartElement("tabs");
|
||||||
@ -154,8 +164,6 @@ namespace RGBController2.ViewModels
|
|||||||
|
|
||||||
xmlWriter.WriteEndDocument();
|
xmlWriter.WriteEndDocument();
|
||||||
xmlWriter.Close();
|
xmlWriter.Close();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -26,11 +26,6 @@ namespace RGBController2.Views.LightingModes
|
|||||||
public StaticView()
|
public StaticView()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
// This is a bit hacky but ensure we are only creating one ArduinoTab object and using
|
|
||||||
// that in both the MainViewModel and here
|
|
||||||
var test = MainViewModel.Tabs.Last(); // FIX ME - this needs to be something else than .Last to find the correct viewmodel
|
|
||||||
DataContext = test.SelectedLightingMode;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,8 @@ namespace RGBController2.Views
|
|||||||
// Why? Something to do with MVVM & good practice?
|
// Why? Something to do with MVVM & good practice?
|
||||||
var viewModel = new MainViewModel();
|
var viewModel = new MainViewModel();
|
||||||
DataContext = viewModel;
|
DataContext = viewModel;
|
||||||
|
|
||||||
|
// We are using this to hook on the closing event so that we can save our config when the application is closed
|
||||||
Closing += viewModel.OnWindowClosing;
|
Closing += viewModel.OnWindowClosing;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,6 @@ namespace RGBController2.Views.Tabs
|
|||||||
public ArduinoTabView()
|
public ArduinoTabView()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
//DataContext = new ArduinoTab();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,6 @@ namespace RGBController2.Views.Tabs
|
|||||||
public CUEDeviceTabView()
|
public CUEDeviceTabView()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
//DataContext = new ArduinoTab();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user