using System; using System.Collections.Generic; using System.Text; using ZigBee.Device; namespace Shared.Phone.UserCenter.DevicePanel { /// /// 控制面板的背光设置界面★ /// public class PanelBackLightSettionForm : UserCenterCommonForm { #region ■ 变量声明___________________________ /// /// 面板设备全部的回路 /// private List listPenlDevice = null; /// /// 亮度调节的信息 /// private Panel.PanelSwitchLevelInfo linghtLevelInfo = null; /// /// 节能模式 /// private Panel.PanelSaveEnergyModeInfo energyModeInfo = null; /// /// 面板新属性 /// private NewPanelInfo newPanelInfo = new NewPanelInfo(); #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 面板设备的全部回路 public void ShowForm(List i_listdevice) { UserView.HomePage.Instance.ScrollEnabled = false; this.listPenlDevice = i_listdevice; //设置标题信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uBackLightSettion)); //初始化中部控件 this.InitMiddleFrame(); } /// /// 初始化中部控件 /// private void InitMiddleFrame() { this.bodyFrameLayout.RemoveAll(); //获取设备功能信息,然后添加行 this.GetDeviceFunctionAndSetRow(); } /// /// 获取设备功能信息,然后添加行 /// private async void GetDeviceFunctionAndSetRow() { //开启进度条 this.ShowProgressBar(); Panel panel = null; //按键回路不可能为null,为null不会显示进入这个界面的菜单 foreach (var device in listPenlDevice) { if (device.Type == DeviceType.OnOffSwitch) { panel = (Panel)device; break; } } //检测控制面板(灯类)所拥有的功能 Dictionary dicCheck = await Common.LocalDevice.Current.CheckPanelLightFunctionLevel2(panel); if (dicCheck == null) { //关闭进度条 this.CloseProgressBar(ShowReLoadMode.YES); return; } if (dicCheck["亮度调节"] == true) { //获取亮度调节设置信息 this.linghtLevelInfo = await Common.LocalDevice.Current.GetPanelSwitchLightSettion(panel); if (linghtLevelInfo == null) { //关闭进度条 this.CloseProgressBar(ShowReLoadMode.YES); return; } Application.RunOnMainThread(() => { newPanelInfo.BacklightLevel = linghtLevelInfo.panelBacklightLevel; //添加【亮度调节】行 this.AddLightRegulationRow(); }); } if (dicCheck["节能模式"] == true) { //获取节能模式设置信息 this.energyModeInfo = await Common.LocalDevice.Current.GetPanelEnergyConservationMode(panel); if (energyModeInfo == null) { //关闭进度条 this.CloseProgressBar(ShowReLoadMode.YES); return; } Application.RunOnMainThread(() => { newPanelInfo.EnergyLevel = energyModeInfo.level; newPanelInfo.EnergyModeEnable = energyModeInfo.enable; //添加【节能模式】行 this.AddEnergyConservationRow(); }); } //关闭进度条 this.CloseProgressBar(); new System.Threading.Thread(() => { //保存设定值 this.StartSavePanelDataThread(panel); }) { IsBackground = true }.Start(); } #endregion #region ■ 亮度调节行_________________________ /// /// 添加【亮度调节】行 /// private void AddLightRegulationRow() { int YY = 0; var view = bodyFrameLayout.GetChildren(bodyFrameLayout.ChildrenCount - 1); if (view != null) { YY = view.Bottom; } var row = new RowLayout(); row.Y = YY; row.Height = ControlCommonResourse.ListViewRowHeight + ControlCommonResourse.NormalControlHeight; bodyFrameLayout.AddChidren(row); //亮度调节 var btnText = new ViewNormalControl(600, true); btnText.X = ControlCommonResourse.XXLeft; btnText.Y = Application.GetRealHeight(20); btnText.TextID = R.MyInternationalizationString.uLightRegulation; row.AddChidren(btnText); //进度控件 var btnProgress = new SeekBarFrameLayout(SeekBarTypeMode.OnlyPersent); btnProgress.Y = btnText.Bottom - Application.GetRealHeight(20); row.AddChidren(btnProgress); btnProgress.InitControl(); btnProgress.SetProgressDefultValue(linghtLevelInfo.panelBacklightLevel); btnProgress.ProgressValueEvent += ((value) => { //变更缓存 newPanelInfo.BacklightLevel = value; }); } #endregion #region ■ 色温调节行_________________________ /// /// 添加【色温调节】行 /// private void AddColorTemperatureRow() { int YY = 0; var view = bodyFrameLayout.GetChildren(bodyFrameLayout.ChildrenCount - 1); if (view != null) { YY = view.Bottom; } var row = new RowLayout(); row.Y = YY; row.Height = ControlCommonResourse.ListViewRowHeight + ControlCommonResourse.NormalControlHeight; bodyFrameLayout.AddChidren(row); //色温调节 var btnText = new ViewNormalControl(600, true); btnText.X = ControlCommonResourse.XXLeft; btnText.Y = Application.GetRealHeight(20); btnText.TextID = R.MyInternationalizationString.uColorTemperatureRegulation; row.AddChidren(btnText); //进度控件 var btnProgress = new SeekBarFrameLayout(SeekBarTypeMode.LeftAndRight); //较冷 btnProgress.SetLeftText(Language.StringByID(R.MyInternationalizationString.uMoreCold)); //较暖 btnProgress.SetRightText(Language.StringByID(R.MyInternationalizationString.uMoreWarm)); btnProgress.Y = btnText.Bottom - Application.GetRealHeight(20); row.AddChidren(btnProgress); btnProgress.InitControl(); } #endregion #region ■ 节能模式行_________________________ /// /// 添加【节能模式】行 /// private void AddEnergyConservationRow() { int YY = 0; var view = bodyFrameLayout.GetChildren(bodyFrameLayout.ChildrenCount - 1); if (view != null) { YY = view.Bottom; } var row = new RowLayout(); row.Y = YY; row.Height = ControlCommonResourse.ListViewRowHeight; bodyFrameLayout.AddChidren(row); //节能模式 var btnText = new RowCenterView(false); btnText.TextID = R.MyInternationalizationString.uEnergyConservationMode; row.AddChidren(btnText); //开关控件 var btnSwith = new SwichControl(); btnSwith.IsSelected = energyModeInfo.enable; row.AddChidren(btnSwith); btnSwith.MouseUpEventHandler += ((sender, e) => { //缓存值变更 newPanelInfo.EnergyModeEnable = !newPanelInfo.EnergyModeEnable; //特效变更 btnSwith.IsSelected = newPanelInfo.EnergyModeEnable; if (newPanelInfo.EnergyModeEnable == true) { row.Height = ControlCommonResourse.ListViewRowHeight * 2; } else { row.Height = ControlCommonResourse.ListViewRowHeight; } }); //因为如果不在内部控件初始化完成后实行这个的话,自定义控件的位置会变化 if (energyModeInfo.enable == true) { row.Height = ControlCommonResourse.ListViewRowHeight * 2; } //进度控件 var btnProgress = new SeekBarFrameLayout(SeekBarTypeMode.LeftAndRight); //较暗 btnProgress.SetLeftText(Language.StringByID(R.MyInternationalizationString.uMoreDark)); //较亮 btnProgress.SetRightText(Language.StringByID(R.MyInternationalizationString.uMoreLight)); btnProgress.Y = btnText.Bottom; row.AddChidren(btnProgress); btnProgress.InitControl(); btnProgress.SetProgressDefultValue(energyModeInfo.level); btnProgress.ProgressValueEvent += ((value) => { //缓存值变更 newPanelInfo.EnergyLevel = value; }); } #endregion #region ■ 保存设定值_________________________ /// /// 保存设定值 /// /// 按键面板的某一个回路 private async void StartSavePanelDataThread(Panel panel) { while (this.Parent != null) { await System.Threading.Tasks.Task.Delay(1000); //【亮度调节】值改变 if (linghtLevelInfo != null && linghtLevelInfo.panelBacklightLevel != newPanelInfo.BacklightLevel) { //不管成不成功都变更缓存 linghtLevelInfo.panelBacklightLevel = newPanelInfo.BacklightLevel; //执行保存 var result = await Common.LocalDevice.Current.SetPanelSwitchLightSettion(panel, linghtLevelInfo.panelDirectionsLevel, newPanelInfo.BacklightLevel); if (result == false) { continue; } } //【节能模式】值改变 if (energyModeInfo != null && (energyModeInfo.enable != newPanelInfo.EnergyModeEnable || energyModeInfo.level != newPanelInfo.EnergyLevel)) { //不管成不成功都变更缓存 energyModeInfo.level = newPanelInfo.EnergyLevel; energyModeInfo.enable = newPanelInfo.EnergyModeEnable; //执行保存 var result = await Common.LocalDevice.Current.SetPanelEnergyConservationMode(panel, newPanelInfo.EnergyModeEnable, energyModeInfo.time, newPanelInfo.EnergyLevel); if (result == false) { continue; } } } } #endregion #region ■ 界面关闭___________________________ /// /// 界面关闭 /// /// public override void CloseForm(bool isCloseForm = true) { UserView.HomePage.Instance.ScrollEnabled = true; base.CloseForm(isCloseForm); } #endregion #region ■ 结构体_____________________________ /// /// 面板新属性 /// private class NewPanelInfo { /// /// 背光灯亮度 0-100(ui叫亮度调节) /// public int BacklightLevel = 0; /// /// 节能模式是否有效 /// public bool EnergyModeEnable = false; /// /// 节能模式亮度:0-100 /// public int EnergyLevel = 0; } #endregion } }