mac
2024-07-25 3f6685c77beeb12baf840733fb890860f4c26e7c
HDL_ON/UI/UI2/FuntionControlView/Aks/AksPage.cs
@@ -10,6 +10,8 @@
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
{
@@ -23,6 +25,10 @@
        /// 遥控器列表
        /// </summary>
        private List<RemoteControlEntity> remoteControlList;
        /// 时序器列表
        /// </summary>
        private List<SequencerEntity> sequencerList;
        /// <summary>
        /// 设备
        /// </summary>
@@ -59,9 +65,13 @@
        /// <summary>
        /// 记录当前设备
        /// </summary>
        public IntType currnetIntType= IntType.none;
        public IntType currnetIntType = IntType.none;
        /// <summary>
        /// 记录当前选择的索引值
        /// </summary>
        public int indexValue = -1;
        public VerticalScrolViewLayout vv;
        #endregion
@@ -118,8 +128,10 @@
            {
                Y = topView.fLayout.Bottom,
                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
            };
            this.AddChidren(vv);
            //进来默认播放器界面
            //this.SwitchUI(IntType.Player);
        }
@@ -131,6 +143,8 @@
            //返回
            this.topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
            {
                //清空所有缓存数据
                AksCommonMethod.Current.ClearData();
                this.RemoveFromParent();
            };
            //设置
@@ -179,6 +193,8 @@
                try
                {
                    this.remoteControlList = SendMethod.Current.GetRemoteControlLits(this.device.deviceId);
                    this.sequencerList = SendMethod.Current.GetSequencerLits(this.device.deviceId);
                    //TestData(this.remoteControlList);
                }
                catch { }
                finally
@@ -189,16 +205,19 @@
                        if (this.remoteControlList.Count > 0)
                        {
                            if (string.IsNullOrEmpty(this.GetValueString(IntType.Player)))
                            {
                                //默认取第一位
                                this.SwitchUI((IntType)this.remoteControlList[0].type);
                            }
                            else
                            if (this.isExistType(IntType.Player))
                            {
                                //有播放类型遥控器优先显示
                                this.SwitchUI(IntType.Player);
                            }
                            else
                            {
                                //默认取第一位
                                this.indexValue = 0;
                                var type = (IntType)this.remoteControlList[this.indexValue].type;
                                this.SwitchUI(type);
                            }
                        }
                    });
@@ -206,14 +225,15 @@
            });
        }
        /// <summary>
        /// 切换界面(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
        /// 界面显示(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
        /// </summary>
        private void SwitchUI(IntType type)
        {
            if (this.currnetIntType == type)
            {
                return;
            }
            //if (this.currnetIntType == type)
            //{
            //    //去掉判断类型,因为可能存在多个同类型
            //    return;
            //}
            if (IntType.none == type)
            {
                return;
@@ -223,15 +243,15 @@
                return;
            }
            this.vv.RemoveAll();
            this.currnetIntType = type;
            var remoteContro = this.remoteControlList[this.indexValue];
            switch (type)
            {
                case IntType.Player:
                    {
                        MusicPage musicPage = new MusicPage();
                        MusicPage musicPage = new MusicPage(remoteContro, this.sequencerList);
                        this.vv.AddChidren(musicPage);
                        musicPage.Show();
                        musicPage.action += (type) =>
                        musicPage.action += (deviceType) =>
                        {
                            SelectedType();
                        };
@@ -239,10 +259,10 @@
                    break;
                case IntType.HiFi:
                    {
                        GfPage gfPage = new GfPage();
                        GfPage gfPage = new GfPage(remoteContro, this.sequencerList);
                        this.vv.AddChidren(gfPage);
                        gfPage.Show();
                        gfPage.action += (type) =>
                        gfPage.action += (deviceType) =>
                        {
                            SelectedType();
                        };
@@ -252,10 +272,10 @@
                case IntType.TV:
                    {
                        TvPage tvPage = new TvPage();
                        TvPage tvPage = new TvPage(remoteContro, this.sequencerList);
                        this.vv.AddChidren(tvPage);
                        tvPage.Show();
                        tvPage.action += (type) =>
                        tvPage.action += (deviceType) =>
                        {
                            SelectedType();
                        };
@@ -263,10 +283,10 @@
                    break;
                case IntType.STB:
                    {
                        JdhPage jdhPage = new JdhPage();
                        JdhPage jdhPage = new JdhPage(remoteContro, this.sequencerList);
                        this.vv.AddChidren(jdhPage);
                        jdhPage.Show();
                        jdhPage.action += (type) =>
                        jdhPage.action += (deviceType) =>
                        {
                            SelectedType();
                        };
@@ -274,10 +294,10 @@
                    break;
                case IntType.Projector:
                    {
                        TyyPage tyyPage = new TyyPage();
                        TyyPage tyyPage = new TyyPage(remoteContro, this.sequencerList);
                        this.vv.AddChidren(tyyPage);
                        tyyPage.Show();
                        tyyPage.action += (type) =>
                        tyyPage.action += (deviceType) =>
                        {
                            SelectedType();
                        };
@@ -286,10 +306,10 @@
                case IntType.Control:
                    {
                        YkqPage ykqPage = new YkqPage();
                        YkqPage ykqPage = new YkqPage(remoteContro, this.sequencerList);
                        this.vv.AddChidren(ykqPage);
                        ykqPage.Show();
                        ykqPage.action += (type) =>
                        ykqPage.action += (deviceType) =>
                        {
                            SelectedType();
                        };
@@ -301,23 +321,36 @@
        }
        /// <summary>
        /// 选中类型弹框(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
        /// 界面切换(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
        /// </summary>
        private void SelectedType()
        {
            var deviceTypeList = GetTypeDictionary().Values.ToList();
            var deviceTypeList = GetRemoteControlList();
            ///之前的状态文本
            string ccurrnetDeviceStr= this.GetValueString(this.currnetIntType);
            string ccurrnetDeviceStr = "";
            if (indexValue != -1 && indexValue < deviceTypeList.Count)
            {
                ccurrnetDeviceStr = deviceTypeList[indexValue].name;
            }
            PublicInterface conditionView = new PublicInterface();
            conditionView.SingleSelectionShow(this, deviceTypeList, "设备选择", ccurrnetDeviceStr
               , (valueStr) =>
               , (index) =>
               {
                   //界面显示选中值
                   var intType = this.GetKeyIntType(valueStr);
                   this.SwitchUI(intType);
                   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
        {
@@ -352,89 +385,51 @@
        }
        /// <summary>
        /// 初始化字典
        /// 获取遥控器列表
        /// </summary>
        /// <returns></returns>
        private Dictionary<IntType, string> GetTypeDictionary()
        private List<RemoteControlEntity> GetRemoteControlList()
        {
            if (this.remoteControlList == null || this.remoteControlList.Count == 0)
            {
                return new Dictionary<IntType, string>();
                return new List<RemoteControlEntity>();
            }
            var dic = new Dictionary<IntType, string>();
            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;
            return this.remoteControlList;
        }
                    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;
        }
        /// <summary>
        /// 获取设备类型
        /// 是否存在类型
        /// </summary>
        /// <param name="value">(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)</param>
        /// <param name="type">(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)</param>
        /// <returns></returns>
        private IntType GetKeyIntType(string value)
        private bool isExistType(IntType type)
        {
            var dic = this.GetTypeDictionary();
            foreach (var d in dic)
            var remoteControls = this.GetRemoteControlList();
            for (int i = 0; i < remoteControls.Count; i++)
            {
                if (d.Value == value)
                var re = remoteControls[i];
                if ((IntType)re.type == type)
                {
                    return d.Key;
                    this.indexValue = i;
                    return true;
                }
            }
            return IntType.none;
            return false;
        }
        /// <summary>
        /// 获取设备名称
        /// </summary>
        /// <param name="key">(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)</param>
        /// <returns></returns>
        private string GetValueString(IntType key)
        private void TestData(List<RemoteControlEntity> list)
        {
            var dic = this.GetTypeDictionary();
            foreach (var d in dic)
            {
                if (d.Key == key)
                {
                    return d.Value;
                }
            }
            return "";
            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 = "万能遥控器" });
        }
    }
}