From 9007ae5cd448db93d6b71695efed5f7ae70856fd Mon Sep 17 00:00:00 2001 From: neslihanturan Date: Sat, 14 Sep 2019 13:54:14 +0300 Subject: [PATCH] Implement back button with presenter --- .../commons/contributions/MainActivity.java | 10 +----- .../nearby/NearbyTestLayersFragment.java | 35 ++++++++++++++++--- .../NearbyParentFragmentContract.java | 6 +++- .../mvp/fragments/NearbyParentFragment.java | 17 ++++++++- .../NearbyParentFragmentPresenter.java | 13 +++++++ 5 files changed, 65 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java b/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java index a0b433ff2..004345b55 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java @@ -4,7 +4,6 @@ import android.annotation.SuppressLint; import android.app.AlertDialog; import android.content.Intent; import android.os.Bundle; -import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -268,14 +267,7 @@ public class MainActivity extends AuthenticatedActivity implements FragmentManag } else if (getSupportFragmentManager().findFragmentByTag(nearbyFragmentTag) != null && !isContributionsFragmentVisible) { // Means that nearby fragment is visible (not contributions fragment) NearbyTestLayersFragment nearbyFragment = (NearbyTestLayersFragment) contributionsActivityPagerAdapter.getItem(1); - - if(nearbyFragment.isBottomSheetExpanded()) { - // Back should first hide the bottom sheet if it is expanded - nearbyFragment.listOptionMenuItemClicked(); - } else { - // Otherwise go back to contributions fragment - viewPager.setCurrentItem(0); - } + nearbyFragment.nearbyParentFragmentPresenter.backButtonClicked(); } else { super.onBackPressed(); } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyTestLayersFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyTestLayersFragment.java index eb3ffb65a..c2b054312 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyTestLayersFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyTestLayersFragment.java @@ -47,6 +47,7 @@ import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao; import fr.free.nrw.commons.contributions.ContributionController; +import fr.free.nrw.commons.contributions.MainActivity; import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.location.LocationServiceManager; @@ -418,11 +419,20 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment imple getActivity().registerReceiver(broadcastReceiver, intentFilter); } + /** + * Hide or expand bottom sheet according to states of all sheets + */ @Override public void listOptionMenuItemClicked() { - + if(bottomSheetListBehavior.getState()== BottomSheetBehavior.STATE_COLLAPSED || bottomSheetListBehavior.getState()==BottomSheetBehavior.STATE_HIDDEN){ + bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); + bottomSheetListBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + }else if(bottomSheetListBehavior.getState()==BottomSheetBehavior.STATE_EXPANDED){ + bottomSheetListBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + } } + @Override public void populatePlaces(fr.free.nrw.commons.location.LatLng curlatLng, fr.free.nrw.commons.location.LatLng searchLatLng) { boolean checkingAroundCurretLocation; @@ -478,11 +488,21 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment imple } - - @Override - public boolean isBottomSheetExpanded() { - return false; + public boolean isListBottomSheetExpanded() { + return bottomSheetListBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED; + } + + public boolean isDetailsBottomSheetVisible() { + return !(bottomSheetDetailsBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN); + } + + public void setBottomSheetDetailsSmaller() { + if (bottomSheetDetailsBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) { + bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + } else { + bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); + } } @Override @@ -508,6 +528,11 @@ public class NearbyTestLayersFragment extends CommonsDaggerSupportFragment imple } } + @Override + public void setTabItemContributions() { + ((MainActivity)getActivity()).viewPager.setCurrentItem(0); + } + @Override public void checkPermissionsAndPerformAction(Runnable runnable) { Log.d("denemeTest","checkPermissionsAndPerformAction is called"); diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyParentFragmentContract.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyParentFragmentContract.java index e5ec8bba0..31f280b24 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyParentFragmentContract.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyParentFragmentContract.java @@ -19,7 +19,7 @@ public interface NearbyParentFragmentContract { void addNetworkBroadcastReceiver(); void listOptionMenuItemClicked(); void populatePlaces(LatLng curlatLng, LatLng searchLatLng); - boolean isBottomSheetExpanded(); + boolean isListBottomSheetExpanded(); void checkPermissionsAndPerformAction(Runnable runnable); void resumeFragment(); @@ -36,6 +36,9 @@ public interface NearbyParentFragmentContract { void addSearchThisAreaButtonAction(); void setSearchThisAreaButtonVisibility(boolean isVisible); void setProgressBarVisibility(boolean isVisible); + void setTabItemContributions(); + boolean isDetailsBottomSheetVisible(); + void setBottomSheetDetailsSmaller(); } interface UserActions { @@ -45,6 +48,7 @@ public interface NearbyParentFragmentContract { void updateMapAndList(LocationServiceManager.LocationChangeType locationChangeType, LatLng cameraTarget); void lockUnlockNearby(boolean isNearbyLocked); void setActionListeners(JsonKvStore applicationKvStore); + void backButtonClicked(); MapboxMap.OnCameraMoveListener onCameraMove(MapboxMap mapboxMap); } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java index 45d365fdd..28054effb 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java @@ -189,6 +189,21 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment } } + @Override + public void setTabItemContributions() { + + } + + @Override + public boolean isDetailsBottomSheetVisible() { + return false; + } + + @Override + public void setBottomSheetDetailsSmaller() { + + } + @Override public void onAttach(Context context) { super.onAttach(context); @@ -458,7 +473,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment } @Override - public boolean isBottomSheetExpanded() { + public boolean isListBottomSheetExpanded() { return bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED; } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java index fdd7e498e..0fad60997 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java @@ -180,6 +180,19 @@ public class NearbyParentFragmentPresenter } + @Override + public void backButtonClicked() { + if(nearbyParentFragmentView.isListBottomSheetExpanded()) { + // Back should first hide the bottom sheet if it is expanded + nearbyParentFragmentView.listOptionMenuItemClicked(); + } else if (nearbyParentFragmentView.isDetailsBottomSheetVisible()) { + nearbyParentFragmentView.setBottomSheetDetailsSmaller(); + } else { + // Otherwise go back to contributions fragment + nearbyParentFragmentView.setTabItemContributions(); + } + } + public void markerUnselected() { nearbyParentFragmentView.hideBottomSheet(); }