diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarksActivity.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarksActivity.java index c147c1eef4..2dfeb8b860 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarksActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarksActivity.java @@ -17,6 +17,7 @@ import butterknife.ButterKnife; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.category.CategoryImagesCallback; import fr.free.nrw.commons.contributions.ContributionController; import fr.free.nrw.commons.media.MediaDetailPagerFragment; import fr.free.nrw.commons.theme.NavigationBaseActivity; @@ -24,7 +25,7 @@ public class BookmarksActivity extends NavigationBaseActivity implements FragmentManager.OnBackStackChangedListener, MediaDetailPagerFragment.MediaDetailProvider, - AdapterView.OnItemClickListener { + AdapterView.OnItemClickListener, CategoryImagesCallback { private FragmentManager supportFragmentManager; private BookmarksPagerAdapter adapter; @@ -102,12 +103,14 @@ public void onItemClick(AdapterView adapterView, View view, int i, long l) { * This method is called on success of API call for featured Images. * The viewpager will notified that number of items have changed. */ + @Override public void viewPagerNotifyDataSetChanged() { if (mediaDetails!=null){ mediaDetails.notifyDataSetChanged(); } } + /** * This method is called mediaDetailPagerFragment. It returns the Media Object at that Index * @param i It is the index of which media object is to be returned which is same as @@ -136,4 +139,7 @@ public int getTotalMediaCount() { } return adapter.getMediaAdapter().getCount(); } + + @Override + public void requestMoreImages() { } } diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java index b234ef0079..d6a6a55fb9 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java @@ -97,11 +97,7 @@ public void onResume() { gridView.setVisibility(GONE); if (gridAdapter != null) { gridAdapter.clear(); - try { - ((BookmarksActivity) getContext()).viewPagerNotifyDataSetChanged(); - }catch (Exception e){ - e.printStackTrace(); - } + ((BookmarksActivity) getContext()).viewPagerNotifyDataSetChanged(); } initList(); } @@ -203,11 +199,7 @@ private void handleSuccess(List collection) { return; } gridAdapter.addItems(collection); - try { - ((BookmarksActivity) getContext()).viewPagerNotifyDataSetChanged(); - }catch (Exception e){ - e.printStackTrace(); - } + ((BookmarksActivity) getContext()).viewPagerNotifyDataSetChanged(); } progressBar.setVisibility(GONE); statusTextView.setVisibility(GONE); diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java index 4273da28a0..597acc18a5 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java @@ -37,7 +37,7 @@ public class CategoryDetailsActivity extends NavigationBaseActivity implements MediaDetailPagerFragment.MediaDetailProvider, - AdapterView.OnItemClickListener{ + AdapterView.OnItemClickListener, CategoryImagesCallback { private FragmentManager supportFragmentManager; @@ -219,6 +219,7 @@ public void onBackPressed() { * This method is called on success of API call for Images inside a category. * The viewpager will notified that number of items have changed. */ + @Override public void viewPagerNotifyDataSetChanged() { if (mediaDetails!=null){ mediaDetails.notifyDataSetChanged(); @@ -229,6 +230,7 @@ public void viewPagerNotifyDataSetChanged() { * This method is called when viewPager has reached its end. * Fetches more images using search query and adds it to the grid view and viewpager adapter */ + @Override public void requestMoreImages() { if (categoryImagesListFragment!=null){ categoryImagesListFragment.fetchMoreImagesViewPager(); diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesActivity.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesActivity.java index 9006745d4d..aa2c87f38c 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesActivity.java @@ -30,7 +30,7 @@ public class CategoryImagesActivity extends NavigationBaseActivity implements FragmentManager.OnBackStackChangedListener, MediaDetailPagerFragment.MediaDetailProvider, - AdapterView.OnItemClickListener{ + AdapterView.OnItemClickListener, CategoryImagesCallback { private FragmentManager supportFragmentManager; @@ -149,6 +149,7 @@ public Media getMediaAtPosition(int i) { * This method is called on success of API call for featured Images. * The viewpager will notified that number of items have changed. */ + @Override public void viewPagerNotifyDataSetChanged() { if (mediaDetails!=null){ mediaDetails.notifyDataSetChanged(); @@ -199,6 +200,7 @@ public boolean onOptionsItemSelected(MenuItem item) { * This method is called when viewPager has reached its end. * Fetches more images using search query and adds it to the gridView and viewpager adapter */ + @Override public void requestMoreImages() { if (categoryImagesListFragment!=null){ categoryImagesListFragment.fetchMoreImagesViewPager(); diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesCallback.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesCallback.java new file mode 100644 index 0000000000..e93e74fdf3 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesCallback.java @@ -0,0 +1,13 @@ +package fr.free.nrw.commons.category; + +/** + * Callback for notifying the viewpager that the number of items have changed + * and for requesting more images when the viewpager has been scrolled to its end. + */ + +public interface CategoryImagesCallback { + void viewPagerNotifyDataSetChanged(); + void requestMoreImages(); +} + + diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesListFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesListFragment.java index 1744a95f4b..8280e6b25f 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesListFragment.java @@ -26,7 +26,6 @@ import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; -import fr.free.nrw.commons.explore.categories.ExploreActivity; import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.media.MediaClient; import fr.free.nrw.commons.utils.NetworkUtils; @@ -251,22 +250,9 @@ private void handleSuccess(List collection) { return; } gridAdapter.addItems(collection); - try { - ((CategoryImagesActivity) getContext()).viewPagerNotifyDataSetChanged(); - }catch (Exception e){ - e.printStackTrace(); - } - try { - ((CategoryDetailsActivity) getContext()).viewPagerNotifyDataSetChanged(); - }catch (Exception e){ - e.printStackTrace(); - } - try { - ((ExploreActivity) getContext()).viewPagerNotifyDataSetChanged(); - }catch (Exception e){ - e.printStackTrace(); - } + ((CategoryImagesCallback) getContext()).viewPagerNotifyDataSetChanged(); } + progressBar.setVisibility(GONE); isLoading = false; statusTextView.setVisibility(GONE); diff --git a/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java b/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java index 2fa5c61ddb..708ac8c5f3 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java @@ -24,6 +24,7 @@ import butterknife.ButterKnife; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.category.CategoryImagesCallback; import fr.free.nrw.commons.explore.categories.SearchCategoryFragment; import fr.free.nrw.commons.explore.images.SearchImageFragment; import fr.free.nrw.commons.explore.recentsearches.RecentSearchesFragment; @@ -37,7 +38,8 @@ * Represents search screen of this app */ -public class SearchActivity extends NavigationBaseActivity implements MediaDetailPagerFragment.MediaDetailProvider{ +public class SearchActivity extends NavigationBaseActivity + implements MediaDetailPagerFragment.MediaDetailProvider, CategoryImagesCallback { @BindView(R.id.toolbar_search) Toolbar toolbar; @BindView(R.id.searchHistoryContainer) FrameLayout searchHistoryContainer; @@ -150,6 +152,7 @@ public int getTotalMediaCount() { * This method is called on success of API call for image Search. * The viewpager will notified that number of items have changed. */ + @Override public void viewPagerNotifyDataSetChanged() { if (mediaDetails!=null){ mediaDetails.notifyDataSetChanged(); @@ -236,6 +239,7 @@ public void updateText(String query) { * This method is called when viewPager has reached its end. * Fetches more images using search query and adds it to the recycler view and viewpager adapter */ + @Override public void requestMoreImages() { if (searchImageFragment!=null){ searchImageFragment.addImagesToList(query); diff --git a/app/src/main/java/fr/free/nrw/commons/explore/categories/ExploreActivity.java b/app/src/main/java/fr/free/nrw/commons/explore/categories/ExploreActivity.java index 21c606b0b6..17b3d2c4af 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/categories/ExploreActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/categories/ExploreActivity.java @@ -23,6 +23,7 @@ import butterknife.ButterKnife; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.category.CategoryImagesCallback; import fr.free.nrw.commons.category.CategoryImagesListFragment; import fr.free.nrw.commons.explore.SearchActivity; import fr.free.nrw.commons.explore.ViewPagerAdapter; @@ -37,7 +38,7 @@ public class ExploreActivity extends NavigationBaseActivity implements MediaDetailPagerFragment.MediaDetailProvider, - AdapterView.OnItemClickListener { + AdapterView.OnItemClickListener, CategoryImagesCallback { private static final String FEATURED_IMAGES_CATEGORY = "Category:Featured_pictures_on_Wikimedia_Commons"; private static final String MOBILE_UPLOADS_CATEGORY = "Category:Uploaded_with_Mobile/Android"; @@ -145,6 +146,7 @@ public int getTotalMediaCount() { * This method is called on success of API call for featured images or mobile uploads. * The viewpager will notified that number of items have changed. */ + @Override public void viewPagerNotifyDataSetChanged() { if (mediaDetails != null) { mediaDetails.notifyDataSetChanged(); @@ -172,6 +174,7 @@ public void onBackPressed() { * This method is called when viewPager has reached its end. * Fetches more images and adds them to the recycler view and viewpager adapter */ + @Override public void requestMoreImages() { if (mobileImagesListFragment != null && tabLayout.getSelectedTabPosition() == 1) { mobileImagesListFragment.fetchMoreImagesViewPager(); diff --git a/app/src/main/java/fr/free/nrw/commons/explore/images/SearchImageFragment.java b/app/src/main/java/fr/free/nrw/commons/explore/images/SearchImageFragment.java index 9ea1340f73..0b5b40074b 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/images/SearchImageFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/images/SearchImageFragment.java @@ -198,7 +198,7 @@ private void handleSuccess(List mediaList) { progressBar.setVisibility(GONE); imagesAdapter.addAll(mediaList); imagesAdapter.notifyDataSetChanged(); - ((SearchActivity)getContext()).viewPagerNotifyDataSetChanged(); + ((SearchActivity) getContext()).viewPagerNotifyDataSetChanged(); } } diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index e0f9a1ae1c..3a9540706b 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -29,16 +29,13 @@ import butterknife.ButterKnife; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.category.CategoryImagesCallback; import fr.free.nrw.commons.auth.SessionManager; import fr.free.nrw.commons.bookmarks.Bookmark; import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesContentProvider; import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao; -import fr.free.nrw.commons.category.CategoryDetailsActivity; -import fr.free.nrw.commons.category.CategoryImagesActivity; import fr.free.nrw.commons.contributions.Contribution; import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; -import fr.free.nrw.commons.explore.SearchActivity; -import fr.free.nrw.commons.explore.categories.ExploreActivity; import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.utils.ImageUtils; import fr.free.nrw.commons.utils.NetworkUtils; @@ -332,28 +329,9 @@ public void onPageScrolled(int i, float v, int i2) { Timber.d("Returning as activity is destroyed!"); return; } - if (i+1 >= adapter.getCount()){ - try{ - ((CategoryImagesActivity) getContext()).requestMoreImages(); - }catch (Exception e){ - e.printStackTrace(); - } - try{ - ((CategoryDetailsActivity) getContext()).requestMoreImages(); - }catch (Exception e){ - e.printStackTrace(); - } - try{ - ((SearchActivity) getContext()).requestMoreImages(); - }catch (Exception e){ - e.printStackTrace(); - } - try{ - ((ExploreActivity) getContext()).requestMoreImages(); - }catch (Exception e){ - e.printStackTrace(); - } - } + if (i+1 >= adapter.getCount()) + ((CategoryImagesCallback) getContext()).requestMoreImages(); + getActivity().invalidateOptionsMenu(); }