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