using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.Safety
|
{
|
/// <summary>
|
/// 空调类的安防报警设置界面
|
/// </summary>
|
public class AlarmTargetStatuSelectAcForm : DialogCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 结束选择的事件(key:全部状态的翻译文本)
|
/// </summary>
|
public Action<string, List<Safeguard.TaskListInfo>> FinishSelectEvent = null;
|
/// <summary>
|
/// 动作信息
|
/// </summary>
|
private Dictionary<int, Safeguard.TaskListInfo> dicTaskinfo = new Dictionary<int, Safeguard.TaskListInfo>();
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
/// <param name="device"></param>
|
/// <param name="i_listTaskInfo"></param>
|
public void ShowForm(CommonDevice device, List<Safeguard.TaskListInfo> i_listTaskInfo)
|
{
|
if (i_listTaskInfo != null)
|
{
|
foreach (var data in i_listTaskInfo)
|
{
|
//以防万一,剔除不合法数据
|
if (data.TaskType == 5)
|
{
|
dicTaskinfo[data.Data1] = data;
|
}
|
}
|
}
|
|
//初始化中部信息
|
this.InitMiddleFrame(device);
|
}
|
|
/// <summary>
|
/// 初始化中部信息
|
/// </summary>
|
private void InitMiddleFrame(CommonDevice device)
|
{
|
//瞎搞的一个白框
|
var frameBack = new FrameLayout();
|
frameBack.BackgroundColor = UserCenterColor.Current.White;
|
frameBack.Height = Application.GetRealHeight(1092);
|
frameBack.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
|
frameBack.Gravity = Gravity.BottomCenter;
|
bodyFrameLayout.AddChidren(frameBack);
|
|
//头部信息
|
var btnTitle = new NormalViewControl(frameBack.Width, Application.GetRealHeight(65), false);
|
btnTitle.Y = Application.GetRealHeight(34);
|
btnTitle.Text = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device);
|
btnTitle.TextColor = UserCenterColor.Current.TextColor4;
|
btnTitle.TextSize = 16;
|
btnTitle.TextAlignment = TextAlignment.Center;
|
frameBack.AddChidren(btnTitle);
|
|
//取消
|
var btnCancel = new NormalViewControl(200, 60, true);
|
btnCancel.X = Application.GetRealWidth(81);
|
btnCancel.Y = Application.GetRealHeight(39);
|
btnCancel.TextColor = UserCenterColor.Current.TextGrayColor1;
|
btnCancel.TextID = R.MyInternationalizationString.uCancel;
|
frameBack.AddChidren(btnCancel);
|
btnCancel.ButtonClickEvent += (sender, e) =>
|
{
|
this.CloseForm();
|
};
|
|
//完成
|
var btnFinish = new NormalViewControl(200, 60, true);
|
btnFinish.X = Application.GetRealWidth(800);
|
btnFinish.Y = Application.GetRealHeight(39);
|
btnFinish.TextAlignment = TextAlignment.CenterRight;
|
btnFinish.TextColor = 0xfffb744a;
|
btnFinish.TextID = R.MyInternationalizationString.uFinish;
|
frameBack.AddChidren(btnFinish);
|
|
//线
|
var btnLine1 = new NormalViewControl(frameBack.Width, HdlControlResourse.BottomLineHeight, false);
|
btnLine1.Y = Application.GetRealHeight(138);
|
btnLine1.BackgroundColor = UserCenterColor.Current.ButtomLine;
|
frameBack.AddChidren(btnLine1);
|
|
//开
|
var rowOpen = new FrameRowControl();
|
rowOpen.Y = btnLine1.Bottom + Application.GetRealHeight(69);
|
rowOpen.LeftOffset = Application.GetRealWidth(81) - HdlControlResourse.XXLeft;
|
rowOpen.RightOffset = HdlControlResourse.XXLeft - Application.GetRealWidth(81);
|
frameBack.AddChidren(rowOpen);
|
var btnOpen = rowOpen.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uSimpleOpen), 400);
|
btnOpen.TextColor = UserCenterColor.Current.TextGrayColor3;
|
var btnOpenSelect = rowOpen.AddMostRightEmptyIcon(58, 58);
|
btnOpenSelect.UnSelectedImagePath = "Item/ItemSelected.png";
|
btnOpenSelect.Visible = false;
|
//底线
|
var btnOpenLine = rowOpen.AddBottomLine();
|
|
//空调配置选择空间
|
var pickerView = new UIPickerView();
|
pickerView.Y = rowOpen.Bottom;
|
pickerView.Height = Application.GetRealHeight(564);
|
frameBack.AddChidren(pickerView);
|
//这里加一个遮罩,让它不能点击
|
var framePickerShaw = new FrameLayout();
|
framePickerShaw.Y = pickerView.Y;
|
framePickerShaw.Height = pickerView.Height;
|
framePickerShaw.BackgroundColor = 0x60ffffff;
|
frameBack.AddChidren(framePickerShaw);
|
//恒温器 Data1(数值): 0加热/1制冷/2自动调节/3 设置工作模式/4 设置加热度数 5/设置制冷度数 6/设置风扇模式
|
//恒温器Data2数值如下:
|
//【当Data1=0|1|2时,Data2为要变化的度数,单位:0.1℃ 。】
|
//【若Data1=3,Data2为要设定的空调模式(0-9),0:off,1:auto,3:cool, 4:heat ,5:emergency heating, 6:precooling,7:fan only ,8:dry,9:sleep。】
|
//【若Data1=4|5,Data2为加热或制冷度数,单位0.01摄氏度。】
|
//【若Data1=6,Data2为要设定的风扇模式(0-6),0:off,1:low,2:medium,3:high,4:on,5:auto,6:smart】
|
var listTemperature = new List<int>();
|
var listTemperatureStr = new List<string>();
|
for (int i = 16; i <= 32; i++)
|
{
|
listTemperature.Add(i);
|
listTemperatureStr.Add($"{i} ℃");
|
}
|
//模式
|
var listMode = new List<int> { 1, 3, 4, 7, 8 };
|
var listModeStr = new List<string> {
|
Language.StringByID(R.MyInternationalizationString.Mode_Auto),
|
Language.StringByID(R.MyInternationalizationString.Mode_Cool),
|
Language.StringByID(R.MyInternationalizationString.Mode_Heat),
|
Language.StringByID(R.MyInternationalizationString.Mode_FanOnly),
|
Language.StringByID(R.MyInternationalizationString.Mode_Dry)
|
};
|
//风速
|
var listFan = new List<int> { 1, 2, 3 };
|
var listFanStr = new List<string> {
|
Language.StringByID(R.MyInternationalizationString.Fan_Low),
|
Language.StringByID(R.MyInternationalizationString.Fan_Middle),
|
Language.StringByID(R.MyInternationalizationString.Fan_Height)
|
};
|
pickerView.setNPicker(listTemperatureStr, listModeStr, listFanStr);
|
//空调控件默认为灰色
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextGrayColor1, 0);
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextGrayColor1, 1);
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextGrayColor1, 2);
|
|
//控件选择事件
|
int selectTemperatureIndex = 0;
|
int selectModelIndex = 0;
|
int selectFanIndex = 0;
|
pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
|
{
|
//更改索引
|
selectTemperatureIndex = value1;
|
selectModelIndex = value2;
|
selectFanIndex = value3;
|
};
|
//底线
|
var btnPickerLine = new NormalViewControl(btnOpenLine.Width, HdlControlResourse.BottomLineHeight, false);
|
btnPickerLine.X = btnOpenLine.X;
|
btnPickerLine.Y = pickerView.Bottom;
|
btnPickerLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
|
frameBack.AddChidren(btnPickerLine);
|
|
//关
|
var rowClose = new FrameRowControl();
|
rowClose.Y = btnPickerLine.Bottom + Application.GetRealHeight(12);
|
rowClose.LeftOffset = Application.GetRealWidth(81) - HdlControlResourse.XXLeft;
|
rowClose.RightOffset = HdlControlResourse.XXLeft - Application.GetRealWidth(81);
|
frameBack.AddChidren(rowClose);
|
var btnClose = rowClose.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uSimpleClose), 400);
|
btnClose.TextColor = UserCenterColor.Current.TextGrayColor3;
|
var btnCloseSelect = rowClose.AddMostRightEmptyIcon(58, 58);
|
btnCloseSelect.UnSelectedImagePath = "Item/ItemSelected.png";
|
btnCloseSelect.Visible = false;
|
|
//点击开
|
rowOpen.ButtonClickEvent += (sender, e) =>
|
{
|
if (btnOpenSelect.Visible == true)
|
{
|
//空调控件特效
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextGrayColor1, 0);
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextGrayColor1, 1);
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextGrayColor1, 2);
|
pickerView.setCurrentItems(selectTemperatureIndex, selectModelIndex, selectFanIndex);
|
framePickerShaw.Visible = true;
|
|
//取消,开 不可用
|
btnOpenSelect.Visible = false;
|
btnOpen.TextColor = UserCenterColor.Current.TextGrayColor3;
|
}
|
else
|
{
|
//空调控件特效
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextColor1, 0);
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextColor1, 1);
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextColor1, 2);
|
pickerView.setCurrentItems(selectTemperatureIndex, selectModelIndex, selectFanIndex);
|
framePickerShaw.Visible = false;
|
|
//选择图标切换
|
btnOpenSelect.Visible = true;
|
btnCloseSelect.Visible = false;
|
|
//开 可用
|
btnOpen.TextColor = UserCenterColor.Current.TextColor1;
|
//关 不可用
|
btnClose.TextColor = UserCenterColor.Current.TextGrayColor3;
|
}
|
};
|
//点击关
|
rowClose.ButtonClickEvent += (sender, e) =>
|
{
|
if (framePickerShaw.Visible == false)
|
{
|
//空调控件特效
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextGrayColor1, 0);
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextGrayColor1, 1);
|
pickerView.setTextColorCenter(UserCenterColor.Current.TextGrayColor1, 2);
|
pickerView.setCurrentItems(selectTemperatureIndex, selectModelIndex, selectFanIndex);
|
framePickerShaw.Visible = true;
|
}
|
if (btnCloseSelect.Visible == true)
|
{
|
//取消,关 不可用
|
btnCloseSelect.Visible = false;
|
btnClose.TextColor = UserCenterColor.Current.TextGrayColor3;
|
}
|
else
|
{
|
//选择图标切换
|
btnCloseSelect.Visible = true;
|
btnOpenSelect.Visible = false;
|
|
//关 可用
|
btnClose.TextColor = UserCenterColor.Current.TextColor1;
|
//开 不可用
|
btnOpen.TextColor = UserCenterColor.Current.TextGrayColor3;
|
}
|
};
|
|
//检测空调的打开状态 0:关闭 1:打开
|
int openStatu = -1;
|
foreach (var data1 in dicTaskinfo.Keys)
|
{
|
var Taskinfo = dicTaskinfo[data1];
|
if (data1 == 3)
|
{
|
if (Taskinfo.Data2 == 0)
|
{
|
//关状态
|
openStatu = 0;
|
}
|
else
|
{
|
//模式
|
selectModelIndex = listMode.IndexOf(Taskinfo.Data2);
|
openStatu = 1;
|
}
|
}
|
else if (data1 == 6)
|
{
|
//风速
|
selectFanIndex = listFan.IndexOf(Taskinfo.Data2);
|
openStatu = 1;
|
}
|
if (data1 == 4 || data1 == 5)
|
{
|
//温度
|
selectTemperatureIndex = listTemperature.IndexOf(Taskinfo.Data2 / 100);
|
openStatu = 1;
|
}
|
}
|
|
//设置开的默认值
|
if (openStatu == 1)
|
{
|
//设置空调的初始值
|
pickerView.setCurrentItems(selectTemperatureIndex, selectModelIndex, selectFanIndex);
|
rowOpen.ButtonClickEvent?.Invoke(null, null);
|
}
|
else if (openStatu == 0)
|
{
|
rowClose.ButtonClickEvent?.Invoke(null, null);
|
}
|
|
//完成事件
|
btnFinish.ButtonClickEvent += (sender, e) =>
|
{
|
var listData = new List<Safeguard.TaskListInfo>();
|
//关
|
if (btnCloseSelect.Visible == true)
|
{
|
var taskInfo = new Safeguard.TaskListInfo();
|
taskInfo.TaskType = 5;
|
taskInfo.Data1 = 3;
|
taskInfo.Data2 = 0;
|
listData.Add(taskInfo);
|
}
|
//开
|
else if (btnOpenSelect.Visible == true)
|
{
|
//送风
|
var taskInfo = new Safeguard.TaskListInfo();
|
taskInfo.TaskType = 5;
|
taskInfo.Data1 = 6;
|
taskInfo.Data2 = listFan[selectFanIndex];
|
listData.Add(taskInfo);
|
|
//模式
|
var taskInfo2 = new Safeguard.TaskListInfo();
|
taskInfo2.TaskType = 5;
|
taskInfo2.Data1 = 3;
|
taskInfo2.Data2 = listMode[selectModelIndex];
|
listData.Add(taskInfo2);
|
|
//温度
|
var taskInfo3 = new Safeguard.TaskListInfo();
|
taskInfo3.TaskType = 5;
|
taskInfo3.Data2 = listTemperature[selectTemperatureIndex] * 100;
|
//1:自动 3:制冷 4:制热 7:送风 8:除湿
|
|
//自动
|
if (listMode[selectModelIndex] == 1)
|
{
|
taskInfo3.Data1 = 7;
|
listData.Add(taskInfo3);
|
}
|
//制热
|
else if (listMode[selectModelIndex] == 4)
|
{
|
taskInfo3.Data1 = 4;
|
listData.Add(taskInfo3);
|
}
|
//制冷,除湿默认都是 制冷
|
else if (listMode[selectModelIndex] == 3 || listMode[selectModelIndex] == 8)
|
{
|
taskInfo3.Data1 = 5;
|
listData.Add(taskInfo3);
|
}
|
//送风没有温度的概念
|
}
|
|
//获取状态的显示文本
|
string statuText = HdlSafeguardLogic.Current.GetAdjustTargetStatuText(listData);
|
this.FinishSelectEvent(statuText, listData);
|
|
this.CloseForm();
|
};
|
}
|
|
#endregion
|
|
#region ■ 界面关闭___________________________
|
|
/// <summary>
|
/// 界面关闭
|
/// </summary>
|
public override void CloseFormBefore()
|
{
|
this.FinishSelectEvent = null;
|
base.CloseFormBefore();
|
}
|
|
#endregion
|
}
|
}
|