HDL Home App 第二版本 旧平台金堂用 正在使用
hxb
2022-08-30 25429f085093d89d543a0b90e30d0d62d1b7dac9
ZigbeeApp/Shared/Phone/MainPage/UnallocatedRoomForm.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.Device.Category;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.UserCenter;
using Shared.Phone.UserView;
@@ -17,13 +16,17 @@
        #region ■ 变量声明___________________________
        /// <summary>
        /// 界面关闭事件
        /// </summary>
        public Action FormCloseEvent = null;
        /// <summary>
        /// 添加到 的背景图控件
        /// </summary>
        private FrameLayoutControl frameAddBackGroud = null;
        private FrameLayoutStatuControl frameAddBackGroud = null;
        /// <summary>
        /// 功能的桌布控件
        /// </summary>
        private FrameLayout DeviceBodyTableControl = null;
        private NormalFrameLayout DeviceBodyTableControl = null;
        /// <summary>
        /// 场景的列表控件
        /// </summary>
@@ -35,7 +38,7 @@
        /// <summary>
        /// 场景的桌布控件
        /// </summary>
        private FrameLayout SceneBodyTableControl = null;
        private NormalFrameLayout SceneBodyTableControl = null;
        /// <summary>
        /// 全选控件
        /// </summary>
@@ -55,7 +58,7 @@
        /// <summary>
        /// 全部分组的设备信息
        /// </summary>
        private Dictionary<int, DeviceRowInfo> dicGroupDevice = null;
        private Dictionary<string, DeviceRowInfo> dicGroupDevice = null;
        /// <summary>
        /// 是否已经改变了数据
        /// </summary>
@@ -99,12 +102,12 @@
            bodyFrameLayout.AddChidren(tabControl);
            //初始化场景桌布
            this.SceneBodyTableControl = new FrameLayout();
            this.SceneBodyTableControl = new NormalFrameLayout();
            SceneBodyTableControl.Y = tabControl.Bottom;
            SceneBodyTableControl.Height = bodyFrameLayout.Height - tabControl.Bottom;
            bodyFrameLayout.AddChidren(SceneBodyTableControl);
            //初始化设备桌布
            this.DeviceBodyTableControl = new FrameLayout();
            this.DeviceBodyTableControl = new NormalFrameLayout();
            DeviceBodyTableControl.Y = tabControl.Bottom;
            DeviceBodyTableControl.Height = bodyFrameLayout.Height - tabControl.Bottom;
            bodyFrameLayout.AddChidren(DeviceBodyTableControl);
@@ -177,13 +180,13 @@
                SceneBodyTableControl.AddChidren(listSceneView);
                var listScene = HdlSceneLogic.Current.GetUnalloctedScenes();
                if (listScene == null || listScene.Count == 0) { return; }
                if (listScene.Count == 0) { return; }
                foreach (var data in listScene)
                {
                    //场景图片
                    var frameContr = new ScenePictrueControl();
                    listSceneView.AddChidrenFrame(frameContr);
                    listSceneView.AddChidren(frameContr);
                    frameContr.InitControl(data);
                    //添加选择控件
@@ -194,7 +197,7 @@
                    frameContr.CollectEvent += (collect) =>
                    {
                        //如果当前是收藏房间,则需要刷新主页
                        if (HdlRoomLogic.Current.CurrentRoom.IsLove == true)
                        if (HdlRoomLogic.Current.NowMainPageRoom.IsLove == true)
                        {
                            this.dataHadChanged = true;
                        }
@@ -219,7 +222,7 @@
                //促使它超过时,能够往上滑
                var frameTemp = new FrameLayout();
                frameTemp.Height = Application.GetRealHeight(202 + 23);
                listSceneView.AddChidrenFrame(frameTemp);
                listSceneView.AddChidren(frameTemp);
            });
        }
@@ -322,10 +325,10 @@
            DeviceBodyTableControl.AddChidren(HorizontalView);
            //上一次选择的菜单
            Controls.DeviceFunctionUnallocatedControl oldSelectContr = null;
            foreach (int Textid in this.dicGroupDevice.Keys)
            Controls.DeviceFunctionMenuControl oldSelectContr = null;
            foreach (string strText in this.dicGroupDevice.Keys)
            {
                var rowInfo = dicGroupDevice[Textid];
                var rowInfo = dicGroupDevice[strText];
                //设备类型的容器
                var devieFrame = new FrameLayout();
@@ -333,13 +336,13 @@
                HorizontalView.AddChidren(devieFrame);
                //菜单图片控件
                var deviceObjContr = new Controls.DeviceFunctionUnallocatedControl();
                var deviceObjContr = new Controls.DeviceFunctionMenuControl();
                devieFrame.AddChidren(deviceObjContr);
                deviceObjContr.InitControl(Language.StringByID(Textid), rowInfo.IconPath, rowInfo.IconPathSelected, rowInfo.listDeviceKeys);
                deviceObjContr.InitControl(strText, rowInfo.IconPath, rowInfo.IconPathSelected);
                deviceObjContr.ButtonClickEvent += (sender, e) =>
                {
                    //选择的是同一个东西的话,不处理
                    if (this.nowSelectDeviceInfo.TextId != rowInfo.TextId)
                    if (this.nowSelectDeviceInfo.Text != rowInfo.Text)
                    {
                        //上一次的菜单取消,本次菜单选择
                        oldSelectContr.SetSelectStatu(false);
@@ -511,7 +514,7 @@
        private void InitAddToControl()
        {
            //添加到 的背景图控件
            this.frameAddBackGroud = new FrameLayoutControl();
            this.frameAddBackGroud = new FrameLayoutStatuControl();
            frameAddBackGroud.UseClickStatu = false;
            frameAddBackGroud.Height = Application.GetRealHeight(202);
            frameAddBackGroud.Gravity = Gravity.BottomCenter;
@@ -528,22 +531,29 @@
            btnAdd.TextID = R.MyInternationalizationString.AddTo;
            btnAdd.TextSize = 17;
            btnAdd.Radius = (uint)Application.GetRealHeight(35);
            frameAddBackGroud.AddChidren(btnAdd, ChidrenBindMode.BindEventOnly);
            frameAddBackGroud.AddChidren(btnAdd, ChidrenBindMode.BindEvent);
            frameAddBackGroud.ButtonClickEvent += (sender, e) =>
            {
                var selectZone = new SelectZone();
                selectZone.title = Language.StringByID(R.MyInternationalizationString.AddTo);
                selectZone.Init();
                selectZone.ZoneAction += (selectRoom) =>
                HdlControlLogic.Current.ShowBottomListRoomView(string.Empty, Language.StringByID(R.MyInternationalizationString.AddTo), (selectId, selectName) =>
                {
                    if (selectId == string.Empty)
                    {
                        //选择的是未分配
                        return;
                    }
                    //变更了当前房间的东西,主页需要刷新
                    if (HdlRoomLogic.Current.CurrentRoom.Id == selectRoom.Id)
                    if (HdlRoomLogic.Current.NowMainPageRoom.Id == selectId)
                    {
                        this.dataHadChanged = true;
                    }
                    //保存选择的设备和场景
                    this.SaveSelectDeviceAndScene(selectRoom);
                };
                    var room = HdlRoomLogic.Current.GetRoomById(selectId);
                    this.SaveSelectDeviceAndScene(room);
                    //分类界面需要刷新
                    UserPage.Instance.RefreshCategoryForm = true;
                    //上传空间区域信息
                    HdlRoomLogic.Current.SetRoomInfoToGateway();
                });
            };
        }
@@ -569,7 +579,7 @@
            foreach (var scene in this.dicSelectScene.Values)
            {
                //添加场景
                HdlSceneLogic.Current.AddScene(room, scene);
                HdlSceneLogic.Current.AddSceneToRoom(room, scene);
            }
            //清空缓存
            this.dicSelectScene.Clear();
@@ -619,29 +629,29 @@
        /// 获取分组后的设备
        /// </summary>
        /// <returns></returns>
        private Dictionary<int, DeviceRowInfo> GetAllGroupDevice()
        private Dictionary<string, DeviceRowInfo> GetAllGroupDevice()
        {
            //全部的设备
            var listDevice = HdlRoomLogic.Current.GetUnalloctedDevice();
            //根据设备所属类型排序
            listDevice = LocalDevice.Current.SortDeviceByBelongType(listDevice);
            var dic = new Dictionary<int, DeviceRowInfo>();
            var dic = new Dictionary<string, DeviceRowInfo>();
            foreach (var device in listDevice)
            {
                var typeInfo = LocalDevice.Current.GetDeviceBelongEnumInfo(device);
                //按所属ID分组
                if (dic.ContainsKey(typeInfo.BeloneTextId) == false)
                if (dic.ContainsKey(typeInfo.BeloneText) == false)
                {
                    dic[typeInfo.BeloneTextId] = new DeviceRowInfo();
                    dic[typeInfo.BeloneText] = new DeviceRowInfo();
                    string path1 = string.Empty;
                    string path2 = string.Empty;
                    //获取图片
                    Common.LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
                    dic[typeInfo.BeloneTextId].IconPath = path1;
                    dic[typeInfo.BeloneTextId].IconPathSelected = path2;
                    dic[typeInfo.BeloneTextId].TextId = typeInfo.BeloneTextId;
                    Common.LocalDevice.Current.GetDeviceFunctionTypeMenuIcon(typeInfo, ref path1, ref path2);
                    dic[typeInfo.BeloneText].IconPath = path1;
                    dic[typeInfo.BeloneText].IconPathSelected = path2;
                    dic[typeInfo.BeloneText].Text = typeInfo.BeloneText;
                }
                dic[typeInfo.BeloneTextId].listDeviceKeys.Add(LocalDevice.Current.GetDeviceMainKeys(device));
                dic[typeInfo.BeloneText].listDeviceKeys.Add(LocalDevice.Current.GetDeviceMainKeys(device));
            }
            return dic;
        }
@@ -655,12 +665,16 @@
        /// </summary>
        public override void CloseFormBefore()
        {
            //调用回调事件
            this.FormCloseEvent?.Invoke();
            this.FormCloseEvent = null;
            if (this.dataHadChanged == true)
            {
                HdlThreadLogic.Current.RunMainInThread(() =>
                {
                    //刷新主页
                    this.LoadFormMethodByName("HomeMainPageForm", "RefreshBodyView");
                    HomeMainPageForm.Instance?.RefreshBodyView();
                });
            }
            base.CloseFormBefore();
@@ -743,9 +757,9 @@
        private class DeviceRowInfo
        {
            /// <summary>
            /// 文本ID,目前用来做主键
            /// 文本,目前用来做主键
            /// </summary>
            public int TextId = 0;
            public string Text = string.Empty;
            /// <summary>
            /// 图标
            /// </summary>