From 6bca8fcd37a48808a0b9c9342fc1be0adddfece6 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期五, 08 五月 2020 17:46:44 +0800
Subject: [PATCH] 请合并最新代码,优化绑定信息
---
ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs | 391 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 391 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs
new file mode 100755
index 0000000..945475a
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs
@@ -0,0 +1,391 @@
+锘縰sing System;
+using System.Collections.Generic;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter.Safety
+{
+ /// <summary>
+ /// 娣诲姞鎶ヨ鐩爣鑿滃崟鍒楄〃鐨勭敾闈�
+ /// </summary>
+ public class AlarmTargetAddMenuForm : EditorCommonForm
+ {
+ #region 鈻� 鍙橀噺澹版槑___________________________
+
+ /// <summary>
+ /// 闃插尯ID(杩欎釜涓滆タ浼间箮鏄敮涓�鐨�)
+ /// </summary>
+ private int zoonID = 0;
+ /// <summary>
+ /// 鍒楄〃鎺т欢
+ /// </summary>
+ private VerticalListControl listView = null;
+ /// <summary>
+ /// 鍏ㄩ儴鐨勬暟鎹�(keys1:鎴块棿ID Keys2:R鏂囦欢鐨勬暟鍊�)
+ /// </summary>
+ private Dictionary<string, Dictionary<int, uRowInformation>> dicAllData = new Dictionary<string, Dictionary<int, uRowInformation>>();
+ /// <summary>
+ /// 褰撳墠閫夋嫨鐨勬ゼ灞侷D
+ /// </summary>
+ private string nowSelectFloorId = string.Empty;
+ /// <summary>
+ /// 褰撳墠閫夋嫨鐨勬埧闂�
+ /// </summary>
+ private Common.Room nowSelectRoom = null;
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖朹____________________________
+
+ /// <summary>
+ /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+ /// </summary>
+ /// <param name="i_zoonID">闃插尯ID</param>
+ public void ShowForm(int i_zoonID)
+ {
+ this.zoonID = i_zoonID;
+
+ //璁剧疆澶撮儴淇℃伅
+ base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddAlarmTarget));
+
+ //鍒濆鍖栧彸涓婅鐨勬帶浠�
+ this.InitTopRightMenuControl();
+
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleFrame();
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+ /// </summary>
+ private void InitMiddleFrame()
+ {
+ //娓呯┖bodyFrame
+ this.ClearBodyFrame();
+ this.nowSelectRoom = null;
+
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ //鑾峰彇璁惧鐨勬墍鏈夌被鍨嬶紝骞舵暣鐞嗘垚姣忎竴琛岀殑鏁版嵁
+ this.dicAllData = this.GetAllListData();
+ if (dicAllData.Count == 0)
+ {
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //娌℃湁鍙互娣诲姞鐨勭洰鏍�
+ this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uNotHadAddTarget));
+ });
+ return;
+ }
+
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //鍒濆鍖栨埧闂村拰璁惧鎺т欢
+ this.InitRoomAndDeviceControl();
+ });
+ });
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栨埧闂村拰璁惧鎺т欢
+ /// </summary>
+ private void InitRoomAndDeviceControl()
+ {
+ var listRoom = new List<Common.Room>();
+ foreach (string roomId in this.dicAllData.Keys)
+ {
+ listRoom.Add(HdlRoomLogic.Current.GetRoomById(roomId));
+ }
+
+ //鍒濆鍖栨埧闂磋彍鍗曟帶浠�
+ var frameBack = new FrameLayout();
+ frameBack.Height = Application.GetRealHeight(204);
+ bodyFrameLayout.AddChidren(frameBack);
+ var roomMuneContr = new RoomDeviceGroupMenuControl(listRoom);
+ roomMuneContr.Gravity = Gravity.CenterVertical;
+ frameBack.AddChidren(roomMuneContr);
+ roomMuneContr.SelectRoomEvent += (selectRoom) =>
+ {
+ //璁板綍褰撳墠閫夋嫨鐨勬埧闂�
+ this.nowSelectRoom = selectRoom;
+ //杩樺師鍒楄〃楂樺害
+ listView.Height = bodyFrameLayout.Height - frameBack.Bottom;
+ //鍒濆鍖栬鎺т欢
+ this.InitRowControl(dicAllData[selectRoom.Id]);
+ };
+
+ this.listView = new VerticalListControl(29);
+ listView.Y = frameBack.Bottom;
+ listView.Height = bodyFrameLayout.Height - frameBack.Bottom;
+ listView.BackgroundColor = UserCenterColor.Current.White;
+ bodyFrameLayout.AddChidren(this.listView);
+
+ //寮�濮嬪垵濮嬪寲鎴块棿鎺т欢,鐒跺悗瀹冧細鏍规嵁榛樿鍊艰皟鐢ㄥ洖璋冨嚱鏁�
+ roomMuneContr.InitControl();
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栧彸涓婅鐨勬帶浠�
+ /// </summary>
+ private void InitTopRightMenuControl()
+ {
+ //鑾峰彇妤煎眰
+ var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
+ if (dicFloor.Count == 0)
+ {
+ return;
+ }
+ 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;
+ btnFloor.IsBold = true;
+ topFrameLayout.AddChidren(btnFloor);
+
+ foreach (var floorId in dicFloor.Keys)
+ {
+ //绗竴涓ゼ灞�
+ this.nowSelectFloorId = floorId;
+ btnFloor.Text = dicFloor[floorId];
+ break;
+ }
+
+ btnIconContr.ButtonClickEvent += (sender, e) =>
+ {
+ //妤煎眰鑿滃崟
+ var contr = new TopRightFloorMenuControl(dicFloor.Count, 2, Language.StringByID(R.MyInternationalizationString.SelectFloor));
+ foreach (var floorId in dicFloor.Keys)
+ {
+ contr.AddRowMenu(floorId, () =>
+ {
+ //璁板綍璧烽�夋嫨鐨処D
+ this.nowSelectFloorId = floorId;
+ btnFloor.Text = dicFloor[this.nowSelectFloorId];
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleFrame();
+ });
+ }
+ };
+ }
+
+ #endregion
+
+ #region 鈻� 娣诲姞琛宊____________________________
+
+ /// <summary>
+ /// 鍒濆鍖栬鎺т欢
+ /// </summary>
+ /// <param name="dicRowData"></param>
+ private void InitRowControl(Dictionary<int, uRowInformation> dicRowData)
+ {
+ this.listView.RemoveAll();
+ HdlThreadLogic.Current.RunMainInThread(() =>
+ {
+ int count = 0;
+ foreach (var textId in dicRowData.Keys)
+ {
+ count++;
+ var rowData = dicRowData[textId];
+
+ var rowlayout = new FrameRowControl(listView.rowSpace / 2);
+ listView.AddChidren(rowlayout);
+ //鍥炬爣
+ var btnIcon = rowlayout.AddLeftIcon(81);
+ btnIcon.UnSelectedImagePath = rowData.IconPath;
+
+ //璁惧鍚�
+ var txtDevice = rowlayout.AddLeftCaption(Language.StringByID(textId), 750);
+ txtDevice.TextSize = 15;
+ //鍚戝彸鍥炬爣
+ rowlayout.AddRightArrow();
+ if (count != dicRowData.Count)
+ {
+ //搴曠嚎
+ rowlayout.AddBottomLine();
+ }
+
+ //鍗曞嚮浜嬩欢
+ rowlayout.ButtonClickEvent += (sender, e) =>
+ {
+ if (rowData.listScene == null)
+ {
+ //璁惧鐨勪竴瑙�
+ var form = new AlarmTargetAddDeviceForm();
+ form.AddForm(this.zoonID, txtDevice.Text, rowData.listDevice);
+ }
+ else
+ {
+ //鍦烘櫙鐨勪竴瑙�
+ var form = new AlarmTargetAddSceneForm();
+ form.AddForm(this.zoonID, rowData.listScene);
+ }
+ };
+ }
+ //璋冩暣鐪熷疄楂樺害
+ this.listView.AdjustRealHeight(Application.GetRealHeight(23));
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 鑾峰彇鏁版嵁___________________________
+
+ /// <summary>
+ /// 鑾峰彇璁惧鐨勬墍鏈夌被鍨嬶紝骞舵暣鐞嗘垚姣忎竴琛岀殑鏁版嵁(keys1:鎴块棿ID Keys2:R鏂囦欢鐨勬暟鍊�)
+ /// </summary>
+ /// <returns></returns>
+ private Dictionary<string, Dictionary<int, uRowInformation>> GetAllListData()
+ {
+ var dicData = new Dictionary<string, Dictionary<int, uRowInformation>>();
+ //鑾峰彇鏈湴瀹夐槻鐨勫満鏅�
+ Dictionary<int, string> dicScene = HdlSafeguardLogic.Current.GetLocalSceneByZoneID(this.zoonID);
+ var listRoom = HdlRoomLogic.Current.GetFloorSortRoom(this.nowSelectFloorId);
+
+ for (int i = 0; i < listRoom.Count; i++)
+ {
+ //鑾峰彇鎴块棿鐨勮澶囧拰鍦烘櫙鏁版嵁
+ var dicRoomData = this.GetRoomDeviceAndSceneData(listRoom[i], dicScene);
+ if (dicRoomData.Count > 0)
+ {
+ dicData[listRoom[i].Id] = dicRoomData;
+ }
+ }
+ return dicData;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎴块棿閲岄潰鐨勮澶囧拰鍦烘櫙鏁版嵁
+ /// </summary>
+ /// <param name="i_room"></param>
+ /// <param name="dicScene"></param>
+ /// <returns></returns>
+ private Dictionary<int, uRowInformation> GetRoomDeviceAndSceneData(Common.Room i_room, Dictionary<int, string> dicScene)
+ {
+ if (dicScene == null)
+ {
+ //鑾峰彇鏈湴瀹夐槻鐨勫満鏅�
+ dicScene = HdlSafeguardLogic.Current.GetLocalSceneByZoneID(this.zoonID);
+ }
+ var dicRoomData = new Dictionary<int, uRowInformation>();
+
+ for (int j = 0; j < i_room.ListDevice.Count; j++)
+ {
+ var device = Common.LocalDevice.Current.GetDevice(i_room.ListDevice[j]);
+ //濡傛灉閭d釜璁惧宸茬粡娣诲姞浜嗭紝鍒欎笉鍐嶆樉绀�
+ if (device == null || HdlSafeguardLogic.Current.IsAlarmDeviceExist(this.zoonID, device) == true)
+ {
+ continue;
+ }
+ if (device.Type == DeviceType.AirSwitch//绌烘皵寮�鍏�
+ || device.Type == DeviceType.DimmableLight//璋冨厜鍣�
+ || device.Type == DeviceType.ColorDimmableLight//褰╃伅
+ || device.Type == DeviceType.OnOffOutput//缁х數鍣�
+ || device.Type == DeviceType.WindowCoveringDevice)//绐楀笜
+ {
+ string unSelectPath = string.Empty;
+ string selectPath = string.Empty;
+
+ var typeInfo = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device);
+ //鑾峰彇鍥剧墖
+ Common.LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref unSelectPath, ref selectPath);
+ if (dicRoomData.ContainsKey(typeInfo.BeloneTextId) == false)
+ {
+ dicRoomData[typeInfo.BeloneTextId] = new uRowInformation();
+ dicRoomData[typeInfo.BeloneTextId].IconPath = unSelectPath;
+ }
+ dicRoomData[typeInfo.BeloneTextId].listDevice.Add(device);
+ }
+ }
+ for (int j = 0; j < i_room.ListSceneId.Count; j++)
+ {
+ //濡傛灉閭d釜鍦烘櫙宸茬粡娣诲姞浜嗭紝鍒欎笉鍐嶆樉绀�
+ if (dicScene.ContainsKey(i_room.ListSceneId[j]) == true)
+ {
+ continue;
+ }
+ var sceneUi = HdlSceneLogic.Current.GetSceneUIBySceneId(i_room.ListSceneId[j]);
+ if (sceneUi == null)
+ {
+ continue;
+ }
+ if (dicRoomData.ContainsKey(R.MyInternationalizationString.uScence) == false)
+ {
+ dicRoomData[R.MyInternationalizationString.uScence] = new uRowInformation();
+ dicRoomData[R.MyInternationalizationString.uScence].IconPath = "Scene/SceneIcon.png";
+ dicRoomData[R.MyInternationalizationString.uScence].listScene = new List<Common.SceneUI>();
+ }
+ dicRoomData[R.MyInternationalizationString.uScence].listScene.Add(sceneUi);
+ }
+ return dicRoomData;
+ }
+
+ #endregion
+
+ #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
+
+ /// <summary>
+ /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
+ /// </summary>
+ public override int FormActionAgainEvent()
+ {
+ //閲嶆柊鑾峰彇鎴块棿鏁版嵁
+ var dicData = this.GetRoomDeviceAndSceneData(this.nowSelectRoom, null);
+ if (dicAllData.Count == 1 && dicData.Count == 0)
+ {
+ //杩欎釜鎴块棿,宸茬粡娌℃湁鍙�夋嫨鐨勪笢瑗夸簡
+ dicAllData.Remove(this.nowSelectRoom.Id);
+
+ //娌℃湁鍙互娣诲姞鐨勭洰鏍�
+ this.ClearBodyFrame();
+ this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uNotHadAddTarget));
+ return 1;
+ }
+ if (dicData.Count > 0)
+ {
+ //瑕嗙洊缂撳瓨
+ dicAllData[this.nowSelectRoom.Id] = dicData;
+ //閲嶆柊鍒锋柊杩欎釜鎴块棿鐨勮澶囧垪琛�
+ this.InitRowControl(dicData);
+ }
+ else
+ {
+ //杩欎釜鎴块棿,宸茬粡娌℃湁鍙�夋嫨鐨勪笢瑗夸簡
+ dicAllData.Remove(this.nowSelectRoom.Id);
+ //娓呯┖bodyFrame
+ this.ClearBodyFrame();
+ //鍒囨崲鍒板埆鐨勬埧闂�
+ this.InitRoomAndDeviceControl();
+ }
+
+ return 1;
+ }
+
+ #endregion
+
+ #region 鈻� 鑷畾涔夌粨鏋勪綋_______________________
+
+ /// <summary>
+ /// 姣忎竴琛岀殑琛屾暟鎹�
+ /// </summary>
+ private class uRowInformation
+ {
+ /// <summary>
+ /// 鍥炬爣鍦板潃
+ /// </summary>
+ public string IconPath = string.Empty;
+ /// <summary>
+ /// 璁惧鍒楄〃淇℃伅
+ /// </summary>
+ public List<CommonDevice> listDevice = new List<CommonDevice>();
+ /// <summary>
+ /// 鍦烘櫙
+ /// </summary>
+ public List<Common.SceneUI> listScene = null;
+ }
+ #endregion
+ }
+}
--
Gitblit v1.8.0