HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-10-10 2ed75b8b337048e5d75e6d9ec8307633134f02fd
ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs
@@ -7,333 +7,256 @@
{
    public class DeviceDetailInfo : FrameLayout
    {
        public List<string> RoomNameList;
        public string BelongZoneStr;
        #region ◆ 变量____________________________
        /// <summary>
        /// bodyFrameLayout
        /// </summary>
        private FrameLayout bodyFrameLayout;
        /// <summary>
        /// 所属区域
        /// </summary>
        private string roomName;
        /// <summary>
        /// action
        /// </summary>
        public Action action;
        #endregion
        #region ◆ 移除____________________________
        /// <summary>
        /// RemoveFromParent
        /// </summary>
        public override void RemoveFromParent()
        {
            action();
            base.RemoveFromParent();
        }
        #endregion
        #region ◆ 构造方法_________________________
        /// <summary>
        /// DeviceDetailInfo
        /// </summary>
        public DeviceDetailInfo()
        {
            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
        }
        #endregion
        #region ◆ 显示界面_________________________
        /// <summary>
        /// Show
        /// </summary>
        /// <param name="device"></param>
        /// <param name="room"></param>
        public void Show(DeviceUI device, Common.Room room)
        {
            RoomNameList = new List<string> { };
            RoomNameList = Common.Room.CurrentRoom.GetRoomListNameByDevice(device.CommonDevice);
            #region topview
            var topBGView = new FrameLayout()
            {
                Height = Application.GetRealHeight(CommonPage.Navigation_Height),
                BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor
            };
            AddChidren(topBGView);
            var topView = new FrameLayout()
            {
                Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y),
                Height = Application.GetRealHeight(CommonPage.Navigation_Height - CommonPage.NavigationTitle_Y),
                BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor,
            };
            AddChidren(topView);
            Init(device);
            var title = new Button()
            {
                TextAlignment = TextAlignment.Center,
                TextID = R.MyInternationalizationString.ChangeDeviceInfo,
                TextSize = 20,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                Width = Application.GetRealWidth(CommonPage.AppRealWidth - 500),
                Gravity = Gravity.CenterHorizontal
            };
            topView.AddChidren(title);
            AddTop();
            var back = new BackButton() { };
            topView.AddChidren(back);
            back.MouseUpEventHandler += (sender, e) =>
            {
                this.RemoveFromParent();
            };
            #endregion
            AddBodyView(device);
            #region midFL
            var midFL = new FrameLayout()
        }
        #endregion
        #region Add____________________________________
        /// <summary>
        /// AddTop
        /// </summary>
        public void AddTop()
        {
            var top = new TopFrameLayout();
            AddChidren(top);
            top.InitTopview();
            top.SetTopTitle(R.MyInternationalizationString.FunctionSetting);
            top.backButton.MouseUpEventHandler += (sender, e) =>
            {
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.Navigation_Height),
                Y = topView.Bottom,
                RemoveFromParent();
            };
        }
        /// <summary>
        /// AddBodyView
        /// </summary>
        public void AddBodyView(DeviceUI device)
        {
            bodyFrameLayout = new FrameLayout()
            {
                Y = Application.GetRealHeight(184),
                Height = Application.GetRealHeight(1737),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
            };
            AddChidren(bodyFrameLayout);
            var deviceBG = new Button()
            {
                Y = Application.GetRealHeight(118),
                Width = Application.GetMinRealAverage(207),
                Height = Application.GetMinRealAverage(207),
                Gravity = Gravity.CenterHorizontal,
                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
                Radius=(uint)Application.GetMinRealAverage(207)
            };
            this.AddChidren(midFL);
            var r = new R.MyInternationalizationString();
            object t;
            try
            bodyFrameLayout.AddChidren(deviceBG);
            var deviceBG2 = new Button()
            {
                t = r.GetType().InvokeMember(device.CommonDevice.Type.ToString(), System.Reflection.BindingFlags.GetField, null, r, null);
            }
            catch
            {
                t = 11070;
            }
                Y = Application.GetRealHeight(130),
                Width = Application.GetMinRealAverage(184),
                Height = Application.GetMinRealAverage(184),
                Gravity = Gravity.CenterHorizontal,
                BackgroundColor = ZigbeeColor.Current.GXCSelectedBackgroundColor,
                Radius = (uint)Application.GetMinRealAverage(184)
            };
            bodyFrameLayout.AddChidren(deviceBG2);
            var deviceIMG = new Button()
            {
                Y = Application.GetRealHeight(30),
                Width = Application.GetMinRealAverage(320),
                Height = Application.GetMinRealAverage(320),
                Y = Application.GetRealHeight(161),
                Width = Application.GetMinRealAverage(124),
                Height = Application.GetMinRealAverage(124),
                UnSelectedImagePath = device.IconPath,
                SelectedImagePath = device.OnlineIconPath,
                IsSelected=device.CommonDevice.IsOnline==1,
                Gravity = Gravity.CenterHorizontal
            };
            midFL.AddChidren(deviceIMG);
            bodyFrameLayout.AddChidren(deviceIMG);
            var deviceTypeName = new Button()
            {
                Y = deviceIMG.Bottom,
                Y = Application.GetRealHeight(360),
                Width = Application.GetRealWidth(900),
                Height = Application.GetRealHeight(100),
                Height = Application.GetRealHeight(80),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                TextID = (int)t,
                Text = DeviceUI.GetDeviceTypeName(device.CommonDevice.Type),
                Gravity = Gravity.CenterHorizontal
            };
            midFL.AddChidren(deviceTypeName);
            bodyFrameLayout.AddChidren(deviceTypeName);
            var deviceNameFL = new FrameLayout()
            {
                Y = deviceTypeName.Bottom,
                Height = Application.GetRealHeight(170),
            };
            midFL.AddChidren(deviceNameFL);
            var deviceNameTip = new Button()
            {
                X = Application.GetRealWidth(50),
                Height = Application.GetRealHeight(70),
                Width = Application.GetRealWidth(900),
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 12,
                TextColor = ZigbeeColor.Current.GXCButtonTipColor,
                TextID = R.MyInternationalizationString.DeviceName,
            };
            deviceNameFL.AddChidren(deviceNameTip);
            var deviceName = new EditText()
            {
                X = Application.GetRealWidth(50),
                Y = deviceNameTip.Bottom,
                Height = Application.GetRealHeight(100) - 1,
                Width = Application.GetRealWidth(900),
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 20,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                Text = device.CommonDevice.DeviceEpointName,
            };
            deviceNameFL.AddChidren(deviceName);
            var deviceNameLine = new Button()
            {
                Y = deviceName.Bottom,
                Height = 1,
                BackgroundColor = ZigbeeColor.Current.GXCLineColor
            };
            deviceNameFL.AddChidren(deviceNameLine);
            var zoneFL = new FrameLayout()
            var infoFL = new FrameLayout
            {
                Y = deviceNameFL.Bottom,
                Height = Application.GetRealHeight(170),
                Y = Application.GetRealHeight(540),
                Height = Application.GetRealHeight(1195),
                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
            };
            midFL.AddChidren(zoneFL);
            var zoneTip = new Button()
            {
                X = Application.GetRealWidth(50),
                Height = Application.GetRealHeight(70),
                Width = Application.GetRealWidth(900),
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 12,
                TextColor = ZigbeeColor.Current.GXCButtonTipColor,
                TextID = R.MyInternationalizationString.BelongZone,
            };
            zoneFL.AddChidren(zoneTip);
            var zone = new Button()
            {
                X = Application.GetRealWidth(50),
                Y = deviceNameTip.Bottom,
                Height = Application.GetRealHeight(100) - 1,
                Width = Application.GetRealWidth(900),
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 20,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                Text = Common.Room.CurrentRoom.GetRoomName(RoomNameList),
            };
            zoneFL.AddChidren(zone);
            var zoneRight = new SelectedStatuButton()
            {
                X = Application.GetRealWidth(1080 - 150),
                Width = Application.GetMinRealAverage(110),
                Height = Application.GetMinRealAverage(110),
                UnSelectedImagePath = "Item/Next.png",
                SelectedImagePath="Item/NextSelected.png",
                Gravity = Gravity.CenterVertical
            };
            zoneFL.AddChidren(zoneRight);
            var zoneLine = new Button()
            {
                Y = zone.Bottom,
                Height = 1,
                BackgroundColor = ZigbeeColor.Current.GXCLineColor
            };
            zoneFL.AddChidren(zoneLine);
            bodyFrameLayout.AddChidren(infoFL);
            var modelFL = new FrameLayout()
            var tipBtn = new Button
            {
                Y = zoneFL.Bottom,
                Height = Application.GetRealHeight(170),
            };
            midFL.AddChidren(modelFL);
            var modelTip = new Button()
            {
                X = Application.GetRealWidth(50),
                Height = Application.GetRealHeight(70),
                Width = Application.GetRealWidth(900),
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 12,
                TextColor = ZigbeeColor.Current.GXCButtonTipColor,
                TextID = R.MyInternationalizationString.BelongModel,
            };
            modelFL.AddChidren(modelTip);
            var model = new Button()
            {
                X = Application.GetRealWidth(50),
                Y = deviceNameTip.Bottom,
                Height = Application.GetRealHeight(100) - 1,
                Width = Application.GetRealWidth(900),
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 20,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                Text = device.CommonDevice.DeviceName==""?Language.StringByID(R.MyInternationalizationString.UNKnown):device.CommonDevice.DeviceName
            };
            modelFL.AddChidren(model);
            var modelLine = new Button()
            {
                Y = model.Bottom,
                Height = 1,
                BackgroundColor = ZigbeeColor.Current.GXCLineColor
            };
            modelFL.AddChidren(modelLine);
            var sharedFL = new FrameLayout()
            {
                Y = modelFL.Bottom,
                Height = Application.GetRealHeight(170),
            };
            //midFL.AddChidren(sharedFL);
            var sharedBtn = new Button()
            {
                X = Application.GetRealWidth(50),
                Y = Application.GetRealHeight(70),
                Height = Application.GetRealHeight(100) - 1,
                X = Application.GetRealWidth(CommonFormResouce.X_Left),
                Y = Application.GetRealHeight(81),
                Width = Application.GetRealWidth(500),
                Height = Application.GetRealHeight(60),
                TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 20,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                TextID = R.MyInternationalizationString.Shared
                TextSize = 15,
                TextID = R.MyInternationalizationString.EditInfo
            };
            sharedFL.AddChidren(sharedBtn);
            infoFL.AddChidren(tipBtn);
            var sharedRight = new Button()
            {
                X = Application.GetRealWidth(1080 - 150),
                Width = Application.GetMinRealAverage(110),
                Height = Application.GetMinRealAverage(110),
                UnSelectedImagePath = "Item/Next.png",
                Gravity = Gravity.CenterVertical
            };
            sharedFL.AddChidren(sharedRight);
            var nameRow = new DeviceInfoEditRow(170);
            nameRow.Init();
            nameRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.FunctionName)} : ");
            nameRow.SetTitle(string.IsNullOrEmpty(device.CommonDevice.DeviceEpointName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : device.CommonDevice.DeviceName);
            infoFL.AddChidren(nameRow);
            var sharedNum = new Button()
            {
                X = Application.GetRealWidth(1080 - 150 - 110),
                Width = Application.GetRealWidth(110),
                Height = Application.GetRealHeight(110),
                TextAlignment = TextAlignment.CenterRight,
                TextSize = 12,
                TextColor = ZigbeeColor.Current.GXCButtonTipColor,
                Text = "1人",
                Gravity = Gravity.CenterVertical
            };
            sharedFL.AddChidren(sharedNum);
            var zoneRow = new DeviceInfoRow(308);
            zoneRow.Init();
            zoneRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongZone)} : ");
            zoneRow.SetTitle(roomName);
            infoFL.AddChidren(zoneRow);
            var sharedLine = new Button()
            {
                Y = sharedBtn.Bottom,
                Height = 1,
                BackgroundColor = ZigbeeColor.Current.GXCLineColor
            };
            sharedFL.AddChidren(sharedLine);
            var modelRow = new DeviceInfoRow(446);
            modelRow.Init();
            modelRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongModel)} : ");
            modelRow.SetTitle(string.IsNullOrEmpty(device.CommonDevice.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : device.CommonDevice.DeviceName);
            infoFL.AddChidren(modelRow);
            var confirmBtn = new CommonForm.CompleteButton()
            {
            };
            AddChidren(confirmBtn);
            var sharedRow = new DeviceInfoRow(585);
            sharedRow.Init();
            sharedRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.Share)} : ");
            sharedRow.SetTitle("2人");
            infoFL.AddChidren(sharedRow);
            confirmBtn.MouseUpEventHandler += async (sender, e) =>
            {
                if (device.CommonDevice == null)
                {
                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                    return;
                }
                var result = await Shared.Common.LocalDevice.Current.ReName(device.CommonDevice, deviceName.Text.Trim());
                if (result)
                {
                    var alertSuccess = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.Success), Language.StringByID(R.MyInternationalizationString.Confrim));
                    alertSuccess.Show();
                    alertSuccess.ResultEventHandler += (senderSuccess, eSuccess) =>
                    {
                        //改图片
                        device.CommonDevice.IconPath = deviceIMG.UnSelectedImagePath;
                        device.CommonDevice.IsCustomizeImage = true;
                        device.CommonDevice.ReSave();
                        //改房间
                        Shared.Common.Room.CurrentRoom.ChangedRoom(device.CommonDevice, RoomNameList);
                        RemoveFromParent();
                    };
                }
                else
                {
                    return;
                    //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                }
            };
            #endregion
            var confirmBtn = new CommonForm.CompleteButton(962, 907, 127);
            confirmBtn.SetTitle(R.MyInternationalizationString.Confrim);
            infoFL.AddChidren(confirmBtn);
            #region event
            EventHandler<MouseEventArgs> selectZoneEvent = (sender, e) =>
            {
                UserCenter.SelectRoomForm selectedRoom = new UserCenter.SelectRoomForm();
                selectedRoom.AddForm(selectedRoom, RoomNameList);
                selectedRoom.ActionSelectRoom += ((rList) =>
                {
                    RoomNameList = rList;
                    zone.Text = Shared.Common.Room.CurrentRoom.GetRoomName(RoomNameList);
                });
                //UserCenter.SelectRoomForm selectedRoom = new UserCenter.SelectRoomForm();
                //selectedRoom.AddForm(selectedRoom, roomNameList);
                //selectedRoom.ActionSelectRoom += ((rList) =>
                //{
                //    roomNameList = rList;
                //    zone.Text = Shared.Common.Room.CurrentRoom.GetRoomName(roomNameList);
                //});
            };
            zoneRight.MouseUpEventHandler += selectZoneEvent;
            zoneFL.MouseUpEventHandler += selectZoneEvent;
            zone.MouseUpEventHandler += selectZoneEvent;
            //zoneRight.MouseUpEventHandler += selectZoneEvent;
            //zoneFL.MouseUpEventHandler += selectZoneEvent;
            //zone.MouseUpEventHandler += selectZoneEvent;
            EventHandler<MouseEventArgs> selectDeviceIconEvent = (sender, e) =>
             {
                 var localPic = new DeviceIconSelectedIMGByLocal();
                 UserView.HomePage.Instance.AddChidren(localPic);
                 UserView.HomePage.Instance.PageIndex += 1;
                 localPic.Show();
                 localPic.action = (unSelectedImagePath,selectedImagePath) =>
                 {
                     deviceIMG.UnSelectedImagePath = unSelectedImagePath;
                     deviceIMG.SelectedImagePath = selectedImagePath;
                 };
             };
            {
                var localPic = new DeviceIconSelectedIMGByLocal();
                UserView.HomePage.Instance.AddChidren(localPic);
                UserView.HomePage.Instance.PageIndex += 1;
                localPic.Show();
                localPic.action = (unSelectedImagePath, selectedImagePath) =>
                {
                    deviceIMG.UnSelectedImagePath = unSelectedImagePath;
                    deviceIMG.SelectedImagePath = selectedImagePath;
                };
            };
            deviceIMG.MouseUpEventHandler += selectDeviceIconEvent;
            confirmBtn.MouseUpEventHandler += async (sender, e) =>
            {
                //if (device.CommonDevice == null)
                //{
                //    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                //    return;
                //}
                //var result = await Shared.Common.LocalDevice.Current.ReName(device.CommonDevice, deviceName.Text.Trim());
                //if (result)
                //{
                //    var alertSuccess = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.Success), Language.StringByID(R.MyInternationalizationString.Confrim));
                //    alertSuccess.Show();
                //    alertSuccess.ResultEventHandler += (senderSuccess, eSuccess) =>
                //    {
                //        //改图片
                //        device.IconPath = deviceIMG.UnSelectedImagePath;
                //        device.IsCustomizeImage = true;
                //        device.ReSave();
                //        //改房间
                //        Shared.Common.Room.CurrentRoom.ChangedRoom(device.CommonDevice, roomNameList);
                //        RemoveFromParent();
                //    };
                //}
                //else
                //{
                //    return;
                //    //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                //}
            };
            #endregion
        }
        /// <summary>
        /// Init
        /// </summary>
        /// <param name="device"></param>
        public void Init(DeviceUI device)
        {
            roomName = Common.Room.CurrentRoom.GetRoomNameByDevice(device.CommonDevice);
        }
        #endregion
    }
}