| | |
| | | |
| | | namespace Shared.Phone.UserView |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 主页 |
| | | /// </summary> |
| | | public class UserHomeView : FrameLayout, ZigBee.Common.IStatus |
| | | { |
| | | #region ◆ 变量____________________________ |
| | | /// <summary> |
| | | /// 设备是否在线标识--Online |
| | | /// </summary> |
| | | private readonly string deviceStatus_Online = "Online"; |
| | | /// <summary> |
| | | /// 设备状态开关标识--Switch |
| | | /// </summary> |
| | | private readonly string deviceStatus_OnOffStatus = "Switch"; |
| | | public class UserHomeView : EditorCommonForm |
| | | {
|
| | | #region ■ 变量声明___________________________ |
| | | |
| | | /// <summary> |
| | | /// 功能ScrolViewLayout |
| | | /// </summary> |
| | |
| | | /// 功能和场景bodyView |
| | | /// </summary> |
| | | private FrameLayout functionSceneBodyView; |
| | | |
| | | /// <summary> |
| | | /// The height of the room page view. -- 550 |
| | | /// </summary> |
| | | private static readonly int roomPageView_Height = 550; |
| | | /// <summary> |
| | | /// 功能卡片高度 --250 |
| | | /// </summary> |
| | | private static readonly int deviceFL_Height = 250; |
| | | /// <summary> |
| | | /// 功能按键 |
| | | /// </summary> |
| | | private Button functionBtn; |
| | | private NormalViewControl btnFunction; |
| | | |
| | | /// <summary> |
| | | /// 读取设备状态的线程列表 |
| | |
| | | /// </summary> |
| | | private bool sendedControlCommand = false; |
| | | |
| | | /// <summary> |
| | | /// 延时 300毫秒 |
| | | /// </summary> |
| | | private readonly int sleepSpan = 300; |
| | | |
| | | |
| | | private FrameLayout itemView = new FrameLayout(); |
| | | /// <summary> |
| | | /// floorBtn |
| | | /// btnFloor |
| | | /// </summary> |
| | | private Button floorBtn; |
| | | /// <summary> |
| | | /// timeDic |
| | | /// </summary> |
| | | private Dictionary<string, Timer> timerDic = new Dictionary<string, Timer> { }; |
| | | private NormalViewControl btnFloor; |
| | | /// <summary> |
| | | /// sceneScrolView |
| | | /// </summary> |
| | | private VerticalScrolViewLayout sceneScrolView ; |
| | | |
| | | private VerticalScrolViewLayout sceneScrolView; |
| | | |
| | | #endregion |
| | | |
| | | #region ◆ 接口____________________________ |
| | | |
| | | /// <summary> |
| | | /// 该接口将弃用 !!!!!! |
| | | /// 改用DeviceInfoChange() |
| | | /// </summary> |
| | | /// <returns>The changed.</returns> |
| | | /// <param name="common">Common.</param> |
| | | public void Changed(CommonDevice common) |
| | | { |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设备状态更新接口 |
| | | /// <para>type:如果为 DeviceInComingRespon:设备新上报</para> |
| | | /// <para>type:如果为 IASInfoReport:RemoveDeviceRespon</para> |
| | | /// <para>type:如果为 DeviceStatusReport:设备上报</para> |
| | | /// <para>type:如果为 IASInfoReport:IAS安防信息上报</para> |
| | | /// <para>type:如果为 OnlineStatusChange: 设备在线状态更新</para> |
| | | /// </summary> |
| | | /// <param name="common">Common.</param> |
| | | /// <param name="typeTag">Type tag.</param> |
| | | public void DeviceInfoChange(CommonDevice common, string typeTag) |
| | | {
|
| | | //设备上报状态中 当CluterID=3,就证明该设备在线,直接标记 |
| | | if (typeTag == "DeviceStatusReport")
|
| | | {
|
| | | Application.RunOnMainThread(() =>
|
| | | {
|
| | | try
|
| | | {
|
| | | if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0) |
| | | { |
| | | return; |
| | | } |
| | | for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++)
|
| | | {
|
| | | var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout;
|
| | | if (rowFL.ChildrenCount == 0)
|
| | | {
|
| | | //设备为空或者控件为空
|
| | | continue;
|
| | | }
|
| | |
|
| | | for (int j = 0; j < rowFL.ChildrenCount; j++) |
| | | { |
| | | var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI; |
| | | if (deviceUI == null || deviceUI.CommonDevice == null) |
| | | { |
| | | //设备为空或者控件为空 |
| | | continue; |
| | | } |
| | | if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint)
|
| | | {
|
| | | //判断是否为当前设备
|
| | | continue;
|
| | | }
|
| | | #region ■ 初始化_____________________________ |
| | |
|
| | | switch (deviceUI.CommonDevice.Type)
|
| | | {
|
| | | case DeviceType.OnOffOutput:
|
| | | //开关功能
|
| | | if (common.DeviceStatusReport.CluterID == 6)
|
| | | {
|
| | | var onOffOutputLight = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
|
| | | onOffOutputLight.DeviceStatusReport = common.DeviceStatusReport;
|
| | | onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData; |
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = onOffOutputLight.OnOffStatus == 1;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | onOffOutputLight.LastDateTime = DateTime.Now; |
| | | } |
| | | break;
|
| | | |
| | | case DeviceType.AirSwitch:
|
| | | //开关功能
|
| | | if (common.DeviceStatusReport.CluterID == 6)
|
| | | {
|
| | | var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
|
| | | airSwitch.DeviceStatusReport = common.DeviceStatusReport;
|
| | | airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData; |
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | airSwitch.LastDateTime = DateTime.Now; |
| | | }
|
| | | //当CluterID=3,就证明该设备在线,直接标记 |
| | | if (common.DeviceStatusReport.CluterID == 3) |
| | | { |
| | | deviceUI.CommonDevice.IsOnline = 1; |
| | | deviceUI.CommonDevice.LastDateTime = DateTime.Now; |
| | | } |
| | | break;
|
| | | |
| | | case DeviceType.WindowCoveringDevice:
|
| | | if (common.DeviceStatusReport.CluterID == 258) |
| | | { |
| | | if (common.DeviceStatusReport.AttriBute[0].AttributeId == 0) |
| | | { |
| | | //窗帘类型 |
| | | var rollerShade = deviceUI.CommonDevice as Rollershade; |
| | | rollerShade.DeviceStatusReport = common.DeviceStatusReport; |
| | | rollerShade.WcdType = common.DeviceStatusReport.AttriBute[0].AttriButeData; |
| | | rollerShade.LastDateTime = DateTime.Now; |
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100; |
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | } |
| | | if (common.DeviceStatusReport.AttriBute[0].AttributeId == 8) |
| | | { |
| | | //窗帘百分比 |
| | | var rollerShade = deviceUI.CommonDevice as Rollershade; |
| | | rollerShade.DeviceStatusReport = common.DeviceStatusReport; |
| | | rollerShade.WcdCurrentPositionLiftPercentage = common.DeviceStatusReport.AttriBute[0].AttriButeData; |
| | | rollerShade.LastDateTime = DateTime.Now; |
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100; |
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | } |
| | | } |
| | | if (common.DeviceStatusReport.CluterID == 3) |
| | | { |
| | | deviceUI.CommonDevice.IsOnline = 1; |
| | | deviceUI.CommonDevice.LastDateTime = DateTime.Now; |
| | | } |
| | | break;
|
| | | |
| | | case DeviceType.Thermostat: |
| | | //AC功能 |
| | | if (common.DeviceStatusReport.CluterID == 513) |
| | | { |
| | | var ac = deviceUI.CommonDevice as ZigBee.Device.AC; |
| | | ac.DeviceStatusReport = common.DeviceStatusReport; |
| | | var attriButeList = ac.DeviceStatusReport.AttriBute; |
| | | foreach (var attList in attriButeList) |
| | | { |
| | | var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default; |
| | | switch (attList.AttributeId) |
| | | { |
| | | case 0: |
| | | //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃ |
| | | ac.currentLocalTemperature = curTemp; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | case 17: |
| | | //此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。 |
| | | ac.currentCoolingSetpoint = curTemp; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | case 18: |
| | | //此属性表明此设备当前的制热温度,实际温度为“HeatingSetpoint / 100”,单位:℃。 |
| | | ac.currentHeatingSetpoint = curTemp; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | case 4096: |
| | | //此属性表明此设备当前的自动温度,实际温度为“AutoSetpoint / 100”,单位:℃。 |
| | | ac.currentAutoSetpoint = curTemp; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | |
| | | case 28: |
| | | //此属性描述恒温设备正处于哪种模式 |
| | | ac.currentSystemMode = attList.AttriButeData; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | } |
| | | } |
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0; |
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | } |
| | | if (common.DeviceStatusReport.CluterID == 514) |
| | | { |
| | | var ac = deviceUI.CommonDevice as ZigBee.Device.AC; |
| | | var attriButeList = common.DeviceStatusReport.AttriBute; |
| | | ac.DeviceStatusReport = common.DeviceStatusReport; |
| | | foreach (var attList in attriButeList) |
| | | { |
| | | switch (attList.AttributeId) |
| | | { |
| | | case 0: |
| | | ac.currentFanMode = attList.AttriButeData; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | case 4096: |
| | | ac.currentFanSwingMode = attList.AttriButeData; |
| | | ac.LastDateTime = DateTime.Now; |
| | | break; |
| | | } |
| | | } |
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0; |
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | } |
| | | //当CluterID=3,就证明该设备在线,直接标记 |
| | | if (common.DeviceStatusReport.CluterID == 3) |
| | | { |
| | | var ac = deviceUI.CommonDevice as AC; |
| | | ac.IsOnline = 1; |
| | | ac.LastDateTime = DateTime.Now; |
| | | } |
| | | break; |
| | | |
| | | case DeviceType.DimmableLight: |
| | | //调光灯功能 |
| | | if (common.DeviceStatusReport.CluterID == 6) |
| | | { |
| | | var dimmableLight = deviceUI.CommonDevice as DimmableLight; |
| | | dimmableLight.DeviceStatusReport = common.DeviceStatusReport; |
| | | dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData; |
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = dimmableLight.OnOffStatus == 1; |
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | dimmableLight.LastDateTime = DateTime.Now; |
| | | } |
| | | |
| | | //亮度 |
| | | if (common.DeviceStatusReport.CluterID == 8) |
| | | { |
| | | var dimmableLight = deviceUI.CommonDevice as DimmableLight; |
| | | dimmableLight.DeviceStatusReport = common.DeviceStatusReport; |
| | | var attriButeList = dimmableLight.DeviceStatusReport.AttriBute; |
| | | switch (attriButeList[0].AttributeId) |
| | | { |
| | | case 0: |
| | | //此属性表明当前亮度程度 |
| | | dimmableLight.Level = attriButeList[0].AttriButeData; |
| | | dimmableLight.LastDateTime = DateTime.Now; |
| | | //(rowFL.GetChildren(j) as FunctionMainView).IsSelected = true; |
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | case DeviceType.TemperatureSensor: |
| | | //温度 |
| | | if (common.DeviceStatusReport.CluterID == 1026) |
| | | { |
| | | var tempera = deviceUI.CommonDevice as TemperatureSensor; |
| | | foreach (var data in common.DeviceStatusReport.AttriBute) |
| | | { |
| | | if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) |
| | | { |
| | | if (data.AttriButeData == 0) |
| | | { |
| | | tempera.Temperatrue = 0; |
| | | } |
| | | else if (data.AttriButeData > 32767) |
| | | { |
| | | //负数(特殊处理) |
| | | string strValue = (data.AttriButeData - 65536).ToString(); |
| | | //小数点需要一位 |
| | | strValue = strValue.Substring(0, strValue.Length - 1); |
| | | tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); |
| | | } |
| | | else |
| | | { |
| | | //小数点需要一位 |
| | | string strValue = data.AttriButeData.ToString(); |
| | | strValue = strValue.Substring(0, strValue.Length - 1); |
| | | tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); |
| | | } |
| | | |
| | | tempera.LastDateTime = DateTime.Now; |
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | } |
| | | } |
| | | } |
| | | //湿度 |
| | | if (common.DeviceStatusReport.CluterID == 1029) |
| | | { |
| | | var tempera = deviceUI.CommonDevice as TemperatureSensor; |
| | | foreach (var data in common.DeviceStatusReport.AttriBute) |
| | | { |
| | | if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) |
| | | { |
| | | if (data.AttriButeData == 0) |
| | | { |
| | | tempera.Humidity = 0; |
| | | } |
| | | else |
| | | { |
| | | //小数点需要一位(湿度没有负数) |
| | | string strValue = data.AttriButeData.ToString(); |
| | | strValue = strValue.Substring(0, strValue.Length - 1); |
| | | tempera.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); |
| | | } |
| | | tempera.LastDateTime = DateTime.Now; |
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | }
|
| | | }
|
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | | System.Console.WriteLine($"Error:{ex.Message}");
|
| | | }
|
| | | });
|
| | | }
|
| | | else if (typeTag == "IASInfoReport") |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | try |
| | | { |
| | | for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++) |
| | | { |
| | | var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout; |
| | | if (rowFL.ChildrenCount == 0) |
| | | { |
| | | //设备为空或者控件为空 |
| | | continue; |
| | | } |
| | | |
| | | for (int j = 0; j < rowFL.ChildrenCount; j++) |
| | | { |
| | | var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI; |
| | | if (deviceUI == null || deviceUI.CommonDevice == null) |
| | | { |
| | | //设备为空或者控件为空 |
| | | continue; |
| | | } |
| | | if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint) |
| | | { |
| | | //判断是否为当前设备 |
| | | continue; |
| | | } |
| | | |
| | | switch (deviceUI.CommonDevice.Type) |
| | | { |
| | | case DeviceType.IASZone: |
| | | //ias |
| | | var ias = common as IASZone; |
| | | var iAS = deviceUI.CommonDevice as ZigBee.Device.IASZone; |
| | | iAS.iASInfo = ias.iASInfo; |
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = iAS.iASInfo?.Alarm1 == 1; |
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); |
| | | iAS.LastDateTime = DateTime.Now; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | System.Console.WriteLine($"Error:{ex.Message}"); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// Changeds the IL ogic status. |
| | | /// 界面显示 |
| | | /// </summary> |
| | | /// <param name="logic">Logic.</param> |
| | | public void ChangedILogicStatus(ZigBee.Device.Logic logic) |
| | | public void ShowForm() |
| | | { |
| | | //throw new NotImplementedException(); |
| | | } |
| | | /// <summary> |
| | | /// Changeds the IS cene status. |
| | | /// </summary> |
| | | /// <param name="scene">Scene.</param> |
| | | public void ChangedISceneStatus(Scene scene) |
| | | { |
| | | //throw new NotImplementedException(); |
| | | } |
| | | #endregion |
| | | |
| | | #region ◆ 初始化__________________________ |
| | | |
| | | /// <summary> |
| | | /// Removes from parent. |
| | | /// </summary> |
| | | public override void RemoveFromParent() |
| | | { |
| | | RemoveStatuList(); |
| | | base.RemoveFromParent(); |
| | | } |
| | | |
| | | private void RemoveStatuList() |
| | | { |
| | | ZbGateway.StatusList.Remove(this); |
| | | RemoveAllUpdateControlDeviceStatuAction(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 主页 --我的家 |
| | | /// </summary> |
| | | public UserHomeView() |
| | | { |
| | | ZbGateway.StatusList.Add(this); |
| | | BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 显示界面 |
| | | /// </summary> |
| | | public void Show() |
| | | { |
| | | this.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; |
| | | //清除全部 |
| | | this.RemoveAll(); |
| | | //初始化头部控件 |
| | | this.InitTopFrameLayoutControl(); |
| | | //初始化中间控件 |
| | | this.InitMidFrameLayoutControl();
|
| | | //添加设备状态上报事件
|
| | | this.AddDeviceReportEvent();
|
| | | } |
| | | |
| | | #region topview |
| | | var topFrameLayout = new FrameLayout() |
| | | { |
| | | Y = Application.GetRealHeight(60), |
| | | Height = Application.GetRealHeight(127), |
| | | BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor, |
| | | }; |
| | | AddChidren(topFrameLayout); |
| | | |
| | | var floor = new Button |
| | | { |
| | | X = Application.GetRealWidth(CommonFormResouce.X_Left), |
| | | Width = Application.GetMinRealAverage(69), |
| | | Height = Application.GetMinRealAverage(69), |
| | | Gravity = Gravity.CenterVertical, |
| | | UnSelectedImagePath = "Item/Floor.png" |
| | | }; |
| | | /// <summary>
|
| | | /// 初始化头部控件
|
| | | /// </summary> |
| | | private void InitTopFrameLayoutControl()
|
| | | { |
| | | //头部容器 |
| | | base.topFrameLayout = new FrameLayout();
|
| | | topFrameLayout.Y = Application.GetRealHeight(60); |
| | | topFrameLayout.Height = Application.GetRealHeight(127); |
| | | topFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; |
| | | this.AddChidren(topFrameLayout);
|
| | |
|
| | | //拥有楼层 |
| | | if (Config.Instance.Home.FloorDics.Count > 0) |
| | | { |
| | | topFrameLayout.AddChidren(floor); |
| | | {
|
| | | //楼层图标
|
| | | var btnFloorIcon = new IconViewControl(69);
|
| | | btnFloorIcon.X = ControlCommonResourse.XXLeft;
|
| | | btnFloorIcon.Gravity = Gravity.CenterVertical;
|
| | | btnFloorIcon.UnSelectedImagePath = "Item/Floor.png"; |
| | | topFrameLayout.AddChidren(btnFloorIcon); |
| | | btnFloorIcon.ButtonClickEvent += (sender, e) =>
|
| | | {
|
| | | //显示选择楼层的界面
|
| | | this.ShowSelectFloorForm();
|
| | | }; |
| | | //楼层名 |
| | | this.btnFloor = new NormalViewControl(500, 100, true);
|
| | | btnFloor.X = btnFloorIcon.Right;
|
| | | btnFloor.Gravity = Gravity.CenterVertical;
|
| | | btnFloor.TextColor = ZigbeeColor.Current.GXCTextColor;
|
| | | btnFloor.Text = Config.Instance.Home.GetCurrentFloorName;
|
| | | btnFloor.IsBold = true;
|
| | | topFrameLayout.AddChidren(btnFloor); |
| | | btnFloor.ButtonClickEvent += (sender, e) =>
|
| | | {
|
| | | //显示选择楼层的界面
|
| | | this.ShowSelectFloorForm();
|
| | | }; |
| | | } |
| | | |
| | | floorBtn = new Button |
| | | //安防快捷方式 |
| | | if (UserCenterResourse.ResidenceOption.SafetyShortcut) |
| | | { |
| | | X = floor.Right, |
| | | Width = Application.GetRealWidth(500), |
| | | Height = Application.GetRealHeight(100), |
| | | Gravity = Gravity.CenterVertical, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = ZigbeeColor.Current.GXCTextColor, |
| | | Text = Config.Instance.Home.GetCurrentFloorName, |
| | | IsBold = true, |
| | | TextSize = 14 |
| | | }; |
| | | if (Config.Instance.Home.FloorDics.Count > 0) |
| | | { |
| | | topFrameLayout.AddChidren(floorBtn); |
| | | var btnSafety = new SafetyShortcutControl(); |
| | | btnSafety.X = Application.GetRealWidth(860); |
| | | btnSafety.Gravity = Gravity.CenterVertical; |
| | | topFrameLayout.AddChidren(btnSafety); |
| | | } |
| | | //消息图标 |
| | | var btnMessage = new MessageManagementControl(); |
| | | btnMessage.X = Application.GetRealWidth(953); |
| | | btnMessage.Gravity = Gravity.CenterVertical; |
| | | btnMessage.UnSelectedImagePath = "Item/Message.png"; |
| | | btnMessage.SelectedImagePath = "Item/MessageSelected.png"; |
| | | topFrameLayout.AddChidren(btnMessage); |
| | | |
| | | if(UserCenterResourse.Option.SafetyShortcut) |
| | | { |
| | | var safetyBtn = new SafetyShortcutControl(); |
| | | safetyBtn.X = Application.GetRealWidth(860); |
| | | safetyBtn.Gravity = Gravity.CenterVertical; |
| | | topFrameLayout.AddChidren(safetyBtn); |
| | | } |
| | | //住宅名字 |
| | | var btnHouseName = new NormalViewControl(700, 95, true); |
| | | btnHouseName.X = ControlCommonResourse.XXLeft; |
| | | btnHouseName.Y = Application.GetRealHeight(161);
|
| | | btnHouseName.TextSize = 24;
|
| | | btnHouseName.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor;
|
| | | btnHouseName.IsBold = true; |
| | | btnHouseName.Text = Config.Instance.Home.Name;
|
| | | this.AddChidren(btnHouseName); |
| | | |
| | | var messageBtn = new MessageManagementControl(); |
| | | messageBtn.X = Application.GetRealWidth(953); |
| | | messageBtn.Gravity = Gravity.CenterVertical; |
| | | messageBtn.UnSelectedImagePath = "Item/Message.png"; |
| | | messageBtn.SelectedImagePath = "Item/MessageSelected.png"; |
| | | topFrameLayout.AddChidren(messageBtn); |
| | | |
| | | var residecneName = new Button() |
| | | { |
| | | X = Application.GetRealWidth(CommonFormResouce.X_Left), |
| | | Y = Application.GetRealHeight(161), |
| | | Width = Application.GetRealWidth(700), |
| | | Height = Application.GetRealHeight(95), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Text = Config.Instance.Home.Name ?? Language.StringByID(R.MyInternationalizationString.TheResidenceNameNull), |
| | | TextSize = 24, |
| | | TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor, |
| | | IsBold=true |
| | | }; |
| | | if (Config.Instance.Home.IsOthreShare) |
| | | { |
| | | residecneName.Text = $"{Config.Instance.Home.Name}"; |
| | | } |
| | | AddChidren(residecneName); |
| | | |
| | | floor.MouseUpEventHandler += SelectFloor; |
| | | floorBtn.MouseUpEventHandler += SelectFloor; |
| | | //切换住宅 |
| | | residecneName.MouseLongEventHandler += (send, e) => |
| | | btnHouseName.MouseLongEventHandler += (sender, e) => |
| | | { |
| | | var tempHomeBtn = send as Button; |
| | | if (Config.Instance.HomeFilePathList.Count == 0) |
| | | { |
| | | var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.Confrim)); |
| | | alert.Show(); |
| | | alert.ResultEventHandler += (senderHouse, eHouse) => |
| | | { |
| | | if (eHouse) |
| | | { |
| | | return; |
| | | } |
| | | }; |
| | | //当前住宅为空,请先建立住宅 |
| | | this.ShowMassage(ShowMsgType.Remind, Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst)); |
| | | } |
| | | else |
| | | { |
| | |
| | | ChangeResidence(House.GetHouseByHouseId(houseId)); |
| | | }; |
| | | } |
| | | }; |
| | | |
| | | #endregion |
| | | |
| | | if (CanBindGateway() == false) |
| | | };
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 初始化中间控件
|
| | | /// </summary>
|
| | | private void InitMidFrameLayoutControl()
|
| | | {
|
| | | //检测是否绑定有网关
|
| | | if (this.CheckHadBindGateway() == false)
|
| | | {
|
| | | //显示没有绑定过网关的界面
|
| | | this.ShowNoGatewayTip();
|
| | | } |
| | | else |
| | | { |
| | | |
| | | var roomPageView = new HorizontalPages() |
| | | { |
| | | Y = Application.GetRealHeight(302), |
| | | Width = Application.GetRealWidth(CommonPage.AppRealWidth), |
| | | Height = Application.GetRealHeight(478), |
| | | }; |
| | | AddChidren(roomPageView); |
| | | var roomPageView = new HorizontalPages();
|
| | | roomPageView.Y = Application.GetRealHeight(302);
|
| | | roomPageView.Width = Application.GetRealWidth(CommonPage.AppRealWidth);
|
| | | roomPageView.Height = Application.GetRealHeight(478); |
| | | this.AddChidren(roomPageView); |
| | | //突出边距 |
| | | roomPageView.TCBJ = Application.GetRealWidth(181); |
| | | //两个page之间的间距 |
| | | roomPageView.JMBJ = Application.GetRealWidth(0); |
| | | |
| | | //当前房间 |
| | | var rList = Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom(); |
| | | Room.CurrentRoom = Room.CurrentRoom ?? rList[0]; |
| | | var rList = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom(); |
| | | foreach (var room in rList) |
| | | { |
| | | var roomView = new Device.CommonForm.RoomView(0, 0); |
| | |
| | | roomView.HideName(true); |
| | | roomView.action += () => |
| | | { |
| | | Show(); |
| | | this.ShowForm(); |
| | | }; |
| | | } |
| | | var curIndex = rList.FindIndex((obj) => obj.Id == Room.CurrentRoom.Id); |
| | | //设置房间的初始选择 |
| | | var curIndex = rList.FindIndex((obj) => obj.Id == HdlRoomLogic.Current.CurrentRoom.Id); |
| | | roomPageView.PageIndex = curIndex; |
| | | if (roomPageView.GetChildren(roomPageView.PageIndex) != null) |
| | | { |
| | | (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false); |
| | | |
| | | } |
| | | |
| | | var functionSceneView = new FrameLayout() |
| | | { |
| | | Y = Application.GetRealHeight(861), |
| | | Width = Application.GetRealWidth(832), |
| | | Height = Application.GetRealHeight(167), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | BackgroundImagePath = "Item/SceneFunctionBG.png" |
| | | }; |
| | | AddChidren(functionSceneView); |
| | | |
| | | //场景 |
| | | var sceneBtn = new Button() |
| | | { |
| | | X = Application.GetRealWidth(30), |
| | | Y = Application.GetRealHeight(12), |
| | | Width = Application.GetRealWidth(350), |
| | | Height = Application.GetRealHeight(100), |
| | | TextColor = ZigbeeColor.Current.GXCTextGrayColor3, |
| | | SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor, |
| | | TextID = R.MyInternationalizationString.Scence, |
| | | IsSelected = true, |
| | | TextSize=16, |
| | | IsBold=true |
| | | }; |
| | | functionSceneView.AddChidren(sceneBtn); |
| | | |
| | | //场景 |
| | | functionBtn = new Button() |
| | | { |
| | | X = Application.GetRealWidth(430), |
| | | Y = Application.GetRealHeight(12), |
| | | Width = Application.GetRealWidth(360), |
| | | Height = Application.GetRealHeight(100), |
| | | TextColor = ZigbeeColor.Current.GXCTextGrayColor3, |
| | | SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor, |
| | | TextID = R.MyInternationalizationString.Function, |
| | | IsSelected = false, |
| | | TextSize=14 |
| | | }; |
| | | functionSceneView.AddChidren(functionBtn); |
| | | |
| | | //功能和场景bodyView |
| | | functionSceneBodyView = new FrameLayout() |
| | | { |
| | | Y = functionSceneView.Bottom, |
| | | Height = Application.GetRealHeight(750), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor |
| | | }; |
| | | AddChidren(functionSceneBodyView); |
| | | |
| | | //选择功能分栏 |
| | | functionBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | sceneBtn.IsSelected = false; |
| | | functionBtn.IsSelected = true; |
| | | sceneBtn.TextSize = 14; |
| | | sceneBtn.IsBold = false; |
| | | functionBtn.TextSize = 16; |
| | | functionBtn.IsBold = true; |
| | | RefreshBodyView(); |
| | | }; |
| | | //选择场景分栏 |
| | | sceneBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | functionBtn.IsSelected = false; |
| | | sceneBtn.IsSelected = true; |
| | | sceneBtn.TextSize = 16; |
| | | sceneBtn.IsBold = true; |
| | | functionBtn.TextSize = 14; |
| | | functionBtn.IsBold = false; |
| | | RefreshBodyView(); |
| | | }; |
| | | |
| | | RefreshBodyView(); |
| | | |
| | | }
|
| | | roomPageView.PageChange += (sender, e) => |
| | | { |
| | | if(roomPageView.GetChildren(roomPageView.PageIndex - 1) !=null) |
| | | if (roomPageView.GetChildren(roomPageView.PageIndex - 1) != null) |
| | | { |
| | | (roomPageView.GetChildren(roomPageView.PageIndex - 1) as RoomView).HideName(true); |
| | | } |
| | |
| | | (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false); |
| | | } |
| | | //切换当前房间 |
| | | Room.CurrentRoom = rList[roomPageView.PageIndex]; |
| | | RefreshBodyView(); |
| | | |
| | | HdlRoomLogic.Current.CurrentRoom = rList[roomPageView.PageIndex]; |
| | | //刷新设备桌布控件 |
| | | this.RefreshBodyView(); |
| | | }; |
| | | } |
| | | else |
| | | { |
| | | ShowNoGatewayTip(); |
| | | } |
| | | |
| | | //功能和场景的背景图 |
| | | var functionSceneView = new FrameLayout();
|
| | | functionSceneView.Y = Application.GetRealHeight(861);
|
| | | functionSceneView.Width = Application.GetRealWidth(832);
|
| | | functionSceneView.Height = Application.GetRealHeight(167);
|
| | | functionSceneView.Gravity = Gravity.CenterHorizontal;
|
| | | functionSceneView.BackgroundImagePath = "Item/SceneFunctionBG.png"; |
| | | this.AddChidren(functionSceneView); |
| | | |
| | | //场景 |
| | | var btnScene = new NormalViewControl(350, 100, true);
|
| | | btnScene.X = Application.GetRealWidth(30);
|
| | | btnScene.Y = Application.GetRealHeight(12);
|
| | | btnScene.TextColor = ZigbeeColor.Current.GXCTextGrayColor3; |
| | | btnScene.SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor;
|
| | | btnScene.TextID = R.MyInternationalizationString.Scence;
|
| | | btnScene.IsSelected = true;
|
| | | btnScene.TextSize = 16;
|
| | | btnScene.IsBold = true; |
| | | btnScene.TextAlignment = TextAlignment.Center; |
| | | functionSceneView.AddChidren(btnScene);
|
| | |
|
| | | } |
| | | //功能
|
| | | btnFunction = new NormalViewControl(360, 100, true);
|
| | | btnFunction.X = Application.GetRealWidth(430);
|
| | | btnFunction.Y = Application.GetRealHeight(12);
|
| | | btnFunction.TextColor = ZigbeeColor.Current.GXCTextGrayColor3;
|
| | | btnFunction.SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor;
|
| | | btnFunction.TextID = R.MyInternationalizationString.Function;
|
| | | btnFunction.IsSelected = false;
|
| | | btnFunction.TextAlignment = TextAlignment.Center; |
| | | functionSceneView.AddChidren(btnFunction); |
| | | |
| | | #endregion |
| | | //功能和场景bodyView |
| | | functionSceneBodyView = new FrameLayout() |
| | | { |
| | | Y = functionSceneView.Bottom, |
| | | Height = Application.GetRealHeight(750), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor |
| | | }; |
| | | this.AddChidren(functionSceneBodyView); |
| | | |
| | | #region ◆ 刷新____________________________ |
| | | /// <summary> |
| | | /// RefreshBodyView |
| | | /// </summary> |
| | | public void RefreshBodyView() |
| | | { |
| | | functionSceneBodyView.RemoveAll(); |
| | | if (functionBtn.IsSelected) |
| | | { |
| | | ShowFunction(); |
| | | } |
| | | else |
| | | { |
| | | ShowScene(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// SelectFloor |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="mouseEventArgs"></param> |
| | | public void SelectFloor(object sender, MouseEventArgs mouseEventArgs) |
| | | { |
| | | var floorFL = new Phone.Device.Category.SelectFloor(); |
| | | AddChidren(floorFL); |
| | | floorFL.Init(35, 153); |
| | | floorFL.changeFloor = true; |
| | | floorFL.FloorAction = (floorId) => |
| | | { |
| | | floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId); |
| | | Common.Room.CurrentRoom = Common.Room.CurrentRoom?.GetLoveRoom(); |
| | | Show(); |
| | | }; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ◆ 检测是否绑定了网关________________ |
| | | |
| | | /// <summary> |
| | | /// 当没有绑定网关时,是否有权限添加网关 |
| | | /// </summary> |
| | | /// <returns><c>true</c>, if bing gateway was caned, <c>false</c> otherwise.</returns> |
| | | private bool CanBindGateway() |
| | | { |
| | | if (HadBindGateway() == false && (UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 2)) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 是否绑定了网关 |
| | | /// </summary> |
| | | /// <returns><c>true</c>, if bind gateway was haded, <c>false</c> otherwise.</returns> |
| | | private bool HadBindGateway() |
| | | { |
| | | var gatewayList = UserCenter.HdlGatewayLogic.Current.GetAllLocalGateway(); |
| | | if (gatewayList.Count == 0) |
| | | { |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | //选择功能分栏 |
| | | btnFunction.ButtonClickEvent += (sender, e) => |
| | | { |
| | | btnScene.IsSelected = false; |
| | | btnFunction.IsSelected = true; |
| | | btnScene.TextSize = 14; |
| | | btnScene.IsBold = false; |
| | | btnFunction.TextSize = 16; |
| | | btnFunction.IsBold = true; |
| | | //刷新设备桌布控件 |
| | | this.RefreshBodyView(); |
| | | }; |
| | | //选择场景分栏 |
| | | btnScene.ButtonClickEvent += (sender, e) => |
| | | { |
| | | btnFunction.IsSelected = false; |
| | | btnScene.IsSelected = true; |
| | | btnScene.TextSize = 16; |
| | | btnScene.IsBold = true; |
| | | btnFunction.TextSize = 14; |
| | | btnFunction.IsBold = false; |
| | | this.RefreshBodyView(); |
| | | }; |
| | | //刷新设备桌布控件 |
| | | this.RefreshBodyView(); |
| | | }
|
| | | }
|
| | |
|
| | | /// <summary> |
| | | /// 提示用户没有网关,并快速跳转到添加网关界面 |
| | | /// </summary> |
| | | private void ShowNoGatewayTip() |
| | | { |
| | | var bg = new Button |
| | | { |
| | | Y = Application.GetRealHeight(302), |
| | | Width = Application.GetMinRealAverage(717), |
| | | Height = Application.GetMinRealAverage(478), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | UnSelectedImagePath = "Item/NoBindGW.png" |
| | | var bg = new PicViewControl(717, 478); |
| | | bg.Y = Application.GetRealHeight(302);
|
| | | bg.Gravity = Gravity.CenterHorizontal;
|
| | | bg.UnSelectedImagePath = "Item/NoBindGW.png"; |
| | | this.AddChidren(bg); |
| | | |
| | | var tip = new NormalViewControl(Application.GetMinRealAverage(717), Application.GetMinRealAverage(58), false);
|
| | | tip.Y = Application.GetRealHeight(815); |
| | | tip.Gravity = Gravity.CenterHorizontal;
|
| | | tip.TextID = R.MyInternationalizationString.NewAccountNeedBingGW;
|
| | | tip.TextColor = ZigbeeColor.Current.GXCTextGrayColor; |
| | | tip.TextAlignment = TextAlignment.Center; |
| | | this.AddChidren(tip); |
| | | |
| | | var addBG = new PicViewControl(971, 366);
|
| | | addBG.Y = Application.GetRealHeight(1048); |
| | | addBG.UnSelectedImagePath = "Item/VirtualFrame.png"; |
| | | addBG.Gravity = Gravity.CenterHorizontal; |
| | | this.AddChidren(addBG); |
| | | |
| | | var addGatewayBtn = new IconViewControl(89);
|
| | | addGatewayBtn.Y = Application.GetRealHeight(1143);
|
| | | addGatewayBtn.UnSelectedImagePath = "Item/Add_GW.png";
|
| | | addGatewayBtn.Gravity = Gravity.CenterHorizontal; |
| | | this.AddChidren(addGatewayBtn); |
| | | addGatewayBtn.ButtonClickEvent += (sender, e) => |
| | | {
|
| | | var form = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm();
|
| | | form.AddForm();
|
| | | }; |
| | | AddChidren(bg); |
| | | |
| | | var tip = new Button |
| | | { |
| | | Y = Application.GetRealHeight(815), |
| | | Width = Application.GetMinRealAverage(717), |
| | | Height = Application.GetMinRealAverage(58), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | TextID = R.MyInternationalizationString.NewAccountNeedBingGW, |
| | | TextColor = ZigbeeColor.Current.GXCTextGrayColor |
| | | var addTip = new PicViewControl(717, 58);
|
| | | addTip.Y = Application.GetRealHeight(1256);
|
| | | addTip.Gravity = Gravity.CenterHorizontal;
|
| | | addTip.TextID = R.MyInternationalizationString.AddSmartGW;
|
| | | addTip.TextColor = ZigbeeColor.Current.GXCTextBlackColor; |
| | | addTip.TextAlignment = TextAlignment.Center; |
| | | AddChidren(addTip);
|
| | |
|
| | | addTip.ButtonClickEvent += (sender, e) => |
| | | {
|
| | | var form = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm();
|
| | | form.AddForm();
|
| | | }; |
| | | AddChidren(tip); |
| | | |
| | | var addBG = new Button |
| | | { |
| | | Y = Application.GetRealHeight(1048), |
| | | Height = Application.GetMinRealAverage(366), |
| | | Width = Application.GetMinRealAverage(971), |
| | | UnSelectedImagePath = "Item/VirtualFrame.png", |
| | | Gravity = Gravity.CenterHorizontal |
| | | }; |
| | | AddChidren(addBG); |
| | | |
| | | var addGatewayBtn = new Button() |
| | | { |
| | | Y = Application.GetRealHeight(1143), |
| | | Height = Application.GetMinRealAverage(89), |
| | | Width = Application.GetMinRealAverage(89), |
| | | UnSelectedImagePath = "Item/Add_GW.png", |
| | | Gravity = Gravity.CenterHorizontal |
| | | }; |
| | | AddChidren(addGatewayBtn); |
| | | addGatewayBtn.MouseUpEventHandler += GoToAddGateWay; |
| | | |
| | | var addTip = new Button |
| | | { |
| | | Y = Application.GetRealHeight(1256), |
| | | Width = Application.GetMinRealAverage(717), |
| | | Height = Application.GetMinRealAverage(58), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | TextID = R.MyInternationalizationString.AddSmartGW, |
| | | TextColor = ZigbeeColor.Current.GXCTextBlackColor |
| | | }; |
| | | AddChidren(addTip); |
| | | addTip.MouseUpEventHandler += GoToAddGateWay; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 前往添加网关界面 |
| | | /// </summary> |
| | | /// <param name="sender">Sender.</param> |
| | | /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> |
| | | private void GoToAddGateWay(object sender, MouseEventArgs mouseEventArgs) |
| | | { |
| | | var selectNewGateWayForm = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm { }; |
| | | selectNewGateWayForm.AddForm(); |
| | | } |
| | | |
| | | }
|
| | |
|
| | | #endregion |
| | | |
| | | #region ◆ 功能_____________________________ |
| | | |
| | |
|
| | | #region ■ 功能分支___________________________ |
| | |
|
| | | /// <summary> |
| | | /// 显示没有功能 |
| | | /// </summary> |
| | |
| | | Height = Application.GetRealHeight(200), |
| | | Text = Language.StringByID(R.MyInternationalizationString.NoFunction_Tip).Replace("{\\r\\n}", "\r\n"), |
| | | TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, |
| | | TextAlignment=TextAlignment.Center, |
| | | TextAlignment = TextAlignment.Center, |
| | | IsMoreLines = true |
| | | }; |
| | | functionSceneBodyView.AddChidren(noFunctionTip); |
| | |
| | | private void ShowFunction() |
| | | { |
| | | functionSceneBodyView.RemoveAll(); |
| | | //选择功能--直接从房间的devicelist中获取 |
| | | var deviceList = Room.CurrentRoom.DeviceUIList; |
| | | if (deviceList == null) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if (deviceList.Count == 0) |
| | | //当前房间的设备数 |
| | | if (HdlRoomLogic.Current.CurrentRoom.ListDevice.Count == 0) |
| | | { |
| | | ShowNoFunctionTip(); |
| | | } |
| | | else |
| | | { |
| | | var dList = new List<DeviceUI> { }; |
| | | foreach(var device in deviceList) |
| | | var dList = new List<CommonDevice>(); |
| | | foreach (var mainkeys in HdlRoomLogic.Current.CurrentRoom.ListDevice) |
| | | { |
| | | var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice); |
| | | if (info.BeloneType == DeviceBeloneType.A干接点 || info.BeloneType == DeviceBeloneType.A中继器) |
| | | var device = LocalDevice.Current.GetDevice(mainkeys); |
| | | if (device == null
|
| | | || device.Type == DeviceType.OnOffSwitch//干接点 |
| | | || device.Type == DeviceType.Repeater)//中继器 |
| | | { |
| | | continue; |
| | | } |
| | |
| | | for (int i = 0; i < dList.Count; i++) |
| | | { |
| | | var device = dList[i]; |
| | | //new System.Threading.Thread(() => |
| | | //{ |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | try |
| | | { |
| | | int t = i % 2; |
| | | int tt = i / 2; |
| | | int xx = 43 + i % 2 * (20 + 487); |
| | | int yy = 14; |
| | | if (i % 2 == 0) |
| | | { |
| | | itemView = new FrameLayout() |
| | | { |
| | | Height = Application.GetRealHeight(14 + 348), |
| | | }; |
| | | deviceVerticalScrolViewLayout.AddChidren(itemView); |
| | | } |
| | | //收藏 |
| | | EventHandler<MouseEventArgs> collectionEvent = (sender, e) => |
| | | { |
| | | if ((sender as Button).IsSelected) |
| | | { |
| | | Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName); |
| | | (sender as Button).IsSelected = false; |
| | | } |
| | | else |
| | | { |
| | | Common.Room.CurrentRoom.GetLoveRoom().AddDevice(device.FileName); |
| | | (sender as Button).IsSelected = true; |
| | | } |
| | | if (Room.CurrentRoom.IsLove) |
| | | { |
| | | RefreshBodyView(); |
| | | } |
| | | }; |
| | | |
| | | if (device.CommonDevice.Type == DeviceType.WindowCoveringDevice) |
| | | { |
| | | //窗帘 卷帘 |
| | | var rollerShade = (ZigBee.Device.Rollershade)device.CommonDevice; |
| | | if (rollerShade.Gateway != null) |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(100 * i); |
| | | if (rollerShade.Gateway.IsVirtual) |
| | | { |
| | | ReadStatus(rollerShade, () => |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds) |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice); |
| | | } |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | var functionView = new FunctionMainView(xx, yy); |
| | | functionView.Tag = device; |
| | | itemView.AddChidren(functionView); |
| | | functionView.Init(); |
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | functionView.SetStatuText(device.GetDeviceStatu()); |
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(rollerShade)); |
| | | functionView.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100; |
| | | functionView.SetCollect(true); |
| | | |
| | | functionView.SwitchButton.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | (sender as Button).IsSelected = !(sender as Button).IsSelected; |
| | | if ((sender as Button).IsSelected) |
| | | { |
| | | zbGateway = device.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice); |
| | | |
| | | (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0); |
| | | |
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Open)); |
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = true; |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(device.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | zbGateway = device.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice); |
| | | |
| | | (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1); |
| | | |
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Close)); |
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = false; |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(device.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | functionView.CardBG.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | CommonPage.Instance.IsDrawerLockMode = true; |
| | | var rollerShadeControl = new Phone.Device.Curtain.RollerShadeControl(); |
| | | UserView.HomePage.Instance.AddChidren(rollerShadeControl); |
| | | UserView.HomePage.Instance.PageIndex += 1; |
| | | UserView.HomePage.Instance.ScrollEnabled = false; |
| | | rollerShadeControl.Show(device, Room.CurrentRoom); |
| | | rollerShadeControl.action += (curDev, curRoom) => |
| | | { |
| | | ReFreshEditDeviceAction(device, curRoom, functionView); |
| | | }; |
| | | }; |
| | | |
| | | functionView.CollectButton.MouseUpEventHandler += collectionEvent; |
| | | } |
| | | } |
| | | else if (device.CommonDevice.Type == DeviceType.OnOffOutput) |
| | | { |
| | | //开关灯 |
| | | var light = device.CommonDevice as ToggleLight; |
| | | if (light.Gateway != null)
|
| | | Application.RunOnMainThread(() =>
|
| | | {
|
| | | try
|
| | | {
|
| | | int t = i % 2;
|
| | | int tt = i / 2;
|
| | | int xx = 43 + i % 2 * (20 + 487);
|
| | | int yy = 14;
|
| | | if (i % 2 == 0)
|
| | | {
|
| | | itemView = new FrameLayout()
|
| | | {
|
| | | Height = Application.GetRealHeight(14 + 348),
|
| | | };
|
| | | deviceVerticalScrolViewLayout.AddChidren(itemView);
|
| | | }
|
| | | //收藏
|
| | | EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
|
| | | {
|
| | | if ((sender as Button).IsSelected)
|
| | | {
|
| | | //删除我的喜爱
|
| | | HdlRoomLogic.Current.DeleteLoveDevice(device);
|
| | | (sender as Button).IsSelected = false;
|
| | | }
|
| | | else
|
| | | {
|
| | | //添加我的喜爱
|
| | | HdlRoomLogic.Current.AddLoveDevice(device);
|
| | | (sender as Button).IsSelected = true;
|
| | | }
|
| | | if (HdlRoomLogic.Current.CurrentRoom.IsLove)
|
| | | {
|
| | | //刷新设备桌布控件
|
| | | this.RefreshBodyView();
|
| | | }
|
| | | };
|
| | |
|
| | | if (device.Type == DeviceType.WindowCoveringDevice)
|
| | | {
|
| | | //窗帘 卷帘
|
| | | var rollerShade = (ZigBee.Device.Rollershade)device;
|
| | | if (rollerShade.Gateway != null)
|
| | | {
|
| | | new System.Threading.Thread(() =>
|
| | | {
|
| | | new System.Threading.Thread(() =>
|
| | | { |
| | | System.Threading.Thread.Sleep(100 * i); |
| | | if (light.Gateway.IsVirtual) |
| | | { |
| | | ReadStatus(light, () => |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds) |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice); |
| | | } |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | var functionView = new FunctionMainView(xx, yy); |
| | | itemView.AddChidren(functionView); |
| | | functionView.Init(); |
| | | functionView.Tag = device; |
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | functionView.SetStatuText(device.GetDeviceStatu()); |
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)); |
| | | functionView.IsSelected = light.OnOffStatus == 1; |
| | | functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName)); |
| | | |
| | | if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false) |
| | | { |
| | | functionView.CollectButton.IsSelected = false; |
| | | } |
| | | else |
| | | { |
| | | functionView.CollectButton.IsSelected = true; |
| | | } |
| | | |
| | | functionView.SwitchButton.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | (sender as Button).IsSelected = !(sender as Button).IsSelected; |
| | | if ((sender as Button).IsSelected) |
| | | { |
| | | zbGateway = device.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice); |
| | | |
| | | light.SwitchControl(1); |
| | | |
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu()); |
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = true; |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(device.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | zbGateway = device.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice); |
| | | |
| | | light.SwitchControl(0); |
| | | |
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu()); |
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = false; |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(device.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | functionView.CardBG.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | CommonPage.Instance.IsDrawerLockMode = true; |
| | | |
| | | var lightControl = new Phone.Device.Light.OnOffControl(); |
| | | UserView.HomePage.Instance.AddChidren(lightControl); |
| | | UserView.HomePage.Instance.PageIndex += 1; |
| | | lightControl.Show(device, Room.CurrentRoom); |
| | | lightControl.action += (curDev, curRoom) => |
| | | { |
| | | ReFreshEditDeviceAction(device, curRoom, functionView); |
| | | }; |
| | | }; |
| | | |
| | | functionView.CollectButton.MouseUpEventHandler += collectionEvent; |
| | | } |
| | | } |
| | | else if (device.CommonDevice.Type == DeviceType.AirSwitch) |
| | | { |
| | | //空气开关 |
| | | var airSwitch = device.CommonDevice as AirSwitch; |
| | | if (airSwitch.Gateway != null) |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(100 * i); |
| | | if (airSwitch.Gateway.IsVirtual) |
| | | { |
| | | ReadStatus(airSwitch, () => |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice); |
| | | } |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | var functionView = new FunctionMainView(xx, yy); |
| | | itemView.AddChidren(functionView); |
| | | functionView.Init(); |
| | | functionView.Tag = device; |
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | functionView.SetStatuText(device.GetDeviceStatu()); |
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(airSwitch)); |
| | | functionView.IsSelected = airSwitch.OnOffStatus == 1; |
| | | functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom( device.FileName)); |
| | | |
| | | functionView.SwitchButton.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | (sender as Button).IsSelected = !(sender as Button).IsSelected; |
| | | if ((sender as Button).IsSelected) |
| | | { |
| | | zbGateway = device.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice); |
| | | |
| | | airSwitch.SwitchControl(1); |
| | | |
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu()); |
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = true; |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(device.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | zbGateway = device.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice); |
| | | |
| | | airSwitch.SwitchControl(0); |
| | | |
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu()); |
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = false; |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(device.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | functionView.CardBG.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | CommonPage.Instance.IsDrawerLockMode = true; |
| | | var lightControl = new Phone.Device.Light.AirSwitchControl(); |
| | | UserView.HomePage.Instance.AddChidren(lightControl); |
| | | UserView.HomePage.Instance.PageIndex += 1; |
| | | lightControl.Show(device, Room.CurrentRoom); |
| | | lightControl.action += (curDev, curRoom) => |
| | | { |
| | | ReFreshEditDeviceAction(device, curRoom, functionView); |
| | | }; |
| | | |
| | | }; |
| | | |
| | | functionView.CollectButton.MouseUpEventHandler += collectionEvent; |
| | | } |
| | | } |
| | | else if (device.CommonDevice.Type == DeviceType.Thermostat) |
| | | { |
| | | //恒温器-AC-空调 |
| | | var ac = device.CommonDevice as AC; |
| | | if (ac.Gateway != null) |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(100 * i); |
| | | if (ac.Gateway.IsVirtual) |
| | | { |
| | | ReadStatus(ac, () => |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice); |
| | | } |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | var functionView = new FunctionMainView(xx, yy); |
| | | itemView.AddChidren(functionView); |
| | | functionView.Init(); |
| | | functionView.Tag = device; |
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | functionView.SetStatuText(device.GetDeviceStatu()); |
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)); |
| | | functionView.IsSelected = ac.currentSystemMode != 0; |
| | | functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName)); |
| | | |
| | | functionView.SwitchButton.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | (sender as Button).IsSelected = !(sender as Button).IsSelected; |
| | | if ((sender as Button).IsSelected) |
| | | { |
| | | zbGateway = device.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice); |
| | | |
| | | ac.Open(); |
| | | |
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu()); |
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = true; |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(device.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | zbGateway = device.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice); |
| | | |
| | | ac.Close(); |
| | | |
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu()); |
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = false; |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(device.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | functionView.CardBG.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | CommonPage.Instance.IsDrawerLockMode = true; |
| | | var lightControl = new Phone.Device.AC.ACControl(); |
| | | UserView.HomePage.Instance.AddChidren(lightControl); |
| | | UserView.HomePage.Instance.PageIndex += 1; |
| | | lightControl.Show(device, Room.CurrentRoom); |
| | | lightControl.action += (curDev, curRoom) => |
| | | { |
| | | ReFreshEditDeviceAction(device, curRoom, functionView); |
| | | }; |
| | | }; |
| | | |
| | | functionView.CollectButton.MouseUpEventHandler += collectionEvent; |
| | | } |
| | | } |
| | | else if (device.CommonDevice.Type == DeviceType.DimmableLight) |
| | | { |
| | | //调光灯 |
| | | var dimmableLight = device.CommonDevice as DimmableLight; |
| | | if (dimmableLight.Gateway != null) |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(100 * i); |
| | | if (dimmableLight.Gateway.IsVirtual) |
| | | { |
| | | //发送读取状态命令 |
| | | ReadStatus(dimmableLight, () => |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | //防止短时间内多次读取设备状态 |
| | | if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice); |
| | | } |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | var functionView = new FunctionMainView(xx, yy); |
| | | itemView.AddChidren(functionView); |
| | | functionView.Init(); |
| | | functionView.Tag = device; |
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | functionView.SetStatuText(device.GetDeviceStatu()); |
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)); |
| | | functionView.IsSelected = dimmableLight.OnOffStatus == 1; |
| | | functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName)); |
| | | |
| | | if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false) |
| | | { |
| | | functionView.CollectButton.IsSelected = false; |
| | | } |
| | | else |
| | | { |
| | | functionView.CollectButton.IsSelected = true; |
| | | } |
| | | |
| | | functionView.SwitchButton.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | (sender as Button).IsSelected = !(sender as Button).IsSelected; |
| | | if ((sender as Button).IsSelected) |
| | | { |
| | | zbGateway = device.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice); |
| | | |
| | | dimmableLight.SwitchControl(1); |
| | | |
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu()); |
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = true; |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(device.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | zbGateway = device.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice); |
| | | |
| | | dimmableLight.SwitchControl(0); |
| | | |
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu()); |
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = false; |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(device.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | functionView.CardBG.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | CommonPage.Instance.IsDrawerLockMode = true; |
| | | var dimmableLightControl = new Phone.Device.Light.DimmableLightControl(); |
| | | UserView.HomePage.Instance.AddChidren(dimmableLightControl); |
| | | UserView.HomePage.Instance.PageIndex += 1; |
| | | dimmableLightControl.Show(device, Room.CurrentRoom); |
| | | dimmableLightControl.action += (curDev, curRoom) => |
| | | { |
| | | ReFreshEditDeviceAction(device, curRoom, functionView); |
| | | }; |
| | | }; |
| | | functionView.CollectButton.MouseUpEventHandler += collectionEvent; |
| | | } |
| | | } |
| | | else if (device.CommonDevice.Type == DeviceType.IASZone) |
| | | { |
| | | //各类传感器 |
| | | var ias = device.CommonDevice as IASZone; |
| | | |
| | | var lightView = new FunctionMainView(xx, yy); |
| | | itemView.AddChidren(lightView); |
| | | lightView.Init(); |
| | | lightView.Tag = device; |
| | | lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | lightView.SetStatuText(device.GetDeviceStatu()); |
| | | lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)); |
| | | lightView.IsSelected = ias.iASInfo?.Alarm1 == 1; |
| | | lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName)); |
| | | lightView.CanControl(false); |
| | | if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false) |
| | | { |
| | | lightView.CollectButton.IsSelected = false; |
| | | } |
| | | else |
| | | { |
| | | lightView.CollectButton.IsSelected = true; |
| | | } |
| | | lightView.CollectButton.MouseUpEventHandler += collectionEvent; |
| | | } |
| | | else if (device.CommonDevice.Type == DeviceType.TemperatureSensor) |
| | | { |
| | | var tempera = device.CommonDevice as TemperatureSensor; |
| | | |
| | | if (tempera.Gateway != null) |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(100 * i); |
| | | if (tempera.Gateway.IsVirtual) |
| | | { |
| | | ReadStatus(tempera, () => |
| | | { |
| | | if (tempera.SensorDiv == 1) |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device.CommonDevice); |
| | | } |
| | | else if (tempera.SensorDiv == 2) |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device.CommonDevice); |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - tempera.LastDateTime).TotalSeconds) |
| | | { |
| | | if (tempera.SensorDiv == 1) |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device.CommonDevice); |
| | | } |
| | | else if (tempera.SensorDiv == 2) |
| | | { |
| | | ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device.CommonDevice); |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | var lightView = new FunctionMainView(xx, yy); |
| | | itemView.AddChidren(lightView); |
| | | lightView.Init(); |
| | | lightView.Tag = device; |
| | | lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | lightView.SetStatuText(device.GetDeviceStatu()); |
| | | lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)); |
| | | lightView.IsSelected = false; |
| | | lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName)); |
| | | lightView.CanControl(false); |
| | | if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false) |
| | | { |
| | | lightView.CollectButton.IsSelected = false; |
| | | } |
| | | else |
| | | { |
| | | lightView.CollectButton.IsSelected = true; |
| | | } |
| | | lightView.CollectButton.MouseUpEventHandler += collectionEvent; |
| | | } |
| | | } |
| | | else if (device.CommonDevice.Type == DeviceType.DoorLock) |
| | | { |
| | | //门锁 |
| | | var dimmableLight = device.CommonDevice as DoorLock; |
| | | |
| | | var lightView = new FunctionMainView(xx, yy); |
| | | itemView.AddChidren(lightView); |
| | | lightView.Init(); |
| | | lightView.Tag = device; |
| | | lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | lightView.SetStatuText(device.GetDeviceStatu()); |
| | | lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)); |
| | | lightView.IsSelected = false; |
| | | lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName)); |
| | | lightView.CanControl(false); |
| | | if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false) |
| | | { |
| | | lightView.CollectButton.IsSelected = false; |
| | | } |
| | | else |
| | | { |
| | | lightView.CollectButton.IsSelected = true; |
| | | } |
| | | |
| | | lightView.CardBG.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | CommonPage.Instance.IsDrawerLockMode = true; |
| | | var userDoorLockPage = new UserDoorLockPage(Room.CurrentRoom, device); |
| | | HomePage.Instance.AddChidren(userDoorLockPage); |
| | | HomePage.Instance.PageIndex += 1; |
| | | userDoorLockPage.Show(); |
| | | }; |
| | | lightView.CollectButton.MouseUpEventHandler += collectionEvent; |
| | | } |
| | | else |
| | | { |
| | | var lightView = new FunctionMainView(xx, yy); |
| | | itemView.AddChidren(lightView); |
| | | lightView.Init(); |
| | | lightView.Tag = device; |
| | | lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | lightView.SetStatuText(device.GetDeviceStatu()); |
| | | lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)); |
| | | lightView.CanControl(false); |
| | | //lightView.IsSelected = device.CommonDevice.IsOnline == 1; |
| | | lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName)); |
| | | |
| | | if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false) |
| | | { |
| | | lightView.CollectButton.IsSelected = false; |
| | | } |
| | | else |
| | | { |
| | | lightView.CollectButton.IsSelected = true; |
| | | } |
| | | lightView.CollectButton.MouseUpEventHandler += collectionEvent; |
| | | } |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | |
| | | } |
| | | }); |
| | | System.Threading.Thread.Sleep(100 * i);
|
| | | if (rollerShade.Gateway.IsVirtual)
|
| | | {
|
| | | ReadStatus(rollerShade, () =>
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device);
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device);
|
| | | }
|
| | | }
|
| | | })
|
| | | { IsBackground = true }.Start();
|
| | |
|
| | | var functionView = new FunctionMainView(xx, yy);
|
| | | functionView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
|
| | | itemView.AddChidren(functionView);
|
| | | functionView.Init();
|
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
|
| | | functionView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(rollerShade));
|
| | | functionView.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
|
| | | functionView.SetCollect(true);
|
| | |
|
| | | functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | (sender as Button).IsSelected = !(sender as Button).IsSelected;
|
| | | if ((sender as Button).IsSelected)
|
| | | {
|
| | | zbGateway = device.Gateway;
|
| | | sendedControlCommand = false;
|
| | | zbGateway.ReportAction += UpdateDeviceControllStatu;
|
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
|
| | |
|
| | | (device as Rollershade).CurtainUpDownStopControl(0);
|
| | |
|
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Open));
|
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = true;
|
| | |
|
| | | //控制延时回调
|
| | | HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
|
| | | {
|
| | | if (Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | RemoveUpdateControlDeviceStatuAction(zbGateway);
|
| | | if (sendedControlCommand == false)
|
| | | {
|
| | | HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
| | | }
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | zbGateway = device.Gateway;
|
| | | sendedControlCommand = false;
|
| | | zbGateway.ReportAction += UpdateDeviceControllStatu;
|
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
|
| | |
|
| | | (device as Rollershade).CurtainUpDownStopControl(1);
|
| | |
|
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Close));
|
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = false;
|
| | |
|
| | | //控制延时回调
|
| | | HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
|
| | | {
|
| | | if (Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | RemoveUpdateControlDeviceStatuAction(zbGateway);
|
| | | if (sendedControlCommand == false)
|
| | | {
|
| | | HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
| | | }
|
| | | });
|
| | | }
|
| | | };
|
| | |
|
| | | functionView.CardBG.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | CommonPage.Instance.IsDrawerLockMode = true;
|
| | | var rollerShadeControl = new Phone.Device.Curtain.RollerShadeControl();
|
| | | UserView.HomePage.Instance.AddChidren(rollerShadeControl);
|
| | | UserView.HomePage.Instance.PageIndex += 1;
|
| | | UserView.HomePage.Instance.ScrollEnabled = false;
|
| | | rollerShadeControl.IsDrawerLockMode = true;
|
| | | rollerShadeControl.Show(device, HdlRoomLogic.Current.CurrentRoom);
|
| | | rollerShadeControl.action += (curDev, curRoom) =>
|
| | | {
|
| | | ReFreshEditDeviceAction(device, curRoom, functionView);
|
| | | };
|
| | | };
|
| | |
|
| | | functionView.CollectButton.MouseUpEventHandler += collectionEvent;
|
| | | }
|
| | | }
|
| | | else if (device.Type == DeviceType.OnOffOutput)
|
| | | {
|
| | | //开关灯
|
| | | var light = device as ToggleLight;
|
| | | if (light.Gateway != null)
|
| | | {
|
| | | new System.Threading.Thread(() =>
|
| | | {
|
| | | System.Threading.Thread.Sleep(100 * i);
|
| | | if (light.Gateway.IsVirtual)
|
| | | {
|
| | | ReadStatus(light, () =>
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device);
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device);
|
| | | }
|
| | | }
|
| | | })
|
| | | { IsBackground = true }.Start();
|
| | |
|
| | | var functionView = new FunctionMainView(xx, yy);
|
| | | itemView.AddChidren(functionView);
|
| | | functionView.Init();
|
| | | functionView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
|
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
|
| | | functionView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
|
| | | functionView.IsSelected = light.OnOffStatus == 1;
|
| | | functionView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
|
| | |
|
| | | if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
|
| | | {
|
| | | functionView.CollectButton.IsSelected = false;
|
| | | }
|
| | | else
|
| | | {
|
| | | functionView.CollectButton.IsSelected = true;
|
| | | }
|
| | |
|
| | | functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | (sender as Button).IsSelected = !(sender as Button).IsSelected;
|
| | | if ((sender as Button).IsSelected)
|
| | | {
|
| | | zbGateway = device.Gateway;
|
| | | sendedControlCommand = false;
|
| | | zbGateway.ReportAction += UpdateDeviceControllStatu;
|
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
|
| | |
|
| | | light.SwitchControl(1);
|
| | |
|
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = true;
|
| | |
|
| | | //控制延时回调
|
| | | HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
|
| | | {
|
| | | if (Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | RemoveUpdateControlDeviceStatuAction(zbGateway);
|
| | | if (sendedControlCommand == false)
|
| | | {
|
| | | HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
| | | }
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | zbGateway = device.Gateway;
|
| | | sendedControlCommand = false;
|
| | | zbGateway.ReportAction += UpdateDeviceControllStatu;
|
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
|
| | |
|
| | | light.SwitchControl(0);
|
| | |
|
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = false;
|
| | |
|
| | | //控制延时回调
|
| | | HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
|
| | | {
|
| | | if (Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | RemoveUpdateControlDeviceStatuAction(zbGateway);
|
| | | if (sendedControlCommand == false)
|
| | | {
|
| | | HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
| | | }
|
| | | });
|
| | | }
|
| | | };
|
| | |
|
| | | functionView.CardBG.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | CommonPage.Instance.IsDrawerLockMode = true;
|
| | |
|
| | | var lightControl = new Phone.Device.Light.OnOffControl();
|
| | | UserView.HomePage.Instance.AddChidren(lightControl);
|
| | | UserView.HomePage.Instance.PageIndex += 1;
|
| | | lightControl.IsDrawerLockMode = true;
|
| | | lightControl.Show(device, HdlRoomLogic.Current.CurrentRoom);
|
| | | lightControl.action += (curDev, curRoom) =>
|
| | | {
|
| | | ReFreshEditDeviceAction(device, curRoom, functionView);
|
| | | };
|
| | | };
|
| | |
|
| | | functionView.CollectButton.MouseUpEventHandler += collectionEvent;
|
| | | }
|
| | | }
|
| | | else if (device.Type == DeviceType.AirSwitch)
|
| | | {
|
| | | //空气开关
|
| | | var airSwitch = device as AirSwitch;
|
| | | if (airSwitch.Gateway != null)
|
| | | {
|
| | | new System.Threading.Thread(() =>
|
| | | {
|
| | | System.Threading.Thread.Sleep(100 * i);
|
| | | if (airSwitch.Gateway.IsVirtual)
|
| | | {
|
| | | ReadStatus(airSwitch, () =>
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device);
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device);
|
| | | }
|
| | | }
|
| | | })
|
| | | { IsBackground = true }.Start();
|
| | |
|
| | | var functionView = new FunctionMainView(xx, yy);
|
| | | itemView.AddChidren(functionView);
|
| | | functionView.Init();
|
| | | functionView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
|
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
|
| | | functionView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(airSwitch));
|
| | | functionView.IsSelected = airSwitch.OnOffStatus == 1;
|
| | | functionView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
|
| | |
|
| | | functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | (sender as Button).IsSelected = !(sender as Button).IsSelected;
|
| | | if ((sender as Button).IsSelected)
|
| | | {
|
| | | zbGateway = device.Gateway;
|
| | | sendedControlCommand = false;
|
| | | zbGateway.ReportAction += UpdateDeviceControllStatu;
|
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
|
| | |
|
| | | airSwitch.SwitchControl(1);
|
| | |
|
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = true;
|
| | |
|
| | | //控制延时回调
|
| | | HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
|
| | | {
|
| | | if (Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | RemoveUpdateControlDeviceStatuAction(zbGateway);
|
| | | if (sendedControlCommand == false)
|
| | | {
|
| | | HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
| | | }
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | zbGateway = device.Gateway;
|
| | | sendedControlCommand = false;
|
| | | zbGateway.ReportAction += UpdateDeviceControllStatu;
|
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
|
| | |
|
| | | airSwitch.SwitchControl(0);
|
| | |
|
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = false;
|
| | |
|
| | | //控制延时回调
|
| | | HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
|
| | | {
|
| | | if (Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | RemoveUpdateControlDeviceStatuAction(zbGateway);
|
| | | if (sendedControlCommand == false)
|
| | | {
|
| | | HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
| | | }
|
| | | });
|
| | | }
|
| | | };
|
| | |
|
| | | functionView.CardBG.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | CommonPage.Instance.IsDrawerLockMode = true;
|
| | | var lightControl = new Phone.Device.Light.AirSwitchControl();
|
| | | UserView.HomePage.Instance.AddChidren(lightControl);
|
| | | UserView.HomePage.Instance.PageIndex += 1;
|
| | | lightControl.IsDrawerLockMode = true;
|
| | | lightControl.Show(device, HdlRoomLogic.Current.CurrentRoom);
|
| | | lightControl.action += (curDev, curRoom) =>
|
| | | {
|
| | | ReFreshEditDeviceAction(device, curRoom, functionView);
|
| | | };
|
| | |
|
| | | };
|
| | |
|
| | | functionView.CollectButton.MouseUpEventHandler += collectionEvent;
|
| | | }
|
| | | }
|
| | | else if (device.Type == DeviceType.Thermostat)
|
| | | {
|
| | | //恒温器-AC-空调
|
| | | var ac = device as AC;
|
| | | if (ac.Gateway != null)
|
| | | {
|
| | | new System.Threading.Thread(() =>
|
| | | {
|
| | | System.Threading.Thread.Sleep(100 * i);
|
| | | if (ac.Gateway.IsVirtual)
|
| | | {
|
| | | ReadStatus(ac, () =>
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendACStatuComand(device);
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendACStatuComand(device);
|
| | | }
|
| | | }
|
| | | })
|
| | | { IsBackground = true }.Start();
|
| | |
|
| | | var functionView = new FunctionMainView(xx, yy);
|
| | | itemView.AddChidren(functionView);
|
| | | functionView.Init();
|
| | | functionView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
|
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
|
| | | functionView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
|
| | | functionView.IsSelected = ac.currentSystemMode != 0;
|
| | | functionView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
|
| | |
|
| | | functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | (sender as Button).IsSelected = !(sender as Button).IsSelected;
|
| | | if ((sender as Button).IsSelected)
|
| | | {
|
| | | zbGateway = device.Gateway;
|
| | | sendedControlCommand = false;
|
| | | zbGateway.ReportAction += UpdateDeviceControllStatu;
|
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
|
| | |
|
| | | ac.Open();
|
| | |
|
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = true;
|
| | |
|
| | | //控制延时回调
|
| | | HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
|
| | | {
|
| | | if (Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | RemoveUpdateControlDeviceStatuAction(zbGateway);
|
| | | if (sendedControlCommand == false)
|
| | | {
|
| | | HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
| | | }
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | zbGateway = device.Gateway;
|
| | | sendedControlCommand = false;
|
| | | zbGateway.ReportAction += UpdateDeviceControllStatu;
|
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
|
| | |
|
| | | ac.Close();
|
| | |
|
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = false;
|
| | |
|
| | | //控制延时回调
|
| | | HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
|
| | | {
|
| | | if (Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | RemoveUpdateControlDeviceStatuAction(zbGateway);
|
| | | if (sendedControlCommand == false)
|
| | | {
|
| | | HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
| | | }
|
| | | });
|
| | | }
|
| | | };
|
| | |
|
| | | functionView.CardBG.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | CommonPage.Instance.IsDrawerLockMode = true;
|
| | | var lightControl = new Phone.Device.AC.ACControl();
|
| | | UserView.HomePage.Instance.AddChidren(lightControl);
|
| | | UserView.HomePage.Instance.PageIndex += 1;
|
| | | lightControl.IsDrawerLockMode = true;
|
| | | lightControl.Show(device, HdlRoomLogic.Current.CurrentRoom);
|
| | | lightControl.action += (curDev, curRoom) =>
|
| | | {
|
| | | ReFreshEditDeviceAction(device, curRoom, functionView);
|
| | | };
|
| | | };
|
| | |
|
| | | functionView.CollectButton.MouseUpEventHandler += collectionEvent;
|
| | | }
|
| | | }
|
| | | else if (device.Type == DeviceType.DimmableLight)
|
| | | {
|
| | | //调光灯
|
| | | var dimmableLight = device as DimmableLight;
|
| | | if (dimmableLight.Gateway != null)
|
| | | {
|
| | | new System.Threading.Thread(() =>
|
| | | {
|
| | | System.Threading.Thread.Sleep(100 * i);
|
| | | if (dimmableLight.Gateway.IsVirtual)
|
| | | {
|
| | | //发送读取状态命令
|
| | | ReadStatus(dimmableLight, () =>
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device);
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | //防止短时间内多次读取设备状态
|
| | | if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device);
|
| | | }
|
| | | }
|
| | | })
|
| | | { IsBackground = true }.Start();
|
| | |
|
| | | var functionView = new FunctionMainView(xx, yy);
|
| | | itemView.AddChidren(functionView);
|
| | | functionView.Init();
|
| | | functionView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
|
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
|
| | | functionView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
|
| | | functionView.IsSelected = dimmableLight.OnOffStatus == 1;
|
| | | functionView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
|
| | |
|
| | | if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
|
| | | {
|
| | | functionView.CollectButton.IsSelected = false;
|
| | | }
|
| | | else
|
| | | {
|
| | | functionView.CollectButton.IsSelected = true;
|
| | | }
|
| | |
|
| | | functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | (sender as Button).IsSelected = !(sender as Button).IsSelected;
|
| | | if ((sender as Button).IsSelected)
|
| | | {
|
| | | zbGateway = device.Gateway;
|
| | | sendedControlCommand = false;
|
| | | zbGateway.ReportAction += UpdateDeviceControllStatu;
|
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
|
| | |
|
| | | dimmableLight.SwitchControl(1);
|
| | |
|
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = true;
|
| | |
|
| | | //控制延时回调
|
| | | HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
|
| | | {
|
| | | if (Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | RemoveUpdateControlDeviceStatuAction(zbGateway);
|
| | | if (sendedControlCommand == false)
|
| | | {
|
| | | HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
| | | }
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | zbGateway = device.Gateway;
|
| | | sendedControlCommand = false;
|
| | | zbGateway.ReportAction += UpdateDeviceControllStatu;
|
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
|
| | |
|
| | | dimmableLight.SwitchControl(0);
|
| | |
|
| | | ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | ((sender as Button).Parent as FunctionMainView).IsSelected = false;
|
| | |
|
| | | //控制延时回调
|
| | | HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
|
| | | {
|
| | | if (Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | RemoveUpdateControlDeviceStatuAction(zbGateway);
|
| | | if (sendedControlCommand == false)
|
| | | {
|
| | | HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
| | | }
|
| | | });
|
| | | }
|
| | | };
|
| | |
|
| | | functionView.CardBG.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | CommonPage.Instance.IsDrawerLockMode = true;
|
| | | var dimmableLightControl = new Phone.Device.Light.DimmableLightControl();
|
| | | UserView.HomePage.Instance.AddChidren(dimmableLightControl);
|
| | | UserView.HomePage.Instance.PageIndex += 1;
|
| | | dimmableLightControl.IsDrawerLockMode = true;
|
| | | dimmableLightControl.Show(device, HdlRoomLogic.Current.CurrentRoom);
|
| | | dimmableLightControl.action += (curDev, curRoom) =>
|
| | | {
|
| | | ReFreshEditDeviceAction(device, curRoom, functionView);
|
| | | };
|
| | | };
|
| | | functionView.CollectButton.MouseUpEventHandler += collectionEvent;
|
| | | }
|
| | | }
|
| | | else if (device.Type == DeviceType.IASZone)
|
| | | {
|
| | | //各类传感器
|
| | | var ias = device as IASZone;
|
| | |
|
| | | var lightView = new FunctionMainView(xx, yy);
|
| | | itemView.AddChidren(lightView);
|
| | | lightView.Init();
|
| | | lightView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
|
| | | lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
|
| | | lightView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
|
| | | lightView.IsSelected = ias.iASInfo?.Alarm1 == 1;
|
| | | lightView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
|
| | | lightView.CanControl(false);
|
| | | if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
|
| | | {
|
| | | lightView.CollectButton.IsSelected = false;
|
| | | }
|
| | | else
|
| | | {
|
| | | lightView.CollectButton.IsSelected = true;
|
| | | }
|
| | | lightView.CollectButton.MouseUpEventHandler += collectionEvent;
|
| | | }
|
| | | else if (device.Type == DeviceType.TemperatureSensor)
|
| | | {
|
| | | var tempera = device as TemperatureSensor;
|
| | |
|
| | | if (tempera.Gateway != null)
|
| | | {
|
| | | new System.Threading.Thread(() =>
|
| | | {
|
| | | System.Threading.Thread.Sleep(100 * i);
|
| | | if (tempera.Gateway.IsVirtual)
|
| | | {
|
| | | ReadStatus(tempera, () =>
|
| | | {
|
| | | if (tempera.SensorDiv == 1)
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device);
|
| | | }
|
| | | else if (tempera.SensorDiv == 2)
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device);
|
| | | }
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - tempera.LastDateTime).TotalSeconds)
|
| | | {
|
| | | if (tempera.SensorDiv == 1)
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device);
|
| | | }
|
| | | else if (tempera.SensorDiv == 2)
|
| | | {
|
| | | ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device);
|
| | | }
|
| | | }
|
| | | }
|
| | | })
|
| | | { IsBackground = true }.Start();
|
| | |
|
| | | var lightView = new FunctionMainView(xx, yy);
|
| | | itemView.AddChidren(lightView);
|
| | | lightView.Init();
|
| | | lightView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
|
| | | lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
|
| | | lightView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
|
| | | lightView.IsSelected = false;
|
| | | lightView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
|
| | | lightView.CanControl(false);
|
| | | if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
|
| | | {
|
| | | lightView.CollectButton.IsSelected = false;
|
| | | }
|
| | | else
|
| | | {
|
| | | lightView.CollectButton.IsSelected = true;
|
| | | }
|
| | | lightView.CollectButton.MouseUpEventHandler += collectionEvent;
|
| | | }
|
| | | }
|
| | | else if (device.Type == DeviceType.DoorLock)
|
| | | {
|
| | | //门锁
|
| | | var dimmableLight = device as DoorLock;
|
| | |
|
| | | var lightView = new FunctionMainView(xx, yy);
|
| | | itemView.AddChidren(lightView);
|
| | | lightView.Init();
|
| | | lightView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
|
| | | lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
|
| | | lightView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
|
| | | lightView.IsSelected = false;
|
| | | lightView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
|
| | | lightView.CanControl(false);
|
| | | if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
|
| | | {
|
| | | lightView.CollectButton.IsSelected = false;
|
| | | }
|
| | | else
|
| | | {
|
| | | lightView.CollectButton.IsSelected = true;
|
| | | }
|
| | |
|
| | | lightView.CardBG.MouseUpEventHandler += (sender, e) =>
|
| | | {
|
| | | CommonPage.Instance.IsDrawerLockMode = true;
|
| | | var userDoorLockPage = new UserDoorLockPage(HdlRoomLogic.Current.CurrentRoom, device);
|
| | | HomePage.Instance.AddChidren(userDoorLockPage);
|
| | | HomePage.Instance.PageIndex += 1;
|
| | | userDoorLockPage.Show();
|
| | | };
|
| | | lightView.CollectButton.MouseUpEventHandler += collectionEvent;
|
| | | }
|
| | | else
|
| | | {
|
| | | var lightView = new FunctionMainView(xx, yy);
|
| | | itemView.AddChidren(lightView);
|
| | | lightView.Init();
|
| | | lightView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
|
| | | lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
|
| | | lightView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
|
| | | lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
|
| | | lightView.CanControl(false);
|
| | | lightView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
|
| | |
|
| | | if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
|
| | | {
|
| | | lightView.CollectButton.IsSelected = false;
|
| | | }
|
| | | else
|
| | | {
|
| | | lightView.CollectButton.IsSelected = true;
|
| | | }
|
| | | lightView.CollectButton.MouseUpEventHandler += collectionEvent;
|
| | | }
|
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | |
|
| | | }
|
| | | }); |
| | | //}) |
| | | //{ IsBackground = true }.Start(); |
| | | } |
| | |
| | | /// <param name="device"></param> |
| | | /// <param name="curRoom"></param> |
| | | /// <param name="functionView"></param> |
| | | private void ReFreshEditDeviceAction(DeviceUI device, Common.Room curRoom, FunctionMainView functionView) |
| | | private void ReFreshEditDeviceAction(CommonDevice device, Common.Room curRoom, FunctionMainView functionView) |
| | | { |
| | | if (Common.Room.CurrentRoom.IsLove) |
| | | if (HdlRoomLogic.Current.CurrentRoom.IsLove) |
| | | { |
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)); |
| | | if (Room.CurrentRoom.IsCollectInRoom(device.FileName) == false) |
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device)); |
| | | if (HdlRoomLogic.Current.IsCollectInRoom(device) == false) |
| | | { |
| | | ShowFunction(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (curRoom.Id != Common.Room.CurrentRoom.Id) |
| | | if (curRoom.Id != HdlRoomLogic.Current.CurrentRoom.Id) |
| | | { |
| | | |
| | | Common.Room.CurrentRoom.DeleteDevice(device.FileName); |
| | | ShowFunction(); |
| | | } |
| | | else |
| | | { |
| | | functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath); |
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)); |
| | | functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName)); |
| | | functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device)); |
| | | functionView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ◆ 场景_____________________________ |
| | | #region ■ 场景分支___________________________ |
| | | |
| | | /// <summary> |
| | | /// 显示没场景 |
| | |
| | | Height = Application.GetRealHeight(200), |
| | | Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"), |
| | | TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, |
| | | TextAlignment=TextAlignment.Center, |
| | | TextAlignment = TextAlignment.Center, |
| | | IsMoreLines = true |
| | | }; |
| | | functionSceneBodyView.AddChidren(noScenceTip); |
| | |
| | | { |
| | | functionSceneBodyView.RemoveAll(); |
| | | //选择场景 |
| | | var sceneList = Room.CurrentRoom.SceneUIList; |
| | | var sceneList = HdlSceneLogic.Current.GetRoomSceneList(HdlRoomLogic.Current.CurrentRoom); |
| | | if (sceneList == null) |
| | | { |
| | | return; |
| | |
| | | itemView = new FrameLayout() |
| | | { |
| | | Height = Application.GetRealHeight(14 + 348), |
| | | Tag = scene |
| | | Tag = scene.Id |
| | | }; |
| | | sceneScrolView.AddChidren(itemView); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | #endregion
|
| | |
|
| | | #region ■ 刷新_______________________________ |
| | | |
| | | #region ◆ 切换住宅_________________________ |
| | | /// <summary> |
| | | /// 刷新设备桌布控件 |
| | | /// </summary> |
| | | public void RefreshBodyView() |
| | | { |
| | | functionSceneBodyView.RemoveAll(); |
| | | if (btnFunction.IsSelected) |
| | | { |
| | | ShowFunction(); |
| | | } |
| | | else |
| | | { |
| | | ShowScene(); |
| | | } |
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 切换住宅___________________________ |
| | | /// <summary> |
| | | /// 切换住宅 |
| | | /// </summary> |
| | |
| | | {
|
| | | CommonPage.Loading.Start(); |
| | | new System.Threading.Thread(async () =>
|
| | | { |
| | | Config.Instance.HomeId = home.Id; |
| | | Config.Instance.Home = House.GetHouseByFilePath(home.FileName); |
| | | Global.CreateHomeDirectory(home.Id); |
| | | Config.Instance.Save();
|
| | | //刷新个人中心的内存及线程
|
| | | await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); |
| | | |
| | | Room.InitAllRoom(); |
| | | |
| | | Application.RunOnMainThread(() => |
| | | {
|
| | | Show(); |
| | | CommonPage.Loading.Hide(); |
| | | }); |
| | | }) |
| | | {
|
| | | Config.Instance.HomeId = home.Id;
|
| | | Config.Instance.Home = House.GetHouseByFilePath(home.FileName);
|
| | | Global.CreateHomeDirectory(home.Id);
|
| | | Config.Instance.Save();
|
| | | //刷新个人中心的内存及线程
|
| | | await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
|
| | | //初始化全部房间
|
| | | HdlRoomLogic.Current.InitAllRoom();
|
| | |
|
| | | Application.RunOnMainThread(() =>
|
| | | {
|
| | | ShowForm();
|
| | | CommonPage.Loading.Hide();
|
| | | });
|
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region ◆ 进行设备状态读取__________________ |
| | | #region ■ 进行设备状态读取___________________ |
| | | |
| | | /// <summary> |
| | | /// 判断是否可以进行设备状态读取。在回调中读取 |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region ◆ 控制状态_________________________ |
| | | #region ■ 控制状态___________________________ |
| | | |
| | | /// <summary> |
| | | /// 显示设备控制状态 |
| | |
| | | } |
| | | //标记已经发送控制命令到网关 |
| | | sendedControlCommand = true; |
| | | //DeviceUI.ShowStatuTip(R.MyInternationalizationString.Success); |
| | | //HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.Success); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | commonDeviceList.Add(common); |
| | | } |
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 设备状态上报_______________________
|
| | |
|
| | | /// <summary>
|
| | | /// 添加设备状态上报事件
|
| | | /// </summary>
|
| | | private void AddDeviceReportEvent()
|
| | | {
|
| | | //设备属性上报
|
| | | HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceStatus", ReceiveComandDiv.A设备属性上报, (report) =>
|
| | | {
|
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | {
|
| | | if (report.DeviceStatusReport.AttriBute == null || report.DeviceStatusReport.AttriBute.Count == 0)
|
| | | {
|
| | | return;
|
| | | }
|
| | | for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++)
|
| | | {
|
| | | var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout;
|
| | | if (rowFL.ChildrenCount == 0)
|
| | | {
|
| | | //设备为空或者控件为空
|
| | | continue;
|
| | | }
|
| | |
|
| | | for (int j = 0; j < rowFL.ChildrenCount; j++)
|
| | | {
|
| | | var deviceUI = LocalDevice.Current.GetDevice((rowFL.GetChildren(j) as FunctionMainView).Tag.ToString());
|
| | | if (deviceUI == null)
|
| | | {
|
| | | //设备为空或者控件为空
|
| | | continue;
|
| | | }
|
| | | if (report.DeviceAddr != deviceUI.DeviceAddr || report.DeviceEpoint != deviceUI.DeviceEpoint)
|
| | | {
|
| | | //判断是否为当前设备
|
| | | continue;
|
| | | }
|
| | |
|
| | | switch (deviceUI.Type)
|
| | | {
|
| | | case DeviceType.OnOffOutput:
|
| | | //开关功能
|
| | | if (report.DeviceStatusReport.CluterID == 6)
|
| | | {
|
| | | var onOffOutputLight = deviceUI as ZigBee.Device.ToggleLight;
|
| | | onOffOutputLight.DeviceStatusReport = report.DeviceStatusReport;
|
| | | onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = onOffOutputLight.OnOffStatus == 1;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | onOffOutputLight.LastDateTime = DateTime.Now;
|
| | | }
|
| | | break;
|
| | |
|
| | | case DeviceType.AirSwitch:
|
| | | //开关功能
|
| | | if (report.DeviceStatusReport.CluterID == 6)
|
| | | {
|
| | | var airSwitch = deviceUI as ZigBee.Device.AirSwitch;
|
| | | airSwitch.DeviceStatusReport = report.DeviceStatusReport;
|
| | | airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | airSwitch.LastDateTime = DateTime.Now;
|
| | | }
|
| | | //当CluterID=3,就证明该设备在线,直接标记
|
| | | if (report.DeviceStatusReport.CluterID == 3)
|
| | | {
|
| | | deviceUI.IsOnline = 1;
|
| | | deviceUI.LastDateTime = DateTime.Now;
|
| | | }
|
| | | break;
|
| | |
|
| | | case DeviceType.WindowCoveringDevice:
|
| | | if (report.DeviceStatusReport.CluterID == 258)
|
| | | {
|
| | | if (report.DeviceStatusReport.AttriBute[0].AttributeId == 0)
|
| | | {
|
| | | //窗帘类型
|
| | | var rollerShade = deviceUI as Rollershade;
|
| | | rollerShade.DeviceStatusReport = report.DeviceStatusReport;
|
| | | rollerShade.WcdType = report.DeviceStatusReport.AttriBute[0].AttriButeData;
|
| | | rollerShade.LastDateTime = DateTime.Now;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | }
|
| | | if (report.DeviceStatusReport.AttriBute[0].AttributeId == 8)
|
| | | {
|
| | | //窗帘百分比
|
| | | var rollerShade = deviceUI as Rollershade;
|
| | | rollerShade.DeviceStatusReport = report.DeviceStatusReport;
|
| | | rollerShade.WcdCurrentPositionLiftPercentage = report.DeviceStatusReport.AttriBute[0].AttriButeData;
|
| | | rollerShade.LastDateTime = DateTime.Now;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | }
|
| | | }
|
| | | if (report.DeviceStatusReport.CluterID == 3)
|
| | | {
|
| | | deviceUI.IsOnline = 1;
|
| | | deviceUI.LastDateTime = DateTime.Now;
|
| | | }
|
| | | break;
|
| | |
|
| | | case DeviceType.Thermostat:
|
| | | //AC功能
|
| | | if (report.DeviceStatusReport.CluterID == 513)
|
| | | {
|
| | | var ac = deviceUI as ZigBee.Device.AC;
|
| | | ac.DeviceStatusReport = report.DeviceStatusReport;
|
| | | var attriButeList = ac.DeviceStatusReport.AttriBute;
|
| | | foreach (var attList in attriButeList)
|
| | | {
|
| | | var curTemp = attList.AttriButeData / 100;
|
| | | switch (attList.AttributeId)
|
| | | {
|
| | | case 0:
|
| | | //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃
|
| | | ac.currentLocalTemperature = curTemp;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | case 17:
|
| | | //此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。
|
| | | ac.currentCoolingSetpoint = curTemp;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | case 18:
|
| | | //此属性表明此设备当前的制热温度,实际温度为“HeatingSetpoint / 100”,单位:℃。
|
| | | ac.currentHeatingSetpoint = curTemp;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | case 4096:
|
| | | //此属性表明此设备当前的自动温度,实际温度为“AutoSetpoint / 100”,单位:℃。
|
| | | ac.currentAutoSetpoint = curTemp;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | |
|
| | | case 28:
|
| | | //此属性描述恒温设备正处于哪种模式
|
| | | ac.currentSystemMode = attList.AttriButeData;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | }
|
| | | }
|
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | }
|
| | | if (report.DeviceStatusReport.CluterID == 514)
|
| | | {
|
| | | var ac = deviceUI as ZigBee.Device.AC;
|
| | | var attriButeList = report.DeviceStatusReport.AttriBute;
|
| | | ac.DeviceStatusReport = report.DeviceStatusReport;
|
| | | foreach (var attList in attriButeList)
|
| | | {
|
| | | switch (attList.AttributeId)
|
| | | {
|
| | | case 0:
|
| | | ac.currentFanMode = attList.AttriButeData;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | case 4096:
|
| | | ac.currentFanSwingMode = attList.AttriButeData;
|
| | | ac.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | }
|
| | | }
|
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | }
|
| | | //当CluterID=3,就证明该设备在线,直接标记
|
| | | if (report.DeviceStatusReport.CluterID == 3)
|
| | | {
|
| | | deviceUI.IsOnline = 1;
|
| | | deviceUI.LastDateTime = DateTime.Now;
|
| | | }
|
| | | break;
|
| | |
|
| | | case DeviceType.DimmableLight:
|
| | | //调光灯功能
|
| | | if (report.DeviceStatusReport.CluterID == 6)
|
| | | {
|
| | | var dimmableLight = deviceUI as DimmableLight;
|
| | | dimmableLight.DeviceStatusReport = report.DeviceStatusReport;
|
| | | dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = dimmableLight.OnOffStatus == 1;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | dimmableLight.LastDateTime = DateTime.Now;
|
| | | }
|
| | |
|
| | | //亮度
|
| | | if (report.DeviceStatusReport.CluterID == 8)
|
| | | {
|
| | | var dimmableLight = deviceUI as DimmableLight;
|
| | | dimmableLight.DeviceStatusReport = report.DeviceStatusReport;
|
| | | var attriButeList = dimmableLight.DeviceStatusReport.AttriBute;
|
| | | switch (attriButeList[0].AttributeId)
|
| | | {
|
| | | case 0:
|
| | | //此属性表明当前亮度程度
|
| | | dimmableLight.Level = attriButeList[0].AttriButeData;
|
| | | dimmableLight.LastDateTime = DateTime.Now;
|
| | | //(rowFL.GetChildren(j) as FunctionMainView).IsSelected = true;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | break;
|
| | | }
|
| | | }
|
| | | break;
|
| | | case DeviceType.TemperatureSensor:
|
| | | //温度
|
| | | if (report.DeviceStatusReport.CluterID == 1026)
|
| | | {
|
| | | var tempera = deviceUI as TemperatureSensor;
|
| | | foreach (var data in report.DeviceStatusReport.AttriBute)
|
| | | {
|
| | | if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
|
| | | {
|
| | | if (data.AttriButeData == 0)
|
| | | {
|
| | | tempera.Temperatrue = 0;
|
| | | }
|
| | | else if (data.AttriButeData > 32767)
|
| | | {
|
| | | //负数(特殊处理)
|
| | | string strValue = (data.AttriButeData - 65536).ToString();
|
| | | //小数点需要一位
|
| | | strValue = strValue.Substring(0, strValue.Length - 1);
|
| | | tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
|
| | | }
|
| | | else
|
| | | {
|
| | | //小数点需要一位
|
| | | string strValue = data.AttriButeData.ToString();
|
| | | strValue = strValue.Substring(0, strValue.Length - 1);
|
| | | tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
|
| | | }
|
| | |
|
| | | tempera.LastDateTime = DateTime.Now;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | }
|
| | | }
|
| | | }
|
| | | //湿度
|
| | | if (report.DeviceStatusReport.CluterID == 1029)
|
| | | {
|
| | | var tempera = deviceUI as TemperatureSensor;
|
| | | foreach (var data in report.DeviceStatusReport.AttriBute)
|
| | | {
|
| | | if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
|
| | | {
|
| | | if (data.AttriButeData == 0)
|
| | | {
|
| | | tempera.Humidity = 0;
|
| | | }
|
| | | else
|
| | | {
|
| | | //小数点需要一位(湿度没有负数)
|
| | | string strValue = data.AttriButeData.ToString();
|
| | | strValue = strValue.Substring(0, strValue.Length - 1);
|
| | | tempera.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
|
| | | }
|
| | | tempera.LastDateTime = DateTime.Now;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | }
|
| | | }
|
| | | }
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | }, ShowErrorMode.NO);
|
| | | });
|
| | |
|
| | | //传感器上报
|
| | | HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewSensor", ReceiveComandDiv.A传感器上报, (report) =>
|
| | | {
|
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | {
|
| | | for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++)
|
| | | {
|
| | | var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout;
|
| | | if (rowFL.ChildrenCount == 0)
|
| | | {
|
| | | //设备为空或者控件为空
|
| | | continue;
|
| | | }
|
| | |
|
| | | for (int j = 0; j < rowFL.ChildrenCount; j++)
|
| | | {
|
| | | var deviceUI = LocalDevice.Current.GetDevice((rowFL.GetChildren(j) as FunctionMainView).Tag.ToString());
|
| | | if (deviceUI == null)
|
| | | {
|
| | | //设备为空或者控件为空
|
| | | continue;
|
| | | }
|
| | | if (report.DeviceAddr != deviceUI.DeviceAddr || report.DeviceEpoint != deviceUI.DeviceEpoint)
|
| | | {
|
| | | //判断是否为当前设备
|
| | | continue;
|
| | | }
|
| | |
|
| | | switch (deviceUI.Type)
|
| | | {
|
| | | case DeviceType.IASZone:
|
| | | //ias
|
| | | var ias = report as IASZone;
|
| | | var iAS = deviceUI as ZigBee.Device.IASZone;
|
| | | iAS.iASInfo = ias.iASInfo;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).IsSelected = iAS.iASInfo?.Alarm1 == 1;
|
| | | (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
|
| | | iAS.LastDateTime = DateTime.Now;
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | }, ShowErrorMode.NO);
|
| | | });
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 切换楼层___________________________ |
| | |
|
| | | /// <summary> |
| | | /// 显示选择楼层的界面 |
| | | /// </summary> |
| | | private void ShowSelectFloorForm() |
| | | { |
| | | var floorFL = new Device.Category.SelectFloor(); |
| | | this.AddChidren(floorFL); |
| | | floorFL.Init(35, 153); |
| | | floorFL.changeFloor = true; |
| | | floorFL.FloorAction = (floorId) => |
| | | { |
| | | this.btnFloor.Text = Config.Instance.Home.GetFloorNameById(floorId);
|
| | | HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom(); |
| | | this.ShowForm(); |
| | | }; |
| | | }
|
| | |
|
| | | #endregion |
| | |
|
| | | #region ■ 界面关闭___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 界面关闭
|
| | | /// </summary>
|
| | | public override void CloseFormBefore()
|
| | | {
|
| | | HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceStatus");
|
| | | HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewSensor");
|
| | |
|
| | | base.CloseFormBefore();
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 一般方法___________________________ |
| | |
|
| | | /// <summary> |
| | | /// 检测是否绑定有网关 |
| | | /// </summary> |
| | | private bool CheckHadBindGateway() |
| | | { |
| | | //获取本地已经绑定的网关 |
| | | var gatewayList = HdlGatewayLogic.Current.GetAllLocalGateway(); |
| | | if (gatewayList.Count == 0) |
| | | { |
| | | return false; |
| | | } |
| | | //主人或者管理员才行 |
| | | if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | #endregion |