From 0537681a86534acf413161364c0b939e1ab5acd5 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Sun, 17 Oct 2021 20:53:00 -0600 Subject: [PATCH] home: cleanup code Clean up some bugs and old code from the tab customization addition. --- .../main/java/org/oxycblt/auxio/home/HomeViewModel.kt | 8 ++++++-- .../oxycblt/auxio/settings/SettingsListFragment.kt | 7 +++++++ .../org/oxycblt/auxio/settings/SettingsManager.kt | 5 ++--- .../main/java/org/oxycblt/auxio/settings/tabs/Tab.kt | 11 +++++------ 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt index 5a21a4b69..db79f8dcf 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt @@ -39,6 +39,10 @@ class HomeViewModel : ViewModel(), SettingsManager.Callback { private val musicStore = MusicStore.getInstance() private val settingsManager = SettingsManager.getInstance() + /** Internal getter for getting the visible library tabs */ + private val visibleTabs: List get() = settingsManager.libTabs + .filterIsInstance().map { it.mode } + private val mSongs = MutableLiveData(listOf()) val songs: LiveData> get() = mSongs @@ -51,7 +55,7 @@ class HomeViewModel : ViewModel(), SettingsManager.Callback { private val mGenres = MutableLiveData(listOf()) val genres: LiveData> get() = mGenres - var tabs: List = settingsManager.visibleTabs + var tabs: List = visibleTabs private set private val mCurTab = MutableLiveData(tabs[0]) @@ -122,7 +126,7 @@ class HomeViewModel : ViewModel(), SettingsManager.Callback { // --- OVERRIDES --- override fun onLibTabsUpdate(libTabs: Array) { - tabs = settingsManager.visibleTabs + tabs = visibleTabs mRecreateTabs.value = true } 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 715b3e352..709145287 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt @@ -18,6 +18,7 @@ package org.oxycblt.auxio.settings +import android.os.Build import android.os.Bundle import android.view.View import androidx.annotation.DrawableRes @@ -105,6 +106,8 @@ class SettingsListFragment : PreferenceFragmentCompat() { pref.apply { when (key) { SettingsManager.KEY_THEME -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) return + setIcon(AppCompatDelegate.getDefaultNightMode().toThemeIcon()) onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, value -> @@ -115,6 +118,8 @@ class SettingsListFragment : PreferenceFragmentCompat() { } SettingsManager.KEY_BLACK_THEME -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) return + onPreferenceClickListener = Preference.OnPreferenceClickListener { if (requireContext().isNight) { requireActivity().recreate() @@ -125,6 +130,8 @@ class SettingsListFragment : PreferenceFragmentCompat() { } SettingsManager.KEY_ACCENT -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) return + onPreferenceClickListener = Preference.OnPreferenceClickListener { AccentDialog().show(childFragmentManager, AccentDialog.TAG) 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 025eb047e..556ba5bfe 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt @@ -31,6 +31,8 @@ import org.oxycblt.auxio.ui.SortMode /** * Wrapper around the [SharedPreferences] class that writes & reads values without a context. * @author OxygenCobalt + * TODO: Consider re-adding the colorize notif setting but only on get() = libTabs.filterIsInstance().map { it.mode } - /** Whether to load embedded covers */ val showCovers: Boolean get() = sharedPrefs.getBoolean(KEY_SHOW_COVERS, true) diff --git a/app/src/main/java/org/oxycblt/auxio/settings/tabs/Tab.kt b/app/src/main/java/org/oxycblt/auxio/settings/tabs/Tab.kt index a814b27f2..abcb39e27 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/tabs/Tab.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/tabs/Tab.kt @@ -19,6 +19,7 @@ package org.oxycblt.auxio.settings.tabs import org.oxycblt.auxio.ui.DisplayMode +import org.oxycblt.auxio.util.logD import org.oxycblt.auxio.util.logE /** @@ -54,10 +55,6 @@ sealed class Tab(open val mode: DisplayMode) { /** The default tab sequence, represented in integer form **/ const val SEQUENCE_DEFAULT = 0b1000_1001_1010_1011_0100 - // Temporary value to make sure we create a 5-tab sequence even though playlists - // aren't implemented yet. - private const val TEMP_BIT_CAP = 20 - /** * Convert an array [tabs] into a sequence of tabs. */ @@ -66,7 +63,7 @@ sealed class Tab(open val mode: DisplayMode) { val distinct = tabs.distinctBy { it.mode } var sequence = 0b0100 - var shift = TEMP_BIT_CAP + var shift = SEQUENCE_LEN * 4 distinct.forEach { tab -> val bin = when (tab) { @@ -89,9 +86,11 @@ sealed class Tab(open val mode: DisplayMode) { // Try to parse a mode for each chunk in the sequence. // If we can't parse one, just skip it. - for (shift in (0..TEMP_BIT_CAP).reversed() step 4) { + for (shift in (0..4 * SEQUENCE_LEN).reversed() step 4) { val chunk = sequence.shr(shift) and 0b1111 + logD(sequence.shr(shift).toString(2)) + val mode = when (chunk and 7) { 0 -> DisplayMode.SHOW_SONGS 1 -> DisplayMode.SHOW_ALBUMS