using System; using Shared.Common; using Shared.R; using Shared; using ZigBee.Device; using System.Collections.Generic; namespace Shared.Phone.Device.Logic { public class RoomAndDeviceView : FrameLayout { public RoomAndDeviceView() { Tag = "Logic"; } Button roombjButton = new Button(); Button roomTextButton = new Button(); Button devicetypeButton = new Button(); FrameLayout clickframeLayout = new FrameLayout(); Button clickbutton = new Button(); Button clicktextcolcrbutton = new Button(); /// /// 判断字符 /// public string IfType; /// /// 房间滑动的控件 /// public HorizontalScrolViewLayout roomhorizontalScrol = new HorizontalScrolViewLayout { Width = Application.GetRealWidth(1080 - 58), Height = Application.GetRealHeight(200), X = Application.GetRealWidth(58), Y = Application.GetRealHeight(184), }; /// /// 设备类型滑动的控件 /// public HorizontalScrolViewLayout devicetypehorizontalScrol = new HorizontalScrolViewLayout { Width = Application.GetRealWidth(1080 - 58), Height = Application.GetRealHeight(280), Y = Application.GetRealHeight(184 + 200), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, X = Application.GetRealWidth(58), // Radius = (uint)Application.GetRealHeight(50), }; /// /// 显示设备列表的控件 /// public VerticalScrolViewLayout middle = new VerticalScrolViewLayout { X = Application.GetRealWidth(58), Y = Application.GetRealHeight(184 + 200 + 280 + 40), Height = Application.GetRealHeight(Method.H - 40 - 184 - 280 - 200), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, }; public void Show(string Name) { #region 上面的布局代码 UserView.HomePage.Instance.ScrollEnabled = false;//锁住左滑 this.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; TopView view = new TopView(); this.AddChidren(view.TopRowView(true)); view.toptitleNameBtn.Text = Name; view.clickBtn.MouseDownEventHandler += (sender, e) => { UserView.HomePage.Instance.ScrollEnabled = true;//恢复左滑 RemoveFromParent(); }; view.foolrnameBtn.Text = Config.Instance.Home.GetCurrentFloorName; if (Config.Instance.Home.FloorDics.Count < 2) { ///没有楼层或者只有一个楼层,默认不显示图标和文本; view.foolrnameBtn.Visible = false; view.dropdownBtn.Visible = false; view.foolrclickBtn.Visible = false; } if (Config.Instance.Home.FloorDics.Count == 0) { Config.Instance.Home.CurrentFloorId = ""; } #endregion ///房间列表 var roomlists = Method.GetRoomList(IfType, Config.Instance.Home.CurrentFloorId); if (roomlists.Count == 0) { //返回没有房间隐藏下面整块; devicetypehorizontalScrol.Height = 0; middle.Height = 0; } /// 设备类型列表 var deviceTypeList = Method.GetDevice(IfType); this.AddChidren(roomhorizontalScrol); this.AddChidren(devicetypehorizontalScrol); this.AddChidren(middle); devicetypehorizontalScrol.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerBottomLeft); middle.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerTopLeft); ///楼层点击事件 view.foolrclickBtn.MouseUpEventHandler += (sender, e) => { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); flMain.MouseUpEventHandler += (sender2, e2) => { flMain.RemoveFromParent(); }; var foolrbjicon = new FrameLayout { Width = Application.GetRealWidth(450), Height = Application.GetRealHeight(780), X = Application.GetRealWidth(1080 - 468 - 35), Y = Application.GetRealHeight(184), BackgroundImagePath = "Item/SelectFloor_Right.png", }; flMain.AddChidren(foolrbjicon); var btnfoolrtext = new Button { Width = Application.GetRealWidth(450), Height = Application.GetRealHeight(150), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, X = Application.GetRealWidth(80), TextID = MyInternationalizationString.selecfoolr, TextSize = 14, }; foolrbjicon.AddChidren(btnfoolrtext); var foolrbj = new VerticalScrolViewLayout { Width = Application.GetRealWidth(450), Height = foolrbjicon.Height - btnfoolrtext.Height, X = Application.GetRealWidth(80), Y = btnfoolrtext.Bottom, }; foolrbjicon.AddChidren(foolrbj); foreach (var foolr in Config.Instance.Home.FloorDics) { var foolrRowLayout = new RowLayout { Height = Application.GetRealHeight(150), LineColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; foolrbj.AddChidren(foolrRowLayout); var btnfoolricon = new Button { Width = Application.GetMinRealAverage(81), Height = Application.GetMinRealAverage(81), UnSelectedImagePath = "Floor/Floor.png", Gravity = Gravity.CenterVertical, }; foolrRowLayout.AddChidren(btnfoolricon); var btnfoolrname = new Button { Width = Application.GetRealWidth(250), Height = Application.GetRealHeight(150), Text = foolr.Value, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicBtnCancelColor, Tag = foolr.Key, X = btnfoolricon.Right + Application.GetRealWidth(12), TextSize = 14, }; foolrRowLayout.AddChidren(btnfoolrname); if (view.foolrnameBtn.Text == foolr.Value) { btnfoolricon.UnSelectedImagePath = "Floor/FloorSelected.png"; btnfoolrname.TextColor = ZigbeeColor.Current.LogicTextBlackColor; } EventHandler foolrnameclick = (sender13, e13) => { roomhorizontalScrol.RemoveAll(); devicetypehorizontalScrol.RemoveAll(); middle.RemoveAll(); view.foolrnameBtn.Text = btnfoolrname.Text; flMain.RemoveFromParent(); var list = Method.GetRoomList(IfType, btnfoolrname.Tag.ToString()); if (list.Count == 0) { devicetypehorizontalScrol.Height = 0; middle.Height = 0; } else { devicetypehorizontalScrol.Height = Application.GetRealHeight(280); middle.Height = Application.GetRealHeight(1920 - 40 - 184 - 280 - 200); } AllRoomView(list, deviceTypeList); }; foolrRowLayout.MouseUpEventHandler += foolrnameclick; btnfoolrname.MouseUpEventHandler += foolrnameclick; } }; AllRoomView(roomlists, deviceTypeList); } /// /// 加载所有房间的视图方法 /// void AllRoomView(List roomlist, List deviceTypeList) { for (int i = 0; i < roomlist.Count; i++) { var room = roomlist[i]; var fra = new FrameLayout { Height = Application.GetRealHeight(200), Width = Application.GetRealWidth(255), }; roomhorizontalScrol.AddChidren(fra); var roombjBtn = new Button { Height = Application.GetRealHeight(158), Width = Application.GetRealWidth(255), UnSelectedImagePath = "ZigeeLogic/iconBackgroundColor.png", SelectedImagePath = "ZigeeLogic/iconSelectedBackgroundColor.png", Y = Application.GetRealHeight(21), }; fra.AddChidren(roombjBtn); var roomnameBtn = new Button { Height = Application.GetRealHeight(152 - 26 - 20), Width = Application.GetRealWidth(255 - 20 - 50), Text = room.Name, TextColor = ZigbeeColor.Current.LogicBtnCancelColor, SelectedTextColor = ZigbeeColor.Current.LogicBlankBackgroundColor, Y = Application.GetRealHeight(21 + 13 + 10), X = Application.GetRealWidth(10 + 25), }; fra.AddChidren(roomnameBtn); if (i == 0)//默认选中第一个房间 { roombjButton.IsSelected = false; roombjButton = roombjBtn; roombjBtn.IsSelected = true; roomTextButton.IsSelected = false; roomTextButton = roomnameBtn; roomnameBtn.IsSelected = true; roombjBtn.IsSelected = true; roomnameBtn.IsSelected = true; var list = Method.GetDeviceUIList(room, deviceTypeList); AllDeviceTypeView(list); } EventHandler roomclick = (sender, e) => { roombjButton.IsSelected = false; roombjButton = roombjBtn; roombjBtn.IsSelected = true; roomTextButton.IsSelected = false; roomTextButton = roomnameBtn; roomnameBtn.IsSelected = true; var list = Method.GetDeviceUIList(room, deviceTypeList); AllDeviceTypeView(list); }; roomnameBtn.MouseUpEventHandler += roomclick; roombjBtn.MouseUpEventHandler += roomclick; } } /// /// 加载该区域所有设备视图方法 /// 0 /// Devicelist. void AllDeviceTypeView(List devicelist) { var devicetypelist = Method.GetDeviceTypeList(devicelist); devicetypehorizontalScrol.RemoveAll(); for (int i = 0; i < devicetypelist.Count; i++) { var devicetype = devicetypelist[i]; var spaceRowLayout = new FrameLayout(); devicetypehorizontalScrol.AddChidren(spaceRowLayout); if (i == 0) { spaceRowLayout.Width = Application.GetRealWidth(37); } else { spaceRowLayout.Width = Application.GetRealWidth(80); } var deviceRowLayout = new FrameLayout { Width = Application.GetRealWidth(156 + 20), Height = Application.GetRealHeight(280 - 30), Y = Application.GetRealHeight(30), }; devicetypehorizontalScrol.AddChidren(deviceRowLayout); var backgroundColor = new Button { Width = Application.GetMinRealAverage(156), Height = Application.GetMinRealAverage(180), X = Application.GetRealWidth(10), UnSelectedImagePath = "ZigeeLogic/deviceunselectedbackgroundcolor.png", SelectedImagePath = "ZigeeLogic/deviceselectedbackgroundcolor.png", }; deviceRowLayout.AddChidren(backgroundColor); var devicetypeicon = new Button { Width = Application.GetMinRealAverage(84), Height = Application.GetMinRealAverage(84), X = Application.GetRealWidth(46), Y = Application.GetRealHeight(30), UnSelectedImagePath =Method.GetDeviceTypeIcon(devicetype), }; deviceRowLayout.AddChidren(devicetypeicon); var devicetypename = new Button { Width = Application.GetRealWidth(176), Height = Application.GetRealHeight(40), Text = devicetype, TextAlignment = TextAlignment.Center, Y = backgroundColor.Bottom, TextColor = ZigbeeColor.Current.LogicAddColor, TextSize = 10, }; deviceRowLayout.AddChidren(devicetypename); //if (i == 0)//默认选中第一个设备类型 //{ // devicetypeButton.IsSelected = false; // devicetypeButton = backgroundColor; // backgroundColor.IsSelected = true; // var list = Method.GetDeviceType(devicetypename.Text); // ConditionDeviceView(list, devicelist); //} EventHandler devicetypeclick = (sender13, e13) => { devicetypeButton.IsSelected = false; devicetypeButton = backgroundColor; backgroundColor.IsSelected = true; var list = Method.GetDeviceType(devicetypename.Text); ConditionDeviceView(list, devicelist); }; deviceRowLayout.MouseUpEventHandler += devicetypeclick; devicetypename.MouseUpEventHandler += devicetypeclick; devicetypeicon.MouseUpEventHandler += devicetypeclick; backgroundColor.MouseUpEventHandler += devicetypeclick; } ///显示房间所有设备 ConditionDeviceView(new List(), devicelist); } /// /// 加载该类型设备视图方法 /// /// Device typelist. /// 设备列表 void ConditionDeviceView(List deviceTypelist, List devicelist) { middle.RemoveAll(); foreach (var common in devicelist) { if (deviceTypelist.Count != 0 && !deviceTypelist.Contains(common.Type)) { continue; } if (IfType == "condition_mould") { if (common.IasDeviceType != 13) {//自动化模板只支持红外传感器 continue; } } var deviceFramelayout = new FrameLayout { Height = Application.GetRealHeight(160), }; middle.AddChidren(deviceFramelayout); var bjFramelayout = new FrameLayout { Width = Application.GetMinRealAverage(112), Height = Application.GetMinRealAverage(112), X = Application.GetRealWidth(58), Y = Application.GetRealHeight(30 + 9), Radius = (uint)Application.GetMinRealAverage(56), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; deviceFramelayout.AddChidren(bjFramelayout); var deviceIconBtn = new Button { Width = Application.GetMinRealAverage(82), Height = Application.GetMinRealAverage(82), Gravity = Gravity.Center, }; bjFramelayout.AddChidren(deviceIconBtn); Method.GetDeviceIcon(common, deviceIconBtn); var deviceRow = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(850), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(176 + 25), //LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, LineColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; deviceFramelayout.AddChidren(deviceRow); var devicename = new Button { Text = LocalDevice.Current.GetDeviceEpointName(common), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, SelectedTextColor = ZigbeeColor.Current.LogicAddColor, TextSize = 14, }; deviceRow.AddChidren(devicename); var lineBtn = new Button { Y = deviceFramelayout.Height-1, Height = 1, Width = Application.GetRealWidth(850), X = Application.GetRealWidth(176 + 25), BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; deviceFramelayout.AddChidren(lineBtn); EventHandler devicclick = (sen, e) => { clickbutton.IsSelected = false; clickbutton = deviceIconBtn; deviceIconBtn.IsSelected = true; clickframeLayout.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; clickframeLayout = bjFramelayout; bjFramelayout.BackgroundColor = ZigbeeColor.Current.LogicIconBackgroundColor; clicktextcolcrbutton.IsSelected = false; clicktextcolcrbutton = devicename; devicename.IsSelected = true; var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); CurrentDeviceState.CurrentDeviceView(flMain, common, false, IfType,0); }; deviceFramelayout.MouseUpEventHandler += devicclick; bjFramelayout.MouseUpEventHandler += devicclick; deviceIconBtn.MouseUpEventHandler += devicclick; deviceRow.MouseUpEventHandler += devicclick; devicename.MouseUpEventHandler += devicclick; } } } }