summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-03-30 22:57:58 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-27 16:21:51 +0000
commit72d66935bbb91d80e74042e7ebcf3cc3e626abd5 (patch)
tree4b0ed85792950df75fb112a322381a0876c1e639 /android/src
parent83c614a9439f093e6c915d7580e3833e89cd1ecc (diff)
downloadmullvadvpn-72d66935bbb91d80e74042e7ebcf3cc3e626abd5.tar.xz
mullvadvpn-72d66935bbb91d80e74042e7ebcf3cc3e626abd5.zip
Create `TimeSinceLabel` helper class
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/TimeSinceLabel.kt53
-rw-r--r--android/src/main/res/values/plurals.xml21
-rw-r--r--android/src/main/res/values/strings.xml2
3 files changed, 76 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/TimeSinceLabel.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/TimeSinceLabel.kt
new file mode 100644
index 0000000000..2fa2c4f2be
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/TimeSinceLabel.kt
@@ -0,0 +1,53 @@
+package net.mullvad.mullvadvpn.ui
+
+import android.content.Context
+import android.view.View
+import android.widget.TextView
+import net.mullvad.mullvadvpn.R
+import org.joda.time.DateTime
+import org.joda.time.Duration
+import org.joda.time.PeriodType
+
+class TimeSinceLabel(val context: Context, val view: View) {
+ private val resources = context.resources
+ private val label = view.findViewById<TextView>(R.id.time_since)
+
+ private val periodType = PeriodType.standard()
+ .withMillisRemoved()
+ .withSecondsRemoved()
+
+ var timeInstant: DateTime? = null
+ set(value) {
+ field = value
+ updateLabel()
+ }
+
+ private fun updateLabel() {
+ val instant = timeInstant
+
+ if (instant != null) {
+ val elapsedTime = Duration(instant, DateTime.now())
+ val elapsedTimeInfo = elapsedTime.toPeriodTo(instant, periodType)
+
+ if (elapsedTimeInfo.years > 0) {
+ label.setText(getRemainingText(R.plurals.years_ago, elapsedTimeInfo.years))
+ } else if (elapsedTimeInfo.months > 0) {
+ label.setText(getRemainingText(R.plurals.months_ago, elapsedTimeInfo.months))
+ } else if (elapsedTimeInfo.days > 0) {
+ label.setText(getRemainingText(R.plurals.days_ago, elapsedTimeInfo.days))
+ } else if (elapsedTimeInfo.hours > 0) {
+ label.setText(getRemainingText(R.plurals.hours_ago, elapsedTimeInfo.hours))
+ } else if (elapsedTimeInfo.minutes > 0) {
+ label.setText(getRemainingText(R.plurals.minutes_ago, elapsedTimeInfo.minutes))
+ } else {
+ label.setText(R.string.less_than_a_minute_ago)
+ }
+ } else {
+ label.text = ""
+ }
+ }
+
+ private fun getRemainingText(pluralId: Int, quantity: Int): String {
+ return resources.getQuantityString(pluralId, quantity, quantity)
+ }
+}
diff --git a/android/src/main/res/values/plurals.xml b/android/src/main/res/values/plurals.xml
index 5395e2f4fa..679c4f46db 100644
--- a/android/src/main/res/values/plurals.xml
+++ b/android/src/main/res/values/plurals.xml
@@ -11,4 +11,25 @@
<item quantity="one">%d day left</item>
<item quantity="other">%d days left</item>
</plurals>
+ <plurals name="minutes_ago">
+ <item quantity="zero">less than a minute ago</item>
+ <item quantity="one">a minute ago</item>
+ <item quantity="other">%d minutes ago</item>
+ </plurals>
+ <plurals name="hours_ago">
+ <item quantity="one">an hour ago</item>
+ <item quantity="other">%d hours ago</item>
+ </plurals>
+ <plurals name="days_ago">
+ <item quantity="one">a day ago</item>
+ <item quantity="other">%d days ago</item>
+ </plurals>
+ <plurals name="months_ago">
+ <item quantity="one">a month ago</item>
+ <item quantity="other">%d months ago</item>
+ </plurals>
+ <plurals name="years_ago">
+ <item quantity="one">a year ago</item>
+ <item quantity="other">%d years ago</item>
+ </plurals>
</resources>
diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml
index d85e15698d..de1419cdf8 100644
--- a/android/src/main/res/values/strings.xml
+++ b/android/src/main/res/values/strings.xml
@@ -33,6 +33,8 @@
<string name="settings_account">Account</string>
<string name="less_than_a_day_left">less than a day
left</string>
+ <string name="less_than_a_minute_ago">less than a minute
+ ago</string>
<string name="out_of_time">Out of time</string>
<string name="settings_preferences">Preferences</string>
<string name="settings_advanced">Advanced</string>