using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.Safety
{
///
/// 空调类的安防报警设置界面
///
public class AlarmTargetStatuSelectAcForm : DialogCommonForm
{
#region ■ 变量声明___________________________
///
/// 结束选择的事件(key:全部状态的翻译文本)
///
public Action> FinishSelectEvent = null;
///
/// 动作信息
///
private Dictionary dicTaskinfo = new Dictionary();
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
///
///
public void ShowForm(CommonDevice device, List i_listTaskInfo)
{
if (i_listTaskInfo != null)
{
foreach (var data in i_listTaskInfo)
{
//以防万一,剔除不合法数据
if (data.TaskType == 5)
{
dicTaskinfo[data.Data1] = data;
}
}
}
//初始化中部信息
this.InitMiddleFrame(device);
}
///
/// 初始化中部信息
///
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 = Common.LocalDevice.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, ControlCommonResourse.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) - ControlCommonResourse.XXLeft;
rowOpen.RightOffset = ControlCommonResourse.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();
var listTemperatureStr = new List();
for (int i = 16; i <= 32; i++)
{
listTemperature.Add(i);
listTemperatureStr.Add($"{i} ℃");
}
//模式
var listMode = new List { 1, 3, 4, 7, 8 };
var listModeStr = new List {
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 { 1, 2, 3 };
var listFanStr = new List {
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, ControlCommonResourse.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) - ControlCommonResourse.XXLeft;
rowClose.RightOffset = ControlCommonResourse.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();
//关
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 ■ 界面关闭___________________________
///
/// 界面关闭
///
public override void CloseFormBefore()
{
this.FinishSelectEvent = null;
base.CloseFormBefore();
}
#endregion
}
}