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/Category/AdjustTargetAddSceneForm.cs | 369 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 369 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Category/AdjustTargetAddSceneForm.cs b/ZigbeeApp/Shared/Phone/Category/AdjustTargetAddSceneForm.cs new file mode 100755 index 0000000..211ea4e --- /dev/null +++ b/ZigbeeApp/Shared/Phone/Category/AdjustTargetAddSceneForm.cs @@ -0,0 +1,369 @@ +锘縰sing Shared.Common; +using Shared.Phone.UserCenter; +using System; +using System.Collections.Generic; +using System.Text; +using ZigBee.Device; + +namespace Shared.Phone.Category +{ + /// <summary> + /// 鍦烘櫙鎵ц鐩爣娣诲姞璁惧鐨勭晫闈� + /// </summary> + public class AdjustTargetAddSceneForm : EditorCommonForm + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 瀹屾垚閫夋嫨鐨勪簨浠�(鍦烘櫙ID) + /// </summary> + public Action<List<int>> FinishSelectEvent = null; + /// <summary> + /// 褰撳墠宸茬粡娣诲姞鐨勬墽琛岀洰鏍� + /// </summary> + private List<Scene.DeviceListData> listAdjustTarget = null; + /// <summary> + /// 褰撳墠宸茬粡娣诲姞鐨勫満鏅疘D锛堝瓨鍦ㄦ娴嬬敤锛� + /// </summary> + private List<int> listOldSceneId = null; + /// <summary> + /// 褰撳墠鐣岄潰涓婇�夋嫨鐨勫満鏅紙瀛樺湪妫�娴嬬敤锛� + /// </summary> + private List<int> listNewScene = null; + /// <summary> + /// 瀹屾垚鎸夐挳 + /// </summary> + private BottomClickButton btnFinishControl = null; + /// <summary> + /// 鍦烘櫙鍒楄〃鎺т欢 + /// </summary> + private VerticalListControl listSceneView = null; + /// <summary> + /// 褰撳墠閫夋嫨鐨勬ゼ灞� + /// </summary> + private string nowSelectFloorId = string.Empty; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) + /// </summary> + /// <param name="i_listAdjustTarget">褰撳墠鎵ц鐩爣鍒楄〃</param> + public void ShowForm(List<Scene.DeviceListData> i_listAdjustTarget) + { + this.listAdjustTarget = i_listAdjustTarget; + + //璁剧疆澶撮儴淇℃伅 + base.SetTitleText(Language.StringByID(R.MyInternationalizationString.AddScence)); + + //鍒濆鍖栧彸涓婅鐨勬帶浠� + this.InitTopRightMenuControl(); + //鍒濆鍖栦腑閮ㄤ俊鎭� + this.InitMiddleFrame(); + } + + /// <summary> + /// 鍒濆鍖栦腑閮ㄤ俊鎭� + /// </summary> + private void InitMiddleFrame() + { + //娓呯┖body + this.ClearBodyFrame(); + + //鑾峰彇鑳藉鏄剧ず鐨勬埧闂村垪琛� + var listRoom = this.GetCanShowRoomList(); + if (listRoom.Count == 0) + { + //娌℃湁鍙互娣诲姞鐨勫満鏅� + this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uNotHadAddScene)); + return; + } + + //鎴块棿鑿滃崟鎺т欢 + var roomSwitchContr = new RoomDeviceGroupMenuControl(listRoom); + this.bodyFrameLayout.AddChidren(roomSwitchContr); + //閫夋嫨浜嬩欢 + roomSwitchContr.SelectRoomEvent += (selectRoom) => + { + //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�) + this.listSceneView?.RemoveAll(); + HdlThreadLogic.Current.RunMainInThread(() => + { + //鍒锋柊璁惧鍒嗘敮鎺т欢 + this.RefreshFunctionView(selectRoom); + }); + }; + + this.listSceneView = new VerticalListControl(35); + listSceneView.BackgroundColor = UserCenterColor.Current.White; + listSceneView.Y = roomSwitchContr.Bottom; + listSceneView.Height = bodyFrameLayout.Height - roomSwitchContr.Bottom; + bodyFrameLayout.AddChidren(listSceneView); + + //瀹屾垚鎸夐挳 + this.btnFinishControl = new BottomClickButton(); + btnFinishControl.TextID = R.MyInternationalizationString.uFinish; + bodyFrameLayout.AddChidren(btnFinishControl); + if (this.listNewScene == null || this.listNewScene.Count == 0) + { + btnFinishControl.Visible = false; + } + btnFinishControl.ButtonClickEvent += (sender, e) => + { + //鍥炶皟鍑芥暟 + this.FinishSelectEvent?.Invoke(listNewScene); + this.CloseForm(); + }; + + //鎵ц鍒濆鍖�(浼氳嚜鍔ㄨЕ鍙慡electRoomEvent浜嬩欢) + roomSwitchContr.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; + 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, this.nowSelectFloorId, 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="room"></param> + private void RefreshFunctionView(Room room) + { + //鑾峰彇鎴块棿鍦烘櫙鍒楄〃 + var listScene = this.GetListSceneFromRoom(room); + for (int i = 0; i < listScene.Count; i++) + { + var scene = listScene[i]; + //鍦烘櫙琛屾帶浠� + var rowContr = new FrameRowControl(listSceneView.rowSpace / 2); + listSceneView.AddChidren(rowContr); + //鍥炬爣 + var btnIcon = rowContr.AddLeftIcon(81); + btnIcon.UnSelectedImagePath = "Scene/SceneIcon.png"; + //鍦烘櫙鍚� + var btnName = rowContr.AddLeftCaption(scene.Name, 700); + btnName.TextSize = 15; + //閫夋嫨 + var btnSelect = rowContr.AddMostRightEmptyIcon(58, 58); + btnSelect.Visible = false; + btnSelect.UnSelectedImagePath = "Item/ItemSelected.png"; + if (i != listScene.Count - 1) + { + //搴曠嚎 + rowContr.AddBottomLine(); + } + if (listNewScene.Contains(scene.Id) == true) + { + btnSelect.Visible = true; + } + + //鐐瑰嚮浜嬩欢 + rowContr.ButtonClickEvent += (sender, e) => + { + btnSelect.Visible = !btnSelect.Visible; + if (btnSelect.Visible == true) + { + //娣诲姞缂撳瓨 + listNewScene.Add(scene.Id); + if (btnFinishControl.Visible == false) + { + btnFinishControl.Visible = true; + } + } + else + { + //绉婚櫎缂撳瓨 + listNewScene.Remove(scene.Id); + if (listNewScene.Count == 0) + { + btnFinishControl.Visible = false; + } + } + }; + } + //璋冩暣鎺т欢妗屽竷楂樺害 + this.listSceneView.AdjustRealHeightByBottomButton(Application.GetRealHeight(23)); + } + + #endregion + + #region 鈻� 鑾峰彇鎴块棿鍦烘櫙鍒楄〃___________________ + + /// <summary> + /// 鑾峰彇鎴块棿鍦烘櫙鍒楄〃 + /// </summary> + /// <returns></returns> + private List<SceneUI> GetListSceneFromRoom(Common.Room room) + { + //鑾峰彇鍏ㄩ儴鐨勫満鏅� + var listAllScene = HdlSceneLogic.Current.GetRoomSceneList(room); + var listShowScene = new List<SceneUI>(); + foreach (var scene in listAllScene) + { + //鍒ゆ柇璇ュ満鏅兘鍚︽樉绀� + if (this.CheckSceneCanShow(scene) == true) + { + listShowScene.Add(scene); + } + } + return listShowScene; + } + + #endregion + + #region 鈻� 鑾峰彇鎴块棿鍒楄〃_______________________ + + /// <summary> + /// 鑾峰彇鑳藉鏄剧ず鐨勬埧闂村垪琛� + /// </summary> + /// <param name="listRomm"></param> + /// <returns></returns> + private List<Room> GetCanShowRoomList() + { + if (this.listNewScene == null) + { + //鍏堝垪琛ㄥ寲 + this.listOldSceneId = new List<int>(); + this.listNewScene = new List<int>(); + foreach (var data in this.listAdjustTarget) + { + if (data.Type == 1) + { + //鍙鍦烘櫙 + listOldSceneId.Add(data.ElseScenesId); + } + } + } + + //褰撳墠妤煎眰鐨勫叏閮ㄦ埧闂� + var lisrRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(this.nowSelectFloorId); + var listShowRoom = new List<Room>(); + foreach (var room in lisrRoom) + { + foreach (var sceneId in room.ListSceneId) + { + var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId); + if (this.CheckSceneCanShow(scene) == true) + { + //杩欎釜鍦烘櫙鏈湴瀛樺湪,骞朵笖瀹冭繕娌℃湁鍔犲叆鍒版墽琛岀洰鏍囧垪琛�,鍒欒繖涓埧闂村彲浠ユ樉绀� + listShowRoom.Add(room); + break; + } + } + } + return listShowRoom; + } + + #endregion + + #region 鈻� 鐣岄潰鍏抽棴___________________________ + + /// <summary> + /// 鐣岄潰鍏抽棴 + /// </summary> + public override void CloseFormBefore() + { + this.FinishSelectEvent = null; + + base.CloseFormBefore(); + } + + #endregion + + #region 鈻� 涓�鑸柟娉昣__________________________ + + /// <summary> + /// 妫�娴嬪満鏅兘鍚︽樉绀� + /// </summary> + /// <param name="i_scene"></param> + private bool CheckSceneCanShow(SceneUI i_scene) + { + //鏈湴涓嶅瓨鍦� + if (i_scene == null) { return false; } + if (this.listOldSceneId.Contains(i_scene.Id) == true) + { + return false; + } + return true; + } + + #endregion + + #region 鈻� 缁撴瀯浣揰____________________________ + + /// <summary> + /// 璁惧琛屼俊鎭� + /// </summary> + private class DeviceRowInfo + { + /// <summary> + /// 鏂囨湰ID,鐩墠鐢ㄦ潵鍋氫富閿� + /// </summary> + public int TextId = 0; + /// <summary> + /// 鍥炬爣 + /// </summary> + public string IconPath = string.Empty; + /// <summary> + /// 鍥炬爣 + /// </summary> + public string IconPathSelected = string.Empty; + /// <summary> + /// 璁惧鍥炶矾涓婚敭 + /// </summary> + public List<string> listDeviceKeys = new List<string>(); + } + + #endregion + } +} -- Gitblit v1.8.0