From 3f6685c77beeb12baf840733fb890860f4c26e7c Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期四, 25 七月 2024 17:25:59 +0800
Subject: [PATCH] 2024年07月25日17:24:45

---
 HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs |  376 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 235 insertions(+), 141 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
index 5ef69f3..336e8be 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
@@ -4,20 +4,31 @@
 using Shared.IO;
 using System.Net;
 using HDL_ON.Entity;
+using HDL_ON.UI.UI2.FuntionControlView.Music;
 
 namespace HDL_ON.UI.Music
 {
     public class MusicMain : FrameLayout
     {
+        private static MusicMain s_Current = null;  
+        public static MusicMain Current
+        {
+            get
+            {
+                if (s_Current == null)
+                {
+                    s_Current = new MusicMain();
+                }
+                return s_Current;
+            }
 
+        }
         /// <summary>
         /// MusicMain瀵硅薄鏋勯�犲嚱鏁�
         /// </summary>
         public MusicMain()
         {
             Tag = "MusicMain";
-            //杩涙潵闊充箰鍒楄〃鐣岄潰鍏堢Щ闄や箣鍓嶇嚎绋�;
-            A31MusicModel.RemoveListThread();
         }
         /// <summary>
         /// 閲嶅啓RemoveFromParent鏂规硶
@@ -25,8 +36,9 @@
         public override void RemoveFromParent()
         {
             base.RemoveFromParent();
-            clearA31Threads();
-            A31MusicModel.ReadMusicStates();//杩涙潵娌℃湁闊充箰琚敹钘忚繃锛岄��鍑烘湁闊充箰琚敹钘忚繃
+            ClearA31Threads();
+            //杩涙潵娌℃湁闊充箰琚敹钘忚繃锛岄��鍑烘湁闊充箰琚敹钘忚繃
+            //A31MusicModel.ReadMusicStates();
         }
         /// <summary>
         /// 鍒涘缓绾跨▼鍒楄〃
@@ -35,8 +47,9 @@
         /// <summary>
         /// 绉婚櫎绾跨▼
         /// </summary>
-        static void clearA31Threads()
+        static void ClearA31Threads() 
         {
+
             var threads = threadLists.FindAll((obj) => { return obj.Name == "A31"; });
             foreach (var thread in threads)
             {
@@ -63,12 +76,10 @@
         /// 瀹氫箟鍏ㄥ眬瀵硅薄
         /// </summary>
         VerticalRefreshLayout verticalRefresh;
-        /// <summary>
-        /// 涓轰簡闊充箰鍒锋柊鐘舵�佸畾涔夊叏灞�瀵硅薄
-        /// </summary>
-        MusicView musicView = new MusicView();
+       
         public void Show()
         {
+          
             #region 鐣岄潰甯冨眬
             this.BackgroundColor = MusicColor.ViewColor;
             var topView = new TopView();
@@ -83,16 +94,17 @@
             {
                 Y = topView.fLayout.Bottom,
                 Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
+                Name = "verticalRefresh",
             };
             this.AddChidren(verticalRefresh);
             #endregion
 
             verticalRefresh.BeginHeaderRefreshingAction += () =>
             {
-
+               
+                ////鍙戦�佽鍙栭煶涔愭挱鏀惧櫒鐘舵�佺嚎绋�
                 SeachMusic();
                 verticalRefresh.EndHeaderRefreshing();
-
             };
             this.AddChidren(loading);
             SeachMusic();
@@ -103,15 +115,19 @@
         /// </summary>
         void SeachMusic()
         {
+
             Application.RunOnMainThread(() =>
             {
                 verticalRefresh.RemoveAll();
-
-                var musicListFunction = SendMethod.sendMethod.GetMusicList;
-                for (int i = 0; i < musicListFunction.Count; i++)
+                A31MusicModel.A31MusicModelList.Clear();
+                var musicDeviceList= FunctionList.List.GetMusicList(); 
+                for (int i = 0; i < musicDeviceList.Count; i++)
                 {
-                    var function = musicListFunction[i];
-                    var music = A31MusicModel.A31MusicModelList.Find((music) => music.functionMusic.deviceId == function.deviceId);
+                    var function = musicDeviceList[i]; 
+                    var music = A31MusicModel.A31MusicModelList.Find((obj) =>
+                   (obj.functionMusic.deviceId == function.deviceId && function.spk == SPK.MusicStandard) || (
+                     obj.functionMusic.deviceId == function.deviceId && function.spk == SPK.AvMusic)
+                    );
                     if (music == null)
                     {
                         A31MusicModel.A31MusicModelList.Add(new A31MusicModel { functionMusic = function });
@@ -122,11 +138,43 @@
                     }
                 }
 
-
                 for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
                 {
+
                     var a31player = A31MusicModel.A31MusicModelList[i];
-                    MusicListView(a31player);
+                    //if (a31player.functionMusic.isOnline() == false)
+                    //{
+                    //    //涓嶅湪绾夸笉鏄剧ず
+                    //    continue;
+                    //}
+
+                    Application.RunOnMainThread(() =>
+                    {
+                        MusicListView(a31player);
+                    });
+                }
+                ///杩涙潵璇讳竴娆¢煶涔愭挱鏀惧櫒鐘舵��
+                for (int i = 0; i < A31MusicModel.A31MusicModelList.Count; i++)
+                {
+
+                    var a31player = A31MusicModel.A31MusicModelList[i];
+                    if (a31player.functionMusic.isOnline() == false)
+                    {
+                        //涓嶅湪绾夸笉璇诲彇
+                        continue;
+                    }
+                    //鍙戦�佽鍙栭煶涔愭挱鏀惧櫒鐘舵�佺嚎绋�
+                    System.Threading.Tasks.Task.Run(() =>
+                    {
+                        try
+                        {
+                            
+                            SendMethod.Current.RefreshDeviceStatus(new List<string> { a31player.functionMusic.deviceId });
+                            System.Threading.Thread.Sleep(500);
+                        }
+                        catch { }
+
+                    });
                 }
 
             });
@@ -135,17 +183,19 @@
         /// <summary>
         /// 鏄剧ず闊充箰鍒楄〃鐨勬柟娉�
         /// </summary>
-        void MusicListView(A31MusicModel player) 
+        void MusicListView(A31MusicModel player)
         {
-            musicView.View(verticalRefresh);
-            musicView.singerBtn.Text = player.functionMusic.GetAttrState("song_name");
-            musicView.songNameBtn.Text = player.functionMusic.GetAttrState("song_name");
+            /// <summary>
+            /// 涓轰簡闊充箰鍒锋柊鐘舵�佸畾涔夊叏灞�瀵硅薄
+            /// </summary>
+            MusicView musicView = new MusicView();
+            musicView.ViewAddChidren(verticalRefresh);
+            musicView.muiscFl.Tag = player.functionMusic;//澶氫釜闊充箰鎾斁鍣ㄦ洿鏂扮姸鎬佽鐢ㄥ埌
+            musicView.singerBtn.Text = player.functionMusic.GetAttrState(KeyProperty.song_name);
+            musicView.songNameBtn.Text = player.functionMusic.GetAttrState(KeyProperty.song_name);
             musicView.musicNameBtn.Text = player.functionMusic.name;
-            //if (player.IsEnd)
-            //{
-            //    musicView.muiscFl.Height = Application.GetRealHeight(12 + 139 + 12);
-            //}
-
+            //musicView.collectIconBtn.Visible = false;//鍏堟殏鏃堕殣钘忔敹钘忓姛鑳�
+            ///鏀惰棌浜嬩欢
             musicView.collectIconBtn.MouseUpEventHandler += (sender, e) =>
             {
                 musicView.collectIconBtn.IsSelected = !musicView.collectIconBtn.IsSelected;
@@ -157,23 +207,11 @@
                 {
                     player.functionMusic.collect = false;
                 }
+                player.functionMusic.CollectFunction();
             };
 
-            EventHandler<MouseEventArgs> clickMergence = (sender, e) =>
-            {
-                //if (player.ServerClientType == 0)
-                //{
-                //    new View.DialogView { }.PlayMergence(player);
-                //}
-                //else if (player.ServerClientType == 1)
-                //{
-                //    new View.DialogView { }.DetachPlayMergence(player);
-                //}
-            };
-            musicView.mergeBjBtn.MouseUpEventHandler += clickMergence;
-            musicView.mergeBtn.MouseUpEventHandler += clickMergence;
-            musicView.mergeIconBtn.MouseUpEventHandler += clickMergence;
 
+            ///杩涘叆闊充箰涓婚〉浜嬩欢
             EventHandler<MouseEventArgs> clickPlayView = (sender, e) =>
             {
 
@@ -194,10 +232,10 @@
             musicView.prevBtn.MouseDownEventHandler += (sender, e) =>
             {
                 musicView.prevBtn.IsSelected = true;
-                player.functionMusic.SetAttrState("song_step", "up");
+                player.functionMusic.SetAttrState(KeyProperty.song_step, ValueProperty.up);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
-                dic.Add("song_step", "up");
-                SendMethod.sendMethod.SendControlCommand(player.functionMusic, dic);
+                dic.Add(KeyProperty.song_step, ValueProperty.up);
+                SendMethod.Current.SendControlCommand(player.functionMusic, dic);
             };
             musicView.prevBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -206,86 +244,86 @@
             ///鏆傚仠/鎾斁鐐瑰嚮浜嬩欢
             musicView.playBtn.MouseDownEventHandler += (sender, e) =>
             {
-                string status = "off";
+                string status = ValueProperty.off;
                 if (musicView.playBtn.IsSelected)
                 {
                     musicView.playBtn.IsSelected = false;
-                    status = "off";
+                    status = ValueProperty.off;
                 }
                 else
                 {
                     musicView.playBtn.IsSelected = true;
-                    status = "on";
+                    status = ValueProperty.on;
                 }
-                player.functionMusic.SetAttrState("on_off", status);
+                player.functionMusic.SetAttrState(KeyProperty.on_off, status);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
-                dic.Add("on_off", status);
-                SendMethod.sendMethod.SendControlCommand(player.functionMusic, dic);
+                dic.Add(KeyProperty.on_off, status);
+                SendMethod.Current.SendControlCommand(player.functionMusic, dic);
             };
             ///涓嬩竴鏇茬偣鍑讳簨浠�
             musicView.nextBtn.MouseDownEventHandler += (sender, e) =>
             {
                 musicView.nextBtn.IsSelected = true;
-                player.functionMusic.SetAttrState("song_step", "down");
+                player.functionMusic.SetAttrState(KeyProperty.song_step, ValueProperty.down);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
-                dic.Add("song_step", "down");
-                SendMethod.sendMethod.SendControlCommand(player.functionMusic, dic);
+                dic.Add(KeyProperty.song_step, ValueProperty.down);
+                SendMethod.Current.SendControlCommand(player.functionMusic, dic);
             };
             musicView.nextBtn.MouseUpEventHandler += (sender, e) =>
             {
                 musicView.nextBtn.IsSelected = false;
             };
-
+            //鏇存柊鐘舵�佺嚎绋�
             var musicThread = new System.Threading.Thread(() =>
             {
-                while (true)
+                try
                 {
-                    System.Threading.Thread.Sleep(1000);
-                    if (!player.functionMusic.online)
+                    while (true)
                     {
-                        ///涓嶅湪绾夸笉璇荤姸鎬�
-                        continue;
+                        if (!player.functionMusic.isOnline())
+                        {
+                            ///涓嶅湪绾夸笉璇荤姸鎬�
+                            continue;
+                        }
+                        //SendMethod.ReadStatus(player);
+                        SendMethod.Current.GetDeviceStatus(ref player, new List<string> { player.functionMusic.deviceId }, player.functionMusic.sid);
+                        System.Threading.Thread.Sleep(1000);
+                        Application.RunOnMainThread(() =>
+                        {
+                            try
+                            {
+                                musicView.singerBtn.Text = player.functionMusic.GetAttrState(KeyProperty.song_name);
+                                musicView.songNameBtn.Text = player.functionMusic.GetAttrState(KeyProperty.song_name);
+                                musicView.musicNameBtn.Text = player.functionMusic.name;
+                                if (player.functionMusic.GetAttrState(KeyProperty.on_off) == ValueProperty.on)
+                                {
+                                    musicView.playBtn.IsSelected = true;
+                                }
+                                else
+                                {
+                                    musicView.playBtn.IsSelected = false;
+                                }
+                                musicView.regionBtn.Text = player.functionMusic.GetRoomListName();
+
+                                if (player.functionMusic.collect)
+                                {
+                                    musicView.collectIconBtn.IsSelected = true;
+                                }
+                                else
+                                {
+                                    musicView.collectIconBtn.IsSelected = false;
+                                }
+                            }
+                            catch (Exception e)
+                            {
+                                string ee = e.Message;
+                            }
+                        });
                     }
-                    //SendMethod.ReadStatus(player);
-                     SendMethod.sendMethod.RefreshDeviceStatus(player.functionMusic,new List<string> { player.functionMusic.deviceId });
-                 
-                    Application.RunOnMainThread(() =>
-                    {
-                        musicView.singerBtn.Text = player.functionMusic.GetAttrState("song_name");
-                        musicView.songNameBtn.Text = player.functionMusic.GetAttrState("song_name");
-                        musicView.musicNameBtn.Text = player.functionMusic.name;
-                        if (player.A31PlayStatus.status == "play")
-                        {
-                            musicView.playBtn.IsSelected = true;
-                        }
-                        else
-                        {
-                            musicView.playBtn.IsSelected = false;
-                        }
-                        musicView.regionBtn.Text = player.functionMusic.GetRoomListName();
-                        if (player.ServerClientType == 1)
-                        {
-                            if (player.MainPlayCollection)
-                            {
-                                musicView.collectIconBtn.IsSelected = true;
-                            }
-                            else
-                            {
-                                musicView.collectIconBtn.IsSelected = false;
-                            }
-                        }
-                        else
-                        {
-                            if (player.functionMusic.collect)
-                            {
-                                musicView.collectIconBtn.IsSelected = true;
-                            }
-                            else
-                            {
-                                musicView.collectIconBtn.IsSelected = false;
-                            }
-                        }
-                    });
+                }
+                catch (Exception e)
+                {
+                    string ee = e.Message;
                 }
             })
             { IsBackground = true, Name = "A31" };
@@ -297,62 +335,118 @@
         ///鎸囧畾鍒锋柊鐣岄潰
         /// </summary>
         /// <param name="strView">鍒ゆ柇瀛楃</param>
-        public void RefreshView(string strView)
+        public void RefreshView(AlinkStatusData alinkStatusData)
         {
+            if (alinkStatusData == null || alinkStatusData.status.Count == 0)
+            {
+                return;
+            }
             Application.RunOnMainThread(() =>
             {
                 try
                 {
-                  
-                    for (int i = MainPage.BasePageView.ChildrenCount - 1; 0 <= i; i--)
+                    for (int a =0; a < MainPage.BasePageView.ChildrenCount; a++)
                     {
-                        var view = MainPage.BasePageView.GetChildren(i);
-                        if (strView == view.Tag.ToString())
+                        var view = MainPage.BasePageView.GetChildren(a);
+                        if (view.GetType() == typeof(MusicMain))
                         {
-                            if (view.GetType() == typeof(MusicMain))
+                            var musicMain = view as MusicMain;
+                            if (musicMain != null)
                             {
-                                //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;
-                                //    }
-                                //}
-                            }
-                        }
+                                for (int b = 0; b < musicMain.ChildrenCount; b++)
+                                {
+                                    var view1 = musicMain.GetChildren(b);
+                                    if (view1.GetType() == typeof(VerticalRefreshLayout))
+                                    {
+                                        var vv = view1 as VerticalRefreshLayout;
+                                        if (vv != null && vv.Name == "verticalRefresh")
+                                        {
+                                            for (int c = 0; c < vv.ChildrenCount; c++)
+                                            {
+                                                var viewfl = vv.GetChildren(c); 
+                                                if (viewfl.GetType() == typeof(FrameLayout))
+                                                {
+                                                    var fl = viewfl as FrameLayout;
+                                                    if ((fl.Tag as Function).sid!= alinkStatusData.sid) {
+                                                        //涓嶆槸褰撳墠闊充箰涓嶄細鏇存柊鐘舵��
+                                                        continue;
+                                                    }
+                                                    if (fl != null && fl.Name == "parentfl")
+                                                    {
+                                                        for (int i = 0; i < fl.ChildrenCount; i++)
+                                                        {
+                                                            var viewfl1 = fl.GetChildren(i); 
+                                                            if (viewfl1.GetType() == typeof(FrameLayout))
+                                                            {
+                                                                var fl1 = viewfl1 as FrameLayout;
+                                                                if (fl1 != null && fl1.Name == "musicparentfl")
+                                                                {
+                                                                    for (int j = 0; j < fl1.ChildrenCount; j++)
+                                                                    {
 
+                                                                        if (fl1.GetChildren(j).GetType() == typeof(Button))
+                                                                        {
+                                                                            var btn = fl1.GetChildren(j) as Button;
+                                                                            if (btn == null ||btn.Name==null)
+                                                                            {
+                                                                                continue;
+                                                                            }
+                                                                            switch (btn.Name)
+                                                                            {
+                                                                                case "song":
+                                                                                    {
+                                                                                        var s = alinkStatusData.status.Find((o) => o.key == KeyProperty.song_name);
+                                                                                        if (s != null)
+                                                                                        {
+                                                                                            btn.Text = s.value;
+                                                                                        }
+                                                                                    }
+                                                                                    break;
+                                                                                case "playstatus":
+                                                                                    {
+
+                                                                                        var s = alinkStatusData.status.Find((o) => o.key == KeyProperty.on_off);
+                                                                                        if (s != null)
+                                                                                        {
+                                                                                            if (s.value == ValueProperty.on)
+                                                                                            {
+                                                                                                btn.IsSelected = true;
+                                                                                            }
+                                                                                            else
+                                                                                            {
+                                                                                                btn.IsSelected = false;
+                                                                                            }
+                                                                                        }
+                                                                                    }
+                                                                                    break;
+                                                                            }
+
+                                                                        }
+                                                                    }
+                                                                }
+                                                            }
+
+                                                        }
+                                                    }
+                                                }
+
+                                            }
+                                        }
+
+                                    }
+
+                                }
+                            }
+
+                        }
                     }
+
                 }
                 catch { }
             });
         }
+
+       
     }
 
 }

--
Gitblit v1.8.0