diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 15d5675..28c9591 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -19,8 +19,8 @@ android { applicationId = "solutions.tretter.githugandroid" minSdk = 26 targetSdk = 35 - versionCode = 103 - versionName = "0.1.102" + versionCode = 104 + versionName = "0.1.103" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true diff --git a/app/src/main/java/solutions/tretter/githugandroid/Terminal.kt b/app/src/main/java/solutions/tretter/githugandroid/Terminal.kt index 283f6f1..de36d4c 100644 --- a/app/src/main/java/solutions/tretter/githugandroid/Terminal.kt +++ b/app/src/main/java/solutions/tretter/githugandroid/Terminal.kt @@ -41,6 +41,7 @@ import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight @@ -94,6 +95,16 @@ fun TerminalPane( onRun() } + fun insertLiteral(value: String) { + val selectionStart = commandInput.selection.start.coerceIn(0, commandInput.text.length) + val selectionEnd = commandInput.selection.end.coerceIn(0, commandInput.text.length) + val rangeStart = minOf(selectionStart, selectionEnd) + val rangeEnd = maxOf(selectionStart, selectionEnd) + val newText = commandInput.text.replaceRange(rangeStart, rangeEnd, value) + val newCursor = rangeStart + value.length + onValueChange(TextFieldValue(newText, selection = TextRange(newCursor))) + } + Box( modifier = Modifier .fillMaxSize() @@ -139,6 +150,7 @@ fun TerminalPane( onCursorRight = onCursorRight, onHistoryUp = onHistoryUp, onHistoryDown = onHistoryDown, + onInsertText = { insertLiteral(it) }, ) Row( modifier = Modifier @@ -235,12 +247,19 @@ private fun SpecialKeyBar( onCursorRight: () -> Unit, onHistoryUp: () -> Unit, onHistoryDown: () -> Unit, + onInsertText: (String) -> Unit, ) { Row( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .fillMaxWidth() + .horizontalScroll(rememberScrollState()), horizontalArrangement = Arrangement.spacedBy(6.dp), ) { TerminalKeyButton(label = "↹", onClick = onTab, modifier = Modifier.width(56.dp), fontFamily = FontFamily.Default) + TerminalKeyButton(label = ".", onClick = { onInsertText(".") }, modifier = Modifier.width(34.dp)) + TerminalKeyButton(label = "-", onClick = { onInsertText("-") }, modifier = Modifier.width(34.dp)) + TerminalKeyButton(label = "/", onClick = { onInsertText("/") }, modifier = Modifier.width(34.dp)) + TerminalKeyButton(label = "_", onClick = { onInsertText("_") }, modifier = Modifier.width(34.dp)) TerminalKeyButton(label = "←", onClick = onCursorLeft, modifier = Modifier.width(40.dp)) TerminalKeyButton(label = "→", onClick = onCursorRight, modifier = Modifier.width(40.dp)) TerminalKeyButton(label = "↑", onClick = onHistoryUp, modifier = Modifier.width(40.dp)) diff --git a/app/src/main/java/solutions/tretter/githugandroid/TextEditorDialog.kt b/app/src/main/java/solutions/tretter/githugandroid/TextEditorDialog.kt index 70f9c28..b70cf21 100644 --- a/app/src/main/java/solutions/tretter/githugandroid/TextEditorDialog.kt +++ b/app/src/main/java/solutions/tretter/githugandroid/TextEditorDialog.kt @@ -26,9 +26,12 @@ import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog +import androidx.compose.foundation.text.KeyboardOptions data class TextEditorState( val editor: String, @@ -84,6 +87,11 @@ fun TextEditorDialog( onValueChange = onSaveAsPathChange, modifier = Modifier.fillMaxWidth(), singleLine = true, + keyboardOptions = KeyboardOptions( + autoCorrect = false, + keyboardType = KeyboardType.Ascii, + imeAction = ImeAction.Done, + ), label = { Text("File name") }, ) Box( @@ -106,6 +114,10 @@ fun TextEditorDialog( fontSize = 14.sp, ), cursorBrush = SolidColor(Accent), + keyboardOptions = KeyboardOptions( + autoCorrect = false, + keyboardType = KeyboardType.Ascii, + ), ) } }