Changeset View
Changeset View
Standalone View
Standalone View
src/it/reyboz/bustorino/fragments/NearbyStopsFragment.java
Show All 18 Lines | |||||
import android.content.Context; | import android.content.Context; | ||||
import android.content.SharedPreferences; | import android.content.SharedPreferences; | ||||
import android.database.Cursor; | import android.database.Cursor; | ||||
import android.location.Location; | import android.location.Location; | ||||
import android.net.Uri; | import android.net.Uri; | ||||
import android.os.Bundle; | import android.os.Bundle; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import androidx.fragment.app.Fragment; | import androidx.fragment.app.Fragment; | ||||
import androidx.loader.app.LoaderManager; | import androidx.loader.app.LoaderManager; | ||||
import androidx.loader.content.CursorLoader; | import androidx.loader.content.CursorLoader; | ||||
import androidx.loader.content.Loader; | import androidx.loader.content.Loader; | ||||
import androidx.core.util.Pair; | import androidx.core.util.Pair; | ||||
import androidx.preference.PreferenceManager; | import androidx.preference.PreferenceManager; | ||||
import androidx.appcompat.widget.AppCompatButton; | import androidx.appcompat.widget.AppCompatButton; | ||||
import androidx.recyclerview.widget.GridLayoutManager; | import androidx.recyclerview.widget.GridLayoutManager; | ||||
import androidx.recyclerview.widget.RecyclerView; | import androidx.recyclerview.widget.RecyclerView; | ||||
import android.util.Log; | import android.util.Log; | ||||
import android.view.LayoutInflater; | import android.view.LayoutInflater; | ||||
import android.view.View; | import android.view.View; | ||||
import android.view.ViewGroup; | import android.view.ViewGroup; | ||||
import android.widget.ProgressBar; | import android.widget.ProgressBar; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import com.android.volley.*; | import com.android.volley.*; | ||||
import it.reyboz.bustorino.R; | import it.reyboz.bustorino.R; | ||||
import it.reyboz.bustorino.adapters.ArrivalsStopAdapter; | import it.reyboz.bustorino.adapters.ArrivalsStopAdapter; | ||||
import it.reyboz.bustorino.backend.*; | import it.reyboz.bustorino.backend.*; | ||||
import it.reyboz.bustorino.backend.FiveTAPIFetcher.QueryType; | import it.reyboz.bustorino.backend.FiveTAPIFetcher.QueryType; | ||||
import it.reyboz.bustorino.middleware.AppLocationManager; | import it.reyboz.bustorino.middleware.AppLocationManager; | ||||
import it.reyboz.bustorino.middleware.AppDataProvider; | import it.reyboz.bustorino.data.AppDataProvider; | ||||
import it.reyboz.bustorino.middleware.NextGenDB.Contract.*; | import it.reyboz.bustorino.data.NextGenDB.Contract.*; | ||||
import it.reyboz.bustorino.adapters.SquareStopAdapter; | import it.reyboz.bustorino.adapters.SquareStopAdapter; | ||||
import it.reyboz.bustorino.util.LocationCriteria; | import it.reyboz.bustorino.util.LocationCriteria; | ||||
import it.reyboz.bustorino.util.StopSorterByDistance; | import it.reyboz.bustorino.util.StopSorterByDistance; | ||||
import java.util.*; | import java.util.*; | ||||
public class NearbyStopsFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> { | public class NearbyStopsFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> { | ||||
private FragmentListener mListener; | private FragmentListenerMain mListener; | ||||
private FragmentLocationListener fragmentLocationListener; | private FragmentLocationListener fragmentLocationListener; | ||||
private final String[] PROJECTION = {StopsTable.COL_ID,StopsTable.COL_LAT,StopsTable.COL_LONG, | private final String[] PROJECTION = {StopsTable.COL_ID,StopsTable.COL_LAT,StopsTable.COL_LONG, | ||||
StopsTable.COL_NAME,StopsTable.COL_TYPE,StopsTable.COL_LINES_STOPPING}; | StopsTable.COL_NAME,StopsTable.COL_TYPE,StopsTable.COL_LINES_STOPPING}; | ||||
private final static String DEBUG_TAG = "NearbyStopsFragment"; | private final static String DEBUG_TAG = "NearbyStopsFragment"; | ||||
private final static String FRAGMENT_TYPE_KEY = "FragmentType"; | private final static String FRAGMENT_TYPE_KEY = "FragmentType"; | ||||
public final static int TYPE_STOPS = 19, TYPE_ARRIVALS = 20; | public final static int TYPE_STOPS = 19, TYPE_ARRIVALS = 20; | ||||
private int fragment_type; | private int fragment_type; | ||||
▲ Show 20 Lines • Show All 141 Lines • ▼ Show 20 Lines | private void setFragmentType(int type){ | ||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
public void onAttach(Context context) { | public void onAttach(Context context) { | ||||
super.onAttach(context); | super.onAttach(context); | ||||
if (context instanceof FragmentListener) { | if (context instanceof FragmentListenerMain) { | ||||
mListener = (FragmentListener) context; | mListener = (FragmentListenerMain) context; | ||||
} else { | } else { | ||||
throw new RuntimeException(context.toString() | throw new RuntimeException(context.toString() | ||||
+ " must implement OnFragmentInteractionListener"); | + " must implement OnFragmentInteractionListener"); | ||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
▲ Show 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | public class NearbyStopsFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> { | ||||
@Override | @Override | ||||
public void onDetach() { | public void onDetach() { | ||||
super.onDetach(); | super.onDetach(); | ||||
mListener = null; | mListener = null; | ||||
if(arrivalsManager!=null) arrivalsManager.cancelAllRequests(); | if(arrivalsManager!=null) arrivalsManager.cancelAllRequests(); | ||||
} | } | ||||
@NonNull | |||||
@Override | @Override | ||||
public Loader<Cursor> onCreateLoader(int id, Bundle args) { | public Loader<Cursor> onCreateLoader(int id, Bundle args) { | ||||
//BUILD URI | //BUILD URI | ||||
lastReceivedLocation = args.getParcelable(BUNDLE_LOCATION); | lastReceivedLocation = args.getParcelable(BUNDLE_LOCATION); | ||||
Uri.Builder builder = new Uri.Builder(); | Uri.Builder builder = new Uri.Builder(); | ||||
builder.scheme("content").authority(AppDataProvider.AUTHORITY) | builder.scheme("content").authority(AppDataProvider.AUTHORITY) | ||||
.appendPath("stops").appendPath("location") | .appendPath("stops").appendPath("location") | ||||
.appendPath(String.valueOf(lastReceivedLocation.getLatitude())) | .appendPath(String.valueOf(lastReceivedLocation.getLatitude())) | ||||
.appendPath(String.valueOf(lastReceivedLocation.getLongitude())) | .appendPath(String.valueOf(lastReceivedLocation.getLongitude())) | ||||
.appendPath(String.valueOf(distance)); //distance | .appendPath(String.valueOf(distance)); //distance | ||||
CursorLoader cl = new CursorLoader(getContext(),builder.build(),PROJECTION,null,null,null); | CursorLoader cl = new CursorLoader(getContext(),builder.build(),PROJECTION,null,null,null); | ||||
cl.setUpdateThrottle(2000); | cl.setUpdateThrottle(2000); | ||||
return cl; | return cl; | ||||
} | } | ||||
@Override | @Override | ||||
public void onLoadFinished(Loader<Cursor> loader, Cursor data) { | public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor data) { | ||||
if (0 > MAX_DISTANCE) throw new AssertionError(); | if (0 > MAX_DISTANCE) throw new AssertionError(); | ||||
//Cursor might be null | //Cursor might be null | ||||
if(data==null){ | if(data==null){ | ||||
Log.e(DEBUG_TAG,"Null cursor, something really wrong happened"); | Log.e(DEBUG_TAG,"Null cursor, something really wrong happened"); | ||||
return; | return; | ||||
} | } | ||||
if(!isDBUpdating() && (data.getCount()<MIN_NUM_STOPS || distance<=MAX_DISTANCE)){ | if(!isDBUpdating() && (data.getCount()<MIN_NUM_STOPS || distance<=MAX_DISTANCE)){ | ||||
distance = distance*2; | distance = distance*2; | ||||
▲ Show 20 Lines • Show All 108 Lines • ▼ Show 20 Lines | private void showArrivalsInRecycler(List<Palina> palinas){ | ||||
if(firstLocForArrivals){ | if(firstLocForArrivals){ | ||||
arrivalsStopAdapter = new ArrivalsStopAdapter(routesPairList,mListener,getContext(),lastReceivedLocation); | arrivalsStopAdapter = new ArrivalsStopAdapter(routesPairList,mListener,getContext(),lastReceivedLocation); | ||||
gridRecyclerView.setAdapter(arrivalsStopAdapter); | gridRecyclerView.setAdapter(arrivalsStopAdapter); | ||||
firstLocForArrivals = false; | firstLocForArrivals = false; | ||||
} else { | } else { | ||||
arrivalsStopAdapter.setRoutesPairListAndPosition(routesPairList,lastReceivedLocation); | arrivalsStopAdapter.setRoutesPairListAndPosition(routesPairList,lastReceivedLocation); | ||||
} | } | ||||
arrivalsStopAdapter.notifyDataSetChanged(); | //arrivalsStopAdapter.notifyDataSetChanged(); | ||||
showRecyclerHidingLoadMessage(); | showRecyclerHidingLoadMessage(); | ||||
} | } | ||||
private void setNoStopsLayout(){ | private void setNoStopsLayout(){ | ||||
messageTextView.setVisibility(View.VISIBLE); | messageTextView.setVisibility(View.VISIBLE); | ||||
messageTextView.setText(R.string.no_stops_nearby); | messageTextView.setText(R.string.no_stops_nearby); | ||||
circlingProgressBar.setVisibility(View.GONE); | circlingProgressBar.setVisibility(View.GONE); | ||||
▲ Show 20 Lines • Show All 212 Lines • Show Last 20 Lines |
Public contents are in Creative Commons Attribution-ShareAlike 4.0 (CC-BY-SA) or GNU Free Documentation License (at your option) unless otherwise noted. · Contact / Register