using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.DeviceAirConditioner
|
{
|
/// <summary>
|
/// 空调室内机设置界面
|
/// </summary>
|
public class IndoorUnitSettionForm : EditorCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 列表控件
|
/// </summary>
|
private FrameListControl listview = null;
|
/// <summary>
|
/// 当前选择的网关
|
/// </summary>
|
private AC deviceAc = null;
|
/// <summary>
|
/// 摆风模式(用二进制来玩自定义模式 0:不使用 1:使用)
|
/// </summary>
|
private int swingMode = 0;
|
/// <summary>
|
/// 固定预留的数据
|
/// </summary>
|
private string fixValue = null;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
/// <param name="i_deviceAc">选择的空调回路</param>
|
public void ShowForm(AC i_deviceAc)
|
{
|
this.deviceAc = i_deviceAc;
|
|
//设置标题信息
|
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uIndoorUnitSettion));
|
|
//初始化右上角菜单
|
this.InitTopRightMenu();
|
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
//开启进度条
|
this.ShowProgressBar();
|
//读取空调摆风模式
|
var result = this.ReadAirConditionerSwingModeSupport();
|
if (result == false)
|
{
|
//关闭进度条
|
this.CloseProgressBar(ShowReLoadMode.YES);
|
return;
|
}
|
//关闭进度条
|
this.CloseProgressBar();
|
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
//初始化中部控件
|
this.InitMiddleFrame();
|
});
|
});
|
}
|
|
/// <summary>
|
/// 初始化中部控件
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
//清空bodyFrame
|
this.ClearBodyFrame();
|
|
var listBackControl = new VerticalFrameControl();
|
listBackControl.Height = bodyFrameLayout.Height;
|
bodyFrameLayout.AddChidren(listBackControl);
|
|
//初始化桌布
|
var tableContr = new InformationEditorControl();
|
this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 1368);
|
|
//图片
|
var btnPic = new DeviceInfoIconControl();
|
btnPic.Y = Application.GetRealHeight(92);
|
btnPic.Gravity = Gravity.CenterHorizontal;
|
listBackControl.frameTable.AddChidren(btnPic);
|
btnPic.InitControl(this.deviceAc);
|
|
//设备备注
|
string caption = Language.StringByID(R.MyInternationalizationString.uDeviceNote);
|
string nameValue = Common.LocalDevice.Current.GetDeviceEpointName(deviceAc);
|
var btnNote = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2);
|
listview.AddChidren(btnNote);
|
btnNote.InitControl();
|
//划线
|
btnNote.AddBottomLine();
|
btnNote.txtInput.FinishInputEvent += () =>
|
{
|
string oldName = Common.LocalDevice.Current.GetDeviceEpointName(deviceAc);
|
if (btnNote.Text.Trim() == string.Empty)
|
{
|
//将名字还原
|
btnNote.Text = oldName;
|
}
|
if (oldName != btnNote.Text)
|
{
|
//设备名称修改
|
var result = Common.LocalDevice.Current.ReName(deviceAc, btnNote.Text);
|
if (result == false)
|
{
|
return;
|
}
|
//设备备注修改成功!
|
string msg = Language.StringByID(R.MyInternationalizationString.uDeviceReNoteSuccess);
|
this.ShowMassage(ShowMsgType.Tip, msg);
|
}
|
};
|
|
//设备类型
|
caption = Language.StringByID(R.MyInternationalizationString.uDeviceType);
|
nameValue = Common.LocalDevice.Current.GetDeviceObjectText(new List<CommonDevice>() { deviceAc });
|
var btnType = new FrameCaptionViewControl(caption, nameValue, listview.rowSpace / 2);
|
btnType.UseClickStatu = false;
|
listview.AddChidren(btnType);
|
btnType.InitControl();
|
//划线
|
btnType.AddBottomLine();
|
|
//所属区域
|
var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2);
|
listview.AddChidren(rowBeloneArea);
|
rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uBelongArea), deviceAc);
|
//底线
|
rowBeloneArea.AddBottomLine();
|
rowBeloneArea.SelectRoomEvent += (roomKeys) =>
|
{
|
HdlRoomLogic.Current.ChangedRoom(deviceAc, roomKeys);
|
};
|
|
//空调模式
|
var rowMode = new FrameRowControl(listview.rowSpace / 2);
|
listview.AddChidren(rowMode);
|
rowMode.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uAirConditionerMode), 600);
|
rowMode.AddRightArrow();
|
rowMode.AddBottomLine();
|
rowMode.ButtonClickEvent += (sender, e) =>
|
{
|
var form = new AirConditionerModeForm();
|
form.AddForm(deviceAc);
|
};
|
|
//摆风
|
var rowSwing = new FrameRowControl(listview.rowSpace / 2);
|
rowSwing.UseClickStatu = false;
|
listview.AddChidren(rowSwing);
|
rowSwing.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uAirConditionerSwing), 400);
|
rowSwing.AddBottomLine();
|
var btnSwingSwitch = rowSwing.AddMostRightSwitchIcon();
|
if (this.swingMode == 1)
|
{
|
btnSwingSwitch.IsSelected = true;
|
}
|
btnSwingSwitch.ButtonClickEvent += (sender, e) =>
|
{
|
//不能再点击
|
btnSwingSwitch.CanClick = false;
|
string statu = btnSwingSwitch.IsSelected == true ? "0" : "1";
|
//将二进制转换为十进制
|
int sendData = Convert.ToInt32(this.fixValue + statu, 2);
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
var result = HdlDeviceAirConditionerLogic.Current.SetUseAcSwingFunctionStatu(deviceAc, sendData);
|
if (result == true)
|
{
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
btnSwingSwitch.IsSelected = !btnSwingSwitch.IsSelected;
|
this.swingMode = this.swingMode == 1 ? 0 : 1;
|
|
deviceAc.UseSwingFunction = btnSwingSwitch.IsSelected;
|
deviceAc.ReSave();
|
});
|
}
|
//能够继续点击
|
btnSwingSwitch.CanClick = true;
|
});
|
};
|
|
//初始化桌布完成
|
tableContr.FinishInitControl();
|
tableContr = null;
|
|
//保存
|
var btnFinish = new BottomClickButton();
|
btnFinish.TextID = R.MyInternationalizationString.uSave;
|
bodyFrameLayout.AddChidren(btnFinish);
|
btnFinish.ButtonClickEvent += (sender, e) =>
|
{
|
string oldName = Common.LocalDevice.Current.GetDeviceEpointName(deviceAc);
|
if (oldName != btnNote.Text)
|
{
|
//设备名称修改
|
var result = Common.LocalDevice.Current.ReName(deviceAc, btnNote.Text);
|
if (result == false)
|
{
|
return;
|
}
|
}
|
this.CloseForm();
|
};
|
}
|
|
#endregion
|
|
#region ■ 右上角菜单_________________________
|
|
/// <summary>
|
/// 初始化右上角菜单
|
/// </summary>
|
private void InitTopRightMenu()
|
{
|
//检测此回路是否拥有定位功能(拿端点最小的那个回路去定位)
|
bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(deviceAc);
|
if (canTest == false)
|
{
|
return;
|
}
|
var btnIcon = new MostRightIconControl(69, 69);
|
btnIcon.UnSelectedImagePath = "Item/More.png";
|
topFrameLayout.AddChidren(btnIcon);
|
btnIcon.InitControl();
|
btnIcon.ButtonClickEvent += ((sender, e) =>
|
{
|
//显示右上角菜单界面
|
this.ShowTopRightMenu();
|
});
|
}
|
|
/// <summary>
|
/// 显示右上角菜单界面
|
/// </summary>
|
private void ShowTopRightMenu()
|
{
|
var frame = new TopRightMenuControl(1, 1);
|
//定位
|
var deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition);
|
frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () =>
|
{
|
//发送定位功能
|
Common.LocalDevice.Current.SetFixedPositionCommand(deviceAc);
|
});
|
}
|
|
#endregion
|
|
#region ■ 读取空调摆风模式___________________
|
|
/// <summary>
|
/// 读取空调摆风模式
|
/// </summary>
|
private bool ReadAirConditionerSwingModeSupport()
|
{
|
//如果是虚拟住宅
|
if (Common.Config.Instance.Home.IsVirtually == true)
|
{
|
var data = ModelData.DeviceModelDataLogic.Current.GetAcSwingModeSupport(deviceAc);
|
//转换为二进制
|
var value = Convert.ToString(data, 2).PadLeft(16, '0');
|
//这个设置是放在后面的
|
this.fixValue = value.Substring(0, value.Length - 1);
|
this.swingMode = Convert.ToInt32(value.Substring(this.fixValue.Length));
|
return true;
|
}
|
|
string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(deviceAc);
|
HdlGatewayReceiveLogic.Current.AddAttributeEvent("ReadAirConditionerModeSupport", ReceiveComandDiv.A设备属性上报, (report) =>
|
{
|
string checkKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
|
if (checkKeys != mainkeys || report.DeviceStatusReport.CluterID != 514)
|
{
|
return;
|
}
|
for (int i = 0; i < report.DeviceStatusReport.AttriBute.Count; i++)
|
{
|
var data = report.DeviceStatusReport.AttriBute[i];
|
if (data.AttributeId == 4097)
|
{
|
HdlGatewayReceiveLogic.Current.RemoveEvent("ReadAirConditionerModeSupport");
|
//转换为二进制
|
var value = Convert.ToString(data.AttriButeData, 2).PadLeft(16, '0');
|
//这个设置是放在后面的
|
this.fixValue = value.Substring(0, value.Length - 1);
|
this.swingMode = Convert.ToInt32(value.Substring(this.fixValue.Length));
|
}
|
}
|
});
|
//获取是否启用空调摆风模式的状态(打开 或者 关闭)
|
deviceAc.ReadUseSwingFunctionStatu();
|
|
int timeOut = 0;
|
while (this.fixValue == null && timeOut <= 30)
|
{
|
System.Threading.Thread.Sleep(100);
|
timeOut++;
|
}
|
if (this.fixValue == null)
|
{
|
//获取空调摆风状态失败
|
string msg = Language.StringByID(R.MyInternationalizationString.uGetAirConditionerSwingFunctionFail);
|
msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "回复超时");
|
this.ShowMassage(ShowMsgType.Tip, msg);
|
return false;
|
}
|
return true;
|
}
|
|
#endregion
|
}
|
}
|