New file |
| | |
| | | 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 = 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<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, 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<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
|
| | | }
|
| | | }
|