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_CheckLinkStatus() { if (bodyView != null) { Application.RunOnMainThread(() => { if (Control.Ins.GatewayOnline) { if (Control.Ins.IsRemote) { bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipRemote; } else { bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor; } } else { bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipFail; } }); } } /// /// 加载功能收藏按钮事件 /// void LoadEvent_FunctionCollection(Button btn, Function function) { btn.MouseUpEventHandler += (sender, e) => { function.collect = false; if (function.functionCategory == 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.SaveFunctionData(true); 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.SaveSceneData(true); 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; }; 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 = 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.functionCategory == FunctionCategory.Music) { btn.Text = (function as Music.A31MusicModel).A31PlayStatus.Title; } else { 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, Scene scene) { EventHandler eventHandler = (sender, e) => { string msg = scene.name + Language.StringByID(StringId.AlreadyOpened); new PublicAssmebly().TipMsgAutoClose(msg, true); Control.Ins.ControlScene(scene); }; 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"; System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add("on_off", function.trait_on_off.curValue.ToString()); Control.Ins.SendWriteCommand(function, d); }) { IsBackground = true }.Start(); }; } /// /// 加载电视控制事件 /// /// /// void LoadEvent_ControlTV(TV tV, Button button) { button.MouseUpEventHandler = (sender, e) => { tV.ControlTV(InfraredCode_TV.Power); }; } /// /// 加载窗帘控制事件 /// void LoadEvent_ControlCurtain(Curtain curtain, Button btnClose, Button btnOpen) { btnClose.MouseDownEventHandler = (sender, e) => { btnClose.IsSelected = true; }; btnClose.MouseUpEventHandler = (sender, e) => { btnClose.IsSelected = false; curtain.trait_on_off.curValue = "off"; curtain.percent = 0; System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add("on_off", curtain.trait_on_off.curValue.ToString()); Control.Ins.SendWriteCommand(curtain, d); }; btnOpen.MouseDownEventHandler = (sender, e) => { btnOpen.IsSelected = true; }; btnOpen.MouseUpEventHandler = (sender, e) => { btnOpen.IsSelected = false; curtain.trait_on_off.curValue = "on"; curtain.percent = 100; System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add("on_off", curtain.trait_on_off.curValue.ToString()); Control.Ins.SendWriteCommand(curtain, d); }; } /// /// 加载跳转信息中心页面 /// void LoadEvent_GotoMessageCenterPage() { EventHandler eventHandler = (sender, e) => { //房间删除事件 Action backAction = () => { 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.UnixToDateTimeWithFormatMS(time, "HH:mm"); } catch (Exception ex) { return ""; } } #endregion } }