| | |
| | | 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 |
| | |
| | | var lastY2 = Application.GetRealWidth(16); |
| | | var functionContentViewHeight = Application.GetRealWidth(16); |
| | | |
| | | var functionCategoryCount = 0; |
| | | |
| | | foreach (var item in DB_ResidenceData.Instance.functionTypeList) |
| | | { |
| | | int functionCount = 0; |
| | |
| | | #endregion |
| | | break; |
| | | case ShowFunction.DoorLock: |
| | | functionCount = FunctionList.List.GetDoorLockList().Count; |
| | | functionOnCount = 1; |
| | | break; |
| | | case ShowFunction.Electric: |
| | | #region 电器 |
| | |
| | | // functionCount = 1; |
| | | //} |
| | | break; |
| | | case ShowFunction.Acst: |
| | | functionCount = FunctionList.List.GetAcstParentList().Count; |
| | | functionOnCount = FunctionList.List.GetAcstParentList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; |
| | | break; |
| | | |
| | | |
| | | } |
| | | |
| | | if(functionCount == 0) |
| | | if (functionCount == 0) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | functionCategoryCount++; |
| | | |
| | | FrameLayout functionView = new FrameLayout() |
| | | { |
| | |
| | | if (item != ShowFunction.Environmental && item != ShowFunction.Sensor && item != ShowFunction.VideoIntercom |
| | | && item != ShowFunction.SecurityMonitoring && item != ShowFunction.FreshAir && item != ShowFunction.Music |
| | | && item != ShowFunction.EnergyMonitoring && item != ShowFunction.SecurityCenter |
| | | && item != ShowFunction.Acst |
| | | && functionCount != 0) |
| | | { |
| | | Button btnFunctionCount = new Button() |
| | |
| | | break; |
| | | case ShowFunction.DoorLock: |
| | | btnName.TextID = StringId.DoorLock; |
| | | btnFunctionViewBg.MouseUpEventHandler = (sende, e) => |
| | | { |
| | | var form = new DoorLockListPage(); |
| | | form.AddForm(FunctionList.List.GetDoorLockList()); |
| | | }; |
| | | break; |
| | | case ShowFunction.Electric: |
| | | #region 电器 |
| | |
| | | case ShowFunction.EnergyMonitoring: |
| | | #region 能源监测 |
| | | btnName.TextID = StringId.EnergyMonitoring; |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => { |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | var skipView = new EnergyMainPage(); |
| | | MainPage.BasePageView.AddChidren(skipView); |
| | | skipView.LoadPage(); |
| | |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | break; |
| | | case ShowFunction.Acst: |
| | | btnName.TextID = StringId.Acst; |
| | | |
| | | Button btnJMLogo = new Button() |
| | | { |
| | | Y = specialList.Contains(index) ? Application.GetRealWidth(147) : Application.GetRealWidth(104), |
| | | UnSelectedImagePath = "FunctionIcon/Acst/LvJianLogo.png", |
| | | Width = Application.GetRealWidth(105), |
| | | Height = Application.GetRealWidth(57), |
| | | }; |
| | | functionView.AddChidren(btnJMLogo); |
| | | |
| | | Button btnAcstPower = 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(btnAcstPower); |
| | | btnAcstPower.MouseUpEventHandler = (sender, e) => { |
| | | btnAcstPower.IsSelected = !btnAcstPower.IsSelected; |
| | | string onoff = btnAcstPower.IsSelected ? "on":"off"; |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.OnOff, onoff); |
| | | |
| | | foreach (var temp in FunctionList.List.GetAcstParentList()) |
| | | { |
| | | Control.Ins.SendWriteCommand(temp, d); |
| | | } |
| | | }; |
| | | |
| | | |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => { |
| | | var page = new AcstParentPage(); |
| | | MainPage.BasePageView.AddChidren(page); |
| | | page.LoadPage(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | break; |
| | | |
| | | |
| | | } |
| | | //界面跳转--音乐跳转自己的界面--环境跳转自己的界面 |
| | | if (item != ShowFunction.Music && item != ShowFunction.Environmental && item != ShowFunction.SecurityMonitoring |
| | | && ShowFunction.EnergyMonitoring!= item && ShowFunction.VideoIntercom != item && ShowFunction.SecurityCenter != item) |
| | | if (item != ShowFunction.Music && item != ShowFunction.Environmental && item != ShowFunction.SecurityMonitoring && item != ShowFunction.DoorLock |
| | | && ShowFunction.EnergyMonitoring!= item && ShowFunction.VideoIntercom != item && ShowFunction.SecurityCenter != item |
| | | && ShowFunction.Acst != item) |
| | | { |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => |
| | | { |
| | |
| | | index++; |
| | | } |
| | | |
| | | //if (functionCategoryCount > 4) |
| | | |
| | | //光伏数据 |
| | | if (FunctionList.List.InverterList().Count > 0 ) |
| | | { |
| | | //functionContentView.Height = functionContentViewHeight;// Application.GetRealWidth((240 * (functionCategoryCount / 2))); |
| | | s1View.Height = s2View.Height = functionContentView.Height = functionContentViewHeight+ Application.GetRealWidth(40); |
| | | FrameLayout inverterListView = new FrameLayout() |
| | | { |
| | | Height = Application.GetRealHeight(204), |
| | | Radius = (uint)Application.GetRealWidth(6), |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | | Tag = "inverterList_View", |
| | | Y = index % 2 == 1 ? lastY2 : lastY1 |
| | | }; |
| | | if (index % 2 == 1) |
| | | { |
| | | lastY2 += inverterListView.Height + Application.GetRealWidth(16); |
| | | } |
| | | else |
| | | { |
| | | lastY1 += inverterListView.Height + Application.GetRealWidth(16); |
| | | } |
| | | |
| | | if (index % 2 == 0) |
| | | { |
| | | s1View.AddChidren(inverterListView); |
| | | } |
| | | else |
| | | { |
| | | s2View.AddChidren(inverterListView); |
| | | } |
| | | functionContentViewHeight = inverterListView.Bottom; |
| | | |
| | | |
| | | Button btnName = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = Application.GetRealHeight(16),//14),// |
| | | Width = Application.GetRealWidth(140), |
| | | Height = Application.GetRealHeight(20), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | IsMoreLines = true, |
| | | TextID = StringId.PhotovoltaicEnergyStorage, |
| | | IsBold = true, |
| | | }; |
| | | inverterListView.AddChidren(btnName); |
| | | |
| | | |
| | | Button btnFunctionCount = new Button() |
| | | { |
| | | X = Application.GetRealWidth(17) + Application.GetRealWidth(7 * FunctionList.List.InverterList().Count.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 = "/" + FunctionList.List.InverterList().Count, |
| | | }; |
| | | inverterListView.AddChidren(btnFunctionCount); |
| | | Button btnOpenCount = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnName.Bottom, |
| | | Width = Application.GetRealWidth(14 * FunctionList.List.InverterList().Count.ToString().Length), |
| | | Height = Application.GetRealHeight(24), |
| | | TextColor = CSS_Color.MainColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Text = FunctionList.List.InverterList().FindAll((temp)=>temp.trait_on_off.curValue.ToString() == "on").Count.ToString(), |
| | | Tag = "inverter_onCount", |
| | | BorderWidth = 0, |
| | | }; |
| | | inverterListView.AddChidren(btnOpenCount); |
| | | |
| | | //Button btnWorkStatus = new Button() |
| | | //{ |
| | | // Y = Application.GetRealHeight(24), |
| | | // Width = Application.GetRealWidth(148), |
| | | // Height = Application.GetRealHeight(18), |
| | | // TextAlignment = TextAlignment.CenterRight, |
| | | // TextColor = 0xFF0BAF31, |
| | | // TextID = StringId.NormalOperation, |
| | | // TextSize = CSS_FontSize.TextFontSize |
| | | //}; |
| | | //inverterListView.AddChidren(btnWorkStatus); |
| | | |
| | | Button btnWorkingMode = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnOpenCount.Bottom,// + Application.GetRealHeight(16), |
| | | Width = Application.GetRealWidth(148), |
| | | Height = Application.GetRealHeight(18), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextID = StringId.WorkingMode, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | }; |
| | | inverterListView.AddChidren(btnWorkingMode); |
| | | |
| | | Button btnPowerTenerationToday = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnWorkingMode.Bottom, |
| | | Width = Application.GetRealWidth(148), |
| | | Height = Application.GetRealHeight(21), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextID = StringId.PowerTenerationToday, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | }; |
| | | inverterListView.AddChidren(btnPowerTenerationToday); |
| | | |
| | | |
| | | Button btnCurrentPowerGeneration = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnPowerTenerationToday.Bottom, |
| | | Width = Application.GetRealWidth(148), |
| | | Height = Application.GetRealHeight(21), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextID = StringId.CurrentPowerGeneration, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | }; |
| | | inverterListView.AddChidren(btnCurrentPowerGeneration); |
| | | |
| | | Button btnBatterySOC = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnCurrentPowerGeneration.Bottom, |
| | | Width = Application.GetRealWidth(148), |
| | | Height = Application.GetRealHeight(18), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextID = StringId.BatterySOC, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | }; |
| | | inverterListView.AddChidren(btnBatterySOC); |
| | | |
| | | //Button btnOperationDataTotalData = new Button() |
| | | //{ |
| | | // X = Application.GetRealWidth(16), |
| | | // Y = btnBatterySOC.Bottom + Application.GetRealHeight(16), |
| | | // Width = Application.GetRealWidth(148), |
| | | // Height = Application.GetRealHeight(18), |
| | | // TextColor = CSS_Color.FirstLevelTitleColor, |
| | | // TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | // TextID = StringId.OperationDataTotalData, |
| | | // TextAlignment = TextAlignment.CenterLeft, |
| | | //}; |
| | | //inverterListView.AddChidren(btnOperationDataTotalData); |
| | | |
| | | var clickButton = new Button(); |
| | | inverterListView.AddChidren(clickButton); |
| | | |
| | | clickButton.MouseUpEventHandler = (sender2, e2) => |
| | | { |
| | | var h5BasePage = new FrameLayout() { |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | | }; |
| | | |
| | | #if __Android__ |
| | | //适配安卓沉浸式导航栏 |
| | | h5BasePage.Y = Application.GetRealHeight(16); |
| | | h5BasePage.Height = Application.GetRealHeight(651); |
| | | #endif |
| | | MainPage.BasePageView.AddChidren(h5BasePage); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | |
| | | h5BasePage.AddChidren(Inverter.Ins.H5Page);//000 |
| | | string lz = "zh"; |
| | | if(Language.CurrentLanguage != "Chinese") |
| | | { |
| | | lz = "en"; |
| | | } |
| | | string url = $"h5/index.html?homeId={DB_ResidenceData.Instance.CurrentRegion.id}&token={UserInfo.Current.AccessToken}&refresh_token={UserInfo.Current.RefreshToken}&url={HttpUtil.GlobalRequestHttpsHost}&lang={lz}"; |
| | | Inverter.Ins.ShowWebviewFormUrl(url); |
| | | Inverter.Ins.H5Page.JSToNativeAction = (dictionary) => |
| | | { |
| | | JObject jObj = JObject.Parse(Newtonsoft.Json.JsonConvert.SerializeObject(dictionary)); |
| | | |
| | | if (!jObj.ContainsKey("method") || !jObj.ContainsKey("data")) |
| | | { |
| | | return; |
| | | } |
| | | if (jObj["method"].ToString() == "control" && jObj["data"].Type == JTokenType.Object) |
| | | {//控制 |
| | | var data = JObject.FromObject(jObj["data"]); |
| | | |
| | | if (!data.ContainsKey("sid") || !data.ContainsKey("on_off")) |
| | | { |
| | | return; |
| | | } |
| | | var function = new Function(); |
| | | function.sid = data["sid"].ToString(); |
| | | var inObj = FunctionList.List.InverterList().Find((obj) => obj.sid == function.sid); |
| | | if (inObj == null) |
| | | { |
| | | return; |
| | | } |
| | | function.deviceId = inObj.deviceId; |
| | | //function.spk = inObj.spk; |
| | | |
| | | var status = new Dictionary<string, string>() { ["on_off"] = data["on_off"].ToString() }; |
| | | Control.Ins.SendWriteCommand(function, status); |
| | | } |
| | | else if (jObj["method"].ToString() == "back") |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | h5BasePage.RemoveFromParent(); |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | |
| | | |
| | | }; |
| | | |
| | | new System.Threading.Thread(() => { |
| | | var http = new HttpServerRequest(); |
| | | var pack = http.GetInverterStatisticsInfo(); |
| | | if (pack != null) |
| | | { |
| | | var info = JsonConvert.DeserializeObject<StatisticsInfo>(pack.Data.ToString()); |
| | | if (info != null) |
| | | { |
| | | try |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnPowerTenerationToday.Text = Language.StringByID(StringId.PowerTenerationToday).Replace("----", info.totalElectricityPvToday); |
| | | btnWorkingMode.Text = Language.StringByID(StringId.WorkingMode).Replace("----", info.workMode); |
| | | btnCurrentPowerGeneration.Text = 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(); |
| | | |
| | | index++; |
| | | } |
| | | |
| | | #endregion |
| | | s1View.Height = s2View.Height = functionContentView.Height = functionContentViewHeight + Application.GetRealWidth(40); |
| | | |
| | | #endregion |
| | | } |
| | | |
| | | #region 切换楼层 |
| | | #region 切换楼层 |
| | | /// <summary> |
| | | /// 楼层显示切换 |
| | | /// </summary> |
| | |
| | | |
| | | foreach (var floor in chooseList) |
| | | { |
| | | if (!string.IsNullOrEmpty( floor.roomId))// != Language.StringByID(StringId.All)) |
| | | if (!string.IsNullOrEmpty( floor.roomId)) |
| | | { |
| | | //---分割线 |
| | | contentView.AddChidren(new Button() |
| | |
| | | { |
| | | |
| | | } |
| | | #endregion |
| | | #endregion |
| | | } |
| | | } |