using System; using System.Collections.Generic; using System.Text; namespace Shared.Phone.UserCenter { /// /// 所属区域的控件 /// public class BelongAreaControl : FrameRowControl { #region ■ 变量声明___________________________ /// /// 选择房间的事件(房间主键) /// public Action SelectRoomEvent = null; /// /// 当前选择的房间的主键(楼层主键可以无视) /// public string RoomKey = string.Empty; /// /// 显示文本 /// private NormalViewControl btnTextView = null; #endregion #region ■ 初始化_____________________________ /// /// 所属区域的控件 /// /// 子控件Y轴偏移量(【列表控件的rowSpace/2】即可,不懂默认为0即可) public BelongAreaControl(int i_ChidrenYaxis = 0) : base(i_ChidrenYaxis) { } /// /// 初始化控件(针对的是场景) /// /// 标题文本 /// 房间ID public void InitControl(string i_caption, string i_roomId) { var room = HdlRoomLogic.Current.GetRoomById(i_roomId); this.DoInitControl(i_caption, room); } /// /// 初始化控件(针对的是网关) /// /// 标题文本 /// 网关对象 public void InitControl(string i_caption, ZigBee.Device.ZbGateway i_gateway) { var room = HdlGatewayLogic.Current.GetRoomByGateway(i_gateway); this.DoInitControl(i_caption, room); } /// /// 初始化控件(针对的是回路) /// /// 标题文本 /// 设备对象 public void InitControl(string i_caption, ZigBee.Device.CommonDevice i_device) { var room = HdlRoomLogic.Current.GetRoomByDevice(i_device); this.DoInitControl(i_caption, room); } /// /// 初始化控件(针对的是整个设备) /// /// 标题文本 /// 设备对象 public void InitControl(string i_caption, List i_listDevice) { var room = Common.LocalDevice.Current.GeteRealDeviceRoom(i_listDevice[0]); this.DoInitControl(i_caption, room); } /// /// 初始化控件 /// /// /// 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; 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); } } /// /// 初始化控件 /// /// 标题文本 /// 房间名字 /// 房间是否是分享的 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.BindEvent); //显示框 this.btnTextView = new NormalViewControl(700, true); btnTextView.X = Application.GetRealWidth(294); btnTextView.Gravity = Gravity.CenterVertical; btnTextView.TextColor = UserCenterColor.Current.TextGrayColor1; btnTextView.Text = i_RoomName; this.AddChidren(btnTextView, ChidrenBindMode.BindEvent); if (chidrenYaxis != 0) { btnCaption.Y += chidrenYaxis; btnTextView.Y += chidrenYaxis; } if (IsSharedRoom == true) { //如果这个设备位于分享的房间 this.UseClickStatu = false; return; } //右箭头 this.AddRightArrow(); //如果当前是展示模板,则需要处理 if (Common.Config.Instance.Home.IsShowTemplate == false) { this.ButtonClickEvent += (sender, e) => { //区域选择 this.ShowSelectRoom(btnTextView, i_caption); }; } } #endregion #region ■ 区域选择___________________________ /// /// 区域选择 /// /// /// private void ShowSelectRoom(NormalViewControl txtView, string i_caption) { //显示底部弹窗的房间列表 var result = HdlControlLogic.Current.ShowBottomListRoomView(this.RoomKey, i_caption, (selectId, selectName) => { this.RoomKey = selectId; txtView.Text = selectName; //调用回调函数 this.SelectRoomEvent?.Invoke(RoomKey); }); if (result == false) { //或者根本就没有创建房间,则不允许更改 this.UseClickStatu = false; } } #endregion #region ■ 刷新控件___________________________ /// /// 重新刷新控件 /// /// 指定以哪个房间ID刷新控件 public void RefreshControl(string i_RoomId) { this.RoomKey = i_RoomId; var room = HdlRoomLogic.Current.GetRoomById(i_RoomId); this.btnTextView.Text = HdlRoomLogic.Current.GetRoomName(room); } #endregion #region ■ 控件摧毁___________________________ /// /// 控件摧毁 /// public override void RemoveFromParent() { this.SelectRoomEvent = null; base.RemoveFromParent(); } #endregion } }