mirror of
https://github.com/Suwayomi/TachideskJUI.git
synced 2025-12-10 06:42:05 +01:00
Improve hotkey handling, add support for volume buttons and spacebar. Closes #60
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user