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
}
}