Skip to content

Commit ce1934d

Browse files
committed
Disable menu items for share and open browser when upload incomplete
Bug: 45943
1 parent 6a7b0c9 commit ce1934d

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

commons/src/main/java/org/wikimedia/commons/media/MediaDetailPagerFragment.java

+31-1
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,22 @@
1616

1717
import org.wikimedia.commons.*;
1818

19-
public class MediaDetailPagerFragment extends SherlockFragment {
19+
public class MediaDetailPagerFragment extends SherlockFragment implements ViewPager.OnPageChangeListener {
2020
private ViewPager pager;
2121
private Boolean editable;
2222
private CommonsApplication app;
2323

24+
public void onPageScrolled(int i, float v, int i2) {
25+
getSherlockActivity().supportInvalidateOptionsMenu();
26+
}
27+
28+
public void onPageSelected(int i) {
29+
}
30+
31+
public void onPageScrollStateChanged(int i) {
32+
33+
}
34+
2435
public interface MediaDetailProvider {
2536
public Media getMediaAtPosition(int i);
2637
public int getTotalMediaCount();
@@ -34,6 +45,14 @@ public MediaDetailAdapter(FragmentManager fm) {
3445

3546
@Override
3647
public Fragment getItem(int i) {
48+
if(i == 0) {
49+
// See bug https://code.google.com/p/android/issues/detail?id=27526
50+
pager.postDelayed(new Runnable() {
51+
public void run() {
52+
getSherlockActivity().supportInvalidateOptionsMenu();
53+
}
54+
}, 5);
55+
}
3756
return MediaDetailFragment.forMedia(i, editable);
3857
}
3958

@@ -55,6 +74,7 @@ public MediaDetailPagerFragment(Boolean editable) {
5574
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
5675
View view = inflater.inflate(R.layout.fragment_media_detail_pager, container, false);
5776
pager = (ViewPager) view.findViewById(R.id.mediaDetailsPager);
77+
pager.setOnPageChangeListener(this);
5878
pager.setAdapter(new MediaDetailAdapter(getChildFragmentManager()));
5979
if(savedInstanceState != null) {
6080
final int pageNumber = savedInstanceState.getInt("current-page");
@@ -119,6 +139,16 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
119139
menu.clear(); // see http://stackoverflow.com/a/8495697/17865
120140
inflater.inflate(R.menu.fragment_image_detail, menu);
121141
}
142+
if(pager != null) {
143+
MediaDetailProvider provider = (MediaDetailProvider)getSherlockActivity();
144+
Media m = provider.getMediaAtPosition(pager.getCurrentItem());
145+
if(m != null && !m.getFilename().startsWith("File:")) {
146+
// Crude way of checking if the file has been successfully saved!
147+
menu.findItem(R.id.menu_browser_current_image).setEnabled(false);
148+
menu.findItem(R.id.menu_share_current_image).setEnabled(false);
149+
return;
150+
}
151+
}
122152
}
123153

124154
public void showImage(int i) {

0 commit comments

Comments
 (0)