You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
poker-analytics/app/src/main/java/net/pokeranalytics/android/util/Extensions.kt

125 lines
4.0 KiB

package net.pokeranalytics.android.util
import android.content.Context
import android.content.res.Resources
import android.widget.Toast
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import java.text.DateFormat
import java.text.DecimalFormat
import java.text.SimpleDateFormat
import java.util.*
// Sizes
val Int.dp: Int
get() = (this / Resources.getSystem().displayMetrics.density).toInt()
val Int.px: Int
get() = (this * Resources.getSystem().displayMetrics.density).toInt()
val Float.dp: Float
get() = (this / Resources.getSystem().displayMetrics.density)
val Float.px: Float
get() = (this * Resources.getSystem().displayMetrics.density)
// Double
fun Double.round(): String {
val formatter = DecimalFormat("##.##")
return formatter.format(this)
}
fun Double.toCurrency(): String {
val formatter = DecimalFormat("##.##")
return "$ ${formatter.format(this)}"
}
// Calendar
// Return if the calendar dates are in the same month
fun Calendar.isSameMonth(calendar: Calendar): Boolean {
return calendar.get(Calendar.YEAR) == this.get(Calendar.YEAR) &&
calendar.get(Calendar.MONTH) == this.get(Calendar.MONTH)
}
// Return if the calendar dates are in the same day
fun Calendar.isSameDay(calendar: Calendar): Boolean {
return calendar.get(Calendar.YEAR) == this.get(Calendar.YEAR) &&
calendar.get(Calendar.MONTH) == this.get(Calendar.MONTH) &&
calendar.get(Calendar.DAY_OF_MONTH) == this.get(Calendar.DAY_OF_MONTH)
}
// Date
// Return a short string of the date
fun Date.shortDate(): String {
return DateFormat.getDateInstance(DateFormat.SHORT).format(this)
}
// Return a short string of the date
fun Date.mediumDate(): String {
return DateFormat.getDateInstance(DateFormat.MEDIUM).format(this)
}
// Return a long string of the date
fun Date.longDate(): String {
return DateFormat.getDateInstance(DateFormat.LONG).format(this)
}
// Return a short string of the date
fun Date.fullDate(): String {
return DateFormat.getDateInstance(DateFormat.FULL).format(this)
}
// Return a short string of the date & time
fun Date.shortDateTime(): String {
return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(this)
}
// Return a medium string of the date & time
fun Date.mediumDateTime(): String {
return DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM).format(this)
}
// Return a long string of the date & time
fun Date.longDateTime(): String {
return DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG).format(this)
}
// Return the full string of the date & time
fun Date.fullDateTime(): String {
return DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).format(this)
}
// Return the day number of the date
fun Date.getDayNumber() : String {
return SimpleDateFormat("dd", Locale.getDefault()).format(this)
}
// Return the 3 first letters of the date's day
fun Date.getShortDayName() : String {
return SimpleDateFormat("EE", Locale.getDefault()).format(this).substring(0, 3)
}
// Return the month & year of the date
fun Date.getMonthAndYear(): String {
return SimpleDateFormat("MMMM YYYY", Locale.getDefault()).format(this).capitalize()
}
// Return the duration between two dates
fun Date.getDuration(context: Context, toDate: Date) : String {
val difference = (toDate.time - this.time).toInt()
val numOfDays = (difference / (1000 * 60 * 60 * 24))
val hours = (difference / (1000 * 60 * 60))
val minutes = (difference / (1000 * 60)) % 60
val seconds = (difference / 1000) % 60
val hoursStr = if (hours < 10) "0$hours" else "$hours"
val minutesStr = if (minutes < 10) "0$minutes" else "$minutes"
val secondsStr = if (seconds < 10) "0$seconds" else "$seconds"
return "$hoursStr:$minutesStr:$secondsStr"
}
// Toast
fun PokerAnalyticsActivity.toast(message: String) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
fun PokerAnalyticsFragment.toast(message: String) {
Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show()
}