From 66a9965c44ecc32a6696abca876ab9d1cd091584 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期五, 28 二月 2020 15:25:13 +0800
Subject: [PATCH] 2020.2.28
---
ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs | 304 +++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 261 insertions(+), 43 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs
index 4e94f7b..1aa2240 100644
--- a/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs
@@ -8,7 +8,7 @@
namespace Shared.Phone.Device.Light
{
/// <summary>
- /// 鐏厜鎺у埗鐣岄潰
+ /// 寮�鍏�
/// </summary>
public class AirSwitchControl : FrameLayout, ZigBee.Common.IStatus
{
@@ -20,7 +20,7 @@
/// <summary>
/// The action.
/// </summary>
- public Action action;
+ public Action<DeviceUI, Common.Room> action;
/// <summary>
/// The light image.
@@ -62,12 +62,19 @@
private FrameLayout bodyFrameLayout;
private Button StatuBtn;
+ /// <summary>
+ /// OnBtn
+ /// </summary>
+ private Button OnBtn;
+ /// <summary>
+ /// OffBtn
+ /// </summary>
+ private Button OffBtn;
/// <summary>
/// IsDrawerLockMode
/// </summary>
public bool IsDrawerLockMode;
-
#endregion
#region 鈼� 鎺ュ彛__________________________
@@ -129,7 +136,7 @@
{
if (common.DeviceStatusReport.CluterID == 6)
{
- var light = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
+ var light = deviceUI.CommonDevice as AirSwitch;
light.DeviceStatusReport = common.DeviceStatusReport;
//璁板綍銆佹洿鏂扮姸鎬�
if (light.DeviceStatusReport.AttriBute == null || light.DeviceStatusReport.AttriBute.Count == 0)
@@ -137,8 +144,22 @@
return;
}
light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
- deviceIMG.IsSelected = switchBtn.IsSelected = light.OnOffStatus == 1;
StatuBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}";
+
+ if (device.CommonDevice.DfunctionType == DeviceFunctionType.A寮�鍏�)
+ {
+ SetONOFFStatu(light.OnOffStatus == 1);
+ }
+ else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A鎻掑骇)
+ {
+ deviceIMG.IsSelected = switchBtn.IsSelected = light.OnOffStatus == 1;
+ }
+ else
+ {
+ deviceIMG.IsSelected = switchBtn.IsSelected = light.OnOffStatus == 1;
+ }
+
+
light.LastDateTime = DateTime.Now;
}
}
@@ -151,7 +172,30 @@
}
else if (typeTag == "OnlineStatusChange")
{
-
+ Application.RunOnMainThread(() =>
+ {
+ try
+ {
+ var deviceUI = device;
+ //璁惧涓虹┖
+ if (deviceUI.CommonDevice == null)
+ {
+ return;
+ }
+ //鏄惁涓哄綋鍓嶈澶�
+ if (deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint || deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr)
+ {
+ return;
+ }
+ deviceUI.CommonDevice.IsOnline = common.IsOnline;
+ //OnBtn.IsSelected = OffBtn.IsSelected= deviceUI.CommonDevice.IsOnline == 1;
+ deviceUI.CommonDevice.LastDateTime = DateTime.Now;
+ }
+ catch (Exception ex)
+ {
+ System.Console.WriteLine($"Error:{ex.Message}");
+ }
+ });
}
}
#endregion
@@ -163,8 +207,8 @@
public override void RemoveFromParent()
{
ZbGateway.StatusList.Remove(this);
- //action();
- //action = null;
+ action(device, room);
+ action = null;
RemoveUpdateControlDeviceStatuAction();
if (IsDrawerLockMode)
{
@@ -197,7 +241,7 @@
AddBodyView(device);
- var light = dev.CommonDevice as ZigBee.Device.AirSwitch;
+ var light = dev.CommonDevice as AirSwitch;
//琛ヤ笂闈炶繙绋�
if (light.Gateway == null)
{
@@ -219,8 +263,7 @@
}
}
- var de = Shared.Common.Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
- if (de == null)
+ if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
{
collectionBtn.IsSelected = false;
}
@@ -305,10 +348,10 @@
Width = Application.GetRealWidth(500),
Height = Application.GetRealHeight(60),
Gravity = Gravity.CenterHorizontal,
- Text = device.CommonDevice.DeviceEpointName,
+ Text = Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice),
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
TextSize = 15,
- IsBold=true
+ IsBold = true
};
itemView.AddChidren(deviceNameBtn);
@@ -323,30 +366,6 @@
TextSize = 10
};
itemView.AddChidren(StatuBtn);
-
- deviceIMG = new Button()
- {
- Y = Application.GetRealHeight(389),
- Width = Application.GetMinRealAverage(377),
- Height = Application.GetMinRealAverage(435),
- Gravity = Gravity.CenterHorizontal,
- UnSelectedImagePath = "Light/DeskLamp.png",
- SelectedImagePath = "Light/DeskLampSelected.png",
- IsSelected = (device.CommonDevice as ZigBee.Device.AirSwitch).OnOffStatus == 1
- };
- itemView.AddChidren(deviceIMG);
-
- switchBtn = new Button()
- {
- Y = Application.GetRealHeight(996),
- Width = Application.GetMinRealAverage(81),
- Height = Application.GetMinRealAverage(81),
- Gravity = Gravity.CenterHorizontal,
- UnSelectedImagePath = "Item/Switch.png",
- SelectedImagePath = "Item/SwitchSelected.png",
- IsSelected = (device.CommonDevice as ZigBee.Device.AirSwitch).OnOffStatus == 1
- };
- itemView.AddChidren(switchBtn);
var roomBG = new Button
{
@@ -387,6 +406,138 @@
TextSize = 12
};
itemView.AddChidren(roomName);
+
+ AddByFunctionType(itemView);
+ }
+
+ /// <summary>
+ /// AddByFunctionType
+ /// </summary>
+ private void AddByFunctionType(FrameLayout itemView)
+ {
+ if (device.CommonDevice.DfunctionType == DeviceFunctionType.A寮�鍏�)
+ {
+ AddOnOff(itemView);
+ }
+ else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A鎻掑骇)
+ {
+ AddPlug(itemView);
+ }
+ else
+ {
+ AddLight(itemView);
+ }
+ }
+
+ /// <summary>
+ /// AddOnOff
+ /// </summary>
+ private void AddOnOff(FrameLayout itemView)
+ {
+ deviceIMG = new Button()
+ {
+ Y = Application.GetRealHeight(340),
+ Width = Application.GetMinRealAverage(579),
+ Height = Application.GetMinRealAverage(579),
+ Gravity = Gravity.CenterHorizontal,
+ UnSelectedImagePath = "Light/OnOff.png",
+ };
+ itemView.AddChidren(deviceIMG);
+
+ OffBtn = new Button
+ {
+ X = Application.GetRealWidth(294),
+ Y = Application.GetRealHeight(588),
+ Width = Application.GetMinRealAverage(81),
+ Height = Application.GetMinRealAverage(81),
+ UnSelectedImagePath = "Light/OFF.png",
+ SelectedImagePath = "Light/OFFSelected.png",
+ IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 0
+ };
+ itemView.AddChidren(OffBtn);
+
+ OnBtn = new Button
+ {
+ X = Application.GetRealWidth(590),
+ Y = Application.GetRealHeight(588),
+ Width = Application.GetMinRealAverage(81),
+ Height = Application.GetMinRealAverage(81),
+ UnSelectedImagePath = "Light/ON.png",
+ SelectedImagePath = "Light/ONSelected.png",
+ IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 1
+ };
+ itemView.AddChidren(OnBtn);
+
+ OnBtn.MouseUpEventHandler += ON;
+ OffBtn.MouseUpEventHandler += OFF;
+ }
+
+ /// <summary>
+ /// light
+ /// </summary>
+ /// <param name="itemView"></param>
+ private void AddLight(FrameLayout itemView)
+ {
+ deviceIMG = new Button()
+ {
+ Y = Application.GetRealHeight(389),
+ Width = Application.GetMinRealAverage(377),
+ Height = Application.GetMinRealAverage(435),
+ Gravity = Gravity.CenterHorizontal,
+ UnSelectedImagePath = "Light/DeskLamp.png",
+ SelectedImagePath = "Light/DeskLampSelected.png",
+ IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 1
+ };
+ itemView.AddChidren(deviceIMG);
+
+ switchBtn = new Button()
+ {
+ Y = Application.GetRealHeight(996),
+ Width = Application.GetMinRealAverage(81),
+ Height = Application.GetMinRealAverage(81),
+ Gravity = Gravity.CenterHorizontal,
+ UnSelectedImagePath = "Item/Switch.png",
+ SelectedImagePath = "Item/SwitchSelected.png",
+ IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 1
+ };
+ itemView.AddChidren(switchBtn);
+
+ switchBtn.MouseUpEventHandler += Switch;
+ deviceIMG.MouseUpEventHandler += Switch;
+ }
+
+ /// <summary>
+ /// plug
+ /// </summary>
+ /// <param name="itemView"></param>
+ private void AddPlug(FrameLayout itemView)
+ {
+ deviceIMG = new Button()
+ {
+ Y = Application.GetRealHeight(344),
+ Width = Application.GetMinRealAverage(567),
+ Height = Application.GetMinRealAverage(567),
+ Gravity = Gravity.CenterHorizontal,
+ UnSelectedImagePath = "Light/Plug.png",
+ SelectedImagePath = "Light/PlugSelected.png",
+ IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 1
+ };
+ itemView.AddChidren(deviceIMG);
+
+ switchBtn = new Button()
+ {
+ Y = Application.GetRealHeight(996),
+ Width = Application.GetMinRealAverage(81),
+ Height = Application.GetMinRealAverage(81),
+ Gravity = Gravity.CenterHorizontal,
+ UnSelectedImagePath = "Item/Switch.png",
+ SelectedImagePath = "Item/SwitchSelected.png",
+ IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 1
+ };
+ itemView.AddChidren(switchBtn);
+
+ switchBtn.MouseUpEventHandler += Switch;
+ deviceIMG.MouseUpEventHandler += Switch;
}
#endregion
@@ -397,8 +548,6 @@
/// </summary>
private void BindEvent()
{
- switchBtn.MouseUpEventHandler += Switch;
- deviceIMG.MouseUpEventHandler += Switch;
collectionBtn.MouseUpEventHandler += Collection;
}
@@ -418,13 +567,14 @@
switchBtn.IsSelected = !switchBtn.IsSelected;
deviceIMG.IsSelected = !deviceIMG.IsSelected;
StatuBtn.Text = deviceIMG.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Open)}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}";
+
if (switchBtn.IsSelected == true)
{
- (device.CommonDevice as ZigBee.Device.AirSwitch).SwitchControl(1);
+ (device.CommonDevice as AirSwitch).SwitchControl(1);
}
else
{
- (device.CommonDevice as ZigBee.Device.AirSwitch).SwitchControl(0);
+ (device.CommonDevice as AirSwitch).SwitchControl(0);
}
//鎺у埗寤舵椂鍥炶皟
DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
@@ -441,6 +591,73 @@
});
}
+ /// <summary>
+ /// ON
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="eventArgs"></param>
+ private void ON(object sender, MouseEventArgs eventArgs)
+ {
+ SetONOFFStatu(true);
+ (device.CommonDevice as AirSwitch).SwitchControl(1);
+ //鎺у埗寤舵椂鍥炶皟
+ zbGateway.ReportAction += UpdateDeviceControllStatu;
+ DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+ {
+ if (Parent == null)
+ {
+ return;
+ }
+ RemoveUpdateControlDeviceStatuAction();
+ if (sendedControlCommand == false)
+ {
+ DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+ }
+ });
+ }
+ /// <summary>
+ /// OFF
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="eventArgs"></param>
+ private void OFF(object sender, MouseEventArgs eventArgs)
+ {
+ SetONOFFStatu(false);
+ (device.CommonDevice as AirSwitch).SwitchControl(0);
+ //鎺у埗寤舵椂鍥炶皟
+ zbGateway.ReportAction += UpdateDeviceControllStatu;
+ DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+ {
+ if (Parent == null)
+ {
+ return;
+ }
+ RemoveUpdateControlDeviceStatuAction();
+ if (sendedControlCommand == false)
+ {
+ DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+ }
+ });
+ }
+
+ /// <summary>
+ /// SetONOFFStatu
+ /// </summary>
+ /// <param name="statu"></param>
+ private void SetONOFFStatu(bool statu)
+ {
+ if (statu)
+ {
+ OnBtn.IsSelected = true;
+ OffBtn.IsSelected = false;
+ }
+ else
+ {
+ OnBtn.IsSelected = false;
+ OffBtn.IsSelected = true;
+ }
+ StatuBtn.Text = statu ? $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Open)}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}";
+ }
#endregion
@@ -457,9 +674,9 @@
UserView.HomePage.Instance.AddChidren(detailInfo);
UserView.HomePage.Instance.PageIndex += 1;
detailInfo.Show(device, room);
- detailInfo.EditAction = (d,r) =>
+ detailInfo.EditAction += (curDev, curRoom) =>
{
- Show(device, room);
+ Show(curDev, curRoom);
};
}
@@ -473,6 +690,7 @@
/// <param name="e">E.</param>
private void Collection(object sender, MouseEventArgs e)
{
+ //collection
if ((sender as Button).IsSelected)
{
Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
--
Gitblit v1.8.0