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/MessageCenterPage.cs | 240 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 208 insertions(+), 32 deletions(-) diff --git a/HDL_ON/UI/UI2/1-HomePage/MessageCenterPage.cs b/HDL_ON/UI/UI2/1-HomePage/MessageCenterPage.cs index 212b147..87d2684 100644 --- a/HDL_ON/UI/UI2/1-HomePage/MessageCenterPage.cs +++ b/HDL_ON/UI/UI2/1-HomePage/MessageCenterPage.cs @@ -4,7 +4,9 @@ using System.Collections.Generic; using System.Threading; using HDL_ON.DAL.Server; - +#if DEBUG +using Xamarin.Essentials; +#endif namespace HDL_ON.UI { /// <summary> @@ -20,7 +22,7 @@ /// <summary> /// 鍐呭涓虹┖鎻愮ずView /// </summary> - EmptyTipView emptyTipView; + FrameLayout emptyTipView; /// <summary> /// menuView @@ -42,6 +44,17 @@ /// </summary> List<PushMessageInfo> PushMessageInfoList = new List<PushMessageInfo>(); + /// <summary> + /// 椤甸潰鍏抽棴鏃堕棿 + /// </summary> + Action backAction; + + public override void RemoveFromParent() + { + UnregisterGetPushMessageAction(); + base.RemoveFromParent(); + backAction?.Invoke(); + } /// <summary> /// @@ -55,13 +68,19 @@ /// <summary> /// /// </summary> - public void LoadPage() + /// <param name="backAction"></param> + public void LoadPage(Action backAction) { + this.backAction = backAction; new TopViewDiv(bodyView, Language.StringByID(StringId.MessageCenter)).LoadTopView(); AddTopMenuView(); AddMessageView(); MenuButtonSelect(showMesType); + RegisterGetPushMessageAction(); + //娴嬭瘯浠g爜 + //AddEmptyTipView(); + //TestLoad(); } /// <summary> @@ -94,6 +113,14 @@ MenuButtonSelect(0); }; allMenuButton.SelectAction = allAction; + +#if DEBUG + //娴嬭瘯鎻愬墠褰撳墠鎺ㄩ�両D + allMenuButton.ImageButton.MouseLongEventHandler = (sender, e) => + { + CopyToClipboard("鎺ㄩ�両D锛�" + OnAppConfig.Instance.PushId); + }; +#endif #endregion #region 鍒嗕韩涓庡姛鑳� @@ -222,13 +249,24 @@ /// </summary> void AddEmptyTipView() { - emptyTipView = new EmptyTipView() + emptyTipView = new FrameLayout() + { + Height = bodyScrolView.Height, + Width = bodyScrolView.Width, + }; + bodyScrolView.AddChidren(emptyTipView); + + var tipView = new EmptyTipView() { Gravity = Gravity.Center }; - messageView.AddChidren(emptyTipView); + emptyTipView.AddChidren(tipView); } + /// <summary> + /// 骞翠唤鏍囪 + /// </summary> + string YearMark = ""; /// <summary> /// 鍔犺浇鎶ヨ淇℃伅RowView /// </summary> @@ -284,7 +322,7 @@ }; rowView.AddChidren(btnDatetime); - var lineView = new LineView(rowView.Height); + var lineView = new LineView(rowView.Height - Application.GetRealHeight(1)); rowView.AddChidren(lineView); //鍒犻櫎鎸夐挳 @@ -302,13 +340,31 @@ }; - btnDatetime.Text = Utlis.UnixToDateTime(pushMessageInfo.createTime).ToString("yyyy/MM/dd HH:mm:ss"); - //EventHandler<MouseEventArgs> eventHandler = (sender, e) => - //{ - //}; + btnDatetime.Text = GetUnixToDateTime(pushMessageInfo.createTime); + EventHandler<MouseEventArgs> eventHandler = (sender, e) => + { + new Alert(pushMessageInfo.messageTitle, pushMessageInfo.messageContent, Language.StringByID(StringId.Close)).Show(); + }; + rowView.MouseUpEventHandler = eventHandler; + btnTilte.MouseUpEventHandler = eventHandler; + btnSubtitle.MouseUpEventHandler = eventHandler; + } - //btnTilte.MouseUpEventHandler = eventHandler; - //btnSubtitle.MouseUpEventHandler = eventHandler; + /// <summary> + /// 鏃堕棿鏍煎紡杞崲澶勭悊 + /// </summary> + /// <param name="time">姣鏃堕棿鎴�</param> + /// <returns></returns> + string GetUnixToDateTime(long time) + { + try + { + return Utlis.UnixToDateTimeWithFormatMS(time, "MM/dd HH:mm"); + } + catch (Exception ex) + { + return ""; + } } /// <summary> @@ -318,6 +374,7 @@ void DeleteThePush(PushMessageInfo pushMessageInfo, RowLayout rowView) { var waitPage = new Loading(); + bodyView.AddChidren(waitPage); waitPage.Start(Language.StringByID(StringId.PleaseWait)); new Thread(() => @@ -388,10 +445,18 @@ /// <param name="queryType"></param> void GetPushMessageList(int queryType = 0) { - var waitPage = new Loading(); - waitPage.Start(Language.StringByID(StringId.PleaseWait)); bodyScrolView.RemoveAll(); PushMessageInfoList.Clear(); + YearMark = "";//鏍囪娓呯┖ + if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) + { + AddEmptyTipView(); + return; + } + + var waitPage = new Loading(); + bodyView.AddChidren(waitPage); + waitPage.Start(Language.StringByID(StringId.PleaseWait)); new Thread(() => { @@ -407,6 +472,7 @@ { ParseAndDisplayPushList(); + PushSerivceMarkAllMessageRead(); } else { @@ -448,11 +514,27 @@ { foreach (var info in PushMessageInfoList) { + //骞翠唤瑙f瀽 鍒ゆ柇鏄惁闇�瑕佹坊鍔犲勾浠芥爣棰� + var mesYear = Utlis.UnixToDateTimeYearMS(info.createTime); + if (string.IsNullOrEmpty(YearMark)) + { + //鍒氬紑濮媃earMark鏍囪涓虹┖锛屾坊鍔犵涓�涓勾浠芥爣棰� + YearMark = mesYear; + AddYearRowView(bodyScrolView, YearMark); + } + else if (YearMark != mesYear) + { + //褰撳墠淇℃伅骞翠唤鍜屼箣鍓嶇殑涓嶄竴鏍凤紝閲嶆柊娣诲姞涓�涓勾浠芥爣棰� + YearMark = mesYear; + AddYearRowView(bodyScrolView, YearMark); + } + AddRowView(bodyScrolView, info); } } #region 娴嬭瘯 +#if DEBUG /// <summary> /// /// </summary> @@ -462,7 +544,7 @@ { messageTitle = "鎶ヨ淇℃伅", messageContent = "闂ㄩ攣琚墦寮�", - createTime = 1606895454, + createTime = 1606900275, }); PushMessageInfoList.Add(new PushMessageInfo() @@ -479,19 +561,113 @@ createTime = 1606895454, }); - AddYearRowView(bodyScrolView, "2020骞�"); - foreach (var info in PushMessageInfoList) + PushMessageInfoList.Add(new PushMessageInfo() { - AddRowView(bodyScrolView, info); - } + messageTitle = "鎶ヨ淇℃伅2019", + messageContent = "闂ㄩ攣琚墦寮�", + createTime = 1575277874, + }); - AddYearRowView(bodyScrolView, "2019骞�"); - foreach (var info in PushMessageInfoList) + PushMessageInfoList.Add(new PushMessageInfo() { - AddRowView(bodyScrolView, info); - } + messageTitle = "鎶ヨ淇℃伅2019", + messageContent = "闂ㄩ攣琚墦寮�", + createTime = 1572685874, + }); + + PushMessageInfoList.Add(new PushMessageInfo() + { + messageTitle = "鎶ヨ淇℃伅2018", + messageContent = "闂ㄩ攣琚墦寮�", + createTime = 1541149874, + }); + + PushMessageInfoList.Add(new PushMessageInfo() + { + messageTitle = "鎶ヨ淇℃伅2017", + messageContent = "闂ㄩ攣琚墦寮�", + createTime = 1509613874, + }); + + PushMessageInfoList.Add(new PushMessageInfo() + { + messageTitle = "鎶ヨ淇℃伅2017", + messageContent = "闂ㄩ攣琚墦寮�", + createTime = 1509613874, + }); + + PushMessageInfoList.Add(new PushMessageInfo() + { + messageTitle = "鎶ヨ淇℃伅2017", + messageContent = "闂ㄩ攣琚墦寮�", + createTime = 1506935474, + }); + + ParseAndDisplayPushList(); } + +#endif + #endregion + + /// <summary> + /// 鏍囪鎵�鏈夋帹閫佹秷鎭凡璇� + /// </summary> + void PushSerivceMarkAllMessageRead() + { + new Thread(() => + { + var result = new HttpServerRequest().PushSerivceMarkAllMessageRead(); + if (result) + { + Utlis.WriteLine("鏍囪鎴愬姛"); + } + else + { + Utlis.WriteLine("鏍囪澶辫触"); + } + + + }) + { IsBackground = true }.Start(); + } + + /// <summary> + /// 娉ㄥ唽鏀跺埌鎺ㄩ�佺洃鍚� + /// </summary> + void RegisterGetPushMessageAction() + { + HDLCommon.GetPushMessageAction = () => + { + if (bodyView != null) + { + //Utlis.WriteLine("GetPushMessageAction M鏀跺埌鎺ㄩ��"); + GetPushMessageList(showMesType); + } + }; + } + + /// <summary> + /// 鍙栨秷鏀跺埌鎺ㄩ�佺洃鍚� + /// </summary> + void UnregisterGetPushMessageAction() + { + HDLCommon.GetPushMessageAction = null; + } + +#if DEBUG + + /// <summary> + /// 澶嶅埗鍒板壀鍒囨澘 + /// </summary> + /// <param name="text"></param> + void CopyToClipboard(string text) + { + Clipboard.SetTextAsync(text); + Utlis.ShowTip(text + "\n" + Language.StringByID(StringId.CopySuccess)); + } +#endif + } /// <summary> @@ -513,7 +689,7 @@ /// /// Default锛氬垎浜笌鍔熻兘锛汚larm锛氭姤璀︾被锛汸rompt锛氱郴缁熸秷鎭� /// </summary> - public int pushType; + public string pushType; /// <summary> /// 娑堟伅涓婚 /// </summary> @@ -522,14 +698,14 @@ /// 娑堟伅鍐呭 /// </summary> public string messageContent; - /// <summary> - /// 鎵╁睍鏁版嵁 - /// </summary> - public string messageExpand; - /// <summary> - /// 娑堟伅绫诲瀷锛�0锛氭彁绀猴紱1锛氭姤璀︼紱2锛氫赴鏋楀彲鏄璁插懠鍙紱3锛氬己鍒朵笅绾挎帹閫� - /// </summary> - public string messageType; + ///// <summary> + ///// 鎵╁睍鏁版嵁 + ///// </summary> + //public string messageExpand; + ///// <summary> + ///// 娑堟伅绫诲瀷锛�0锛氭彁绀猴紱1锛氭姤璀︼紱2锛氫赴鏋楀彲鏄璁插懠鍙紱3锛氬己鍒朵笅绾挎帹閫� + ///// </summary> + //public string messageType; /// <summary> /// 鏄惁宸茶 /// </summary> -- Gitblit v1.8.0