wjc
2023-03-28 a9d1161b1df96e7ddad566335989a1444e433ef5
HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs
@@ -2,6 +2,7 @@
using Shared;
using HDL_ON.UI.Music;
using System.Collections.Generic;
using HDL_ON.UI.UI2.FuntionControlView.Music;
namespace HDL_ON.UI.Music
{
@@ -13,13 +14,14 @@
            Tag = "Music";
        }
        public void Show(List<Songs> musicList,string listName)
        public void Show(SongList songLists)
        {
            this.BackgroundColor = MusicColor.ViewColor;
            var topView = new TopView();
            this.AddChidren(topView.TopFLayoutView());
            topView.topNameBtn.TextID = StringId.usb;
            topView.topNameBtn.Text=songLists.group;
            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
            {
                this.RemoveFromParent();
@@ -31,8 +33,35 @@
                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
            };
            this.AddChidren(vv);
            vv.BeginHeaderRefreshingAction += () =>
            {
                System.Threading.Tasks.Task.Run(() =>
                {
                    try
                    {
                        //获取歌曲列表
                        var songList = SendMethod.Current.GetSingleSongList(A31MusicModel.Current.functionMusic, songLists.group, songLists.source);
                        CommonMethod.Current.AddSongListMemory(songList, songLists.source);//保存缓存
                    }
                    catch
                    {
                    }
                    finally
                    {
                        Application.RunOnMainThread(() =>
                        {
                            vv.EndHeaderRefreshing();
                            //从缓存拿列表
                            var songListMemory = CommonMethod.Current.GetSongListMemory(songLists.group, songLists.source);
                            ///加载音乐列表
                            SongListView(vv, songListMemory.songs, songListMemory.group, songLists.source);
                        });
                    }
                });
            };
            ///加载音乐列表
            SongListView(vv, musicList, listName);
            SongListView(vv, songLists.songs, songLists.group,songLists.source);
        }
@@ -42,8 +71,12 @@
        /// <param name="vv">父控件</param>
        /// <param name="musicList">音乐列表</param>
        /// <param name="listName">列表名</param>
        public void SongListView(VerticalRefreshLayout vv,List<Songs> musicList,string listName) {
        /// <param name="source">音乐源</param>
        public static void SongListView(VerticalRefreshLayout vv, List<SongInfo> musicList, string listName,string source, FrameLayout frame = null)
        {
            if (vv!=null) {
                vv.RemoveAll();
            }
            for (int i = 0; i < musicList.Count; i++)
            {
                var songs = musicList[i];
@@ -62,14 +95,27 @@
                        System.Threading.Thread.Sleep(50);
                        Application.RunOnMainThread(() =>
                        {
                            //移除界面
                            //修改缓存属性状态值
                            A31MusicModel.Current.functionMusic.SetAttrState("song_name", songView.songBtn.Text);
                            A31MusicModel.Current.functionMusic.SetAttrState("playlist_name", listName);
                            //移除界面
                            if (frame != null)
                            {
                                frame.RemoveFromParent();
                            }
                            MainPage.BasePageView.RemoveViewByTag("Music");
                            Dictionary<string, string> dic = new Dictionary<string, string>();
                            dic.Add("song_name", songView.songBtn.Text);
                            dic.Add("playlist_name", listName);
                            SendMethod.sendMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
                            if (!string.IsNullOrEmpty(songs.url))
                            {
                                dic.Add("url", songs.url);
                            }
                            if (!string.IsNullOrEmpty(source))
                            {
                                dic.Add("source", source);
                            }
                            SendMethod.Current.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
                        });
                    });
                };
@@ -78,4 +124,63 @@
        }
    }
    public class UpdateThread
    {
        public UpdateThread()
        {
        }
        /// <summary>
        /// 定时更新当前播放音乐
        /// </summary>
        /// <param name="frame">当前界面</param>
        /// <param name="middViewLayout">每一条音乐的主控件</param>
        /// <param name="a31MusicModel">点前播放器</param>
        public static void updateCurrMusicThread(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(() =>
                    {
                        try
                        {
                            for (int i = 0; i < middViewLayout.ChildrenCount; 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.A31PlayStatus.TrackURL == songNameBtn.Tag.ToString())
                                //{
                                //    volIconBtn.Visible = true;
                                //    songNameBtn.TextColor = UI.Music.MusicColor.SelectedColor;
                                //    songNameBtn.X = Application.GetRealWidth(48);
                                //    artistNameBtn.X = songNameBtn.Right;
                                //    artistNameBtn.TextColor = UI.Music.MusicColor.SelectedColor;
                                //}
                                //else
                                //{
                                //    volIconBtn.Visible = false;
                                //    songNameBtn.TextColor = UI.Music.MusicColor.MusicTxet14Color;
                                //    songNameBtn.X = Application.GetRealWidth(16);
                                //    artistNameBtn.X = songNameBtn.Right;
                                //    artistNameBtn.TextColor = UI.Music.MusicColor.MusicNoTxetColor;
                                //}
                            }
                        }
                        catch { }
                    });
                }
            });
            updateSelectedMusicThread.Start();
        }
    }
}