diff --git a/Opus/Code/Api/Services/Downloader.cs b/Opus/Code/Api/Services/Downloader.cs index 9a612ae..4498eb1 100644 --- a/Opus/Code/Api/Services/Downloader.cs +++ b/Opus/Code/Api/Services/Downloader.cs @@ -119,13 +119,23 @@ namespace Opus.Api.Services #region Downloading of the queue public async void StartDownload() { + System.Console.WriteLine("&Queue count: " + queue.Count); + foreach (var item in queue) + { + System.Console.WriteLine("&Item: " + item.Name + " State: " + item.State.ToString()); + } + + while (downloadCount < maxDownload && queue.Count(x => x.State == DownloadState.None) > 0) { + System.Console.WriteLine("&Initiating the download of a song"); #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed Task.Run(() => { DownloadAudio(queue.FindIndex(x => x.State == DownloadState.None), downloadPath); }, cancellation.Token); #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed await Task.Delay(10); } + + System.Console.WriteLine("&Start download finished"); } private async void DownloadAudio(int position, string path) @@ -133,6 +143,8 @@ namespace Opus.Api.Services if (position < 0 || position > queue.Count || queue[position].State != DownloadState.None) return; + System.Console.WriteLine("&Downloading audio of: " + queue[position].Name); + queue[position].State = DownloadState.Initialization; UpdateList(position); const string permission = Manifest.Permission.WriteExternalStorage; @@ -270,7 +282,7 @@ namespace Opus.Api.Services meta.Tag.Album = title + " - " + artist; meta.Tag.Comment = queue[position].YoutubeID; IPicture[] pictures = new IPicture[1]; - Bitmap bitmap = Picasso.With(Application.Context).Load(await YoutubeManager.GetBestThumb(thumbnails)).Transform(new RemoveBlackBorder(true)).Get(); + Bitmap bitmap = Picasso.With(Application.Context).Load(await YoutubeManager.GetBestThumb(thumbnails)).Transform(new RemoveBlackBorder(true)).MemoryPolicy(MemoryPolicy.NoCache).Get(); byte[] data; using (var MemoryStream = new MemoryStream()) { diff --git a/Opus/Code/Api/YoutubeManager.cs b/Opus/Code/Api/YoutubeManager.cs index 471958e..0a9acf8 100644 --- a/Opus/Code/Api/YoutubeManager.cs +++ b/Opus/Code/Api/YoutubeManager.cs @@ -92,10 +92,11 @@ namespace Opus.Api /// public static void Download(Song[] items) { - string[] names = items.ToList().Where(x => x.LocalID == -1).ToList().ConvertAll(x => x.Title).ToArray(); - string[] videoIDs = items.ToList().Where(x => x.LocalID == -1).ToList().ConvertAll(x => x.YoutubeID).ToArray(); + string[] names = items.ToList().Where(x => x.LocalID == -1 || x.LocalID == 0).ToList().ConvertAll(x => x.Title).ToArray(); + string[] videoIDs = items.ToList().Where(x => x.LocalID == -1 || x.LocalID == 0).ToList().ConvertAll(x => x.YoutubeID).ToArray(); - DownloadFiles(names, videoIDs); + if(names.Count() > 0) + DownloadFiles(names, videoIDs); } /// @@ -112,7 +113,8 @@ namespace Opus.Api files.Add(new DownloadFile(names[i], videoIDs[i], null)); } - await DownloadFiles(files); + if(files.Count > 0) + await DownloadFiles(files); } public static async Task DownloadFiles(IEnumerable files) @@ -123,10 +125,14 @@ namespace Opus.Api if (!await MainActivity.instance.GetWritePermission()) return; + Toast.MakeText(MainActivity.instance, Resource.String.downloading, ToastLength.Short).Show(); await Downloader.Init(); + Console.WriteLine("&Trying to download " + files.Count()); + Console.WriteLine("&First item: " + files.First().Name); Downloader.queue.AddRange(files); Downloader.instance.StartDownload(); + Console.WriteLine("&Downloader started"); } /// diff --git a/Opus/Code/MainActivity.cs b/Opus/Code/MainActivity.cs index e4d576e..dc282ae 100644 --- a/Opus/Code/MainActivity.cs +++ b/Opus/Code/MainActivity.cs @@ -195,7 +195,10 @@ namespace Opus if(SearchableActivity.instance.SearchQuery != null && SearchableActivity.instance.SearchQuery != "") { if (YoutubeSearch.instances == null || SearchableActivity.instance.SearchQuery != YoutubeSearch.instances[0].querryType) //We don't want to redo the query if the user already searched for the exact same query. + { + HideFilter(); SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(SearchableActivity.instance.SearchQuery, 0)).AddToBackStack("Youtube").Commit(); + } } SearchableActivity.instance = null; } @@ -392,7 +395,7 @@ namespace Opus searchItem.CollapseActionView(); } - public void HideSearch() + public void HideFilter() { if (menu == null) return; @@ -408,7 +411,7 @@ namespace Opus item.CollapseActionView(); } - public void DisplaySearch() + public void DisplayFilter() { var item = menu.FindItem(Resource.Id.filter); item.SetVisible(true); @@ -465,7 +468,7 @@ namespace Opus return; } - HideSearch(); + HideFilter(); fragment = Home.NewInstance(); break; @@ -477,7 +480,7 @@ namespace Opus return; } - DisplaySearch(); + DisplayFilter(); fragment = Pager.NewInstance(0, 0); break; @@ -488,7 +491,7 @@ namespace Opus return; } - HideSearch(); + HideFilter(); fragment = Playlist.NewInstance(); break; } diff --git a/Opus/Code/UI/Fragments/ChannelDetails.cs b/Opus/Code/UI/Fragments/ChannelDetails.cs index 96ae6fc..b4fa444 100644 --- a/Opus/Code/UI/Fragments/ChannelDetails.cs +++ b/Opus/Code/UI/Fragments/ChannelDetails.cs @@ -38,7 +38,7 @@ namespace Opus.Fragments } MainActivity.instance.contentRefresh.Refresh += OnRefresh; - MainActivity.instance.DisplaySearch(); + MainActivity.instance.DisplayFilter(); MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(true); MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(true); @@ -81,7 +81,7 @@ namespace Opus.Fragments Activity.FindViewById(Resource.Id.playlistButtons).Visibility = ViewStates.Visible; Activity.FindViewById(Resource.Id.playlistHeader).Visibility = ViewStates.Gone; - MainActivity.instance.HideSearch(); + MainActivity.instance.HideFilter(); MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(false); MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(false); MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(false); diff --git a/Opus/Code/UI/Fragments/FolderTracks.cs b/Opus/Code/UI/Fragments/FolderTracks.cs index 200d577..c686210 100644 --- a/Opus/Code/UI/Fragments/FolderTracks.cs +++ b/Opus/Code/UI/Fragments/FolderTracks.cs @@ -38,7 +38,7 @@ namespace Opus.Fragments MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(true); MainActivity.instance.FindViewById(Resource.Id.toolbarLogo).Visibility = ViewStates.Gone; - MainActivity.instance.DisplaySearch(); + MainActivity.instance.DisplayFilter(); } public override void OnDestroy() @@ -183,7 +183,7 @@ namespace Opus.Fragments MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(false); MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(false); MainActivity.instance.FindViewById(Resource.Id.toolbarLogo).Visibility = ViewStates.Visible; - MainActivity.instance.HideSearch(); + MainActivity.instance.HideFilter(); base.OnDestroyView(); } } diff --git a/Opus/Code/UI/Fragments/PagerFragment.cs b/Opus/Code/UI/Fragments/PagerFragment.cs index 65c5391..bd31e0c 100644 --- a/Opus/Code/UI/Fragments/PagerFragment.cs +++ b/Opus/Code/UI/Fragments/PagerFragment.cs @@ -150,7 +150,7 @@ namespace Opus.Fragments Browse.instance.focused = true; FolderBrowse.instance.IsFocused = false; - MainActivity.instance.DisplaySearch(); + MainActivity.instance.DisplayFilter(); } else if (position == 1) { @@ -159,7 +159,7 @@ namespace Opus.Fragments Browse.instance.focused = false; FolderBrowse.instance.IsFocused = true; - MainActivity.instance.HideSearch(); + MainActivity.instance.HideFilter(); } } else if (YoutubeSearch.instances != null) diff --git a/Opus/Code/UI/Fragments/PlaylistTracks.cs b/Opus/Code/UI/Fragments/PlaylistTracks.cs index b372dd5..336a484 100644 --- a/Opus/Code/UI/Fragments/PlaylistTracks.cs +++ b/Opus/Code/UI/Fragments/PlaylistTracks.cs @@ -55,7 +55,7 @@ namespace Opus.Fragments MainActivity.instance.contentRefresh.Refresh += OnRefresh; MainActivity.instance.AddFilterListener(Search); - MainActivity.instance.DisplaySearch(); + MainActivity.instance.DisplayFilter(); MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(true); MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(true); @@ -145,7 +145,7 @@ namespace Opus.Fragments { Activity.FindViewById(Resource.Id.playlistHeader).Visibility = ViewStates.Gone; - MainActivity.instance.HideSearch(); + MainActivity.instance.HideFilter(); MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(false); MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(false); MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(false); diff --git a/Opus/Code/UI/Views/Player.cs b/Opus/Code/UI/Views/Player.cs index 7bb22f7..d513f6d 100644 --- a/Opus/Code/UI/Views/Player.cs +++ b/Opus/Code/UI/Views/Player.cs @@ -437,6 +437,7 @@ namespace Opus }), new BottomSheetAction(Resource.Drawable.Download, Resources.GetString(Resource.String.download), (sender, eventArg) => { + Console.WriteLine("&Trying to download " + item.Title); YoutubeManager.Download(new[]{ item }); bottomSheet.Dismiss(); }),