Page MenuHomeGitPull.it

D132.1775577753.diff
No OneTemporary

Size
12 KB
Referenced Files
None
Subscribers
None

D132.1775577753.diff

diff --git a/app/build.gradle b/app/build.gradle
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -27,6 +27,9 @@
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
+ testOptions {
+ unitTests.returnDefaultValues = true
+ }
sourceSets {
androidTest.assets.srcDirs += files("$projectDir/assets/schemas/".toString())
@@ -132,3 +135,4 @@
androidTestImplementation "androidx.room:room-testing:$room_version"
}
+
diff --git a/app/src/main/java/it/reyboz/bustorino/data/FavoritesLiveData.java b/app/src/main/java/it/reyboz/bustorino/data/FavoritesLiveData.java
--- a/app/src/main/java/it/reyboz/bustorino/data/FavoritesLiveData.java
+++ b/app/src/main/java/it/reyboz/bustorino/data/FavoritesLiveData.java
@@ -104,6 +104,10 @@
}
+ public void forceReload(){
+ loadData(true);
+ }
+
@Override
protected void onActive() {
//Log.d(TAG, "onActive()");
diff --git a/app/src/main/java/it/reyboz/bustorino/data/FavoritesViewModel.java b/app/src/main/java/it/reyboz/bustorino/data/FavoritesViewModel.java
--- a/app/src/main/java/it/reyboz/bustorino/data/FavoritesViewModel.java
+++ b/app/src/main/java/it/reyboz/bustorino/data/FavoritesViewModel.java
@@ -14,11 +14,10 @@
public class FavoritesViewModel extends AndroidViewModel {
FavoritesLiveData favoritesLiveData;
- final Context appContext;
public FavoritesViewModel(@NonNull Application application) {
super(application);
- appContext = application.getApplicationContext();
+ //appContext = application.getApplicationContext();
}
@Override
@@ -27,9 +26,9 @@
super.onCleared();
}
- public LiveData<List<Stop>> getFavorites(){
+ public FavoritesLiveData getFavorites(){
if (favoritesLiveData==null){
- favoritesLiveData= new FavoritesLiveData(appContext, true);
+ favoritesLiveData= new FavoritesLiveData(getApplication(), true);
}
return favoritesLiveData;
}
diff --git a/app/src/main/java/it/reyboz/bustorino/data/NextGenDB.java b/app/src/main/java/it/reyboz/bustorino/data/NextGenDB.java
--- a/app/src/main/java/it/reyboz/bustorino/data/NextGenDB.java
+++ b/app/src/main/java/it/reyboz/bustorino/data/NextGenDB.java
@@ -165,6 +165,7 @@
/**
* Query some bus stops inside a map view
+ * @return stoplist, if empty it means that an error occurred
*
* You can obtain the coordinates from OSMDroid using something like this:
* BoundingBoxE6 bb = mMapView.getBoundingBox();
@@ -198,7 +199,12 @@
Log.e(DEBUG_TAG, "SQLiteException occurred");
e.printStackTrace();
return stops;
- }finally {
+ }catch (Exception e){
+ Log.e(DEBUG_TAG, "Exception occurred when getting stops");
+ e.printStackTrace();
+ return stops;
+ }
+ finally {
db.close();
}
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/FavoritesFragment.java b/app/src/main/java/it/reyboz/bustorino/fragments/FavoritesFragment.java
--- a/app/src/main/java/it/reyboz/bustorino/fragments/FavoritesFragment.java
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/FavoritesFragment.java
@@ -35,6 +35,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -43,10 +44,12 @@
import java.util.ArrayList;
import java.util.List;
+import androidx.work.WorkInfo;
import it.reyboz.bustorino.*;
import it.reyboz.bustorino.adapters.StopAdapterListener;
import it.reyboz.bustorino.adapters.StopRecyclerAdapter;
import it.reyboz.bustorino.backend.Stop;
+import it.reyboz.bustorino.data.DatabaseUpdate;
import it.reyboz.bustorino.data.FavoritesViewModel;
import it.reyboz.bustorino.middleware.AsyncStopFavoriteAction;
@@ -57,10 +60,16 @@
private TextView favoriteTipTextView;
private ImageView angeryBusImageView;
+ private boolean dbUpdateRunning = false;
+ private FavoritesViewModel model;
+
+
@Nullable
private CommonFragmentListener mListener;
public static final String FRAGMENT_TAG = "BusTOFavFragment";
+ private final static String DEBUG_TAG = FRAGMENT_TAG;
+
private final StopAdapterListener adapterListener = new StopAdapterListener() {
@Override
@@ -130,9 +139,26 @@
//register for the context menu
registerForContextMenu(favoriteRecyclerView);
- FavoritesViewModel model = new ViewModelProvider(this).get(FavoritesViewModel.class);
+
model.getFavorites().observe(getViewLifecycleOwner(), this::showStops);
+ // watch the DB update
+ DatabaseUpdate.watchUpdateWorkStatus(getContext(), this, workInfos -> {
+ if(workInfos.isEmpty()) return;
+
+ WorkInfo wi = workInfos.get(0);
+ if(wi.getState() == WorkInfo.State.RUNNING){
+ dbUpdateRunning = true;
+ } else {
+ //force reload if it was previously running
+ if(model!=null && dbUpdateRunning) {
+ Log.d(DEBUG_TAG,"DB Finished updating, reload favorites");
+ model.getFavorites().forceReload();
+ }
+ dbUpdateRunning = false;
+ }
+ });
+
showStops(new ArrayList<>());
return root;
}
@@ -145,6 +171,7 @@
throw new RuntimeException(context
+ " must implement CommonFragmentListener");
}
+ model = new ViewModelProvider(this).get(FavoritesViewModel.class);
}
@@ -222,7 +249,7 @@
@Nullable
@Override
public View getBaseViewForSnackBar() {
- return null;
+ return favoriteRecyclerView;
}
void showStops(List<Stop> busStops){
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/MapFragment.java b/app/src/main/java/it/reyboz/bustorino/fragments/MapFragment.java
--- a/app/src/main/java/it/reyboz/bustorino/fragments/MapFragment.java
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/MapFragment.java
@@ -26,7 +26,6 @@
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationManager;
-import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -39,6 +38,7 @@
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.content.res.ResourcesCompat;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.PreferenceManager;
@@ -68,13 +68,11 @@
import org.osmdroid.views.overlay.infowindow.InfoWindow;
import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider;
-import java.lang.ref.WeakReference;
import java.util.*;
import kotlin.Pair;
import it.reyboz.bustorino.R;
import it.reyboz.bustorino.backend.Stop;
-import it.reyboz.bustorino.data.NextGenDB;
import it.reyboz.bustorino.middleware.GeneralActivity;
import it.reyboz.bustorino.util.Permissions;
@@ -114,6 +112,8 @@
private Bundle savedMapState = null;
protected ImageButton btCenterMap;
protected ImageButton btFollowMe;
+
+ protected CoordinatorLayout coordLayout;
private boolean hasMapStartFinished = false;
private boolean followingLocation = false;
@@ -202,7 +202,7 @@
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//use the same layout as the activity
- View root = inflater.inflate(R.layout.activity_map, container, false);
+ View root = inflater.inflate(R.layout.fragment_map, container, false);
if (getContext() == null){
throw new IllegalStateException();
}
@@ -218,6 +218,7 @@
btCenterMap = root.findViewById(R.id.icon_center_map);
btFollowMe = root.findViewById(R.id.icon_follow);
+ coordLayout = root.findViewById(R.id.coord_layout);
//setup FolderOverlay
stopsFolderOverlay = new FolderOverlay();
@@ -786,10 +787,9 @@
}
@Nullable
- @org.jetbrains.annotations.Nullable
@Override
public View getBaseViewForSnackBar() {
- return null;
+ return coordLayout;
}
}
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/NearbyStopsFragment.java b/app/src/main/java/it/reyboz/bustorino/fragments/NearbyStopsFragment.java
--- a/app/src/main/java/it/reyboz/bustorino/fragments/NearbyStopsFragment.java
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/NearbyStopsFragment.java
@@ -212,6 +212,7 @@
return;
}
if(!stops.isEmpty()) {
+ Log.d(DEBUG_TAG, "Showing "+stops.size()+" stops nearby");
currentNearbyStops =stops;
showStopsInViews(currentNearbyStops, lastPosition);
}
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/ScreenBaseFragment.java b/app/src/main/java/it/reyboz/bustorino/fragments/ScreenBaseFragment.java
--- a/app/src/main/java/it/reyboz/bustorino/fragments/ScreenBaseFragment.java
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/ScreenBaseFragment.java
@@ -48,7 +48,7 @@
/**
* Find the view on which the snackbar should be shown
- * @return
+ * @return a view or null if you don't want the snackbar shown
*/
@Nullable
public abstract View getBaseViewForSnackBar();
diff --git a/app/src/main/res/layout/fragment_main_screen.xml b/app/src/main/res/layout/fragment_main_screen.xml
--- a/app/src/main/res/layout/fragment_main_screen.xml
+++ b/app/src/main/res/layout/fragment_main_screen.xml
@@ -95,6 +95,7 @@
android:layout_marginRight="16dp"
android:layout_marginStart="16dip"
android:indeterminateOnly="true"
+ android:minWidth="10dp"
android:visibility="gone" />
diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/fragment_map.xml
rename from app/src/main/res/layout/activity_map.xml
rename to app/src/main/res/layout/fragment_map.xml
--- a/app/src/main/res/layout/activity_map.xml
+++ b/app/src/main/res/layout/fragment_map.xml
@@ -2,9 +2,20 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
+ <androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/coord_layout"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentEnd="true"
+ android:layout_alignParentRight="true"
+ android:layout_gravity="bottom|end"
+
+ >
<org.osmdroid.views.MapView android:id="@+id/map"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" />
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+ </androidx.coordinatorlayout.widget.CoordinatorLayout>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/app/src/test/java/it/reyboz/bustorino/util/DistanceTest.java b/app/src/test/java/it/reyboz/bustorino/util/DistanceTest.java
--- a/app/src/test/java/it/reyboz/bustorino/util/DistanceTest.java
+++ b/app/src/test/java/it/reyboz/bustorino/util/DistanceTest.java
@@ -1,5 +1,6 @@
package it.reyboz.bustorino.util;
+import android.location.Location;
import it.reyboz.bustorino.backend.utils;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -8,6 +9,14 @@
@Test
public void testDistance(){
double dist = utils.measuredistanceBetween(44.161957,8.302445, 44.645321, 7.656055);
- assertEquals(dist,74333.9, 0.05);
+ assertEquals(dist,74334.0, 0.05);
+ }
+ //@Test
+ //this tests fails as distance compute by Location.distanceBetween is always zero
+ public void testDistanceLocation(){
+ float[] result = new float[1];
+ float[] actualRes = new float[]{74333.9f}; // ,939.0f,0.01f};
+ Location.distanceBetween(44.161957,8.302445, 44.645321, 7.656055, result);
+ assertArrayEquals(actualRes, result, 0.01f);
}
}

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 7, 18:02 (3 h, 51 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1826322
Default Alt Text
D132.1775577753.diff (12 KB)

Event Timeline