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