Page Menu
Home
GitPull.it
Search
Configure Global Search
Log In
Files
F12404153
D186.1775642446.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
18 KB
Referenced Files
None
Subscribers
None
D186.1775642446.diff
View Options
diff --git a/app/build.gradle b/app/build.gradle
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -4,14 +4,14 @@
android {
- compileSdk 34
+ compileSdk 35
namespace "it.reyboz.bustorino"
defaultConfig {
applicationId "it.reyboz.bustorino"
minSdkVersion 21
- targetSdkVersion 34
- buildToolsVersion = '34.0.0'
+ targetSdkVersion 35
+ buildToolsVersion = '35.0.1'
versionCode 62
versionName "2.3.1"
vectorDrawables.useSupportLibrary = true
@@ -65,6 +65,10 @@
androidResources {
generateLocaleConfig true
}
+
+ buildFeatures{
+ buildConfig = true
+ }
}
dependencies {
@@ -114,8 +118,7 @@
implementation 'com.google.protobuf:protobuf-java:3.19.6'
// mqtt library
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'
- implementation 'com.github.fabmazz:paho.mqtt.android:v1.0.0'
-
+ implementation 'com.github.hannesa2:paho.mqtt.android:4.4'
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
// LiveData
diff --git a/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java b/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
--- a/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
+++ b/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
@@ -24,6 +24,7 @@
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
@@ -39,6 +40,7 @@
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.view.GravityCompat;
+import androidx.core.view.ViewCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
@@ -84,6 +86,10 @@
super.onCreate(savedInstanceState);
Log.d(DEBUG_TAG, "onCreate, savedInstanceState is: "+savedInstanceState);
setContentView(R.layout.activity_principal);
+ /*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ getWindow().setNavigationBarContrastEnforced(false);
+ }
+ */
boolean showingArrivalsFromIntent = false;
Toolbar mToolbar = findViewById(R.id.default_toolbar);
@@ -94,7 +100,6 @@
mToolbar.setOnMenuItemClickListener(new ToolbarItemClickListener(this));
-
mDrawer = findViewById(R.id.drawer_layout);
drawerToggle = setupDrawerToggle(mToolbar);
diff --git a/app/src/main/java/it/reyboz/bustorino/ActivitySettings.java b/app/src/main/java/it/reyboz/bustorino/ActivitySettings.java
--- a/app/src/main/java/it/reyboz/bustorino/ActivitySettings.java
+++ b/app/src/main/java/it/reyboz/bustorino/ActivitySettings.java
@@ -1,6 +1,7 @@
package it.reyboz.bustorino;
import android.os.Bundle;
+import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.appcompat.app.ActionBar;
@@ -14,10 +15,11 @@
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
-
+ Toolbar mToolbar = findViewById(R.id.default_toolbar);
+ setSupportActionBar(mToolbar);
ActionBar ab = getSupportActionBar();
if(ab!=null) {
- ab.setIcon(R.drawable.ic_launcher);
+ //ab.setIcon(R.drawable.ic_launcher);
ab.setDisplayHomeAsUpEnabled(true);
} else {
Log.e("SETTINGS_ACTIV","ACTION BAR IS NULL");
diff --git a/app/src/main/java/it/reyboz/bustorino/backend/mato/MQTTMatoClient.kt b/app/src/main/java/it/reyboz/bustorino/backend/mato/MQTTMatoClient.kt
--- a/app/src/main/java/it/reyboz/bustorino/backend/mato/MQTTMatoClient.kt
+++ b/app/src/main/java/it/reyboz/bustorino/backend/mato/MQTTMatoClient.kt
@@ -143,23 +143,27 @@
fun stopMatoRequests(responder: MQTTMatoListener){
var removed = false
- for ((line,v)in respondersMap.entries){
+ for ((linekey,responderList)in respondersMap.entries){
var done = false
- for (el in v){
+ for (el in responderList){
if (el.get()==null){
- v.remove(el)
+ responderList.remove(el)
} else if(el.get() == responder){
- v.remove(el)
+ responderList.remove(el)
done = true
}
if (done)
break
}
- if(done) Log.d(DEBUG_TAG, "Removed one listener for line $line, listeners: $v")
+ if(done) Log.d(DEBUG_TAG, "Removed one listener for line $linekey, listeners: $responderList")
//if (done) break
- if (v.isEmpty()){
+ if (responderList.isEmpty()){
//actually unsubscribe
- client?.unsubscribe( mapTopic(line))
+ try {
+ client?.unsubscribe(mapTopic(linekey))
+ } catch (e: Exception){
+ Log.e(DEBUG_TAG, "Tried unsubscribing but there was an error in the client library:\n$e")
+ }
}
removed = done || removed
}
diff --git a/app/src/main/java/it/reyboz/bustorino/data/MatoPatternsDownloadWorker.kt b/app/src/main/java/it/reyboz/bustorino/data/MatoPatternsDownloadWorker.kt
--- a/app/src/main/java/it/reyboz/bustorino/data/MatoPatternsDownloadWorker.kt
+++ b/app/src/main/java/it/reyboz/bustorino/data/MatoPatternsDownloadWorker.kt
@@ -86,7 +86,7 @@
Log.d(DEBUG_TAG, "Request to download and insert patterns for ${routesIds.size} routes, proceed: $runNewWork, workstate: $addDat")
if(runNewWork){
- val routeIdsArray = routesIds.toTypedArray()
+ val routeIdsArray: Array<String?> = routesIds.toTypedArray()
val dataBuilder = Data.Builder().putStringArray(ROUTES_KEYS,routeIdsArray)
val requ = OneTimeWorkRequest.Builder(MatoPatternsDownloadWorker::class.java)
diff --git a/app/src/main/java/it/reyboz/bustorino/data/MatoTripsDownloadWorker.kt b/app/src/main/java/it/reyboz/bustorino/data/MatoTripsDownloadWorker.kt
--- a/app/src/main/java/it/reyboz/bustorino/data/MatoTripsDownloadWorker.kt
+++ b/app/src/main/java/it/reyboz/bustorino/data/MatoTripsDownloadWorker.kt
@@ -125,7 +125,7 @@
null else info[0].state
Log.d(debugTag, "Request to download and insert ${trips.size} trips, proceed: $runNewWork, workstate: $addDat")
if(runNewWork) {
- val tripsArr = trips.toTypedArray()
+ val tripsArr: Array<String?> = trips.toTypedArray()
val dataBuilder = Data.Builder().putStringArray(TRIPS_KEYS, tripsArr)
//build()
val requ = OneTimeWorkRequest.Builder(MatoTripsDownloadWorker::class.java)
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/GeneralMapLibreFragment.kt b/app/src/main/java/it/reyboz/bustorino/fragments/GeneralMapLibreFragment.kt
--- a/app/src/main/java/it/reyboz/bustorino/fragments/GeneralMapLibreFragment.kt
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/GeneralMapLibreFragment.kt
@@ -76,6 +76,7 @@
}
}
+ @Deprecated("Deprecated in Java")
override fun onLowMemory() {
super.onLowMemory()
mapView.onLowMemory()
@@ -112,12 +113,14 @@
val bearing = bundle.getDouble("map_bearing", nullDouble)
val tilt = bundle.getDouble("map_tilt", nullDouble)
if(lonCenter>=0 &&latCenter>=0) map?.let {
- val newPos = CameraPosition.Builder().target(LatLng(latCenter,lonCenter))
+ val center = LatLng(latCenter, lonCenter)
+ val newPos = CameraPosition.Builder().target(center)
if(zoom>0) newPos.zoom(zoom)
if(bearing!=nullDouble) newPos.bearing(bearing)
if(tilt != nullDouble) newPos.tilt(tilt)
it.cameraPosition=newPos.build()
+ Log.d(DEBUG_TAG, "Restored map state from Bundle, center: $center, zoom: $zoom, bearing $bearing, tilt $tilt")
}
val mStop = bundle.getBundle("shown_stop")?.let {
Stop.fromBundle(it)
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/MapLibreFragment.kt b/app/src/main/java/it/reyboz/bustorino/fragments/MapLibreFragment.kt
--- a/app/src/main/java/it/reyboz/bustorino/fragments/MapLibreFragment.kt
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/MapLibreFragment.kt
@@ -210,7 +210,7 @@
val restoreBundle = stopsViewModel.savedState
if(restoreBundle!=null){
mapView.onCreate(restoreBundle)
- } else mapView.onCreate(savedInstanceState)
+ } //else mapView.onCreate(savedInstanceState)
mapView.getMapAsync(this) //{ //map ->
//map.setStyle("https://demotiles.maplibre.org/style.json") }
diff --git a/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt b/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt
--- a/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt
+++ b/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt
@@ -178,6 +178,7 @@
}
}
+ @Deprecated("Deprecated in Java")
override fun onStatusChanged(provider: String, status: Int, extras: Bundle) {
//IF ANOTHER LOCATION SOURCE IS READY, USE IT
//OTHERWISE, SIGNAL THAT WE HAVE NO LOCATION
diff --git a/app/src/main/java/it/reyboz/bustorino/middleware/GeneralActivity.java b/app/src/main/java/it/reyboz/bustorino/middleware/GeneralActivity.java
--- a/app/src/main/java/it/reyboz/bustorino/middleware/GeneralActivity.java
+++ b/app/src/main/java/it/reyboz/bustorino/middleware/GeneralActivity.java
@@ -22,10 +22,8 @@
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
-import android.content.res.Resources;
import android.graphics.Rect;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
+import android.os.Build;
import com.google.android.material.snackbar.Snackbar;
import androidx.annotation.Nullable;
@@ -169,4 +167,25 @@
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
+
+ protected void setSystemBarAppearance(boolean isSystemInDarkTheme) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ if (isSystemInDarkTheme) {
+ if (getWindow() != null && getWindow().getInsetsController() != null) {
+ getWindow().getInsetsController().setSystemBarsAppearance(
+ 0,
+ android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
+ );
+ }
+ } else {
+ if (getWindow() != null && getWindow().getInsetsController() != null) {
+ getWindow().getInsetsController().setSystemBarsAppearance(
+ android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS,
+ android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
+ );
+ }
+ }
+ }
+ }
+
}
diff --git a/app/src/main/java/it/reyboz/bustorino/util/ViewUtils.kt b/app/src/main/java/it/reyboz/bustorino/util/ViewUtils.kt
--- a/app/src/main/java/it/reyboz/bustorino/util/ViewUtils.kt
+++ b/app/src/main/java/it/reyboz/bustorino/util/ViewUtils.kt
@@ -13,18 +13,41 @@
import android.view.animation.Animation
import android.view.animation.Transformation
import android.widget.Toast
+import androidx.core.view.OnApplyWindowInsetsListener
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
import androidx.core.widget.NestedScrollView
import it.reyboz.bustorino.R
import it.reyboz.bustorino.backend.Stop
-import it.reyboz.bustorino.fragments.LinesDetailFragment
-import it.reyboz.bustorino.fragments.LinesDetailFragment.Companion
import java.io.IOException
class ViewUtils {
companion object{
+
const val DEBUG_TAG="BusTO:ViewUtils"
+
+ /**
+ * This should help in setting the padding of the last component down
+ */
+ @JvmStatic
+ fun doOnApplyWindowInsetsForNavigationBars(view: View, listener: OnNavigationBarInsetsAppliedListener) {
+ ViewCompat.setOnApplyWindowInsetsListener(
+ view,
+ OnApplyWindowInsetsListener { v: View?, insets: WindowInsetsCompat? ->
+ val navigationBarsInsetsBottom = insets!!.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom
+ listener.onInsetsApplied(v, navigationBarsInsetsBottom)
+ insets
+ })
+ view.requestApplyInsets()
+ }
+
+
+ interface OnNavigationBarInsetsAppliedListener {
+ fun onInsetsApplied(view: View?, navigationBarHeight: Int)
+ }
+
fun isViewFullyVisibleInScroll(view: View, scrollView: NestedScrollView): Boolean {
val scrollBounds = Rect()
scrollView.getDrawingRect(scrollBounds)
diff --git a/app/src/main/res/layout/activity_principal.xml b/app/src/main/res/layout/activity_principal.xml
--- a/app/src/main/res/layout/activity_principal.xml
+++ b/app/src/main/res/layout/activity_principal.xml
@@ -4,7 +4,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_height="match_parent">
- <LinearLayout
+ <RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
@@ -13,16 +13,24 @@
<include
layout="@layout/default_toobar"
android:layout_width="match_parent"
- android:layout_height="wrap_content" />
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:layout_alignParentStart="true"
+ android:layout_alignParentEnd="true"/>
<!-- The main content view where fragments are loaded -->
<FrameLayout
android:id="@+id/mainActContentFrame"
+ android:layout_below="@id/default_toolbar"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentStart="true"
+ android:layout_alignParentEnd="true"
+ />
- </LinearLayout>
+ </RelativeLayout>
<com.google.android.material.navigation.NavigationView
@@ -39,4 +47,6 @@
android:fitsSystemWindows="true"
app:menu="@menu/drawer_main" />
+
+
</androidx.drawerlayout.widget.DrawerLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -14,8 +14,19 @@
android:layout_gravity="start">
</fragment>
-->
+
+ <include
+ layout="@layout/default_toobar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:layout_alignParentStart="true"
+ android:layout_alignParentEnd="true"/>
<FrameLayout
+ android:layout_below="@id/default_toolbar"
+ android:layout_alignParentStart="true"
+ android:layout_alignParentEnd="true"
android:id="@+id/setting_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/default_toobar.xml b/app/src/main/res/layout/default_toobar.xml
--- a/app/src/main/res/layout/default_toobar.xml
+++ b/app/src/main/res/layout/default_toobar.xml
@@ -3,15 +3,13 @@
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/default_toolbar"
+ android:layout_height="?attr/actionBarSize"
+ android:id="@+id/default_toolbar"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
- android:minHeight="?attr/actionBarSize"
-
android:elevation="4dp"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</androidx.appcompat.widget.Toolbar>
\ No newline at end of file
diff --git a/app/src/main/res/values-v35/styles.xml b/app/src/main/res/values-v35/styles.xml
new file mode 100644
--- /dev/null
+++ b/app/src/main/res/values-v35/styles.xml
@@ -0,0 +1,10 @@
+<resources>
+ <style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
+ <!--
+ This forces the app to not use Edge-to-Edge. However, on API 36 it will be ignored!
+ -->
+ <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
+
+ </style>
+
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -290,8 +290,7 @@
<item>@string/positions_source_mato_descr</item>
<item>@string/positions_source_gtfsrt_descr</item>
</array>
- <string name="positions_source_mato_descr">MaTO (updated more frequently, might be offline)</string>
- <string name="positions_source_gtfsrt_descr">GTFS RT (more stable, less frequently updated)</string>
+
<string name="map_style_pref_title">Style of the map</string>
<string name="map_style_versatiles">Versatiles (vector)</string>
<string name="map_style_legacy_raster">OSM legacy (raster, lighter)</string>
diff --git a/build.gradle b/build.gradle
--- a/build.gradle
+++ b/build.gradle
@@ -9,12 +9,13 @@
}
+ //TODO: Migrate tfrom kapt to KSP
//kotlin
- ext.kotlin_version = '1.9.21'
- ext.coroutines_version = "1.8.0"
+ ext.kotlin_version = '2.1.10'
+ ext.coroutines_version = "1.10.2"
dependencies {
- classpath 'com.android.tools.build:gradle:8.5.2'
+ classpath 'com.android.tools.build:gradle:8.6.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
@@ -27,7 +28,7 @@
//libraries versions
fragment_version = "1.6.1"
activity_version = "1.7.2"
- appcompat_version = "1.6.1"
+ appcompat_version = "1.7.0"
preference_version = "1.2.1"
work_version = "2.9.0"
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Apr 8, 12:00 (22 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1829197
Default Alt Text
D186.1775642446.diff (18 KB)
Attached To
Mode
D186: Update libraries (MQTT, Kotlin), raise SDK to android 15
Attached
Detach File
Event Timeline
Log In to Comment