Bimba.git

commit a15a5eba74d9f81d7379ea82c90e261ababa168e

Author: Adam Pioterek <adam.pioterek@protonmail.ch>

‘minutes’ declination

 app/src/main/java/ml/adamsprogs/bimba/Declinator.kt | 17 +
 app/src/main/java/ml/adamsprogs/bimba/models/DeparturesAdapter.kt | 3 
 app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt | 5 
 app/src/main/res/values-pl/strings.xml | 4 
 app/src/main/res/values/strings.xml | 4 


diff --git a/app/src/main/java/ml/adamsprogs/bimba/Declinator.kt b/app/src/main/java/ml/adamsprogs/bimba/Declinator.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ea7988accf3986731c2ae4d50e2b22832b8841e5
--- /dev/null
+++ b/app/src/main/java/ml/adamsprogs/bimba/Declinator.kt
@@ -0,0 +1,17 @@
+package ml.adamsprogs.bimba
+
+class Declinator {
+    companion object {
+        fun decline(number: Long): Int {
+            when {
+                number == 0L -> return R.string.now
+                number % 10 == 0L -> return R.string.departure_in__plural_genitive
+                number == 1L -> return R.string.departure_in__singular_genitive
+                number in listOf<Long>(12,13,14) -> return R.string.departure_in__plural_genitive
+                number % 10 in listOf<Long>(2, 3, 4) -> return R.string.departure_in__plural_nominative
+                number % 10 in listOf<Long>(1,5,6,7,8,9) -> return R.string.departure_in__plural_genitive
+                else -> return -1
+            }
+        }
+    }
+}
\ No newline at end of file




diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/DeparturesAdapter.kt b/app/src/main/java/ml/adamsprogs/bimba/models/DeparturesAdapter.kt
index 5a81d32ba43c8f72ab348ce651e82bb217bf2aae..0b9376f1f9ef371b34511a3682bec683a909c3b6 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/models/DeparturesAdapter.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/DeparturesAdapter.kt
@@ -9,6 +9,7 @@ import android.widget.ImageView
 import android.widget.TextView
 import ml.adamsprogs.bimba.R
 import android.view.LayoutInflater
+import ml.adamsprogs.bimba.Declinator
 import java.util.*
 
 fun filterDepartures(departures: List<Departure>?): ArrayList<Departure> {
@@ -73,7 +74,7 @@
         if (departureIn > 60 || departureIn < 0 || !relativeTime)
             timeString = context.getString(R.string.departure_at, departure.time)
         else if (departureIn > 0 && !departure.onStop)
-            timeString = context.getString(R.string.departure_in, departureIn.toString())
+            timeString = context.getString(Declinator.decline(departureIn), departureIn.toString())
         else
             timeString = context.getString(R.string.now)
 




diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt b/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt
index 3ed685e237d97f6e6d15c33d89c0281cbd16b601..bb56bcecd403545af3ab83cf0e1e2bcef525f03e 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt
@@ -15,6 +15,7 @@ import android.view.LayoutInflater
 import java.util.*
 import kotlin.concurrent.thread
 import android.util.TypedValue
+import ml.adamsprogs.bimba.Declinator
 import kotlin.collections.ArrayList
 
 //todo list to storage
@@ -66,8 +67,8 @@                 departureTime.set(Calendar.HOUR_OF_DAY, Integer.parseInt(nextDeparture.time.split(":")[0]))
                 departureTime.set(Calendar.MINUTE, Integer.parseInt(nextDeparture.time.split(":")[1]))
                 if (nextDeparture.tomorrow)
                     departureTime.add(Calendar.DAY_OF_MONTH, 1)
-                val interval = ((departureTime.timeInMillis - now.timeInMillis) / (1000 * 60)).toString()
-                nextDepartureText = context.getString(R.string.departure_in, interval)
+                val interval = ((departureTime.timeInMillis - now.timeInMillis) / (1000 * 60))
+                nextDepartureText = context.getString(Declinator.decline(interval), interval.toString())
                 nextDepartureLineText = context.getString(R.string.departure_to_line, nextDeparture.line, nextDeparture.direction)
             } else {
                 nextDepartureText = context.getString(R.string.no_next_departure)




diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6e37f6e97479e45c21c82d72d7d839d13b33ce5a..23dead7e4a7df6e3f4ce665185e5b4245602382a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -8,7 +8,6 @@     Saturdays
     <string name="tab_sunday_text">Sundays</string>
     <string name="action_change_type">Type</string>
     <string name="departure_type_icon_description" translatable="false">departure type (timetable, VM)</string>
-    <string name="departure_in">In %1$s minutes</string>
     <string name="departure_to">→ %1$s</string>
     <string name="departure_to_line">%1$s → %2$s</string>
     <string name="departure_at">At %1$s</string>
@@ -36,4 +35,7 @@     No next departure
     <string name="action_merge">Merge</string>
     <string name="merge_favourites">Merge favourites</string>
     <string name="calculating">Calculating…</string>
+    <string name="departure_in__singular_genitive">In %1$s minute</string>
+    <string name="departure_in__plural_genitive">In %1$s minutes</string>
+    <string name="departure_in__plural_nominative">In %1$s minutes</string>
 </resources>




diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 9e1de01797f8bd0ba0a78b30af233250cf301f66..f2c00bcbb0d545c011d11742146e72b64d4b93e6 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -6,7 +6,6 @@     Dni robocze
     <string name="tab_saturday_text">Soboty</string>
     <string name="tab_sunday_text">Niedziele</string>
     <string name="action_change_type">Typ</string>
-    <string name="departure_in">Za %1$s minut</string>
     <string name="departure_at">O %1$s</string>
     <string name="departure_to">→ %1$s</string>
     <string name="no_db_connect">Połącz się z Internetem aby pobrać rozkład</string>
@@ -30,4 +29,7 @@     Brak następnego odjazdu
     <string name="action_merge">Połącz</string>
     <string name="merge_favourites">Połącz ulubione</string>
     <string name="calculating">Obliczam…</string>
+    <string name="departure_in__singular_genitive">Za %1$s minutę</string>
+    <string name="departure_in__plural_genitive">Za %1$s minut</string>
+    <string name="departure_in__plural_nominative">Za %1$s minuty</string>
 </resources>
\ No newline at end of file