From e6e3a72adff0020404a266ead19fbfd71c74c04b Mon Sep 17 00:00:00 2001 From: "h.malik144@gmail.com" Date: Tue, 29 Aug 2023 19:13:01 +0100 Subject: [PATCH] - lint checks completed --- .idea/kotlinc.xml | 6 + .../farmr/data/legacydb/ShiftProvider.kt | 117 ++++++++++-------- .../appttude/h_mal/farmr/model/Sortable.kt | 2 - .../appttude/h_mal/farmr/ui/FragmentMain.kt | 31 +++-- .../h_mal/farmr/ui/ShiftListAdapter.kt | 6 +- .../appttude/h_mal/farmr/ui/SplashScreen.kt | 8 +- .../appttude/h_mal/farmr/utils/ViewUtils.kt | 8 +- .../h_mal/farmr/viewmodel/MainViewModel.kt | 2 +- 8 files changed, 95 insertions(+), 85 deletions(-) create mode 100644 .idea/kotlinc.xml diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..b1077fb --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/appttude/h_mal/farmr/data/legacydb/ShiftProvider.kt b/app/src/main/java/com/appttude/h_mal/farmr/data/legacydb/ShiftProvider.kt index 87ad3d8..727fe1f 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/data/legacydb/ShiftProvider.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/data/legacydb/ShiftProvider.kt @@ -19,22 +19,24 @@ class ShiftProvider : ContentProvider() { return true } - override fun query(uri: Uri, projection: Array?, selection: String?, selectionArgs: Array?, - sortOrder: String?): Cursor? { - var selection = selection - var selectionArgs = selectionArgs + override fun query( + uri: Uri, projection: Array?, selection: String?, selectionArgs: Array?, + sortOrder: String? + ): Cursor { val database = mDbHelper!!.readableDatabase - val cursor: Cursor - val match = sUriMatcher.match(uri) - when (match) { - SHIFTS -> cursor = database.query(ShiftsEntry.TABLE_NAME, projection, selection, selectionArgs, - null, null, sortOrder) + val cursor: Cursor = when (sUriMatcher.match(uri)) { + SHIFTS -> database.query( + ShiftsEntry.TABLE_NAME, projection, selection, selectionArgs, + null, null, sortOrder + ) SHIFT_ID -> { - selection = ShiftsEntry._ID + "=?" - selectionArgs = arrayOf(ContentUris.parseId(uri).toString()) - cursor = database.query(ShiftsEntry.TABLE_NAME, projection, selection, selectionArgs, - null, null, sortOrder) + val mSelection = ShiftsEntry._ID + "=?" + val mSelectionArgs = arrayOf(ContentUris.parseId(uri).toString()) + database.query( + ShiftsEntry.TABLE_NAME, projection, mSelection, mSelectionArgs, + null, null, sortOrder + ) } else -> throw IllegalArgumentException("Cannot query $uri") @@ -44,26 +46,25 @@ class ShiftProvider : ContentProvider() { } override fun insert(uri: Uri, contentValues: ContentValues?): Uri? { - val match = sUriMatcher.match(uri) - return when (match) { + return when (sUriMatcher.match(uri)) { SHIFTS -> insertShift(uri, contentValues) else -> throw IllegalArgumentException("Insertion is not supported for $uri") } } private fun insertShift(uri: Uri, values: ContentValues?): Uri? { - val description = values!!.getAsString(ShiftsEntry.COLUMN_SHIFT_DESCRIPTION) - ?: throw IllegalArgumentException("Description required") - val date = values.getAsString(ShiftsEntry.COLUMN_SHIFT_DATE) - ?: throw IllegalArgumentException("Date required") - val timeIn = values.getAsString(ShiftsEntry.COLUMN_SHIFT_TIME_IN) - ?: throw IllegalArgumentException("Time In required") - val timeOut = values.getAsString(ShiftsEntry.COLUMN_SHIFT_TIME_OUT) - ?: throw IllegalArgumentException("Time Out required") + values!!.getAsString(ShiftsEntry.COLUMN_SHIFT_DESCRIPTION) + ?: throw IllegalArgumentException("Description required") + values.getAsString(ShiftsEntry.COLUMN_SHIFT_DATE) + ?: throw IllegalArgumentException("Date required") + values.getAsString(ShiftsEntry.COLUMN_SHIFT_TIME_IN) + ?: throw IllegalArgumentException("Time In required") + values.getAsString(ShiftsEntry.COLUMN_SHIFT_TIME_OUT) + ?: throw IllegalArgumentException("Time Out required") val duration = values.getAsFloat(ShiftsEntry.COLUMN_SHIFT_DURATION) require(duration >= 0) { "Duration cannot be negative" } - val shiftType = values.getAsString(ShiftsEntry.COLUMN_SHIFT_TYPE) - ?: throw IllegalArgumentException("Shift type required") + values.getAsString(ShiftsEntry.COLUMN_SHIFT_TYPE) + ?: throw IllegalArgumentException("Shift type required") val shiftUnits = values.getAsFloat(ShiftsEntry.COLUMN_SHIFT_UNIT) require(shiftUnits >= 0) { "Units cannot be negative" } val payRate = values.getAsFloat(ShiftsEntry.COLUMN_SHIFT_PAYRATE) @@ -82,43 +83,47 @@ class ShiftProvider : ContentProvider() { return ContentUris.withAppendedId(uri, id) } - override fun update(uri: Uri, contentValues: ContentValues?, selection: String?, - selectionArgs: Array?): Int { - var selection = selection - var selectionArgs = selectionArgs - val match = sUriMatcher.match(uri) - return when (match) { + override fun update( + uri: Uri, contentValues: ContentValues?, selection: String?, + selectionArgs: Array? + ): Int { + return when (sUriMatcher.match(uri)) { SHIFTS -> updateShift(uri, contentValues, selection, selectionArgs) SHIFT_ID -> { - selection = ShiftsEntry._ID + "=?" - selectionArgs = arrayOf(ContentUris.parseId(uri).toString()) - updateShift(uri, contentValues, selection, selectionArgs) + val mSelection = ShiftsEntry._ID + "=?" + val mSelectionArgs = arrayOf(ContentUris.parseId(uri).toString()) + updateShift(uri, contentValues, mSelection, mSelectionArgs) } else -> throw IllegalArgumentException("Update is not supported for $uri") } } - private fun updateShift(uri: Uri, values: ContentValues?, selection: String?, selectionArgs: Array?): Int { + private fun updateShift( + uri: Uri, + values: ContentValues?, + selection: String?, + selectionArgs: Array? + ): Int { if (values!!.containsKey(ShiftsEntry.COLUMN_SHIFT_DESCRIPTION)) { - val description = values.getAsString(ShiftsEntry.COLUMN_SHIFT_DESCRIPTION) - ?: throw IllegalArgumentException("description required") + values.getAsString(ShiftsEntry.COLUMN_SHIFT_DESCRIPTION) + ?: throw IllegalArgumentException("description required") } if (values.containsKey(ShiftsEntry.COLUMN_SHIFT_DATE)) { - val date = values.getAsString(ShiftsEntry.COLUMN_SHIFT_DATE) - ?: throw IllegalArgumentException("date required") + values.getAsString(ShiftsEntry.COLUMN_SHIFT_DATE) + ?: throw IllegalArgumentException("date required") } if (values.containsKey(ShiftsEntry.COLUMN_SHIFT_TIME_IN)) { - val timeIn = values.getAsString(ShiftsEntry.COLUMN_SHIFT_TIME_IN) - ?: throw IllegalArgumentException("time in required") + values.getAsString(ShiftsEntry.COLUMN_SHIFT_TIME_IN) + ?: throw IllegalArgumentException("time in required") } if (values.containsKey(ShiftsEntry.COLUMN_SHIFT_TIME_OUT)) { - val timeOut = values.getAsString(ShiftsEntry.COLUMN_SHIFT_TIME_OUT) - ?: throw IllegalArgumentException("time out required") + values.getAsString(ShiftsEntry.COLUMN_SHIFT_TIME_OUT) + ?: throw IllegalArgumentException("time out required") } if (values.containsKey(ShiftsEntry.COLUMN_SHIFT_BREAK)) { - val breaks = values.getAsString(ShiftsEntry.COLUMN_SHIFT_BREAK) - ?: throw IllegalArgumentException("break required") + values.getAsString(ShiftsEntry.COLUMN_SHIFT_BREAK) + ?: throw IllegalArgumentException("break required") } if (values.size() == 0) { return 0 @@ -132,17 +137,15 @@ class ShiftProvider : ContentProvider() { } override fun delete(uri: Uri, selection: String?, selectionArgs: Array?): Int { - var selection = selection - var selectionArgs = selectionArgs val database = mDbHelper!!.writableDatabase - val rowsDeleted: Int - val match = sUriMatcher.match(uri) - when (match) { - SHIFTS -> rowsDeleted = database.delete(ShiftsEntry.TABLE_NAME, selection, selectionArgs) + val rowsDeleted: Int = when (sUriMatcher.match(uri)) { + SHIFTS -> database.delete(ShiftsEntry.TABLE_NAME, selection, selectionArgs) + SHIFT_ID -> { - selection = ShiftsEntry._ID + "=?" - selectionArgs = arrayOf(ContentUris.parseId(uri).toString()) - rowsDeleted = database.delete(ShiftsEntry.TABLE_NAME, selection, selectionArgs) + val mSelection = ShiftsEntry._ID + "=?" + val mSelectionArgs = arrayOf(ContentUris.parseId(uri).toString()) + + database.delete(ShiftsEntry.TABLE_NAME, mSelection, mSelectionArgs) } else -> throw IllegalArgumentException("Deletion is not supported for $uri") @@ -169,7 +172,11 @@ class ShiftProvider : ContentProvider() { init { sUriMatcher.addURI(ShiftsContract.CONTENT_AUTHORITY, ShiftsContract.PATH_SHIFTS, SHIFTS) - sUriMatcher.addURI(ShiftsContract.CONTENT_AUTHORITY, ShiftsContract.PATH_SHIFTS + "/#", SHIFT_ID) + sUriMatcher.addURI( + ShiftsContract.CONTENT_AUTHORITY, + ShiftsContract.PATH_SHIFTS + "/#", + SHIFT_ID + ) } } diff --git a/app/src/main/java/com/appttude/h_mal/farmr/model/Sortable.kt b/app/src/main/java/com/appttude/h_mal/farmr/model/Sortable.kt index 609fd20..bb2bbf7 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/model/Sortable.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/model/Sortable.kt @@ -10,8 +10,6 @@ enum class Sortable(val label: String) { TOTALPAY("Total Pay"); companion object { - val entries = Sortable.values() - fun getEnumByType(label: String): Sortable { return Sortable.values().first { it.label == label } } diff --git a/app/src/main/java/com/appttude/h_mal/farmr/ui/FragmentMain.kt b/app/src/main/java/com/appttude/h_mal/farmr/ui/FragmentMain.kt index 09592b9..8e420e0 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/ui/FragmentMain.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/ui/FragmentMain.kt @@ -95,7 +95,7 @@ class FragmentMain : BaseFragment(R.layout.fragment_main), BackPr AlertDialog.Builder(context) .setTitle("Help & Support:") .setView(R.layout.dialog_layout) - .setPositiveButton(android.R.string.yes) { arg0, arg1 -> arg0.dismiss() } + .setPositiveButton(android.R.string.ok) { arg0, _ -> arg0.dismiss() } .create().show() return true } @@ -120,12 +120,11 @@ class FragmentMain : BaseFragment(R.layout.fragment_main), BackPr AlertDialog.Builder(context) .setTitle("Export?") .setMessage("Exporting current filtered data. Continue?") - .setNegativeButton(android.R.string.no, null) - .setPositiveButton(android.R.string.yes) { arg0, arg1 -> exportData() } + .setNegativeButton(android.R.string.cancel, null) + .setPositiveButton(android.R.string.ok) { _, _ -> exportData() } .create().show() } else { - Toast.makeText(context, "Storage permissions required", Toast.LENGTH_SHORT) - .show() + displayToast("Storage permissions required") } return true } @@ -134,7 +133,7 @@ class FragmentMain : BaseFragment(R.layout.fragment_main), BackPr AlertDialog.Builder(context) .setTitle("Info:") .setMessage(viewModel.getInformation()) - .setPositiveButton(android.R.string.yes) { arg0, arg1 -> + .setPositiveButton(android.R.string.ok) { arg0, _ -> arg0.dismiss() }.create().show() return true @@ -144,7 +143,7 @@ class FragmentMain : BaseFragment(R.layout.fragment_main), BackPr } private fun sortData() { - val groupName = Sortable.entries.map { it.label }.toTypedArray() + val groupName = Sortable.values().map { it.label }.toTypedArray() var sort = Sortable.ID val sortAndOrder = viewModel.getSortAndOrder() @@ -155,11 +154,11 @@ class FragmentMain : BaseFragment(R.layout.fragment_main), BackPr .setSingleChoiceItems( groupName, checkedItem - ) { p0, p1 -> sort = Sortable.getEnumByType(groupName[p1]) } - .setPositiveButton("Ascending") { dialog, id -> + ) { _, p1 -> sort = Sortable.getEnumByType(groupName[p1]) } + .setPositiveButton("Ascending") { dialog, _ -> viewModel.setSortAndOrder(sort) dialog.dismiss() - }.setNegativeButton("Descending") { dialog, id -> + }.setNegativeButton("Descending") { dialog, _ -> viewModel.setSortAndOrder(sort, Order.DESCENDING) dialog.dismiss() } @@ -210,25 +209,25 @@ class FragmentMain : BaseFragment(R.layout.fragment_main), BackPr super.onRequestPermissionsResult(requestCode, permissions, grantResults) println("request code$requestCode") if (requestCode == MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE) { - if (grantResults.size > 0 + if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED ) { exportDialog() } else { - Toast.makeText(context, "Storage Permissions denied", Toast.LENGTH_SHORT).show() + displayToast("Storage Permissions denied") } } } - fun exportDialog() { + private fun exportDialog() { AlertDialog.Builder(context) .setTitle("Export?") .setMessage("Exporting current filtered data. Continue?") - .setNegativeButton(android.R.string.no, null) - .setPositiveButton(android.R.string.yes) { arg0, arg1 -> exportData() }.create().show() + .setNegativeButton(android.R.string.cancel, null) + .setPositiveButton(android.R.string.ok) { _, _ -> exportData() }.create().show() } - fun checkStoragePermissions(activity: Activity?): Boolean { + private fun checkStoragePermissions(activity: Activity?): Boolean { var status = false val permission = ActivityCompat.checkSelfPermission( activity!!, diff --git a/app/src/main/java/com/appttude/h_mal/farmr/ui/ShiftListAdapter.kt b/app/src/main/java/com/appttude/h_mal/farmr/ui/ShiftListAdapter.kt index 59d8987..5151661 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/ui/ShiftListAdapter.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/ui/ShiftListAdapter.kt @@ -1,5 +1,6 @@ package com.appttude.h_mal.farmr.ui +import android.annotation.SuppressLint import android.app.AlertDialog import android.os.Bundle import android.view.ViewGroup @@ -28,6 +29,7 @@ class ShiftListAdapter( return BaseRecyclerAdapter.CurrentViewHolder(currentViewHolder) } + @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: BaseRecyclerAdapter.CurrentViewHolder, position: Int) { val view = holder.itemView val data = getItem(position) @@ -90,8 +92,8 @@ class ShiftListAdapter( view.setOnLongClickListener { AlertDialog.Builder(it.context) .setMessage("Are you sure you want to delete") - .setPositiveButton("delete") { dialog, id -> longPressCallback.invoke(data.id) } - .setNegativeButton("cancel") { dialog, id -> + .setPositiveButton("delete") { _, _ -> longPressCallback.invoke(data.id) } + .setNegativeButton("cancel") { dialog, _ -> dialog?.dismiss() } .create().show() diff --git a/app/src/main/java/com/appttude/h_mal/farmr/ui/SplashScreen.kt b/app/src/main/java/com/appttude/h_mal/farmr/ui/SplashScreen.kt index 087320e..f0fefb2 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/ui/SplashScreen.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/ui/SplashScreen.kt @@ -1,5 +1,6 @@ package com.appttude.h_mal.farmr.ui +import android.annotation.SuppressLint import android.app.Activity import android.content.Intent import android.os.Bundle @@ -13,6 +14,7 @@ import com.appttude.h_mal.farmr.R /** * Created by h_mal on 27/06/2017. */ +@SuppressLint("CustomSplashScreen") class SplashScreen : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -20,13 +22,9 @@ class SplashScreen : Activity() { val i = Intent(this@SplashScreen, MainActivity::class.java) i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_CLEAR_TASK) - Handler().postDelayed({ - // This method will be executed once the timer is over - // Start your app main activity -// startActivity(i,bundle); + Handler(Looper.getMainLooper()).postDelayed({ startActivity(i) overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out) - // finish(); }, SPLASH_TIME_OUT) } diff --git a/app/src/main/java/com/appttude/h_mal/farmr/utils/ViewUtils.kt b/app/src/main/java/com/appttude/h_mal/farmr/utils/ViewUtils.kt index 659b798..b863b69 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/utils/ViewUtils.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/utils/ViewUtils.kt @@ -161,12 +161,12 @@ fun EditText.setDatePicker(onSelected: (String) -> Unit) { } val mDatePicker = DatePickerDialog( (this.context), - { datepicker, selectedyear, selectedmonth, selectedday -> - var currentMonth = selectedmonth - val dateString = StringBuilder().append(selectedyear).append("-") + { _, selectedYear, selectedMonth, selectedDay -> + var currentMonth = selectedMonth + val dateString = StringBuilder().append(selectedYear).append("-") .append(String.format("%02d", (currentMonth + 1.also { currentMonth = it }))) .append("-") - .append(String.format("%02d", selectedday)) + .append(String.format("%02d", selectedDay)) .toString() setText(dateString) onSelected.invoke(dateString) diff --git a/app/src/main/java/com/appttude/h_mal/farmr/viewmodel/MainViewModel.kt b/app/src/main/java/com/appttude/h_mal/farmr/viewmodel/MainViewModel.kt index 7a99874..f07cb9d 100644 --- a/app/src/main/java/com/appttude/h_mal/farmr/viewmodel/MainViewModel.kt +++ b/app/src/main/java/com/appttude/h_mal/farmr/viewmodel/MainViewModel.kt @@ -239,7 +239,7 @@ class MainViewModel( val data = shiftLiveData.value!!.applyFilters() .sortList(sortAndOrder.first, sortAndOrder.second) var currentRow = 0 - val cells = data.mapIndexed { index, shift -> + val cells = data.map { shift -> currentRow += 1 listOf( Label(0, currentRow, shift.id.toString()),