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() }