From eb424d24e39bab4a245725f35deab3f234ea0f13 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期五, 13 十二月 2019 10:48:50 +0800
Subject: [PATCH] 2019.12.13
---
ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs | 362 +++++++++++++++++++++++++++++++++++----------------
1 files changed, 250 insertions(+), 112 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
index 7b118ad..7197147 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
@@ -14,7 +14,11 @@
/// <summary>
/// 鍒楄〃鎺т欢
/// </summary>
- private VerticalFrameControl listView = null;
+ private VerticalFrameRefreshControl listView = null;
+ /// <summary>
+ /// 鍏ㄩ儴鐨勮
+ /// </summary>
+ private Dictionary<string, RowLayoutControl> dicAllRow = null;
#endregion
@@ -28,40 +32,51 @@
//璁剧疆澶撮儴淇℃伅
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uMessageCenter));
- listView = new VerticalFrameControl(35);
- listView.Height = bodyFrameLayout.Height;
- bodyFrameLayout.AddChidren(listView);
-
//鍒濆鍖栧彸涓婅鑿滃崟
this.InitTopRightMenu();
+ listView = new VerticalFrameRefreshControl(35);
+ listView.Height = bodyFrameLayout.Height;
+ bodyFrameLayout.AddChidren(listView);
+ listView.BeginHeaderRefreshingAction += () =>
+ {
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleData(false);
+ });
+ };
+
HdlThreadLogic.Current.RunThread(() =>
{
+ //鎵撳紑杩涘害鏉�
+ this.ShowProgressBar();
+
//鍒濆鍖栦腑閮ㄤ俊鎭�
- this.InitMiddleData();
+ this.InitMiddleData(true);
});
}
/// <summary>
/// 鍒濆鍖栦腑閮ㄤ俊鎭�
/// </summary>
- private async void InitMiddleData()
+ private async void InitMiddleData(bool showReload)
{
- //鎵撳紑杩涘害鏉�
- this.ShowProgressBar();
- var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetPushMessageRecord", false, "");
- if (result == null)
+ //鑾峰彇鏁版嵁
+ var dicData = await this.GetMessageData();
+ //鍏抽棴杩涘害鏉�
+ this.CloseProgressBar(dicData == null && showReload == true ? ShowReLoadMode.YES : ShowReLoadMode.NO);
+
+ HdlThreadLogic.Current.RunMain(() =>
{
- //鍏抽棴杩涘害鏉�
- this.CloseProgressBar(ShowReLoadMode.YES);
+ //鍏抽棴鍒锋柊鐗规晥
+ listView?.EndHeaderRefreshing();
+ });
+ if (dicData == null)
+ {
+ //鏁版嵁寮傚父
return;
}
- var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MessageRecordInfo>>(result);
- //鍚堝苟鏁版嵁
- var dicData = this.MergeMessageRecordData(dataInfo);
- //鍏抽棴杩涘害鏉�
- this.CloseProgressBar();
-
HdlThreadLogic.Current.RunMain(() =>
{
//鍒濆鍖栦腑閮ㄦ帶浠�
@@ -75,36 +90,45 @@
/// <param name="dicData"></param>
private void InitMiddleFrame(Dictionary<string, List<MessageRecordInfo>> dicData)
{
+ //娓呯┖
+ listView.RemoveAll();
+
+ int index = 0;
foreach (var keys in dicData.Keys)
{
var listData = dicData[keys];
- HdlThreadLogic.Current.RunMain(() =>
+ index++;
+ //瀹瑰櫒
+ var framBack = new FrameListControl(23);
+ framBack.Name = index.ToString();
+ framBack.Height = Application.GetRealHeight(100);
+ framBack.BackgroundColor = UserCenterColor.Current.White;
+ listView.AddChidrenFrame(framBack);
+
+ //鏃ユ湡
+ string strMonth = Language.StringByID(R.MyInternationalizationString.Month);
+ string strDate = Language.StringByID(R.MyInternationalizationString.Day);
+ var frameDate = new FrameLayout();
+ frameDate.Height = Application.GetRealHeight(118);
+ framBack.AddChidren(frameDate);
+ var btnDate = new NormalViewControl(500, 60, true);
+ btnDate.TextSize = 15;
+ btnDate.X = ControlCommonResourse.XXLeft;
+ btnDate.Y = Application.GetRealHeight(35);
+ btnDate.Text = Convert.ToDateTime(listData[0].MsgTime).ToString("MM" + strMonth + "dd" + strDate);
+ frameDate.AddChidren(btnDate);
+
+ for (int i = 0; i < listData.Count; i++)
{
- //瀹瑰櫒
- var framBack = new FrameListControl(23);
- framBack.Name = keys;
- framBack.Height = Application.GetRealHeight(100);
- framBack.BackgroundColor = UserCenterColor.Current.White;
-
- //鏃ユ湡
- string strMonth = Language.StringByID(R.MyInternationalizationString.Month);
- string strDate = Language.StringByID(R.MyInternationalizationString.Day);
- var frameDate = new FrameLayout();
- frameDate.Height = Application.GetRealHeight(118);
- framBack.AddChidren(frameDate);
- var btnDate = new NormalViewControl(500, 60, true);
- btnDate.TextSize = 15;
- btnDate.X = ControlCommonResourse.XXLeft;
- btnDate.Y = Application.GetRealHeight(35);
- btnDate.Text = Convert.ToDateTime(listData[0].MsgTime).ToString("MM" + strMonth + "dd" + strDate);
- frameDate.AddChidren(btnDate);
-
- for (int i = 0; i < listData.Count; i++)
- {
- //娣诲姞淇℃伅琛�
- this.AddMsgRowControl(framBack, listData[i], i != listData.Count - 1);
- }
- });
+ //娣诲姞淇℃伅琛�
+ this.AddMsgRowControl(framBack, listData[i], i != listData.Count - 1);
+ }
+ //璋冩暣楂樺害
+ listView.AdjustChidrenFrameHeight(framBack, Application.GetRealHeight(23));
+ if (index == dicData.Count)
+ {
+ listView.AdjustTableHeight();
+ }
}
}
@@ -138,10 +162,14 @@
//鍏ㄩ儴宸茶
menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.uAllRead), () =>
{
+ //璁剧疆鍏ㄩ儴涓哄凡璇�
+ this.SetAllTickIsRead();
});
//鍏ㄩ儴鍒犻櫎
menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.uAllDelete), () =>
{
+ //鍒犻櫎鍏ㄩ儴鐨勬秷鎭�
+ this.DeleteAllMsg();
});
}
@@ -159,14 +187,16 @@
{
var rowControl = new RowLayoutControl(frameList.rowSpace / 2);
frameList.AddChidren(rowControl);
-
+ rowControl.Name = frameList.ChildrenCount.ToString();
+ rowControl.MainKeys = recordInfo.Id;
+ this.dicAllRow[frameList.Name + "-" + rowControl.Name] = rowControl;
//鍥炬爣(鐜板湪娴嬭瘯)
var btnIcon = rowControl.frameTable.AddLeftIcon(81);
- btnIcon.UnSelectedImagePath = "Item/Satety.png";
+ btnIcon.UnSelectedImagePath = "Item/Safety.png";
//娑堟伅绫诲瀷
- var btnMsgObject = rowControl.frameTable.AddLeftCaption("娴嬭瘯:娑堟伅绫诲瀷", 600);
+ var btnMsgObject = rowControl.frameTable.AddLeftCaption("鎶ヨ娑堟伅", 600);
PicViewControl btnNewTip = null;
if (recordInfo.IsRead == 0)
{
@@ -180,7 +210,7 @@
//娑堟伅
var btnMsg = rowControl.frameTable.AddMostRightView(recordInfo.MsgContent, 600, 60);
btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3;
- btnMsg.Y = Application.GetRealHeight(6) + rowControl.frameTable.chidrenYaxis;
+ btnMsg.Y = Application.GetRealHeight(5) + rowControl.frameTable.chidrenYaxis;
rowControl.frameTable.AddChidren(btnMsg, ChidrenBindMode.BindEventOnly);
//鏃堕棿
var btnTime = rowControl.frameTable.AddMostRightView(recordInfo.MsgContent, 200, 50);
@@ -207,15 +237,15 @@
btnDelete.ButtonClickEvent += (sender, e) =>
{
//纭鍒犻櫎娑堟伅?
- string msg = Language.StringByID(R.MyInternationalizationString.uDeleteRoomMsg);
+ string msg = Language.StringByID(R.MyInternationalizationString.uDeleteMessageMsg);
this.ShowMassage(ShowMsgType.Confirm, msg, async () =>
{
- await this.DeleteMsg(recordInfo.RegId, frameList, rowControl);
+ await this.DeleteMsg(recordInfo.Id, frameList, rowControl);
});
};
//鐐瑰嚮
- rowControl.frameTable.ButtonClickEvent += (sender, e) =>
+ rowControl.frameTable.ButtonClickEvent += async (sender, e) =>
{
if (recordInfo.IsRead == 1)
{
@@ -228,8 +258,11 @@
//娑堟伅
btnMsg.TextColor = UserCenterColor.Current.TextGrayColor1;
btnNewTip.RemoveFromParent();
- //鏍囪宸茶(涓嶇瀹冩垚鍔熶笉鎴愬姛)
- this.SetTickIsRead(recordInfo.RegId);
+ if (sender != null)
+ {
+ //鏍囪宸茶(涓嶇瀹冩垚鍔熶笉鎴愬姛)
+ await this.SetTickIsRead(recordInfo.Id);
+ }
};
}
@@ -241,10 +274,59 @@
/// 鏍囪宸茶
/// </summary>
/// <param name="strId"></param>
- private async void SetTickIsRead(string strId)
+ private async System.Threading.Tasks.Task<bool> SetTickIsRead(string strId)
{
- var pra = new { Id = strId };
- //await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/TickIsRead", true, pra);
+ string strUrl = "ZigbeeUsers/TickIsRead?Id=" + strId;
+
+ var result = await Common.CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync(strUrl, null, "GET");
+ if (result == null)
+ {
+ return UserCenterLogic.CheckNotEorrorMsg(null, "ZigbeeUsers/TickIsRead", null, null);
+ }
+ //浜戠鏄笉浼氳繑鍥炰笢瑗跨殑
+ return true;
+ }
+
+ /// <summary>
+ /// 璁剧疆鍏ㄩ儴涓哄凡璇�
+ /// </summary>
+ private void SetAllTickIsRead()
+ {
+ if (dicAllRow.Count == 0)
+ {
+ return;
+ }
+ //纭鏍囪鍏ㄩ儴娑堟伅涓哄凡璇�?
+ this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uUnTipAllMessageMsg), () =>
+ {
+ HdlThreadLogic.Current.RunThread(async () =>
+ {
+ //鎵撳紑杩涘害鏉�
+ this.ShowProgressBar();
+ foreach (var contr in this.dicAllRow.Values)
+ {
+ //鏍囪瘑鍏ㄩ儴涓哄凡璇�
+ var result = await this.SetTickIsRead(contr.MainKeys);
+ if (result == false)
+ {
+ //鍏抽棴杩涘害鏉�
+ this.CloseProgressBar();
+ return;
+ }
+ }
+ //鍏抽棴杩涘害鏉�
+ this.CloseProgressBar();
+
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //璁剧疆鍏ㄩ儴鐘舵��
+ foreach (var contr in this.dicAllRow.Values)
+ {
+ contr.frameTable.ButtonClickEvent?.Invoke(null, null);
+ }
+ });
+ });
+ });
}
#endregion
@@ -259,19 +341,58 @@
/// <param name="rowContr"></param>
private async System.Threading.Tasks.Task<bool> DeleteMsg(string strId, FrameListControl frameList, RowLayoutControl rowContr)
{
- var pra = new { Id = strId };
- //var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/DeletePushMessage", true, pra);
- //if (result == true && frameList != null)
+ string strUrl = "ZigbeeUsers/DeletePushMessage?Id=" + strId;
+
+ var result = await Common.CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync(strUrl, null, "GET");
+ if (result == null)
+ {
+ return UserCenterLogic.CheckNotEorrorMsg(null, "ZigbeeUsers/DeletePushMessage", null, null);
+ }
+ //浜戠鏄笉浼氳繑鍥炰笢瑗跨殑
+ if (frameList != null)
{
HdlThreadLogic.Current.RunMain(() =>
{
- rowContr.RemoveFromParent();
+ //绉婚櫎缂撳瓨
+ this.dicAllRow.Remove(frameList.Name + "-" + rowContr.Name);
//璋冩暣鎺т欢浣嶇疆
- this.AdjustControlLocation(frameList);
+ this.AdjustControlLocation(frameList, rowContr);
});
}
- //return result;
return true;
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍏ㄩ儴鐨勬秷鎭�
+ /// </summary>
+ private void DeleteAllMsg()
+ {
+ if (dicAllRow.Count == 0)
+ {
+ return;
+ }
+ //纭鍒犻櫎鍏ㄩ儴娑堟伅?
+ this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteAllMessageMsg), () =>
+ {
+ HdlThreadLogic.Current.RunThread(async () =>
+ {
+ //鎵撳紑杩涘害鏉�
+ this.ShowProgressBar();
+ foreach (var contr in this.dicAllRow.Values)
+ {
+ //鍒犻櫎鍏ㄩ儴娑堟伅
+ var result = await this.DeleteMsg(contr.MainKeys, null, null);
+ if (result == false)
+ {
+ //鍏抽棴杩涘害鏉�
+ this.CloseProgressBar();
+ return;
+ }
+ }
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleData(true);
+ });
+ });
}
#endregion
@@ -282,25 +403,19 @@
/// 璋冩暣鎺т欢浣嶇疆
/// </summary>
/// <param name="frameList"></param>
- private void AdjustControlLocation(FrameListControl frameList)
+ private void AdjustControlLocation(FrameListControl frameList, RowLayoutControl removeRow)
{
- int nowHeight = frameList.Height;
- int changedHeight = 0;
- if (frameList.ChildrenCount <= 1)
+ int changedHeight = frameList.GetChildren(frameList.ChildrenCount - 1).Height;
+ if (frameList.ChildrenCount <= 2)
{
//宸茬粡鍒犲畬浜�,鍙墿涓嬫爣棰樻棩鏈熶簡
- frameList.RemoveFromParent();
- changedHeight = nowHeight;
+ changedHeight = frameList.Height;
}
- else
- {
- frameList.Height = frameList.GetChildren(frameList.ChildrenCount - 1).Bottom;
- changedHeight = nowHeight - frameList.Height;
- }
+ //鍏堣皟鏁村悇鑷鍣ㄧ殑Y杞村潗鏍�
bool canChangedLoaction = false;
- for (int i = 0; i < this.listView.ChildrenCount; i++)
+ for (int i = 0; i < this.listView.frameTable.ChildrenCount; i++)
{
- var myView = this.listView.GetChildren(i);
+ var myView = this.listView.frameTable.GetChildren(i);
if (myView.Name == frameList.Name)
{
//瀹冧箣鍚庣殑鎺т欢鍏ㄩ儴寰�涓婄Щ鍔�
@@ -312,11 +427,61 @@
myView.Y -= changedHeight;
}
}
+ //璋冩暣鐖跺鍣ㄥぇ灏�
+ this.listView.AdjustTableHeight();
+
+
+ if (frameList.ChildrenCount <= 2)
+ {
+ //宸茬粡鍒犲畬浜�,鍙墿涓嬫爣棰樻棩鏈熶簡
+ frameList.RemoveFromParent();
+ }
+ else
+ {
+ //杩欎釜瀹瑰櫒閲岄潰琚Щ闄ょ殑琛岀殑涓嬮潰鐨勫叏閮ㄨ,寰�涓婄Щ鍔�
+ bool changedFlage = false;
+ for (int i = 0; i < frameList.ChildrenCount; i++)
+ {
+ var myView = frameList.GetChildren(i);
+ if (myView.Name == removeRow.Name)
+ {
+ //瀹冧箣鍚庣殑鎺т欢鍏ㄩ儴寰�涓婄Щ鍔�
+ changedFlage = true;
+ continue;
+ }
+ if (changedFlage == true)
+ {
+ myView.Y -= changedHeight;
+ }
+ }
+ //绉婚櫎鎸囧畾鐨勮
+ removeRow.RemoveFromParent();
+ //瀹瑰櫒澶у皬鍑忓皯
+ frameList.Height -= changedHeight;
+ }
}
#endregion
- #region 鈻� 鍚堝苟鏁版嵁___________________________
+ #region 鈻� 鑾峰彇鏁版嵁___________________________
+
+ /// <summary>
+ /// 鑾峰彇娑堟伅璁板綍
+ /// </summary>
+ /// <returns></returns>
+ private async System.Threading.Tasks.Task<Dictionary<string, List<MessageRecordInfo>>> GetMessageData()
+ {
+ this.dicAllRow = new Dictionary<string, RowLayoutControl>();
+
+ var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetPushMessageRecord", false, "");
+ if (result == null)
+ {
+ return null;
+ }
+ var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MessageRecordInfo>>(result);
+ //鍚堝苟鏁版嵁
+ return this.MergeMessageRecordData(dataInfo);
+ }
/// <summary>
/// 鍚堝苟鏁版嵁
@@ -345,46 +510,19 @@
var listData = dicTemp[listSortKeys[i]];
foreach (var data2 in listData)
{
- string[] myArry = data2.MsgTime.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
- if (dicData.ContainsKey(myArry[1]) == false)
+ string[] myArry = data2.MsgTime.Split(new string[] { "T" }, StringSplitOptions.RemoveEmptyEntries);
+ if (myArry.Length != 2)
{
- dicData[myArry[1]] = new List<MessageRecordInfo>();
+ continue;
}
- dicData[myArry[1]].Add(data2);
+ if (dicData.ContainsKey(myArry[0]) == false)
+ {
+ dicData[myArry[0]] = new List<MessageRecordInfo>();
+ }
+ dicData[myArry[0]].Add(data2);
}
}
return dicData;
- }
-
- #endregion
-
- #region 鈻� 缁撴瀯浣揰____________________________
-
- /// <summary>
- /// 淇℃伅缁撴灉
- /// </summary>
- private class MessageRecordInfo
- {
- /// <summary>
- /// 涓婚敭
- /// </summary>
- public string RegId = string.Empty;
- /// <summary>
- /// 娑堟伅鍐呭
- /// </summary>
- public string MsgContent = string.Empty;
- /// <summary>
- /// MsgType
- /// </summary>
- public string MsgType = string.Empty;
- /// <summary>
- /// 鏄惁宸茶
- /// </summary>
- public int IsRead = 0;
- /// <summary>
- /// 鏃堕棿 2019-09-10 13:11:55
- /// </summary>
- public string MsgTime = string.Empty;
}
#endregion
--
Gitblit v1.8.0