xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
@@ -8,21 +8,31 @@
    public class MusicMain : FrameLayout
    {
        //FrameLayout Frame = null;
        //public MusicListViewMain() {
        //    Frame = this;
        //}
        /// <summary>
        /// MusicMain对象构造函数
        /// </summary>
        public MusicMain()
        {
            Tag = "MusicMain";
            //进来音乐列表界面先移除之前线程;
            A31MusicModel.RemoveListThread();
        }
        /// <summary>
        /// 重写RemoveFromParent方法
        /// </summary>
        public override void RemoveFromParent()
        {
            base.RemoveFromParent();
            clearA31Threads();
            A31MusicModel.ReadMusicStates();//进来没有音乐被收藏过,退出有音乐被收藏过
        }
        /// <summary>
        /// 创建线程列表
        /// </summary>
        static List<System.Threading.Thread> threadLists = new List<System.Threading.Thread>();
        /// <summary>
        /// 移除线程
        /// </summary>
        static void clearA31Threads()
        {
            var threads = threadLists.FindAll((obj) => { return obj.Name == "A31"; });
@@ -33,28 +43,32 @@
                    threadLists.Remove(thread);
                    if (thread.IsAlive)
                    {
                        ///强制线程抛异常
                        thread.Abort();
                    }
                }
                catch (Exception e)
                {
                    System.Console.WriteLine(e.Message);
                    MainPage.Log("clearA31Threads error : " + e.Message);
                }
            }
        }
        /// <summary>
        ///  显示加载界面
        /// </summary>
        public static Loading loading = new Loading();
        public  static Loading loading = new Loading();
        /// <summary>
        /// 定义全局对象
        /// </summary>
        VerticalRefreshLayout verticalRefresh;
        public void Show()
        {
            #region   界面布局
            this.BackgroundColor = Color.ViewColor;
            #region 界面布局
            this.BackgroundColor = MusicColor.ViewColor;
            var topView = new TopView();
            this.AddChidren(topView.TopFLayoutView());
            topView.topNameBtn.TextID = StringId.a31Music;
            topView.topNameBtn.TextID =StringId.a31Music;
            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
            {
                RemoveFromParent();
@@ -82,7 +96,7 @@
            else
            {
                clearA31Threads();
                //verticalRefresh.RemoveAll();
               //verticalRefresh.RemoveAll();
                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
                {
                    var a31player = A31MusicModel.A31MusicModelList[i];
@@ -126,11 +140,14 @@
                            a31MusicModel.IsOnLine = true;
                        }
                    }
                    catch (Exception e) { System.Console.WriteLine(e.Message); }
                    catch (Exception e) { MainPage.Log(e.Message); }
                });
            }
        }
        /// <summary>
        /// 刷新播放器列表
        /// </summary>
        /// <param name="Yes">是否显示刷新图标</param>
        void SeachMusic(bool Yes = false)
        {
            for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
@@ -181,6 +198,7 @@
                            }
                            MusicListView(a31player);
                        }
                       //A31MusicModel.ReadMusicStates();
                    });
                    return;
@@ -191,6 +209,7 @@
                    //不是我们支持的品牌不支持
                    if (obj.Name != null)
                    {
                        obj.sid = "030101123456780909020123AABB" + obj.UniqueDeviceName;
                        A31MusicModel.A31MusicModelList.Add(obj);
                    }
                }
@@ -215,34 +234,70 @@
            musicView.singerBtn.Text = a31player.A31PlayStatus.Artist;
            musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
            musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(a31player);
            musicView.regionBtn.TextID = StringId.region;
            if (a31player.IsEnd)
            {
                musicView.muiscFl.Height = Application.GetRealHeight(12 + 139 + 12);
            }
            musicView.collectIconBtn.MouseUpEventHandler += (sender, e) =>
            {
                musicView.collectIconBtn.IsSelected = !musicView.collectIconBtn.IsSelected;
                if (a31player.ServerClientType == 1)
                {
                    if (musicView.collectIconBtn.IsSelected)
                    {
                        a31player.MainPlayCollection = true;
                    }
                    else
                    {
                        a31player.MainPlayCollection = false;
                    }
                }
                else
                {
                    if (musicView.collectIconBtn.IsSelected)
                    {
                        a31player.collect = true;
                    }
                    else
                    {
                        a31player.collect = false;
                    }
                }
                A31MusicModel.Save();
            };
            EventHandler<MouseEventArgs> clickMergence = (sender, e) =>
            {
                if (a31player.ServerClientType == 0)
                {
                    new View.DialogView { }.PlayMergence();
                    new View.DialogView { }.PlayMergence(a31player);
                }
                else if (a31player.ServerClientType == 1)
                {
                    new View.DialogView { }.DetachPlayMergence(a31player);
                }
            };
            musicView.mergeBjBtn.MouseUpEventHandler += clickMergence;
            musicView.mergeBtn.MouseUpEventHandler += clickMergence;
            musicView.mergeIconBtn.MouseUpEventHandler += clickMergence;
            musicView.clickBtn.MouseUpEventHandler += (sender, e) =>
             {
                 A31MusicModel.Current = a31player;//当前播放器
                 var a31PlayMusicPage = new A31PlayMusicPage();
                 MainPage.BasePageView.AddChidren(a31PlayMusicPage);
                 a31PlayMusicPage.Show();
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
             };
            EventHandler<MouseEventArgs> clickPlayView = (sender, e) =>
            {
                A31MusicModel.Current = a31player;//当前播放器
                var a31PlayMusicPage = new A31PlayMusicPage();
                MainPage.BasePageView.AddChidren(a31PlayMusicPage);
                a31PlayMusicPage.Show();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            musicView.musicIfonFl.MouseUpEventHandler += clickPlayView;
            musicView.clickBtn.MouseUpEventHandler += clickPlayView;//
            musicView.singerBtn.MouseUpEventHandler += clickPlayView;
            musicView.songNameBtn.MouseUpEventHandler += clickPlayView;//
            musicView.musicNameBtn.MouseUpEventHandler += clickPlayView;
            musicView.regionBtn.MouseUpEventHandler += clickPlayView;//
            ///上一曲点击事件
            musicView.prevBtn.MouseDownEventHandler += (sender, e) =>
            {
@@ -280,16 +335,8 @@
                musicView.nextBtn.IsSelected = false;
            };
            musicView.collectIconBtn.MouseUpEventHandler = (sender, e) =>
            var musicThread = new System.Threading.Thread(() =>
            {
                musicView.collectIconBtn.IsSelected = !musicView.collectIconBtn.IsSelected;
                a31player.collection = musicView.collectIconBtn.IsSelected ? true : false;
            };
            System.Threading.Tasks.Task.Run(() =>
            {
                System.Threading.Thread.CurrentThread.Name = "A31";
                threadLists.Add(System.Threading.Thread.CurrentThread);
                while (true)
                {
                    System.Threading.Thread.Sleep(1000);
@@ -311,12 +358,36 @@
                        {
                            musicView.playBtn.IsSelected = false;
                        }
                        musicView.regionBtn.Text = a31player.GetRoomListName();
                        if (a31player.ServerClientType == 1)
                        {
                            if (a31player.MainPlayCollection)
                            {
                                musicView.collectIconBtn.IsSelected = true;
                            }
                            else
                            {
                                musicView.collectIconBtn.IsSelected = false;
                            }
                        }
                        else
                        {
                            if (a31player.collect)
                            {
                                musicView.collectIconBtn.IsSelected = true;
                            }
                            else
                            {
                                musicView.collectIconBtn.IsSelected = false;
                            }
                        }
                    });
                }
            });
            })
            { IsBackground = true, Name = "A31" };
            musicThread.Start();
            threadLists.Add(musicThread);
        }
        /// <summary>
        /// 读取主从关系
        /// </summary>
@@ -366,6 +437,7 @@
                            string str = a31player.Name;
                            for (int j = 0; j < a31player.Slave.slave_list.Count; j++)
                            {
                                var slave = a31player.Slave.slave_list[j];
                                str = str + "+" + slave.name;
                                var tempA31Player = A31MusicModel.A31MusicModelList.Find((obj) => slave.uuid.Replace("uuid:", "") == obj.UniqueDeviceName);
@@ -373,6 +445,7 @@
                                {
                                    A31MusicModel.A31MusicModelList.Add(new A31MusicModel
                                    {
                                        sid = "030101123456780909020123AABB" + slave.uuid.Replace("uuid:", ""),
                                        ServerClientType = -1,//从的
                                        IPAddress = slave.ip,
                                        MainPlayIP = a31player.IPAddress,
@@ -392,6 +465,7 @@
                                    tempA31Player.UniqueDeviceName = slave.uuid.Replace("uuid:", "");
                                    tempA31Player.IsCanShow = false;
                                    tempA31Player.IsOnLine = false;//true作用为了读取从播放器的音量
                                }
                            }
                            a31player.MainPlayName = str;
@@ -402,8 +476,11 @@
                        var ss = e.Message;
                    }
                }
            }
            catch { }
        }
    }
}
}