diff --git a/mobile/src/main/AndroidManifest.xml b/mobile/src/main/AndroidManifest.xml
index b3abf57..62bae62 100644
--- a/mobile/src/main/AndroidManifest.xml
+++ b/mobile/src/main/AndroidManifest.xml
@@ -16,7 +16,7 @@
android:screenOrientation="portrait"
android:exported="false" />
{
val db = this.readableDatabase
diff --git a/mobile/src/main/java/ru/omni_devel/cards/AddCardActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/EditCardActivity.kt
similarity index 61%
rename from mobile/src/main/java/ru/omni_devel/cards/AddCardActivity.kt
rename to mobile/src/main/java/ru/omni_devel/cards/EditCardActivity.kt
index 59f290e..702bb16 100644
--- a/mobile/src/main/java/ru/omni_devel/cards/AddCardActivity.kt
+++ b/mobile/src/main/java/ru/omni_devel/cards/EditCardActivity.kt
@@ -1,10 +1,13 @@
package ru.omni_devel.cards
+import android.content.Intent
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.Button
import android.widget.EditText
import android.widget.Spinner
+import android.widget.TextView
+import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
@@ -13,7 +16,7 @@ import com.google.zxing.BarcodeFormat
import com.journeyapps.barcodescanner.ScanContract
import com.journeyapps.barcodescanner.ScanOptions
-class AddCardActivity : AppCompatActivity() {
+class EditCardActivity : AppCompatActivity() {
private lateinit var db: DbHelper
private val barcodeLauncher = registerForActivityResult(ScanContract()) { result ->
@@ -27,15 +30,19 @@ class AddCardActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
- setContentView(R.layout.activity_add_card)
+ setContentView(R.layout.activity_edit_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
}
+ val actionName = intent.getStringExtra("action") ?: EditCardAction.ADD.name
+ val action = EditCardAction.valueOf(actionName)
+
db = DbHelper(this, null)
+ val actionLabel: TextView = findViewById(R.id.editCardActionLabel)
val cardNameInput: EditText = findViewById(R.id.cardNameInput)
val cardValueInput: EditText = findViewById(R.id.cardValueInput)
val scanCodeButton: Button = findViewById(R.id.scanCodeButton)
@@ -46,7 +53,6 @@ class AddCardActivity : AppCompatActivity() {
val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, options)
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
cardCodeTypeSelector.adapter = adapter
- setCodeType("QR_CODE")
scanCodeButton.setOnClickListener {
val options = ScanOptions()
@@ -61,9 +67,49 @@ class AddCardActivity : AppCompatActivity() {
val cardValue = cardValueInput.text.toString()
val cardCodeType = BarcodeFormat.valueOf(cardCodeTypeSelector.selectedItem.toString())
- db.addCard(cardName, cardValue, cardCodeType)
+ when (action) {
+ EditCardAction.ADD -> {
+ db.addCard(cardName, cardValue, cardCodeType)
- finish()
+ finish()
+ }
+ EditCardAction.EDIT -> {
+ val cardId = intent.getIntExtra("cardId", -1)
+
+ db.editCard(cardId, cardName, cardValue, cardCodeType)
+
+ val intent = Intent(this, ShowCardActivity::class.java)
+
+ intent.putExtra("cardId", cardId)
+
+ startActivity(intent)
+ finish()
+ }
+ }
+ }
+
+ when (action) {
+ EditCardAction.ADD -> {
+ setCodeType("QR_CODE")
+
+ actionLabel.text = "Adding card"
+ }
+ EditCardAction.EDIT -> {
+ val cardId = intent.getIntExtra("cardId", -1)
+
+ val cardInfo = db.getCard(cardId)
+
+ if (cardInfo == null) {
+ Toast.makeText(this, "cardInfo is null", Toast.LENGTH_LONG).show()
+ return
+ }
+
+ actionLabel.text = "Editing card"
+
+ cardNameInput.setText(cardInfo.name)
+ cardValueInput.setText(cardInfo.codeValue)
+ setCodeType(cardInfo.codeType.name)
+ }
}
}
diff --git a/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt
index 90c96f9..3b835ed 100644
--- a/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt
+++ b/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt
@@ -14,7 +14,6 @@ import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.google.android.material.button.MaterialButton
import kotlinx.serialization.json.Json
-import org.w3c.dom.Text
class MainActivity : AppCompatActivity() {
private lateinit var cardsList: LinearLayout
@@ -37,7 +36,11 @@ class MainActivity : AppCompatActivity() {
val syncWithWearOSButton: Button = findViewById(R.id.syncWithWearOSButton)
addCardButton.setOnClickListener {
- startActivity(Intent(this, AddCardActivity::class.java))
+ val intent = Intent(this, EditCardActivity::class.java)
+
+ intent.putExtra("action", EditCardAction.ADD.name)
+
+ startActivity(intent)
}
syncWithWearOSButton.setOnClickListener {
@@ -101,10 +104,21 @@ class MainActivity : AppCompatActivity() {
button.setOnLongClickListener { view ->
val popup = PopupMenu(this, view)
+ popup.menu.add("Edit")
popup.menu.add("Remove")
popup.setOnMenuItemClickListener { menuItem ->
when (menuItem.title) {
+ "Edit" -> {
+ val intent = Intent(this, EditCardActivity::class.java)
+
+ intent.putExtra("action", EditCardAction.EDIT.name)
+ intent.putExtra("cardId", card.id)
+
+ startActivity(intent)
+
+ true
+ }
"Remove" -> {
db.removeCard(card.id)
renderCards()
diff --git a/mobile/src/main/java/ru/omni_devel/cards/ShowCardActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/ShowCardActivity.kt
index 401a00b..1eb2d67 100644
--- a/mobile/src/main/java/ru/omni_devel/cards/ShowCardActivity.kt
+++ b/mobile/src/main/java/ru/omni_devel/cards/ShowCardActivity.kt
@@ -46,12 +46,11 @@ class ShowCardActivity : AppCompatActivity() {
if (cardInfo == null) {
Toast.makeText(this, "cardInfo is null", Toast.LENGTH_LONG).show()
-
return
}
val cardCodeView: ImageView = findViewById(R.id.cardCodeView)
- val cardNameElement: TextView = findViewById(R.id.cardName)
+ val cardNameElement: TextView = findViewById(R.id.editCardActionLabel)
cardNameElement.text = cardInfo.name
diff --git a/mobile/src/main/res/layout/activity_add_card.xml b/mobile/src/main/res/layout/activity_edit_card.xml
similarity index 96%
rename from mobile/src/main/res/layout/activity_add_card.xml
rename to mobile/src/main/res/layout/activity_edit_card.xml
index cd1e288..bbefaf4 100644
--- a/mobile/src/main/res/layout/activity_add_card.xml
+++ b/mobile/src/main/res/layout/activity_edit_card.xml
@@ -5,7 +5,7 @@
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".AddCardActivity">
+ tools:context=".EditCardActivity">
+ tools:context=".EditCardActivity">