using System; using System.Collections.Generic; namespace Shared.Phone.UserCenter.Member { /// /// 成员信息管理 /// public class MemberManagementForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 成员的信息 /// private MemberInfoRes memberInfo = null; /// /// 管理员权限图标控件 /// private MostRightIconControl btnTopIcon = null; /// /// 权限的翻译名控件 /// private NormalViewControl btnAuthority = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 成员信息 public void ShowForm(MemberInfoRes info) { this.memberInfo = info; //设置标题信息 string title = string.IsNullOrEmpty(info.UserName) == true ? info.Account : info.UserName; base.SetTitleText(title); //初始化右上角的图标 this.InitTopRightIcon(); //初始化中部控件 this.InitMiddleFrame(); } /// /// 初始化右上角的图标 /// private void InitTopRightIcon() { if (UserCenterResourse.UserInfo.AuthorityNo != 1) { return; } //管理员权限图标 btnTopIcon = new MostRightIconControl(69, 69); if (memberInfo.AccountType == 1) { btnTopIcon.UnSelectedImagePath = "Item/HadAuthority.png"; } else { btnTopIcon.UnSelectedImagePath = "Item/NotAuthority.png"; } topFrameLayout.AddChidren(btnTopIcon); btnTopIcon.InitControl(); btnTopIcon.ButtonClickEvent += (sender, e) => { //确定取消「{0}」管理员权限? string msg = Language.StringByID(R.MyInternationalizationString.uDownSubAccountLevel); if (memberInfo.AccountType != 1) { //确定授权「{0}」成为管理员? msg = Language.StringByID(R.MyInternationalizationString.uUpSubAccountLevel); } msg = msg.Replace("{0}", string.IsNullOrEmpty(memberInfo.UserName) == true ? memberInfo.Account : memberInfo.UserName); this.ShowMassage(ShowMsgType.Confirm, msg, () => { //二次安全验证,如果没有设置有,直接跳过验证 HdlCheckLogic.Current.CheckSecondarySecurity( () => { this.UpOrDownSubAccountLevel(); }, () => { this.UpOrDownSubAccountLevel(); }); }); }; } /// /// 初始化中部控件 /// private void InitMiddleFrame() { //清空bodyFrame this.ClearBodyFrame(); //初始化用户图标 this.InitMenberIconControl(); //初始化信息列表 this.InitInfoList(); } /// /// 初始化用户图标 /// private void InitMenberIconControl() { var frame = new FrameLayout(); frame.Height = Application.GetRealHeight(372); frame.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(frame); //用户图标 string iconPath = System.IO.Path.Combine(UserCenterResourse.AccountOption.UserPictruePath, memberInfo.DistributedMark + ".png"); var btnUserIcon = new ImageView(); btnUserIcon.Height = this.GetPictrueRealSize(207); btnUserIcon.Width = this.GetPictrueRealSize(207); btnUserIcon.Radius = (uint)this.GetPictrueRealSize(207) / 2; if (System.IO.File.Exists(iconPath) == true) { btnUserIcon.ImageBytes = Shared.IO.FileUtils.ReadFile(iconPath); } else { btnUserIcon.ImagePath = "Center/Admin.png"; } btnUserIcon.Y = Application.GetRealHeight(45); btnUserIcon.Gravity = Gravity.CenterHorizontal; frame.AddChidren(btnUserIcon); //获取成员头像 this.GetMemberIcon(btnUserIcon); //权限 btnAuthority = new NormalViewControl(800, 50, true); btnAuthority.TextAlignment = TextAlignment.Center; btnAuthority.TextSize = 12; btnAuthority.Y = btnUserIcon.Bottom + Application.GetRealHeight(23); btnAuthority.Gravity = Gravity.CenterHorizontal; btnAuthority.TextColor = UserCenterColor.Current.TextGrayColor1; btnAuthority.TextID = R.MyInternationalizationString.uMember; if (memberInfo.AccountType == 1) { //拥有管理员权限 btnAuthority.TextID = R.MyInternationalizationString.uMemberHadActionAuthority; } frame.AddChidren(btnAuthority); } #endregion #region ■ 初始化信息列表_____________________ /// /// 初始化信息列表 /// private void InitInfoList() { //标题:成员权限 var btnMenberTile = new NormalViewControl(800, 60, true); btnMenberTile.X = ControlCommonResourse.XXLeft; btnMenberTile.Y = Application.GetRealHeight(418); btnMenberTile.TextColor = UserCenterColor.Current.TextColor2; btnMenberTile.TextID = R.MyInternationalizationString.MenberAuthority; btnMenberTile.TextSize = 15; bodyFrameLayout.AddChidren(btnMenberTile); var frame = new FrameListControl(); frame.Height = Application.GetRealHeight(311); frame.BackgroundColor = UserCenterColor.Current.White; frame.Y = Application.GetRealHeight(501); bodyFrameLayout.AddChidren(frame); //塞一个空白的进去占空间 var rowTemp = new FrameRowControl(); rowTemp.UseClickStatu = false; rowTemp.Height = Application.GetRealHeight(23) - frame.rowSpace; frame.AddChidren(rowTemp); //添加远程操作行 var rowRemote = new FrameRowControl(frame.rowSpace / 2); rowRemote.UseClickStatu = false; frame.AddChidren(rowRemote); this.AddRemoteRow(rowRemote); //添加已共享内容行 var rowShard = new FrameRowControl(frame.rowSpace / 2); frame.AddChidren(rowShard); this.AddShardContentRow(rowShard); //一旦移除该家庭成员,他/她将无法使用该网关下所绑定的设备 var btnNote1 = new NormalViewControl(613, 100, true); btnNote1.X = Application.GetRealWidth(248); btnNote1.Y = Application.GetRealHeight(1327); btnNote1.TextSize = 12; btnNote1.TextID = R.MyInternationalizationString.RemoveMenberAndDonotUserBindGatewayDevice; btnNote1.IsMoreLines = true; btnNote1.TextColor = UserCenterColor.Current.TextGrayColor1; btnNote1.TextAlignment = TextAlignment.Center; bodyFrameLayout.AddChidren(btnNote1); var btnIcon = new IconViewControl(58); btnIcon.X = Application.GetRealWidth(167); btnIcon.Y = btnNote1.Y; btnIcon.UnSelectedImagePath = "Item/Tips.png"; bodyFrameLayout.AddChidren(btnIcon); //添加移除按钮 var btnDelete = new BottomClickButton(); btnDelete.TextID = R.MyInternationalizationString.RemoveBotton; btnDelete.BackgroundColor = 0xfff75858; bodyFrameLayout.AddChidren(btnDelete); btnDelete.ButtonClickEvent += (sender, e) => { //确定要移除该家庭成员吗? string msg = Language.StringByID(R.MyInternationalizationString.uConfirmRemoveMember); this.ShowMassage(ShowMsgType.Confirm, msg, () => { //删除子账号 HdlThreadLogic.Current.RunThread(() => { this.DeleteSubAccount(); }); }); }; } #endregion #region ■ 远程操作行_________________________ /// /// 添加远程操作行 /// /// Row. private void AddRemoteRow(FrameRowControl row) { //图标 var btnIcon = row.AddLeftIcon(81); btnIcon.UnSelectedImagePath = "Item/Remote.png"; //文字:远程操作 var btnName = row.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.RemoteManipulation), 500); btnName.TextID = R.MyInternationalizationString.RemoteManipulation; btnName.TextSize = 15; //开关 var btnSwitch = row.AddMostRightSwitchIcon(); if (this.memberInfo.IsAllowRemoteCtrl == true) { btnSwitch.IsSelected = true; } btnSwitch.ButtonClickEvent += (sender, e) => { btnSwitch.CanClick = false; HdlThreadLogic.Current.RunThread(() => { var pra = new { HouseDistributedMark = Common.Config.Instance.Home.Id, DistributedMark = this.memberInfo.DistributedMark, IsAllowRemoteCtrl = !btnSwitch.IsSelected }; //打开进度条 this.ShowProgressBar(); var result = UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/ChangeSubAccountIsAllowRemoteCtrl", false, pra); //关闭进度条 this.CloseProgressBar(); if (result == false) { return; } this.memberInfo.IsAllowRemoteCtrl = !btnSwitch.IsSelected; Application.RunOnMainThread(() => { btnSwitch.CanClick = true; btnSwitch.IsSelected = !btnSwitch.IsSelected; }); }); }; //底线 row.AddBottomLine(); } #endregion #region ■ 已共享内容行_______________________ /// /// 添加已共享内容行 /// /// Row. private void AddShardContentRow(FrameRowControl row) { //图标 var btnIcon = row.AddLeftIcon(81); btnIcon.UnSelectedImagePath = "Item/ShardMenu.png"; //共享 var btnName = row.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uShared2), 500); btnName.TextID = R.MyInternationalizationString.uShared2; btnName.TextSize = 15; //右图标 row.AddRightArrow(); var memberShardInfo = new MemberShardInfoData(); row.ButtonClickEvent += (sender, e) => { var form = new SharedContent.LookSharedListRoomForm(); form.AddForm(memberInfo, memberShardInfo); }; } #endregion #region ■ 升级或者降级子账号_________________ /// /// 升级或者降级子账号 /// public void UpOrDownSubAccountLevel() { HdlThreadLogic.Current.RunThread(() => { //开启进度条 this.ShowProgressBar(); var pra = new UpOrDownLevelPra(); pra.DistributedMark = memberInfo.DistributedMark; bool result = UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/UpSubAccount", false, pra); if (result == false) { this.CloseProgressBar(); return; } this.CloseProgressBar(); //变更权限 memberInfo.AccountType = memberInfo.AccountType == 1 ? 0 : 1; HdlThreadLogic.Current.RunMain(() => { if (this.Parent == null) { return; } //变更权限图标 if (memberInfo.AccountType == 1) { btnTopIcon.UnSelectedImagePath = "Item/HadAuthority.png"; } else { btnTopIcon.UnSelectedImagePath = "Item/NotAuthority.png"; } //变更权限文字 btnAuthority.TextID = memberInfo.AccountType == 1 ? R.MyInternationalizationString.uMemberHadActionAuthority : R.MyInternationalizationString.uMember; //打开显示成功的画面 var form = new SubAccountLevelUpSuccessForm(); form.AddForm(memberInfo); }); }); } #endregion #region ■ 删除子账号_________________________ /// /// 删除子账号 /// private void DeleteSubAccount() { //开启进度条 this.ShowProgressBar(); var pra = new DeleteSubAccountPra(); pra.SubAccount = memberInfo.SubAccountDistributedMark; bool result = UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/DeletedSubAccount", false, pra); //关闭进度条 this.CloseProgressBar(); if (result == false) { return; } HdlThreadLogic.Current.RunMain(() => { //从成员一览画面移除 this.LoadFormMethodByName("MemberListForm", "DeleteRowByAccount", memberInfo.Account); //自身关闭 this.CloseForm(); }); } #endregion #region ■ 获取成员头像_______________________ /// /// 获取成员头像 /// private void GetMemberIcon(ImageView btnUserIcon) { HdlThreadLogic.Current.RunThread(() => { var pra = new AccountInfoPra(); pra.Account = memberInfo.Account; var result = UserCenterLogic.GetByteResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountInfo", false, pra); if (result == null) { return; } var revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject(System.Text.Encoding.UTF8.GetString(result)); if (revertObj == null || revertObj.ResponseData == null) { return; } var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.ResponseData.ToString()); if (infoResult.HeadImage != null) { //写入头像内容 string iconPath = System.IO.Path.Combine(UserCenterResourse.AccountOption.UserPictruePath, memberInfo.DistributedMark + ".png"); Shared.IO.FileUtils.WriteFileByBytes(iconPath, infoResult.HeadImage); HdlThreadLogic.Current.RunMain(() => { btnUserIcon.ImageBytes = Shared.IO.FileUtils.ReadFile(iconPath); }); } }); } #endregion #region ■ 结构体_____________________________ /// /// 升级或者降级子账号的启动参数 /// private class UpOrDownLevelPra : IfacePraCommon { /// /// 通过《住宅的Guid查询住宅下面的子账号》接口时,返回的DistributedMark字段 /// public string DistributedMark = string.Empty; } /// /// 删除子账号的启动参数 /// private class DeleteSubAccountPra : IfacePraCommon { /// /// 通过《住宅的Guid查询住宅下面的子账号》接口时,返回的DistributedMark字段 /// public string SubAccount = string.Empty; /// /// HouseDistributedMark /// public string HouseDistributedMark = Common.Config.Instance.HomeId; } #endregion } }