| | |
| | | |
| | | namespace Shared.Phone.UserCenter.DeviceBind |
| | | { |
| | | public class AddScenePage : BindCommonLayout, ZigBee.Common.IStatus |
| | | public class AddScenePage : BindCommonLayout |
| | | { |
| | | /// <summary> |
| | | /// 按键模式接收 |
| | | /// </summary> |
| | | /// <param name="common">Common.</param> |
| | | public void Changed(CommonDevice common) |
| | | { |
| | | Shared.Application.RunOnMainThread(() => |
| | | { |
| | | }); |
| | | } |
| | | |
| | | /// 构造函数 |
| | | /// </summary> |
| | | /// <param name="doorLock"></param> |
| | | public AddScenePage(ZigBee.Device.Panel key) |
| | | public AddScenePage(ZigBee.Device.Panel key, List<ScenesListInfo> gwScenesList) |
| | | { |
| | | this.currentKey = key; |
| | | gwCurScenesList = gwScenesList; |
| | | } |
| | | |
| | | #region ◆ 变量申明__________________________ |
| | | #region 变量申明 |
| | | /// <summary> |
| | | /// 当前按键 |
| | | /// </summary> |
| | | ZigBee.Device.Panel currentKey; |
| | | //显示被绑定设备或场景的view |
| | | /// <summary> |
| | | /// 显示被绑定设备或场景的view |
| | | /// </summary> |
| | | VerticalScrolViewLayout midVerticalScrolViewLayout; |
| | | /// <summary> |
| | | /// 显示房间的view |
| | | /// </summary> |
| | | HorizontalScrolViewLayout btnHorizontalScrolViewLayout; |
| | | /// <summary> |
| | | /// 按键配置的目标列表 |
| | | /// </summary> |
| | | List<CommonDevice> targetList = new List<CommonDevice>();//临时目标列表 |
| | | List<Room> roomList = new List<Room>();//本地房间列表 |
| | | List<CommonDevice> targetList = new List<CommonDevice>(); |
| | | /// <summary> |
| | | /// 本地房间列表 |
| | | /// </summary> |
| | | List<Room> roomList = new List<Room>(); |
| | | /// <summary> |
| | | /// 当绑定表变化后的回调 |
| | | /// </summary> |
| | | public Action<List<BindListResponseObj>> action; |
| | | /// <summary> |
| | | /// 保存完成按钮 |
| | | /// </summary> |
| | | Button btnFinifh; |
| | | /// <summary> |
| | | /// 楼层文本 |
| | | /// </summary> |
| | | Button btnFloorText; |
| | | Dictionary<string, string> dicFloor;//楼层列表 |
| | | /// <summary> |
| | | /// 楼层列表 |
| | | /// </summary> |
| | | Dictionary<string, string> dicFloor; |
| | | List<SceneUI> currentKeyAllRoomSceneList = new List<SceneUI>(); |
| | | /// <summary> |
| | | /// 网关中的场景列表 |
| | | /// </summary> |
| | | public List<ScenesListInfo> gwCurScenesList = new List<ScenesListInfo>(); |
| | | #endregion |
| | | |
| | | /// <summary> |
| | |
| | | var btnAddFrameLayout = new FrameLayout |
| | | { |
| | | X = Application.GetRealWidth(830), |
| | | Width = Application.GetRealWidth(200), |
| | | }; |
| | | this.titleFrameLayout.AddChidren(btnAddFrameLayout); |
| | | |
| | |
| | | X = Application.GetRealWidth(15), |
| | | Text = Language.StringByID(R.MyInternationalizationString.FirstFloor), |
| | | TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, |
| | | TextSize = 15, |
| | | TextSize = 14, |
| | | IsBold = true, |
| | | TextAlignment = TextAlignment.CenterRight, |
| | | }; |
| | | btnAddFrameLayout.AddChidren(btnFloorText); |
| | |
| | | { |
| | | SideslipFramelayout(); |
| | | }; |
| | | if (Common.Config.Instance.Home.FloorDics.Count == 0) |
| | | { |
| | | btnAddFrameLayout.Width = 0; |
| | | } |
| | | else |
| | | { |
| | | btnAddFrameLayout.Width = Application.GetRealWidth(200); |
| | | } |
| | | MidFrameLayoutContent(btnFloorText); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 中部布局 |
| | | /// </summary> |
| | | async void MidFrameLayoutContent(Button btnFloorText) |
| | | { |
| | | #region UI |
| | |
| | | TextID = R.MyInternationalizationString.Save, |
| | | BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack, |
| | | TextColor = Shared.Common.ZigbeeColor.Current.XMWhite, |
| | | IsBold = true, |
| | | TextSize = 16, |
| | | }; |
| | | bottomFrameLayout.AddChidren(btnFinifh); |
| | |
| | | |
| | | #region 数据处理 |
| | | //获取楼层 |
| | | dicFloor = Common.Room.CurrentRoom.GetFloorSortList(); |
| | | dicFloor = HdlRoomLogic.Current.GetFloorSortList(); |
| | | currentKey.currentSelectFloorId = BindInfo.GetCurrentSelectFloorId(); |
| | | btnFloorText.Text = BindInfo.GetCurrentSelectFloorIdName(); |
| | | |
| | | btnFloorText.Text = BindInfo.GetCurrentSelectFloorIdName();
|
| | |
|
| | | var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); |
| | | if (Common.Config.Instance.Home.FloorDics.Count == 0) |
| | | { |
| | | // 获取没有楼层房间 |
| | | foreach (var room in Shared.Common.Room.Lists) |
| | | foreach (var room in listAllRoom) |
| | | { |
| | | if (string.IsNullOrEmpty(room.FloorId)) |
| | | { |
| | |
| | | else |
| | | { |
| | | // 获取楼层对应对房间 |
| | | foreach (var room in Shared.Common.Room.Lists) |
| | | foreach (var room in listAllRoom) |
| | | { |
| | | if (room.FloorId == currentKey.currentSelectFloorId) |
| | | { |
| | |
| | | Shared.Common.Room curRoom = roomList[0]; |
| | | int index = 0; |
| | | RefreshRoomList(curRoom, ref index); |
| | | RefreshSceneList(roomList[index]); |
| | | |
| | | if (curRoom.SceneUIList.Count == 0) |
| | | if (curRoom.ListSceneId.Count == 0) |
| | | { |
| | | btnFinifh.Enable = false; |
| | | btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; |
| | |
| | | } |
| | | |
| | | //如果房间中没有场景,则不显示 |
| | | if (room.SceneUIList.Count == 0) |
| | | if (room.ListSceneId.Count == 0) |
| | | { |
| | | continue; |
| | | } |
| | |
| | | } |
| | | curRoom = room; |
| | | currentKey.RoomId = room.Id; |
| | | if (curRoom.SceneUIList.Count == 0) |
| | | if (curRoom.ListSceneId.Count == 0) |
| | | { |
| | | btnFinifh.Enable = false; |
| | | btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; |
| | |
| | | RefreshSceneList(curRoom); |
| | | } |
| | | |
| | | //按键绑定场景表显示 |
| | | /// <summary> |
| | | /// 按键绑定场景表显示 |
| | | /// </summary> |
| | | /// <param name="curRoom"></param> |
| | | void RefreshSceneList(Shared.Common.Room curRoom) |
| | | { |
| | | midVerticalScrolViewLayout.RemoveAll(); |
| | | if (curRoom.SceneUIList.Count == 0) |
| | | if (curRoom.ListSceneId.Count == 0) |
| | | { |
| | | return; |
| | | } |
| | | Button oldScene = null; |
| | | int curIndex = 0; |
| | | foreach (var scene in curRoom.SceneUIList) |
| | | var currentSceneUIList = GetMatchSceneUIList(curRoom); |
| | | if (currentSceneUIList.Count == 0) |
| | | { |
| | | btnFinifh.Enable = false; |
| | | btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; |
| | | return; |
| | | } |
| | | foreach (var scene in currentSceneUIList) |
| | | { |
| | | #region 绑定表UI显(无数据处理) |
| | | var rowLayout = new FrameLayout() |
| | |
| | | Y = Application.GetMinRealAverage(46), |
| | | Width = Application.GetMinRealAverage(81), |
| | | Height = Application.GetMinRealAverage(81), |
| | | UnSelectedImagePath = "Scene/SceneIcon.png"
|
| | | }; |
| | | UnSelectedImagePath = "Scene/SceneIcon.png",// scene.IconPath,
|
| | | }; |
| | | rowLayout.AddChidren(devicePic); |
| | | |
| | | var btnBindName = new Button() |
| | | { |
| | | Width = Application.GetRealWidth(500 - 120), |
| | | Width = Application.GetRealWidth(790), |
| | | X = devicePic.Right + Application.GetRealWidth(20), |
| | | TextColor = Shared.Common.ZigbeeColor.Current.TextBlack, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextSize = 15, |
| | | }; |
| | | rowLayout.AddChidren(btnBindName); |
| | | |
| | |
| | | }; |
| | | rowLayout.AddChidren(line2); |
| | | |
| | | if (curIndex == curRoom.SceneUIList.Count - 1) |
| | | if (curIndex == curRoom.ListSceneId.Count - 1) |
| | | { |
| | | line2.Visible = false; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | // 侧边导航栏 |
| | | /// <summary> |
| | | /// 楼层选择的侧边导航栏 |
| | | /// </summary> |
| | | void SideslipFramelayout() |
| | | { |
| | | var dialog = new Dialog |
| | |
| | | Height = Application.GetRealHeight(58), |
| | | X = Application.GetRealWidth(81), |
| | | Y = Application.GetRealHeight(81), |
| | | TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, |
| | | TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, |
| | | TextSize = 14, |
| | | IsBold = true, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextID = R.MyInternationalizationString.SelectFloor, |
| | | }; |
| | |
| | | if (currentKey.currentSelectFloorId == floorId) |
| | | { |
| | | btnAllMethod.IsSelected = true; |
| | | btnAllMethod.IsBold = true; |
| | | btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack; |
| | | } |
| | | |
| | |
| | | oldbuttonText = btnMethodText; |
| | | btnMethodText.IsSelected = true; |
| | | oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack; |
| | | } |
| | | |
| | | //获取楼层对应的房间 |
| | | foreach (var room in Shared.Common.Room.Lists) |
| | | oldbuttonText.IsBold = true; |
| | | }
|
| | |
|
| | | //获取楼层对应的房间
|
| | | var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); |
| | | foreach (var room in listAllRoom) |
| | | { |
| | | if (room.FloorId == currentKey.currentSelectFloorId) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | //当前按键所有显示房间的所有场景处理 |
| | | /// <summary> |
| | | /// 当前按键所有显示房间的所有场景处理 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | List<SceneUI> GetALlDispalyRoomSceneList() |
| | | { |
| | | currentKeyAllRoomSceneList.Clear(); |
| | | // 获取所有房间 |
| | | foreach (var room in Shared.Common.Room.Lists) |
| | | currentKeyAllRoomSceneList.Clear();
|
| | | // 获取所有房间 |
| | | var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); |
| | | foreach (var room in listAllRoom) |
| | | { |
| | | //如果房间为喜爱,则不显示 |
| | | if (room.IsLove == true) |
| | |
| | | continue; |
| | | } |
| | | //如果房间中没有场景,则不显示 |
| | | if (room.SceneUIList.Count == 0) |
| | | if (room.ListSceneId.Count == 0) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | foreach (var scene in room.SceneUIList) |
| | | { |
| | | foreach (var sceneId in room.ListSceneId) |
| | | {
|
| | | var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId); |
| | | if (scene == null) |
| | | { |
| | | continue; |
| | | } |
| | | currentKeyAllRoomSceneList.Add(scene); |
| | | } |
| | | } |
| | | return currentKeyAllRoomSceneList; |
| | | } |
| | | |
| | | public void DeviceInfoChange(CommonDevice common, string typeTag) |
| | | /// <summary> |
| | | /// 获取网关中存在的本地场景列表 |
| | | /// </summary> |
| | | /// <param name="curRoom"></param> |
| | | /// <returns></returns> |
| | | List<SceneUI> GetMatchSceneUIList(Shared.Common.Room curRoom) |
| | | { |
| | | } |
| | | |
| | | public void ChangedILogicStatus(ZigBee.Device.Logic logic) |
| | | { |
| | | } |
| | | |
| | | public void ChangedISceneStatus(Scene scene) |
| | | { |
| | | var tempSceneUIList = new List<SceneUI>(); |
| | | foreach (var sceneId in curRoom.ListSceneId) |
| | | { |
| | | var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId);
|
| | | if (scene == null)
|
| | | {
|
| | | continue;
|
| | | } |
| | | var gwSc = gwCurScenesList.Find(obj => (obj.ScenesId == sceneId)); |
| | | if (gwSc != null) |
| | | { |
| | | tempSceneUIList.Add(scene); |
| | | } |
| | | } |
| | | return tempSceneUIList; |
| | | } |
| | | } |
| | | } |