using System;
using Shared;
using HDL_ON.UI.Music;
using System.Collections.Generic;
using HDL_ON.UI.UI2.FuntionControlView.Music;
namespace HDL_ON.UI.Music
{
public class A31SongPlay : FrameLayout
{
public A31SongPlay()
{
Tag = "Music";
}
public void Show(SongList songLists)
{
this.BackgroundColor = MusicColor.ViewColor;
var topView = new TopView();
this.AddChidren(topView.TopFLayoutView());
topView.topNameBtn.Text=songLists.group;
topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
{
this.RemoveFromParent();
};
var vv = new VerticalRefreshLayout
{
BackgroundColor = MusicColor.WhiteColor,
Y = topView.fLayout.Bottom,
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, songLists.songs, songLists.group,songLists.source);
}
///
/// 加载音乐列表
///
/// 父控件
/// 音乐列表
/// 列表名
/// 音乐源
public static void SongListView(VerticalRefreshLayout vv, List 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];
if (songs == null)
{
continue;
}
UI.Music.View.SongView songView = new UI.Music.View.SongView();
songView.SongFrameLayout(vv, songs);
songView.songBtn.Text = songs.name;
///点击播放事件
songView.clickBtn.MouseUpEventHandler += (sender, e) =>
{
System.Threading.Tasks.Task.Run(() =>
{
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 dic = new Dictionary();
dic.Add("song_name", songView.songBtn.Text);
dic.Add("playlist_name", listName);
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);
});
});
};
}
}
}
public class UpdateThread
{
public UpdateThread()
{
}
///
/// 定时更新当前播放音乐
///
/// 当前界面
/// 每一条音乐的主控件
/// 点前播放器
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();
}
}
}