From b7724b7823c1172f30178c3628218acef90f84b6 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期二, 02 六月 2020 12:01:34 +0800
Subject: [PATCH] 2020-06-2-1

---
 HDL_ON/UI/Music/MusicMain.cs                   |  112 ++++++++++++++++++
 HDL_ON/UI/Music/SendMethod.cs                  |    4 
 .vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm |    0 
 HDL_ON/UI/Music/A31MusicModel.cs               |    9 +
 .vs/HDL_APP_Project/xs/sqlite3/storage.ide     |    0 
 .vs/HDL_APP_Project/xs/UserPrefs.xml           |   10 +
 .vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal |    0 
 HDL_ON/UI/Music/View/DialogView.cs             |  196 +++++++++++++++++++++++++++++--
 8 files changed, 304 insertions(+), 27 deletions(-)

diff --git a/.vs/HDL_APP_Project/xs/UserPrefs.xml b/.vs/HDL_APP_Project/xs/UserPrefs.xml
index 2a3b5ef..3e02710 100644
--- a/.vs/HDL_APP_Project/xs/UserPrefs.xml
+++ b/.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,8 +1,11 @@
 锘�<Properties StartupConfiguration="{09712674-2A38-407B-B1E2-560B2C352F9A}|Default">
   <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/UI/Music/MusicMain.cs">
     <Files>
-      <File FileName="HDL_ON/UI/Music/MusicMain.cs" Line="70" Column="14" />
-      <File FileName="HDL_ON/UI/Music/SendMethod.cs" Line="69" Column="24" />
+      <File FileName="HDL_ON/UI/Music/SendMethod.cs" Line="457" Column="52" />
+      <File FileName="../鏃х増鏈琈usic/MyMusic.cs" Line="754" Column="70" />
+      <File FileName="HDL_ON/UI/Music/A31MusicModel.cs" Line="159" Column="15" />
+      <File FileName="HDL_ON/UI/Music/View/DialogView.cs" Line="673" Column="1" />
+      <File FileName="HDL_ON/UI/Music/MusicMain.cs" Line="1" Column="1" />
     </Files>
     <Pads>
       <Pad Id="ProjectPad">
@@ -17,6 +20,9 @@
                   <Node name="MusicMain.cs" selected="True" />
                 </Node>
                 <Node name="UI0-Public" expanded="True" />
+                <Node name="UI2" expanded="True">
+                  <Node name="2-Classification" expanded="True" />
+                </Node>
               </Node>
             </Node>
             <Node name="HDL-ON_Android" expanded="True">
diff --git a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide
index 1c0b255..8068f2e 100644
--- a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide
+++ b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide
Binary files differ
diff --git a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm
index aeb245f..6c15581 100644
--- a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm
+++ b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm
Binary files differ
diff --git a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal
index ecd0799..7e09e7e 100644
--- a/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal
+++ b/.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal
Binary files differ
diff --git a/HDL_ON/UI/Music/A31MusicModel.cs b/HDL_ON/UI/Music/A31MusicModel.cs
index b83e0cf..55224d2 100644
--- a/HDL_ON/UI/Music/A31MusicModel.cs
+++ b/HDL_ON/UI/Music/A31MusicModel.cs
@@ -144,10 +144,13 @@
         /// </summary>
         public int ServerClientType;
         /// <summary>
-        /// 琛ㄧず浠庣殑鎾斁鍣↖P
+        /// 璁板綍涓绘挱鏀惧櫒IP
         /// </summary>
-        public string ServerIP = string.Empty;
-
+        public string MainPlayIP = string.Empty;
+        /// <summary>
+        /// 璁板綍涓绘挱鏀惧櫒鍚嶇О
+        /// </summary>
+        public string MainPlayName = string.Empty;
 
         public Slaves Slave = new Slaves();
 
diff --git a/HDL_ON/UI/Music/MusicMain.cs b/HDL_ON/UI/Music/MusicMain.cs
index 1f4b697..dff60b5 100644
--- a/HDL_ON/UI/Music/MusicMain.cs
+++ b/HDL_ON/UI/Music/MusicMain.cs
@@ -12,6 +12,10 @@
         //public MusicListViewMain() {
         //    Frame = this;
         //}
+        public MusicMain()
+        {
+            Tag = "MusicMain";
+        }
         public override void RemoveFromParent()
         {
             base.RemoveFromParent();
@@ -103,7 +107,7 @@
                         if (obj == null)
                         {
                             ///杩欓噷瑕佽鍙栦富浠庡叧绯�
-                           // readServerOrClientMode(false);
+                            //readServerOrClientMode();
                             A31MusicModel.Save();
                             return;
                         }
@@ -139,7 +143,7 @@
             {
                 if (obj == null)
                 {
-                    //readServerOrClientMode(true);
+                    readServerOrClientMode();
                     A31MusicModel.Save();
                     Application.RunOnMainThread(() =>
                     {
@@ -195,6 +199,8 @@
             musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
             musicView.musicNameBtn.Text = a31player.Name;
             musicView.regionBtn.TextID = StringId.region;
+          
+
 
             EventHandler<MouseEventArgs> clickMergence = (sender, e) =>
             {
@@ -266,7 +272,14 @@
                     {
                         musicView.singerBtn.Text = a31player.A31PlayStatus.Artist;
                         musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
-                        musicView.musicNameBtn.Text = a31player.Name;
+                        if (a31player.ServerClientType == 1)
+                        {
+                            musicView.musicNameBtn.Text = a31player.MainPlayName;
+                        }
+                        else
+                        {
+                            musicView.musicNameBtn.Text = a31player.Name;
+                        }
                         if (a31player.A31PlayStatus.status == "play")
                         {
                             musicView.playBtn.IsSelected = true;
@@ -281,7 +294,100 @@
 
         }
 
+        /// <summary>
+        /// 璇诲彇涓讳粠鍏崇郴
+        /// </summary>
+        void readServerOrClientMode()
+        {
+            try
+            {
+                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+                {
+                    var a31player = A31MusicModel.A31MusicModelList[i];
+                    if (!a31player.IsOnLine)
+                    {
+                        continue;
+                    }
+                    try
+                    {
+                        a31player.ServerClientType = 0;
+                        var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
+                        if (result == null)
+                        {
+                            result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
+                        }
+                        if (result != null)
+                        {
+                            a31player.Slave = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
+                        }
+                    }
+                    catch (Exception e)
+                    {
+                        var d = e.Message;
+                    }
+                }
 
+                //鍒嗘瀽涓讳粠鍏崇郴
+                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+                {
+                    var a31player = A31MusicModel.A31MusicModelList[i];
+                    if (!a31player.IsOnLine)
+                    {
+                        continue;
+                    }
+                    try
+                    {
+                        if (a31player.Slave != null && "0" != a31player.Slave.slaves)
+                        {
+                            a31player.ServerClientType = 1;//涓荤殑
+                            string str = a31player.Name;
+                            for (int j = 0; j < a31player.Slave.slave_list.Count; j++)
+                            {
+
+                                var slave = a31player.Slave.slave_list[j];
+                                str = str + "+" + slave.name;
+                                var tempA31Player = A31MusicModel.A31MusicModelList.Find((obj) => slave.uuid.Replace("uuid:", "") == obj.UniqueDeviceName);
+                                if (tempA31Player == null)
+                                {
+                                    A31MusicModel.A31MusicModelList.Add(new A31MusicModel
+                                    {
+                                        ServerClientType = -1,//浠庣殑
+                                        IPAddress = slave.ip,
+                                        MainPlayIP = a31player.IPAddress,
+                                        UniqueDeviceName = slave.uuid.Replace("uuid:", ""),
+                                        Name = slave.name,
+                                        IsCanShow = false,
+                                        IsOnLine = false,
+                                    });
+                                }
+                                //濡傛灉鎵惧埌灏辨洿鏂颁负浠庣殑
+                                else
+                                {
+                                    tempA31Player.ServerClientType = -1;//浠庣殑
+                                    tempA31Player.IPAddress = slave.ip;
+                                    tempA31Player.MainPlayIP = a31player.IPAddress;
+                                    tempA31Player.Name = slave.name;
+                                    tempA31Player.UniqueDeviceName = slave.uuid.Replace("uuid:", "");
+                                    tempA31Player.IsCanShow = false;
+                                    tempA31Player.IsOnLine = false;
+
+                                }
+                            }
+                            a31player.MainPlayName = str;
+                        }
+                    }
+                    catch (Exception e)
+                    {
+                        var ss = e.Message;
+                    }
+                }
+
+            }
+            catch (Exception e)
+            {
+                var ss = e.Message;
+            }
+        }
 
     }
 
diff --git a/HDL_ON/UI/Music/SendMethod.cs b/HDL_ON/UI/Music/SendMethod.cs
index 16c3a95..b9b530d 100644
--- a/HDL_ON/UI/Music/SendMethod.cs
+++ b/HDL_ON/UI/Music/SendMethod.cs
@@ -155,7 +155,7 @@
 
                 if (a31MusicModel.ServerClientType == -1)
                 {
-                    var result = OpenWeb("http://" + a31MusicModel.ServerIP + "/httpapi.asp?command=multiroom:getSlaveList");
+                    var result = OpenWeb("http://" + a31MusicModel.MainPlayIP + "/httpapi.asp?command=multiroom:getSlaveList");
                     if (result != null)
                     {
                         var slaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
@@ -460,7 +460,7 @@
                 {
                     if (a31player.ServerClientType == -1)
                     {
-                        new System.Net.WebClient().DownloadData(new Uri("http://" + a31player.ServerIP + "/httpapi.asp?command=multiroom:SlaveVolume:" + a31player.IPAddress + ":" + volume));
+                        new System.Net.WebClient().DownloadData(new Uri("http://" + a31player.MainPlayIP + "/httpapi.asp?command=multiroom:SlaveVolume:" + a31player.IPAddress + ":" + volume));
                     }
                     else if (a31player.ServerClientType == 1)
                     {
diff --git a/HDL_ON/UI/Music/View/DialogView.cs b/HDL_ON/UI/Music/View/DialogView.cs
index 55f9d6e..0d75a38 100644
--- a/HDL_ON/UI/Music/View/DialogView.cs
+++ b/HDL_ON/UI/Music/View/DialogView.cs
@@ -311,7 +311,7 @@
                 Width = Application.GetRealWidth(344),
             };
             dialogFra.AddChidren(verticalScrolViewLayout);
-            var playList = new List<A31MusicModel>();
+            var playList1 = new List<A31MusicModel>();
             for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
             {
                 var player = A31MusicModel.A31MusicModelList[i];
@@ -367,19 +367,19 @@
                 {
                     clickBtn.IsSelected = !clickBtn.IsSelected;
                     selectedIconBtn.IsSelected = clickBtn.IsSelected;
-                    var musicPlayer = playList.Find((c) => c.UniqueDeviceName == player.UniqueDeviceName);
+                    var musicPlayer = playList1.Find((c) => c.UniqueDeviceName == player.UniqueDeviceName);
                     if (selectedIconBtn.IsSelected)
                     {
                         if (musicPlayer == null)
                         {
-                            playList.Add(player);
+                            playList1.Add(player);
                         }
                     }
                     else
                     {
                         if (musicPlayer != null)
                         {
-                            playList.Remove(player);
+                            playList1.Remove(player);
                         }
                     }
                 };
@@ -396,20 +396,47 @@
             }
             confirmBtn.MouseUpEventHandler += (sender, e) =>
             {
-                if (playList.Count <= 1)
+                if (playList1.Count <= 1)
                 {
                     new PublicAssmebly().TipMsgAutoClose("鑷冲皯閫変腑涓や釜浠ヤ笂鎾斁鍣�", false);
                     return;
                 }
-                PlayerView(dialog, playList);
+
+                var playList2 = new List<A31MusicModel>();
+                for (int i = 0; i < playList1.Count; i++)
+                {
+                    var musics = playList1[i];
+                    if (musics.A31PlayStatus.playSource == "play")
+                    {
+                        playList2.Add(musics);
+                    }
+
+                }
+
+                if (playList2.Count == 0)
+                {
+                    PlayerView(dialog, playList1, playList1);
+                }
+                else if (playList2.Count == 1)
+                {
+                    dialog.Close();
+                    var player = playList2[0];
+                    Threading(player, playList1);
+                }
+                else
+                {
+                    PlayerView(dialog, playList1, playList2);
+                }
             };
         }
         /// <summary>
         /// 閫変腑涓绘挱鏀惧櫒鐨勭晫闈�
         /// </summary>
-        /// <param name="musicList"></param>
-        void PlayerView(Dialog dialogF ,List<A31MusicModel> musicList)
+        /// <param name="musicList1"></param>
+        ///  /// <param name="musicList2">鏄剧ず鎾斁鍣ㄥ垪琛�</param>
+        void PlayerView(Dialog dialogF, List<A31MusicModel> musicList1, List<A31MusicModel> musicList2)
         {
+
             //涓绘帶浠�
             Dialog dialog = new Dialog()
             {
@@ -472,7 +499,6 @@
                 IsBold = true,
             };
             topFra.AddChidren(txetBtn);
-
             //纭鎺т欢
             Button confirmBtn = new Button
             {
@@ -486,10 +512,7 @@
                 TextSize = TextSize.Text14,
             };
             topFra.AddChidren(confirmBtn);
-            confirmBtn.MouseUpEventHandler += (sender, e) =>
-            {
 
-            };
             VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
             {
                 Y = Application.GetRealHeight(50),
@@ -498,10 +521,10 @@
             };
             dialogFra.AddChidren(verticalScrolViewLayout);
             //璁板綍閫変腑鐘舵��
-            Button selectedBtn = new Button() { Tag="No"};
-            for (int i = 0; i < musicList.Count; i++)
+            Button selectedBtn = new Button() { Name = "No" };
+            for (int i = 0; i < musicList2.Count; i++)
             {
-                var player = musicList[i];
+                var player = musicList2[i];
                 RowLayout addFlieRow = new RowLayout
                 {
                     Height = Application.GetRealHeight(50),
@@ -532,6 +555,7 @@
                     Height = Application.GetMinRealAverage(28),
                     UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
                     SelectedImagePath = "MusicIcon/selectedIcon.png",
+                    Tag = player,
                 };
                 addFlieRow.AddChidren(selectedIconBtn);
                 ///鍔犲ぇ鍑犵偣鑼冨洿
@@ -543,8 +567,8 @@
                 clickBtn.MouseUpEventHandler += (sender, e) =>
                 {
                     selectedBtn.IsSelected = false;
-                    selectedBtn.Tag = "Yes";
                     selectedBtn = selectedIconBtn;
+                    selectedBtn.Name = "Yes";
                     selectedBtn.IsSelected = true;
                 };
                 //绾�
@@ -561,15 +585,153 @@
 
             confirmBtn.MouseUpEventHandler += (sender, e) =>
             {
-                if (selectedBtn.Tag.ToString() == "No")
+                if (selectedBtn.Name.ToString() == "No")
                 {
                     new PublicAssmebly().TipMsgAutoClose("杩樻病閫変腑鎾斁鍣�", false);
                     return;
                 }
                 dialogF.Close();
                 dialog.Close();
+                var serverMusic = selectedBtn.Tag as A31MusicModel;
+                Threading(serverMusic, musicList1);
+
+
             };
 
         }
+
+        /// <summary>
+        /// 鍙戦�佺粍鍚堝懡浠ら�昏緫澶勭悊鐨勬柟娉�
+        /// </summary>
+        /// <param name="serverMusic">涓绘挱鏀惧櫒</param>
+        /// <param name="musicList1"></param>
+        void Threading(A31MusicModel serverMusic, List<A31MusicModel> musicList1)
+        {
+            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");
+                    if (statusEx == null)
+                    {
+                        statusEx = SendMethod.OpenWeb("http://" + IP + "/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;
+                        }
+                        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))
+                            {
+
+                            }
+                        }
+                    }
+                    DateTime dateTime = DateTime.Now;
+                    while ((DateTime.Now - dateTime).TotalMilliseconds < 10 * 1000)
+                    {
+                        System.Threading.Thread.Sleep(1000);
+                        try
+                        {
+                            var result = SendMethod.OpenWeb("http://" + serverMusic.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
+                            if (result != null)
+                            {
+                                var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
+                                if (tmepSlaves != null && tmepSlaves.slave_list != null)
+                                {
+                                    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;
+                                        }
+                                    }
+                                    serverMusic.MainPlayName = str;
+                                    A31MusicModel.Save();
+                                    break;
+                                }
+                            }
+                        }
+                        catch { }
+                    }
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        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鈥�    {
+        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