Skip to content

Commit

Permalink
Kotlin conversion: QR (#1389)
Browse files Browse the repository at this point in the history
  • Loading branch information
rchtgpt authored Jul 12, 2023
1 parent 6aed303 commit bac910d
Show file tree
Hide file tree
Showing 12 changed files with 465 additions and 587 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.mifos.mobilewallet.mifospay.qr

import android.graphics.Bitmap
import org.mifos.mobilewallet.mifospay.base.BasePresenter
import org.mifos.mobilewallet.mifospay.base.BaseView

/**
* Created by naman on 8/7/17.
*/
interface QrContract {
interface ShowQrView : BaseView<ShowQrPresenter?> {
fun showGeneratedQr(bitmap: Bitmap?)
}

interface ShowQrPresenter : BasePresenter {
fun generateQr(data: String?)
}

interface ReadQrView : BaseView<ReadQrPresenter?>
interface ReadQrPresenter : BasePresenter
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package org.mifos.mobilewallet.mifospay.qr.domain.usecase

import android.graphics.Bitmap
import com.google.zxing.BarcodeFormat
import com.google.zxing.MultiFormatWriter
import com.google.zxing.WriterException
import com.google.zxing.common.BitMatrix
import org.mifos.mobilewallet.core.base.UseCase
import org.mifos.mobilewallet.mifospay.utils.Constants
import javax.inject.Inject

/**
* Created by naman on 8/7/17.
*/
class GenerateQr @Inject constructor() :
UseCase<GenerateQr.RequestValues, GenerateQr.ResponseValue?>() {
override fun executeUseCase(requestValues: RequestValues) {
try {
val bitmap = encodeAsBitmap(requestValues.data)
if (bitmap != null) {
useCaseCallback.onSuccess(ResponseValue(bitmap))
} else {
useCaseCallback.onError(Constants.ERROR_OCCURRED)
}
} catch (e: WriterException) {
useCaseCallback.onError(Constants.FAILED_TO_WRITE_DATA_TO_QR)
}
}

@Throws(WriterException::class)
private fun encodeAsBitmap(str: String): Bitmap? {
val result: BitMatrix
result = try {
MultiFormatWriter().encode(
str,
BarcodeFormat.QR_CODE, WIDTH, WIDTH, null
)
} catch (iae: IllegalArgumentException) {
return null
}
val w = result.width
val h = result.height
val pixels = IntArray(w * h)
for (y in 0 until h) {
val offset = y * w
for (x in 0 until w) {
pixels[offset + x] = if (result[x, y]) BLACK else WHITE
}
}
val bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888)
bitmap.setPixels(pixels, 0, WIDTH, 0, 0, w, h)
return bitmap
}

class RequestValues(val data: String) : UseCase.RequestValues
class ResponseValue(val bitmap: Bitmap) : UseCase.ResponseValue
companion object {
private const val WHITE = -0x1
private const val BLACK = -0x1000000
private const val WIDTH = 500
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.mifos.mobilewallet.mifospay.qr.presenter

import org.mifos.mobilewallet.core.base.UseCaseHandler
import org.mifos.mobilewallet.mifospay.base.BaseView
import org.mifos.mobilewallet.mifospay.qr.QrContract
import org.mifos.mobilewallet.mifospay.qr.QrContract.ReadQrView
import javax.inject.Inject

/**
* Created by naman on 7/9/17.
*/
class ReadQrPresenter @Inject constructor(private val mUsecaseHandler: UseCaseHandler) :
QrContract.ReadQrPresenter {
private var mReadQrView: ReadQrView? = null
override fun attachView(baseView: BaseView<*>?) {
mReadQrView = baseView as ReadQrView?
mReadQrView!!.setPresenter(this)
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package org.mifos.mobilewallet.mifospay.qr.presenter

import org.mifos.mobilewallet.core.base.UseCase.UseCaseCallback
import org.mifos.mobilewallet.core.base.UseCaseHandler
import org.mifos.mobilewallet.mifospay.base.BaseView
import org.mifos.mobilewallet.mifospay.qr.QrContract
import org.mifos.mobilewallet.mifospay.qr.QrContract.ShowQrView
import org.mifos.mobilewallet.mifospay.qr.domain.usecase.GenerateQr
import javax.inject.Inject

/**
* Created by naman on 8/7/17.
*/
class ShowQrPresenter @Inject constructor(private val mUsecaseHandler: UseCaseHandler) :
QrContract.ShowQrPresenter {
private lateinit var generateQrUseCase: GenerateQr
private lateinit var mShowQrView: ShowQrView
override fun attachView(baseView: BaseView<*>?) {
mShowQrView = baseView as ShowQrView
mShowQrView.setPresenter(this)
}

override fun generateQr(data: String?) {
mUsecaseHandler.execute(
generateQrUseCase, data?.let { GenerateQr.RequestValues(it) },
object : UseCaseCallback<GenerateQr.ResponseValue?> {
override fun onSuccess(response: GenerateQr.ResponseValue?) {
if (response != null) {
mShowQrView.showGeneratedQr(response.bitmap)
}
}

override fun onError(message: String) {}
})
}
}
Loading

0 comments on commit bac910d

Please sign in to comment.