HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-03-06 a5b3c4bae726ef6770d4bfcbf2f4b50a37ed4a15
ZigbeeApp/Shared/Phone/Device/Logic/DeviceStateCondition.cs
@@ -24,9 +24,10 @@
        Button clickbutton = new Button();
        Button clicktextcolcrbutton = new Button();
       
        public void Show()
        public  void Show()
        {
            UserView.HomePage.Instance.ScrollEnabled = false;
            this.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
            #region  最上面的布局代码
@@ -48,6 +49,7 @@
                Height = Application.GetRealHeight(69),
                Y = Application.GetRealHeight(92),
                TextID = MyInternationalizationString.devicestate,
                IsBold = true,
            };
            topRowLayout.AddChidren(titleName);
@@ -103,12 +105,13 @@
                Y = Application.GetRealHeight(92),
                UnSelectedImagePath = "ZigeeLogic/drop-down.png",
            };
            topRowLayout.AddChidren(dropdown);
            topRowLayout.AddChidren(dropdown);
            #endregion
            ///没有房间直接返回去;
            if (Common.Room.Lists.Count == 0)
            var listAllRoom = UserCenter.HdlRoomLogic.Current.GetAllListRooms();
            if (listAllRoom.Count == 0)
            {
                return;
            }
@@ -134,7 +137,7 @@
            };
            this.AddChidren(devicetypehorizontalScrol);
            devicetypehorizontalScrol.SetCornerWithSameRadius(20,HDLUtils.RectCornerBottomLeft);
            devicetypehorizontalScrol.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerBottomLeft);
            middle = new VerticalScrolViewLayout();
            middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
@@ -143,7 +146,7 @@
            middle.X = Application.GetRealWidth(58);
            //middle.Radius = (uint)Application.GetRealHeight(50);
            this.AddChidren(middle);
            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
            middle.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerTopLeft);
            ///目前支持的设备
            var deviceTypeList = new List<DeviceType> {
                DeviceType.IASZone,
@@ -242,7 +245,6 @@
                        foolrname.Text = btnfoolrname.Text;
                        flMain.RemoveFromParent();
                        var list = Send.GetRoomList(btnfoolrname.Tag.ToString());
                        AllRoomView(list, deviceTypeList, roomhorizontalScrol, devicetypehorizontalScrol);
                    };
                    foolrRowLayout.MouseUpEventHandler += foolrnameclick;
@@ -263,7 +265,7 @@
                dropdown.Visible = false;
                if (Config.Instance.Home.FloorDics.Count == 0)
                {
                    roomlists.AddRange(Common.Room.Lists);
                    roomlists.AddRange(listAllRoom);
                }
                else
                {
@@ -283,6 +285,7 @@
        /// </summary>
        void AllRoomView(List<Common.Room> roomlist, List<DeviceType> deviceTypeList, HorizontalScrolViewLayout roomhorizontalScrol, HorizontalScrolViewLayout devicetypehorizontalScrol)
        {
            for (int i = 0; i < roomlist.Count; i++)
            {
                var room = roomlist[i];
@@ -328,14 +331,15 @@
                    roomTextButton = roomnameBtn;
                    roomnameBtn.IsSelected = true;
                    var list = new List<DeviceUI>();
                    foreach (var device in room.DeviceUIList)
                    var list = new List<CommonDevice>();
                    foreach (var deviceKeys in room.ListDevice)
                    {
                        if (device.CommonDevice == null)
                        var device = LocalDevice.Current.GetDevice(deviceKeys);
                        if (device == null)
                        {
                            continue;
                        }
                        if (!deviceTypeList.Contains(device.CommonDevice.Type))
                        if (!deviceTypeList.Contains(device.Type))
                        {
                            continue;
                        }
@@ -369,14 +373,15 @@
                    roomTextButton = roomnameBtn;
                    roomnameBtn.IsSelected = true;
                    var list = new List<DeviceUI>();
                    foreach (var device in room.DeviceUIList)
                    {
                        if (device.CommonDevice == null)
                    var list = new List<CommonDevice>();
                    foreach (var deviceKeys in room.ListDevice)
                    {
                        var device = LocalDevice.Current.GetDevice(deviceKeys);
                        if (device == null)
                        {
                            continue;
                        }
                        if (!deviceTypeList.Contains(device.CommonDevice.Type))
                        if (!deviceTypeList.Contains(device.Type))
                        {
                            continue;
                        }
@@ -407,34 +412,34 @@
        /// 加载该区域所有设备视图方法
        /// </summary>0
        /// <param name="devicelist">Devicelist.</param>
        void AllDeviceTypeView(List<DeviceUI> devicelist, HorizontalScrolViewLayout devicetypehorizontalScrol)
        void AllDeviceTypeView(List<CommonDevice> devicelist, HorizontalScrolViewLayout devicetypehorizontalScrol)
        {
            List<string> devicetypelist = new List<string>();
            devicetypelist.Clear();
            #region  ------排列设备类型------
            ///暂时隐藏灯光和窗帘设备
            var lightjosn = devicelist.Find((device) => device.CommonDevice.Type == DeviceType.ColorDimmableLight || device.CommonDevice.Type == DeviceType.OnOffOutput);
            var lightjosn = devicelist.Find((device) => device.Type == DeviceType.ColorDimmableLight || device.Type == DeviceType.OnOffOutput);
            if (lightjosn != null)
            {
                devicetypelist.Add(Language.StringByID(MyInternationalizationString.Lights));
            }
            var curtainjosn = devicelist.Find((device) => device.CommonDevice.Type == DeviceType.WindowCoveringDevice);
            var curtainjosn = devicelist.Find((device) => device.Type == DeviceType.WindowCoveringDevice);
            if (curtainjosn != null)
            {
                devicetypelist.Add(Language.StringByID(MyInternationalizationString.Curtains));
            }
            var iASZonejosn = devicelist.Find((device) => device.CommonDevice.Type == DeviceType.IASZone || device.CommonDevice.Type == DeviceType.TemperatureSensor);
            var iASZonejosn = devicelist.Find((device) => device.Type == DeviceType.IASZone || device.Type == DeviceType.TemperatureSensor);
            if (iASZonejosn != null)
            {
                devicetypelist.Add(Language.StringByID(MyInternationalizationString.sensor));
            }
            var onOffSwitchjson = devicelist.Find((device) => device.CommonDevice.Type == DeviceType.OnOffSwitch);
            var onOffSwitchjson = devicelist.Find((device) => device.Type == DeviceType.OnOffSwitch);
            if (onOffSwitchjson != null)
            {
                devicetypelist.Add(Language.StringByID(MyInternationalizationString.OnOffSwitch));
            }
            var doorLock = devicelist.Find((device) => device.CommonDevice.Type == DeviceType.DoorLock);
            var doorLock = devicelist.Find((device) => device.Type == DeviceType.DoorLock);
            if (doorLock != null)
            {
                devicetypelist.Add(Language.StringByID(MyInternationalizationString.doorLock));
@@ -569,14 +574,14 @@
        /// </summary>
        /// <param name="deviceTypelist">Device typelist.</param>
        /// <param name="devicelist">设备列表</param>
        void ConditionDeviceView(List<DeviceType> deviceTypelist, List<DeviceUI> devicelist)
        void ConditionDeviceView(List<DeviceType> deviceTypelist, List<CommonDevice> devicelist)
        {
            middle.RemoveAll();
            foreach (var common in devicelist)
            {
                if (deviceTypelist.Count != 0 && !deviceTypelist.Contains(common.CommonDevice.Type))
                if (deviceTypelist.Count != 0 && !deviceTypelist.Contains(common.Type))
                {
                    continue;
                }
@@ -621,14 +626,14 @@
                var devicename = new Button
                {
                    Text = common.CommonDevice.DeviceEpointName,
                    Text = common.DeviceEpointName,
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                    SelectedTextColor = ZigbeeColor.Current.LogicAddColor,
                    TextSize = 14,
                };
                deviceRow.AddChidren(devicename);
                switch (common.CommonDevice.Type)
                switch (common.Type)
                {
                    case DeviceType.OnOffOutput:
                        {
@@ -638,7 +643,7 @@
                        break;
                    case DeviceType.IASZone:
                        {
                            var iASZonedevice = common.CommonDevice as IASZone;
                            var iASZonedevice = common as IASZone;
                            if (iASZonedevice.DeviceID != 1026)
                            {
                                break;
@@ -651,7 +656,7 @@
                        break;
                    case DeviceType.TemperatureSensor:
                        {
                            var temperatureSensor = common.CommonDevice as TemperatureSensor;
                            var temperatureSensor = common as TemperatureSensor;
                            if (temperatureSensor.SensorDiv == 1)
                            {
                                deviceIconBtn.UnSelectedImagePath = $"ZigeeLogic/temperature.png";
@@ -691,7 +696,7 @@
                    devicename.IsSelected = true;
                    var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
                    this.AddChidren(flMain);
                    CurrentDeviceView(flMain, common.CommonDevice, false);
                    CurrentDeviceView(flMain, common, false);
                };
                deviceFramelayout.MouseUpEventHandler += devicclick;
                bjFramelayout.MouseUpEventHandler += devicclick;
@@ -733,7 +738,7 @@
               // Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(devicefra);
            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
            devicefra.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var timetype = new RowLayout
@@ -1238,6 +1243,7 @@
                                        Width = Application.GetRealWidth(600),
                                        TextAlignment = TextAlignment.CenterLeft,
                                        TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor,
                                        TextSize = 14,
                                    };
                                    timeoutrowlayout.AddChidren(btntimeout);
@@ -1437,87 +1443,116 @@
                case DeviceType.TemperatureSensor:
                    {
                        string current = Language.StringByID(MyInternationalizationString.current);
                        devicefra.Y = Application.GetRealHeight(1920 - 140 - 160 * 2 - 20 - 50);
                        devicefra.Height = Application.GetRealHeight(140 + 160 * 2 + 20 + 50);
                        devicefra.Y = Application.GetRealHeight(1920 - 140 - 600);
                        devicefra.Height = Application.GetRealHeight(140 + 600);
                        var temperatureSensor = common as TemperatureSensor;
                        var Btntemperaturevalue = new Button
                        SelectedDeviceStatuscondition = "TemperatureSensor";
                        #region  布局View
                        var PickerViewfra = new FrameLayout
                        {
                            TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                            Height = Application.GetRealHeight(60),
                            Width = Application.GetRealWidth(400),
                            TextAlignment = TextAlignment.CenterLeft,
                            X = Application.GetRealWidth(80),
                            Y = timetype.Bottom + Application.GetRealHeight(70),
                            TextSize = 14,
                            Y = Application.GetRealHeight(140),
                            Height = Application.GetRealHeight(600),
                        };
                        devicefra.AddChidren(Btntemperaturevalue);
                        devicefra.AddChidren(PickerViewfra);
                        var horizontalSeekBarVol = new HorizontalSeekBar
                        var mUIPickerView = new UIPickerView
                        {
                            Width = Application.GetRealWidth(920),
                            Height = Application.GetRealHeight(80),
                            Radius = (uint)Application.GetRealHeight(25),
                            Y = timetype.Bottom + Application.GetRealHeight(70 + 60 + 70),
                            X = Application.GetRealWidth(80),
                            ProgressColor = ZigbeeColor.Current.LogicProgressColorSelected,
                            Max = 100,
                            SleepTime = 1000,
                            ThumbRadius = 9,
                            Height = Application.GetRealHeight(600 - 5),
                        };
                        devicefra.AddChidren(horizontalSeekBarVol);
                        horizontalSeekBarVol.MouseUpEventHandler += (sender, e) =>
                        PickerViewfra.AddChidren(mUIPickerView);
                        var mList1 = new List<string> { ">", "<", "=", "≥", "≤" };
                        var mList2 = new List<string>();
                        var mList3 = new List<string>();
                        for (int i = 1; i <=100; i++)
                        {
                            SelectedDeviceStatuscondition = "TemperatureSensor";
                            if (temperatureSensor.SensorDiv == 1)
                            {
                                dictionary(deviceConditionsInfo, "AttriButeData1", horizontalSeekBarVol.Progress.ToString());
                                Btntemperaturevalue.Text = current + ">" + horizontalSeekBarVol.Progress.ToString() + "℃";
                            }
                            else
                            {
                                Btntemperaturevalue.Text = current + "<" + horizontalSeekBarVol.Progress.ToString() + "%";
                                dictionary(deviceConditionsInfo, "AttriButeData1", horizontalSeekBarVol.Progress.ToString());//温度值
                            }
                        };
                        if (temperatureSensor.SensorDiv == 1)
                        {
                            mList2.Add(i.ToString());
                        }
                        if (temperatureSensor.SensorDiv == 1) {
                            mList3.Add("℃");
                            dictionary(deviceConditionsInfo, "Cluster_ID", "1026");
                            dictionary(deviceConditionsInfo, "AttriButeId", "0");
                            dictionary(deviceConditionsInfo, "Range", "0");//0大于AttriButeData1时触发动作
                            dictionary(deviceConditionsInfo, "AttriButeData1", "0");
                            dictionary(deviceConditionsInfo, "Range", "1");//1:等于AttriButeData1时触发动作
                            dictionary(deviceConditionsInfo, "AttriButeData1", "50");//默认温度值50℃
                            dictionary(deviceConditionsInfo, "AttriButeData2", "0");
                            Btntemperaturevalue.Text = current + ">0℃";
                        }
                        else
                        {
                            Btntemperaturevalue.Text = current + "<0%";
                        } else {
                            mList3.Add("%");
                            dictionary(deviceConditionsInfo, "Cluster_ID", "1029");
                            dictionary(deviceConditionsInfo, "AttriButeId", "0");
                            dictionary(deviceConditionsInfo, "Range", "2");//2小于AttriButeData1时触发动作
                            dictionary(deviceConditionsInfo, "AttriButeData1", "0");//温度值
                            dictionary(deviceConditionsInfo, "Range", "1");//1:等于AttriButeData1时触发动作
                            dictionary(deviceConditionsInfo, "AttriButeData1", "50");//默认湿度值50%
                            dictionary(deviceConditionsInfo, "AttriButeData2", "0");
                        }
                        mUIPickerView.setNPicker(mList1, mList2, mList3);
                        #endregion
                        mUIPickerView.OnSelectChangeEvent += (s1, s2, s3) =>
                        {
                            SelectedDeviceStatuscondition = "TemperatureSensor";
                            dictionary(deviceConditionsInfo, "AttriButeData1", mList2[s2]);
                            switch (mList1[s1])
                            {
                                case ">": {
                                        dictionary(deviceConditionsInfo, "Range", "0");
                                    } break;
                                case "<": {
                                        dictionary(deviceConditionsInfo, "Range", "2");
                                    } break;
                                case "=": {
                                        dictionary(deviceConditionsInfo, "Range", "1");
                                    } break;
                                case "≥": {
                                        dictionary(deviceConditionsInfo, "Range", "6");
                                    } break;
                                case "≤": {
                                        dictionary(deviceConditionsInfo, "Range", "7");
                                    } break;
                            }
                        };
                        //默认=,50
                        int index1 = 2, index2 = 49;
                        if (edit && devices != null)
                        {
                            horizontalSeekBarVol.Progress = int.Parse(devices["AttriButeData1"]);
                            if (temperatureSensor.SensorDiv == 1)
                            SelectedDeviceStatuscondition = "";
                            string s = "";
                            switch (devices["Range"])
                            {
                                Btntemperaturevalue.Text = current + ">" + devices["AttriButeData1"] + "℃";
                                case "0":
                                    {
                                        s = ">";
                                    }
                                    break;
                                case "1":
                                    {
                                        s = "=";
                                    }
                                    break;
                                case "2":
                                    {
                                        s = "<";
                                    }
                                    break;
                                case "6":
                                    {
                                        s = "≥";
                                    }
                                    break;
                                case "7":
                                    {
                                        s = "≤";
                                    }
                                    break;
                            }
                            else
                            {
                                Btntemperaturevalue.Text = current + "<" + devices["AttriButeData1"] + "%";
                            }
                            //查找索引
                            index1 = mList1.IndexOf(s);
                            index2 = mList2.IndexOf(devices["AttriButeData1"]);
                        }
                        ///更新最新状态;
                        mUIPickerView.setCurrentItems(index1, index2, 0);
                    }
                    break;
@@ -1534,9 +1569,9 @@
                {
                    if (!edit)
                    {
                        var alert = new Alert(Language.StringByID(MyInternationalizationString.Prompt),
                                               Language.StringByID(MyInternationalizationString.selectdevicestatuscondition),
                                               Language.StringByID(MyInternationalizationString.complete));
                        var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal,
                                    Language.StringByID(MyInternationalizationString.selectdevicestatuscondition),
                                   Language.StringByID(MyInternationalizationString.confrim));
                        alert.Show();
                        return;
                    }