From 7458588913fcd3f558a3f94817513da1708b1dfd Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Sun, 13 Dec 2020 16:01:40 -0700 Subject: [PATCH] Move playback save button to SettingsListFragment Move the ability to save the current playback state into a dedicated preference in SettingsListFragment. --- .../oxycblt/auxio/{Logger.kt => LogUtils.kt} | 2 +- .../java/org/oxycblt/auxio/MainActivity.kt | 6 ++-- .../java/org/oxycblt/auxio/MainFragment.kt | 7 ++--- .../auxio/detail/AlbumDetailFragment.kt | 6 ++-- .../auxio/detail/ArtistDetailFragment.kt | 4 +-- .../auxio/detail/GenreDetailFragment.kt | 5 ++-- .../auxio/detail/adapters/AlbumSongAdapter.kt | 4 +-- .../oxycblt/auxio/library/LibraryFragment.kt | 13 ++++----- .../oxycblt/auxio/loading/LoadingFragment.kt | 1 - .../org/oxycblt/auxio/music/MusicStore.kt | 1 - .../auxio/music/processing/MusicLoader.kt | 1 - .../auxio/music/processing/MusicSorter.kt | 1 - .../auxio/playback/CompactPlaybackFragment.kt | 13 --------- .../auxio/playback/NotificationUtils.kt | 4 +-- .../auxio/playback/PlaybackFragment.kt | 5 ++-- .../oxycblt/auxio/playback/PlaybackService.kt | 1 - .../auxio/playback/PlaybackViewModel.kt | 1 - .../auxio/playback/queue/QueueAdapter.kt | 1 - .../playback/state/PlaybackStateManager.kt | 1 - .../oxycblt/auxio/recycler/NoLeakThumbView.kt | 6 ++-- .../auxio/settings/SettingsListFragment.kt | 28 ++++++++++++++++--- .../oxycblt/auxio/settings/SettingsManager.kt | 3 +- .../auxio/settings/adapters/AccentAdapter.kt | 8 +++--- .../org/oxycblt/auxio/songs/SongsFragment.kt | 3 +- .../auxio/{ui => utils}/InterfaceUtils.kt | 2 +- .../oxycblt/auxio/{ui => utils}/ThemeUtils.kt | 3 +- app/src/main/res/values/strings.xml | 3 ++ app/src/main/res/xml-v27/prefs_main.xml | 14 ++++++++++ app/src/main/res/xml/prefs_main.xml | 26 +++++++++++++++-- 29 files changed, 101 insertions(+), 72 deletions(-) rename app/src/main/java/org/oxycblt/auxio/{Logger.kt => LogUtils.kt} (97%) rename app/src/main/java/org/oxycblt/auxio/{ui => utils}/InterfaceUtils.kt (99%) rename app/src/main/java/org/oxycblt/auxio/{ui => utils}/ThemeUtils.kt (98%) diff --git a/app/src/main/java/org/oxycblt/auxio/Logger.kt b/app/src/main/java/org/oxycblt/auxio/LogUtils.kt similarity index 97% rename from app/src/main/java/org/oxycblt/auxio/Logger.kt rename to app/src/main/java/org/oxycblt/auxio/LogUtils.kt index 423b18710..dde8b5bb3 100644 --- a/app/src/main/java/org/oxycblt/auxio/Logger.kt +++ b/app/src/main/java/org/oxycblt/auxio/LogUtils.kt @@ -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. * @return The name of the object, otherwise "Anonymous Object" */ -private fun Any.getName(): String = this::class.simpleName ?: "Anonymous Object" \ No newline at end of file +private fun Any.getName(): String = this::class.simpleName ?: "Anonymous Object" diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt index c9d4b10d0..b371ee7f7 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt @@ -12,9 +12,9 @@ import androidx.databinding.DataBindingUtil import org.oxycblt.auxio.databinding.ActivityMainBinding import org.oxycblt.auxio.playback.PlaybackService import org.oxycblt.auxio.settings.SettingsManager -import org.oxycblt.auxio.ui.accent -import org.oxycblt.auxio.ui.handleTransparentSystemBars -import org.oxycblt.auxio.ui.toColor +import org.oxycblt.auxio.utils.accent +import org.oxycblt.auxio.utils.handleTransparentSystemBars +import org.oxycblt.auxio.utils.toColor // FIXME: Fix bug where fast navigation will break the animations and // lead to nothing being displayed [Possibly Un-fixable] diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt index 87df5e463..51a3d3659 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -2,7 +2,6 @@ package org.oxycblt.auxio import android.content.res.ColorStateList import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.MenuItem 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.Song import org.oxycblt.auxio.playback.PlaybackViewModel -import org.oxycblt.auxio.ui.accent -import org.oxycblt.auxio.ui.getTransparentAccent -import org.oxycblt.auxio.ui.toColor +import org.oxycblt.auxio.utils.accent +import org.oxycblt.auxio.utils.getTransparentAccent +import org.oxycblt.auxio.utils.toColor import kotlin.IllegalArgumentException class MainFragment : Fragment() { diff --git a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt index d84ccaf7a..b78a72174 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -17,9 +17,9 @@ import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.state.PlaybackMode -import org.oxycblt.auxio.ui.createToast -import org.oxycblt.auxio.ui.disable -import org.oxycblt.auxio.ui.setupAlbumSongActions +import org.oxycblt.auxio.utils.createToast +import org.oxycblt.auxio.utils.disable +import org.oxycblt.auxio.utils.setupAlbumSongActions /** * The [DetailFragment] for an album. diff --git a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt index 274637e91..e1284c0a5 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -15,8 +15,8 @@ import org.oxycblt.auxio.logD import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.playback.PlaybackViewModel -import org.oxycblt.auxio.ui.disable -import org.oxycblt.auxio.ui.setupAlbumActions +import org.oxycblt.auxio.utils.disable +import org.oxycblt.auxio.utils.setupAlbumActions /** * The [DetailFragment] for an artist. diff --git a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt index 6020755ef..8aaaca6b3 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt @@ -1,7 +1,6 @@ package org.oxycblt.auxio.detail import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -15,8 +14,8 @@ import org.oxycblt.auxio.detail.adapters.GenreArtistAdapter import org.oxycblt.auxio.logD import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.playback.PlaybackViewModel -import org.oxycblt.auxio.ui.disable -import org.oxycblt.auxio.ui.setupArtistActions +import org.oxycblt.auxio.utils.disable +import org.oxycblt.auxio.utils.setupArtistActions /** * The [DetailFragment] for a genre. diff --git a/app/src/main/java/org/oxycblt/auxio/detail/adapters/AlbumSongAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/adapters/AlbumSongAdapter.kt index 59bd1a091..e6bfa8347 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/adapters/AlbumSongAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/adapters/AlbumSongAdapter.kt @@ -9,8 +9,8 @@ import org.oxycblt.auxio.databinding.ItemAlbumSongBinding import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.recycler.DiffCallback import org.oxycblt.auxio.recycler.viewholders.BaseViewHolder -import org.oxycblt.auxio.ui.accent -import org.oxycblt.auxio.ui.toColor +import org.oxycblt.auxio.utils.accent +import org.oxycblt.auxio.utils.toColor /** * An adapter for displaying the [Song]s of an album. diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt index f7d058fb2..d226a836f 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt @@ -1,7 +1,6 @@ package org.oxycblt.auxio.library import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.MenuItem import android.view.View @@ -27,12 +26,12 @@ import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.settings.SettingsManager -import org.oxycblt.auxio.ui.applyColor -import org.oxycblt.auxio.ui.resolveAttr -import org.oxycblt.auxio.ui.setupAlbumActions -import org.oxycblt.auxio.ui.setupArtistActions -import org.oxycblt.auxio.ui.setupGenreActions -import org.oxycblt.auxio.ui.setupSongActions +import org.oxycblt.auxio.utils.applyColor +import org.oxycblt.auxio.utils.resolveAttr +import org.oxycblt.auxio.utils.setupAlbumActions +import org.oxycblt.auxio.utils.setupArtistActions +import org.oxycblt.auxio.utils.setupGenreActions +import org.oxycblt.auxio.utils.setupSongActions /** * A [Fragment] that shows a custom list of [Genre], [Artist], or [Album] data. Also allows for diff --git a/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt b/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt index ab5890eae..b8479cdf0 100644 --- a/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt @@ -3,7 +3,6 @@ package org.oxycblt.auxio.loading import android.Manifest import android.content.pm.PackageManager import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt index be040328a..e0cfc4ed0 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt @@ -1,7 +1,6 @@ package org.oxycblt.auxio.music import android.app.Application -import android.util.Log import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.oxycblt.auxio.R diff --git a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt index 2b1d284be..b4562f835 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt @@ -7,7 +7,6 @@ import android.provider.MediaStore.Audio.Albums import android.provider.MediaStore.Audio.Artists import android.provider.MediaStore.Audio.Genres import android.provider.MediaStore.Audio.Media -import android.util.Log import org.oxycblt.auxio.logD import org.oxycblt.auxio.logE import org.oxycblt.auxio.music.Album diff --git a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicSorter.kt b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicSorter.kt index ac17e3740..f5c599a2b 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicSorter.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicSorter.kt @@ -1,6 +1,5 @@ package org.oxycblt.auxio.music.processing -import android.util.Log import org.oxycblt.auxio.logD import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Artist diff --git a/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt index cb1a3c89f..a7d8bd7ec 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt @@ -2,7 +2,6 @@ package org.oxycblt.auxio.playback import android.graphics.drawable.AnimatedVectorDrawable import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,13 +10,11 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController -import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.MainFragmentDirections import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentCompactPlaybackBinding import org.oxycblt.auxio.logD 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. @@ -56,16 +53,6 @@ class CompactPlaybackFragment : Fragment() { 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 --- playbackModel.song.observe(viewLifecycleOwner) { diff --git a/app/src/main/java/org/oxycblt/auxio/playback/NotificationUtils.kt b/app/src/main/java/org/oxycblt/auxio/playback/NotificationUtils.kt index c8d6ea269..024204efd 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/NotificationUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/NotificationUtils.kt @@ -8,7 +8,6 @@ import android.content.Context import android.content.Intent import android.os.Build import android.support.v4.media.session.MediaSessionCompat -import androidx.annotation.DrawableRes import androidx.core.app.NotificationCompat import androidx.media.app.NotificationCompat.MediaStyle 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.PlaybackMode import org.oxycblt.auxio.playback.state.PlaybackStateManager -import org.oxycblt.auxio.settings.SettingsManager object NotificationUtils { 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 ) ).build() -} \ No newline at end of file +} diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt index 40738c69e..074432792 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt @@ -3,7 +3,6 @@ package org.oxycblt.auxio.playback import android.content.res.ColorStateList import android.graphics.drawable.AnimatedVectorDrawable import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.MenuItem import android.view.View @@ -17,8 +16,8 @@ import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentPlaybackBinding import org.oxycblt.auxio.logD import org.oxycblt.auxio.playback.state.LoopMode -import org.oxycblt.auxio.ui.accent -import org.oxycblt.auxio.ui.toColor +import org.oxycblt.auxio.utils.accent +import org.oxycblt.auxio.utils.toColor /** * A [Fragment] that displays more information about the song, along with more media controls. diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackService.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackService.kt index 192af3158..45ed9d10f 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackService.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackService.kt @@ -14,7 +14,6 @@ import android.os.IBinder import android.os.Parcelable import android.support.v4.media.MediaMetadataCompat import android.support.v4.media.session.MediaSessionCompat -import android.util.Log import android.view.KeyEvent import androidx.core.app.NotificationCompat import com.google.android.exoplayer2.C diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt index ae7f40cbb..52939b7dc 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt @@ -1,7 +1,6 @@ package org.oxycblt.auxio.playback import android.content.Context -import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Transformations diff --git a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt index 8e248cb0d..82a69d5d9 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt @@ -2,7 +2,6 @@ package org.oxycblt.auxio.playback.queue import android.annotation.SuppressLint import android.content.Context -import android.util.Log import android.view.LayoutInflater import android.view.MotionEvent import android.view.ViewGroup diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt index 460433997..4047a6665 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt @@ -1,7 +1,6 @@ package org.oxycblt.auxio.playback.state import android.content.Context -import android.util.Log import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.oxycblt.auxio.database.PlaybackState diff --git a/app/src/main/java/org/oxycblt/auxio/recycler/NoLeakThumbView.kt b/app/src/main/java/org/oxycblt/auxio/recycler/NoLeakThumbView.kt index ad83c6372..bd0e3e483 100644 --- a/app/src/main/java/org/oxycblt/auxio/recycler/NoLeakThumbView.kt +++ b/app/src/main/java/org/oxycblt/auxio/recycler/NoLeakThumbView.kt @@ -1,5 +1,3 @@ -@file:Suppress("MemberVisibilityCanBePrivate") - package org.oxycblt.auxio.recycler import android.annotation.SuppressLint @@ -24,8 +22,8 @@ import androidx.dynamicanimation.animation.SpringForce import com.reddit.indicatorfastscroll.FastScrollItemIndicator import com.reddit.indicatorfastscroll.FastScrollerView import org.oxycblt.auxio.R -import org.oxycblt.auxio.ui.accent -import org.oxycblt.auxio.ui.toColor +import org.oxycblt.auxio.utils.accent +import org.oxycblt.auxio.utils.toColor /** * A semi-copy, semi-custom implementation of [com.reddit.indicatorfastscroll.FastScrollerThumbView] diff --git a/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt index 67e52a332..da0334a77 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt @@ -1,9 +1,9 @@ package org.oxycblt.auxio.settings import android.os.Bundle -import android.util.Log import android.view.View import androidx.appcompat.app.AppCompatDelegate +import androidx.fragment.app.activityViewModels import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceFragmentCompat @@ -12,16 +12,21 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.customview.customView +import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.R import org.oxycblt.auxio.logD +import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.recycler.DisplayMode import org.oxycblt.auxio.settings.adapters.AccentAdapter -import org.oxycblt.auxio.ui.ACCENTS -import org.oxycblt.auxio.ui.accent -import org.oxycblt.auxio.ui.getDetailedAccentSummary +import org.oxycblt.auxio.utils.ACCENTS +import org.oxycblt.auxio.utils.accent +import org.oxycblt.auxio.utils.createToast +import org.oxycblt.auxio.utils.getDetailedAccentSummary @Suppress("UNUSED") class SettingsListFragment : PreferenceFragmentCompat() { + private val playbackModel: PlaybackViewModel by activityViewModels() + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -38,6 +43,12 @@ class SettingsListFragment : PreferenceFragmentCompat() { private fun recursivelyHandleChildren(pref: Preference) { if (pref is PreferenceCategory) { + if (pref.title == getString(R.string.debug_title) && BuildConfig.DEBUG) { + logD("Showing debug category.") + + pref.isVisible = true + } + pref.children.forEach { recursivelyHandleChildren(it) } @@ -87,6 +98,15 @@ class SettingsListFragment : PreferenceFragmentCompat() { true } } + + SettingsManager.Keys.KEY_DEBUG_SAVE -> { + onPreferenceClickListener = Preference.OnPreferenceClickListener { + playbackModel.save(requireContext()) + getString(R.string.debug_state_saved).createToast(requireContext()) + + true + } + } } } } diff --git a/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt b/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt index 1e9146cb4..b398df1b3 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt @@ -6,7 +6,7 @@ import androidx.preference.PreferenceManager import org.oxycblt.auxio.playback.state.PlaybackMode import org.oxycblt.auxio.recycler.DisplayMode 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. @@ -179,6 +179,7 @@ class SettingsManager private constructor(context: Context) : const val KEY_REWIND_THRESHOLD = "KEY_REWIND_THRESHOLD" const val KEY_LIBRARY_SORT_MODE = "KEY_LIBRARY_SORT_MODE" + const val KEY_DEBUG_SAVE = "KEY_SAVE_STATE" } object EntryNames { diff --git a/app/src/main/java/org/oxycblt/auxio/settings/adapters/AccentAdapter.kt b/app/src/main/java/org/oxycblt/auxio/settings/adapters/AccentAdapter.kt index 133dc9354..bff15d3de 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/adapters/AccentAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/adapters/AccentAdapter.kt @@ -6,10 +6,10 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.ItemAccentBinding -import org.oxycblt.auxio.ui.ACCENTS -import org.oxycblt.auxio.ui.accent -import org.oxycblt.auxio.ui.getAccentItemSummary -import org.oxycblt.auxio.ui.toColor +import org.oxycblt.auxio.utils.ACCENTS +import org.oxycblt.auxio.utils.accent +import org.oxycblt.auxio.utils.getAccentItemSummary +import org.oxycblt.auxio.utils.toColor class AccentAdapter( private val doOnAccentConfirm: (accent: Pair) -> Unit diff --git a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt index 01a828fb1..0705f1b0c 100644 --- a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt @@ -1,7 +1,6 @@ package org.oxycblt.auxio.songs import android.os.Bundle -import android.util.Log import android.util.TypedValue import android.view.LayoutInflater import android.view.View @@ -18,7 +17,7 @@ import org.oxycblt.auxio.logD import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.settings.SettingsManager -import org.oxycblt.auxio.ui.setupSongActions +import org.oxycblt.auxio.utils.setupSongActions import kotlin.math.ceil /** diff --git a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt b/app/src/main/java/org/oxycblt/auxio/utils/InterfaceUtils.kt similarity index 99% rename from app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt rename to app/src/main/java/org/oxycblt/auxio/utils/InterfaceUtils.kt index d913e4572..4b7451af9 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/utils/InterfaceUtils.kt @@ -1,4 +1,4 @@ -package org.oxycblt.auxio.ui +package org.oxycblt.auxio.utils import android.annotation.TargetApi import android.content.Context diff --git a/app/src/main/java/org/oxycblt/auxio/ui/ThemeUtils.kt b/app/src/main/java/org/oxycblt/auxio/utils/ThemeUtils.kt similarity index 98% rename from app/src/main/java/org/oxycblt/auxio/ui/ThemeUtils.kt rename to app/src/main/java/org/oxycblt/auxio/utils/ThemeUtils.kt index 8f4198f45..62f27f028 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/ThemeUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/utils/ThemeUtils.kt @@ -1,9 +1,8 @@ -package org.oxycblt.auxio.ui +package org.oxycblt.auxio.utils import android.content.Context import android.content.res.Resources import android.text.Spanned -import android.util.Log import android.util.TypedValue import androidx.annotation.AttrRes import androidx.annotation.ColorInt diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 727a4581a..e2b580c8c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -85,6 +85,9 @@ Progress at which a rewind should occur (seconds) + Debug + Save playback state + Force save the current playback state State saved diff --git a/app/src/main/res/xml-v27/prefs_main.xml b/app/src/main/res/xml-v27/prefs_main.xml index 6af2d8d77..a3b6a678a 100644 --- a/app/src/main/res/xml-v27/prefs_main.xml +++ b/app/src/main/res/xml-v27/prefs_main.xml @@ -124,8 +124,22 @@ app:min="@integer/rewind_threshold_min" app:summary="@string/setting_behavior_rewind_threshold_desc" app:showSeekBarValue="true" + app:allowDividerBelow="false" app:iconSpaceReserved="false" app:dependency="KEY_PREV_REWIND" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/prefs_main.xml b/app/src/main/res/xml/prefs_main.xml index 7b15425b6..f1e4ab2fd 100644 --- a/app/src/main/res/xml/prefs_main.xml +++ b/app/src/main/res/xml/prefs_main.xml @@ -18,6 +18,7 @@ android:title="@string/setting_accent" android:icon="@drawable/ic_accent" app:summary="@string/setting_accent_unknown" /> + + + + + + + + + + \ No newline at end of file