using System; using System.Collections.Generic; using Shared; namespace Shared.SimpleControl.Phone { public class AlexaAddScenePage : Dialog { Room room; List showList = new List (); VerticalScrolViewLayout deviceScrolView; VerticalScrolViewLayout typeLayout; string selectedDeviceType = "Scene"; List roomSceneFilePathList = new List (); //List roomDeviceFilePathList = new List (); int show = 99; FrameLayout bodyView; public AlexaAddScenePage (Room r) { room = r; showList.Clear (); roomSceneFilePathList.AddRange (room.SceneFilePathList); //roomDeviceFilePathList.AddRange (room.DeviceFilePathList); //showList.AddRange (roomDeviceFilePathList); showList.AddRange (roomSceneFilePathList); bodyView = new FrameLayout () { BackgroundColor = SkinStyle.Current.MainColor, }; AddChidren (bodyView); } public void ShowPage (Action action, Action, List> 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.AddNewDevice, //Text = MainPage.SoftTitle, SelectedTextColor = SkinStyle.Current.TextColor1, TextColor = SkinStyle.Current.TextColor1, Gravity = Gravity.CenterHorizontal, TextAlignment = TextAlignment.Center, TextSize = 20, }; 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 = "Item/LogicModule.png", X = Application.GetRealWidth (30), Gravity = Gravity.CenterVertical, }; chooseTypeView.AddChidren (btnEquipmentIcon); Button btnDrodIcon = new Button () { X = Application.GetRealWidth (540), Height = Application.GetMinRealAverage (46), Width = Application.GetMinRealAverage (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.All), 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); InitDeviceList (); var btnClose = new Button () { Height = Application.GetRealHeight (90), Y = deviceScrolView.Bottom, BackgroundColor = SkinStyle.Current.MainColor, Text = "OK", TextColor = SkinStyle.Current.TextColor1, TextAlignment = TextAlignment.Center, TextSize = 16, }; bodyView.AddChidren (btnClose); btnClose.MouseUpEventHandler += (sender, e) => { saveAction (roomSceneFilePathList, null); this.Close (); }; } /// /// 显示在本地找到的所有场景 /// void InitDeviceList () { deviceScrolView.RemoveAll (); System.Threading.Tasks.Task.Run (() => { ////找出需要显示的场景 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); }); } //} else { // //TargetList.AddRange (localEquipments); //} 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 (string filePath in TargetList) { try { string [] str = filePath.Split ('_'); var commonBytes = IO.FileUtils.ReadFile (filePath); if (commonBytes.Length == 0) { Utlis.WriteLine ("length loss"); continue; } if (commonBytes.Length == 1) { Utlis.WriteLine ("length loss 1"); continue; } Common commonDevice = Newtonsoft.Json.JsonConvert.DeserializeObject (System.Text.Encoding.UTF8.GetString (commonBytes)); if (commonDevice.Type != DeviceType.Scene) { 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 = filePath, }; 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", //IsSelected = showList.Contains (deviceFilePath), Tag = filePath }; //btnChoose.AddTag ("DeviceFilePath", deviceFilePath); deviceRow.AddChidren (btnChoose); btnChoose.MouseUpEventHandler += (sendere, ee) => { btnChoose.IsSelected = !btnChoose.IsSelected; if (btnChoose.IsSelected) { roomSceneFilePathList.Add (((Button)sendere).Tag.ToString ()); showList.Add (((Button)sendere).Tag.ToString ()); } else { roomSceneFilePathList.Remove (((Button)sendere).Tag.ToString ()); showList.Remove (((Button)sendere).Tag.ToString ()); } }; var sceneName = str [str.Length - 2];//倒数第一位为场景名 btnChoose.IsSelected = showList.Contains (sceneName); }); } catch (Exception ex) { Utlis.WriteLine (ex.Message); } } }); } void InitEquipmentTypeView (Button btnEquipmentType, Button btnEquipmentIcon, RowLayout chooseTypeView) { bodyView.AddChidren (typeLayout); //下拉列表的数据源(选项为设备类型有关) List typeTemp = new List{ Language.StringByID(R.MyInternationalizationString.All), Language.StringByID(R.MyInternationalizationString.Scenes), //Language.StringByID(R.MyInternationalizationString.Lights), //Language.StringByID(R.MyInternationalizationString.AC), //Language.StringByID(R.MyInternationalizationString.Curtains), //Language.StringByID(R.MyInternationalizationString.FoolHeat), //Language.StringByID(R.MyInternationalizationString.FreshAir), //Language.StringByID(R.MyInternationalizationString.TV), //Language.StringByID(R.MyInternationalizationString.Fan), //Language.StringByID (R.MyInternationalizationString.Security), //Language.StringByID (R.MyInternationalizationString.LogicModule), //Language.StringByID(R.MyInternationalizationString.ElectricalControl), //Language.StringByID (R.MyInternationalizationString.MusicModel), //Language.StringByID (R.MyInternationalizationString.UniversalDevice), //Language.StringByID (R.MyInternationalizationString.Sensor), }; 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; InitDeviceList (); }; dialogRow.MouseUpEventHandler += typeEvent; btnTypeName.MouseUpEventHandler += typeEvent; } } } }