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