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
}
}