using System; 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) { //if (common.Type != ZigBee.Device.DeviceType.OnOffSwitch) //{ // return; //} Shared.Application.RunOnMainThread(() => { //var dev = common as Panel; }); } /// 构造函数 /// /// public BindTargetsPage(ZigBee.Device.Panel key) { this.currentKey = key; } #region ◆ 变量申明__________________________ ZigBee.Device.Panel currentKey; VerticalScrolViewLayout midVerticalScrolViewLayout;//显示被绑定设备或场景的view VerticalScrolViewLayout topMidVerticalScrolViewLayout;//显示当前模式view int currentClusterID = 0;//当前簇ID Action> action;//按键绑定表通知 public static System.Collections.Generic.List localDeviceList = new System.Collections.Generic.List();//本地设备列表 public static System.Collections.Generic.List scList = new System.Collections.Generic.List { };//本地场景列表 Action> devicBindAction; #endregion public void Show() { 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); 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; MidFrameLayoutContent(); } async void MidFrameLayoutContent() { try { localDeviceList.Clear(); scList.Clear(); foreach (var dev in Shared.Common.LocalDevice.Current.listAllDevice) { localDeviceList.Add(dev); } scList = Shared.Common.Room.AllRoomSceneUIList; } catch { } try { CommonPage.Loading.Start(""); #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 { var btn = new Button() { Gravity = Gravity.Center, }; this.midFrameLayout.AddChidren(btn); Application.RunOnMainThread(() => { new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btn); }); } 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(() => { var btn = new Button() { Gravity = Gravity.Center, }; this.midFrameLayout.AddChidren(btn); new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btn); }); } } catch { } finally { RefreshList(); CommonPage.Loading.Hide(); } } /// /// 按键绑定场景表显示 /// /// Gateway. /// Key. async void RefreshList() { this.midFrameLayout.RemoveAll(); var entryStatusPic = new Button { X = Application.GetRealWidth(164), Y = Application.GetRealHeight(492), UnSelectedImagePath = "BindPic/BindEmptyPic.png", Visible = false, }; this.midFrameLayout.AddChidren(entryStatusPic); var btnPicTip = new Button { X = Application.GetRealWidth(432), 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); topMidVerticalScrolViewLayout = new VerticalScrolViewLayout { Height = Application.GetMinRealAverage(0), BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite, }; this.midFrameLayout.AddChidren(topMidVerticalScrolViewLayout); midVerticalScrolViewLayout = new VerticalScrolViewLayout() { BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite, }; this.midFrameLayout.AddChidren(midVerticalScrolViewLayout); midVerticalScrolViewLayout.RemoveAll(); if (currentKey.bindList.Count == 0) { entryStatusPic.Height = Application.GetRealHeight(435); entryStatusPic.Width = Application.GetRealWidth(757); btnPicTip.Height = Application.GetRealHeight(49); midVerticalScrolViewLayout.Height = 0; btnPicTip.Visible = true; entryStatusPic.Visible = true; } else { entryStatusPic.Height = Application.GetRealHeight(0); entryStatusPic.Width = Application.GetRealWidth(0); btnPicTip.Height = Application.GetRealHeight(0); btnPicTip.Visible = false; entryStatusPic.Visible = false; topMidVerticalScrolViewLayout.Height = Application.GetRealHeight(170); midVerticalScrolViewLayout.Y = topMidVerticalScrolViewLayout.Bottom; midVerticalScrolViewLayout.Height = this.midFrameLayout.Height; BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout; if (currentKey.panelMode == 1) { topMidVerticalScrolViewLayout.Height = Application.GetRealHeight(0); midVerticalScrolViewLayout.Y = Application.GetRealHeight(0); } if (currentKey.panelMode != 1) { BindModeDisplay(); } for (int i = 0; i < currentKey.bindList.Count; i++) { var rowLayout = new RowLayout() { Height = Application.GetRealHeight(170), }; midVerticalScrolViewLayout.AddChidren(rowLayout); #region 绑定表UI显(无数据处理) var bindDevice = currentKey.bindList[i]; var devicePic = new Button() { X = Application.GetRealWidth(50), Width = Application.GetMinRealAverage(110), Height = Application.GetMinRealAverage(110), Gravity = Gravity.CenterVertical, }; rowLayout.AddChidren(devicePic); var btnBindName = new Button() { Width = Application.GetRealWidth(500 - 120), X = devicePic.Right + Application.GetRealWidth(20), TextColor = Shared.Common.ZigbeeColor.Current.TextBlack, TextAlignment = TextAlignment.CenterLeft, }; rowLayout.AddChidren(btnBindName); var btnDel = new Button() { TextColor = Shared.Common.ZigbeeColor.Current.GXCTextWhiteColor, X = btnBindName.Right, TextID = R.MyInternationalizationString.Delete, BackgroundColor = Shared.Common.ZigbeeColor.Current.DelRowLayout, }; rowLayout.AddRightView(btnDel); #endregion #region 绑定数据处理 bool isExistScene = false; foreach (var sc in currentKey.bindList) { if (sc.BindType == 2) { isExistScene = true; } } if (isExistScene) { devicePic.UnSelectedImagePath = "Item/Scene.png"; devicePic.Width = Application.GetMinRealAverage(110); if (bindDevice.ESName == "") { btnBindName.Text = Language.StringByID(R.MyInternationalizationString.Unknown) + Language.StringByID(R.MyInternationalizationString.Scence) + "ID" + bindDevice.BindScenesId.ToString(); } else { btnBindName.Text = bindDevice.ESName; } } else { //被绑定设备图片 foreach (var dev in localDeviceList) { var tempDev = localDeviceList.Find(obj => obj.DeviceAddr == bindDevice.BindMacAddr && obj.DeviceEpoint == bindDevice.BindEpoint); if (tempDev != null) { 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 } } } /// /// 当前按键模式显示 /// public void BindModeDisplay() { var modeRowLayout = new RowLayout() { Height = Application.GetRealHeight(170), }; topMidVerticalScrolViewLayout.AddChidren(modeRowLayout); var btnKeyMode = new Button { X = Application.GetRealWidth(58), Y = Application.GetRealHeight(63), Width = Application.GetMinRealAverage(300), Height = Application.GetMinRealAverage(58), Text = Language.StringByID(R.MyInternationalizationString.keyMode), TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, }; modeRowLayout.AddChidren(btnKeyMode); var btnKeyModeTip = new Button { X = Application.GetRealWidth(1080 - 55 - 651), Y = Application.GetRealHeight(63), Width = Application.GetMinRealAverage(651), Height = Application.GetMinRealAverage(58), TextAlignment = TextAlignment.CenterRight, TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, }; modeRowLayout.AddChidren(btnKeyModeTip); var btnDel = new Button() { TextColor = Shared.Common.ZigbeeColor.Current.GXCTextWhiteColor, TextID = R.MyInternationalizationString.Delete, BackgroundColor = Shared.Common.ZigbeeColor.Current.DelRowLayout, }; modeRowLayout.AddRightView(btnDel); 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; } btnDel.MouseUpEventHandler += async (sender, e) => { bool isDelSuccess = false; try { CommonPage.Loading.Start(""); var bindResult = await currentKey.ClearBindInfoAsync(); if (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; } } } } 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 #region rowView Button oldbuttonText = null; string oldKeySelectModeText = currentKey.currentKeySelectModeText; for (var i = 0; i < 4; i++) { 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 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; 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); 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; } } } 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.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 4: 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) { } } }