Separate actions into its own files

This commit is contained in:
Aleksandras Kostarevas 2023-08-26 21:31:31 +03:00
parent 8278de9484
commit 1b0dd25244
5 changed files with 100 additions and 93 deletions

View File

@ -63,6 +63,8 @@ import org.futo.inputmethod.latin.SuggestedWords
import org.futo.inputmethod.latin.SuggestedWords.SuggestedWordInfo
import org.futo.inputmethod.latin.SuggestedWords.SuggestedWordInfo.KIND_TYPED
import org.futo.inputmethod.latin.suggestions.SuggestionStripView
import org.futo.inputmethod.latin.uix.actions.ThemeAction
import org.futo.inputmethod.latin.uix.actions.VoiceInputAction
import org.futo.inputmethod.latin.uix.theme.DarkColorScheme
import org.futo.inputmethod.latin.uix.theme.UixThemeWrapper
import java.lang.Integer.min

View File

@ -2,97 +2,4 @@
package org.futo.inputmethod.latin.uix
import android.os.Build
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.gestures.scrollable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.rememberScrollState
import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocal
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import org.futo.inputmethod.latin.R
import org.futo.inputmethod.latin.uix.theme.DarkColorScheme
import org.futo.inputmethod.latin.uix.theme.ThemeOptionKeys
import org.futo.inputmethod.latin.uix.theme.ThemeOptions
// TODO: For now, this calls CODE_SHORTCUT. In the future, we will want to
// make this a window
val VoiceInputAction = Action(
icon = R.drawable.mic_fill,
name = "Voice Input",
//simplePressImpl = {
// it.triggerSystemVoiceInput()
//},
simplePressImpl = null,
windowImpl = object : ActionWindow {
@Composable
override fun windowName(): String {
return "Voice Input"
}
@Composable
override fun WindowContents(manager: KeyboardManagerForAction) {
Box(modifier = Modifier.fillMaxSize()) {
Icon(
painter = painterResource(id = R.drawable.mic_fill),
contentDescription = null,
modifier = Modifier.align(Alignment.Center).size(48.dp)
)
}
}
}
)
val ThemeAction = Action(
icon = R.drawable.eye,
name = "Theme Switcher",
simplePressImpl = null,
windowImpl = object : ActionWindow {
@Composable
override fun windowName(): String {
return "Theme Switcher"
}
@Composable
override fun WindowContents(manager: KeyboardManagerForAction) {
val context = LocalContext.current
LazyColumn(modifier = Modifier
.padding(8.dp, 0.dp)
.fillMaxWidth())
{
items(ThemeOptionKeys.count()) {
val key = ThemeOptionKeys[it]
val themeOption = ThemeOptions[key]
if(themeOption != null && themeOption.available(context)) {
Button(onClick = {
manager.updateTheme(
themeOption
)
}) {
Text(themeOption.name)
}
}
}
}
}
}
)

View File

@ -127,6 +127,8 @@ fun Context.inflateInlineSuggestion(inlineSuggestion: InlineSuggestion): Mutable
@Composable
fun InlineSuggestionView(inlineSuggestion: MutableState<View?>) {
if (inlineSuggestion.value != null) {
// TODO: For some reason this appears over top of keyboard key previews
// We should also make it animate in and round corners
AndroidView(
factory = { inlineSuggestion.value!! },
modifier = Modifier.padding(4.dp, 0.dp)

View File

@ -0,0 +1,52 @@
package org.futo.inputmethod.latin.uix.actions
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import org.futo.inputmethod.latin.R
import org.futo.inputmethod.latin.uix.Action
import org.futo.inputmethod.latin.uix.ActionWindow
import org.futo.inputmethod.latin.uix.KeyboardManagerForAction
import org.futo.inputmethod.latin.uix.theme.ThemeOptionKeys
import org.futo.inputmethod.latin.uix.theme.ThemeOptions
val ThemeAction = Action(
icon = R.drawable.eye,
name = "Theme Switcher",
simplePressImpl = null,
windowImpl = object : ActionWindow {
@Composable
override fun windowName(): String {
return "Theme Switcher"
}
@Composable
override fun WindowContents(manager: KeyboardManagerForAction) {
val context = LocalContext.current
LazyColumn(modifier = Modifier
.padding(8.dp, 0.dp)
.fillMaxWidth())
{
items(ThemeOptionKeys.count()) {
val key = ThemeOptionKeys[it]
val themeOption = ThemeOptions[key]
if(themeOption != null && themeOption.available(context)) {
Button(onClick = {
manager.updateTheme(
themeOption
)
}) {
Text(themeOption.name)
}
}
}
}
}
}
)

View File

@ -0,0 +1,44 @@
package org.futo.inputmethod.latin.uix.actions
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.size
import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import org.futo.inputmethod.latin.R
import org.futo.inputmethod.latin.uix.Action
import org.futo.inputmethod.latin.uix.ActionWindow
import org.futo.inputmethod.latin.uix.KeyboardManagerForAction
// TODO: For now, this calls CODE_SHORTCUT. In the future, we will want to
// make this a window
val VoiceInputAction = Action(
icon = R.drawable.mic_fill,
name = "Voice Input",
//simplePressImpl = {
// it.triggerSystemVoiceInput()
//},
simplePressImpl = null,
windowImpl = object : ActionWindow {
@Composable
override fun windowName(): String {
return "Voice Input"
}
@Composable
override fun WindowContents(manager: KeyboardManagerForAction) {
Box(modifier = Modifier.fillMaxSize()) {
Icon(
painter = painterResource(id = R.drawable.mic_fill),
contentDescription = null,
modifier = Modifier.align(Alignment.Center).size(48.dp)
)
}
}
}
)