Changeset View
Changeset View
Standalone View
Standalone View
src/it/reyboz/bustorino/fragments/ArrivalsFragment.java
Show First 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | |||||
import it.reyboz.bustorino.data.NextGenDB; | import it.reyboz.bustorino.data.NextGenDB; | ||||
import it.reyboz.bustorino.data.UserDB; | import it.reyboz.bustorino.data.UserDB; | ||||
import it.reyboz.bustorino.middleware.AsyncStopFavoriteAction; | import it.reyboz.bustorino.middleware.AsyncStopFavoriteAction; | ||||
public class ArrivalsFragment extends ResultListFragment implements LoaderManager.LoaderCallbacks<Cursor> { | public class ArrivalsFragment extends ResultListFragment implements LoaderManager.LoaderCallbacks<Cursor> { | ||||
private final static String KEY_STOP_ID = "stopid"; | private final static String KEY_STOP_ID = "stopid"; | ||||
private final static String KEY_STOP_NAME = "stopname"; | private final static String KEY_STOP_NAME = "stopname"; | ||||
private final static String DEBUG_TAG = "BUSTOArrivalsFragment"; | private final static String DEBUG_TAG_ALL = "BUSTOArrivalsFragment"; | ||||
private String DEBUG_TAG = DEBUG_TAG_ALL; | |||||
private final static int loaderFavId = 2; | private final static int loaderFavId = 2; | ||||
private final static int loaderStopId = 1; | private final static int loaderStopId = 1; | ||||
private final static ArrivalsFetcher[] defaultFetchers = new ArrivalsFetcher[]{new FiveTAPIFetcher(), new GTTJSONFetcher(), new FiveTScraperFetcher()}; | private final static ArrivalsFetcher[] defaultFetchers = new ArrivalsFetcher[]{new FiveTAPIFetcher(), new GTTJSONFetcher(), new FiveTScraperFetcher()}; | ||||
static final String STOP_TITLE = "messageExtra"; | static final String STOP_TITLE = "messageExtra"; | ||||
private @Nullable String stopID,stopName; | private @Nullable String stopID,stopName; | ||||
private DBStatusManager prefs; | private DBStatusManager prefs; | ||||
private DBStatusManager.OnDBUpdateStatusChangeListener listener; | private DBStatusManager.OnDBUpdateStatusChangeListener listener; | ||||
private boolean justCreated = false; | private boolean justCreated = false; | ||||
private Palina lastUpdatedPalina = null; | private Palina lastUpdatedPalina = null; | ||||
private boolean needUpdateOnAttach = false; | private boolean needUpdateOnAttach = false; | ||||
private boolean fetchersChangeRequestPending = false; | private boolean fetchersChangeRequestPending = false; | ||||
private boolean stopIsInFavorites = false; | private boolean stopIsInFavorites = false; | ||||
//Views | //Views | ||||
protected ImageButton addToFavorites; | protected ImageButton addToFavorites; | ||||
protected TextView timesSourceTextView; | protected TextView timesSourceTextView; | ||||
private List<ArrivalsFetcher> fetchers = new ArrayList<>(Arrays.asList(defaultFetchers)); | private List<ArrivalsFetcher> fetchers = new ArrayList<>(Arrays.asList(defaultFetchers)); | ||||
private boolean reloadOnResume = true; | |||||
public static ArrivalsFragment newInstance(String stopID){ | public static ArrivalsFragment newInstance(String stopID){ | ||||
return newInstance(stopID, null); | return newInstance(stopID, null); | ||||
} | } | ||||
public static ArrivalsFragment newInstance(@NonNull String stopID, @Nullable String stopName){ | public static ArrivalsFragment newInstance(@NonNull String stopID, @Nullable String stopName){ | ||||
ArrivalsFragment fragment = new ArrivalsFragment(); | ArrivalsFragment fragment = new ArrivalsFragment(); | ||||
Bundle args = new Bundle(); | Bundle args = new Bundle(); | ||||
args.putString(KEY_STOP_ID,stopID); | args.putString(KEY_STOP_ID,stopID); | ||||
//parameter for ResultListFragment | //parameter for ResultListFragmentrequestArrivalsForStopID | ||||
args.putSerializable(LIST_TYPE,FragmentKind.ARRIVALS); | args.putSerializable(LIST_TYPE,FragmentKind.ARRIVALS); | ||||
if (stopName != null){ | if (stopName != null){ | ||||
args.putString(KEY_STOP_NAME,stopName); | args.putString(KEY_STOP_NAME,stopName); | ||||
} | } | ||||
fragment.setArguments(args); | fragment.setArguments(args); | ||||
return fragment; | return fragment; | ||||
} | } | ||||
@Override | @Override | ||||
public void onCreate(Bundle savedInstanceState) { | public void onCreate(Bundle savedInstanceState) { | ||||
super.onCreate(savedInstanceState); | super.onCreate(savedInstanceState); | ||||
stopID = getArguments().getString(KEY_STOP_ID); | stopID = getArguments().getString(KEY_STOP_ID); | ||||
DEBUG_TAG = DEBUG_TAG_ALL+" "+stopID; | |||||
//this might really be null | //this might really be null | ||||
stopName = getArguments().getString(KEY_STOP_NAME); | stopName = getArguments().getString(KEY_STOP_NAME); | ||||
final ArrivalsFragment arrivalsFragment = this; | final ArrivalsFragment arrivalsFragment = this; | ||||
listener = new DBStatusManager.OnDBUpdateStatusChangeListener() { | listener = new DBStatusManager.OnDBUpdateStatusChangeListener() { | ||||
@Override | @Override | ||||
public void onDBStatusChanged(boolean updating) { | public void onDBStatusChanged(boolean updating) { | ||||
if(!updating){ | if(!updating){ | ||||
getLoaderManager().restartLoader(loaderFavId,getArguments(),arrivalsFragment); | getLoaderManager().restartLoader(loaderFavId,getArguments(),arrivalsFragment); | ||||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | public View onCreateView(LayoutInflater inflater, ViewGroup container, | ||||
} | } | ||||
return root; | return root; | ||||
} | } | ||||
@Override | @Override | ||||
public void onResume() { | public void onResume() { | ||||
super.onResume(); | super.onResume(); | ||||
LoaderManager loaderManager = getLoaderManager(); | LoaderManager loaderManager = getLoaderManager(); | ||||
Log.d(DEBUG_TAG, "OnResume, justCreated "+justCreated); | |||||
if(stopID!=null){ | if(stopID!=null){ | ||||
//refresh the arrivals | //refresh the arrivals | ||||
if(!justCreated) | if(!justCreated){ | ||||
if (reloadOnResume) | |||||
mListener.requestArrivalsForStopID(stopID); | mListener.requestArrivalsForStopID(stopID); | ||||
} | |||||
else justCreated = false; | else justCreated = false; | ||||
//start the loader | //start the loader | ||||
if(prefs.isDBUpdating(true)){ | if(prefs.isDBUpdating(true)){ | ||||
prefs.registerListener(); | prefs.registerListener(); | ||||
} else { | } else { | ||||
Log.d(DEBUG_TAG, "Restarting loader for stop"); | |||||
loaderManager.restartLoader(loaderFavId, getArguments(), this); | loaderManager.restartLoader(loaderFavId, getArguments(), this); | ||||
} | } | ||||
updateMessage(); | updateMessage(); | ||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
public void onStart() { | public void onStart() { | ||||
super.onStart(); | super.onStart(); | ||||
if (needUpdateOnAttach){ | if (needUpdateOnAttach){ | ||||
updateFragmentData(null); | updateFragmentData(null); | ||||
} | } | ||||
} | } | ||||
@Override | |||||
public void onPause() { | |||||
if(listener!=null) | |||||
prefs.unregisterListener(); | |||||
super.onPause(); | |||||
LoaderManager loaderManager = getLoaderManager(); | |||||
Log.d(DEBUG_TAG, "onPause, have running loaders: "+loaderManager.hasRunningLoaders()); | |||||
loaderManager.destroyLoader(loaderFavId); | |||||
} | |||||
@Nullable | @Nullable | ||||
public String getStopID() { | public String getStopID() { | ||||
return stopID; | return stopID; | ||||
} | } | ||||
public boolean reloadsOnResume() { | |||||
return reloadOnResume; | |||||
} | |||||
public void setReloadOnResume(boolean reloadOnResume) { | |||||
this.reloadOnResume = reloadOnResume; | |||||
} | |||||
/** | /** | ||||
* Give the fetchers | * Give the fetchers | ||||
* @return the list of the fetchers | * @return the list of the fetchers | ||||
*/ | */ | ||||
public ArrayList<Fetcher> getCurrentFetchers(){ | public ArrayList<Fetcher> getCurrentFetchers(){ | ||||
ArrayList<Fetcher> v = new ArrayList<Fetcher>(); | ArrayList<Fetcher> v = new ArrayList<Fetcher>(); | ||||
for (ArrivalsFetcher fetcher: fetchers){ | for (ArrivalsFetcher fetcher: fetchers){ | ||||
v.add(fetcher); | v.add(fetcher); | ||||
▲ Show 20 Lines • Show All 133 Lines • ▼ Show 20 Lines | public void onLoadFinished(Loader<Cursor> loader, Cursor data) { | ||||
switch (loader.getId()){ | switch (loader.getId()){ | ||||
case loaderFavId: | case loaderFavId: | ||||
final int colUserName = data.getColumnIndex(UserDB.getFavoritesColumnNamesAsArray[1]); | final int colUserName = data.getColumnIndex(UserDB.getFavoritesColumnNamesAsArray[1]); | ||||
if(data.getCount()>0){ | if(data.getCount()>0){ | ||||
// IT'S IN FAVORITES | // IT'S IN FAVORITES | ||||
data.moveToFirst(); | data.moveToFirst(); | ||||
final String probableName = data.getString(colUserName); | final String probableName = data.getString(colUserName); | ||||
stopIsInFavorites = true; | stopIsInFavorites = true; | ||||
if(probableName!=null && !probableName.isEmpty()){ | |||||
stopName = probableName; | stopName = probableName; | ||||
//update the message in the textview | //update the message in the textview | ||||
updateMessage(); | updateMessage(); | ||||
} | |||||
} else { | } else { | ||||
stopIsInFavorites =false; | stopIsInFavorites =false; | ||||
} | } | ||||
updateStarIcon(); | updateStarIcon(); | ||||
if(stopName == null){ | if(stopName == null){ | ||||
//stop is not inside the favorites and wasn't provided | //stop is not inside the favorites and wasn't provided | ||||
Log.d("ArrivalsFragment"+getTag(),"Stop wasn't in the favorites and has no name, looking in the DB"); | Log.d("ArrivalsFragment"+getTag(),"Stop wasn't in the favorites and has no name, looking in the DB"); | ||||
Show All 10 Lines | public void onLoadFinished(Loader<Cursor> loader, Cursor data) { | ||||
} else { | } else { | ||||
Log.w("ArrivalsFragment"+getTag(),"Stop is not inside the database... CLOISTER BELL"); | Log.w("ArrivalsFragment"+getTag(),"Stop is not inside the database... CLOISTER BELL"); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
public void onPause() { | |||||
if(listener!=null) | |||||
prefs.unregisterListener(); | |||||
super.onPause(); | |||||
} | |||||
@Override | |||||
public void onLoaderReset(Loader<Cursor> loader) { | public void onLoaderReset(Loader<Cursor> loader) { | ||||
//NOTHING TO DO | //NOTHING TO DO | ||||
} | } | ||||
public void toggleLastStopToFavorites() { | public void toggleLastStopToFavorites() { | ||||
Stop stop = lastUpdatedPalina; | Stop stop = lastUpdatedPalina; | ||||
▲ Show 20 Lines • Show All 63 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