陈嘉乐
2020-08-11 35aa462a50bb4bdf00534c80068455f0905cb582
HDL_ON/UI/UI2/FuntionControlView/Music/UpdateThread.cs
@@ -1,21 +1,27 @@
using System;
using System.Collections.Generic;
using Shared;
using HDL_ON.UI.Music;
namespace HDL_ON.UI.UI2.FuntionControlView.Music
{
    public class UpdateThread : FrameLayout
    public class UpdateThread
    {
        public UpdateThread()
        {
        }
        public static void updateThread(FrameLayout frame, VerticalRefreshLayout middViewLayout)
        /// <summary>
        /// 定时更新当前播放音乐
        /// </summary>
        /// <param name="frame">当前界面</param>
        /// <param name="middViewLayout">每一条音乐的主控件</param>
        /// <param name="a31MusicModel">点前播放器</param>
        public static void updateThread(FrameLayout frame, VerticalRefreshLayout middViewLayout, A31MusicModel a31MusicModel)
        {
            System.Threading.Thread updateSelectedMusicThread = new System.Threading.Thread(() =>
            {
                while (frame.Parent != null)
                {
                    //A31MusicModel.LogMusic("已启动更新音乐列表某一条音乐状态的线程");
                    System.Threading.Thread.Sleep(1000);
                    Application.RunOnMainThread(() =>
                    {
@@ -23,25 +29,25 @@
                        {
                            for (int i = 0; i < middViewLayout.ChildrenCount; i++)
                            {
                                FrameLayout view = (FrameLayout)middViewLayout.GetChildren(i);
                                RowLayout view = (RowLayout)middViewLayout.GetChildren(i);
                                var volIconBtn = (Button)view.GetChildren(0);//直接FrameLayout父控件找到该控件Button
                                var songNameBtn = (Button)view.GetChildren(1);//直接FrameLayout父控件找到该控件Button
                                var artistNameBtn = (Button)view.GetChildren(2);//直接FrameLayout父控件找到该控件Button
                                if (A31MusicModel.Current.A31PlayStatus.TrackURL == songNameBtn.Tag.ToString())
                                if (a31MusicModel.A31PlayStatus.TrackURL == songNameBtn.Tag.ToString())
                                {
                                    volIconBtn.Visible = true;
                                    songNameBtn.TextColor = UI.Music.Color.SelectedColor;
                                    songNameBtn.TextColor = UI.Music.MusicColor.SelectedColor;
                                    songNameBtn.X = Application.GetRealWidth(48);
                                    artistNameBtn.X = songNameBtn.Right;
                                    artistNameBtn.TextColor = UI.Music.Color.SelectedColor;
                                    artistNameBtn.TextColor = UI.Music.MusicColor.SelectedColor;
                                }
                                else
                                {
                                    volIconBtn.Visible = false;
                                    songNameBtn.TextColor = UI.Music.Color.MusicTxet14Color;
                                    songNameBtn.TextColor = UI.Music.MusicColor.MusicTxet14Color;
                                    songNameBtn.X = Application.GetRealWidth(16);
                                    artistNameBtn.X = songNameBtn.Right;
                                    artistNameBtn.TextColor = UI.Music.Color.MusicNoTxetColor;
                                    artistNameBtn.TextColor = UI.Music.MusicColor.MusicNoTxetColor;
                                }
@@ -54,5 +60,144 @@
            });
            updateSelectedMusicThread.Start();
        }
        /// <summary>
        /// 播放音乐
        /// </summary>
        /// <param name="middViewLayout">上下拉动父控件</param>
        /// <param name="musicSource">音乐源</param>
        /// <param name="listName">播放列表名</param>
        /// <param name="musicList">播放音乐列表</param>
        /// <param name="a31MusicModel">音乐播放器</param>
        public static void playMusuc(VerticalRefreshLayout middViewLayout, string musicSource, string listName,List<MusicInfo> musicList, A31MusicModel a31MusicModel, FrameLayout frame=null)
        {
            for (int i = 0; i < musicList.Count; i++)
            {
                var songs = musicList[i];
                if (songs == null)
                {
                    continue;
                }
                UI.Music.View.SongView songView = new UI.Music.View.SongView();
                songView.SongFrameLayout(middViewLayout, songs);
                switch (musicSource)
                {
                    case "本地音乐":
                        {
                            songs.URL = "http://" + new Shared.Net.NetWiFi().IpAddress + ":" + com.hdl.on.Server.Port + "/" + songs.ID;
                        }
                        break;
                    case "USB":
                        {
                            songView.clickBtn.Tag = i + 1;
                        }
                        break;
                    case "我的列表":
                        {
                            ///删除控件
                            var delBtn = new Button
                            {
                                BackgroundColor = MusicColor.MusicDelColor,
                                Text = Language.StringByID(StringId.delMusic),
                                TextColor = MusicColor.WhiteColor,
                                TextSize = TextSize.Text16,
                            };
                            songView.musicViewFl.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += (sender, e) =>
                            {
                                musicList.Remove(songs);
                                A31MusicModel.Save();
                                songView.musicViewFl.RemoveFromParent();
                            };
                        }
                        break;
                    case "播放列表":
                        {
                            songView.loveIcon.Visible = false;
                            songView.addIcon.Visible = false;
                            var wText = songView.songBtn.GetTextWidth() + Application.GetRealWidth(15);
                            if (wText > Application.GetRealWidth(280))
                            {
                                wText = Application.GetRealWidth(280);//(歌曲+歌手)宽度最大值时220
                            }
                            songView.songBtn.Width = wText;
                            songView.singerBtn.X = songView.songBtn.Right;
                            songView.singerBtn.Width = Application.GetRealWidth(280) - wText;//歌名长度小于220才可以显示歌手出来
                            songView.singerBtn.Text = string.IsNullOrEmpty(songs.Artist) ? "-Unkonw" : "-" + songs.Artist.Trim();
                            songView.clickBtn.Width = Application.GetRealWidth(344);
                            songView.clickBtn.Tag = i + 1;//标记播放哪一首歌曲
                        }
                        break;
                }
                //添加喜爱音乐控件
                songView.loveIcon.MouseUpEventHandler += (sender, e) =>
                {
                    songView.loveIcon.IsSelected = !songView.loveIcon.IsSelected;
                    if (songView.loveIcon.IsSelected)
                    {
                        ///查找音乐是否存在在列表
                        var music1 = A31MusicModel.Current.LoveMusicInfoList.Find((m) => m.URL == songs.URL);
                        if (music1 == null)
                        {
                            ///没有存在就添加
                            A31MusicModel.Current.LoveMusicInfoList.Add(songs);
                        }
                    }
                    else
                    {
                        ///查找音乐是否存在在列表
                        var music1 = A31MusicModel.Current.LoveMusicInfoList.Find((m) => m.URL == songs.URL);
                        if (music1 != null)
                        {
                            ///存在就删除
                            A31MusicModel.Current.LoveMusicInfoList.Remove(songs);
                        }
                        if (musicSource == "我的最爱")
                        {
                            songView.musicViewFl.RemoveFromParent();
                        }
                    }
                    A31MusicModel.Save();
                };
                //添加到我的列表
                songView.addIcon.MouseUpEventHandler = (sender, e) =>
                {
                    new HDL_ON.UI.Music.View.DialogView { }.FieListView(songs);
                };
                ///点击播放事件
                songView.clickBtn.MouseUpEventHandler += (sender, e) =>
                {
                    System.Threading.Tasks.Task.Run(() =>
                    {
                        System.Threading.Thread.Sleep(50);
                        Application.RunOnMainThread(() =>
                        {
                            //移除界面
                            A31MusicModel.Current.A31PlayStatus.Title = songView.songBtn.Text;
                            if (frame != null)
                            {
                                frame.RemoveFromParent();
                            }
                            MainPage.BasePageView.RemoveViewByTag("Music");
                            System.Threading.Tasks.Task.Run(() =>
                            {
                                if (musicSource == "本地音乐" || musicSource == "我的最爱" || musicSource == "我的列表")
                                {
                                    SendMethod.PushList(songs, listName, musicList, a31MusicModel, musicSource);
                                }
                                else if (musicSource == "USB" || musicSource == "播放列表")
                                {
                                    SendMethod.ListMusicPlay(listName, songView.clickBtn.Tag, A31MusicModel.Current);
                                }
                            });
                        });
                    });
                };
            }
        }
    }
}