Return parent fragment instead of parent activity

This commit is contained in:
neslihanturan 2018-09-07 21:24:04 +03:00
parent 9707b4310b
commit 94201aa930

View file

@ -9,7 +9,6 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
@ -19,6 +18,7 @@ import android.support.v4.content.ContextCompat;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.ShareActionProvider;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@ -35,12 +35,9 @@ import javax.inject.Named;
import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.auth.SessionManager;
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.contributions.ContributionsActivity;
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
import fr.free.nrw.commons.explore.SearchActivity;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
import fr.free.nrw.commons.utils.ImageUtils;
import timber.log.Timber;
@ -65,7 +62,6 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
ViewPager pager;
private Boolean editable;
private boolean isFeaturedImage;
MediaDetailAdapter adapter;
public MediaDetailPagerFragment() {
this(false, false);
@ -81,11 +77,13 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
Log.d("deneme","onCreateView MediaDetailFragment");
View view = inflater.inflate(R.layout.fragment_media_detail_pager, container, false);
ButterKnife.bind(this,view);
pager.addOnPageChangeListener(this);
adapter = new MediaDetailAdapter(getChildFragmentManager());
final MediaDetailAdapter adapter = new MediaDetailAdapter(getChildFragmentManager());
Log.d("deneme","getActivity returns:"+getActivity());
if (savedInstanceState != null) {
final int pageNumber = savedInstanceState.getInt("current-page");
@ -94,12 +92,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
view.postDelayed(() -> {
pager.setAdapter(adapter);
pager.setCurrentItem(pageNumber, false);
if(getActivity() == null) {
Timber.d("Returning as activity is destroyed!");
return;
}
Log.d("deneme","getActivity returns:"+getActivity());
getActivity().supportInvalidateOptionsMenu();
adapter.notifyDataSetChanged();
}, 100);
@ -129,18 +122,11 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(getActivity() == null) {
Timber.d("Returning as activity is destroyed!");
return true;
}
MediaDetailProvider provider = (MediaDetailProvider) getActivity();
MediaDetailProvider provider = (MediaDetailProvider) getParentFragment();
Media m = provider.getMediaAtPosition(pager.getCurrentItem());
switch (item.getItemId()) {
case R.id.menu_share_current_image:
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, m.getDisplayTitle() + " \n" + m.getFilePageTitle().getCanonicalUri());
startActivity(Intent.createChooser(shareIntent, "Share image via..."));
// Share - intent set in onCreateOptionsMenu, around line 252
return true;
case R.id.menu_browser_current_image:
// View in browser
@ -166,12 +152,12 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
return true;
case R.id.menu_retry_current_image:
// Retry
// TODO: Neslihan open later ((ContributionsActivity) getActivity()).retryUpload(pager.getCurrentItem());
((ContributionsActivity) getActivity()).retryUpload(pager.getCurrentItem());
getActivity().getSupportFragmentManager().popBackStack();
return true;
case R.id.menu_cancel_current_image:
// todo: delete image
// TODO: Neslihan open later ((ContributionsActivity) getActivity()).deleteUpload(pager.getCurrentItem());
((ContributionsActivity) getActivity()).deleteUpload(pager.getCurrentItem());
getActivity().getSupportFragmentManager().popBackStack();
return true;
default:
@ -199,13 +185,10 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
* @param m Media file to download
*/
private void downloadMedia(Media m) {
String imageUrl = m.getImageUrl(), fileName = m.getFilename();
String imageUrl = m.getImageUrl(),
fileName = m.getFilename();
if (imageUrl == null
|| fileName == null
|| getContext() == null
|| getActivity() == null) {
Timber.d("Skipping download media as either imageUrl %s or filename %s activity is null", imageUrl, fileName);
if (imageUrl == null || fileName == null) {
return;
}
@ -246,11 +229,8 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
menu.clear(); // see http://stackoverflow.com/a/8495697/17865
inflater.inflate(R.menu.fragment_image_detail, menu);
if (pager != null) {
MediaDetailProvider provider = (MediaDetailProvider) getActivity();
if(provider == null) {
return;
}
//MediaDetailProvider provider = (MediaDetailProvider) getActivity();
MediaDetailProvider provider = (MediaDetailProvider) getParentFragment();
Media m = provider.getMediaAtPosition(pager.getCurrentItem());
if (m != null) {
// Enable default set of actions, then re-enable different set of actions only if it is a failed contrib
@ -260,7 +240,19 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
menu.findItem(R.id.menu_share_current_image).setEnabled(true).setVisible(true);
menu.findItem(R.id.menu_download_current_image).setEnabled(true).setVisible(true);
if (m instanceof Contribution ) {
// Set ShareActionProvider Intent
ShareActionProvider mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menu.findItem(R.id.menu_share_current_image));
// On some phones null is returned for some reason:
// https://github.com/commons-app/apps-android-commons/issues/413
if (mShareActionProvider != null) {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT,
m.getDisplayTitle() + " \n" + m.getFilePageTitle().getCanonicalUri());
mShareActionProvider.setShareIntent(shareIntent);
}
if (m instanceof Contribution) {
Contribution c = (Contribution) m;
switch (c.getState()) {
case Contribution.STATE_FAILED:
@ -289,41 +281,13 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
}
public void showImage(int i) {
Handler handler = new Handler();
handler.postDelayed(() -> pager.setCurrentItem(i), 5);
}
/**
* The method notify the viewpager that number of items have changed.
*/
public void notifyDataSetChanged(){
adapter.notifyDataSetChanged();
Log.d("deneme","pager is:"+pager);
pager.setCurrentItem(i);
}
@Override
public void onPageScrolled(int i, float v, int i2) {
if(getActivity() == null) {
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();
}
}
getActivity().supportInvalidateOptionsMenu();
getParentFragment().getActivity().supportInvalidateOptionsMenu();
}
@Override
@ -357,22 +321,14 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
public Fragment getItem(int i) {
if (i == 0) {
// See bug https://code.google.com/p/android/issues/detail?id=27526
if(getActivity() == null) {
Timber.d("Skipping getItem. Returning as activity is destroyed!");
return null;
}
pager.postDelayed(() -> getActivity().supportInvalidateOptionsMenu(), 5);
pager.postDelayed(() -> getParentFragment().getActivity().supportInvalidateOptionsMenu(), 5);
}
return MediaDetailFragment.forMedia(i, editable, isFeaturedImage);
}
@Override
public int getCount() {
if(getActivity() == null) {
Timber.d("Skipping getCount. Returning as activity is destroyed!");
return 0;
}
return ((MediaDetailProvider) getActivity()).getTotalMediaCount();
return ((MediaDetailProvider) getParentFragment()).getTotalMediaCount();
}
}
}