From df237b08cf97c27a2526b8f523f852f298a8b9b1 Mon Sep 17 00:00:00 2001 From: lss <316519258@qq.com> Date: 星期一, 01 六月 2020 09:30:47 +0800 Subject: [PATCH] 0000 --- ZigbeeApp/Shared/Phone/UserCenter/SmartSound/Forms/SmartSoundControlContentForm.cs | 558 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 558 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/SmartSound/Forms/SmartSoundControlContentForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/SmartSound/Forms/SmartSoundControlContentForm.cs new file mode 100644 index 0000000..dc3d1db --- /dev/null +++ b/ZigbeeApp/Shared/Phone/UserCenter/SmartSound/Forms/SmartSoundControlContentForm.cs @@ -0,0 +1,558 @@ +锘縰sing System; +using System.Collections.Generic; +using Shared.Common; +using ZigBee.Device; + +namespace Shared.Phone.UserCenter.SmartSound.Forms +{ + public class SmartSoundControlContentForm : EditorCommonForm + { + /// <summary> + /// 涓存椂鏁版嵁 + /// </summary> + private List<SmartSound.Layer> TempDatas = new List<SmartSound.Layer>(); + + /// <summary> + /// 鍒楄〃鎺т欢 + /// </summary> + private VerticalListControl listView = null; + + private FrameLayout contentLayout = null; + public int CurrentIndex = 0; + private BottomClickButton bottomClickButton = null; + + public SmartSoundControlContentForm() + { + // + } + + /// <summary> + /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) + /// </summary> + public void ShowForm() + { + IniFloorData();//鍏堝姞杞芥暟鎹� + TempDatas.Clear(); + + this.ScrollEnabled = false; + base.SetTitleText("閫夋嫨鎴块棿");//璁剧疆鏍囬淇℃伅 + + contentLayout = new FrameLayout(); + this.bodyFrameLayout.AddChidren(contentLayout); + + IniAllDataView(); + + } + + #region 鍔犺浇鏈湴鎵�鏈夋暟鎹紝鐢熸垚渚涚敤鎴烽�夋嫨鎴块棿鐨勭晫闈� + + private void IniAllDataView() + { + contentLayout.RemoveAll(); + + var pullLayout = new MyPullControl(this, SmartSound.LocaData); + contentLayout.AddChidren(pullLayout); + pullLayout.InitControl(); + + LoadAllRoomListView(); + + bottomClickButton = new BottomClickButton(); + this.bodyFrameLayout.AddChidren(bottomClickButton); + bottomClickButton.Text = "纭"; + bottomClickButton.ButtonClickEvent += (sender, e) => + { + //淇濆瓨鏁版嵁 + if (SmartSound.CurretnData == null) + SmartSound.CurretnData = new List<SmartSound.Layer>(); + + SmartSound.CurretnData.Clear(); + SmartSound.CurretnData = TempDatas; + this.CloseForm(); + }; + + bottomClickButton.Visible = false; + } + + private void LoadAllRoomListView() + { + try + { + + if (SmartSound.LocaData == null || SmartSound.LocaData.Count < 1) + return; + + // 鍔犺浇褰撳墠妤煎眰鐨勬墍鏈夋埧闂� ListView + SmartSound.Layer layer = SmartSound.LocaData[CurrentIndex]; + if (listView == null) + { + + listView = new VerticalListControl(); + contentLayout.AddChidren(listView); + listView.Y = Application.GetRealHeight(173); + listView.Height = bodyFrameLayout.Height- Application.GetRealHeight(173); + + } + + listView.RemoveAll(); + + foreach(SmartSound.Room room in layer.RoomList) + { + var roomRowLayout = new RoomRowLayout(this, room); + listView.AddChidren(roomRowLayout); + roomRowLayout.InitControl(); + } + + } + catch { } + } + + #endregion + /// <summary> + /// 灏嗘暟鎹浆鎹负鏅鸿兘闊崇浣跨敤鐨勬暟鎹� + /// </summary> + private void IniFloorData() + { + #region//1.浠庢湇鍔″櫒鑾峰彇鐨勬暟鎹紝json鍙嶅簭鍒楀寲寰楁潵 + //2.鐐瑰嚮"+"灏嗙綉鍏崇殑鏁版嵁杞崲涓� 鏅鸿兘闊崇浣跨敤鐨勬暟鎹� + /*{ + + Dictionary<string, string> ss = Config.Instance.Home.FloorDics;//妤煎眰鍒楄〃 + string currentFloor = Config.Instance.Home.CurrentFloorId;//褰撳墠妤煎眰鐨勯敭 + + var listRoom = HdlRoomLogic.Current.GetFloorSortRoom("妤煎眰鐨勪富閿�");//鑾峰彇褰撳墠妤煎眰鐨勬墍鏈夋埧闂� + var room = listRoom[0]; + for (int i=0;i<room.ListDevice.Count;i++) + {//璁惧鏁版嵁 + var device = LocalDevice.Current.GetDevice(room.ListDevice[i]); + var myType = LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice>() { device }); + + if (myType.BeloneType == DeviceBeloneType.A鐏厜) + { + //杩欓噷闈㈢殑灏辨槸鐏厜浜� + var light = device; + // light.DeviceAddr; 璁惧鐨勫湴鍧� + // light.DeviceEpoint;//璁惧鐨勭鍙� + } + } + + for (int i = 0; i < room.ListSceneId.Count; i++) + { //鍦烘櫙鏁版嵁 + var device = HdlSceneLogic.Current.GetSceneUIBySceneId(room.ListSceneId[i]); + // device.Id;鍦烘櫙 id + } + }*/ + #endregion + + if (SmartSound.LocaData == null) + SmartSound.LocaData = new List<SmartSound.Layer>(); + + SmartSound.LocaData.Clear(); + + Dictionary<string, string> floorDictionary = Config.Instance.Home.FloorDics;//妤煎眰鍒楄〃 + + #region 鍒嗘ゼ灞� + if (floorDictionary.Count < 1) + { + //娌℃湁妤煎眰,妯℃嫙涓�涓� + SmartSound.Layer layer = new SmartSound.Layer(); + layer.LayerID = "0000"; + layer.LayerName = "涓�妤�"; + layer.RoomList.Clear(); + SmartSound.LocaData.Add(layer); + } + else + { + foreach (string layer_id in floorDictionary.Keys) + { + SmartSound.Layer layer = new SmartSound.Layer(); + layer.LayerID = layer_id; + layer.LayerName = floorDictionary[layer_id]; + layer.RoomList.Clear(); + SmartSound.LocaData.Add(layer); + } + } + #endregion + + #region 鎴块棿鍏ヤ綇瀵瑰簲鐨勬ゼ灞� + var roomList = HdlRoomLogic.Current.GetAllListRooms();//鑾峰彇鎵�鏈夋埧闂� + + for (int n = 0; n < SmartSound.LocaData.Count; n++) + { + SmartSound.Layer layer = SmartSound.LocaData[n]; + + foreach (Room room in roomList) + { + try + { + if (layer.LayerID != room.FloorId && SmartSound.LocaData.Count > 1) + continue; + + //娣诲姞鎴块棿 + SmartSound.Room smartRoom = new SmartSound.Room(); + layer.RoomList.Add(smartRoom); + + smartRoom.RoomID = room.Id; + smartRoom.RoomName = room.Name; + smartRoom.DeviceList.Clear(); + smartRoom.SceneList.Clear(); + + #region 娣诲姞璁惧 鐏厜銆佺獥甯樸�佸満鏅�佺┖璋� + for (int j = 0; j < room.ListDevice.Count; j++) + { + string key = room.ListDevice[j].ToString(); + var device = LocalDevice.Current.GetDevice(key); + if (device == null) + continue; + + SmartSound.Device smartDevice = new SmartSound.Device(); + smartDevice.Id = device.DeviceID.ToString();//璁惧 Id + smartDevice.DeviceAddress = device.DeviceAddr;//璁惧 MAC + smartDevice.Epoint = device.DeviceEpoint;//璁惧绔彛 + smartDevice.ClusterID = 0; + smartDevice.DeviceName = device.DeviceName;//璁惧鍚嶇О + smartDevice.NicksName = ""; + smartDevice.DeviceType = GetDeviceType(device);//璁惧绫诲瀷 + smartDevice.GatewayID = device.CurrentGateWayId;//缃戝叧 Id + smartDevice.RoomID = room.Id;//鎴块棿 Id + + smartRoom.DeviceList.Add(smartDevice); + + } + #endregion + + var sceneList = HdlSceneLogic.Current.GetRoomSceneList(room); + + #region //娣诲姞鍦烘櫙 + for (int k = 0; k < sceneList.Count; k++) + { + SceneUI scene = sceneList[k]; + if (scene == null) continue; + SmartSound.Scene smartScene = new SmartSound.Scene(); + smartScene.Id = scene.DeviceID.ToString(); + smartScene.SceneName = scene.Name; + smartScene.SceneID = scene.Id; + smartScene.DelayTime = scene.DelayTime; + smartScene.ClusterID = 0; + smartScene.NicksName = ""; + smartScene.RoomID = room.Id; + + smartRoom.SceneList.Add(smartScene); + } + #endregion + + } + catch (Exception e) + { + string errpr = e.Message; + } + } + } + #endregion + + } + + /// <summary> + /// Zigbee璁惧绫诲瀷杞崲涓烘櫤鑳介煶绠变娇鐢ㄧ殑绫诲瀷 + /// </summary> + /// <returns></returns> + private int GetDeviceType(ZigBee.Device.CommonDevice device) + { + int type = 0;//1=寮�鍏崇伅锛�2=璋冨厜鐏紝3=RGB 鐏紝4=绐楀笜妯″潡锛�5=寮�鍚堝笜锛�6=鍗峰笜锛�7=绌鸿皟锛�8=闈㈡澘锛�9=鏂伴 + + if (device.Type == DeviceType.OnOffOutput && device.DfunctionType == DeviceFunctionType.A鐏厜) + { + type = 1;//杩欓噷闈㈢殑灏辨槸缁х數鍣ㄧ伅鍏変簡 + } + else if (device.Type == DeviceType.DimmableLight) + { + type = 2;//璋冨厜 + } + else if (device.Type == DeviceType.ColorDimmableLight) + { + type = 3; + } + else if (device.Type == DeviceType.WindowCoveringDevice) + { + //绐楀笜 + if (((Rollershade)device).WcdType == 4)//寮�鍚堝笜 + { + type = 5; + } + else if (((Rollershade)device).WcdType == 0)//鍗峰笜 + type = 6;//鍗峰笜 + } + else if (device.Type == DeviceType.Thermostat) + { + type = 7; + } + else if (device.Type == DeviceType.FreshAir) + { + type = 9; + } + + return type; + } + + /// <summary> + /// 灏嗛�変腑鐨勬暟鎹坊鍔犲埌涓存椂鏁版嵁鍒楄〃涓紝渚夸簬鍚庢湡鐨�"淇濆瓨" + /// </summary> + private void AddData(SmartSound.Room room) + { + if (TempDatas == null) + TempDatas = new List<SmartSound.Layer>(); + + SmartSound.Layer tempLayer = SmartSound.LocaData[CurrentIndex]; + if (tempLayer == null) return; + + #region 娣诲姞妤煎眰 + + bool floor_exists = false; + // 杩囨护鐩稿悓鐨勬ゼ灞� + for (int i = 0; i < TempDatas.Count; i++) + { + if (tempLayer.LayerID == TempDatas[i].LayerID) + { + floor_exists = true; + break; + } + } + + if (!floor_exists) + { + tempLayer.RoomList.Clear(); + TempDatas.Add(tempLayer); + } + + + #endregion + + #region 娣诲姞鎴块棿 + + for (int i = 0; i < TempDatas.Count; i++) + { + if (SmartSound.LocaData[CurrentIndex].LayerID != TempDatas[i].LayerID) + continue; + + bool room_exists = false; + + for (int n = 0; n < TempDatas[i].RoomList.Count; n++) + { + if (room.RoomID == TempDatas[i].RoomList[n].RoomID) + { + room_exists = true; + break; + } + } + + if (!room_exists) + { + TempDatas[i].RoomList.Add(room); + break; + } + } + + #endregion + + } + + private void RemoveData(SmartSound.Room room) + { + try + { + for (int i = 0; i < TempDatas.Count; i++) + { + + for (int j = 0; j < TempDatas[i].RoomList.Count; j++) + { + if (TempDatas[i].RoomList[j].RoomID == room.RoomID) + { + TempDatas[i].RoomList.RemoveAt(j); + } + } + } + } + catch { } + } + + #region 鈻� 鑷畾涔夋ゼ灞傞�夋嫨鎺т欢_____________________ + + /// <summary> + /// 鎴块棿鍒楄〃琛� + /// </summary> + private class MyPullControl : FrameRowControl + { + + private SmartSoundControlContentForm smartSoundDataAdd = null; + private List<SmartSound.Layer> Layers = null; + /// <summary> + /// 鎴块棿鍒楄〃 + /// </summary> + private NormalViewControl btnName = null; + + /// <summary> + /// 鎴块棿鍒楄〃琛� + /// </summary> + public MyPullControl(SmartSoundControlContentForm _SmartSoundDataAdd,List<SmartSound.Layer> _layers) + { + this.smartSoundDataAdd = _SmartSoundDataAdd; + this.Layers = _layers; + this.UseClickStatu = false; + this.BackgroundColor = UserCenterColor.Current.White; + this.Height = Application.GetRealHeight(173); + } + + /// <summary> + /// 鍒濆鍖栨帶浠� + /// </summary> + public void InitControl() + { + //鏄剧ず鏂囨湰 + btnName = this.AddLeftCaption(string.Empty, 700); + btnName.Height = Application.GetRealHeight(60); + btnName.TextSize = 17; + btnName.Y = Application.GetRealHeight(57); + btnName.Text = "鎴块棿鍒楄〃"; + + var right_icon=this.AddRightArrow(); + right_icon.SelectedImagePath = "SmartSound/PullDown.png"; + right_icon.UnSelectedImagePath = "SmartSound/PullDown.png"; + right_icon.ButtonClickEvent += (sender, e) => + { + ShowPullList(); + }; + + var layout = this.AddMostRightView(Layers[smartSoundDataAdd.CurrentIndex].LayerName, 300, false); + layout.Name = "pullLayout"; + layout.ButtonClickEvent += (sender, e) => + { + ShowPullList(); + }; + + } + + private void ShowPullList() + { + //鎴块棿鍒楄〃琛寋鎴块棿鍒楄〃 textView锛屾ゼ灞備笅鎷夌獥} + //鏄剧ず鎴块棿{甯﹂�夋嫨妗嗙殑锛涘綋閫変腑浜嗘埧闂村悗闇�瑕佸湪搴曢儴寮瑰嚭纭鎸夐挳锛岀偣鍑荤‘璁よ烦杞埌鏂扮殑鐣岄潰} + var pull_frame = new TopRightMenuControl(Layers.Count, 2); + pull_frame.Y = this.Height; + + for (int i = 0; i < Layers.Count; i++) + { + //鍒涘缓妤煎眰 + pull_frame.AddRowMenu(Layers[i].LayerName, "Item/CreatFloor.png", "Item/CreatFloorSelected.png", () => + { + smartSoundDataAdd.CurrentIndex = i; + smartSoundDataAdd.LoadAllRoomListView(); + }); + } + } + } + #endregion + + #region 鈻� 鑷畾涔夋埧闂撮�夋嫨鎺т欢_____________________ + + /// <summary> + /// 鎴块棿鍒楄〃琛� + /// </summary> + private class RoomRowLayout : FrameRowControl + { + private SmartSoundControlContentForm smartSoundControlContentForm = null; + private SmartSound.Room mRoom = null; + /// <summary> + /// 鎴块棿鍚嶇О + /// </summary> + private NormalViewControl btnName = null; + + private IconViewControl Right_icon = null; + + /// <summary> + /// 鎴块棿鍒楄〃琛� + /// </summary> + public RoomRowLayout(SmartSoundControlContentForm _smartSoundControlContentForm,SmartSound.Room _room) + { + this.smartSoundControlContentForm = _smartSoundControlContentForm; + this.mRoom = _room; + this.UseClickStatu = false; + this.BackgroundColor = UserCenterColor.Current.White; + this.Height = Application.GetRealHeight(170); + } + + /// <summary> + /// 鍒濆鍖栨帶浠� + /// </summary> + public void InitControl() + { + //鏄剧ず鏂囨湰 + btnName = this.AddLeftCaption(string.Empty, 700); + btnName.Height = Application.GetRealHeight(60); + btnName.TextSize = 17; + btnName.Y = Application.GetRealHeight(57); + btnName.Text = mRoom.RoomName; + Right_icon = this.AddRightArrow(); + Right_icon.Width = Application.GetRealWidth(115); + Right_icon.Height = Application.GetRealHeight(115); + Right_icon.Gravity = Gravity.CenterVertical; + Right_icon.X = Right_icon.X - Application.GetRealWidth(60); + + btnName.ButtonClickEvent += (sender, e) => + { + SmartSoundContentForDevice deviceForm = new SmartSoundContentForDevice(mRoom); + deviceForm.AddForm(); + }; + + this.Right_icon.ButtonClickEvent += (sender, e) => + { + mRoom.Checked = !mRoom.Checked; + RefreshRightIconState(mRoom.Checked); + }; + + RefreshRightIconState(mRoom.Checked); + AddBottomLine(); + + } + + private void RefreshRightIconState(bool bol = false) + { + try + { + if (bol) + { + Right_icon.SelectedImagePath = "SmartSound/CheckBoxSel.png"; + Right_icon.UnSelectedImagePath = "SmartSound/CheckBoxSel.png"; + + smartSoundControlContentForm.AddData(mRoom); + } + else + { + Right_icon.SelectedImagePath = "SmartSound/CheckBoxDef.png"; + Right_icon.UnSelectedImagePath = "SmartSound/CheckBoxDef.png"; + + smartSoundControlContentForm.RemoveData(mRoom); + } + + bool isShow = false; + + if(smartSoundControlContentForm==null) return; + + foreach (SmartSound.Room _room in SmartSound.LocaData[smartSoundControlContentForm.CurrentIndex].RoomList) + { + if (_room.Checked) + { + isShow = true; + break; + } + } + + smartSoundControlContentForm.bottomClickButton.Visible = isShow; + } + catch(Exception e) + { + string error = e.Message; + } + } + + } + #endregion + } +} -- Gitblit v1.8.0