using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using ZigBee.Device; namespace Shared.Phone.UserCenter.SharedContent { /// /// 配置新共享内容的主界面 /// public class ConfigureNewSharedListRoomForm : UserCenterCommonForm { #region ■ 变量声明___________________________ /// /// 列表控件 /// private VerticalScrolViewLayout listView = null; /// /// 成员信息 /// private MemberInfoRes memberResult = null; /// /// 成员的分享数据 /// private MemberShardInfoData memberShardInfo = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 成员信息 /// 成员的共享信息 public void ShowForm(MemberInfoRes i_memberResult, MemberShardInfoData i_memberShardInfo) { this.memberResult = i_memberResult; this.memberShardInfo = i_memberShardInfo; this.memberShardInfo.SubAccountDistributedMark = this.memberResult.SubAccountDistributedMark; //设置头部信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddShared)); //初始化中部信息 this.InitMiddleFrame(); } /// /// 初始化中部信息 /// private void InitMiddleFrame() { bodyFrameLayout.RemoveAll(); //区域列表 var btnTitle = new TitleViewControl(1000, true); btnTitle.TextID = R.MyInternationalizationString.uAreaList; btnTitle.Y = Application.GetRealHeight(30); bodyFrameLayout.AddChidren(btnTitle); this.listView = new VerticalScrolViewLayout(); listView.Y = btnTitle.Bottom + Application.GetRealHeight(30); listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(30) - btnTitle.Bottom; bodyFrameLayout.AddChidren(listView); new System.Threading.Thread(() => { //初始化区域列表 this.InitAreaListRow(); }) { IsBackground = true }.Start(); } #endregion #region ■ 区域列表___________________________ /// /// 初始化区域列表 /// private void InitAreaListRow() { bool hadShard = false; foreach (var room in Shared.Common.Room.Lists) { if (this.CheckCanShowRow(room) == false) { //检测能否显示该房间 continue; } hadShard = true; Application.RunOnMainThread(() => { this.AddRoomRow(room); }); } if (hadShard == false) { Application.RunOnMainThread(() => { bodyFrameLayout.RemoveAll(); //全部区域无可共享的设备 var btnMsg = new MsgViewControl(bodyFrameLayout.Width, false); btnMsg.Gravity = Gravity.CenterVertical; btnMsg.TextID = R.MyInternationalizationString.uNotShardDeviceInAllRoomMsg; bodyFrameLayout.AddChidren(btnMsg); }); } } /// /// 添加房间行 /// /// private void AddRoomRow(Common.Room room) { var row = new StatuRowLayout(listView); //房间名 var btnName = new RowCenterView(false); btnName.Text = room.Name; row.AddChidren(btnName); row.AddRightIconControl(); //分享 var btnShard = new RowEditorButton(); btnShard.TextID = R.MyInternationalizationString.uShared; row.AddRightView(btnShard); btnShard.MouseUpEventHandler += (sender, e) => { //确定共享该区域? string msg = Language.StringByID(R.MyInternationalizationString.uConfirmShardRoomContent); this.ShowConfirmMsg(msg, "DoSharedContentByRoom", room); }; row.MouseUpEvent += (sender, e) => { var form = new ConfigureNewSharedMainForm(); this.AddForm(form, room, memberResult, memberShardInfo); }; } /// /// 检测该房间能否显示 /// /// /// private bool CheckCanShowRow(Common.Room room) { if (room.DeviceUIList.Count == 0 && room.SceneUIList.Count == 0) { return false; } if (room.IsLove == true) { return false; } if (memberShardInfo.dicAllMemberShard.ContainsKey(room.FileName) == false) { //没有这个房间 return true; } var listCheck = memberShardInfo.dicAllMemberShard[room.FileName]; foreach (var deviceUi in room.DeviceUIList) { if (deviceUi.CommonDevice == null) { continue; } if (listCheck.Contains(deviceUi.CommonDevice.FilePath) == false) { //存在未分享的设备的话,此房间可以显示 return true; } } foreach (var sceneUi in room.SceneUIList) { if (sceneUi == null) { continue; } if (listCheck.Contains(sceneUi.FileName) == false) { //存在未分享的场景的话,此房间可以显示 return true; } } return false; } #endregion #region ■ 分享指定区域_______________________ /// /// 执行分分享指定区域 /// /// 指定要分享的房间 public void DoSharedContentByRoom(Common.Room room) { if (memberShardInfo.dicAllMemberShard.ContainsKey(room.FileName) == false) { memberShardInfo.dicAllMemberShard[room.FileName] = new HashSet(); } //重复检测用 var listCheck = memberShardInfo.dicAllMemberShard[room.FileName]; //获取全部设备 var listDevice = new List(); foreach (var deviceUi in room.DeviceUIList) { var device = deviceUi.CommonDevice; if (device == null || listCheck.Contains(device.FilePath) == true) { //异常,或者已经分享了的,不再显示 continue; } listDevice.Add(device); } //获取全部场景 var listScene = new List(); foreach (var sceneUi in room.SceneUIList) { if (sceneUi == null || listCheck.Contains(sceneUi.FileName) == true) { //异常,或者已经分享了的,不再显示 continue; } listScene.Add(sceneUi); } new System.Threading.Thread(async () => { //执行上传 var result = await HdlShardLogic.Current.DoUploadSharedContent(memberShardInfo, room, listDevice, listScene); if (result == true) { //分享成功 string msg = Language.StringByID(R.MyInternationalizationString.uShardSuccess); this.ShowTip(msg); Application.RunOnMainThread(() => { //重新刷新界面 this.InitMiddleFrame(); }); } }) { IsBackground = true }.Start(); } #endregion #region ■ 界面重新激活事件___________________ /// /// 自身的上层界面关闭后,它自身处于最上层时,触发的事件 /// public override void FormActionAgainEvent() { //重新刷新界面 this.InitMiddleFrame(); } #endregion #region ■ 结构体_____________________________ /// /// 接收分享数据 /// private class MemberShardInfoResult { /// /// 文件名字 /// public string ShareName = string.Empty; /// /// 主键 /// public string DistributedMark = string.Empty; } #endregion } }