From c26c06ef4a22d6fb9e59dc734abca92fa8a23c47 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期五, 05 六月 2020 17:41:00 +0800 Subject: [PATCH] 2020-06-05-02 --- HDL_ON/UI/Music/View/DialogView.cs | 1135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,132 insertions(+), 3 deletions(-) diff --git a/HDL_ON/UI/Music/View/DialogView.cs b/HDL_ON/UI/Music/View/DialogView.cs index b72fab6..ebc8951 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,1131 @@ } + /// <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("鑷冲皯閫変腑涓や釜浠ヤ笂鎾斁鍣�", false); + return; + } + int number = 0; + foreach (var musin in playList1) + { + if (musin.ServerClientType == 1) + { + number++; + } + } + if (number >= 2) + { + new PublicAssmebly().TipMsgAutoClose("涓嶈兘閫変腑涓や釜鎴栦袱涓互涓婁富鎾斁鍣ㄨ繘琛岀粍鍚�", 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("杩樻病閫変腑鎾斁鍣�", 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.selectedMergence, + 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("杩樻病鏈夐�夋嫨瑙i櫎缁勬挱鏀惧櫒", 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("閰嶇疆涓�..."); + 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("瑙i櫎涓�..."); + 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; + } + } + /// <summary> + /// 鎾斁鍣ㄩ煶閲忕殑鐣岄潰 + /// </summary> + /// <param name="a31player">涓绘挱鏀惧櫒</param> + public void PlayerVolumeView(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(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) => + { + 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, + 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 = Color.SelectedColor, + TextSize = TextSize.Text14, + }; + topFra.AddChidren(confirmBtn); + confirmBtn.MouseUpEventHandler += (sen, e) => + { + dialog.Close(); + }; + + VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout + { + Y = Application.GetRealHeight(58), + Height = dialogFra.Height - Application.GetRealHeight(58), + Width = Application.GetRealWidth(343), + }; + dialogFra.AddChidren(verticalScrolViewLayout); + + var playList = new List<A31MusicModel>(); + 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; + playList.Add(music_If); + } + } + playList.Add(a31player); + + for (int i = 0; i < playList.Count; i++) + { + var player = playList[i]; + FrameLayout volumeFra = new FrameLayout + { + Height = Application.GetRealHeight(64), + }; + verticalScrolViewLayout.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 + "闊抽噺"; + } + else if (player.ServerClientType == 1) + { + volumeTextBtn.Text = "鎬婚煶閲�"; + } + + 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 (player.ServerClientType == -1) + { + valueBtn.Text = volSeekBar.Progress + "%"; + SendMethod.ControlVolume(volSeekBar.Progress, player); + } + else if (player.ServerClientType == 1) + { + for (int j = 0; j < playList.Count; j++) + { + var music = playList[j]; + var frameLayout = (FrameLayout)verticalScrolViewLayout.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 + + } + + } + [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