using System.Collections.Generic; using System; namespace Shared.SimpleControl.Phone { public class SystemLightMixDimming : FrameLayout { public void SystemLightMixDimmingShow (LightMixDimming lightMixDimming, Common common) { byte [] lightDimmingBytes = new byte [26]; #region top RowLayout topTitleView = new RowLayout () { Height = Application.GetRealHeight (100), BackgroundColor = SkinStyle.Current.MainColor }; AddChidren (topTitleView); Button backButton = new Button () { X = Application.GetRealWidth (0), Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (85), UnSelectedImagePath = "Item/Back.png", SelectedImagePath = "Item/BackSelected.png", Gravity = Gravity.CenterVertical, }; backButton.MouseUpEventHandler += (sender, e) => { (Parent as PageLayout).PageIndex -= 1; //SystemEquipmentBase.RefreshView (common); //SystemMiddle.VerticalScrolViewMiddle.Animate = Animate.RightToLeft; }; topTitleView.AddChidren (backButton); EditText textButton = new EditText () { X = Application.GetRealWidth (30) + backButton.Right, Height = Application.GetRealHeight (50), Width = Application.GetRealWidth (400), Text = lightMixDimming.Name, TextAlignment = TextAlignment.CenterLeft, Gravity = Gravity.CenterVertical, BackgroundColor = SkinStyle.Current.Transparent, SelectedBackgroundColor = SkinStyle.Current.SysEditBox, Enable = false, TextColor = SkinStyle.Current.TextColor1 }; topTitleView.AddChidren (textButton); Button editor = new Button () { X = Application.GetRealWidth (520), Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (70), UnSelectedImagePath = "Item/Editor.png", SelectedImagePath = "Item/EditorSelected.png", Gravity = Gravity.CenterVertical, }; topTitleView.AddChidren (editor); EventHandler eHandler = new EventHandler ((sender, e) => { if (editor.IsSelected) { MainPage.Loading.Start (); byte [] remakeBytes = CommonPage.MyEncodingGB2312.GetBytes (textButton.Text.Trim ()); textButton.IsSelected = editor.IsSelected = textButton.Enable = false; System.Threading.Tasks.Task.Run (() => { byte [] updateBytes = Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, lightMixDimming.SubnetID, lightMixDimming.DeviceID, new byte [] { lightMixDimming.BigClass,lightMixDimming.MinClass,lightMixDimming.LoopID }); if (updateBytes == null) { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); return; } byte [] uBytes = new byte [20]; Array.Copy (remakeBytes, 0, uBytes, 0, remakeBytes.Length < 20 ? remakeBytes.Length : 20); Array.Copy (uBytes, 0, updateBytes, 3, 20 < uBytes.Length ? 20 : uBytes.Length); var reBytes = Control.ControlBytesSendHasReturn (Command.SetDeviceLoopInfo, lightMixDimming.SubnetID, lightMixDimming.DeviceID, updateBytes); if (reBytes != null) { Application.RunOnMainThread (() => { lightMixDimming.Name = textButton.Text.Trim (); IO.FileUtils.SaveEquipmentMessage (lightMixDimming, lightMixDimming.LoopID.ToString ()); MainPage.Loading.Hide (); }); } else { Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); MainPage.Loading.Hide (); }); } }); } else { textButton.Enable = textButton.IsSelected = editor.IsSelected = true; } }); editor.MouseUpEventHandler += eHandler; #endregion FrameLayout frameLayoutBody = new FrameLayout () { Y = Application.GetRealHeight (100), Height = Application.GetRealHeight (700), }; AddChidren (frameLayoutBody); Button btnMaximum = new Button () { Width = Application.GetRealHeight (150), Height = Application.GetRealHeight (45), X = backButton.Right, Y = Application.GetRealHeight (60), TextID = R.MyInternationalizationString.MaximumOutput, TextAlignment = TextAlignment.CenterLeft, Enable = false, TextColor = SkinStyle.Current.TextColor1 }; frameLayoutBody.AddChidren (btnMaximum); EditText etMaxout = new EditText () { X = btnMaximum.Right, Y = btnMaximum.Y, Width = Application.GetRealWidth (300), Height = btnMaximum.Height, Text = lightMixDimming.MaxLevel.ToString (), TextAlignment = TextAlignment.CenterLeft, BackgroundColor = SkinStyle.Current.SubtitleView, TextColor = SkinStyle.Current.TextColor1 }; frameLayoutBody.AddChidren (etMaxout); //---Min Button btnMinimum = new Button () { Width = Application.GetRealHeight (150), Height = Application.GetRealHeight (45), X = backButton.Right, Y = btnMaximum.Bottom + Application.GetRealHeight (20), TextID = R.MyInternationalizationString.MinimumOutput, TextAlignment = TextAlignment.CenterLeft, Enable = false, TextColor = SkinStyle.Current.TextColor1 }; frameLayoutBody.AddChidren (btnMinimum); EditText etMinout = new EditText () { X = btnMinimum.Right, Y = btnMinimum.Y, Width = Application.GetRealWidth (300), Height = btnMaximum.Height, Text = lightMixDimming.Minimum.ToString (), TextAlignment = TextAlignment.CenterLeft, BackgroundColor = SkinStyle.Current.SubtitleView, TextColor = SkinStyle.Current.TextColor1 }; frameLayoutBody.AddChidren (etMinout); var lblDelayTime = new Button () { X = backButton.Right, Y = etMinout.Bottom + Application.GetRealHeight (20), Width = Application.GetRealWidth (200), Height = btnMaximum.Height, TextID = R.MyInternationalizationString.DelayTime, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1 }; //frameLayoutBody.AddChidren (lblDelayTime); var etDelayTime = new EditText () { X = lblDelayTime.Right + Application.GetRealWidth (10), Y = etMinout.Bottom + Application.GetRealHeight (20), Width = Application.GetRealWidth (240), Height = lblDelayTime.Height, TextAlignment = TextAlignment.CenterLeft, Text = " " + (lightMixDimming.DelayTimeHeight * 256 + lightMixDimming.DelayTimeLow), BackgroundColor = SkinStyle.Current.SubtitleView, TextColor = SkinStyle.Current.TextColor1 }; //frameLayoutBody.AddChidren (etDelayTime); Button btnSave = new Button () { Width = Application.GetRealWidth (150), Height = Application.GetRealHeight (50), X = (Application.CurrentWidth - Application.GetRealWidth (150)) / 2, Y = etMinout.Bottom + Application.GetRealHeight (20), BackgroundColor = SkinStyle.Current.ButtonColor, SelectedBackgroundColor = SkinStyle.Current.SelectedColor, BorderWidth = 1, Radius = 5, BorderColor = SkinStyle.Current.Transparent, TextID = R.MyInternationalizationString.SAVE, TextAlignment = TextAlignment.Center, TextColor = SkinStyle.Current.TextColor1 }; frameLayoutBody.AddChidren (btnSave); btnSave.MouseUpEventHandler += (sender, e) => { int dtime; if (int.TryParse (etDelayTime.Text.Trim ().ToString (), out dtime)) { if (dtime > 3600 || dtime < 0) { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterTheNumberTwo), Language.StringByID (R.MyInternationalizationString.Close)).Show (); return; } } else { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterTheNumberTwo), Language.StringByID (R.MyInternationalizationString.Close)).Show (); return; } lightMixDimming.DelayTimeHeight = (byte)(Convert.ToInt32 (etDelayTime.Text.Trim ()) / 256); lightMixDimming.DelayTimeLow = (byte)(Convert.ToInt32 (etDelayTime.Text.Trim ()) % 256); IO.FileUtils.SaveEquipmentMessage (lightMixDimming, lightMixDimming.LoopID.ToString ()); byte MaxoutByte = Convert.ToByte (etMaxout.Text.Trim ()); byte MinoutByte = Convert.ToByte (etMinout.Text.Trim ()); if (lightMixDimming.MaxLevel == MaxoutByte && lightMixDimming.Minimum == MinoutByte) { IO.FileUtils.SaveEquipmentMessage (lightMixDimming, lightMixDimming.LoopID.ToString ()); new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.ThePerationWasSuccessful), Language.StringByID (R.MyInternationalizationString.Close)).Show (); return; } System.Threading.Tasks.Task.Run (() => { try { if (MaxoutByte < MinoutByte || MaxoutByte > 100 || MaxoutByte < 0 || MinoutByte > 100 || MinoutByte < 0) throw new Exception (); lightDimmingBytes [23] = MinoutByte; lightDimmingBytes [24] = MaxoutByte; } catch { System.Threading.Tasks.Task.Run (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterTheCorrectData), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); } byte [] usefulBytes = Control.ControlBytesSendHasReturn (Command.SetDeviceLoopInfo, lightMixDimming.SubnetID, lightMixDimming.DeviceID, lightDimmingBytes); if (usefulBytes == null) { Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.ModifythefailurePleasechecktheequipmentisonline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); return; } else { lightMixDimming.MaxLevel = MaxoutByte; lightMixDimming.Minimum = MinoutByte; IO.FileUtils.SaveEquipmentMessage (lightMixDimming, lightMixDimming.LoopID.ToString ()); Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.ThePerationWasSuccessful), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); } }); }; Button btnDimmingText = new Button () { X = backButton.Right, Y = btnSave.Bottom + Application.GetRealHeight (100), Width = Application.GetRealWidth (130), Height = Application.GetRealHeight (60), TextID = R.MyInternationalizationString.DimmingFunction, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1, }; frameLayoutBody.AddChidren (btnDimmingText); Button btnDimming = new Button () { X = btnDimmingText.Right, Y = btnSave.Bottom + Application.GetRealHeight (100), Width = Application.GetRealWidth (60), Height = Application.GetRealHeight (59), SelectedImagePath = "Light/CheckOn.png", UnSelectedImagePath = "Light/Check.png", }; frameLayoutBody.AddChidren (btnDimming); btnDimming.IsSelected = lightMixDimming.DimmingFunction; Button btnSwitch = new Button () { Y = btnDimming.Y, X = btnDimming.Right + Application.GetRealWidth (70), Width = Application.GetRealWidth (200), Height = Application.GetRealHeight (60), BackgroundColor = SkinStyle.Current.ButtonColor, SelectedBackgroundColor = SkinStyle.Current.SelectedColor, BorderWidth = 1, Radius = 5, BorderColor = SkinStyle.Current.Transparent, TextID = R.MyInternationalizationString.ON, TextColor = SkinStyle.Current.TextColor1 }; frameLayoutBody.AddChidren (btnSwitch); FrameLayout MianSeekBarView = new FrameLayout () { Width = Application.GetRealWidth (640), Height = Application.GetRealHeight (80), Y = btnDimming.Bottom + Application.GetRealHeight (20), }; frameLayoutBody.AddChidren (MianSeekBarView); var btnMinBrightness = new Button () { Width = Application.GetRealWidth (100), Height = Application.GetRealHeight (80), Text = "0%", TextAlignment = TextAlignment.CenterRight, }; MianSeekBarView.AddChidren (btnMinBrightness); var tempSeekBarFrame = new FrameLayout () { Width = Application.GetRealWidth (640 - 200), Height = Application.GetRealHeight (80), X = btnMinBrightness.Right, }; MianSeekBarView.AddChidren (tempSeekBarFrame); var horizontalSeekBar = new HorizontalSeekBar () { ThumbColor = SkinStyle.Current.ThumbColor }; tempSeekBarFrame.AddChidren (horizontalSeekBar); Button btnMaxBrightness = new Button () { Width = Application.GetRealWidth (100), Height = Application.GetRealHeight (80), X = tempSeekBarFrame.Right + Application.GetRealWidth (10), Text = lightMixDimming.CurrentBrightness + "%", TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1 }; MianSeekBarView.AddChidren (btnMaxBrightness); byte switchLighting = 0; if (lightMixDimming.CurrentBrightness > 0) { btnSwitch.TextID = R.MyInternationalizationString.ON; switchLighting = 0; btnSwitch.IsSelected = true; } else { btnSwitch.TextID = R.MyInternationalizationString.OFF; switchLighting = 100; btnSwitch.IsSelected = false; } btnSwitch.MouseUpEventHandler += (sender, e) => { if (lightMixDimming.CurrentBrightness > 0) { switchLighting = 0; btnMaxBrightness.Text = switchLighting + "%"; btnSwitch.TextID = R.MyInternationalizationString.OFF; } else { switchLighting = 100; btnSwitch.TextID = R.MyInternationalizationString.ON; btnMaxBrightness.Text = switchLighting + "%"; } Control.ControlBytesSend (Command.SetSingleLight, lightMixDimming.SubnetID, lightMixDimming.DeviceID, new byte [] { lightMixDimming.PhysicsLoopID, switchLighting, lightMixDimming.DelayTimeHeight, lightMixDimming.DelayTimeLow }); lightMixDimming.CurrentBrightness = switchLighting; IO.FileUtils.SaveEquipmentMessage (lightMixDimming, lightMixDimming.LoopID.ToString ()); btnSwitch.IsSelected = !btnSwitch.IsSelected; horizontalSeekBar.Progress = switchLighting; }; horizontalSeekBar.MouseUpEventHandler += (sender, e) => { Control.ControlBytesSend (Command.SetSingleLight, lightMixDimming.SubnetID, lightMixDimming.DeviceID, new byte [] { lightMixDimming.PhysicsLoopID, (byte)horizontalSeekBar.Progress, lightMixDimming.DelayTimeHeight, lightMixDimming.DelayTimeLow }); if (horizontalSeekBar.Progress == 0) { btnSwitch.IsSelected = false; btnSwitch.Text = Language.StringByID (R.MyInternationalizationString.OFF); } else { btnSwitch.IsSelected = true; btnSwitch.Text = Language.StringByID (R.MyInternationalizationString.ON); } btnMaxBrightness.Text = horizontalSeekBar.Progress + "%"; }; btnDimming.MouseUpEventHandler += (sender, e) => { btnDimming.IsSelected = !btnDimming.IsSelected; if (btnDimming.IsSelected) { if (UserConfig.Instance.UnEnableDimmingLight.Contains (lightMixDimming.CommonLoopID)) { UserConfig.Instance.UnEnableDimmingLight.Remove (lightMixDimming.CommonLoopID); } } else { UserConfig.Instance.UnEnableDimmingLight.Add (lightMixDimming.CommonLoopID); } UserConfig.Instance.SaveUserConfig (); IO.FileUtils.SaveEquipmentMessage (lightMixDimming, lightMixDimming.LoopID.ToString ()); if (btnDimming.IsSelected) { MianSeekBarView.Height = Application.GetRealHeight (80); } else MianSeekBarView.Height = Application.GetRealHeight (0); }; if (!btnDimming.IsSelected) { MianSeekBarView.Height = 0; } System.Threading.Tasks.Task.Run (() => { lightDimmingBytes = Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, lightMixDimming.SubnetID, lightMixDimming.DeviceID, new byte [] { lightMixDimming.BigClass, lightMixDimming.MinClass, lightMixDimming.PhysicsLoopID }); if (lightDimmingBytes == null) { lightDimmingBytes = new byte [26]; } else { Application.RunOnMainThread (() => { horizontalSeekBar.Progress = lightDimmingBytes [25]; }); } }); } } }