revanced-integrations/app/src/main/java/app/revanced/integrations/youtube/swipecontrols/controller/VolumeKeysController.kt

52 lines
1.4 KiB
Kotlin

package app.revanced.integrations.youtube.swipecontrols.controller
import android.view.KeyEvent
import app.revanced.integrations.youtube.swipecontrols.SwipeControlsHostActivity
/**
* controller for custom volume button behaviour
*
* @param controller main controller instance
*/
class VolumeKeysController(
private val controller: SwipeControlsHostActivity
) {
/**
* key event handler
*
* @param event the key event
* @return consume the event?
*/
fun onKeyEvent(event: KeyEvent): Boolean {
if (!controller.config.overwriteVolumeKeyControls) {
return false
}
return when (event.keyCode) {
KeyEvent.KEYCODE_VOLUME_DOWN ->
handleVolumeKeyEvent(event, false)
KeyEvent.KEYCODE_VOLUME_UP ->
handleVolumeKeyEvent(event, true)
else -> false
}
}
/**
* handle a volume up / down key event
*
* @param event the key event
* @param volumeUp was the key pressed the volume up key?
* @return consume the event?
*/
private fun handleVolumeKeyEvent(event: KeyEvent, volumeUp: Boolean): Boolean {
if (event.action == KeyEvent.ACTION_DOWN) {
controller.audio?.apply {
volume += if (volumeUp) 1 else -1
controller.overlay.onVolumeChanged(volume, maxVolume)
}
}
return true
}
}