/// /// Copyright (c) 2022 Sensus Slovensko a.s. /// using System; using System.IO; using System.Text; using System.Xml.Serialization; using Common; using Config.Entities; using TBF.Rig.Generic; using TBF.Rig.Sequences; using TBF.Resources; namespace TBF.Rig.TestMethods.LiveStream { public class TestParams : TestParamsBase, IParamsProvider, ITestParams { public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(TestParams) })[0]; public override XmlSerializer GetSerializer() { return Serializer; } public bool ShowOverlayRect; public int OverlayLeft; public int OverlayTop; public int OverlayWidth; public int OverlayHeight; public int OverlayThickness; public override void InitializeAll() { ShowOverlayRect = false; OverlayLeft = 130; OverlayTop = 50; OverlayWidth = 380; OverlayHeight = 380; OverlayThickness = 2; } string[] paramNames = new string[] { "Show overlay rectangle", "Left", "Top", "Width", "Height", "Thickness", }; public override string ParamName(int i) { return paramNames[i]; } public override int ParamsCount() { return paramNames.Length; } public override string ToString(int i) { switch (i) { case 0: return ShowOverlayRect ? Strings.yes : Strings.no; case 1: return OverlayLeft.ToString(); case 2: return OverlayTop.ToString(); case 3: return OverlayWidth.ToString(); case 4: return OverlayHeight.ToString(); case 5: return OverlayThickness.ToString(); default: return string.Empty; } } public CfgUpdateFlags UpdateParam(int i, string str) { switch (i) { case 0: ShowOverlayRect = (str == Strings.yes); return CfgUpdateFlags.None; case 1: OverlayLeft = int.Parse(str); return CfgUpdateFlags.None; case 2: OverlayTop = int.Parse(str); return CfgUpdateFlags.None; case 3: OverlayWidth = int.Parse(str); return CfgUpdateFlags.None; case 4: OverlayHeight = int.Parse(str); return CfgUpdateFlags.None; case 5: OverlayThickness = int.Parse(str); return CfgUpdateFlags.None; default: return CfgUpdateFlags.None; } } public bool ValidateParam(int i, string str, out string message) { message = string.Empty; int ival; switch (i) { case 0: if (str == Strings.yes || str == Strings.no) return true; break; case 1: case 2: case 3: case 4: case 5: if (int.TryParse(str, out ival) && ival >= 0) return true; break; default: message = "Invalid index"; return false; } message = ParamName(i) + " is invalid"; return false; } void CopyContentTo(TestParams prms) { prms.ShowOverlayRect = ShowOverlayRect; prms.OverlayLeft = OverlayLeft; prms.OverlayTop = OverlayTop; prms.OverlayWidth = OverlayWidth; prms.OverlayHeight = OverlayHeight; prms.OverlayThickness = OverlayThickness; } public IParamsProvider Clone() { TestParams pars = new TestParams(); CopyContentTo(pars); return pars; } public override void UpdateFromDbEntity(ComponentTest dbEntity) { if (dbEntity == null) return; try { TestParams tmp = Serializer.Deserialize(new StringReader(dbEntity.Parameters)) as TestParams; testParamsEntity = dbEntity; componentName = dbEntity.CmpntName; test = dbEntity.Test; if (tmp != null) tmp.CopyContentTo(this); } catch { } } /// /// Parameterless constructor initializes the parameters /// public TestParams() { } public TestParams(bool initialize) { if (initialize) InitializeAll(); } public TestParams(ComponentTest testParamsEntity, string componentName, Test test) { this.testParamsEntity = testParamsEntity; this.componentName = componentName; this.test = test; } } }