From 2bec9c838d2d688025698de8ec1de401ffd7dd1f Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 11 八月 2020 14:13:55 +0800
Subject: [PATCH] 20200811

---
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs |  405 ---------------------------------------------------------
 1 files changed, 5 insertions(+), 400 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs
index 4a58f1d..f55fa85 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs
@@ -19,30 +19,17 @@
         {
             #region   鐣岄潰甯冨眬------
 
-            this.BackgroundColor = Color.ViewColor;
+            this.BackgroundColor = MusicColor.ViewColor;
             var topView = new TopView();
             this.AddChidren(topView.TopFLayoutView());
             topView.topNameBtn.Text = fileListInfo.ListName;
             topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
             {
-
-                if (updateSelectedMusicThread != null)
-                {
-                    try
-                    {
-                        if (updateSelectedMusicThread.IsAlive)
-                        {
-                            updateSelectedMusicThread.Abort();
-                            ///鍏抽棴绾跨▼
-                        }
-                    }
-                    catch { }
-                }
                 this.RemoveFromParent();
             };
             middViewLayout = new VerticalRefreshLayout
             {
-                BackgroundColor = Color.WhiteColor,
+                BackgroundColor = MusicColor.WhiteColor,
                 Y = topView.fLayout.Bottom,
                 Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
             };
@@ -60,399 +47,17 @@
         public void MusicView(FileListInfo fileListInfo)
         {
             middViewLayout.RemoveAll();
-            for (int i = 0; i < fileListInfo.MusicInfoList.Count; i++)
-            {
-                var songs = fileListInfo.MusicInfoList[i];
-                if (string.IsNullOrEmpty(songs.Title))
-                {
-                    //闃叉姝屾洸鍚嶅瓧涓虹┖鎶涘紓甯�
-                    songs.Title = " ";
-                }
-                if (string.IsNullOrEmpty(songs.Artist))
-                {
-                    //闃叉姝屾墜鍚嶅瓧涓虹┖鎶涘紓甯�
-                    songs.Artist = " ";
-                }
-                RowLayout musicViewFl = new RowLayout
-                {
-                    Width = Application.GetRealWidth(375),
-                    Height = Application.GetRealHeight(44),
-                    LineColor = Color.WhiteColor,
-                    SubViewWidth = Application.GetRealWidth(90),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
-                };
-                middViewLayout.AddChidren(musicViewFl);
-                //鍒楄〃褰撳墠鎾斁闊充箰鍥炬爣
-                Button playIconBtn = new Button
-                {
-                    X = Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(10),
-                    Width = Application.GetMinRealAverage(24),
-                    Height = Application.GetMinRealAverage(24),
-                    UnSelectedImagePath = "MusicIcon/playStatus.png",
-                    Visible = false,
-                    Name = "playStatus",
-                    Tag = songs.URL,
-                };
-                musicViewFl.AddChidren(playIconBtn);
-                //姝屾洸鎺т欢
-                Button songBtn = new Button
-                {
-                    X = Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(11),
-                    Width = Application.GetRealWidth(100),
-                    Height = Application.GetRealHeight(22),
-                    TextColor = Color.MusicTxet14Color,
-                    TextSize = TextSize.Text16,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Name = "song",
-                    Tag = songs.URL,
-                    Text = songs.Title.Trim()
-                };
-                musicViewFl.AddChidren(songBtn);
-                var wText = songBtn.GetTextWidth();//鑾峰彇鏂囨湰瀹藉害
-                ///(姝屾洸+姝屾墜)瀹藉害鏈�澶у�兼椂280
-                if (wText > 280)
-                {
-
-                    songBtn.Width = Application.GetRealWidth(280);
-                }
-                else
-                {
-                    songBtn.Width = wText + 5;
-                }
-                //姝屾墜鎺т欢
-                Button singerBtn = new Button
-                {
-                    X = songBtn.Right,
-                    Y = Application.GetRealHeight(11),
-                    Width = Application.GetRealWidth(280 - songBtn.Width),
-                    Height = Application.GetRealHeight(22),
-                    TextColor = Color.MusicNoTxetColor,
-                    TextSize = TextSize.Text12,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    //Text =("-" +songs.Artist).Trim(),
-                    Name = "singer",
-                    Tag = songs.URL,
-                    Text = "-" + songs.Artist.Trim()
-                };
-                musicViewFl.AddChidren(singerBtn);
-                if (wText > 280)
-                {
-                    ///姝屽悕闀垮害灏忎簬250鎵嶅彲浠ユ樉绀烘瓕鎵嬪嚭鏉�
-                    singerBtn.Width = Application.GetRealWidth(0);
-                }
-                //娣诲姞鍠滅埍闊充箰鎺т欢
-                Button loveIcon = new Button
-                {
-                    X = Application.GetRealWidth(291),
-                    Y = Application.GetRealHeight(8),
-                    Width = Application.GetMinRealAverage(28),
-                    Height = Application.GetMinRealAverage(28),
-                    UnSelectedImagePath = "MusicIcon/love.png",
-                    SelectedImagePath = "MusicIcon/loveSelected.png",
-                };
-                musicViewFl.AddChidren(loveIcon);
-                loveIcon.MouseUpEventHandler += (sender, e) =>
-                {
-                    loveIcon.IsSelected = !loveIcon.IsSelected;
-                    if (loveIcon.IsSelected)
-                    {
-                        ///鏌ユ壘闊充箰鏄惁瀛樺湪鍦ㄥ垪琛�
-                        var music1 = A31MusicModel.Current.LoveMusicInfoList.Find((m) => m.URL == songs.URL);
-                        if (music1 == null)
-                        {
-                            ///娌℃湁瀛樺湪灏辨坊鍔�
-                            A31MusicModel.Current.LoveMusicInfoList.Add(songs);
-                        }
-                    }
-                    else
-                    {
-                        ///鏌ユ壘闊充箰鏄惁瀛樺湪鍦ㄥ垪琛�
-                        var music1 = A31MusicModel.Current.LoveMusicInfoList.Find((m) => m.URL == songs.URL);
-                        if (music1 != null)
-                        {
-                            ///瀛樺湪灏卞垹闄�
-                            A31MusicModel.Current.LoveMusicInfoList.Remove(songs);
-                        }
-
-                    }
-                    A31MusicModel.Save();
-                };
-                var music = A31MusicModel.Current.LoveMusicInfoList.Find((m) => m.URL == songs.URL);
-                if (music != null)
-                {
-                    loveIcon.IsSelected = true;
-                }
-                else
-                {
-                    loveIcon.IsSelected = false;
-                }
-                ///鍒犻櫎鎺т欢
-                var delBtn = new Button
-                {
-                    BackgroundColor = Color.MusicDelColor,
-                    Text = Language.StringByID(StringId.delMusic),
-                    TextColor = Color.WhiteColor,
-                    TextSize = TextSize.Text16,
-                };
-                musicViewFl.AddRightView(delBtn);
-                delBtn.MouseUpEventHandler += (sender, e) =>
-                {
-                    fileListInfo.MusicInfoList.Remove(songs);
-                    A31MusicModel.Save();
-                    musicViewFl.RemoveFromParent();
-                };
-                //娣诲姞鍒版垜鐨勫垪琛�
-                Button addIcon = new Button
-                {
-                    X = Application.GetRealWidth(335),
-                    Y = Application.GetRealHeight(8),
-                    Width = Application.GetMinRealAverage(28),
-                    Height = Application.GetMinRealAverage(28),
-                    UnSelectedImagePath = "MusicIcon/addMusic1.png",
-                };
-                musicViewFl.AddChidren(addIcon);
-                addIcon.MouseUpEventHandler = (sender, e) =>
-                {
-                    new View.DialogView { }.FieListView(songs);
-                };
-
-                //鐐瑰嚮鎺т欢
-                Button clickBtn = new Button
-                {
-                    Width = Application.GetRealWidth(280),
-                    Height = Application.GetRealHeight(44),
-                    Tag = songs,//鏍囪鎾斁鍝竴棣栨瓕鏇�
-                };
-                musicViewFl.AddChidren(clickBtn);
-                ///鐐瑰嚮鎾斁浜嬩欢
-                clickBtn.MouseUpEventHandler += (sender, e) =>
-                {
-
-                    System.Threading.Tasks.Task.Run(() =>
-                    {
-                        System.Threading.Thread.Sleep(50);
-                        Application.RunOnMainThread(() =>
-                        {
-                            //绉婚櫎鐣岄潰
-                            A31MusicModel.Current.A31PlayStatus.Title = songBtn.Text;
-                            MainPage.BasePageView.RemoveViewByTag("Music");
-                            System.Threading.Tasks.Task.Run(() =>
-                            {
-                                PushList(songs, fileListInfo.ListName, fileListInfo.MusicInfoList);
-                            });
-                        });
-                    });
-
-                };
-
-            }
+            UI2.FuntionControlView.Music.UpdateThread.playMusuc(middViewLayout,"鎴戠殑鍒楄〃", fileListInfo.ListName, fileListInfo.MusicInfoList, A31MusicModel.Current);
         }
         /// <summary>
         /// 瀹氭椂鏇存柊褰撳墠鎾斁闊充箰
         /// </summary>
-        System.Threading.Thread updateSelectedMusicThread;
         public void UpdateSelectedMusic()
         {
-            updateSelectedMusicThread = new System.Threading.Thread(() =>
-            {
-                while (this.Parent != null)
-                {
-                    System.Threading.Thread.Sleep(1000);
-                    Application.RunOnMainThread(() =>
-                    {
-                        try
-                        {
-                            for (int i = 0; i < middViewLayout.ChildrenCount; i++)
-                            {
-                                RowLayout view = (RowLayout)middViewLayout.GetChildren(i);
-                                var volIconBtn = (Button)view.GetChildren(0);//鐩存帴RowLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
-                                var songNameBtn = (Button)view.GetChildren(1);//鐩存帴RowLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
-                                var artistNameBtn = (Button)view.GetChildren(2);//鐩存帴RowLayout鐖舵帶浠舵壘鍒拌鎺т欢Button
-                                if (A31MusicModel.Current.A31PlayStatus.TrackURL == songNameBtn.Tag.ToString())
-                                {
-                                    volIconBtn.Visible = true;
-                                    songNameBtn.TextColor = Color.SelectedColor;
-                                    songNameBtn.X = Application.GetRealWidth(48);
-                                    artistNameBtn.X = songNameBtn.Right;
-                                    artistNameBtn.TextColor = Color.SelectedColor;
-                                }
-                                else
-                                {
-                                    volIconBtn.Visible = false;
-                                    songNameBtn.TextColor = Color.MusicTxet14Color;
-                                    songNameBtn.X = Application.GetRealWidth(16);
-                                    artistNameBtn.X = songNameBtn.Right;
-                                    artistNameBtn.TextColor = Color.MusicNoTxetColor;
-                                }
-
-
-                            }
-                        }
-                        catch { }
-
-                    });
-                }
-            });
-            updateSelectedMusicThread.Start();
+            UI2.FuntionControlView.Music.UpdateThread.updateThread(this, middViewLayout, A31MusicModel.Current);
         }
 
-        /// <summary>
-        /// 鎺ㄩ�佹挱鏀惧懡浠�
-        /// </summary>
-        /// <param name="musicInfo">鎾斁闊充箰</param>
-        /// <param name="listName">鍒楄〃鍚嶇О</param>
-        /// <param name="musicList">鎺ㄩ�佸垪琛�(榛樿鎺�50棣�)</param>
-        public void PushList(MusicInfo musicInfo, string listName, List<MusicInfo> musicList)
-        {
-
-            //鏈�澶у彂閫佺殑鏉℃暟
-            int maxCount = 50;
-            //鎵惧嚭褰撳墠鐐瑰嚮闊充箰鐨勭储寮�
-            int statIndex = musicList.FindIndex((obj) => { return obj == musicInfo; });
-            //鐐瑰嚮鍚庨潰杩樻湁澶氬皯鏉¢煶涔�
-            int count = musicList.Count - statIndex;
-            int endIndex = 0;
-            if (maxCount < count)
-            {
-                //濡傛灉鍚庨潰鐨勯煶涔愬ぇ浜庢渶澶ф暟锛岃缃悗闈㈡暟鎹殑鏈�澶х储寮� 
-                endIndex = statIndex + maxCount - 1;
-            }
-            else
-            {
-                //濡傛灉鍚庨潰鏁版嵁涓嶅锛屽氨鐢ㄦ�绘暟鍑忓幓鏈�澶ф潯鏁帮紝寰楀埌寮�濮嬬储寮�
-                statIndex = musicList.Count - maxCount - 1;
-                endIndex = musicList.Count - 1;
-            }
-            //濡傛灉寮�濮嬬储寮曞皬浜�0锛岄偅灏辫缃负绗竴鏉¢煶涔�
-            if (statIndex < 0)
-            {
-                statIndex = 0;
-            }
-
-            StringBuilder sb = new StringBuilder();
-            sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
-            sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            sb.AppendLine("<s:Body>");
-            sb.AppendLine("<u:CreateQueue xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            sb.AppendLine("<QueueContext>&lt;?xml version=\"1.0\"?&gt;");
-            sb.AppendLine("&lt;PlayList&gt;");
-            sb.AppendLine("&lt;ListName&gt;DLNA" + listName + "&lt;/ListName&gt;");
-            sb.AppendLine("&lt;ListInfo&gt;");
-            sb.AppendLine("&lt;Radio&gt;0&lt;/Radio&gt;");//
-            sb.AppendLine("&lt;SourceName&gt;UPnPServer&lt;/SourceName&gt;");//          
-            sb.AppendLine("&lt;MarkSearch&gt;0&lt;/MarkSearch&gt;");
-            sb.AppendLine("&lt;TrackNumber&gt;" + (endIndex - statIndex + 1) + "&lt;/TrackNumber&gt;");
-            sb.AppendLine("&lt;Quality&gt;0&lt;/Quality&gt;");
-            sb.AppendLine("&lt;UpdateTime&gt;5367&lt;/UpdateTime&gt;");
-            sb.AppendLine("&lt;LastPlayIndex&gt;2&lt;/LastPlayIndex&gt;");
-            sb.AppendLine("&lt;SwitchPageMode&gt;0&lt;/SwitchPageMode&gt;");
-            sb.AppendLine("&lt;CurrentPage&gt;0&lt;/CurrentPage&gt;");
-            sb.AppendLine("&lt;TotalPages&gt;0&lt;/TotalPages&gt;");
-            sb.AppendLine("&lt;/ListInfo&gt;");
-            sb.AppendLine("&lt;Tracks&gt;");
-
-            int number = 1;
-
-            for (int i = statIndex, Tracknumber = 1; i <= endIndex; i++, Tracknumber++)
-            {
-                var tempMusicInfo = musicList[i];
-
-                if (musicInfo == tempMusicInfo)
-                {
-                    number = Tracknumber;
-                }
-
-                if (tempMusicInfo.SourceType == "Local")
-                {
-                    tempMusicInfo.URL = "http://" + new NetWiFi().IpAddress + ":" + com.hdl.on.Server.Port + "/" + tempMusicInfo.ID;
-                }
-
-
-                sb.AppendLine("&lt;Track" + Tracknumber + "&gt;");
-                sb.AppendLine("&lt;URL&gt;" + tempMusicInfo.URL + "&lt;/URL&gt;");
-                sb.AppendLine("&lt;Metadata&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;");
-                sb.AppendLine("&amp;lt;DIDL-Lite xmlns:dc=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot; xmlns:upnp=&amp;quot;urn:schemas-upnp-org:metadata-1-0/upnp/&amp;quot; xmlns:song=&amp;quot;www.wiimu.com/song/&amp;quot; xmlns=&amp;quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&amp;quot;&amp;gt;");
-                sb.AppendLine("&amp;lt;upnp:class&amp;gt;object.item.audioItem.musicTrack&amp;lt;/upnp:class&amp;gt;");
-                sb.AppendLine("&amp;lt;item id=&amp;quot;0&amp;quot;&amp;gt;");
-                sb.AppendLine("&amp;lt;song:subid&amp;gt;&amp;lt;/song:subid&amp;gt;");
-                sb.AppendLine("&amp;lt;song:description&amp;gt;unknown&amp;lt;/song:description&amp;gt;");
-                sb.AppendLine("&amp;lt;song:skiplimit&amp;gt;6&amp;lt;/song:skiplimit&amp;gt;");
-                sb.AppendLine("&amp;lt;song:id&amp;gt;" + tempMusicInfo.ID + "&amp;lt;/song:id&amp;gt;");
-                sb.AppendLine("&amp;lt;song:like&amp;gt;0&amp;lt;/song:like&amp;gt;");
-                sb.AppendLine("&amp;lt;song:singerid&amp;gt;0&amp;lt;/song:singerid&amp;gt;");
-                sb.AppendLine("&amp;lt;song:albumid&amp;gt;" + tempMusicInfo.AlbumId + "&amp;lt;/song:albumid&amp;gt;");
-
-                sb.AppendLine("&amp;lt;res protocolInfo=&amp;quot;http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;&amp;quot; duration=&amp;quot;" + "0:0:0.0" + "&amp;quot;&amp;gt;" + tempMusicInfo.URL + "&amp;lt;/res&amp;gt;");
-
-                sb.AppendLine("&amp;lt;dc:title&amp;gt;" + tempMusicInfo.Title + "&amp;lt;/dc:title&amp;gt;");
-                sb.AppendLine("&amp;lt;dc:creator&amp;gt;DJ Sanny J&amp;lt;/dc:creator&amp;gt;");
-                sb.AppendLine("&amp;lt;upnp:artist&amp;gt;" + listName + "&amp;lt;/upnp:artist&amp;gt;");
-                sb.AppendLine("&amp;lt;upnp:album&amp;gt;" + tempMusicInfo.Album + "&amp;lt;/upnp:album&amp;gt;");
-                sb.AppendLine("&amp;lt;upnp:albumArtURI&amp;gt;unknown&amp;lt;/upnp:albumArtURI&amp;gt;");
-                sb.AppendLine("&amp;lt;/item&amp;gt;");
-                sb.AppendLine("&amp;lt;/DIDL-Lite&amp;gt;");
-                sb.AppendLine("&lt;/Metadata&gt;");
-                sb.AppendLine("&lt;Id&gt;" + tempMusicInfo.ID + "&lt;/Id&gt;");
-                sb.AppendLine("&lt;Source&gt;STATION-NETWORK&lt;/Source&gt;");//UPnPServer
-                sb.AppendLine("&lt;Key&gt;" + tempMusicInfo.URL + "&lt;/Key&gt;");
-                sb.AppendLine("&lt;/Track" + Tracknumber + "&gt;");
-            }
-            sb.AppendLine("&lt;/Tracks&gt;");
-            sb.AppendLine("&lt;/PlayList&gt;");
-            sb.AppendLine("</QueueContext>");
-            sb.AppendLine("</u:CreateQueue>");
-            sb.AppendLine("</s:Body>");
-            sb.AppendLine("</s:Envelope>");
-
-            SendMusicLists(A31MusicModel.Current.IPAddress, A31MusicModel.Current.Port, "CreateQueue", sb.ToString());
-
-            StringBuilder playString = new StringBuilder();
-            playString.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
-            playString.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
-            playString.AppendLine("<s:Body>");
-            playString.AppendLine("<u:PlayQueueWithIndex xmlns:u=\"urn:schemas-wiimu-com:service:PlayQueue:1\">");
-            playString.AppendLine("<QueueName>DLNA" + listName + "</QueueName>");
-            playString.AppendLine("<Index>" + number + "</Index>");
-            playString.AppendLine("</u:PlayQueueWithIndex>");
-            playString.AppendLine("</s:Body>");
-            playString.AppendLine("</s:Envelope>");
-
-            Play(A31MusicModel.Current.IPAddress, A31MusicModel.Current.Port, playString.ToString());
-        }
-
-        void SendMusicLists(string ip, int port, string soapAction, string listInfo)
-        {
-            System.Net.WebClient webClient = new System.Net.WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#" + soapAction + "\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(listInfo));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch
-            {
-
-            }
-        }
-
-        void Play(string ip, int port, string info)
-        {
-            System.Net.WebClient webClient = new System.Net.WebClient();
-            webClient.Headers.Add("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#PlayQueueWithIndex\"");
-            webClient.Headers.Add("CONTENT-TYPE", "text/xml; charset=\"utf-8\"");
-            try
-            {
-                byte[] recevieBytes = webClient.UploadData(new Uri("http://" + ip + ":" + port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes(info));
-                var s = System.Text.Encoding.UTF8.GetString(recevieBytes, 0, recevieBytes.Length);
-            }
-            catch
-            {
-
-            }
-        }
-
+       
 
     }
 }

--
Gitblit v1.8.0