Improve hotkey handling, add support for volume buttons and spacebar. Closes #60

This commit is contained in:
Syer10
2022-12-31 14:28:24 -05:00
parent 7ed64bd4b6
commit 1f2b8123ea
6 changed files with 49 additions and 75 deletions

View File

@@ -12,16 +12,8 @@ import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.input.key.KeyEvent
import androidx.compose.ui.input.key.key
import androidx.lifecycle.lifecycleScope
import ca.gosyer.jui.ui.base.model.StableHolder
import ca.gosyer.jui.ui.base.theme.AppTheme
import ca.gosyer.jui.ui.reader.ReaderMenu
import ca.gosyer.jui.ui.reader.supportedKeyList
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.launch
class ReaderActivity : AppCompatActivity() {
@@ -35,9 +27,6 @@ class ReaderActivity : AppCompatActivity() {
}
}
private val hotkeyFlow = MutableSharedFlow<KeyEvent>()
private val hotkeyFlowHolder = StableHolder(hotkeyFlow.asSharedFlow())
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val hooks = AppComponent.getInstance(applicationContext).hooks
@@ -55,26 +44,10 @@ class ReaderActivity : AppCompatActivity() {
ReaderMenu(
chapterIndex = chapterIndex,
mangaId = mangaId,
hotkeyFlowHolder = hotkeyFlowHolder,
onCloseRequest = onBackPressedDispatcher::onBackPressed
)
}
}
}
}
override fun onKeyUp(keyCode: Int, event: android.view.KeyEvent?): Boolean {
@Suppress("KotlinConstantConditions")
event ?: return super.onKeyUp(keyCode, event)
val composeKeyEvent = KeyEvent(event)
lifecycleScope.launch {
hotkeyFlow.emit(composeKeyEvent)
}
return if (composeKeyEvent.key in supportedKeyList) {
true
} else {
super.onKeyUp(keyCode, event)
}
}
}