From c484347d42f8c14f03f498e689069a14a45abc93 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期五, 03 二月 2023 17:56:45 +0800
Subject: [PATCH] 2023年02月03日17:56:24

---
 HDL_ON/UI/UI2/FuntionControlView/Music/A31UsbMusicList.cs      |   43 ++
 HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs        |   32 ++
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs        |   63 ++-
 HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs      |    4 
 HDL_ON/HDL_ON.projitems                                        |    4 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs          |   53 +++
 HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs |   21 
 HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs           |  114 +++++-
 HDL_ON/UI/UI2/FuntionControlView/Music/CommonMethod.cs         |  133 ++++++++
 /dev/null                                                      |  115 -------
 HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs        |    2 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs   |   98 ++++-
 HDL_ON/DAL/Server/HttpUtil.cs                                  |    4 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31FlieList.cs          |  169 +++++++++++
 HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs     |   36 +-
 HDL_ON/DAL/DriverLayer/Control.cs                              |    6 
 16 files changed, 664 insertions(+), 233 deletions(-)

diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index f7110c8..ec10084 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -1235,12 +1235,12 @@
                         //        return;
                         //    }
                         //}
-                        //MainPage.Log($"A鍗忚鏇存柊鐘舵��:{revString}");
+                        MainPage.Log($"闊充箰鏀跺埌鏁版嵁:{revString}");
                         foreach (var attr in updateTemp.status)
                         {
                             localFunction.time_stamp = temp.time_stamp;
                             localFunction.SetAttrState(attr.key, attr.value);
-                            //Console.WriteLine("闊充箰鎾斁鍣ㄦ坊鍔犵紦瀛樻暟鎹�=======" + revString);
+                            Console.WriteLine("闊充箰鎾斁鍣ㄦ坊鍔犵紦瀛樻暟鎹�=======" + revString);
 
                         }
 
@@ -1490,7 +1490,7 @@
                             case SPK.AvMusic:
                             case SPK.MusicStandard:
                                 //UI.Music.MusicMain.mMusicMain.RefreshView(updateTemp);
-                                //Console.WriteLine("闊充箰鎾斁鍣ㄦ樉绀虹姸鎬�======="+ revString);
+                                Console.WriteLine("闊充箰鎾斁鍣ㄦ樉绀虹姸鎬�======="+ revString);
                                 //wjc
                                 break;
                             case SPK.Inverter:
diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
index 511a91e..bf39c96 100644
--- a/HDL_ON/DAL/Server/HttpUtil.cs
+++ b/HDL_ON/DAL/Server/HttpUtil.cs
@@ -17,8 +17,8 @@
         /// 鍥哄畾鍩熷悕,姝e紡鐜
         /// 鍏叡鍩熷悕灏辫繎瑙f瀽
         /// </summary>
-        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
-        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
+        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
+        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
         /// <summary>
         /// RegionMark
         /// </summary>
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 47b415d..7f41d93 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -483,7 +483,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\MusicSourceView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\SongView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\MyListView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31MusicFileList.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31SongPlay.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\MusicProperty.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOn\SupportHomeKitNotesPage.cs" />
@@ -526,6 +525,9 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\ChooseIocate.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\ColorTemperature.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\MechanicalArmPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31UsbMusicList.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\CommonMethod.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31FlieList.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
index 7aeb9f2..9cfe721 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
@@ -599,25 +599,30 @@
                                 {
                                     //HDL_ON.DriverLayer.Control.Ins.GetMusicDirectory(device);
                                     //var palyListName = Music.SendMethod.mMethod.GetListName(device); 
-                                    var palyList= Music.SendMethod.Current.GetListMusic(device, "hdl_special");
-                                    List<string> musicNameList = new List<string>();
+                                    var palyList= Music.SendMethod.Current.GetSingleSongList(device, "hdl_special","");
+                                    List<string> songNameList = new List<string>(); 
                                     for (int i = 0; i < palyList.songs.Count; i++)
                                     {
-                                        var music = palyList.songs[i];
-                                        musicNameList.Add(music.name);
+                                        var song = palyList.songs[i]; 
+                                        songNameList.Add(song.name);
                                     }
                                     Application.RunOnMainThread(() =>
                                     {
                                         loading.Hide();
                                         PublicInterface publicInterface = new PublicInterface();
-                                        publicInterface.FrameOrVv(this, musicNameList, new List<string> { funTypeView.btnState.Text }, palyList.group, (index2) =>
+                                        publicInterface.FrameOrVv(this, songNameList, new List<string> { funTypeView.btnState.Text }, palyList.group, (index2) =>
                                         {
-                                            var musicSelecetd = palyList.songs[index2];
+                                            var songSelecetd = palyList.songs[index2]; 
                                             //鐣岄潰鏄剧ず閫変腑鍊�
-                                            funTypeView.btnState.Text = musicSelecetd.name;
+                                            funTypeView.btnState.Text = songSelecetd.name;
                                             //鏁版嵁灏佽
                                             AddDictionary("playlist_name", palyList.group);//鍒楄〃鍚�
-                                            AddDictionary("song_name", musicSelecetd.name);//姝屾洸鍚�
+                                            AddDictionary("song_name", songSelecetd.name);//姝屾洸鍚�
+                                            if (!string.IsNullOrEmpty(songSelecetd.url))
+                                            {
+                                                //瀛樺湪url灏变竴璧峰彂閫佽繃鍘�
+                                                AddDictionary("url", songSelecetd.url);
+                                            }
 
                                         },false);
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31FlieList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31FlieList.cs
new file mode 100644
index 0000000..f46332d
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31FlieList.cs
@@ -0,0 +1,169 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.UI.UI2.FuntionControlView.Music;
+using Shared;
+namespace HDL_ON.UI.Music
+{
+    public class A31FlieList : FrameLayout
+    {
+
+        public A31FlieList(string source,string title)
+        {
+            Tag = "Music";
+            this.source = source;
+            this.title = title;
+        }
+        /// <summary>
+        /// 闊充箰婧�
+        /// </summary>
+        private string source = string.Empty;
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        private string title = string.Empty;
+
+        VerticalRefreshLayout middViewLayout;
+        public void Show()
+        {
+            #region   鐣岄潰甯冨眬------
+
+            this.BackgroundColor = MusicColor.ViewColor;
+            var topView = new TopView();
+            this.AddChidren(topView.TopFLayoutView());
+            topView.topNameBtn.Text=this.title;
+            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                this.RemoveFromParent();
+            };
+            middViewLayout = new VerticalRefreshLayout
+            {
+                BackgroundColor = MusicColor.WhiteColor,
+                Y = topView.fLayout.Bottom,
+                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
+            };
+            this.AddChidren(middViewLayout);
+            #endregion
+
+            middViewLayout.BeginHeaderRefreshingAction += () =>
+            {
+                System.Threading.Tasks.Task.Run(() =>
+                {
+                    try
+                    {
+                        var Group = SendMethod.Current.GetSingleSourceListNameList(A31MusicModel.Current.functionMusic, this.source);
+                        CommonMethod.Current.AddSourceGroupListMemory(Group);//淇濆瓨缂撳瓨
+                    }
+                    catch { }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            var listNameList = CommonMethod.Current.GetListNameListMemory(this.source);
+                            this.FileListView(listNameList);
+                            middViewLayout.EndHeaderRefreshing();
+                        });
+                    }
+                });
+
+            };
+
+        }
+        /// <summary>
+        /// 鍔犺浇鍒楄〃
+        /// </summary>
+        /// <param name="listNames">鍒楄〃鍚嶅垪琛�</param>
+        public void FileListView(List<ListName> listNames)
+        {
+            middViewLayout.RemoveAll();
+            for (int i = 0; i < listNames.Count; i++)
+            {
+                var listName= listNames[i];
+                 RowLayout addFlieRow = new RowLayout
+                {
+                    Height = Application.GetRealHeight(104),
+                    LineColor = MusicColor.WhiteColor,
+                    SubViewWidth = Application.GetRealWidth(90),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
+                };
+                middViewLayout.AddChidren(addFlieRow);
+                //鏂囦欢鍥炬爣
+                Button fileIconBtn = new Button
+                {
+                    X = Application.GetRealWidth(16),
+                    Y = Application.GetRealHeight(8),
+                    Width = Application.GetRealWidth(88),
+                    Height = Application.GetRealWidth(88),
+                    UnSelectedImagePath = "MusicIcon/fileList.png",
+                };
+                addFlieRow.AddChidren(fileIconBtn);
+
+                //鏂囦欢鍚嶆帶浠�
+                Button fileNameBtn = new Button
+                {
+                    X = fileIconBtn.Right + Application.GetRealWidth(16),
+                    Y = Application.GetRealHeight(42),
+                    Width = Application.GetRealWidth(217),
+                    Height = Application.GetRealHeight(20),
+                    TextColor = MusicColor.TextColor,
+                    TextSize = TextSize.Text14,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = listName.group,
+                };
+                addFlieRow.AddChidren(fileNameBtn);
+
+                Button clickBtn = new Button
+                {
+                    X = fileIconBtn.Right + Application.GetRealWidth(16),
+                    Width = Application.GetRealWidth(375 - 138),
+                    Height = Application.GetRealHeight(104),
+                    Tag=listName.group
+                };
+                addFlieRow.AddChidren(clickBtn);
+                clickBtn.MouseUpEventHandler += (sender, e) =>
+                {
+                    string groupName = clickBtn.Tag.ToString();
+                    Loading loading = new Loading();
+                    this.AddChidren(loading);
+                    loading.Start();
+                    //鍚戠紦瀛樻嬁鍒楄〃
+                    var songListMemory = CommonMethod.Current.GetSongListMemory(groupName,this.source);  
+                    System.Threading.Tasks.Task.Run(() =>
+                    {
+                        try
+                        {
+                            //缂撳瓨娌℃湁鍒楄〃鎵嶅幓璇诲彇
+                            if (songListMemory.songs.Count == 0)
+                            {
+                                //璇诲彇姝屾洸鍒楄〃
+                                var songList = SendMethod.Current.GetSingleSongList(A31MusicModel.Current.functionMusic, groupName, this.source);
+                                CommonMethod.Current.AddSongListMemory(songList,this.source);//淇濆瓨缂撳瓨
+                                songListMemory.songs.AddRange(songList.songs);//鏇存柊鍒楄〃
+                            }
+                        }
+                        catch
+                        {
+                        }
+                        finally
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                loading.Hide();
+                                A31SongPlay a31Song = new A31SongPlay();
+                                MainPage.BasePageView.AddChidren(a31Song);
+                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                                a31Song.Show(songListMemory);
+                            });
+                        }
+                    });
+
+                };
+
+
+
+            }
+        }
+
+       
+
+        
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs
deleted file mode 100644
index 075ace3..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs
+++ /dev/null
@@ -1,115 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using Shared;
-namespace HDL_ON.UI.Music
-{
-    public class A31MusicFileList : FrameLayout
-    {
-        public A31MusicFileList()
-        {
-            Tag = "Music";
-        }
-        VerticalRefreshLayout middViewLayout;
-        public void Show()
-        {
-            #region   鐣岄潰甯冨眬------
-
-            this.BackgroundColor = MusicColor.ViewColor;
-            var topView = new TopView();
-            this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.TextID = StringId.localMusic;
-            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                this.RemoveFromParent();
-            };
-            middViewLayout = new VerticalRefreshLayout
-            {
-                BackgroundColor = MusicColor.WhiteColor,
-                Y = topView.fLayout.Bottom,
-                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
-            };
-            this.AddChidren(middViewLayout);
-            #endregion
-
-            middViewLayout.BeginHeaderRefreshingAction += () =>
-            {
-                System.Threading.Tasks.Task.Run(() =>
-                {
-                    try
-                    {
-                        SendMethod.Current.GetPalyList(A31MusicModel.Current.functionMusic);
-                    }
-                    catch { }
-                    finally
-                    {
-                        Application.RunOnMainThread(() =>
-                        {
-                            this.FileView();
-                            middViewLayout.EndHeaderRefreshing();
-                        });
-                    }
-                });
-
-            };
-
-        }
-        /// <summary>
-        /// 鍔犺浇鏂囦欢澶筕iew鐨勬柟娉�
-        /// </summary>
-        public void FileView()
-        {
-            middViewLayout.RemoveAll();
-            for (int i = 0; i < A31MusicModel.Current.palyLists.Count; i++)
-            {
-                var list = A31MusicModel.Current.palyLists[i];
-                RowLayout addFlieRow = new RowLayout
-                {
-                    Height = Application.GetRealHeight(104),
-                    LineColor = MusicColor.WhiteColor,
-                    SubViewWidth = Application.GetRealWidth(90),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
-                };
-                middViewLayout.AddChidren(addFlieRow);
-                //鏂囦欢鍥炬爣
-                Button fileIconBtn = new Button
-                {
-                    X = Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(8),
-                    Width = Application.GetRealWidth(88),
-                    Height = Application.GetRealWidth(88),
-                    UnSelectedImagePath = "MusicIcon/fileList.png",
-                };
-                addFlieRow.AddChidren(fileIconBtn);
-
-                //鏂囦欢鍚嶆帶浠�
-                Button fileNameBtn = new Button
-                {
-                    X = fileIconBtn.Right + Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(42),
-                    Width = Application.GetRealWidth(217),
-                    Height = Application.GetRealHeight(20),
-                    TextColor = MusicColor.TextColor,
-                    TextSize = TextSize.Text14,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Text = list.group,
-                };
-                addFlieRow.AddChidren(fileNameBtn);
-
-                Button clickBtn = new Button
-                {
-                    X = fileIconBtn.Right + Application.GetRealWidth(16),
-                    Width = Application.GetRealWidth(375 - 138),
-                    Height = Application.GetRealHeight(104),
-                };
-                addFlieRow.AddChidren(clickBtn);
-                clickBtn.MouseUpEventHandler += (sender, e) =>
-                {
-                    A31SongPlay a31Song = new A31SongPlay();
-                    MainPage.BasePageView.AddChidren(a31Song);
-                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                    a31Song.Show(list.songs, list.group);
-                };
-
-            }
-        }
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
index 1207c0b..fdf19dd 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
@@ -69,30 +69,31 @@
         /// </summary>
         public string UniqueDeviceName = string.Empty;
 
-       
 
         public MusicInfo CurrentMusic = new MusicInfo();
 
-        /// <summary>
-        ///褰撳墠鎾斁鐨勫垪琛ㄤ俊鎭�
-        /// </summary>
-        public List<Songs> CurrentPlayMusicInfoList = new List<Songs>();
 
         /// <summary>
         /// 鏄惁鍏佽鏄剧ず
         /// </summary>
         public bool IsCanShow = true;
-
+       
         /// <summary>
-        /// 鍒楄〃
+        /// 褰撳墠鎾斁姝屾洸鍒楄〃
         /// </summary>
-        public List<PalyList> palyLists = new List<PalyList>();
-
+        public List<SongList> CurrentPlayMusicInfoList = new List<SongList>();
         /// <summary>
         ///  鍠滅埍闊充箰鍒楄〃
         /// </summary>
-        public List<Songs> LoveMusicInfoList = new List<Songs>();
-
+        public List<SongInfo> LoveMusicInfoList = new List<SongInfo>();
+        /// <summary>
+        /// 鎵�鏈夈�愰煶涔愬垪琛ㄣ��
+        /// </summary>
+        public List<SongList> AllMusicLists = new List<SongList>();
+        /// <summary>
+        /// 鎵�鏈夈�愰煶涔愭簮銆戠殑鍒楄〃
+        /// </summary>
+        public List<GroupList> AllSourceGroupList = new List<GroupList>(); 
         /// <summary>
         ///鍒涘缓闊充箰鏂囦欢鍒楄〃
         /// </summary>
@@ -109,12 +110,12 @@
         /// 鎸囧畾鍒楄〃鍚嶈幏鍙栭煶涔愬垪琛�
         /// </summary>
         /// <returns></returns>
-        public List<Songs> GetSongList(string listName)
+        public List<SongInfo> GetSongList(string listName)
         {
-            var list = palyLists.Find((o) => o.group == listName);
+            var list = CurrentPlayMusicInfoList.Find((o) => o.group == listName);
             if (list == null)
             {
-                return new List<Songs>();
+                return new List<SongInfo>();
             }
             return list.songs;
         }
@@ -165,7 +166,7 @@
         /// <summary>
         ///  鍒楄〃姝屾洸淇℃伅
         /// </summary>
-        public List<Songs> MusicInfoList = new List<Songs>();
+        public List<SongInfo> MusicInfoList = new List<SongInfo>();
     }
     [System.Serializable]
     public class TidalMusicInfo : MusicInfo
@@ -199,35 +200,43 @@
     /// <summary>
     /// 鏀寔澶氫釜闊充箰
     /// </summary>
-    public class PalyListInfo
-    {
+    public class PalyerSongListInfo
+    { 
         /// <summary>
         /// 闊充箰sid
         /// </summary>
         public string sid = string.Empty;
         /// <summary>
-        ///  瑙i噴澶氫釜闊充箰
+        /// 闊充箰婧�
         /// </summary>
-        public List<PalyList> playlist = new List<PalyList>();
+        public string source = string.Empty;
+        /// <summary>
+        ///  鍒楄〃淇℃伅
+        /// </summary>
+        public List<SongList> playlist = new List<SongList>(); 
     }
 
     [System.Serializable]
     /// <summary>
     /// 鍒楄〃淇℃伅
     /// </summary>
-    public class PalyList
+    public class SongList
     {
         /// <summary>
         /// 鍒楄〃鍚�
         /// </summary>
         public string group = string.Empty;
         /// <summary>
+        /// 鑷繁瀹氫箟鐨�(鐢ㄨ瘑鍒槸閭d釜闊充箰婧愮殑鍒楄〃)
+        /// </summary>
+        public string source = string.Empty;
+        /// <summary>
         ///  鍒楄〃姝屾洸淇℃伅
         /// </summary>
-        public List<Songs> songs = new List<Songs>();
+        public List<SongInfo> songs = new List<SongInfo>();
     }
     [System.Serializable]
-    public class Songs : MusicInfo
+    public class SongInfo : MusicInfo 
     {
         /// <summary>
         /// 姝屾洸鍚嶇О
@@ -241,6 +250,10 @@
         /// 鏃堕暱
         /// </summary>
         public string time = string.Empty;
+        /// <summary>
+        /// 姝屾洸鍦板潃
+        /// </summary>
+        public string url = string.Empty;
         /// <summary>
         /// 绫诲瀷<鑷繁鐢�>
         /// </summary>
@@ -263,6 +276,10 @@
         /// </summary>
         public string sid = string.Empty;
         /// <summary>
+        /// 闊充箰婧�
+        /// </summary>
+        public string source = string.Empty;
+        /// <summary>
         /// 鍒楄〃鍚嶉泦鍚�
         /// </summary>
         public List<ListName> groupList = new List<ListName>();
@@ -281,4 +298,6 @@
 
     }
 
+   
+
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs
index 0ecebe6..9bc18b9 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs
@@ -1,17 +1,18 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Security;
+using HDL_ON.UI.UI2.FuntionControlView.Music;
 using Shared;
 namespace HDL_ON.UI.Music
 {
-    public class A31MusicSourcePage:FrameLayout
+    public class A31MusicSourcePage : FrameLayout
     {
         public A31MusicSourcePage()
         {
             Tag = "Music";
         }
 
-       
+
         public void Show()
         {
             #region   鐣岄潰甯冨眬------
@@ -33,7 +34,7 @@
             #region 鍩虹淇℃伅锛� 鎾斁鍣� 钃濈墮 鍖哄煙锛�
             FrameLayout fL1 = new FrameLayout
             {
-                Height = Application.GetRealHeight(202-50),
+                Height = Application.GetRealHeight(202 - 50),
                 Width = Application.GetRealWidth(375),
             };
             middViewLayout.AddChidren(fL1);
@@ -105,7 +106,7 @@
                 Height = Application.GetRealHeight(352),
                 Width = Application.GetRealWidth(375),
             };
-            //middViewLayout.AddChidren(fL3);
+            middViewLayout.AddChidren(fL3);
 
             View.MusicSourceView selectedSourceView = new View.MusicSourceView();
             selectedSourceView.fLayout.Height = Application.GetRealHeight(44);
@@ -114,7 +115,7 @@
             selectedSourceView.textBtn.TextSize = TextSize.Text16;
             selectedSourceView.inputTextBtn.Visible = false;
             selectedSourceView.nextLevelBtn.Visible = false;
-            //selectedSourceView.FrameLayoutView(fL3, false);
+            selectedSourceView.FrameLayoutView(fL3, false);
 
             View.MusicSourceView musicSourceView = new View.MusicSourceView();
             musicSourceView.fLayout.Y = selectedSourceView.fLayout.Bottom;
@@ -122,10 +123,16 @@
             musicSourceView.textBtn.TextID = StringId.localMusic;
             //musicSourceView.FrameLayoutView(fL3);
 
-       
+            View.MusicSourceView usbSourceView = new View.MusicSourceView();
+            //usbSourceView.fLayout.Y = selectedSourceView.fLayout.Bottom;
+            usbSourceView.iconBtn.UnSelectedImagePath = "MusicIcon/usb.png";
+            usbSourceView.textBtn.TextID = StringId.usb;
+            usbSourceView.FrameLayoutView(fL3);
+
+
 
             View.MusicSourceView bluetoothSourceView = new View.MusicSourceView();
-            bluetoothSourceView.fLayout.Y = musicSourceView.fLayout.Bottom;
+            bluetoothSourceView.fLayout.Y = usbSourceView.fLayout.Bottom;
             bluetoothSourceView.iconBtn.UnSelectedImagePath = "MusicIcon/bluetooth.png";
             bluetoothSourceView.textBtn.TextID = StringId.bluetooth;
             //bluetoothSourceView.FrameLayoutView(fL3);
@@ -142,24 +149,62 @@
             #endregion
 
             #region  鎵�鏈夌偣鍑讳簨浠�
-            ///浜嬩欢
+            ///鏈湴闊充箰浜嬩欢
             musicSourceView.clickBtn.MouseUpEventHandler += (sender, e) =>
             {
-                A31MusicFileList a31MusicFileList = new A31MusicFileList();
-                MainPage.BasePageView.AddChidren(a31MusicFileList);
-                a31MusicFileList.Show();
+                //A31UsbMusicList a31UsbMusicList = new A31UsbMusicList(); 
+                //MainPage.BasePageView.AddChidren(a31UsbMusicList);
+                //a31UsbMusicList.Show();
+                //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                //Loading loading = new Loading();
+                //a31UsbMusicList.AddChidren(loading);
+                //loading.Start();
+                //System.Threading.Tasks.Task.Run(() =>
+                //{
+                //    try
+                //    {
+                //        if (A31MusicModel.Current.UsbMusicLists.Count == 0)
+                //        {
+                //            SendMethod.Current.GetCurrentPalyList(A31MusicModel.Current.functionMusic);
+
+                //        }
+                //    }
+                //    catch
+                //    {
+                //    }
+                //    finally
+                //    {
+                //        Application.RunOnMainThread(() =>
+                //        {
+                //            loading.Hide();
+                //            //a31UsbMusicList.FileView();
+                //        });
+                //    }
+                //});
+            };
+
+            ///usb浜嬩欢
+            usbSourceView.clickBtn.MouseUpEventHandler += (sender, e) =>
+            {
+
+                A31FlieList a31FlieList = new A31FlieList(KeyProperty.sdcard, usbSourceView.textBtn.Text);
+                MainPage.BasePageView.AddChidren(a31FlieList);
+                a31FlieList.Show();
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                 Loading loading = new Loading();
-                a31MusicFileList.AddChidren(loading);
+                a31FlieList.AddChidren(loading);
                 loading.Start();
+                var listNameList = CommonMethod.Current.GetListNameListMemory(KeyProperty.sdcard);
                 System.Threading.Tasks.Task.Run(() =>
                 {
                     try
                     {
-                        if (A31MusicModel.Current.palyLists.Count == 0)
+
+                        if (listNameList.Count == 0)
                         {
-                           SendMethod.Current.GetPalyList(A31MusicModel.Current.functionMusic);
-                           
+                            var Group = SendMethod.Current.GetSingleSourceListNameList(A31MusicModel.Current.functionMusic, KeyProperty.sdcard);
+                            CommonMethod.Current.AddSourceGroupListMemory(Group);//淇濆瓨缂撳瓨
+                            listNameList.AddRange(Group.groupList);//鏇存柊鍒楄〃鍊�
                         }
                     }
                     catch
@@ -170,10 +215,11 @@
                         Application.RunOnMainThread(() =>
                         {
                             loading.Hide();
-                            a31MusicFileList.FileView();
+                            a31FlieList.FileListView(listNameList);
                         });
                     }
                 });
+
             };
 
 
@@ -189,7 +235,7 @@
                     {
                         try
                         {
-                            SendMethod.Current.EditDeviceName(A31MusicModel.Current.functionMusic.deviceId,playerName);
+                            SendMethod.Current.EditDeviceName(A31MusicModel.Current.functionMusic.deviceId, playerName);
                         }
                         catch { }
 
@@ -198,7 +244,7 @@
                 });
 
             };
-           
+
             ///鍖哄煙淇敼鐨勪簨浠�
             areaText.clickBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -235,15 +281,13 @@
                 //a31MyList.Show();
                 //a31MyList.UpdateSelectedFile();
                 //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                
+
                 System.Threading.Tasks.Task.Run(() =>
                 {
                     try
                     {
 
-                        //HDL_ON.DriverLayer.Control.Ins.GetMusicDirectory(device);
-                        var palyListName = Music.SendMethod.Current.GetListName(A31MusicModel.Current.functionMusic);
-                        var palyList = Music.SendMethod.Current.GetListMusic(A31MusicModel.Current.functionMusic, "hdl_special");
+                        var palyList = Music.SendMethod.Current.GetSingleSongList(A31MusicModel.Current.functionMusic, "hdl_special", "");
                         List<string> musicNameList = new List<string>();
                         for (int i = 0; i < palyList.songs.Count; i++)
                         {
@@ -255,8 +299,8 @@
                             UI2.Intelligence.Automation.PublicInterface publicInterface = new UI2.Intelligence.Automation.PublicInterface();
                             publicInterface.FrameOrVv(this, musicNameList, new List<string> { "123" }, palyList.group, (index) =>
                             {
-                               
-                                
+
+
                             }, false);
 
                         });
@@ -265,9 +309,9 @@
 
                 });
             };
-          
-     
-          
+
+
+
 
             ///钃濈墮浜嬩欢
             bluetoothSourceView.clickBtn.MouseUpEventHandler += (sender, e) =>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
index a74585d..46a2a47 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
@@ -43,7 +43,7 @@
         {
 
             ///1绉掑畾鏃舵洿鏂扮姸鎬�
-            timerUpdateStatus();
+            TimerUpdateStatus();
             #region   ---鐣岄潰甯冨眬---
             this.BackgroundColor = MusicColor.ViewColor;
             topView = new TopView();
@@ -161,7 +161,7 @@
                         return name == musicInfo.name;
                     }))
                     {
-                        A31MusicModel.Current.LoveMusicInfoList.Add(new Songs { name = name, time = songTime });
+                        A31MusicModel.Current.LoveMusicInfoList.Add(new SongInfo { name = name, time = songTime });
                     }
                 }
                 else
@@ -185,14 +185,14 @@
                 ///涓嬫媺鍒锋柊
                 myListView.verticalScrolViewLayout.BeginHeaderRefreshingAction += () =>
                 {
-                    System.Threading.Tasks.Task.Run(() =>
+                    System.Threading.Tasks.Task.Run((Action)(() =>
                     {
                         try
                         {
-                            A31MusicModel.Current.palyLists.Clear();
-                            if (A31MusicModel.Current.palyLists.Count == 0)
+                            A31MusicModel.Current.CurrentPlayMusicInfoList.Clear();
+                            if (A31MusicModel.Current.CurrentPlayMusicInfoList.Count == 0)
                             {
-                                SendMethod.Current.GetPalyList(A31MusicModel.Current.functionMusic);
+                                SendMethod.Current.GetCurrentPalyList(A31MusicModel.Current.functionMusic);
 
                             }
                         }
@@ -206,11 +206,13 @@
                                 myListView.verticalScrolViewLayout.EndHeaderRefreshing();
                                 myListView.verticalScrolViewLayout.RemoveAll();
                                 var listName = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.playlist_name);
+                                var source = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.source);
                                 var musicList = A31MusicModel.Current.GetSongList(listName);
-                                A31SongPlay.SongListView(myListView.verticalScrolViewLayout, musicList, listName, myListView.popFra);
+
+                                A31SongPlay.SongListView(myListView.verticalScrolViewLayout, musicList, listName, source, myListView.popFra);
                             });
                         }
-                    });
+                    }));
                     //缁撴潫鍒锋柊
 
                 };
@@ -329,7 +331,7 @@
         /// <summary>
         /// 瀹氭椂鏇存柊鐘舵��
         /// </summary>       
-        void timerUpdateStatus()
+        void TimerUpdateStatus()
         {
             timerThread = new System.Threading.Thread((obj) =>
             {
@@ -600,21 +602,21 @@
         void PlayListView(FrameLayout frameLayout, VerticalRefreshLayout verticalScrolViewLayout)
         {
             verticalScrolViewLayout.RemoveAll();
-            //鑾峰彇鎾斁鍣ㄥ悕绉�
             var listName = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.playlist_name);
+            var source = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.source);
             //鑾峰彇缂撳瓨姝屾洸鍒楄〃
             var musicList = A31MusicModel.Current.GetSongList(listName);
             if (musicList.Count == 0)
             {
-                System.Threading.Tasks.Task.Run(() =>
+                System.Threading.Tasks.Task.Run((Action)(() =>
                 {
                     try
                     {
-                        A31MusicModel.Current.palyLists.Clear();
-                        if (A31MusicModel.Current.palyLists.Count == 0)
+                        A31MusicModel.Current.CurrentPlayMusicInfoList.Clear();
+                        if (A31MusicModel.Current.CurrentPlayMusicInfoList.Count == 0)
                         {
                             //鑾峰彇姝屾洸鍒楄〃
-                            SendMethod.Current.GetPalyList(A31MusicModel.Current.functionMusic);
+                            SendMethod.Current.GetCurrentPalyList(A31MusicModel.Current.functionMusic);
 
                         }
                     }
@@ -626,14 +628,14 @@
                         Application.RunOnMainThread(() =>
                         {
                             musicList = A31MusicModel.Current.GetSongList(listName);
-                            A31SongPlay.SongListView(verticalScrolViewLayout, musicList, listName, frameLayout);
+                            A31SongPlay.SongListView(verticalScrolViewLayout, musicList, listName, source, frameLayout);
                         });
                     }
-                });
+                }));
             }
             else
             {
-                A31SongPlay.SongListView(verticalScrolViewLayout, musicList, listName, frameLayout);
+                A31SongPlay.SongListView(verticalScrolViewLayout, musicList, listName, source, frameLayout);
             }
         }
         /// <summary>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs
index f036a0b..139f635 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs
@@ -2,6 +2,7 @@
 using Shared;
 using HDL_ON.UI.Music;
 using System.Collections.Generic;
+using HDL_ON.UI.UI2.FuntionControlView.Music;
 
 namespace HDL_ON.UI.Music
 {
@@ -13,13 +14,14 @@
             Tag = "Music";
         }
 
-        public void Show(List<Songs> musicList,string listName)
+
+        public void Show(SongList songLists)
         {
 
             this.BackgroundColor = MusicColor.ViewColor;
             var topView = new TopView();
             this.AddChidren(topView.TopFLayoutView());
-            topView.topNameBtn.TextID = StringId.localMusic;
+            topView.topNameBtn.Text=songLists.group;
             topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
             {
                 this.RemoveFromParent();
@@ -33,10 +35,33 @@
             this.AddChidren(vv);
             vv.BeginHeaderRefreshingAction += () =>
             {
-                vv.EndHeaderRefreshing();
+                System.Threading.Tasks.Task.Run(() =>
+                {
+                    try
+                    {
+                        //鑾峰彇姝屾洸鍒楄〃
+                        var songList = SendMethod.Current.GetSingleSongList(A31MusicModel.Current.functionMusic, songLists.group, songLists.source);
+                        CommonMethod.Current.AddSongListMemory(songList, songLists.source);//淇濆瓨缂撳瓨
+                    }
+                    catch
+                    {
+                    }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            vv.EndHeaderRefreshing();
+                            //浠庣紦瀛樻嬁鍒楄〃
+                            var songListMemory = CommonMethod.Current.GetSongListMemory(songLists.group, songLists.source); 
+                            ///鍔犺浇闊充箰鍒楄〃
+                            SongListView(vv, songListMemory.songs, songListMemory.group, songLists.source);
+                            
+                        });
+                    }
+                });
             };
             ///鍔犺浇闊充箰鍒楄〃
-            SongListView(vv, musicList, listName);
+            SongListView(vv, songLists.songs, songLists.group,songLists.source);
 
 
         }
@@ -46,8 +71,12 @@
         /// <param name="vv">鐖舵帶浠�</param>
         /// <param name="musicList">闊充箰鍒楄〃</param>
         /// <param name="listName">鍒楄〃鍚�</param>
-        public static void SongListView(VerticalRefreshLayout vv,List<Songs> musicList,string listName, FrameLayout frame = null) {
-
+        /// <param name="source">闊充箰婧�</param>
+        public static void SongListView(VerticalRefreshLayout vv, List<SongInfo> musicList, string listName,string source, FrameLayout frame = null)
+        {
+            if (vv!=null) {
+                vv.RemoveAll();
+            }
             for (int i = 0; i < musicList.Count; i++)
             {
                 var songs = musicList[i];
@@ -66,7 +95,7 @@
                         System.Threading.Thread.Sleep(50);
                         Application.RunOnMainThread(() =>
                         {
-                            //绉婚櫎鐣岄潰
+                            //淇敼缂撳瓨灞炴�х姸鎬佸��
                             A31MusicModel.Current.functionMusic.SetAttrState("song_name", songView.songBtn.Text);
                             A31MusicModel.Current.functionMusic.SetAttrState("playlist_name", listName);
                             //绉婚櫎鐣岄潰
@@ -78,6 +107,14 @@
                             Dictionary<string, string> dic = new Dictionary<string, string>();
                             dic.Add("song_name", songView.songBtn.Text);
                             dic.Add("playlist_name", listName);
+                            if (!string.IsNullOrEmpty(songs.url))
+                            {
+                                dic.Add("url", songs.url);
+                            }
+                            if (!string.IsNullOrEmpty(source))
+                            {
+                                dic.Add("source", source);
+                            }
                             SendMethod.Current.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
                         });
                     });
@@ -144,6 +181,6 @@
             });
             updateSelectedMusicThread.Start();
         }
-      
+
     }
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31UsbMusicList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31UsbMusicList.cs
new file mode 100644
index 0000000..6c36515
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31UsbMusicList.cs
@@ -0,0 +1,43 @@
+锘縰sing System;
+using HDL_ON.UI.Music;
+using Shared;
+
+namespace HDL_ON.UI.UI2.FuntionControlView.Music
+{
+    public class A31UsbMusicList:FrameLayout
+    {
+        public A31UsbMusicList()
+        {
+            Tag = "Music";
+        }
+        VerticalRefreshLayout middViewLayout;
+        /// <summary>
+        /// 鍏堝姞杞界晫闈㈠嚭鏉�
+        /// </summary>
+        public void Show( )
+        {
+            #region   鐣岄潰甯冨眬------
+
+            this.BackgroundColor = MusicColor.ViewColor;
+            var topView = new TopView();
+            this.AddChidren(topView.TopFLayoutView());
+            topView.topNameBtn.Text ="USB";
+            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                this.RemoveFromParent();
+            };
+            middViewLayout = new VerticalRefreshLayout
+            {
+                BackgroundColor = MusicColor.WhiteColor,
+                Y = topView.fLayout.Bottom,
+                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
+            };
+            this.AddChidren(middViewLayout);
+            middViewLayout.BeginHeaderRefreshingAction += () =>
+            {
+                middViewLayout.EndHeaderRefreshing();
+            };
+            #endregion
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/CommonMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/CommonMethod.cs
new file mode 100644
index 0000000..38805e8
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/CommonMethod.cs
@@ -0,0 +1,133 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.UI.Music;
+
+namespace HDL_ON.UI.UI2.FuntionControlView.Music
+{
+    public class CommonMethod
+    {
+        public CommonMethod()
+        {
+        }
+
+        private static CommonMethod commonMethod = null;
+
+        public static CommonMethod Current
+        {
+            get
+            {
+                if (commonMethod == null)
+                {
+                    commonMethod = new CommonMethod();
+                }
+                return commonMethod;
+            }
+
+        }
+        /// <summary>
+        /// 鑾峰彇銆愰煶涔愬垪琛ㄣ��
+        /// </summary>
+        /// <param name="listName">鍒楄〃鍚�</param>
+        /// <param name="source">闊充箰婧�</param>
+        /// <returns></returns>
+        public SongList GetSongListMemory(string listName, string source) 
+        {
+            for (int i = 0; i < A31MusicModel.Current.AllMusicLists.Count; i++)
+            {
+                var songList = A31MusicModel.Current.AllMusicLists[i];
+                if (songList.source == source && songList.group == listName)
+                {
+                    return songList;
+                }
+
+            }
+            return new SongList() {group=listName,source=source};
+        }
+
+        /// <summary>
+        /// 娣诲姞銆愰煶涔愬垪琛ㄣ��(瀛樺湪绉婚櫎鍐嶆坊鍔�)
+        /// </summary>
+        /// <param name="newSongList">闊充箰鍒楄〃</param>
+        ///  <param name="source">闊充箰婧�</param>
+        public void AddSongListMemory(SongList newSongList, string source) 
+        {
+            
+            newSongList.source = source;//鏇存柊闊充箰婧�
+            int existsInt = -1;
+            for (int i = 0; i < A31MusicModel.Current.AllMusicLists.Count; i++)
+            {
+                var songList = A31MusicModel.Current.AllMusicLists[i];
+                if (songList.source == newSongList.source && songList.group == newSongList.group)
+                {
+                    existsInt = i;
+                    break;
+                }
+
+
+            }
+            if (existsInt > -1)
+            {
+                A31MusicModel.Current.AllMusicLists.RemoveAt(existsInt);
+                A31MusicModel.Current.AllMusicLists.Insert(existsInt, newSongList);
+
+            }
+            else
+            {
+                A31MusicModel.Current.AllMusicLists.Add(newSongList);
+
+            }
+
+        }
+     
+        /// <summary>
+        /// 鑾峰彇銆愰煶涔愭簮銆戝垪琛ㄥ悕鍒楄〃
+        /// </summary>
+        /// <param name="source">闊充箰婧�</param>
+        /// <returns></returns>
+        public List<ListName> GetListNameListMemory(string source) 
+        {
+
+            for (int i = 0; i < A31MusicModel.Current.AllSourceGroupList.Count; i++)
+            {
+                var group = A31MusicModel.Current.AllSourceGroupList[i];
+                if (group.source == source)
+                {
+                    return group.groupList;
+                }
+
+            }
+            return new List<ListName>();
+        }
+        /// <summary>
+        /// 娣诲姞銆愰煶涔愭簮銆�(瀛樺湪绉婚櫎鍐嶆坊鍔�)
+        /// </summary>
+        /// <param name="groupLists"></param>
+        public void AddSourceGroupListMemory(GroupList groupLists)
+        {
+            int existsInt = -1;
+            for (int i = 0; i < A31MusicModel.Current.AllSourceGroupList.Count; i++)
+            {
+                var group = A31MusicModel.Current.AllSourceGroupList[i];
+                if (group.sid == groupLists.sid && group.source == groupLists.source)
+                {
+                    existsInt = i;
+                    break;
+                }
+
+
+            }
+            if (existsInt > -1)
+            {
+                A31MusicModel.Current.AllSourceGroupList.RemoveAt(existsInt);
+                A31MusicModel.Current.AllSourceGroupList.Insert(existsInt, groupLists);
+
+            }
+            else
+            {
+                A31MusicModel.Current.AllSourceGroupList.Add(groupLists);
+
+            }
+
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs
index 22bd45a..7462603 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs
@@ -57,6 +57,27 @@
         /// 褰撳墠姝屾洸鎾斁鏃堕棿<0-9999(s)>
         /// </summary>
         public const string playing_time = "playing_time";
+        /// <summary>
+        /// 銆怳SB銆戦煶涔愭簮
+        /// </summary>
+        public const string sdcard = "sdcard";
+        /// <summary>
+        /// 銆愰煶棰戣緭鍏ャ�戦煶涔愭簮
+        /// </summary>
+        public const string audio_in = "audio_in";
+        /// <summary>
+        /// 銆恌tp銆戦煶涔愭簮
+        /// </summary>
+        public const string ftp = "ftp";
+        /// <summary>
+        /// 銆愭敹闊虫満銆戦煶涔愭簮
+        /// </summary>
+        public const string radio = "radio";
+        /// <summary>
+        /// 銆愯摑鐗欍�戦煶涔愭簮
+        /// </summary>
+        public const string bluetooth = "bluetooth";
+
 
 
         #endregion
@@ -138,4 +159,15 @@
 
 
     }
+
+    public enum Source
+    {
+
+        sdcard,//usb
+        audio_in,//闊抽杈撳叆
+        ftp,
+        radio,//鏀堕煶鏈�
+        bluetooth//钃濈墮
+
+    }
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
index fc0f09e..2c1ce82 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
@@ -86,7 +86,7 @@
                 d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                 d.Add("deviceIds", functionIds);
                 var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_RefreshDeviceStatus, "鍒锋柊璁惧鐘舵��");
-                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
+                if (!this.dataChecking(responsePackNew))
                 {
                     return;
                 }
@@ -110,11 +110,11 @@
         }
 
         /// <summary>
-        /// 鑾峰彇闊充箰鍒楄〃
+        /// 鑾峰彇褰撳墠鎾斁闊充箰鍒楄〃
         /// </summary>
-        /// <param name="music"></param>
+        /// <param name="music">闊充箰鎾斁鍣�</param>
         /// <returns></returns>
-        public void GetPalyList(Function music)
+        public void GetCurrentPalyList(Function music)
         {
             try
             {
@@ -122,21 +122,21 @@
                 d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                 d.Add("deviceIds", new List<string> { music.deviceId });
                 var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_PlayerList, "鑾峰彇闊充箰鍒楄〃");
-                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
+                if (!this.dataChecking(responsePackNew))
                 {
                     return;
                 }
                 //鏁版嵁杩斿簭鍒楀寲涓篎unction瀵硅薄
                 var str = Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew.Data);
-                var palyLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PalyListInfo>>(str);
+                var palyLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PalyerSongListInfo>>(str);
                 if (palyLists == null)
                 {
-                    palyLists =new List<PalyListInfo>();
+                    palyLists = new List<PalyerSongListInfo>();
                 }
                 if (palyLists.Count > 0)
                 {
                     ///榛樿鎷跨涓�涓垪琛�
-                    A31MusicModel.Current.palyLists = palyLists[0].playlist;
+                    A31MusicModel.Current.CurrentPlayMusicInfoList = palyLists[0].playlist;
                 }
             }
             catch
@@ -145,20 +145,27 @@
 
         }
         /// <summary>
-        /// 鑾峰彇鍒楄〃鍚嶅垪琛�
+        /// 鑾峰彇銆愬涓煶涔愭簮銆戝垪琛ㄥ悕鍒楄〃
         /// </summary>
         /// <param name="music"></param>
+        /// <param name="source">闊充箰婧愪负null,鏀寔澶氫釜婧愯幏鍙�</param>
         /// <returns></returns>
-        public List<GroupList> GetListName(Function music)
+        public List<GroupList> GetMultipleSourceListName(Function music, string source)
         {
             try
             {
                 Dictionary<string, object> d = new Dictionary<string, object>();
                 d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                 d.Add("gatewayId", DB_ResidenceData.Instance.HomeGateway.gatewayId);
-                d.Add("deviceIds", new List<string> { music.deviceId });
+                Dictionary<string, object> deviceIds = new Dictionary<string, object>();
+                deviceIds.Add("deviceId", music.deviceId);
+                if (!string.IsNullOrEmpty(source))
+                {
+                    deviceIds.Add("source", source);
+                }
+                d.Add("deviceInfos", new List<Dictionary<string, object>> { deviceIds });
                 var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_GroupList, "鑾峰彇鍒楄〃鍚嶅垪琛�");
-                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
+                if (!this.dataChecking(responsePackNew))
                 {
                     return new List<GroupList>();
                 }
@@ -176,13 +183,35 @@
                 return new List<GroupList>();
             }
         }
+
         /// <summary>
-        /// 鑾峰彇鍒楄〃闊充箰
+        /// 鑾峰彇銆愬崟涓煶涔愭簮銆戝垪琛ㄥ悕鍒楄〃(榛樿鍙栧畾鍒楄〃涓竴涓�)
+        /// </summary>
+        /// <param name="music"></param>
+        /// <param name="source">闊充箰婧�</param>
+        /// <returns></returns>
+        public GroupList GetSingleSourceListNameList(Function music, string source)
+        {
+            List<GroupList> groupList = this.GetMultipleSourceListName(music, source);
+            if (groupList.Count == 0)
+            {
+                return new GroupList();
+            }
+            ////榛樿鍙栧畾鍒楄〃涓竴涓�
+            return groupList.Count > 0 ? groupList[0] : new GroupList();
+        }
+
+      
+
+
+        /// <summary>
+        /// 閫氳繃鍒楄〃鍚嶈幏鍙栥�愬涓瓕鏇插垪琛ㄣ��
         /// </summary>
         /// <param name="music"></param>
         /// <param name="listName">鍒楄〃鍚�</param>
+        /// <param name="source">闊充箰婧�</param>
         /// <returns></returns>
-        public PalyList GetListMusic(Function music, string listName)
+        public List<PalyerSongListInfo> GetMultipleSongListM(Function music, string listName, string source)
         {
             try
             {
@@ -193,34 +222,65 @@
                 d.Add("gatewayId", DB_ResidenceData.Instance.HomeGateway.gatewayId);
                 d2.Add("group", listName);
                 d1.Add("sid", music.sid);
+                if (!string.IsNullOrEmpty(source))
+                {
+                    d1.Add("source", source);
+                }
                 d1.Add("groupList", new List<Dictionary<string, object>> { d2 });
                 d.Add("sidGroups", new List<Dictionary<string, object>> { d1 });
 
-                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_GroupPlayerList, "鑾峰彇鍒楄〃闊充箰");
-                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
+                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_GroupPlayerList, "閫氳繃鍒楄〃鍚嶈幏鍙栨瓕鏇插垪琛�");
+                if (!this.dataChecking(responsePackNew))
                 {
-                    return new PalyList();
+                    return new List<PalyerSongListInfo>();
                 }
                 //鏁版嵁杩斿簭鍒楀寲涓篎unction瀵硅薄
                 var str = Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew.Data);
-                var palyLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PalyListInfo>>(str);
+                var palyLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PalyerSongListInfo>>(str);
                 if (palyLists == null)
                 {
-                    palyLists = new List<PalyListInfo>();
+                    return new List<PalyerSongListInfo>();
                 }
 
-                if (palyLists.Count == 0)
-                {
-                    return new PalyList();
-                }
-                //榛樿绗竴涓垪琛ㄩ噷闈㈢涓�涓煶涔愬垪琛�
-                return palyLists[0].playlist.Count > 0 ? palyLists[0].playlist[0] : new PalyList();
+                return palyLists;
 
             }
             catch
             {
-                return new PalyList();
+                return new List<PalyerSongListInfo>();
             }
+        }
+        /// <summary>
+        /// 閫氳繃鍒楄〃鍚嶈幏鍙栥�愬崟涓瓕鏇插垪琛ㄣ��(榛樿鍙栧畾鍒楄〃涓竴涓瓕鏇插垪琛�)
+        /// </summary>
+        /// <param name="music"></param>
+        /// <param name="listName">鍒楄〃鍚�</param>
+        /// <param name="source">闊充箰婧�</param>
+        /// <returns></returns>
+        public SongList GetSingleSongList(Function music, string listName, string source)
+        {
+            List<PalyerSongListInfo> listInfos = this.GetMultipleSongListM(music, listName, source);
+            if (listInfos.Count == 0)
+            {
+                return new SongList();
+            }
+            ////榛樿绗竴涓垪琛ㄩ噷闈㈢涓�涓煶涔愬垪琛�
+            SongList songList = listInfos[0].playlist.Count > 0 ? listInfos[0].playlist[0] : new SongList();
+            return songList;
+
+        }
+        /// <summary>
+        /// 妫�楠屾暟鎹洖澶嶆垚鍔熸垨鑰呭け璐�
+        /// </summary>
+        /// <param name="responsePackNew">鍥炲鏁版嵁瀵硅薄</param>
+        /// <returns></returns>
+        private bool dataChecking(ResponsePackNew responsePackNew)
+        {
+            if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
+            {
+                return false;
+            }
+            return true;
         }
 
         /// <summary>
@@ -232,7 +292,7 @@
         /// <returns></returns>
         public ResponsePackNew RequestServerhomeId(object o, string api_Url, string tag, int mTimeout = 5)
         {
-            JObject jobject = JObject.Parse(Newtonsoft.Json.JsonConvert.SerializeObject(o)); 
+            JObject jobject = JObject.Parse(Newtonsoft.Json.JsonConvert.SerializeObject(o));
             return UI2.Intelligence.Automation.Send.Current.RequestServerhomeId(jobject, api_Url, tag, mTimeout);
         }
     }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs
index 0da47b3..9af645d 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs
@@ -9,7 +9,7 @@
         ///寮圭獥鏂囦欢澶瑰垪琛ㄧ晫闈�
         /// </summary>
         /// <param name="musicInfo"></param>
-        public void FieListView(Songs musicInfo)
+        public void FieListView(SongInfo musicInfo)
         {
             #region
             //涓绘帶浠�
@@ -114,7 +114,7 @@
             FileView(dialog, verticalScrolViewLayout, musicInfo);
 
         }
-        void FileView(Dialog dialog, VerticalScrolViewLayout verticalScrolViewLayout, Songs musicInfo)
+        void FileView(Dialog dialog, VerticalScrolViewLayout verticalScrolViewLayout, SongInfo musicInfo)
         {
             verticalScrolViewLayout.RemoveAll();
             for (int i = 0; i < A31MusicModel.Current.FileLists.Count; i++)
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs
index 26b9e2f..13649cf 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs
@@ -94,7 +94,7 @@
         /// 甯冨眬姝屾洸淇℃伅鐨刅iew
         /// </summary>
         /// <returns></returns>
-        public void SongFrameLayout(VerticalRefreshLayout refreshLayout, Songs songs)
+        public void SongFrameLayout(VerticalRefreshLayout refreshLayout, SongInfo songs)
         {
             musicViewFl.AddChidren(playIconBtn);
             musicViewFl.AddChidren(songBtn);

--
Gitblit v1.8.0