/// /// Copyright (c) 2018 Sensus Slovensko a.s. /// using System; using System.IO; using System.Text; using System.Xml.Serialization; namespace Statistics { /// /// Class to be serialized to an XML file... /// Public members are local settings. /// These settings are modified by dialogs invoked by menu items /// Edit->Preferences ... PreferencesDlg ... S1.1(language, etc. local settings), and /// Edit->Advanced settings ... AdvancedSettingsDlg ... S1.2(spec. where bench settings are stored) /// [XmlRootAttribute("Statistics")] public class LocalSettings { public const int BenchesCount = 6; public const int FlowsCount = 5; /// /// User interface language (used as CultureInfo(..) constructor argument). /// public string Language; /// /// Names of test benches /// public string[] BenchNames; /// public string GetBenchName(int i) { return ((BenchNames != null) && (i >= 0) && (i < BenchNames.Length)) ? BenchNames[i] : string.Empty; } /// /// Database settings of servers /// public string[] ConnectionStrings; /// public string GetConnectionString(int i) { return ((ConnectionStrings != null) && (i >= 0) && (i < ConnectionStrings.Length)) ? ConnectionStrings[i] : string.Empty; } /// /// Flow settings /// public bool[] FlowEnabledWMs; public bool[] FlowEnabledI1; public bool[] FlowEnabledI2; public bool[] FlowEnabledI3; public bool[] FlowEnabledI4; /// public bool GetFlowEnabled(UserControls.MidId midId, int i) { switch (midId) { case UserControls.MidId.WaterMeters: return ((FlowEnabledWMs != null) && (i >= 0) && (i < FlowEnabledWMs.Length)) ? FlowEnabledWMs[i] : false; case UserControls.MidId.I1: return ((FlowEnabledI1 != null) && (i >= 0) && (i < FlowEnabledI1.Length)) ? FlowEnabledI1[i] : false; case UserControls.MidId.I2: return ((FlowEnabledI2 != null) && (i >= 0) && (i < FlowEnabledI2.Length)) ? FlowEnabledI2[i] : false; case UserControls.MidId.I3: return ((FlowEnabledI3 != null) && (i >= 0) && (i < FlowEnabledI3.Length)) ? FlowEnabledI3[i] : false; case UserControls.MidId.I4: return ((FlowEnabledI4 != null) && (i >= 0) && (i < FlowEnabledI4.Length)) ? FlowEnabledI4[i] : false; default: return false; } } /// public void SetFlowEnabled(UserControls.MidId midId, int i, bool value) { switch (midId) { case UserControls.MidId.WaterMeters: if ((FlowEnabledWMs != null) && (i >= 0) && (i < FlowEnabledWMs.Length)) { FlowEnabledWMs[i] = value; }; break; case UserControls.MidId.I1: if ((FlowEnabledI1 != null) && (i >= 0) && (i < FlowEnabledI1.Length)) { FlowEnabledI1[i] = value; }; break; case UserControls.MidId.I2: if ((FlowEnabledI2 != null) && (i >= 0) && (i < FlowEnabledI2.Length)) { FlowEnabledI2[i] = value; }; break; case UserControls.MidId.I3: if ((FlowEnabledI3 != null) && (i >= 0) && (i < FlowEnabledI3.Length)) { FlowEnabledI3[i] = value; }; break; case UserControls.MidId.I4: if ((FlowEnabledI4 != null) && (i >= 0) && (i < FlowEnabledI4.Length)) { FlowEnabledI4[i] = value; }; break; default: break; } } public double[] FlowFromWMs; public double[] FlowFromI1; public double[] FlowFromI2; public double[] FlowFromI3; public double[] FlowFromI4; /// public double GetFlowFrom(UserControls.MidId midId, int i) { switch (midId) { case UserControls.MidId.WaterMeters: return ((FlowFromWMs != null) && (i >= 0) && (i < FlowFromWMs.Length)) ? FlowFromWMs[i] : 0; case UserControls.MidId.I1: return ((FlowFromI1 != null) && (i >= 0) && (i < FlowFromI1.Length)) ? FlowFromI1[i] : 0; case UserControls.MidId.I2: return ((FlowFromI2 != null) && (i >= 0) && (i < FlowFromI2.Length)) ? FlowFromI2[i] : 0; case UserControls.MidId.I3: return ((FlowFromI3 != null) && (i >= 0) && (i < FlowFromI3.Length)) ? FlowFromI3[i] : 0; case UserControls.MidId.I4: return ((FlowFromI4 != null) && (i >= 0) && (i < FlowFromI4.Length)) ? FlowFromI4[i] : 0; default: return 0; } } /// public void SetFlowFrom(UserControls.MidId midId, int i, double value) { switch (midId) { case UserControls.MidId.WaterMeters: if ((FlowFromWMs != null) && (i >= 0) && (i < FlowFromWMs.Length)) { FlowFromWMs[i] = value; }; break; case UserControls.MidId.I1: if ((FlowFromI1 != null) && (i >= 0) && (i < FlowFromI1.Length)) { FlowFromI1[i] = value; }; break; case UserControls.MidId.I2: if ((FlowFromI2 != null) && (i >= 0) && (i < FlowFromI2.Length)) { FlowFromI2[i] = value; }; break; case UserControls.MidId.I3: if ((FlowFromI3 != null) && (i >= 0) && (i < FlowFromI3.Length)) { FlowFromI3[i] = value; }; break; case UserControls.MidId.I4: if ((FlowFromI4 != null) && (i >= 0) && (i < FlowFromI4.Length)) { FlowFromI4[i] = value; }; break; default: break; } } public double[] FlowToWMs; public double[] FlowToI1; public double[] FlowToI2; public double[] FlowToI3; public double[] FlowToI4; /// public double GetFlowTo(UserControls.MidId midId, int i) { switch (midId) { case UserControls.MidId.WaterMeters: return ((FlowToWMs != null) && (i >= 0) && (i < FlowToWMs.Length)) ? FlowToWMs[i] : 0; case UserControls.MidId.I1: return ((FlowToI1 != null) && (i >= 0) && (i < FlowToI1.Length)) ? FlowToI1[i] : 0; case UserControls.MidId.I2: return ((FlowToI2 != null) && (i >= 0) && (i < FlowToI2.Length)) ? FlowToI2[i] : 0; case UserControls.MidId.I3: return ((FlowToI3 != null) && (i >= 0) && (i < FlowToI3.Length)) ? FlowToI3[i] : 0; case UserControls.MidId.I4: return ((FlowToI4 != null) && (i >= 0) && (i < FlowToI4.Length)) ? FlowToI4[i] : 0; default: return 0; } } /// public void SetFlowTo(UserControls.MidId midId, int i, double value) { switch (midId) { case UserControls.MidId.WaterMeters: if ((FlowToWMs != null) && (i >= 0) && (i < FlowToWMs.Length)) { FlowToWMs[i] = value; }; break; case UserControls.MidId.I1: if ((FlowToI1 != null) && (i >= 0) && (i < FlowToI1.Length)) { FlowToI1[i] = value; }; break; case UserControls.MidId.I2: if ((FlowToI2 != null) && (i >= 0) && (i < FlowToI2.Length)) { FlowToI2[i] = value; }; break; case UserControls.MidId.I3: if ((FlowToI3 != null) && (i >= 0) && (i < FlowToI3.Length)) { FlowToI3[i] = value; }; break; case UserControls.MidId.I4: if ((FlowToI4 != null) && (i >= 0) && (i < FlowToI4.Length)) { FlowToI4[i] = value; }; break; default: break; } } /// StatisticsDlg UI public int SelectedRadioButtonNumber; /// MainWnd public int MainWndLeft; public int MainWndTop; public int MainWndWidth; public int MainWndHeight; public bool ManiWndMaximized; public int SplitterDistance; /// /// Default constructor which is used to create default settings /// public LocalSettings() { Language = "SK"; BenchNames = new string[] { "WR10", "WR11", "WR13", "WR14", "WR15", "PT7" }; ConnectionStrings = new string[] { "SERVER=10.42.128.93; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", "SERVER=10.42.128.102; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", "SERVER=10.42.128.89; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", "SERVER=10.42.128.213; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", "SERVER=10.42.128.214; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", "SERVER=10.42.129.26; DATABASE=iperlspecial-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", }; FlowEnabledWMs = new bool[FlowsCount]; FlowEnabledI1 = new bool[FlowsCount]; FlowEnabledI2 = new bool[FlowsCount]; FlowEnabledI3 = new bool[FlowsCount]; FlowEnabledI4 = new bool[FlowsCount]; FlowFromWMs = new double[FlowsCount]; FlowFromI1 = new double[FlowsCount]; FlowFromI2 = new double[FlowsCount]; FlowFromI3 = new double[FlowsCount]; FlowFromI4 = new double[FlowsCount]; FlowToWMs = new double[FlowsCount]; FlowToI1 = new double[FlowsCount]; FlowToI2 = new double[FlowsCount]; FlowToI3 = new double[FlowsCount]; FlowToI4 = new double[FlowsCount]; SelectedRadioButtonNumber = 1; } /// /// Load local settings (public fields of this class) from the XML file. /// public static LocalSettings Load(string fileName) { try { using (TextReader reader = new StreamReader(fileName)) { LocalSettings ls = (new XmlSerializer(typeof(LocalSettings))).Deserialize(reader) as LocalSettings; // Copy the settings just in case De-serialize() completes OK return ls; } } catch (Exception e) { string msg = e.Message; return null; } } /// /// Save local settings (public fields of this class) to the XML file. /// public void Save() { try { using (TextWriter writer = new StreamWriter(Program.LocalSettingsFileName)) { (new XmlSerializer(typeof(LocalSettings))).Serialize(writer, this); } } catch (Exception e) { string msg = e.Message; } } } }