using System; using System.Collections.Generic; using System.Linq; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI { public partial class FunctionPage : FrameLayout { #region 控件列表 /// /// 当前窗体 /// static FrameLayout bodyView; /// /// 楼层选择下拉图标 /// Button btnFloorDownIcon; /// /// 楼层显示 /// Button btnFloor; /// /// 功能列表集合显示区域 /// static VerticalScrolViewLayout functionListView; #endregion List functionList; int titleId; public FunctionPage() { bodyView = this; functionList = new List(); } public void LoadPage(int titleId_out) { this.titleId = titleId_out; bodyView.BackgroundColor = CSS_Color.BackgroundColor; if (titleId == StringId.Lights && !DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl) { Action action = () => { Action refreshAction = (outScene) => { if (outScene != null) { functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) }); var sceneRow = new SceneControlZone(outScene); functionListView.AddChidren(sceneRow); sceneRow.LoadView(); } }; var skipView = new AddLightScene(new List(), new Scene() { sceneType = SceneType.LightScene }, refreshAction); MainPage.BasePageView.AddChidren(skipView); skipView.LoadPage(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView_LightFunction(action); } else { new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView(); } #if DEBUG //Button testBtn = new Button() //{ // X = Application.GetRealWidth(80), // Height = Application.GetRealHeight(64), // BackgroundColor = 0xFFFF0000 //}; //bodyView.AddChidren(testBtn); //int ddd = 0; //testBtn.MouseUpEventHandler = (sender, e) => { // ddd++; // Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101"); // if (ddd % 2 == 0) // { // function_online.online = true; // } // else // { // function_online.online = false; // } // HomePage.LoadEvent_RefreshDevcieOnline(function_online); // FunctionPage.UpdataOnline(function_online); // RoomPage.UpdataOnline(function_online); //}; #endif /// /// 房间内容显示区域 /// var roomFloorChangeView = new FrameLayout() { Y = Application.GetRealHeight(64), Height = Application.GetRealHeight(52), }; bodyView.AddChidren(roomFloorChangeView); #region 房间顶部切换显示区域 btnFloorDownIcon = new Button() { Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), X = Application.GetRealWidth(16), Y = Application.GetRealHeight(18), UnSelectedImagePath = "Public/DownIcon.png", }; roomFloorChangeView.AddChidren(btnFloorDownIcon); btnFloor = new Button() { X = btnFloorDownIcon.Right, Y = Application.GetRealHeight(18), Width = Application.GetRealWidth(200), Height = Application.GetMinRealAverage(16), TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, TextAlignment = TextAlignment.CenterLeft, Text = DB_ResidenceData.Instance.CurFloor.roomName, }; roomFloorChangeView.AddChidren(btnFloor); #endregion functionListView = new VerticalScrolViewLayout() { Y = Application.GetRealHeight(64 + 52), Height = Application.GetRealHeight(603 - 12 - 52), }; bodyView.AddChidren(functionListView); if (titleId == StringId.Lights) { functionList.AddRange(FunctionList.List.groupControls); functionList.AddRange(FunctionList.List.GetLightList()); } else if (titleId == StringId.AC) { functionList.AddRange(FunctionList.List.GetAcList()); } else if (titleId == StringId.Curtain) { functionList.AddRange(FunctionList.List.GetCurtainList()); } else if (titleId == StringId.FloorHeating) { functionList.AddRange(FunctionList.List.GetFloorHeatingList()); } else if (titleId == StringId.Electric) { functionList.AddRange(FunctionList.List.GetElectricals()); } else if (titleId == StringId.EnvironmentalScience) { functionList.AddRange(FunctionList.List.GetEnvirSensorsList()); } else if (titleId == StringId.Sensor) { functionList.AddRange(FunctionList.List.GetArmSensorList()); } else if (titleId == StringId.FreshAir) { functionList.AddRange(FunctionList.List.GetAirFreshList()); } else if(titleId == StringId.MechanicalArm) { functionList.AddRange(FunctionList.List.GetMechanicalArmList()); } else if(titleId == StringId.SecurityMonitoring) { functionList.AddRange(FunctionList.List.GetIpCamImouList()); } functionList = functionList.OrderByDescending(o => o.controlCounter).ToList(); ShowFunctionRow(functionList); LoadDialog_ChangeFloor(); } /// /// 显示的设备的总数 /// int showCount = -1; /// /// 加载功能row /// void ShowFunctionRow(List showList, bool isAppend = false) { var waitPage = new Loading(); bodyView.AddChidren(waitPage); waitPage.Start(""); new System.Threading.Thread(() => { try { Application.RunOnMainThread(() => { if (!isAppend) { showCount = -1; functionListView.RemoveAll(); #region 加载组合调光场景 if (titleId == StringId.Lights) { foreach (var lightScene in FunctionList.List.scenes) { if (lightScene.sceneType == SceneType.LightScene) if (lightScene != null) { var sceneRow = new SceneControlZone(lightScene); functionListView.AddChidren(sceneRow); sceneRow.LoadView(); functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) }); } } } #endregion } for (var i = 0;i<50;i++) //foreach (var function in showList) { showCount++; if (showCount >= showList.Count) { break; } var function = showList[showCount]; if (function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2) { continue; } if (function.spk == SPK.LightRGBW || function.spk == SPK.LightRGB || function.spk == SPK.LightDimming) { var functionDiv = new FunctionControlZone(function,null) { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(116), Radius = (uint)Application.GetMinRealAverage(12), BorderColor = 0x00FFFFFF, BorderWidth = 1, BackgroundColor = CSS_Color.MainBackgroundColor, Tag = function.spk + function.sid }; functionDiv.LoadFunctionDiv(); functionDiv.OrderEvent = OrderEvent; functionListView.AddChidren(functionDiv); } else if (function.spk == SPK.IpCam_Imou) { var functionDiv = new FunctionControlZone(function,null) { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(96), Radius = (uint)Application.GetMinRealAverage(12), BorderColor = 0x00FFFFFF, BorderWidth = 1, BackgroundColor = CSS_Color.MainBackgroundColor, Tag = function.spk + function.sid }; functionDiv.LoadFunctionDiv(); functionListView.AddChidren(functionDiv); } else { var functionDiv = new FunctionControlZone(function,null) { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(96), Radius = (uint)Application.GetMinRealAverage(12), BorderColor = 0x00FFFFFF, BorderWidth = 1, BackgroundColor = CSS_Color.MainBackgroundColor, Tag = function.spk + function.sid }; functionDiv.LoadFunctionDiv(); functionDiv.OrderEvent = OrderEvent; functionListView.AddChidren(functionDiv); } functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(10) }); } if (showList.Count > showCount) { var btnAppend = new Button() { Height = Application.GetRealHeight(60), TextAlignment = TextAlignment.Center, TextSize = CSS_FontSize.SubheadingFontSize, TextColor = CSS_Color.FirstLevelTitleColor, TextID = StringId.LoadMore, }; functionListView.AddChidren(btnAppend); btnAppend.MouseUpEventHandler = (sender, e) => { btnAppend.RemoveFromParent(); ShowFunctionRow(showList, true); }; } }); } catch (Exception ex) { MainPage.Log("ShowFunctionRowError : " + ex.Message); } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }) { IsBackground = true }.Start(); } /// /// 排序事件 /// void OrderEvent() { Action action = () => { functionList = functionList.OrderBy(o => o.FunctionOrderNumber).ToList(); ShowFunctionRow(functionList); }; var skipView = new OrderFunctionPage(); MainPage.BasePageView.AddChidren(skipView); skipView.LoadPage(functionList, action); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; } ///// ///// 加载功能类型控制卡片 ///// //public void LoadSceneRow(Scene scene) //{ // var bodyDiv = new FrameLayout() // { // Gravity = Gravity.CenterHorizontal, // Width = Application.GetRealWidth(343), // Height = Application.GetRealHeight(116), // Radius = (uint)Application.GetMinRealAverage(12), // BorderColor = 0x00FFFFFF, // BorderWidth = 1, // BackgroundColor = CSS_Color.MainBackgroundColor, // Tag = "Scene-" + scene.sid // }; // functionListView.AddChidren(bodyDiv); // var btnIcon = new Button() // { // X = Application.GetRealWidth(10), // Y = Application.GetRealHeight(15), // Width = Application.GetRealWidth(32), // Height = Application.GetRealWidth(32), // }; // bodyDiv.AddChidren(btnIcon); // var btnName = new Button() // { // X = Application.GetRealWidth(8 + 10 + 32), // Y = Application.GetRealHeight(10), // Width = Application.GetRealWidth(200), // Height = Application.GetRealHeight(24), // Text = scene.name, // TextAlignment = TextAlignment.CenterLeft, // TextColor = CSS_Color.FirstLevelTitleColor, // TextSize = CSS_FontSize.TextFontSize, // }; // bodyDiv.AddChidren(btnName); // var btnFromFloor = new Button() // { // X = Application.GetRealWidth(8 + 10 + 32), // Y = Application.GetRealHeight(10 + 24), // Width = Application.GetRealWidth(200), // Height = Application.GetRealHeight(18), // Text = scene.GetRoomListName(), // TextAlignment = TextAlignment.CenterLeft, // TextColor = CSS_Color.PromptingColor1, // TextSize = CSS_FontSize.PromptFontSize_FirstLevel, // }; // bodyDiv.AddChidren(btnFromFloor); // var btnCollectionIcon = new Button() // { // X = Application.GetRealWidth(299), // Y = Application.GetRealHeight(10), // Width = Application.GetMinRealAverage(40), // Height = Application.GetMinRealAverage(40), // SelectedImagePath = "Collection/CollectionIcon.png", // UnSelectedImagePath = "Collection/CollectionGrayIcon.png", // IsSelected = scene.collect // }; // bodyDiv.AddChidren(btnCollectionIcon); // btnIcon.UnSelectedImagePath = "FunctionIcon/Scene/SceneIcon.png"; // if (scene.sceneType == SceneType.MovieScene) // { // var movieIcon = new Button() // { // X = Application.GetRealWidth(52), // Y = Application.GetRealHeight(14), // Width = Application.GetRealWidth(16), // Height = Application.GetRealWidth(16), // UnSelectedImagePath = "FunctionIcon/Scene/MovieMark.png", // }; // bodyDiv.AddChidren(movieIcon); // btnName.X = Application.GetRealWidth(52 + 16); // } // //加载场景控制事件 // LoadEvent_ControlScene(btnName, btnFromFloor, bodyDiv, scene); // LoadEvent_FunctionCollection(btnCollectionIcon, scene); //} ///// ///// 加载功能收藏按钮事件 ///// //void LoadEvent_FunctionCollection(Button btnCollectionIcon, Scene scene) //{ // btnCollectionIcon.MouseUpEventHandler += (sender, e) => // { // btnCollectionIcon.IsSelected = scene.collect = !btnCollectionIcon.IsSelected; // scene.CollectScene(); // }; //} ///// ///// 加载场景控制事件 ///// //void LoadEvent_ControlScene(Button btnName, Button btnFromFloor, FrameLayout bodyDiv, Scene scene) //{ // EventHandler upEvent = (sender, e) => { // DriverLayer.Control.Ins.ControlScene(scene); // string msg = scene.name + Language.StringByID(StringId.AlreadyOpened); // new PublicAssmebly().TipMsgAutoClose(msg, false); // }; // btnName.MouseUpEventHandler = upEvent; // btnFromFloor.MouseUpEventHandler = upEvent; // bodyDiv.MouseUpEventHandler = upEvent; //} /// /// 住宅列表点击事件 /// void LoadDialog_ChangeFloor() { string nowSelectId = null; btnFloor.MouseUpEventHandler += (sender, e) => { //显示下拉列表 var form = new FloorRoomSelectPopupView(); form.ShowDeviceFunctionView(btnFloor, this.functionList, (selectId, listFunc) => { nowSelectId = selectId; //重新加载界面 ShowFunctionRow(listFunc); }, nowSelectId); }; } } }