feat: added editing cards feature
This commit is contained in:
@@ -16,7 +16,7 @@
|
|||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".AddCardActivity"
|
android:name=".EditCardActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
<activity
|
<activity
|
||||||
|
|||||||
@@ -3,6 +3,11 @@ package ru.omni_devel.cards
|
|||||||
import com.google.zxing.BarcodeFormat
|
import com.google.zxing.BarcodeFormat
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
enum class EditCardAction {
|
||||||
|
ADD,
|
||||||
|
EDIT,
|
||||||
|
}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
class CardInfo (
|
class CardInfo (
|
||||||
val id: Int,
|
val id: Int,
|
||||||
|
|||||||
@@ -33,6 +33,20 @@ class DbHelper(val context: Context, val factory: SQLiteDatabase.CursorFactory?)
|
|||||||
db.close()
|
db.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun editCard(id: Int, name: String, codeValue: String, codeType: BarcodeFormat) {
|
||||||
|
val values = ContentValues()
|
||||||
|
|
||||||
|
values.put("name", name)
|
||||||
|
values.put("codeValue", codeValue)
|
||||||
|
values.put("codeType", codeType.name)
|
||||||
|
|
||||||
|
val db = this.writableDatabase
|
||||||
|
|
||||||
|
db.update("cards", values, "id = ?", arrayOf(id.toString()))
|
||||||
|
|
||||||
|
db.close()
|
||||||
|
}
|
||||||
|
|
||||||
fun getCards(): List<CardInfo> {
|
fun getCards(): List<CardInfo> {
|
||||||
val db = this.readableDatabase
|
val db = this.readableDatabase
|
||||||
|
|
||||||
|
|||||||
+49
-3
@@ -1,10 +1,13 @@
|
|||||||
package ru.omni_devel.cards
|
package ru.omni_devel.cards
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
import android.widget.EditText
|
import android.widget.EditText
|
||||||
import android.widget.Spinner
|
import android.widget.Spinner
|
||||||
|
import android.widget.TextView
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
@@ -13,7 +16,7 @@ import com.google.zxing.BarcodeFormat
|
|||||||
import com.journeyapps.barcodescanner.ScanContract
|
import com.journeyapps.barcodescanner.ScanContract
|
||||||
import com.journeyapps.barcodescanner.ScanOptions
|
import com.journeyapps.barcodescanner.ScanOptions
|
||||||
|
|
||||||
class AddCardActivity : AppCompatActivity() {
|
class EditCardActivity : AppCompatActivity() {
|
||||||
private lateinit var db: DbHelper
|
private lateinit var db: DbHelper
|
||||||
|
|
||||||
private val barcodeLauncher = registerForActivityResult(ScanContract()) { result ->
|
private val barcodeLauncher = registerForActivityResult(ScanContract()) { result ->
|
||||||
@@ -27,15 +30,19 @@ class AddCardActivity : AppCompatActivity() {
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
enableEdgeToEdge()
|
enableEdgeToEdge()
|
||||||
setContentView(R.layout.activity_add_card)
|
setContentView(R.layout.activity_edit_card)
|
||||||
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
|
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
|
||||||
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||||
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
|
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
|
||||||
insets
|
insets
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val actionName = intent.getStringExtra("action") ?: EditCardAction.ADD.name
|
||||||
|
val action = EditCardAction.valueOf(actionName)
|
||||||
|
|
||||||
db = DbHelper(this, null)
|
db = DbHelper(this, null)
|
||||||
|
|
||||||
|
val actionLabel: TextView = findViewById(R.id.editCardActionLabel)
|
||||||
val cardNameInput: EditText = findViewById(R.id.cardNameInput)
|
val cardNameInput: EditText = findViewById(R.id.cardNameInput)
|
||||||
val cardValueInput: EditText = findViewById(R.id.cardValueInput)
|
val cardValueInput: EditText = findViewById(R.id.cardValueInput)
|
||||||
val scanCodeButton: Button = findViewById(R.id.scanCodeButton)
|
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)
|
val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, options)
|
||||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||||
cardCodeTypeSelector.adapter = adapter
|
cardCodeTypeSelector.adapter = adapter
|
||||||
setCodeType("QR_CODE")
|
|
||||||
|
|
||||||
scanCodeButton.setOnClickListener {
|
scanCodeButton.setOnClickListener {
|
||||||
val options = ScanOptions()
|
val options = ScanOptions()
|
||||||
@@ -61,10 +67,50 @@ class AddCardActivity : AppCompatActivity() {
|
|||||||
val cardValue = cardValueInput.text.toString()
|
val cardValue = cardValueInput.text.toString()
|
||||||
val cardCodeType = BarcodeFormat.valueOf(cardCodeTypeSelector.selectedItem.toString())
|
val cardCodeType = BarcodeFormat.valueOf(cardCodeTypeSelector.selectedItem.toString())
|
||||||
|
|
||||||
|
when (action) {
|
||||||
|
EditCardAction.ADD -> {
|
||||||
db.addCard(cardName, cardValue, cardCodeType)
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setCodeType(codeTypeString: String) {
|
private fun setCodeType(codeTypeString: String) {
|
||||||
@@ -14,7 +14,6 @@ import androidx.core.view.ViewCompat
|
|||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import org.w3c.dom.Text
|
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
private lateinit var cardsList: LinearLayout
|
private lateinit var cardsList: LinearLayout
|
||||||
@@ -37,7 +36,11 @@ class MainActivity : AppCompatActivity() {
|
|||||||
val syncWithWearOSButton: Button = findViewById(R.id.syncWithWearOSButton)
|
val syncWithWearOSButton: Button = findViewById(R.id.syncWithWearOSButton)
|
||||||
|
|
||||||
addCardButton.setOnClickListener {
|
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 {
|
syncWithWearOSButton.setOnClickListener {
|
||||||
@@ -101,10 +104,21 @@ class MainActivity : AppCompatActivity() {
|
|||||||
button.setOnLongClickListener { view ->
|
button.setOnLongClickListener { view ->
|
||||||
val popup = PopupMenu(this, view)
|
val popup = PopupMenu(this, view)
|
||||||
|
|
||||||
|
popup.menu.add("Edit")
|
||||||
popup.menu.add("Remove")
|
popup.menu.add("Remove")
|
||||||
|
|
||||||
popup.setOnMenuItemClickListener { menuItem ->
|
popup.setOnMenuItemClickListener { menuItem ->
|
||||||
when (menuItem.title) {
|
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" -> {
|
"Remove" -> {
|
||||||
db.removeCard(card.id)
|
db.removeCard(card.id)
|
||||||
renderCards()
|
renderCards()
|
||||||
|
|||||||
@@ -46,12 +46,11 @@ class ShowCardActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
if (cardInfo == null) {
|
if (cardInfo == null) {
|
||||||
Toast.makeText(this, "cardInfo is null", Toast.LENGTH_LONG).show()
|
Toast.makeText(this, "cardInfo is null", Toast.LENGTH_LONG).show()
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val cardCodeView: ImageView = findViewById(R.id.cardCodeView)
|
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
|
cardNameElement.text = cardInfo.name
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -5,7 +5,7 @@
|
|||||||
android:id="@+id/main"
|
android:id="@+id/main"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".AddCardActivity">
|
tools:context=".EditCardActivity">
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/toolbar2"
|
android:id="@+id/toolbar2"
|
||||||
@@ -19,11 +19,11 @@
|
|||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/cardName"
|
android:id="@+id/editCardActionLabel"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:text="Adding card"
|
android:text="Action"
|
||||||
android:textColor="@color/text_primary"
|
android:textColor="@color/text_primary"
|
||||||
android:textSize="24sp"
|
android:textSize="24sp"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/toolbar2"
|
app:layout_constraintBottom_toBottomOf="@+id/toolbar2"
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
android:id="@+id/main"
|
android:id="@+id/main"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".AddCardActivity">
|
tools:context=".EditCardActivity">
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/toolbar2"
|
android:id="@+id/toolbar2"
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/cardName"
|
android:id="@+id/editCardActionLabel"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
|
|||||||
Reference in New Issue
Block a user