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 cd08840f9..d0322a187 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 @@ -2,14 +2,15 @@ package fr.free.nrw.commons.nearby; import android.Manifest; import android.content.Context; -import android.content.DialogInterface; 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; @@ -43,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; + private 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.isMap()) { + MenuItem item = menu.findItem(R.id.action_toggle_view); + item.setIcon(viewMode.getIcon()); + } + return super.onCreateOptionsMenu(menu); } @@ -75,13 +94,10 @@ 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: + viewMode = viewMode.toggle(); + item.setIcon(viewMode.getIcon()); + toggleView(); return true; default: return super.onOptionsItemSelected(item); @@ -214,20 +230,16 @@ public class NearbyActivity extends NavigationBaseActivity { } } - private void showMapView() { + private void toggleView() { if (nearbyAsyncTask != null) { - if (!isMapViewActive) { - isMapViewActive = true; - if (nearbyAsyncTask.getStatus() == AsyncTask.Status.FINISHED) { + if (nearbyAsyncTask.getStatus() == AsyncTask.Status.FINISHED) { + if (viewMode.isMap()) { setMapFragment(); - } - - } else { - isMapViewActive = false; - if (nearbyAsyncTask.getStatus() == AsyncTask.Status.FINISHED) { + } else { setListFragment(); } } + sharedPreferences.edit().putBoolean(MAP_LAST_USED_PREFERENCE, viewMode.isMap()).apply(); } } @@ -303,7 +315,7 @@ public class NearbyActivity extends NavigationBaseActivity { bundle.putString("CurLatLng", gsonCurLatLng); // Begin the transaction - if (isMapViewActive) { + if (viewMode.isMap()) { setMapFragment(); } 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..e46f53f66 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivityMode.java @@ -0,0 +1,30 @@ +package fr.free.nrw.commons.nearby; + +import android.support.annotation.DrawableRes; + +import fr.free.nrw.commons.R; + +enum NearbyActivityMode { + MAP(R.drawable.ic_list_white_24dp), + LIST(R.drawable.ic_map_white_24dp); + + @DrawableRes + private final int icon; + + NearbyActivityMode(int icon) { + this.icon = icon; + } + + @DrawableRes + public int getIcon() { + return icon; + } + + public NearbyActivityMode toggle() { + return isMap() ? LIST : MAP; + } + + public boolean isMap() { + return MAP.equals(this); + } +} \ No newline at end of file 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"> आपके डिवाइस में जीपीएस अक्षम है। क्या आप इसे सक्षम करना चाहेंगे? जीपीएस सक्षम करें अभी तक कोई अपलोड नहीं - {{PLURAL | शून्य = @ स्ट्रिंग / योगदान_उपशीर्षक_शुन्य | एक =% d अपलोड |% d अपलोड्स}} + + %d अपलोड + %d अपलोड्स + %d अपलोड शुरू %d अपलोड शुरू