gxc
2019-10-29 ed2f4a97aa48cdb4a013d2a389877f52eb3eccdf
ZigbeeApp/Shared/Phone/Device/Logic/SetDeviceState.cs
New file
@@ -0,0 +1,681 @@
using System;
using System.Collections.Generic;
using Shared;
using Shared.R;
using Shared.Phone;
using ZigBee.Device;
using Shared.Common;
namespace Shared.Phone.Device.Logic
{
    public class SetDeviceState:FrameLayout
    {
        public SetDeviceState()
        {
            Tag = "Logic";
        }
        Dictionary<string, object> actionsInfo = new Dictionary<string, object>();
        List<Dictionary<string, string>> taskListInfo = new List<Dictionary<string, string>>();
        public void Show (CommonDevice common,string topText,bool edit)
        {
            this.BackgroundColor = ZigbeeColor.Current.LogicTopViewBackgroundColor;
            UserView.HomePage.Instance.ScrollEnabled = false;
            var topFrameLayout = new FrameLayout
            {
                Height = Application.GetRealHeight(140),
                Y = Application.GetRealHeight(80),
            };
            AddChidren(topFrameLayout);
            var titleName = new Button {
                Text =topText,
                //TextID = MyInternationalizationString.adddevice,
                TextSize = 17,
                TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                TextAlignment = TextAlignment.CenterLeft,
                X = Application.GetRealWidth(150),
            };
            topFrameLayout.AddChidren (titleName);
            var back = new Button {
                Width = Application.GetRealWidth (110),
                Height = Application.GetRealHeight (110),
                X = Application.GetRealWidth (20),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "ZigeeLogic/Back.png",
            };
            topFrameLayout.AddChidren (back);
            back.MouseDownEventHandler += (sender, e) => {
                RemoveFromParent ();
                UserView.HomePage.Instance.ScrollEnabled = true;
            };
            var middle = new FrameLayout ();
            middle.Y = topFrameLayout.Bottom;
            middle.Height = Application.GetRealHeight (1920 - 220);
            middle.BackgroundColor =ZigbeeColor.Current.LogicBackgroundColor;
            this.AddChidren (middle);
            var bjframelayout = new FrameLayout
            {
                X = Application.GetRealWidth(50),
                Width = Application.GetRealWidth(1080 - 100),
                Height = Application.GetRealHeight(1300),
                Y=Application.GetRealHeight(50),
                BackgroundColor= ZigbeeColor.Current.LogicTopViewBackgroundColor,
            };
            middle.AddChidren(bjframelayout);
            List<Dictionary<string,string>> TaskList = null;
            foreach (var deviceinfo in Common.Logic.CurrentLogic.Actions)
            {
                if (deviceinfo["LinkType"].ToString() == "0")
                {
                    if (deviceinfo["DeviceAddr"].ToString() == common.DeviceAddr &&deviceinfo["Epoint"].ToString() == common.DeviceEpoint.ToString())
                    {
                        TaskList = deviceinfo["TaskList"] as List<Dictionary<string, string>>;
                        break;
                    }
                }
            }
            string SelectedDeviceStatus = "no";
            if (actionsInfo.ContainsKey("LinkType"))
            {
                actionsInfo.Remove("LinkType");
            }
            if (actionsInfo.ContainsKey("DeviceAddr"))
            {
                actionsInfo.Remove("DeviceAddr");
            }
            if (actionsInfo.ContainsKey("Epoint"))
            {
                actionsInfo.Remove("Epoint");
            }
            if (actionsInfo.ContainsKey("Time"))
            {
                actionsInfo.Remove("Time");
            }
            if (actionsInfo.ContainsKey("TaskList"))
            {
                actionsInfo.Remove("TaskList");
            }
            actionsInfo.Add("LinkType", 0);
            actionsInfo.Add("DeviceAddr", common.DeviceAddr);
            actionsInfo.Add("Epoint", common.DeviceEpoint);
            actionsInfo.Add("Time", 0);
            actionsInfo.Add("TaskList", taskListInfo);
            switch (common.Type)
            {
                case DeviceType.DimmableLight:
                    {
                        #region  ----初始化设备功能数据----
                        //Dictionary<string, string> switchdictionary = new Dictionary<string, string>();
                        //if (switchdictionary.ContainsKey("TaskType"))
                        //{
                        //    switchdictionary.Remove("TaskType");
                        //}
                        //if (switchdictionary.ContainsKey("Data1"))
                        //{
                        //    switchdictionary.Remove("Data1");
                        //}
                        //if (switchdictionary.ContainsKey("Data2"))
                        //{
                        //    switchdictionary.Remove("Data2");
                        //}
                        //switchdictionary.Add("TaskType", "1");
                        //switchdictionary.Add("Data1", "0");
                        //switchdictionary.Add("Data2", "0");
                        //taskListInfo.Add(switchdictionary);
                        Dictionary<string, string> brightnessdictionary = new Dictionary<string, string>();
                        if (brightnessdictionary.ContainsKey("TaskType"))
                        {
                            brightnessdictionary.Remove("TaskType");
                        }
                        if (brightnessdictionary.ContainsKey("Data1"))
                        {
                            brightnessdictionary.Remove("Data1");
                        }
                        if (brightnessdictionary.ContainsKey("Data2"))
                        {
                            brightnessdictionary.Remove("Data2");
                        }
                        brightnessdictionary.Add("TaskType", "3");
                        brightnessdictionary.Add("Data1", "0");
                        brightnessdictionary.Add("Data2", "0");
                        taskListInfo.Add(brightnessdictionary);
                        #endregion
                        #region  灯光View
                        var Btndevicename = new Button
                        {
                            Text = common.DeviceEpointName,
                            Y = Application.GetRealHeight(150),
                            X = Application.GetRealWidth(190),
                            Width = Application.GetRealWidth(600),
                            Height = Application.GetRealHeight(150),
                            TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                            TextSize = 16,
                            TextAlignment = TextAlignment.Center,
                        };
                        bjframelayout.AddChidren(Btndevicename);
                        var Btniocn = new Button
                        {
                            Width = Application.GetRealWidth(110),
                            Height = Application.GetRealHeight(110),
                            UnSelectedImagePath = "Room/Light.png",
                            X = Application.GetRealWidth(440),
                            Y = Btndevicename.Bottom + Application.GetRealHeight(100),
                        };
                        bjframelayout.AddChidren(Btniocn);
                        var Btnvelue = new Button
                        {
                            Width = Application.GetRealWidth(200),
                            Height = Application.GetRealHeight(130),
                            X = Application.GetRealWidth(390),
                            Y = Btniocn.Bottom + Application.GetRealHeight(100),
                            TextAlignment = TextAlignment.Center,
                            TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                            Text = "0%",
                        };
                        bjframelayout.AddChidren(Btnvelue);
                        var horizontalSeekBarVolframelayout = new FrameLayout
                        {
                            Y = Btnvelue.Bottom,
                            Width = Application.GetRealWidth(880),
                            Height = Application.GetRealHeight(80),
                            X = Application.GetRealWidth(50),
                        };
                        bjframelayout.AddChidren(horizontalSeekBarVolframelayout);
                        var horizontalSeekBarVol = new HorizontalSeekBar
                        {
                            Width = Application.GetRealWidth(880 - 50),
                            Height = Application.GetRealHeight(80),
                            Radius = (uint)Application.GetRealHeight(25),
                            X = Application.GetRealWidth(25),
                            Gravity = Gravity.CenterVertical,
                            ProgressColor = 0xffFE5E00,
                            Max = 100,
                            SleepTime = 1000,
                            ThumbRadius = 9,
                            //IsCanClick=false
                        };
                        horizontalSeekBarVolframelayout.AddChidren(horizontalSeekBarVol);
                        var Btnswitch = new Button
                        {
                            Width = Application.GetRealWidth(110),
                            Height = Application.GetRealHeight(110),
                            UnSelectedImagePath = "Room/Light.png",
                            SelectedImagePath = "Room/LightSelected.png",
                            X = Application.GetRealWidth(440),
                            Y = horizontalSeekBarVolframelayout.Bottom + Application.GetRealHeight(80),
                        };
                        //bjframelayout.AddChidren(Btnswitch);
                        var textfl = new FrameLayout
                        {
                            Width = Application.GetRealWidth(980),
                            Height = Application.GetRealHeight(160),
                            BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor,
                            Y = Application.GetRealHeight(1300 - 160),
                        };
                        bjframelayout.AddChidren(textfl);
                        var Btnregioniocn = new Button
                        {
                            Width = Application.GetRealWidth(110),
                            Height = Application.GetRealHeight(110),
                            UnSelectedImagePath = "Room/Light.png",
                            X = Application.GetRealWidth(40),
                            Y = Application.GetRealHeight(25),
                        };
                        textfl.AddChidren(Btnregioniocn);
                        var Btnregionname = new Button
                        {
                            Width = Application.GetRealWidth(600),
                            Height = Application.GetRealHeight(110),
                            X = Application.GetRealWidth(150 + 30),
                            TextAlignment = TextAlignment.CenterLeft,
                            Text ="",
                            TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                            Y = Application.GetRealHeight(25),
                        };
                        textfl.AddChidren(Btnregionname);
                        Send.RoomNmae(Btnregionname,common);
                        #endregion
                        horizontalSeekBarVol.ProgressChanged += (sender, e) =>
                        {
                            SelectedDeviceStatus = "selected";
                            Btnvelue.Text = horizontalSeekBarVol.Progress.ToString() + "%";
                            if (brightnessdictionary.ContainsKey("Data1"))
                            {
                                brightnessdictionary.Remove("Data1");
                            }
                            var lightbrightnessvalue = (254 * horizontalSeekBarVol.Progress) / 100;//最大亮度值是254需要转换;
                            brightnessdictionary.Add("Data1", lightbrightnessvalue.ToString());
                            //var dd = (lightbrightnessvalue * 100)/254+1;
                        };
                        Btnswitch.MouseUpEventHandler += (sender, e) =>
                        {
                            SelectedDeviceStatus = "selected";
                            Btnswitch.IsSelected = !Btnswitch.IsSelected;
                            //if (switchdictionary.ContainsKey("Data1"))
                            //{
                            //    switchdictionary.Remove("Data1");
                            //}
                            //if (Btnswitch.IsSelected)
                            //{
                            //    switchdictionary.Add("Data1", "1");
                            //}
                            //else
                            //{
                            //    switchdictionary.Add("Data1", "0");
                            //}
                        };
                        if (edit&&TaskList!=null)
                        {
                            foreach (var value in TaskList)
                            {
                                if (value["TaskType"] == "1")
                                {
                                    //if (switchdictionary.ContainsKey("Data1"))
                                    //{
                                    //    switchdictionary.Remove("Data1");
                                    //}
                                    //if (value["Data1"] == "1")
                                    //{
                                    //    switchdictionary.Add("Data1", "1");
                                    //    Btnswitch.IsSelected = true;
                                    //}
                                    //else
                                    //{
                                    //    switchdictionary.Add("Data1", "0");
                                    //    Btnswitch.IsSelected = false;
                                    //}
                                }
                                else if (value["TaskType"] == "3")
                                {
                                    if (brightnessdictionary.ContainsKey("Data1"))
                                    {
                                        brightnessdictionary.Remove("Data1");
                                    }
                                    var intvalue = int.Parse(value["Data1"]);
                                    brightnessdictionary.Add("Data1", intvalue.ToString());
                                    var lightbrightnessvalue = (intvalue * 100) / 254;
                                    Btnvelue.Text = lightbrightnessvalue.ToString() + "%";
                                    horizontalSeekBarVol.Progress = lightbrightnessvalue;
                                }
                            }
                        }
                    }
                    break;
                case DeviceType.WindowCoveringDevice:
                    {
                        #region  ----初始化设备功能数据----
                        //Dictionary<string, string> switchdictionary = new Dictionary<string, string>();
                        //if (switchdictionary.ContainsKey("TaskType"))
                        //{
                        //    switchdictionary.Remove("TaskType");
                        //}
                        //if (switchdictionary.ContainsKey("Data1"))
                        //{
                        //    switchdictionary.Remove("Data1");
                        //}
                        //if (switchdictionary.ContainsKey("Data2"))
                        //{
                        //    switchdictionary.Remove("Data2");
                        //}
                        //switchdictionary.Add("TaskType", "6");
                        //switchdictionary.Add("Data1", "1");
                        //switchdictionary.Add("Data2", "0");
                        //taskListInfo.Add(switchdictionary);
                        Dictionary<string, string> brightnessdictionary = new Dictionary<string, string>();
                        if (brightnessdictionary.ContainsKey("TaskType"))
                        {
                            brightnessdictionary.Remove("TaskType");
                        }
                        if (brightnessdictionary.ContainsKey("Data2"))
                        {
                            brightnessdictionary.Remove("Data2");
                        }
                        if (brightnessdictionary.ContainsKey("Data1"))
                        {
                            brightnessdictionary.Remove("Data1");
                        }
                        brightnessdictionary.Add("TaskType", "6");
                        brightnessdictionary.Add("Data1", "5");
                        brightnessdictionary.Add("Data2", "0");
                        taskListInfo.Add(brightnessdictionary);
                        #endregion
                        #region  窗帘View
                        var Btndevicename = new Button
                        {
                            Text = common.DeviceEpointName,
                            Y = Application.GetRealHeight(150),
                            X = Application.GetRealWidth(190),
                            Width = Application.GetRealWidth(600),
                            Height = Application.GetRealHeight(150),
                            TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                            TextSize = 16,
                            TextAlignment = TextAlignment.Center,
                        };
                        bjframelayout.AddChidren(Btndevicename);
                        var Btniocn = new Button
                        {
                            Width = Application.GetRealWidth(110),
                            Height = Application.GetRealHeight(110),
                            UnSelectedImagePath = "Room/Curtain.png",
                            X = Application.GetRealWidth(440),
                            Y = Btndevicename.Bottom + Application.GetRealHeight(100),
                        };
                        bjframelayout.AddChidren(Btniocn);
                        var Btnvelue = new Button
                        {
                            Width = Application.GetRealWidth(200),
                            Height = Application.GetRealHeight(130),
                            X = Application.GetRealWidth(390),
                            Y = Btniocn.Bottom + Application.GetRealHeight(100),
                            TextAlignment = TextAlignment.Center,
                            TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                            Text = "0%",
                        };
                        bjframelayout.AddChidren(Btnvelue);
                        var horizontalSeekBarVolframelayout = new FrameLayout
                        {
                            Y = Btnvelue.Bottom,
                            Width = Application.GetRealWidth(880),
                            Height = Application.GetRealHeight(80),
                            X = Application.GetRealWidth(50),
                        };
                        bjframelayout.AddChidren(horizontalSeekBarVolframelayout);
                        var horizontalSeekBarVol = new HorizontalSeekBar
                        {
                            Width = Application.GetRealWidth(880 - 50),
                            Height = Application.GetRealHeight(80),
                            Radius = (uint)Application.GetRealHeight(25),
                            X = Application.GetRealWidth(25),
                            Gravity = Gravity.CenterVertical,
                            ProgressColor = 0xffFE5E00,
                            Max = 100,
                            SleepTime = 1000,
                            ThumbRadius = 9,
                            //IsCanClick=false
                        };
                        horizontalSeekBarVolframelayout.AddChidren(horizontalSeekBarVol);
                        var Btnswitch = new Button
                        {
                            Width = Application.GetRealWidth(110),
                            Height = Application.GetRealHeight(110),
                            UnSelectedImagePath = "Room/Curtain.png",
                            SelectedImagePath = "Room/CurtainSelected.png",
                            X = Application.GetRealWidth(440),
                            Y = horizontalSeekBarVolframelayout.Bottom + Application.GetRealHeight(80),
                        };
                        //bjframelayout.AddChidren(Btnswitch);
                        var textfl = new FrameLayout
                        {
                            Width = Application.GetRealWidth(980),
                            Height = Application.GetRealHeight(160),
                            BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor,
                            Y = Application.GetRealHeight(1300 - 160),
                        };
                        bjframelayout.AddChidren(textfl);
                        var Btnregioniocn = new Button
                        {
                            Width = Application.GetRealWidth(110),
                            Height = Application.GetRealHeight(110),
                            UnSelectedImagePath = "Room/Curtain.png",
                            X = Application.GetRealWidth(40),
                            Y = Application.GetRealHeight(25),
                        };
                        textfl.AddChidren(Btnregioniocn);
                        var Btnregionname = new Button
                        {
                            Width = Application.GetRealWidth(600),
                            Height = Application.GetRealHeight(110),
                            X = Application.GetRealWidth(150 + 30),
                            TextAlignment = TextAlignment.CenterLeft,
                            Text ="",
                            TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                            Y = Application.GetRealHeight(25),
                        };
                        textfl.AddChidren(Btnregionname);
                        Send.RoomNmae(Btnregionname,common);
                        #endregion
                        horizontalSeekBarVol.ProgressChanged += (sender, e) =>
                        {
                            SelectedDeviceStatus = "selected";
                            Btnvelue.Text = horizontalSeekBarVol.Progress.ToString() + "%";
                            if (brightnessdictionary.ContainsKey("Data1"))
                            {
                                brightnessdictionary.Remove("Data1");
                            }
                            brightnessdictionary.Add("Data1", "5");
                            if (brightnessdictionary.ContainsKey("Data2"))
                            {
                                brightnessdictionary.Remove("Data2");
                            }
                            brightnessdictionary.Add("Data2", horizontalSeekBarVol.Progress.ToString());
                        };
                        Btnswitch.MouseUpEventHandler += (sender, e) =>
                        {
                            SelectedDeviceStatus = "selected";
                            Btnswitch.IsSelected = !Btnswitch.IsSelected;
                            //if (switchdictionary.ContainsKey("Data1"))
                            //{
                            //    switchdictionary.Remove("Data1");
                            //}
                            //if (Btnswitch.IsSelected)
                            //{
                            //    switchdictionary.Add("Data1", "0");
                            //}
                            //else
                            //{
                            //    switchdictionary.Add("Data1", "1");
                            //}
                        };
                        if (edit && TaskList != null)
                        {
                            foreach (var value in TaskList)
                            {
                                if (value["TaskType"] == "6")
                                {
                                    if (value["Data1"] == "5")
                                    {
                                        if (brightnessdictionary.ContainsKey("Data2"))
                                        {
                                            brightnessdictionary.Remove("Data2");
                                        }
                                        var lightbrightnessvalue = int.Parse(value["Data2"]);
                                        brightnessdictionary.Add("Data2", lightbrightnessvalue.ToString());
                                        Btnvelue.Text = lightbrightnessvalue.ToString() + "%";
                                        horizontalSeekBarVol.Progress = lightbrightnessvalue;
                                    }
                                }
                            }
                        }
                        /*
                        if (edit && TaskList != null)
                        {
                            foreach (var value in TaskList)
                            {
                                if (value["TaskType"] == "6")
                                {
                                    if (value["Data1"] == "0")
                                    {
                                        if (switchdictionary.ContainsKey("Data1"))
                                        {
                                            switchdictionary.Remove("Data1");
                                        }
                                        switchdictionary.Add("Data1", "0");
                                        Btnswitch.IsSelected = true;
                                    }
                                    else if (value["Data1"] == "1")
                                    {
                                        if (switchdictionary.ContainsKey("Data1"))
                                        {
                                            switchdictionary.Remove("Data1");
                                        }
                                        switchdictionary.Add("Data1", "1");
                                        Btnswitch.IsSelected = false;
                                    }
                                    else if (value["Data1"] == "5")
                                    {
                                        if (brightnessdictionary.ContainsKey("Data2"))
                                        {
                                            brightnessdictionary.Remove("Data2");
                                        }
                                        var lightbrightnessvalue = int.Parse(value["Data2"]);
                                        brightnessdictionary.Add("Data2", lightbrightnessvalue.ToString());
                                        Btnvelue.Text = lightbrightnessvalue.ToString() + "%";
                                        horizontalSeekBarVol.Progress = lightbrightnessvalue;
                                    }
                                }
                            }
                        }
                  */
                    }
                    break;
            }
            var btnsave = new Button
            {
                Height = Application.GetRealHeight(150),//194
                Y = bjframelayout.Bottom+Application.GetRealHeight(100),
                //Text = "保存",
                Width = Application.GetRealWidth(500),
                Radius = (uint)Application.GetRealHeight(50),
                BackgroundColor = ZigbeeColor.Current.LogicButtonBlueColor,
                X = Application.GetRealWidth(290),
                TextID=MyInternationalizationString.Save,
            };
            middle.AddChidren(btnsave);
            btnsave.MouseUpEventHandler += (sedder, e) => {
                if (SelectedDeviceStatus == "selected")
                {
                    LogicIfon.AddDeviceactions(common,actionsInfo);
                }
                else
                {
                    if (!edit)
                    {
                        var alert = new Alert(Language.StringByID(MyInternationalizationString.Prompt),
                                                       Language.StringByID(MyInternationalizationString.selectdevicestatuscondition),
                                                  Language.StringByID(MyInternationalizationString.complete));
                        alert.Show();
                        return;
                    }
                    edit = false;
                }
                this.RemoveFromParent ();
                var logicCommunalPage = new LogicCommunalPage ();
                UserView.HomePage.Instance.AddChidren (logicCommunalPage);
                UserView.HomePage.Instance.PageIndex += 1;
                logicCommunalPage.Show (()=>{});
            };
        }
        void FreshAirReadupdateModeImage (int mode, Button btn,Button btn1)
        {
            ///新风:mode:(0:智能,1:新风,2:内循环,3:恒温)
            switch (mode) {
            case 0:
                btn.UnSelectedImagePath = "FreshAir/FASmart.png";
                btn1.UnSelectedImagePath = "FreshAir/FASmart.png";
                break;
            case 1:
                btn.UnSelectedImagePath = "FreshAir/FAManual.png";
                btn1.UnSelectedImagePath = "FreshAir/FAManual.png";
                break;
            case 2:
                btn.UnSelectedImagePath = "FreshAir/FAInternalCirculation.png";
                btn1.UnSelectedImagePath = "FreshAir/FAInternalCirculation.png";
                break;
            case 3:
                btn.UnSelectedImagePath = "FreshAir/FAConstantTemp.png";
                btn1.UnSelectedImagePath = "FreshAir/FAConstantTemp.png";
                break;
            default:
                btn.UnSelectedImagePath = "FreshAir/FASmart.png";
                btn1.UnSelectedImagePath = "FreshAir/FASmart.png";
                break;
            }
        }
        void ACupdateModeImage (int mode, Button btn,Button btn1)
        {
            ///空调:mode:(0:制冷,1:制热,2:通风,3:自动,4:抽湿)
            switch (mode) {
            case 0:
                btn.UnSelectedImagePath = "AC/ACRefrigeration.png";
                btn1.UnSelectedImagePath = "AC/ACRefrigeration.png";
                break;
            case 1:
                btn.UnSelectedImagePath = "AC/ACHeating.png";
                btn1.UnSelectedImagePath = "AC/ACHeating.png";
                break;
            case 2:
                btn.UnSelectedImagePath = "AC/ACModeAuto.png";
                btn1.UnSelectedImagePath = "AC/ACModeAuto.png";
                break;
            case 3:
                btn.UnSelectedImagePath = "AC/ACAuto.png";
                btn1.UnSelectedImagePath = "AC/ACAuto.png";
                break;
            case 4:
                btn.UnSelectedImagePath = "AC/ACDehumidification.png";
                btn1.UnSelectedImagePath = "AC/ACDehumidification.png";
                break;
            default:
                btn.UnSelectedImagePath = "AC/ACRefrigeration.png";
                btn1.UnSelectedImagePath = "AC/ACRefrigeration.png";
                break;
            }
        }
    }
}