From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期一, 14 十二月 2020 09:59:01 +0800 Subject: [PATCH] 请合并代码,完成晾衣架最终功能。 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafeguardLogControl.cs | 373 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 373 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafeguardLogControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafeguardLogControl.cs new file mode 100755 index 0000000..e74e709 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafeguardLogControl.cs @@ -0,0 +1,373 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Text; + +namespace Shared.Phone.UserCenter +{ + /// <summary> + /// 瀹夐槻璁板綍鎺т欢 + /// </summary> + public class SafeguardLogControl : FrameLayout + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 浠婃棩鏃犱换浣曟姤璀﹁褰� 鐨勬帶浠� + /// </summary> + private NormalViewControl btnMsg = null; + /// <summary> + /// 鍚勯槻鍖虹殑妗屽竷鎺т欢 + /// </summary> + private Dictionary<int, FrameLayout> dicFrame = new Dictionary<int, FrameLayout>(); + /// <summary> + /// 鍚勯槻鍖虹殑琛屾帶浠� + /// </summary> + private Dictionary<int, List<FrameLayout>> dicRowFrame = new Dictionary<int, List<FrameLayout>>(); + /// <summary> + /// 妗屽竷鎺т欢 + /// </summary> + private FrameLayout frameTable = null; + /// <summary> + /// 寮�鏀捐繖涓帶浠跺嚭鏉�,鏈夌偣鐢� + /// </summary> + private NormalViewControl btnTime = null; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鍒濆鍖� + /// </summary> + public SafeguardLogControl() + { + this.Height = Application.GetRealHeight(260 + 44); + } + + /// <summary> + /// 鍒濆鍖� + /// </summary> + /// <param name="dayText">鏃ユ湡</param> + /// <param name="dicInfo">闃插尯鎶ヨ淇℃伅</param> + public void InitControl(string dayText, Dictionary<int, List<SafeguardAlarmInfo>> dicInfo) + { + this.frameTable = new FrameLayout(); + frameTable.Gravity = Gravity.CenterHorizontal; + frameTable.Radius = (uint)Application.GetRealHeight(17); + frameTable.Height= Application.GetRealHeight(260); + frameTable.Width = Application.GetRealWidth(968); + frameTable.BackgroundColor = UserCenterColor.Current.White; + this.AddChidren(frameTable); + + //璁板綍鏃堕棿 + this.btnTime = new NormalViewControl(300, 58, true); + btnTime.X = Application.GetRealWidth(35); + btnTime.Y = Application.GetRealHeight(29); + btnTime.TextColor = UserCenterColor.Current.TextGrayColor3; + btnTime.TextID = R.MyInternationalizationString.uRecordTime; + this.frameTable.AddChidren(btnTime); + + //鏃ユ湡 + string month = dayText.Substring(4, 2); + string day = dayText.Substring(6, 2); + var btnDay = new NormalViewControl(300, 58, true); + btnDay.X = frameTable.Width - Application.GetRealWidth(300 + 35); + btnDay.Y = btnTime.Y; + btnDay.TextColor = UserCenterColor.Current.TextColor2; + btnDay.TextAlignment = TextAlignment.CenterRight; + btnDay.Text = month + Language.StringByID(R.MyInternationalizationString.Month) + day + Language.StringByID(R.MyInternationalizationString.Day); + this.frameTable.AddChidren(btnDay); + + //绾� + var btnLine = new NormalViewControl(Application.GetRealWidth(904), ControlCommonResourse.BottomLineHeight, false); + btnLine.X = Application.GetRealWidth(29); + btnLine.Y = Application.GetRealHeight(98); + btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine; + this.frameTable.AddChidren(btnLine); + + //棰勫垱寤轰簲澶ч槻鍖虹殑妗屽竷 + var listId = new List<int>() { 1, 2, 4, 5, 3 }; + int tempY = 0; + for (int i = 0; i < listId.Count; i++) + { + var frame1 = new FrameLayout(); + frame1.Height = Application.GetRealHeight(10); + frame1.Y = tempY == 0 ? Application.GetRealHeight(98) : tempY; + this.frameTable.AddChidren(frame1); + dicFrame[listId[i]] = frame1; + dicRowFrame[listId[i]] = new List<FrameLayout>(); + + //鍒濆鍖栭槻鍖烘爣棰樻帶浠� + this.InitGarrisonTitleControl(listId[i]); + + if (dicInfo != null && dicInfo.ContainsKey(listId[i]) == true && dicInfo[listId[i]].Count > 0) + { + var listRow = dicRowFrame[listId[i]]; + foreach (var alarmInfo in dicInfo[listId[i]]) + { + //涓�鏉′俊鎭噷闈紝瀹冨彲鑳藉寘鍚涓姤璀� + var listMsg = HdlAlarmsLogic.Current.GetSensorListAlarmMsg(alarmInfo); + foreach (var strMsg in listMsg) + { + //娣诲姞鎶ヨ淇℃伅鎺т欢 + var contr = this.AddAlarmInfoControl(alarmInfo, strMsg); + if (listRow.Count != 0) + { + contr.Y = listRow[listRow.Count - 1].Bottom + Application.GetRealHeight(23); + } + listRow.Add(contr); + } + } + //鍙樻洿楂樺害 + frame1.Height = listRow[listRow.Count - 1].Bottom + Application.GetRealHeight(55); + this.frameTable.Height = frame1.Bottom; + this.Height = frame1.Bottom + Application.GetRealHeight(44); + tempY = frame1.Bottom; + } + else + { + frame1.Visible = false; + } + } + + if (dicInfo == null || dicInfo.Count == 0) + { + //浠婃棩鏃犱换浣曟姤璀﹁褰� + btnMsg = new NormalViewControl(frameTable.Width, Application.GetRealHeight(60), false); + btnMsg.Y = btnLine.Bottom + Application.GetRealHeight(28); + btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3; + btnMsg.TextID = R.MyInternationalizationString.uNowDayNotHadAlarmLog; + btnMsg.TextAlignment = TextAlignment.Center; + this.frameTable.AddChidren(btnMsg); + } + //娣诲姞搴曢儴闃村奖鐗规晥 + this.frameTable.SetViewShadow(true); + } + + #endregion + + #region 鈻� 鍒濆鍖栭槻鍖烘爣棰樻帶浠禵________________ + + /// <summary> + /// 鍒濆鍖栭槻鍖烘爣棰樻帶浠� + /// </summary> + /// <param name="zoneId"></param> + private void InitGarrisonTitleControl(int zoneId) + { + FrameLayout frame = dicFrame[zoneId]; + //鍥炬爣 + var btnIcon = new IconViewControl(69); + btnIcon.X = Application.GetRealWidth(29); + btnIcon.Y = Application.GetRealHeight(23); + //鍙細鏄�1~5 + if (zoneId == 1 || zoneId == 2) + { + btnIcon.UnSelectedImagePath = "Safeguard/ProtectionAtHome.png"; + } + else + { + btnIcon.UnSelectedImagePath = "Safeguard/ProtectionRemoveHome.png"; + } + frame.AddChidren(btnIcon); + //闃插尯鍚� + var btnName = new NormalViewControl(400, 58, true); + btnName.X = Application.GetRealWidth(109); + btnName.Y = Application.GetRealHeight(35); + btnName.Text = HdlSafeguardLogic.Current.GetGarrisonText(zoneId); + frame.AddChidren(btnName); + //宸插惎鍔� + var btnStatu = new NormalViewControl(300, 46, true); + btnStatu.X = frame.Width - Application.GetRealWidth(300 + 35); + btnStatu.Y = Application.GetRealHeight(35); + btnStatu.TextSize = 12; + btnStatu.TextColor = UserCenterColor.Current.TextGrayColor1; + btnStatu.TextAlignment = TextAlignment.CenterRight; + btnStatu.TextID = R.MyInternationalizationString.uHadStarted; + frame.AddChidren(btnStatu); + //绌虹櫧琛� + var btnSpace = new FrameLayout(); + btnSpace.Height = Application.GetRealHeight(46); + btnSpace.Y = btnIcon.Bottom; + frame.AddChidren(btnSpace); + } + + #endregion + + #region 鈻� 娣诲姞鎶ヨ淇℃伅_______________________ + + /// <summary> + /// 娣诲姞鎶ヨ淇℃伅 + /// </summary> + /// <param name="alarmInfo"></param> + /// <returns></returns> + public int AddSafeguardAlarmInfo(SafeguardAlarmInfo alarmInfo) + { + if (dicFrame.ContainsKey(alarmInfo.ZoneId) == false) + { + return -1; + } + //涓�鏉′俊鎭噷闈紝瀹冨彲鑳藉寘鍚涓姤璀� + var listMsg = HdlAlarmsLogic.Current.GetSensorListAlarmMsg(alarmInfo); + int valueCount = 0; + foreach (var strMsg in listMsg) + { + //涓�涓姤璀︿俊鎭紝涓�涓帶浠� + int value = this.AddSafeguardAlarmInfo2(alarmInfo, strMsg); + //杩欎釜value鏄帶浠跺鍔犵殑楂樺害鍊� + valueCount += value; + } + return valueCount; + } + + /// <summary> + /// 娣诲姞鎶ヨ淇℃伅(涓�涓姤璀︿俊鎭紝涓�涓帶浠�) + /// </summary> + /// <param name="alarmInfo"></param> + /// <param name="strMsg">閽堝涓�鏉℃暟鎹噷闈㈠寘鍚涓姤璀︾殑闂锛岃拷鍔犵殑鎶ヨ鏂囨湰</param> + /// <returns></returns> + private int AddSafeguardAlarmInfo2(SafeguardAlarmInfo alarmInfo, string strMsg) + { + if (dicFrame.ContainsKey(alarmInfo.ZoneId) == false) + { + return -1; + } + if (btnMsg != null) + { + //绉婚櫎淇℃伅鎻愮ず鎺т欢 + btnMsg.RemoveFromParent(); + btnMsg = null; + } + var listRow = dicRowFrame[alarmInfo.ZoneId]; + if (listRow.Count == 0) + { + dicFrame[alarmInfo.ZoneId].Visible = true; + //閲嶇疆妗屽竷闂寸殑闂磋窛 + int tempY = 0; + foreach (var frame in dicFrame.Values) + { + if (frame.Visible == true) + { + frame.Y = tempY == 0 ? Application.GetRealHeight(98) : tempY; + tempY = frame.Bottom; + } + } + } + + //娣诲姞鎶ヨ淇℃伅鎺т欢 + var frameRow = this.AddAlarmInfoControl(alarmInfo, strMsg); + if (listRow.Count >= 100) + { + //绉婚櫎鏈�鍚庝竴涓� + listRow[listRow.Count - 1].RemoveFromParent(); + listRow.RemoveAt(listRow.Count - 1); + } + //褰撳墠杩欎釜闃插尯鐨勫叏閮ㄨ鎺т欢寰�涓嬬Щ鍔� + foreach (var row in listRow) + { + row.Y += frameRow.Height + Application.GetRealHeight(23); + } + listRow.Insert(0, frameRow); + + var value = listRow[listRow.Count - 1].Bottom + Application.GetRealHeight(55) - dicFrame[alarmInfo.ZoneId].Height; + if (value <= 0) + { + return 0; + } + + //鍙樻洿楂樺害 + dicFrame[alarmInfo.ZoneId].Height += value; + //瀹冧箣涓嬬殑鍏ㄩ儴妗屽竷鍏ㄩ儴寰�涓嬬Щ鍔� + bool canMove = false; + int realHeight = 0; + foreach (var id in dicFrame.Keys) + { + if (id == alarmInfo.ZoneId) + { + //褰撳墠鐨勬甯� + canMove = true; + } + else if (canMove == true) + { + dicFrame[id].Y += value; + } + if (canMove == true && dicFrame[id].Visible == true) + { + //璁板綍璧锋渶鍚庝竴涓狥rameLayout鐨勫簳閮� + realHeight = dicFrame[id].Bottom; + } + } + if (realHeight > 0) + { + //鍙樻洿鏁翠釜鎺т欢鐨勭湡瀹為珮搴� + this.frameTable.Height = realHeight; + this.Height = realHeight + Application.GetRealHeight(44); + } + //娣诲姞搴曢儴闃村奖鐗规晥 + this.frameTable.SetViewShadow(true); + + return value; + } + + /// <summary> + /// 娣诲姞鎶ヨ淇℃伅鎺т欢 + /// </summary> + /// <param name="alarmInfo"></param> + /// <returns></returns> + private FrameLayout AddAlarmInfoControl(SafeguardAlarmInfo alarmInfo, string strMsg) + { + var frame = dicFrame[alarmInfo.ZoneId]; + + var rowFrame = new FrameLayout(); + rowFrame.Y = Application.GetRealHeight(130); + rowFrame.Height = Application.GetRealHeight(58); + frame.AddChidren(rowFrame); + + //鎴块棿 + var btnRoom = new NormalViewControl(165, 58, true); + btnRoom.X = Application.GetRealWidth(35); + btnRoom.TextColor = UserCenterColor.Current.TextGrayColor3; + btnRoom.Text = alarmInfo.RoomName; + rowFrame.AddChidren(btnRoom); + //璁惧 + string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(alarmInfo.DeviceAddr, alarmInfo.DeviceEpoint); + var device = Common.LocalDevice.Current.GetDevice(mainkeys); + var btnDevice = new NormalViewControl(271, 58, true); + btnDevice.X = Application.GetRealWidth(199); + btnDevice.TextColor = UserCenterColor.Current.TextGrayColor3; + btnDevice.Text = device == null ? alarmInfo.DeviceName : Common.LocalDevice.Current.GetDeviceEpointName(device); + rowFrame.AddChidren(btnDevice); + //鎶ヨ淇℃伅 + var btnMsg = new NormalViewControl(303, 58, true); + btnMsg.X = Application.GetRealWidth(469); + btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3; + btnMsg.Text = strMsg; + rowFrame.AddChidren(btnMsg); + //鏃堕棿锛氭椂鍒嗙 + var btnTime = new NormalViewControl(190, 58, true); + btnTime.X = Application.GetRealWidth(758); + btnTime.TextColor = UserCenterColor.Current.TextGrayColor3; + btnTime.TextAlignment = TextAlignment.CenterRight; + btnTime.Text = alarmInfo.Time; + rowFrame.AddChidren(btnTime); + + return rowFrame; + } + + #endregion + + #region 鈻� 鎺т欢閿�姣乢__________________________ + + /// <summary> + /// 鎺т欢閿�姣� + /// </summary> + public override void RemoveFromParent() + { + dicRowFrame.Clear(); + dicFrame.Clear(); + + base.RemoveFromParent(); + } + + #endregion + } +} -- Gitblit v1.8.0