using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using Shared.Common;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DoorLock
{
public class UserDoorLockPage : DoorLockCommonLayout, ZigBee.Common.IStatus
{
#region 界面
///
/// 构造函数
///
///
///
public UserDoorLockPage(Room room, CommonDevice doorLock)
{
//徐梅的门锁界面打开(网关全局接收时使用)
//ControlCommonResourse.IsDoorLockPageOpen = true;
this.doorLock = doorLock as ZigBee.Device.DoorLock;
currentRoom = room;
deviceUI = doorLock;
BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor;
ZbGateway.StatusList.Add(this);
Application.RunOnMainThread(() =>
{
UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction += (DoorlockKey, status) =>
{
var key = doorLock.DeviceAddr;
if (DoorlockKey == key)
{
DoorLockCommonInfo.NormallyOpenModeValue(this.doorLock, status);
UpdateNomallyOpenStatus();
}
};
});
}
#region 变量申明
///
/// 当前门锁
///
ZigBee.Device.DoorLock doorLock;
///
/// 音量数据
///
ZigBee.Device.DoorLock.VolumeResponseData volumeData = null;
///
/// 等待获取电量的等待时间
///
DateTime waitGetDoorLockPower = DateTime.MaxValue;
///
/// 逻辑中是否有常开模式
///
private bool haveLogicNormallyOpenMode = false;
///
/// 当前电量
///
bool canVolume = false;
///
/// 是否支持常开
///
bool canOpenNormallyMode = false;
///
/// IsDrawerLockMode[主页左滑]
///
public bool IsDrawerLockMode;
///
/// 当前电量
///
int currentPower = 0;
///
/// 保留上一次音量
///
int oldVolume = -1;
///
/// 当前房间
///
Room currentRoom;
///
/// 设备UI对象
///
CommonDevice deviceUI;
///
/// 设置二次验证Action
///
Action action;
///
/// 中部布局中门锁名称显示
///
NormalViewControl btnDoorLockTitle;
///
/// 分享
///
Button btnShare;
///
/// 设置
///
Button btnFuncSet;
///
/// 设置FrameLayout
///
FrameLayout btnFuncSetFrameLayout;
FrameLayout progressFrameLayoutMatch;
///
/// 点击开布局
///
private FrameLayout openFrameLayout;
///
/// 点击关布局
///
private FrameLayout closeFrameLayout;
///
/// 打开图片
///
Button btnDoorOpenPic;
///
/// 搜藏UI
///
FrameLayout btnCollectFrameLayout;
///
/// 搜藏
///
Button btnCollect;
///
/// 记录UI
///
FrameLayout btnRecordFrameLayout;
///
/// 记录按钮
///
Button btnRecord;
///
/// 当前状态
///
Button btnStatus;
///
/// 当前电量文本
///
Button btnCurrentPowerText;
///
/// 进度按钮
///
Button progressButton;
///
/// 进度
///
DiyImageVerticalSeekBar diyImageVerticalSeekBar;
///
/// 进度文本
///
Button progressText;
///
/// 门锁关图片
///
Button btnDoorClosePic;
///
/// 门锁开/关图片
///
Button btnDoorLockPic;
///
/// 电量
///
Button btnPower;
///
/// 常开
///
Button btnNormallyOpen;
///
/// 音量
///
Button btnVolume;
///
/// 常开FrameLayout
///
FrameLayout btnNormallyOpenFrameLayout;
///
/// 音量FrameLayout
///
FrameLayout btnVolumeFrameLayout;
///
/// 当前音量
///
int currentVolume = -1;
///
/// waitClickTime
///
DateTime waitClickTime = DateTime.MaxValue;
///
/// IsClick
///
bool IsClick = true;
#endregion
///
/// UI显示
///
public void Show()
{
this.TopFrameLayout(this, "");
this.MidFrameLayout(this);
btnShare = new Button
{
X = Application.GetRealWidth(850 - 116),
Height = Application.GetRealHeight(69),
Width = Application.GetRealWidth(0),
};
this.titleFrameLayout.AddChidren(btnShare);
btnFuncSetFrameLayout = new FrameLayout
{
X = Application.GetRealWidth(850 - 116),
Height = Application.GetRealHeight(69),
Width = Application.GetRealWidth(69 * 2 + 58),
};
this.titleFrameLayout.AddChidren(btnFuncSetFrameLayout);
btnFuncSet = new Button
{
X = Application.GetRealWidth(103),
Height = Application.GetMinReal(69),
Width = Application.GetMinReal(69),
UnSelectedImagePath = "DoorLock/SettingIcon.png",
};
btnFuncSetFrameLayout.AddChidren(btnFuncSet);
MidFrameLayoutUI();
ClickHandle();
if (Common.LocalDevice.Current.CheckDeviceIsOnline(doorLock) == true)
{
ReadDoorLockUserInfo();
}
else
{
string msg1 = Language.StringByID(R.MyInternationalizationString.DoorLockOffLine);
this.ShowTipMsg(msg1);
return;
}
}
///
/// 中部布局
///
public void MidFrameLayoutUI()
{
var midTopFrameLayout = new FrameLayout()
{
X = Application.GetRealWidth(58),
Y = Application.GetRealHeight(115),
Height = Application.GetRealHeight(1238),
Width = Application.GetRealWidth(965),
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
Radius = 6,
};
this.midFrameLayout.AddChidren(midTopFrameLayout);
//设备名称
btnDoorLockTitle = new NormalViewControl(100, 60, true);
btnDoorLockTitle.Y = Application.GetRealHeight(46);
btnDoorLockTitle.TextSize = 15;
btnDoorLockTitle.IsBold = true;
btnDoorLockTitle.Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock);
btnDoorLockTitle.Width = btnDoorLockTitle.GetRealWidthByText();
btnDoorLockTitle.TextAlignment = TextAlignment.Center;
btnDoorLockTitle.Gravity = Gravity.CenterHorizontal;
midTopFrameLayout.AddChidren(btnDoorLockTitle);
//记录
btnRecordFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(69 + 15 + 46),
Height = Application.GetRealHeight(69 + 46 * 2),
X = Application.GetRealWidth(752 - 46),
};
midTopFrameLayout.AddChidren(btnRecordFrameLayout);
btnRecord = new Button()
{
Width = Application.GetMinReal(69),
Height = Application.GetMinReal(69),
X = Application.GetRealWidth(46),
Y = Application.GetRealHeight(46),
UnSelectedImagePath = "DoorLock/RecordIcon.png",
};
btnRecordFrameLayout.AddChidren(btnRecord);
//搜藏UI
btnCollectFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(69 + 15 + 46),
Height = Application.GetRealHeight(69 + 46 * 2),
X = Application.GetRealWidth(850 - 15),
};
midTopFrameLayout.AddChidren(btnCollectFrameLayout);
btnCollect = new Button()
{
Width = Application.GetMinReal(69),
Height = Application.GetMinReal(69),
X = Application.GetRealWidth(15),
Y = Application.GetRealHeight(46),
UnSelectedImagePath = "Item/Collection.png",
SelectedImagePath = "Item/CollectionSelected.png"
};
btnCollectFrameLayout.AddChidren(btnCollect);
//当前状态
btnStatus = new Button()
{
Width = Application.GetRealWidth(132 + 351),
Height = Application.GetRealHeight(40),
Y = Application.GetRealHeight(118),
Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.CLose),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
TextSize = 10,
TextAlignment = TextAlignment.CenterRight,
};
midTopFrameLayout.AddChidren(btnStatus);
//当前电量
btnCurrentPowerText = new Button()
{
Width = Application.GetRealWidth(133 + 348),
Height = Application.GetRealHeight(40),
X = btnStatus.Right,
Y = Application.GetRealHeight(118),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
Text = Language.StringByID(R.MyInternationalizationString.DoorLockPower) + "%",
TextSize = 10,
TextAlignment = TextAlignment.CenterLeft,
};
midTopFrameLayout.AddChidren(btnCurrentPowerText);
#if Android
btnCurrentPowerText.X = btnStatus.Right + Application.GetRealWidth(20);
#endif
//门锁开/关图片
btnDoorLockPic = new Button()
{
Width = Application.GetMinReal(383),
Height = Application.GetMinReal(343),
X = Application.GetRealWidth(161),
Y = Application.GetRealHeight(415),
UnSelectedImagePath = "DoorLock/DoorLockPicClose.png",
SelectedImagePath = "DoorLock/DooorLockPicOpen.png",
};
midTopFrameLayout.AddChidren(btnDoorLockPic);
#region 开/关点击布局
var btnFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(420 - 46),
Height = Application.GetRealHeight(446),
X = btnDoorLockPic.Right,
Y = Application.GetRealHeight(354),
BackgroundColor = ZigbeeColor.Current.XMWhite,
};
midTopFrameLayout.AddChidren(btnFrameLayout);
openFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(420),//639-35
Height = Application.GetRealHeight(446 / 2),
BackgroundColor = ZigbeeColor.Current.XMWhite,
};
btnFrameLayout.AddChidren(openFrameLayout);
closeFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(420),//639-35
Height = Application.GetRealHeight(446 / 2),
Y = Application.GetRealHeight(446 / 2),
BackgroundColor = ZigbeeColor.Current.XMWhite,
};
btnFrameLayout.AddChidren(closeFrameLayout);
progressFrameLayoutMatch = new FrameLayout()
{
Width = Application.GetRealHeight(84),//639-35
Height = Application.GetRealHeight(446),
X = Application.GetMinReal(51),
BackgroundColor = ZigbeeColor.Current.XMWhite,
};
btnFrameLayout.AddChidren(progressFrameLayoutMatch);
var progressFrameLayout = new FrameLayout()
{
Width = Application.GetRealHeight(17),//639-35
Gravity = Gravity.CenterHorizontal,
BackgroundColor = ZigbeeColor.Current.XMVerticalSeekBar,
};
progressFrameLayoutMatch.AddChidren(progressFrameLayout);
progressButton = new Button()
{
Width = Application.GetMinReal(84),//639-35
Height = Application.GetMinReal(93),
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(347),
UnSelectedImagePath = "DoorLock/UnLockButton.png",
};
progressFrameLayoutMatch.AddChidren(progressButton);
btnDoorOpenPic = new Button()
{
Width = Application.GetMinReal(81),
Height = Application.GetMinReal(81),
X = Application.GetRealWidth(164),
Y = Application.GetRealHeight(6),
UnSelectedImagePath = "DoorLock/DoorLockOpen.png",
};
openFrameLayout.AddChidren(btnDoorOpenPic);
btnDoorClosePic = new Button()
{
Width = Application.GetMinReal(81),
Height = Application.GetMinReal(81),
X = Application.GetRealWidth(164),
Y = Application.GetRealHeight(117),
UnSelectedImagePath = "DoorLock/DoorLockClose.png",
};
closeFrameLayout.AddChidren(btnDoorClosePic);
#endregion
//电量
btnPower = new Button()
{
Width = Application.GetMinReal(81),
Height = Application.GetMinReal(81),
X = Application.GetRealWidth(253),
Y = Application.GetRealHeight(994),
UnSelectedImagePath = "DoorLock/PowerOffline.png",
};
midTopFrameLayout.AddChidren(btnPower);
//音量
btnVolumeFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(81 + 80),
Height = Application.GetRealHeight(81 + 80),
X = Application.GetRealWidth(444 - 40),
Y = Application.GetRealHeight(994 - 40),
};
midTopFrameLayout.AddChidren(btnVolumeFrameLayout);
btnVolume = new Button()
{
Width = Application.GetMinReal(81),
Height = Application.GetMinReal(81),
X = Application.GetRealWidth(40),
Y = Application.GetRealHeight(40),
UnSelectedImagePath = "DoorLock/VolumeIcon.png",
SelectedImagePath = "DoorLock/VolumeIconOn.png",
};
btnVolumeFrameLayout.AddChidren(btnVolume);
//常开
btnNormallyOpenFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(81 + 80),
Height = Application.GetRealHeight(81 + 80),
X = Application.GetRealWidth(631 - 40),
Y = Application.GetRealHeight(994 - 40),
};
midTopFrameLayout.AddChidren(btnNormallyOpenFrameLayout);
btnNormallyOpen = new Button()
{
Width = Application.GetMinReal(81),
Height = Application.GetMinReal(81),
X = Application.GetRealWidth(40),
Y = Application.GetRealHeight(40),
UnSelectedImagePath = "DoorLock/NormallyOpen.png",
SelectedImagePath = "DoorLock/NormallyOpenOn.png",
};
btnNormallyOpenFrameLayout.AddChidren(btnNormallyOpen);
#region 背景圆角设置
var btnCurrentTopFrameLayout = new FrameLayout()
{
Height = Application.GetRealHeight(50),
Width = Application.GetRealWidth(965),
BackgroundColor = ZigbeeColor.Current.XMBlack,
Y = Application.GetRealHeight(1100),
};
midTopFrameLayout.AddChidren(btnCurrentTopFrameLayout);
var btnCurrentFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(965),
Height = Application.GetRealHeight(138),
Y = Application.GetRealHeight(1100),
BackgroundColor = ZigbeeColor.Current.XMBlack,
Radius = 6,
};
midTopFrameLayout.AddChidren(btnCurrentFrameLayout);
#endregion
#region 当前房间
var btnCurrentRoomPic = new Button()
{
Width = Application.GetMinReal(81),
Height = Application.GetMinReal(81),
X = Application.GetRealWidth(58),
Y = Application.GetRealHeight(29),
UnSelectedImagePath = "DoorLock/RoomPic.png",
};
btnCurrentFrameLayout.AddChidren(btnCurrentRoomPic);
var btnCurrentRoomName = new Button()
{
Width = Application.GetRealWidth(172),
Height = Application.GetRealHeight(49),
X = Application.GetRealWidth(150),
Y = Application.GetRealHeight(46),
Text = currentRoom.Name,
TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
TextSize = 12,
TextAlignment = TextAlignment.CenterLeft,
};
btnCurrentFrameLayout.AddChidren(btnCurrentRoomName);
#endregion
}
#region 音量弹窗
///
/// 进度条
///
private void VolumeDialog(Button progressText, DiyImageVerticalSeekBar diyImageVerticalSeekBar)
{
var dialog = new Dialog { };
dialog.Show();
var flMain = new FrameLayout { BackgroundColor = 0x00000000 };
dialog.AddChidren(flMain);
flMain.MouseUpEventHandler += (sender11, e11) =>
{
dialog.Close();
//设置音量
if (currentVolume != oldVolume)
{
SetVolume(currentVolume);
}
};
var progressBackground = new FrameLayout()
{
Width = Application.GetRealWidth(271),
Height = Application.GetRealHeight(700),
X = Application.GetRealWidth(403),
Y = Application.GetRealHeight(582),
BackgroundImagePath = "DoorLock/ProgressBackground.png",
};
flMain.AddChidren(progressBackground);
//var progressValue = (currentVolume * (Convert.ToInt32(((float)100 / 15) * 100))) / 100;
progressText = new Button()
{
Height = Application.GetRealHeight(58),
Y = Application.GetRealHeight(89),
TextColor = ZigbeeColor.Current.XMGray2,
TextAlignment = TextAlignment.Center,
Text = currentVolume.ToString() + "%",
};
diyImageVerticalSeekBar = new DiyImageVerticalSeekBar()
{
Width = Application.GetRealWidth(271),
Height = Application.GetRealHeight(447 + 63),
Y = Application.GetRealHeight(155),
IsProgressTextShow = false,//显示百分比
ProgressBarColor = ZigbeeColor.Current.XMProgressBarColor,//选中进度条颜色
SeekBarBackgroundColor = ZigbeeColor.Current.XMSeekBarBackgroundColor,//选中进度条颜色
ThumbImagePath = "DoorLock/UnLockButton.png",//进度条按钮图标
ThumbImageHeight = Application.GetRealHeight(81),//进度条按钮图标的高度(默认正方形:宽和高一样)
ProgressTextColor = ZigbeeColor.Current.LogicBtnCancelColor,
ProgressTextSize = 12,//显示百分比字体大小
SeekBarViewHeight = Application.GetRealHeight(17),//进度条的宽度
Progress = currentVolume,
};
progressBackground.AddChidren(progressText);
progressBackground.AddChidren(diyImageVerticalSeekBar);
diyImageVerticalSeekBar.OnProgressChangedEvent += (sender, e) =>
{
int curVolume = -1;
curVolume = e;
currentVolume = curVolume;
progressText.Text = e.ToString() + "%";
};
}
#endregion
#endregion
#region 处理接口数据
///
/// 处理变化事件
///
///
///
public void DeviceInfoChange(CommonDevice tempDevice, string typeTag)
{
//机械开锁上报。处理常开状态,开关状态
if (typeTag == "DoorLockProgrammingEventNotificationCommand" && tempDevice != null)
{
var tempDoor = (ZigBee.Device.DoorLock)tempDevice;
if (tempDevice.DeviceEpoint == doorLock.DeviceEpoint
&& tempDevice.DeviceAddr == doorLock.DeviceAddr)
{
if (tempDoor.doorLockOperatingEventNotificationCommand != null)
{
//非主人不弹这个窗口
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
{
return;
}
if (doorLock.IsDoorLockNormallyMode)
{
if (canOpenNormallyMode)
{
Application.RunOnMainThread(() =>
{
Action action = (obj) =>
{
UpdateNomallyOpenStatus();
};
DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.ServicePush, haveLogicNormallyOpenMode, action);
});
}
}
}
}
}
if (typeTag == "DeviceStatusReport" && tempDevice != null)
{
if (tempDevice != null)
{
if (tempDevice.DeviceEpoint == doorLock.DeviceEpoint
&& tempDevice.DeviceAddr == doorLock.DeviceAddr)
{
if (tempDevice.DeviceStatusReport != null && tempDevice.DeviceStatusReport.AttriBute != null)
{
var dataReport = tempDevice.DeviceStatusReport.AttriBute[0];
if (tempDevice.DeviceStatusReport.CluterID == 1 && dataReport.AttributeId == 33)
{
Application.RunOnMainThread(() =>
{
currentPower = dataReport.AttriButeData;
UpdatePower();
});
}
}
}
}
}
}
///
/// 初始化数据
///
void ReadDoorLockUserInfo()
{
System.Threading.Tasks.Task.Run(async () =>
{
try
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Start("");
});
//是否支持常开
canOpenNormallyMode = DoorLockCommonInfo.CanNormallyOpen(doorLock);
if (canOpenNormallyMode)
{
//1、获取门锁常开模式
var resultRes = await DoorLockCommonInfo.GetNormallyOpenMode(doorLock);
if (resultRes == null)
{
Application.RunOnMainThread(() =>
{
btnNormallyOpen.UnSelectedImagePath = "DoorLock/NormallyOpenOffline.png";
btnNormallyOpen.Enable = false;
string msg = Language.StringByID(R.MyInternationalizationString.GetNormallyOpenModeFailed);
this.ShowTipMsg(msg);
});
}
else
{
var tempRes = false;
if (resultRes == true)
{
tempRes = true;
}
else
{
tempRes = false;
}
DoorLockCommonInfo.NormallyOpenModeValue(doorLock, tempRes);
Application.RunOnMainThread(async () =>
{
var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(2, doorLock);
if (resTemp == 0)
{
haveLogicNormallyOpenMode = false;
}
else
{
haveLogicNormallyOpenMode = true;
}
});
}
}
else
{
Application.RunOnMainThread(() =>
{
btnNormallyOpenFrameLayout.Width = Application.GetRealWidth(0);
});
}
//是否支持音量
canVolume = DoorLockCommonInfo.CanVolume(doorLock);
if (canVolume)
{
//2、读取音量
var resultRes = await doorLock.GetVolumeAsync();
if (resultRes == null || resultRes.volumeResponseData == null)
{
var listDevice = new List { };
listDevice.Add(doorLock);
var devTemp = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice);
if (devTemp.ConcreteType == DeviceConcreteType.IntelligentLocks_Sone)
{
Application.RunOnMainThread(() =>
{
var volumeMsg = Language.StringByID(R.MyInternationalizationString.GetVolumeFailed);
this.ShowTipMsg(volumeMsg);
});
}
}
else
{
volumeData = resultRes.volumeResponseData;
Application.RunOnMainThread(() =>
{
UpdateVolume();
});
}
}
else
{
Application.RunOnMainThread(() =>
{
btnVolumeFrameLayout.Width = Application.GetRealWidth(0);
btnPower.X = Application.GetRealWidth(444);
});
}
//3、读取门锁电量:簇ID:1 属性ID 33
doorLock.ReadAttri(Cluster_ID.Power, AttriButeId.DoorLockPower);
//上报电量等1秒
System.Threading.Thread.Sleep(1000);
}
catch (Exception ex)
{
var mess = ex.Message;
}
finally
{
Application.RunOnMainThread(() =>
{
UpdateNomallyOpenStatus();
CommonPage.Loading.Hide();
});
}
});
}
#endregion
#region 公共事件处理
///
/// 事件处理
///
public void ClickHandle()
{
//门锁标题
btnDoorLockTitle.Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock);
//返回
EventHandler eHandlerBack = (sender, e) =>
{
RemoveFromParent();
};
this.btnBack.MouseUpEventHandler += eHandlerBack;
this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
//设置
EventHandler btnFuncSetHander = (sender, e) =>
{
var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(currentRoom, doorLock);
Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
functionSetting.Show();
//DoorLockCommonInfo.canShowDialog = false;
functionSetting.devicNameAction += (deviceRename) =>
{
if (!string.IsNullOrEmpty(deviceRename))
{
btnDoorLockTitle.Text = deviceRename;
//改房间
HdlRoomLogic.Current.ChangedRoom(deviceUI, currentRoom.Id);
deviceUI.ReSave();
}
};
};
btnFuncSetFrameLayout.MouseDownEventHandler += btnFuncSetHander;
btnFuncSet.MouseDownEventHandler += btnFuncSetHander;
//搜藏状态
if (HdlRoomLogic.Current.IsCollectInRoom(deviceUI) == false)
{
btnCollect.IsSelected = false;
}
else
{
btnCollect.IsSelected = true;
}
//历史记录点击事件
EventHandler handerRecord = (sender, e) =>
{
//历史记录 ---- stan
var form = new DeviceDoorLock.DoorLockHistoryLogForm();
form.AddForm(this.doorLock.DeviceAddr);
//DoorLockCommonInfo.canShowDialog = false;
};
btnRecordFrameLayout.MouseDownEventHandler += handerRecord;
btnRecord.MouseDownEventHandler += handerRecord;
//收藏点击事件
EventHandler handerCollect = (sender, e) =>
{
btnCollect.IsSelected = !btnCollect.IsSelected;
if (btnCollect.IsSelected)
{
HdlRoomLogic.Current.AddLoveDevice(deviceUI);//收藏
}
else
{
HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);//取消收藏
}
};
btnCollectFrameLayout.MouseDownEventHandler += handerCollect;
btnCollect.MouseDownEventHandler += handerCollect;
//开锁事件
EventHandler hander1 = async (sender, e) =>
{
if (doorLock.IsDoorLockNormallyMode)
{
if (canOpenNormallyMode)
{
Application.RunOnMainThread(() =>
{
Action action = (obj) =>
{
UpdateNomallyOpenStatus();
};
DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action);
});
}
else
{
OpenDoorLockHandle(progressButton, btnDoorLockPic, btnStatus);
}
}
else
{
OpenDoorLockHandle(progressButton, btnDoorLockPic, btnStatus);
}
};
openFrameLayout.MouseUpEventHandler += hander1;
btnDoorOpenPic.MouseUpEventHandler += hander1;
if (progressButton.Y == Application.GetRealHeight(10))
{
progressFrameLayoutMatch.MouseUpEventHandler += hander1;
}
//关锁事件
EventHandler hander2 = (sender, e) =>
{
if (canOpenNormallyMode)
{
if (doorLock.IsDoorLockNormallyMode)
{
Application.RunOnMainThread(() =>
{
Action action = (obj) =>
{
UpdateNomallyOpenStatus();
};
DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action);
});
}
}
else
{
btnDoorLockPic.IsSelected = false;
progressButton.Y = Application.GetRealHeight(347);
}
};
closeFrameLayout.MouseUpEventHandler += hander2;
btnDoorClosePic.MouseUpEventHandler += hander2;
//音量点击事件
EventHandler handerVolume = (sender, e) =>
{
if (canVolume)
{
VolumeDialog(progressText, diyImageVerticalSeekBar);
}
};
btnVolumeFrameLayout.MouseDownEventHandler += handerVolume;
btnVolume.MouseDownEventHandler += handerVolume;
//常开模式点击事件
EventHandler handerNormallyOpen = (sender, e) =>
{
NomallyOpenDialog();
};
btnNormallyOpenFrameLayout.MouseUpEventHandler += handerNormallyOpen;
btnNormallyOpen.MouseUpEventHandler += handerNormallyOpen;
}
#endregion
#region 电量显示
///
/// 电量更新
///
private void UpdatePower()
{
btnCurrentPowerText.Text = Language.StringByID(R.MyInternationalizationString.DoorLockPower) + currentPower + "%";
if (currentPower <= 20 && currentPower >= 0)
{
btnPower.UnSelectedImagePath = "DoorLock/LowPower.png";
}
else if (currentPower <= 40 && currentPower > 20)
{
btnPower.UnSelectedImagePath = "DoorLock/Power40.png";
}
else if (currentPower <= 60 && currentPower > 40)
{
btnPower.UnSelectedImagePath = "DoorLock/Power60.png";
}
else if (currentPower <= 80 && currentPower > 60)
{
btnPower.UnSelectedImagePath = "DoorLock/Power80.png";
}
else if (currentPower <= 100 && currentPower > 80)
{
btnPower.UnSelectedImagePath = "DoorLock/Power100.png";
}
else
{
btnPower.UnSelectedImagePath = "DoorLock/PowerOffline.png";
}
}
#endregion
#region 音量
///
/// 更新音量
///
private void UpdateVolume()
{
if (volumeData != null)
{
int curVol = 0;
btnVolume.IsSelected = true;
if (volumeData.command == "eb")
{
curVol = 0;
}
else
{
curVol = volumeData.value;
}
oldVolume = currentVolume = curVol;
}
}
///
/// 设置音量
///
private void SetVolume(int volume)
{
System.Threading.Tasks.Task.Run(async () =>
{
try
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Start("");
});
var resultRes = await doorLock.SetVolumeAsync(volume);
if (resultRes == null || resultRes.defaultControlResponseData == null)
{
Application.RunOnMainThread(() =>
{
var volumeMsg = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
this.ShowTipMsg(volumeMsg);
currentVolume = oldVolume;
CommonPage.Loading.Hide();
});
return;
}
if (resultRes.defaultControlResponseData.status != 0)
{
Application.RunOnMainThread(() =>
{
var volumeMsg = Language.StringByID(R.MyInternationalizationString.SetVolumeFailed);
this.ShowTipMsg(volumeMsg);
currentVolume = oldVolume;
CommonPage.Loading.Hide();
});
return;
}
Application.RunOnMainThread(() =>
{
var volumeMsg = Language.StringByID(R.MyInternationalizationString.SetVolumeSuccess);
this.ShowTipMsg(volumeMsg);
oldVolume = currentVolume;
CommonPage.Loading.Hide();
});
}
catch (Exception ex)
{
var mes = ex.Message;
}
});
}
#endregion
#region 常开模式
///
/// 常开模式处理
///
private async void NomallyOpenDialog()
{
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
{
this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate));
return;
}
if (!UserCenterResourse.AccountOption.DoorUnLockByRemote)
{
SystemSecondAuthentication();
return;
}
action = () =>
{
//WJC的代码:系统密码支持操作门锁后,调用温居城的界面【常开自动化】
if (doorLock == null)
{
///防止抛异常
return;
}
///备注:WJC的
Shared.Phone.Device.Logic.Send.CurrentDoorLock = doorLock;
///进来刷新一次设备列表;
Common.Logic.LogicDviceList.Clear();
if (Common.Logic.LogicDviceList.Count == 0)
{
Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray());
}
var addLogicPage = new Shared.Phone.Device.Logic.SoneLogicList();
UserView.HomePage.Instance.AddChidren(addLogicPage);
UserView.HomePage.Instance.PageIndex += 1;
addLogicPage.Show();
addLogicPage.action += async (w) =>
{
DoorLockCommonInfo.NormallyOpenModeValue(doorLock, w);
UpdateNomallyOpenStatus();
//返回按键清空当前逻辑定义的LogicAction
UserCenter.DoorLock.DoorLockCommonInfo.LogicAction = null;
//是否存在常开模式
var resTemp = Shared.Common.Logic.SoneLogicList;
if (resTemp.Count == 0)
{
haveLogicNormallyOpenMode = false;
}
else
{
haveLogicNormallyOpenMode = true;
}
UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction -= addLogicPage.updateCurrentDoorlockActionTemp;
};
};
HdlCheckLogic.Current.CheckSecondarySecurity(action);
}
///
/// 常开模式状态更新
///
private void UpdateNomallyOpenStatus()
{
if (!canOpenNormallyMode)
{
btnNormallyOpenFrameLayout.Width = Application.GetRealWidth(0);
return;
}
if (doorLock.IsDoorLockNormallyMode)
{
btnNormallyOpen.IsSelected = true;
btnDoorLockPic.IsSelected = true;
progressButton.Y = Application.GetRealHeight(10);
btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.DoorLockOpen);
}
else if (!doorLock.IsDoorLockNormallyMode)
{
btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.CLose);
btnDoorLockPic.IsSelected = false;
btnNormallyOpen.IsSelected = false;
progressButton.Y = Application.GetRealHeight(347);
}
}
#endregion
#region 开锁处理
///
/// 开锁处理
///
/// 进度按钮
/// 门锁图片
/// 状态显示
async void OpenDoorLockHandle(Button progressButton, Button btnDoorLockPic, Button btnStatus)
{
openFrameLayout.Enable = false;
btnDoorOpenPic.Enable = false;
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
{
var result = await DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
if (result == false)
{
var result1 = await DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid);
if (result1 == true)
{
RemoteUnlockRequest(currentRoom, deviceUI, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
devicNameSecAction += (deviceRename) =>
{
if (!string.IsNullOrEmpty(deviceRename))
{
btnDoorLockTitle.Text = deviceRename;
//改房间
HdlRoomLogic.Current.ChangedRoom(deviceUI, currentRoom.Id);
deviceUI.ReSave();
}
};
openFrameLayout.Enable = true;
btnDoorOpenPic.Enable = true;
}
else
{
this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.NoAccess));
openFrameLayout.Enable = true;
btnDoorOpenPic.Enable = true;
}
}
else
{
this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed));
openFrameLayout.Enable = true;
btnDoorOpenPic.Enable = true;
}
}
else
{
RemoteUnlockRequest(currentRoom, deviceUI, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
devicNameSecAction += (deviceRename) =>
{
if (!string.IsNullOrEmpty(deviceRename))
{
btnDoorLockTitle.Text = deviceRename;
//改房间
HdlRoomLogic.Current.ChangedRoom(deviceUI, currentRoom.Id);
deviceUI.ReSave();
}
};
openFrameLayout.Enable = true;
btnDoorOpenPic.Enable = true;
}
}
#endregion
#region 移除方法
///
/// 重写移除方法
///
public override void RemoveFromParent()
{
UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction = null;
if (IsDrawerLockMode)
{
CommonPage.Instance.IsDrawerLockMode = false;
}
ZbGateway.StatusList.Remove(this);
DoorLockCommonInfo.LogicAction = null;
base.RemoveFromParent();
}
#endregion
}
}