Removed hardcoded date format to use user-defined Android settings
This commit is contained in:
parent
11bf573d42
commit
f00e5c4ed8
5 changed files with 43 additions and 14 deletions
|
@ -27,8 +27,6 @@ import androidx.databinding.DataBindingUtil
|
|||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.history.viewmodels.CallLogViewModel
|
||||
import org.linphone.activities.main.viewmodels.ListTopBarViewModel
|
||||
|
@ -122,7 +120,7 @@ class CallLogsListAdapter(val selectionViewModel: ListTopBarViewModel) : Lifecyc
|
|||
} else if (TimestampUtils.isYesterday(date)) {
|
||||
return context.getString(R.string.yesterday)
|
||||
}
|
||||
return SimpleDateFormat("EEE d MMM", Locale.getDefault()).format(Date(date * 1000))
|
||||
return TimestampUtils.toString(date, onlyDate = true, shortDate = false)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -93,8 +93,7 @@ class CallLogViewModel(val callLog: CallLog) : GenericContactViewModel(callLog.r
|
|||
}
|
||||
|
||||
val date: String by lazy {
|
||||
val pattern = if (TimestampUtils.isToday(callLog.startDate)) "HH:mm" else "yyyy/MM/dd - HH:mm"
|
||||
SimpleDateFormat(pattern, Locale.getDefault()).format(Date(callLog.startDate * 1000))
|
||||
TimestampUtils.toString(callLog.startDate)
|
||||
}
|
||||
|
||||
val startCallEvent: MutableLiveData<Event<Address>> by lazy {
|
||||
|
|
|
@ -27,8 +27,6 @@ import android.view.ViewGroup
|
|||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.recordings.viewmodels.RecordingViewModel
|
||||
import org.linphone.activities.main.viewmodels.ListTopBarViewModel
|
||||
|
@ -131,7 +129,7 @@ class RecordingsListAdapter(val selectionViewModel: ListTopBarViewModel) : Lifec
|
|||
} else if (TimestampUtils.isYesterday(date, false)) {
|
||||
return context.getString(R.string.yesterday)
|
||||
}
|
||||
return SimpleDateFormat("EEE d MMM", Locale.getDefault()).format(Date(date))
|
||||
return TimestampUtils.toString(date, onlyDate = true, timestampInSecs = false, shortDate = false)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.linphone.activities.main.recordings.viewmodels
|
|||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import java.text.DateFormat
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import java.util.regex.Pattern
|
||||
|
@ -49,7 +50,7 @@ class RecordingViewModel(val path: String) : ViewModel(), Comparable<RecordingVi
|
|||
get() = SimpleDateFormat("mm:ss", Locale.getDefault()).format(duration) // is already in milliseconds
|
||||
|
||||
val formattedDate: String
|
||||
get() = SimpleDateFormat("HH:mm", Locale.getDefault()).format(date)
|
||||
get() = DateFormat.getTimeInstance(DateFormat.SHORT).format(date)
|
||||
|
||||
val playStartedEvent = MutableLiveData<Event<Boolean>>()
|
||||
|
||||
|
|
|
@ -19,8 +19,10 @@
|
|||
*/
|
||||
package org.linphone.utils
|
||||
|
||||
import java.text.DateFormat
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import org.linphone.core.tools.Log
|
||||
|
||||
class TimestampUtils {
|
||||
companion object {
|
||||
|
@ -53,14 +55,37 @@ class TimestampUtils {
|
|||
return isSameDay(cal1.time, cal2.time)
|
||||
}
|
||||
|
||||
fun toString(timestamp: Long, onlyDate: Boolean = false, timestampInSecs: Boolean = true): String {
|
||||
val format = if (isToday(timestamp)) {
|
||||
"HH:mm"
|
||||
private fun isSameYear(timestamp: Long, timestampInSecs: Boolean = true): Boolean {
|
||||
val cal = Calendar.getInstance()
|
||||
cal.timeInMillis = if (timestampInSecs) timestamp * 1000 else timestamp
|
||||
return isSameYear(cal, Calendar.getInstance())
|
||||
}
|
||||
|
||||
fun toString(
|
||||
timestamp: Long,
|
||||
onlyDate: Boolean = false,
|
||||
timestampInSecs: Boolean = true,
|
||||
shortDate: Boolean = true
|
||||
): String {
|
||||
val dateFormat = if (isToday(timestamp, timestampInSecs)) {
|
||||
DateFormat.getTimeInstance(DateFormat.SHORT)
|
||||
} else {
|
||||
if (onlyDate) "dd/MM" else "dd/MM HH:mm"
|
||||
if (onlyDate) {
|
||||
DateFormat.getDateInstance(if (shortDate) DateFormat.SHORT else DateFormat.FULL)
|
||||
} else {
|
||||
DateFormat.getDateTimeInstance(if (shortDate) DateFormat.SHORT else DateFormat.MEDIUM, DateFormat.SHORT)
|
||||
}
|
||||
} as SimpleDateFormat
|
||||
|
||||
if (isSameYear(timestamp, timestampInSecs)) {
|
||||
// Remove the year part of the format
|
||||
dateFormat.applyPattern(
|
||||
dateFormat.toPattern().replace("/?y+/?|\\s?y+\\s?".toRegex(),"")
|
||||
)
|
||||
}
|
||||
|
||||
val millis = if (timestampInSecs) timestamp * 1000 else timestamp
|
||||
return SimpleDateFormat(format, Locale.getDefault()).format(Date(millis))
|
||||
return dateFormat.format(Date(millis))
|
||||
}
|
||||
|
||||
private fun isSameDay(
|
||||
|
@ -71,5 +96,13 @@ class TimestampUtils {
|
|||
cal1[Calendar.YEAR] == cal2[Calendar.YEAR] &&
|
||||
cal1[Calendar.DAY_OF_YEAR] == cal2[Calendar.DAY_OF_YEAR]
|
||||
}
|
||||
|
||||
private fun isSameYear(
|
||||
cal1: Calendar,
|
||||
cal2: Calendar
|
||||
): Boolean {
|
||||
return cal1[Calendar.ERA] == cal2[Calendar.ERA] &&
|
||||
cal1[Calendar.YEAR] == cal2[Calendar.YEAR]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue