diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 674a5be..6a97330 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -45,6 +45,7 @@ dependencies {
implementation(libs.androidx.navigation.ui.ktx)
implementation(libs.firebase.crashlytics.buildtools)
implementation(libs.androidx.gridlayout)
+ implementation(libs.androidx.activity)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 698c541..e8b3101 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,6 +24,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.BarcodeScannerForEmployees"
tools:targetApi="31">
+
(R.id.saveButton).setOnClickListener {
+ val db = DBStorageController(this).writableDatabase
+
+ if (categoryId == 0) { // Inserting new category
+ val values = ContentValues().apply {
+ put(CategoriesContract.CategoryEntry.CATEGORY_NAME, categoryNameTextEdit.text.toString())
+ }
+
+ db.insert(CategoriesContract.CategoryEntry.TABLE_NAME, null, values)
+ } else { // Updating existing category
+ val values = ContentValues().apply {
+ put(CategoriesContract.CategoryEntry.CATEGORY_NAME, categoryNameTextEdit.text.toString())
+ }
+ db.update(CategoriesContract.CategoryEntry.TABLE_NAME, values, "${BaseColumns._ID} = ?", arrayOf(categoryId.toString()))
+ }
+
+ finish()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/AddProductActivity.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/AddProductActivity.kt
index 8be4fb7..83bda71 100644
--- a/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/AddProductActivity.kt
+++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/AddProductActivity.kt
@@ -4,11 +4,9 @@ import android.Manifest
import android.content.ContentValues
import android.os.Build
import android.os.Bundle
+import android.provider.BaseColumns
import android.util.Log
-import android.widget.Button
-import android.widget.ImageView
-import android.widget.TextView
-import android.widget.Toast
+import android.widget.*
import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
@@ -31,6 +29,8 @@ class AddProductActivity : AppCompatActivity() {
private lateinit var productNameText: TextView
private lateinit var netWeightText: TextView
+ private lateinit var categorySpinner: Spinner
+
private lateinit var pictureFile: File
private lateinit var picturesPath: File
private lateinit var binding: ActivityAddProductBinding
@@ -43,7 +43,6 @@ class AddProductActivity : AppCompatActivity() {
picturesPath = File(filesDir, "pictures")
picturesPath.mkdirs()
-// imageView = binding.includeContent.addProductLayout
imageView = findViewById(R.id.imageView)
saveButton = findViewById(R.id.saveButton)
@@ -53,6 +52,10 @@ class AddProductActivity : AppCompatActivity() {
productNameText = findViewById(R.id.productName)
netWeightText = findViewById(R.id.netWeight)
+ categorySpinner = findViewById(R.id.categorySpinner)
+
+ fillupCategorySpinner()
+
saveButton.setOnClickListener {
val productName = productNameText.text.toString()
val netWeight = netWeightText.text
@@ -70,13 +73,15 @@ class AddProductActivity : AppCompatActivity() {
}
val db = DBStorageController(this).writableDatabase
- Log.d("QWERTYUIOP", "Putting ${pictureFile.name}")
val values = ContentValues().apply {
put(ProductContract.ProductEntry.PRODUCT_NAME, productName)
put(ProductContract.ProductEntry.PRODUCT_NET_WEIGHT, netWeight.toString())
put(ProductContract.ProductEntry.IMAGE_FILENAME, pictureFile.nameWithoutExtension)
+ put(ProductContract.ProductEntry.CATEGORY, categorySpinner.selectedItemPosition)
}
+ Log.d("QWERTYUIOP", "SIP ${categorySpinner.selectedItemPosition}")
+
db.insert(ProductContract.ProductEntry.TABLE_NAME, null, values)
finish()
@@ -112,6 +117,29 @@ class AddProductActivity : AppCompatActivity() {
// setContentView(binding.root)
}
+
+ fun fillupCategorySpinner() {
+ val db = DBStorageController(this).readableDatabase
+
+ val categories = mutableListOf("")
+
+ val projection = arrayOf(
+ CategoriesContract.CategoryEntry.CATEGORY_NAME
+ )
+
+ val cursor = db.query(CategoriesContract.CategoryEntry.TABLE_NAME, projection, null, null, null, null, BaseColumns._ID+" ASC")
+
+ with (cursor) {
+ while (moveToNext()) {
+ categories.add(getString(getColumnIndexOrThrow(CategoriesContract.CategoryEntry.CATEGORY_NAME)))
+ }
+ }
+
+ val arrayAdapter = ArrayAdapter(this, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item, categories)
+ arrayAdapter.setDropDownViewResource(androidx.appcompat.R.layout.support_simple_spinner_dropdown_item)
+ categorySpinner.adapter = arrayAdapter
+ }
+
@RequiresApi(Build.VERSION_CODES.R)
val takePicture = registerForActivityResult(ActivityResultContracts.TakePicture()) { success: Boolean ->
if (success) {
@@ -137,7 +165,9 @@ class AddProductActivity : AppCompatActivity() {
//Saving picture to a temp file for further hash calculation and moving to a proper directory
val imageFile = File(this.filesDir, "image.png")
val imageUri = getImageUri(this, imageFile)
- takePicture.launch(imageUri)
+ if (imageUri != null) {
+ takePicture.launch(imageUri)
+ }
}
@RequiresApi(Build.VERSION_CODES.R)
diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/FullscreenActivity.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/FullscreenActivity.kt
index 9813c47..600c2b3 100644
--- a/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/FullscreenActivity.kt
+++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/FullscreenActivity.kt
@@ -28,7 +28,7 @@ class FullscreenActivity : Activity() {
fullscreenImageView = findViewById(R.id.fullscreenImageView)
val extras = intent.extras
- val imageHash = extras!!.get("imagehash") as String? //extras!!.getParcelable("imagehash") as String?
+ val imageHash = extras!!.get("imagehash") as String?
val picturesDir = File(filesDir, "pictures")
diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/MainActivity.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/MainActivity.kt
index e5d15db..8a87d8e 100644
--- a/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/MainActivity.kt
+++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/MainActivity.kt
@@ -33,10 +33,26 @@ class MainActivity : AppCompatActivity() {
// appBarConfiguration = AppBarConfiguration(navController.graph)
// setupActionBarWithNavController(navController, appBarConfiguration)
- binding.addProductFab.setOnClickListener { view ->
- val addProductIntent = Intent(this, AddProductActivity::class.java)
- val extras = Bundle()
- ContextCompat.startActivity(this, addProductIntent, extras)
+ binding.newElementFab.setOnClickListener { view ->
+ val currentPosition = binding.tabTablayout.selectedTabPosition
+ val fragment = adapter.getItem(currentPosition)
+
+ when (fragment::class.simpleName.toString()) {
+ "StorageFragment" -> {
+ val addProductIntent = Intent(this, AddProductActivity::class.java)
+ val extras = Bundle()
+ ContextCompat.startActivity(this, addProductIntent, extras)
+ }
+ "CategoriesFragment" -> {
+ val addCategoryIntent = Intent(this, AddCategoryActivity::class.java)
+ val extras = Bundle()
+ extras.putInt("categoryid", 0)
+ extras.putString("categoryname", "New category")
+ addCategoryIntent.putExtras(extras)
+ ContextCompat.startActivity(this, addCategoryIntent, extras)
+ }
+ }
+
}
}
@@ -69,7 +85,6 @@ class MainActivity : AppCompatActivity() {
"StorageFragment" -> {
val storageFragment = fragment as StorageFragment
storageFragment.removeSelected()
-
}
}
true
diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/AddProductFragment.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/AddProductFragment.kt
index 00a45ff..a4f327d 100644
--- a/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/AddProductFragment.kt
+++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/AddProductFragment.kt
@@ -1,29 +1,20 @@
package org.foxarmy.barcodescannerforemployees.fragments
import android.os.Bundle
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import org.foxarmy.barcodescannerforemployees.R
import org.foxarmy.barcodescannerforemployees.databinding.FragmentAddProductBinding
-import java.io.File
-
class AddProductFragment : Fragment() {
-
-
private lateinit var binding: FragmentAddProductBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
-
-
-
- Log.d("QWERTYUIOP", "хуета1")
binding = FragmentAddProductBinding.inflate(layoutInflater)
return inflater.inflate(R.layout.fragment_add_product, container, false)
}
diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/CategoriesFragment.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/CategoriesFragment.kt
index 494b9a5..4b39971 100644
--- a/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/CategoriesFragment.kt
+++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/CategoriesFragment.kt
@@ -1,11 +1,17 @@
package org.foxarmy.barcodescannerforemployees.fragments
import android.os.Bundle
+import android.provider.BaseColumns
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.LinearLayout
import androidx.fragment.app.Fragment
+import org.foxarmy.barcodescannerforemployees.CategoriesContract
+import org.foxarmy.barcodescannerforemployees.Category
+import org.foxarmy.barcodescannerforemployees.DBStorageController
import org.foxarmy.barcodescannerforemployees.R
+import org.foxarmy.barcodescannerforemployees.views.CategoryView
class CategoriesFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
@@ -23,9 +29,34 @@ class CategoriesFragment : Fragment() {
override fun onResume() {
super.onResume()
-// updateContent()
+ updateContent()
}
+ fun updateContent() {
+ val layout = view?.findViewById(R.id.categoriesLayout)
+ layout?.removeAllViews()
+
+ val db = DBStorageController(requireContext()).readableDatabase
+
+ val projection = arrayOf(
+ BaseColumns._ID,
+ CategoriesContract.CategoryEntry.CATEGORY_NAME
+ )
+
+ val cursor = db.query(CategoriesContract.CategoryEntry.TABLE_NAME, projection, null, null, null, null, null)
+
+ with (cursor) {
+ while(moveToNext()) {
+ val categoryId = getInt(getColumnIndexOrThrow(BaseColumns._ID))
+ val categoryName = getString(getColumnIndexOrThrow(CategoriesContract.CategoryEntry.CATEGORY_NAME))
+
+ val category = Category(categoryId, categoryName)
+
+ val categoryView = CategoryView(requireActivity(), requireContext(), category)
+ layout?.addView(categoryView)
+ }
+ }
+ }
// public fun updateContent() {
//
// val grv = getView()?.findViewById(R.id.contentGridLayout)
@@ -65,6 +96,6 @@ class CategoriesFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
-// updateContent()
+ updateContent()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/StorageFragment.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/StorageFragment.kt
index 6264160..1ce474e 100644
--- a/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/StorageFragment.kt
+++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/fragments/StorageFragment.kt
@@ -13,24 +13,12 @@ import androidx.gridlayout.widget.GridLayout
import org.foxarmy.barcodescannerforemployees.*
import org.foxarmy.barcodescannerforemployees.views.AbstractProductView
-/**
- * A simple [Fragment] subclass.
- * Use the [StorageFragment.newInstance] factory method to
- * create an instance of this fragment.
- */
class StorageFragment : Fragment() {
- public var test_value = 1
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- }
-
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- // Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_storage, container, false)
}
@@ -41,7 +29,7 @@ class StorageFragment : Fragment() {
}
fun removeSelected() {
- val grv = getView()?.findViewById(R.id.contentGridLayout)
+ val grv = view?.findViewById(R.id.contentGridLayout)
val db = DBStorageController(requireContext())
var deleted = false
@@ -61,7 +49,7 @@ class StorageFragment : Fragment() {
fun updateContent() {
- val grv = getView()?.findViewById(R.id.contentGridLayout)
+ val grv = view?.findViewById(R.id.contentGridLayout)
grv?.removeAllViews()
val db = DBStorageController(requireContext()).readableDatabase
@@ -79,8 +67,20 @@ class StorageFragment : Fragment() {
val productName = getString(getColumnIndexOrThrow(ProductContract.ProductEntry.PRODUCT_NAME))
val netWeight = getDouble(getColumnIndexOrThrow(ProductContract.ProductEntry.PRODUCT_NET_WEIGHT))
val productImageHash = getString(getColumnIndexOrThrow(ProductContract.ProductEntry.IMAGE_FILENAME))
+ val category = getInt(getColumnIndexOrThrow(ProductContract.ProductEntry.CATEGORY))
+ var categoryName = ""
- val product = AbstractProduct(productId, productName, netWeight, productImageHash, 1)
+ val projection2 = arrayOf(CategoriesContract.CategoryEntry.CATEGORY_NAME)
+ val cursor2 = db.query(CategoriesContract.CategoryEntry.TABLE_NAME, projection2, "${BaseColumns._ID} = ?",
+ arrayOf(category.toString()), null, null, BaseColumns._ID+" ASC")
+
+ with (cursor2) {
+ while (moveToNext()) {
+ categoryName = getString(getColumnIndexOrThrow(CategoriesContract.CategoryEntry.CATEGORY_NAME))
+ }
+ }
+
+ val product = AbstractProduct(productId, productName, netWeight, productImageHash, categoryName)
generateThumbnailForImage(context!!, productImageHash)
diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/views/AbstractProductView.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/views/AbstractProductView.kt
index cc56321..d3bf0ba 100644
--- a/app/src/main/java/org/foxarmy/barcodescannerforemployees/views/AbstractProductView.kt
+++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/views/AbstractProductView.kt
@@ -61,8 +61,9 @@ class AbstractProductView: LinearLayout {
productNameField.text = product.name
netWeightField.text = product.netWeight.toString()
+ categoryField.text = product.categoryName
- //TODO: category and units
+ //TODO: units
productLayout.setOnLongClickListener {
isProductSelected = !isProductSelected
diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/views/CategoryView.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/views/CategoryView.kt
new file mode 100644
index 0000000..57e2d12
--- /dev/null
+++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/views/CategoryView.kt
@@ -0,0 +1,47 @@
+package org.foxarmy.barcodescannerforemployees.views
+
+import android.app.Activity
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.widget.Button
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.core.content.ContextCompat
+import org.foxarmy.barcodescannerforemployees.Category
+import org.foxarmy.barcodescannerforemployees.R
+import org.foxarmy.barcodescannerforemployees.activities.AddCategoryActivity
+
+class CategoryView : LinearLayout {
+ var category: Category
+ val categoryName: TextView
+ val updateButton: Button
+ val deleteButton: Button
+
+ constructor(activity: Activity, context: Context, category: Category) : super(context) {
+ this.category = category
+
+ val inflater: LayoutInflater = activity.layoutInflater
+ inflater.inflate(R.layout.category_view, this)
+
+ categoryName = findViewById(R.id.categoryNameTextView)
+ updateButton = findViewById(R.id.updateButton)
+ deleteButton = findViewById(R.id.deleteButton)
+
+ categoryName.text = category.name
+
+ updateButton.setOnClickListener {
+ val addCategoryIntent = Intent(context, AddCategoryActivity::class.java)
+ val extras = Bundle()
+ extras.putInt("categoryid", category.id)
+ extras.putString("categoryname", category.name)
+ addCategoryIntent.putExtras(extras)
+ ContextCompat.startActivity(context, addCategoryIntent, extras)
+ }
+
+ deleteButton.setOnClickListener {
+ TODO("implement delete button")
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_add_category.xml b/app/src/main/res/layout/activity_add_category.xml
new file mode 100644
index 0000000..eed9139
--- /dev/null
+++ b/app/src/main/res/layout/activity_add_category.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index ac34bc3..eddf761 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -43,7 +43,7 @@
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_add_product.xml b/app/src/main/res/layout/fragment_add_product.xml
index 03ec271..e1ff184 100644
--- a/app/src/main/res/layout/fragment_add_product.xml
+++ b/app/src/main/res/layout/fragment_add_product.xml
@@ -16,8 +16,8 @@
android:layout_height="50dp"
android:text="@string/scan_label"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/netWeight"
- android:layout_marginTop="25dp"/>
+ app:layout_constraintTop_toBottomOf="@+id/categoryTextView"
+ android:layout_marginTop="15dp"/>
+
+
+ app:layout_constraintTop_toBottomOf="@+id/categoryTextView"
+ android:layout_marginTop="15dp" app:layout_constraintEnd_toEndOf="parent"/>
diff --git a/app/src/main/res/layout/fragment_categories.xml b/app/src/main/res/layout/fragment_categories.xml
index 6f5f4dd..5b50fe5 100644
--- a/app/src/main/res/layout/fragment_categories.xml
+++ b/app/src/main/res/layout/fragment_categories.xml
@@ -5,9 +5,9 @@
android:layout_height="match_parent"
android:id="@+id/fragment_storage"
tools:context=".fragments.CategoriesFragment">
-
-
+ android:layout_height="match_parent" android:id="@+id/categoriesLayout">
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7425902..ed7f3c1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -22,36 +22,8 @@
DUMMY\nCONTENT
Fullscreen image
Next
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris volutpat, dolor id
- interdum ullamcorper, risus dolor egestas lectus, sit amet mattis purus dui nec risus. Maecenas non sodales
- nisi, vel dictum dolor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
- himenaeos. Suspendisse blandit eleifend diam, vel rutrum tellus vulputate quis. Aliquam eget libero aliquet,
- imperdiet nisl a, ornare ex. Sed rhoncus est ut libero porta lobortis. Fusce in dictum tellus.\n\n
- Suspendisse interdum ornare ante. Aliquam nec cursus lorem. Morbi id magna felis. Vivamus egestas, est a
- condimentum egestas, turpis nisl iaculis ipsum, in dictum tellus dolor sed neque. Morbi tellus erat, dapibus ut
- sem a, iaculis tincidunt dui. Interdum et malesuada fames ac ante ipsum primis in faucibus. Curabitur et eros
- porttitor, ultricies urna vitae, molestie nibh. Phasellus at commodo eros, non aliquet metus. Sed maximus nisl
- nec dolor bibendum, vel congue leo egestas.\n\n
- Sed interdum tortor nibh, in sagittis risus mollis quis. Curabitur mi odio, condimentum sit amet auctor at,
- mollis non turpis. Nullam pretium libero vestibulum, finibus orci vel, molestie quam. Fusce blandit tincidunt
- nulla, quis sollicitudin libero facilisis et. Integer interdum nunc ligula, et fermentum metus hendrerit id.
- Vestibulum lectus felis, dictum at lacinia sit amet, tristique id quam. Cras eu consequat dui. Suspendisse
- sodales nunc ligula, in lobortis sem porta sed. Integer id ultrices magna, in luctus elit. Sed a pellentesque
- est.\n\n
- Aenean nunc velit, lacinia sed dolor sed, ultrices viverra nulla. Etiam a venenatis nibh. Morbi laoreet, tortor
- sed facilisis varius, nibh orci rhoncus nulla, id elementum leo dui non lorem. Nam mollis ipsum quis auctor
- varius. Quisque elementum eu libero sed commodo. In eros nisl, imperdiet vel imperdiet et, scelerisque a mauris.
- Pellentesque varius ex nunc, quis imperdiet eros placerat ac. Duis finibus orci et est auctor tincidunt. Sed non
- viverra ipsum. Nunc quis augue egestas, cursus lorem at, molestie sem. Morbi a consectetur ipsum, a placerat
- diam. Etiam vulputate dignissim convallis. Integer faucibus mauris sit amet finibus convallis.\n\n
- Phasellus in aliquet mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis
- egestas. In volutpat arcu ut felis sagittis, in finibus massa gravida. Pellentesque id tellus orci. Integer
- dictum, lorem sed efficitur ullamcorper, libero justo consectetur ipsum, in mollis nisl ex sed nisl. Donec
- maximus ullamcorper sodales. Praesent bibendum rhoncus tellus nec feugiat. In a ornare nulla. Donec rhoncus
- libero vel nunc consequat, quis tincidunt nisl eleifend. Cras bibendum enim a justo luctus vestibulum. Fusce
- dictum libero quis erat maximus, vitae volutpat diam dignissim.
-
- Delete item(s)...
+ Delete item(s)…
+ update
+ delete
+ Category
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 1615d73..797b10a 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -14,6 +14,7 @@ navigationFragmentKtx = "2.8.0"
navigationUiKtx = "2.8.0"
firebaseCrashlyticsBuildtools = "3.0.2"
gridlayout = "1.0.0"
+activity = "1.9.2"
[libraries]
androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "cameraView" }
@@ -29,6 +30,7 @@ androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navi
androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigationUiKtx" }
firebase-crashlytics-buildtools = { group = "com.google.firebase", name = "firebase-crashlytics-buildtools", version.ref = "firebaseCrashlyticsBuildtools" }
androidx-gridlayout = { group = "androidx.gridlayout", name = "gridlayout", version.ref = "gridlayout" }
+androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }