diff --git a/openmrs-android-sdk/src/main/java/com/openmrs/android_sdk/utilities/NetworkUtils.kt b/openmrs-android-sdk/src/main/java/com/openmrs/android_sdk/utilities/NetworkUtils.kt index f161c14d9..84b5f3f48 100644 --- a/openmrs-android-sdk/src/main/java/com/openmrs/android_sdk/utilities/NetworkUtils.kt +++ b/openmrs-android-sdk/src/main/java/com/openmrs/android_sdk/utilities/NetworkUtils.kt @@ -15,9 +15,9 @@ package com.openmrs.android_sdk.utilities import android.content.Context import android.net.ConnectivityManager -import android.preference.PreferenceManager import com.openmrs.android_sdk.library.OpenmrsAndroid +@Suppress("DEPRECATION") object NetworkUtils { @JvmStatic fun hasNetwork(): Boolean { @@ -28,7 +28,7 @@ object NetworkUtils { @JvmStatic fun isOnline(): Boolean { - val prefs = PreferenceManager.getDefaultSharedPreferences(OpenmrsAndroid.getInstance()) + val prefs = android.preference.PreferenceManager.getDefaultSharedPreferences(OpenmrsAndroid.getInstance()) val toggle = prefs.getBoolean("sync", true) return if (toggle) { val connectivityManager = OpenmrsAndroid.getInstance()?.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager diff --git a/openmrs-client/src/main/java/org/openmrs/mobile/activities/activevisits/ActiveVisitsRecyclerViewAdapter.kt b/openmrs-client/src/main/java/org/openmrs/mobile/activities/activevisits/ActiveVisitsRecyclerViewAdapter.kt index 2d4ef86ed..c2614cc2b 100644 --- a/openmrs-client/src/main/java/org/openmrs/mobile/activities/activevisits/ActiveVisitsRecyclerViewAdapter.kt +++ b/openmrs-client/src/main/java/org/openmrs/mobile/activities/activevisits/ActiveVisitsRecyclerViewAdapter.kt @@ -37,7 +37,7 @@ class ActiveVisitsRecyclerViewAdapter(private val mContext: Context, private val } override fun onBindViewHolder(visitViewHolder: VisitViewHolder, position: Int) { - val adapterPos = visitViewHolder.adapterPosition + val adapterPos = visitViewHolder.absoluteAdapterPosition val visit = this.mVisits?.get(adapterPos) val patient = PatientDAO().findPatientByID(visit?.patient?.id.toString()) visitViewHolder.mVisitPlace.text = mContext.getString(R.string.visit_in, visit?.location?.display) diff --git a/openmrs-client/src/main/java/org/openmrs/mobile/activities/dashboard/DashboardFragment.kt b/openmrs-client/src/main/java/org/openmrs/mobile/activities/dashboard/DashboardFragment.kt index 03a1f60d2..7c74a106c 100644 --- a/openmrs-client/src/main/java/org/openmrs/mobile/activities/dashboard/DashboardFragment.kt +++ b/openmrs-client/src/main/java/org/openmrs/mobile/activities/dashboard/DashboardFragment.kt @@ -11,9 +11,11 @@ * * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ +@file:Suppress("DEPRECATION") + package org.openmrs.mobile.activities.dashboard -import android.content.Intent +import android.annotation.SuppressLint import android.graphics.Bitmap import android.os.Bundle import android.util.SparseArray @@ -31,7 +33,6 @@ import com.github.amlcurran.showcaseview.ShowcaseView import com.github.amlcurran.showcaseview.targets.Target import com.github.amlcurran.showcaseview.targets.ViewTarget import org.openmrs.mobile.R -import org.openmrs.mobile.activities.ACBaseActivity import org.openmrs.mobile.activities.ACBaseFragment import org.openmrs.mobile.databinding.FragmentDashboardBinding import org.openmrs.mobile.utilities.ThemeUtils @@ -52,6 +53,7 @@ class DashboardFragment : ACBaseFragment(), Dashboa private var mProviderManagementView: RelativeLayout? = null private var mBitmapCache: SparseArray? = null + @SuppressLint("CommitPrefEdits") override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) @@ -109,14 +111,12 @@ class DashboardFragment : ACBaseFragment(), Dashboa } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { + savedInstanceState: Bundle?): View { _binding = FragmentDashboardBinding.inflate(inflater, container, false) val root = binding.root - if (root != null) { - initFragmentFields(binding) - setListeners() - } + initFragmentFields(binding) + setListeners() return root } @@ -193,14 +193,6 @@ class DashboardFragment : ACBaseFragment(), Dashboa } } - /** - * Starts new Activity depending on which ImageView triggered it - */ - private fun startNewActivity(clazz: Class) { - val intent = Intent(activity, clazz) - startActivity(intent) - } - override fun onClick(v: View) { val directionToRegister = DashboardFragmentDirections.actionDashboardFragmentToAddEditPatientActivity() val directionToFindPatent = DashboardFragmentDirections.actionDashboardFragmentToSyncedPatientsActivity() diff --git a/openmrs-client/src/main/java/org/openmrs/mobile/activities/formadmission/FormAdmissionPresenter.kt b/openmrs-client/src/main/java/org/openmrs/mobile/activities/formadmission/FormAdmissionPresenter.kt index 6e796d798..8e3b7d5b9 100644 --- a/openmrs-client/src/main/java/org/openmrs/mobile/activities/formadmission/FormAdmissionPresenter.kt +++ b/openmrs-client/src/main/java/org/openmrs/mobile/activities/formadmission/FormAdmissionPresenter.kt @@ -31,6 +31,7 @@ import com.openmrs.android_sdk.library.api.repository.ProviderRepository import org.openmrs.mobile.application.OpenMRS import com.openmrs.android_sdk.library.listeners.retrofitcallbacks.DefaultResponseCallback +@Suppress("UNREACHABLE_CODE") class FormAdmissionPresenter : BasePresenter, FormAdmissionContract.Presenter { private var view: FormAdmissionContract.View private var patientID: Long? = null @@ -60,7 +61,7 @@ class FormAdmissionPresenter : BasePresenter, FormAdmissionContract.Presenter { this.restApi = restApi view.setPresenter(this) mContext = context - providerRepository = ProviderRepository(restApi, logger); + providerRepository = ProviderRepository(restApi, logger) } override fun subscribe() { diff --git a/openmrs-client/src/main/java/org/openmrs/mobile/activities/formentrypatientlist/FormEntryPatientListAdapter.kt b/openmrs-client/src/main/java/org/openmrs/mobile/activities/formentrypatientlist/FormEntryPatientListAdapter.kt index b59d4179d..db684fb24 100644 --- a/openmrs-client/src/main/java/org/openmrs/mobile/activities/formentrypatientlist/FormEntryPatientListAdapter.kt +++ b/openmrs-client/src/main/java/org/openmrs/mobile/activities/formentrypatientlist/FormEntryPatientListAdapter.kt @@ -12,13 +12,15 @@ * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ package org.openmrs.mobile.activities.formentrypatientlist - +import android.content.res.Resources +import android.graphics.drawable.Drawable import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.cardview.widget.CardView +import androidx.core.content.res.ResourcesCompat import androidx.recyclerview.widget.RecyclerView import com.openmrs.android_sdk.library.models.Patient import com.openmrs.android_sdk.library.models.Visit @@ -33,15 +35,15 @@ class FormEntryPatientListAdapter(private val mContext: FormEntryPatientListFrag return PatientViewHolder(itemView) } - override fun onBindViewHolder(holder: PatientViewHolder, position: Int) { - val adapterPos = holder.adapterPosition + override fun onBindViewHolder(holder: PatientViewHolder, position: Int){ + val adapterPos = holder.absoluteAdapterPosition val patient = this.mItems?.get(position) VisitDAO().getActiveVisitByPatientId(patient?.id) .observeOn(AndroidSchedulers.mainThread()) .subscribe { visit: Visit? -> if (visit != null) { - val icon = mContext.resources.getDrawable(R.drawable.active_visit_dot) - icon.setBounds(0, 0, icon.intrinsicHeight, icon.intrinsicWidth) + val icon:Drawable? = ResourcesCompat.getDrawable(Resources.getSystem(),R.drawable.active_visit_dot,null) + icon?.setBounds(0, 0, icon.intrinsicHeight, icon.intrinsicWidth) holder.mVisitStatus.setCompoundDrawables(icon, null, null, null) holder.mVisitStatus.text = mContext.getString(R.string.active_visit_label_capture_vitals) holder.mRowLayout.setOnClickListener { mContext.startEncounterForPatient(mItems?.get(adapterPos)?.id) } diff --git a/openmrs-client/src/main/java/org/openmrs/mobile/activities/formlist/FormListFragment.kt b/openmrs-client/src/main/java/org/openmrs/mobile/activities/formlist/FormListFragment.kt index 4d92feb85..296e42b6e 100644 --- a/openmrs-client/src/main/java/org/openmrs/mobile/activities/formlist/FormListFragment.kt +++ b/openmrs-client/src/main/java/org/openmrs/mobile/activities/formlist/FormListFragment.kt @@ -13,6 +13,7 @@ */ package org.openmrs.mobile.activities.formlist +import android.annotation.SuppressLint import android.content.Intent import android.graphics.Typeface import android.os.Build @@ -45,21 +46,27 @@ import retrofit2.Response import java.io.IOException import java.nio.charset.StandardCharsets -public final class FormListFragment : ACBaseFragment(), FormListContract.View { +class FormListFragment : ACBaseFragment(), FormListContract.View { private var _binding: FragmentFormListBinding? = null private val binding get() = _binding!! private var snackbar: Snackbar? = null @Nullable - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { _binding = FragmentFormListBinding.inflate(inflater, container, false) val root: View = binding.root - binding.formlist.setOnItemClickListener({ parent: AdapterView<*>?, view: View, position: Int, id: Long -> mPresenter!!.listItemClicked(position, (view as TextView).text.toString()) }) + binding.formlist.setOnItemClickListener { _: AdapterView<*>?, view: View, position: Int, _: Long -> + mPresenter!!.listItemClicked( + position, + (view as TextView).text.toString() + ) + } return root } + @SuppressLint("InflateParams") override fun showFormList(forms: Array?) { - if (forms!!.size == 0) { + if (forms!!.isEmpty()) { snackbar = Snackbar.make(binding.root, ApplicationConstants.EMPTY_STRING, Snackbar.LENGTH_INDEFINITE) val customSnackBarView = layoutInflater.inflate(R.layout.snackbar, null) val snackBarLayout = snackbar!!.view as SnackbarLayout @@ -69,7 +76,7 @@ public final class FormListFragment : ACBaseFragment(R.id.snackbar_action_button) val typeface = Typeface.createFromAsset(requireActivity().assets, ApplicationConstants.TypeFacePathConstants.ROBOTO_MEDIUM) dismissButton.typeface = typeface - dismissButton.setOnClickListener { v: View? -> snackbar!!.dismiss() } + dismissButton.setOnClickListener { snackbar!!.dismiss() } snackBarLayout.addView(customSnackBarView, 0) snackbar!!.show() } @@ -104,68 +111,72 @@ public final class FormListFragment : ACBaseFragment { - override fun onResponse(call: Call, response: Response) { - if (response.isSuccessful && response.body()!!.name == "json") { - formCreateFlag = true - } - } - - override fun onFailure(call: Call, t: Throwable) { - //This method is lef blank intentionally - } - }) - } else if (formName.contains("vitals")) { - val obj = loadJSONFromAsset("vitals1.json") - val obj2 = loadJSONFromAsset("vitals2.json") - val call2 = apiService.formCreate(uuid, obj) - call2.enqueue(object : Callback { - override fun onResponse(call: Call, response: Response) { - if (response.isSuccessful && response.body()!!.name == "json") { - formCreateFlag = true - } - } - - override fun onFailure(call: Call, t: Throwable) { - //This method is lef blank intentionally - } - }) - val call = apiService.formCreate(uuid, obj2) - call.enqueue(object : Callback { - override fun onResponse(call: Call, response: Response) { - if (response.isSuccessful && response.body()!!.name == "json") { - formCreateFlag = true - } - } - - override fun onFailure(call: Call, t: Throwable) { - //This method is lef blank intentionally - } - }) - } else if (formName.contains("visit note")) { - val obj = loadJSONFromAsset("visit_note.json") - val call2 = apiService.formCreate(uuid, obj) - call2.enqueue(object : Callback { - override fun onResponse(call: Call, response: Response) { - if (response.isSuccessful && response.body()!!.name == "json") { - formCreateFlag = true - } - } - - override fun onFailure(call: Call, t: Throwable) { - //This method is lef blank intentionally - } - }) + when { + formName!!.contains("admission") -> { + val obj = loadJSONFromAsset("admission.json") + val call2 = apiService.formCreate(uuid, obj) + call2.enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + if (response.isSuccessful && response.body()!!.name == "json") { + formCreateFlag = true + } + } + + override fun onFailure(call: Call, t: Throwable) { + //This method is lef blank intentionally + } + }) + } + formName.contains("vitals") -> { + val obj = loadJSONFromAsset("vitals1.json") + val obj2 = loadJSONFromAsset("vitals2.json") + val call2 = apiService.formCreate(uuid, obj) + call2.enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + if (response.isSuccessful && response.body()!!.name == "json") { + formCreateFlag = true + } + } + + override fun onFailure(call: Call, t: Throwable) { + //This method is lef blank intentionally + } + }) + val call = apiService.formCreate(uuid, obj2) + call.enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + if (response.isSuccessful && response.body()!!.name == "json") { + formCreateFlag = true + } + } + + override fun onFailure(call: Call, t: Throwable) { + //This method is lef blank intentionally + } + }) + } + formName.contains("visit note") -> { + val obj = loadJSONFromAsset("visit_note.json") + val call2 = apiService.formCreate(uuid, obj) + call2.enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + if (response.isSuccessful && response.body()!!.name == "json") { + formCreateFlag = true + } + } + + override fun onFailure(call: Call, t: Throwable) { + //This method is lef blank intentionally + } + }) + } } return formCreateFlag } @RequiresApi(api = Build.VERSION_CODES.KITKAT) private fun loadJSONFromAsset(filename: String): FormData? { - var json: String? = null + val json: String? json = try { val `is` = requireActivity().assets.open("forms/$filename") val size = `is`.available() @@ -177,7 +188,7 @@ public final class FormListFragment : ACBaseFragment(), LogsContract.View private val binding get() = _binding!! override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { + savedInstanceState: Bundle?): View { _binding = FragmentLogsBinding.inflate(inflater, container, false) return binding.root } @@ -42,13 +42,13 @@ class LogsFragment : ACBaseFragment(), LogsContract.View override fun fabCopyAll(textLogs: String?) { binding.fab.setOnClickListener { - setClipboard(context, textLogs) + setClipboard(textLogs) Toast.makeText(context, R.string.logs_copied_to_clipboard_message, Toast.LENGTH_SHORT).show() } } - private fun setClipboard(context: Context?, text: String?) { + private fun setClipboard(text: String?) { val clipboard = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clip = ClipData.newPlainText(getString(R.string.copied_text), text) clipboard.setPrimaryClip(clip) diff --git a/openmrs-client/src/main/java/org/openmrs/mobile/listeners/watcher/PatientBirthdateValidatorWatcher.kt b/openmrs-client/src/main/java/org/openmrs/mobile/listeners/watcher/PatientBirthdateValidatorWatcher.kt index b0aa05f6a..280d46553 100644 --- a/openmrs-client/src/main/java/org/openmrs/mobile/listeners/watcher/PatientBirthdateValidatorWatcher.kt +++ b/openmrs-client/src/main/java/org/openmrs/mobile/listeners/watcher/PatientBirthdateValidatorWatcher.kt @@ -19,6 +19,7 @@ import android.widget.EditText import com.openmrs.android_sdk.utilities.ApplicationConstants import com.openmrs.android_sdk.utilities.StringUtils.notEmpty +@Suppress("UNREACHABLE_CODE") class PatientBirthdateValidatorWatcher(private val eddob: EditText, private val edmonth: EditText, private val edyr: EditText) : TextWatcher { diff --git a/openmrs-client/src/main/java/org/openmrs/mobile/utilities/DayAxisValueFormatter.kt b/openmrs-client/src/main/java/org/openmrs/mobile/utilities/DayAxisValueFormatter.kt index a717fb446..19bd9c263 100644 --- a/openmrs-client/src/main/java/org/openmrs/mobile/utilities/DayAxisValueFormatter.kt +++ b/openmrs-client/src/main/java/org/openmrs/mobile/utilities/DayAxisValueFormatter.kt @@ -13,15 +13,18 @@ */ package org.openmrs.mobile.utilities +import android.annotation.SuppressLint import com.openmrs.android_sdk.utilities.DateUtils.getDateFromString import com.github.mikephil.charting.components.AxisBase -import com.github.mikephil.charting.formatter.IAxisValueFormatter import com.github.mikephil.charting.formatter.ValueFormatter import java.text.DateFormat import java.text.SimpleDateFormat +import kotlin.collections.ArrayList import kotlin.math.abs -class DayAxisValueFormatter(private val dates: ArrayList) : ValueFormatter(), IAxisValueFormatter { +@Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS") +class DayAxisValueFormatter(private val dates: ArrayList) : ValueFormatter() { + @SuppressLint("SimpleDateFormat") override fun getFormattedValue(value: Float, axis: AxisBase): String { val intValue = value.toInt() val vitalDate = getDateFromString(dates[abs(intValue)])