陈嘉乐
2020-12-07 fb5f023820eb6783bd62d0d69d9afbd00cd3f426
HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
@@ -52,7 +52,7 @@
                case FunctionType.CCT:
                    {
                        //2表示(开,关)功能
                        SwitchBrightnessView(fLayout, device, index, edit,2);
                        SwitchBrightnessView(fLayout, device, index, edit, 2);
                    }
                    break;
                case FunctionType.Relay:
@@ -75,25 +75,105 @@
                        SwitchBrightnessView(fLayout, device, index, edit, 3);
                    }
                    break;
                case FunctionType.AC: {
                case FunctionType.AC:
                    {
                        #region 界面
                        ///开关
                        LogicView.FunTypeView curtainSwitchView = new LogicView.FunTypeView();
                        curtainSwitchView.btnText.TextID = StringId.switchLogic;
                        fLayout.AddChidren(curtainSwitchView.FLayoutView());
                        LogicView.FunTypeView acSwitchVie = new LogicView.FunTypeView();
                        acSwitchVie.btnText.TextID = StringId.switchLogic;
                        fLayout.AddChidren(acSwitchVie.FLayoutView());
                        ///温度
                        LogicView.FunTypeView temperatureView = new LogicView.FunTypeView();
                        temperatureView.frameLayout.Y = acSwitchVie.frameLayout.Bottom;
                        temperatureView.btnText.TextID = StringId.temperatureLogic;
                        fLayout.AddChidren(temperatureView.FLayoutView());
                        ///模式
                        LogicView.FunTypeView acModehView = new LogicView.FunTypeView();
                        acModehView.frameLayout.Y = curtainSwitchView.frameLayout.Bottom;
                        acModehView.frameLayout.Y = temperatureView.frameLayout.Bottom;
                        acModehView.btnText.TextID = StringId.modeLogic;
                        fLayout.AddChidren(acModehView.FLayoutView());
                        ///风速
                        LogicView.FunTypeView acSpeedView = new LogicView.FunTypeView();
                        acSpeedView.frameLayout.Y = acModehView.frameLayout.Bottom;
                        acSpeedView.btnText.TextID = StringId.speedLogic;
                        fLayout.AddChidren(acSpeedView.FLayoutView());
                        #endregion
                        #region 点击事件
                        ///开关点击事件
                        curtainSwitchView.btnClick.MouseUpEventHandler += (sender, e) =>
                        acSwitchVie.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            SwitchViewMethod(device, curtainSwitchView.btnState, 2);
                            SwitchViewMethod(device, acSwitchVie.btnState, 2);
                        };
                        ///温度点击事件
                        temperatureView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            FrameLayout frame = new FrameLayout
                            {
                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                            };
                            this.AddChidren(frame);
                            LogicView.TimeView view = new LogicView.TimeView();
                            view.FLayoutView(frame);
                            EventHandler<MouseEventArgs> removefLayout = (sender1, e1) =>
                            {
                                //移除fLayout界面
                                frame.RemoveFromParent();
                            };
                            //取消点击事件
                            view.btnCancel.MouseUpEventHandler += removefLayout;
                            //初始化列表
                            var temperatureList = new List<string>();
                            for (int i = 16; i < 32; i++)
                            {
                                //添加数据
                                temperatureList.Add(i.ToString() + "℃");
                                temperatureList.Add((i + 0.5).ToString() + "℃");
                            }
                            //加载数据界面的设置方法(列表互不联动)
                            view.mUIPickerView.setNPicker(temperatureList, null, null);
                            //默认初始选中状态
                            view.mUIPickerView.setCurrentItems(9, 0, 0);
                            //定义一个局部变量记录选中时间
                            string temperature = "25℃";
                            for (int i = 0; i < temperatureList.Count; i++)
                            {
                                if (temperatureList[i] == temperatureView.btnState.Text)
                                {
                                    //更新状态
                                    view.mUIPickerView.setCurrentItems(i, 0, 0);
                                    //更新状态
                                    temperature = temperatureList[i];
                                    break;
                                }
                            }
                            //选中时间回调方法,时间变化一次回调一次
                            view.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
                            {
                                temperature = temperatureList[index1];
                            };
                            //确定点击事件
                            view.btnConfirm.MouseUpEventHandler += (sender2, e2) =>
                            {
                                Dictionary<string, string> dic = new Dictionary<string, string>();
                                LogicMethod.dictionary(dic, "key", "set_temp");
                                string keyVlaue = "set_temp";
                                string set_temp_value = temperature.Replace("℃", "");
                                LogicMethod.dictionary(dic, "value", set_temp_value);
                                selectedState = device.functionType + "_set_temp";
                                AddDictionaryData(dicSateteList, keyVlaue, dic);
                                RemView(frame);
                                temperatureView.btnState.Text = temperature;
                            };
                        };
                        ///模式点击事件
                        acModehView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
@@ -109,14 +189,15 @@
                            };
                            this.AddChidren(frame);
                            LogicView.DateView modeView = new LogicView.DateView();
                            modeView.btnTitle.TextID = StringId.modeLogic;
                            modeView.btnTitle.TextID = StringId.modeLogic;
                            modeView.FLayoutView(frame, modeStr.Count);
                            modeView.btnCancel.MouseUpEventHandler += (sender2, e2) =>
                            {
                                frame.RemoveFromParent();
                            };
                            ///定义一个Btn记录选中状态
                            Button checkBtn = new Button{
                            Button checkBtn = new Button
                            {
                                Tag = "unknown",
                            };
                            for (int i = 0; i < modeStr.Count; i++)
@@ -145,16 +226,260 @@
                                };
                            }
                            modeView.btnConfirm.MouseUpEventHandler += (sender1,e1) => {
                                if (checkBtn.Tag.ToString()== "unknown") {
                            modeView.btnConfirm.MouseUpEventHandler += (sender1, e1) =>
                            {
                                if (checkBtn.Tag.ToString() == "unknown")
                                {
                                    return;
                                }
                                Dictionary<string, string> dic = new Dictionary<string, string>();
                                LogicMethod.dictionary(dic, "key", "mode");
                                string keyVlaue = "mode";
                                LogicMethod.dictionary(dic, "value", GetModeValueString(checkBtn.Tag.ToString()));
                                LogicMethod.dictionary(dic, "value", GetModeValueString(checkBtn.Tag.ToString(), keyVlaue));
                                acModehView.btnState.Text = checkBtn.Tag.ToString();
                                selectedState = device.functionType + "_mode";
                                AddDictionaryData(dicSateteList, keyVlaue, dic);
                                RemView(frame);
                            };
                        };
                        ///风速点击事件
                        acSpeedView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            List<string> speedStr = new List<string> {
                                Language.StringByID(StringId.LowWindSpeed),
                                 Language.StringByID(StringId.MiddleWindSpeed),
                                  Language.StringByID(StringId.HighWindSpeed),
                                   Language.StringByID(StringId.Auto),
                            };
                            FrameLayout frame = new FrameLayout
                            {
                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                            };
                            this.AddChidren(frame);
                            LogicView.DateView speedView = new LogicView.DateView();
                            speedView.btnTitle.TextID = StringId.modeLogic;
                            speedView.FLayoutView(frame, speedStr.Count);
                            speedView.btnCancel.MouseUpEventHandler += (sender2, e2) =>
                            {
                                frame.RemoveFromParent();
                            };
                            ///定义一个Btn记录选中状态
                            Button checkBtn = new Button
                            {
                                Tag = "unknown",
                            };
                            for (int i = 0; i < speedStr.Count; i++)
                            {
                                LogicView.CheckView speedTypeView = new LogicView.CheckView();
                                speedTypeView.frameLayout.Y = Application.GetRealHeight(56 + 50 * i);
                                speedView.frameLayout.AddChidren(speedTypeView.FLayoutView());
                                speedTypeView.btnText.Text = speedStr[i];
                                speedTypeView.btnClick.Tag = speedStr[i];//标记
                                if (acModehView.btnState.Text == speedStr[i])
                                {
                                    //显示之前的选中状态
                                    checkBtn.IsSelected = false;
                                    speedTypeView.btnCheckIcon.IsSelected = true;
                                    checkBtn = speedTypeView.btnCheckIcon;
                                    checkBtn.Tag = speedTypeView.btnClick.Tag.ToString();
                                }
                                //星期的点击事件
                                speedTypeView.btnClick.MouseUpEventHandler += (sender1, e1) =>
                                {
                                    checkBtn.IsSelected = false;
                                    speedTypeView.btnCheckIcon.IsSelected = true;
                                    checkBtn = speedTypeView.btnCheckIcon;
                                    checkBtn.Tag = speedTypeView.btnClick.Tag.ToString();
                                };
                            }
                            speedView.btnConfirm.MouseUpEventHandler += (sender1, e1) =>
                            {
                                if (checkBtn.Tag.ToString() == "unknown")
                                {
                                    return;
                                }
                                Dictionary<string, string> dic = new Dictionary<string, string>();
                                LogicMethod.dictionary(dic, "key", "fan");
                                string keyVlaue = "fan";
                                LogicMethod.dictionary(dic, "value", GetModeValueString(checkBtn.Tag.ToString(), keyVlaue));
                                acSpeedView.btnState.Text = checkBtn.Tag.ToString();
                                selectedState = device.functionType + "_fan";
                                AddDictionaryData(dicSateteList, keyVlaue, dic);
                                RemView(frame);
                            };
                        };
                        if (edit)
                        {
                            GetEditState(device, index, acSwitchVie.btnState, temperatureView.btnState, acModehView.btnState, acSpeedView.btnState);
                        }
                        #endregion
                    }
                    break;
                case FunctionType.FloorHeating:
                    {
                        #region 界面
                        ///开关
                        LogicView.FunTypeView floorHeatingSwitchVie = new LogicView.FunTypeView();
                        floorHeatingSwitchVie.btnText.TextID = StringId.switchLogic;
                        fLayout.AddChidren(floorHeatingSwitchVie.FLayoutView());
                        ///温度
                        LogicView.FunTypeView temperatureView = new LogicView.FunTypeView();
                        temperatureView.frameLayout.Y = floorHeatingSwitchVie.frameLayout.Bottom;
                        temperatureView.btnText.TextID = StringId.temperatureLogic;
                        fLayout.AddChidren(temperatureView.FLayoutView());
                        ///模式
                        LogicView.FunTypeView floorHeatingModehView = new LogicView.FunTypeView();
                        floorHeatingModehView.frameLayout.Y = temperatureView.frameLayout.Bottom;
                        floorHeatingModehView.btnText.TextID = StringId.modeLogic;
                        fLayout.AddChidren(floorHeatingModehView.FLayoutView());
                        #endregion
                        #region 点击事件
                        ///开关点击事件
                        floorHeatingSwitchVie.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            SwitchViewMethod(device, floorHeatingSwitchVie.btnState, 2);
                        };
                        ///温度点击事件
                        temperatureView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            FrameLayout frame = new FrameLayout
                            {
                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                            };
                            this.AddChidren(frame);
                            LogicView.TimeView view = new LogicView.TimeView();
                            view.FLayoutView(frame);
                            EventHandler<MouseEventArgs> removefLayout = (sender1, e1) =>
                            {
                                //移除fLayout界面
                                frame.RemoveFromParent();
                            };
                            //取消点击事件
                            view.btnCancel.MouseUpEventHandler += removefLayout;
                            //初始化列表
                            var temperatureList = new List<string>();
                            for (int i = 16; i < 32; i++)
                            {
                                //添加数据
                                temperatureList.Add(i.ToString() + "℃");
                                temperatureList.Add((i + 0.5).ToString() + "℃");
                            }
                            //加载数据界面的设置方法(列表互不联动)
                            view.mUIPickerView.setNPicker(temperatureList, null, null);
                            //默认初始选中状态
                            view.mUIPickerView.setCurrentItems(9, 0, 0);
                            //定义一个局部变量记录选中时间
                            string temperature = "25℃";
                            for (int i = 0; i < temperatureList.Count; i++)
                            {
                                if (temperatureList[i] == temperatureView.btnState.Text)
                                {
                                    //更新状态
                                    view.mUIPickerView.setCurrentItems(i, 0, 0);
                                    //更新状态
                                    temperature = temperatureList[i];
                                    break;
                                }
                            }
                            //选中时间回调方法,时间变化一次回调一次
                            view.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
                            {
                                temperature = temperatureList[index1];
                            };
                            //确定点击事件
                            view.btnConfirm.MouseUpEventHandler += (sender2, e2) =>
                            {
                                Dictionary<string, string> dic = new Dictionary<string, string>();
                                LogicMethod.dictionary(dic, "key", "set_temp");
                                string keyVlaue = "set_temp";
                                string set_temp_value = temperature.Replace("℃", "");
                                LogicMethod.dictionary(dic, "value", set_temp_value);
                                selectedState = device.functionType + "_set_temp";
                                AddDictionaryData(dicSateteList, keyVlaue, dic);
                                RemView(frame);
                                temperatureView.btnState.Text = temperature;
                            };
                        };
                        ///模式点击事件
                        floorHeatingModehView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            List<string> modeStr = new List<string> {
                                Language.StringByID(StringId.dayMode),
                                 Language.StringByID(StringId.nightMode),
                                  Language.StringByID(StringId.leaveMode),
                                   Language.StringByID(StringId.ordinaryMode),
                                Language.StringByID(StringId.timeMode),
                            };
                            FrameLayout frame = new FrameLayout
                            {
                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                            };
                            this.AddChidren(frame);
                            LogicView.DateView modeView = new LogicView.DateView();
                            modeView.btnTitle.TextID = StringId.modeLogic;
                            modeView.FLayoutView(frame, modeStr.Count);
                            modeView.btnCancel.MouseUpEventHandler += (sender2, e2) =>
                            {
                                frame.RemoveFromParent();
                            };
                            ///定义一个Btn记录选中状态
                            Button checkBtn = new Button
                            {
                                Tag = "unknown",
                            };
                            for (int i = 0; i < modeStr.Count; i++)
                            {
                                LogicView.CheckView modeTypeView = new LogicView.CheckView();
                                modeTypeView.frameLayout.Y = Application.GetRealHeight(56 + 50 * i);
                                modeView.frameLayout.AddChidren(modeTypeView.FLayoutView());
                                modeTypeView.btnText.Text = modeStr[i];
                                modeTypeView.btnClick.Tag = modeStr[i];//标记
                                if (floorHeatingModehView.btnState.Text == modeStr[i])
                                {
                                    //显示之前的选中状态
                                    checkBtn.IsSelected = false;
                                    modeTypeView.btnCheckIcon.IsSelected = true;
                                    checkBtn = modeTypeView.btnCheckIcon;
                                    checkBtn.Tag = modeTypeView.btnClick.Tag.ToString();
                                }
                                //星期的点击事件
                                modeTypeView.btnClick.MouseUpEventHandler += (sender1, e1) =>
                                {
                                    checkBtn.IsSelected = false;
                                    modeTypeView.btnCheckIcon.IsSelected = true;
                                    checkBtn = modeTypeView.btnCheckIcon;
                                    checkBtn.Tag = modeTypeView.btnClick.Tag.ToString();
                                };
                            }
                            modeView.btnConfirm.MouseUpEventHandler += (sender1, e1) =>
                            {
                                if (checkBtn.Tag.ToString() == "unknown")
                                {
                                    return;
                                }
                                Dictionary<string, string> dic = new Dictionary<string, string>();
                                LogicMethod.dictionary(dic, "key", "mode");
                                string keyVlaue = "mode";
                                LogicMethod.dictionary(dic, "value", GetModeValueString(checkBtn.Tag.ToString(), "FloorHeating"));
                                floorHeatingModehView.btnState.Text = checkBtn.Tag.ToString();
                                selectedState = device.functionType + "_mode";
                                AddDictionaryData(dicSateteList, keyVlaue, dic);
                                RemView(frame);
@@ -162,8 +487,9 @@
                        };
                        if (edit)
                        {
                            GetEditState(device, index, curtainSwitchView.btnState, null, null, null);
                            GetEditState(device, index, floorHeatingSwitchVie.btnState, temperatureView.btnState, floorHeatingModehView.btnState, null);
                        }
                        #endregion
                    }
                    break;
@@ -213,23 +539,83 @@
            #endregion
        }
        private string GetModeValueString(string text)
        /// <summary>
        /// 获取模式/风速键值
        /// </summary>
        /// <param name="text"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        private string GetModeValueString(string text, string type)
        {
            string modeStr = "";
            if (text == Language.StringByID(StringId.coolLogic))
            string str = "";
            switch (type)
            {
                modeStr = "cool";
                case "mode":
                    {
                        if (text == Language.StringByID(StringId.coolLogic))
                        {
                            str = "cool";
                        }
                        else if (text == Language.StringByID(StringId.heatingLogic))
                        {
                            str = "heat";
                        }
                        else if (text == Language.StringByID(StringId.autoLogic))
                        {
                            str = "auto";
                        }
                        else if (text == Language.StringByID(StringId.dehumidifyLogic))
                        {
                            str = "dry";
                        }
                    }
                    break;
                case "fan":
                    {
                        if (text == Language.StringByID(StringId.HighWindSpeed))
                        {
                            str = "high";
                        }
                        else if (text == Language.StringByID(StringId.MiddleWindSpeed))
                        {
                            str = "medium";
                        }
                        else if (text == Language.StringByID(StringId.LowWindSpeed))
                        {
                            str = "low";
                        }
                        else if (text == Language.StringByID(StringId.Auto))
                        {
                            str = "auto";
                        }
                    }
                    break;
                case "FloorHeating":
                    {
                        if (text == Language.StringByID(StringId.dayMode))
                        {
                            str = "day";
                        }
                        else if (text == Language.StringByID(StringId.nightMode))
                        {
                            str = "night";
                        }
                        else if (text == Language.StringByID(StringId.leaveMode))
                        {
                            str = "away";
                        }
                        else if (text == Language.StringByID(StringId.ordinaryMode))
                        {
                            str = "normal";
                        }
                        else if (text == Language.StringByID(StringId.timeMode))
                        {
                            str = "timer";
                        }
                    }
                    break;
            }
            else if (text == Language.StringByID(StringId.heatingLogic)) {
                modeStr = "heat";
            }
            else if (text == Language.StringByID(StringId.autoLogic)) {
                modeStr = "auto";
            }
            else if (text == Language.StringByID(StringId.dehumidifyLogic)) {
                modeStr = "dry";
            }
            return modeStr;
            return str;
        }
        /// <summary>
        ///开关=界面
@@ -239,7 +625,7 @@
        /// <param name="index"></param>
        /// <param name="edit"></param>
        /// <param name="intView">选中View的数量</param>
        private void SwitchView(FrameLayout fLayout, Entity.Function device, int index, bool edit,int intView)
        private void SwitchView(FrameLayout fLayout, Entity.Function device, int index, bool edit, int intView)
        {
            #region 界面
            ///开关
@@ -268,7 +654,7 @@
        /// <param name="index"></param>
        /// <param name="edit"></param>
        /// <param name="intView">选中View的数量</param>
        private void SwitchBrightnessView(FrameLayout fLayout, Entity.Function device, int index, bool edit,int intView)
        private void SwitchBrightnessView(FrameLayout fLayout, Entity.Function device, int index, bool edit, int intView)
        {
            #region 界面
            ///开关
@@ -280,7 +666,7 @@
            brightnessView.frameLayout.Y = lightSwitchView.frameLayout.Bottom;
            if (device.functionType == FunctionType.TrietexCurtain || device.functionType == FunctionType.RollerCurtain)
            {
                brightnessView.btnText.TextID = StringId.percentum;
            }
            else
@@ -378,7 +764,6 @@
        }
        /// <summary>
        /// 亮度/百分比=功能下一级界面
        /// </summary>
@@ -559,7 +944,8 @@
                    }
                    break;
                case FunctionType.TrietexCurtain:
                case FunctionType.RollerCurtain: {
                case FunctionType.RollerCurtain:
                    {
                        foreach (var dic in dicList)
                        {
@@ -597,6 +983,175 @@
                            }
                        }
                    }
                    break;
                case FunctionType.AC:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            switch (dic["key"])
                            {
                                case "on_off":
                                    {
                                        switch (value)
                                        {
                                            case "on":
                                                {
                                                    button1.Text = Language.StringByID(StringId.onLogic);
                                                }
                                                break;
                                            case "off":
                                                {
                                                    button1.Text = Language.StringByID(StringId.offLogic);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                                case "set_temp":
                                    {
                                        button2.Text = value + "℃";
                                    }
                                    break;
                                case "mode":
                                    {
                                        switch (value)
                                        {
                                            case "cool":
                                                {
                                                    button3.Text = Language.StringByID(StringId.coolLogic);
                                                }
                                                break;
                                            case "heat":
                                                {
                                                    button3.Text = Language.StringByID(StringId.heatingLogic);
                                                }
                                                break;
                                            case "auto":
                                                {
                                                    button3.Text = Language.StringByID(StringId.autoLogic);
                                                }
                                                break;
                                            case "dry":
                                                {
                                                    button3.Text = Language.StringByID(StringId.dehumidifyLogic);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                                case "fan":
                                    {
                                        switch (value)
                                        {
                                            case "high":
                                                {
                                                    button4.Text = Language.StringByID(StringId.HighWindSpeed);
                                                }
                                                break;
                                            case "medium":
                                                {
                                                    button4.Text = Language.StringByID(StringId.MiddleWindSpeed);
                                                }
                                                break;
                                            case "low":
                                                {
                                                    button4.Text = Language.StringByID(StringId.LowWindSpeed);
                                                }
                                                break;
                                            case "auto":
                                                {
                                                    button4.Text = Language.StringByID(StringId.Auto);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                            }
                        }
                    }
                    break;
                case FunctionType.FloorHeating:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            switch (dic["key"])
                            {
                                case "on_off":
                                    {
                                        switch (value)
                                        {
                                            case "on":
                                                {
                                                    button1.Text = Language.StringByID(StringId.onLogic);
                                                }
                                                break;
                                            case "off":
                                                {
                                                    button1.Text = Language.StringByID(StringId.offLogic);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                                case "set_temp":
                                    {
                                        button2.Text = value + "℃";
                                    }
                                    break;
                                case "mode":
                                    {
                                        switch (value)
                                        {
                                            case "day":
                                                {
                                                    button3.Text = Language.StringByID(StringId.dayMode);
                                                }
                                                break;
                                            case "night":
                                                {
                                                    button3.Text = Language.StringByID(StringId.nightMode);
                                                }
                                                break;
                                            case "away":
                                                {
                                                    button3.Text = Language.StringByID(StringId.leaveMode);
                                                }
                                                break;
                                            case "normal":
                                                {
                                                    button3.Text = Language.StringByID(StringId.ordinaryMode);
                                                }
                                                break;
                                            case "timer":
                                                {
                                                    button3.Text = Language.StringByID(StringId.timeMode);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                            }
                        }
                    }
                    break;
            }
@@ -665,6 +1220,6 @@
        }
    }
}