mattercontrol/SettingsManagement/PrinterSettings.cs

104 lines
2.5 KiB
C#
Raw Normal View History

2015-04-08 15:20:10 -07:00
using System.Collections.Generic;
namespace MatterHackers.MatterControl
{
public class PrinterSettings
2015-04-08 15:20:10 -07:00
{
private static PrinterSettings globalInstance = null;
public Dictionary<string, DataStorage.PrinterSetting> settingsDictionary;
2015-04-08 15:20:10 -07:00
private int ActiveSettingsPrinterId = -1;
public static PrinterSettings Instance
2015-04-08 15:20:10 -07:00
{
get
{
if (globalInstance == null)
{
globalInstance = new PrinterSettings();
2015-04-08 15:20:10 -07:00
globalInstance.LoadData();
}
2015-04-08 15:20:10 -07:00
return globalInstance;
}
}
2015-04-08 15:20:10 -07:00
private void LoadDataIfNeeded()
{
//Lazy load the data (rather than hook to printer change event)
2015-04-08 15:20:10 -07:00
if (ActivePrinterProfile.Instance.ActivePrinter.Id != ActiveSettingsPrinterId)
{
2015-04-08 15:20:10 -07:00
LoadData();
}
}
2015-04-08 15:20:10 -07:00
public string get(string key)
{
string result = null;
2015-04-08 15:20:10 -07:00
if (ActivePrinterProfile.Instance.ActivePrinter == null)
{
//No printer selected
2015-04-08 15:20:10 -07:00
}
else
{
2015-04-08 15:20:10 -07:00
LoadDataIfNeeded();
2015-04-08 15:20:10 -07:00
if (settingsDictionary.ContainsKey(key))
{
2015-04-08 15:20:10 -07:00
result = settingsDictionary[key].Value;
}
}
return result;
2015-04-08 15:20:10 -07:00
}
2015-04-08 15:20:10 -07:00
public void set(string key, string value)
{
if (ActivePrinterProfile.Instance.ActivePrinter == null)
{
//No printer selected
2015-04-08 15:20:10 -07:00
}
else
{
2015-04-08 15:20:10 -07:00
LoadDataIfNeeded();
DataStorage.PrinterSetting setting;
if (settingsDictionary.ContainsKey(key))
{
setting = settingsDictionary[key];
}
else
{
setting = new DataStorage.PrinterSetting();
setting.Name = key;
setting.PrinterId = ActivePrinterProfile.Instance.ActivePrinter.Id;
settingsDictionary[key] = setting;
}
setting.Value = value;
setting.Commit();
}
2015-04-08 15:20:10 -07:00
}
2015-04-08 15:20:10 -07:00
private void LoadData()
{
if (ActivePrinterProfile.Instance.ActivePrinter != null)
{
IEnumerable<DataStorage.PrinterSetting> settingsList = GetPrinterSettings();
settingsDictionary = new Dictionary<string, DataStorage.PrinterSetting>();
foreach (DataStorage.PrinterSetting s in settingsList)
{
settingsDictionary[s.Name] = s;
}
ActiveSettingsPrinterId = ActivePrinterProfile.Instance.ActivePrinter.Id;
}
2015-04-08 15:20:10 -07:00
}
2015-04-08 15:20:10 -07:00
private IEnumerable<DataStorage.PrinterSetting> GetPrinterSettings()
{
//Retrieve a list of settings from the Datastore
string query = string.Format("SELECT * FROM PrinterSetting WHERE PrinterId = {0};", ActivePrinterProfile.Instance.ActivePrinter.Id);
IEnumerable<DataStorage.PrinterSetting> result = (IEnumerable<DataStorage.PrinterSetting>)DataStorage.Datastore.Instance.dbSQLite.Query<DataStorage.PrinterSetting>(query);
return result;
2015-04-08 15:20:10 -07:00
}
}
}