Constants names
Proper namings
Bottom tabs slide animation
Added home album list style change
This commit is contained in:
Hemanth S 2020-09-25 01:51:32 +05:30
parent b9c12e20dd
commit 9850341d4c
81 changed files with 291 additions and 231 deletions

View file

@ -76,6 +76,8 @@ const val BLURRED_ALBUM_ART = "blurred_album_art"
const val NEW_BLUR_AMOUNT = "new_blur_amount"
const val TOGGLE_HEADSET = "toggle_headset"
const val GENERAL_THEME = "general_theme"
const val ACCENT_COLOR = "accent_color"
const val SHOULD_COLOR_APP_SHORTCUTS = "should_color_app_shortcuts"
const val CIRCULAR_ALBUM_ART = "circular_album_art"
const val USER_NAME = "user_name"
const val TOGGLE_FULL_SCREEN = "toggle_full_screen"
@ -87,6 +89,7 @@ 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"
const val ALBUM_COVER_STYLE = "album_cover_style_id"
const val ALBUM_COVER_TRANSFORM = "album_cover_transform"
@ -127,6 +130,7 @@ const val ALBUM_ARTISTS_ONLY = "album_artists_only"
const val ALBUM_DETAIL_SONG_SORT_ORDER = "album_detail_song_sort_order"
const val LYRICS_OPTIONS = "lyrics_tab_position"
const val CHOOSE_EQUALIZER = "choose_equalizer"
const val EQUALIZER = "equalizer"
const val TOGGLE_SHUFFLE = "toggle_shuffle"
const val SONG_GRID_STYLE = "song_grid_style"
const val PAUSE_ON_ZERO_VOLUME = "pause_on_zero_volume"

View file

@ -8,16 +8,13 @@ import android.view.ViewTreeObserver
import android.widget.FrameLayout
import androidx.annotation.LayoutRes
import androidx.core.view.ViewCompat
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.RetroBottomSheetBehavior
import code.name.monkey.retromusic.extensions.hide
import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.extensions.whichFragment
import code.name.monkey.retromusic.extensions.*
import code.name.monkey.retromusic.fragments.LibraryViewModel
import code.name.monkey.retromusic.fragments.MiniPlayerFragment
import code.name.monkey.retromusic.fragments.NowPlayingScreen
@ -322,43 +319,35 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
val isQueueEmpty = MusicPlayerRemote.playingQueue.isEmpty()
when (state) {
EXPAND -> {
println("EXPAND")
expandPanel()
}
HIDE -> {
println("HIDE")
ViewCompat.setElevation(slidingPanel, 0f)
ViewCompat.setElevation(bottomNavigationView, 10f)
bottomSheetBehavior.isHideable = true
bottomSheetBehavior.setPeekHeight(0, false)
bottomSheetBehavior.peekHeightAnimate(0)
bottomNavigationView.translateXAnimate(0f)
bottomSheetBehavior.state = STATE_COLLAPSED
}
COLLAPSED_WITH -> {
println("COLLAPSED_WITH")
val heightOfBar = bottomNavigationView.height
val height = if (isQueueEmpty) 0 else (heightOfBar * 2) - 24
ViewCompat.setElevation(bottomNavigationView, 10f)
ViewCompat.setElevation(slidingPanel, 10f)
bottomSheetBehavior.isHideable = false
bottomSheetBehavior.setPeekHeight(
if (isQueueEmpty) 0 else (heightOfBar * 2) - 24,
false
)
bottomNavigationView.isVisible = true
bottomSheetBehavior.peekHeightAnimate(height)
bottomNavigationView.translateXAnimate(0f)
}
COLLAPSED_WITHOUT -> {
println("COLLAPSED_WITHOUT")
val heightOfBar = bottomNavigationView.height
val height = if (isQueueEmpty) 0 else heightOfBar - 24
ViewCompat.setElevation(bottomNavigationView, 10f)
ViewCompat.setElevation(slidingPanel, 10f)
bottomSheetBehavior.isHideable = false
bottomSheetBehavior.setPeekHeight(
if (isQueueEmpty) 0 else heightOfBar - 24,
false
)
bottomNavigationView.isGone = true
bottomSheetBehavior.peekHeightAnimate(height)
bottomNavigationView.translateXAnimate(150f)
}
else -> {
println("ELSE")
bottomSheetBehavior.isHideable = true
bottomSheetBehavior.peekHeight = 0
collapsePanel()

View file

@ -225,10 +225,10 @@ class HomeAdapter(
}
fun artistsAdapter(artists: List<Artist>) =
ArtistAdapter(activity, artists, PreferenceUtil.homeGridStyle, null, this)
ArtistAdapter(activity, artists, PreferenceUtil.homeArtistGridStyle, null, this)
fun albumAdapter(albums: List<Album>) =
AlbumAdapter(activity, albums, R.layout.item_image, null, this)
AlbumAdapter(activity, albums, PreferenceUtil.homeAlbumGridStyle, null, this)
fun gridLayoutManager() = GridLayoutManager(activity, 1, GridLayoutManager.HORIZONTAL, false)
fun linearLayoutManager() = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)

View file

@ -98,14 +98,14 @@ class AlbumCoverPagerAdapter(
private fun showLyricsDialog() {
lifecycleScope.launch(Dispatchers.IO) {
val data: String = MusicUtil.getLyrics(song) ?: "No lyrics found"
val data: String? = MusicUtil.getLyrics(song)
withContext(Dispatchers.Main) {
MaterialAlertDialogBuilder(
requireContext(),
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert
).apply {
setTitle(song.title)
setMessage(data)
setMessage(if (data.isNullOrEmpty()) "No lyrics found" else data)
setNegativeButton(R.string.synced_lyrics) { _, _ ->
NavigationUtil.goToLyrics(requireActivity())
}

View file

@ -20,6 +20,8 @@ import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import androidx.annotation.LayoutRes
import androidx.core.animation.doOnEnd
import androidx.core.animation.doOnStart
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.TintHelper
import com.google.android.material.bottomsheet.BottomSheetBehavior
@ -50,9 +52,20 @@ fun EditText.appHandleColor(): EditText {
fun View.translateXAnimate(value: Float) {
println("translateXAnimate $value")
ObjectAnimator.ofFloat(this, "translationY", value)
.apply {
duration = 300
doOnStart {
if (value == 0f) {
show()
}
}
doOnEnd {
if (value != 0f) {
hide()
}
}
start()
}
}

View file

@ -63,7 +63,6 @@ abstract class AbsSettingsFragment : ATEPreferenceFragmentCompat() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setDivider(ColorDrawable(Color.TRANSPARENT))
//listView.setBackgroundColor(ATHUtil.resolveColor(requireContext(), R.attr.colorSurface))
listView.overScrollMode = View.OVER_SCROLL_NEVER
listView.setPadding(0, 0, 0, 0)
listView.setPaddingRelative(0, 0, 0, 0)

View file

@ -18,6 +18,7 @@ import android.content.Intent
import android.media.audiofx.AudioEffect
import android.os.Bundle
import androidx.preference.Preference
import code.name.monkey.retromusic.EQUALIZER
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.util.NavigationUtil
@ -28,14 +29,14 @@ import code.name.monkey.retromusic.util.NavigationUtil
class AudioSettings : AbsSettingsFragment() {
override fun invalidateSettings() {
val findPreference: Preference = findPreference("equalizer")!!
val findPreference: Preference? = findPreference(EQUALIZER)
if (!hasEqualizer()) {
findPreference.isEnabled = false
findPreference.summary = resources.getString(R.string.no_equalizer)
findPreference?.isEnabled = false
findPreference?.summary = resources.getString(R.string.no_equalizer)
} else {
findPreference.isEnabled = true
findPreference?.isEnabled = true
}
findPreference.setOnPreferenceClickListener {
findPreference?.setOnPreferenceClickListener {
NavigationUtil.openEqualizer(requireActivity())
true
}

View file

@ -17,6 +17,7 @@ package code.name.monkey.retromusic.fragments.settings
import android.os.Bundle
import android.view.View
import androidx.preference.Preference
import code.name.monkey.retromusic.AUTO_DOWNLOAD_IMAGES_POLICY
import code.name.monkey.retromusic.R
/**
@ -25,7 +26,7 @@ import code.name.monkey.retromusic.R
class ImageSettingFragment : AbsSettingsFragment() {
override fun invalidateSettings() {
val autoDownloadImagesPolicy: Preference = findPreference("auto_download_images_policy")!!
val autoDownloadImagesPolicy: Preference = findPreference(AUTO_DOWNLOAD_IMAGES_POLICY)!!
setSummary(autoDownloadImagesPolicy)
autoDownloadImagesPolicy.setOnPreferenceChangeListener { _, o ->
setSummary(autoDownloadImagesPolicy, o)
@ -39,7 +40,7 @@ class ImageSettingFragment : AbsSettingsFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val preference: Preference? = findPreference("auto_download_images_policy")
val preference: Preference? = findPreference(AUTO_DOWNLOAD_IMAGES_POLICY)
preference?.let { setSummary(it) }
}
}

View file

@ -21,6 +21,7 @@ import android.os.Bundle
import androidx.preference.Preference
import androidx.preference.TwoStatePreference
import code.name.monkey.retromusic.CLASSIC_NOTIFICATION
import code.name.monkey.retromusic.COLORED_NOTIFICATION
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.util.PreferenceUtil
@ -34,7 +35,7 @@ class NotificationSettingsFragment : AbsSettingsFragment(),
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
if (key == CLASSIC_NOTIFICATION) {
if (VERSION.SDK_INT >= VERSION_CODES.O) {
findPreference<Preference>("colored_notification")?.isEnabled =
findPreference<Preference>(COLORED_NOTIFICATION)?.isEnabled =
sharedPreferences?.getBoolean(key, false)!!
}
}
@ -42,7 +43,7 @@ class NotificationSettingsFragment : AbsSettingsFragment(),
override fun invalidateSettings() {
val classicNotification: TwoStatePreference? = findPreference("classic_notification")
val classicNotification: TwoStatePreference? = findPreference(CLASSIC_NOTIFICATION)
if (VERSION.SDK_INT < VERSION_CODES.N) {
classicNotification?.isVisible = false
} else {
@ -57,7 +58,7 @@ class NotificationSettingsFragment : AbsSettingsFragment(),
}
}
val coloredNotification: TwoStatePreference? = findPreference("colored_notification")
val coloredNotification: TwoStatePreference? = findPreference(COLORED_NOTIFICATION)
if (VERSION.SDK_INT >= VERSION_CODES.O) {
coloredNotification?.isEnabled = PreferenceUtil.isClassicNotification
} else {

View file

@ -33,8 +33,8 @@ class NowPlayingSettingsFragment : AbsSettingsFragment(),
updateNowPlayingScreenSummary()
updateAlbumCoverStyleSummary()
val carouselEffect: TwoStatePreference = findPreference("carousel_effect")!!
carouselEffect.setOnPreferenceChangeListener { _, newValue ->
val carouselEffect: TwoStatePreference? = findPreference(CAROUSEL_EFFECT)
carouselEffect?.setOnPreferenceChangeListener { _, newValue ->
if (newValue as Boolean && !App.isProVersion()) {
showProToastAndNavigate(getString(R.string.pref_title_toggle_carousel_effect))
return@setOnPreferenceChangeListener false
@ -60,7 +60,7 @@ class NowPlayingSettingsFragment : AbsSettingsFragment(),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
PreferenceUtil.registerOnSharedPreferenceChangedListener(this)
val preference: Preference? = findPreference("album_cover_transform")
val preference: Preference? = findPreference(ALBUM_COVER_TRANSFORM)
preference?.setOnPreferenceChangeListener { albumPrefs, newValue ->
setSummary(albumPrefs, newValue)
true

View file

@ -18,6 +18,8 @@ import android.os.Bundle
import android.view.View
import androidx.preference.Preference
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEListPreference
import code.name.monkey.retromusic.LANGUAGE_NAME
import code.name.monkey.retromusic.LAST_ADDED_CUTOFF
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.fragments.LibraryViewModel
import code.name.monkey.retromusic.fragments.ReloadType.HomeSections
@ -29,8 +31,9 @@ import org.koin.androidx.viewmodel.ext.android.sharedViewModel
class OtherSettingsFragment : AbsSettingsFragment() {
private val libraryViewModel by sharedViewModel<LibraryViewModel>()
override fun invalidateSettings() {
val languagePreference: ATEListPreference? = findPreference("language_name")
val languagePreference: ATEListPreference? = findPreference(LANGUAGE_NAME)
languagePreference?.setOnPreferenceChangeListener { _, _ ->
requireActivity().recreate()
return@setOnPreferenceChangeListener true
@ -43,13 +46,13 @@ class OtherSettingsFragment : AbsSettingsFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val preference: Preference? = findPreference("last_added_interval")
val preference: Preference? = findPreference(LAST_ADDED_CUTOFF)
preference?.setOnPreferenceChangeListener { lastAdded, newValue ->
setSummary(lastAdded, newValue)
libraryViewModel.forceReload(HomeSections)
true
}
val languagePreference: Preference? = findPreference("language_name")
val languagePreference: Preference? = findPreference(LANGUAGE_NAME)
languagePreference?.setOnPreferenceChangeListener { prefs, newValue ->
setSummary(prefs, newValue)
true

View file

@ -18,13 +18,13 @@ import android.os.Bundle
import android.view.View
import androidx.preference.TwoStatePreference
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEListPreference
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.*
class PersonalizeSettingsFragment : AbsSettingsFragment() {
override fun invalidateSettings() {
val toggleFullScreen: TwoStatePreference = findPreference("toggle_full_screen")!!
toggleFullScreen.setOnPreferenceChangeListener { _, _ ->
val toggleFullScreen: TwoStatePreference? = findPreference(TOGGLE_FULL_SCREEN)
toggleFullScreen?.setOnPreferenceChangeListener { _, _ ->
requireActivity().recreate()
true
}
@ -36,12 +36,17 @@ class PersonalizeSettingsFragment : AbsSettingsFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val homeArtistStyle: ATEListPreference? = findPreference("home_artist_grid_style")
val homeArtistStyle: ATEListPreference? = findPreference(HOME_ARTIST_GRID_STYLE)
homeArtistStyle?.setOnPreferenceChangeListener { preference, newValue ->
setSummary(preference, newValue)
true
}
val tabTextMode: ATEListPreference? = findPreference("tab_text_mode")
val homeAlbumStyle: ATEListPreference? = findPreference(HOME_ALBUM_GRID_STYLE)
homeAlbumStyle?.setOnPreferenceChangeListener { preference, newValue ->
setSummary(preference, newValue)
true
}
val tabTextMode: ATEListPreference? = findPreference(TAB_TEXT_MODE)
tabTextMode?.setOnPreferenceChangeListener { prefs, newValue ->
setSummary(prefs, newValue)
true

View file

@ -23,9 +23,7 @@ import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEColorPreference
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATESwitchPreference
import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.App
import code.name.monkey.retromusic.DESATURATED_COLOR
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.*
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
import code.name.monkey.retromusic.util.PreferenceUtil
import com.afollestad.materialdialogs.color.ColorChooserDialog
@ -36,7 +34,7 @@ import com.afollestad.materialdialogs.color.ColorChooserDialog
class ThemeSettingsFragment : AbsSettingsFragment() {
override fun invalidateSettings() {
val generalTheme: Preference? = findPreference("general_theme")
val generalTheme: Preference? = findPreference(GENERAL_THEME)
generalTheme?.let {
setSummary(it)
it.setOnPreferenceChangeListener { _, newValue ->
@ -53,11 +51,10 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
}
}
val accentColorPref: ATEColorPreference = findPreference("accent_color")!!
val accentColorPref: ATEColorPreference? = findPreference(ACCENT_COLOR)
val accentColor = ThemeStore.accentColor(requireContext())
accentColorPref.setColor(accentColor, ColorUtil.darkenColor(accentColor))
accentColorPref.setOnPreferenceClickListener {
accentColorPref?.setColor(accentColor, ColorUtil.darkenColor(accentColor))
accentColorPref?.setOnPreferenceClickListener {
ColorChooserDialog.Builder(requireContext(), R.string.accent_color)
.accentMode(true)
.allowUserColorInput(true)
@ -66,7 +63,7 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
.show(requireActivity())
return@setOnPreferenceClickListener true
}
val blackTheme: ATESwitchPreference? = findPreference("black_theme")
val blackTheme: ATESwitchPreference? = findPreference(BLACK_THEME)
blackTheme?.setOnPreferenceChangeListener { _, _ ->
if (!App.isProVersion()) {
showProToastAndNavigate("Just Black theme")
@ -94,12 +91,12 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
}
val colorAppShortcuts: TwoStatePreference = findPreference("should_color_app_shortcuts")!!
val colorAppShortcuts: TwoStatePreference? = findPreference(SHOULD_COLOR_APP_SHORTCUTS)
if (!VersionUtils.hasNougatMR()) {
colorAppShortcuts.isVisible = false
colorAppShortcuts?.isVisible = false
} else {
colorAppShortcuts.isChecked = PreferenceUtil.isColoredAppShortcuts
colorAppShortcuts.setOnPreferenceChangeListener { _, newValue ->
colorAppShortcuts?.isChecked = PreferenceUtil.isColoredAppShortcuts
colorAppShortcuts?.setOnPreferenceChangeListener { _, newValue ->
PreferenceUtil.isColoredAppShortcuts = newValue as Boolean
DynamicShortcutManager(requireContext()).updateDynamicShortcuts()
true

View file

@ -397,12 +397,23 @@ object PreferenceUtil {
}
}
val homeGridStyle: Int
val homeArtistGridStyle: Int
get() {
val position =
sharedPreferences.getStringOrDefault(
HOME_ARTIST_GRID_STYLE, "0"
).toInt()
val position = sharedPreferences.getStringOrDefault(
HOME_ARTIST_GRID_STYLE, "0"
).toInt()
val typedArray =
App.getContext().resources.obtainTypedArray(R.array.pref_home_grid_style_layout)
val layoutRes = typedArray.getResourceId(position, 0)
typedArray.recycle()
return if (layoutRes == 0) {
R.layout.item_artist
} else layoutRes
}
val homeAlbumGridStyle: Int
get() {
val position = sharedPreferences.getStringOrDefault(HOME_ALBUM_GRID_STYLE, "0").toInt()
val typedArray =
App.getContext().resources.obtainTypedArray(R.array.pref_home_grid_style_layout)
val layoutRes = typedArray.getResourceId(position, 0)