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/CommonBase/Controls/CompoundControls/BelongAreaControl.cs | 309 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 309 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/BelongAreaControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/BelongAreaControl.cs new file mode 100755 index 0000000..267b219 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/BelongAreaControl.cs @@ -0,0 +1,309 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Text; + +namespace Shared.Phone.UserCenter +{ + /// <summary> + /// 鎵�灞炲尯鍩熺殑鎺т欢 + /// </summary> + public class BelongAreaControl : FrameRowControl + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 閫夋嫨鎴块棿鐨勪簨浠�(鎴块棿涓婚敭) + /// </summary> + public Action<string> SelectRoomEvent = null; + /// <summary> + /// 褰撳墠閫夋嫨鐨勬埧闂寸殑涓婚敭(妤煎眰涓婚敭鍙互鏃犺) + /// </summary> + public string RoomKey = string.Empty; + /// <summary> + /// 褰撳墠閫夋嫨鐨勬ゼ灞備富閿�(娌″繀瑕佸叕寮�鍑哄幓) + /// </summary> + private string FloorKey = string.Empty; + /// <summary> + /// 妤煎眰鍒楄〃鍚嶅瓧 + /// </summary> + private List<string> listFloorName = new List<string>(); + /// <summary> + /// 妤煎眰鍒楄〃涓婚敭 + /// </summary> + private List<string> listFloorKeys = new List<string>(); + /// <summary> + /// 鎴块棿鍚嶅瓧 + /// </summary> + private List<List<string>> listRoomName = new List<List<string>>(); + /// <summary> + /// 鎴块棿涓婚敭 + /// </summary> + private List<List<string>> listRoomKeys = new List<List<string>>(); + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鎵�灞炲尯鍩熺殑鎺т欢 + /// </summary> + /// <param name="i_ChidrenYaxis">瀛愭帶浠禮杞村亸绉婚噺(鐪熷疄鍊�,鏈変簺鐣岄潰闇�瑕佽繖绉嶇壒娈婃搷浣�)</param> + public BelongAreaControl(int i_ChidrenYaxis = 0) : base(i_ChidrenYaxis) + { + //鍒濆鍖栨暟鎹� + this.InitData(); + } + + /// <summary> + /// 鍒濆鍖栨帶浠�(閽堝鐨勬槸鍦烘櫙) + /// </summary> + /// <param name="i_caption">鏍囬鏂囨湰</param> + /// <param name="i_roomId">鎴块棿ID</param> + public void InitControl(string i_caption, string i_roomId) + { + var room = HdlRoomLogic.Current.GetRoomById(i_roomId); + this.DoInitControl(i_caption, room); + } + + /// <summary> + /// 鍒濆鍖栨帶浠�(閽堝鐨勬槸缃戝叧) + /// </summary> + /// <param name="i_caption">鏍囬鏂囨湰</param> + /// <param name="i_gateway">缃戝叧瀵硅薄</param> + public void InitControl(string i_caption, ZigBee.Device.ZbGateway i_gateway) + { + var room = HdlGatewayLogic.Current.GetRoomByGateway(i_gateway); + this.DoInitControl(i_caption, room); + } + + /// <summary> + /// 鍒濆鍖栨帶浠�(閽堝鐨勬槸鍥炶矾) + /// </summary> + /// <param name="i_caption">鏍囬鏂囨湰</param> + /// <param name="i_device">璁惧瀵硅薄</param> + public void InitControl(string i_caption, ZigBee.Device.CommonDevice i_device) + { + var room = HdlRoomLogic.Current.GetRoomByDevice(i_device); + this.DoInitControl(i_caption, room); + } + + /// <summary> + /// 鍒濆鍖栨帶浠�(閽堝鐨勬槸鏁翠釜璁惧) + /// </summary> + /// <param name="i_caption">鏍囬鏂囨湰</param> + /// <param name="i_listDevice">璁惧瀵硅薄</param> + public void InitControl(string i_caption, List<ZigBee.Device.CommonDevice> i_listDevice) + { + var room = Common.LocalDevice.Current.GeteRealDeviceRoom(i_listDevice[0]); + this.DoInitControl(i_caption, room); + } + + /// <summary> + /// 鍒濆鍖栨帶浠� + /// </summary> + /// <param name="i_caption"></param> + /// <param name="i_Room"></param> + private void DoInitControl(string i_caption, Common.Room i_Room) + { + if (i_Room == null) + { + //鏈垎閰嶅尯鍩� + this.InitControl(i_caption, Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom), false); + } + else + { + string roomName = i_Room.Name; + this.RoomKey = i_Room.Id; + this.FloorKey = i_Room.FloorId; + if (Common.Config.Instance.Home.FloorDics.ContainsKey(i_Room.FloorId) == true) + { + //妤煎眰+鎴块棿 + roomName = Common.Config.Instance.Home.FloorDics[i_Room.FloorId] + " " + roomName; + } + this.InitControl(i_caption, roomName, i_Room.IsSharedRoom); + } + } + + /// <summary> + /// 鍒濆鍖栨帶浠� + /// </summary> + /// <param name="i_caption">鏍囬鏂囨湰</param> + /// <param name="i_RoomName">鎴块棿鍚嶅瓧</param> + /// <param name="IsSharedRoom">鎴块棿鏄惁鏄垎浜殑</param> + private void InitControl(string i_caption, string i_RoomName, bool IsSharedRoom) + { + //鏍囬 + var btnCaption = new NormalViewControl(270, 58, true); + btnCaption.X = ControlCommonResourse.XXLeft; + btnCaption.Gravity = Gravity.CenterVertical; + btnCaption.Text = i_caption + "锛�"; + this.AddChidren(btnCaption, ChidrenBindMode.BindEventOnly); + + //鏄剧ず妗� + var txtView = new NormalViewControl(700, true); + txtView.X = Application.GetRealWidth(294); + txtView.Gravity = Gravity.CenterVertical; + txtView.TextColor = UserCenterColor.Current.TextGrayColor1; + txtView.Text = i_RoomName; + this.AddChidren(txtView, ChidrenBindMode.BindEventOnly); + + if (chidrenYaxis != 0) + { + btnCaption.Y += chidrenYaxis; + txtView.Y += chidrenYaxis; + } + + if (IsSharedRoom == true) + { + //濡傛灉杩欎釜璁惧浣嶄簬鍒嗕韩鐨勬埧闂� + this.UseClickStatu = false; + return; + } + if (this.listFloorKeys.Count == 0 && listRoomKeys.Count == 0) + { + //鎴栬�呮牴鏈氨娌℃湁鍒涘缓鎴块棿锛屽垯涓嶅厑璁告洿鏀� + this.UseClickStatu = false; + return; + } + //鍙崇澶� + this.AddRightArrow(); + + this.ButtonClickEvent += (sender, e) => + { + //鍖哄煙閫夋嫨 + this.ShowSelectRoom(txtView, i_caption); + }; + } + + /// <summary> + /// 鍒濆鍖栨暟鎹� + /// </summary> + private void InitData() + { + var dicFloor = HdlRoomLogic.Current.GetFloorSortList(); + if (dicFloor.Count == 0) + { + //绗竴浣嶉粯璁ゆ坊鍔犳湭鍒嗛厤 + var listKeys = new List<string>() { "" }; + var listName = new List<string>() { Language.StringByID(R.MyInternationalizationString.uUndistributed) }; + //鎴块棿鍚嶅瓧鍜屼富閿敹闆� + var listRoom = HdlRoomLogic.Current.GetFloorSortRoom(string.Empty, false); + foreach (var myRoom in listRoom) + { + listName.Add(myRoom.Name); + listKeys.Add(myRoom.Id); + } + listRoomName.Add(listName); + listRoomKeys.Add(listKeys); + } + else + { + //绗竴浣嶉粯璁ゆ坊鍔犳湭鍒嗛厤(鏈垎閰嶆斁鍦ㄦゼ灞傞偅涓彍鍗�) + var listKeys = new List<string>() { "" }; + var listName = new List<string>() { "" }; + listRoomName.Add(listName); + listRoomKeys.Add(listKeys); + this.listFloorKeys.Add(""); + this.listFloorName.Add(Language.StringByID(R.MyInternationalizationString.uUndistributed)); + + foreach (string fKeys in dicFloor.Keys) + { + var listRoom = HdlRoomLogic.Current.GetFloorSortRoom(fKeys, false); + if (listRoom.Count > 0) + { + //妤煎眰鍚嶅瓧鍜屼富閿敹闆� + this.listFloorKeys.Add(fKeys); + this.listFloorName.Add(dicFloor[fKeys]); + //鎴块棿鍚嶅瓧鍜屼富閿敹闆� + listName = new List<string>(); + listKeys = new List<string>(); + foreach (var myRoom in listRoom) + { + listName.Add(myRoom.Name); + listKeys.Add(myRoom.Id); + } + listRoomName.Add(listName); + listRoomKeys.Add(listKeys); + } + } + } + } + + #endregion + + #region 鈻� 鍖哄煙閫夋嫨___________________________ + + /// <summary> + /// 鍖哄煙閫夋嫨 + /// </summary> + /// <param name="txtView"></param> + /// <param name="i_caption"></param> + private void ShowSelectRoom(NormalViewControl txtView, string i_caption) + { + int index1 = this.listFloorKeys.IndexOf(FloorKey); + if (index1 == -1) { index1 = 0; } + int index2 = this.listRoomKeys[index1].IndexOf(RoomKey); + if (index2 == -1) { index2 = 0; } + + if (this.listFloorKeys.Count == 0) + { + //鏃犳ゼ灞傛ā寮� + PickerView.Show(this.listRoomName[0], (value) => + { + RoomKey = this.listRoomKeys[0][value]; + if (RoomKey != string.Empty) + { + //鎴块棿 + txtView.Text = this.listRoomName[0][value]; + } + else + { + txtView.Text = Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom); + } + this.SelectRoomEvent?.Invoke(RoomKey); + + }, index2, i_caption, + Language.StringByID(R.MyInternationalizationString.uFinish), + Language.StringByID(R.MyInternationalizationString.uCancel)); + } + else + { + //鏈夋ゼ灞傛ā寮� + PickerView.ShowSecondary(this.listFloorName, this.listRoomName, (value1, value2) => + { + FloorKey = this.listFloorKeys[value1]; + RoomKey = this.listRoomKeys[value1][value2]; + if (RoomKey != string.Empty) + { + //妤煎眰+鎴块棿 + txtView.Text = this.listFloorName[value1] + " " + this.listRoomName[value1][value2]; + } + else + { + txtView.Text = Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom); + } + this.SelectRoomEvent?.Invoke(RoomKey); + + }, index1, index2, i_caption, + Language.StringByID(R.MyInternationalizationString.uFinish), + Language.StringByID(R.MyInternationalizationString.uCancel)); + } + } + + #endregion + + #region 鈻� 鎺т欢鎽ф瘉___________________________ + + /// <summary> + /// 鎺т欢鎽ф瘉 + /// </summary> + public override void RemoveFromParent() + { + this.SelectRoomEvent = null; + + base.RemoveFromParent(); + } + + #endregion + } +} -- Gitblit v1.8.0