Version bump
Build and Test a3270 / Build Android APK (push) Successful in 5m36s
Release a3270 / Build & Publish Release (push) Successful in 5m40s

This commit is contained in:
2026-10-28 18:09:40 +00:00
parent 207fa48f15
commit ecae8c0669
4 changed files with 100 additions and 66 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ android {
minSdk 24
targetSdk 34
versionCode 10
versionName "1.3.0"
versionName "1.2.5"
}
buildTypes {
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="10"
android:versionName="1.3.0">
android:versionName="1.2.5">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -508,9 +508,14 @@ fun FileTransferDialog(
}
}
// TSO Send Options
if (!isReceive && hostType == FTConfig.HostType.TSO) {
Text("TSO Dataset Allocation:", fontSize = 12.sp, fontWeight = FontWeight.Bold, color = Color.Gray)
// TSO / CMS Allocation & Record Format Options
if (!isReceive && (hostType == FTConfig.HostType.TSO || hostType == FTConfig.HostType.CMS)) {
Text(
if (hostType == FTConfig.HostType.TSO) "TSO Dataset Allocation:" else "VM/CMS File Format:",
fontSize = 12.sp,
fontWeight = FontWeight.Bold,
color = Color.Gray
)
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween,
@@ -542,9 +547,12 @@ fun FileTransferDialog(
onValueChange = { lreclStr = it.filter { c -> c.isDigit() } },
label = { Text("LRECL", fontSize = 11.sp) },
singleLine = true,
keyboardOptions = TerminalKeyboardOptions.copy(imeAction = ImeAction.Next),
modifier = Modifier.weight(1f)
keyboardOptions = TerminalKeyboardOptions.copy(
imeAction = if (hostType == FTConfig.HostType.TSO) ImeAction.Next else ImeAction.Done
),
modifier = if (hostType == FTConfig.HostType.TSO) Modifier.weight(1f) else Modifier.fillMaxWidth()
)
if (hostType == FTConfig.HostType.TSO) {
OutlinedTextField(
value = blksizeStr,
onValueChange = { blksizeStr = it.filter { c -> c.isDigit() } },
@@ -554,7 +562,9 @@ fun FileTransferDialog(
modifier = Modifier.weight(1f)
)
}
}
if (hostType == FTConfig.HostType.TSO) {
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween,
@@ -602,6 +612,7 @@ fun FileTransferDialog(
)
}
}
}
// CMS Options
if (hostType == FTConfig.HostType.CMS) {
@@ -637,14 +648,18 @@ fun FileTransferDialog(
setTransferMode(if (isAscii) FTConfig.TransferMode.ASCII else FTConfig.TransferMode.BINARY)
setHostType(hostType)
setExistAction(if (overwrite) FTConfig.ExistAction.REPLACE else FTConfig.ExistAction.KEEP)
if (!isReceive && hostType == FTConfig.HostType.TSO) {
if (!isReceive) {
if (hostType == FTConfig.HostType.TSO || hostType == FTConfig.HostType.CMS) {
setRecfm(recfm)
lreclStr.trim().toIntOrNull()?.let { setLrecl(it) }
}
if (hostType == FTConfig.HostType.TSO) {
blksizeStr.trim().toIntOrNull()?.let { setBlksize(it) }
setUnits(units)
if (spaceStr.isNotBlank()) setSpace(spaceStr.trim())
if (dirBlocks.isNotBlank()) setDirectoryBlocks(dirBlocks.trim())
}
}
if (hostType == FTConfig.HostType.CMS && cmsOptions.isNotBlank()) {
setOptions(cmsOptions.trim())
}
@@ -229,6 +229,25 @@ class ConnectionAndHostDirectoryTest {
assertEquals(FTConfig.HostType.CMS, state.hostType)
}
@Test
fun testCmsFileTransferCommandGeneration() {
val cfg = FTConfig().apply {
setHostFilename("PROFILE EXEC A")
setLocalFilename("/tmp/profile.exec")
setDirection(FTConfig.Direction.SEND)
setTransferMode(FTConfig.TransferMode.ASCII)
setHostType(FTConfig.HostType.CMS)
setExistAction(FTConfig.ExistAction.REPLACE)
setRecfm(FTConfig.RecordFormat.FIXED)
setLrecl(80)
}
val cmd = cfg.buildCommand()
assertTrue("CMS command must contain RECFM F", cmd.contains("RECFM F"))
assertTrue("CMS command must contain LRECL 80", cmd.contains("LRECL 80"))
assertFalse("CMS command must not contain REPLACE keyword", cmd.contains("REPLACE"))
assertFalse("CMS command must not contain BLOCK keyword", cmd.contains("BLOCK"))
}
@Test
fun testConnectChoiceEnum() {
val choices = ConnectChoice.values()