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
{
/// 构造函数
///
///
public BindTargetsPage(ZigBee.Device.Panel key)
{
this.currentKey = key;
}
#region 变量申明
///
/// 当前按键对象
///
ZigBee.Device.Panel currentKey;
///
/// 显示被绑定设备或场景的view
///
VerticalFrameRefreshControl midVerticalRefreshLayout;
///
/// 按键当前簇ID
///
int currentClusterID = 0;
///
/// 空数据时的图片
///
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 { };
///
/// 空数据显示布局
///
FrameLayout blankFrameLayout;
///
/// 动态获取按键支持的模式大类型
///
List typeModeList;
///
/// 是否支持读取
///
bool IsRead = false;
#endregion
///
/// 初始化按键数据
///
void InitListInfo()
{
System.Threading.Tasks.Task.Run(async () =>
{
try
{
localDeviceList.Clear();
scList.Clear();
//获取本地设备列表
foreach (var dev in HdlDeviceCommonLogic.Current.listAllDevice)
{
localDeviceList.Add(dev);
}
//获取本地场景列表
scList = HdlSceneLogic.Current.GetAllRoomSceneList();
//动态获取按键支持的大类
typeModeList = await GetTypeMode();
#region 读取面板当前模式
//读取按键当前模式
var tempDeata = HdlDeviceBindLogic.Current.ReadPanelConfigureInfoAsync(currentKey);
if (tempDeata != null && tempDeata.deviceStatusReportData != null)
{
foreach (var attr in tempDeata.deviceStatusReportData.AttriBute)
{
currentKey.panelMode = attr.AttriButeData;
if (currentKey.panelMode == 1)
{
currentClusterID = 6;
}
else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
{
currentClusterID = 6;
}
else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
{
currentClusterID = 8;
}
else if (currentKey.panelMode == 300 || currentKey.panelMode == 301 || currentKey.panelMode == 302 || currentKey.panelMode == 303 || currentKey.panelMode == 304)
{
currentClusterID = 258;
}
//读取按键当前绑定目标
GetDeviceBindResponseAllData getBindList = null;
if (IsRead)
{
getBindList = HdlDeviceBindLogic.Current.GetDeviceBindAsync(currentKey);
var bindDeviceListTemp = new System.Collections.Generic.List { };
var bindSceneListTemp = new System.Collections.Generic.List { };
if (getBindList != null && getBindList.getAllBindResponseData != null)
{
currentKey.bindList.Clear();
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
{
if (currentClusterID == 8)
{
if (b.BindCluster == 8)
{
currentKey.bindList.Add(b);
}
}
else
{
currentKey.bindList.Add(b);
}
}
}
}
}
else
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Hide();
midVerticalRefreshLayout.EndHeaderRefreshing();
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5007" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
return;
});
}
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 == 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);
}
}
currentKey.ReSave();
}
#endregion
Application.RunOnMainThread(() =>
{
RefreshList();
CommonPage.Loading.Hide();
midVerticalRefreshLayout.EndHeaderRefreshing();
});
}
else
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Hide();
midVerticalRefreshLayout.EndHeaderRefreshing();
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "108_ 6533" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
return;
}
}
catch { }
});
}
///
/// 按键绑定页显示
///
public void Show()
{
#region TopFrameLayout
this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.PanelBindTargets));
EventHandler eHandlerBack = (sender, e) =>
{
RemoveFromParent();
};
this.btnBack.MouseUpEventHandler += eHandlerBack;
this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
this.MidFrameLayout(this);
var btnAddFrameLayout = new FrameLayout()
{
X = Application.GetRealWidth(772 - 58),
Width = Application.GetRealWidth(192),
};
this.titleFrameLayout.AddChidren(btnAddFrameLayout);
var btnBindAdd = new Button
{
X = Application.GetRealWidth(62),
Height = Application.GetMinReal(72),
Width = Application.GetMinReal(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
{
currentKey.panelMode = 65535;
SideslipFramelayout();
}
};
btnBindAdd.MouseDownEventHandler += eHandlerAdd;
btnAddFrameLayout.MouseDownEventHandler += eHandlerAdd;
#endregion
CommonPage.Loading.Start("");
middleFrameLayout();
if (currentKey.bindList.Count == 0)
{
IsRead = true;
}
else
{
IsRead = false;
}
InitListInfo();
}
///
/// 中部布局
///
void middleFrameLayout()
{
midVerticalRefreshLayout = new VerticalFrameRefreshControl(29)
{
Height = this.midFrameLayout.Height + 1,
};
this.midFrameLayout.AddChidren(midVerticalRefreshLayout);
midVerticalRefreshLayout.BeginHeaderRefreshingAction += () =>
{
midVerticalRefreshLayout.BeginHeaderRefreshing();
IsRead = true;
InitListInfo();
};
BlankPicUI();
}
///
/// 空数据UI显示
///
void BlankPicUI()
{
blankFrameLayout = new FrameLayout
{
};
midVerticalRefreshLayout.AddChidren(blankFrameLayout);
entryStatusPic = new Button
{
X = Application.GetRealWidth(213),
Y = Application.GetRealHeight(418),
UnSelectedImagePath = "BindPic/BindEmptyPic.png",
Visible = false,
};
blankFrameLayout.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,
TextSize = 12,
};
blankFrameLayout.AddChidren(btnPicTip);
}
///
/// 按键绑定表显示
///
async void RefreshList()
{
midVerticalRefreshLayout.RemoveAll();
this.midFrameLayout.RemoveAll();
middleFrameLayout();
#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;
blankFrameLayout.Height = midVerticalRefreshLayout.Height;
}
else
{
entryStatusPic.Height = Application.GetRealHeight(0);
entryStatusPic.Width = Application.GetRealWidth(0);
btnPicTip.Height = Application.GetRealHeight(0);
btnPicTip.Visible = false;
entryStatusPic.Visible = false;
blankFrameLayout.Height = Application.GetRealHeight(0);
if (currentKey.panelMode == 1)
{
midVerticalRefreshLayout.Y = Application.GetRealHeight(0);
}
else
{
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 RowLayoutControl(midVerticalRefreshLayout.rowSpace / 2);
rowLayout.BackgroundColor = ZigbeeColor.Current.XMWhite;
midVerticalRefreshLayout.AddChidren2(rowLayout);
rowLayout.frameTable.UseClickStatu = false;
var devicePic = rowLayout.frameTable.AddLeftIcon();
devicePic.Y = Application.GetRealHeight(49);
devicePic.UnSelectedImagePath = "DoorLock/DoorLockUserPic.png";
#region 绑定数据处理
int currentIndex = i;
var btnBindNameText = "";
var btnFloorRoomNameText = "";
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 = HdlSceneLogic.Current.GetSceneUIBySceneId(bindDevice.BindScenesId);
devicePic.UnSelectedImagePath = "Scene/SceneIcon.png";
if (curSceneUI == null)
{
btnBindNameText = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + "ID" + "_" + bindDevice.BindScenesId.ToString();
}
else
{
btnBindNameText = curSceneUI.Name;
string myName = HdlSceneLogic.Current.GetZoneById(curSceneUI.Id);
if (myName != null)
{
btnFloorRoomNameText = myName;
}
else
{
btnFloorRoomNameText = Language.StringByID(R.MyInternationalizationString.Undistributed);
}
}
}
else
{
//被绑定设备图片
foreach (var dev in localDeviceList)
{
var tempDev = localDeviceList.Find(obj => obj.DeviceAddr == bindDevice.BindMacAddr && obj.DeviceEpoint == bindDevice.BindEpoint);
if (tempDev != null)
{
//获取设备所属房间
var tempDevRoom = HdlRoomLogic.Current.GetRoomByDevice(tempDev);
if (tempDevRoom != null)
{
var tempDevFloorId = tempDevRoom.FloorId;
//获取房间的名字
var tempDevRoomName = tempDevRoom.Name;
//获取楼层的名字
var tempDevFloorName = HdlResidenceLogic.Current.GetFloorNameById(tempDevFloorId);
if (string.IsNullOrEmpty(tempDevFloorName))
{
if (string.IsNullOrEmpty(tempDevRoomName))
{
btnFloorRoomNameText = Language.StringByID(R.MyInternationalizationString.Undistributed);
}
else
{
btnFloorRoomNameText = tempDevRoomName;
}
}
else
{
if (string.IsNullOrEmpty(tempDevRoomName))
{
btnFloorRoomNameText = Language.StringByID(R.MyInternationalizationString.Undistributed);
}
else
{
btnFloorRoomNameText = tempDevFloorName + "," + tempDevRoomName;
}
}
}
else
{
btnFloorRoomNameText = Language.StringByID(R.MyInternationalizationString.Undistributed);
}
devicePic.UnSelectedImagePath = tempDev.IconPath;
devicePic.Text = "";
if (string.IsNullOrEmpty(tempDev.DeviceEpointName))
{
btnBindNameText = tempDev.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit);
}
else
{
btnBindNameText = tempDev.DeviceEpointName;
}
}
else
{
btnBindNameText = bindDevice.BindMacAddr + "_" + bindDevice.BindEpoint;
devicePic.TextAlignment = TextAlignment.CenterLeft;
devicePic.TextColor = UserCenterColor.Current.Gray;
devicePic.Text = Language.StringByID(R.MyInternationalizationString.uOffLine);
}
}
}
var btnBindName = rowLayout.frameTable.AddTopView(btnBindNameText, 800);
var btnFloorRoomName = rowLayout.frameTable.AddBottomView(btnFloorRoomNameText, 800);
rowLayout.frameTable.AddBottomLine();
var btnDel = rowLayout.AddDeleteControl();
btnDel.ButtonClickEvent += (sender, e) =>
{
RemoveTargets(bindDevice, btnDel);
};
#endregion
}
midVerticalRefreshLayout.AdjustTableHeight(Application.GetRealHeight(23));
}
#endregion
}
///
/// 当前按键模式显示
///
public void BindModeDisplay()
{
var modeRowLayout = new RowLayoutControl(midVerticalRefreshLayout.rowSpace / 2);
modeRowLayout.BackgroundColor = ZigbeeColor.Current.XMWhite;
midVerticalRefreshLayout.AddChidren2(modeRowLayout);
modeRowLayout.frameTable.UseClickStatu = false;
modeRowLayout.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.keyMode), 400);
var btnKeyModeTipText = "";
#region 当前模式文本显示
switch (currentKey.panelMode)
{
case 100:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffOn);
break;
case 101:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffoFF);
break;
case 102:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffOnOff);
break;
case 200:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode1);
break;
case 201:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode2);
break;
case 203:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode3);
break;
case 204:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode4);
break;
case 205:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode5);
break;
case 300:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdUp);
break;
case 301:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdDown);
break;
case 302:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdStop);
break;
case 303:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdUpStop);
break;
case 304:
btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdDownStop);
break;
}
#endregion
modeRowLayout.frameTable.AddMostRightView(btnKeyModeTipText, 800);
modeRowLayout.frameTable.AddBottomLine();
var btnDel = modeRowLayout.AddDeleteControl();
//一键清除按键事件
btnDel.ButtonClickEvent += async (sender, e) =>
{
string msg = Language.StringByID(R.MyInternationalizationString.ClearAllTargets).Replace("{0}", "\r\n");
var alert = new ShowMsgControl(ShowMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
alert.Show();
//使用确认型弹框时,的回调函数
alert.ConfirmClickEvent += () =>
{
bool isDelSuccess = false;
System.Threading.Tasks.Task.Run(() =>
{
try
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Start("");
});
var bindResult = HdlDeviceBindLogic.Current.ClearBindInfoAsync(currentKey);
if (bindResult != null && bindResult.clearBindInfoResponseData != null)
{
if (bindResult.clearBindInfoResponseData.Result != 0)
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDel);
CommonPage.Loading.Hide();
});
return;
}
else
{
var temp = HdlDeviceBindLogic.Current.ConfigureHdlKeyValueAsync(currentKey, Panel.KeyMode.Default);
if (temp != null && temp.setWritableValueResponData?.Status != 0)
{
var temp1 = HdlDeviceBindLogic.Current.ConfigureHdlKeyValueAsync(currentKey, Panel.KeyMode.Default);
if (temp1 != null && temp1.setWritableValueResponData?.Status != 0)
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
});
}
else
{
isDelSuccess = true;
}
}
else
{
isDelSuccess = true;
}
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5006" + ")", Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
});
}
}
catch { }
finally
{
Application.RunOnMainThread(() =>
{
if (isDelSuccess)
{
currentKey.panelMode = 65535;
currentKey.bindList.Clear();
RefreshList();
//如果是场景,用户删除清空当前到房间列表
currentKey.ReSave();
}
CommonPage.Loading.Hide();
});
}
});
};
};
}
///
/// 侧边导航栏
///
async 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.GetMinReal(628),
Width = Application.GetMinReal(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;
if (typeModeList == null)
{
//再次动态获取按键支持的大类
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Start();
});
typeModeList = await GetTypeMode();
if (typeModeList == null)
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "0003" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
CommonPage.Loading.Hide();
});
dialog.Close();
return;
}
else
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Hide();
});
}
}
int count = 0;
foreach (var value in typeModeList)
{
count++;
#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,
IsBold = false,
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 (string.IsNullOrEmpty(currentKey.currentKeySelectModeText) && value == 1)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
btnMethodText.IsBold = true;
oldbuttonText = btnMethodText;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && value == 1)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
btnMethodText.IsBold = true;
oldbuttonText = btnMethodText;
}
else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && value == 100)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
btnMethodText.IsBold = true;
oldbuttonText = btnMethodText;
}
else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && value == 200)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
btnMethodText.IsBold = true;
oldbuttonText = btnMethodText;
}
else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && value == 300)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
btnMethodText.IsBold = true;
oldbuttonText = btnMethodText;
}
#endregion
#region 数据处理
switch (value)
{
case 1:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddScene);
break;
case 100:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddSwitch);
break;
case 200:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddDimmer);
break;
case 300:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddCurtain);
line2.Visible = false;
break;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && value == 1)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
btnMethodText.IsBold = true;
oldbuttonText = btnMethodText;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && value == 100)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
btnMethodText.IsBold = true;
oldbuttonText = btnMethodText;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && value == 200)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
btnMethodText.IsBold = true;
oldbuttonText = btnMethodText;
}
if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && value == 300)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
btnMethodText.IsBold = true;
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))
{
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))
{
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))
{
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))
{
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;
}
}
///
/// 获取按键支持的大类
///
///
private async System.Threading.Tasks.Task> GetTypeMode()
{
//如果当前住宅是虚拟住宅
if (Common.Config.Instance.Home.IsVirtually == true)
{
//则默认全部功能都给它
typeModeList = new List() { 1, 100, 200, 300, 0, 101, 102 };
return typeModeList;
}
if (typeModeList != null)
{
typeModeList.Clear();
}
if (currentKey.privateFuncSecondLevelList.Count == 0 || currentKey.privateFuncSecondLevelList.Contains(1) == false || currentKey.privateFuncSecondLevelList.Contains(100) == false || currentKey.privateFuncSecondLevelList.Contains(200) == false || currentKey.privateFuncSecondLevelList.Contains(300) == false)
{
//获取第二级功能
typeModeList = await currentKey.GetPanelDeviceFunctionLevel2(256);
if (typeModeList == null)
{
return null;
}
currentKey.privateFuncSecondLevelList = typeModeList;
}
else
{
typeModeList = currentKey.privateFuncSecondLevelList;
}
return typeModeList;
}
///
/// 删除当前目标方法
///
///
///
///
private int RemoveTargets(BindListResponseObj bindDevice, Button btnDel)
{
int result = -1;
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);
//是亮度再次发删除6的命令
if (currentClusterID == 8)
{
var removeDevice2 = new RemoveBindListObj();
removeDevice2.BindCluster = 6;
removeDevice2.BindType = 0;
removeDevice2.BindMacAddr = bindDevice.BindMacAddr;
removeDevice2.BindEpoint = bindDevice.BindEpoint;
delDevice.RemoveBindList.Add(removeDevice2);
}
}
else if (bindDevice.BindType == 2)
{
var removeDevice = new RemoveBindListObj();
removeDevice.BindCluster = bindDevice.BindCluster;
removeDevice.BindType = 1;
removeDevice.BindScenesId = bindDevice.BindScenesId;
delDevice.RemoveBindList.Add(removeDevice);
}
System.Threading.Tasks.Task.Run(() =>
{
try
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Start("");
});
var delResult = new DelDeviceBindResponseAllData();
delResult = HdlDeviceBindLogic.Current.DelDeviceBindAsync(delDevice);
if (delResult != null && delResult.delDeviceBindResponseData != null)
{
if (delResult.delDeviceBindResponseData?.RemoveBindList != null)
{
foreach (var re in delResult.delDeviceBindResponseData.RemoveBindList)
{
switch (re.Result)
{
case 0:
currentKey.bindList.Remove(bindDevice);
Application.RunOnMainThread(() =>
{
RefreshList();
//如果是场景,用户删除清空当前到房间列表
if (re.BindType == 2)
{
currentKey.panelMode = 65535;
}
currentKey.ReSave();
});
result = 0;
break;
case 1:
currentKey.bindList.Clear();
try
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Start("");
});
var getBindList = HdlDeviceBindLogic.Current.GetDeviceBindAsync(currentKey);
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
{
Application.RunOnMainThread(() =>
{
RefreshList();
CommonPage.Loading.Hide();
});
}
break;
case 2:
if (delResult.removeBindResultResponseData != null)
{
if (delResult.removeBindResultResponseData.Result == 0)
{
currentKey.bindList.Remove(bindDevice);
Application.RunOnMainThread(() =>
{
RefreshList();
});
result = 0;
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
});
}
}
break;
default:
break;
}
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5003" + ")", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
});
}
}
catch { }
finally
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Hide();
});
}
});
return result;
}
///
/// 重写移除方法
///
public override void RemoveFromParent()
{
localDeviceList.Clear();
scList.Clear();
base.RemoveFromParent();
}
}
}