using Shared; using System; using System.Collections.Generic; using System.Text; using HDL_ON.UI.CSS; using HDL_ON.Entity; using HDL_ON.DriverLayer; using HDL_ON.UI.Music; using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock; using HDL_ON.UI.UI2.Intelligence.Automation; using System.Linq; using HDL_ON.UI.UI2.FuntionControlView.Aks.Entity; using System.Reflection; using System.Collections; namespace HDL_ON.UI.UI2.FuntionControlView.Aks { /// /// 埃克斯主界面 /// public class AksPage : FrameLayout { #region ■ 变量声明___________________________ /// /// 遥控器列表 /// private List remoteControlList; /// 时序器列表 /// private List sequencerList; /// /// 设备 /// private Function device; /// /// 上一级界面的设备名字控件 /// private Button btnDeviceName; /// /// 上一级界面的房间名字控件 /// private Button btnRoomName; /// /// 头部布局 /// private TopView topView; /// /// 当前设备名称 /// private Button btnCurrDeviceName; /// /// 区域 /// private Button btnCurrDeviceRoom; /// /// 表示来自那个界面 /// private CommonMethod.Comerom comerom; /// /// 删除设备后需要更新界面的回调 /// public Action action; /// /// 记录当前设备 /// public IntType currnetIntType = IntType.none; /// /// 记录当前选择的索引值 /// public int indexValue = -1; public VerticalScrolViewLayout vv; #endregion public AksPage() { } /// /// 构造函数 /// /// 设备 /// 上一级界面的设备名字控件(注:不能传null,没有可以传new Button()) /// 上一级界面的房间名字控件(注:不能传null,没有可以传new Button()) public AksPage(Function function, Button btnDeviceName, Button btnRoomName, CommonMethod.Comerom comerom, Action action) { this.device = function; this.btnDeviceName = btnDeviceName; this.btnRoomName = btnRoomName; this.comerom = comerom; this.action = action; } public void Show() { //初始化UI this.InitTop(); this.InitMiddle(); //初始化事件 this.EventListener(); //读取数据 this.ReadData(); } /// /// 初始化头部界面 /// private void InitTop() { this.BackgroundColor = MusicColor.ViewColor; this.topView = new TopView(); this.topView.setBtn.Visible = true; this.topView.topNameBtn.Text = this.device.name; this.AddChidren(topView.TopFLayoutView()); } /// /// 初始化中部界面 /// private void InitMiddle() { vv = new VerticalScrolViewLayout() { Y = topView.fLayout.Bottom, Height = Application.GetRealHeight(H_W.H - H_W.T_Height), }; this.AddChidren(vv); //进来默认播放器界面 //this.SwitchUI(IntType.Player); } /// /// 注册事件 /// private void EventListener() { //返回 this.topView.clickBackBtn.MouseUpEventHandler += (sender, e) => { //清空所有缓存数据 AksCommonMethod.Current.ClearData(); this.RemoveFromParent(); }; //设置 this.topView.clickSetBtn.MouseUpEventHandler += (sender, e) => { CommonMethod.Current.MainThread(() => { //调用秀绕的界面 var infoView = new UI.FunctionBaseInfoSetPage(this.device, () => { if (this.btnDeviceName == null || this.btnRoomName == null || this.device == null) { return; } ////刷新显示 this.btnDeviceName.Text = this.device.name; this.btnRoomName.Text = this.device.GetRoomListName(); //this.btnCurrDeviceName.Text = this.device.name; //this.btnCurrDeviceRoom.Text = this.device.GetRoomListName(); //this.CalculatedPosition();//重新计算宽度 }); infoView.actionDel += () => { //解绑设备后 this.RemoveFromParent(); this.action?.Invoke(); }; MainPage.BasePageView.AddChidren(infoView); infoView.LoadPage(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }); }; } /// /// 初始数据 /// private void ReadData() { CommonMethod.Current.Loading.Start(); CommonMethod.Current.SunThread(() => { try { this.remoteControlList = SendMethod.Current.GetRemoteControlLits(this.device.deviceId); this.sequencerList = SendMethod.Current.GetSequencerLits(this.device.deviceId); //TestData(this.remoteControlList); } catch { } finally { CommonMethod.Current.MainThread(() => { CommonMethod.Current.Loading.Hide(); if (this.remoteControlList.Count > 0) { if (this.isExistType(IntType.Player)) { //有播放类型遥控器优先显示 this.SwitchUI(IntType.Player); } else { //默认取第一位 this.indexValue = 0; var type = (IntType)this.remoteControlList[this.indexValue].type; this.SwitchUI(type); } } }); } }); } /// /// 界面显示(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器) /// private void SwitchUI(IntType type) { //if (this.currnetIntType == type) //{ // //去掉判断类型,因为可能存在多个同类型 // return; //} if (IntType.none == type) { return; } if (this.vv == null) { return; } this.vv.RemoveAll(); var remoteContro = this.remoteControlList[this.indexValue]; switch (type) { case IntType.Player: { MusicPage musicPage = new MusicPage(remoteContro, this.sequencerList); this.vv.AddChidren(musicPage); musicPage.Show(); musicPage.action += (deviceType) => { SelectedType(); }; } break; case IntType.HiFi: { GfPage gfPage = new GfPage(remoteContro, this.sequencerList); this.vv.AddChidren(gfPage); gfPage.Show(); gfPage.action += (deviceType) => { SelectedType(); }; } break; case IntType.TV: { TvPage tvPage = new TvPage(remoteContro, this.sequencerList); this.vv.AddChidren(tvPage); tvPage.Show(); tvPage.action += (deviceType) => { SelectedType(); }; } break; case IntType.STB: { JdhPage jdhPage = new JdhPage(remoteContro, this.sequencerList); this.vv.AddChidren(jdhPage); jdhPage.Show(); jdhPage.action += (deviceType) => { SelectedType(); }; } break; case IntType.Projector: { TyyPage tyyPage = new TyyPage(remoteContro, this.sequencerList); this.vv.AddChidren(tyyPage); tyyPage.Show(); tyyPage.action += (deviceType) => { SelectedType(); }; } break; case IntType.Control: { YkqPage ykqPage = new YkqPage(remoteContro, this.sequencerList); this.vv.AddChidren(ykqPage); ykqPage.Show(); ykqPage.action += (deviceType) => { SelectedType(); }; } break; } } /// /// 界面切换(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器) /// private void SelectedType() { var deviceTypeList = GetRemoteControlList(); ///之前的状态文本 string ccurrnetDeviceStr = ""; if (indexValue != -1 && indexValue < deviceTypeList.Count) { ccurrnetDeviceStr = deviceTypeList[indexValue].name; } PublicInterface conditionView = new PublicInterface(); conditionView.SingleSelectionShow(this, deviceTypeList, "设备选择", ccurrnetDeviceStr , (index) => { if (this.indexValue == index) { //同一个设备不处理; return; } var remoteControl = deviceTypeList[index]; this.indexValue = index; this.currnetIntType = (IntType)remoteControl.type; this.SwitchUI((IntType)remoteControl.type); }); } public enum IntType { /// /// 没有 /// none = 0, /// /// 播放器 /// Player = 1, /// /// 功放 /// HiFi = 2, /// /// 电视 /// TV = 3, /// /// 机顶盒 /// STB = 4, /// /// 投影仪 /// Projector = 5, /// /// 万能遥控器 /// Control = 6, } /// /// 获取遥控器列表 /// /// private List GetRemoteControlList() { if (this.remoteControlList == null || this.remoteControlList.Count == 0) { return new List(); } return this.remoteControlList; } /// /// 是否存在类型 /// /// (1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器) /// private bool isExistType(IntType type) { var remoteControls = this.GetRemoteControlList(); for (int i = 0; i < remoteControls.Count; i++) { var re = remoteControls[i]; if ((IntType)re.type == type) { this.indexValue = i; return true; } } return false; } private void TestData(List list) { list.Add(new RemoteControlEntity { deviceId = "33331", rcId = "1", type = 1, name = "播放器" }); list.Add(new RemoteControlEntity { deviceId = "33332", rcId = "2", type = 2, name = "功放" }); list.Add(new RemoteControlEntity { deviceId = "33333", rcId = "3", type = 3, name = "电视" }); list.Add(new RemoteControlEntity { deviceId = "33334", rcId = "4", type = 4, name = "机顶盒" }); list.Add(new RemoteControlEntity { deviceId = "33335", rcId = "5", type = 5, name = "投影仪" }); list.Add(new RemoteControlEntity { deviceId = "33336", rcId = "6", type = 6, name = "万能遥控器" }); } } }