Bimba.git

commit 20592d4de4c4cf6630cd4de0eb726a562e070061

Author: Adam Evyčędo <git@apiote.xyz>

cleanup

%!v(PANIC=String method: strings: negative Repeat count)


diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/api/Structs.kt b/app/src/main/java/xyz/apiote/bimba/czwek/api/Structs.kt
index be4ec222b4c4101a9706ef4790cac08c36e14904..9e604c62e01918732d5d03565aa5492cb5989dd5 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/api/Structs.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/api/Structs.kt
@@ -11,11 +11,6 @@ import org.yaml.snakeyaml.Yaml
 import xyz.apiote.bimba.czwek.api.structs.VehicleStatusV1
 import xyz.apiote.fruchtfleisch.Reader
 import java.io.InputStream
-import java.time.LocalDate
-import java.time.LocalDateTime
-import java.time.LocalTime
-import java.time.ZoneId
-import java.time.ZonedDateTime
 import kotlin.reflect.KClass
 
 class TrafficFormatException(override val message: String) : IllegalArgumentException()
@@ -200,16 +195,6 @@ 				reader.readI8(),
 				reader.readString()
 			)
 		}
-	}
-
-	fun toDateTime(): ZonedDateTime {
-		return ZonedDateTime.of(
-			LocalDateTime.of(
-				LocalDate.now().plusDays(DayOffset.toLong()),
-				LocalTime.of(Hour.toInt(), Minute.toInt(), Second.toInt())
-			),
-			ZoneId.of(Zone)
-		)
 	}
 }
 




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Departures.kt b/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Departures.kt
index 4e22e00b1b8365b32fc365f86c904dd74366651c..0d053162b88f3d4f2a65975d1d2cff92e2b979a4 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Departures.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Departures.kt
@@ -19,7 +19,7 @@ 	companion object {
 		fun unmarshal(stream: InputStream): DeparturesResponse {
 			val reader = Reader(stream)
 			return when (val v = reader.readUInt().toULong()) {
-				0UL -> DeparturesResponseDev.unmarshal(stream)
+				// 0UL -> DeparturesResponseDev.unmarshal(stream)
 				1UL -> DeparturesResponseV1.unmarshal(stream)
 				2UL -> DeparturesResponseV2.unmarshal(stream)
 				3UL -> DeparturesResponseV3.unmarshal(stream)




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Feeds.kt b/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Feeds.kt
index 21ed8d834755bcb5a319869a689244a55f71747b..2bb1c7b23d5db5ea1184c2a787c42124f2ce0211 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Feeds.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Feeds.kt
@@ -14,7 +14,7 @@ 	companion object {
 		fun unmarshal(stream: InputStream): FeedsResponse {
 			val reader = Reader(stream)
 			return when (val v = reader.readUInt().toULong()) {
-				0UL -> FeedsResponseDev.unmarshal(stream)
+				// 0UL -> FeedsResponseDev.unmarshal(stream)
 				1UL -> FeedsResponseV1.unmarshal(stream)
 				2UL -> FeedsResponseV2.unmarshal(stream)
 				else -> throw UnknownResponseVersion("Feeds", v)




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Line.kt b/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Line.kt
index 6094e3eb5fdd7a3e70ba3579dc5bb2e44a75a0a6..2ea9f2c732a68df8155e79559e7a23741de253c5 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Line.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Line.kt
@@ -15,7 +15,7 @@ 	companion object {
 		fun unmarshal(stream: InputStream): LineResponse {
 			val reader = Reader(stream)
 			return when (val v = reader.readUInt().toULong()) {
-				0UL -> LineResponseDev.unmarshal(stream)
+				// 0UL -> LineResponseDev.unmarshal(stream)
 				1UL -> LineResponseV1.unmarshal(stream)
 				2UL -> LineResponseV2.unmarshal(stream)
 				3UL -> LineResponseV3.unmarshal(stream)




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Locatables.kt b/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Locatables.kt
index ea7273fb1c15725996d5a76aae5677b75988c0c0..a176bd2dff780abb44aa27b89af2679233679fe7 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Locatables.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Locatables.kt
@@ -21,7 +21,7 @@ 	companion object {
 		fun unmarshal(stream: InputStream): LocatablesResponse {
 			val reader = Reader(stream)
 			return when (val v = reader.readUInt().toULong()) {
-				0UL -> LocatablesResponseDev.unmarshal(stream)
+				// 0UL -> LocatablesResponseDev.unmarshal(stream)
 				1UL -> LocatablesResponseV1.unmarshal(stream)
 				2UL -> LocatablesResponseV2.unmarshal(stream)
 				3UL -> LocatablesResponseV3.unmarshal(stream)




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Queryables.kt b/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Queryables.kt
index 216ab34e80475121dde939626338c14e59e382cb..8e7cc8f8c7a63204b4c2d69604ae33f2fe4ac768 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Queryables.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/api/responses/Queryables.kt
@@ -22,7 +22,7 @@ 	companion object {
 		fun unmarshal(stream: InputStream): QueryablesResponse {
 			val reader = Reader(stream)
 			return when (val v = reader.readUInt().toULong()) {
-				0UL -> QueryablesResponseDev.unmarshal(stream)
+				// 0UL -> QueryablesResponseDev.unmarshal(stream)
 				1UL -> QueryablesResponseV1.unmarshal(stream)
 				2UL -> QueryablesResponseV2.unmarshal(stream)
 				3UL -> QueryablesResponseV3.unmarshal(stream)




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/MainActivity.kt b/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/MainActivity.kt
index 76d0caa48af1122b8b7f89b2beab8543cedfd5d9..090e870cac6a76658ce555f4a8e7a0eac3f98355 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/MainActivity.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/MainActivity.kt
@@ -44,7 +44,7 @@ 	private lateinit var binding: ActivityMainBinding
 	private lateinit var locationPermissionRequest: ActivityResultLauncher<Array<String>>
 
 	private lateinit var permissionAsker: Fragment
-	var locationPermissionDialogShown = false
+	private var locationPermissionDialogShown = false
 
 	override fun onCreate(savedInstanceState: Bundle?) {
 		super.onCreate(savedInstanceState)




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/home/HomeViewModel.kt b/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/home/HomeViewModel.kt
index 38afc1078fe260f2e80a6553869cc720b446b48e..d42be675e2f6c4b569a608c3c0e66e7598f1b4ab 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/home/HomeViewModel.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/home/HomeViewModel.kt
@@ -5,7 +5,6 @@
 package xyz.apiote.bimba.czwek.dashboard.ui.home
 
 import android.content.Context
-import android.net.ConnectivityManager
 import android.os.Handler
 import android.os.Looper
 import android.text.Editable




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/map/MapFragment.kt b/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/map/MapFragment.kt
index 2a1df9ff63ccd46e5b422eac5ab9228b27b01759..bd2f1614e6497260be727826f03a5a6e3ccf2b9e 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/map/MapFragment.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/map/MapFragment.kt
@@ -103,11 +103,13 @@ 		}
 
 		binding.map.addMapListener(object : MapListener {
 			override fun onScroll(event: ScrollEvent?): Boolean {
-				return onMapMove()
+				onMapMove()
+				return true
 			}
 
 			override fun onZoom(event: ZoomEvent?): Boolean {
-				return onMapMove()
+				onMapMove()
+				return true
 			}
 		})
 
@@ -119,18 +121,17 @@
 		return root
 	}
 
-	private fun onMapMove(): Boolean {
+	private fun onMapMove() {
 		snack?.dismiss()
-		return delayGetLocatables()
+		delayGetLocatables()
 	}
 
-	private fun delayGetLocatables(delay: Long = 1000): Boolean {
+	private fun delayGetLocatables(delay: Long = 1000) {
 		handler.removeCallbacks(workRunnable)
 		workRunnable = Runnable {
 			getLocatables()
 		}
 		handler.postDelayed(workRunnable, delay)
-		return true
 	}
 
 	private fun observeLocatables() {




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/departures/Departures.kt b/app/src/main/java/xyz/apiote/bimba/czwek/departures/Departures.kt
index 2648a7addef2f05aa7dae3c5d1a2131b019a1b27..7b334c3d4efecdfa7b18e8d98c1de5bb9d8e1e6c 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/departures/Departures.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/departures/Departures.kt
@@ -135,8 +135,8 @@ 	}
 
 	override fun getItemCount(): Int = departures.size
 
-	fun get(ID: String): Departure? {
-		val position = departuresPositions[ID]
+	fun get(id: String): Departure? {
+		val position = departuresPositions[id]
 		return if (position == null) {
 			null
 		} else {




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/repo/FeedInfo.kt b/app/src/main/java/xyz/apiote/bimba/czwek/repo/FeedInfo.kt
index 04d7f546e88a6465b0fc535cd15d304d42b478d6..3d645e655861a1f67f3694aa12da1ab90eb1d675 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/repo/FeedInfo.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/repo/FeedInfo.kt
@@ -163,7 +163,3 @@ 		) validTill else other.validTill,
 		this.cached && other.cached
 	)
 }
-
-fun migrateFeeds() {
-
-}
\ No newline at end of file




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/repo/LineAbstract.kt b/app/src/main/java/xyz/apiote/bimba/czwek/repo/LineAbstract.kt
index 527ba30671fdb54696be7f43caf2c228762faf68..d5ecc9bbbba7111c55e31d0015ce15f696e17274 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/repo/LineAbstract.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/repo/LineAbstract.kt
@@ -17,6 +17,7 @@ import xyz.apiote.bimba.czwek.R
 import xyz.apiote.bimba.czwek.dpToPixel
 import xyz.apiote.bimba.czwek.dpToPixelI
 import kotlin.math.abs
+import kotlin.math.cbrt
 import kotlin.math.pow
 
 interface LineAbstract {
@@ -88,10 +89,10 @@ 		val radiusToPow = (radius * radius * radius).toDouble()
 		val path = Path()
 		path.moveTo(-radius.toFloat(), 0f)
 		for (x in -radius..radius) path.lineTo(
-			x.toFloat(), Math.cbrt(radiusToPow - abs(x * x * x)).toFloat()
+			x.toFloat(), cbrt(radiusToPow - abs(x * x * x)).toFloat()
 		)
 		for (x in radius downTo -radius) path.lineTo(
-			x.toFloat(), -Math.cbrt(radiusToPow - abs(x * x * x)).toFloat()
+			x.toFloat(), -cbrt(radiusToPow - abs(x * x * x)).toFloat()
 		)
 		path.close()
 		val matrix = Matrix()




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/repo/OfflineRepository.kt b/app/src/main/java/xyz/apiote/bimba/czwek/repo/OfflineRepository.kt
index 370e3fdc6c72ba886737c4440c0b88e18d4c77cc..6f9849cfc8b086ec4809afba0ad14e6218b4f58f 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/repo/OfflineRepository.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/repo/OfflineRepository.kt
@@ -6,6 +6,8 @@ package xyz.apiote.bimba.czwek.repo
 
 import android.content.Context
 import androidx.core.content.edit
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
 import xyz.apiote.bimba.czwek.api.Server
 import xyz.apiote.fruchtfleisch.Reader
 import xyz.apiote.fruchtfleisch.Writer
@@ -37,7 +39,9 @@ 		context: Context,
 		server: Server
 	): Map<String, FeedInfo>? {
 		val file = File(
-			context.filesDir, URLEncoder.encode(server.apiPath, "utf-8")
+			context.filesDir, withContext(Dispatchers.IO) {
+				URLEncoder.encode(server.apiPath, "utf-8")
+			}
 		)
 		if (!file.exists()) {
 			return emptyMap()




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/repo/OnlineRepository.kt b/app/src/main/java/xyz/apiote/bimba/czwek/repo/OnlineRepository.kt
index 41719310917f2dbc331d147cd03fa30d5676bd61..8432f937e713904e92c77440c6d634607f8167fe 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/repo/OnlineRepository.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/repo/OnlineRepository.kt
@@ -45,8 +45,6 @@ import xyz.apiote.bimba.czwek.api.responses.QueryablesResponseV1
 import xyz.apiote.bimba.czwek.api.responses.QueryablesResponseV2
 import xyz.apiote.bimba.czwek.api.responses.QueryablesResponseV3
 import xyz.apiote.bimba.czwek.api.responses.QueryablesResponseV4
-import java.io.File
-import java.net.URLEncoder
 import java.time.LocalDate
 
 // todo [3.2] in Repository check if responses are BARE or HTML




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/repo/Stop.kt b/app/src/main/java/xyz/apiote/bimba/czwek/repo/Stop.kt
index 3c79dffea5278fa9f9090bd4cbd18c8f098a3a79..0c6909006f92fe6a5bc7add619c14d4b7cc7a0a4 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/repo/Stop.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/repo/Stop.kt
@@ -5,20 +5,10 @@
 package xyz.apiote.bimba.czwek.repo
 
 import android.content.Context
-import android.content.res.Configuration
-import android.content.res.TypedArray
-import android.graphics.Bitmap
-import android.graphics.drawable.BitmapDrawable
 import android.graphics.drawable.Drawable
-import androidx.appcompat.content.res.AppCompatResources
-import androidx.core.graphics.ColorUtils
-import androidx.core.graphics.drawable.toBitmap
 import xyz.apiote.bimba.czwek.R
 import xyz.apiote.bimba.czwek.api.StopV1
 import xyz.apiote.bimba.czwek.api.StopV2
-import xyz.apiote.bimba.czwek.dpToPixelI
-import java.util.zip.Adler32
-
 
 data class Stop(
 	val code: String,
@@ -28,32 +18,10 @@ 	val zone: String,
 	val feedID: String?,
 	val position: Position,
 	val changeOptions: List<ChangeOption>
-) : Queryable, Locatable {
+) : Queryable, Locatable, StopAbstract {
 
 	override fun icon(context: Context, scale: Float): Drawable {
-		val md = Adler32().let {
-			it.update(nodeName.toByteArray())
-			it.value
-		}
-		val h = md % 359f
-		val s = 1.0f
-		val a: TypedArray = context.theme.obtainStyledAttributes(
-			R.style.Theme_Bimba, intArrayOf(R.attr.randomColourLightness)
-		)
-		val l = a.getFloat(0, when (context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
-			Configuration.UI_MODE_NIGHT_YES -> 1f
-			Configuration.UI_MODE_NIGHT_NO -> 0f
-			Configuration.UI_MODE_NIGHT_UNDEFINED -> 0f
-			else -> 0f
-		})
-		a.recycle()
-		val bg = AppCompatResources.getDrawable(context, R.drawable.stop)!!.mutate().apply {
-			setTint(ColorUtils.HSLToColor(floatArrayOf(h, s, l)))
-		}
-		return BitmapDrawable(
-			context.resources,
-			bg.toBitmap(dpToPixelI(24f / scale), dpToPixelI(24f / scale), Bitmap.Config.ARGB_8888)
-		)
+		return super.icon(context, nodeName, scale)
 	}
 
 	override fun id(): String = code




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/repo/StopAbstract.kt b/app/src/main/java/xyz/apiote/bimba/czwek/repo/StopAbstract.kt
new file mode 100644
index 0000000000000000000000000000000000000000..5a50f42e09d60e52d10100d188243eaa51cae669
--- /dev/null
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/repo/StopAbstract.kt
@@ -0,0 +1,46 @@
+// SPDX-FileCopyrightText: Adam Evyčędo
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package xyz.apiote.bimba.czwek.repo
+
+import android.content.Context
+import android.content.res.Configuration
+import android.content.res.TypedArray
+import android.graphics.Bitmap
+import android.graphics.drawable.BitmapDrawable
+import android.graphics.drawable.Drawable
+import androidx.appcompat.content.res.AppCompatResources
+import androidx.core.graphics.ColorUtils
+import androidx.core.graphics.drawable.toBitmap
+import xyz.apiote.bimba.czwek.R
+import xyz.apiote.bimba.czwek.dpToPixelI
+import java.util.zip.Adler32
+
+interface StopAbstract{
+	fun icon(context: Context, nodeName: String, scale: Float): Drawable {
+		val md = Adler32().let {
+			it.update(nodeName.toByteArray())
+			it.value
+		}
+		val h = md % 359f
+		val s = 1.0f
+		val a: TypedArray = context.theme.obtainStyledAttributes(
+			R.style.Theme_Bimba, intArrayOf(R.attr.randomColourLightness)
+		)
+		val l = a.getFloat(0, when (context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
+			Configuration.UI_MODE_NIGHT_YES -> 1f
+			Configuration.UI_MODE_NIGHT_NO -> 0f
+			Configuration.UI_MODE_NIGHT_UNDEFINED -> 0f
+			else -> 0f
+		})
+		a.recycle()
+		val bg = AppCompatResources.getDrawable(context, R.drawable.stop)!!.mutate().apply {
+			setTint(ColorUtils.HSLToColor(floatArrayOf(h, s, l)))
+		}
+		return BitmapDrawable(
+			context.resources,
+			bg.toBitmap(dpToPixelI(24f / scale), dpToPixelI(24f / scale), Bitmap.Config.ARGB_8888)
+		)
+	}
+}
\ No newline at end of file




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/repo/StopStub.kt b/app/src/main/java/xyz/apiote/bimba/czwek/repo/StopStub.kt
index b3536dc60d5d3c69af3f9dab98b919110aa0856e..361b093c3f8dd836f328f608dda785f7db11d186 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/repo/StopStub.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/repo/StopStub.kt
@@ -5,24 +5,14 @@
 package xyz.apiote.bimba.czwek.repo
 
 import android.content.Context
-import android.content.res.Configuration
-import android.content.res.TypedArray
-import android.graphics.Bitmap
-import android.graphics.drawable.BitmapDrawable
 import android.graphics.drawable.Drawable
 import android.os.Parcelable
-import androidx.appcompat.content.res.AppCompatResources
-import androidx.core.graphics.ColorUtils
-import androidx.core.graphics.drawable.toBitmap
 import kotlinx.parcelize.Parcelize
-import xyz.apiote.bimba.czwek.R
 import xyz.apiote.bimba.czwek.api.StopStub
-import xyz.apiote.bimba.czwek.dpToPixelI
-import java.util.zip.Adler32
 
 @Parcelize
 data class StopStub(val name: String, val nodeName: String, val code: String, val zone: String, val onDemand: Boolean) :
-	Parcelable {
+	Parcelable, StopAbstract {
 	constructor(stopStub: StopStub) : this(
 		stopStub.name,
 		stopStub.nodeName,
@@ -31,29 +21,6 @@ 		stopStub.zone,
 		stopStub.onDemand
 	)
 	fun icon(context: Context, scale: Float = 1f): Drawable {
-		// TODO same is in Stop
-		val md = Adler32().let {
-			it.update(nodeName.toByteArray())
-			it.value
-		}
-		val h = md % 359f
-		val s = 1.0f
-		val a: TypedArray = context.theme.obtainStyledAttributes(
-			R.style.Theme_Bimba, intArrayOf(R.attr.randomColourLightness)
-		)
-		val l = a.getFloat(0, when (context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
-			Configuration.UI_MODE_NIGHT_YES -> 1f
-			Configuration.UI_MODE_NIGHT_NO -> 0f
-			Configuration.UI_MODE_NIGHT_UNDEFINED -> 0f
-			else -> 0f
-		})
-		a.recycle()
-		val bg = AppCompatResources.getDrawable(context, R.drawable.stop)!!.mutate().apply {
-			setTint(ColorUtils.HSLToColor(floatArrayOf(h, s, l)))
-		}
-		return BitmapDrawable(
-			context.resources,
-			bg.toBitmap(dpToPixelI(24f / scale), dpToPixelI(24f / scale), Bitmap.Config.ARGB_8888)
-		)
+		return super.icon(context, nodeName, scale)
 	}
 }
\ No newline at end of file




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/search/ResultsActivity.kt b/app/src/main/java/xyz/apiote/bimba/czwek/search/ResultsActivity.kt
index 6243e61e18928bc6551514c3f3195c511222738c..95054348f2de4faf524e27245737e784f1222b45 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/search/ResultsActivity.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/search/ResultsActivity.kt
@@ -8,7 +8,6 @@ import android.content.Context
 import android.location.Location
 import android.location.LocationListener
 import android.location.LocationManager
-import android.net.ConnectivityManager
 import android.os.Build
 import android.os.Bundle
 import android.os.Handler




diff --git a/app/src/main/java/xyz/apiote/bimba/czwek/settings/feeds/FeedInfos.kt b/app/src/main/java/xyz/apiote/bimba/czwek/settings/feeds/FeedInfos.kt
index eef661fae7852973c68f30dfc11fe1cc92bc957a..411804efd7acd137d2fb6b463d7794c3cf1395a5 100644
--- a/app/src/main/java/xyz/apiote/bimba/czwek/settings/feeds/FeedInfos.kt
+++ b/app/src/main/java/xyz/apiote/bimba/czwek/settings/feeds/FeedInfos.kt
@@ -4,7 +4,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later
 
 package xyz.apiote.bimba.czwek.settings.feeds
 
-import android.content.Context
 import android.content.DialogInterface
 import android.os.Bundle
 import android.view.LayoutInflater




diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 9d6059f8751cc4e6a210a4459c94807001d67074..cc6338a0fc5b2a418f0f9b14b74b587cd15f9eee 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -110,7 +110,7 @@ 	link al codice sorgente
 	<string name="mastodon_button_description">link a Mastodon</string>
 	<string name="use_online_feed">Usa online</string>
 	<string name="information_may_be_outdated">Le informazioni possono essere obsolete</string>
-	<string name="current_timetable_validity">Orario attuale valido: %1$s fino alla %1$s</string>
+	<string name="current_timetable_validity">Orario attuale valido: %1$s fino alla %2$s</string>
 	<string name="error_406">La versione dell’app non è compatibile con il server</string>
 	<string name="filter_localities">filtra le località</string>
 	<string name="error_41">Questa località non è supportata dal server</string>




diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 4fd625132f229f0283aad0a849f11e5d6aecb19f..f8cb6efee9ec00b3f6337eb02a65a946d5bbdba4 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -111,7 +111,7 @@ 	link do kodu źródłowego
 	<string name="mastodon_button_description">link do Mastodona</string>
 	<string name="use_online_feed">Używaj online</string>
 	<string name="information_may_be_outdated">Informacje mogą być nieaktualne</string>
-	<string name="current_timetable_validity">Aktualny rozkła ważny: %1$s do %2$s</string>
+	<string name="current_timetable_validity">Aktualny rozkład ważny: %1$s do %2$s</string>
 	<string name="error_406">Wersja aplikacji jest niekompatybilna z serwerem</string>
 	<string name="filter_localities">filtruj lokalizacje</string>
 	<string name="error_41">Ta lokalizacja nie jest obsługiwana przez serwer</string>