using System;
using System.Collections;
using System.Collections.Generic;
using Shared.Common;
using ZigBee.Device;
using static ZigBee.Device.BindObj;
using static ZigBee.Device.Panel;
namespace Shared.Phone.UserCenter.DeviceBind
{
///
/// 按键管理
///
public class BindTargetsPage : BindCommonLayout, ZigBee.Common.IStatus
{
///
/// 按键模式接收
///
/// Common.
public void Changed(CommonDevice common)
{
Shared.Application.RunOnMainThread(() =>
{
});
}
/// 构造函数
///
///
public BindTargetsPage(ZigBee.Device.Panel key)
{
this.currentKey = key;
}
#region ◆ 变量申明__________________________
ZigBee.Device.Panel currentKey;//当前按键对象
VerticalRefreshLayout midVerticalRefreshLayout;//显示被绑定设备或场景的view
FrameLayout topFrameLayout;//显示当前模式view
int currentClusterID = 0;//按键当前簇ID
Button entryStatusPic;
Button btnPicTip;
Action> action;//按键绑定表通知
Action> devicBindAction;//设备被绑定通知
private System.Collections.Generic.List localDeviceList = new System.Collections.Generic.List();//本地设备列表
private System.Collections.Generic.List scList = new System.Collections.Generic.List { };//本地场景列表
#endregion
//初始化按键数据
private void InitListInfo()
{
System.Threading.Tasks.Task.Run(async () =>
{
try
{
Application.RunOnMainThread(() =>
{
});
localDeviceList.Clear();
scList.Clear();
//获取本地设备列表
foreach (var dev in Shared.Common.LocalDevice.Current.listAllDevice)
{
localDeviceList.Add(dev);
}
//获取本地场景列表
scList = Shared.Common.Room.AllRoomSceneUIList;
#region 读取面板当前模式
//读取按键当前模式
var tempDeata = await currentKey.ReadPanelConfigureInfoAsync();
if (tempDeata != null && tempDeata.deviceStatusReportData != null)
{
currentClusterID = tempDeata.deviceStatusReportData.CluterID;
foreach (var attr in tempDeata.deviceStatusReportData.AttriBute)
{
currentKey.panelMode = attr.AttriButeData;
currentKey.ReSave();
//读取按键当前绑定目标
var getBindList = await currentKey.GetDeviceBindAsync();
var bindDeviceListTemp = new System.Collections.Generic.List { };
var bindSceneListTemp = new System.Collections.Generic.List { };
if (getBindList != null && getBindList.getAllBindResponseData != null)
{
foreach (var b in getBindList.getAllBindResponseData.BindList)
{
if (b.BindCluster == currentClusterID)
{
if (b.BindCluster == 6)
{
if (b.BindType == 2)
{
bindSceneListTemp.Add(b);
}
else
{
bindDeviceListTemp.Add(b);
}
}
else
{
currentKey.bindList.Add(b);
}
}
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
if (currentKey.panelMode == 1)
{
currentKey.bindList = bindSceneListTemp;
currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddScene);
}
else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
{
currentKey.bindList = bindDeviceListTemp;
currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddSwitch);
}
else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 202 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
{
currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddDimmer);
}
else if (currentKey.panelMode == 300 || currentKey.panelMode == 301 || currentKey.panelMode == 302 || currentKey.panelMode == 303 || currentKey.panelMode == 304)
{
currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddCurtain);
}
}
#endregion
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
catch { }
finally
{
Application.RunOnMainThread(() =>
{
RefreshList();
CommonPage.Loading.Hide();
});
}
});
}
///
/// 按键绑定页显示
///
public void Show()
{
#region TopFrameLayout
this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.AddBindTargets));
EventHandler eHandlerBack = (sender, e) =>
{
RemoveFromParent();
};
this.btnBack.MouseUpEventHandler += eHandlerBack;
this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
this.MidFrameLayout(this);
var btnAddFrameLayout = new FrameLayout()
{
X = Application.GetRealWidth(913),
Width = Application.GetRealWidth(192),
};
this.titleFrameLayout.AddChidren(btnAddFrameLayout);
var btnBindAdd = new Button
{
Height = Application.GetRealHeight(72),
Width = Application.GetRealWidth(72),
UnSelectedImagePath = "BindPic/BindAdd.png",
};
btnAddFrameLayout.AddChidren(btnBindAdd);
#endregion
#region eHandlerAdd
EventHandler eHandlerAdd = (sender, e) =>
{
if (currentKey.bindList.Count != 0)
{
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene))
{
currentClusterID = 6;
currentKey.panelMode = 1;
var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addScenePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addScenePage.action += action;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch))
{
currentClusterID = 6;
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddSwitch");
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
devicBindAction = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addDevicePage.actionAddDevicePage += devicBindAction;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer))
{
currentClusterID = 8;
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddDimmer");
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addDevicePage.actionAddDevicePage += action;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain))
{
currentClusterID = 258;
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddCurtain");
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addDevicePage.actionAddDevicePage += action;
}
}
else
{
SideslipFramelayout();
}
};
btnBindAdd.MouseDownEventHandler += eHandlerAdd;
btnAddFrameLayout.MouseDownEventHandler += eHandlerAdd;
#endregion
CommonPage.Loading.Start("");
InitListInfo();
}
void middleFrameLayout()
{
topFrameLayout = new FrameLayout
{
Height = Application.GetMinRealAverage(0),
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
};
this.midFrameLayout.AddChidren(topFrameLayout);
#region BindEmptyPic UI
entryStatusPic = new Button
{
X = Application.GetRealWidth(213),
Y = Application.GetRealHeight(418),
UnSelectedImagePath = "BindPic/BindEmptyPic.png",
Visible = false,
};
this.midFrameLayout.AddChidren(entryStatusPic);
btnPicTip = new Button
{
Y = Application.GetRealHeight(1020),
Text = Language.StringByID(R.MyInternationalizationString.NoControlTargets),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
Gravity = Gravity.CenterHorizontal,
Visible = false,
};
this.midFrameLayout.AddChidren(btnPicTip);
#endregion
midVerticalRefreshLayout = new VerticalRefreshLayout()
{
};
this.midFrameLayout.AddChidren(midVerticalRefreshLayout);
midVerticalRefreshLayout.BeginHeaderRefreshingAction += () =>
{
midVerticalRefreshLayout.BeginHeaderRefreshing();
InitListInfo();
midVerticalRefreshLayout.EndHeaderRefreshing();
};
}
///
/// 按键绑定表显示
///
async void RefreshList()
{
this.midFrameLayout.RemoveAll();
middleFrameLayout();
midVerticalRefreshLayout.RemoveAll();
var frameLayoutRow = new FrameLayout()
{
Height = Application.GetMinRealAverage(0),
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
};
midVerticalRefreshLayout.AddChidren(frameLayoutRow);
#region 数据处理
if (currentKey.bindList.Count == 0)
{
entryStatusPic.Height = Application.GetRealHeight(556);
entryStatusPic.Width = Application.GetRealWidth(654);
btnPicTip.Height = Application.GetRealHeight(49);
btnPicTip.Visible = true;
entryStatusPic.Visible = true;
midVerticalRefreshLayout.Height = Application.GetRealHeight(0);
}
else
{
entryStatusPic.Height = Application.GetRealHeight(0);
entryStatusPic.Width = Application.GetRealWidth(0);
btnPicTip.Height = Application.GetRealHeight(0);
btnPicTip.Visible = false;
entryStatusPic.Visible = false;
if (currentKey.panelMode == 1)
{
topFrameLayout.Height = Application.GetRealHeight(0);
midVerticalRefreshLayout.Y = Application.GetRealHeight(0);
}
else
{
topFrameLayout.Height = Application.GetRealHeight(150);
midVerticalRefreshLayout.Y = Application.GetRealHeight(150);
BindModeDisplay();
}
int curIndex = 0;
for (int i = 0; i < currentKey.bindList.Count; i++)
{
curIndex = i;
var bindDevice = currentKey.bindList[i];
SceneUI curSceneUI = null;
bool isExistScene = false;
var rowLayout = new RowLayout()
{
Height = Application.GetRealHeight(150),
X = Application.GetRealWidth(58),
Y = curIndex * Application.GetRealHeight(150),
Width = Application.GetRealWidth(965),
LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
};
frameLayoutRow.AddChidren(rowLayout);
#region 绑定表UI显(无数据处理)
var devicePic = new Button()
{
Y = Application.GetRealHeight(35),
Width = Application.GetMinRealAverage(81),
Height = Application.GetMinRealAverage(81),
};
rowLayout.AddChidren(devicePic);
var btnBindName = new Button()
{
Width = Application.GetRealWidth(1080 - 173),
Height = Application.GetRealHeight(60),
X = Application.GetRealWidth(173 - 58),
Y = Application.GetRealHeight(20),
TextSize = 14,
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
TextAlignment = TextAlignment.CenterLeft,
};
rowLayout.AddChidren(btnBindName);
var btnFloorRoomName = new Button()
{
Width = Application.GetRealWidth(1080 - 173),
Height = Application.GetRealHeight(49),
X = Application.GetRealWidth(173 - 58),
Y = Application.GetRealHeight(81),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
TextSize = 14,
TextAlignment = TextAlignment.CenterLeft,
};
rowLayout.AddChidren(btnFloorRoomName);
var btnDel = new Button()
{
TextColor = Shared.Common.ZigbeeColor.Current.GXCTextWhiteColor,
Width = Application.GetRealWidth(184),
TextID = R.MyInternationalizationString.DelBindDevice,
BackgroundColor = Shared.Common.ZigbeeColor.Current.DelRowLayout,
};
rowLayout.AddRightView(btnDel);
#endregion
#region 绑定数据处理
int currentIndex = i;
if (currentIndex == currentKey.bindList.Count - 1)
{
rowLayout.LineColor = Shared.Common.ZigbeeColor.Current.XMWhite;
}
foreach (var sc in currentKey.bindList)
{
if (sc.BindType == 2)
{
isExistScene = true;
}
}
if (isExistScene)
{
curSceneUI = Room.CurrentRoom.GetSceneUIBySceneId(bindDevice.BindScenesId);
if (curSceneUI == null)
{
devicePic.UnSelectedImagePath = "Scene/SceneIcon.png";
if (string.IsNullOrEmpty(bindDevice.ESName))
{
btnBindName.Text = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + "ID" + "_" + bindDevice.BindScenesId.ToString();
}
else
{
btnBindName.Text = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + bindDevice.ESName;
}
}
else
{
devicePic.UnSelectedImagePath = curSceneUI.IconPath;
btnBindName.Text = curSceneUI.Name;
btnFloorRoomName.Text = curSceneUI.GetZone();
}
}
else
{
//被绑定设备图片
foreach (var dev in localDeviceList)
{
var tempDev = localDeviceList.Find(obj => obj.DeviceAddr == bindDevice.BindMacAddr && obj.DeviceEpoint == bindDevice.BindEpoint);
if (tempDev != null)
{
//获取设备所属房间
var tempDevRoom = Common.Room.CurrentRoom.GetRoomByDevice(tempDev);
//获取设备所在楼层
var tempDevFloorId = tempDevRoom.FloorId;
//获取楼层的名字
var tempDevRoomName = tempDevRoom.Name;
//获取楼层的名字
var tempDevFloorName = Common.Config.Instance.Home.GetFloorNameById(tempDevFloorId);
btnFloorRoomName.Text = tempDevFloorName + "," + tempDevRoomName;
var deviceUi = Common.LocalDevice.Current.GetDeviceUI(tempDev);
devicePic.UnSelectedImagePath = deviceUi.IconPath;
devicePic.Width = Application.GetRealWidth(110);
devicePic.Text = "";
if (tempDev.DeviceEpointName == "")
{
btnBindName.Text = tempDev.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit);
}
else
{
btnBindName.Text = tempDev.DeviceEpointName;
}
}
else
{
btnBindName.Text = bindDevice.BindMacAddr + "_" + bindDevice.BindEpoint;
devicePic.Width = Application.GetMinRealAverage(200);
devicePic.TextAlignment = TextAlignment.CenterLeft;
devicePic.TextColor = UserCenterColor.Current.Gray;
devicePic.Text = Language.StringByID(R.MyInternationalizationString.uOffLine);
}
}
}
//删除事件处理
btnDel.MouseUpEventHandler += async (sender, e) =>
{
RemoveTargets(bindDevice, btnDel);
};
#endregion
}
frameLayoutRow.Height = currentKey.bindList.Count * Application.GetRealHeight(150);
}
#endregion
}
///
/// 当前按键模式显示
///
public void BindModeDisplay()
{
#region modeRowLayout
var modeRowLayout = new RowLayout()
{
Height = Application.GetRealHeight(150),
X = Application.GetRealWidth(58),
Width = Application.GetRealWidth(965),
LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
};
topFrameLayout.AddChidren(modeRowLayout);
var btnKeyMode = new Button
{
Y = Application.GetRealHeight(63),
Width = Application.GetMinRealAverage(294),
Height = Application.GetMinRealAverage(58),
Text = Language.StringByID(R.MyInternationalizationString.keyMode),
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
TextAlignment = TextAlignment.CenterLeft,
};
modeRowLayout.AddChidren(btnKeyMode);
var btnKeyModeTip = new Button
{
X = Application.GetRealWidth(374 - 58),
Y = Application.GetRealHeight(63),
Width = Application.GetMinRealAverage(615),
Height = Application.GetMinRealAverage(58),
TextAlignment = TextAlignment.CenterRight,
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
};
modeRowLayout.AddChidren(btnKeyModeTip);
var btnDel = new Button()
{
Width = Application.GetMinRealAverage(184),
TextColor = Shared.Common.ZigbeeColor.Current.GXCTextWhiteColor,
TextID = R.MyInternationalizationString.DelBindDevice,
BackgroundColor = Shared.Common.ZigbeeColor.Current.DelRowLayout,
};
modeRowLayout.AddRightView(btnDel);
#endregion
#region 当前模式文本显示
switch (currentKey.panelMode)
{
case 100:
btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffOn;
break;
case 101:
btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffoFF;
break;
case 102:
btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffOnOff;
break;
case 200:
btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode1;
break;
case 201:
btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode2;
break;
case 203:
btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode3;
break;
case 204:
btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode4;
break;
case 205:
btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode5;
break;
case 300:
btnKeyModeTip.TextID = R.MyInternationalizationString.WcdUp;
break;
case 301:
btnKeyModeTip.TextID = R.MyInternationalizationString.WcdDown;
break;
case 302:
btnKeyModeTip.TextID = R.MyInternationalizationString.WcdStop;
break;
case 303:
btnKeyModeTip.TextID = R.MyInternationalizationString.WcdUpStop;
break;
case 304:
btnKeyModeTip.TextID = R.MyInternationalizationString.WcdDownStop;
break;
}
#endregion
//一键清除按键事件
btnDel.MouseUpEventHandler += async (sender, e) =>
{
bool isDelSuccess = false;
try
{
CommonPage.Loading.Start("");
var bindResult = await currentKey.ClearBindInfoAsync();
if (bindResult != null && bindResult.clearBindInfoResponseData != null)
{
if (bindResult.clearBindInfoResponseData.Result != 0)
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDel);
CommonPage.Loading.Hide();
return;
}
else
{
var temp = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
if (temp.setWritableValueResponData?.Status != 0)
{
var temp1 = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
if (temp1.setWritableValueResponData?.Status != 0)
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
}
else
{
isDelSuccess = true;
}
}
else
{
isDelSuccess = true;
}
}
}
else
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
}
}
catch { }
finally
{
if (isDelSuccess)
{
currentKey.panelMode = 65535;
currentKey.bindList.Clear();
RefreshList();
//如果是场景,用户删除清空当前到房间列表
currentKey.RoomId = "";
currentKey.ReSave();
}
CommonPage.Loading.Hide();
}
};
}
///
/// 侧边导航栏
///
void SideslipFramelayout()
{
#region UI
var dialog = new Dialog { };
dialog.Show();
var flMain = new FrameLayout { BackgroundColor = 0x00000000 };
dialog.AddChidren(flMain);
flMain.MouseUpEventHandler += (sender11, e11) =>
{
dialog.Close();
};
var sidelipFrameLayout = new FrameLayout()
{
Height = Application.GetRealHeight(628),
Width = Application.GetRealWidth(415),
Y = Application.GetRealHeight(115 + 45),
X = Application.GetRealWidth(605),
BackgroundImagePath = "DoorLock/SideslipPic.png",
};
flMain.AddChidren(sidelipFrameLayout);
var sidelipVerticalScrolViewLayout = new VerticalScrolViewLayout()
{
Height = Application.GetRealHeight(600),
Y = Application.GetRealHeight(28),
};
sidelipFrameLayout.AddChidren(sidelipVerticalScrolViewLayout);
#endregion
Button oldbuttonText = null;
string oldKeySelectModeText = currentKey.currentKeySelectModeText;
for (var i = 0; i < 4; i++)
{
#region rowView
var rowView = new FrameLayout()
{
Height = Application.GetRealHeight(150),
};
sidelipVerticalScrolViewLayout.AddChidren(rowView);
var btnMethodText = new Button()
{
Width = Application.GetRealWidth(268),
Height = Application.GetRealHeight(58),
X = Application.GetRealWidth(115),
Y = Application.GetRealHeight(69),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
TextSize = 14,
TextAlignment = TextAlignment.CenterLeft,
};
rowView.AddChidren(btnMethodText);
var line2 = new Button()
{
Y = rowView.Height - 1,
X = Application.GetRealWidth(115),
Width = Application.GetRealWidth(300),
Height = 1,
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
};
rowView.AddChidren(line2);
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && i == 0)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && i == 1)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && i == 2)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && i == 3)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
#endregion
#region 数据处理
switch (i)
{
case 0:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddScene);
break;
case 1:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddSwitch);
break;
case 2:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddDimmer);
break;
case 3:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddCurtain);
line2.Visible = false;
break;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && i == 0)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && i == 1)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && i == 2)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && i == 3)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
#endregion
//类型事件选中处理
EventHandler eHandler = (sender, e) =>
{
if (!btnMethodText.IsSelected)
{
if (oldbuttonText != null)
{
oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
}
oldbuttonText = btnMethodText;
currentKey.currentKeySelectModeText = btnMethodText.Text;
oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene))
{
if (currentKey.bindList.Count != 0)
{
var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
if (bindSc != null)
{
var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain),
Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
alert.Show();
alert.ResultEventHandler += async (s1, e1) =>
{
if (e1)
{
var result = await RemoveTargets(bindSc, line2);
if (result == 0)
{
var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addScenePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addScenePage.action += action;
dialog.Close();
}
else
{
currentKey.currentKeySelectModeText = oldKeySelectModeText;
dialog.Close();
}
}
else
{
currentKey.currentKeySelectModeText = oldKeySelectModeText;
dialog.Close();
}
};
}
}
else
{
var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addScenePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addScenePage.action += action;
dialog.Close();
}
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch))
{
if (currentKey.bindList.Count != 0)
{
var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
if (bindSc != null)
{
var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain1),
Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
alert.Show();
alert.ResultEventHandler += async (s1, e1) =>
{
if (e1)
{
var result = await RemoveTargets(bindSc, line2);
if (result == 0)
{
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddSwitch");
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addDevicePage.actionAddDevicePage += action;
dialog.Close();
}
else
{
currentKey.currentKeySelectModeText = oldKeySelectModeText;
dialog.Close();
}
}
else
{
currentKey.currentKeySelectModeText = oldKeySelectModeText;
dialog.Close();
}
};
}
}
else
{
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddSwitch");
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addDevicePage.actionAddDevicePage += action;
dialog.Close();
}
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer))
{
if (currentKey.bindList.Count != 0)
{
var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
if (bindSc != null)
{
var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain2),
Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
alert.Show();
alert.ResultEventHandler += async (s1, e1) =>
{
if (e1)
{
var result = await RemoveTargets(bindSc, line2);
if (result == 0)
{
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddDimmer");
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addDevicePage.actionAddDevicePage += action;
dialog.Close();
}
else
{
currentKey.currentKeySelectModeText = oldKeySelectModeText;
dialog.Close();
}
}
else
{
currentKey.currentKeySelectModeText = oldKeySelectModeText;
dialog.Close();
}
};
}
}
else
{
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddDimmer");
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addDevicePage.actionAddDevicePage += action;
dialog.Close();
}
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain))
{
if (currentKey.bindList.Count != 0)
{
var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
if (bindSc != null)
{
var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain3),
Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
alert.Show();
alert.ResultEventHandler += async (s1, e1) =>
{
if (e1)
{
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddCurtain");
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addDevicePage.actionAddDevicePage += action;
dialog.Close();
}
else
{
currentKey.currentKeySelectModeText = oldKeySelectModeText;
dialog.Close();
}
};
}
}
else
{
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddCurtain");
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
Action> action = (obj) =>
{
currentKey.bindList = obj;
RefreshList();
};
addDevicePage.actionAddDevicePage += action;
dialog.Close();
}
}
};
btnMethodText.MouseUpEventHandler += eHandler;
rowView.MouseUpEventHandler += eHandler;
}
}
///
/// 删除当前目标方法
///
///
///
///
async System.Threading.Tasks.Task RemoveTargets(BindListResponseObj bindDevice, Button btnDel)
{
var delDevice = new DelDeviceBindData();
delDevice.DeviceAddr = currentKey.DeviceAddr;
delDevice.Epoint = currentKey.DeviceEpoint;
if (bindDevice.BindType == 0 || bindDevice.BindType == 1)
{
var removeDevice = new RemoveBindListObj();
removeDevice.BindCluster = bindDevice.BindCluster;
removeDevice.BindType = 0;
removeDevice.BindMacAddr = bindDevice.BindMacAddr;
removeDevice.BindEpoint = bindDevice.BindEpoint;
delDevice.RemoveBindList.Add(removeDevice);
}
else if (bindDevice.BindType == 2)
{
var removeDevice = new RemoveBindListObj();
removeDevice.BindCluster = bindDevice.BindCluster;
removeDevice.BindType = 1;
removeDevice.BindScenesId = bindDevice.BindScenesId;
delDevice.RemoveBindList.Add(removeDevice);
}
try
{
CommonPage.Loading.Start("");
var delResult = new DelDeviceBindResponseAllData();
delResult = await currentKey.DelDeviceBindAsync(delDevice);
//if (delResult != null)
//{
// if (delResult.removeBindResultResponseData != null)
// {
// if (delResult.removeBindResultResponseData.Result == 0)
// {
// currentKey.bindList.Remove(bindDevice);
// RefreshList();
// return 0;
// }
// else
// {
// new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
// }
// }
// else if (delResult.delDeviceBindResponseData != null)
// {
// foreach (var remTarget in delResult.delDeviceBindResponseData.RemoveBindList)
// {
// if (remTarget.Result == 0)
// {
// currentKey.bindList.Remove(bindDevice);
// RefreshList();
// //如果是场景,用户删除清空当前到房间列表
// currentKey.RoomId = "";
// currentKey.ReSave();
// return 0;
// }
// else
// {
// new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
// }
// }
// }
//}
//else
//{
// new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
//}
if (delResult.delDeviceBindResponseData?.RemoveBindList != null)
{
foreach (var re in delResult.delDeviceBindResponseData.RemoveBindList)
{
switch (re.Result)
{
case 0:
currentKey.bindList.Remove(bindDevice);
RefreshList();
//如果是场景,用户删除清空当前到房间列表
currentKey.RoomId = "";
currentKey.ReSave();
return 0;
break;
case 1:
currentKey.bindList.Clear();
try
{
CommonPage.Loading.Start("");
var getBindList = await currentKey.GetDeviceBindAsync();
var bindDeviceListTemp = new System.Collections.Generic.List { };
var bindSceneListTemp = new System.Collections.Generic.List { };
if (getBindList != null)
{
if (getBindList.getAllBindResponseData != null)
{
foreach (var b in getBindList.getAllBindResponseData.BindList)
{
if (b.BindCluster == currentClusterID)
{
if (b.BindCluster == 6)
{
if (b.BindType == 2)
{
bindSceneListTemp.Add(b);
}
else
{
bindDeviceListTemp.Add(b);
}
}
else
{
currentKey.bindList.Add(b);
}
}
}
}
}
if (currentKey.panelMode == 1)
{
currentKey.bindList = bindSceneListTemp;
}
else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
{
currentKey.bindList = bindDeviceListTemp;
}
}
catch { }
finally
{
RefreshList();
CommonPage.Loading.Hide();
}
break;
case 2:
if (delResult.removeBindResultResponseData != null)
{
if (delResult.removeBindResultResponseData.Result == 0)
{
currentKey.bindList.Remove(bindDevice);
RefreshList();
return 0;
}
else
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
}
}
break;
default:
break;
}
}
}
else
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
}
}
catch { }
finally
{
CommonPage.Loading.Hide();
}
return -1;
}
///
/// 重写移除方法
///
public override void RemoveFromParent()
{
localDeviceList.Clear();
scList.Clear();
base.RemoveFromParent();
}
public void DeviceInfoChange(CommonDevice common, string typeTag)
{
}
public void ChangedILogicStatus(ZigBee.Device.Logic logic)
{
}
public void ChangedISceneStatus(Scene scene)
{
}
}
}