diff --git a/mobile/src/main/AndroidManifest.xml b/mobile/src/main/AndroidManifest.xml
index 7cf540b..b3abf57 100644
--- a/mobile/src/main/AndroidManifest.xml
+++ b/mobile/src/main/AndroidManifest.xml
@@ -13,12 +13,15 @@
android:theme="@style/Base.Theme.OmniCards">
diff --git a/mobile/src/main/java/ru/omni_devel/cards/AddCardActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/AddCardActivity.kt
index 59a3639..e92f23f 100644
--- a/mobile/src/main/java/ru/omni_devel/cards/AddCardActivity.kt
+++ b/mobile/src/main/java/ru/omni_devel/cards/AddCardActivity.kt
@@ -10,10 +10,25 @@ 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()
@@ -28,6 +43,7 @@ class AddCardActivity : AppCompatActivity() {
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)
@@ -36,6 +52,14 @@ class AddCardActivity : AppCompatActivity() {
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()
diff --git a/mobile/src/main/res/layout/activity_add_card.xml b/mobile/src/main/res/layout/activity_add_card.xml
index 01b9f53..32ae92c 100644
--- a/mobile/src/main/res/layout/activity_add_card.xml
+++ b/mobile/src/main/res/layout/activity_add_card.xml
@@ -50,13 +50,26 @@
android:hint="Card name"
android:inputType="text" />
-
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+
+
+
+
+