using System; using HDL_ON.UI.CSS; using Shared; using HDL_ON.Entity; namespace HDL_ON.UI { public partial class FloorsManagementPage : FrameLayout { FrameLayout bodyView; /// /// 楼层显示区域 /// VerticalScrolViewLayout floorsListView; /// /// 显示区域 /// FrameLayout contentView; /// /// 楼层标题按钮 /// Button btnFloorTitle; /// /// 房间绑定楼层的确定按钮 /// Button btnConfrim; /// /// 当页面是编辑楼层时,该变量为空 /// 当页面是给房间绑定楼层时,该变量不为空 /// Room room; /// /// 标题栏修改楼层之后的回调事件 /// Action refreshFloorList; /// /// 后退回调事件 /// Action backAction; /// /// 最后一次点击的按钮 /// Button lastButton; public FloorsManagementPage() { bodyView = this; } /// /// 从房间进入楼层修改界面,需要回调事件更新房间的楼层信息 /// /// public FloorsManagementPage(Action action) { bodyView = this; backAction = action; } /// /// 加载界面 /// public void LoadPage(int titleId) { bodyView.RemoveAll(); bodyView.BackgroundColor = CSS_Color.BackgroundColor; refreshFloorList = (type,floorName) => { RefreshFloorsListView(type, floorName); }; new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView("floors",refreshFloorList,backAction); int count = DB_ResidenceData.residenceData.floors.Count > 8 ? 8 : DB_ResidenceData.residenceData.floors.Count; var contentViewHeight = (count + 1) * Application.GetRealHeight(50); contentView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(80), Width = Application.GetRealWidth(343), Height = contentViewHeight, Radius = (uint)Application.GetRealHeight(5), BorderColor = 0x00FFFFFF, BorderWidth = 0, BackgroundColor = CSS_Color.MainBackgroundColor, }; bodyView.AddChidren(contentView); btnFloorTitle = new Button() { Height = Application.GetRealHeight(50), TextID = StringId.Floors, TextAlignment = TextAlignment.Center, TextSize = CSS_FontSize.SubheadingFontSize, TextColor = CSS_Color.FirstLevelTitleColor, }; contentView.AddChidren(btnFloorTitle); contentView.AddChidren(new Button() { Height = Application.GetRealHeight(1), Y = Application.GetRealHeight(49), BackgroundColor = CSS_Color.DividingLineColor, }); floorsListView = new VerticalScrolViewLayout() { Y = btnFloorTitle.Bottom, Height = count * Application.GetRealHeight(50), }; contentView.AddChidren(floorsListView); foreach(var floor in DB_ResidenceData.residenceData.floors) { LoadFloorRow(floor); } } /// /// 加载楼层Row /// /// void LoadFloorRow(Floor floor) { var row = new RowLayout() { Height = Application.GetRealHeight(50), Tag = floor.name, LineColor = CSS_Color.DividingLineColor, }; floorsListView.AddChidren(row); var btnFloor = new Button() { Height = Application.GetRealHeight(50), TextAlignment = TextAlignment.Center, TextSize = CSS_FontSize.SubheadingFontSize, TextColor = CSS_Color.TextualColor, SelectedTextColor = CSS_Color.MainColor, Text = floor.name, Tag = floor.sid, }; row.AddChidren(btnFloor); if (room == null) { var btnDel = new Button() { TextID = StringId.Del, BackgroundColor = CSS_Color.WarningColor, TextColor = CSS_Color.MainBackgroundColor, Tag = floor.name }; row.AddRightView(btnDel); LoadEvent_DelFloor(btnDel); LoadEvent_FloorNamgeChange(btnFloor,btnDel,row,floor); } else { LoadEvent_FloorChoose(btnFloor); if (room.floorId == floor.sid) { lastButton = btnFloor; btnFloor.IsSelected = true; } } } void RefreshFloorsListView(string changeType,string floorName) { switch (changeType) { case "add": try { var f = new Floor() { sid = Guid.NewGuid().ToString(), name = floorName }; DB_ResidenceData.residenceData.floors.Add(f); LoadFloorRow(f); } catch (Exception ex) { MainPage.Log("add floor eroor : " + ex.Message); } break; case "edit": for(int i=0;i obj.name == floorName).sid) { r.floorId = ""; } } for (int i = 0; i < floorsListView.ChildrenCount; i++) { if (floorsListView.GetChildren(i).GetType() == typeof(Button)) { Button btn = floorsListView.GetChildren(i) as Button; if (btn.Tag == null) continue; if (btn.Tag.ToString() == floorName + "line") { btn.RemoveFromParent(); } } if (floorsListView.GetChildren(i).GetType() == typeof(RowLayout)) { RowLayout row = floorsListView.GetChildren(i) as RowLayout; if (row.Tag == null) continue; if (row.Tag.ToString() == floorName) { row.RemoveFromParent(); } } DB_ResidenceData.residenceData.floors.Remove(DB_ResidenceData.residenceData.floors.Find((obj) => obj.name == floorName)); } break; } DB_ResidenceData.residenceData.SaveResidenceData(); int count = DB_ResidenceData.residenceData.floors.Count > 10 ? 10 : DB_ResidenceData.residenceData.floors.Count; floorsListView.Height = Application.GetRealHeight(50 * count); contentView.Height = Application.GetRealHeight(50 * (count + 1)); } /// /// 分配给room楼层关系 /// public void LoadPage(Room r,int titleId) { room = r; LoadPage(titleId); btnConfrim = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(582), Width = Application.GetRealWidth(220), Height = Application.GetRealHeight(44), Radius = (uint)Application.GetRealHeight(22), BackgroundColor = CSS_Color .MainColor, TextColor = CSS_Color.MainBackgroundColor, TextSize = CSS_FontSize.SubheadingFontSize, TextAlignment = TextAlignment.Center, IsBold = true, TextID = StringId.Confirm, }; bodyView.AddChidren(btnConfrim); LoadEvent_BindFloor(); } } }