zaaReloaded2/zaaReloaded2/Controller/SettingsRepository.cs

131 lines
4.1 KiB
C#
Raw Normal View History

2015-07-16 03:28:28 +00:00
/* SettingsRepository.cs
* part of zaaReloaded2
*
* Copyright 2015 Daniel Kraus
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Configuration;
using System.Linq;
using System.Text;
using zaaReloaded2.Controller.Elements;
2015-07-16 03:28:28 +00:00
namespace zaaReloaded2.Controller
{
/// <summary>
/// A repository for zaaReloaded2.Controller.Settings.
/// </summary>
/// <remarks>
/// This class is derived from ApplicationSettingsBase to be able
/// to simply store it in the assembly's properties. However, this
/// causes some confusion because .NET's ApplicationSettings are
/// different from zaaReloaded's Settings.
/// </remarks>
2015-07-16 03:28:28 +00:00
[Serializable]
public class SettingsRepository : ApplicationSettingsBase
{
#region Persistence
public static SettingsRepository Load()
{
return
zaaReloaded2.Properties.Settings.Default.SettingsRepository ??
new SettingsRepository();
}
public void Store()
{
zaaReloaded2.Properties.Settings.Default.SettingsRepository = this;
zaaReloaded2.Properties.Settings.Default.Save();
}
#endregion
#region Properties
[UserScopedSetting()]
[SettingsSerializeAs(SettingsSerializeAs.Xml)]
public IList<Settings> SettingsList { get; private set; }
2015-07-16 03:28:28 +00:00
#endregion
#region Constructor
public SettingsRepository()
{
SettingsList = new List<Settings>();
}
#endregion
#region Public methods
/// <summary>
/// Resets the Settings contained in this SettingsRepository
/// to the default set of settings.
/// </summary>
public void ResetDefault()
{
SettingsList.Clear();
// Shortcut to assembly properties
zaaReloaded2.Properties.Settings def = zaaReloaded2.Properties.Settings.Default;
// TODO: May want to create deep copies of this list below
List<FormatElementBase> defaultItems = new List<FormatElementBase>()
{
new Items(def.DefaultItemsClinicalChem),
new Items(def.DefaultItemsInflammation),
new Items(def.DefaultItemsCardio),
new Items(def.DefaultItemsKidney),
new Items(def.DefaultItemsLiver),
new Items(def.DefaultItemsLipids),
new Items(def.DefaultItemsHematology),
new Items(def.DefaultItemsCoagulation),
new Items(def.DefaultItemsDrugs),
new Items(def.DefaultItemsCollectedUrine),
new Items(def.DefaultItemsSpotUrine),
new Items(def.DefaultItemsOther),
};
// Configure the settings for the ward
SettingsList.Add(
new Settings(
def.SettingsNameWard,
new List<ElementBase>()
{
new SelectFirstDay(defaultItems),
new SelectLastDay(defaultItems)
}
)
);
// Configure the settings for the outpatient clinic
SettingsList.Add(
new Settings(
def.SettingsNameClinic,
new List<ElementBase>()
{
new SelectEachDay(defaultItems),
}
)
);
2015-07-16 03:28:28 +00:00
}
#endregion
}
}