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
{
///
/// MusicMain对象构造函数
///
public MusicMain()
{
Tag = "MusicMain";
//进来音乐列表界面先移除之前线程;
A31MusicModel.RemoveListThread();
}
///
/// 重写RemoveFromParent方法
///
public override void RemoveFromParent()
{
base.RemoveFromParent();
clearA31Threads();
A31MusicModel.ReadMusicStates();//进来没有音乐被收藏过,退出有音乐被收藏过
}
///
/// 创建线程列表
///
static List threadLists = new List();
///
/// 移除线程
///
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);
}
}
}
///
/// 显示加载界面
///
public static Loading loading = new Loading();
///
/// 定义全局对象
///
VerticalRefreshLayout verticalRefresh;
///
/// 为了音乐刷新状态定义全局对象
///
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();
}
///
/// 刷新播放器列表
///
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);
}
});
}
///
/// 显示音乐列表的方法
///
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 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 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 dic = new Dictionary();
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 dic = new Dictionary();
dic.Add("on_off", status);
SendMethod.sendMethod.SendControlCommand(player, dic);
};
///下一曲点击事件
musicView.nextBtn.MouseDownEventHandler += (sender, e) =>
{
musicView.nextBtn.IsSelected = true;
Dictionary dic = new Dictionary();
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 { 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);
}
///
///指定刷新界面
///
/// 判断字符
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 { }
});
}
}
}