陈嘉乐
2020-09-02 652243206427f35a256400a149a1734085824cb9
ZigbeeApp/Shared/Phone/Device/Logic/Nightlight.cs
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using Shared;
using Shared.Common;
using Shared.R;
@@ -12,17 +13,20 @@
        {
            Tag = "Logic";
        }
        public void Show()
        string selectedDeviceStatus = "";
        Dictionary<string, object> actionsInfo = null;
        List<Dictionary<string, string>> TaskList = new List<Dictionary<string, string>>();
        public void Show(CommonDevice common, bool edit,string str_if,Dictionary<string, object> editdeviceActionInfo = null)
        {
            #region  布局界面
            this.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
            TopView view = new TopView();
            this.AddChidren(view.TopRowView());
            view.toptitleNameBtn.Text = Name;
            view.toptitleNameBtn.Text = LocalDevice.Current.GetDeviceEpointName(common);
            view.clickBtn.MouseDownEventHandler += (sender, e) =>
            {
                RemoveFromParent();
            };
            var middle = new FrameLayout
            {
@@ -31,42 +35,169 @@
                BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
            };
            this.AddChidren(middle);
            //夜灯开关
            LogicView.LightView openView = new LogicView.LightView();
            openView.titleBtn.Text = "夜灯开关";
            openView.titleBtn.Text = Language.StringByID(MyInternationalizationString.nightLightSwitch);
            middle.AddChidren(openView.Show());
            openView.clickviewBtn.MouseUpEventHandler += (sender, e) => {
                CurrentDeviceView("夜灯开关",new CommonDevice { },true, "");
            };
            //亮度
            LogicView.LightView brightnessView = new LogicView.LightView();
            brightnessView.frameLayout.Y = openView.frameLayout.Bottom;
            brightnessView.titleBtn.Text = "亮度";
            brightnessView.titleBtn.Text = Language.StringByID(MyInternationalizationString.brightness);
            middle.AddChidren(brightnessView.Show());
            brightnessView.clickviewBtn.MouseUpEventHandler += (sender, e) => {
                CurrentDeviceView("亮度", new CommonDevice { }, true, "");
            };
            //色温
            LogicView.LightView colorTemperatureView = new LogicView.LightView();
            colorTemperatureView.frameLayout.Y = brightnessView.frameLayout.Bottom;
            colorTemperatureView.titleBtn.Text = "色温";
            colorTemperatureView.titleBtn.Text = Language.StringByID(MyInternationalizationString.colorTemperature);
            middle.AddChidren(colorTemperatureView.Show());
            colorTemperatureView.clickviewBtn.MouseUpEventHandler += (sender, e) => {
                CurrentDeviceView("色温", new CommonDevice { }, true, "");
            };
            //蜂鸣器
            LogicView.LightView buzzView = new LogicView.LightView();
            buzzView.frameLayout.Y = colorTemperatureView.frameLayout.Bottom;
            buzzView.titleBtn.Text = "蜂鸣器";
            buzzView.titleBtn.Text = Language.StringByID(MyInternationalizationString.buzzer);
            middle.AddChidren(buzzView.Show());
            buzzView.clickviewBtn.MouseUpEventHandler += (sender, e) => {
                CurrentDeviceView("蜂鸣器", new CommonDevice { }, true, "");
            };
            //保存
            LogicView.SaveView saveView = new LogicView.SaveView();
            saveView.frameLayout.Y = middle.Height - Application.GetRealHeight(260);
            middle.AddChidren(saveView.Show());
            #endregion
            #region  点击事件
            //夜灯开关点击事件
            openView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
            {
                CurrentDeviceView("夜灯开关", common, edit, openView.seletecdTextBtn);
            };
            //亮度点击事件
            brightnessView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
            {
                CurrentDeviceView("亮度", common, edit, brightnessView.seletecdTextBtn);
            };
            //色温点击事件
            colorTemperatureView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
            {
                CurrentDeviceView("色温", common, edit, colorTemperatureView.seletecdTextBtn);
            };
            //蜂鸣器点击事件
            buzzView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
            {
                CurrentDeviceView("蜂鸣器", common, edit, buzzView.seletecdTextBtn);
            };
            //保存点击事件
            saveView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
            {
                if (selectedDeviceStatus != ""&& TaskList.Count!=0)
                {
                    LogicIfon.AddDeviceActions(common, actionsInfo);
                }
                else
                {
                    if (!edit)
                    {
                        var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal,
                                    Language.StringByID(MyInternationalizationString.selectdevicestatuscondition),
                                   Language.StringByID(MyInternationalizationString.confrim));
                        alert.Show();
                        return;
                    }
                }
                if (str_if == "logic")
                {
                    var logicCommunalPage = new LogicCommunalPage();
                    UserView.HomePage.Instance.AddChidren(logicCommunalPage);
                    UserView.HomePage.Instance.PageIndex += 1;
                    logicCommunalPage.Show(() => { });
                }
                else if (str_if == "lockaction")
                {
                    //门锁联动事件
                    var lockLogicCommunalPage = new DoorLockLogic.LockLogicCommunalPage();
                    UserView.HomePage.Instance.AddChidren(lockLogicCommunalPage);
                    UserView.HomePage.Instance.PageIndex += 1;
                    lockLogicCommunalPage.Show(() => { });
                }
            };
            #endregion
            if (edit)
            {
                    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())
                            {
                                var taskLists = deviceinfo["TaskList"] as List<Dictionary<string, string>>;
                                foreach (var tasks in taskLists)
                                {
                                    TaskList.Add(tasks);
                                    switch (tasks["TaskType"])
                                    {
                                        case "1":
                                            {
                                                if (tasks["Data1"] == "0")
                                                {
                                                    openView.seletecdTextBtn.TextID = MyInternationalizationString.close;
                                                }
                                                else
                                                {
                                                    openView.seletecdTextBtn.TextID = MyInternationalizationString.open;
                                                }
                                            }
                                            break;
                                        case "3":
                                            {
                                                var intvalue = int.Parse(tasks["Data1"]);
                                                var lightbrightnessvalue = (intvalue * 100) / 254;
                                                brightnessView.seletecdTextBtn.Text = lightbrightnessvalue.ToString() + "%";
                                            }
                                            break;
                                        case "7":
                                            {
                                                if (tasks["Data1"] == "0")
                                                {
                                                    buzzView.seletecdTextBtn.TextID = MyInternationalizationString.close;
                                                }
                                                else
                                                {
                                                    buzzView.seletecdTextBtn.TextID = MyInternationalizationString.open;
                                                }
                                            }
                                            break;
                                        case "8":
                                            {
                                                var intvalue = int.Parse(tasks["Data1"]);
                                                var lightbrightnessvalue = 1000000 / (intvalue * 100);
                                                colorTemperatureView.seletecdTextBtn.Text = lightbrightnessvalue.ToString() + "00K";
                                            }
                                            break;
                                    }
                                }
                                break;
                            }
                        }
                    }
            }
            if (actionsInfo == null)
            {
                actionsInfo = new Dictionary<string, object>();
                actionsInfo.Add("LinkType", 0);
                actionsInfo.Add("DeviceAddr", common.DeviceAddr);
                actionsInfo.Add("Epoint", common.DeviceEpoint);
                actionsInfo.Add("Time", 0);
                actionsInfo.Add("TaskList", TaskList);
            }
        }
        public void CurrentDeviceView(string if_str, CommonDevice common, bool edit, string str)
        public void CurrentDeviceView(string if_str, CommonDevice common, bool edit, Button button)
        {
            #region  布局界面
            var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
            this.AddChidren(flMain);
            UserView.HomePage.Instance.ScrollEnabled = false;//不让当前界面滑动
@@ -80,12 +211,16 @@
            };
            flMain.MouseUpEventHandler += clickcancel;
            completeView.Btncancel.MouseUpEventHandler += clickcancel;
            #endregion
            string status = "";
            Dictionary<string, string> dictionaryLight = new Dictionary<string, string>();
            dictionaryLight.Clear();
            switch (if_str)
            {
                case "夜灯开关":
                    {
                        mFunView openView = new mFunView();
                        openView.frameLayout.Y = Application.GetRealHeight(140 + 20);
                        openView.titleBtn.TextID = MyInternationalizationString.open;
@@ -98,80 +233,155 @@
                        ///点击确认事件
                        openView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
                        {
                            selectedDeviceStatus = "1";
                            openView.selectedIconBtn.Visible = true;
                            closeView.selectedIconBtn.Visible = false;
                            openView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                            closeView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                            Send.dictionary(dictionaryLight, "Data1", "1");//默认值
                            status = Language.StringByID(MyInternationalizationString.open);
                        };
                        ///点击取消事件
                        closeView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
                        {
                            selectedDeviceStatus = "1";
                            openView.selectedIconBtn.Visible = false;
                            closeView.selectedIconBtn.Visible = true;
                            openView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                            closeView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                            Send.dictionary(dictionaryLight, "Data1", "0");//默认值
                            status = Language.StringByID(MyInternationalizationString.close);
                        };
                        if ( TaskList.Count != 0)
                        {
                            foreach (var value in TaskList)
                            {
                                if (value["TaskType"] == "1")
                                {
                                    if (value["Data1"] == "1")
                                    {
                                        openView.selectedIconBtn.Visible = true;
                                        closeView.selectedIconBtn.Visible = false;
                                    }
                                    else
                                    {
                                        openView.selectedIconBtn.Visible = false;
                                        closeView.selectedIconBtn.Visible = true;
                                    }
                                    break;
                                }
                            }
                        }
                    }
                    break;
                case "亮度":
                    {
                        var horizontalSeekBarVol = new DiyImageSeekBar
                        {
                            Y = Application.GetRealHeight(140),
                            X = Application.GetRealWidth(78),
                            Width = Application.GetRealWidth(918),
                            Height = Application.GetRealHeight(320),//滑动条父控件高度
                            Y = Application.GetRealHeight(140),//进度条父控件Y坐标
                            X = Application.GetRealWidth(78),//进度条X坐标
                            Width = Application.GetRealWidth(918),//进度条的长度
                            Height = Application.GetRealHeight(320),//进度条父控件高度
                            IsProgressTextShow = true,//显示百分比
                            IsClickable = true,//进度条是否滑动
                            ProgressBarColor = ZigbeeColor.Current.LogicProgressColorSelected,//选中进度条颜色
                            ThumbImagePath = "ZigeeLogic/progressbtn2.png",//进度条按钮图标
                            ThumbImageHeight = Application.GetRealHeight(89),//进度条按钮图标的高度(默认正方形:宽和高一样)
                            ProgressTextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                            ProgressTextSize = 9,//显示百分比字体大小12
                            ProgressTextSize = 12,//显示百分比字体大小12
                            SeekBarViewHeight = Application.GetRealHeight(6),//进度条的高度10
                            SeekBarPadding=30,
                        };
                        completeView.Show(2).AddChidren(horizontalSeekBarVol);
                        EventHandler<int> progressclick = (sender, e) =>
                        {
                            selectedDeviceStatus = "3";
                            int lightbrightnessvalue = (254 * horizontalSeekBarVol.Progress) / 100;
                            Send.dictionary(dictionaryLight, "Data1", lightbrightnessvalue.ToString());
                            status = horizontalSeekBarVol.Progress.ToString() + "%";
                        };
                        horizontalSeekBarVol.OnProgressChangedEvent += progressclick;
                        horizontalSeekBarVol.OnStopTrackingTouchEvent += progressclick;
                        if ( TaskList.Count != 0)
                        {
                            foreach (var value in TaskList)
                            {
                                if (value["TaskType"] == "3")
                                {
                                    var intvalue = int.Parse(value["Data1"]);
                                    var lightbrightnessvalue = (intvalue * 100) / 254;
                                    horizontalSeekBarVol.Progress = lightbrightnessvalue;
                                    break;
                                }
                            }
                        }
                    }
                    break;
                case "色温":
                    {
                        Button titleBtn = new Button
                        Button seekIconBtn = new Button
                        {
                            Y = Application.GetRealHeight(140+154),
                            Y = Application.GetRealHeight(140 + 160),
                            X = Application.GetRealWidth(78),
                            Height = Application.GetRealHeight(12),
                            Width = Application.GetRealWidth(918),
                            //TextID = MyInternationalizationString.logicathomegarrison,
                            TextAlignment = TextAlignment.CenterLeft,
                            TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor,
                            TextSize = 14,
                            UnSelectedImagePath= "ZigeeLogic/seek.png",
                            Width = Application.GetRealWidth(918 - 120),
                            UnSelectedImagePath = "ZigeeLogic/seek.png",
                            Gravity = Gravity.CenterHorizontal
                        };
                        completeView.Show(2).AddChidren(titleBtn);
                        var horizontalSeekBarVol = new DiyImageSeekBar
                        {
                            Y = Application.GetRealHeight(140),
                            X = Application.GetRealWidth(78),
                            Width = Application.GetRealWidth(918),
                            Height = Application.GetRealHeight(320),//滑动条父控件高度
                            IsProgressTextShow = true,//显示百分比
                            IsClickable = true,//进度条是否滑动
                            ProgressBarColor = 0x00000000,// ZigbeeColor.Current.LogicProgressColorSelected,//选中进度条颜色
                            SeekBarBackgroundColor= 0x00000000,
                            ThumbImagePath = "ZigeeLogic/progressbtn2.png",//进度条按钮图标
                            ThumbImageHeight = Application.GetRealHeight(89),//进度条按钮图标的高度(默认正方形:宽和高一样)
                            ProgressTextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                            ProgressTextSize = 9,//显示百分比字体大小12
                            SeekBarViewHeight = Application.GetRealHeight(12),//进度条的高度10
                        };
                        completeView.Show(2).AddChidren(seekIconBtn);
                        var horizontalSeekBarVol = new UserCenter.SeekBarControl(918)
                        {
                            ProgressBarColor = 0x00000000,// ZigbeeColor.Current.LogicProgressColorSelected,//选中进度条颜色
                            SeekBarBackgroundColor = 0x00000000,
                            SeekBarViewHeight = Application.GetRealHeight(20),
                            SeekBarPadding = Application.GetRealWidth(60),
                            MinValue = 30,
                            MaxValue = 60,
                            ProgressChangeDelayTime = 0,
                        };
                        completeView.Show(2).AddChidren(horizontalSeekBarVol);
                        horizontalSeekBarVol.Y = seekIconBtn.Y - (horizontalSeekBarVol.Height - seekIconBtn.Height) / 2;
                        horizontalSeekBarVol.ShowCustomTextView(Application.GetRealWidth(200), 12, ZigbeeColor.Current.LogicBtnCancelColor);
                        EventHandler<int> progressclick = (sender, e) =>
                        {
                            horizontalSeekBarVol.SetCustomText(e * 100 + "K");
                            selectedDeviceStatus = "8";
                            var lightbrightnessvalue = 1000000 / (100 * horizontalSeekBarVol.Progress);
                            Send.dictionary(dictionaryLight, "Data1", lightbrightnessvalue.ToString());
                            status =horizontalSeekBarVol.Progress.ToString() + "00K";
                        };
                        horizontalSeekBarVol.OnProgressChangedEvent += progressclick;
                        horizontalSeekBarVol.OnStopTrackingTouchEvent += progressclick;
                        if ( TaskList.Count != 0)
                        {
                            foreach (var value in TaskList)
                            {
                                if (value["TaskType"] == "8")
                                {
                                    var intvalue = int.Parse(value["Data1"]);
                                    var lightbrightnessvalue = 1000000 / (intvalue * 100);
                                    horizontalSeekBarVol.Progress = lightbrightnessvalue;
                                    break;
                                }
                            }
                        }
                        var intValue = horizontalSeekBarVol.Progress;
                        if (intValue == 0) { intValue = 30; }
                        horizontalSeekBarVol.SetCustomText(intValue * 100 + "K");
                    }
                    break;
                case "蜂鸣器":
                    {
                        mFunView openView = new mFunView();
                        openView.frameLayout.Y = Application.GetRealHeight(140 + 20);
                        openView.titleBtn.TextID = MyInternationalizationString.open;
@@ -185,30 +395,101 @@
                        ///点击确认事件
                        openView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
                        {
                            selectedDeviceStatus = "7";
                            openView.selectedIconBtn.Visible = true;
                            closeView.selectedIconBtn.Visible = false;
                            openView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                            closeView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                            Send.dictionary(dictionaryLight, "Data1", "1");//默认值
                            status = Language.StringByID(MyInternationalizationString.open);
                        };
                        ///点击取消事件
                        closeView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
                        {
                            selectedDeviceStatus = "7";
                            openView.selectedIconBtn.Visible = false;
                            closeView.selectedIconBtn.Visible = true;
                            openView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                            closeView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                            Send.dictionary(dictionaryLight, "Data1", "0");//默认值
                            status = Language.StringByID(MyInternationalizationString.close);
                        };
                        if ( TaskList.Count != 0)
                        {
                            foreach (var value in TaskList)
                            {
                                if (value["TaskType"] == "7")
                                {
                                    if (value["Data1"] == "1")
                                    {
                                        openView.selectedIconBtn.Visible = true;
                                        closeView.selectedIconBtn.Visible = false;
                                    }
                                    else
                                    {
                                        openView.selectedIconBtn.Visible = false;
                                        closeView.selectedIconBtn.Visible = true;
                                    }
                                    break;
                                }
                            }
                        }
                    }
                    break;
            }
            completeView.Btncomplete.MouseUpEventHandler += (sender, e) =>
            {
                if (dictionaryLight.Count!=0)
                {
                    Send.dictionary(dictionaryLight, "TaskType", selectedDeviceStatus);
                    Send.dictionary(dictionaryLight, "Data2", "0");
                    flMain.RemoveFromParent();
                    DicValue(selectedDeviceStatus, dictionaryLight);
                    button.Text = status;
                }
                else
                {
                    if (!edit)
                    {
                        var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal,
                                    Language.StringByID(MyInternationalizationString.selectdevicestatuscondition),
                                   Language.StringByID(MyInternationalizationString.confrim));
                        alert.Show();
                        return;
                    }
                    else
                    {
                        flMain.RemoveFromParent();
                    }
                }
            };
        }
        public void DicValue(string str, Dictionary<string, string> dictionay)
        {
            bool d = false;
            foreach (var tasks in TaskList)
            {
                if (tasks["TaskType"] == str)
                {
                    TaskList.Remove(tasks);
                    TaskList.Add(dictionay);
                    d = true;
                    break;
                }
            }
            if (!d)
            {
                TaskList.Add(dictionay);
            }
        }
    }
}