using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using ZigBee.Device; namespace Shared.Phone.UserCenter.SharedContent { /// /// 查看已共享内容的房间列表界面★ /// public class SearchConfigureSharedListRoomForm : EditorCommonForm { #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.uHadSharedContent)); //添加图标 var btnAdd = new MostRightIconControl(69, 69); btnAdd.UnSelectedImagePath = "Item/Add.png"; btnAdd.ButtonClickEvent += (sender, e) => { var form = new ConfigureNewSharedListRoomForm(); form.AddForm(this.memberResult, this.memberShardInfo); }; topFrameLayout.AddChidren(btnAdd); btnAdd.InitControl(); //初始化中部信息 //this.InitMiddleFrame(); } ///// ///// 初始化中部信息 ///// //private void InitMiddleFrame() //{ // //清空bodyFrame // this.ClearBodyFrame(); // //区域列表 // var btnTitle = new NormalViewControl(1000, true); // btnTitle.X = ControlCommonResourse.XXLeft; // 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); // HdlThreadLogic.Current.Run(async () => // { // //获取成员的共享列表(返回文件的名字和主键) // var result = await this.GetMemberShardContentListAndSetToLocation(); // if (result == false) // { // return; // } // //从本地获取成员的分享列表 // this.GetMemberShardContentListFromLocal(); // //初始化区域列表 // this.InitAreaListRow(); // }); //} #endregion //#region ■ 区域列表___________________________ ///// ///// 初始化区域列表 ///// //private void InitAreaListRow() //{ // if (memberShardInfo.dicShardRoom.Count == 0) // { // Application.RunOnMainThread(() => // { // if (bodyFrameLayout != null) // { // bodyFrameLayout.RemoveAll(); // //请配置共享设备 // var btnMsg = new MsgViewControl(bodyFrameLayout.Width, false); // btnMsg.Gravity = Gravity.CenterVertical; // btnMsg.TextID = R.MyInternationalizationString.uPleaseConfigureShardDeviceMsg; // bodyFrameLayout.AddChidren(btnMsg); // } // }); // return; // } // foreach (var room in memberShardInfo.dicShardRoom.Values) // { // Application.RunOnMainThread(() => // { // if (bodyFrameLayout != null) // { // this.AddRoomRow(room); // } // }); // } //} ///// ///// 添加房间行 ///// ///// //private void AddRoomRow(Common.Room room) //{ // var row = new StatuRowLayout(listView); // //房间名 // var btnName = new RowCenterView(false); // btnName.Text = room.Name; // row.AddChidren(btnName); // var btnDelete = new RowDeleteButton(); // row.AddRightView(btnDelete); // btnDelete.MouseUpEventHandler += (sender, e) => // { // //确定移除该共享区域? // string msg = Language.StringByID(R.MyInternationalizationString.uDeleteShardAreaMsg); // this.ShowConfirmMsg(msg, "DoDeleteShardContentByRoom", room); // }; // row.AddRightArrow(); // row.MouseUpEvent += (sender, e) => // { // var form = new SearchConfigureSharedMainForm(); // form.AddForm(room, memberResult, memberShardInfo); // }; //} //#endregion //#region ■ 删除共享区域_______________________ ///// ///// 删除共享区域 ///// ///// 指定要删除的共享区域 //public void DoDeleteShardContentByRoom(Common.Room room) //{ // //获取全部设备 // var listDevice = new List(); // foreach (var deviceUi in room.DeviceUIList) // { // var device = deviceUi.CommonDevice; // if (device == null) // { // var byteData = HdlShardLogic.Current.GetShardFileContent(deviceUi.DeviceFileName); // if (byteData == null) // { // continue; // } // device = Newtonsoft.Json.JsonConvert.DeserializeObject(System.Text.Encoding.UTF8.GetString(byteData)); // } // listDevice.Add(device); // } // //获取全部场景 // var listScene = new List(); // foreach (var sceneUi in room.SceneUIList) // { // listScene.Add(sceneUi); // } // HdlThreadLogic.Current.Run(async () => // { // //执行删除 // var result = await HdlShardLogic.Current.DoDeleteSharedContent(memberShardInfo, room, listDevice, listScene); // if (result == true) // { // Application.RunOnMainThread(() => // { // //重新刷新界面 // this.InitMiddleFrame(); // }); // } // }); //} //#endregion //#region ■ 获取成员共享列表___________________ ///// ///// 获取成员共享列表然后保存到本地 ///// ///// //private async Task GetMemberShardContentListAndSetToLocation() //{ // if (this.memberShardInfo.Refresh == false) // { // return true; // } // this.memberShardInfo.Refresh = false; // //开启进度条 // this.ShowProgressBar(); // var infoPra = new // { // DistributedMark = memberResult.SubAccountDistributedMark, // HouseDistributedMark = Shared.Common.Config.Instance.HomeId, // IsOtherAccountControl = Common.Config.Instance.isAdministrator // }; // var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetShareDataBySubAccount", false, infoPra); // if (result == null) // { // //关闭进度条 // this.CloseProgressBar(ShowReLoadMode.YES); // return false; // } // var listData = Newtonsoft.Json.JsonConvert.DeserializeObject>(result); // //先清空共享文件夹 // HdlShardLogic.Current.ClearShardDirectory(); // var listMark = new List(); // foreach (var data in listData) // { // //性能优化:如果本地拥有这个文件的话,直接使用那个文件 // string fileName = data.ShareName; // //记录起它的主键 // memberShardInfo.dicAllShardKeys[fileName] = data.DistributedMark; // if (fileName.StartsWith("Room_") == true || fileName.StartsWith("Scene_") == true) // { // //房间文件和场景文件需要重新反序列化 // listMark.Add(data.DistributedMark); // continue; // } // if (Shared.Common.Global.IsExistsByHomeId(fileName) == true) // { // //其他文件的话,如果本地存在,则以本地文件为准 // HdlShardLogic.Current.AddShardFile(fileName); // continue; // } // listMark.Add(data.DistributedMark); // } // //将分享的数据存入本地,返回的是文件名字(异常时返回null) // var listFile = await HdlShardLogic.Current.SetShardFileToLocation(listMark); // if (listFile == null) // { // //关闭进度条 // this.CloseProgressBar(ShowReLoadMode.YES); // return false; // } // //关闭进度条 // this.CloseProgressBar(); // return true; //} ///// ///// 从本地获取成员的分享列表 ///// //private void GetMemberShardContentListFromLocal() //{ // memberShardInfo.dicShardRoom = new Dictionary(); // var listFile = HdlShardLogic.Current.GetLocalAllShardFile(); // foreach (string fileName in listFile) // { // if (fileName.StartsWith("Room_") == true) // { // var byteData = HdlShardLogic.Current.GetShardFileContent(fileName); // if (byteData == null) // { // continue; // } // string valueData = System.Text.Encoding.UTF8.GetString(byteData); // var roomTemp = Newtonsoft.Json.JsonConvert.DeserializeObject(valueData); // memberShardInfo.dicShardRoom[fileName] = roomTemp; // if (memberShardInfo.dicAllMemberShard.ContainsKey(fileName) == false) // { // //先初始化房间 // memberShardInfo.dicAllMemberShard[fileName] = new HashSet(); // } // } // } // //设置房间里面设备的UI对象(因为这个东西是反序列化出来的,设备UI对象是不序列化对象) // this.InitRoomAttributeData(); //} ///// ///// 初始化房间的属性对象全部的本地文件 ///// //private void InitRoomAttributeData() //{ // //设置房间里面设备的UI对象(因为这个东西是反序列化出来的,设备UI对象是不序列化对象) // foreach (var tempRoom in memberShardInfo.dicShardRoom.Values) // { // var listShard = memberShardInfo.dicAllMemberShard[tempRoom.FileName]; // listShard.Clear(); // //添加房间 // listShard.Add(tempRoom.FileName); // //还原UI设备对象 // tempRoom.DeviceUIList.Clear(); // foreach (string uiPath in tempRoom.DeviceUIFilePathList) // { // var byteData = HdlShardLogic.Current.GetShardFileContent(uiPath); // if (byteData == null) // { // continue; // } // string valueData = System.Text.Encoding.UTF8.GetString(byteData); // var tempUi = Newtonsoft.Json.JsonConvert.DeserializeObject(valueData); // tempRoom.DeviceUIList.Add(tempUi); // //设备UI // listShard.Add(tempUi.FileName); // //设备 // listShard.Add(tempUi.DeviceFileName); // } // //还原场景对象 // tempRoom.SceneUIList.Clear(); // foreach (string uiPath in tempRoom.SceneUIFilePathList) // { // var byteData = HdlShardLogic.Current.GetShardFileContent(uiPath); // if (byteData == null) // { // continue; // } // string valueData = System.Text.Encoding.UTF8.GetString(byteData); // var tempUi = Newtonsoft.Json.JsonConvert.DeserializeObject(valueData); // tempRoom.SceneUIList.Add(tempUi); // //场景的主键 // listShard.Add(tempUi.FileName); // //从场景对象里面获取全部的绑定目标的文件名字 // this.GetSceneBindFileName(tempUi, ref listShard); // } // } //} //#endregion //#region ■ 界面重新激活事件___________________ ///// ///// 自身的上层界面关闭后,它自身处于最上层时,触发的事件 ///// //public override void FormActionAgainEvent() //{ // //不要删除这个函数 // base.FormActionAgainEvent(); // //重新刷新界面 // this.InitMiddleFrame(); //} //#endregion //#region ■ 一般方法___________________________ ///// ///// 从场景对象里面获取全部的绑定目标的文件名字 ///// ///// 场景 ///// 文件列表(里面存的是设备UI文件和设备文件和场景文件) //private void GetSceneBindFileName(Common.SceneUI scene, ref HashSet listFile) //{ // foreach (var data in scene.AddSceneMemberDataList) // { // //设备 // if (data.Type == 0) // { // var device = Common.LocalDevice.Current.GetDevice(data.DeviceAddr, data.Epoint); // if (device != null) // { // string uiName = "DeviceUI_" + device.FilePath; // if (listFile.Contains(uiName) == false) // { // listFile.Add(uiName); // listFile.Add(device.FilePath); // } // } // } // if (data.Type == 1) // { // var sceneTemp = Common.Room.CurrentRoom.GetSceneUIBySceneId(data.ElseScenesId); // if (sceneTemp != null && listFile.Contains(sceneTemp.FileName)) // { // listFile.Add(sceneTemp.FileName); // } // } // } //} //#endregion //#region ■ 结构体_____________________________ ///// ///// 接收分享数据 ///// //private class ReceiveShardInfoResult //{ // /// // /// 文件名字 // /// // public string ShareName = string.Empty; // /// // /// 主键 // /// // public string DistributedMark = string.Empty; //} //#endregion } }