mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 04:43:54 +01:00
GetPagerFragment instead of getActivity since currently ContributionsFragment take over responsibility from ContributionsActivity
This commit is contained in:
parent
94201aa930
commit
01461d2508
2 changed files with 72 additions and 28 deletions
|
|
@ -146,7 +146,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
detailProvider = (MediaDetailPagerFragment.MediaDetailProvider) getActivity();
|
detailProvider = (MediaDetailPagerFragment.MediaDetailProvider) (getParentFragment().getParentFragment());
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
editable = savedInstanceState.getBoolean("editable");
|
editable = savedInstanceState.getBoolean("editable");
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ 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;
|
||||||
|
|
@ -18,7 +19,6 @@ 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,9 +35,12 @@ 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;
|
||||||
|
|
@ -62,6 +65,7 @@ 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);
|
||||||
|
|
@ -77,13 +81,11 @@ 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);
|
||||||
|
|
||||||
final MediaDetailAdapter adapter = new MediaDetailAdapter(getChildFragmentManager());
|
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");
|
||||||
|
|
@ -92,7 +94,12 @@ 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);
|
||||||
|
|
@ -122,11 +129,18 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
|
if(getActivity() == null) {
|
||||||
|
Timber.d("Returning as activity is destroyed!");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
MediaDetailProvider provider = (MediaDetailProvider) getParentFragment();
|
MediaDetailProvider provider = (MediaDetailProvider) getParentFragment();
|
||||||
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:
|
||||||
// Share - intent set in onCreateOptionsMenu, around line 252
|
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..."));
|
||||||
return true;
|
return true;
|
||||||
case R.id.menu_browser_current_image:
|
case R.id.menu_browser_current_image:
|
||||||
// View in browser
|
// View in browser
|
||||||
|
|
@ -152,12 +166,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
|
||||||
((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
|
||||||
((ContributionsActivity) getActivity()).deleteUpload(pager.getCurrentItem());
|
//((ContributionsActivity) getActivity()).deleteUpload(pager.getCurrentItem());
|
||||||
getActivity().getSupportFragmentManager().popBackStack();
|
getActivity().getSupportFragmentManager().popBackStack();
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
|
|
@ -185,10 +199,13 @@ 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(),
|
String imageUrl = m.getImageUrl(), fileName = m.getFilename();
|
||||||
fileName = m.getFilename();
|
|
||||||
|
|
||||||
if (imageUrl == null || fileName == null) {
|
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);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -229,8 +246,11 @@ 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) getParentFragment();
|
MediaDetailProvider provider = (MediaDetailProvider) getParentFragment();
|
||||||
|
if(provider == null) {
|
||||||
|
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
|
||||||
|
|
@ -240,18 +260,6 @@ 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);
|
||||||
|
|
||||||
// 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 ) {
|
if (m instanceof Contribution ) {
|
||||||
Contribution c = (Contribution) m;
|
Contribution c = (Contribution) m;
|
||||||
switch (c.getState()) {
|
switch (c.getState()) {
|
||||||
|
|
@ -281,12 +289,40 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showImage(int i) {
|
public void showImage(int i) {
|
||||||
Log.d("deneme","pager is:"+pager);
|
Handler handler = new Handler();
|
||||||
pager.setCurrentItem(i);
|
handler.postDelayed(() -> pager.setCurrentItem(i), 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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(getParentFragment().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();
|
||||||
|
}
|
||||||
|
}
|
||||||
getParentFragment().getActivity().supportInvalidateOptionsMenu();
|
getParentFragment().getActivity().supportInvalidateOptionsMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -321,6 +357,10 @@ 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(getParentFragment().getActivity() == null) {
|
||||||
|
Timber.d("Skipping getItem. Returning as activity is destroyed!");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
pager.postDelayed(() -> getParentFragment().getActivity().supportInvalidateOptionsMenu(), 5);
|
pager.postDelayed(() -> getParentFragment().getActivity().supportInvalidateOptionsMenu(), 5);
|
||||||
}
|
}
|
||||||
return MediaDetailFragment.forMedia(i, editable, isFeaturedImage);
|
return MediaDetailFragment.forMedia(i, editable, isFeaturedImage);
|
||||||
|
|
@ -328,6 +368,10 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getCount() {
|
public int getCount() {
|
||||||
|
if(getActivity() == null) {
|
||||||
|
Timber.d("Skipping getCount. Returning as activity is destroyed!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return ((MediaDetailProvider) getParentFragment()).getTotalMediaCount();
|
return ((MediaDetailProvider) getParentFragment()).getTotalMediaCount();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue