diff --git a/BreadPlayer.Core/ViewModels/LibraryViewModel.cs b/BreadPlayer.Core/ViewModels/LibraryViewModel.cs index 4bc400a..7cf7a3c 100644 --- a/BreadPlayer.Core/ViewModels/LibraryViewModel.cs +++ b/BreadPlayer.Core/ViewModels/LibraryViewModel.cs @@ -37,6 +37,7 @@ You should have received a copy of the GNU General Public License using BreadPlayer.Common; using BreadPlayer.Messengers; using Windows.ApplicationModel.DataTransfer; +using Windows.Storage.Search; namespace BreadPlayer.ViewModels { @@ -424,7 +425,7 @@ async void Init(object para) #endregion #region Methods - + async Task RefreshSourceAsync() { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => @@ -449,7 +450,7 @@ void ChangeView(string header, bool group, object src) grouped = group; source = src; libgrouped = ViewSource.IsSourceGrouped; - if((src as ThreadSafeObservableCollection)?.Any() == true && Player.CurrentlyPlayingFile != null) + if((src as ThreadSafeObservableCollection)?.Any() == true && Player.CurrentlyPlayingFile != null && (src as ThreadSafeObservableCollection).FirstOrDefault(t => t.Path == Player.CurrentlyPlayingFile?.Path) != null) (src as ThreadSafeObservableCollection).FirstOrDefault(t => t.Path == Player.CurrentlyPlayingFile?.Path).State = PlayerState.Playing; } async Task LoadCollectionAsync(Func sortFunc, bool group) diff --git a/BreadPlayer.Core/ViewModels/SettingsViewModel.cs b/BreadPlayer.Core/ViewModels/SettingsViewModel.cs index 8b4d3ba..94264a2 100644 --- a/BreadPlayer.Core/ViewModels/SettingsViewModel.cs +++ b/BreadPlayer.Core/ViewModels/SettingsViewModel.cs @@ -105,11 +105,13 @@ public SettingsViewModel() } public static GroupedObservableCollection TracksCollection { get; set; } - private void HandleMessage(Message message) + private async void HandleMessage(Message message) { if(message.Payload is List) { TracksCollection = (message.Payload as List)[0] as GroupedObservableCollection; + if (TracksCollection.Count <= 0) + await AutoLoadMusicLibrary().ConfigureAwait(false); if (TracksCollection != null) { message.HandledStatus = MessageHandledStatus.HandledContinue; @@ -190,6 +192,15 @@ public ThreadSafeObservableCollection LibraryFoldersCollection return _LibraryFoldersCollection; } set { Set(ref _LibraryFoldersCollection, value); } } + async Task AutoLoadMusicLibrary() + { + var options = Common.DirectoryWalker.GetQueryOptions(); + //this is the query result which we recieve after querying in the folder + StorageFileQueryResult queryResult = KnownFolders.MusicLibrary.CreateFileQueryWithOptions(options); + //the event for files changed + queryResult.ContentsChanged += QueryResult_ContentsChanged; + await AddFolderToLibraryAsync(queryResult); + } /// /// Loads songs from a specified folder into the library. ///