16
16
17
17
import org .wikimedia .commons .*;
18
18
19
- public class MediaDetailPagerFragment extends SherlockFragment {
19
+ public class MediaDetailPagerFragment extends SherlockFragment implements ViewPager . OnPageChangeListener {
20
20
private ViewPager pager ;
21
21
private Boolean editable ;
22
22
private CommonsApplication app ;
23
23
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
+
24
35
public interface MediaDetailProvider {
25
36
public Media getMediaAtPosition (int i );
26
37
public int getTotalMediaCount ();
@@ -34,6 +45,14 @@ public MediaDetailAdapter(FragmentManager fm) {
34
45
35
46
@ Override
36
47
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
+ }
37
56
return MediaDetailFragment .forMedia (i , editable );
38
57
}
39
58
@@ -55,6 +74,7 @@ public MediaDetailPagerFragment(Boolean editable) {
55
74
public View onCreateView (LayoutInflater inflater , ViewGroup container , Bundle savedInstanceState ) {
56
75
View view = inflater .inflate (R .layout .fragment_media_detail_pager , container , false );
57
76
pager = (ViewPager ) view .findViewById (R .id .mediaDetailsPager );
77
+ pager .setOnPageChangeListener (this );
58
78
pager .setAdapter (new MediaDetailAdapter (getChildFragmentManager ()));
59
79
if (savedInstanceState != null ) {
60
80
final int pageNumber = savedInstanceState .getInt ("current-page" );
@@ -119,6 +139,16 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
119
139
menu .clear (); // see http://stackoverflow.com/a/8495697/17865
120
140
inflater .inflate (R .menu .fragment_image_detail , menu );
121
141
}
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
+ }
122
152
}
123
153
124
154
public void showImage (int i ) {
0 commit comments