using System;
using System.Collections.Generic;
using Shared;
namespace HDL_ON.UI.Music.View
{
public class DialogView
{
///
///弹窗文件夹列表界面
///
///
public void FieListView(MusicInfo musicInfo)
{
#region
//主控件
Dialog dialog = new Dialog()
{
BackgroundColor = MusicColor.PopupBackgroundColor,
};
dialog.Show();
//父控件
FrameLayout frame = new FrameLayout { };
dialog.AddChidren(frame);
frame.MouseUpEventHandler += (sen, e) =>
{
dialog.Close();
};
//白色快父控件
FrameLayout dialogFra = new FrameLayout()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(187),
Width = Application.GetRealWidth(344),
Height = Application.GetRealHeight(460),
BackgroundColor = MusicColor.WhiteColor,
Radius = (uint)Application.GetRealHeight(12),
};
frame.AddChidren(dialogFra);
//显示头部信息父控件
FrameLayout topFra = new FrameLayout()
{
Width = Application.GetRealWidth(344),
Height = Application.GetRealHeight(70),
};
dialogFra.AddChidren(topFra);
//取消控件
Button cancelnBtn = new Button
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(24),
Width = Application.GetRealWidth(60),
Height = Application.GetRealHeight(20),
TextID = StringId.cancelMusic,
TextAlignment = TextAlignment.CenterLeft,
TextColor = MusicColor.MusicNoTxetColor,
TextSize = TextSize.Text14,
};
topFra.AddChidren(cancelnBtn);
cancelnBtn.MouseUpEventHandler += (sen, e) =>
{
dialog.Close();
};
//标题控件
Button txetBtn = new Button
{
X = cancelnBtn.Right + Application.GetRealWidth(20),
Y = Application.GetRealHeight(23),
Width = Application.GetRealWidth(152),
Height = Application.GetRealHeight(22),
TextColor = MusicColor.TextColor,
TextSize = TextSize.Text16,
TextAlignment = TextAlignment.Center,
TextID = StringId.myList,
IsBold = true,
};
topFra.AddChidren(txetBtn);
//添加图标控件
Button addIconBtn = new Button
{
X = Application.GetRealWidth(304),
Y = Application.GetRealHeight(20),
Width = Application.GetMinRealAverage(28),
Height = Application.GetMinRealAverage(28),
UnSelectedImagePath = "MusicIcon/addMusic.png",
};
topFra.AddChidren(addIconBtn);
#endregion
VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
{
Y = Application.GetRealHeight(70),
Height = dialogFra.Height - Application.GetRealHeight(70),
Width = Application.GetRealWidth(344),
};
dialogFra.AddChidren(verticalScrolViewLayout);
addIconBtn.MouseUpEventHandler += (sender, e) =>
{
var fileNameList = new List();
fileNameList.Clear();
foreach (var stringName in A31MusicModel.Current.FileLists)
{
fileNameList.Add(stringName.ListName);
}
new TipView().InputBox(StringId.addNewList, "", StringId.listNameNull, StringId.listNamesSame, fileNameList, (name) =>
{
A31MusicModel.Current.FileLists.Add(new FileListInfo { ListName = name, });
A31MusicModel.Save();
FileView(dialog, verticalScrolViewLayout, musicInfo);
});
};
FileView(dialog, verticalScrolViewLayout, musicInfo);
}
void FileView(Dialog dialog, VerticalScrolViewLayout verticalScrolViewLayout, MusicInfo musicInfo)
{
verticalScrolViewLayout.RemoveAll();
for (int i = 0; i < A31MusicModel.Current.FileLists.Count; i++)
{
var list = A31MusicModel.Current.FileLists[i];
RowLayout addFlieRow = new RowLayout
{
Height = Application.GetRealHeight(78),
LineColor = MusicColor.WhiteColor,
SubViewWidth = Application.GetRealWidth(80),//改变编辑控件宽度多少;
};
verticalScrolViewLayout.AddChidren(addFlieRow);
//文件图标
Button fileIconBtn = new Button
{
X = Application.GetRealWidth(12),
Y = Application.GetRealHeight(8),
Width = Application.GetMinRealAverage(62),
Height = Application.GetMinRealAverage(62),
UnSelectedImagePath = "MusicIcon/file.png",
};
addFlieRow.AddChidren(fileIconBtn);
//文件名控件
Button fileNameBtn = new Button
{
X = fileIconBtn.Right + Application.GetRealWidth(12),
Y = Application.GetRealHeight(29),
Width = Application.GetRealWidth(189),
Height = Application.GetRealHeight(20),
TextColor = MusicColor.TextColor,
TextSize = TextSize.Text14,
TextAlignment = TextAlignment.CenterLeft,
Text = list.ListName,
};
addFlieRow.AddChidren(fileNameBtn);
///编辑控件
var editBtn = new Button
{
BackgroundColor = MusicColor.MusicEditColor,
Text = Language.StringByID(StringId.editMusic),
TextColor = MusicColor.WhiteColor,
TextSize = TextSize.Text16,
};
addFlieRow.AddRightView(editBtn);
editBtn.MouseUpEventHandler += (sender, e) =>
{
var fileNameList = new List();
fileNameList.Clear();
foreach (var stringName in A31MusicModel.Current.FileLists)
{
fileNameList.Add(stringName.ListName);
}
new TipView().InputBox(StringId.modifyName, list.ListName, StringId.listNameNull, StringId.listNamesSame, fileNameList, (name) =>
{
if (list.ListName != name)
{ ///修改名称不一样更新保存
list.ListName = name;
fileNameBtn.Text = name;
A31MusicModel.Save();
}
});
};
///删除控件
var delBtn = new Button
{
BackgroundColor = MusicColor.MusicDelColor,
Text = Language.StringByID(StringId.delMusic),
TextColor = MusicColor.WhiteColor,
TextSize = TextSize.Text16,
};
addFlieRow.AddRightView(delBtn);
delBtn.MouseUpEventHandler += (sender, e) =>
{
new View.TipView().TipBox(StringId.tip, StringId.delMusicFile, () =>
{
addFlieRow.RemoveFromParent();
A31MusicModel.Current.FileLists.Remove(list);
A31MusicModel.Save();
});
};
EventHandler click = (sender, e) =>
{
if (null == list.MusicInfoList.Find((music) => music.URL == musicInfo.URL))
{
list.MusicInfoList.Add(musicInfo);
A31MusicModel.Save();
}
dialog.Close();
string msg = Language.StringByID(StringId.addMusicList) + list.ListName;
new PublicAssmebly().TipMsgAutoClose(msg, false);
};
fileIconBtn.MouseUpEventHandler += click;
fileNameBtn.MouseUpEventHandler += click;
addFlieRow.MouseUpEventHandler += click;
}
}
///
/// 选中组合的播放器的界面
///
public void PlayMergence(A31MusicModel a31MusicModel)
{
#region
//主控件
Dialog dialog = new Dialog()
{
BackgroundColor = MusicColor.PopupBackgroundColor,
};
dialog.Show();
//父控件
FrameLayout frame = new FrameLayout { };
dialog.AddChidren(frame);
frame.MouseUpEventHandler += (sen, e) =>
{
dialog.Close();
};
//白色快父控件
FrameLayout dialogFra = new FrameLayout()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(397),
Width = Application.GetRealWidth(344),
Height = Application.GetRealHeight(250),
BackgroundColor = MusicColor.WhiteColor,
Radius = (uint)Application.GetRealHeight(12),
};
frame.AddChidren(dialogFra);
//显示头部信息父控件
FrameLayout topFra = new FrameLayout()
{
Width = Application.GetRealWidth(344),
Height = Application.GetRealHeight(50),
};
dialogFra.AddChidren(topFra);
//取消控件
Button cancelnBtn = new Button
{
X = Application.GetRealWidth(20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(60),
Height = Application.GetRealHeight(20),
TextID = StringId.cancelMusic,
TextAlignment = TextAlignment.CenterLeft,
TextColor = MusicColor.MusicNoTxetColor,
TextSize = TextSize.Text14,
};
topFra.AddChidren(cancelnBtn);
cancelnBtn.MouseUpEventHandler += (sen, e) =>
{
dialog.Close();
};
//标题控件
Button txetBtn = new Button
{
X = cancelnBtn.Right + Application.GetRealWidth(20),
Y = Application.GetRealHeight(14),
Width = Application.GetRealWidth(152),
Height = Application.GetRealHeight(22),
TextColor = MusicColor.TextColor,
TextSize = TextSize.Text16,
TextAlignment = TextAlignment.Center,
TextID = StringId.selectedMergence,
IsBold = true,
};
topFra.AddChidren(txetBtn);
//确认控件
Button confirmBtn = new Button
{
X = Application.GetRealWidth(344 - 60 - 20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(60),
Height = Application.GetRealHeight(20),
TextID = StringId.confirmMusic,
TextAlignment = TextAlignment.CenterRight,
TextColor = MusicColor.SelectedColor,
TextSize = TextSize.Text14,
};
topFra.AddChidren(confirmBtn);
VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
{
Y = Application.GetRealHeight(50),
Height = dialogFra.Height - Application.GetRealHeight(50),
Width = Application.GetRealWidth(344),
};
dialogFra.AddChidren(verticalScrolViewLayout);
var playList1 = new List();
for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
{
var player = A31MusicModel.A31MusicModelList[i];
if (!player.IsOnLine)
{
//不在线不显示;
continue;
}
RowLayout PlayRow = new RowLayout
{
Height = Application.GetRealHeight(50),
LineColor = MusicColor.WhiteColor,
SubViewWidth = Application.GetRealWidth(80),//改变编辑控件宽度多少;
};
verticalScrolViewLayout.AddChidren(PlayRow);
//播放器名称控件
Button PlayNameBtn = new Button
{
X = Application.GetRealWidth(20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(150),
Height = Application.GetRealHeight(20),
TextColor = MusicColor.TextColor,
TextSize = TextSize.Text14,
TextAlignment = TextAlignment.CenterLeft,
Text = NamePlayer(player),
};
PlayRow.AddChidren(PlayNameBtn);
//选中图标控件
Button selectedIconBtn = new Button
{
X = Application.GetRealWidth(303),
Y = Application.GetRealHeight(11),
Width = Application.GetMinRealAverage(28),
Height = Application.GetMinRealAverage(28),
UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
SelectedImagePath = "MusicIcon/selectedIcon.png",
};
PlayRow.AddChidren(selectedIconBtn);
///加大几点范围
Button clickBtn = new Button
{
Height = Application.GetRealHeight(50),
};
PlayRow.AddChidren(clickBtn);
if (a31MusicModel.UniqueDeviceName == player.UniqueDeviceName)
{
clickBtn.IsSelected = selectedIconBtn.IsSelected = true;
playList1.Add(a31MusicModel);
}
clickBtn.MouseUpEventHandler += (sender, e) =>
{
clickBtn.IsSelected = !clickBtn.IsSelected;
selectedIconBtn.IsSelected = clickBtn.IsSelected;
var musicPlayer = playList1.Find((c) => c.UniqueDeviceName == player.UniqueDeviceName);
if (selectedIconBtn.IsSelected)
{
if (musicPlayer == null)
{
playList1.Add(player);
}
}
else
{
if (musicPlayer != null)
{
playList1.Remove(player);
}
}
};
//线
Button lineBtn = new Button
{
Y = PlayRow.Height - 1,
X = Application.GetRealWidth(20),
Width = Application.GetRealWidth(304),
Height = 1,
BackgroundColor = MusicColor.LineColor,
};
PlayRow.AddChidren(lineBtn);
}
#endregion
confirmBtn.MouseUpEventHandler += (sender, e) =>
{
if (playList1.Count <= 1)
{
new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.selectAtLeastTwoPlayers), false);
return;
}
int number = 0;
foreach (var musin in playList1)
{
if (musin.ServerClientType == 1)
{
number++;
}
}
if (number >= 2)
{
new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.cannotSelectTwoOrMoreMainPlayersToCombine), false);
//如果都是主播放我就不能组合;
return;
}
///查询是否已经存在主播放;
var host_Music_If = playList1.Find((c) => c.ServerClientType == 1);
if (host_Music_If == null)
{
var playList2 = new List();
for (int i = 0; i < playList1.Count; i++)
{
var musics = playList1[i];
if (musics.A31PlayStatus.status == "play")
{
playList2.Add(musics);
}
}
if (playList2.Count == 0)
{
SelectedPlayerView(dialog, playList1, playList1);
}
else if (playList2.Count == 1)
{
//只有一个播放器在播放,默认为主播发器;
dialog.Close();
var player = playList2[0];
MergeThreading(player, playList1);
}
else
{
SelectedPlayerView(dialog, playList1, playList2);
}
}
else
{
dialog.Close();
MergeThreading(host_Music_If, playList1);
}
};
}
///
/// 选中某个音乐为主播放器的界面
///
/// 显示将要组合的播放器列表
/// /// 显示在播放音乐播放器列表
void SelectedPlayerView(Dialog dialogF, List musicList1, List musicList2)
{
#region
//主控件
Dialog dialog = new Dialog()
{
//BackgroundColor = Color.PopupBackgroundColor,
};
dialog.Show();
//父控件
FrameLayout frame = new FrameLayout { };
dialog.AddChidren(frame);
frame.MouseUpEventHandler += (sen, e) =>
{
dialog.Close();
};
//白色快父控件
FrameLayout dialogFra = new FrameLayout()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(397),
Width = Application.GetRealWidth(344),
Height = Application.GetRealHeight(250),
BackgroundColor = MusicColor.WhiteColor,
Radius = (uint)Application.GetRealHeight(12),
};
frame.AddChidren(dialogFra);
//显示头部信息父控件
FrameLayout topFra = new FrameLayout()
{
Width = Application.GetRealWidth(344),
Height = Application.GetRealHeight(50),
};
dialogFra.AddChidren(topFra);
//取消控件
Button cancelnBtn = new Button
{
X = Application.GetRealWidth(20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(60),
Height = Application.GetRealHeight(20),
TextID = StringId.cancelMusic,
TextAlignment = TextAlignment.CenterLeft,
TextColor = MusicColor.MusicNoTxetColor,
TextSize = TextSize.Text14,
};
topFra.AddChidren(cancelnBtn);
cancelnBtn.MouseUpEventHandler += (sen, e) =>
{
dialog.Close();
};
//标题控件
Button txetBtn = new Button
{
X = cancelnBtn.Right + Application.GetRealWidth(20),
Y = Application.GetRealHeight(14),
Width = Application.GetRealWidth(152),
Height = Application.GetRealHeight(22),
TextColor = MusicColor.TextColor,
TextSize = TextSize.Text16,
TextAlignment = TextAlignment.Center,
TextID = StringId.readyPlay,
IsBold = true,
};
topFra.AddChidren(txetBtn);
//确认控件
Button confirmBtn = new Button
{
X = Application.GetRealWidth(344 - 60 - 20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(60),
Height = Application.GetRealHeight(20),
TextID = StringId.confirmMusic,
TextAlignment = TextAlignment.CenterRight,
TextColor = MusicColor.SelectedColor,
TextSize = TextSize.Text14,
};
topFra.AddChidren(confirmBtn);
VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
{
Y = Application.GetRealHeight(50),
Height = dialogFra.Height - Application.GetRealHeight(50),
Width = Application.GetRealWidth(344),
};
dialogFra.AddChidren(verticalScrolViewLayout);
//记录选中状态
Button selectedBtn = new Button() { Name = "No" };
for (int i = 0; i < musicList2.Count; i++)
{
var player = musicList2[i];
RowLayout addFlieRow = new RowLayout
{
Height = Application.GetRealHeight(50),
LineColor = MusicColor.WhiteColor,
};
verticalScrolViewLayout.AddChidren(addFlieRow);
if (player.A31PlayStatus.status == "play")
{
Button songNameBtn = new Button
{
X = Application.GetRealWidth(20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(150),
Height = Application.GetRealHeight(20),
TextColor = MusicColor.TextColor,
TextSize = TextSize.Text14,
TextAlignment = TextAlignment.CenterLeft,
Text = player.A31PlayStatus.Title,
};
addFlieRow.AddChidren(songNameBtn);
var wText = songNameBtn.GetTextWidth();//获取文本宽度
if (wText >Application.GetRealWidth(220))
{
songNameBtn.Width = Application.GetRealWidth(220);
}
else
{
songNameBtn.Width = wText + Application.GetRealWidth(15);
}
//歌手控件
Button singerBtn = new Button
{
X = songNameBtn.Right,
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(220)- wText,
Height = Application.GetRealHeight(20),
TextColor = MusicColor.MusicNoTxetColor,
TextSize = TextSize.Text12,
TextAlignment = TextAlignment.CenterLeft,
Text = "-" + player.A31PlayStatus.Artist.Trim(),
};
addFlieRow.AddChidren(singerBtn);
}
else
{
//播放器名称控件
Button PlayNameBtn = new Button
{
X = Application.GetRealWidth(20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(150),
Height = Application.GetRealHeight(20),
TextColor = MusicColor.TextColor,
TextSize = TextSize.Text14,
TextAlignment = TextAlignment.CenterLeft,
Text = NamePlayer(player),
};
addFlieRow.AddChidren(PlayNameBtn);
}
//选中图标控件
Button selectedIconBtn = new Button
{
X = Application.GetRealWidth(303),
Y = Application.GetRealHeight(11),
Width = Application.GetMinRealAverage(28),
Height = Application.GetMinRealAverage(28),
UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
SelectedImagePath = "MusicIcon/selectedIcon.png",
Tag = player,
};
addFlieRow.AddChidren(selectedIconBtn);
///加大几点范围
Button clickBtn = new Button
{
Height = Application.GetRealHeight(50),
};
addFlieRow.AddChidren(clickBtn);
clickBtn.MouseUpEventHandler += (sender, e) =>
{
selectedBtn.IsSelected = false;
selectedBtn = selectedIconBtn;
selectedBtn.Name = "Yes";
selectedBtn.IsSelected = true;
};
//线
Button lineBtn = new Button
{
Y = addFlieRow.Height - 1,
X = Application.GetRealWidth(20),
Width = Application.GetRealWidth(304),
Height = 1,
BackgroundColor = MusicColor.LineColor,
};
addFlieRow.AddChidren(lineBtn);
}
#endregion
confirmBtn.MouseUpEventHandler += (sender, e) =>
{
if (selectedBtn.Name.ToString() == "No")
{
new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.noSelectedPlay), false);
return;
}
dialogF.Close();
dialog.Close();
var serverMusic = selectedBtn.Tag as A31MusicModel;
MergeThreading(serverMusic, musicList1);
};
}
///
/// 选中解除组合的播放器的界面
///
public void DetachPlayMergence(A31MusicModel a31player)
{
#region
//主控件
Dialog dialog = new Dialog()
{
BackgroundColor = MusicColor.PopupBackgroundColor,
};
dialog.Show();
//父控件
FrameLayout frame = new FrameLayout { };
dialog.AddChidren(frame);
frame.MouseUpEventHandler += (sen, e) =>
{
dialog.Close();
};
//白色快父控件
FrameLayout dialogFra = new FrameLayout()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(397),
Width = Application.GetRealWidth(344),
Height = Application.GetRealHeight(250),
BackgroundColor = MusicColor.WhiteColor,
Radius = (uint)Application.GetRealHeight(12),
};
frame.AddChidren(dialogFra);
//显示头部信息父控件
FrameLayout topFra = new FrameLayout()
{
Width = Application.GetRealWidth(344),
Height = Application.GetRealHeight(50),
};
dialogFra.AddChidren(topFra);
//取消控件
Button cancelnBtn = new Button
{
X = Application.GetRealWidth(20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(60),
Height = Application.GetRealHeight(20),
TextID = StringId.cancelMusic,
TextAlignment = TextAlignment.CenterLeft,
TextColor = MusicColor.MusicNoTxetColor,
TextSize = TextSize.Text14,
};
topFra.AddChidren(cancelnBtn);
cancelnBtn.MouseUpEventHandler += (sen, e) =>
{
dialog.Close();
};
//标题控件
Button txetBtn = new Button
{
X = cancelnBtn.Right + Application.GetRealWidth(20),
Y = Application.GetRealHeight(14),
Width = Application.GetRealWidth(152),
Height = Application.GetRealHeight(22),
TextColor = MusicColor.TextColor,
TextSize = TextSize.Text16,
TextAlignment = TextAlignment.Center,
TextID = StringId.checkTheReleasePlayer,
//Text = "选中解除播放器",
IsBold = true,
};
topFra.AddChidren(txetBtn);
//确认控件
Button confirmBtn = new Button
{
X = Application.GetRealWidth(344 - 60 - 20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(60),
Height = Application.GetRealHeight(20),
TextID = StringId.confirmMusic,
TextAlignment = TextAlignment.CenterRight,
TextColor = MusicColor.SelectedColor,
TextSize = TextSize.Text14,
};
topFra.AddChidren(confirmBtn);
VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
{
Y = Application.GetRealHeight(50),
Height = dialogFra.Height - Application.GetRealHeight(50),
Width = Application.GetRealWidth(344),
};
dialogFra.AddChidren(verticalScrolViewLayout);
var playList1 = new List();
playList1.Add(a31player);
for (int i = 0; i < a31player.Slave.slave_list.Count; i++)
{
var slave = a31player.Slave.slave_list[i];
var music_If = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == slave.uuid.Replace("uuid:", ""));
if (music_If != null)
{
playList1.Add(music_If);
}
}
var playList2 = new List();
for (int i = 0; i < playList1.Count; i++)
{
var player = playList1[i];
RowLayout PlayRow = new RowLayout
{
Height = Application.GetRealHeight(50),
LineColor = MusicColor.WhiteColor,
SubViewWidth = Application.GetRealWidth(80),//改变编辑控件宽度多少;
};
verticalScrolViewLayout.AddChidren(PlayRow);
//播放器名称控件
Button PlayNameBtn = new Button
{
X = Application.GetRealWidth(20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(150),
Height = Application.GetRealHeight(20),
TextColor = MusicColor.TextColor,
TextSize = TextSize.Text14,
TextAlignment = TextAlignment.CenterLeft,
Text = NamePlayer(player),
};
PlayRow.AddChidren(PlayNameBtn);
//选中图标控件
Button selectedIconBtn = new Button
{
X = Application.GetRealWidth(303),
Y = Application.GetRealHeight(11),
Width = Application.GetMinRealAverage(28),
Height = Application.GetMinRealAverage(28),
UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
SelectedImagePath = "MusicIcon/selectedIcon.png",
};
PlayRow.AddChidren(selectedIconBtn);
///加大几点范围
Button clickBtn = new Button
{
Height = Application.GetRealHeight(50),
Tag = player.UniqueDeviceName,
};
PlayRow.AddChidren(clickBtn);
clickBtn.MouseUpEventHandler += (sender, e) =>
{
clickBtn.IsSelected = !clickBtn.IsSelected;
selectedIconBtn.IsSelected = clickBtn.IsSelected;
var uuid = playList2.Find((obj) => obj.UniqueDeviceName == clickBtn.Tag.ToString());
if (selectedIconBtn.IsSelected)
{
if (uuid == null)
{
playList2.Add(player);
}
}
else
{
if (uuid != null)
{
playList2.Remove(player);
}
}
};
//线
Button lineBtn = new Button
{
Y = PlayRow.Height - 1,
X = Application.GetRealWidth(20),
Width = Application.GetRealWidth(304),
Height = 1,
BackgroundColor = MusicColor.LineColor,
};
PlayRow.AddChidren(lineBtn);
}
#endregion
confirmBtn.MouseUpEventHandler += (sender, e) =>
{
if (playList1.Count == 0)
{
new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.noCheckTheReleasePlayer), false);
return;
}
dialog.Close();
RemoveThreading(a31player, playList2);
};
}
///
/// 发送组合命令逻辑处理的方法
///
/// 主播放器
///
void MergeThreading(A31MusicModel serverMusic, List musicList1)
{
A31MusicModel mainModel = null;
bool mainModelCollection = false;
MusicMain.loading.Start(Language.StringByID(StringId.inConfiguration));
bool _if = false;
System.Threading.Tasks.Task.Run(() =>
{
try
{
var statusEx = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=getStatusEx");
if (statusEx == null)
{
statusEx = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=getStatusEx");
}
if (statusEx == null)
{
return;
}
var serverIfon = Newtonsoft.Json.JsonConvert.DeserializeObject(statusEx);
if (serverIfon == null)
{
return;
}
string ssid = "";
foreach (var b in serverIfon.ssid)
{
ssid += System.Convert.ToString(b, 16).ToUpper().Length < 2 ? "0" + System.Convert.ToString(b, 16).ToUpper() : System.Convert.ToString(b, 16).ToUpper();
}
System.Threading.Thread.Sleep(1000);
for (int i = 0; i < musicList1.Count; i++)
{
var clientMusic = musicList1[i];
if (clientMusic.UniqueDeviceName == serverMusic.UniqueDeviceName)
{
//过滤掉主播放器;
continue;
}
var dd = SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid);
if (null == SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid))
{
if (null == SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid))
{
}
}
System.Threading.Thread.Sleep(1000);//等待1秒再发数据
}
DateTime dateTime = DateTime.Now;
while ((DateTime.Now - dateTime).TotalMilliseconds < 15 * 1000)
{
System.Threading.Thread.Sleep(1000);
try
{
var result = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
if (result != null && result != "Failed")
{
var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
if (tmepSlaves != null && tmepSlaves.slave_list != null && tmepSlaves.slave_list.Count != 0)
{
string str = serverMusic.Name;
for (int j = 0; j < A31MusicModel.A31MusicModelList.Count; j++)
{
var music = A31MusicModel.A31MusicModelList[j];
if(music.collection && !mainModelCollection)
{
mainModelCollection = true;
}
if (music.UniqueDeviceName == serverMusic.UniqueDeviceName)
{
music.ServerClientType = 1;
mainModel = music;
music.Slave = tmepSlaves;
//过滤掉主播放器;
continue;
}
var slave_Ifon = tmepSlaves.slave_list.Find((obj) => obj.uuid.Replace("uuid:", "") == music.UniqueDeviceName);
if (null != slave_Ifon)
{
str = str + "+" + slave_Ifon.name;
//已经添加成功
music.ServerClientType = -1;
music.IsCanShow = false;
music.IsOnLine = false;
music.IPAddress = slave_Ifon.ip;
music.MainPlayIP = serverMusic.IPAddress;
_if = true;
}
}
serverMusic.MainPlayName = str;
foreach(var music in A31MusicModel.A31MusicModelList)
{
if(music.ServerClientType == 1)
{
music.MainPlayCollection = mainModelCollection;
}
}
A31MusicModel.Save();
break;
}
}
}
catch { }
}
}
catch { }
finally
{
Application.RunOnMainThread(() =>
{
MusicMain.loading.Hide();
///可以提示配置失败;
if (_if)
{
//配置成功才可以刷新界面
MainPage.BasePageView.RemoveViewByTag("MusicMain");
var musicMain = new MusicMain();
MainPage.BasePageView.AddChidren(musicMain);
musicMain.Show();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
});
}
});
}
///
/// 解除组合命令逻辑处理的方法
///
/// 主播放器
///
void RemoveThreading(A31MusicModel a31player, List playList1)
{
MusicMain.loading.Start(Language.StringByID(StringId.lifting));
var slaveList = new List();
slaveList.AddRange(a31player.Slave.slave_list);
// bool host_If = false; //表示是否显示解除的播放
bool _if = false;
System.Threading.Tasks.Task.Run(() =>
{
try
{
var play_If = playList1.Find((obj) => obj.UniqueDeviceName == a31player.UniqueDeviceName);
if (play_If == null)
{
//子音箱与主音箱断开的命令
for (int i = 0; i < playList1.Count; i++)
{
var clientMusic = playList1[i];
if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.IPAddress))
{
if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.IPAddress))
{
}
}
///每解除一个播放器需要等待3秒
System.Threading.Thread.Sleep(3000);//等待3秒再发数据
}
}
else
{
//解散组的命令
if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:Ungroup"))
{
if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:Ungroup"))
{
}
}
}
DateTime dateTime = DateTime.Now;
while ((DateTime.Now - dateTime).TotalMilliseconds < 12 * 1000)
{
System.Threading.Thread.Sleep(1000);
try
{
var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
if (result != null && result != "Failed")
{
var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
if (tmepSlaves != null)
{
if (tmepSlaves.slave_list.Count == 0)
{
var host_music = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == a31player.UniqueDeviceName);
if (host_music != null)
{
host_music.ServerClientType = 0;//解除主从关系
host_music.MainPlayName = "";
}
for (int a = 0; a < slaveList.Count; a++)
{
var uuid = slaveList[a].uuid.Replace("uuid:", "");
var music = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == uuid);
if (music != null)
{
music.ServerClientType = 0;//解除主从关系
music.IsCanShow = true;//允许显示
music.IsOnLine = false;//先不允许读取
}
}
}
else
{
for (int b = 0; b < tmepSlaves.slave_list.Count; b++)
{
var uuid = tmepSlaves.slave_list[b].uuid.Replace("uuid:", "");
var music = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == uuid);
if (music != null)
{
music.ServerClientType = 0;//解除主从关系
music.IsCanShow = true;//允许显示
music.IsOnLine = false;//先不允许读取
}
}
}
var host_a31player = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == a31player.UniqueDeviceName);
string str = host_a31player.Name;
for (int b = 0; b < tmepSlaves.slave_list.Count; b++)
{
str = str + "+" + tmepSlaves.slave_list[b].name;
}
host_a31player.MainPlayName = str;///改变主播放器的显示名称
_if = true;//解除成功
A31MusicModel.Save();
break;
}
}
}
catch { }
}
}
catch { }
finally
{
Application.RunOnMainThread(() =>
{
MusicMain.loading.Hide();
///可以提示解除失败;
if (_if)
{
//解除成功才可以刷新界面
MainPage.BasePageView.RemoveViewByTag("MusicMain");
var musicMain = new MusicMain();
MainPage.BasePageView.AddChidren(musicMain);
musicMain.Show();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
});
}
});
}
///
/// 播放器名称
///
public string NamePlayer(A31MusicModel a31player)
{
if (a31player.ServerClientType == 1)
{
return a31player.MainPlayName;
}
else
{
return a31player.Name;
}
}
List volumePlayList = new List();
A31MusicModel currVolumePlay = null;//当前的播放器
int startVolume = 0;//之前的音量
int endVolume = 0;//现在的音量
string if_volume ="";//标记是调节总音量还是单个播放器音量;
///
/// 播放器音量的界面
///
/// 主播放器
public void PlayerVolumeView(A31MusicModel a31player)
{
volumePlayList.Clear();
for (int i = 0; i < a31player.Slave.slave_list.Count; i++)
{
var slave = a31player.Slave.slave_list[i];
var music_If = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == slave.uuid.Replace("uuid:", ""));
if (music_If != null)
{
music_If.ServerClientType = -1;
music_If.A31PlayStatus.vol = slave.volume;
volumePlayList.Add(music_If);
}
}
volumePlayList.Add(a31player);
#region
//主控件
Dialog volumedialog = new Dialog();
volumedialog.Show();
//父控件
FrameLayout frame = new FrameLayout { };
volumedialog.AddChidren(frame);
//白色快父控件
FrameLayout dialogFra = new FrameLayout()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(397-20),
Width = Application.GetRealWidth(344),
Height = Application.GetRealHeight(250+20),
BackgroundColor = MusicColor.WhiteColor,
Radius = (uint)Application.GetRealHeight(12),
};
frame.AddChidren(dialogFra);
#region 确认 取消
//显示头部信息父控件
FrameLayout topFra = new FrameLayout()
{
Width = Application.GetRealWidth(344),
Height = Application.GetRealHeight(58),
};
dialogFra.AddChidren(topFra);
//取消控件
Button cancelnBtn = new Button
{
X = Application.GetRealWidth(20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(60),
Height = Application.GetRealHeight(20),
TextID = StringId.cancelMusic,
TextAlignment = TextAlignment.CenterLeft,
TextColor = MusicColor.MusicNoTxetColor,
TextSize = TextSize.Text14,
};
topFra.AddChidren(cancelnBtn);
//标题控件
Button txetBtn = new Button
{
X = cancelnBtn.Right + Application.GetRealWidth(20),
Y = Application.GetRealHeight(14),
Width = Application.GetRealWidth(152),
Height = Application.GetRealHeight(22),
TextColor = MusicColor.TextColor,
TextSize = TextSize.Text16,
TextAlignment = TextAlignment.Center,
TextID = StringId.volumeAdjustment,
IsBold = true,
};
topFra.AddChidren(txetBtn);
//确认控件
Button confirmBtn = new Button
{
X = Application.GetRealWidth(344 - 60 - 20),
Y = Application.GetRealHeight(15),
Width = Application.GetRealWidth(60),
Height = Application.GetRealHeight(20),
TextID = StringId.confirmMusic,
TextAlignment = TextAlignment.CenterRight,
TextColor = MusicColor.SelectedColor,
TextSize = TextSize.Text14,
};
topFra.AddChidren(confirmBtn);
EventHandler eventHandler= (sen,e) => {
volumedialog.Close();
if (updateVolumeThread != null)
{
try
{
if (updateVolumeThread.IsAlive)
{
updateVolumeThread.Abort();
}
}
catch { }
}
};
cancelnBtn.MouseUpEventHandler += eventHandler;
confirmBtn.MouseUpEventHandler += eventHandler;
frame.MouseUpEventHandler += eventHandler;
#endregion
#region 总音量的View
FrameLayout totalVolumeFra = new FrameLayout
{
Height = Application.GetRealHeight(64),
Y = Application.GetRealHeight(58),
};
dialogFra.AddChidren(totalVolumeFra);
Button totalvolumeTextBtn = new Button
{
X = Application.GetRealWidth(28),
Y = Application.GetRealHeight(8),
Width = Application.GetRealWidth(200),
Height = Application.GetRealHeight(14),
TextColor = MusicColor.MusicNoTxetColor,
TextSize = TextSize.Text10,
TextAlignment = TextAlignment.CenterLeft,
Text = Language.StringByID(StringId.totalVolume),
};
totalVolumeFra.AddChidren(totalvolumeTextBtn);
DiyImageSeekBar totalVolSeekBar = new DiyImageSeekBar
{
Y = Application.GetRealHeight(12),
X = Application.GetRealWidth(28),
Width = Application.GetRealWidth(240),
Height = Application.GetRealHeight(54),//进度条父控件背景高度
IsProgressTextShow = false,//显示百分比
IsClickable = true,//进度条是否滑动
ProgressBarColor = MusicColor.SelectedColor,//选中进度条颜色
ThumbImagePath = "MusicIcon/progressIcon.png",//进度条按钮图标
ThumbImageHeight = Application.GetMinRealAverage(54),//进度条按钮图标的高度(默认正方形:宽和高一样)
SeekBarViewHeight = Application.GetMinRealAverage(8),//进度条的高度
Progress = int.Parse(a31player.A31PlayStatus.vol),
SeekBarPadding = Application.GetRealWidth(20),
//ProgressChangeDelayTime=
};
totalVolumeFra.AddChidren(totalVolSeekBar);
Button totalVolumeValueBtn = new Button
{
X = Application.GetRealWidth(289),
Y = Application.GetRealHeight(31),
Width = Application.GetRealWidth(26 + 15),
Height = Application.GetRealHeight(17),
TextColor = MusicColor.MusicNoTxetColor,
TextSize = TextSize.Text12,
TextAlignment = TextAlignment.CenterLeft,
Text = totalVolSeekBar.Progress.ToString() + "%",
};
totalVolumeFra.AddChidren(totalVolumeValueBtn);
#endregion
VerticalScrolViewLayout volumeViewLayout = new VerticalScrolViewLayout
{
Y =Application.GetRealHeight(58+64),
Height = dialogFra.Height - Application.GetRealHeight(58+64),
Width = Application.GetRealWidth(343),
};
dialogFra.AddChidren(volumeViewLayout);
for (int i = 0; i < volumePlayList.Count; i++)
{
var player = volumePlayList[i];
#region 调节当个播放器View
FrameLayout volumeFra = new FrameLayout
{
Height = Application.GetRealHeight(64),
};
volumeViewLayout.AddChidren(volumeFra);
Button volumeTextBtn = new Button
{
X = Application.GetRealWidth(28),
Y = Application.GetRealHeight(8),
Width = Application.GetRealWidth(200),
Height = Application.GetRealHeight(14),
TextColor = MusicColor.MusicNoTxetColor,
TextSize = TextSize.Text10,
TextAlignment = TextAlignment.CenterLeft,
Text = player.Name + Language.StringByID(StringId.volumeMusic),
};
volumeFra.AddChidren(volumeTextBtn);
DiyImageSeekBar volSeekBar = new DiyImageSeekBar
{
Y = Application.GetRealHeight(12),
X = Application.GetRealWidth(28),
Width = Application.GetRealWidth(240),
Height = Application.GetRealHeight(54),//进度条父控件背景高度
IsProgressTextShow = false,//显示百分比
IsClickable = true,//进度条是否滑动
ProgressBarColor = MusicColor.SelectedColor,//选中进度条颜色
ThumbImagePath = "MusicIcon/progressIcon.png",//进度条按钮图标
ThumbImageHeight = Application.GetMinRealAverage(54),//进度条按钮图标的高度(默认正方形:宽和高一样)
SeekBarViewHeight = Application.GetMinRealAverage(8),//进度条的高度
Progress = int.Parse(player.A31PlayStatus.vol),
SeekBarPadding = Application.GetRealWidth(20),
//ProgressChangeDelayTime=
};
volumeFra.AddChidren(volSeekBar);
Button valueBtn = new Button
{
X = Application.GetRealWidth(289),
Y = Application.GetRealHeight(31),
Width = Application.GetRealWidth(26+15),
Height = Application.GetRealHeight(17),
TextColor = MusicColor.MusicNoTxetColor,
TextSize = TextSize.Text12,
TextAlignment = TextAlignment.CenterLeft,
Text = player.A31PlayStatus.vol + "%",
};
volumeFra.AddChidren(valueBtn);
#endregion
///音量进度条点击事件
EventHandler progressClick = (sender, e) =>
{
if (currVolumePlay == null || (currVolumePlay != null && currVolumePlay.UniqueDeviceName != player.UniqueDeviceName))
{
currVolumePlay = player;
}
endVolume = e;
if_volume = "Volume";
valueBtn.Text = volSeekBar.Progress + "%";
};
volSeekBar.OnProgressChangedEvent += progressClick;
volSeekBar.OnStopTrackingTouchEvent += progressClick;
}
EventHandler totalProgressClick = (sender, e) =>
{
if_volume = "totalVolume";
endVolume = e;
totalVolumeValueBtn.Text = totalVolSeekBar.Progress + "%";
for (int j = 0; j < volumePlayList.Count; j++)
{
var music = volumePlayList[j];
var frameLayout = (FrameLayout)volumeViewLayout.GetChildren(j);
var diyImageSeekBar = (DiyImageSeekBar)frameLayout.GetChildren(1);
var button = (Button)frameLayout.GetChildren(2);
diyImageSeekBar.Progress = totalVolSeekBar.Progress;
button.Text = totalVolSeekBar.Progress + "%";
}
};
totalVolSeekBar.OnProgressChangedEvent += totalProgressClick;
totalVolSeekBar.OnStopTrackingTouchEvent += totalProgressClick;
#endregion
}
///
/// 定时音量并且发送命令
///
System.Threading.Thread updateVolumeThread;
public void UpdateVolume()
{
if (updateVolumeThread != null) {
try
{
if (updateVolumeThread.IsAlive) {
updateVolumeThread.Abort();
}
}
catch { }
}
updateVolumeThread = new System.Threading.Thread(() =>
{
try
{
while (true)
{
System.Threading.Thread.Sleep(500);
if (startVolume == endVolume)
{
continue;
}
startVolume = endVolume;
if (if_volume == "totalVolume")
{
for (int j = 0; j < volumePlayList.Count; j++)
{
var music = volumePlayList[j];
//每个500毫秒发从播放器音量命令
SendMethod.ControlVolume(endVolume, music);
System.Threading.Thread.Sleep(1000);
}
}
else if(if_volume == "Volume")
{
if (currVolumePlay == null)
{
continue;
}
SendMethod.ControlVolume(endVolume, currVolumePlay);
}
}
}
catch { }
})
{ IsBackground = true };
updateVolumeThread.Start();
}
}
[System.Serializable]
public class A31Wifi
{
public string ssid;
public string WifiChannel;
public string uuid;
public string eth2;
public string ra0;
public string upnp_uuid;
public string firmware;
public string language;
public string MAC;
public string Release;
public string psk;
public string SSIDStrategy;
public string netstat;
public string apcli0;
}
}