Added option to keep screen on when showing lyrics

This commit is contained in:
Prathamesh More 2022-01-17 18:14:55 +05:30
parent b349b8c4d1
commit c7f7f9d695
7 changed files with 37 additions and 2 deletions

View file

@ -160,3 +160,4 @@ const val PLAYBACK_PITCH = "playback_pitch"
const val CUSTOM_FONT = "custom_font"
const val APPBAR_MODE = "appbar_mode"
const val WALLPAPER_ACCENT = "wallpaper_accent"
const val SCREEN_ON_LYRICS = "screen_on_lyrics"

View file

@ -110,9 +110,15 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
when (newState) {
STATE_EXPANDED -> {
onPanelExpanded()
if (PreferenceUtil.lyricsScreenOn && PreferenceUtil.showLyrics) {
keepScreenOn(true)
}
}
STATE_COLLAPSED -> {
onPanelCollapsed()
if ((PreferenceUtil.lyricsScreenOn && PreferenceUtil.showLyrics) || !PreferenceUtil.isScreenOnEnabled) {
keepScreenOn(false)
}
}
STATE_SETTLING, STATE_DRAGGING -> {
if (fromNotification) {

View file

@ -22,6 +22,14 @@ fun AppCompatActivity.toggleScreenOn() {
}
}
fun AppCompatActivity.keepScreenOn(keepScreenOn: Boolean) {
if (keepScreenOn) {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
} else {
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
}
fun AppCompatActivity.setEdgeToEdgeOrImmersive() {
if (PreferenceUtil.isFullScreenMode) {
setImmersiveFullscreen()

View file

@ -43,7 +43,6 @@ import androidx.viewpager.widget.ViewPager
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.EXTRA_ALBUM_ID
import code.name.monkey.retromusic.EXTRA_ARTIST_ID
import code.name.monkey.retromusic.PLAYBACK_SPEED
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.MainActivity
import code.name.monkey.retromusic.activities.tageditor.AbsTagEditorActivity
@ -53,6 +52,7 @@ import code.name.monkey.retromusic.db.toSongEntity
import code.name.monkey.retromusic.dialogs.*
import code.name.monkey.retromusic.extensions.currentFragment
import code.name.monkey.retromusic.extensions.hide
import code.name.monkey.retromusic.extensions.keepScreenOn
import code.name.monkey.retromusic.extensions.whichFragment
import code.name.monkey.retromusic.fragments.NowPlayingScreen
import code.name.monkey.retromusic.fragments.ReloadType
@ -88,6 +88,11 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMainActivityFragme
R.id.action_toggle_lyrics -> {
PreferenceUtil.showLyrics = !item.isChecked
item.isChecked = !item.isChecked
if (PreferenceUtil.lyricsScreenOn && PreferenceUtil.showLyrics) {
mainActivity.keepScreenOn(true)
} else if (!PreferenceUtil.isScreenOnEnabled && !PreferenceUtil.showLyrics) {
mainActivity.keepScreenOn(false)
}
return true
}
R.id.action_go_to_lyrics -> {
@ -420,6 +425,7 @@ fun goToLyrics(activity: Activity) {
)
}
}
/** Fixes checked state being ignored by injecting checked state directly into drawable */
@SuppressLint("RestrictedApi")
class CheckDrawableWrapper(val menuItem: MenuItem) : DrawableWrapper(menuItem.icon) {

View file

@ -698,7 +698,13 @@ object PreferenceUtil {
}
val wallpaperAccent
get() = sharedPreferences.getBoolean(WALLPAPER_ACCENT, VersionUtils.hasOreoMR1() && !VersionUtils.hasS())
get() = sharedPreferences.getBoolean(
WALLPAPER_ACCENT,
VersionUtils.hasOreoMR1() && !VersionUtils.hasS()
)
val lyricsScreenOn
get() = sharedPreferences.getBoolean(SCREEN_ON_LYRICS, false)
}
enum class LyricsType {
REPLACE_LYRICS, OVER_LYRICS

View file

@ -536,4 +536,5 @@
<string name="pref_title_appbar_mode">App bar mode</string>
<string name="pref_title_wallpaper_accent">Wallpaper accent color</string>
<string name="pref_summary_wallpaper_accent">Extract accent color from wallpaper</string>
<string name="pref_title_lyrics_screen_on">Keep screen on when showing lyrics</string>
</resources>

View file

@ -29,6 +29,13 @@
android:layout="@layout/list_item_view"
android:title="@string/pref_title_lyrics_type" />
<code.name.monkey.appthemehelper.common.prefs.supportv7.ATESwitchPreference
android:defaultValue="false"
android:key="screen_on_lyrics"
android:layout="@layout/list_item_view_switch"
android:title="@string/pref_title_lyrics_screen_on"
android:summary="@string/pref_keep_screen_on_summary"/>
<code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory
android:layout="@layout/preference_category_title"
android:title="@string/pref_header_album">