From a7d20263f28aa009ef8e064a7f9700d7cd642492 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期三, 10 六月 2020 10:06:47 +0800
Subject: [PATCH] 2020-06-10-1
---
HDL_ON/UI/Music/View/DialogView.cs | 1222 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,219 insertions(+), 3 deletions(-)
diff --git a/HDL_ON/UI/Music/View/DialogView.cs b/HDL_ON/UI/Music/View/DialogView.cs
index b72fab6..b136a9a 100644
--- a/HDL_ON/UI/Music/View/DialogView.cs
+++ b/HDL_ON/UI/Music/View/DialogView.cs
@@ -5,9 +5,13 @@
{
public class DialogView
{
-
+ /// <summary>
+ ///寮圭獥鏂囦欢澶瑰垪琛ㄧ晫闈�
+ /// </summary>
+ /// <param name="musicInfo"></param>
public void FieListView(MusicInfo musicInfo)
{
+ #region
//涓绘帶浠�
Dialog dialog = new Dialog()
{
@@ -82,7 +86,7 @@
};
topFra.AddChidren(addIconBtn);
-
+ #endregion
VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
{
Y = Application.GetRealHeight(70),
@@ -110,7 +114,6 @@
FileView(dialog, verticalScrolViewLayout, musicInfo);
}
-
void FileView(Dialog dialog, VerticalScrolViewLayout verticalScrolViewLayout, MusicInfo musicInfo)
{
verticalScrolViewLayout.RemoveAll();
@@ -219,5 +222,1218 @@
}
+ /// <summary>
+ /// 閫変腑缁勫悎鐨勬挱鏀惧櫒鐨勭晫闈�
+ /// </summary>
+ public void PlayMergence()
+ {
+
+ #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 = Color.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 = Color.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 = Color.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 = Color.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<A31MusicModel>();
+ 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 = Color.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 = Color.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);
+
+ 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 = Color.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<A31MusicModel>();
+ 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);
+ }
+ };
+ }
+ /// <summary>
+ /// 閫変腑鏌愪釜闊充箰涓轰富鎾斁鍣ㄧ殑鐣岄潰
+ /// </summary>
+ /// <param name="musicList1">鏄剧ず灏嗚缁勫悎鐨勬挱鏀惧櫒鍒楄〃</param>
+ /// /// <param name="musicList2">鏄剧ず鍦ㄦ挱鏀鹃煶涔愭挱鏀惧櫒鍒楄〃</param>
+ void SelectedPlayerView(Dialog dialogF, List<A31MusicModel> musicList1, List<A31MusicModel> 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 = Color.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 = Color.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 = Color.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 = Color.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 = Color.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 = Color.TextColor,
+ TextSize = TextSize.Text14,
+ TextAlignment = TextAlignment.CenterLeft,
+ Text = player.A31PlayStatus.Title,
+ };
+ addFlieRow.AddChidren(songNameBtn);
+
+ var wText = songNameBtn.GetTextWidth();//鑾峰彇鏂囨湰瀹藉害
+ if (wText > 280)
+ {
+ songNameBtn.Width = Application.GetRealWidth(280);
+ }
+ else
+ {
+ songNameBtn.Width = wText + 5;
+ }
+ //姝屾墜鎺т欢
+ Button singerBtn = new Button
+ {
+ X = songNameBtn.Right,
+ Y = Application.GetRealHeight(15),
+ Width = Application.GetRealWidth(280 - songNameBtn.Width),
+ Height = Application.GetRealHeight(20),
+ TextColor = Color.MusicNoTxetColor,
+ TextSize = TextSize.Text12,
+ TextAlignment = TextAlignment.CenterLeft,
+ Text = "-" + player.A31PlayStatus.Artist.Trim(),
+ };
+ addFlieRow.AddChidren(singerBtn);
+ if (wText > 280)
+ {
+ ///姝屽悕闀垮害灏忎簬250鎵嶅彲浠ユ樉绀烘瓕鎵嬪嚭鏉�
+ singerBtn.Width = Application.GetRealWidth(0);
+ }
+ }
+ else
+ {
+ //鎾斁鍣ㄥ悕绉版帶浠�
+ Button PlayNameBtn = new Button
+ {
+ X = Application.GetRealWidth(20),
+ Y = Application.GetRealHeight(15),
+ Width = Application.GetRealWidth(150),
+ Height = Application.GetRealHeight(20),
+ TextColor = Color.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 = Color.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);
+ };
+
+ }
+ /// <summary>
+ /// 閫変腑瑙i櫎缁勫悎鐨勬挱鏀惧櫒鐨勭晫闈�
+ /// </summary>
+ public void DetachPlayMergence(A31MusicModel a31player)
+ {
+
+ #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 = Color.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 = Color.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 = Color.TextColor,
+ TextSize = TextSize.Text16,
+ TextAlignment = TextAlignment.Center,
+ TextID = StringId.checkTheReleasePlayer,
+ //Text = "閫変腑瑙i櫎鎾斁鍣�",
+ 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 = Color.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<A31MusicModel>();
+ 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<A31MusicModel>();
+ for (int i = 0; i < playList1.Count; i++)
+ {
+ var player = playList1[i];
+ RowLayout PlayRow = new RowLayout
+ {
+ Height = Application.GetRealHeight(50),
+ LineColor = Color.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 = Color.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 = Color.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);
+ };
+ }
+ /// <summary>
+ /// 鍙戦�佺粍鍚堝懡浠ら�昏緫澶勭悊鐨勬柟娉�
+ /// </summary>
+ /// <param name="serverMusic">涓绘挱鏀惧櫒</param>
+ /// <param name="musicList1"></param>
+ void MergeThreading(A31MusicModel serverMusic, List<A31MusicModel> musicList1)
+ {
+ 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<A31Wifi>(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<Slaves>(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.UniqueDeviceName == serverMusic.UniqueDeviceName)
+ {
+
+ music.ServerClientType = 1;
+ 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;
+ 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;
+ }
+ });
+ }
+ });
+
+ }
+ /// <summary>
+ /// 瑙i櫎缁勫悎鍛戒护閫昏緫澶勭悊鐨勬柟娉�
+ /// </summary>
+ /// <param name="a31player">涓绘挱鏀惧櫒</param>
+ /// <param name="playList1"></param>
+ void RemoveThreading(A31MusicModel a31player, List<A31MusicModel> playList1)
+ {
+ MusicMain.loading.Start(Language.StringByID(StringId.lifting));
+ var slaveList = new List<Slave>();
+ slaveList.AddRange(a31player.Slave.slave_list);
+ // bool host_If = false; //琛ㄧず鏄惁鏄剧ず瑙i櫎鐨勬挱鏀�
+ 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
+ {
+ //瑙f暎缁勭殑鍛戒护
+ 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<Slaves>(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;//瑙i櫎涓讳粠鍏崇郴
+ 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;//瑙i櫎涓讳粠鍏崇郴
+ 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;//瑙i櫎涓讳粠鍏崇郴
+ 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;//瑙i櫎鎴愬姛
+ A31MusicModel.Save();
+ break;
+ }
+ }
+
+ }
+ catch { }
+ }
+ }
+ catch { }
+ finally
+ {
+ Application.RunOnMainThread(() =>
+ {
+ MusicMain.loading.Hide();
+ ///鍙互鎻愮ず瑙i櫎澶辫触;
+ if (_if)
+ {
+ //瑙i櫎鎴愬姛鎵嶅彲浠ュ埛鏂扮晫闈�
+ 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<A31MusicModel> volumePlayList = new List<A31MusicModel>();
+ A31MusicModel currVolumePlay = null;//褰撳墠鐨勬挱鏀惧櫒
+ int startVolume = 0;//涔嬪墠鐨勯煶閲�
+ int endVolume = 0;//鐜板湪鐨勯煶閲�
+ /// <summary>
+ /// 鎾斁鍣ㄩ煶閲忕殑鐣岄潰
+ /// </summary>
+ /// <param name="a31player">涓绘挱鏀惧櫒</param>
+ public void PlayerVolumeView(A31MusicModel a31player)
+ {
+ #region
+ //涓绘帶浠�
+ Dialog volumedialog = new Dialog();
+ volumedialog.Show();
+ //鐖舵帶浠�
+ FrameLayout frame = new FrameLayout { };
+ volumedialog.AddChidren(frame);
+ frame.MouseUpEventHandler += (sen, e) =>
+ {
+ volumedialog.Close();
+ if (updateVolumeThread != null)
+ {
+ try
+ {
+ if (updateVolumeThread.IsAlive)
+ {
+ updateVolumeThread.Abort();
+ }
+ }
+ catch { }
+ }
+ };
+ //鐧借壊蹇埗鎺т欢
+ FrameLayout dialogFra = new FrameLayout()
+ {
+ X = Application.GetRealWidth(16),
+ Y = Application.GetRealHeight(397),
+ Width = Application.GetRealWidth(344),
+ Height = Application.GetRealHeight(250),
+ BackgroundColor = Color.WhiteColor,
+ Radius = (uint)Application.GetRealHeight(12),
+ };
+ frame.AddChidren(dialogFra);
+ //鏄剧ず澶撮儴淇℃伅鐖舵帶浠�
+ 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 = Color.MusicNoTxetColor,
+ TextSize = TextSize.Text14,
+ };
+ topFra.AddChidren(cancelnBtn);
+ cancelnBtn.MouseUpEventHandler += (sen, e) =>
+ {
+ volumedialog.Close();
+ if (updateVolumeThread != null)
+ {
+ try
+ {
+ if (updateVolumeThread.IsAlive)
+ {
+ updateVolumeThread.Abort();
+ }
+ }
+ catch { }
+ }
+ };
+ //鏍囬鎺т欢
+ Button txetBtn = new Button
+ {
+ X = cancelnBtn.Right + Application.GetRealWidth(20),
+ Y = Application.GetRealHeight(14),
+ Width = Application.GetRealWidth(152),
+ Height = Application.GetRealHeight(22),
+ TextColor = Color.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 = Color.SelectedColor,
+ TextSize = TextSize.Text14,
+ };
+ topFra.AddChidren(confirmBtn);
+ confirmBtn.MouseUpEventHandler += (sen, e) =>
+ {
+ volumedialog.Close();
+ if (updateVolumeThread != null)
+ {
+ try
+ {
+ if (updateVolumeThread.IsAlive)
+ {
+ updateVolumeThread.Abort();
+ }
+ }
+ catch { }
+ }
+ };
+
+ VerticalScrolViewLayout volumeViewLayout = new VerticalScrolViewLayout
+ {
+ Y = Application.GetRealHeight(58),
+ Height = dialogFra.Height - Application.GetRealHeight(58),
+ Width = Application.GetRealWidth(343),
+ };
+ dialogFra.AddChidren(volumeViewLayout);
+ 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);
+
+ for (int i = 0; i < volumePlayList.Count; i++)
+ {
+ var player = volumePlayList[i];
+ 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 = Color.MusicNoTxetColor,
+ TextSize = TextSize.Text10,
+ TextAlignment = TextAlignment.CenterLeft,
+
+ };
+ volumeFra.AddChidren(volumeTextBtn);
+ if (player.ServerClientType == -1)
+ {
+ volumeTextBtn.Text = player.Name + Language.StringByID(StringId.volumeMusic);
+ }
+ else if (player.ServerClientType == 1)
+ {
+ volumeTextBtn.Text = Language.StringByID(StringId.totalVolume);
+ }
+
+ 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 = Color.SelectedColor,//閫変腑杩涘害鏉¢鑹�
+ ThumbImagePath = "MusicIcon/progressIcon.png",//杩涘害鏉℃寜閽浘鏍�
+ ThumbImageHeight = Application.GetMinRealAverage(54),//杩涘害鏉℃寜閽浘鏍囩殑楂樺害锛堥粯璁ゆ鏂瑰舰锛氬鍜岄珮涓�鏍凤級
+ SeekBarViewHeight = Application.GetMinRealAverage(8),//杩涘害鏉$殑楂樺害
+ Progress = int.Parse(player.A31PlayStatus.vol),
+ //ProgressChangeDelayTime=
+ };
+ volumeFra.AddChidren(volSeekBar);
+
+ Button valueBtn = new Button
+ {
+ X = Application.GetRealWidth(289),
+ Y = Application.GetRealHeight(31),
+ Width = Application.GetRealWidth(26),
+ Height = Application.GetRealHeight(17),
+ TextColor = Color.MusicNoTxetColor,
+ TextSize = TextSize.Text12,
+ TextAlignment = TextAlignment.CenterLeft,
+ Text = player.A31PlayStatus.vol + "%",
+ };
+ volumeFra.AddChidren(valueBtn);
+
+
+ ///闊抽噺杩涘害鏉$偣鍑讳簨浠�
+ EventHandler<int> progressClick = (sender, e) =>
+ {
+
+ if (currVolumePlay == null || (currVolumePlay != null && currVolumePlay.UniqueDeviceName != player.UniqueDeviceName))
+ {
+ currVolumePlay = player;
+ }
+ endVolume = e;
+ if (player.ServerClientType == -1)
+ {
+ valueBtn.Text = volSeekBar.Progress + "%";
+ //SendMethod.ControlVolume(volSeekBar.Progress, player);
+ }
+ else if (player.ServerClientType == 1)
+ {
+ 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 = volSeekBar.Progress;
+ button.Text = volSeekBar.Progress + "%";
+ //SendMethod.ControlVolume(volSeekBar.Progress, music);
+ }
+ }
+ };
+ volSeekBar.OnProgressChangedEvent += progressClick;
+ volSeekBar.OnStopTrackingTouchEvent += progressClick;
+ }
+ #endregion
+
+ }
+ /// <summary>
+ /// 瀹氭椂闊抽噺骞朵笖鍙戦�佸懡浠�
+ /// </summary>
+ 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 || currVolumePlay == null)
+ {
+ continue;
+ }
+ startVolume = endVolume;
+
+ if (currVolumePlay.ServerClientType == -1)
+ {
+ SendMethod.ControlVolume(endVolume, currVolumePlay);
+ }
+ else if (currVolumePlay.ServerClientType == 1)
+ {
+ for (int j = 0; j < volumePlayList.Count; j++)
+ {
+ var music = volumePlayList[j];
+ SendMethod.ControlVolume(endVolume, music);
+ }
+ }
+
+ }
+ }
+ 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;
+鈥� }
+
+
}
--
Gitblit v1.8.0