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.
125 lines
4.0 KiB
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()
|
|
} |