From b02e8275a21dc06bf54b66273485d44e007a2616 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期一, 20 七月 2020 14:50:17 +0800
Subject: [PATCH] 新代码
---
ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorTargetSelectForm.cs | 376 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 376 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorTargetSelectForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorTargetSelectForm.cs
new file mode 100755
index 0000000..068bec2
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorTargetSelectForm.cs
@@ -0,0 +1,376 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter.DevicePirSensor
+{
+ /// <summary>
+ /// PIR浼犳劅鍣ㄧ殑瑙﹀彂鐩爣閫夋嫨鐣岄潰
+ /// </summary>
+ public class PirSensorTargetSelectForm : EditorCommonForm
+ {
+ #region 鈻� 鍙橀噺澹版槑___________________________
+
+ /// <summary>
+ /// 缁撴潫閫夋嫨鐨勪簨浠�(璁惧涓婚敭)
+ /// </summary>
+ public Action<List<string>> FinishSelectEvent = null;
+ /// <summary>
+ /// 褰撳墠閫夋嫨鐨勬ゼ灞侷D
+ /// </summary>
+ private string nowSelectFloorId = string.Empty;
+ /// <summary>
+ /// 妗屽竷鎺т欢
+ /// </summary>
+ private NormalFrameLayout frameTable = null;
+ /// <summary>
+ /// 鎴块棿瀵硅薄
+ /// </summary>
+ private Dictionary<string, List<Common.Room>> dicRoom = new Dictionary<string, List<Common.Room>>();
+ /// <summary>
+ /// 宸茬粡瀛樺湪鐨勭粦瀹氳澶�
+ /// </summary>
+ private List<string> listEsixtDevice = new List<string>();
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖朹____________________________
+
+ /// <summary>
+ /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+ /// </summary>
+ /// <param name="i_listEsixtDevice">瀛樺湪鐨勮澶�</param>
+ public void ShowForm(List<string> i_listEsixtDevice)
+ {
+ this.listEsixtDevice.AddRange(i_listEsixtDevice);
+
+ //璁剧疆澶撮儴淇℃伅
+ base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uTriggerTarget));
+
+ //鍒濆鍖栧彸涓婅鐨勬帶浠�
+ this.InitTopRightMenuControl();
+
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleFrame();
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+ /// </summary>
+ private void InitMiddleFrame()
+ {
+ //娓呯┖bodyFrame
+ this.ClearBodyFrame();
+
+ //鎴块棿鐨勫鍣ㄦ帶浠�
+ var frameBack = new FrameLayout();
+ frameBack.Height = Application.GetRealHeight(204);
+ bodyFrameLayout.AddChidren(frameBack);
+
+ //妗屽竷鎺т欢
+ this.frameTable = new NormalFrameLayout();
+ frameTable.Y = frameBack.Bottom;
+ frameTable.Height = bodyFrameLayout.Height - frameBack.Height;
+ bodyFrameLayout.AddChidren(frameTable);
+
+ //鍏朵粬
+ var tempRoom = new Common.Room();
+ tempRoom.Name = Language.StringByID(R.MyInternationalizationString.uOther);
+ foreach (var mainKeys in this.listEsixtDevice)
+ {
+ var device = Common.LocalDevice.Current.GetDevice(mainKeys);
+ if (device == null)
+ {
+ continue;
+ }
+ //杩欎釜鎵嬫満寮勫紕,閭d釜鎵嬫満寮勫紕鐨勬儏鍐典笅,
+ //閲囩敤鍚庡鎿嶄綔 -> 鏂板缓涓�涓复鏃舵埧闂村璞″嚭鏉�
+ if (HdlRoomLogic.Current.GetRoomByDevice(device) == null)
+ {
+ tempRoom.ListDevice.Add(Common.LocalDevice.Current.GetDeviceMainKeys(device));
+ }
+ }
+
+ HdlThreadLogic.Current.RunMainInThread(() =>
+ {
+ if (dicRoom.ContainsKey(nowSelectFloorId) == true && dicRoom[nowSelectFloorId].Count > 0)
+ {
+ //鍒濆鍖栨埧闂存帶浠�
+ var listRoom = new List<Common.Room>();
+ listRoom.AddRange(dicRoom[nowSelectFloorId]);
+ if (tempRoom.ListDevice.Count > 0)
+ {
+ //鏄剧ず鏂板缓鐨勪复鏃舵埧闂村璞�
+ listRoom.Add(tempRoom);
+ }
+ var roomContr = new RoomDeviceGroupMenuControl(listRoom);
+ frameBack.AddChidren(roomContr);
+ roomContr.SelectRoomEvent += (myRoom) =>
+ {
+ //鍒濆鍖栬澶囪
+ this.InitDeviceControl(myRoom);
+ };
+ roomContr.InitControl();
+
+ //纭畾鎸夐挳
+ var btnOk = new BottomClickButton();
+ btnOk.TextID = R.MyInternationalizationString.uConfirm1;
+ bodyFrameLayout.AddChidren(btnOk);
+ btnOk.ButtonClickEvent += (sender, e) =>
+ {
+ //璋冪敤鍥炶皟鍑芥暟
+ this.FinishSelectEvent?.Invoke(listEsixtDevice);
+ //鐣岄潰鍏抽棴
+ this.CloseForm();
+ };
+ }
+ else
+ {
+ //娌℃湁鍙互娣诲姞鐨勭洰鏍�
+ this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uNotHadAddTarget));
+ }
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖栧彸涓婅鐨勬帶浠禵________________
+
+ /// <summary>
+ /// 鍒濆鍖栧彸涓婅鐨勬帶浠�
+ /// </summary>
+ private void InitTopRightMenuControl()
+ {
+ //鎴块棿鍒嗙粍
+ var listRoom = HdlRoomLogic.Current.GetAllListRooms();
+ foreach (var room in listRoom)
+ {
+ //妫�娴嬭鎴块棿鑳藉惁鏄剧ず
+ if (this.CheckCanShowRow(room) == false)
+ {
+ continue;
+ }
+ if (dicRoom.ContainsKey(room.FloorId) == false)
+ {
+ dicRoom[room.FloorId] = new List<Common.Room>();
+ }
+ dicRoom[room.FloorId].Add(room);
+ }
+ if (dicRoom.Count == 0)
+ {
+ //榛樿涓�涓┖鐨勪笢瑗�
+ dicRoom[string.Empty] = new List<Common.Room>();
+ }
+
+ //鑾峰彇妤煎眰
+ var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
+ if (dicFloor.Count == 0)
+ {
+ return;
+ }
+ int indexTemp = 1;
+ foreach (var floorId in dicRoom.Keys)
+ {
+ if (dicFloor.ContainsKey(floorId) == false)
+ {
+ //杩欐槸澶氬彴鎵嬫満鐬庢悶涔嬪悗鍑虹幇鐨勫悗澶囪ˉ鏁戞帾鏂�
+ dicFloor[floorId] = Language.StringByID(R.MyInternationalizationString.uOther) + indexTemp;
+ indexTemp++;
+ }
+ }
+
+ var btnIconContr = new MostRightIconControl(69, 69);
+ btnIconContr.UnSelectedImagePath = "Item/Drop_Down.png";
+ topFrameLayout.AddChidren(btnIconContr);
+ btnIconContr.InitControl();
+
+ var btnFloor = new NormalViewControl(300, 69, true);
+ btnFloor.Gravity = Gravity.CenterVertical;
+ btnFloor.X = btnIconContr.X + btnIconContr.btnIcon.X - Application.GetRealWidth(300);
+ btnFloor.TextAlignment = TextAlignment.CenterRight;
+ topFrameLayout.AddChidren(btnFloor);
+
+ foreach (var floorId in dicFloor.Keys)
+ {
+ //绗竴涓ゼ灞�
+ this.nowSelectFloorId = floorId;
+ btnFloor.Text = dicFloor[floorId];
+ break;
+ }
+
+ btnIconContr.ButtonClickEvent += (sender, e) =>
+ {
+ //妤煎眰鑿滃崟
+ var contr = new TopRightMenuControl(dicFloor.Count, 2, Language.StringByID(R.MyInternationalizationString.SelectFloor));
+ foreach (var floorId in dicFloor.Keys)
+ {
+ contr.AddRowMenu(dicFloor[floorId], "Floor/Floor.png", "Floor/FloorSelected.png", () =>
+ {
+ //璁板綍璧烽�夋嫨鐨処D
+ this.nowSelectFloorId = floorId;
+ btnFloor.Text = dicFloor[this.nowSelectFloorId];
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleFrame();
+ });
+ }
+ };
+ }
+ #endregion
+
+ #region 鈻� 鍒濆鍖栬澶囨帶浠禵____________________
+
+ /// <summary>
+ /// 鍒濆鍖栬澶囨帶浠�
+ /// </summary>
+ /// <param name="room"></param>
+ private void InitDeviceControl(Common.Room room)
+ {
+ //鍏堟竻绌�
+ this.frameTable.RemoveAll();
+
+ var frameBack = new FrameLayout();
+ frameBack.Height = Application.GetRealHeight(11);
+ frameBack.BackgroundColor = UserCenterColor.Current.White;
+ frameTable.AddChidren(frameBack);
+
+ var listView = new VerticalListControl(12);
+ listView.Y = frameBack.Bottom;
+ listView.Height = frameTable.Height - frameBack.Height;
+ listView.BackgroundColor = UserCenterColor.Current.White;
+ frameTable.AddChidren(listView);
+
+ var listDevice = new List<ZigBee.Device.CommonDevice>();
+ foreach (var deviceKeys in room.ListDevice)
+ {
+ var device = Common.LocalDevice.Current.GetDevice(deviceKeys);
+ //妫�娴嬭澶�
+ if (this.CheckCanShowDevice(device) == true)
+ {
+ listDevice.Add(device);
+ }
+ }
+
+ for (int i = 0; i < listDevice.Count; i++)
+ {
+ var device = listDevice[i];
+ string mainKey = Common.LocalDevice.Current.GetDeviceMainKeys(device);
+
+ var rowDevice = new FrameRowControl(listView.rowSpace / 2);
+ listView.AddChidren(rowDevice);
+ //鍥炬爣
+ var btnIcon = rowDevice.AddLeftIcon(81);
+ Common.LocalDevice.Current.SetDeviceIconToControl(btnIcon, device);
+ //璁惧鍚嶇О
+ var btnName = rowDevice.AddLeftCaption(Common.LocalDevice.Current.GetDeviceEpointName(device), 700);
+ btnName.TextSize = 15;
+ //閫夋嫨
+ var btnSelect = rowDevice.AddMostRightEmptyIcon(58, 58);
+ if (listEsixtDevice.Contains(mainKey) == false)
+ {
+ btnSelect.Visible = false;
+ }
+ btnSelect.UnSelectedImagePath = "Item/ItemSelected.png";
+ if (i != listDevice.Count - 1)
+ {
+ //搴曠嚎
+ rowDevice.AddBottomLine();
+ }
+
+ rowDevice.ButtonClickEvent += (sender, e) =>
+ {
+ btnSelect.Visible = !btnSelect.Visible;
+ if (btnSelect.Visible == true)
+ {
+ listEsixtDevice.Add(mainKey);
+ }
+ else
+ {
+ listEsixtDevice.Remove(mainKey);
+ }
+ };
+ }
+ listDevice = null;
+ //璋冩暣鎺т欢鐪熷疄楂樺害
+ listView.AdjustRealHeight(Application.GetRealHeight(23));
+ //鍊熺敤杩欎釜涓滆タ杩涜妫�娴�
+ var btnTemp = new BottomClickButton();
+ //濡傛灉鐪熷疄楂樺害宸茬粡瓒呰繃浜嗙‘瀹氭寜閿�
+ if (listView.Bottom + frameTable.Y > btnTemp.Yaxis)
+ {
+ listView.Height = frameTable.Height - frameBack.Height;
+ var frameTemp = new FrameLayout();
+ frameTemp.Height = bodyFrameLayout.Height - btnTemp.Yaxis;
+ listView.AddChidren(frameTemp);
+ }
+ }
+
+ #endregion
+
+ #region 鈻� 涓�鑸柟娉昣__________________________
+
+ /// <summary>
+ /// 妫�娴嬭鎴块棿鑳藉惁鏄剧ず
+ /// </summary>
+ /// <param name="room"></param>
+ /// <returns></returns>
+ private bool CheckCanShowRow(Common.Room room)
+ {
+ if (room.ListDevice.Count == 0)
+ {
+ return false;
+ }
+ if (room.IsLove == true)
+ {
+ return false;
+ }
+ foreach (var deviceKeys in room.ListDevice)
+ {
+ //妫�娴嬭璁惧鑳藉惁鏄剧ず
+ var device = Common.LocalDevice.Current.GetDevice(deviceKeys);
+ if (this.CheckCanShowDevice(device) == false)
+ {
+ continue;
+ }
+
+ //瀛樺湪璁惧鐨勮瘽锛屾鎴块棿鍙互鏄剧ず
+ return true;
+ }
+ return false;
+ }
+
+ /// <summary>
+ /// 妫�娴嬭璁惧鑳藉惁鏄剧ず
+ /// </summary>
+ /// <param name="device"></param>
+ /// <returns></returns>
+ private bool CheckCanShowDevice(ZigBee.Device.CommonDevice device)
+ {
+ if (device == null)
+ {
+ return false;
+ }
+ //濡傛灉鏄紶鎰熷櫒锛屾垨鑰呮槸娌℃湁寮�鍏崇皣鐨勮瘽(杩欓噷鍒ゆ柇鐨勬槸杈撳叆绨�)
+ if ((device.Type == ZigBee.Device.DeviceType.IASZone) || Common.LocalDevice.Current.InDeviceIsCanOnOff(device) == false)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ #endregion
+
+ #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+ /// <summary>
+ /// 鐣岄潰鍏抽棴
+ /// </summary>
+ public override void CloseFormBefore()
+ {
+ this.FinishSelectEvent = null;
+
+ base.CloseFormBefore();
+ }
+
+ #endregion
+ }
+}
--
Gitblit v1.8.0