DateUtils: move event details formatting to DateUtils
Also display second as 0 since it is easier to read and does not have meaning for the user.
This commit is contained in:
@@ -41,7 +41,6 @@ import okio.IOException
|
|||||||
import org.json.JSONException
|
import org.json.JSONException
|
||||||
import utils.DateUtils
|
import utils.DateUtils
|
||||||
import utils.NumericUtils
|
import utils.NumericUtils
|
||||||
import java.text.DateFormat
|
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
@@ -340,7 +339,6 @@ class MainActivity : AppCompatActivity() {
|
|||||||
fun showEventDetailDialog(event: LunaEvent, items: ArrayList<LunaEvent>) {
|
fun showEventDetailDialog(event: LunaEvent, items: ArrayList<LunaEvent>) {
|
||||||
// Do not update list while the detail is shown, to avoid changing the object below while it is changed by the user
|
// Do not update list while the detail is shown, to avoid changing the object below while it is changed by the user
|
||||||
pauseLogbookUpdate = true
|
pauseLogbookUpdate = true
|
||||||
val dateFormat = DateFormat.getDateTimeInstance()
|
|
||||||
val d = AlertDialog.Builder(this)
|
val d = AlertDialog.Builder(this)
|
||||||
d.setTitle(R.string.dialog_event_detail_title)
|
d.setTitle(R.string.dialog_event_detail_title)
|
||||||
val dialogView = layoutInflater.inflate(R.layout.dialog_event_detail, null)
|
val dialogView = layoutInflater.inflate(R.layout.dialog_event_detail, null)
|
||||||
@@ -352,8 +350,9 @@ class MainActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
val currentDateTime = Calendar.getInstance()
|
val currentDateTime = Calendar.getInstance()
|
||||||
currentDateTime.time = Date(event.time * 1000)
|
currentDateTime.time = Date(event.time * 1000)
|
||||||
|
|
||||||
val dateTextView = dialogView.findViewById<TextView>(R.id.dialog_event_detail_type_date)
|
val dateTextView = dialogView.findViewById<TextView>(R.id.dialog_event_detail_type_date)
|
||||||
dateTextView.text = String.format(getString(R.string.dialog_event_detail_datetime_icon), dateFormat.format(currentDateTime.time))
|
dateTextView.text = String.format(getString(R.string.dialog_event_detail_datetime_icon), DateUtils.formatDateTime(event.time))
|
||||||
dateTextView.setOnClickListener {
|
dateTextView.setOnClickListener {
|
||||||
// Show datetime picker
|
// Show datetime picker
|
||||||
val startYear = currentDateTime.get(Calendar.YEAR)
|
val startYear = currentDateTime.get(Calendar.YEAR)
|
||||||
@@ -366,11 +365,9 @@ class MainActivity : AppCompatActivity() {
|
|||||||
TimePickerDialog(this, { _, hour, minute ->
|
TimePickerDialog(this, { _, hour, minute ->
|
||||||
val pickedDateTime = Calendar.getInstance()
|
val pickedDateTime = Calendar.getInstance()
|
||||||
pickedDateTime.set(year, month, day, hour, minute)
|
pickedDateTime.set(year, month, day, hour, minute)
|
||||||
currentDateTime.time = pickedDateTime.time
|
|
||||||
dateTextView.text = String.format(getString(R.string.dialog_event_detail_datetime_icon), dateFormat.format(currentDateTime.time))
|
|
||||||
|
|
||||||
// Save event and move it to the right position in the logbook
|
// Save event and move it to the right position in the logbook
|
||||||
event.time = currentDateTime.time.time / 1000 // Seconds since epoch
|
event.time = pickedDateTime.time.time / 1000 // Seconds since epoch
|
||||||
|
dateTextView.text = String.format(getString(R.string.dialog_event_detail_datetime_icon), DateUtils.formatDateTime(event.time))
|
||||||
logbook?.sort()
|
logbook?.sort()
|
||||||
recyclerView.adapter?.notifyDataSetChanged()
|
recyclerView.adapter?.notifyDataSetChanged()
|
||||||
saveLogbook()
|
saveLogbook()
|
||||||
|
@@ -5,8 +5,13 @@ import android.text.format.DateFormat
|
|||||||
import it.danieleverducci.lunatracker.R
|
import it.danieleverducci.lunatracker.R
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
|
|
||||||
class DateUtils {
|
class DateUtils {
|
||||||
companion object {
|
companion object {
|
||||||
|
/**
|
||||||
|
* Format time duration in seconds as e.g. "2 hours, 1 min".
|
||||||
|
* Used for the duration to the next/previous event in the event details dialog.
|
||||||
|
*/
|
||||||
fun formatTimeDuration(context: Context, secondsDiff: Long): String {
|
fun formatTimeDuration(context: Context, secondsDiff: Long): String {
|
||||||
var seconds = secondsDiff
|
var seconds = secondsDiff
|
||||||
|
|
||||||
@@ -65,7 +70,8 @@ class DateUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Formats the provided unix timestamp in a string like "3 hours, 26 minutes ago)
|
* Formats the provided unix timestamp in a string like "3 hours, 26 minutes ago".
|
||||||
|
* Used for the event list.
|
||||||
*/
|
*/
|
||||||
fun formatTimeAgo(context: Context, unixTime: Long): String {
|
fun formatTimeAgo(context: Context, unixTime: Long): String {
|
||||||
val secondsDiff = (System.currentTimeMillis() / 1000) - unixTime
|
val secondsDiff = (System.currentTimeMillis() / 1000) - unixTime
|
||||||
@@ -100,5 +106,17 @@ class DateUtils {
|
|||||||
}
|
}
|
||||||
return formattedTime.toString()
|
return formattedTime.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format time as localized string without seconds. E.g. "28 Sept 03:36:00".
|
||||||
|
* The seconds are set to 0 since they are distracting and not relevant.
|
||||||
|
* Used in the event detail dialog.
|
||||||
|
*/
|
||||||
|
fun formatDateTime(unixTime: Long): String {
|
||||||
|
val roundedUnixTime = unixTime - (unixTime % 60)
|
||||||
|
val date = Date(roundedUnixTime * 1000)
|
||||||
|
val dateFormat = java.text.DateFormat.getDateTimeInstance()
|
||||||
|
return dateFormat.format(date)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user