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) { } } }