mattercontrol/SettingsManagement/ApplicationSettings.cs
2014-01-29 19:09:30 -08:00

104 lines
3 KiB
C#

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MatterHackers.MatterControl;
using MatterHackers.MatterControl.DataStorage;
namespace MatterHackers.MatterControl
{
public class ApplicationSettings
{
static ApplicationSettings globalInstance = null;
public Dictionary<string, DataStorage.SystemSetting> settingsDictionary;
public static ApplicationSettings Instance
{
get
{
if (globalInstance == null)
{
globalInstance = new ApplicationSettings();
globalInstance.LoadData();
}
return globalInstance;
}
}
string oemName = null;
public string GetOEMName()
{
if (oemName == null)
{
string pathToWhitelist = Path.Combine(ApplicationDataStorage.Instance.ApplicationStaticDataPath, "OEMSettings", "PrinterSettingsWhitelist.txt");
string[] oemWhiteListSettings = File.ReadAllLines(pathToWhitelist);
if (oemWhiteListSettings.Length > 1)
{
oemName = "MatterHackers";
}
else
{
oemName = oemWhiteListSettings[0];
}
}
return oemName;
}
public string get(string key)
{
string result;
if (settingsDictionary.ContainsKey(key))
{
result = settingsDictionary[key].Value;
}
else
{
result = null;
}
return result;
}
public void set(string key, string value)
{
DataStorage.SystemSetting setting;
if (settingsDictionary.ContainsKey(key))
{
setting = settingsDictionary[key];
}
else
{
setting = new DataStorage.SystemSetting();
setting.Name = key;
settingsDictionary[key] = setting;
}
setting.Value = value;
setting.Commit();
}
private void LoadData()
{
IEnumerable<DataStorage.SystemSetting> settingsList = GetApplicationSettings();
settingsDictionary = new Dictionary<string, DataStorage.SystemSetting>();
foreach (DataStorage.SystemSetting s in settingsList)
{
settingsDictionary[s.Name] = s;
}
}
IEnumerable<DataStorage.SystemSetting> GetApplicationSettings()
{
//Retrieve a list of saved printers from the Datastore
string query = string.Format("SELECT * FROM SystemSetting;");
IEnumerable<DataStorage.SystemSetting> result = (IEnumerable<DataStorage.SystemSetting>)DataStorage.Datastore.Instance.dbSQLite.Query<DataStorage.SystemSetting>(query);
return result;
}
}
}