feature: Show when locked option (#1732)

This commit is contained in:
Kryštof Baksa 2025-01-17 21:33:26 +01:00 committed by GitHub
parent fba9f6f5f3
commit 9155d887b4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 41 additions and 0 deletions

View file

@ -70,6 +70,7 @@ const val EXTRA_SONG_INFO = "extra_song_info"
const val DESATURATED_COLOR = "desaturated_color"
const val BLACK_THEME = "black_theme"
const val KEEP_SCREEN_ON = "keep_screen_on"
const val SHOW_WHEN_LOCKED = "show_when_locked"
const val TOGGLE_HOME_BANNER = "toggle_home_banner"
const val NOW_PLAYING_SCREEN_ID = "now_playing_screen_id"
const val CAROUSEL_EFFECT = "carousel_effect"

View file

@ -29,6 +29,7 @@ import code.name.monkey.retromusic.extensions.exitFullscreen
import code.name.monkey.retromusic.extensions.hideStatusBar
import code.name.monkey.retromusic.extensions.installSplitCompat
import code.name.monkey.retromusic.extensions.maybeSetScreenOn
import code.name.monkey.retromusic.extensions.maybeShowWhenLocked
import code.name.monkey.retromusic.extensions.setEdgeToEdgeOrImmersive
import code.name.monkey.retromusic.extensions.setImmersiveFullscreen
import code.name.monkey.retromusic.extensions.setLightNavigationBarAuto
@ -49,6 +50,7 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
super.onCreate(savedInstanceState)
setEdgeToEdgeOrImmersive()
maybeSetScreenOn()
maybeShowWhenLocked()
setLightNavigationBarAuto()
setLightStatusBarAuto(surfaceColor())
if (VersionUtils.hasQ()) {

View file

@ -32,6 +32,22 @@ fun AppCompatActivity.keepScreenOn(keepScreenOn: Boolean) {
}
}
fun AppCompatActivity.maybeShowWhenLocked() {
if (PreferenceUtil.isShowWhenLockedEnabled) {
if (VersionUtils.hasOreoMR1()) {
setShowWhenLocked(true)
} else {
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
}
} else {
if (VersionUtils.hasOreoMR1()) {
setShowWhenLocked(false)
} else {
window.clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
}
}
}
fun AppCompatActivity.setEdgeToEdgeOrImmersive() {
if (PreferenceUtil.isFullScreenMode) {
setImmersiveFullscreen()

View file

@ -258,6 +258,8 @@ object PreferenceUtil {
val isScreenOnEnabled get() = sharedPreferences.getBoolean(KEEP_SCREEN_ON, false)
val isShowWhenLockedEnabled get() = sharedPreferences.getBoolean(SHOW_WHEN_LOCKED, false)
val isSongInfo get() = sharedPreferences.getBoolean(EXTRA_SONG_INFO, false)
val isPauseOnZeroVolume get() = sharedPreferences.getBoolean(PAUSE_ON_ZERO_VOLUME, false)

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M394,640Q380,640 370,630Q360,620 360,606L360,474Q360,460 370,450Q380,440 394,440L400,440L400,400Q400,367 423.5,343.5Q447,320 480,320Q513,320 536.5,343.5Q560,367 560,400L560,440L566,440Q580,440 590,450Q600,460 600,474L600,606Q600,620 590,630Q580,640 566,640L394,640ZM440,440L520,440L520,400Q520,383 508.5,371.5Q497,360 480,360Q463,360 451.5,371.5Q440,383 440,400L440,440ZM280,920Q247,920 223.5,896.5Q200,873 200,840L200,120Q200,87 223.5,63.5Q247,40 280,40L680,40Q713,40 736.5,63.5Q760,87 760,120L760,840Q760,873 736.5,896.5Q713,920 680,920L280,920ZM280,800L280,840Q280,840 280,840Q280,840 280,840L680,840Q680,840 680,840Q680,840 680,840L680,800L280,800ZM280,720L680,720L680,240L280,240L280,720ZM280,160L680,160L680,120Q680,120 680,120Q680,120 680,120L280,120Q280,120 280,120Q280,120 280,120L280,160ZM280,160L280,120Q280,120 280,120Q280,120 280,120L280,120Q280,120 280,120Q280,120 280,120L280,160ZM280,800L280,800L280,840Q280,840 280,840Q280,840 280,840L280,840Q280,840 280,840Q280,840 280,840L280,800Z"/>
</vector>

View file

@ -336,6 +336,8 @@
<string name="pref_keep_pause_on_zero_volume_title">Pause on zero</string>
<string name="pref_keep_screen_on_summary">Keep in mind that enabling this feature may affect battery life</string>
<string name="pref_keep_screen_on_title">Keep the screen on</string>
<string name="pref_show_when_locked_summary">Requires an app restart to take effect. The player must be on foreground before locking for this feature to work</string>
<string name="pref_show_when_locked_title">Show the player interface when locked</string>
<string name="pref_language_name">Select language</string>
<string name="pref_snow_fall_title">Snow fall effect</string>
<string name="pref_summary_album_art_on_lockscreen">Use the currently playing song album cover as the lockscreen wallpaper</string>

View file

@ -62,6 +62,14 @@
android:title="@string/pref_keep_screen_on_title"
app:icon="@drawable/ic_settings_brightness" />
<code.name.monkey.appthemehelper.common.prefs.supportv7.ATESwitchPreference
android:defaultValue="false"
android:key="show_when_locked"
android:layout="@layout/list_item_view_switch"
android:summary="@string/pref_show_when_locked_summary"
android:title="@string/pref_show_when_locked_title"
app:icon="@drawable/ic_screen_lock_portrait" />
</code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory>
<code.name.monkey.appthemehelper.common.prefs.supportv7.ATEListPreference