| | |
| | | using HDL_ON.Entity; |
| | | using HDL_ON.UI; |
| | | using HDL_ON.UI.CSS; |
| | | using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Linq; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.UI |
| | | { |
| | | /// <summary> |
| | | /// 分类界面 |
| | | /// </summary> |
| | | public partial class ClassificationPage : FrameLayout |
| | | { |
| | | |
| | |
| | | #region top |
| | | FrameLayout topView = new FrameLayout() |
| | | { |
| | | Height = Application.GetRealHeight(64), |
| | | Height = Application.GetRealHeight(74), |
| | | BackgroundColor = CSS_Color.TopViewColor, |
| | | }; |
| | | bodyView.AddChidren(topView); |
| | | |
| | | btnRoomTilte = new Button() |
| | | { |
| | | Y = Application.GetRealHeight(30), |
| | | Y = Application.GetRealHeight(40), |
| | | Width = Application.GetRealWidth(170), |
| | | Height = Application.GetRealHeight(25), |
| | | TextAlignment = TextAlignment.CenterRight, |
| | |
| | | btnFuncTitle = new Button() |
| | | { |
| | | X = Application.GetRealWidth(209), |
| | | Y = Application.GetRealHeight(30), |
| | | Y = Application.GetRealHeight(40), |
| | | Width = Application.GetRealWidth(170), |
| | | Height = Application.GetRealHeight(25), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | |
| | | |
| | | contentPageView = new PageLayout() |
| | | { |
| | | Y = Application.GetRealHeight(64), |
| | | Height = Application.GetRealHeight(667 - 64 - 49 + 30), |
| | | Y = Application.GetRealHeight(74), |
| | | Height = Application.GetRealHeight(667 - 74 - 49 + 30), |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | | IsShowPoint = false |
| | | }; |
| | |
| | | }; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加载功能列表界面 |
| | | /// </summary> |
| | | void LoadFunctionPageView() |
| | | void LoadFunctionPageView () |
| | | { |
| | | #region |
| | | functionsPageView = new VerticalScrolViewLayout() |
| | | { |
| | | BackgroundColor = CSS_Color.BackgroundColor, |
| | | Height = Application.GetRealHeight(667 - 64 - 49 + 20), |
| | | }; |
| | | contentPageView.AddChidren(functionsPageView); |
| | | this.RefreshFunctionView(); |
| | | |
| | | FrameLayout functionContentView; |
| | | } |
| | | FrameLayout functionContentView; |
| | | /// <summary> |
| | | /// 显示功能列表界面 |
| | | /// </summary> |
| | | 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), |
| | |
| | | int functionOnCount = 0; |
| | | switch (item) |
| | | { |
| | | case ShowFunction.Series: |
| | | functionCount = FunctionList.List.GetSeries().Count; |
| | | //functionOnCount = FunctionList.List.GetSeries().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; |
| | | break; |
| | | case ShowFunction.IpCam: |
| | | functionCount = FunctionList.List.GetIpCamImouList().Count; |
| | | //functionCount = FunctionList.List.GetIpCamImouList().Count; |
| | | break; |
| | | case ShowFunction.MechanicalArm: |
| | | functionCount = FunctionList.List.GetMechanicalArmList().Count; |
| | |
| | | break; |
| | | case ShowFunction.Electric: |
| | | #region 电器 |
| | | |
| | | functionCount = FunctionList.List.GetElectricals().Count; |
| | | functionOnCount = FunctionList.List.GetElectricals().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; |
| | | functionOnCount = FunctionList.List.GetElectricals().FindAll((obj) => obj.spk!=SPK.ElectricalTvHisense&&obj.trait_on_off.curValue.ToString() == "on").Count; |
| | | //#if DEBUG |
| | | // functionCount = 1; |
| | | //#endif |
| | | #endregion |
| | | break; |
| | | case ShowFunction.EnergyMonitoring: |
| | |
| | | case ShowFunction.SecurityMonitoring: |
| | | if (!MainPage.NoLoginMode) |
| | | { |
| | | functionCount = 1; |
| | | if (OnAppConfig.Instance.RequestHttpsHost.Contains("bahrain") || !Common.ApiUtlis.Ins.hadInternet) |
| | | { |
| | | functionCount = 0; |
| | | } |
| | | else |
| | | { |
| | | functionCount = FunctionList.List.GetEzMonitorList().Count; |
| | | } |
| | | } |
| | | break; |
| | | case ShowFunction.Sensor: |
| | | functionCount = FunctionList.List.GetArmSensorList().Count; |
| | | break; |
| | | case ShowFunction.VideoIntercom: |
| | | if (FunctionList.List.videoIntercom != null && FunctionList.List.videoIntercom.Count > 0) |
| | | { |
| | | functionCount = 1; |
| | | } |
| | | break; |
| | | case ShowFunction.SecurityCenter: |
| | | functionCount = FunctionList.List.securities.Count; |
| | | //if (DB_ResidenceData.Instance.GatewayType == 1) |
| | | //{ |
| | | // 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; |
| | | case ShowFunction.VideoDoorLock: |
| | | if (Common.ApiUtlis.Ins.hadInternet) |
| | | { |
| | | functionCount = FunctionList.List.GetVideoDoorLockList().Count; |
| | | functionOnCount = FunctionList.List.GetAcstParentList().FindAll((obj) => obj.GetAttrState("status").ToString() == "open" |
| | | || obj.GetAttrState("status").ToString() == "normal_open").Count; |
| | | } |
| | | else |
| | | { |
| | | functionCount = 0; |
| | | } |
| | | break; |
| | | case ShowFunction.Aks: |
| | | functionCount = FunctionList.List.GetVideoControlsList().Count; |
| | | functionOnCount = 1; |
| | | break; |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | if (functionCount == 0) |
| | |
| | | }; |
| | | functionView.AddChidren(btnName); |
| | | |
| | | if (item != ShowFunction.Environmental && item != ShowFunction.Sensor |
| | | && item != ShowFunction.SecurityMonitoring && item != ShowFunction.FreshAir && item != ShowFunction.Music |
| | | && item != ShowFunction.EnergyMonitoring && item != ShowFunction.SecurityCenter |
| | | && item != ShowFunction.IpCam |
| | | //不需要显示设备开状态数量; |
| | | Button btnFunctionCount=null; |
| | | if (item != ShowFunction.Aks |
| | | && item != ShowFunction.VideoDoorLock |
| | | && 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 && item != ShowFunction.IpCam |
| | | && functionCount != 0) |
| | | { |
| | | Button btnFunctionCount = new Button() |
| | | btnFunctionCount = new Button() |
| | | { |
| | | X = Application.GetRealWidth(17) + Application.GetRealWidth(7 * functionCount.ToString().Length), |
| | | Y = btnName.Bottom, |
| | |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Text = "/" + functionCount, |
| | | }; |
| | | functionView.AddChidren(btnFunctionCount); |
| | | Button btnOpenCount = new Button() |
| | | if (item == ShowFunction.Series) |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnName.Bottom, |
| | | Width = Application.GetRealWidth(14 * functionCount.ToString().Length), |
| | | Height = Application.GetRealHeight(24), |
| | | TextColor = CSS_Color.MainColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Text = functionOnCount.ToString(), |
| | | Tag = item + "_onCount", |
| | | BorderWidth = 0, |
| | | }; |
| | | functionView.AddChidren(btnOpenCount); |
| | | btnFunctionCount.Text = functionCount.ToString(); |
| | | } |
| | | functionView.AddChidren(btnFunctionCount); |
| | | |
| | | if (item != ShowFunction.Series) |
| | | { |
| | | Button btnOpenCount = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnName.Bottom, |
| | | Width = Application.GetRealWidth(14 * functionCount.ToString().Length), |
| | | Height = Application.GetRealHeight(24), |
| | | TextColor = CSS_Color.MainColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Text = functionOnCount.ToString(), |
| | | Tag = item + "_onCount", |
| | | BorderWidth = 0, |
| | | }; |
| | | functionView.AddChidren(btnOpenCount); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | int functionPageTitleId = 0; |
| | | switch (item) |
| | | { |
| | | case ShowFunction.Series: |
| | | btnName.TextID = StringId.HorseRaceLamp; |
| | | functionPageTitleId = StringId.HorseRaceLamp; |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => { |
| | | var page2 = new UI2.Classification.SeriesFunctionListPage(); |
| | | MainPage.BasePageView.AddChidren(page2); |
| | | page2.LoadPage(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | break; |
| | | case ShowFunction.Light: |
| | | #region Light |
| | | btnName.TextID = StringId.Lights; |
| | |
| | | case ShowFunction.EnergyMonitoring: |
| | | #region 能源监测 |
| | | btnName.TextID = StringId.EnergyMonitoring; |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | var skipView = new EnergyMainPage(); |
| | | MainPage.BasePageView.AddChidren(skipView); |
| | | skipView.LoadPage(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | functionPageTitleId = StringId.EnergyMonitoring; |
| | | |
| | | //btnFunctionViewBg.MouseUpEventHandler = (sender, e) => |
| | | //{ |
| | | // var skipView = new EnergyMainPage(); |
| | | // MainPage.BasePageView.AddChidren(skipView); |
| | | // skipView.LoadPage(); |
| | | // MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | //}; |
| | | #endregion |
| | | break; |
| | | case ShowFunction.Environmental: |
| | |
| | | btnName.TextID = StringId.Sensor; |
| | | functionPageTitleId = StringId.Sensor; |
| | | break; |
| | | case ShowFunction.VideoIntercom://可视对讲 |
| | | btnName.TextID = StringId.VideoIntercom; |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | var videoMethod = new UI2.FuntionControlView.Video.VideoMethod(); |
| | | videoMethod.MianView(this); |
| | | }; |
| | | break; |
| | | case ShowFunction.SecurityCenter: |
| | | btnName.TextID = StringId.SecurityCenter; |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => |
| | |
| | | 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; |
| | | case ShowFunction.VideoDoorLock: |
| | | //萤石视频门锁 |
| | | btnName.TextID = StringId.yingshishipinmensuo; |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | var list =CommonMethod.Current.GetVideoDoorLockList(); |
| | | var form = new VideoDoorLockListPage(()=> { |
| | | UpdateBottomView(); |
| | | }); |
| | | form.AddForm(list); |
| | | }; |
| | | break; |
| | | case ShowFunction.Aks: |
| | | |
| | | btnFunctionViewBg.UnSelectedImagePath = "FunctionIcon/FunctionBg/AksFunctionBg.png"; |
| | | //埃克斯影音中控 |
| | | btnName.TextID = StringId.jiatingyingyuan; |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | var list = HDL_ON.UI.UI2.FuntionControlView.Aks.AksCommonMethod.Current.GetVideoControlsList(); |
| | | var form = new HDL_ON.UI.UI2.FuntionControlView.Aks.AksListPage(() => { |
| | | UpdateBottomView(); |
| | | }); |
| | | form.AddForm(list); |
| | | }; |
| | | break; |
| | | |
| | | } |
| | | //界面跳转--音乐跳转自己的界面--环境跳转自己的界面 |
| | | if (item != ShowFunction.Music && item != ShowFunction.Environmental && item != ShowFunction.SecurityMonitoring && item != ShowFunction.DoorLock |
| | | && ShowFunction.EnergyMonitoring != item && ShowFunction.SecurityCenter != item |
| | | ) |
| | | //界面跳转--音乐跳转自己的界面--环境跳转自己的界面--(萤石视频门锁)跳转自己的界面--埃克斯影音中控 |
| | | if (item != ShowFunction.VideoDoorLock |
| | | && item != ShowFunction.Aks |
| | | && item != ShowFunction.Music |
| | | && item != ShowFunction.Environmental |
| | | && item != ShowFunction.SecurityMonitoring |
| | | && item != ShowFunction.DoorLock |
| | | //&& ShowFunction.EnergyMonitoring != item |
| | | && ShowFunction.VideoIntercom != item |
| | | && ShowFunction.SecurityCenter != item |
| | | && ShowFunction.Series != item |
| | | && ShowFunction.Acst != item) |
| | | { |
| | | btnFunctionViewBg.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | |
| | | var skipView = new FunctionPage(); |
| | | MainPage.BasePageView.AddChidren(skipView); |
| | | skipView.LoadPage(functionPageTitleId); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | skipView.DelAction += () => |
| | | { |
| | | |
| | | UpdateBottomView(); |
| | | }; |
| | | }; |
| | | } |
| | | index++; |
| | |
| | | |
| | | s1View.Height = s2View.Height = functionContentView.Height = functionContentViewHeight + Application.GetRealWidth(40); |
| | | |
| | | #endregion |
| | | #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<StatisticsInfo>(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 切换楼层 |
| | | /// <summary> |
| | |
| | | { |
| | | |
| | | } |
| | | #endregion |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// 更新底部界面 |
| | | /// </summary> |
| | | void UpdateBottomView() |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | functionContentView?.RemoveFromParent(); |
| | | this.RefreshFunctionView(); |
| | | }); |
| | | } |
| | | } |
| | | } |