using System;
|
using System.Collections.Generic;
|
using Shared;
|
using Shared.IO;
|
using System.Net;
|
using HDL_ON.Entity;
|
|
namespace HDL_ON.UI.Music
|
{
|
public class MusicMain : FrameLayout
|
{
|
|
/// <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"; });
|
foreach (var thread in threads)
|
{
|
try
|
{
|
threadLists.Remove(thread);
|
if (thread.IsAlive)
|
{
|
///强制线程抛异常
|
thread.Abort();
|
}
|
}
|
catch (Exception e)
|
{
|
MainPage.Log("clearA31Threads error : " + e.Message);
|
}
|
}
|
}
|
/// <summary>
|
/// 显示加载界面
|
/// </summary>
|
public static Loading loading = new Loading();
|
/// <summary>
|
/// 定义全局对象
|
/// </summary>
|
VerticalRefreshLayout verticalRefresh;
|
/// <summary>
|
/// 为了音乐刷新状态定义全局对象
|
/// </summary>
|
MusicView musicView = new MusicView();
|
public void Show()
|
{
|
#region 界面布局
|
this.BackgroundColor = MusicColor.ViewColor;
|
var topView = new TopView();
|
this.AddChidren(topView.TopFLayoutView());
|
topView.topNameBtn.TextID = StringId.a31Music;
|
topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
RemoveFromParent();
|
};
|
|
verticalRefresh = new VerticalRefreshLayout
|
{
|
Y = topView.fLayout.Bottom,
|
Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
|
};
|
this.AddChidren(verticalRefresh);
|
#endregion
|
|
verticalRefresh.BeginHeaderRefreshingAction += () =>
|
{
|
SeachMusic();
|
};
|
this.AddChidren(loading);
|
SeachMusic();
|
|
}
|
/// <summary>
|
/// 刷新播放器列表
|
/// </summary>
|
void SeachMusic()
|
{
|
Application.RunOnMainThread(() =>
|
{
|
verticalRefresh.RemoveAll();
|
for (int i = 0; i < SendMethod.sendMethod.GetMusicList.Count; i++)
|
{
|
var playerFunction = SendMethod.sendMethod.GetMusicList[i];
|
if (!playerFunction.online)
|
{
|
//过滤掉不在线的音乐播放器
|
continue;
|
}
|
MusicListView(playerFunction);
|
}
|
|
});
|
|
}
|
/// <summary>
|
/// 显示音乐列表的方法
|
/// </summary>
|
void MusicListView(Function player)
|
{
|
musicView.View(verticalRefresh);
|
musicView.singerBtn.Text = player.GetAttrState("song_name");
|
musicView.songNameBtn.Text = player.GetAttrState("song_name");
|
musicView.musicNameBtn.Text = player.name;
|
//if (player.IsEnd)
|
//{
|
// musicView.muiscFl.Height = Application.GetRealHeight(12 + 139 + 12);
|
//}
|
|
musicView.collectIconBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
musicView.collectIconBtn.IsSelected = !musicView.collectIconBtn.IsSelected;
|
if (musicView.collectIconBtn.IsSelected)
|
{
|
player.collect = true;
|
}
|
else
|
{
|
player.collect = false;
|
}
|
};
|
|
EventHandler<MouseEventArgs> clickMergence = (sender, e) =>
|
{
|
//if (player.ServerClientType == 0)
|
//{
|
// new View.DialogView { }.PlayMergence(player);
|
//}
|
//else if (player.ServerClientType == 1)
|
//{
|
// new View.DialogView { }.DetachPlayMergence(player);
|
//}
|
};
|
musicView.mergeBjBtn.MouseUpEventHandler += clickMergence;
|
musicView.mergeBtn.MouseUpEventHandler += clickMergence;
|
musicView.mergeIconBtn.MouseUpEventHandler += clickMergence;
|
|
EventHandler<MouseEventArgs> clickPlayView = (sender, e) =>
|
{
|
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) =>
|
{
|
musicView.prevBtn.IsSelected = true;
|
Dictionary<string, string> dic = new Dictionary<string, string>();
|
dic.Add("song_step", "up");
|
SendMethod.sendMethod.SendControlCommand(player, dic);
|
};
|
musicView.prevBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
musicView.prevBtn.IsSelected = false;
|
};
|
///暂停/播放点击事件
|
musicView.playBtn.MouseDownEventHandler += (sender, e) =>
|
{
|
string status = "off";
|
if (musicView.playBtn.IsSelected)
|
{
|
musicView.playBtn.IsSelected = false;
|
status = "off";
|
}
|
else
|
{
|
musicView.playBtn.IsSelected = true;
|
status = "on";
|
}
|
Dictionary<string, string> dic = new Dictionary<string, string>();
|
dic.Add("on_off", status);
|
SendMethod.sendMethod.SendControlCommand(player, dic);
|
};
|
///下一曲点击事件
|
musicView.nextBtn.MouseDownEventHandler += (sender, e) =>
|
{
|
musicView.nextBtn.IsSelected = true;
|
Dictionary<string, string> dic = new Dictionary<string, string>();
|
dic.Add("song_step", "down");
|
SendMethod.sendMethod.SendControlCommand(player, dic);
|
};
|
musicView.nextBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
musicView.nextBtn.IsSelected = false;
|
};
|
|
var musicThread = new System.Threading.Thread(() =>
|
{
|
while (true)
|
{
|
System.Threading.Thread.Sleep(1000);
|
if (!player.online)
|
{
|
continue;
|
}
|
//SendMethod.ReadStatus(player);
|
SendMethod.sendMethod.RefreshDeviceStatus(player,new List<string> { player.deviceId });
|
|
Application.RunOnMainThread(() =>
|
{
|
//musicView.singerBtn.Text = player.A31PlayStatus.Artist;
|
//musicView.songNameBtn.Text = player.A31PlayStatus.Title;
|
//musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(player);
|
//if (player.A31PlayStatus.status == "play")
|
//{
|
// musicView.playBtn.IsSelected = true;
|
//}
|
//else
|
//{
|
// musicView.playBtn.IsSelected = false;
|
//}
|
//musicView.regionBtn.Text = player.GetRoomListName();
|
//if (player.ServerClientType == 1)
|
//{
|
// if (player.MainPlayCollection)
|
// {
|
// musicView.collectIconBtn.IsSelected = true;
|
// }
|
// else
|
// {
|
// musicView.collectIconBtn.IsSelected = false;
|
// }
|
//}
|
//else
|
//{
|
// if (player.collect)
|
// {
|
// musicView.collectIconBtn.IsSelected = true;
|
// }
|
// else
|
// {
|
// musicView.collectIconBtn.IsSelected = false;
|
// }
|
//}
|
});
|
}
|
})
|
{ IsBackground = true, Name = "A31" };
|
musicThread.Start();
|
threadLists.Add(musicThread);
|
}
|
|
/// <summary>
|
///指定刷新界面
|
/// </summary>
|
/// <param name="strView">判断字符</param>
|
public void RefreshView(string strView)
|
{
|
Application.RunOnMainThread(() =>
|
{
|
try
|
{
|
|
for (int i = MainPage.BasePageView.ChildrenCount - 1; 0 <= i; i--)
|
{
|
var view = MainPage.BasePageView.GetChildren(i);
|
if (strView == view.Tag.ToString())
|
{
|
if (view.GetType() == typeof(MusicMain))
|
{
|
//musicView.singerBtn.Text = player.A31PlayStatus.Artist;
|
//musicView.songNameBtn.Text = player.A31PlayStatus.Title;
|
//musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(player);
|
//if (player.A31PlayStatus.status == "play")
|
//{
|
// musicView.playBtn.IsSelected = true;
|
//}
|
//else
|
//{
|
// musicView.playBtn.IsSelected = false;
|
//}
|
//musicView.regionBtn.Text = player.GetRoomListName();
|
//if (player.ServerClientType == 1)
|
//{
|
// if (player.MainPlayCollection)
|
// {
|
// musicView.collectIconBtn.IsSelected = true;
|
// }
|
// else
|
// {
|
// musicView.collectIconBtn.IsSelected = false;
|
// }
|
//}
|
//else
|
//{
|
// if (player.collect)
|
// {
|
// musicView.collectIconBtn.IsSelected = true;
|
// }
|
// else
|
// {
|
// musicView.collectIconBtn.IsSelected = false;
|
// }
|
//}
|
}
|
}
|
|
}
|
}
|
catch { }
|
});
|
}
|
}
|
|
}
|