gxc
2020-02-28 66a9965c44ecc32a6696abca876ab9d1cd091584
ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs
old mode 100755 new mode 100644
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Globalization;
using Shared.Common;
using Shared.Phone.UserCenter;
using ZigBee.Device;
namespace Shared.Phone.Device.CommonForm
{
@@ -19,7 +21,24 @@
        /// <summary>
        /// action
        /// </summary>
        public Action action;
        public Action<DeviceUI,Common.Room> EditAction;
        /// <summary>
        /// curRoom
        /// </summary>
        private Common.Room curRoom;
        /// <summary>
        /// curRoom
        /// </summary>
        private Common.Room befRoom;
        /// <summary>
        /// sharedRow
        /// </summary>
        private DeviceInfoRow sharedRow;
        /// <summary>
        /// functionTypeRow
        /// </summary>
        private DeviceInfoRow functionTypeRow;
        #endregion
@@ -29,7 +48,7 @@
        /// </summary>
        public override void RemoveFromParent()
        {
            action();
            EditAction = null;
            base.RemoveFromParent();
        }
        #endregion
@@ -57,7 +76,7 @@
            AddTop();
            AddBodyView(device);
            AddBodyView(device,room);
        }
@@ -83,7 +102,7 @@
        /// <summary>
        /// AddBodyView
        /// </summary>
        public void AddBodyView(DeviceUI device)
        public void AddBodyView(DeviceUI device, Common.Room room)
        {
            bodyFrameLayout = new FrameLayout()
            {
@@ -100,7 +119,7 @@
                Height = Application.GetMinRealAverage(207),
                Gravity = Gravity.CenterHorizontal,
                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
                Radius=(uint)Application.GetMinRealAverage(207)
                Radius = (uint)Application.GetMinRealAverage(207/2)
            };
            bodyFrameLayout.AddChidren(deviceBG);
@@ -111,7 +130,7 @@
                Height = Application.GetMinRealAverage(184),
                Gravity = Gravity.CenterHorizontal,
                BackgroundColor = ZigbeeColor.Current.GXCSelectedBackgroundColor,
                Radius = (uint)Application.GetMinRealAverage(184)
                Radius = (uint)Application.GetMinRealAverage(184/2)
            };
            bodyFrameLayout.AddChidren(deviceBG2);
@@ -125,14 +144,17 @@
            };
            bodyFrameLayout.AddChidren(deviceIMG);
            var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice);
            var deviceTypeName = new Button()
            {
                Y = Application.GetRealHeight(360),
                Width = Application.GetRealWidth(900),
                Height = Application.GetRealHeight(80),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                Text = DeviceUI.GetDeviceTypeName(device.CommonDevice.Type),
                Gravity = Gravity.CenterHorizontal
                TextID = info.BeloneTextId,
                Gravity = Gravity.CenterHorizontal,
                TextSize = 15
            };
            bodyFrameLayout.AddChidren(deviceTypeName);
@@ -144,6 +166,8 @@
                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
            };
            bodyFrameLayout.AddChidren(infoFL);
            var rectCornerID = HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight;
            infoFL.SetCornerWithSameRadius(Application.GetRealHeight(58), rectCornerID);
            var tipBtn = new Button
            {
@@ -158,49 +182,153 @@
            };
            infoFL.AddChidren(tipBtn);
            var nameRow = new DeviceInfoEditRow(170);
            var infoScrolView = new VerticalScrolViewLayout
            {
                Y = Application.GetRealHeight(170-12),
                Height = Application.GetRealHeight(600),
                ScrollEnabled = false,
                VerticalScrollBarEnabled = false
            };
            infoFL.AddChidren(infoScrolView);
            var nameFL = new FrameLayout
            {
                Height = Application.GetRealHeight(127 + 12)
            };
            infoScrolView.AddChidren(nameFL);
            var nameRow = new DeviceInfoEditRow(12);
            nameRow.Init();
            nameRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.FunctionName)} : ");
            nameRow.SetTitle(string.IsNullOrEmpty(device.CommonDevice.DeviceEpointName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : device.CommonDevice.DeviceEpointName);
            infoFL.AddChidren(nameRow);
            nameRow.SetTitle(string.IsNullOrEmpty(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
            nameFL.AddChidren(nameRow);
            var zoneRow = new DeviceInfoRow(308);
            var zoneFL = new FrameLayout
            {
                Height = Application.GetRealHeight(127 + 12)
            };
            if (room != null && room.IsLove == false)
            {
                infoScrolView.AddChidren(zoneFL);
            }
            var zoneRow = new DeviceInfoRow(12);
            zoneRow.Init();
            zoneRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongZone)} : ");
            zoneRow.SetTitle(roomName);
            infoFL.AddChidren(zoneRow);
            zoneFL.AddChidren(zoneRow);
            var modelRow = new DeviceInfoRow(446);
            var modelFL = new FrameLayout
            {
                Height = Application.GetRealHeight(127 + 12)
            };
            infoScrolView.AddChidren(modelFL);
            var modelRow = new DeviceInfoRow(12);
            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);
            modelRow.HideNext(true);
            modelFL.AddChidren(modelRow);
            var sharedRow = new DeviceInfoRow(585);
            sharedRow.Init();
            sharedRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.Share)} : ");
            sharedRow.SetTitle("2人");
            infoFL.AddChidren(sharedRow);
            if (device.CommonDevice.Type==DeviceType.OnOffOutput || device.CommonDevice.Type==DeviceType.AirSwitch)
            {
                var typeFL = new FrameLayout
                {
                    Height = Application.GetRealHeight(127 + 12)
                };
                infoScrolView.AddChidren(typeFL);
                functionTypeRow = new DeviceInfoRow(12);
                functionTypeRow.Init();
                functionTypeRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.FunctionType)} : ");
                //functionTypeRow.SetTitle(device.CommonDevice.DfunctionType);
                typeFL.AddChidren(functionTypeRow);
                var dfunctionType = device.CommonDevice.DfunctionType;
                //功能类型的翻译名字
                string strT = string.Empty;
                if (dfunctionType == DeviceFunctionType.A灯光)
                {
                    strT = Language.StringByID(R.MyInternationalizationString.uLight);
                }
                else if (dfunctionType == DeviceFunctionType.A开关)
                {
                    strT = Language.StringByID(R.MyInternationalizationString.uSwitch);
                }
                else if (dfunctionType == DeviceFunctionType.A插座)
                {
                    strT = Language.StringByID(R.MyInternationalizationString.uSocket1);
                }
                functionTypeRow.SetTitle(strT);
                functionTypeRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
                {
                    var DfunctionType = device.CommonDevice.DfunctionType;
                    //功能类型的翻译名字
                    int nowSelectNo = 1;
                    string strType = string.Empty;
                    if (DfunctionType == DeviceFunctionType.A灯光)
                    {
                        strType = Language.StringByID(R.MyInternationalizationString.uLight);
                        nowSelectNo = 1;
                    }
                    else if (DfunctionType == DeviceFunctionType.A开关)
                    {
                        strType = Language.StringByID(R.MyInternationalizationString.uSwitch);
                        nowSelectNo = 0;
                    }
                    else if (DfunctionType == DeviceFunctionType.A插座)
                    {
                        strType = Language.StringByID(R.MyInternationalizationString.uSocket1);
                        nowSelectNo = 2;
                    }
                    //显示列表
                    var listText = new List<string>();
                    listText.Add(Language.StringByID(R.MyInternationalizationString.uSwitch));//开关
                    listText.Add(Language.StringByID(R.MyInternationalizationString.uLight));//灯光
                    listText.Add(Language.StringByID(R.MyInternationalizationString.uSocket1));//插座
                                                                                               //标题:选择功能类型
                    var title = Language.StringByID(R.MyInternationalizationString.uSelectFunctionType);
                    var form = new BottomItemSelectForm();
                    form.AddForm(title, listText, nowSelectNo);
                    form.FinishSelectEvent += (selectNo) =>
                    {
                        functionTypeRow.NameText.Text = listText[selectNo];
                        nowSelectNo = selectNo;
                        //记录起当前选择的功能类型
                        if (selectNo == 0)
                        {
                            device.CommonDevice.DfunctionType  = DeviceFunctionType.A开关;
                        }
                        else if (selectNo == 1)
                        {
                            device.CommonDevice.DfunctionType = DeviceFunctionType.A灯光;
                        }
                        else
                        {
                            device.CommonDevice.DfunctionType = DeviceFunctionType.A插座;
                        }
                    };
                };
            }
            var confirmBtn = new CommonForm.CompleteButton(962, 907, 127);
            confirmBtn.SetTitle(R.MyInternationalizationString.Confrim);
            var confirmBtn = new CommonForm.CompleteButton(962, 900, 127);
            confirmBtn.SetTitle(R.MyInternationalizationString.Save);
            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);
                //});
                var zone = new SelectZone();
                zone.Init();
                zone.ZoneAction += (selectRoom) =>
                {
                    curRoom = selectRoom;
                    zoneRow.SetTitle(selectRoom.GetZoneName());
                };
            };
            //zoneRight.MouseUpEventHandler += selectZoneEvent;
            //zoneFL.MouseUpEventHandler += selectZoneEvent;
            //zone.MouseUpEventHandler += selectZoneEvent;
            zoneRow.ClickBtn.MouseUpEventHandler += selectZoneEvent;
            EventHandler<MouseEventArgs> selectDeviceIconEvent = (sender, e) =>
            {
@@ -212,38 +340,76 @@
                {
                    deviceIMG.UnSelectedImagePath = unSelectedImagePath;
                    deviceIMG.SelectedImagePath = selectedImagePath;
                    device.CommonDevice.IsCustomizeImage = true;
                };
            };
            deviceIMG.MouseUpEventHandler += selectDeviceIconEvent;
            confirmBtn.MouseUpEventHandler += async (sender, e) =>
            confirmBtn.MouseUpEventHandler +=  (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);
                //}
                try
                {
                    CommonPage.Loading.Start();
                    if (device.CommonDevice == null)
                    {
                        CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain));
                        return;
                    }
                    if (device.CommonDevice.Type == DeviceType.OnOffOutput || device.CommonDevice.Type == DeviceType.AirSwitch)
                    {
                        if (device.IsCustomizeImage == false)
                        {
                            if (device.CommonDevice.DfunctionType == DeviceFunctionType.A开关)
                            {
                                device.CommonDevice.IconPath = "Device/Switch.png";
                            }
                            else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A插座)
                            {
                                device.CommonDevice.IconPath = "Device/Socket1.png";
                            }
                            else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A灯光)
                            {
                                device.CommonDevice.IconPath = "Device/Light.png";
                            }
                        }
                        else
                        {
                            //改图片
                            device.CommonDevice.IconPath = deviceIMG.UnSelectedImagePath;
                        }
                    }
                    else
                    {
                        //改图片
                        device.CommonDevice.IconPath = deviceIMG.UnSelectedImagePath;
                    }
                    bool result;
                    new System.Threading.Thread(async () =>
                    {
                        result = await LocalDevice.Current.ReName(device.CommonDevice, nameRow.NameText.Text.Trim());
                        Application.RunOnMainThread(() =>
                        {
                            CommonPage.Loading.Hide();
                            if (result)
                            {
                                //改房间
                                Shared.Common.Room.CurrentRoom.ChangedRoom(device.CommonDevice, curRoom.Id);
                                device.CommonDevice.ReSave();
                                EditAction?.Invoke(device, curRoom);
                                RemoveFromParent();
                            }
                            else
                            {
                                CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain));
                            }
                        });
                    })
                    { IsBackground = true }.Start();
                }
                catch
                {
                    CommonPage.Loading.Hide();
                }
            };
            #endregion
@@ -255,7 +421,9 @@
        /// <param name="device"></param>
        public void Init(DeviceUI device)
        {
            roomName = Common.Room.CurrentRoom.GetRoomNameByDevice(device.CommonDevice);
            roomName = device.GetZone();
            befRoom = Common.Room.CurrentRoom.GetRoomByDevice(device.CommonDevice);
            curRoom = Common.Room.CurrentRoom.GetRoomByDevice(device.CommonDevice);
        }
        #endregion
    }