Skip to content

Instantly share code, notes, and snippets.

View Morteza-QN's full-sized avatar

Morteza Qorbani Nezhad Morteza-QN

  • Adorateb
  • Tehran, Iran
View GitHub Profile
public static String convertMillisToString(long duration) {
long sec = (duration / 1000) % 60;
long min = (duration / (1000 * 60)) % 60;
return String.format(Locale.US, "%02d:%02d", min, sec);
}
import android.text.TextUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
public class PersianNumbersToLettersConverter {
private final String splitter;
ArrayList<ArrayList<String>> words = new ArrayList<>();
/**
@Morteza-QN
Morteza-QN / splitDigits.kt
Last active January 13, 2022 07:13
Function splits digits numbers
fun splitDigits(number: Long): String? {
return try {
val decimalFormat = DecimalFormat()
val decimalFormatSymbol = DecimalFormatSymbols()
decimalFormatSymbol.groupingSeparator = ','
decimalFormat.decimalFormatSymbols = decimalFormatSymbol
decimalFormat.format(number)
} catch (ex: Exception) {
number.toString()
}
@Morteza-QN
Morteza-QN / FragmentX.kt
Last active January 13, 2022 07:12
implementation abstract fragment by databinding android in kotlin
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import com.kcd.karchidari.common.base.view.BaseFragment
abstract class FragmentX<T : ViewDataBinding>(@LayoutRes private val layoutResId: Int) : BaseFragment() {
@Morteza-QN
Morteza-QN / AdapterX.kt
Last active January 13, 2022 07:11
implementation abstract adapter recyclerView by databinding android in kotlin
import android.annotation.SuppressLint
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.recyclerview.widget.RecyclerView
import com.kcd.karchidari.BR
import timber.log.Timber
import java.util.*
@Morteza-QN
Morteza-QN / InternetAvailability.kt
Last active January 13, 2022 07:08
check connectivity network by liveData
import timber.log.Timber
import java.net.InetSocketAddress
import java.net.Socket
object InternetAvailability {
val isAvailable: Boolean
get() {
return try {
val socket = Socket()
socket.connect(InetSocketAddress("8.8.8.8", 53))
@Morteza-QN
Morteza-QN / convertUriToPath.kt
Last active January 13, 2022 07:06
Function convert Uri content to real path file
fun convertUriToPath(context: Context, uri: Uri?): String {
var filePath = ""
val wholeID = DocumentsContract.getDocumentId(uri)
// Split at colon, use second item in the array
val id = wholeID.split(":").toTypedArray()[1]
val column = arrayOf(MediaStore.Images.Media.DATA)
// where id is equal to
val sel = MediaStore.Images.Media._ID + "=?"
@Morteza-QN
Morteza-QN / showKeyboard.kt
Created January 13, 2022 07:20
extension Function show and hide keyboard on view
fun View.showKeyboard(isShow: Boolean) {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
if (isShow) {
if (requestFocus()) imm.showSoftInput(this, 0)
} else {
imm.hideSoftInputFromWindow(windowToken, 0)
}
}
@Morteza-QN
Morteza-QN / ExtensionsUtils.kt
Created January 16, 2022 11:16
Extensions Pack ( Functions useful that help develop applications )
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer
import androidx.lifecycle.Transformations
object ExtensionsUtils {
fun <T> LifecycleOwner.observe(liveData: LiveData<T>?, action: (t: T) -> Unit) {
liveData?.observe(this, Observer { t -> action(t) })
}
@Morteza-QN
Morteza-QN / getMessageHttpCodeError.kt
Created January 16, 2022 11:20
This function convert http status code error to string type message
fun getMsgHttpCodeErr(code: Int): String {
val result = StringBuilder()
result.append(when (code) {
in 400..499 -> {
result.append("Client errors")
result.append(" ===> ")
result.append(when (code) {
400 -> "Bad Request"
401 -> "Unauthorized"
402 -> "Payment Required"