Page Menu
Home
GitPull.it
Search
Configure Global Search
Log In
Files
F12343093
D132.1775577753.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
12 KB
Referenced Files
None
Subscribers
None
D132.1775577753.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D132: Show update snackbar on Favorites and Map too
Attached
Detach File
Event Timeline
Log In to Comment