diff --git a/Opus/Resources/Portable Class/MusicPlayer.cs b/Opus/Resources/Portable Class/MusicPlayer.cs index 968e2b4..9c23511 100644 --- a/Opus/Resources/Portable Class/MusicPlayer.cs +++ b/Opus/Resources/Portable Class/MusicPlayer.cs @@ -539,8 +539,6 @@ namespace Opus.Resources.Portable_Class } } - Player.instance?.RefreshPlayer(); - if (!song.IsLiveStream) song.ExpireDate = mediaStreamInfo.ValidUntil; @@ -1024,6 +1022,29 @@ namespace Opus.Resources.Portable_Class SwitchQueue(CurrentID() - 1); } + public static void Repeat() + { + repeat = !repeat; + + if (UseCastPlayer) + RemotePlayer.QueueSetRepeatMode(repeat ? 1 : 0, null); + + if (repeat) + { + Queue.instance?.NotifyItemChanged(-1, "Repeat"); + Player.instance?.Repeat(true); + useAutoPlay = false; + Queue.instance?.NotifyItemChanged(queue.Count, "UseAutoplay"); + } + else + { + Queue.instance?.NotifyItemChanged(-1, "Repeat"); + Player.instance?.Repeat(false); + useAutoPlay = true; + Queue.instance?.NotifyItemChanged(queue.Count, "UseAutoplay"); + } + } + public void PlayNext() { Player.instance.playNext = true; @@ -1095,6 +1116,7 @@ namespace Opus.Resources.Portable_Class { currentID = position; Queue.instance?.RefreshCurrent(); + Player.instance?.RefreshPlayer(); } else Player.instance?.Ready(); //Remove player's loading bar since we'll not load this song diff --git a/Opus/Resources/Portable Class/Player.cs b/Opus/Resources/Portable Class/Player.cs index 69feac4..48783c3 100644 --- a/Opus/Resources/Portable Class/Player.cs +++ b/Opus/Resources/Portable Class/Player.cs @@ -57,7 +57,7 @@ namespace Opus view.FindViewById(Resource.Id.playButton).Click += Play_Click; view.FindViewById(Resource.Id.nextButton).Click += Next_Click; view.FindViewById(Resource.Id.moreButton).Click += More; - view.FindViewById(Resource.Id.repeat).Click += Repeat; + view.FindViewById(Resource.Id.repeat).Click += (sender, e) => { MusicPlayer.Repeat(); }; view.FindViewById(Resource.Id.fav).Click += Fav; } @@ -366,25 +366,12 @@ namespace Opus MainActivity.instance.StartService(intent); } - private void Repeat(object sender, EventArgs e) + public void Repeat(bool repeat) { - MusicPlayer.repeat = !MusicPlayer.repeat; - - if (MusicPlayer.UseCastPlayer) - MusicPlayer.RemotePlayer.QueueSetRepeatMode(MusicPlayer.repeat ? 1 : 0, null); - - if (MusicPlayer.repeat) - { - MainActivity.instance.FindViewById(Resource.Id.repeat).SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply); - MusicPlayer.useAutoPlay = false; - Queue.instance.NotifyItemChanged(MusicPlayer.queue.Count, "UseAutoplay"); - } + if(repeat) + MainActivity.instance.FindViewById(Resource.Id.repeat)?.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply); else - { - MainActivity.instance.FindViewById(Resource.Id.repeat).ClearColorFilter(); - MusicPlayer.useAutoPlay = true; - Queue.instance.NotifyItemChanged(MusicPlayer.queue.Count, "UseAutoplay"); - } + MainActivity.instance?.FindViewById(Resource.Id.repeat)?.ClearColorFilter(); } private void Fav(object sender, EventArgs e) diff --git a/Opus/Resources/Portable Class/Preferences.cs b/Opus/Resources/Portable Class/Preferences.cs index 4a2bccd..f6bc044 100644 --- a/Opus/Resources/Portable Class/Preferences.cs +++ b/Opus/Resources/Portable Class/Preferences.cs @@ -43,22 +43,35 @@ namespace Opus.Resources.Portable_Class Finish(); else if (DownloadFragment.instance != null) { - ISharedPreferences prefManager = PreferenceManager.GetDefaultSharedPreferences(this); - ISharedPreferencesEditor editor = prefManager.Edit(); - editor.PutString("downloadPath", DownloadFragment.instance.path); - editor.Apply(); - Preference downloadPref = PreferencesFragment.instance.PreferenceScreen.FindPreference("downloadPath"); - downloadPref.Summary = DownloadFragment.instance.path ?? Environment.GetExternalStoragePublicDirectory(Environment.DirectoryMusic).ToString(); - PreferencesFragment.instance.path = DownloadFragment.instance.path; - - DownloadFragment.instance = null; - SupportFragmentManager.PopBackStack(); + DownloadFolderBack(); } }; SupportFragmentManager.BeginTransaction().Replace(Resource.Id.PreferenceFragment, new PreferencesFragment()).Commit(); } + public override void OnBackPressed() + { + if (DownloadFragment.instance != null) + DownloadFolderBack(); + else + base.OnBackPressed(); + } + + private void DownloadFolderBack() + { + ISharedPreferences prefManager = PreferenceManager.GetDefaultSharedPreferences(this); + ISharedPreferencesEditor editor = prefManager.Edit(); + editor.PutString("downloadPath", DownloadFragment.instance.path); + editor.Apply(); + Preference downloadPref = PreferencesFragment.instance.PreferenceScreen.FindPreference("downloadPath"); + downloadPref.Summary = DownloadFragment.instance.path ?? Environment.GetExternalStoragePublicDirectory(Environment.DirectoryMusic).ToString(); + PreferencesFragment.instance.path = DownloadFragment.instance.path; + + DownloadFragment.instance = null; + SupportFragmentManager.PopBackStack(); + } + protected override void OnStop() { base.OnStop(); diff --git a/Opus/Resources/Portable Class/QueueAdapter.cs b/Opus/Resources/Portable Class/QueueAdapter.cs index 15312c4..f132369 100644 --- a/Opus/Resources/Portable Class/QueueAdapter.cs +++ b/Opus/Resources/Portable Class/QueueAdapter.cs @@ -42,29 +42,15 @@ namespace Opus.Resources.Portable_Class MainActivity.instance.StartService(intent); }; } + + if (MusicPlayer.repeat) + holder.Repeat.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply); + else + holder.Repeat.ClearColorFilter(); + if (!holder.Repeat.HasOnClickListeners) - { - holder.Repeat.Click += (sender, e) => - { - MusicPlayer.repeat = !MusicPlayer.repeat; + holder.Repeat.Click += (sender, e) => { MusicPlayer.Repeat(); }; - if (MusicPlayer.UseCastPlayer) - MusicPlayer.RemotePlayer.QueueSetRepeatMode(MusicPlayer.repeat ? 1 : 0, null); - - if (MusicPlayer.repeat) - { - holder.Repeat.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply); - MusicPlayer.useAutoPlay = false; - NotifyItemChanged(ItemCount - 1, "UseAutoplay"); - } - else - { - holder.Repeat.ClearColorFilter(); - MusicPlayer.useAutoPlay = true; - NotifyItemChanged(ItemCount - 1, "UseAutoplay"); - } - }; - } if (!holder.More.HasOnClickListeners) { holder.More.Click += (sender, e) => @@ -263,7 +249,16 @@ namespace Opus.Resources.Portable_Class { if (payloads.Count > 0) { - if(payloads[0].ToString() == "UseAutoplay") + if (payloads[0].ToString() == "Repeat") + { + QueueHeader holder = (QueueHeader)viewHolder; + + if (MusicPlayer.repeat) + holder.Repeat.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply); + else + holder.Repeat.ClearColorFilter(); + } + else if (payloads[0].ToString() == "UseAutoplay") { QueueFooter holder = (QueueFooter)viewHolder; holder.SwitchButton.Checked = MusicPlayer.useAutoPlay; diff --git a/Opus/Resources/values/styles.xml b/Opus/Resources/values/styles.xml index 08b0e53..6fd617d 100644 --- a/Opus/Resources/values/styles.xml +++ b/Opus/Resources/values/styles.xml @@ -8,7 +8,6 @@ true true true - #ffffff @style/LightDropDown @style/LightPreferences #A3BBDC