|  |  |  | @ -146,6 +146,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im | 
		
	
		
			
				|  |  |  |  |                       View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |   private MediaItemAdapter adapter; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   public static Intent getPreviewIntent(Context context, MediaPreviewArgs args) { | 
		
	
		
			
				|  |  |  |  |     return getPreviewIntent(context, args.getSlide(), args.getMmsRecord(), args.getThread()); | 
		
	
	
		
			
				
					|  |  |  | @ -379,7 +380,8 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im | 
		
	
		
			
				|  |  |  |  |     if (conversationRecipient != null) { | 
		
	
		
			
				|  |  |  |  |       getSupportLoaderManager().restartLoader(0, null, this); | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       mediaPager.setAdapter(new SingleItemPagerAdapter(this, GlideApp.with(this), getWindow(), initialMediaUri, initialMediaType, initialMediaSize)); | 
		
	
		
			
				|  |  |  |  |       adapter = new SingleItemPagerAdapter(this, GlideApp.with(this), getWindow(), initialMediaUri, initialMediaType, initialMediaSize); | 
		
	
		
			
				|  |  |  |  |       mediaPager.setAdapter(adapter); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |       if (initialCaption != null) { | 
		
	
		
			
				|  |  |  |  |         detailsContainer.setVisibility(View.VISIBLE); | 
		
	
	
		
			
				
					|  |  |  | @ -507,13 +509,8 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   private @Nullable MediaItem getCurrentMediaItem() { | 
		
	
		
			
				|  |  |  |  |     MediaItemAdapter adapter = (MediaItemAdapter)mediaPager.getAdapter(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     if (adapter != null) { | 
		
	
		
			
				|  |  |  |  |       return adapter.getMediaItemFor(mediaPager.getCurrentItem()); | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       return null; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     if (adapter == null) return null; | 
		
	
		
			
				|  |  |  |  |     return adapter.getMediaItemFor(mediaPager.getCurrentItem()); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   public static boolean isContentTypeSupported(final String contentType) { | 
		
	
	
		
			
				
					|  |  |  | @ -529,9 +526,8 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im | 
		
	
		
			
				|  |  |  |  |   public void onLoadFinished(@NonNull Loader<Pair<Cursor, Integer>> loader, @Nullable Pair<Cursor, Integer> data) { | 
		
	
		
			
				|  |  |  |  |     if (data == null) return; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     CursorPagerAdapter adapter = new CursorPagerAdapter(this, GlideApp.with(this), getWindow(), data.first, data.second, leftIsRecent); | 
		
	
		
			
				|  |  |  |  |     adapter = new CursorPagerAdapter(this, GlideApp.with(this), getWindow(), data.first, data.second, leftIsRecent); | 
		
	
		
			
				|  |  |  |  |     mediaPager.setAdapter(adapter); | 
		
	
		
			
				|  |  |  |  |     adapter.setActive(true); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     viewModel.setCursor(this, data.first, leftIsRecent); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -562,26 +558,22 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im | 
		
	
		
			
				|  |  |  |  |       if (currentPage != -1 && currentPage != position) onPageUnselected(currentPage); | 
		
	
		
			
				|  |  |  |  |       currentPage = position; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |       MediaItemAdapter adapter = (MediaItemAdapter)mediaPager.getAdapter(); | 
		
	
		
			
				|  |  |  |  |       if (adapter == null) return; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |       if (adapter != null) { | 
		
	
		
			
				|  |  |  |  |         MediaItem item = adapter.getMediaItemFor(position); | 
		
	
		
			
				|  |  |  |  |         if (item.recipient != null) item.recipient.addListener(MediaPreviewActivity.this); | 
		
	
		
			
				|  |  |  |  |         viewModel.setActiveAlbumRailItem(MediaPreviewActivity.this, position); | 
		
	
		
			
				|  |  |  |  |         updateActionBar(); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |       MediaItem item = adapter.getMediaItemFor(position); | 
		
	
		
			
				|  |  |  |  |       if (item.recipient != null) item.recipient.addListener(MediaPreviewActivity.this); | 
		
	
		
			
				|  |  |  |  |       viewModel.setActiveAlbumRailItem(MediaPreviewActivity.this, position); | 
		
	
		
			
				|  |  |  |  |       updateActionBar(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     public void onPageUnselected(int position) { | 
		
	
		
			
				|  |  |  |  |       MediaItemAdapter adapter = (MediaItemAdapter)mediaPager.getAdapter(); | 
		
	
		
			
				|  |  |  |  |       if (adapter == null) return; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |       if (adapter != null) { | 
		
	
		
			
				|  |  |  |  |         MediaItem item = adapter.getMediaItemFor(position); | 
		
	
		
			
				|  |  |  |  |         if (item.recipient != null) item.recipient.removeListener(MediaPreviewActivity.this); | 
		
	
		
			
				|  |  |  |  |       MediaItem item = adapter.getMediaItemFor(position); | 
		
	
		
			
				|  |  |  |  |       if (item.recipient != null) item.recipient.removeListener(MediaPreviewActivity.this); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         adapter.pause(position); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |       adapter.pause(position); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     @Override | 
		
	
	
		
			
				
					|  |  |  | @ -595,7 +587,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   private static class SingleItemPagerAdapter extends PagerAdapter implements MediaItemAdapter { | 
		
	
		
			
				|  |  |  |  |   private static class SingleItemPagerAdapter extends MediaItemAdapter { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     private final GlideRequests glideRequests; | 
		
	
		
			
				|  |  |  |  |     private final Window        window; | 
		
	
	
		
			
				
					|  |  |  | @ -667,7 +659,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   private static class CursorPagerAdapter extends PagerAdapter implements MediaItemAdapter { | 
		
	
		
			
				|  |  |  |  |   private static class CursorPagerAdapter extends MediaItemAdapter { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     private final WeakHashMap<Integer, MediaView> mediaViews = new WeakHashMap<>(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -677,7 +669,6 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im | 
		
	
		
			
				|  |  |  |  |     private final Cursor        cursor; | 
		
	
		
			
				|  |  |  |  |     private final boolean       leftIsRecent; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     private boolean active; | 
		
	
		
			
				|  |  |  |  |     private int     autoPlayPosition; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     CursorPagerAdapter(@NonNull Context context, @NonNull GlideRequests glideRequests, | 
		
	
	
		
			
				
					|  |  |  | @ -692,15 +683,9 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im | 
		
	
		
			
				|  |  |  |  |       this.leftIsRecent     = leftIsRecent; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     public void setActive(boolean active) { | 
		
	
		
			
				|  |  |  |  |       this.active = active; | 
		
	
		
			
				|  |  |  |  |       notifyDataSetChanged(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     @Override | 
		
	
		
			
				|  |  |  |  |     public int getCount() { | 
		
	
		
			
				|  |  |  |  |       if (!active) return 0; | 
		
	
		
			
				|  |  |  |  |       else         return cursor.getCount(); | 
		
	
		
			
				|  |  |  |  |       return cursor.getCount(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     @Override | 
		
	
	
		
			
				
					|  |  |  | @ -802,9 +787,9 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   interface MediaItemAdapter { | 
		
	
		
			
				|  |  |  |  |     MediaItem getMediaItemFor(int position); | 
		
	
		
			
				|  |  |  |  |     void pause(int position); | 
		
	
		
			
				|  |  |  |  |     @Nullable View getPlaybackControls(int position); | 
		
	
		
			
				|  |  |  |  |   abstract static class MediaItemAdapter extends PagerAdapter { | 
		
	
		
			
				|  |  |  |  |     abstract MediaItem getMediaItemFor(int position); | 
		
	
		
			
				|  |  |  |  |     abstract void pause(int position); | 
		
	
		
			
				|  |  |  |  |     @Nullable abstract View getPlaybackControls(int position); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
	
		
			
				
					|  |  |  | 
 |