using System; using System.Collections.Generic; namespace Shared.SimpleControl.Phone { public class SystemACPanel : FrameLayout { /// /// 显示空调面板界面 /// /// The system ACP anel. /// Ac panel. /// Bp. public void ShowSystemACPanel (ACPanel acPanel,ButtonPanel bp) { //SystemMiddle.hideBottom (); RemoveAll (); #region top RowLayout frameLayout = new RowLayout () { Height = Application.GetRealHeight (100), Width = LayoutParams.MatchParent, BackgroundColor = SkinStyle.Current.MainColor }; AddChidren (frameLayout); Button backButton = new Button () { 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 (bp); }; frameLayout.AddChidren (backButton); EditText textButton = new EditText () { X = Application.GetRealWidth (30) + backButton.Right, Height = Application.GetRealHeight (50), Width = Application.GetRealWidth (400), Text = acPanel.Name, Gravity = Gravity.CenterVertical, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1, SelectedBackgroundColor = SkinStyle.Current.SysEditBox, Enable = false, TextSize = 15, IsSelected = false, }; frameLayout.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, }; frameLayout.AddChidren (editor); editor.MouseUpEventHandler += (sender, e) => { if (editor.IsSelected) { editor.IsSelected = textButton.IsSelected = textButton.Enable = false; MainPage.Loading.Start (); byte [] remakeBytes = CommonPage.MyEncodingGB2312.GetBytes (textButton.Text.Trim ()); System.Threading.Tasks.Task.Run (() => { byte [] updateBytes = Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, acPanel.SubnetID, acPanel.DeviceID, new byte [] { acPanel.BigClass,acPanel.MinClass,acPanel.LoopID}); if (updateBytes == null) { Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); MainPage.Loading.Hide (); }); 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, acPanel.SubnetID, acPanel.DeviceID, updateBytes); if (reBytes != null) { Application.RunOnMainThread (() => { acPanel.Name = textButton.Text.Trim (); IO.FileUtils.SaveEquipmentMessage (acPanel, acPanel.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; } }; #endregion byte [] acBytes = null; Button btnOutput =new Button(){ Width = Application.GetRealWidth (303), Height = Application.GetRealHeight (50), X = Application.GetRealWidth(60), Y = Application.GetRealHeight(100), TextID = R.MyInternationalizationString.ChooseAC, TextAlignment = TextAlignment.CenterLeft, }; AddChidren(btnOutput); VerticalScrolViewLayout verticalScrolView = new VerticalScrolViewLayout { Width = Application.GetRealWidth (508), Height = Application.GetRealHeight(700), Y = btnOutput.Bottom+ Application.GetRealHeight(5), Gravity = Gravity.CenterHorizontal, BackgroundColor = SkinStyle.Current.SysSubtitleView }; AddChidren (verticalScrolView); List willBeShowList = IO.FileUtils.ReadFiles().FindAll((fileName)=>{ return fileName.Contains("Equipment_")&&(fileName.Contains(DeviceType.HVAC .ToString ())||fileName.Contains(DeviceType.ACInfrared.ToString () ) || fileName.Contains (DeviceType.ACInfrared.ToString ()) )&&(fileName.Split('_').Length == 5); }); byte [] sendData = new byte [8]; int num = 0; foreach (string equipment in willBeShowList)//显示在本地找到的所有设备 { var v = IO.FileUtils.ReadFile (equipment); string data = CommonPage.MyEncodingUTF8.GetString (v); HVAC ac = Newtonsoft.Json.JsonConvert.DeserializeObject (data); Button btnEquipment = new Button () { Width = LayoutParams.MatchParent, Height = Application.GetRealHeight (90), TextAlignment = TextAlignment.Center, Text = ac.Name, Tag = ac, BackgroundColor = SkinStyle.Current.ButtonColor, SelectedBackgroundColor = SkinStyle.Current.SelectedColor, Gravity = Gravity.CenterHorizontal }; verticalScrolView.AddChidren (btnEquipment); btnEquipment.Y = Application.GetRealHeight (10) + num * (btnEquipment.Height + Application.GetRealHeight(30)); num++; btnEquipment.MouseUpEventHandler += (sender, e) => { //if (btnEquipment.IsSelected) { // Alert alert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.CancelBinding), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); // alert.Show (); // alert.ResultEventHandler += (sender2, e2) => { // if (e2) { // sendData [0] = 1; // sendData [1] = 255; // sendData [2] = 255; // sendData [3] = 10; // sendData [4] = 1; // sendData [5] = 1; // sendData [6] = 1; // sendData [7] = 1; // System.Threading.Tasks.Task.Run (() => { // byte [] reFalg = Control.ControlBytesSendHasReturn (Command.SetACPanel, acPanel.SubnetID, acPanel.DeviceID, sendData); // Application.RunOnMainThread (() => { // if (reFalg == null) { // new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.OperationFailed), Language.StringByID (R.MyInternationalizationString.Close)).Show (); // } else if (reFalg [0] == 0xF8) { // new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.ThePerationWasSuccessful), Language.StringByID (R.MyInternationalizationString.Close)).Show (); // } // this.ShowSystemACPanel (acPanel, bp); // }); // }); // } // }; //} else { Alert alert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.SureBindDevice), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); alert.Show (); alert.ResultEventHandler += (sender2, e2) => { if (e2) { HVAC h = (HVAC)btnEquipment.Tag; if (acBytes.Length == 42) { acBytes [2] = h.SubnetID; acBytes [3] = h.DeviceID; acBytes [4] = h.LoopID; byte [] reFalg = Control.ControlBytesSendHasReturn (Command.SetACPanel, acPanel.SubnetID, acPanel.DeviceID, acBytes); if (reFalg == null) { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.OperationFailed), Language.StringByID (R.MyInternationalizationString.Close)).Show (); } this.ShowSystemACPanel (acPanel, bp); } else { sendData [0] = 1; sendData [1] = h.SubnetID; sendData [2] = h.DeviceID; sendData [3] = 10; sendData [4] = h.LoopID; sendData [5] = 1; sendData [6] = 1; sendData [7] = 1; System.Threading.Tasks.Task.Run (() => { byte [] reFalg = Control.ControlBytesSendHasReturn (Command.SetACPanel, acPanel.SubnetID, acPanel.DeviceID, sendData); Application.RunOnMainThread (() => { if (reFalg == null) { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.OperationFailed), Language.StringByID (R.MyInternationalizationString.Close)).Show (); } else if (reFalg [0] == 0xF8) { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.ThePerationWasSuccessful), Language.StringByID (R.MyInternationalizationString.Close)).Show (); } this.ShowSystemACPanel (acPanel, bp); }); }); } } }; } }; Button btnLine = new Button () { Width = LayoutParams.MatchParent, Height = 1, BackgroundColor = SkinStyle.Current.Black50Transparent }; verticalScrolView.AddChidren (btnLine); } //--------------bottom-------------- System.Threading.Tasks.Task.Run (() => { acBytes = Control.ControlBytesSendHasReturn (Command.ReadACPanel, acPanel.SubnetID, acPanel.DeviceID, new byte [] { }); Application.RunOnMainThread (() => { for (int i = 0; i < verticalScrolView.ChildrenCount; i++) { if (verticalScrolView.GetChildren (i).GetType () == typeof (Button)) { Button btn = (Button)verticalScrolView.GetChildren (i); if (btn.Tag != null) { var ac = (HVAC)btn.Tag; if (acBytes != null) { if (acBytes [2] == ac.SubnetID && acBytes [3] == ac.DeviceID && acBytes [5] == ac.LoopID) { btn.IsSelected = true; } } else { acBytes = Control.ControlBytesSendHasReturn (Command.READ_AIR_ALL_Parameter, acPanel.SubnetID, acPanel.DeviceID, new byte [] { acPanel.LoopID}); if (acBytes != null) { if (acBytes [2] == ac.SubnetID && acBytes [3] == ac.DeviceID && acBytes [4] == ac.LoopID) { btn.IsSelected = true; } } } } } } }); }); } } }