From 6fa9d69da922c8049f5acfcbb9ce9fd26811024c Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期四, 16 四月 2020 17:10:57 +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