using System; using System.Collections.Generic; using Shared; namespace Shared.SimpleControl.Phone { public class AlexaSettingScenePage : Dialog { Room room; //List showList = new List (); VerticalScrolViewLayout deviceScrolView; VerticalScrolViewLayout typeLayout; string selectedDeviceType = "Scene"; /// /// 设备、场景列表 /// List targetInfoList = new List (); int show = 99; FrameLayout bodyView; public AlexaSettingScenePage (List list) { targetInfoList = new List(list); bodyView = new FrameLayout () { BackgroundColor = SkinStyle.Current.MainColor, }; AddChidren (bodyView); } /// /// /// /// /// public void ShowPage (Action> saveAction) { #region ---TopView--- var topView = new RowLayout () { Y = Application.GetRealHeight (36), Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (640), BackgroundColor = SkinStyle.Current.MainColor, }; bodyView.AddChidren (topView); var back = new Button () { Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (85), UnSelectedImagePath = "Item/Back.png", SelectedImagePath = "Item/BackSelected.png", }; topView.AddChidren (back); back.MouseUpEventHandler += (sender, e) => { this.Close (); }; Button NameButton = new Button () { Width = Application.GetRealWidth (400), Height = Application.GetMinReal (90), TextID = R.MyInternationalizationString.Scenes, //Text = MainPage.SoftTitle, SelectedTextColor = SkinStyle.Current.TextColor1, TextColor = SkinStyle.Current.TextColor1, Gravity = Gravity.CenterHorizontal, TextAlignment = TextAlignment.Center, TextSize = 19, }; topView.AddChidren (NameButton); #endregion #region type view var chooseTypeView = new RowLayout () { Y = topView.Bottom, Height = Application.GetRealHeight (110), BackgroundColor = SkinStyle.Current.ViewColor, }; bodyView.AddChidren (chooseTypeView); Button btnEquipmentIcon = new Button () { Width = Application.GetRealHeight (65), Height = Application.GetRealHeight (65), UnSelectedImagePath = "Scene/Scene.png", X = Application.GetRealWidth (30), Gravity = Gravity.CenterVertical, }; chooseTypeView.AddChidren (btnEquipmentIcon); Button btnDrodIcon = new Button () { X = Application.GetRealWidth (540), Height = Application.GetRealHeight (46), Width = Application.GetRealWidth (47), UnSelectedImagePath = "Item/Down.png", SelectedImagePath = "Item/DownSelected.png", Gravity = Gravity.CenterVertical, }; chooseTypeView.AddChidren (btnDrodIcon); Button btnEquipmentType = new Button () { Width = Application.GetRealHeight (460), X = btnEquipmentIcon.Right + Application.GetRealWidth (20), TextAlignment = TextAlignment.CenterLeft, Text = Language.StringByID (R.MyInternationalizationString.Scenes), TextColor = SkinStyle.Current.TextColor1, SelectedTextColor = SkinStyle.Current.DialogTextColor }; chooseTypeView.AddChidren (btnEquipmentType); typeLayout = new VerticalScrolViewLayout () { Y = chooseTypeView.Bottom, Height = Application.GetRealHeight (0), BackgroundColor = SkinStyle.Current.ViewColor }; //EventHandler chooseTypeMethod = (sender, e) => { // if (show == 99) {//第一次需要先初始化选择设备类型界面 // InitEquipmentTypeView (btnEquipmentType, btnEquipmentIcon, chooseTypeView); // show = 0; // } else if (show == 0) { // typeLayout.Height = Application.GetRealHeight (1136 - 126 - 90); // chooseTypeView.BackgroundColor = SkinStyle.Current.MainColor; // show = 1; // } else if (show == 1) { // typeLayout.Height = 0; // chooseTypeView.BackgroundColor = SkinStyle.Current.ViewColor; // show = 0; // } //}; //btnEquipmentType.MouseUpEventHandler += chooseTypeMethod; //btnDrodIcon.MouseUpEventHandler += chooseTypeMethod; //chooseTypeView.MouseUpEventHandler += chooseTypeMethod; #endregion deviceScrolView = new VerticalScrolViewLayout () { Y = chooseTypeView.Bottom, Height = Application.GetRealHeight (1136 - 126 - 110 - 89), BackgroundColor = SkinStyle.Current.ViewColor, }; bodyView.AddChidren (deviceScrolView); var btnClose = new Button () { Height = Application.GetRealHeight (90), Y = deviceScrolView.Bottom, BackgroundColor = SkinStyle.Current.MainColor, //Text = "OK", TextID = R.MyInternationalizationString.Confrim, TextColor = SkinStyle.Current.TextColor1, TextAlignment = TextAlignment.Center, TextSize = 16, }; bodyView.AddChidren (btnClose); btnClose.MouseUpEventHandler += (sender, e) => { saveAction?.Invoke (targetInfoList); ; this.Close (); }; GetSceneList (); } /// /// /// void GetSceneList () { System.Threading.Tasks.Task.Run (() => { try { Application.RunOnMainThread (() => { MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load)); }); var revertObj = HttpServerRequest.Current.GetSceneList (); if (revertObj.Code == StateCode.SUCCESS) { var list = Newtonsoft.Json.JsonConvert.DeserializeObject> (revertObj.Data.ToString ()); Application.RunOnMainThread (() => { if (list != null && list.Count > 0) { CommonConfig.Current.SceneList = list; } else { CommonConfig.Current.SceneList = new List (); } CommonConfig.Current.Save (); RefreshListView (); }); } else { //提示错误 IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); } } catch { } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); } /// /// /// void RefreshListView () { deviceScrolView.RemoveAll (); foreach (HDLLinkSceneBase sceneBase in CommonConfig.Current.SceneList) { AddRowView (sceneBase); } } /// /// /// /// void AddRowView (HDLLinkSceneBase sceneBase) { var deviceRow = new RowLayout () { Height = Application.GetRealHeight (120), }; deviceScrolView.AddChidren (deviceRow); var btnPoint = new Button () { Width = Application.GetMinRealAverage (10), Height = Application.GetMinRealAverage (10), Radius = (uint)Application.GetMinRealAverage (5), X = Application.GetRealWidth (50), Gravity = Gravity.CenterVertical, BackgroundColor = SkinStyle.Current.TextColor1, SelectedBackgroundColor = SkinStyle.Current.SelectedColor, }; deviceRow.AddChidren (btnPoint); Button btnEquipment = new Button () { X = btnPoint.Right + Application.GetRealWidth (30), Width = Application.GetRealWidth (310), TextAlignment = TextAlignment.CenterLeft, SelectedBackgroundColor = SkinStyle.Current.SelectedColor, SelectedTextColor = SkinStyle.Current.DialogTextColor, TextColor = SkinStyle.Current.TextColor1, Text = sceneBase.name, Tag = sceneBase.userSceneId, }; deviceRow.AddChidren (btnEquipment); var btnChoose = new Button () { X = Application.GetRealWidth (472 + 80), Width = Application.GetMinRealAverage (75), Height = Application.GetMinRealAverage (72), Gravity = Gravity.CenterVertical, UnSelectedImagePath = "CrabtreeAdd/Choose.png", SelectedImagePath = "CrabtreeAdd/ChooseOn.png", }; deviceRow.AddChidren (btnChoose); var targetSceneData = targetInfoList.Find ((obj) => obj.targetId == sceneBase.userSceneId); btnChoose.IsSelected = targetSceneData != null; btnChoose.MouseUpEventHandler += (sendere, ee) => { btnChoose.IsSelected = !btnChoose.IsSelected; if (btnChoose.IsSelected) { var sceneData = targetInfoList.Find ((obj) => obj.targetId == sceneBase.userSceneId); if (sceneData == null) { targetInfoList.Add (new TargetInfo () { targetId = sceneBase.userSceneId, targetName = sceneBase.name, isDevice = false }); } } else { var sceneData = targetInfoList.Find ((obj) => obj.targetId == sceneBase.userSceneId); if (sceneData != null) { targetInfoList.Remove (sceneData); } } }; } ///// ///// 显示在本地找到的所有设备 ///// //void InitDeviceList () //{ // deviceScrolView.RemoveAll (); // System.Threading.Tasks.Task.Run (() => { // //找出需要显示的设备 // var filesList = IO.FileUtils.ReadFiles ().FindAll ((obj) => { // string [] str = obj.Split ('_'); // return obj.StartsWith ("Equipment_") && str.Length == 5; // }); // var globalSceneFileList = Newtonsoft.Json.JsonConvert.DeserializeObject> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (Scene.GlobalSceneFilePath))); // if (globalSceneFileList == null) { // globalSceneFileList = new List (); // } // List RoomsSceneFileList = new List (); // foreach (var r in Room.Lists) { // if (string.IsNullOrEmpty (r.Name)) { // continue; // } // if (r != null) { // RoomsSceneFileList.AddRange (r.SceneFilePathList); // } // } // List TargetList = new List (); // //if (selectedDeviceType == "Scene") { // // if (string.IsNullOrEmpty (room.RoomFilePath) || room.RoomFilePath == Room.FavoriteRoom) { // // //TargetList.AddRange (globalSceneFileList); // // //TargetList.AddRange (RoomsSceneFileList); // // } else { // // Application.RunOnMainThread (() => { // // new ScenePhoneMethod ().AddOrUpdataSceneBaseMassage (room.RoomFilePath); // // }); // // } // //} // foreach (var list in globalSceneFileList) { // var tempScene = Scene.GetSceneByFilePath (list); // if (tempScene != null) { // TargetList.Add (new SceneObj () { Name = tempScene.Name, FilePath = list }); // } // } // foreach (var list in RoomsSceneFileList) { // var tempScene = Scene.GetSceneByFilePath (list); // if (tempScene != null) { // TargetList.Add (new SceneObj () { Name = tempScene.Name, FilePath = list }); // } // } // //for (int i = 0; i < TargetList.Count;) { // // var taget = TargetList [i]; // // var tacount = TargetList.FindAll ((obj) => obj == taget).Count; // // if (tacount == 1) { // // i++; // // } // // while (tacount > 1) { // // TargetList.Remove (taget); // // tacount--; // // } // //} // foreach (SceneObj mSceneObj in TargetList) { // try { // string [] str = mSceneObj.FilePath.Split ('_'); // var commonBytes = IO.FileUtils.ReadFile (mSceneObj.FilePath); // if (commonBytes.Length == 0) { // Shared.Utlis.WriteLine ("length loss"); // continue; // } // if (commonBytes.Length == 1) { // Shared.Utlis.WriteLine ("length loss 1"); // continue; // } // //var deviceFilePath = filePath; // Common commonDevice = Newtonsoft.Json.JsonConvert.DeserializeObject (System.Text.Encoding.UTF8.GetString (commonBytes)); // if (commonDevice.Type == DeviceType.OnePortBus || commonDevice.Type == DeviceType.OnePortWirelessFR || commonDevice.Type == DeviceType.OnePortMqttFR || commonDevice.Type == DeviceType.RCU // || commonDevice.Type == DeviceType.A31MusicModel || commonDevice.Type == DeviceType.MusicA31) { // continue; // } // Application.RunOnMainThread (() => { // var deviceRow = new RowLayout () { // Height = Application.GetRealHeight (120), // }; // deviceScrolView.AddChidren (deviceRow); // var btnPoint = new Button () { // Width = Application.GetMinRealAverage (10), // Height = Application.GetMinRealAverage (10), // Radius = (uint)Application.GetMinRealAverage (5), // X = Application.GetRealWidth (50), // Gravity = Gravity.CenterVertical, // BackgroundColor = SkinStyle.Current.TextColor1, // SelectedBackgroundColor = SkinStyle.Current.SelectedColor, // }; // deviceRow.AddChidren (btnPoint); // Button btnEquipment = new Button () { // X = btnPoint.Right + Application.GetRealWidth (30), // Width = Application.GetRealWidth (310), // TextAlignment = TextAlignment.CenterLeft, // SelectedBackgroundColor = SkinStyle.Current.SelectedColor, // SelectedTextColor = SkinStyle.Current.DialogTextColor, // TextColor = SkinStyle.Current.TextColor1, // Text = commonDevice.Name, // Tag = mSceneObj.FilePath, // }; // deviceRow.AddChidren (btnEquipment); // var btnChoose = new Button () { // X = Application.GetRealWidth (472 + 80), // Width = Application.GetRealWidth (75), // Height = Application.GetRealHeight (72), // Gravity = Gravity.CenterVertical, // UnSelectedImagePath = "CrabtreeAdd/Choose.png", // SelectedImagePath = "CrabtreeAdd/ChooseOn.png", // IsSelected = showList.Contains (mSceneObj.Name), // Tag = mSceneObj.FilePath // }; // btnChoose.AddTag ("DeviceFilePath", mSceneObj.FilePath); // deviceRow.AddChidren (btnChoose); // if (showList.Contains (mSceneObj.Name)) { // //btnChoose.Enable = false; // roomSceneFilePathList.Add (mSceneObj.FilePath); // } // // // btnChoose.MouseUpEventHandler += (sendere, ee) => { // btnChoose.IsSelected = !btnChoose.IsSelected; // if (btnChoose.IsSelected) { // if (selectedDeviceType == "Scene") { // roomSceneFilePathList.Add (mSceneObj.FilePath); // } // showList.Add (mSceneObj.Name); // } else { // if (selectedDeviceType == "Scene") { // roomSceneFilePathList.Remove (mSceneObj.FilePath); // } // showList.Remove (mSceneObj.Name); // } // }; // }); // } catch (Exception ex) { // Shared.Utlis.WriteLine (ex.Message); // } // } // }); //} void InitEquipmentTypeView (Button btnEquipmentType, Button btnEquipmentIcon, RowLayout chooseTypeView) { bodyView.AddChidren (typeLayout); //下拉列表的数据源(选项为设备类型有关) List typeTemp = new List{ Language.StringByID(R.MyInternationalizationString.Scenes), }; foreach (string typeName in typeTemp) { var dialogRow = new RowLayout () { Height = Application.GetRealHeight (110), }; typeLayout.AddChidren (dialogRow); var btnPoint = new Button () { Width = Application.GetMinRealAverage (10), Height = Application.GetMinRealAverage (10), Radius = (uint)Application.GetMinRealAverage (5), X = Application.GetRealWidth (70), Gravity = Gravity.CenterVertical, BackgroundColor = SkinStyle.Current.TextColor1, SelectedBackgroundColor = SkinStyle.Current.SelectedColor, }; dialogRow.AddChidren (btnPoint); Button btnTypeName = new Button () { Width = Application.GetRealHeight (400), X = btnPoint.Right + Application.GetRealWidth (30), Text = typeName, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1 }; dialogRow.AddChidren (btnTypeName); EventHandler typeEvent = (sender1, e1) => { typeLayout.Height = 0; btnEquipmentType.Text = typeName; //if (typeName == Language.StringByID (R.MyInternationalizationString.Lights)) { // btnEquipmentIcon.UnSelectedImagePath = "Item/Light.png"; // selectedDeviceType = "Light"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.Curtains)) { // btnEquipmentIcon.UnSelectedImagePath = "Curtain/Curtain.png"; // selectedDeviceType = "Curtain"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.AC)) { // btnEquipmentIcon.UnSelectedImagePath = "AC/AC.png"; // selectedDeviceType = "AC"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.FoolHeat)) { // btnEquipmentIcon.UnSelectedImagePath = "Item/FloorHeating.png"; // selectedDeviceType = "FoolHeat"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.DryContactPanel)) { // btnEquipmentIcon.UnSelectedImagePath = "Item/DryContact.png"; // selectedDeviceType = "DryContact"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.MusicModel)) { // btnEquipmentIcon.UnSelectedImagePath = "Item/Music.png"; // selectedDeviceType = "Music"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.InfraredMode)) { // btnEquipmentIcon.UnSelectedImagePath = "Item/InfraredTV.png"; // selectedDeviceType = "InfraredMode"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.TV)) { // btnEquipmentIcon.UnSelectedImagePath = "Item/InfraredTV.png"; // selectedDeviceType = "InfraredMode"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.ElectricalControl)) { // btnEquipmentIcon.UnSelectedImagePath = "Light/Socket.png"; // selectedDeviceType = "EC";//电器控制 //} else if (typeName == Language.StringByID (R.MyInternationalizationString.Fan)) { // btnEquipmentIcon.UnSelectedImagePath = "Fan/Fan.png"; // selectedDeviceType = "Fan"; // //} else if (typeName == Language.StringByID (R.MyInternationalizationString.LogicModule)) { // // btnEquipmentIcon.UnSelectedImagePath = "Item/PointBig.png"; // // selectedDeviceType = "LogicModule"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.Scenes)) { btnEquipmentIcon.UnSelectedImagePath = "Scene/Scene.png"; selectedDeviceType = "Scene"; } //else if (typeName == Language.StringByID (R.MyInternationalizationString.UniversalDevice)) { // btnEquipmentIcon.UnSelectedImagePath = "UniversalDevice/UniversalDevice.png"; // selectedDeviceType = "UniversalDevice"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.Sensor)) { // btnEquipmentIcon.UnSelectedImagePath = "UniversalDevice/UniversalDevice.png"; // selectedDeviceType = "Sensor"; //} else if (typeName == Language.StringByID (R.MyInternationalizationString.FreshAir)) { // btnEquipmentIcon.UnSelectedImagePath = "FreshAir/FreshAir.png"; // selectedDeviceType = "FreshAir"; //} else { btnEquipmentIcon.UnSelectedImagePath = "Item/LogicModule.png"; selectedDeviceType = "All"; } chooseTypeView.BackgroundColor = SkinStyle.Current.ViewColor; GetSceneList (); }; dialogRow.MouseUpEventHandler += typeEvent; btnTypeName.MouseUpEventHandler += typeEvent; } } } public class SceneObj { /// /// 路径 /// public string FilePath; /// /// 场景Name /// public string Name; } }