From 5eeafe3af80bfd88306bd8ad9e76c8f4b51ca35f Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期四, 17 十二月 2020 14:16:20 +0800 Subject: [PATCH] 增加本地发送的重发机制 --- HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs | 289 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 246 insertions(+), 43 deletions(-) diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs index f998180..ea6db63 100644 --- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs +++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs @@ -1,4 +1,7 @@ 锘縰sing System; +using System.Collections.Generic; +using HDL_ON.DAL.Server; +using HDL_ON.DriverLayer; using HDL_ON.Entity; using Shared; @@ -11,20 +14,50 @@ /// </summary> public static void LoadEvent_RefreshAir() { - 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; + 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; + } + } + /// <summary> + /// 纭杩炴帴鐘舵�� + /// </summary> + 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; + } + }); + } } /// <summary> /// 鍔犺浇鍔熻兘鏀惰棌鎸夐挳浜嬩欢 /// </summary> - void LoadEvent_FunctionCollection(Button btn,Function function,bool isDevice) + void LoadEvent_FunctionCollection(Button btn, Function function) { btn.MouseUpEventHandler += (sender, e) => { - function.collection = false; - if(function.functionCategory == FunctionCategory.Music)//澶勭悊闊充箰涓讳粠鍏崇郴 + function.collect = false; + if (function.functionCategory == FunctionCategory.Music)//澶勭悊闊充箰涓讳粠鍏崇郴 { if ((function as Music.A31MusicModel).ServerClientType == 1) { @@ -33,15 +66,22 @@ } } string msg = function.name + Language.StringByID(StringId.CollectionCancelled); - if (isDevice) - { - LoadDeviceFunctionControlZone(); - } - else - { - LoadSceneFunctionControlZone(); - } - DB_ResidenceData.residenceData.SaveResidenceData(); + LoadDeviceFunctionControlZone(); + function.SaveFunctionData(true); + new PublicAssmebly().TipMsgAutoClose(msg, true); + }; + } + /// <summary> + /// 鍔犺浇鍦烘櫙鏀惰棌鎸夐挳浜嬩欢 + /// </summary> + 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); }; } @@ -116,7 +156,7 @@ { if (view.Tag.ToString() == function.sid) { - var state = function.on_off == "on"; + var state = function.trait_on_off.curValue.ToString() == "on"; for (int i = 0; i < view.ChildrenCount; i++) { if (view.GetChildren(i).GetType() == typeof(Button)) @@ -125,7 +165,7 @@ btn.IsSelected = state; if (btn.Tag != null && btn.Tag.ToString() == "state") { - if(function.functionCategory == FunctionCategory.Music) + if (function.functionCategory == FunctionCategory.Music) { btn.Text = (function as Music.A31MusicModel).A31PlayStatus.Title; } @@ -150,19 +190,18 @@ /// <summary> /// 鍔犺浇鍦烘櫙鎺у埗浜嬩欢 /// </summary> - void LoadEvent_ControlScene(Button btnCoverd ,Function function) + void LoadEvent_ControlScene(Button btnCoverd, Button btnName, Button btnZone, Scene scene) { - btnCoverd.MouseDownEventHandler = (sender, e) => - { - btnCoverd.IsSelected = true; - }; - btnCoverd.MouseUpEventHandler = (sender, e) => - { - string msg = function.name + Language.StringByID(StringId.AlreadyOpened); - new PublicAssmebly().TipMsgAutoClose(msg, true); - Control.Send(function as Scene); - }; + EventHandler<MouseEventArgs> 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; } /// <summary> @@ -177,12 +216,10 @@ btnSwitch.IsSelected = !btnSwitch.IsSelected; new System.Threading.Thread(() => { - function.on_off = btnSwitch.IsSelected ? "on" : "off"; - //Control.Send(CommandType_A.write, function); + function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off"; System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add("on_off", function.on_off.ToString()); - Control.SendWriteCommand(function, d); - + d.Add("on_off", function.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(function, d); }) { IsBackground = true }.Start(); }; @@ -193,9 +230,10 @@ /// </summary> /// <param name="tV"></param> /// <param name="button"></param> - void LoadEvent_ControlTV(TV tV,Button button) + void LoadEvent_ControlTV(TV tV, Button button) { - button.MouseUpEventHandler = (sender, e) => { + button.MouseUpEventHandler = (sender, e) => + { tV.ControlTV(InfraredCode_TV.Power); }; } @@ -212,11 +250,11 @@ btnClose.MouseUpEventHandler = (sender, e) => { btnClose.IsSelected = false; - curtain.on_off = "off"; - //Control.Send(CommandType_A.write, curtain); + curtain.trait_on_off.curValue = "off"; + curtain.percent = 0; System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add("on_off",curtain.on_off.ToString()); - Control.SendWriteCommand(curtain, d); + d.Add("on_off", curtain.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(curtain, d); }; btnOpen.MouseDownEventHandler = (sender, e) => @@ -226,13 +264,178 @@ btnOpen.MouseUpEventHandler = (sender, e) => { btnOpen.IsSelected = false; - curtain.on_off = "on"; - //Control.Send(CommandType_A.write, curtain); + curtain.trait_on_off.curValue = "on"; + curtain.percent = 100; System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add("on_off", curtain.on_off.ToString()); - Control.SendWriteCommand(curtain, d); + d.Add("on_off", curtain.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(curtain, d); }; } + /// <summary> + /// 鍔犺浇璺宠浆淇℃伅涓績椤甸潰 + /// </summary> + void LoadEvent_GotoMessageCenterPage() + { + EventHandler<MouseEventArgs> 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 鏌ヨ鏈璇绘秷鎭垪琛� + /// <summary> + /// 鏄惁姝e湪璇诲彇 + /// </summary> + bool isGetting; + /// <summary> + /// 鏌ヨ鏈娑堟伅骞舵樉绀� + /// </summary> + 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<PushMessageInfo>(); + + var pushMessageInfoList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PushMessageInfo>>(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; + } + + }); + + } + + /// <summary> + /// 鏄剧ず鏈璇绘秷鎭� + /// </summary> + /// <param name="pushMessageInfo"></param> + /// <param name="allRead">鎵�鏈夐兘宸茶</param> + void ShowMesBtnState(PushMessageInfo pushMessageInfo, bool allRead) + { + if (bodyView == null) return; + btnMsg.Text = pushMessageInfo.messageTitle + ": " + pushMessageInfo.messageContent; + btnMsgTime.Text = GetUnixToDateTime(pushMessageInfo.createTime); + btnMsgIcon.IsSelected = !allRead; + } + + /// <summary> + /// 閲嶇疆鏈娑堟伅鎺т欢 + /// </summary> + void ResetMesBtnRead() + { + if (bodyView == null) return; + btnMsg.Text = "..."; + btnMsgTime.Text = "00:00"; + btnMsgIcon.IsSelected = false; + } + + /// <summary> + /// 鏃堕棿鏍煎紡杞崲澶勭悊 + /// </summary> + /// <param name="time">姣鏃堕棿鎴�</param> + /// <returns></returns> + string GetUnixToDateTime(long time) + { + try + { + return Utlis.ToFriendlyDisplay(time); + } + catch (Exception ex) + { + return ""; + } + } + + /// <summary> + /// 娉ㄥ唽鏀跺埌鎺ㄩ�佺洃鍚� + /// </summary> + void RegisterGetPushMessageAction() + { + Action RegisterGetPushMessageAction = () => { + if (bodyView != null) + { + //Utlis.WriteLine("GetPushMessageAction H鏀跺埌鎺ㄩ��"); + GetUnreadPushMessages(); + } + }; + HDLCommon.GetPushMessageAction = RegisterGetPushMessageAction; + } + + /// <summary> + /// 鍙栨秷鏀跺埌鎺ㄩ�佺洃鍚� + /// </summary> + void UnregisterGetPushMessageAction() + { + HDLCommon.GetPushMessageAction = null; + } + + #endregion + } } -- Gitblit v1.8.0