[Settings] Mini player in Settings (Converted Settings activity to fragment)
This commit is contained in:
parent
aa96993584
commit
d65f8f8a4f
29 changed files with 206 additions and 158 deletions
|
@ -165,6 +165,6 @@ dependencies {
|
||||||
implementation 'com.github.dhaval2404:imagepicker:2.1'
|
implementation 'com.github.dhaval2404:imagepicker:2.1'
|
||||||
implementation 'me.zhanghai.android.fastscroll:library:1.1.8'
|
implementation 'me.zhanghai.android.fastscroll:library:1.1.8'
|
||||||
implementation 'cat.ereza:customactivityoncrash:2.3.0'
|
implementation 'cat.ereza:customactivityoncrash:2.3.0'
|
||||||
implementation 'me.tankery.lib:circularSeekBar:1.3.2'
|
implementation 'me.tankery.lib:circularSeekBar:1.4.0'
|
||||||
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
|
//debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
|
||||||
}
|
}
|
|
@ -116,7 +116,6 @@
|
||||||
<data android:mimeType="vnd.android.cursor.dir/audio" />
|
<data android:mimeType="vnd.android.cursor.dir/audio" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity android:name=".activities.SettingsActivity" />
|
|
||||||
<activity android:name=".activities.tageditor.AlbumTagEditorActivity" />
|
<activity android:name=".activities.tageditor.AlbumTagEditorActivity" />
|
||||||
<activity android:name=".activities.tageditor.SongTagEditorActivity" />
|
<activity android:name=".activities.tageditor.SongTagEditorActivity" />
|
||||||
<activity android:name=".activities.SupportDevelopmentActivity" />
|
<activity android:name=".activities.SupportDevelopmentActivity" />
|
||||||
|
|
|
@ -88,12 +88,7 @@ const val CIRCULAR_ALBUM_ART = "circular_album_art"
|
||||||
const val USER_NAME = "user_name"
|
const val USER_NAME = "user_name"
|
||||||
const val TOGGLE_FULL_SCREEN = "toggle_full_screen"
|
const val TOGGLE_FULL_SCREEN = "toggle_full_screen"
|
||||||
const val TOGGLE_VOLUME = "toggle_volume"
|
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 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_ARTIST_GRID_STYLE = "home_artist_grid_style"
|
||||||
const val HOME_ALBUM_GRID_STYLE = "home_album_grid_style"
|
const val HOME_ALBUM_GRID_STYLE = "home_album_grid_style"
|
||||||
const val TOGGLE_ADD_CONTROLS = "toggle_add_controls"
|
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_SORT_ORDER = "song_sort_order"
|
||||||
const val SONG_GRID_SIZE = "song_grid_size"
|
const val SONG_GRID_SIZE = "song_grid_size"
|
||||||
const val GENRE_SORT_ORDER = "genre_sort_order"
|
const val GENRE_SORT_ORDER = "genre_sort_order"
|
||||||
const val LAST_PAGE = "last_start_page"
|
|
||||||
const val BLUETOOTH_PLAYBACK = "bluetooth_playback"
|
const val BLUETOOTH_PLAYBACK = "bluetooth_playback"
|
||||||
const val INITIALIZED_BLACKLIST = "initialized_blacklist"
|
const val INITIALIZED_BLACKLIST = "initialized_blacklist"
|
||||||
const val ARTIST_SORT_ORDER = "artist_sort_order"
|
const val ARTIST_SORT_ORDER = "artist_sort_order"
|
||||||
|
|
|
@ -15,18 +15,17 @@
|
||||||
package code.name.monkey.retromusic.activities
|
package code.name.monkey.retromusic.activities
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.SharedPreferences
|
|
||||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.contains
|
import androidx.navigation.contains
|
||||||
import androidx.navigation.ui.setupWithNavController
|
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.activities.base.AbsCastActivity
|
||||||
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
|
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
|
||||||
import code.name.monkey.retromusic.extensions.*
|
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.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.SearchQueryHelper.getSongs
|
import code.name.monkey.retromusic.helper.SearchQueryHelper.getSongs
|
||||||
import code.name.monkey.retromusic.interfaces.IScrollHelper
|
import code.name.monkey.retromusic.interfaces.IScrollHelper
|
||||||
|
@ -40,7 +39,7 @@ import kotlinx.coroutines.Dispatchers.IO
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.koin.android.ext.android.get
|
import org.koin.android.ext.android.get
|
||||||
|
|
||||||
class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
|
class MainActivity : AbsCastActivity(), OnThemeChangedListener {
|
||||||
companion object {
|
companion object {
|
||||||
const val TAG = "MainActivity"
|
const val TAG = "MainActivity"
|
||||||
const val EXPAND_PANEL = "expand_panel"
|
const val EXPAND_PANEL = "expand_panel"
|
||||||
|
@ -137,20 +136,18 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onThemeValuesChanged() {
|
||||||
super.onResume()
|
restart()
|
||||||
PreferenceUtil.registerOnSharedPreferenceChangedListener(this)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
private fun restart() {
|
||||||
super.onDestroy()
|
val savedInstanceState = Bundle().apply {
|
||||||
PreferenceUtil.unregisterOnSharedPreferenceChangedListener(this)
|
onSaveInstanceState(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()
|
|
||||||
}
|
}
|
||||||
|
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() {
|
override fun onServiceConnected() {
|
||||||
|
|
|
@ -16,6 +16,7 @@ package code.name.monkey.retromusic.activities.base
|
||||||
|
|
||||||
import android.animation.ArgbEvaluator
|
import android.animation.ArgbEvaluator
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
||||||
|
import android.content.SharedPreferences
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
@ -29,7 +30,7 @@ import androidx.core.view.*
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.commit
|
import androidx.fragment.app.commit
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
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.databinding.SlidingMusicPanelLayoutBinding
|
||||||
import code.name.monkey.retromusic.extensions.*
|
import code.name.monkey.retromusic.extensions.*
|
||||||
import code.name.monkey.retromusic.fragments.LibraryViewModel
|
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
|
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||||
|
|
||||||
|
|
||||||
abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(),
|
||||||
|
SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
companion object {
|
companion object {
|
||||||
val TAG: String = AbsSlidingMusicPanelActivity::class.java.simpleName
|
val TAG: String = AbsSlidingMusicPanelActivity::class.java.simpleName
|
||||||
}
|
}
|
||||||
|
@ -166,6 +168,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
|
PreferenceUtil.registerOnSharedPreferenceChangedListener(this)
|
||||||
if (nowPlayingScreen != PreferenceUtil.nowPlayingScreen) {
|
if (nowPlayingScreen != PreferenceUtil.nowPlayingScreen) {
|
||||||
postRecreate()
|
postRecreate()
|
||||||
}
|
}
|
||||||
|
@ -177,6 +180,46 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
bottomSheetBehavior.removeBottomSheetCallback(bottomSheetCallbackList)
|
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 {
|
protected fun wrapSlidingMusicPanel(): SlidingMusicPanelLayoutBinding {
|
||||||
|
@ -367,6 +410,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if (visible xor bottomNavigationView.isVisible) {
|
||||||
val mAnimate = animate && bottomSheetBehavior.state == STATE_COLLAPSED
|
val mAnimate = animate && bottomSheetBehavior.state == STATE_COLLAPSED
|
||||||
if (mAnimate) {
|
if (mAnimate) {
|
||||||
if (visible) {
|
if (visible) {
|
||||||
|
@ -381,6 +425,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
||||||
binding.bottomNavigationView.bringToFront()
|
binding.bottomNavigationView.bringToFront()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
hideBottomSheet(
|
hideBottomSheet(
|
||||||
hide = hideBottomSheet,
|
hide = hideBottomSheet,
|
||||||
animate = animate,
|
animate = animate,
|
||||||
|
@ -393,10 +438,10 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
||||||
animate: Boolean = false,
|
animate: Boolean = false,
|
||||||
isBottomNavVisible: Boolean = bottomNavigationView.isVisible,
|
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)
|
val heightOfBarWithTabs = heightOfBar + dip(R.dimen.bottom_nav_height)
|
||||||
if (hide) {
|
if (hide) {
|
||||||
bottomSheetBehavior.peekHeight = -windowInsets.safeGetBottomInsets()
|
bottomSheetBehavior.peekHeight = -windowInsets.getBottomInsets()
|
||||||
bottomSheetBehavior.state = STATE_COLLAPSED
|
bottomSheetBehavior.state = STATE_COLLAPSED
|
||||||
libraryViewModel.setFabMargin(
|
libraryViewModel.setFabMargin(
|
||||||
this,
|
this,
|
||||||
|
@ -458,7 +503,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
||||||
Classic -> ClassicPlayerFragment()
|
Classic -> ClassicPlayerFragment()
|
||||||
MD3 -> MD3PlayerFragment()
|
MD3 -> MD3PlayerFragment()
|
||||||
else -> PlayerFragment()
|
else -> PlayerFragment()
|
||||||
} // must implement AbsPlayerFragment
|
} // must extend AbsPlayerFragment
|
||||||
supportFragmentManager.commit {
|
supportFragmentManager.commit {
|
||||||
replace(R.id.playerFragmentContainer, fragment)
|
replace(R.id.playerFragmentContainer, fragment)
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setEdgeToEdgeOrImmersive()
|
setEdgeToEdgeOrImmersive()
|
||||||
registerSystemUiVisibility()
|
registerSystemUiVisibility()
|
||||||
toggleScreenOn()
|
maybeSetScreenOn()
|
||||||
setLightNavigationBarAuto()
|
setLightNavigationBarAuto()
|
||||||
setLightStatusBarAuto(surfaceColor())
|
setLightStatusBarAuto(surfaceColor())
|
||||||
if (VersionUtils.hasQ()) {
|
if (VersionUtils.hasQ()) {
|
||||||
|
@ -61,9 +61,6 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
|
||||||
if (PreferenceUtil.isCustomFont) {
|
if (PreferenceUtil.isCustomFont) {
|
||||||
setTheme(R.style.FontThemeOverlay)
|
setTheme(R.style.FontThemeOverlay)
|
||||||
}
|
}
|
||||||
if (PreferenceUtil.circlePlayButton) {
|
|
||||||
setTheme(R.style.CircleFABOverlay)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onWindowFocusChanged(hasFocus: Boolean) {
|
override fun onWindowFocusChanged(hasFocus: Boolean) {
|
||||||
|
|
|
@ -16,7 +16,7 @@ import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
|
|
||||||
fun AppCompatActivity.toggleScreenOn() {
|
fun AppCompatActivity.maybeSetScreenOn() {
|
||||||
if (PreferenceUtil.isScreenOnEnabled) {
|
if (PreferenceUtil.isScreenOnEnabled) {
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import androidx.core.view.WindowInsetsCompat
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
import code.name.monkey.retromusic.util.RetroUtil
|
||||||
|
|
||||||
fun WindowInsetsCompat?.safeGetBottomInsets(): Int {
|
fun WindowInsetsCompat?.getBottomInsets(): Int {
|
||||||
return if (PreferenceUtil.isFullScreenMode) {
|
return if (PreferenceUtil.isFullScreenMode) {
|
||||||
return 0
|
return 0
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -119,6 +119,11 @@ fun BottomNavigationView.show() {
|
||||||
fun BottomNavigationView.hide() {
|
fun BottomNavigationView.hide() {
|
||||||
if (isGone) return
|
if (isGone) return
|
||||||
|
|
||||||
|
if (!isLaidOut) {
|
||||||
|
isGone = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
val drawable = BitmapDrawable(context.resources, drawToBitmap())
|
val drawable = BitmapDrawable(context.resources, drawToBitmap())
|
||||||
val parent = parent as ViewGroup
|
val parent = parent as ViewGroup
|
||||||
drawable.setBounds(left, top, right, bottom)
|
drawable.setBounds(left, top, right, bottom)
|
||||||
|
@ -255,7 +260,7 @@ fun View.updateMargin(
|
||||||
@Px left: Int = marginLeft,
|
@Px left: Int = marginLeft,
|
||||||
@Px top: Int = marginTop,
|
@Px top: Int = marginTop,
|
||||||
@Px right: Int = marginRight,
|
@Px right: Int = marginRight,
|
||||||
@Px bottom: Int = marginBottom
|
@Px bottom: Int = marginBottom,
|
||||||
) {
|
) {
|
||||||
(layoutParams as ViewGroup.MarginLayoutParams).updateMargins(left, top, right, bottom)
|
(layoutParams as ViewGroup.MarginLayoutParams).updateMargins(left, top, right, bottom)
|
||||||
}
|
}
|
||||||
|
@ -296,7 +301,7 @@ fun View.requestApplyInsetsWhenAttached() {
|
||||||
|
|
||||||
data class InitialPadding(
|
data class InitialPadding(
|
||||||
val left: Int, val top: Int,
|
val left: Int, val top: Int,
|
||||||
val right: Int, val bottom: Int
|
val right: Int, val bottom: Int,
|
||||||
)
|
)
|
||||||
|
|
||||||
fun recordInitialPaddingForView(view: View) = InitialPadding(
|
fun recordInitialPaddingForView(view: View) = InitialPadding(
|
||||||
|
|
|
@ -163,8 +163,10 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMusicServiceFragme
|
||||||
R.id.now_playing -> {
|
R.id.now_playing -> {
|
||||||
requireActivity().findNavController(R.id.fragment_container).navigate(
|
requireActivity().findNavController(R.id.fragment_container).navigate(
|
||||||
R.id.playing_queue_fragment,
|
R.id.playing_queue_fragment,
|
||||||
null
|
null,
|
||||||
|
navOptions { launchSingleTop = true }
|
||||||
)
|
)
|
||||||
|
mainActivity.collapsePanel()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
R.id.action_show_lyrics -> {
|
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?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
if (PreferenceUtil.isFullScreenMode &&
|
if (PreferenceUtil.isFullScreenMode &&
|
||||||
|
@ -421,8 +432,7 @@ fun goToLyrics(activity: Activity) {
|
||||||
findNavController(R.id.fragment_container).navigate(
|
findNavController(R.id.fragment_container).navigate(
|
||||||
R.id.lyrics_fragment,
|
R.id.lyrics_fragment,
|
||||||
null,
|
null,
|
||||||
navOptions { launchSingleTop = true },
|
navOptions { launchSingleTop = true }
|
||||||
null
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -216,7 +216,7 @@ abstract class AbsRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : Recycle
|
||||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.action_settings -> findNavController().navigate(
|
R.id.action_settings -> findNavController().navigate(
|
||||||
R.id.settingsActivity,
|
R.id.settings_fragment,
|
||||||
null,
|
null,
|
||||||
navOptions
|
navOptions
|
||||||
)
|
)
|
||||||
|
|
|
@ -374,7 +374,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
}
|
}
|
||||||
R.id.action_settings -> {
|
R.id.action_settings -> {
|
||||||
findNavController().navigate(
|
findNavController().navigate(
|
||||||
R.id.settingsActivity,
|
R.id.settings_fragment,
|
||||||
null,
|
null,
|
||||||
navOptions
|
navOptions
|
||||||
)
|
)
|
||||||
|
|
|
@ -47,6 +47,7 @@ import code.name.monkey.retromusic.glide.RetroGlideExtension
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.interfaces.IScrollHelper
|
import code.name.monkey.retromusic.interfaces.IScrollHelper
|
||||||
import code.name.monkey.retromusic.model.Song
|
import code.name.monkey.retromusic.model.Song
|
||||||
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil.userName
|
import code.name.monkey.retromusic.util.PreferenceUtil.userName
|
||||||
import com.google.android.gms.cast.framework.CastButtonFactory
|
import com.google.android.gms.cast.framework.CastButtonFactory
|
||||||
import com.google.android.material.shape.MaterialShapeDrawable
|
import com.google.android.material.shape.MaterialShapeDrawable
|
||||||
|
@ -221,7 +222,7 @@ class HomeFragment :
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun loadSuggestions(songs: List<Song>) {
|
private fun loadSuggestions(songs: List<Song>) {
|
||||||
if (songs.isEmpty()) {
|
if (!PreferenceUtil.homeSuggestions || songs.isEmpty()) {
|
||||||
binding.suggestions.root.isVisible = false
|
binding.suggestions.root.isVisible = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -277,7 +278,7 @@ class HomeFragment :
|
||||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.action_settings -> findNavController().navigate(
|
R.id.action_settings -> findNavController().navigate(
|
||||||
R.id.settingsActivity,
|
R.id.settings_fragment,
|
||||||
null,
|
null,
|
||||||
navOptions
|
navOptions
|
||||||
)
|
)
|
||||||
|
|
|
@ -105,7 +105,7 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) {
|
||||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.action_settings -> findNavController().navigate(
|
R.id.action_settings -> findNavController().navigate(
|
||||||
R.id.settingsActivity,
|
R.id.settings_fragment,
|
||||||
null,
|
null,
|
||||||
navOptions
|
navOptions
|
||||||
)
|
)
|
||||||
|
|
|
@ -66,7 +66,10 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(R.layout.fragment_mini_p
|
||||||
_binding = FragmentMiniPlayerBinding.bind(view)
|
_binding = FragmentMiniPlayerBinding.bind(view)
|
||||||
view.setOnTouchListener(FlingPlayBackController(requireContext()))
|
view.setOnTouchListener(FlingPlayBackController(requireContext()))
|
||||||
setUpMiniPlayer()
|
setUpMiniPlayer()
|
||||||
|
setUpButtons()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setUpButtons() {
|
||||||
if (RetroUtil.isTablet) {
|
if (RetroUtil.isTablet) {
|
||||||
binding.actionNext.show()
|
binding.actionNext.show()
|
||||||
binding.actionPrevious.show()
|
binding.actionPrevious.show()
|
||||||
|
|
|
@ -28,9 +28,7 @@ import androidx.preference.PreferenceManager
|
||||||
import androidx.viewpager.widget.ViewPager
|
import androidx.viewpager.widget.ViewPager
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
import code.name.monkey.retromusic.LYRICS_TYPE
|
import code.name.monkey.retromusic.*
|
||||||
import code.name.monkey.retromusic.R
|
|
||||||
import code.name.monkey.retromusic.SHOW_LYRICS
|
|
||||||
import code.name.monkey.retromusic.adapter.album.AlbumCoverPagerAdapter
|
import code.name.monkey.retromusic.adapter.album.AlbumCoverPagerAdapter
|
||||||
import code.name.monkey.retromusic.adapter.album.AlbumCoverPagerAdapter.AlbumCoverFragment
|
import code.name.monkey.retromusic.adapter.album.AlbumCoverPagerAdapter.AlbumCoverFragment
|
||||||
import code.name.monkey.retromusic.databinding.FragmentPlayerAlbumCoverBinding
|
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?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
_binding = FragmentPlayerAlbumCoverBinding.bind(view)
|
_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)
|
binding.viewPager.addOnPageChangeListener(this)
|
||||||
val nps = PreferenceUtil.nowPlayingScreen
|
val nps = PreferenceUtil.nowPlayingScreen
|
||||||
|
|
||||||
|
@ -140,18 +154,6 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(R.layout.fragment_playe
|
||||||
PreferenceUtil.albumCoverTransform
|
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() {
|
override fun onResume() {
|
||||||
|
@ -185,17 +187,20 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(R.layout.fragment_playe
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String?) {
|
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String?) {
|
||||||
if (key == SHOW_LYRICS) {
|
when (key) {
|
||||||
if (sharedPreferences.getBoolean(key, false)) {
|
SHOW_LYRICS -> {
|
||||||
|
if (PreferenceUtil.showLyrics) {
|
||||||
maybeInitLyrics()
|
maybeInitLyrics()
|
||||||
} else {
|
} else {
|
||||||
showLyrics(false)
|
showLyrics(false)
|
||||||
progressViewUpdateHelper?.stop()
|
progressViewUpdateHelper?.stop()
|
||||||
}
|
}
|
||||||
} else if (key == LYRICS_TYPE) {
|
}
|
||||||
|
LYRICS_TYPE -> {
|
||||||
maybeInitLyrics()
|
maybeInitLyrics()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setLRCViewColors(@ColorInt primaryColor: Int, @ColorInt secondaryColor: Int) {
|
private fun setLRCViewColors(@ColorInt primaryColor: Int, @ColorInt secondaryColor: Int) {
|
||||||
lrcView.apply {
|
lrcView.apply {
|
||||||
|
|
|
@ -161,7 +161,7 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play
|
||||||
ViewCompat.setOnApplyWindowInsetsListener(
|
ViewCompat.setOnApplyWindowInsetsListener(
|
||||||
(binding.container)
|
(binding.container)
|
||||||
) { v: View, insets: WindowInsetsCompat ->
|
) { v: View, insets: WindowInsetsCompat ->
|
||||||
navBarHeight = insets.safeGetBottomInsets()
|
navBarHeight = insets.getBottomInsets()
|
||||||
v.updatePadding(bottom = navBarHeight)
|
v.updatePadding(bottom = navBarHeight)
|
||||||
insets
|
insets
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,9 @@ class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_q
|
||||||
private var playingQueueAdapter: PlayingQueueAdapter? = null
|
private var playingQueueAdapter: PlayingQueueAdapter? = null
|
||||||
private lateinit var linearLayoutManager: LinearLayoutManager
|
private lateinit var linearLayoutManager: LinearLayoutManager
|
||||||
|
|
||||||
|
val mainActivity: MainActivity
|
||||||
|
get() = activity as MainActivity
|
||||||
|
|
||||||
private fun getUpNextAndQueueTime(): String {
|
private fun getUpNextAndQueueTime(): String {
|
||||||
val duration = MusicPlayerRemote.getQueueDurationMillis(MusicPlayerRemote.position)
|
val duration = MusicPlayerRemote.getQueueDurationMillis(MusicPlayerRemote.position)
|
||||||
return MusicUtil.buildInfoString(
|
return MusicUtil.buildInfoString(
|
||||||
|
@ -69,6 +72,7 @@ class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_q
|
||||||
MusicPlayerRemote.clearQueue()
|
MusicPlayerRemote.clearQueue()
|
||||||
}
|
}
|
||||||
checkForPadding()
|
checkForPadding()
|
||||||
|
mainActivity.collapsePanel()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setUpRecyclerView() {
|
private fun setUpRecyclerView() {
|
||||||
|
@ -175,7 +179,7 @@ class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_q
|
||||||
playingQueueAdapter = null
|
playingQueueAdapter = null
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
if (MusicPlayerRemote.playingQueue.isNotEmpty())
|
if (MusicPlayerRemote.playingQueue.isNotEmpty())
|
||||||
(requireActivity() as MainActivity).expandPanel()
|
mainActivity.expandPanel()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupToolbar() {
|
private fun setupToolbar() {
|
||||||
|
|
|
@ -25,7 +25,6 @@ import androidx.preference.PreferenceManager
|
||||||
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat
|
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
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.extensions.showToast
|
||||||
import code.name.monkey.retromusic.preferences.*
|
import code.name.monkey.retromusic.preferences.*
|
||||||
import code.name.monkey.retromusic.util.NavigationUtil
|
import code.name.monkey.retromusic.util.NavigationUtil
|
||||||
|
|
|
@ -22,18 +22,12 @@ import code.name.monkey.retromusic.*
|
||||||
|
|
||||||
class PersonalizeSettingsFragment : AbsSettingsFragment() {
|
class PersonalizeSettingsFragment : AbsSettingsFragment() {
|
||||||
|
|
||||||
override fun invalidateSettings() {
|
|
||||||
val toggleFullScreen: TwoStatePreference? = findPreference(TOGGLE_FULL_SCREEN)
|
|
||||||
toggleFullScreen?.setOnPreferenceChangeListener { _, _ ->
|
|
||||||
restartActivity()
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
addPreferencesFromResource(R.xml.pref_ui)
|
addPreferencesFromResource(R.xml.pref_ui)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun invalidateSettings() {}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
val homeArtistStyle: ATEListPreference? = findPreference(HOME_ARTIST_GRID_STYLE)
|
val homeArtistStyle: ATEListPreference? = findPreference(HOME_ARTIST_GRID_STYLE)
|
||||||
|
|
|
@ -12,42 +12,44 @@
|
||||||
* See the GNU General Public License for more details.
|
* 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.os.Bundle
|
||||||
import android.view.MenuItem
|
import android.view.View
|
||||||
|
import androidx.core.view.updatePadding
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.NavDestination
|
import androidx.navigation.NavDestination
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
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.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.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.MaterialDialog
|
||||||
import com.afollestad.materialdialogs.color.ColorCallback
|
import com.afollestad.materialdialogs.color.ColorCallback
|
||||||
|
|
||||||
class SettingsActivity : AbsBaseActivity(), ColorCallback, OnThemeChangedListener {
|
class SettingsFragment : AbsMusicServiceFragment(R.layout.fragment_settings), ColorCallback {
|
||||||
private lateinit var binding: ActivitySettingsBinding
|
private var _binding: FragmentSettingsBinding? = null
|
||||||
|
private val binding get() = _binding!!
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
val mSavedInstanceState = extra<Bundle>(TAG).value ?: savedInstanceState
|
val mSavedInstanceState = extra<Bundle>(TAG).value ?: savedInstanceState
|
||||||
super.onCreate(mSavedInstanceState)
|
super.onCreate(mSavedInstanceState)
|
||||||
binding = ActivitySettingsBinding.inflate(layoutInflater)
|
|
||||||
setContentView(binding.root)
|
|
||||||
setupToolbar()
|
|
||||||
setPermissionDeniedMessage(getString(R.string.permission_bluetooth_denied))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onResume()
|
_binding = FragmentSettingsBinding.bind(view)
|
||||||
setNavigationBarColorPreOreo(surfaceColor())
|
setupToolbar()
|
||||||
|
updateBottomPadding()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupToolbar() {
|
private fun setupToolbar() {
|
||||||
applyToolbar(binding.toolbar)
|
applyToolbar(binding.toolbar)
|
||||||
|
binding.toolbar.setNavigationOnClickListener {
|
||||||
|
requireActivity().onBackPressed()
|
||||||
|
}
|
||||||
val navController: NavController = findNavController(R.id.contentFrame)
|
val navController: NavController = findNavController(R.id.contentFrame)
|
||||||
navController.addOnDestinationChangedListener { _, _, _ ->
|
navController.addOnDestinationChangedListener { _, _, _ ->
|
||||||
binding.collapsingToolbarLayout.title =
|
binding.collapsingToolbarLayout.title =
|
||||||
|
@ -72,48 +74,32 @@ class SettingsActivity : AbsBaseActivity(), ColorCallback, OnThemeChangedListene
|
||||||
return getString(idRes)
|
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<String> {
|
|
||||||
return if (VersionUtils.hasS()) {
|
|
||||||
arrayOf(BLUETOOTH_CONNECT)
|
|
||||||
} else {
|
|
||||||
arrayOf()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun invoke(dialog: MaterialDialog, color: Int) {
|
override fun invoke(dialog: MaterialDialog, color: Int) {
|
||||||
ThemeStore.editTheme(this).accentColor(color).commit()
|
ThemeStore.editTheme(requireContext()).accentColor(color).commit()
|
||||||
if (VersionUtils.hasNougatMR())
|
if (VersionUtils.hasNougatMR())
|
||||||
DynamicShortcutManager(this).updateDynamicShortcuts()
|
DynamicShortcutManager(requireContext()).updateDynamicShortcuts()
|
||||||
restart()
|
restartActivity()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onThemeValuesChanged() {
|
fun restartActivity() {
|
||||||
restart()
|
if (activity is OnThemeChangedListener && !VersionUtils.hasS()) {
|
||||||
|
(activity as OnThemeChangedListener).onThemeValuesChanged()
|
||||||
|
} else {
|
||||||
|
activity?.recreate()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun restart() {
|
override fun onQueueChanged() {
|
||||||
val savedInstanceState = Bundle().apply {
|
updateBottomPadding()
|
||||||
onSaveInstanceState(this)
|
|
||||||
}
|
}
|
||||||
finish()
|
|
||||||
val intent = Intent(this, this::class.java).putExtra(TAG, savedInstanceState)
|
private fun updateBottomPadding() {
|
||||||
startActivity(intent)
|
binding.root.updatePadding(
|
||||||
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
|
bottom = if (MusicPlayerRemote.playingQueue.isEmpty()) 0 else dip(R.dimen.mini_player_height))
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val TAG: String = SettingsActivity::class.java.simpleName
|
val TAG: String = SettingsFragment::class.java.simpleName
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,9 @@ import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.*
|
import code.name.monkey.retromusic.*
|
||||||
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
|
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
|
||||||
import code.name.monkey.retromusic.extensions.materialDialog
|
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 code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import com.afollestad.materialdialogs.color.colorChooser
|
import com.afollestad.materialdialogs.color.colorChooser
|
||||||
import com.google.android.material.color.DynamicColors
|
import com.google.android.material.color.DynamicColors
|
||||||
|
@ -130,6 +133,10 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
|
||||||
restartActivity()
|
restartActivity()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val adaptiveColor: ATESwitchPreference? = findPreference(ADAPTIVE_COLOR_APP)
|
||||||
|
adaptiveColor?.isEnabled =
|
||||||
|
PreferenceUtil.nowPlayingScreen in listOf(Normal, Material, Flat)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
|
|
|
@ -377,7 +377,6 @@ class RealRepository(
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun suggestions(): List<Song> {
|
override suspend fun suggestions(): List<Song> {
|
||||||
if (!PreferenceUtil.homeSuggestions) return listOf()
|
|
||||||
return NotPlayedPlaylist().songs().shuffled().takeIf {
|
return NotPlayedPlaylist().songs().shuffled().takeIf {
|
||||||
it.size > 9
|
it.size > 9
|
||||||
} ?: emptyList()
|
} ?: emptyList()
|
||||||
|
|
|
@ -20,7 +20,7 @@ class HomeImageLayout @JvmOverloads constructor(
|
||||||
private var bannerImageBinding: BannerImageLayoutBinding? = null
|
private var bannerImageBinding: BannerImageLayoutBinding? = null
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (PreferenceUtil.isHomeBanner) {
|
if (isInEditMode || PreferenceUtil.isHomeBanner) {
|
||||||
bannerImageBinding = BannerImageLayoutBinding.inflate(LayoutInflater.from(context), this, true)
|
bannerImageBinding = BannerImageLayoutBinding.inflate(LayoutInflater.from(context), this, true)
|
||||||
} else {
|
} else {
|
||||||
userImageBinding = UserImageLayoutBinding.inflate(LayoutInflater.from(context), this, true)
|
userImageBinding = UserImageLayoutBinding.inflate(LayoutInflater.from(context), this, true)
|
||||||
|
|
|
@ -7,7 +7,16 @@
|
||||||
android:fitsSystemWindows="true"
|
android:fitsSystemWindows="true"
|
||||||
android:transitionGroup="true">
|
android:transitionGroup="true">
|
||||||
|
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
<code.name.monkey.retromusic.views.insets.InsetsRecyclerView
|
||||||
|
android:id="@+id/recyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:overScrollMode="@integer/overScrollMode"
|
||||||
|
android:scrollbars="none"
|
||||||
|
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
|
||||||
|
|
||||||
|
<code.name.monkey.retromusic.views.TopAppBarLayout
|
||||||
android:id="@+id/appBarLayout"
|
android:id="@+id/appBarLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -46,7 +55,7 @@
|
||||||
android:paddingStart="60dp"
|
android:paddingStart="60dp"
|
||||||
android:paddingEnd="8dp"
|
android:paddingEnd="8dp"
|
||||||
app:layout_collapseMode="pin" />
|
app:layout_collapseMode="pin" />
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</code.name.monkey.retromusic.views.TopAppBarLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@android:id/empty"
|
android:id="@android:id/empty"
|
||||||
|
@ -77,12 +86,4 @@
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<code.name.monkey.retromusic.views.insets.InsetsRecyclerView
|
|
||||||
android:id="@+id/recyclerView"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:clipToPadding="false"
|
|
||||||
android:overScrollMode="@integer/overScrollMode"
|
|
||||||
android:scrollbars="none"
|
|
||||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
@ -75,10 +75,9 @@
|
||||||
android:label="SearchFragment"
|
android:label="SearchFragment"
|
||||||
tools:layout="@layout/fragment_search" />
|
tools:layout="@layout/fragment_search" />
|
||||||
|
|
||||||
<activity
|
<fragment
|
||||||
android:id="@+id/settingsActivity"
|
android:id="@+id/settings_fragment"
|
||||||
android:name="code.name.monkey.retromusic.activities.SettingsActivity"
|
android:name="code.name.monkey.retromusic.fragments.settings.SettingsFragment" />
|
||||||
android:label="SettingsActivity" />
|
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:id="@+id/permissionFragment"
|
android:id="@+id/permissionFragment"
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
|
|
||||||
<dimen name="progress_container_height">20dp</dimen>
|
<dimen name="progress_container_height">20dp</dimen>
|
||||||
|
|
||||||
|
|
||||||
<dimen name="tab_height">48dp</dimen>
|
<dimen name="tab_height">48dp</dimen>
|
||||||
|
|
||||||
<dimen name="notification_big_image_size">112dp</dimen>
|
<dimen name="notification_big_image_size">112dp</dimen>
|
||||||
|
@ -13,10 +12,8 @@
|
||||||
<dimen name="list_item_image_icon_padding">8dp</dimen>
|
<dimen name="list_item_image_icon_padding">8dp</dimen>
|
||||||
|
|
||||||
<dimen name="mini_player_height">56dp</dimen>
|
<dimen name="mini_player_height">56dp</dimen>
|
||||||
<dimen name="cast_mini_player_height">64dp</dimen>
|
|
||||||
|
|
||||||
<dimen name="mini_player_height_expanded">128dp</dimen>
|
<dimen name="mini_player_height_expanded">128dp</dimen>
|
||||||
<dimen name="mini_cast_player_height_expanded">136dp</dimen>
|
|
||||||
|
|
||||||
<dimen name="bottom_nav_height">72dp</dimen>
|
<dimen name="bottom_nav_height">72dp</dimen>
|
||||||
|
|
||||||
|
|
|
@ -247,5 +247,11 @@
|
||||||
</item>
|
</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="RoundedFABOverlay">
|
||||||
|
<item name="floatingActionButtonStyle">
|
||||||
|
@style/Widget.Material3.FloatingActionButton.Primary
|
||||||
|
</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Theme.AppWidget" parent="Theme.RetroMusic.FollowSystem" />
|
<style name="Theme.AppWidget" parent="Theme.RetroMusic.FollowSystem" />
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue