| | |
| | | using HDL_ON.Entity; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.DAL; |
| | | using HDL_ON.DAL.Server; |
| | | |
| | | namespace HDL_ON.UI |
| | | { |
| | | /// <summary> |
| | | /// 使用权限页面 |
| | | /// 成员权限管理页面 |
| | | /// </summary> |
| | | public partial class MemberPermissionPage : FrameLayout |
| | | { |
| | |
| | | public void LoadPage() |
| | | { |
| | | bodyView.BackgroundColor = CSS_Color.BackgroundColor; |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.PermissionToUse)).LoadTopView(); |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.MemberPermissionManagement)).LoadTopView(); |
| | | |
| | | FrameLayout headPortraitView = new FrameLayout() |
| | | { |
| | |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | Text = memberInfo.nickName + "(" + memberInfo.Account + ")", |
| | | //Text = memberInfo.nickName + "(" + memberInfo.UserName + ")", |
| | | }; |
| | | headPortraitView.AddChidren(btnMemberName); |
| | | string username = HDLCommon.Current.GetUserName(memberInfo.memberName); |
| | | btnMemberName.Text = memberInfo.nickName + "(" + username + ")"; |
| | | |
| | | #region RoomList |
| | | roomListView = new VerticalScrolViewLayout() |
| | |
| | | var btnLine = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnTitle.Bottom, |
| | | Y = titleView.Height - Application.GetRealHeight(2), |
| | | Width = Application.GetRealWidth(360), |
| | | Height = Application.GetRealHeight(1), |
| | | BackgroundColor = CSS_Color.DividingLineColor, |
| | | }; |
| | | roomListView.AddChidren(btnLine); |
| | | titleView.AddChidren(btnLine); |
| | | |
| | | //--------------------------------------------- |
| | | //var roomListView = new VerticalScrolViewLayout() |
| | | //{ |
| | | // Y = btnLine.Bottom, |
| | | // Height = Application.GetRealHeight(440), |
| | | //}; |
| | | //contentView.AddChidren(roomListView); |
| | | //未分配区域的功能 |
| | | List<Function> allFunctionList = FunctionList.List.GetDeviceFunctionList(); |
| | | //未分配区域的功能 |
| | | List<Function> unallocatedList = new List<Function>(); |
| | | // |
| | | foreach (var function in allFunctionList) |
| | | { |
| | | function.roomIds.Remove(null); |
| | | if (function.roomIds.Count > 0) |
| | | { |
| | | //allocatedList.Add(function); |
| | | } |
| | | else |
| | | { |
| | | unallocatedList.Add(function); |
| | | } |
| | | } |
| | | |
| | | //List<Function> funss = new List<Function>(); |
| | | //if (memberInfo.CurResidenceShareDate.Count > 0) |
| | | //{ |
| | | // foreach (var sd in memberInfo.CurResidenceShareDate) |
| | | // { |
| | | // funss.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<ShareData>(System.Text.Encoding.UTF8.GetString(sd.ShareDataBytes))); |
| | | // } |
| | | //} |
| | | //移除当前住宅已经不存在的功能 |
| | | for (int i = 0; i < memberInfo.CurResidenceShareData.Count;) |
| | | { |
| | | var sd = memberInfo.CurResidenceShareData[i]; |
| | | if (allFunctionList.Find((obj) => obj.deviceId == sd.shareTypeId) == null) |
| | | { |
| | | //new DAL.Server.HttpServerRequest().DeleteShareData(sd); |
| | | //待确认是否同步云端删除分享 |
| | | memberInfo.CurResidenceShareData.Remove(sd); |
| | | } |
| | | else |
| | | { |
| | | i++; |
| | | } |
| | | } |
| | | |
| | | try |
| | | { |
| | | //遍历加载房间分享个数统计状态RowLayout |
| | | foreach (var room in SpatialInfo.CurrentSpatial.RoomList) |
| | | { |
| | | var roomView = new FrameLayout() |
| | | AddRoomFunctionRowLayout(room); |
| | | } |
| | | //2020-12-16 加载未分配区域功能RowLayout |
| | | AddNoAreaFunctionRowLayout(unallocatedList); |
| | | } |
| | | catch |
| | | { |
| | | Utlis.WriteLine("AddRoomFunctionRowLayout error"); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加房间分享个数统计状态的RowLayout |
| | | /// </summary> |
| | | /// <param name="mRoom"></param> |
| | | void AddRoomFunctionRowLayout(Room mRoom) |
| | | { |
| | | ShowBaseRoomFunOrNoAreaFunRowLayout(mRoom, null); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加未分配区域功能 的个数统计状态的RowLayout |
| | | /// </summary> |
| | | /// <param name="unallocatedList">未分配的所有功能列表</param> |
| | | void AddNoAreaFunctionRowLayout(List<Function> unallocatedList) |
| | | { |
| | | ShowBaseRoomFunOrNoAreaFunRowLayout(null, unallocatedList); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 2020-12-17 重新调整 |
| | | /// 添加房间分享或者无区域分配 个数统计状态的RowLayout |
| | | /// </summary> |
| | | /// <param name="room">如果房间为空,代表管理无分配区域</param> |
| | | /// <param name="unallocatedList">管理无分配区域才有效</param> |
| | | void ShowBaseRoomFunOrNoAreaFunRowLayout(Room mRoom, List<Function> unallocatedList) |
| | | { |
| | | /// 当前房间或者无分配区域分享列表 |
| | | List<ShareData> funs_RoomAll = new List<ShareData>(); |
| | | /// <summary> |
| | | /// 房间或者无分配区域所有功能列表 |
| | | /// </summary> |
| | | List<Function> roomFunctionList = new List<Function>(); |
| | | /// 房间ID |
| | | string roomId = ""; |
| | | |
| | | var roomView = new RowLayout() |
| | | { |
| | | Height = Application.GetRealWidth(50), |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | | LineColor = CSS_Color.MainBackgroundColor, |
| | | }; |
| | | roomListView.AddChidren(roomView); |
| | | |
| | |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | Text = room.roomName, |
| | | //Text = room.roomName, |
| | | }; |
| | | roomView.AddChidren(btnRoomName); |
| | | |
| | | //计算已经加入房间的设备数量 |
| | | int addCount = 0; |
| | | foreach (var sd in memberInfo.CurResidenceShareDate) |
| | | { |
| | | if (room.GetRoomFunctions(false).Find((obj) => obj.deviceId == sd.shareTypeId) != null) |
| | | { |
| | | addCount++; |
| | | } |
| | | } |
| | | //移除当前住宅已经不存在的功能 |
| | | for (int i = 0; i < memberInfo.CurResidenceShareDate.Count;) |
| | | { |
| | | var sd = memberInfo.CurResidenceShareDate[i]; |
| | | if (FunctionList.List.GetDeviceFunctionList().Find((obj) => obj.deviceId == sd.shareTypeId) == null) |
| | | { |
| | | //new DAL.Server.HttpServerRequest().DeleteShareData(sd); |
| | | memberInfo.CurResidenceShareDate.Remove(sd); |
| | | } |
| | | else |
| | | { |
| | | i++; |
| | | } |
| | | } |
| | | |
| | | |
| | | var btnFunctionCount = new Button() |
| | | { |
| | |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | | Text = addCount + "/" + room.GetRoomFunctions(false).Count.ToString(), |
| | | //Text = addCount + "/" + room.GetRoomFunctions(false).Count.ToString(), |
| | | }; |
| | | roomView.AddChidren(btnFunctionCount); |
| | | |
| | |
| | | }; |
| | | roomView.AddChidren(btnRight); |
| | | |
| | | //如果房间为空,代表管理无分配区域 |
| | | if (mRoom != null) |
| | | { |
| | | //显示房间名 |
| | | btnRoomName.Text = mRoom.roomName; |
| | | roomFunctionList = mRoom.GetRoomFunctions(false); |
| | | roomId = mRoom.roomId; |
| | | //添加分割线 |
| | | var lineView = new LineView(roomView.Height - Application.GetRealHeight(1)); |
| | | roomView.AddChidren(lineView); |
| | | } |
| | | else |
| | | { |
| | | //显示无区域功能 |
| | | btnRoomName.TextID = StringId.NoAreaFunction; |
| | | roomFunctionList = unallocatedList; |
| | | roomId = null; |
| | | } |
| | | |
| | | //删除按钮 |
| | | var deleteBtn = new Button() |
| | | { |
| | | TextID = StringId.Del, |
| | | BackgroundColor = CSS_Color.AuxiliaryColor2, |
| | | TextColor = CSS_Color.MainBackgroundColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | }; |
| | | roomView.AddRightView(deleteBtn); |
| | | deleteBtn.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | //一键删除所有分享 |
| | | DeleteRoomAllShare(funs_RoomAll, roomFunctionList, roomId, btnFunctionCount, roomView); |
| | | }; |
| | | |
| | | //计算已经加入房间的设备数量的Action事件 |
| | | Action RefreshAction = () => { |
| | | funs_RoomAll = new List<ShareData>(); |
| | | int addCount = 0; |
| | | foreach (var sd in memberInfo.CurResidenceShareData) |
| | | { |
| | | if (roomFunctionList.Find((obj) => obj.deviceId == sd.shareTypeId) != null) |
| | | { |
| | | addCount++; |
| | | funs_RoomAll.Add(sd); |
| | | } |
| | | } |
| | | btnFunctionCount.Text = addCount + "/" + roomFunctionList.Count.ToString(); |
| | | //Utlis.WriteLine("刷新成功"); |
| | | }; |
| | | //点击调整事件 |
| | | EventHandler<MouseEventArgs> eHandler = (sender, e) => |
| | | { |
| | | Action<string> refreshFunctionCount = (newCount) => { |
| | | btnFunctionCount.Text = newCount + "/" + room.GetRoomFunctions(false).Count.ToString(); |
| | | }; |
| | | var mmp = new MemberFunctionPermissionPage(memberInfo, room, refreshFunctionCount); |
| | | var mmp = new MemberFunctionPermissionPage(memberInfo, roomFunctionList, funs_RoomAll, roomId, RefreshAction); |
| | | MainPage.BasePageView.AddChidren(mmp); |
| | | mmp.LoadPage(StringId.PermissionToUse); |
| | | mmp.LoadPage(StringId.MemberPermissionManagement); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | roomView.MouseUpEventHandler = eHandler; |
| | |
| | | btnRight.MouseUpEventHandler = eHandler; |
| | | btnFunctionCount.MouseUpEventHandler = eHandler; |
| | | |
| | | if (SpatialInfo.CurrentSpatial.RoomList.IndexOf(room) < SpatialInfo.CurrentSpatial.RoomList.Count - 2) |
| | | { |
| | | var btnRoomLine = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = Application.GetRealWidth(49), |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealWidth(1), |
| | | BackgroundColor = CSS_Color.DividingLineColor, |
| | | }; |
| | | roomView.AddChidren(btnRoomLine); |
| | | } |
| | | RefreshAction?.Invoke(); |
| | | } |
| | | |
| | | //if (DB_ResidenceData.rooms.Count > 10) |
| | | //{ |
| | | // roomListView.ScrollEnabled = true; |
| | | //} |
| | | //else |
| | | //{ |
| | | // roomListView.ScrollEnabled = false; |
| | | |
| | | // roomListView.AddChidren(new Button() |
| | | // { |
| | | // Height = Application.GetRealWidth(441), |
| | | // BackgroundColor = CSS_Color.BackgroundColor, |
| | | // }); |
| | | //} |
| | | } |
| | | } |
| | | } |