Move playback save button to SettingsListFragment

Move the ability to save the current playback state into a dedicated preference in SettingsListFragment.
This commit is contained in:
OxygenCobalt 2020-12-13 16:01:40 -07:00
parent 384d0f1a27
commit 7458588913
29 changed files with 101 additions and 72 deletions

View file

@ -27,4 +27,4 @@ fun Any.logE(msg: String) {
* Get a non-nullable name, used so that logs will always show up in the console. * Get a non-nullable name, used so that logs will always show up in the console.
* @return The name of the object, otherwise "Anonymous Object" * @return The name of the object, otherwise "Anonymous Object"
*/ */
private fun Any.getName(): String = this::class.simpleName ?: "Anonymous Object" private fun Any.getName(): String = this::class.simpleName ?: "Anonymous Object"

View file

@ -12,9 +12,9 @@ import androidx.databinding.DataBindingUtil
import org.oxycblt.auxio.databinding.ActivityMainBinding import org.oxycblt.auxio.databinding.ActivityMainBinding
import org.oxycblt.auxio.playback.PlaybackService import org.oxycblt.auxio.playback.PlaybackService
import org.oxycblt.auxio.settings.SettingsManager import org.oxycblt.auxio.settings.SettingsManager
import org.oxycblt.auxio.ui.accent import org.oxycblt.auxio.utils.accent
import org.oxycblt.auxio.ui.handleTransparentSystemBars import org.oxycblt.auxio.utils.handleTransparentSystemBars
import org.oxycblt.auxio.ui.toColor import org.oxycblt.auxio.utils.toColor
// FIXME: Fix bug where fast navigation will break the animations and // FIXME: Fix bug where fast navigation will break the animations and
// lead to nothing being displayed [Possibly Un-fixable] // lead to nothing being displayed [Possibly Un-fixable]

View file

@ -2,7 +2,6 @@ package org.oxycblt.auxio
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
@ -20,9 +19,9 @@ import org.oxycblt.auxio.music.Artist
import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.music.MusicStore
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.ui.accent import org.oxycblt.auxio.utils.accent
import org.oxycblt.auxio.ui.getTransparentAccent import org.oxycblt.auxio.utils.getTransparentAccent
import org.oxycblt.auxio.ui.toColor import org.oxycblt.auxio.utils.toColor
import kotlin.IllegalArgumentException import kotlin.IllegalArgumentException
class MainFragment : Fragment() { class MainFragment : Fragment() {

View file

@ -17,9 +17,9 @@ import org.oxycblt.auxio.music.MusicStore
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.playback.state.PlaybackMode import org.oxycblt.auxio.playback.state.PlaybackMode
import org.oxycblt.auxio.ui.createToast import org.oxycblt.auxio.utils.createToast
import org.oxycblt.auxio.ui.disable import org.oxycblt.auxio.utils.disable
import org.oxycblt.auxio.ui.setupAlbumSongActions import org.oxycblt.auxio.utils.setupAlbumSongActions
/** /**
* The [DetailFragment] for an album. * The [DetailFragment] for an album.

View file

@ -15,8 +15,8 @@ import org.oxycblt.auxio.logD
import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Artist
import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.music.MusicStore
import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.ui.disable import org.oxycblt.auxio.utils.disable
import org.oxycblt.auxio.ui.setupAlbumActions import org.oxycblt.auxio.utils.setupAlbumActions
/** /**
* The [DetailFragment] for an artist. * The [DetailFragment] for an artist.

View file

@ -1,7 +1,6 @@
package org.oxycblt.auxio.detail package org.oxycblt.auxio.detail
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@ -15,8 +14,8 @@ import org.oxycblt.auxio.detail.adapters.GenreArtistAdapter
import org.oxycblt.auxio.logD import org.oxycblt.auxio.logD
import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.music.MusicStore
import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.ui.disable import org.oxycblt.auxio.utils.disable
import org.oxycblt.auxio.ui.setupArtistActions import org.oxycblt.auxio.utils.setupArtistActions
/** /**
* The [DetailFragment] for a genre. * The [DetailFragment] for a genre.

View file

@ -9,8 +9,8 @@ import org.oxycblt.auxio.databinding.ItemAlbumSongBinding
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.recycler.DiffCallback import org.oxycblt.auxio.recycler.DiffCallback
import org.oxycblt.auxio.recycler.viewholders.BaseViewHolder import org.oxycblt.auxio.recycler.viewholders.BaseViewHolder
import org.oxycblt.auxio.ui.accent import org.oxycblt.auxio.utils.accent
import org.oxycblt.auxio.ui.toColor import org.oxycblt.auxio.utils.toColor
/** /**
* An adapter for displaying the [Song]s of an album. * An adapter for displaying the [Song]s of an album.

View file

@ -1,7 +1,6 @@
package org.oxycblt.auxio.library package org.oxycblt.auxio.library
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
@ -27,12 +26,12 @@ import org.oxycblt.auxio.music.Genre
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.settings.SettingsManager import org.oxycblt.auxio.settings.SettingsManager
import org.oxycblt.auxio.ui.applyColor import org.oxycblt.auxio.utils.applyColor
import org.oxycblt.auxio.ui.resolveAttr import org.oxycblt.auxio.utils.resolveAttr
import org.oxycblt.auxio.ui.setupAlbumActions import org.oxycblt.auxio.utils.setupAlbumActions
import org.oxycblt.auxio.ui.setupArtistActions import org.oxycblt.auxio.utils.setupArtistActions
import org.oxycblt.auxio.ui.setupGenreActions import org.oxycblt.auxio.utils.setupGenreActions
import org.oxycblt.auxio.ui.setupSongActions import org.oxycblt.auxio.utils.setupSongActions
/** /**
* A [Fragment] that shows a custom list of [Genre], [Artist], or [Album] data. Also allows for * A [Fragment] that shows a custom list of [Genre], [Artist], or [Album] data. Also allows for

View file

@ -3,7 +3,6 @@ package org.oxycblt.auxio.loading
import android.Manifest import android.Manifest
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup

View file

@ -1,7 +1,6 @@
package org.oxycblt.auxio.music package org.oxycblt.auxio.music
import android.app.Application import android.app.Application
import android.util.Log
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.oxycblt.auxio.R import org.oxycblt.auxio.R

View file

@ -7,7 +7,6 @@ import android.provider.MediaStore.Audio.Albums
import android.provider.MediaStore.Audio.Artists import android.provider.MediaStore.Audio.Artists
import android.provider.MediaStore.Audio.Genres import android.provider.MediaStore.Audio.Genres
import android.provider.MediaStore.Audio.Media import android.provider.MediaStore.Audio.Media
import android.util.Log
import org.oxycblt.auxio.logD import org.oxycblt.auxio.logD
import org.oxycblt.auxio.logE import org.oxycblt.auxio.logE
import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Album

View file

@ -1,6 +1,5 @@
package org.oxycblt.auxio.music.processing package org.oxycblt.auxio.music.processing
import android.util.Log
import org.oxycblt.auxio.logD import org.oxycblt.auxio.logD
import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Album
import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Artist

View file

@ -2,7 +2,6 @@ package org.oxycblt.auxio.playback
import android.graphics.drawable.AnimatedVectorDrawable import android.graphics.drawable.AnimatedVectorDrawable
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@ -11,13 +10,11 @@ import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import org.oxycblt.auxio.BuildConfig
import org.oxycblt.auxio.MainFragmentDirections import org.oxycblt.auxio.MainFragmentDirections
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentCompactPlaybackBinding import org.oxycblt.auxio.databinding.FragmentCompactPlaybackBinding
import org.oxycblt.auxio.logD import org.oxycblt.auxio.logD
import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.music.MusicStore
import org.oxycblt.auxio.ui.createToast
/** /**
* A [Fragment] that displays the currently played song at a glance, with some basic controls. * A [Fragment] that displays the currently played song at a glance, with some basic controls.
@ -56,16 +53,6 @@ class CompactPlaybackFragment : Fragment() {
true true
} }
// Enable the ability to force-save the state in debug builds, in order to check
// for persistence issues without waiting for PlaybackService to be killed.
if (BuildConfig.DEBUG) {
binding.playbackControls.setOnLongClickListener {
playbackModel.save(requireContext())
getString(R.string.debug_state_saved).createToast(requireContext())
true
}
}
// --- VIEWMODEL SETUP --- // --- VIEWMODEL SETUP ---
playbackModel.song.observe(viewLifecycleOwner) { playbackModel.song.observe(viewLifecycleOwner) {

View file

@ -8,7 +8,6 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Build import android.os.Build
import android.support.v4.media.session.MediaSessionCompat import android.support.v4.media.session.MediaSessionCompat
import androidx.annotation.DrawableRes
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.media.app.NotificationCompat.MediaStyle import androidx.media.app.NotificationCompat.MediaStyle
import org.oxycblt.auxio.MainActivity import org.oxycblt.auxio.MainActivity
@ -18,7 +17,6 @@ import org.oxycblt.auxio.music.coil.getBitmap
import org.oxycblt.auxio.playback.state.LoopMode import org.oxycblt.auxio.playback.state.LoopMode
import org.oxycblt.auxio.playback.state.PlaybackMode import org.oxycblt.auxio.playback.state.PlaybackMode
import org.oxycblt.auxio.playback.state.PlaybackStateManager import org.oxycblt.auxio.playback.state.PlaybackStateManager
import org.oxycblt.auxio.settings.SettingsManager
object NotificationUtils { object NotificationUtils {
const val CHANNEL_ID = "CHANNEL_AUXIO_PLAYBACK" const val CHANNEL_ID = "CHANNEL_AUXIO_PLAYBACK"
@ -207,4 +205,4 @@ private fun newAction(action: String, context: Context): NotificationCompat.Acti
Intent(action), PendingIntent.FLAG_UPDATE_CURRENT Intent(action), PendingIntent.FLAG_UPDATE_CURRENT
) )
).build() ).build()
} }

View file

@ -3,7 +3,6 @@ package org.oxycblt.auxio.playback
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.graphics.drawable.AnimatedVectorDrawable import android.graphics.drawable.AnimatedVectorDrawable
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
@ -17,8 +16,8 @@ import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentPlaybackBinding import org.oxycblt.auxio.databinding.FragmentPlaybackBinding
import org.oxycblt.auxio.logD import org.oxycblt.auxio.logD
import org.oxycblt.auxio.playback.state.LoopMode import org.oxycblt.auxio.playback.state.LoopMode
import org.oxycblt.auxio.ui.accent import org.oxycblt.auxio.utils.accent
import org.oxycblt.auxio.ui.toColor import org.oxycblt.auxio.utils.toColor
/** /**
* A [Fragment] that displays more information about the song, along with more media controls. * A [Fragment] that displays more information about the song, along with more media controls.

View file

@ -14,7 +14,6 @@ import android.os.IBinder
import android.os.Parcelable import android.os.Parcelable
import android.support.v4.media.MediaMetadataCompat import android.support.v4.media.MediaMetadataCompat
import android.support.v4.media.session.MediaSessionCompat import android.support.v4.media.session.MediaSessionCompat
import android.util.Log
import android.view.KeyEvent import android.view.KeyEvent
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import com.google.android.exoplayer2.C import com.google.android.exoplayer2.C

View file

@ -1,7 +1,6 @@
package org.oxycblt.auxio.playback package org.oxycblt.auxio.playback
import android.content.Context import android.content.Context
import android.util.Log
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Transformations import androidx.lifecycle.Transformations

View file

@ -2,7 +2,6 @@ package org.oxycblt.auxio.playback.queue
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.MotionEvent import android.view.MotionEvent
import android.view.ViewGroup import android.view.ViewGroup

View file

@ -1,7 +1,6 @@
package org.oxycblt.auxio.playback.state package org.oxycblt.auxio.playback.state
import android.content.Context import android.content.Context
import android.util.Log
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.oxycblt.auxio.database.PlaybackState import org.oxycblt.auxio.database.PlaybackState

View file

@ -1,5 +1,3 @@
@file:Suppress("MemberVisibilityCanBePrivate")
package org.oxycblt.auxio.recycler package org.oxycblt.auxio.recycler
import android.annotation.SuppressLint import android.annotation.SuppressLint
@ -24,8 +22,8 @@ import androidx.dynamicanimation.animation.SpringForce
import com.reddit.indicatorfastscroll.FastScrollItemIndicator import com.reddit.indicatorfastscroll.FastScrollItemIndicator
import com.reddit.indicatorfastscroll.FastScrollerView import com.reddit.indicatorfastscroll.FastScrollerView
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.ui.accent import org.oxycblt.auxio.utils.accent
import org.oxycblt.auxio.ui.toColor import org.oxycblt.auxio.utils.toColor
/** /**
* A semi-copy, semi-custom implementation of [com.reddit.indicatorfastscroll.FastScrollerThumbView] * A semi-copy, semi-custom implementation of [com.reddit.indicatorfastscroll.FastScrollerThumbView]

View file

@ -1,9 +1,9 @@
package org.oxycblt.auxio.settings package org.oxycblt.auxio.settings
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.View import android.view.View
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.fragment.app.activityViewModels
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceCategory import androidx.preference.PreferenceCategory
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
@ -12,16 +12,21 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.customview.customView import com.afollestad.materialdialogs.customview.customView
import org.oxycblt.auxio.BuildConfig
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.logD import org.oxycblt.auxio.logD
import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.recycler.DisplayMode import org.oxycblt.auxio.recycler.DisplayMode
import org.oxycblt.auxio.settings.adapters.AccentAdapter import org.oxycblt.auxio.settings.adapters.AccentAdapter
import org.oxycblt.auxio.ui.ACCENTS import org.oxycblt.auxio.utils.ACCENTS
import org.oxycblt.auxio.ui.accent import org.oxycblt.auxio.utils.accent
import org.oxycblt.auxio.ui.getDetailedAccentSummary import org.oxycblt.auxio.utils.createToast
import org.oxycblt.auxio.utils.getDetailedAccentSummary
@Suppress("UNUSED") @Suppress("UNUSED")
class SettingsListFragment : PreferenceFragmentCompat() { class SettingsListFragment : PreferenceFragmentCompat() {
private val playbackModel: PlaybackViewModel by activityViewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -38,6 +43,12 @@ class SettingsListFragment : PreferenceFragmentCompat() {
private fun recursivelyHandleChildren(pref: Preference) { private fun recursivelyHandleChildren(pref: Preference) {
if (pref is PreferenceCategory) { if (pref is PreferenceCategory) {
if (pref.title == getString(R.string.debug_title) && BuildConfig.DEBUG) {
logD("Showing debug category.")
pref.isVisible = true
}
pref.children.forEach { pref.children.forEach {
recursivelyHandleChildren(it) recursivelyHandleChildren(it)
} }
@ -87,6 +98,15 @@ class SettingsListFragment : PreferenceFragmentCompat() {
true true
} }
} }
SettingsManager.Keys.KEY_DEBUG_SAVE -> {
onPreferenceClickListener = Preference.OnPreferenceClickListener {
playbackModel.save(requireContext())
getString(R.string.debug_state_saved).createToast(requireContext())
true
}
}
} }
} }
} }

View file

@ -6,7 +6,7 @@ import androidx.preference.PreferenceManager
import org.oxycblt.auxio.playback.state.PlaybackMode import org.oxycblt.auxio.playback.state.PlaybackMode
import org.oxycblt.auxio.recycler.DisplayMode import org.oxycblt.auxio.recycler.DisplayMode
import org.oxycblt.auxio.recycler.SortMode import org.oxycblt.auxio.recycler.SortMode
import org.oxycblt.auxio.ui.ACCENTS import org.oxycblt.auxio.utils.ACCENTS
/** /**
* Wrapper around the [SharedPreferences] class that writes & reads values without a context. * Wrapper around the [SharedPreferences] class that writes & reads values without a context.
@ -179,6 +179,7 @@ class SettingsManager private constructor(context: Context) :
const val KEY_REWIND_THRESHOLD = "KEY_REWIND_THRESHOLD" const val KEY_REWIND_THRESHOLD = "KEY_REWIND_THRESHOLD"
const val KEY_LIBRARY_SORT_MODE = "KEY_LIBRARY_SORT_MODE" const val KEY_LIBRARY_SORT_MODE = "KEY_LIBRARY_SORT_MODE"
const val KEY_DEBUG_SAVE = "KEY_SAVE_STATE"
} }
object EntryNames { object EntryNames {

View file

@ -6,10 +6,10 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.ItemAccentBinding import org.oxycblt.auxio.databinding.ItemAccentBinding
import org.oxycblt.auxio.ui.ACCENTS import org.oxycblt.auxio.utils.ACCENTS
import org.oxycblt.auxio.ui.accent import org.oxycblt.auxio.utils.accent
import org.oxycblt.auxio.ui.getAccentItemSummary import org.oxycblt.auxio.utils.getAccentItemSummary
import org.oxycblt.auxio.ui.toColor import org.oxycblt.auxio.utils.toColor
class AccentAdapter( class AccentAdapter(
private val doOnAccentConfirm: (accent: Pair<Int, Int>) -> Unit private val doOnAccentConfirm: (accent: Pair<Int, Int>) -> Unit

View file

@ -1,7 +1,6 @@
package org.oxycblt.auxio.songs package org.oxycblt.auxio.songs
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.util.TypedValue import android.util.TypedValue
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -18,7 +17,7 @@ import org.oxycblt.auxio.logD
import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.music.MusicStore
import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.settings.SettingsManager import org.oxycblt.auxio.settings.SettingsManager
import org.oxycblt.auxio.ui.setupSongActions import org.oxycblt.auxio.utils.setupSongActions
import kotlin.math.ceil import kotlin.math.ceil
/** /**

View file

@ -1,4 +1,4 @@
package org.oxycblt.auxio.ui package org.oxycblt.auxio.utils
import android.annotation.TargetApi import android.annotation.TargetApi
import android.content.Context import android.content.Context

View file

@ -1,9 +1,8 @@
package org.oxycblt.auxio.ui package org.oxycblt.auxio.utils
import android.content.Context import android.content.Context
import android.content.res.Resources import android.content.res.Resources
import android.text.Spanned import android.text.Spanned
import android.util.Log
import android.util.TypedValue import android.util.TypedValue
import androidx.annotation.AttrRes import androidx.annotation.AttrRes
import androidx.annotation.ColorInt import androidx.annotation.ColorInt

View file

@ -85,6 +85,9 @@
<string name="setting_behavior_rewind_threshold_desc">Progress at which a rewind should occur (seconds)</string> <string name="setting_behavior_rewind_threshold_desc">Progress at which a rewind should occur (seconds)</string>
<!-- Debug Namespace | Debug labels --> <!-- Debug Namespace | Debug labels -->
<string name="debug_title">Debug</string>
<string name="debug_state_save">Save playback state</string>
<string name="debug_state_save_desc">Force save the current playback state</string>
<string name="debug_state_saved">State saved</string> <string name="debug_state_saved">State saved</string>
<!-- Error Namespace | Error Labels --> <!-- Error Namespace | Error Labels -->

View file

@ -124,8 +124,22 @@
app:min="@integer/rewind_threshold_min" app:min="@integer/rewind_threshold_min"
app:summary="@string/setting_behavior_rewind_threshold_desc" app:summary="@string/setting_behavior_rewind_threshold_desc"
app:showSeekBarValue="true" app:showSeekBarValue="true"
app:allowDividerBelow="false"
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
app:dependency="KEY_PREV_REWIND" /> app:dependency="KEY_PREV_REWIND" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory
android:title="@string/debug_title"
app:isPreferenceVisible="false"
app:layout="@layout/item_header">
<Preference
app:key="KEY_SAVE_STATE"
android:title="@string/debug_state_save"
app:summary="@string/debug_state_save_desc"
app:iconSpaceReserved="false" />
</PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>

View file

@ -18,6 +18,7 @@
android:title="@string/setting_accent" android:title="@string/setting_accent"
android:icon="@drawable/ic_accent" android:icon="@drawable/ic_accent"
app:summary="@string/setting_accent_unknown" /> app:summary="@string/setting_accent_unknown" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory <PreferenceCategory
@ -69,6 +70,7 @@
app:defaultValue="true" app:defaultValue="true"
app:allowDividerBelow="false" app:allowDividerBelow="false"
app:summary="@string/setting_playback_plug_mgt_desc" /> app:summary="@string/setting_playback_plug_mgt_desc" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory <PreferenceCategory
@ -93,6 +95,13 @@
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
app:useSimpleSummaryProvider="true" /> app:useSimpleSummaryProvider="true" />
<SwitchPreferenceCompat
app:key="KEY_KEEP_SHUFFLE"
android:title="@string/setting_behavior_keep_shuffle"
app:summary="@string/setting_behavior_keep_shuffle_desc"
app:defaultValue="false"
app:iconSpaceReserved="false" />
<SwitchPreference <SwitchPreference
app:key="KEY_PREV_REWIND" app:key="KEY_PREV_REWIND"
android:title="@string/setting_behavior_rewind_prev" android:title="@string/setting_behavior_rewind_prev"
@ -104,12 +113,25 @@
app:key="KEY_REWIND_THRESHOLD" app:key="KEY_REWIND_THRESHOLD"
android:title="@string/setting_behavior_rewind_threshold" android:title="@string/setting_behavior_rewind_threshold"
android:defaultValue="@integer/rewind_threshold_default" android:defaultValue="@integer/rewind_threshold_default"
app:summary="@string/setting_behavior_rewind_threshold_desc"
app:showSeekBarValue="true"
android:max="@integer/rewind_threshold_max" android:max="@integer/rewind_threshold_max"
app:min="@integer/rewind_threshold_min" app:min="@integer/rewind_threshold_min"
app:summary="@string/setting_behavior_rewind_threshold_desc"
app:showSeekBarValue="true"
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
app:dependency="KEY_PREV_REWIND" /> app:dependency="KEY_PREV_REWIND" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory
android:title="@string/debug_title"
app:isPreferenceVisible="false"
app:layout="@layout/item_header">
<Preference
app:key="KEY_SAVE_STATE"
android:title="@string/debug_state_save"
app:summary="@string/debug_state_save_desc"
app:iconSpaceReserved="false" />
</PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>