using System; using System.Collections.Generic; using HDL_ON.DAL.Server; using HDL_ON.DriverLayer; using HDL_ON.Entity; using Shared; namespace HDL_ON.UI { public partial class HomePage { /// /// 更新主页天气 /// public static void LoadEvent_RefreshAir() { if (bodyView != null) { bodyView.btnTempValues.Text = MainPage.cityInfo.temperature == null ? "--" : MainPage.cityInfo.temperature + "°"; bodyView.btnHumidityValues.Text = MainPage.cityInfo.humidity == null ? "--" : MainPage.cityInfo.humidity + "%"; bodyView.btnPm25Values.Text = MainPage.cityInfo.pm25 == null ? "--" : MainPage.cityInfo.pm25; } } /// /// 更新室内传感器数据-湿度 /// public static void LoadEvent_RefreshEnvirIndoorHumi() { Application.RunOnMainThread(() => { if (bodyView != null) { var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity); double humiTotalValues = 0; foreach (var temp in humiSensorList) { double humiValue = 0; double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out humiValue); humiTotalValues += humiValue; } if (humiTotalValues > 0) { bodyView.btnIndoorHumiValues.Text = "/" + humiTotalValues + "%"; } bodyView.btnIndoorHumiValues.Width = bodyView.btnIndoorHumiValues.GetTextWidth(); } }); } /// /// 更新室内传感器数据-晚点 /// public static void LoadEvent_RefreshEnvirIndoorTemp() { Application.RunOnMainThread(() => { if (bodyView != null) { var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature); double tempTotalValues = 0; foreach (var temp in tempSensorList) { double tempValue = 0; double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue); tempTotalValues += tempValue; } if (tempTotalValues > 0) { bodyView.btnIndoorTempValues.Text = "/" + tempTotalValues + "°"; } bodyView.btnIndoorTempValues.Width = bodyView.btnIndoorTempValues.GetTextWidth(); } }); } /// /// 更新功能列表主页 /// public static void RefreshFunctionView() { if (bodyView != null && MainPage.CurPageIndex==0) { bodyView.LoadDeviceFunctionControlZone(); } } /// /// 更新连接状态图标 /// void CheckLinkStatus() { //Dome模式 if (MainPage.NoLoginMode) { bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor; return; } if (!Control.Ins.GatewayOnline_Local && !Control.Ins.GatewayOnline_Cloud) { bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipFail; } else { if (Control.Ins.GatewayOnline_Local) { bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipLocal; } else { bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor; } } } /// /// 确认连接状态 /// public static void LoadEvent_CheckLinkStatus() { Application.RunOnMainThread(() => { if (bodyView != null) { bodyView.CheckLinkStatus(); } }); } /// /// 加载功能收藏按钮事件 /// void LoadEvent_FunctionCollection(Button btn, Function function) { btn.MouseUpEventHandler += (sender, e) => { function.collect = false; if (function.Spk_Prefix == FunctionCategory.Music)//处理音乐主从关系 { if ((function as Music.A31MusicModel).ServerClientType == 1) { (function as Music.A31MusicModel).MainPlayCollection = false; Music.A31MusicModel.Save(); } } string msg = function.name + Language.StringByID(StringId.CollectionCancelled); LoadDeviceFunctionControlZone(); function.CollectFunction(); new PublicAssmebly().TipMsgAutoClose(msg, true); }; } /// /// 加载场景收藏按钮事件 /// void LoadEvent_SceneCollection(Button btn, Scene scene) { btn.MouseUpEventHandler += (sender, e) => { scene.collect = false; string msg = scene.name + Language.StringByID(StringId.CollectionCancelled); LoadSceneFunctionControlZone(); scene.CollectScene(); new PublicAssmebly().TipMsgAutoClose(msg, true); }; } /// /// 修改显示的功能类型 /// 设备功能/场景功能 /// void LoadEvent_ChangeShowedFunctionType() { btnChangeFunction.MouseUpEventHandler = (sender, e) => { btnChangeFunction.IsSelected = true; btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize; btnChangeFunction.IsBold = true; btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize; btnChangeScene.IsSelected = false; btnChangeScene.IsBold = false; CurShowTypeIsFunction = true; contentView.PageIndex = 0; }; //var client = new BlufiClient(); //client.PostPackageLengthLimit = 128; //client.RequestDeviceScan(); //client.RequestDeviceStatus(); //client.BlufiDelegate.Blufi_DidReceiveDeviceScanResponse(); btnChangeScene.MouseUpEventHandler = (sender, e) => { btnChangeScene.IsSelected = true; btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize; btnChangeScene.IsBold = true; btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize; btnChangeFunction.IsSelected = false; btnChangeFunction.IsBold = false; CurShowTypeIsFunction = false; contentView.PageIndex = 1; }; contentView.PageChange = (sender, e) => { if (contentView.PageIndex == 0) { btnChangeFunction.IsSelected = true; btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize; btnChangeFunction.IsBold = true; btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize; btnChangeScene.IsSelected = false; btnChangeScene.IsBold = false; CurShowTypeIsFunction = true; } else { btnChangeScene.IsSelected = true; btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize; btnChangeScene.IsBold = true; btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize; btnChangeFunction.IsSelected = false; btnChangeFunction.IsBold = false; CurShowTypeIsFunction = false; } }; } /// /// 更新显示状态 /// public static void UpdataFunctionStates(Function function) { Application.RunOnMainThread(() => { try { if (bodyView != null) { foreach (var view in bodyView.functionViews) { if (view.Tag.ToString() == function.sid) { var state = false; if (function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades || function.spk == SPK.CurtainTrietex || function.spk == SPK.CurtainSwitch)//窗帘设备根据百分比判断开关状态 { state = function.GetAttrState(FunctionAttributeKey.Percent) != "0"; } else { state = function.trait_on_off.curValue.ToString() == "on"; } for (int i = 0; i < view.ChildrenCount; i++) { if (view.GetChildren(i).GetType() == typeof(Button)) { var btn = view.GetChildren(i) as Button; btn.IsSelected = state; if (btn.Tag != null && btn.Tag.ToString() == "state") { if (function.Spk_Prefix == FunctionCategory.Music) { btn.Text = (function as Music.A31MusicModel).A31PlayStatus.Title; } else { if (function.spk != SPK.LightSwitch) { btn.Text = function.lastState; } } } } } } } } } catch (Exception ex) { MainPage.Log($"HomePage updata funciton states error {ex.Message}"); } }); } /// /// 加载场景控制事件 /// void LoadEvent_ControlScene(Button btnCoverd, Button btnName, Button btnZone,Button btnShowDelay, Scene scene) { EventHandler eventHandler = (sender, e) => { //场景正在倒计时执行中,不允许再点击 if (scene.LastExecutionTime == "" || Convert.ToDouble(scene.LastExecutionTime) + Convert.ToDouble(scene.delay) < Convert.ToDouble(Utlis.GetTimestamp(false))) { scene.LastExecutionTime = Utlis.GetTimestamp(false); } else { return; } string msg = scene.name + Language.StringByID(StringId.AlreadyOpened); new PublicAssmebly().TipMsgAutoClose(msg, true); Control.Ins.ControlScene(scene); scene.SceneCountDown(btnShowDelay); //new System.Threading.Thread(() => { // int time = Convert.ToInt32(scene.delay); // if (time > 0) // { // while (time > 0) // { // Application.RunOnMainThread(() => // { // if (time / 60 > 1) // { // btnShowDelay.Text = (time / 60).ToString() + "min"; // } // else // { // btnShowDelay.Text = (time--).ToString() + "s"; // } // }); // if (time / 60 > 1) // { // System.Threading.Thread.Sleep(time / 60 * 60000); // } // else // { // System.Threading.Thread.Sleep(1000); // } // } // Application.RunOnMainThread(() => // { // btnShowDelay.Text = ""; // }); // } //}) //{ IsBackground = true, Priority = System.Threading.ThreadPriority.BelowNormal }.Start(); }; btnCoverd.MouseUpEventHandler = eventHandler; btnName.MouseUpEventHandler = eventHandler; btnZone.MouseUpEventHandler = eventHandler; } /// /// 加载灯光开关事件 /// /// /// void LoadEvent_SwitchFunction(Function function, Button btnSwitch) { btnSwitch.MouseUpEventHandler = (sender, e) => { btnSwitch.IsSelected = !btnSwitch.IsSelected; new System.Threading.Thread(() => { function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off"; Dictionary d = new Dictionary(); if (function.spk == SPK.LightDimming || function.spk == SPK.LightRGB) { d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString()); if (btnSwitch.IsSelected) { d.Add(FunctionAttributeKey.Brightness, function.lastBrightness.ToString()); } else { function.lastBrightness = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)); } d.Add(FunctionAttributeKey.FadeTime, function.GetAttrState(FunctionAttributeKey.FadeTime)); Control.Ins.SendWriteCommand(function, d); } else { d.Add("on_off", function.trait_on_off.curValue.ToString()); Control.Ins.SendWriteCommand(function, d); } }) { IsBackground = true }.Start(); }; } /// /// 加载电视控制事件 /// /// /// void LoadEvent_ControlTV(Function tV, Button button) { button.MouseUpEventHandler = (sender, e) => { if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("on_off", ""); Control.Ins.SendWriteCommand(tV, d); } else { new TV().ControlTV(InfraredCode_TV.Power, tV); } }; } /// /// 加载窗帘控制事件 /// void LoadEvent_ControlCurtain(Function curtain, Button btnClose, Button btnOpen) { btnClose.MouseUpEventHandler = (sender, e) => { btnClose.IsSelected = true; curtain.trait_on_off.curValue = "off"; curtain.SetAttrState(FunctionAttributeKey.Percent, 0); Dictionary d = new Dictionary(); d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString()); Control.Ins.SendWriteCommand(curtain, d); }; btnOpen.MouseUpEventHandler = (sender, e) => { btnOpen.IsSelected = true; curtain.trait_on_off.curValue = "on"; curtain.SetAttrState(FunctionAttributeKey.Percent, 100); Dictionary d = new Dictionary(); d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString()); Control.Ins.SendWriteCommand(curtain, d); }; } /// /// 加载晾衣架控制事件 /// void LoadEvent_ControlClothesHanger(Function function,Button btnUp,Button btnDown) { btnUp.MouseDownEventHandler = (sender, e) => { btnUp.IsSelected = true; }; btnUp.MouseUpEventHandler = (sender, e) => { new System.Threading.Thread(() => { System.Threading.Thread.Sleep(2000); Application.RunOnMainThread(() => { btnUp.IsSelected = false; }); }) { IsBackground = true }.Start(); function.SetAttrState(FunctionAttributeKey.Position, "up"); Dictionary d = new Dictionary(); d.Add(FunctionAttributeKey.Position, "up"); Control.Ins.SendWriteCommand(function, d); }; btnDown.MouseDownEventHandler = (sender, e) => { btnDown.IsSelected = true; }; btnDown.MouseUpEventHandler = (sender, e) => { new System.Threading.Thread(() => { System.Threading.Thread.Sleep(2000); Application.RunOnMainThread(() => { btnDown.IsSelected = false; }); }) { IsBackground = true }.Start(); function.SetAttrState(FunctionAttributeKey.Position, "down"); Dictionary d = new Dictionary(); d.Add(FunctionAttributeKey.Position, "down"); Control.Ins.SendWriteCommand(function, d); }; } /// /// 加载跳转信息中心页面 /// void LoadEvent_GotoMessageCenterPage() { EventHandler eventHandler = (sender, e) => { //房间删除事件 Action backAction = () => { RegisterGetPushMessageAction(); GetUnreadPushMessages(); }; var skipPage = new MessageCenterPage(); MainPage.BasePageView.AddChidren(skipPage); skipPage.LoadPage(backAction); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; btnMsgBg.MouseUpEventHandler = eventHandler; btnMsgTime.MouseUpEventHandler = eventHandler; btnMsg.MouseUpEventHandler = eventHandler; btnMsgIcon.MouseUpEventHandler = eventHandler; } #region 查询未读读消息列表 /// /// 是否正在读取 /// bool isGetting; /// /// 查询未读消息并显示 /// void GetUnreadPushMessages() { System.Threading.Tasks.Task.Run(() => { try { if (isGetting) return; isGetting = true; var result = new HttpServerRequest().PushSerivceGetPushmessagelist(); if (result.Code == StateCode.SUCCESS) { //未读的消息列表 var unreadList = new List(); var pushMessageInfoList = Newtonsoft.Json.JsonConvert.DeserializeObject>(result.Data.ToString()); if (pushMessageInfoList != null && pushMessageInfoList.Count > 0) { foreach (var info in pushMessageInfoList) { if (!info.isRead) { unreadList.Add(info); break; // 跳出循环 } } if (unreadList != null && unreadList.Count > 0) { Application.RunOnMainThread(() => { ShowMesBtnState(unreadList[0], false); }); } else { Application.RunOnMainThread(() => { ShowMesBtnState(pushMessageInfoList[0], true); }); } } } else { } } catch (Exception ex) { } finally { isGetting = false; } }); } /// /// 显示未读读消息 /// /// /// 所有都已读 void ShowMesBtnState(PushMessageInfo pushMessageInfo, bool allRead) { if (bodyView == null) return; btnMsg.Text = pushMessageInfo.messageTitle + ": " + pushMessageInfo.messageContent; btnMsgTime.Text = GetUnixToDateTime(pushMessageInfo.createTime); btnMsgIcon.IsSelected = !allRead; } /// /// 重置未读消息控件 /// void ResetMesBtnRead() { if (bodyView == null) return; btnMsg.Text = "..."; btnMsgTime.Text = "00:00"; btnMsgIcon.IsSelected = false; } /// /// 时间格式转换处理 /// /// 毫秒时间戳 /// string GetUnixToDateTime(long time) { try { return Utlis.ToFriendlyDisplay(time); } catch (Exception ex) { return ""; } } /// /// 注册收到推送监听 /// void RegisterGetPushMessageAction() { Action RegisterGetPushMessageAction = () => { if (bodyView != null) { //Utlis.WriteLine("GetPushMessageAction H收到推送"); GetUnreadPushMessages(); } }; HDLCommon.GetPushMessageAction = RegisterGetPushMessageAction; } /// /// 取消收到推送监听 /// void UnregisterGetPushMessageAction() { HDLCommon.GetPushMessageAction = null; } #endregion } }