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(); } } }