From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期三, 01 十二月 2021 16:32:57 +0800
Subject: [PATCH] 2021-12-01-01

---
 HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs |  427 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 288 insertions(+), 139 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
index 6c88a70..01c7106 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
@@ -3,8 +3,6 @@
 using Shared;
 using Shared.IO;
 using System.Net;
-using HDL_ON.Entity;
-
 namespace HDL_ON.UI.Music
 {
     public class MusicMain : FrameLayout
@@ -58,22 +56,19 @@
         /// <summary>
         ///  鏄剧ず鍔犺浇鐣岄潰
         /// </summary>
-        public static Loading loading = new Loading();
+        public  static Loading loading = new Loading();
         /// <summary>
         /// 瀹氫箟鍏ㄥ眬瀵硅薄
         /// </summary>
         VerticalRefreshLayout verticalRefresh;
-        /// <summary>
-        /// 涓轰簡闊充箰鍒锋柊鐘舵�佸畾涔夊叏灞�瀵硅薄
-        /// </summary>
-        MusicView musicView = new MusicView();
         public void Show()
         {
+
             #region 鐣岄潰甯冨眬
             this.BackgroundColor = MusicColor.ViewColor;
             var topView = new TopView();
             this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.TextID = StringId.a31Music;
+            topView.topNameBtn.TextID =StringId.a31Music;
             topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
             {
                 RemoveFromParent();
@@ -89,71 +84,200 @@
 
             verticalRefresh.BeginHeaderRefreshingAction += () =>
             {
-                SeachMusic();
+                SeachMusic(false);
+
             };
             this.AddChidren(loading);
-            SeachMusic();
 
+            if (A31MusicModel.A31MusicModelList.Count == 0)
+            {
+                SeachMusic(true);
+            }
+            else
+            {
+                clearA31Threads();
+               //verticalRefresh.RemoveAll();
+                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+                {
+                    var a31player = A31MusicModel.A31MusicModelList[i];
+                    ///杩欎釜鐘舵�佹槸涔嬪墠淇濆瓨鐨勶紝鍔犺浇瀹屾垚鍚庤鏍囪涓轰笉鍦ㄧ嚎锛屽悗闈㈠啀璇诲彇姝g‘鐨勭姸鎬�
+                    if (!a31player.IsCanShow)
+                    {
+                        continue;
+                    }
+                    if (A31MusicModel.A31MusicModelList.Count - 1 == i)
+                    {
+                        a31player.IsEnd = true;
+                    }
+                    else
+                    {
+                        a31player.IsEnd = false;
+                    }
+                    ///鍔犺浇鐣岄潰鏃堕粯璁や笉鍦ㄧ嚎
+                    ///杩欓噷鏍囪鏄负浜嗕笉璇诲彇涓嶅湪绾挎挱鏀惧櫒鐘舵��
+                    a31player.IsOnLine = false;
+                    MusicListView(a31player);
+                }
+                ///璇诲彇姝g‘鐨勪俊鎭紝鍖呮嫭IP鍜岀鍙e強鍚嶇О
+                SendMethod.Seach((obj) =>
+                {
+                    try
+                    {
+                        if (obj == null)
+                        {
+                            ///杩欓噷瑕佽鍙栦富浠庡叧绯�
+                            readServerOrClientMode();
+                            A31MusicModel.Save();
+                            return;
+                        }
+                        var a31MusicModel = A31MusicModel.A31MusicModelList.Find((music) => music.UniqueDeviceName == obj.UniqueDeviceName);
+                        if (a31MusicModel != null)
+                        {
+                            a31MusicModel.IPAddress = obj.IPAddress;
+                            a31MusicModel.Port = obj.Port;
+                            a31MusicModel.Name = obj.Name;
+                            a31MusicModel.IsCanShow = true;
+                            a31MusicModel.IsOnLine = true;
+                        }
+                    }
+                    catch (Exception e) { MainPage.Log(e.Message); }
+                });
+            }
         }
         /// <summary>
         /// 鍒锋柊鎾斁鍣ㄥ垪琛�
         /// </summary>
-        void SeachMusic()
+        /// <param name="Yes">鏄惁鏄剧ず鍒锋柊鍥炬爣</param>
+        void SeachMusic(bool Yes = false)
         {
-            Application.RunOnMainThread(() =>
+            for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
             {
-                verticalRefresh.RemoveAll();
-                for (int i = 0; i < SendMethod.sendMethod.GetMusicList.Count; i++)
+                var a31player = A31MusicModel.A31MusicModelList[i];
+                a31player.IsCanShow = false;
+                a31player.IsOnLine = false;
+            }
+            if (Yes)
+            {
+                //涓轰簡绗竴娆¤繘鏉og涓�涓�;
+                loading.Start();
+            }
+            SendMethod.Seach((obj) =>
+            {
+                if (obj == null)
                 {
-                    var playerFunction = SendMethod.sendMethod.GetMusicList[i]; 
-                    if (!playerFunction.online)
+                    readServerOrClientMode();
+                    A31MusicModel.Save();
+                    if (!Yes)
                     {
-                        //杩囨护鎺変笉鍦ㄧ嚎鐨勯煶涔愭挱鏀惧櫒
-                        continue;
+                        ///绛夊緟璺戝畬鍦ㄥ叧闂�
+                        verticalRefresh.EndHeaderRefreshing();
                     }
-                    MusicListView(playerFunction);
-                }
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (Yes)
+                        {
+                            //涓轰簡绗竴娆¤繘鏉og涓�涓�;
+                            loading.Hide();
+                        }
+                        verticalRefresh.RemoveAll();
+                        for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+                        {
+                            var a31player = A31MusicModel.A31MusicModelList[i];
+                            //杩欎釜鐘舵�佹槸涔嬪墠淇濆瓨鐨勶紝鍔犺浇瀹屾垚鍚庤鏍囪涓轰笉鍦ㄧ嚎锛屽悗闈㈠啀璇诲彇姝g‘鐨勭姸鎬�
+                            if (!a31player.IsCanShow)
+                            {
+                                continue;
+                            }
+                            if (A31MusicModel.A31MusicModelList.Count - 1 == i)
+                            {
+                                a31player.IsEnd = true;
+                            }
+                            else
+                            {
+                                a31player.IsEnd = false;
+                            }
+                            MusicListView(a31player);
+                        }
+                       //A31MusicModel.ReadMusicStates();
 
+                    });
+                    return;
+                }
+                var a31MusicModel = A31MusicModel.A31MusicModelList.Find((music) => { return music.UniqueDeviceName == obj.UniqueDeviceName; });
+                if (a31MusicModel == null)
+                {
+                    //涓嶆槸鎴戜滑鏀寔鐨勫搧鐗屼笉鏀寔
+                    if (obj.Name != null)
+                    {
+                        obj.sid = "030101123456780909020123AABB" + obj.UniqueDeviceName;
+                        A31MusicModel.A31MusicModelList.Add(obj);
+                    }
+                }
+                else
+                {
+                    a31MusicModel.IPAddress = obj.IPAddress;
+                    a31MusicModel.Port = obj.Port;
+                    a31MusicModel.Name = obj.Name;
+                    a31MusicModel.IsCanShow = true;
+                    a31MusicModel.IsOnLine = true;
+                }
             });
 
         }
         /// <summary>
         /// 鏄剧ず闊充箰鍒楄〃鐨勬柟娉�
         /// </summary>
-        void MusicListView(Function player) 
+        void MusicListView(A31MusicModel a31player)
         {
+            MusicView musicView = new MusicView();
             musicView.View(verticalRefresh);
-            musicView.singerBtn.Text = player.GetAttrState("song_name");
-            musicView.songNameBtn.Text = player.GetAttrState("song_name");
-            musicView.musicNameBtn.Text = player.name;
-            //if (player.IsEnd)
-            //{
-            //    musicView.muiscFl.Height = Application.GetRealHeight(12 + 139 + 12);
-            //}
+            musicView.singerBtn.Text = a31player.A31PlayStatus.Artist;
+            musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
+            musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(a31player);
+            if (a31player.IsEnd)
+            {
+                musicView.muiscFl.Height = Application.GetRealHeight(12 + 139 + 12);
+            }
 
             musicView.collectIconBtn.MouseUpEventHandler += (sender, e) =>
             {
                 musicView.collectIconBtn.IsSelected = !musicView.collectIconBtn.IsSelected;
-                if (musicView.collectIconBtn.IsSelected)
+                if (a31player.ServerClientType == 1)
                 {
-                    player.collect = true;
+                    if (musicView.collectIconBtn.IsSelected)
+                    {
+                        a31player.MainPlayCollection = true;
+                    }
+                    else
+                    {
+                        a31player.MainPlayCollection = false;
+                    }
                 }
                 else
                 {
-                    player.collect = false;
+                    if (musicView.collectIconBtn.IsSelected)
+                    {
+                        a31player.collect = true;
+                    }
+                    else
+                    {
+                        a31player.collect = false;
+                    }
                 }
+                A31MusicModel.Save();
             };
 
             EventHandler<MouseEventArgs> clickMergence = (sender, e) =>
             {
-                //if (player.ServerClientType == 0)
-                //{
-                //    new View.DialogView { }.PlayMergence(player);
-                //}
-                //else if (player.ServerClientType == 1)
-                //{
-                //    new View.DialogView { }.DetachPlayMergence(player);
-                //}
+                if (a31player.ServerClientType == 0)
+                {
+                    new View.DialogView { }.PlayMergence(a31player);
+                }
+                else if (a31player.ServerClientType == 1)
+                {
+                    new View.DialogView { }.DetachPlayMergence(a31player);
+
+                }
             };
             musicView.mergeBjBtn.MouseUpEventHandler += clickMergence;
             musicView.mergeBtn.MouseUpEventHandler += clickMergence;
@@ -161,6 +285,7 @@
 
             EventHandler<MouseEventArgs> clickPlayView = (sender, e) =>
             {
+                A31MusicModel.Current = a31player;//褰撳墠鎾斁鍣�
                 var a31PlayMusicPage = new A31PlayMusicPage();
                 MainPage.BasePageView.AddChidren(a31PlayMusicPage);
                 a31PlayMusicPage.Show();
@@ -177,9 +302,7 @@
             musicView.prevBtn.MouseDownEventHandler += (sender, e) =>
             {
                 musicView.prevBtn.IsSelected = true;
-                Dictionary<string, string> dic = new Dictionary<string, string>();
-                dic.Add("song_step", "up");
-                SendMethod.sendMethod.SendControlCommand(player, dic);
+                SendMethod.Previous(a31player);
             };
             musicView.prevBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -188,28 +311,24 @@
             ///鏆傚仠/鎾斁鐐瑰嚮浜嬩欢
             musicView.playBtn.MouseDownEventHandler += (sender, e) =>
             {
-                string status = "off";
                 if (musicView.playBtn.IsSelected)
                 {
                     musicView.playBtn.IsSelected = false;
-                    status = "off";
+                    SendMethod.Pause(a31player);
+                    a31player.A31PlayStatus.status = "pause";
                 }
                 else
                 {
                     musicView.playBtn.IsSelected = true;
-                    status = "on";
+                    SendMethod.Play(a31player);
+                    a31player.A31PlayStatus.status = "play";
                 }
-                Dictionary<string, string> dic = new Dictionary<string, string>();
-                dic.Add("on_off", status);
-                SendMethod.sendMethod.SendControlCommand(player, dic);
             };
             ///涓嬩竴鏇茬偣鍑讳簨浠�
             musicView.nextBtn.MouseDownEventHandler += (sender, e) =>
             {
                 musicView.nextBtn.IsSelected = true;
-                Dictionary<string, string> dic = new Dictionary<string, string>();
-                dic.Add("song_step", "down");
-                SendMethod.sendMethod.SendControlCommand(player, dic);
+                SendMethod.Next(a31player);
             };
             musicView.nextBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -221,49 +340,47 @@
                 while (true)
                 {
                     System.Threading.Thread.Sleep(1000);
-                    if (!player.online)
+                    if (!a31player.IsOnLine)
                     {
                         continue;
                     }
-                    //SendMethod.ReadStatus(player);
-                     SendMethod.sendMethod.RefreshDeviceStatus(player,new List<string> { player.deviceId });
-                 
+                    SendMethod.ReadStatus(a31player);
                     Application.RunOnMainThread(() =>
                     {
-                        //musicView.singerBtn.Text = player.A31PlayStatus.Artist;
-                        //musicView.songNameBtn.Text = player.A31PlayStatus.Title;
-                        //musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(player);
-                        //if (player.A31PlayStatus.status == "play")
-                        //{
-                        //    musicView.playBtn.IsSelected = true;
-                        //}
-                        //else
-                        //{
-                        //    musicView.playBtn.IsSelected = false;
-                        //}
-                        //musicView.regionBtn.Text = player.GetRoomListName();
-                        //if (player.ServerClientType == 1)
-                        //{
-                        //    if (player.MainPlayCollection)
-                        //    {
-                        //        musicView.collectIconBtn.IsSelected = true;
-                        //    }
-                        //    else
-                        //    {
-                        //        musicView.collectIconBtn.IsSelected = false;
-                        //    }
-                        //}
-                        //else
-                        //{
-                        //    if (player.collect)
-                        //    {
-                        //        musicView.collectIconBtn.IsSelected = true;
-                        //    }
-                        //    else
-                        //    {
-                        //        musicView.collectIconBtn.IsSelected = false;
-                        //    }
-                        //}
+                        musicView.singerBtn.Text = a31player.A31PlayStatus.Artist;
+                        musicView.songNameBtn.Text = a31player.A31PlayStatus.Title;
+                        musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(a31player);
+                        if (a31player.A31PlayStatus.status == "play")
+                        {
+                            musicView.playBtn.IsSelected = true;
+                        }
+                        else
+                        {
+                            musicView.playBtn.IsSelected = false;
+                        }
+                        musicView.regionBtn.Text = a31player.GetRoomListName();
+                        if (a31player.ServerClientType == 1)
+                        {
+                            if (a31player.MainPlayCollection)
+                            {
+                                musicView.collectIconBtn.IsSelected = true;
+                            }
+                            else
+                            {
+                                musicView.collectIconBtn.IsSelected = false;
+                            }
+                        }
+                        else
+                        {
+                            if (a31player.collect)
+                            {
+                                musicView.collectIconBtn.IsSelected = true;
+                            }
+                            else
+                            {
+                                musicView.collectIconBtn.IsSelected = false;
+                            }
+                        }
                     });
                 }
             })
@@ -271,67 +388,99 @@
             musicThread.Start();
             threadLists.Add(musicThread);
         }
-
         /// <summary>
-        ///鎸囧畾鍒锋柊鐣岄潰
+        /// 璇诲彇涓讳粠鍏崇郴
         /// </summary>
-        /// <param name="strView">鍒ゆ柇瀛楃</param>
-        public void RefreshView(string strView)
+        void readServerOrClientMode()
         {
-            Application.RunOnMainThread(() =>
+            try
             {
-                try
+                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
                 {
-                  
-                    for (int i = MainPage.BasePageView.ChildrenCount - 1; 0 <= i; i--)
+                    var a31player = A31MusicModel.A31MusicModelList[i];
+                    if (!a31player.IsOnLine)
                     {
-                        var view = MainPage.BasePageView.GetChildren(i);
-                        if (strView == view.Tag.ToString())
+                        continue;
+                    }
+                    try
+                    {
+                        a31player.ServerClientType = 0;
+                        var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
+                        if (result == null && result == "Failed")
                         {
-                            if (view.GetType() == typeof(MusicMain))
-                            {
-                                //musicView.singerBtn.Text = player.A31PlayStatus.Artist;
-                                //musicView.songNameBtn.Text = player.A31PlayStatus.Title;
-                                //musicView.musicNameBtn.Text = new View.DialogView { }.NamePlayer(player);
-                                //if (player.A31PlayStatus.status == "play")
-                                //{
-                                //    musicView.playBtn.IsSelected = true;
-                                //}
-                                //else
-                                //{
-                                //    musicView.playBtn.IsSelected = false;
-                                //}
-                                //musicView.regionBtn.Text = player.GetRoomListName();
-                                //if (player.ServerClientType == 1)
-                                //{
-                                //    if (player.MainPlayCollection)
-                                //    {
-                                //        musicView.collectIconBtn.IsSelected = true;
-                                //    }
-                                //    else
-                                //    {
-                                //        musicView.collectIconBtn.IsSelected = false;
-                                //    }
-                                //}
-                                //else
-                                //{
-                                //    if (player.collect)
-                                //    {
-                                //        musicView.collectIconBtn.IsSelected = true;
-                                //    }
-                                //    else
-                                //    {
-                                //        musicView.collectIconBtn.IsSelected = false;
-                                //    }
-                                //}
-                            }
+                            result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
                         }
-
+                        if (result != null && result != "Failed")
+                        {
+                            a31player.Slave = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
+                        }
+                    }
+                    catch (Exception e)
+                    {
+                        var d = e.Message;
                     }
                 }
-                catch { }
-            });
+
+                //鍒嗘瀽涓讳粠鍏崇郴
+                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
+                                    {
+                                        sid = "030101123456780909020123AABB" + slave.uuid.Replace("uuid:", ""),
+                                        ServerClientType = -1,//浠庣殑
+                                        IPAddress = slave.ip,
+                                        MainPlayIP = a31player.IPAddress,
+                                        UniqueDeviceName = slave.uuid.Replace("uuid:", ""),
+                                        Name = slave.name,
+                                        IsCanShow = false,
+                                        IsOnLine = false,//true浣滅敤涓轰簡璇诲彇浠庢挱鏀惧櫒鐨勯煶閲�
+                                    });
+                                }
+                                //濡傛灉鎵惧埌灏辨洿鏂颁负浠庣殑
+                                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;//true浣滅敤涓轰簡璇诲彇浠庢挱鏀惧櫒鐨勯煶閲�
+
+                                }
+                            }
+                            a31player.MainPlayName = str;
+                        }
+                    }
+                    catch (Exception e)
+                    {
+                        var ss = e.Message;
+                    }
+                }
+
+            }
+            catch { }
         }
+
     }
 
 }

--
Gitblit v1.8.0