Refactor for consistency
Build and Test a3270 / Build Android APK (push) Successful in 6m54s

This commit is contained in:
2026-08-25 16:05:28 +00:00
parent aa008664bc
commit f6d69bf0ff
16 changed files with 71 additions and 71 deletions
+2 -2
View File
@@ -4,11 +4,11 @@ plugins {
} }
android { android {
namespace 'org.pubvm.a3270' namespace 'haus.nightmare.a3270'
compileSdk 34 compileSdk 34
defaultConfig { defaultConfig {
applicationId "org.pubvm.a3270" applicationId "haus.nightmare.a3270"
minSdk 24 minSdk 24
targetSdk 34 targetSdk 34
versionCode 4 versionCode 4
@@ -1,4 +1,4 @@
package org.pubvm.a3270 package haus.nightmare.a3270
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Build import android.os.Build
@@ -23,18 +23,18 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleEventObserver
import android.content.Context import android.content.Context
import android.view.KeyCharacterMap import android.view.KeyCharacterMap
import org.lib3270j.protocol.DS3270Constants.* import haus.nightmare.lib3270j.protocol.DS3270Constants.*
import org.pubvm.a3270.service.TerminalService import haus.nightmare.a3270.service.TerminalService
import org.pubvm.a3270.storage.HostStorage import haus.nightmare.a3270.storage.HostStorage
import org.pubvm.a3270.ui.ConnectDialog import haus.nightmare.a3270.ui.ConnectDialog
import org.pubvm.a3270.ui.FileTransferDialog import haus.nightmare.a3270.ui.FileTransferDialog
import org.pubvm.a3270.ui.OiaStatusBar import haus.nightmare.a3270.ui.OiaStatusBar
import org.pubvm.a3270.ui.SettingsDialog import haus.nightmare.a3270.ui.SettingsDialog
import org.pubvm.a3270.ui.TerminalInputView import haus.nightmare.a3270.ui.TerminalInputView
import org.pubvm.a3270.ui.TerminalView import haus.nightmare.a3270.ui.TerminalView
import org.pubvm.a3270.ui.TwoRowKeyBar import haus.nightmare.a3270.ui.TwoRowKeyBar
import org.pubvm.a3270.ui.UntrustedCertificateDialog import haus.nightmare.a3270.ui.UntrustedCertificateDialog
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
@@ -1,4 +1,4 @@
package org.pubvm.a3270 package haus.nightmare.a3270
import android.app.Application import android.app.Application
import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.AndroidViewModel
@@ -11,19 +11,19 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.lib3270j.ConnectionConfig import haus.nightmare.lib3270j.ConnectionConfig
import org.lib3270j.ConnectionState import haus.nightmare.lib3270j.ConnectionState
import org.lib3270j.Telnet3270Client import haus.nightmare.lib3270j.Telnet3270Client
import org.lib3270j.TerminalModel import haus.nightmare.lib3270j.TerminalModel
import org.lib3270j.ft.FTConfig import haus.nightmare.lib3270j.ft.FTConfig
import org.lib3270j.listener.ConnectionListener import haus.nightmare.lib3270j.listener.ConnectionListener
import org.lib3270j.listener.ScreenUpdateListener import haus.nightmare.lib3270j.listener.ScreenUpdateListener
import org.lib3270j.protocol.DS3270Constants.AID_ENTER import haus.nightmare.lib3270j.protocol.DS3270Constants.AID_ENTER
import org.lib3270j.protocol.DS3270Constants.faIsProtected import haus.nightmare.lib3270j.protocol.DS3270Constants.faIsProtected
import org.lib3270j.screen.ScreenBuffer import haus.nightmare.lib3270j.screen.ScreenBuffer
import org.pubvm.a3270.ft.FileTransfer import haus.nightmare.a3270.ft.FileTransfer
import org.pubvm.a3270.service.TerminalService import haus.nightmare.a3270.service.TerminalService
import org.pubvm.a3270.storage.AppSettings import haus.nightmare.a3270.storage.AppSettings
import java.io.File import java.io.File
import java.util.concurrent.Executors import java.util.concurrent.Executors
import java.util.logging.Logger import java.util.logging.Logger
@@ -325,7 +325,7 @@ class TerminalViewModel(application: Application) : AndroidViewModel(application
val effectiveTn3270e = tn3270e && parsedConfig.isTn3270eEnabled val effectiveTn3270e = tn3270e && parsedConfig.isTn3270eEnabled
val globalVerify = AppSettings.isVerifyCertsEnabled(getApplication()) val globalVerify = AppSettings.isVerifyCertsEnabled(getApplication())
val effectiveVerify = tlsVerifyCert && globalVerify val effectiveVerify = tlsVerifyCert && globalVerify
val gMode = org.lib3270j.graphics.GraphicsMode.fromString(graphicsModeStr) val gMode = haus.nightmare.lib3270j.graphics.GraphicsMode.fromString(graphicsModeStr)
_isTlsActive.value = effectiveTls _isTlsActive.value = effectiveTls
_isTlsVerified.value = effectiveVerify _isTlsVerified.value = effectiveVerify
@@ -341,7 +341,7 @@ class TerminalViewModel(application: Application) : AndroidViewModel(application
graphicsMode = gMode graphicsMode = gMode
} }
config.certificateVerifier = org.lib3270j.tls.TlsCertificateVerifier { chain, _, exception -> config.certificateVerifier = haus.nightmare.lib3270j.tls.TlsCertificateVerifier { chain, _, exception ->
if (!AppSettings.isVerifyCertsEnabled(getApplication())) { if (!AppSettings.isVerifyCertsEnabled(getApplication())) {
log.info("Certificate verification bypassed via global AppSettings") log.info("Certificate verification bypassed via global AppSettings")
return@TlsCertificateVerifier true return@TlsCertificateVerifier true
@@ -642,7 +642,7 @@ class TerminalViewModel(application: Application) : AndroidViewModel(application
inputChannel.trySend(TerminalInputAction.LightPenSelect(baddr)) inputChannel.trySend(TerminalInputAction.LightPenSelect(baddr))
} }
fun getGocaDecoder(): org.lib3270j.graphics.GocaDecoder? = client?.gocaDecoder fun getGocaDecoder(): haus.nightmare.lib3270j.graphics.GocaDecoder? = client?.gocaDecoder
fun handleGraphicTouch(px: Int, py: Int, button: Int = 1, shift: Boolean = false, ctrl: Boolean = false) { fun handleGraphicTouch(px: Int, py: Int, button: Int = 1, shift: Boolean = false, ctrl: Boolean = false) {
val c = client ?: return val c = client ?: return
@@ -1,12 +1,12 @@
package org.pubvm.a3270.ft package haus.nightmare.a3270.ft
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import org.lib3270j.Telnet3270Client import haus.nightmare.lib3270j.Telnet3270Client
import org.lib3270j.ft.FTConfig import haus.nightmare.lib3270j.ft.FTConfig
import org.lib3270j.ft.FTConstants.FTState import haus.nightmare.lib3270j.ft.FTConstants.FTState
import org.lib3270j.ft.FTCut import haus.nightmare.lib3270j.ft.FTCut
import org.lib3270j.ft.FTDft import haus.nightmare.lib3270j.ft.FTDft
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import java.util.Timer import java.util.Timer
@@ -1,4 +1,4 @@
package org.pubvm.a3270.service package haus.nightmare.a3270.service
import android.app.Notification import android.app.Notification
import android.app.NotificationChannel import android.app.NotificationChannel
@@ -10,8 +10,8 @@ import android.content.Intent
import android.os.Build import android.os.Build
import android.os.IBinder import android.os.IBinder
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import org.pubvm.a3270.MainActivity import haus.nightmare.a3270.MainActivity
import org.pubvm.a3270.R import haus.nightmare.a3270.R
class TerminalService : Service() { class TerminalService : Service() {
@@ -1,4 +1,4 @@
package org.pubvm.a3270.storage package haus.nightmare.a3270.storage
import android.content.Context import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
@@ -1,4 +1,4 @@
package org.pubvm.a3270.storage package haus.nightmare.a3270.storage
import android.content.Context import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
@@ -1,4 +1,4 @@
package org.pubvm.a3270.ui package haus.nightmare.a3270.ui
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border import androidx.compose.foundation.border
@@ -26,8 +26,8 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import org.pubvm.a3270.storage.HostStorage import haus.nightmare.a3270.storage.HostStorage
import org.pubvm.a3270.storage.SavedHost import haus.nightmare.a3270.storage.SavedHost
private val TerminalKeyboardOptions = KeyboardOptions( private val TerminalKeyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.None, capitalization = KeyboardCapitalization.None,
@@ -1,4 +1,4 @@
package org.pubvm.a3270.ui package haus.nightmare.a3270.ui
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
@@ -15,8 +15,8 @@ import androidx.compose.ui.text.input.KeyboardCapitalization
import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import org.lib3270j.ft.FTConfig import haus.nightmare.lib3270j.ft.FTConfig
import org.pubvm.a3270.FTProgressState import haus.nightmare.a3270.FTProgressState
private val TerminalKeyboardOptions = KeyboardOptions( private val TerminalKeyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.None, capitalization = KeyboardCapitalization.None,
@@ -1,4 +1,4 @@
package org.pubvm.a3270.ui package haus.nightmare.a3270.ui
import android.view.HapticFeedbackConstants import android.view.HapticFeedbackConstants
import androidx.compose.foundation.background import androidx.compose.foundation.background
@@ -15,8 +15,8 @@ import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import org.lib3270j.ConnectionState import haus.nightmare.lib3270j.ConnectionState
import org.lib3270j.protocol.DS3270Constants.* import haus.nightmare.lib3270j.protocol.DS3270Constants.*
@Composable @Composable
fun TwoRowKeyBar( fun TwoRowKeyBar(
@@ -1,4 +1,4 @@
package org.pubvm.a3270.ui package haus.nightmare.a3270.ui
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
@@ -13,7 +13,7 @@ import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import org.lib3270j.ConnectionState import haus.nightmare.lib3270j.ConnectionState
@Composable @Composable
fun OiaStatusBar( fun OiaStatusBar(
@@ -1,4 +1,4 @@
package org.pubvm.a3270.ui package haus.nightmare.a3270.ui
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
@@ -1,4 +1,4 @@
package org.pubvm.a3270.ui package haus.nightmare.a3270.ui
import android.content.Context import android.content.Context
import android.text.InputType import android.text.InputType
@@ -8,7 +8,7 @@ import android.view.inputmethod.BaseInputConnection
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputConnection import android.view.inputmethod.InputConnection
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import org.lib3270j.protocol.DS3270Constants.AID_ENTER import haus.nightmare.lib3270j.protocol.DS3270Constants.AID_ENTER
/** /**
* Custom InputConnection for Termux-style terminal keyboard interaction. * Custom InputConnection for Termux-style terminal keyboard interaction.
@@ -1,4 +1,4 @@
package org.pubvm.a3270.ui package haus.nightmare.a3270.ui
import android.graphics.Paint import android.graphics.Paint
import android.graphics.Typeface import android.graphics.Typeface
@@ -25,9 +25,9 @@ import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import org.lib3270j.protocol.DS3270Constants.* import haus.nightmare.lib3270j.protocol.DS3270Constants.*
import org.lib3270j.screen.ExtendedAttribute import haus.nightmare.lib3270j.screen.ExtendedAttribute
import org.lib3270j.screen.ScreenBuffer import haus.nightmare.lib3270j.screen.ScreenBuffer
// Standard 3279 Host Colors (16-color palette) // Standard 3279 Host Colors (16-color palette)
private val HOST_COLORS = arrayOf( private val HOST_COLORS = arrayOf(
@@ -58,9 +58,9 @@ fun TerminalView(
cols: Int, cols: Int,
cursorAddr: Int, cursorAddr: Int,
screenVersion: Long, screenVersion: Long,
programSymbolManager: org.lib3270j.graphics.ProgramSymbolManager? = null, programSymbolManager: haus.nightmare.lib3270j.graphics.ProgramSymbolManager? = null,
graphicsPlane: org.lib3270j.graphics.GraphicsPlane? = null, graphicsPlane: haus.nightmare.lib3270j.graphics.GraphicsPlane? = null,
gocaDecoder: org.lib3270j.graphics.GocaDecoder? = null, gocaDecoder: haus.nightmare.lib3270j.graphics.GocaDecoder? = null,
isLightPenMode: Boolean = false, isLightPenMode: Boolean = false,
maskHiddenFields: Boolean = true, maskHiddenFields: Boolean = true,
blinkCursor: Boolean = true, blinkCursor: Boolean = true,
@@ -1,4 +1,4 @@
package org.pubvm.a3270.ui package haus.nightmare.a3270.ui
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border import androidx.compose.foundation.border
@@ -1,13 +1,13 @@
package org.pubvm.a3270 package haus.nightmare.a3270
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.lib3270j.TerminalModel import haus.nightmare.lib3270j.TerminalModel
import org.lib3270j.charset.EbcdicTranslator import haus.nightmare.lib3270j.charset.EbcdicTranslator
import org.lib3270j.input.InputProcessor import haus.nightmare.lib3270j.input.InputProcessor
import org.lib3270j.protocol.DS3270Constants.* import haus.nightmare.lib3270j.protocol.DS3270Constants.*
import org.lib3270j.screen.ScreenBuffer import haus.nightmare.lib3270j.screen.ScreenBuffer
class HardwareKeyboardInputTest { class HardwareKeyboardInputTest {
@@ -171,7 +171,7 @@ class HardwareKeyboardInputTest {
// Field 1 at pos 0: Selectable Unprotected (FA_INT_HIGH) // Field 1 at pos 0: Selectable Unprotected (FA_INT_HIGH)
// Designator at pos 1: '?' (EBCDIC 0x6F) // Designator at pos 1: '?' (EBCDIC 0x6F)
val fa = (FA_PRINTABLE or FA_INT_HIGH_SEL).toByte() val fa = (FA_PRINTABLE or FA_INT_HIGH_SEL).toByte()
assertTrue(org.lib3270j.protocol.DS3270Constants.faIsSelectable(fa.toInt() and 0xFF)) assertTrue(haus.nightmare.lib3270j.protocol.DS3270Constants.faIsSelectable(fa.toInt() and 0xFF))
screenBuffer.setCellFA(0, fa) screenBuffer.setCellFA(0, fa)
screenBuffer.getCell(1).ucs4 = '?' screenBuffer.getCell(1).ucs4 = '?'