From 66c0db35365980f240d7cfe6dd59961812f20c97 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期三, 03 六月 2020 17:51:36 +0800 Subject: [PATCH] 2020-06-03-1 --- HDL_ON/UI/Music/View/DialogView.cs | 303 +++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 273 insertions(+), 30 deletions(-) diff --git a/HDL_ON/UI/Music/View/DialogView.cs b/HDL_ON/UI/Music/View/DialogView.cs index 0d75a38..3b45ea7 100644 --- a/HDL_ON/UI/Music/View/DialogView.cs +++ b/HDL_ON/UI/Music/View/DialogView.cs @@ -396,6 +396,8 @@ } confirmBtn.MouseUpEventHandler += (sender, e) => { + + if (playList1.Count <= 1) { new PublicAssmebly().TipMsgAutoClose("鑷冲皯閫変腑涓や釜浠ヤ笂鎾斁鍣�", false); @@ -415,7 +417,7 @@ if (playList2.Count == 0) { - PlayerView(dialog, playList1, playList1); + SelectedPlayerView(dialog, playList1, playList1); } else if (playList2.Count == 1) { @@ -425,16 +427,16 @@ } else { - PlayerView(dialog, playList1, playList2); + SelectedPlayerView(dialog, playList1, playList2); } }; } /// <summary> /// 閫変腑涓绘挱鏀惧櫒鐨勭晫闈� /// </summary> - /// <param name="musicList1"></param> - /// /// <param name="musicList2">鏄剧ず鎾斁鍣ㄥ垪琛�</param> - void PlayerView(Dialog dialogF, List<A31MusicModel> musicList1, List<A31MusicModel> musicList2) + /// <param name="musicList1">鏄剧ず灏嗚缁勫悎鐨勬挱鏀惧櫒鍒楄〃</param> + /// /// <param name="musicList2">鏄剧ず鍦ㄦ挱鏀鹃煶涔愭挱鏀惧櫒鍒楄〃</param> + void SelectedPlayerView(Dialog dialogF, List<A31MusicModel> musicList1, List<A31MusicModel> musicList2) { //涓绘帶浠� @@ -592,10 +594,9 @@ } dialogF.Close(); dialog.Close(); + var serverMusic = selectedBtn.Tag as A31MusicModel; Threading(serverMusic, musicList1); - - }; } @@ -607,25 +608,16 @@ /// <param name="musicList1"></param> void Threading(A31MusicModel serverMusic, List<A31MusicModel> musicList1) { + MusicMain.loading.Start("閰嶇疆涓�..."); + bool _if = false; System.Threading.Tasks.Task.Run(() => { try { - - var IP = ""; - if (serverMusic.ServerClientType == -1) - { - IP = serverMusic.MainPlayIP; - } - else - { - IP = serverMusic.IPAddress; - } - - var statusEx = SendMethod.OpenWeb("http://" + IP + "/httpapi.asp?command=getStatusEx"); + var statusEx = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=getStatusEx"); if (statusEx == null) { - statusEx = SendMethod.OpenWeb("http://" + IP + "/httpapi.asp?command=getStatusEx"); + statusEx = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=getStatusEx"); } if (statusEx == null) { @@ -650,6 +642,7 @@ //杩囨护鎺変富鎾斁鍣�; continue; } + System.Threading.Thread.Sleep(1000);//绛夊緟涓�绉掑啀鍙戞暟鎹� 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)) @@ -659,16 +652,16 @@ } } DateTime dateTime = DateTime.Now; - while ((DateTime.Now - dateTime).TotalMilliseconds < 10 * 1000) + while ((DateTime.Now - dateTime).TotalMilliseconds < 12 * 1000) { System.Threading.Thread.Sleep(1000); try { var result = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList"); - if (result != null) + if (result != null && result != "Failed") { var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result); - if (tmepSlaves != null && tmepSlaves.slave_list != null) + 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++) @@ -676,7 +669,7 @@ var music = A31MusicModel.A31MusicModelList[j]; if (music.UniqueDeviceName == serverMusic.UniqueDeviceName) { - + music.ServerClientType = 1; music.Slave = tmepSlaves; //杩囨护鎺変富鎾斁鍣�; @@ -692,6 +685,7 @@ music.IsOnLine = false; music.IPAddress = slave_Ifon.ip; music.MainPlayIP = serverMusic.IPAddress; + _if = true; } } serverMusic.MainPlayName = str; @@ -699,6 +693,8 @@ break; } } + + } catch { } } @@ -708,17 +704,264 @@ { Application.RunOnMainThread(() => { - MainPage.BasePageView.RemoveViewByTag("MusicMain"); - var musicMain = new MusicMain(); - MainPage.BasePageView.AddChidren(musicMain); - musicMain.Show(); - MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; + 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> + /// 鍒嗗紑缁勫悎鐨勬挱鏀惧櫒鐨勭晫闈� + /// </summary> + public void DetachPlayMergence(A31MusicModel a31player) + { + //涓绘帶浠� + 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, + Text= a31player.Name, + }; + 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 slaveList= new List<Slave>(); + for (int i = 0; i < a31player.Slave.slave_list.Count; i++) + { + var slave = a31player.Slave.slave_list[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 = slave.name, + }; + 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 = slave.uuid.Replace("uuid:", ""), + }; + PlayRow.AddChidren(clickBtn); + + clickBtn.MouseUpEventHandler += (sender, e) => + { + clickBtn.IsSelected = !clickBtn.IsSelected; + selectedIconBtn.IsSelected = clickBtn.IsSelected; + var uuid = slaveList.Find((obj) => obj.uuid.Replace("uuid:", "") == clickBtn.Tag.ToString()); + if (selectedIconBtn.IsSelected) + { + if (uuid == null) + { + slaveList.Add(slave); + } + } + else + { + if (uuid != null) + { + slaveList.Remove(slave); + } + } + }; + //绾� + Button lineBtn = new Button + { + Y = PlayRow.Height - 1, + X = Application.GetRealWidth(20), + Width = Application.GetRealWidth(304), + Height = 1, + BackgroundColor = Color.LineColor, + }; + PlayRow.AddChidren(lineBtn); + } + confirmBtn.MouseUpEventHandler += (sender, e) => + { + if (slaveList.Count == 0) + { + new PublicAssmebly().TipMsgAutoClose("杩樻病鏈夐�夋嫨瑙i櫎缁勬挱鏀惧櫒", false); + return; + } + dialog.Close(); + + MusicMain.loading.Start("瑙i櫎涓�..."); + bool _if = false; + System.Threading.Tasks.Task.Run(() => + { + try + { + for (int i = 0; i < slaveList.Count; i++) + { + var clientMusic = slaveList[i]; + if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.ip)) + { + if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.ip)) + { + + } + } + System.Threading.Thread.Sleep(2000);//绛夊緟2绉掑啀鍙戞暟鎹� + + } + DateTime dateTime = DateTime.Now; + while ((DateTime.Now - dateTime).TotalMilliseconds < 10 * 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 && tmepSlaves.slave_list.Count == 0) + { + _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; + } + }); + } + }); + + }; + } } [System.Serializable] public class A31Wifi鈥� { -- Gitblit v1.8.0