diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index d58eb3566..6b32192ac 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -3,12 +3,14 @@ package fr.free.nrw.commons.nearby; import android.Manifest; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.location.LocationManager; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.app.Fragment; @@ -42,28 +44,46 @@ public class NearbyActivity extends NavigationBaseActivity { @BindView(R.id.progressBar) ProgressBar progressBar; - private boolean isMapViewActive = false; private static final int LOCATION_REQUEST = 1; + public static final String MAP_LAST_USED_PREFERENCE = "mapLastUsed"; private LocationServiceManager locationManager; private LatLng curLatLang; private Bundle bundle; private NearbyAsyncTask nearbyAsyncTask; + private SharedPreferences sharedPreferences; + private NearbyActivityMode viewMode; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); setContentView(R.layout.activity_nearby); ButterKnife.bind(this); checkLocationPermission(); bundle = new Bundle(); initDrawer(); + initViewState(); + } + + private void initViewState() { + if (sharedPreferences.getBoolean(MAP_LAST_USED_PREFERENCE, false)) { + viewMode = NearbyActivityMode.MAP; + } else { + viewMode = NearbyActivityMode.LIST; + } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_nearby, menu); + + if (viewMode == NearbyActivityMode.MAP) { + MenuItem item = menu.findItem(R.id.action_toggle_view); + item.setIcon(R.drawable.ic_list_white_24dp); + } + return super.onCreateOptionsMenu(menu); } @@ -74,19 +94,23 @@ public class NearbyActivity extends NavigationBaseActivity { case R.id.action_refresh: refreshView(); return true; - case R.id.action_map: - showMapView(); - if (isMapViewActive) { - item.setIcon(R.drawable.ic_list_white_24dp); - } else { - item.setIcon(R.drawable.ic_map_white_24dp); - } + case R.id.action_toggle_view: + toggleView(); + toggleIcon(item); return true; default: return super.onOptionsItemSelected(item); } } + private void toggleIcon(MenuItem item) { + if (viewMode == NearbyActivityMode.MAP) { + item.setIcon(R.drawable.ic_list_white_24dp); + } else { + item.setIcon(R.drawable.ic_map_white_24dp); + } + } + private void startLookingForNearby() { locationManager = new LocationServiceManager(this); locationManager.registerLocationManager(); @@ -198,23 +222,30 @@ public class NearbyActivity extends NavigationBaseActivity { } } - private void showMapView() { + private void toggleView() { if (nearbyAsyncTask != null) { - if (!isMapViewActive) { - isMapViewActive = true; + if (viewMode == NearbyActivityMode.LIST) { + viewMode = NearbyActivityMode.MAP; if (nearbyAsyncTask.getStatus() == AsyncTask.Status.FINISHED) { setMapFragment(); + setMapViewLastUsed(true); } } else { - isMapViewActive = false; + viewMode = NearbyActivityMode.LIST; if (nearbyAsyncTask.getStatus() == AsyncTask.Status.FINISHED) { setListFragment(); + setMapViewLastUsed(false); } } } } + private void setMapViewLastUsed(boolean lastUsed) + { + sharedPreferences.edit().putBoolean(MAP_LAST_USED_PREFERENCE, lastUsed).apply(); + } + @Override protected void onResume() { super.onResume(); @@ -287,9 +318,12 @@ public class NearbyActivity extends NavigationBaseActivity { bundle.putString("CurLatLng", gsonCurLatLng); // Begin the transaction - if (isMapViewActive) { + if (viewMode == NearbyActivityMode.MAP) + { setMapFragment(); - } else { + } + else + { setListFragment(); } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivityMode.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivityMode.java new file mode 100644 index 000000000..efe41147b --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivityMode.java @@ -0,0 +1,6 @@ +package fr.free.nrw.commons.nearby; + +enum NearbyActivityMode { + MAP, + LIST +} diff --git a/app/src/main/res/menu/menu_nearby.xml b/app/src/main/res/menu/menu_nearby.xml index f7f5d8acc..0143b9ef1 100644 --- a/app/src/main/res/menu/menu_nearby.xml +++ b/app/src/main/res/menu/menu_nearby.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">