xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs
@@ -66,19 +66,10 @@
            fanSpeedList = device.GetAttribute(FunctionAttributeKey.FanSpeed).value;
            btnFan.MouseUpEventHandler += (sender, e) =>
            {
                if( !btnSwitch.IsSelected){return;}
                var curFanSpeedIndex = fanSpeedList.IndexOf(device.GetAttrState(FunctionAttributeKey.FanSpeed));
                var sendFanSpeedIndex = curFanSpeedIndex == fanSpeedList.Count - 1 ? 0 : 1+curFanSpeedIndex;
                device.SetAttrState(FunctionAttributeKey.FanSpeed, fanSpeedList[sendFanSpeedIndex]);
                new System.Threading.Thread(() =>
                if (btnSwitch.IsSelected)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.FanSpeed, fanSpeedList[sendFanSpeedIndex]);
                    Control.Ins.SendWriteCommand(device, d);
                })
                { IsBackground = true }.Start();
                RefreshFanSpeed();
                    ShowFanSelectView();
                }
            };
            //风速文本
            this.btnFanView = new NormalViewControl(this.FrameWhiteCentet1.Width / 3, Application.GetRealHeight(18), false);
@@ -140,40 +131,80 @@
            };
            frameBack.Show();
            var fanAttr = device.GetAttribute(FunctionAttributeKey.FanSpeed);
            if(fanAttr == null)
            {
                return;
            }
            var valueCount = fanAttr.value.Count;
            //菜单控件(风速)
            var menuContr = new DialogTitleMenuControl(3, Language.StringByID(StringId.FanSpeed));
            menuContr.X = Application.GetRealWidth(209);
            menuContr.Y = Application.GetRealHeight(231);
            var menuContr = new DialogTitleMenuControl(valueCount, Language.StringByID(StringId.FanSpeed));
            //menuContr.X = Application.GetRealWidth(209);
            menuContr.Gravity = Gravity.CenterHorizontal;
            menuContr.Width = Application.GetRealWidth(160);
            menuContr.Height = Application.GetRealHeight(199);
            dialogBody.AddChidren(menuContr);
            //1档
            var iconPath = this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "low" ? "FunctionIcon/AirFresh/Fan1Select.png" : "FunctionIcon/AirFresh/Fan1.png";
            menuContr.AddRowMenu(Language.StringByID(StringId.FanOneGear), iconPath, this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "low", () =>
            int count = 0;
            foreach(var fanAttrValue in fanAttr.value)
            {
                frameBack.Close();
                //发送档位命令
                this.SendOtherComand(this.btnFan, FunctionAttributeKey.FanSpeed, "low");
            });
                bool isSelecte = false;
                var iconPath = "FunctionIcon/AirFresh/Fan1.png";
                string text = Language.StringByID(StringId.FanOneGear);
                if (fanAttrValue == "low" || fanAttrValue == "level_1")
                {
                    text = Language.StringByID(StringId.LowWindSpeed);
                    if (this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "low"|| this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "level_1")
                    {
                        iconPath = "FunctionIcon/AirFresh/Fan1Select.png";
                        isSelecte = true;
                    }
                }
                else if (fanAttrValue == "medium" || fanAttrValue == "level_2")
                {
                    text = Language.StringByID(StringId.MiddleWindSpeed);
                    iconPath = "FunctionIcon/AirFresh/Fan2.png";
                    if (this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "medium" || this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "level_2")
                    {
                        iconPath = "FunctionIcon/AirFresh/Fan2Select.png";
                        isSelecte = true;
                    }
                }
                else if (fanAttrValue == "high" || fanAttrValue == "level_3")
                {
                    text = Language.StringByID(StringId.HighWindSpeed);
                    iconPath = "FunctionIcon/AirFresh/Fan3.png";
                    if (this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "high" || this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "level_3")
                    {
                        iconPath = "FunctionIcon/AirFresh/Fan3Select.png";
                        isSelecte = true;
                    }
                }
                else if(fanAttrValue == "auto")
                {
                    text = Language.StringByID(StringId.Auto);
                    iconPath = "FunctionIcon/AirFresh/Fan2.png";
                    if (this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "auto" )
                    {
                        iconPath = "FunctionIcon/AirFresh/Fan2Select.png";
                        isSelecte = true;
                    }
                }
                else
                {
                    continue;
                }
            //2档
            iconPath = this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "medium" ? "FunctionIcon/AirFresh/Fan2Select.png" : "FunctionIcon/AirFresh/Fan2.png";
            menuContr.AddRowMenu(Language.StringByID(StringId.FanTwoGear), iconPath, this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "medium", () =>
            {
                frameBack.Close();
                //发送档位命令
                this.SendOtherComand(this.btnFan, FunctionAttributeKey.FanSpeed, "medium");
            });
                count++;
                menuContr.AddRowMenu(text, iconPath, isSelecte, () =>
                {
                    frameBack.Close();
                    //发送档位命令
                    this.SendOtherComand(this.btnFan, FunctionAttributeKey.FanSpeed, fanAttrValue);
                });
            }
            menuContr.Y = Application.GetRealHeight(231 - (46 * (count-3)));
            //3档
            iconPath = this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "high" ? "FunctionIcon/AirFresh/Fan3Select.png" : "FunctionIcon/AirFresh/Fan3.png";
            menuContr.AddRowMenu(Language.StringByID(StringId.FanThreeGear), iconPath, this.device.GetAttrState(FunctionAttributeKey.FanSpeed) == "high", () =>
            {
                frameBack.Close();
                //发送档位命令
                this.SendOtherComand(this.btnFan, FunctionAttributeKey.FanSpeed, "high");
            });
        }
        #endregion
@@ -254,29 +285,14 @@
            HdlThreadLogic.Current.RunThread(() =>
            {
                //获取发送命令的样板(bus协议是需要一次性把全部命令一起发送的)
                var dic = this.GetSendComandSample();
                dic[comadKey] = comadValue;
                Dictionary<string, string> dic = new Dictionary<string, string>();
                dic.Add(comadKey, comadValue);
                Control.Ins.SendWriteCommand(this.device, dic);
                HdlThreadLogic.Current.RunMain(() =>
                {
                    btnIcon.CanClick = true;
                });
            });
        }
        /// <summary>
        /// 获取发送命令的样板(bus协议是需要一次性把全部命令一起发送的)
        /// </summary>
        /// <returns></returns>
        private Dictionary<string, string> GetSendComandSample()
        {
            var dic = new Dictionary<string, string>();
            //开关
            dic[FunctionAttributeKey.OnOff] = this.device.GetAttrState(FunctionAttributeKey.OnOff);
            //风速
            dic[FunctionAttributeKey.FanSpeed] = this.device.GetAttrState(FunctionAttributeKey.FanSpeed);
            return dic;
        }
        #endregion
@@ -300,5 +316,8 @@
        #endregion
    }
}