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; 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 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); } catch { } finally { CommonMethod.Current.MainThread(() => { CommonMethod.Current.Loading.Hide(); if (this.remoteControlList.Count > 0) { if (string.IsNullOrEmpty(this.GetValueString(IntType.Player))) { //默认取第一位 this.SwitchUI((IntType)this.remoteControlList[0].type); } else { //有播放类型遥控器优先显示 this.SwitchUI(IntType.Player); } } }); } }); } /// /// 切换界面(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(); this.currnetIntType = type; switch (type) { case IntType.Player: { MusicPage musicPage = new MusicPage(GetRemoteControl((int)IntType.Player),this.sequencerList); this.vv.AddChidren(musicPage); musicPage.Show(); musicPage.action += (deviceType) => { SelectedType(); }; } break; case IntType.HiFi: { GfPage gfPage = new GfPage(GetRemoteControl((int)IntType.HiFi), this.sequencerList); this.vv.AddChidren(gfPage); gfPage.Show(); gfPage.action += (deviceType) => { SelectedType(); }; } break; case IntType.TV: { TvPage tvPage = new TvPage(GetRemoteControl((int)IntType.TV), this.sequencerList); this.vv.AddChidren(tvPage); tvPage.Show(); tvPage.action += (deviceType) => { SelectedType(); }; } break; case IntType.STB: { JdhPage jdhPage = new JdhPage(GetRemoteControl((int)IntType.STB), this.sequencerList); this.vv.AddChidren(jdhPage); jdhPage.Show(); jdhPage.action += (deviceType) => { SelectedType(); }; } break; case IntType.Projector: { TyyPage tyyPage = new TyyPage(GetRemoteControl((int)IntType.Projector), this.sequencerList); this.vv.AddChidren(tyyPage); tyyPage.Show(); tyyPage.action += (deviceType) => { SelectedType(); }; } break; case IntType.Control: { YkqPage ykqPage = new YkqPage(GetRemoteControl((int)IntType.Control), this.sequencerList); this.vv.AddChidren(ykqPage); ykqPage.Show(); ykqPage.action += (deviceType) => { SelectedType(); }; } break; } } /// /// 选中类型弹框(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器) /// private void SelectedType() { var deviceTypeList = GetTypeDictionary().Values.ToList(); ///之前的状态文本 string ccurrnetDeviceStr= this.GetValueString(this.currnetIntType); PublicInterface conditionView = new PublicInterface(); conditionView.SingleSelectionShow(this, deviceTypeList, "设备选择", ccurrnetDeviceStr , (valueStr) => { //界面显示选中值 var intType = this.GetKeyIntType(valueStr); this.SwitchUI(intType); }); } /// /// 查找遥控器 /// /// (1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器) /// 不会为null private RemoteControlEntity GetRemoteControl(int type) { if (this.remoteControlList == null || this.remoteControlList.Count == 0) { return new RemoteControlEntity(); } var re = this.remoteControlList.Find((o) => o.type == type); if (re == null) { re = new RemoteControlEntity(); } //re.deviceId = this.device.deviceId; return re; } public enum IntType { /// /// 没有 /// none = 0, /// /// 播放器 /// Player = 1, /// /// 功放 /// HiFi = 2, /// /// 电视 /// TV = 3, /// /// 机顶盒 /// STB = 4, /// /// 投影仪 /// Projector = 5, /// /// 万能遥控器 /// Control = 6, } /// /// 初始化字典 /// /// private Dictionary GetTypeDictionary() { if (this.remoteControlList == null || this.remoteControlList.Count == 0) { return new Dictionary(); } var dic = new Dictionary(); foreach (var o in this.remoteControlList) { switch (o.type) { case (int)IntType.Player: { dic.Add(IntType.Player, Language.StringByID(StringId.bofangqi)); } break; case (int)IntType.HiFi: { dic.Add(IntType.HiFi, Language.StringByID(StringId.gongfan)); } break; case (int)IntType.TV: { dic.Add(IntType.TV, Language.StringByID(StringId.dianshi)); } break; case (int)IntType.STB: { dic.Add(IntType.STB, Language.StringByID(StringId.jidinghe)); } break; case (int)IntType.Projector: { dic.Add(IntType.Projector, Language.StringByID(StringId.touyingyi)); } break; case (int)IntType.Control: { dic.Add(IntType.Control, Language.StringByID(StringId.xuniyaokongqi)); } break; } } return dic; } /// /// 获取设备类型 /// /// (1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器) /// private IntType GetKeyIntType(string value) { var dic = this.GetTypeDictionary(); foreach (var d in dic) { if (d.Value == value) { return d.Key; } } return IntType.none; } /// /// 获取设备名称 /// /// (1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器) /// private string GetValueString(IntType key) { var dic = this.GetTypeDictionary(); foreach (var d in dic) { if (d.Key == key) { return d.Value; } } return ""; } } }