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(R.id.cardCodeTypeSelector).setSelection(codeTypeIndex) } findViewById(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() } } }