73 lines
2.8 KiB
Kotlin
73 lines
2.8 KiB
Kotlin
package ru.omni_devel.cards
|
|
|
|
import android.os.Bundle
|
|
import android.widget.ArrayAdapter
|
|
import android.widget.Button
|
|
import android.widget.EditText
|
|
import android.widget.Spinner
|
|
import androidx.activity.enableEdgeToEdge
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.core.view.ViewCompat
|
|
import androidx.core.view.WindowInsetsCompat
|
|
import com.google.zxing.BarcodeFormat
|
|
import com.journeyapps.barcodescanner.ScanContract
|
|
import com.journeyapps.barcodescanner.ScanOptions
|
|
|
|
class AddCardActivity : AppCompatActivity() {
|
|
private lateinit var db: DbHelper
|
|
|
|
private val barcodeLauncher = registerForActivityResult(ScanContract()) { result ->
|
|
if (result.contents != null) {
|
|
val codeTypes = BarcodeFormat.entries.map { it.name }
|
|
val codeTypeIndex = codeTypes.indexOf(result.formatName)
|
|
|
|
if (codeTypeIndex >= 0) {
|
|
findViewById<Spinner>(R.id.cardCodeTypeSelector).setSelection(codeTypeIndex)
|
|
}
|
|
|
|
findViewById<EditText>(R.id.cardValueInput).setText(result.contents)
|
|
}
|
|
}
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
enableEdgeToEdge()
|
|
setContentView(R.layout.activity_add_card)
|
|
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
|
|
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
|
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
|
|
insets
|
|
}
|
|
|
|
db = DbHelper(this, null)
|
|
|
|
val cardNameInput: EditText = findViewById(R.id.cardNameInput)
|
|
val cardValueInput: EditText = findViewById(R.id.cardValueInput)
|
|
val scanCodeButton: Button = findViewById(R.id.scanCodeButton)
|
|
val cardCodeTypeSelector: Spinner = findViewById(R.id.cardCodeTypeSelector)
|
|
val saveCardButton: Button = findViewById(R.id.saveCardButton)
|
|
|
|
val options = BarcodeFormat.entries.map { it.name }
|
|
val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, options)
|
|
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
|
cardCodeTypeSelector.adapter = adapter
|
|
|
|
scanCodeButton.setOnClickListener {
|
|
val options = ScanOptions()
|
|
options.setPrompt("Scan code")
|
|
options.setBeepEnabled(false)
|
|
options.setOrientationLocked(false)
|
|
barcodeLauncher.launch(options)
|
|
}
|
|
|
|
saveCardButton.setOnClickListener {
|
|
val cardName = cardNameInput.text.toString()
|
|
val cardValue = cardValueInput.text.toString()
|
|
val cardCodeType = BarcodeFormat.valueOf(cardCodeTypeSelector.selectedItem.toString())
|
|
|
|
db.addCard(cardName, cardValue, cardCodeType)
|
|
|
|
finish()
|
|
}
|
|
}
|
|
} |