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_RefreshDevcieOnline(Function function) { Application.RunOnMainThread(() => { if (bodyView != null) { foreach (var view in bodyView.functionViews) { if (view.Tag.ToString() == function.sid) { for (int i = 0; i < view.ChildrenCount; i++) { if (view.GetChildren(i).GetType() == typeof(Button)) { var btn = view.GetChildren(i) as Button; if(btn.Tag == null) { continue; } if (btn.Tag.ToString() == function.sid) { //if (function.isOnline()) { btn.UnSelectedImagePath = "Collection/Functionbg.png"; btn.IsSelected = false; } //else //{ // btn.UnSelectedImagePath = "Collection/FunctionOfflineBg.png"; // btn.IsSelected = false; //} } else if (btn.Tag.ToString() == "OnlineTag") { //btn.Visible = !function.isOnline(); } } } } } } }); } /// /// 更新主页天气 /// public static void LoadEvent_RefreshAir() { Application.RunOnMainThread(() => { if (bodyView != null) { bodyView.btnTempValues.Text = MainPage.cityInfo.temperature == null ? "--" : MainPage.cityInfo.temperature + "°"; bodyView.btnTempValues.Width = bodyView.btnTempValues.GetTextWidth(); bodyView.btnHumidityValues.Text = MainPage.cityInfo.humidity == null ? "--" : MainPage.cityInfo.humidity + "%"; bodyView.btnHumidityValues.Width = bodyView.btnHumidityValues.GetTextWidth(); bodyView.btnPm25Values.Text = MainPage.cityInfo.pm25 == null ? "--" : MainPage.cityInfo.pm25; bodyView.btnPm25Values.Width = bodyView.btnPm25Values.GetTextWidth(); bodyView.btnIndoorTempValues.X = bodyView.btnTempValues.Right; bodyView.btnHumidityIcon.X = bodyView.btnIndoorTempValues.Right + Application.GetRealWidth(8); bodyView.btnHumidityValues.X = bodyView.btnHumidityIcon.Right + Application.GetRealWidth(4); bodyView.btnIndoorHumiValues.X = bodyView.btnHumidityValues.Right; bodyView.btnPm25Icon.X = bodyView.btnIndoorHumiValues.Right + Application.GetRealWidth(4); bodyView.btnPm25Values.X = bodyView.btnPm25Icon.Right + Application.GetRealWidth(4); } }); } /// /// 更新功能列表主页 /// public static void RefreshFunctionView() { if (bodyView != null && MainPage.CurPageIndex==0) { bodyView.LoadDeviceFunctionControlZone(); } } /// /// 更新连接状态图标 /// void CheckLinkStatus() { //Dome模式 if (MainPage.NoLoginMode) { return; } if (!Control.Ins.GatewayOnline_Local && !Control.Ins.GatewayOnline_Cloud) { bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipFail; bodyView.btnLinkStateTip.TextID = StringId.NetworkAnomaly; bodyView.environmentalView.Y = Application.GetRealHeight(8) + btnResidenceName.Bottom; } else { bodyView.btnLinkStateTip.BackgroundColor = 0x00000000; bodyView.btnLinkStateTip.Text = ""; bodyView.environmentalView.Y = Application.GetRealHeight(1) + btnResidenceName.Bottom; } } /// /// 确认连接状态 /// public static void LoadEvent_CheckLinkStatus() { Application.RunOnMainThread(() => { try { if (bodyView != null) { bodyView.CheckLinkStatus(); } }catch(Exception ex) { MainPage.Log($"LoadEvent_CheckLinkStatus : {ex.Message}"); } }); } /// /// 加载功能收藏按钮事件 /// void LoadEvent_FunctionCollection(Button btn, Function function) { btn.MouseUpEventHandler += (sender, e) => { function.collect = false; 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); }; } /// /// 更新显示状态 /// public static void UpdataFunctionStates(Function function) { Application.RunOnMainThread(() => { try { if (bodyView != null) { foreach (var view in bodyView.functionViews) { if (view.Tag.ToString() == function.sid) { //if (!function.online) //{ // view.UnSelectedImagePath = "Collection/FunctionOfflineBg.png"; //} var state = false; if (function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades || function.spk == SPK.CurtainTrietex || function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainDream)//窗帘设备根据百分比判断开关状态 { if (function.GetAttribute(FunctionAttributeKey.Percent) != null) { state = function.GetAttrState(FunctionAttributeKey.Percent) != "0"; } else { if (function.GetAttrState(FunctionAttributeKey.OnOff) == "stop") return; state = function.trait_on_off.curValue.ToString() == "on"; } } 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 != 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); }; 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_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() { if (MainPage.NoLoginMode) { return; } 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.list != null && pushMessageInfoList.list.Count > 0) { foreach (var info in pushMessageInfoList.list) { if (!info.isRead) { unreadList.Add(info); break; // 跳出循环 } } if (unreadList != null && unreadList.Count > 0) { Application.RunOnMainThread(() => { ShowMesBtnState(unreadList[0], false); }); } else { Application.RunOnMainThread(() => { ShowMesBtnState(pushMessageInfoList.list[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() { if (MainPage.NoLoginMode) { return; } Action RegisterGetPushMessageAction = () => { if (bodyView != null) { //Utlis.WriteLine("GetPushMessageAction H收到推送"); GetUnreadPushMessages(); } }; HDLCommon.GetPushMessageAction = RegisterGetPushMessageAction; } /// /// 取消收到推送监听 /// void UnregisterGetPushMessageAction() { HDLCommon.GetPushMessageAction = null; } #endregion } }