using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.DevicePanel
|
{
|
/// <summary>
|
/// 控制面板的背光设置界面★
|
/// </summary>
|
public class PanelBackLightSettionForm : UserCenterCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 面板设备全部的回路
|
/// </summary>
|
private List<CommonDevice> listPenlDevice = null;
|
/// <summary>
|
/// 亮度调节的信息
|
/// </summary>
|
private Panel.PanelSwitchLevelInfo linghtLevelInfo = null;
|
/// <summary>
|
/// 节能模式
|
/// </summary>
|
private Panel.PanelSaveEnergyModeInfo energyModeInfo = null;
|
/// <summary>
|
/// 面板新属性
|
/// </summary>
|
private NewPanelInfo newPanelInfo = new NewPanelInfo();
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
/// <param name="i_listdevice">面板设备的全部回路</param>
|
public void ShowForm(List<CommonDevice> i_listdevice)
|
{
|
UserView.HomePage.Instance.ScrollEnabled = false;
|
|
this.listPenlDevice = i_listdevice;
|
|
//设置标题信息
|
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uBackLightSettion));
|
|
//初始化中部控件
|
this.InitMiddleFrame();
|
}
|
|
/// <summary>
|
/// 初始化中部控件
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
this.bodyFrameLayout.RemoveAll();
|
|
//获取设备功能信息,然后添加行
|
this.GetDeviceFunctionAndSetRow();
|
}
|
|
/// <summary>
|
/// 获取设备功能信息,然后添加行
|
/// </summary>
|
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<string, bool> 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 ■ 亮度调节行_________________________
|
|
/// <summary>
|
/// 添加【亮度调节】行
|
/// </summary>
|
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 ■ 色温调节行_________________________
|
|
/// <summary>
|
/// 添加【色温调节】行
|
/// </summary>
|
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 ■ 节能模式行_________________________
|
|
/// <summary>
|
/// 添加【节能模式】行
|
/// </summary>
|
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 ■ 保存设定值_________________________
|
|
/// <summary>
|
/// 保存设定值
|
/// </summary>
|
/// <param name="panel">按键面板的某一个回路</param>
|
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 ■ 界面关闭___________________________
|
|
/// <summary>
|
/// 界面关闭
|
/// </summary>
|
/// <param name="isCloseForm"></param>
|
public override void CloseForm(bool isCloseForm = true)
|
{
|
UserView.HomePage.Instance.ScrollEnabled = true;
|
|
base.CloseForm(isCloseForm);
|
}
|
|
#endregion
|
|
#region ■ 结构体_____________________________
|
|
/// <summary>
|
/// 面板新属性
|
/// </summary>
|
private class NewPanelInfo
|
{
|
/// <summary>
|
/// 背光灯亮度 0-100(ui叫亮度调节)
|
/// </summary>
|
public int BacklightLevel = 0;
|
/// <summary>
|
/// 节能模式是否有效
|
/// </summary>
|
public bool EnergyModeEnable = false;
|
/// <summary>
|
/// 节能模式亮度:0-100
|
/// </summary>
|
public int EnergyLevel = 0;
|
}
|
|
#endregion
|
}
|
}
|