From 9b0c8b0bf6f27941361d894ef0e495e4a13c654a Mon Sep 17 00:00:00 2001 From: Antoine POPINEAU Date: Wed, 2 Sep 2020 12:45:37 +0200 Subject: [PATCH] #65: added an option to select preference towards playback order. --- .../otter/activities/SettingsActivity.kt | 8 +++++++ .../apognu/otter/fragments/TracksFragment.kt | 24 ++++++++++++++++++- app/src/main/res/menu/album.xml | 4 ++++ app/src/main/res/values-fr/strings.xml | 6 +++++ app/src/main/res/values/array.xml | 10 ++++++++ app/src/main/res/values/strings.xml | 6 +++++ app/src/main/res/xml/settings.xml | 8 +++++++ 7 files changed, 65 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/apognu/otter/activities/SettingsActivity.kt b/app/src/main/java/com/github/apognu/otter/activities/SettingsActivity.kt index b986ff5..f6fc33b 100644 --- a/app/src/main/java/com/github/apognu/otter/activities/SettingsActivity.kt +++ b/app/src/main/java/com/github/apognu/otter/activities/SettingsActivity.kt @@ -112,6 +112,14 @@ class SettingsFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedP } } + preferenceManager.findPreference("play_order")?.let { + it.summary = when (it.value) { + "shuffle" -> activity.getString(R.string.settings_play_order_shuffle_summary) + "in_order" -> activity.getString(R.string.settings_play_order_in_order_summary) + else -> activity.getString(R.string.settings_play_order_shuffle_summary) + } + } + preferenceManager.findPreference("night_mode")?.let { when (it.value) { "on" -> { diff --git a/app/src/main/java/com/github/apognu/otter/fragments/TracksFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/TracksFragment.kt index 660abfe..2ada01e 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/TracksFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/TracksFragment.kt @@ -3,6 +3,7 @@ package com.github.apognu.otter.fragments import android.os.Bundle import android.view.Gravity import android.view.View +import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.widget.PopupMenu import androidx.core.os.bundleOf import androidx.lifecycle.lifecycleScope @@ -14,6 +15,7 @@ import com.github.apognu.otter.repositories.FavoritesRepository import com.github.apognu.otter.repositories.TracksRepository import com.github.apognu.otter.utils.* import com.google.android.exoplayer2.offline.Download +import com.preference.PowerPreference import com.squareup.picasso.Picasso import jp.wasabeef.picasso.transformations.RoundedCornersTransformation import kotlinx.android.synthetic.main.fragment_tracks.* @@ -107,8 +109,16 @@ class TracksFragment : OtterFragment() { } } + when (PowerPreference.getDefaultFile().getString("play_order")) { + "in_order" -> play.text = getString(R.string.playback_play) + else -> play.text = getString(R.string.playback_shuffle) + } + play.setOnClickListener { - CommandBus.send(Command.ReplaceQueue(adapter.data.shuffled())) + when (PowerPreference.getDefaultFile().getString("play_order")) { + "in_order" -> CommandBus.send(Command.ReplaceQueue(adapter.data)) + else -> CommandBus.send(Command.ReplaceQueue(adapter.data.shuffled())) + } context.toast("All tracks were added to your queue") } @@ -118,8 +128,20 @@ class TracksFragment : OtterFragment() { PopupMenu(context, actions, Gravity.START, R.attr.actionOverflowMenuStyle, 0).apply { inflate(R.menu.album) + menu.findItem(R.id.play_secondary)?.let { item -> + when (PowerPreference.getDefaultFile().getString("play_order")) { + "in_order" -> item.title = getString(R.string.playback_shuffle) + else -> item.title = getString(R.string.playback_play) + } + } + setOnMenuItemClickListener { when (it.itemId) { + R.id.play_secondary -> when (PowerPreference.getDefaultFile().getString("play_order")) { + "in_order" -> CommandBus.send(Command.ReplaceQueue(adapter.data.shuffled())) + else -> CommandBus.send(Command.ReplaceQueue(adapter.data)) + } + R.id.add_to_queue -> { CommandBus.send(Command.AddToQueue(adapter.data)) diff --git a/app/src/main/res/menu/album.xml b/app/src/main/res/menu/album.xml index 0d8b4c3..e46e0b8 100644 --- a/app/src/main/res/menu/album.xml +++ b/app/src/main/res/menu/album.xml @@ -1,6 +1,10 @@ + + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index c93ebf7..7bad144 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -26,6 +26,11 @@ Les pistes les plus légères seront utilisées Taille du cache %d Go seront utilisés pour mettre en cache les pistes pour la lecture hors-ligne + Ordre de lecture préféré + Lecture aléatoire + Vous préférez écouter les albums aléatoirement + Lecture dans l\'ordre + Vous préférez écouter les albums dans l\'ordre Autres Mode nuit Toujours activé (mode sombre) @@ -54,6 +59,7 @@ Playlists Radios Favoris + Jouer Contrôle de lecture Contrôler la lecture musicale Lecture aléatoire diff --git a/app/src/main/res/values/array.xml b/app/src/main/res/values/array.xml index 413f260..9b7eefc 100644 --- a/app/src/main/res/values/array.xml +++ b/app/src/main/res/values/array.xml @@ -10,6 +10,16 @@ size + + @string/settings_play_order_shuffle + @string/settings_play_order_in_order + + + + shuffle + in_order + + @string/settings_night_mode_on @string/settings_night_mode_off diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3461b9d..4970d46 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -27,6 +27,11 @@ Smallest available track will be played Media cache size %d GB will be used to store tracks for offline playback + Preferred playback order + Shuffle albums + You prefer shuffling album tracks + Play albums in order + You prefer playing albums in order Other Dark mode Always on (dark mode) @@ -57,6 +62,7 @@ Favorites Media controls Control media playback + Play Shuffle Queue Your queue is empty diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml index 800f906..ccc1465 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -22,6 +22,14 @@ app:showSeekBarValue="true" app:updatesContinuously="true" /> + +