gxc
2019-10-29 ed2f4a97aa48cdb4a013d2a389877f52eb3eccdf
ZigbeeApp/Shared/Phone/UserCenter/SharedContent/SearchConfigureSharedListRoomForm.cs
New file
@@ -0,0 +1,442 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.SharedContent
{
    /// <summary>
    /// 查看已共享内容的房间列表界面★
    /// </summary>
    public class SearchConfigureSharedListRoomForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 列表控件
        /// </summary>
        private VerticalScrolViewLayout listView = null;
        /// <summary>
        /// 成员信息
        /// </summary>
        private MemberInfoRes memberResult = null;
        /// <summary>
        /// 成员的分享数据
        /// </summary>
        private MemberShardInfoData memberShardInfo = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_memberResult">成员信息</param>
        /// <param name="i_memberShardInfo">成员的共享信息</param>
        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();
        }
        ///// <summary>
        ///// 初始化中部信息
        ///// </summary>
        //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 ■ 区域列表___________________________
        ///// <summary>
        ///// 初始化区域列表
        ///// </summary>
        //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);
        //            }
        //        });
        //    }
        //}
        ///// <summary>
        ///// 添加房间行
        ///// </summary>
        ///// <param name="room"></param>
        //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 ■ 删除共享区域_______________________
        ///// <summary>
        ///// 删除共享区域
        ///// </summary>
        ///// <param name="room">指定要删除的共享区域</param>
        //public void DoDeleteShardContentByRoom(Common.Room room)
        //{
        //    //获取全部设备
        //    var listDevice = new List<CommonDevice>();
        //    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<CommonDevice>(System.Text.Encoding.UTF8.GetString(byteData));
        //        }
        //        listDevice.Add(device);
        //    }
        //    //获取全部场景
        //    var listScene = new List<Common.SceneUI>();
        //    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 ■ 获取成员共享列表___________________
        ///// <summary>
        ///// 获取成员共享列表然后保存到本地
        ///// </summary>
        ///// <returns></returns>
        //private async Task<bool> 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<List<ReceiveShardInfoResult>>(result);
        //    //先清空共享文件夹
        //    HdlShardLogic.Current.ClearShardDirectory();
        //    var listMark = new List<string>();
        //    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;
        //}
        ///// <summary>
        ///// 从本地获取成员的分享列表
        ///// </summary>
        //private void GetMemberShardContentListFromLocal()
        //{
        //    memberShardInfo.dicShardRoom = new Dictionary<string, Common.Room>();
        //    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<Common.Room>(valueData);
        //            memberShardInfo.dicShardRoom[fileName] = roomTemp;
        //            if (memberShardInfo.dicAllMemberShard.ContainsKey(fileName) == false)
        //            {
        //                //先初始化房间
        //                memberShardInfo.dicAllMemberShard[fileName] = new HashSet<string>();
        //            }
        //        }
        //    }
        //    //设置房间里面设备的UI对象(因为这个东西是反序列化出来的,设备UI对象是不序列化对象)
        //    this.InitRoomAttributeData();
        //}
        ///// <summary>
        ///// 初始化房间的属性对象全部的本地文件
        ///// </summary>
        //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<Common.DeviceUI>(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<Common.SceneUI>(valueData);
        //            tempRoom.SceneUIList.Add(tempUi);
        //            //场景的主键
        //            listShard.Add(tempUi.FileName);
        //            //从场景对象里面获取全部的绑定目标的文件名字
        //            this.GetSceneBindFileName(tempUi, ref listShard);
        //        }
        //    }
        //}
        //#endregion
        //#region ■ 界面重新激活事件___________________
        ///// <summary>
        ///// 自身的上层界面关闭后,它自身处于最上层时,触发的事件
        ///// </summary>
        //public override void FormActionAgainEvent()
        //{
        //    //不要删除这个函数
        //    base.FormActionAgainEvent();
        //    //重新刷新界面
        //    this.InitMiddleFrame();
        //}
        //#endregion
        //#region ■ 一般方法___________________________
        ///// <summary>
        ///// 从场景对象里面获取全部的绑定目标的文件名字
        ///// </summary>
        ///// <param name="scene">场景</param>
        ///// <param name="listFile">文件列表(里面存的是设备UI文件和设备文件和场景文件)</param>
        //private void GetSceneBindFileName(Common.SceneUI scene, ref HashSet<string> 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 ■ 结构体_____________________________
        ///// <summary>
        ///// 接收分享数据
        ///// </summary>
        //private class ReceiveShardInfoResult
        //{
        //    /// <summary>
        //    /// 文件名字
        //    /// </summary>
        //    public string ShareName = string.Empty;
        //    /// <summary>
        //    /// 主键
        //    /// </summary>
        //    public string DistributedMark = string.Empty;
        //}
        //#endregion
    }
}