HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-09-30 404cdc88627f942df7944af04ee05b9d527752d6
ZigbeeApp/Shared/Phone/UserCenter/SharedContent/ConfigureNewSharedListRoomForm.cs
@@ -9,7 +9,7 @@
    /// <summary>
    /// 配置新共享内容的主界面
    /// </summary>
    public class ConfigureNewSharedListRoomForm : UserCenterCommonForm
    public class ConfigureNewSharedListRoomForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
@@ -33,256 +33,267 @@
        /// <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;
        /// <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.uAddShared));
            //初始化中部信息
            this.InitMiddleFrame();
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame()
        {
            bodyFrameLayout.RemoveAll();
            //区域列表
            var btnTitle = new TitleViewControl(1000, true);
            btnTitle.TextID = R.MyInternationalizationString.uAreaList;
            btnTitle.Y = Application.GetRealHeight(30);
            bodyFrameLayout.AddChidren(btnTitle);
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddShared));
            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();
            //初始化中部信息
            //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);
        //    new System.Threading.Thread(() =>
        //    {
        //        //初始化区域列表
        //        this.InitAreaListRow();
        //    })
        //    { IsBackground = true }.Start();
        //}
        #endregion
        #region ■ 区域列表___________________________
        //#region ■ 区域列表___________________________
        /// <summary>
        /// 初始化区域列表
        /// </summary>
        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);
                });
            }
        }
        ///// <summary>
        ///// 初始化区域列表
        ///// </summary>
        //private void InitAreaListRow()
        //{
        //    bool hadShard = false;
        //    foreach (var room in Shared.Common.Room.Lists)
        //    {
        //        if (this.CheckCanShowRow(room) == false)
        //        {
        //            //检测能否显示该房间
        //            continue;
        //        }
        //        hadShard = true;
        //        Application.RunOnMainThread(() =>
        //        {
        //            if (this.Parent != null)
        //            {
        //                this.AddRoomRow(room);
        //            }
        //        });
        //    }
        //    if (hadShard == false)
        //    {
        //        Application.RunOnMainThread(() =>
        //        {
        //            if (bodyFrameLayout != null)
        //            {
        //                bodyFrameLayout.RemoveAll();
        //                //全部区域无可共享的设备
        //                var btnMsg = new MsgViewControl(bodyFrameLayout.Width, false);
        //                btnMsg.Gravity = Gravity.CenterVertical;
        //                btnMsg.TextID = R.MyInternationalizationString.uNotShardDeviceInAllRoomMsg;
        //                bodyFrameLayout.AddChidren(btnMsg);
        //            }
        //        });
        //    }
        //}
        /// <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);
        ///// <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);
            row.AddRightIconControl();
        //    row.AddRightArrow();
            //分享
            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);
            };
        //    //分享
        //    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);
            };
        }
        //    row.MouseUpEvent += (sender, e) =>
        //    {
        //        var form = new ConfigureNewSharedMainForm();
        //        form.AddForm(room, memberResult, memberShardInfo);
        //    };
        //}
        /// <summary>
        /// 检测该房间能否显示
        /// </summary>
        /// <param name="room"></param>
        /// <returns></returns>
        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;
        }
        ///// <summary>
        ///// 检测该房间能否显示
        ///// </summary>
        ///// <param name="room"></param>
        ///// <returns></returns>
        //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
        //#endregion
        #region ■ 分享指定区域_______________________
        //#region ■ 分享指定区域_______________________
        /// <summary>
        /// 执行分分享指定区域
        /// </summary>
        /// <param name="room">指定要分享的房间</param>
        public void DoSharedContentByRoom(Common.Room room)
        {
            if (memberShardInfo.dicAllMemberShard.ContainsKey(room.FileName) == false)
            {
                memberShardInfo.dicAllMemberShard[room.FileName] = new HashSet<string>();
            }
            //重复检测用
            var listCheck = memberShardInfo.dicAllMemberShard[room.FileName];
            //获取全部设备
            var listDevice = new List<CommonDevice>();
            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<Common.SceneUI>();
            foreach (var sceneUi in room.SceneUIList)
            {
                if (sceneUi == null || listCheck.Contains(sceneUi.FileName) == true)
                {
                    //异常,或者已经分享了的,不再显示
                    continue;
                }
                listScene.Add(sceneUi);
            }
        ///// <summary>
        ///// 执行分分享指定区域
        ///// </summary>
        ///// <param name="room">指定要分享的房间</param>
        //public void DoSharedContentByRoom(Common.Room room)
        //{
        //    if (memberShardInfo.dicAllMemberShard.ContainsKey(room.FileName) == false)
        //    {
        //        memberShardInfo.dicAllMemberShard[room.FileName] = new HashSet<string>();
        //    }
        //    //重复检测用
        //    var listCheck = memberShardInfo.dicAllMemberShard[room.FileName];
        //    //获取全部设备
        //    var listDevice = new List<CommonDevice>();
        //    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<Common.SceneUI>();
        //    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);
        //    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.ShowMassage(msg);
                    Application.RunOnMainThread(() =>
                    {
                        //重新刷新界面
                        this.InitMiddleFrame();
                    });
                }
            })
            { IsBackground = true }.Start();
        }
        //            Application.RunOnMainThread(() =>
        //            {
        //                if (this.Parent != null)
        //                {
        //                    //重新刷新界面
        //                    this.InitMiddleFrame();
        //                }
        //            });
        //        }
        //    })
        //    { IsBackground = true }.Start();
        //}
        #endregion
        //#endregion
        #region ■ 界面重新激活事件___________________
        //#region ■ 界面重新激活事件___________________
        /// <summary>
        /// 自身的上层界面关闭后,它自身处于最上层时,触发的事件
        /// </summary>
        public override void FormActionAgainEvent()
        {
            //重新刷新界面
            this.InitMiddleFrame();
        }
        ///// <summary>
        ///// 自身的上层界面关闭后,它自身处于最上层时,触发的事件
        ///// </summary>
        //public override void FormActionAgainEvent()
        //{
        //    //重新刷新界面
        //    this.InitMiddleFrame();
        //}
        #endregion
        //#endregion
        #region ■ 结构体_____________________________
        //#region ■ 结构体_____________________________
        /// <summary>
        /// 接收分享数据
        /// </summary>
        private class MemberShardInfoResult
        {
            /// <summary>
            /// 文件名字
            /// </summary>
            public string ShareName = string.Empty;
            /// <summary>
            /// 主键
            /// </summary>
            public string DistributedMark = string.Empty;
        }
        ///// <summary>
        ///// 接收分享数据
        ///// </summary>
        //private class MemberShardInfoResult
        //{
        //    /// <summary>
        //    /// 文件名字
        //    /// </summary>
        //    public string ShareName = string.Empty;
        //    /// <summary>
        //    /// 主键
        //    /// </summary>
        //    public string DistributedMark = string.Empty;
        //}
        #endregion
        //#endregion
    }
}