Page MenuHomeGitPull.it

D186.1775642446.diff
No OneTemporary

Size
18 KB
Referenced Files
None
Subscribers
None

D186.1775642446.diff

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

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)

Event Timeline