Commit 2734bbec8718f14c921c6b752a5d244a7218b3af

Authored by Mauricio Sanchez
1 parent b5325948ae
Exists in master

25022020 1340

app/src/main/AndroidManifest.xml
... ... @@ -14,7 +14,7 @@
14 14 android:theme="@style/AppTheme"
15 15 android:usesCleartextTraffic="true">
16 16 <activity
17   - android:name=".MainActivity"
  17 + android:name=".ui.SplashActivity"
18 18 android:label="@string/app_name"
19 19 android:theme="@style/AppTheme.NoActionBar">
20 20 <intent-filter>
... ... @@ -23,6 +23,12 @@
23 23 <category android:name="android.intent.category.LAUNCHER" />
24 24 </intent-filter>
25 25 </activity>
  26 + <activity
  27 + android:name=".ui.MainActivity"
  28 + android:label="@string/app_name"
  29 + android:theme="@style/AppTheme.NoActionBar">
  30 +
  31 + </activity>
26 32 </application>
27 33  
28 34 </manifest>
29 35 \ No newline at end of file
app/src/main/java/com/focasoftware/deboinventariov20/DB/DAO/ArticulosDAO.kt
... ... @@ -67,9 +67,12 @@ interface ServeInvDao {
67 67 @Insert(onConflict = OnConflictStrategy.REPLACE)
68 68 fun insertServer(servidor: ServeInv)
69 69  
70   - @Query("SELECT SER_NUM,SER_DESC, SER_DIR FROM $TABLA_SERV_INV")
  70 + @Query("SELECT * FROM ServeInv")
71 71 suspend fun fetchAllServers(): List<ServeInv>
72 72  
73 73 @Query("DELETE FROM ServeInv WHERE SER_NUM = :number")
74 74 suspend fun deleteServer(number: Long)
  75 +
  76 + @Query("SELECT SER_NUM FROM ServeInv ORDER BY SER_NUM DESC")
  77 + suspend fun findLastSer(): Long
75 78 }
76 79 \ No newline at end of file
app/src/main/java/com/focasoftware/deboinventariov20/MainActivity.kt
... ... @@ -1,48 +0,0 @@
1   -package com.focasoftware.deboinventariov20
2   -
3   -import android.os.Bundle
4   -import android.view.Menu
5   -import com.google.android.material.floatingactionbutton.FloatingActionButton
6   -import com.google.android.material.snackbar.Snackbar
7   -import com.google.android.material.navigation.NavigationView
8   -import androidx.navigation.findNavController
9   -import androidx.navigation.ui.AppBarConfiguration
10   -import androidx.navigation.ui.navigateUp
11   -import androidx.navigation.ui.setupActionBarWithNavController
12   -import androidx.navigation.ui.setupWithNavController
13   -import androidx.drawerlayout.widget.DrawerLayout
14   -import androidx.appcompat.app.AppCompatActivity
15   -import androidx.appcompat.widget.Toolbar
16   -
17   -class MainActivity : AppCompatActivity() {
18   -
19   - private lateinit var appBarConfiguration: AppBarConfiguration
20   -
21   - override fun onCreate(savedInstanceState: Bundle?) {
22   - super.onCreate(savedInstanceState)
23   - setContentView(R.layout.activity_main)
24   - val toolbar: Toolbar = findViewById(R.id.toolbar)
25   - setSupportActionBar(toolbar)
26   -
27   -
28   - val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
29   - val navView: NavigationView = findViewById(R.id.nav_view)
30   - val navController = findNavController(R.id.nav_host_fragment)
31   -
32   - appBarConfiguration = AppBarConfiguration(setOf(
33   - R.id.mainFragment2,R.id.inventarioFragment, R.id.actuaMaestrosFragment, R.id.configuracionFragment), drawerLayout)
34   - setupActionBarWithNavController(navController, appBarConfiguration)
35   - navView.setupWithNavController(navController)
36   - }
37   -
38   - override fun onCreateOptionsMenu(menu: Menu): Boolean {
39   - // Inflate the menu; this adds items to the action bar if it is present.
40   - menuInflater.inflate(R.menu.main, menu)
41   - return true
42   - }
43   -
44   - override fun onSupportNavigateUp(): Boolean {
45   - val navController = findNavController(R.id.nav_host_fragment)
46   - return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
47   - }
48   -}
49 0 \ No newline at end of file
app/src/main/java/com/focasoftware/deboinventariov20/Model/ProductosService.kt
... ... @@ -4,8 +4,8 @@ import retrofit2.Retrofit
4 4 import retrofit2.converter.gson.GsonConverterFactory
5 5  
6 6 object ProductosService {
7   - private val BASE_URL ="http://10.0.2.2:3000/"
8   - //"http://10.231.45.83:3000/"
  7 + private val BASE_URL ="http://192.168.0.8:3000/"
  8 + //"http://10.0.2.2:3000/"
9 9  
10 10  
11 11 fun getProductosService(): ProductosApi {
app/src/main/java/com/focasoftware/deboinventariov20/Model/Tablas.kt
... ... @@ -10,8 +10,7 @@ import com.focasoftware.deboinventario.ui.actualizacionMaestros.Constans.Compani
10 10 import com.google.gson.annotations.SerializedName
11 11 import java.io.Serializable
12 12  
13   -data class Productos(
14   - @SerializedName("SEC")var sector: String?,
  13 +data class Productos(@SerializedName("SEC") var sector: String?,
15 14 @SerializedName("COD") var codigo: String?,
16 15 @SerializedName("DESC") var descripcion: String?,
17 16 @SerializedName("CB") var codBar: String?,
... ... @@ -23,8 +22,7 @@ data class Productos(
23 22 @SerializedName("FOTO") var imagen: String?)
24 23  
25 24 @Entity(tableName = TABLA_ART)
26   -data class Articles(
27   - @ColumnInfo(name = "SEC") var sector: String?,
  25 +data class Articles(@ColumnInfo(name = "SEC") var sector: String?,
28 26 @ColumnInfo(name = "COD") var codigo: String?,
29 27 @ColumnInfo(name = "DES") var descripcion: String?,
30 28 @ColumnInfo(name = "CB") var codBar: String?,
... ... @@ -35,7 +33,8 @@ data class Articles(
35 33 @ColumnInfo(name = "DEPSN") var depSn: Int?,
36 34 @ColumnInfo(name = "FOTO") var imagen: String?) : Serializable {
37 35 @PrimaryKey(autoGenerate = true)
38   - @ColumnInfo(name = "id") var id: Long = 0
  36 + @ColumnInfo(name = "id")
  37 + var id: Long = 0
39 38 }
40 39  
41 40  
... ... @@ -56,8 +55,7 @@ data class InvHead(@PrimaryKey(autoGenerate = true) @ColumnInfo(name = &quot;INV_NUM&quot;
56 55  
57 56  
58 57 @Entity(tableName = TABLA_INV_B)
59   -data class InvBody(
60   - @ColumnInfo(name = "INV_NUM") var invNum: Int,
  58 +data class InvBody(@ColumnInfo(name = "INV_NUM") var invNum: Int,
61 59 @ColumnInfo(name = "SEC") var sector: String?,
62 60 @ColumnInfo(name = "COD") var codigo: String?,
63 61 @ColumnInfo(name = "DES") var descripcion: String?,
... ... @@ -69,15 +67,18 @@ data class InvBody(
69 67 @ColumnInfo(name = "BAL") var balanza: Int?,
70 68 @ColumnInfo(name = "DSN") var depSn: Int?,
71 69 @ColumnInfo(name = "INV_FEI") var fechaInicio: String?,
72   - @ColumnInfo(name = "INV_FEF") var fechaFinal: String?):Serializable{
73   - @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") var id: Long = 0
  70 + @ColumnInfo(name = "INV_FEF") var fechaFinal: String?) : Serializable {
  71 + @PrimaryKey(autoGenerate = true)
  72 + @ColumnInfo(name = "id")
  73 + var id: Long = 0
74 74 }
75 75  
76 76 @Entity(tableName = TABLA_SERV_INV)
77 77 data class ServeInv(
78 78  
79   - @ColumnInfo(name = "SER_DESC") var descripcion: String?, @ColumnInfo(name = "SER_DIR") var direccion: String?, @ColumnInfo(name = "SER_PRE") var predeterminado: String?) : Serializable {
80   - @PrimaryKey(autoGenerate = true)
81   - @ColumnInfo(name = "SER_NUM")
82   - var ID: Int = 0
83   -}
  79 + @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "SER_NUM") var SER_NUM: Long,
  80 + @ColumnInfo(name = "SER_DESC") var descripcion: String?,
  81 + @ColumnInfo(name = "SER_DIR") var direccion: String?,
  82 + @ColumnInfo(name = "SER_PRE") var predeterminado: String?)
  83 +
  84 +
app/src/main/java/com/focasoftware/deboinventariov20/ui/MainActivity.kt
... ... @@ -0,0 +1,46 @@
  1 +package com.focasoftware.deboinventariov20.ui
  2 +
  3 +import android.os.Bundle
  4 +import android.view.Menu
  5 +import com.google.android.material.navigation.NavigationView
  6 +import androidx.navigation.findNavController
  7 +import androidx.navigation.ui.AppBarConfiguration
  8 +import androidx.navigation.ui.navigateUp
  9 +import androidx.navigation.ui.setupActionBarWithNavController
  10 +import androidx.navigation.ui.setupWithNavController
  11 +import androidx.drawerlayout.widget.DrawerLayout
  12 +import androidx.appcompat.app.AppCompatActivity
  13 +import androidx.appcompat.widget.Toolbar
  14 +import com.focasoftware.deboinventariov20.R
  15 +
  16 +class MainActivity : AppCompatActivity() {
  17 +
  18 + private lateinit var appBarConfiguration: AppBarConfiguration
  19 +
  20 + override fun onCreate(savedInstanceState: Bundle?) {
  21 + super.onCreate(savedInstanceState)
  22 + setContentView(R.layout.activity_main)
  23 + val toolbar: Toolbar = findViewById(R.id.toolbar)
  24 + setSupportActionBar(toolbar)
  25 +
  26 +
  27 + val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
  28 + val navView: NavigationView = findViewById(R.id.nav_view)
  29 + val navController = findNavController(R.id.nav_host_fragment)
  30 +
  31 + appBarConfiguration = AppBarConfiguration(setOf(R.id.mainFragment2, R.id.inventarioFragment, R.id.actuaMaestrosFragment, R.id.configuracionFragment), drawerLayout)
  32 + setupActionBarWithNavController(navController, appBarConfiguration)
  33 + navView.setupWithNavController(navController)
  34 + }
  35 +
  36 + override fun onCreateOptionsMenu(menu: Menu): Boolean {
  37 + // Inflate the menu; this adds items to the action bar if it is present.
  38 + menuInflater.inflate(R.menu.main, menu)
  39 + return true
  40 + }
  41 +
  42 + override fun onSupportNavigateUp(): Boolean {
  43 + val navController = findNavController(R.id.nav_host_fragment)
  44 + return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
  45 + }
  46 +}
0 47 \ No newline at end of file
app/src/main/java/com/focasoftware/deboinventariov20/ui/SplashActivity.kt
... ... @@ -0,0 +1,29 @@
  1 +package com.focasoftware.deboinventariov20.ui
  2 +
  3 +import android.app.Activity
  4 +import android.content.Intent
  5 +import android.os.Bundle
  6 +import com.focasoftware.deboinventariov20.R
  7 +
  8 +class SplashActivity : Activity() {
  9 +
  10 + override fun onCreate(savedInstanceState: Bundle?) {
  11 + super.onCreate(savedInstanceState)
  12 + setContentView(R.layout.activity_splash)
  13 + //window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
  14 +
  15 + val bac = object : Thread(){
  16 + override fun run(){
  17 + try {
  18 + Thread.sleep(500)
  19 + val intent = Intent(baseContext, MainActivity:: class.java)
  20 + startActivity(intent)
  21 + finish()
  22 + } catch (e : Exception){
  23 + e.printStackTrace()
  24 + }
  25 + }
  26 + }
  27 + bac.start()
  28 + }
  29 +}
app/src/main/java/com/focasoftware/deboinventariov20/ui/descripcionFragment/DescripcionFragment.kt
... ... @@ -84,7 +84,7 @@ class DescripcionFragment : Fragment() {
84 84 }
85 85  
86 86 override fun onSwiped(viewHolder: RecyclerView.ViewHolder, position: Int) {
87   - val type = InputType.TYPE_CLASS_PHONE
  87 + val type = InputType.TYPE_CLASS_NUMBER
88 88 MaterialDialog(requireContext()).show {
89 89 title(text = "Producto: ${(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.descripcion}")
90 90 message(R.string.sMensajeEncontrado)
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/InventarioFragment.kt
... ... @@ -50,6 +50,7 @@ class InventarioFragment : Fragment() {
50 50 private lateinit var navController: NavController
51 51 private var InventarioNuevo: Int = 0
52 52 private var iEstado = 0
  53 + private var iBusquedaPor=0
53 54 private var fCant = 0F
54 55 private var bFirst = false
55 56 private lateinit var deleteIcon: Drawable
... ... @@ -100,7 +101,7 @@ class InventarioFragment : Fragment() {
100 101 var indiceDelArtEncontrado = 0
101 102  
102 103 //TODO COMIENZA LA BUSQUEDA POR CODIGO DE BARRAS
103   - when (iEstado) {
  104 + when (iBusquedaPor) {
104 105 0 -> {
105 106 indiceDelArtEncontrado = buscoArtEnRv(sChangeUpper.toUpperCase(Locale.ROOT), 0)//TODO Si encuentra el articulo en el RV devuelve el indice
106 107 //TODO Si no lo encuentra devuelve -1
... ... @@ -132,7 +133,7 @@ class InventarioFragment : Fragment() {
132 133 // }
133 134 fCant = listArticulos[indiceDelArtEncontrado].cantTomada
134 135  
135   - val type = InputType.TYPE_CLASS_PHONE
  136 + val type = InputType.TYPE_CLASS_NUMBER
136 137 MaterialDialog(requireContext()).show {
137 138  
138 139 title(text = "Producto '$sChangeUpper', se encuentra cargado.")
... ... @@ -228,7 +229,7 @@ class InventarioFragment : Fragment() {
228 229 viewAdapter.notifyDataSetChanged()
229 230 } else {
230 231 fCant = listArticulos[indiceDelArtEncontrado].cantTomada
231   - val type = InputType.TYPE_CLASS_PHONE
  232 + val type = InputType.TYPE_CLASS_NUMBER
232 233 MaterialDialog(requireContext()).show {
233 234  
234 235 title(text = "Producto '$sChangeUpper', se encuentra cargado.")
... ... @@ -320,19 +321,22 @@ class InventarioFragment : Fragment() {
320 321 ivCamara.setImageResource(R.drawable.codbar)
321 322 etCodigoBarras.hint = "Busqueda por C. Barras"
322 323 swSumaUno.visibility = View.VISIBLE
323   - iEstado = 0
  324 + iBusquedaPor=0
  325 + iEstado = 1
324 326 }
325 327 1 -> {
326 328 ivCamara.setImageResource(R.drawable.desc)
327 329 etCodigoBarras.hint = "Busqueda por Descripciรณn"
328 330 swSumaUno.visibility = View.GONE
329   - iEstado = 1
  331 + iBusquedaPor=1
  332 + iEstado = 2
330 333 }
331 334 2 -> {
332 335 ivCamara.setImageResource(R.drawable.cod_origen)
333 336 etCodigoBarras.hint = "Busqueda por C. Origen"
334 337 swSumaUno.visibility = View.GONE
335   - iEstado = 2
  338 + iBusquedaPor=2
  339 + iEstado = 0
336 340 }
337 341 }
338 342 }
... ... @@ -434,47 +438,19 @@ class InventarioFragment : Fragment() {
434 438 // }
435 439 // }
436 440 } else {//TODO si no lo encuentra en la BD
437   -// MaterialDialog(requireContext()).show {
438   -// title(R.string.sTitulo)
439   -// message(R.string.sMensaje)
440   -// positiveButton(R.string.btnOk) {
441   -// dismiss()
442   -// }
443   -// }.cornerRadius(10F)
444   -
445   -// val modalDialog = DialogNoEncontrado()
446   -// modalDialog.isCancelable=false
447   -// modalDialog.show(requireActivity().supportFragmentManager, "confirmDialog")
448   -//
449   -//
450   -// val modalDialog = DialogNoEncontrado().newInstance(
451   -// "El producto $etCodigoBarras.text.toString()",
452   -// "No se encotro en la Base de Datos."
453   -// )
454   -// modalDialog?.show(requireActivity().supportFragmentManager, "DialogFragment")
455   -
456   -// val mDialogView = LayoutInflater.from(context).inflate(R.layout.login_dialog, null)
457   -// val mBuilder = AlertDialog.Builder(requireContext()).setView(mDialogView).setTitle("Login Form").setCancelable(false)
458   -// val mAlertDialog = mBuilder.show()
459   -// mDialogView.dialogLoginBtn.setOnClickListener {
460   -// mAlertDialog.dismiss()
461   -// //get text from EditTexts of custom layout
462   -// val name = mDialogView.tvgenerico4.text.toString()
463   -//
464   -//// fCant = 0F
465   -//// fCant = name.toFloat()
466   -// }
467   -// mDialogView.dialogCancelBtn.setOnClickListener {
468   -// mAlertDialog.dismiss()
469   -// }
  441 + MaterialDialog(requireContext()).show {
  442 + title(text = "El articulo ${etCodigoBarras.text}")
  443 + message(R.string.sMensaje)
  444 + positiveButton(R.string.btnOk) {
  445 + dismiss()
  446 + }
  447 + }.cornerRadius(10F)
470 448 }
471   -
472 449 }
473 450  
474 451 private fun ContinuarCargaCB(artAcargar: Articles?) {
475 452  
476 453 if (artAcargar != null) {//Si lo encuentra en la BD
477   -
478 454 if (swSumaUno!!.isChecked) {// SI ESTA +1, PONE CANTIDAD 1
479 455 fCant = 0F
480 456 fCant += 1F
app/src/main/java/com/focasoftware/deboinventariov20/ui/main/Base/BaseViewHolder.kt
... ... @@ -0,0 +1,8 @@
  1 +package com.focasoftware.deboinventariov20.ui.main.Base
  2 +
  3 +import android.view.View
  4 +import androidx.recyclerview.widget.RecyclerView
  5 +
  6 +abstract class BaseViewHolder<T>(itemView:View):RecyclerView.ViewHolder(itemView) {
  7 + abstract fun bind(item:T, position:Int)
  8 +}
0 9 \ No newline at end of file
app/src/main/java/com/focasoftware/deboinventariov20/ui/main/InventarioListAdapter.kt
1 1 package com.focasoftware.deboinventariov20.ui.main
2 2  
  3 +import android.content.Context
3 4 import android.view.LayoutInflater
4 5 import android.view.View
5 6 import android.view.ViewGroup
  7 +import android.widget.AdapterView
6 8 import androidx.recyclerview.widget.RecyclerView
7 9 import com.focasoftware.deboinventariov20.R
8   -import com.google.android.material.snackbar.Snackbar
9   -import kotlinx.android.synthetic.main.item.view.*
  10 +import com.focasoftware.deboinventariov20.ui.main.Base.BaseViewHolder
10 11 import kotlinx.android.synthetic.main.item_principal.view.*
11   -import javax.sql.ConnectionEventListener
12 12  
  13 +class InventarioListAdapter(private val context: Context, private val inv: ArrayList<ItemInventario>, private val itemClickListener: OnInventarioClickListener) :
  14 + RecyclerView.Adapter<BaseViewHolder<*>>() {
13 15  
14   -class InventarioListAdapter(private val productos: ArrayList<ItemInventario>, private val listener: OnItemClickListener) : RecyclerView.Adapter<InventarioListAdapter.ItemsViewHolder>() {
  16 + interface OnInventarioClickListener {
  17 + fun onItemClick(inventario: String?)
  18 + }
15 19  
16   - internal var items2: ArrayList<ItemInventario>? = null
  20 + override fun onCreateViewHolder(parent: ViewGroup, p1: Int) = ItemsViewHolder(LayoutInflater.from(context).inflate(R.layout.item_principal, parent, false))
17 21  
18   - init {
19   - this.items2 = productos
20   - }
  22 + override fun getItemCount() = inv.size
21 23  
22   - override fun onCreateViewHolder(parent: ViewGroup, p1: Int) = ItemsViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_principal, parent, false))
23 24  
24   - override fun getItemCount() = productos.size
  25 + inner class ItemsViewHolder(itemview: View) : BaseViewHolder<ItemInventario>(itemview) {
  26 + override fun bind(item: ItemInventario, position: Int) {
  27 + itemView.setOnClickListener {itemClickListener.onItemClick(item.inventario)}
  28 + itemView.tvPrincipalinventario.text = item.inventario
  29 + }
25 30  
26   - override fun onBindViewHolder(holder: ItemsViewHolder, position: Int) {
27   - val currentItem=productos[position]
28   - holder.inventario.text=currentItem.inventario
29 31 }
30 32  
31   - inner class ItemsViewHolder constructor(view: View) : RecyclerView.ViewHolder(view),View.OnClickListener {
32   -
33   - val inventario = view.inventario
34   - init {
35   - itemView.setOnClickListener(this)
36   - }
37   - override fun onClick(p0: View?) {
38   - val position=adapterPosition
39   - if (position!=RecyclerView.NO_POSITION) {
40   - listener.OnItemClick(position)
41   - }
  33 + override fun onBindViewHolder(holder: BaseViewHolder<*>, position: Int) {
  34 + when (holder) {
  35 + is ItemsViewHolder -> holder.bind(inv[position], position)
  36 + else -> IllegalArgumentException("No se pudo pasar el ViewHolder")
42 37 }
43 38 }
44 39  
45   - interface OnItemClickListener{
46   - fun OnItemClick(position: Int)
47   - }
  40 +
48 41 }
49 42  
  43 +
  44 +
app/src/main/java/com/focasoftware/deboinventariov20/ui/main/MainFragment.kt
... ... @@ -20,7 +20,7 @@ import kotlinx.coroutines.async
20 20 import kotlinx.coroutines.launch
21 21 import java.util.*
22 22  
23   -class MainFragment : Fragment(), InventarioListAdapter.OnItemClickListener {
  23 +class MainFragment : Fragment(), InventarioListAdapter.OnInventarioClickListener {
24 24 private lateinit var inventarios: List<InvHead>
25 25 private lateinit var rcInventario: RecyclerView
26 26 private lateinit var viewAdapter: RecyclerView.Adapter<*>
... ... @@ -75,7 +75,7 @@ class MainFragment : Fragment(), InventarioListAdapter.OnItemClickListener {
75 75 //(articulos.sector, articulos.codigo, articulos.descripcion, cant, articulos.codBar)
76 76 listIvn.add(item)
77 77  
78   - viewAdapter = InventarioListAdapter(listIvn, this)
  78 + viewAdapter = InventarioListAdapter(requireContext(),listIvn,this)
79 79 viewManager = LinearLayoutManager(requireContext())
80 80  
81 81 rcInventario.apply {
... ... @@ -90,15 +90,17 @@ class MainFragment : Fragment(), InventarioListAdapter.OnItemClickListener {
90 90 listIvn.clear()
91 91 }
92 92  
93   - override fun OnItemClick(position: Int) {
94   - val editor = sharedPreferences.edit()
95   - var invSel:String = listIvn[position].inventario.toString()
96   - invSel=invSel.substring(3, 5)
97   - editor?.putString("Inventario", invSel)
98   - editor?.apply()
99   - editor.commit()
100   - navController.navigate(R.id.action_mainFragment2_to_inventarioFragment)
  93 + override fun onItemClick(inventario: String?) {
101 94  
  95 + val editor = sharedPreferences.edit()
  96 + var invSel:String =inventario.toString()
  97 + invSel=invSel.substring(3, 5)
  98 + editor?.putString("Inventario", invSel)
  99 + editor?.apply()
  100 + editor.commit()
  101 + navController.navigate(R.id.action_mainFragment2_to_inventarioFragment)
102 102 }
  103 +
  104 +
103 105 }
104 106  
app/src/main/java/com/focasoftware/deboinventariov20/ui/servidores/ItemsServidores.kt
1 1 package com.focasoftware.deboinventariov20.ui.servidores
2 2  
3   -data class ItemsServidores (val descripcion: String?, var direccion: String?, var predeterminado: String?)
4 3 \ No newline at end of file
  4 +data class ItemsServidores(val ID: Long?, val descripcion: String?, var direccion: String?, var predeterminado: String?)
5 5 \ No newline at end of file
app/src/main/java/com/focasoftware/deboinventariov20/ui/servidores/ServidoresFragment.kt
... ... @@ -7,24 +7,21 @@ import android.os.Bundle
7 7 import android.view.LayoutInflater
8 8 import android.view.View
9 9 import android.view.ViewGroup
  10 +import android.widget.Toast
10 11 import androidx.core.content.ContextCompat
11 12 import androidx.fragment.app.Fragment
12 13 import androidx.lifecycle.lifecycleScope
13   -import androidx.recyclerview.widget.DefaultItemAnimator
14 14 import androidx.recyclerview.widget.ItemTouchHelper
15 15 import androidx.recyclerview.widget.LinearLayoutManager
16 16 import androidx.recyclerview.widget.RecyclerView
17 17 import com.focasoftware.deboinventariov20.DB.DataBase.AppDb
18 18 import com.focasoftware.deboinventariov20.Model.ServeInv
19 19 import com.focasoftware.deboinventariov20.R
20   -import com.focasoftware.deboinventariov20.ui.inventario.ProductosListAdapter
21 20 import kotlinx.android.synthetic.main.fragment_servidores.*
22 21 import kotlinx.coroutines.*
23   -import java.text.FieldPosition
24 22  
25 23 class ServidoresFragment : Fragment() {
26   - private val servidorNuevo = ArrayList<ItemsServidores>()
27   - private var index = 0
  24 +
28 25 private lateinit var rvServidores: RecyclerView
29 26 private lateinit var viewAdapter: RecyclerView.Adapter<*>
30 27 private lateinit var viewManager: RecyclerView.LayoutManager
... ... @@ -34,52 +31,60 @@ class ServidoresFragment : Fragment() {
34 31  
35 32 override fun onCreate(savedInstanceState: Bundle?) {
36 33 super.onCreate(savedInstanceState)
37   - buscaEnBD()
  34 + CargarRV()
38 35 }
39 36  
40 37 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
41 38 super.onViewCreated(view, savedInstanceState)
42 39  
43   - rvServidores.layoutManager = LinearLayoutManager(context)
44   - rvServidores.itemAnimator = DefaultItemAnimator()
  40 +// rvServidores.layoutManager = LinearLayoutManager(context)
  41 +// rvServidores.itemAnimator = DefaultItemAnimator()
45 42  
46 43 btnGuardarServidores.setOnClickListener {
47   - if (etNombreServidor.text.isNullOrBlank()){
48   - etNombreServidor.error="Nombre no valido"
  44 + if (etNombreServidor.text.isNullOrBlank()) {
  45 + etNombreServidor.error = "Nombre no valido"
49 46 etNombreServidor.requestFocus()
50   - etNombreServidor.hint="Nombre no valido"
  47 + etNombreServidor.hint = "Nombre no valido"
51 48 }
52   - if (etDireccionServidor.text.isNullOrBlank()){
53   - etDireccionServidor.error="Direcciรณn no valida"
  49 + if (etDireccionServidor.text.isNullOrBlank()) {
  50 + etDireccionServidor.error = "Direcciรณn no valida"
54 51 etDireccionServidor.requestFocus()
55   - etDireccionServidor.hint="Direcciรณn no valida"
  52 + etDireccionServidor.hint = "Direcciรณn no valida"
56 53 }
57   - if (!etDireccionServidor.text.isNullOrBlank() || !etNombreServidor.text.isNullOrBlank()){
58   - btnGuardarServidores.isEnabled=true
59   - buscaEnBD()
60   - rvServidores.adapter = AdapterServidores(ingresarDatos(), requireContext())
61   - btnGuardarServidores.isEnabled=false
  54 + if (!etDireccionServidor.text.isNullOrBlank() || !etNombreServidor.text.isNullOrBlank()) {
  55 + Toast.makeText(requireContext(), "Servidor ${etNombreServidor.text} Guardado", Toast.LENGTH_LONG).show()
  56 + GlobalScope.launch(Dispatchers.Main) {
  57 + val num: Long = buscaUltimoNroEnBD()
  58 + val servidor = ServeInv(num, etNombreServidor.text.toString(), "http://${etDireccionServidor.text}/", "0")
  59 + ingresarDatos(servidor)
  60 + cargarRecicler(servidor)
  61 + }
  62 + etNombreServidor.text.clear()
  63 + etDireccionServidor.text.clear()
62 64 }
63 65 }
64 66 }
  67 +
65 68 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
66 69 val v = inflater.inflate(R.layout.fragment_servidores, container, false)
67 70 rvServidores = v.findViewById(R.id.rvServidores)
68   -
69 71 return v
70 72 }
71 73  
72   - fun ingresarDatos(): ArrayList<ItemsServidores> {
73 74  
74   - val item = ItemsServidores(etNombreServidor.text.toString(), etDireccionServidor.text.toString(), "0")
75   - val servidor = ServeInv(etNombreServidor.text.toString(), etDireccionServidor.text.toString(), "0")
76   - index += index
77   - servidorNuevo.add(item)
  75 + suspend fun buscaUltimoNroEnBD(): Long {
  76 +
  77 + var busqueda: Long
  78 + return GlobalScope.async(Dispatchers.IO) {
  79 + busqueda = AppDb.getAppDb(requireContext())!!.ServeInvDao()!!.findLastSer()
  80 + return@async busqueda
  81 + }.await()
  82 + }
  83 +
  84 + fun ingresarDatos(servidor:ServeInv) {
78 85 val Job = GlobalScope.launch {
79 86 AppDb.getAppDb(requireActivity())!!.ServeInvDao()!!.insertServer(servidor)
80 87 }
81   -
82   - return servidorNuevo
83 88 }
84 89  
85 90 suspend fun buscarEnBD(): List<ServeInv> {
... ... @@ -91,11 +96,11 @@ class ServidoresFragment : Fragment() {
91 96 }.await()
92 97 }
93 98  
94   - fun buscaEnBD() {
  99 + fun CargarRV() {
95 100 GlobalScope.launch(Dispatchers.Main) {
96 101 servidores = buscarEnBD()
97 102 for ((i, item) in servidores.withIndex()) {
98   - val ser = ServeInv(servidores[i].descripcion, servidores[i].direccion, servidores[i].predeterminado)
  103 + val ser = ServeInv(servidores[i].SER_NUM, servidores[i].descripcion, servidores[i].direccion, servidores[i].predeterminado)
99 104 cargarRecicler(ser)
100 105 }
101 106 }
... ... @@ -104,8 +109,8 @@ class ServidoresFragment : Fragment() {
104 109 fun cargarRecicler(ser: ServeInv) {
105 110 //TODO CARGO EN LE RV
106 111 deleteIcon = ContextCompat.getDrawable(requireContext(), R.drawable.borrar)!!
107   - val item = ItemsServidores(ser.descripcion, ser.direccion, ser.predeterminado)
108   - index += index
  112 + val item = ItemsServidores(ser.SER_NUM, ser.descripcion, ser.direccion, ser.predeterminado)
  113 +
109 114 listIvn.add(item)
110 115  
111 116 viewAdapter = AdapterServidores(listIvn, requireContext())
... ... @@ -121,7 +126,8 @@ class ServidoresFragment : Fragment() {
121 126 }
122 127  
123 128 override fun onSwiped(viewHolder: RecyclerView.ViewHolder, position: Int) {
124   - BorrarInvActual(viewHolder.adapterPosition.toLong())
  129 +// viewManager[
  130 +// BorrarInvActual(viewHolder.adapterPosition.toInt())
125 131  
126 132 (viewAdapter as AdapterServidores).removeItem(viewHolder)
127 133 viewAdapter.notifyDataSetChanged()
... ... @@ -137,7 +143,8 @@ class ServidoresFragment : Fragment() {
137 143 if (dX < c.width / 2) c.drawColor(Color.GREEN)
138 144 else c.drawColor(Color.RED)
139 145 deleteIcon.setBounds(itemView.left + iconMargin, itemView.top + iconMargin, itemView.left + iconMargin + deleteIcon.intrinsicWidth, itemView.bottom - iconMargin)
140   - } else { }
  146 + } else {
  147 + }
141 148  
142 149 super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
143 150 deleteIcon.draw(c)
... ... @@ -148,6 +155,7 @@ class ServidoresFragment : Fragment() {
148 155 val itemTouchHelper = ItemTouchHelper(itemTouchHelperCallback)
149 156 itemTouchHelper.attachToRecyclerView(rvServidores)
150 157 }
  158 +
151 159 private fun BorrarInvActual(idServer: Long) {
152 160 lifecycleScope.launch {
153 161 withContext(Dispatchers.IO) {
app/src/main/res/drawable/suitedebo.png

6.74 KB

app/src/main/res/layout/activity_splash.xml
... ... @@ -0,0 +1,79 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:app="http://schemas.android.com/apk/res-auto"
  4 + xmlns:tools="http://schemas.android.com/tools"
  5 + android:layout_width="match_parent"
  6 + android:layout_height="match_parent"
  7 + tools:context=".ui.SplashActivity">
  8 +
  9 +
  10 + <androidx.appcompat.widget.AppCompatTextView
  11 + android:id="@+id/textView2"
  12 + android:layout_width="match_parent"
  13 + android:layout_height="100dp"
  14 + android:layout_margin="20dp"
  15 + android:autoSizeMaxTextSize="1000sp"
  16 + android:autoSizeMinTextSize="30sp"
  17 + android:autoSizeStepGranularity="5sp"
  18 + android:autoSizeTextType="uniform"
  19 + android:gravity="center"
  20 + android:lines="1"
  21 + android:text="@string/bien"
  22 + android:textColor="@color/colorAccent"
  23 + app:fontFamily="sans-serif-condensed"
  24 + app:layout_constraintBottom_toTopOf="@+id/imageView"
  25 + app:layout_constraintEnd_toEndOf="parent"
  26 + app:layout_constraintStart_toStartOf="parent"
  27 + app:layout_constraintTop_toTopOf="parent" />
  28 +
  29 + <ImageView
  30 + android:id="@+id/imageView"
  31 + android:layout_width="wrap_content"
  32 + android:layout_height="wrap_content"
  33 + android:contentDescription="@string/todo"
  34 + android:src="@drawable/ic_launcher_background"
  35 + app:layout_constraintBottom_toTopOf="@id/textView3"
  36 + app:layout_constraintEnd_toEndOf="parent"
  37 + app:layout_constraintStart_toStartOf="parent"
  38 + app:layout_constraintTop_toBottomOf="@+id/textView2"
  39 + app:srcCompat="@drawable/suitedebo" />
  40 +
  41 +
  42 + <TextView
  43 + android:id="@+id/textView3"
  44 + android:layout_width="match_parent"
  45 + android:layout_height="100dp"
  46 + android:layout_margin="20dp"
  47 + android:autoSizeMaxTextSize="1000sp"
  48 + android:autoSizeMinTextSize="30sp"
  49 + android:autoSizeStepGranularity="5sp"
  50 + android:autoSizeTextType="uniform"
  51 + android:gravity="center"
  52 + android:lines="1"
  53 + android:text="@string/debo"
  54 + android:textColor="@color/colorAccent"
  55 + app:fontFamily="sans-serif-condensed"
  56 + app:layout_constraintBottom_toTopOf="@+id/textView4"
  57 + app:layout_constraintEnd_toEndOf="parent"
  58 + app:layout_constraintStart_toStartOf="parent"
  59 + app:layout_constraintTop_toBottomOf="@+id/imageView" />
  60 +
  61 + <androidx.appcompat.widget.AppCompatTextView
  62 + android:id="@+id/textView4"
  63 + android:layout_width="match_parent"
  64 + android:layout_height="110dp"
  65 + android:layout_margin="20dp"
  66 + android:autoSizeMaxTextSize="1000sp"
  67 + android:autoSizeMinTextSize="30sp"
  68 + android:autoSizeStepGranularity="5sp"
  69 + android:autoSizeTextType="uniform"
  70 + android:gravity="center"
  71 + android:lines="1"
  72 + android:text="@string/inventario"
  73 + android:textColor="@color/colorAccent"
  74 + app:fontFamily="sans-serif-condensed"
  75 + app:layout_constraintBottom_toBottomOf="parent"
  76 + app:layout_constraintEnd_toEndOf="parent"
  77 + app:layout_constraintEnd_toStartOf="parent"
  78 + app:layout_constraintTop_toBottomOf="@id/textView3" />
  79 +</androidx.constraintlayout.widget.ConstraintLayout>
0 80 \ No newline at end of file
app/src/main/res/layout/app_bar_main.xml
... ... @@ -4,7 +4,7 @@
4 4 xmlns:tools="http://schemas.android.com/tools"
5 5 android:layout_width="match_parent"
6 6 android:layout_height="match_parent"
7   - tools:context=".MainActivity">
  7 + tools:context=".ui.MainActivity">
8 8  
9 9 <com.google.android.material.appbar.AppBarLayout
10 10 android:layout_width="match_parent"
app/src/main/res/layout/fragment_inventario.xml
... ... @@ -34,7 +34,7 @@
34 34 android:id="@+id/ivCamara"
35 35 android:layout_width="80dp"
36 36 android:layout_height="80dp"
37   -
  37 + android:layout_marginTop="15dp"
38 38 android:clickable="true"
39 39 android:contentDescription="@string/ibBusCB"
40 40 android:elevation="5dp"
... ... @@ -76,11 +76,9 @@
76 76 android:layout_width="wrap_content"
77 77 android:layout_height="wrap_content"
78 78 android:text="@string/switch_1"
79   - app:layout_constraintBottom_toTopOf="@+id/guideline3"
  79 + app:layout_constraintBaseline_toBaselineOf="@+id/etCodigoBarras"
80 80 app:layout_constraintEnd_toEndOf="parent"
81 81 app:layout_constraintStart_toEndOf="@id/etCodigoBarras"
82   - app:layout_constraintTop_toTopOf="@id/guideline2"
83   - app:layout_constraintVertical_bias="1.0"
84 82 tools:ignore="UseSwitchCompatOrMaterialXml" />
85 83  
86 84 <androidx.recyclerview.widget.RecyclerView
... ... @@ -142,7 +140,7 @@
142 140 android:layout_width="wrap_content"
143 141 android:layout_height="wrap_content"
144 142 android:orientation="horizontal"
145   - app:layout_constraintGuide_percent="0.25" />
  143 + app:layout_constraintGuide_percent="0.29" />
146 144  
147 145 <androidx.constraintlayout.widget.Guideline
148 146 android:id="@+id/guideline4"
app/src/main/res/layout/fragment_servidores.xml
1 1 <?xml version="1.0" encoding="utf-8"?>
2   -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2 +<androidx.constraintlayout.widget.ConstraintLayout
  3 + xmlns:android="http://schemas.android.com/apk/res/android"
3 4 xmlns:app="http://schemas.android.com/apk/res-auto"
4 5 xmlns:tools="http://schemas.android.com/tools"
5 6 android:layout_width="match_parent"
6 7 android:layout_height="match_parent"
7 8 tools:context=".ui.servidores.ServidoresFragment">
8 9  
9   -
10 10 <androidx.appcompat.widget.AppCompatTextView
11 11 android:id="@+id/tvTitutloServer"
12 12 android:layout_width="match_parent"
... ... @@ -23,7 +23,6 @@
23 23 android:text="@string/tvTitutloServer"
24 24 android:textColor="@color/colorAccent"
25 25 app:fontFamily="sans-serif-condensed"
26   - app:layout_constraintBottom_toTopOf="@id/guideline2"
27 26 app:layout_constraintEnd_toEndOf="parent"
28 27 app:layout_constraintStart_toStartOf="parent"
29 28 app:layout_constraintTop_toTopOf="parent" />
... ... @@ -32,9 +31,8 @@
32 31 android:id="@+id/tvDirServer"
33 32 android:layout_width="match_parent"
34 33 android:layout_height="wrap_content"
35   - android:layout_marginStart="8dp"
36   - android:layout_marginEnd="8dp"
37   - android:gravity="center"
  34 + android:layout_margin="10dp"
  35 + android:gravity="start"
38 36 android:lines="1"
39 37 android:text="@string/tvDirServer"
40 38 android:textColor="@android:color/black"
... ... @@ -44,121 +42,84 @@
44 42 app:layout_constraintBottom_toTopOf="@+id/etDireccionServidor"
45 43 app:layout_constraintEnd_toEndOf="parent"
46 44 app:layout_constraintStart_toStartOf="parent"
47   - app:layout_constraintTop_toBottomOf="@id/guideline3"
48   - app:layout_constraintVertical_bias="0.451" />
49   -
50   - <TextView
51   - android:id="@+id/tvNomServer"
52   - android:layout_width="match_parent"
53   - android:layout_height="wrap_content"
54   - android:layout_marginStart="8dp"
55   - android:layout_marginEnd="8dp"
56   - android:layout_marginTop="15dp"
57   - android:gravity="center"
58   - android:lines="2"
59   - android:text="@string/tvNomServer"
60   - android:textColor="@android:color/black"
61   - android:textSize="@dimen/TitulosMedios"
62   - android:textStyle="bold|italic"
63   - app:fontFamily="sans-serif-condensed"
64   - app:layout_constraintBottom_toTopOf="@+id/etNombreServidor"
65   - app:layout_constraintEnd_toEndOf="parent"
66   - app:layout_constraintStart_toStartOf="parent"
67   - app:layout_constraintTop_toBottomOf="@id/guideline2" />
  45 + app:layout_constraintTop_toBottomOf="@id/tvTitutloServer" />
68 46  
69 47 <EditText
70   - android:id="@+id/etNombreServidor"
71   - android:layout_width="match_parent"
  48 + android:id="@+id/etDireccionServidor"
  49 + android:layout_width="0dp"
72 50 android:layout_height="wrap_content"
73   - android:autofillHints=""
  51 + android:layout_margin="10dp"
74 52 android:clickable="true"
75 53 android:ems="10"
76 54 android:focusable="true"
  55 + android:hint="192.168.10.1:9090"
77 56 android:inputType="text"
78 57 android:lines="1"
79   - android:hint="Servidor Local"
80 58 android:textSize="15sp"
81   - app:layout_constraintBottom_toTopOf="@id/guideline3"
82 59 app:layout_constraintEnd_toEndOf="parent"
83   - app:layout_constraintHorizontal_bias="0.0"
84 60 app:layout_constraintStart_toStartOf="parent"
85   - app:layout_constraintTop_toBottomOf="@+id/tvNomServer" />
  61 + app:layout_constraintTop_toBottomOf="@id/tvDirServer" />
86 62  
87   - <EditText
88   - android:id="@+id/etDireccionServidor"
89   - android:layout_width="0dp"
  63 + <TextView
  64 + android:id="@+id/tvNomServer"
  65 + android:layout_width="match_parent"
90 66 android:layout_height="wrap_content"
91   - android:layout_marginStart="8dp"
92   - android:layout_marginEnd="8dp"
93   - android:clickable="true"
94   - android:ems="10"
95   - android:focusable="true"
96   - android:inputType="text"
  67 + android:layout_margin="10dp"
  68 + android:gravity="center"
97 69 android:lines="1"
98   -
99   - android:hint="192.168.10.1:9090"
100   - android:textSize="15sp"
101   - app:layout_constraintBottom_toTopOf="@id/guideline4"
  70 + android:text="@string/tvNomServer"
  71 + android:textColor="@android:color/black"
  72 + android:textSize="@dimen/TitulosMedios"
  73 + android:textStyle="bold|italic"
  74 + app:fontFamily="sans-serif-condensed"
102 75 app:layout_constraintEnd_toEndOf="parent"
103 76 app:layout_constraintStart_toStartOf="parent"
104   - app:layout_constraintTop_toTopOf="@+id/tvDirServer" />
  77 + app:layout_constraintTop_toBottomOf="@id/etDireccionServidor" />
  78 +
  79 + <EditText
  80 + android:id="@+id/etNombreServidor"
  81 + android:layout_width="match_parent"
  82 + android:layout_height="wrap_content"
  83 + android:layout_margin="10dp"
  84 + android:autofillHints=""
  85 + android:clickable="true"
  86 + android:ems="10"
  87 + android:focusable="true"
  88 + android:inputType="text"
  89 + android:lines="1"
  90 + android:hint="Servidor Local"
  91 + android:textSize="15sp"
  92 + app:layout_constraintEnd_toEndOf="parent"
  93 + app:layout_constraintStart_toStartOf="parent"
  94 + app:layout_constraintTop_toBottomOf="@+id/tvNomServer" />
  95 +
105 96  
106 97 <androidx.recyclerview.widget.RecyclerView
107 98 android:id="@+id/rvServidores"
108   - android:layout_width="match_parent"
  99 + android:layout_width="0dp"
109 100 android:layout_height="0dp"
  101 + android:layout_marginTop="10dp"
  102 + app:layout_goneMarginEnd="10dp"
110 103 android:background="@android:color/darker_gray"
111   - app:layout_constraintBottom_toBottomOf="@+id/guideline5"
  104 + app:layout_constraintBottom_toTopOf="@+id/btnGuardarServidores"
112 105 app:layout_constraintEnd_toEndOf="parent"
113 106 app:layout_constraintStart_toStartOf="parent"
114   - app:layout_constraintTop_toBottomOf="@+id/guideline4"
  107 + app:layout_constraintTop_toBottomOf="@+id/etNombreServidor"
115 108 tools:listitem="@layout/item_servidores" />
116 109  
117   - <Button
118   - android:id="@+id/btnGuardarServidores"
119   - android:layout_width="0dp"
120   - android:layout_height="wrap_content"
121   - android:text="@string/btnGuardarServidores"
122   - android:textColor="@android:color/white"
123   - android:padding="10dp"
124   - android:background="@drawable/boton_borde_redondeado"
125   - app:layout_constraintBottom_toBottomOf="@+id/guideline6"
126   - app:layout_constraintEnd_toEndOf="parent"
127   - app:layout_constraintStart_toStartOf="parent" />
128   -
129   -
130   - <androidx.constraintlayout.widget.Guideline
131   - android:id="@+id/guideline2"
132   - android:layout_width="wrap_content"
133   - android:layout_height="wrap_content"
134   - android:orientation="horizontal"
135   - app:layout_constraintGuide_percent="0.15" />
  110 + <Button
  111 + android:id="@+id/btnGuardarServidores"
  112 + android:layout_width="0dp"
  113 + android:layout_height="wrap_content"
  114 + android:layout_marginTop="10dp"
  115 + android:layout_marginEnd="10dp"
  116 + android:text="@string/btnGuardarServidores"
  117 + android:textColor="@android:color/white"
  118 + android:padding="10dp"
  119 + android:background="@drawable/boton_borde_redondeado"
  120 + app:layout_constraintTop_toBottomOf="@+id/rvServidores"
  121 + app:layout_constraintEnd_toEndOf="parent"
  122 + app:layout_constraintStart_toStartOf="parent"
  123 + app:layout_constraintBottom_toBottomOf="parent"/>
136 124  
137   - <androidx.constraintlayout.widget.Guideline
138   - android:id="@+id/guideline3"
139   - android:layout_width="wrap_content"
140   - android:layout_height="wrap_content"
141   - android:orientation="horizontal"
142   - app:layout_constraintGuide_percent="0.25" />
143   -
144   - <androidx.constraintlayout.widget.Guideline
145   - android:id="@+id/guideline4"
146   - android:layout_width="wrap_content"
147   - android:layout_height="wrap_content"
148   - android:orientation="horizontal"
149   - app:layout_constraintGuide_percent="0.5" />
150   -
151   - <androidx.constraintlayout.widget.Guideline
152   - android:id="@+id/guideline5"
153   - android:layout_width="wrap_content"
154   - android:layout_height="wrap_content"
155   - android:orientation="horizontal"
156   - app:layout_constraintGuide_percent="0.80" />
157   -
158   - <androidx.constraintlayout.widget.Guideline
159   - android:id="@+id/guideline6"
160   - android:layout_width="wrap_content"
161   - android:layout_height="wrap_content"
162   - android:orientation="horizontal"
163   - app:layout_constraintGuide_percent="0.88" />
164 125 </androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/item_principal.xml
... ... @@ -3,19 +3,13 @@
3 3 xmlns:android="http://schemas.android.com/apk/res/android"
4 4 xmlns:app="http://schemas.android.com/apk/res-auto"
5 5 xmlns:tools="http://schemas.android.com/tools"
6   - android:id="@+id/cvInventario"
7 6 android:layout_width="match_parent"
8 7 android:layout_height="wrap_content"
9   - android:layout_rowWeight="1"
10   - android:layout_columnWeight="1"
11   - android:layout_margin="15dp"
12   - android:clickable="true"
13   - app:cardCornerRadius="8dp"
14   - app:cardElevation="8dp"
15   - app:layout_constraintBottom_toBottomOf="parent"
16   - app:layout_constraintEnd_toEndOf="parent"
17   - app:layout_constraintStart_toStartOf="parent"
18   - app:layout_constraintTop_toTopOf="parent">
  8 + android:layout_margin="5dp"
  9 + app:cardCornerRadius="2dp"
  10 + app:cardElevation="10dp"
  11 + app:contentPadding="5dp"
  12 + app:cardPreventCornerOverlap="false">
19 13  
20 14 <LinearLayout
21 15 android:layout_width="wrap_content"
... ... @@ -30,10 +24,9 @@
30 24 android:src="@drawable/inventario" />
31 25  
32 26 <TextView
33   - android:id="@+id/inventario"
  27 + android:id="@+id/tvPrincipalinventario"
34 28 android:layout_width="wrap_content"
35 29 android:layout_height="wrap_content"
36   - android:clickable="true"
37 30 android:gravity="center"
38 31 android:lines="2"
39 32 tools:text="Demo text"
app/src/main/res/navigation/mobile_navigation.xml
... ... @@ -7,7 +7,7 @@
7 7  
8 8 <activity
9 9 android:id="@+id/mainActivity"
10   - android:name="com.focasoftware.deboinventariov20.MainActivity"
  10 + android:name="com.focasoftware.deboinventariov20.ui.MainActivity"
11 11 android:label="app_bar_main"
12 12 tools:layout="@layout/app_bar_main" />
13 13 <fragment