diff --git a/app/build.gradle b/app/build.gradle
index d355e7076..b2d7efc15 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -165,6 +165,6 @@ dependencies {
implementation 'com.github.dhaval2404:imagepicker:2.1'
implementation 'me.zhanghai.android.fastscroll:library:1.1.8'
implementation 'cat.ereza:customactivityoncrash:2.3.0'
- implementation 'me.tankery.lib:circularSeekBar:1.3.2'
- debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
+ implementation 'me.tankery.lib:circularSeekBar:1.4.0'
+ //debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f1449cd37..3c45688e8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -116,7 +116,6 @@
-
diff --git a/app/src/main/java/code/name/monkey/retromusic/Constants.kt b/app/src/main/java/code/name/monkey/retromusic/Constants.kt
index 59532ab49..3818186d3 100644
--- a/app/src/main/java/code/name/monkey/retromusic/Constants.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/Constants.kt
@@ -88,12 +88,7 @@ const val CIRCULAR_ALBUM_ART = "circular_album_art"
const val USER_NAME = "user_name"
const val TOGGLE_FULL_SCREEN = "toggle_full_screen"
const val TOGGLE_VOLUME = "toggle_volume"
-const val ROUND_CORNERS = "corner_window"
-const val TOGGLE_GENRE = "toggle_genre"
-const val PROFILE_IMAGE_PATH = "profile_image_path"
-const val BANNER_IMAGE_PATH = "banner_image_path"
const val ADAPTIVE_COLOR_APP = "adaptive_color_app"
-const val TOGGLE_SEPARATE_LINE = "toggle_separate_line"
const val HOME_ARTIST_GRID_STYLE = "home_artist_grid_style"
const val HOME_ALBUM_GRID_STYLE = "home_album_grid_style"
const val TOGGLE_ADD_CONTROLS = "toggle_add_controls"
@@ -108,7 +103,6 @@ const val SAF_SDCARD_URI = "saf_sdcard_uri"
const val SONG_SORT_ORDER = "song_sort_order"
const val SONG_GRID_SIZE = "song_grid_size"
const val GENRE_SORT_ORDER = "genre_sort_order"
-const val LAST_PAGE = "last_start_page"
const val BLUETOOTH_PLAYBACK = "bluetooth_playback"
const val INITIALIZED_BLACKLIST = "initialized_blacklist"
const val ARTIST_SORT_ORDER = "artist_sort_order"
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
index b338915ea..4a147b5f0 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
@@ -15,18 +15,17 @@
package code.name.monkey.retromusic.activities
import android.content.Intent
-import android.content.SharedPreferences
-import android.content.SharedPreferences.OnSharedPreferenceChangeListener
import android.net.Uri
import android.os.Bundle
import android.provider.MediaStore
import androidx.lifecycle.lifecycleScope
import androidx.navigation.contains
import androidx.navigation.ui.setupWithNavController
-import code.name.monkey.retromusic.*
+import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsCastActivity
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
import code.name.monkey.retromusic.extensions.*
+import code.name.monkey.retromusic.fragments.settings.OnThemeChangedListener
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.SearchQueryHelper.getSongs
import code.name.monkey.retromusic.interfaces.IScrollHelper
@@ -40,7 +39,7 @@ import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch
import org.koin.android.ext.android.get
-class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
+class MainActivity : AbsCastActivity(), OnThemeChangedListener {
companion object {
const val TAG = "MainActivity"
const val EXPAND_PANEL = "expand_panel"
@@ -137,20 +136,18 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
}
}
- override fun onResume() {
- super.onResume()
- PreferenceUtil.registerOnSharedPreferenceChangedListener(this)
+ override fun onThemeValuesChanged() {
+ restart()
}
- override fun onDestroy() {
- super.onDestroy()
- PreferenceUtil.unregisterOnSharedPreferenceChangedListener(this)
- }
-
- override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
- if (key == GENERAL_THEME || key == MATERIAL_YOU || key == WALLPAPER_ACCENT || key == BLACK_THEME || key == ADAPTIVE_COLOR_APP || key == USER_NAME || key == TOGGLE_FULL_SCREEN || key == TOGGLE_VOLUME || key == ROUND_CORNERS || key == CAROUSEL_EFFECT || key == NOW_PLAYING_SCREEN_ID || key == TOGGLE_GENRE || key == BANNER_IMAGE_PATH || key == PROFILE_IMAGE_PATH || key == CIRCULAR_ALBUM_ART || key == KEEP_SCREEN_ON || key == TOGGLE_SEPARATE_LINE || key == TOGGLE_HOME_BANNER || key == TOGGLE_ADD_CONTROLS || key == ALBUM_COVER_STYLE || key == HOME_ARTIST_GRID_STYLE || key == ALBUM_COVER_TRANSFORM || key == DESATURATED_COLOR || key == EXTRA_SONG_INFO || key == TAB_TEXT_MODE || key == LANGUAGE_NAME || key == LIBRARY_CATEGORIES || key == CUSTOM_FONT || key == APPBAR_MODE || key == CIRCLE_PLAY_BUTTON || key == SWIPE_DOWN_DISMISS) {
- postRecreate()
+ private fun restart() {
+ val savedInstanceState = Bundle().apply {
+ onSaveInstanceState(this)
}
+ finish()
+ val intent = Intent(this, this::class.java).putExtra(TAG, savedInstanceState)
+ startActivity(intent)
+ overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
}
override fun onServiceConnected() {
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
index 7130f3901..c6a0e2106 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt
@@ -16,6 +16,7 @@ package code.name.monkey.retromusic.activities.base
import android.animation.ArgbEvaluator
import android.animation.ValueAnimator
+import android.content.SharedPreferences
import android.content.res.ColorStateList
import android.graphics.Color
import android.os.Bundle
@@ -29,7 +30,7 @@ import androidx.core.view.*
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
import code.name.monkey.appthemehelper.util.VersionUtils
-import code.name.monkey.retromusic.R
+import code.name.monkey.retromusic.*
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
import code.name.monkey.retromusic.extensions.*
import code.name.monkey.retromusic.fragments.LibraryViewModel
@@ -65,7 +66,8 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior.*
import org.koin.androidx.viewmodel.ext.android.viewModel
-abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
+abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
+ SharedPreferences.OnSharedPreferenceChangeListener {
companion object {
val TAG: String = AbsSlidingMusicPanelActivity::class.java.simpleName
}
@@ -166,6 +168,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
override fun onResume() {
super.onResume()
+ PreferenceUtil.registerOnSharedPreferenceChangedListener(this)
if (nowPlayingScreen != PreferenceUtil.nowPlayingScreen) {
postRecreate()
}
@@ -177,6 +180,46 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
override fun onDestroy() {
super.onDestroy()
bottomSheetBehavior.removeBottomSheetCallback(bottomSheetCallbackList)
+ PreferenceUtil.unregisterOnSharedPreferenceChangedListener(this)
+ }
+
+ override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
+ when (key) {
+ SWIPE_DOWN_DISMISS -> {
+ bottomSheetBehavior.isHideable = PreferenceUtil.swipeDownToDismiss
+ }
+ TOGGLE_ADD_CONTROLS -> {
+ miniPlayerFragment?.setUpButtons()
+ }
+ NOW_PLAYING_SCREEN_ID, ALBUM_COVER_TRANSFORM, CAROUSEL_EFFECT,
+ ALBUM_COVER_STYLE, TOGGLE_VOLUME, EXTRA_SONG_INFO, CIRCLE_PLAY_BUTTON,
+ -> {
+ chooseFragmentForTheme()
+ onServiceConnected()
+ }
+ ADAPTIVE_COLOR_APP -> {
+ if (PreferenceUtil.nowPlayingScreen in listOf(Normal, Material, Flat)) {
+ chooseFragmentForTheme()
+ onServiceConnected()
+ }
+ }
+ LIBRARY_CATEGORIES -> {
+ updateTabs()
+ }
+ TAB_TEXT_MODE -> {
+ bottomNavigationView.labelVisibilityMode = PreferenceUtil.tabTitleMode
+ }
+ TOGGLE_FULL_SCREEN -> {
+ if (!PreferenceUtil.isFullScreenMode) exitFullscreen()
+ setEdgeToEdgeOrImmersive()
+ }
+ SCREEN_ON_LYRICS -> {
+ keepScreenOn(bottomSheetBehavior.state == STATE_EXPANDED && PreferenceUtil.lyricsScreenOn && PreferenceUtil.showLyrics || PreferenceUtil.isScreenOnEnabled)
+ }
+ KEEP_SCREEN_ON -> {
+ maybeSetScreenOn()
+ }
+ }
}
protected fun wrapSlidingMusicPanel(): SlidingMusicPanelLayoutBinding {
@@ -367,18 +410,20 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
)
return
}
- val mAnimate = animate && bottomSheetBehavior.state == STATE_COLLAPSED
- if (mAnimate) {
- if (visible) {
- binding.bottomNavigationView.bringToFront()
- binding.bottomNavigationView.show()
+ if (visible xor bottomNavigationView.isVisible) {
+ val mAnimate = animate && bottomSheetBehavior.state == STATE_COLLAPSED
+ if (mAnimate) {
+ if (visible) {
+ binding.bottomNavigationView.bringToFront()
+ binding.bottomNavigationView.show()
+ } else {
+ binding.bottomNavigationView.hide()
+ }
} else {
- binding.bottomNavigationView.hide()
- }
- } else {
- binding.bottomNavigationView.isVisible = false
- if (visible && bottomSheetBehavior.state != STATE_EXPANDED) {
- binding.bottomNavigationView.bringToFront()
+ binding.bottomNavigationView.isVisible = false
+ if (visible && bottomSheetBehavior.state != STATE_EXPANDED) {
+ binding.bottomNavigationView.bringToFront()
+ }
}
}
hideBottomSheet(
@@ -393,10 +438,10 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
animate: Boolean = false,
isBottomNavVisible: Boolean = bottomNavigationView.isVisible,
) {
- val heightOfBar = windowInsets.safeGetBottomInsets() + dip(R.dimen.mini_player_height)
+ val heightOfBar = windowInsets.getBottomInsets() + dip(R.dimen.mini_player_height)
val heightOfBarWithTabs = heightOfBar + dip(R.dimen.bottom_nav_height)
if (hide) {
- bottomSheetBehavior.peekHeight = -windowInsets.safeGetBottomInsets()
+ bottomSheetBehavior.peekHeight = -windowInsets.getBottomInsets()
bottomSheetBehavior.state = STATE_COLLAPSED
libraryViewModel.setFabMargin(
this,
@@ -458,7 +503,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
Classic -> ClassicPlayerFragment()
MD3 -> MD3PlayerFragment()
else -> PlayerFragment()
- } // must implement AbsPlayerFragment
+ } // must extend AbsPlayerFragment
supportFragmentManager.commit {
replace(R.id.playerFragmentContainer, fragment)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
index 5e7a8f8eb..20e499e94 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
@@ -44,7 +44,7 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
super.onCreate(savedInstanceState)
setEdgeToEdgeOrImmersive()
registerSystemUiVisibility()
- toggleScreenOn()
+ maybeSetScreenOn()
setLightNavigationBarAuto()
setLightStatusBarAuto(surfaceColor())
if (VersionUtils.hasQ()) {
@@ -61,9 +61,6 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
if (PreferenceUtil.isCustomFont) {
setTheme(R.style.FontThemeOverlay)
}
- if (PreferenceUtil.circlePlayButton) {
- setTheme(R.style.CircleFABOverlay)
- }
}
override fun onWindowFocusChanged(hasFocus: Boolean) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt
index c4a5c7ee8..d6c5a559d 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt
@@ -16,7 +16,7 @@ import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.util.PreferenceUtil
-fun AppCompatActivity.toggleScreenOn() {
+fun AppCompatActivity.maybeSetScreenOn() {
if (PreferenceUtil.isScreenOnEnabled) {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
} else {
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/InsetsExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/InsetsExtensions.kt
index bc2f1bde9..70c8a10f4 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/InsetsExtensions.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/InsetsExtensions.kt
@@ -4,7 +4,7 @@ import androidx.core.view.WindowInsetsCompat
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil
-fun WindowInsetsCompat?.safeGetBottomInsets(): Int {
+fun WindowInsetsCompat?.getBottomInsets(): Int {
return if (PreferenceUtil.isFullScreenMode) {
return 0
} else {
diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt
index 0147255a0..fba21e4ce 100644
--- a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt
@@ -119,6 +119,11 @@ fun BottomNavigationView.show() {
fun BottomNavigationView.hide() {
if (isGone) return
+ if (!isLaidOut) {
+ isGone = true
+ return
+ }
+
val drawable = BitmapDrawable(context.resources, drawToBitmap())
val parent = parent as ViewGroup
drawable.setBounds(left, top, right, bottom)
@@ -255,7 +260,7 @@ fun View.updateMargin(
@Px left: Int = marginLeft,
@Px top: Int = marginTop,
@Px right: Int = marginRight,
- @Px bottom: Int = marginBottom
+ @Px bottom: Int = marginBottom,
) {
(layoutParams as ViewGroup.MarginLayoutParams).updateMargins(left, top, right, bottom)
}
@@ -296,7 +301,7 @@ fun View.requestApplyInsetsWhenAttached() {
data class InitialPadding(
val left: Int, val top: Int,
- val right: Int, val bottom: Int
+ val right: Int, val bottom: Int,
)
fun recordInitialPaddingForView(view: View) = InitialPadding(
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt
index 8a8069d2f..20e1ccceb 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt
@@ -163,8 +163,10 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMusicServiceFragme
R.id.now_playing -> {
requireActivity().findNavController(R.id.fragment_container).navigate(
R.id.playing_queue_fragment,
- null
+ null,
+ navOptions { launchSingleTop = true }
)
+ mainActivity.collapsePanel()
return true
}
R.id.action_show_lyrics -> {
@@ -289,6 +291,15 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMusicServiceFragme
}
}
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ if (PreferenceUtil.circlePlayButton) {
+ requireContext().theme.applyStyle(R.style.CircleFABOverlay, true)
+ } else {
+ requireContext().theme.applyStyle(R.style.RoundedFABOverlay, true)
+ }
+ }
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (PreferenceUtil.isFullScreenMode &&
@@ -421,8 +432,7 @@ fun goToLyrics(activity: Activity) {
findNavController(R.id.fragment_container).navigate(
R.id.lyrics_fragment,
null,
- navOptions { launchSingleTop = true },
- null
+ navOptions { launchSingleTop = true }
)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt
index a3004be8b..e96379512 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt
@@ -216,7 +216,7 @@ abstract class AbsRecyclerViewFragment, LM : Recycle
override fun onMenuItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.action_settings -> findNavController().navigate(
- R.id.settingsActivity,
+ R.id.settings_fragment,
null,
navOptions
)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt
index d1a70aeb3..48b89c66e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt
@@ -374,7 +374,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
}
R.id.action_settings -> {
findNavController().navigate(
- R.id.settingsActivity,
+ R.id.settings_fragment,
null,
navOptions
)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
index 0992eb06a..b160361bc 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt
@@ -47,6 +47,7 @@ import code.name.monkey.retromusic.glide.RetroGlideExtension
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.interfaces.IScrollHelper
import code.name.monkey.retromusic.model.Song
+import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.PreferenceUtil.userName
import com.google.android.gms.cast.framework.CastButtonFactory
import com.google.android.material.shape.MaterialShapeDrawable
@@ -221,7 +222,7 @@ class HomeFragment :
}
private fun loadSuggestions(songs: List) {
- if (songs.isEmpty()) {
+ if (!PreferenceUtil.homeSuggestions || songs.isEmpty()) {
binding.suggestions.root.isVisible = false
return
}
@@ -277,7 +278,7 @@ class HomeFragment :
override fun onMenuItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.action_settings -> findNavController().navigate(
- R.id.settingsActivity,
+ R.id.settings_fragment,
null,
navOptions
)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt
index 41f465fd1..e70047a3e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt
@@ -105,7 +105,7 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) {
override fun onMenuItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.action_settings -> findNavController().navigate(
- R.id.settingsActivity,
+ R.id.settings_fragment,
null,
navOptions
)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt
index d4eebd6d2..fe3180e64 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt
@@ -66,7 +66,10 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(R.layout.fragment_mini_p
_binding = FragmentMiniPlayerBinding.bind(view)
view.setOnTouchListener(FlingPlayBackController(requireContext()))
setUpMiniPlayer()
+ setUpButtons()
+ }
+ fun setUpButtons() {
if (RetroUtil.isTablet) {
binding.actionNext.show()
binding.actionPrevious.show()
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt
index e99ad40cc..ace1d8873 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt
@@ -28,9 +28,7 @@ import androidx.preference.PreferenceManager
import androidx.viewpager.widget.ViewPager
import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper
-import code.name.monkey.retromusic.LYRICS_TYPE
-import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.SHOW_LYRICS
+import code.name.monkey.retromusic.*
import code.name.monkey.retromusic.adapter.album.AlbumCoverPagerAdapter
import code.name.monkey.retromusic.adapter.album.AlbumCoverPagerAdapter.AlbumCoverFragment
import code.name.monkey.retromusic.databinding.FragmentPlayerAlbumCoverBinding
@@ -115,6 +113,22 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(R.layout.fragment_playe
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = FragmentPlayerAlbumCoverBinding.bind(view)
+ setupViewPager()
+ progressViewUpdateHelper = MusicProgressViewUpdateHelper(this, 500, 1000)
+ maybeInitLyrics()
+ lrcView.apply {
+ setDraggable(true) { time ->
+ MusicPlayerRemote.seekTo(time.toInt())
+ MusicPlayerRemote.resumePlaying()
+ true
+ }
+ setOnClickListener {
+ goToLyrics(requireActivity())
+ }
+ }
+ }
+
+ private fun setupViewPager() {
binding.viewPager.addOnPageChangeListener(this)
val nps = PreferenceUtil.nowPlayingScreen
@@ -140,18 +154,6 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(R.layout.fragment_playe
PreferenceUtil.albumCoverTransform
)
}
- progressViewUpdateHelper = MusicProgressViewUpdateHelper(this, 500, 1000)
- maybeInitLyrics()
- lrcView.apply {
- setDraggable(true) { time ->
- MusicPlayerRemote.seekTo(time.toInt())
- MusicPlayerRemote.resumePlaying()
- true
- }
- setOnClickListener {
- goToLyrics(requireActivity())
- }
- }
}
override fun onResume() {
@@ -185,15 +187,18 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(R.layout.fragment_playe
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String?) {
- if (key == SHOW_LYRICS) {
- if (sharedPreferences.getBoolean(key, false)) {
- maybeInitLyrics()
- } else {
- showLyrics(false)
- progressViewUpdateHelper?.stop()
+ when (key) {
+ SHOW_LYRICS -> {
+ if (PreferenceUtil.showLyrics) {
+ maybeInitLyrics()
+ } else {
+ showLyrics(false)
+ progressViewUpdateHelper?.stop()
+ }
+ }
+ LYRICS_TYPE -> {
+ maybeInitLyrics()
}
- } else if (key == LYRICS_TYPE) {
- maybeInitLyrics()
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt
index 541010167..15a3ccc66 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt
@@ -161,7 +161,7 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play
ViewCompat.setOnApplyWindowInsetsListener(
(binding.container)
) { v: View, insets: WindowInsetsCompat ->
- navBarHeight = insets.safeGetBottomInsets()
+ navBarHeight = insets.getBottomInsets()
v.updatePadding(bottom = navBarHeight)
insets
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt
index fba9d5c4a..4a29ca229 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt
@@ -50,6 +50,9 @@ class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_q
private var playingQueueAdapter: PlayingQueueAdapter? = null
private lateinit var linearLayoutManager: LinearLayoutManager
+ val mainActivity: MainActivity
+ get() = activity as MainActivity
+
private fun getUpNextAndQueueTime(): String {
val duration = MusicPlayerRemote.getQueueDurationMillis(MusicPlayerRemote.position)
return MusicUtil.buildInfoString(
@@ -69,6 +72,7 @@ class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_q
MusicPlayerRemote.clearQueue()
}
checkForPadding()
+ mainActivity.collapsePanel()
}
private fun setUpRecyclerView() {
@@ -175,7 +179,7 @@ class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_q
playingQueueAdapter = null
super.onDestroy()
if (MusicPlayerRemote.playingQueue.isNotEmpty())
- (requireActivity() as MainActivity).expandPanel()
+ mainActivity.expandPanel()
}
private fun setupToolbar() {
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt
index 0b8632826..2441d1e9b 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt
@@ -25,7 +25,6 @@ import androidx.preference.PreferenceManager
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.activities.OnThemeChangedListener
import code.name.monkey.retromusic.extensions.showToast
import code.name.monkey.retromusic.preferences.*
import code.name.monkey.retromusic.util.NavigationUtil
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt
index 3ebd069cd..3de0fafc3 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt
@@ -22,18 +22,12 @@ import code.name.monkey.retromusic.*
class PersonalizeSettingsFragment : AbsSettingsFragment() {
- override fun invalidateSettings() {
- val toggleFullScreen: TwoStatePreference? = findPreference(TOGGLE_FULL_SCREEN)
- toggleFullScreen?.setOnPreferenceChangeListener { _, _ ->
- restartActivity()
- true
- }
- }
-
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_ui)
}
+ override fun invalidateSettings() {}
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val homeArtistStyle: ATEListPreference? = findPreference(HOME_ARTIST_GRID_STYLE)
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/SettingsFragment.kt
similarity index 60%
rename from app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt
rename to app/src/main/java/code/name/monkey/retromusic/fragments/settings/SettingsFragment.kt
index fd273b40c..1f728fe9b 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/SettingsFragment.kt
@@ -12,42 +12,44 @@
* See the GNU General Public License for more details.
*
*/
-package code.name.monkey.retromusic.activities
+package code.name.monkey.retromusic.fragments.settings
-import android.Manifest.permission.BLUETOOTH_CONNECT
-import android.content.Intent
import android.os.Bundle
-import android.view.MenuItem
+import android.view.View
+import androidx.core.view.updatePadding
import androidx.navigation.NavController
import androidx.navigation.NavDestination
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.activities.base.AbsBaseActivity
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
-import code.name.monkey.retromusic.databinding.ActivitySettingsBinding
+import code.name.monkey.retromusic.databinding.FragmentSettingsBinding
import code.name.monkey.retromusic.extensions.*
+import code.name.monkey.retromusic.fragments.base.AbsMusicServiceFragment
+import code.name.monkey.retromusic.helper.MusicPlayerRemote
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.color.ColorCallback
-class SettingsActivity : AbsBaseActivity(), ColorCallback, OnThemeChangedListener {
- private lateinit var binding: ActivitySettingsBinding
+class SettingsFragment : AbsMusicServiceFragment(R.layout.fragment_settings), ColorCallback {
+ private var _binding: FragmentSettingsBinding? = null
+ private val binding get() = _binding!!
+
override fun onCreate(savedInstanceState: Bundle?) {
val mSavedInstanceState = extra(TAG).value ?: savedInstanceState
super.onCreate(mSavedInstanceState)
- binding = ActivitySettingsBinding.inflate(layoutInflater)
- setContentView(binding.root)
- setupToolbar()
- setPermissionDeniedMessage(getString(R.string.permission_bluetooth_denied))
}
- override fun onResume() {
- super.onResume()
- setNavigationBarColorPreOreo(surfaceColor())
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ _binding = FragmentSettingsBinding.bind(view)
+ setupToolbar()
+ updateBottomPadding()
}
private fun setupToolbar() {
applyToolbar(binding.toolbar)
+ binding.toolbar.setNavigationOnClickListener {
+ requireActivity().onBackPressed()
+ }
val navController: NavController = findNavController(R.id.contentFrame)
navController.addOnDestinationChangedListener { _, _, _ ->
binding.collapsingToolbarLayout.title =
@@ -72,48 +74,32 @@ class SettingsActivity : AbsBaseActivity(), ColorCallback, OnThemeChangedListene
return getString(idRes)
}
- override fun onSupportNavigateUp(): Boolean {
- return findNavController(R.id.contentFrame).navigateUp() || super.onSupportNavigateUp()
- }
-
- override fun onOptionsItemSelected(item: MenuItem): Boolean {
- if (item.itemId == android.R.id.home) {
- onBackPressed()
- }
- return super.onOptionsItemSelected(item)
- }
-
- override fun getPermissionsToRequest(): Array {
- return if (VersionUtils.hasS()) {
- arrayOf(BLUETOOTH_CONNECT)
- } else {
- arrayOf()
- }
- }
-
override fun invoke(dialog: MaterialDialog, color: Int) {
- ThemeStore.editTheme(this).accentColor(color).commit()
+ ThemeStore.editTheme(requireContext()).accentColor(color).commit()
if (VersionUtils.hasNougatMR())
- DynamicShortcutManager(this).updateDynamicShortcuts()
- restart()
+ DynamicShortcutManager(requireContext()).updateDynamicShortcuts()
+ restartActivity()
}
- override fun onThemeValuesChanged() {
- restart()
- }
-
- private fun restart() {
- val savedInstanceState = Bundle().apply {
- onSaveInstanceState(this)
+ fun restartActivity() {
+ if (activity is OnThemeChangedListener && !VersionUtils.hasS()) {
+ (activity as OnThemeChangedListener).onThemeValuesChanged()
+ } else {
+ activity?.recreate()
}
- finish()
- val intent = Intent(this, this::class.java).putExtra(TAG, savedInstanceState)
- startActivity(intent)
- overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
+ }
+
+ override fun onQueueChanged() {
+ updateBottomPadding()
+ }
+
+ private fun updateBottomPadding() {
+ binding.root.updatePadding(
+ bottom = if (MusicPlayerRemote.playingQueue.isEmpty()) 0 else dip(R.dimen.mini_player_height))
}
companion object {
- val TAG: String = SettingsActivity::class.java.simpleName
+ val TAG: String = SettingsFragment::class.java.simpleName
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
index 6d339be7c..f0be5ae6b 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
@@ -29,6 +29,9 @@ import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.*
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
import code.name.monkey.retromusic.extensions.materialDialog
+import code.name.monkey.retromusic.fragments.NowPlayingScreen.Normal
+import code.name.monkey.retromusic.fragments.NowPlayingScreen.Material
+import code.name.monkey.retromusic.fragments.NowPlayingScreen.Flat
import code.name.monkey.retromusic.util.PreferenceUtil
import com.afollestad.materialdialogs.color.colorChooser
import com.google.android.material.color.DynamicColors
@@ -130,6 +133,10 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
restartActivity()
true
}
+
+ val adaptiveColor: ATESwitchPreference? = findPreference(ADAPTIVE_COLOR_APP)
+ adaptiveColor?.isEnabled =
+ PreferenceUtil.nowPlayingScreen in listOf(Normal, Material, Flat)
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt
index fdbcb48e9..a49f5ccef 100644
--- a/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt
@@ -377,7 +377,6 @@ class RealRepository(
}
override suspend fun suggestions(): List {
- if (!PreferenceUtil.homeSuggestions) return listOf()
return NotPlayedPlaylist().songs().shuffled().takeIf {
it.size > 9
} ?: emptyList()
diff --git a/app/src/main/java/code/name/monkey/retromusic/views/HomeImageLayout.kt b/app/src/main/java/code/name/monkey/retromusic/views/HomeImageLayout.kt
index 1a84dc8e5..015bf3951 100644
--- a/app/src/main/java/code/name/monkey/retromusic/views/HomeImageLayout.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/views/HomeImageLayout.kt
@@ -20,7 +20,7 @@ class HomeImageLayout @JvmOverloads constructor(
private var bannerImageBinding: BannerImageLayoutBinding? = null
init {
- if (PreferenceUtil.isHomeBanner) {
+ if (isInEditMode || PreferenceUtil.isHomeBanner) {
bannerImageBinding = BannerImageLayoutBinding.inflate(LayoutInflater.from(context), this, true)
} else {
userImageBinding = UserImageLayoutBinding.inflate(LayoutInflater.from(context), this, true)
diff --git a/app/src/main/res/layout/fragment_folder.xml b/app/src/main/res/layout/fragment_folder.xml
index 6521a4a0a..2fae59bce 100644
--- a/app/src/main/res/layout/fragment_folder.xml
+++ b/app/src/main/res/layout/fragment_folder.xml
@@ -7,7 +7,16 @@
android:fitsSystemWindows="true"
android:transitionGroup="true">
-
+
+
-
+
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/fragment_settings.xml
similarity index 100%
rename from app/src/main/res/layout/activity_settings.xml
rename to app/src/main/res/layout/fragment_settings.xml
diff --git a/app/src/main/res/navigation/main_graph.xml b/app/src/main/res/navigation/main_graph.xml
index 63ecf9dc7..b6c840c52 100644
--- a/app/src/main/res/navigation/main_graph.xml
+++ b/app/src/main/res/navigation/main_graph.xml
@@ -75,10 +75,9 @@
android:label="SearchFragment"
tools:layout="@layout/fragment_search" />
-
+
20dp
-
48dp
112dp
@@ -13,10 +12,8 @@
8dp
56dp
- 64dp
128dp
- 136dp
72dp
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 9452f0649..6e466ba72 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -247,5 +247,11 @@
+
+