diff --git a/.idea/misc.xml b/.idea/misc.xml index 83b8cb7d..61e3cef2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -153,6 +153,7 @@ + @@ -240,6 +241,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index 51ee3869..21e68eea 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { applicationId "es.verdnatura" minSdkVersion 21 //21 targetSdkVersion 30 - versionCode 133 + versionCode 134 versionName = "9" //versionName = "9.2Beta" versionCode 133 //versionName = "9" versionCode 133 diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index b991e3b1..9ee47ccf 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,7 +11,7 @@ "type": "SINGLE", "filters": [], "attributes": [], - "versionCode": 133, + "versionCode": 134, "versionName": "9", "outputFile": "app-release.apk" } diff --git a/app/release/vn-picking.apk b/app/release/vn-picking.apk index b16dd402..213e5816 100644 Binary files a/app/release/vn-picking.apk and b/app/release/vn-picking.apk differ diff --git a/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt b/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt index ef9e1000..d98e2c58 100644 --- a/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt @@ -30,19 +30,22 @@ import es.verdnatura.domain.ConstAndValues.SECTORFKDEFAULT import es.verdnatura.domain.ConstAndValues.WAREHOUSEFKDEFAULT import es.verdnatura.domain.toast import es.verdnatura.presentation.common.mediaCurrentVolume +import es.verdnatura.presentation.view.feature.login.model.WorkForms import es.verdnatura.presentation.view.feature.main.activity.MainActivity +import org.json.JSONObject import org.koin.androidx.viewmodel.ext.android.viewModel import timber.log.Timber import java.util.* -import kotlin.collections.ArrayList +import kotlin.collections.Map.* import kotlin.reflect.KClass abstract class BaseFragment(viewModelClass: KClass) : Fragment(), TextToSpeech.OnInitListener, RecognitionListener { - protected val TAG = "VERDNATURA" + protected val TAG = "VERDNATURA::" protected val PREFS_USER = "es.verdnatura.user.prefs" + protected val PREFS_SERVER = "es.verdnatura.server.prefs" protected val USERFK = "userFk" protected val USER = "user" protected val PASSWORD = "password" @@ -58,6 +61,7 @@ abstract class BaseFragment(viewModelCla protected val DEVICENAME = "devicename" protected val TRAINNAME = "trainName" protected val TRAINFK = "trainFk" + protected val WORKFORMSELECTED="workFormSelected" protected val ITEMPACKING = "itemPackingType" protected val ITEMPACKINGFK = "itemPackingTypeFk" @@ -546,6 +550,8 @@ abstract class BaseFragment(viewModelCla TRAINNAME -> prefs.getString(name, "").toString() ITEMPACKING -> prefs.getString(name, "").toString() ITEMPACKINGFK -> prefs.getString(name, "").toString() + WORKFORMSELECTED->prefs.getString(name, "Producción").toString() + "base_url" -> { val preferences = PreferenceManager.getDefaultSharedPreferences(context) @@ -587,6 +593,91 @@ abstract class BaseFragment(viewModelCla } + fun saveWorkForm(workForm: WorkForms) { + var prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_SERVER, 0) + var editor = prefs.edit() + var gson = Gson() + var json = gson.toJson(workForm) + editor.putString(workForm.name, json) + editor.commit() + + saveData("base_url", workForm.urlSilex) + saveData("base_urlSalix", workForm.urlSalix) + } + + fun deleteWorkForm(nameWorkForm: String) { + var prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_SERVER, 0) + var editor = prefs.edit() + editor.remove(nameWorkForm).commit() + } + + fun getWorkForm(): List { + var listForms: ArrayList = ArrayList() + val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_SERVER, 0) + val editor = prefs.edit() + + val keys: Map = prefs.all + for (Map in keys) { + + + var json2 = JSONObject(Map.value.toString()) + + listForms.add( + WorkForms( + Map.key, + json2.get("urlSilex").toString(), + json2.get("urlSalix").toString(), + json2.get("isShowDelete").toString().toBoolean(), + json2.get("created") as Long + + + ) + ) + + } + editor.commit() + if (listForms.isEmpty()) { + createWorksDefault() + } + + return listForms.sortedBy { it.created } + } + + fun createWorksDefault() { + saveWorkForm( + WorkForms( + "Producción", + "https://app.verdnatura.es", + "https://salix.verdnatura.es/api/" + ) + ) + saveWorkForm( + WorkForms( + "Test", + "https://test-app.verdnatura.es", + urlSalix = "https://test-salix.verdnatura.es/api/" + ) + ) + saveWorkForm( + WorkForms( + "Sergio", + "httpsergiodt://10.1.4.42:9000", + urlSalix = "https://test-salix.verdnatura.es/api/" + ) + ) + + saveWorkForm( + WorkForms( + "Añadir...", + "", + "", + created = Calendar.getInstance().timeInMillis+Calendar.getInstance().timeInMillis + + + ) + ) + } + fun saveData(name: String, value: String) { val prefs: SharedPreferences = requireActivity().getSharedPreferences(PREFS_USER, 0) diff --git a/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt b/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt index d14a9074..705505c6 100644 --- a/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt +++ b/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt @@ -1,5 +1,8 @@ package es.verdnatura.presentation.common +import java.sql.Time +import java.util.* + class ResponseItemVO( var response: String = "", var isError: Boolean = false, @@ -33,3 +36,5 @@ class GeneralItem( var code: String? = "", var text: String? = "" ) + + diff --git a/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt b/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt index 1b03cde3..375b4916 100644 --- a/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt +++ b/app/src/main/java/es/verdnatura/presentation/common/UICallbacks.kt @@ -8,6 +8,7 @@ import es.verdnatura.presentation.view.feature.articulo.model.ItemProposal import es.verdnatura.presentation.view.feature.buscaritem.model.ItemLocationVO import es.verdnatura.presentation.view.feature.faltas.model.ItemFaltasVO import es.verdnatura.presentation.view.feature.inventario.model.ItemInventaryVO +import es.verdnatura.presentation.view.feature.login.model.WorkForms import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionScanVO import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionTruckVO import es.verdnatura.presentation.view.feature.paletizador.model.ItemPalletVO @@ -60,6 +61,12 @@ interface OnSmartTagRowClickListener { interface OnGeneralItemRowClickListener { fun OnGeneralItemRowClickListener(item: GeneralItem) } +interface OnWorkFormsItemRowClickListener { + fun OnWorkFormsItemRowClickListener(item: WorkForms) +} +interface OnTrashItemRowClickListener { + fun OnTrashItemRowClickListener(item: WorkForms) +} interface OnLocationRowClickListener { fun onLocationRowClickListener(item: ItemLocationVO) diff --git a/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogInputThreeValues.kt b/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogInputThreeValues.kt new file mode 100644 index 00000000..f126e210 --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogInputThreeValues.kt @@ -0,0 +1,142 @@ +package es.verdnatura.presentation.view.component + +import android.app.Dialog +import android.content.Context +import android.text.InputType +import android.view.View +import com.google.android.material.textfield.TextInputEditText +import es.verdnatura.R +import es.verdnatura.databinding.ComponentCustomEditDialogThreeValuesBinding +import es.verdnatura.databinding.ComponentCustomEditDialogTwoValuesBinding + + +class CustomDialogInputThreeValues(context: Context) : Dialog(context, R.style.DialogTheme) { + + private var binding: ComponentCustomEditDialogThreeValuesBinding = + ComponentCustomEditDialogThreeValuesBinding.inflate(layoutInflater) + + + init { + + setContentView(binding.root) + + + } + + fun getEditText(): TextInputEditText { + + return binding.customDialogValueOne + + + } + + fun getEditTextTwo(): TextInputEditText { + + return binding.customDialogValueTwo + + } + + fun getValue(): String { + + return binding.customDialogValueOne.text.toString() + + + } + + fun getValueTwo(): String { + + return binding.customDialogValueTwo.text.toString() + + } + fun getValueThree(): String { + + return binding.customDialogValueThree.text.toString() + + } + + fun setValue(value: String): CustomDialogInputThreeValues { + + binding.customDialogValueOne.setText(value) + binding.customDialogValueOne.visibility = View.VISIBLE + + + return this + } + fun setValueTwo(value: String): CustomDialogInputThreeValues { + + binding.customDialogValueTwo.setText(value) + binding.customDialogValueOne.visibility = View.VISIBLE + + + return this + } + fun setEnableValue(isEnabled: Boolean): CustomDialogInputThreeValues { + + binding.customDialogValueOne.isEnabled=isEnabled + + + return this + } + fun setTitle(title: String): CustomDialogInputThreeValues { + + binding.customDialogTitle.visibility = View.VISIBLE + binding.customDialogTitle.text = title + + return this + } + + fun setDescription(description: String): CustomDialogInputThreeValues { + + binding.customDialogDescription.visibility = View.VISIBLE + binding.customDialogDescription.text = description + + + return this + } + + fun setOkButton(text: String, onButtonClicked: () -> Unit): CustomDialogInputThreeValues { + + binding.customDialogButtonOk.visibility = View.VISIBLE + binding.customDialogButtonOk.text = text + binding.customDialogButtonOk.setOnClickListener { onButtonClicked() } + + return this + } + + fun setKoButton(text: String, onButtonClicked: () -> Unit): CustomDialogInputThreeValues { + + binding.customDialogButtonKo.visibility = View.VISIBLE + binding.customDialogButtonKo.text = text + binding.customDialogButtonKo.setOnClickListener { onButtonClicked() } + + + return this + } + + + fun setInfoTex(text:String,text2:String,text3:String){ + binding.textinputlayoutOne.hint = text + binding.textinputlayoutTwo.hint = text2 + binding.textinputlayoutThree.hint = text3 + } + + + + fun setInputTextTwoVisibility() { + binding.textinputlayoutTwo.visibility = View.VISIBLE + } + fun setInputTextVisibility(visibility:Int) { + binding.textinputlayoutTwo.visibility = visibility + } + + fun setFocusText() { + binding.customDialogValueOne.requestFocus() + } + + fun setFocusTextTwo() { + binding.customDialogValueTwo.requestFocus() + } + fun setFocusTextThree() { + binding.customDialogValueThree.requestFocus() + } +} \ No newline at end of file diff --git a/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogList.kt b/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogList.kt index df1af17a..03783ff6 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogList.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/component/CustomDialogList.kt @@ -128,5 +128,10 @@ class CustomDialogList (context: Context) : Dialog(context, R.style.DialogTheme) //custom_dialog_value.visibility = View.GONE return this } + fun hideDescription():CustomDialogList{ + binding.customDialogDescription.visibility = View.GONE + + return this + } } \ No newline at end of file diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt index 79908ca0..b9c5842b 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt @@ -102,7 +102,7 @@ class CollectionFragment( private var originalItemScan: String = "" private var workerFkFromTicket = "" - private var itemShelvingTracking_mark:String="" + private var itemShelvingTracking_mark: String = "" companion object { fun newInstance(collection: CollectionVO, type: String) = @@ -769,7 +769,7 @@ class CollectionFragment( }) responseSaleReplace.observe(viewLifecycleOwner, Observer { - binding.splashProgress.visibility=GONE + binding.splashProgress.visibility = GONE if (it.isError) { @@ -797,7 +797,7 @@ class CollectionFragment( ma.messageWithSound(it.errorMessage, it.isError, true) - binding.splashProgress.visibility=VISIBLE + binding.splashProgress.visibility = VISIBLE viewModel.collectionTicketGet( getData(USER), @@ -810,7 +810,7 @@ class CollectionFragment( } else { - // pintar línea + // pintar línea saleAdapter!!.notifyDataSetChanged() setListPosition(storedPosition, false) @@ -1054,10 +1054,10 @@ class CollectionFragment( binding.fragmentSacadorCollections.layoutManager = lm setTotalLines() - if (storedPosition != 0) - setListPosition(storedPosition, true) - else if (storedBackPosition != 0) - setListPosition(storedBackPosition, true) + if (storedPosition != 0) + setListPosition(storedPosition, true) + else if (storedBackPosition != 0) + setListPosition(storedBackPosition, true) setScrollListener(lm!!) //sergio: se quita porque se realiza desde triggers @@ -1360,11 +1360,11 @@ class CollectionFragment( //saleAdapter!!.notifyDataSetChanged() //setListPosition(position, false) - if (type==SACADOR){ + if (type == SACADOR) { saleTracking_mark(position, newType) //saleTrackingReplace(position,newType) - }else{ - saleTrackingReplace(position,newType) + } else { + saleTrackingReplace(position, newType) setListPosition(position, false) } isMarking = true @@ -1399,7 +1399,7 @@ class CollectionFragment( //Tarea #4371 se quita para ver si funciona correctamente //binding.splashProgress.visibility=VISIBLE - viewModel.saleTrackingReplace( + viewModel.saleTrackingReplace( getData(USER), getData(PASSWORD), saleFk = sales[position].saleFk, @@ -1417,21 +1417,21 @@ class CollectionFragment( //Tarea #4371 se quita para ver si funciona correctamente private fun saleTracking_mark(position: Int, type: String) { - binding.splashProgress.visibility= VISIBLE + binding.splashProgress.visibility = VISIBLE - viewModel.saleTracking_mark( - getData(USER), - getData(PASSWORD), - saleFk = sales[position].saleFk, - vIsChecked = if (type == SACADOR) sales[position].isPrepared else if (type == CONTROLADOR) sales[position].isControlled else if (type == "PRECHECKER") sales[position].isPreControlled else "1", - vOriginalQuantity = sales[position].pickedQuantity, - vStateFk = if (type == CONTROLADOR) "CHECKED" else if (type == "PRECHECKER") "PREVIOUS_CONTROL" else type,//type.toString(), - vBuyFk = originalItemScan, - vItemShelvingFk = itemShelvingTracking_mark, - vQuantity=customDialogList.getValue() + viewModel.saleTracking_mark( + getData(USER), + getData(PASSWORD), + saleFk = sales[position].saleFk, + vIsChecked = if (type == SACADOR) sales[position].isPrepared else if (type == CONTROLADOR) sales[position].isControlled else if (type == "PRECHECKER") sales[position].isPreControlled else "1", + vOriginalQuantity = sales[position].pickedQuantity, + vStateFk = if (type == CONTROLADOR) "CHECKED" else if (type == "PRECHECKER") "PREVIOUS_CONTROL" else type,//type.toString(), + vBuyFk = originalItemScan, + vItemShelvingFk = itemShelvingTracking_mark, + vQuantity = customDialogList.getValue() - ) + ) } private fun unMarkLine(position: Int, newType: String) { @@ -1757,14 +1757,14 @@ class CollectionFragment( "(" + (shelvingVisible.toInt() - quantity.toInt()).toString() + ")" } //Tarea #4371 se quita para ver si funciona correctamente - /*viewModel.itemShelvingSaleSupplyAdd( - getData(USER), - getData(PASSWORD), - itemShelvingFk = itemShelvingFk, - saleFk = sales[storedPosition].saleFk, - quantity = if (quantity != "0") quantity else customDialogList.getValue() + /*viewModel.itemShelvingSaleSupplyAdd( + getData(USER), + getData(PASSWORD), + itemShelvingFk = itemShelvingFk, + saleFk = sales[storedPosition].saleFk, + quantity = if (quantity != "0") quantity else customDialogList.getValue() - )*/ + )*/ } catch (e: Exception) { @@ -1787,7 +1787,7 @@ class CollectionFragment( //3- MARCAR LINEA //Tarea #4371 - itemShelvingTracking_mark = itemShelvingFk + itemShelvingTracking_mark = itemShelvingFk if (sales[storedPosition].pickedQuantity != sales[storedPosition].quantity) { sales[storedPosition].isPrepared = "1" diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/adapter/WorkFormAdapter.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/adapter/WorkFormAdapter.kt new file mode 100644 index 00000000..d145810c --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/adapter/WorkFormAdapter.kt @@ -0,0 +1,61 @@ +package es.verdnatura.presentation.view.feature.login.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import es.verdnatura.databinding.ItemWorkFormsRowBinding +import es.verdnatura.presentation.common.OnTrashItemRowClickListener +import es.verdnatura.presentation.common.OnWorkFormsItemRowClickListener +import es.verdnatura.presentation.view.feature.login.model.WorkForms + +class WorkFormAdapter( + private val items: List, + private val OnWorkFormsItemRowClickListener: OnWorkFormsItemRowClickListener, + private val OnTrashItemRowClickListener: OnTrashItemRowClickListener + // private var showDelete: Boolean = false +) : RecyclerView.Adapter() { + + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder { + return ItemHolder( + ItemWorkFormsRowBinding.inflate(LayoutInflater.from(parent.context), parent, false) + ) + } + + override fun getItemCount() = items.size + + override fun onBindViewHolder(holder: ItemHolder, position: Int) { + holder.bind(items[position]) + + holder.binding.root.setOnClickListener { + OnWorkFormsItemRowClickListener.OnWorkFormsItemRowClickListener(items[position]) + } + holder.binding.itemImage.setOnClickListener{ + OnTrashItemRowClickListener.OnTrashItemRowClickListener(items[position]) + } + + } + + + inner class ItemHolder( + val binding: ItemWorkFormsRowBinding + ) : RecyclerView.ViewHolder(binding.root) { + //private val res = binding.root.context.resources + fun bind(item: WorkForms) { + binding.apply { + this.item = item + if (item.isShowDelete) { + itemImage.visibility = View.VISIBLE + } + else itemImage.visibility = View.GONE + + itemImage.setOnClickListener{ + //deleteWorkForm(item.name) + } + //itemCode.visibility = View.GONE + } + } + } + +} diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt index ea87d1ad..48fe0c00 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt @@ -1,33 +1,39 @@ package es.verdnatura.presentation.view.feature.login.fragment //import es.verdnatura.presentation.view.feature.login.model.LoginItemVO + import android.annotation.SuppressLint -import android.app.AlertDialog import android.content.Intent import android.content.SharedPreferences import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.net.Uri import android.provider.Settings -import android.view.KeyEvent import android.view.View import androidx.lifecycle.Observer +import androidx.recyclerview.widget.LinearLayoutManager import es.verdnatura.R import es.verdnatura.databinding.FragmentLoginBinding import es.verdnatura.domain.notNull import es.verdnatura.domain.toast import es.verdnatura.presentation.base.BaseFragment -import es.verdnatura.presentation.common.hideKeyboard +import es.verdnatura.presentation.common.OnTrashItemRowClickListener +import es.verdnatura.presentation.common.OnWorkFormsItemRowClickListener import es.verdnatura.presentation.view.component.CustomDialog +import es.verdnatura.presentation.view.component.CustomDialogInputThreeValues +import es.verdnatura.presentation.view.component.CustomDialogList +import es.verdnatura.presentation.view.feature.login.adapter.WorkFormAdapter +import es.verdnatura.presentation.view.feature.login.model.WorkForms import es.verdnatura.presentation.view.feature.main.activity.MainActivity -import kotlinx.coroutines.* -import java.lang.Boolean.TRUE -import kotlin.system.exitProcess class LoginFragment : BaseFragment(LoginViewModel::class) { private lateinit var customDialog: CustomDialog + private lateinit var customNewForm: CustomDialogInputThreeValues + private var workFormAdapter: WorkFormAdapter? = null + private lateinit var customDialogList: CustomDialogList + private lateinit var listForms: List companion object { fun newInstance() = LoginFragment() @@ -36,6 +42,7 @@ class LoginFragment : BaseFragment(LoginVi override fun getLayoutId(): Int = R.layout.fragment_login override fun init() { + customDialogList = CustomDialogList(requireContext()) customDialog = CustomDialog(requireContext()) saveIdentifiers() @@ -59,70 +66,139 @@ class LoginFragment : BaseFragment(LoginVi } + // binding.edittextServer.setText(getData(getString(R.string.baseurl))) + binding.edittextServer.setText(getData(WORKFORMSELECTED)) - binding.edittextServer.setText(getData(getString(R.string.baseurl))) - binding.edittextServer.setOnKeyListener { _, keyCode, event -> - if (keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_UP) { + /* binding.edittextServer.setOnKeyListener { _, keyCode, event -> + if (keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_UP) { - saveData( - "base_url", - binding.edittextServer.text.toString() - ) - val working_in_test = false - if (working_in_test) { - saveData( - "base_urlSalix", - "http://localhost:3000/api/" + saveData( + "base_url", + binding.edittextServer.text.toString() + ) + val working_in_test = false + if (working_in_test) { + saveData( + "base_urlSalix", + "http://localhost:3000/api/" - ) - } else { - if (binding.edittextServer.text!!.contains("test-app.verdnatura.es")) { - saveData( - "base_urlSalix", - "https://test-salix.verdnatura.es/api/" - // "https://test-salix.verdnatura.es/" //localhost desde emulador 10.0.2.2:3000 - // "http://localhost:3000/api/" - //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000 - ) + ) + } else { + if (binding.edittextServer.text!!.contains("test-app.verdnatura.es")) { + saveData( + "base_urlSalix", + "https://test-salix.verdnatura.es/api/" + // "https://test-salix.verdnatura.es/" //localhost desde emulador 10.0.2.2:3000 + // "http://localhost:3000/api/" + //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000 + ) - } else { - saveData( - "base_urlSalix", - "https://salix.verdnatura.es/api/" - /*working_in_test*/ - // "http://localhost:3000/api/" - //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000 - ) + } else { + saveData( + "base_urlSalix", + "https://salix.verdnatura.es/api/" + /*working_in_test*/ + // "http://localhost:3000/api/" + //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000 + ) + } + } + + "${getString(R.string.serverSalix)}${getData("base_urlSalix")})".toast( + requireContext() + ) + this.hideKeyboard() + + CoroutineScope(Dispatchers.IO).launch { + delay(2000) + withContext(Dispatchers.Main) { + exitProcess(0) + } + } + + + } + false + }*/ + + // se crean/listan las opciones de formas de trabajo + listForms = getWorkForm().sortedBy { it.created } + + binding.edittextServer.keyListener = null + + binding.edittextServer.setOnLongClickListener { + showWorkingForms() + true + } + binding.edittextUsername.requestFocus() + + } + + private fun setAdapter(listWorkForms: List) { + + workFormAdapter = WorkFormAdapter(listWorkForms, object : OnWorkFormsItemRowClickListener { + + override fun OnWorkFormsItemRowClickListener(item: WorkForms) { + + when (item.name) { + "Añadir..." -> { + showNewForm() + } + else -> { + + binding.edittextServer.setText(item.name) + + saveData("base_url", item.urlSilex) + saveData("base_urlSalix", item.urlSalix) + saveData(WORKFORMSELECTED, item.name) + + customDialogList.dismiss() + requireActivity().recreate() } } - "${getString(R.string.serverSalix)}${getData("base_urlSalix")})".toast( - requireContext() - ) - this.hideKeyboard() + } + }, object : OnTrashItemRowClickListener { + override fun OnTrashItemRowClickListener(workForm: WorkForms) { - CoroutineScope(Dispatchers.IO).launch { - delay(2000) - withContext(Dispatchers.Main) { - exitProcess(0) + customDialog.setTitle(getString(R.string.deleteWorkForm)) + .setDescription(getString(R.string.deleteWorkFormConfirmation)) + .setOkButton(getString(R.string.cancel)) { + customDialog.dismiss() } - } + .setOkButton(getString(R.string.ok)) { + deleteWorkForm(workForm.name) + workFormAdapter!!.notifyDataSetChanged() + + customDialog.dismiss() + customDialogList.dismiss() + saveData(WORKFORMSELECTED, "Producción") + requireActivity().recreate() + + } + .show() } - false - } + }) - binding.textviewWelcome.setOnLongClickListener { - binding.edittextServer.isEnabled = TRUE - true - } + customDialogList.getRecyclerView().adapter = workFormAdapter + customDialogList.getRecyclerView().layoutManager = + LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) + + + customDialogList.setTitle(getString(R.string.selectWorkingForm)) + .hideDescription() + .hideDialog() + .setOkButton(getString(R.string.cancel)) { + customDialogList.dismiss() + // customNewForm.dismiss() + // customDialog.dismiss() + } + .show() - binding.edittextServer.setOnClickListener { - // showWorkingForms() - } } @@ -137,63 +213,43 @@ class LoginFragment : BaseFragment(LoginVi private fun showWorkingForms() { - val listForms: ArrayList = ArrayList() + listForms = getWorkForm().sortedBy { it.created } + setAdapter(listForms) - listForms.add( - workForms( - "Producción", - "https://app.verdnatura.es", - "https://salix.verdnatura.es" - ) + } + + private fun showNewForm() { + customNewForm = CustomDialogInputThreeValues(requireContext()) + .setTitle(getString(R.string.workFormAdd)) + .setDescription(getString(R.string.workFormDescrip)) + customNewForm.setInfoTex( + getString(R.string.name), + getString(R.string.silexServer), + getString(R.string.salixServer) ) - listForms.add( - workForms( - "Test", - "https://test-app.verdnatura.es", - "https://test-salix.verdnatura.es" + customNewForm.setFocusText() + customNewForm.setOkButton(getString(R.string.save)) { + saveWorkForm( + WorkForms( + customNewForm.getValue(), + customNewForm.getValueTwo(), + customNewForm.getValueThree(), + true + ) ) - ) - listForms.add( - workForms( - "Sergio", - "https://test-app.verdnatura.es", - "https://test-salix.verdnatura.es", - true - ) - ) + binding.edittextServer.setText(customNewForm.getValue()) + saveData(WORKFORMSELECTED, customNewForm.getValue()) + customNewForm.dismiss() + customDialogList.dismiss() + requireActivity().recreate() - listForms.add(workForms("Añadir otra forma", " ", " ")) - - val array = arrayOfNulls(listForms.size) - var showList: ArrayList = ArrayList() - - for (l in listForms) { - showList.add(l.name) + }.setKoButton(getString(R.string.cancel)) { + customNewForm.dismiss() } - val builder = AlertDialog.Builder(this.context) - builder.setTitle(getString(R.string.selectWorkingForm)) - builder.setItems(showList.toArray(array)) { _, which -> - val selected = array[which] - showList.forEach { - if (it == selected) { + customNewForm.show() - binding.edittextServer.setText(it) - saveData( - "base_urlSalix", - it - ) - - return@forEach - } - } - - - } - - val dialog = builder.create() - dialog.show() } private fun checkUser() { @@ -557,4 +613,3 @@ class LoginFragment : BaseFragment(LoginVi } -data class workForms(val name: String, val urlSilex: String, val urlSalix: String,val isShowDelete:Boolean=false) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/WorkForms.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/WorkForms.kt new file mode 100644 index 00000000..e0f71854 --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/WorkForms.kt @@ -0,0 +1,11 @@ +package es.verdnatura.presentation.view.feature.login.model + +import java.util.* + +class WorkForms( + val name: String, + val urlSilex: String, + val urlSalix: String, + val isShowDelete: Boolean = false, + val created: Long = Calendar.getInstance().timeInMillis +) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/errorMessage.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/errorMessage.kt index 20fe566d..7d9c8317 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/errorMessage.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/errorMessage.kt @@ -1,9 +1,12 @@ package es.verdnatura.presentation.view.feature.login.model +import java.util.* + class errorMessage ( val message: String = "" ){ override fun toString(): String { return "${this.message}" } -} \ No newline at end of file +} + diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt index f09c12af..4cbe8fbc 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt @@ -1,8 +1,8 @@ package es.verdnatura.presentation.view.feature.pasillero.fragment import android.content.Context +import android.graphics.Color import android.os.Bundle -import android.util.Log import android.view.View import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager @@ -36,10 +36,17 @@ class PasilleroFragment( ma.hideBottomNavigation(View.VISIBLE) when (tagName) { - getString(R.string.main)-> { - binding.mainToolbarDesign.imageViewMenu.visibility = View.VISIBLE - binding.mainToolbarDesign.backButton.visibility = View.GONE - + getString(R.string.main) -> { + if (getData(WORKFORMSELECTED) != "Producción") { + binding.mainToolbarDesign.toolbarTitle.setBackgroundColor(Color.RED) + "En modo " + getData(WORKFORMSELECTED) + binding.mainToolbarDesign.toolbarTitle.text = + "En modo " + getData(WORKFORMSELECTED) + binding.mainToolbarDesign.backButton.visibility = View.GONE + } else { + binding.mainToolbarDesign.imageViewMenu.visibility = View.VISIBLE + binding.mainToolbarDesign.backButton.visibility = View.GONE + } } tagName -> { @@ -66,9 +73,10 @@ class PasilleroFragment( override fun onCreate(savedInstanceState: Bundle?) { - when (tagName) { - getString(R.string.titleCorridors) -> { viewModel.inititializeDefaultData() } + getString(R.string.titleCorridors) -> { + viewModel.inititializeDefaultData() + } getString(R.string.titlePalletizers) -> viewModel.inititializeDefaultPallet() getString(R.string.titleBufferManegement) -> viewModel.inititializeDefaultBuffer() getString(R.string.main) -> viewModel.inititializeDefaultDataInit() @@ -99,7 +107,12 @@ class PasilleroFragment( context, LinearLayoutManager.VERTICAL ) - dividerItemDecoration.setDrawable(requireContext().resources.getDrawable(R.drawable.list_divider_items,requireContext().theme)) + dividerItemDecoration.setDrawable( + requireContext().resources.getDrawable( + R.drawable.list_divider_items, + requireContext().theme + ) + ) binding.pasillerosItems.addItemDecoration(dividerItemDecoration) } } diff --git a/app/src/main/res/layout/component_custom_edit_dialog_three_values.xml b/app/src/main/res/layout/component_custom_edit_dialog_three_values.xml new file mode 100644 index 00000000..91df8db7 --- /dev/null +++ b/app/src/main/res/layout/component_custom_edit_dialog_three_values.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + +