using System; using System.Collections.Generic; using HDL_ON.DAL.Server; using HDL_ON.DriverLayer; using HDL_ON.Entity; using HDL_ON.UI; using HDL_ON.UI.CSS; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Shared; namespace HDL_ON.UI { public partial class ClassificationPage : FrameLayout { #region 控件列表 static ClassificationPage bodyView; #region 顶部控件 /// /// 房间分页 /// Button btnRoomTilte; /// /// 功能分类 /// Button btnFuncTitle; #endregion /// /// 房间/功能分页区域 /// PageLayout contentPageView; #region 房间区域 FrameLayout roomPageView; /// /// 房间内容显示区域 /// FrameLayout roomFloorChangeView; #region 房间底部切换显示区域 /// /// 房间区域,顶部区域 /// FrameLayout roomTopView; /// /// 楼层选择下拉图标 /// Button btnFloorDownIcon; /// /// 楼层显示 /// Button btnFloor; /// /// 显示方式切换按钮 /// Button btnSwitchDipaly; #endregion /// /// 房间列表区域 /// VerticalScrolViewLayout roomListView; #endregion #region 功能区域 VerticalScrolViewLayout functionsPageView; #endregion #endregion List roomsShowed; public ClassificationPage() { bodyView = this; roomsShowed = new List(); roomsShowed.AddRange(SpatialInfo.CurrentSpatial.RoomList); } public void LoadPage() { MainPage.CurPageIndex = 1; bodyView.BackgroundColor = CSS_Color.BackgroundColor; #region top FrameLayout topView = new FrameLayout() { Height = Application.GetRealHeight(64), BackgroundColor = CSS_Color.TopViewColor, }; bodyView.AddChidren(topView); btnRoomTilte = new Button() { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(170), Height = Application.GetRealHeight(25), TextAlignment = TextAlignment.CenterRight, TextSize = CSS_FontSize.HeadlineFontSize, TextColor = CSS_Color.PromptingColor1, SelectedTextColor = CSS_Color.MainColor, TextID = StringId.Rooms, IsSelected = true }; topView.AddChidren(btnRoomTilte); btnFuncTitle = new Button() { X = Application.GetRealWidth(209), Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(170), Height = Application.GetRealHeight(25), TextAlignment = TextAlignment.CenterLeft, TextSize = CSS_FontSize.TextFontSize, TextColor = CSS_Color.PromptingColor1, SelectedTextColor = CSS_Color.MainColor, TextID = StringId.Functions, }; topView.AddChidren(btnFuncTitle); #endregion contentPageView = new PageLayout() { Y = Application.GetRealHeight(64), Height = Application.GetRealHeight(667 - 64 - 49 + 30), BackgroundColor = CSS_Color.MainBackgroundColor, IsShowPoint = false }; bodyView.AddChidren(contentPageView); LoadRoomPageView(); LoadFunctionPageView(); LoadEventList(); } /// /// 加载房间列表界面 /// void LoadRoomPageView() { #region 房间区域 roomPageView = new FrameLayout(); contentPageView.AddChidren(roomPageView); /// /// 房间内容显示区域 /// roomFloorChangeView = new FrameLayout() { Height = Application.GetRealHeight(52), }; roomPageView.AddChidren(roomFloorChangeView); #region 房间顶部切换显示区域 /// /// 房间区域,顶部区域 /// roomTopView = new FrameLayout() { Height = Application.GetRealHeight(53), }; roomFloorChangeView.AddChidren(roomTopView); /// /// 楼层选择下拉图标 /// 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); /// /// 显示方式切换按钮 /// btnSwitchDipaly = new Button() { X = Application.GetRealWidth(335), Y = Application.GetRealHeight(12), Width = Application.GetMinRealAverage(28), Height = Application.GetMinRealAverage(28), UnSelectedImagePath = "Classification/ToggleDisplayThumbnail.png",//缩略图 SelectedImagePath = "Classification/ToggleDisplayLarge.png", IsSelected = OnAppConfig.Instance.IsShowBigPicture }; roomFloorChangeView.AddChidren(btnSwitchDipaly); btnSwitchDipaly.MouseUpEventHandler = (sender, e) => { OnAppConfig.Instance.IsShowBigPicture = !OnAppConfig.Instance.IsShowBigPicture; btnSwitchDipaly.IsSelected = OnAppConfig.Instance.IsShowBigPicture; LoadRoomRows(true); }; #endregion /// /// 房间列表区域 /// roomListView = new VerticalScrolViewLayout() { Y = roomFloorChangeView.Bottom, Height = Application.GetRealHeight(497 + 10 + 30), //BackgroundColor = CSS_Color.MainBackgroundColor, }; roomPageView.AddChidren(roomListView); LoadRoomRows(); roomListView.AddChidren(new Button() { Height = Application.GetRealHeight(20) });//太高视图,将导航了遮挡的部分完整显示 #endregion LoadDialog_ChangeFloor(); } /// /// 加载房间列表区域 /// /// 动画效果 void LoadRoomRows(bool animationEffect = false) { if (animationEffect) { ///移动方向 var runDirection = OnAppConfig.Instance.IsShowBigPicture ? 1 : -1; for (int i = 0; i < roomListView.ChildrenCount; i++) { var childView = roomListView.GetChildren(i); if (childView.GetType() == typeof(FrameLayout)) { var roomView = childView as FrameLayout; //大图显示 if (OnAppConfig.Instance.IsShowBigPicture) { LoadBigPirtureRoomRow(roomView, roomsShowed[i]); } else//无图显示 { LoadSmallPirtureRoomRow(roomView, roomsShowed[i]); } } new System.Threading.Thread(() => { //需要移动的高度 var runHeight = Application.GetRealWidth(i * 142); int runCount = 0; //循环次数,动画效果需要在1秒 (10次)内完成 while (runCount < 9) { Application.RunOnMainThread(() => { if (childView.GetType() == typeof(FrameLayout)) { childView.Height += Application.GetRealWidth(14) * runDirection; } if (i > 0) { childView.Y += runDirection * Application.GetRealWidth(14 * i); } }); runCount++; System.Threading.Thread.Sleep(12); } Application.RunOnMainThread(() => { childView.Y += runHeight * runDirection; if (childView.GetType() == typeof(FrameLayout)) { if (runDirection == 1) { childView.Height = Application.GetRealWidth(192+20); } else { childView.Height = Application.GetRealWidth(70+20); } } }); }) { IsBackground = true, Priority = System.Threading.ThreadPriority.Highest }.Start(); } } else { roomListView.RemoveAll(); foreach (var room in roomsShowed) { //大图显示 if (OnAppConfig.Instance.IsShowBigPicture) { roomFloorChangeView.BackgroundColor = roomListView.BackgroundColor = CSS_Color.MainBackgroundColor; var roomView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealWidth(192 + 20),//2020-12-01 房间图片比例改回16:9 Radius = (uint)Application.GetRealWidth(12), Tag = room.roomId, BackgroundColor = CSS_Color.MainBackgroundColor, }; roomListView.AddChidren(roomView); LoadBigPirtureRoomRow(roomView, room); } else//无图显示 { roomFloorChangeView.BackgroundColor = roomListView.BackgroundColor = CSS_Color.BackgroundColor; var roomView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealWidth(70 + 20), Radius = (uint)Application.GetRealWidth(12), Tag = room.roomId, BackgroundColor = CSS_Color.MainBackgroundColor, }; roomListView.AddChidren(roomView); LoadSmallPirtureRoomRow(roomView, room); } } } } /// /// 加载大图房间row /// /// /// void LoadBigPirtureRoomRow(FrameLayout roomView, Room room) { roomView.RemoveAll(); roomFloorChangeView.BackgroundColor = roomListView.BackgroundColor = CSS_Color.MainBackgroundColor; roomView.BackgroundColor = CSS_Color.MainBackgroundColor; var roomViewbg = new ImageView() { Width = Application.GetRealWidth(343), Height = Application.GetRealWidth(192),//2020-12-01 房间图片比例改回16:9 Radius = (uint)Application.GetRealWidth(12), }; roomView.AddChidren(roomViewbg); //2020-12-03 修改图片加载方法 ImageUtlis.Current.LoadLocalOrNetworkImages(room.backgroundImage, roomViewbg); var btnFloorAndRoomName = new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealHeight(12 - 2), Width = Application.GetRealWidth(266), Height = Application.GetRealHeight(22 + 2 + 2), Text = room.floorName + room.roomName, TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.MainBackgroundColor, TextSize = CSS_FontSize.SubheadingFontSize, }; roomView.AddChidren(btnFloorAndRoomName); #region 环境数据 //var environmentalView = new FrameLayout() //{ // Y = Application.GetRealHeight(2) + btnFloorAndRoomName.Bottom, // Height = Application.GetRealHeight(32), // Tag = "EnvironmentalView", //}; //roomView.AddChidren(environmentalView); //Button btnTempIcon = new Button() //{ // X = Application.GetRealWidth(12), // Gravity = Gravity.CenterVertical, // Width = Application.GetMinRealAverage(16), // Height = Application.GetMinRealAverage(16), // UnSelectedImagePath = "Public/DeviceInfoIcon/TempIcon.png", //}; //environmentalView.AddChidren(btnTempIcon); //var btnTempValues = new Button() //{ // X = btnTempIcon.Right + Application.GetRealWidth(4), // Width = Application.GetRealWidth(30), // Gravity = Gravity.CenterVertical, // TextColor = CSS_Color.MainBackgroundColor, // TextSize = CSS_FontSize.PromptFontSize_FirstLevel, // Text = "--°", // TextAlignment = TextAlignment.CenterLeft, // Tag = "TempValues" //}; //environmentalView.AddChidren(btnTempValues); //Button btnHumidityIcon = new Button() //{ // X = btnTempValues.Right + Application.GetRealWidth(2), // Gravity = Gravity.CenterVertical, // Width = Application.GetMinRealAverage(16), // Height = Application.GetMinRealAverage(16), // UnSelectedImagePath = "Public/DeviceInfoIcon/HumidityIcon.png", //}; //environmentalView.AddChidren(btnHumidityIcon); //var btnHumidityValues = new Button() //{ // X = btnHumidityIcon.Right + Application.GetRealWidth(4), // Width = Application.GetRealWidth(30), // Gravity = Gravity.CenterVertical, // TextColor = CSS_Color.MainBackgroundColor, // TextSize = CSS_FontSize.PromptFontSize_FirstLevel, // Text = "--%", // TextAlignment = TextAlignment.CenterLeft, // Tag = "HumidityValues" //}; //environmentalView.AddChidren(btnHumidityValues); //Button btnPm25Icon = new Button() //{ // X = btnHumidityValues.Right + Application.GetRealWidth(2), // Gravity = Gravity.CenterVertical, // Width = Application.GetMinRealAverage(16), // Height = Application.GetMinRealAverage(16), // UnSelectedImagePath = "Public/DeviceInfoIcon/Pm25Icon.png", //}; //environmentalView.AddChidren(btnPm25Icon); //var btnPm25Values = new Button() //{ // X = btnPm25Icon.Right + Application.GetRealWidth(4), // Width = Application.GetRealWidth(30), // Gravity = Gravity.CenterVertical, // TextColor = CSS_Color.MainBackgroundColor, // TextSize = CSS_FontSize.PromptFontSize_FirstLevel, // Text = "--", // TextAlignment = TextAlignment.CenterLeft, // Tag = "Pm25Values" //}; //environmentalView.AddChidren(btnPm25Values); //roomView.AddChidren(environmentalView); #endregion var roomViewbgColor = new Button() { Height = Application.GetRealWidth(192), Radius = (uint)Application.GetRealWidth(12), BackgroundColor = 0x19333333, }; roomView.AddChidren(roomViewbgColor); var btnAllClose = new Button() { X = Application.GetRealWidth(282), Y = Application.GetRealWidth(126), Width = Application.GetMinRealAverage(48), Height = Application.GetMinRealAverage(48), UnSelectedImagePath = "Classification/Room/AllCloseIcon.png", Tag = "AllClose", Visible = false }; roomView.AddChidren(btnAllClose); LoadEvent_CloseAllFunction(btnAllClose, room); //var btn = new Button() //{ // Y = Application.GetRealWidth(192), // Height = Application.GetRealWidth(20), // BackgroundColor = CSS_Color.MainBackgroundColor, //}; //roomView.AddChidren(btn); roomViewbgColor.MouseUpEventHandler += (sender, e) => { Action ReloadRoomName = () => { btnFloorAndRoomName.Text = room.floorName + room.roomName; }; //房间删除事件 Action deleteAction = () => { roomView.RemoveFromParent(); }; //房间背景图修改事件回调 Action modifyImageAction = () => { //roomViewbg.ImagePath = room.backgroundImage; ImageUtlis.Current.LoadLocalOrNetworkImages(room.backgroundImage, roomViewbg); }; var view = new RoomPage(room, ReloadRoomName, deleteAction, modifyImageAction); MainPage.BasePageView.AddChidren(view); view.LoadPage(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; } /// /// 记载小图房间row /// void LoadSmallPirtureRoomRow(FrameLayout roomView, Room room) { roomView.RemoveAll(); roomFloorChangeView.BackgroundColor = roomListView.BackgroundColor = CSS_Color.BackgroundColor; roomView.BackgroundColor = CSS_Color.BackgroundColor; //roomView.BackgroundColor = CSS_Color.MainBackgroundColor; var viewbg = new Button() { Width = Application.GetRealWidth(343), Height = Application.GetRealWidth(70), Radius = (uint)Application.GetRealWidth(12), BackgroundColor = CSS_Color.MainBackgroundColor, }; roomView.AddChidren(viewbg); var btnRoomName = new Button() { X = Application.GetRealWidth(16), //Y = Application.GetRealHeight(12 - 2), Width = Application.GetRealWidth(266), Height = Application.GetRealHeight(52), Text = room.roomName, TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, }; roomView.AddChidren(btnRoomName); var btnFloorName = new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealHeight(19), Width = Application.GetRealWidth(266), Height = Application.GetRealHeight(46), Text = room.floorName, TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, }; roomView.AddChidren(btnFloorName); var roomViewbg = new ImageView() { Width = Application.GetRealWidth(343), Height = Application.GetRealWidth(70), Radius = (uint)Application.GetRealWidth(12), }; roomView.AddChidren(roomViewbg); var btnAllClose = new Button() { X = Application.GetRealWidth(278), Y = Application.GetRealWidth(15), Width = Application.GetMinRealAverage(50), Height = Application.GetMinRealAverage(50), UnSelectedImagePath = "Classification/Room/AllCloseIcon2.png", Tag = "AllClose", Visible = false }; roomView.AddChidren(btnAllClose); LoadEvent_CloseAllFunction(btnAllClose, room); //var btn = new Button() //{ // Y = Application.GetRealWidth(70), // Height = Application.GetRealWidth(20), // BackgroundColor = CSS_Color.BackgroundColor, //}; //roomView.AddChidren(btn); roomViewbg.MouseUpEventHandler += (sender, e) => { Action ReloadRoomName = () => { btnFloorName.Text = room.floorName; btnRoomName.Text = room.roomName; }; //房间删除事件 Action deleteAction = () => { roomView.RemoveFromParent(); }; Action action = () => { }; var view = new RoomPage(room, ReloadRoomName, deleteAction, action); MainPage.BasePageView.AddChidren(view); view.LoadPage(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; } /// /// 加载功能列表界面 /// void LoadFunctionPageView () { functionsPageView = new VerticalScrolViewLayout() { BackgroundColor = CSS_Color.BackgroundColor, Height = Application.GetRealHeight(667 - 64 - 49 + 20), }; contentPageView.AddChidren(functionsPageView); this.RefreshFunctionView(); } FrameLayout functionContentView; /// /// 显示功能列表界面 /// void RefreshFunctionView() { #region //functionsPageView = new VerticalScrolViewLayout() //{ // BackgroundColor = CSS_Color.BackgroundColor, // Height = Application.GetRealHeight(667 - 64 - 49 + 20), //}; //contentPageView.AddChidren(functionsPageView); //FrameLayout functionContentView; functionContentView = new FrameLayout() { Y = Application.GetRealHeight(16), Height = Application.GetRealHeight(667 - 64 - 49 + 20), }; functionsPageView.AddChidren(functionContentView); int index = 0; List specialList = new List() { 1, 2, 5, 6, 9, 10, 13, 14, 17, 18, 21, 22 }; var s1View = new FrameLayout() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(164), }; functionContentView.AddChidren(s1View); var s2View = new FrameLayout() { X = Application.GetRealWidth(196), Width = Application.GetRealWidth(164), }; functionContentView.AddChidren(s2View); var lastY1 = Application.GetRealWidth(16); var lastY2 = Application.GetRealWidth(16); var functionContentViewHeight = Application.GetRealWidth(16); foreach (var item in DB_ResidenceData.Instance.ShowFunctionTypeList) { int functionCount = 0; int functionOnCount = 0; switch (item) { case ShowFunction.Light: #region Light functionCount = FunctionList.List.GetLightList().Count; functionOnCount = FunctionList.List.GetLightList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; #endregion break; case ShowFunction.AC: #region AC functionCount = FunctionList.List.GetAcList().Count; functionOnCount = FunctionList.List.GetAcList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; #endregion break; case ShowFunction.Curtain: #region Curtain functionCount = FunctionList.List.GetCurtainList().Count; functionOnCount = FunctionList.List.GetCurtainList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; #endregion break; case ShowFunction.FloorHeating: #region 地热 functionCount = FunctionList.List.GetFloorHeatingList().Count; functionOnCount = FunctionList.List.GetFloorHeatingList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; #endregion break; case ShowFunction.FreshAir: functionCount = FunctionList.List.GetAirFreshList().Count; functionOnCount = FunctionList.List.GetAirFreshList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; break; } if (functionCount == 0) { continue; } FrameLayout functionView = new FrameLayout() { Height = Application.GetRealWidth(161), Radius = (uint)Application.GetRealWidth(6), BackgroundColor = CSS_Color.MainBackgroundColor, Tag = item + "_View", Y = index % 2 == 1 ? lastY2 : lastY1 }; //高度稍高的view if (specialList.Contains(index)) { functionView.Height = Application.GetRealWidth(204); } if (index % 2 == 1) { lastY2 += functionView.Height + Application.GetRealWidth(16); } else { lastY1 += functionView.Height + Application.GetRealWidth(16); } if (index % 2 == 0) { s1View.AddChidren(functionView); } else { s2View.AddChidren(functionView); } functionContentViewHeight = functionView.Bottom; Button btnName = new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealHeight(14), Width = Application.GetRealWidth(140), Height = Application.GetRealHeight(24), TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, TextAlignment = TextAlignment.CenterLeft, IsMoreLines = true, }; functionView.AddChidren(btnName); if (item != ShowFunction.FreshAir && functionCount != 0) { Button btnFunctionCount = new Button() { X = Application.GetRealWidth(17) + Application.GetRealWidth(7 * functionCount.ToString().Length), Y = btnName.Bottom, Width = Application.GetRealWidth(120), Height = Application.GetRealHeight(24), TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, TextAlignment = TextAlignment.CenterLeft, Text = "/" + functionCount, }; } Button btnFunctionViewBg; btnFunctionViewBg = new Button() { Height = Application.GetRealWidth(161), UnSelectedImagePath = "FunctionIcon/FunctionBg/" + item + "FunctionBg.png", }; functionView.AddChidren(btnFunctionViewBg); int functionPageTitleId = 0; switch (item) { case ShowFunction.Light: #region Light btnName.TextID = StringId.Lights; Button btnLightPower = new Button() { X = Application.GetRealWidth(120), Y = specialList.Contains(index) ? Application.GetRealWidth(160) : Application.GetRealWidth(117), Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), SelectedImagePath = "Public/PowerOpen.png", UnSelectedImagePath = "Public/PowerClose.png", IsSelected = functionOnCount > 0, Tag = item + "_AllControl", }; functionView.AddChidren(btnLightPower); btnLightPower.MouseUpEventHandler = (sender, e) => { LoadEvent_SwitchFunction(btnLightPower, item, functionView); }; functionPageTitleId = StringId.Lights; #endregion break; case ShowFunction.AC: #region AC btnName.TextID = StringId.AC; Button btnAcPower = new Button() { X = Application.GetRealWidth(120), Y = specialList.Contains(index) ? Application.GetRealWidth(160) : Application.GetRealWidth(117), Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), SelectedImagePath = "Public/PowerOpen.png", UnSelectedImagePath = "Public/PowerClose.png", Tag = item + "_AllControl", IsSelected = functionOnCount > 0, }; functionView.AddChidren(btnAcPower); btnAcPower.MouseUpEventHandler = (sender, e) => { LoadEvent_SwitchFunction(btnAcPower, item, functionView); }; functionPageTitleId = StringId.AC; #endregion break; case ShowFunction.Curtain: #region Curtain btnName.TextID = StringId.Curtain; Button btnClose; btnClose = new Button() { X = Application.GetRealWidth(72), Y = specialList.Contains(index) ? Application.GetRealWidth(160) : Application.GetRealWidth(117), Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), UnSelectedImagePath = "FunctionIcon/Curtain/CurtainCloseIcon.png", SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseOnIcon.png", IsSelected = !DB_ResidenceData.Instance.GlobalCurtainStatus, }; functionView.AddChidren(btnClose); Button btnOpen; btnOpen = new Button() { X = Application.GetRealWidth(120), Y = specialList.Contains(index) ? Application.GetRealWidth(160) : Application.GetRealWidth(117), Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), UnSelectedImagePath = "FunctionIcon/Curtain/CurtainOpenIcon.png", SelectedImagePath = "FunctionIcon/Curtain/CurtainOpenOnIcon.png", IsSelected = DB_ResidenceData.Instance.GlobalCurtainStatus, }; functionView.AddChidren(btnOpen); LoadEvent_CurtainSwitch(btnClose, btnOpen, functionView); functionPageTitleId = StringId.Curtain; #endregion break; case ShowFunction.FloorHeating: #region 地热 btnName.TextID = StringId.FloorHeating; Button btnFhPower = new Button() { X = Application.GetRealWidth(120), Y = specialList.Contains(index) ? Application.GetRealWidth(160) : Application.GetRealWidth(117), Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), SelectedImagePath = "Public/PowerOpen.png", UnSelectedImagePath = "Public/PowerClose.png", Tag = item + "_AllControl", IsSelected = functionOnCount > 0 }; functionView.AddChidren(btnFhPower); btnFhPower.MouseUpEventHandler = (sender, e) => { LoadEvent_SwitchFunction(btnFhPower, item, functionView); }; functionPageTitleId = StringId.FloorHeating; #endregion break; case ShowFunction.FreshAir: btnName.TextID = StringId.FreshAir; #region Light Button btnFreshAirPower = new Button() { X = Application.GetRealWidth(120), Y = specialList.Contains(index) ? Application.GetRealWidth(160) : Application.GetRealWidth(117), Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), SelectedImagePath = "Public/PowerOpen.png", UnSelectedImagePath = "Public/PowerClose.png", IsSelected = functionOnCount > 0, Tag = item + "_AllControl", }; functionView.AddChidren(btnFreshAirPower); btnFreshAirPower.MouseUpEventHandler = (sender, e) => { LoadEvent_SwitchFunction(btnFreshAirPower, item, functionView); }; functionPageTitleId = StringId.FreshAir; #endregion break; } index++; } s1View.Height = s2View.Height = functionContentView.Height = functionContentViewHeight + Application.GetRealWidth(40); #endregion } void refreshInverterInfo(Button btnPowerTenerationToday, Button btnWorkingMode, Button btnCurrentPowerGeneration) { new System.Threading.Thread(() => { var http = new HttpServerRequest(); var pack = http.GetInverterStatisticsInfo(); if (pack != null) { if(pack.Data == null) { return; } var info = JsonConvert.DeserializeObject(pack.Data?.ToString()); if (info == null) { return; } try { Application.RunOnMainThread(() => { btnPowerTenerationToday.Text = info.totalElectricityPvToday + "kW·h";// Language.StringByID(StringId.PowerTenerationToday).Replace("----", info.totalElectricityPvToday); string workModeString = ""; if (Language.CurrentLanguage == "Chinese") { switch (info.workMode) { case "self_use": workModeString = "自发自用"; break; case "peak_load_shifting": workModeString = "削峰填谷"; break; case "battery_priority": workModeString = "电池优先"; break; } } else { switch (info.workMode) { case "self_use": workModeString = "Self Consume"; break; case "peak_load_shifting": workModeString = "Peak Shift"; break; case "battery_priority": workModeString = "Battery Priority"; break; } } btnWorkingMode.Text = workModeString;// Language.StringByID(StringId.WorkingMode).Replace("----", workModeString); btnCurrentPowerGeneration.Text = info.powerPvNow + "w";// Language.StringByID(StringId.CurrentPowerGeneration).Replace("----", info.powerPvNow); //btnBatterySOC.Text = Language.StringByID(StringId.BatterySOC).Replace("--", info.batterySoc); }); } catch (Exception ex) { MainPage.Log($"获取家庭光伏统计数据异常:{ex.Message}"); } } }) { IsBackground = true }.Start(); } #region 切换楼层 /// /// 楼层显示切换 /// void LoadDialog_ChangeFloor() { EventHandler eventHandler = (sender, e) => { var dialog = new Dialog(); var dialogBody = new FrameLayout(); dialog.AddChidren(dialogBody); dialogBody.MouseUpEventHandler += (sender1, e1) => { dialog.Close(); }; var dispalyView = new FrameLayout() { X = Application.GetRealWidth(10), Y = Application.GetRealHeight(100), Width = Application.GetRealWidth(160), Height = Application.GetRealHeight(110), BackgroundImagePath = "PersonalCenter/HomeList1bg.png", }; dialogBody.AddChidren(dispalyView); var contentView = new VerticalScrolViewLayout() { X = Application.GetRealWidth(8), Y = Application.GetRealHeight(15), Width = Application.GetRealWidth(150), Height = Application.GetRealHeight(45 * 2), ScrollEnabled = false }; dispalyView.AddChidren(contentView); if (SpatialInfo.CurrentSpatial.FloorList.Count < 2) { } else if (SpatialInfo.CurrentSpatial.FloorList.Count < 3) { dispalyView = new FrameLayout() { X = Application.GetRealWidth(10), Y = Application.GetRealHeight(100), Width = Application.GetRealWidth(160), Height = Application.GetRealHeight(155), BackgroundImagePath = "PersonalCenter/HomeList2bg.png", }; dialogBody.AddChidren(dispalyView); contentView.Height = Application.GetRealHeight(45 * 3); dispalyView.AddChidren(contentView); } else if (SpatialInfo.CurrentSpatial.FloorList.Count < 4) { dispalyView = new FrameLayout() { X = Application.GetRealWidth(10), Y = Application.GetRealHeight(100), Width = Application.GetRealWidth(160), Height = Application.GetRealHeight(200), BackgroundImagePath = "PersonalCenter/HomeList3bg.png", }; dialogBody.AddChidren(dispalyView); contentView.Height = Application.GetRealHeight(45 * 4); dispalyView.AddChidren(contentView); } else { dispalyView = new FrameLayout() { X = Application.GetRealWidth(10), Y = Application.GetRealHeight(100), Width = Application.GetRealWidth(160), Height = Application.GetRealHeight(245), BackgroundImagePath = "PersonalCenter/HomeList4bg.png", }; dialogBody.AddChidren(dispalyView); contentView.Height = Application.GetRealHeight(45 * 5); contentView.ScrollEnabled = true; dispalyView.AddChidren(contentView); } List chooseList = new List(); chooseList.Add(new SpatialInfo() { roomId = "", roomName = Language.StringByID(StringId.All) }); foreach (var f in SpatialInfo.CurrentSpatial.FloorList) { chooseList.Add(f); } foreach (var floor in chooseList) { if (!string.IsNullOrEmpty( floor.roomId)) { //---分割线 contentView.AddChidren(new Button() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(112), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.BackgroundColor }); } var btnHomeName = new Button() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(112), Height = Application.GetRealHeight(44), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, SelectedTextColor = CSS_Color.MainColor, Text = floor.roomName, TextSize = CSS_FontSize.SubheadingFontSize, IsSelected = floor.roomId == DB_ResidenceData.Instance.ClassificationChooseFloor.roomId, //IsMoreLines = true, }; contentView.AddChidren(btnHomeName); btnHomeName.MouseUpEventHandler += (senderH, en) => { dialog.Close(); btnFloor.Text = floor.roomName; DB_ResidenceData.Instance.ClassificationChooseFloor = floor; roomsShowed.Clear(); if (string.IsNullOrEmpty(floor.roomId)) { roomsShowed.AddRange(SpatialInfo.CurrentSpatial.RoomList); } else { foreach (var room in SpatialInfo.CurrentSpatial.RoomList) { if (room.parentId == floor.uid) { roomsShowed.Add(room); } } } LoadRoomRows(); }; } dialog.Show(); }; btnFloor.MouseUpEventHandler = eventHandler; btnFloorDownIcon.MouseUpEventHandler = eventHandler; } void LoadEvent_ChangeFloorDisplay() { } #endregion } }