using System; using System.Collections.Generic; using Shared; using Shared.Common; using Shared.R; using ZigBee.Device; namespace Shared.Phone.Device.Logic { public class Nightlight : FrameLayout { public Nightlight() { Tag = "Logic"; } string selectedDeviceStatus = ""; Dictionary actionsInfo = null; List> TaskList = new List>(); public void Show(CommonDevice common, bool edit,string str_if,Dictionary editdeviceActionInfo = null) { #region 布局界面 this.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; TopView view = new TopView(); this.AddChidren(view.TopRowView()); view.toptitleNameBtn.Text = HdlDeviceCommonLogic.Current.GetDeviceEpointName(common); view.clickBtn.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); }; var middle = new FrameLayout { Y = view.topRowLayout.Bottom, Height = Application.GetRealHeight(Method.H - 184), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); //夜灯开关 LogicView.LightView openView = new LogicView.LightView(); openView.titleBtn.Text = Language.StringByID(MyInternationalizationString.nightLightSwitch); middle.AddChidren(openView.Show()); //亮度 LogicView.LightView brightnessView = new LogicView.LightView(); brightnessView.frameLayout.Y = openView.frameLayout.Bottom; brightnessView.titleBtn.Text = Language.StringByID(MyInternationalizationString.brightness); middle.AddChidren(brightnessView.Show()); //色温 LogicView.LightView colorTemperatureView = new LogicView.LightView(); colorTemperatureView.frameLayout.Y = brightnessView.frameLayout.Bottom; colorTemperatureView.titleBtn.Text = Language.StringByID(MyInternationalizationString.colorTemperature); middle.AddChidren(colorTemperatureView.Show()); //蜂鸣器 LogicView.LightView buzzView = new LogicView.LightView(); buzzView.frameLayout.Y = colorTemperatureView.frameLayout.Bottom; buzzView.titleBtn.Text = Language.StringByID(MyInternationalizationString.buzzer); middle.AddChidren(buzzView.Show()); //保存 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 (TaskList.Count!=0) { LogicIfon.AddDeviceActions(common, actionsInfo); } else { if (!edit) { var alert = new ShowMsgControl(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>; 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(); 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, Button button) { #region 布局界面 var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); UserView.HomePage.Instance.ScrollEnabled = false;//不让当前界面滑动 CompleteView completeView = new CompleteView(); flMain.AddChidren(completeView.Show(2)); completeView.Btntitle.Text = HdlDeviceCommonLogic.Current.GetDeviceEpointName(common); EventHandler clickcancel = (sender, e) => { UserView.HomePage.Instance.ScrollEnabled = true; flMain.RemoveFromParent(); }; flMain.MouseUpEventHandler += clickcancel; completeView.Btncancel.MouseUpEventHandler += clickcancel; #endregion string status = ""; Dictionary dictionaryLight = new Dictionary(); dictionaryLight.Clear(); switch (if_str) { case "夜灯开关": { mFunView openView = new mFunView(); openView.frameLayout.Y = Application.GetRealHeight(140 + 20); openView.titleBtn.TextID = MyInternationalizationString.open; completeView.Show(2).AddChidren(openView.Show()); mFunView closeView = new mFunView(); closeView.frameLayout.Y = Application.GetRealHeight(140 + 20 + 160); closeView.titleBtn.TextID = MyInternationalizationString.close; completeView.Show(2).AddChidren(closeView.Show()); closeView.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor; ///点击确认事件 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),//进度条父控件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 = 12,//显示百分比字体大小12 SeekBarViewHeight = Application.GetRealHeight(6),//进度条的高度10 SeekBarPadding=30, }; completeView.Show(2).AddChidren(horizontalSeekBarVol); EventHandler 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 seekIconBtn = new Button { Y = Application.GetRealHeight(140 + 160), X = Application.GetRealWidth(78), Height = Application.GetRealHeight(12), Width = Application.GetRealWidth(918 - 120), UnSelectedImagePath = "ZigeeLogic/seek.png", Gravity = Gravity.CenterHorizontal }; completeView.Show(2).AddChidren(seekIconBtn); var horizontalSeekBarVol = new 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 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; completeView.Show(2).AddChidren(openView.Show()); mFunView closeView = new mFunView(); closeView.frameLayout.Y = Application.GetRealHeight(140 + 20 + 160); closeView.titleBtn.TextID = MyInternationalizationString.close; completeView.Show(2).AddChidren(closeView.Show()); closeView.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor; ///点击确认事件 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 ShowMsgControl(ShowMsgType.Normal, Language.StringByID(MyInternationalizationString.selectdevicestatuscondition), Language.StringByID(MyInternationalizationString.confrim)); alert.Show(); return; } else { flMain.RemoveFromParent(); } } }; } public void DicValue(string str, Dictionary 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); } } } }