Merge remote-tracking branch 'remotes/upstream/animatedGif' into beta
authortobiasKaminsky <tobias@kaminsky.me>
Tue, 27 Oct 2015 20:31:22 +0000 (21:31 +0100)
committertobiasKaminsky <tobias@kaminsky.me>
Tue, 27 Oct 2015 20:31:22 +0000 (21:31 +0100)
1  2 
src/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@@ -41,10 -41,8 +41,10 @@@ import android.widget.ImageView
  import android.widget.ProgressBar;
  import android.widget.TextView;
  
 +import com.owncloud.android.MainApp;
  import com.owncloud.android.R;
  import com.owncloud.android.datamodel.OCFile;
 +import com.owncloud.android.datamodel.ThumbnailsCacheManager;
  import com.owncloud.android.files.FileMenuFilter;
  import com.owncloud.android.lib.common.utils.Log_OC;
  import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
@@@ -76,8 -74,6 +76,8 @@@ public class PreviewImageFragment exten
      private TextView mMessageView;
      private ProgressBar mProgressWheel;
  
 +    private Boolean mShowResizedImage = false;
 +
      public Bitmap mBitmap = null;
  
      private static final String TAG = PreviewImageFragment.class.getSimpleName();
       *                                  {@link FragmentStatePagerAdapter}
       *                                  ; TODO better solution
       */
 -    public static PreviewImageFragment newInstance(OCFile imageFile, boolean ignoreFirstSavedState){
 +    public static PreviewImageFragment newInstance(OCFile imageFile, boolean ignoreFirstSavedState,
 +            boolean showResizedImage){
          PreviewImageFragment frag = new PreviewImageFragment();
 +        frag.mShowResizedImage = showResizedImage;
          Bundle args = new Bundle();
          args.putParcelable(ARG_FILE, imageFile);
          args.putBoolean(ARG_IGNORE_FIRST, ignoreFirstSavedState);
          if (getFile() == null) {
              throw new IllegalStateException("Instanced with a NULL OCFile");
          }
 -        if (!getFile().isDown()) {
 -            throw new IllegalStateException("There is no local file to preview");
 -        }
      }
  
  
      public void onStart() {
          super.onStart();
          if (getFile() != null) {
 -            mLoadBitmapTask = new LoadBitmapTask(mImageView, mMessageView, mProgressWheel);
 -            //mLoadBitmapTask.execute(new String[]{getFile().getStoragePath()});
 -//            mLoadBitmapTask.execute(getFile().getStoragePath());
 -            mLoadBitmapTask.execute(getFile());
 +            mImageView.setTag(getFile().getFileId());
 +
 +            if (mShowResizedImage){
 +                Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(
 +                        String.valueOf("r" + getFile().getRemoteId())
 +                );
 +
 +                if (thumbnail != null && !getFile().needsUpdateThumbnail()){
 +                    mProgressWheel.setVisibility(View.GONE);
 +                    mImageView.setImageBitmap(thumbnail);
 +                    mImageView.setVisibility(View.VISIBLE);
 +                    mBitmap  = thumbnail;
 +                } else {
 +                // generate new Thumbnail
 +                    if (ThumbnailsCacheManager.cancelPotentialWork(getFile(), mImageView)) {
 +                        final ThumbnailsCacheManager.ThumbnailGenerationTask task =
 +                                new ThumbnailsCacheManager.ThumbnailGenerationTask(
 +                                        mImageView, mContainerActivity.getStorageManager(),
 +                                        mContainerActivity.getStorageManager().getAccount(),
 +                                        mProgressWheel);
 +                        if (thumbnail == null) {
 +                            thumbnail = ThumbnailsCacheManager.mDefaultImg;
 +                        }
 +                        final ThumbnailsCacheManager.AsyncDrawable asyncDrawable =
 +                                new ThumbnailsCacheManager.AsyncDrawable(
 +                                        MainApp.getAppContext().getResources(),
 +                                        thumbnail,
 +                                        task
 +                                );
 +                        mImageView.setImageDrawable(asyncDrawable);
 +                        task.execute(getFile(), false);
 +                    }
 +            }
 +            } else {
 +                mLoadBitmapTask = new LoadBitmapTask(mImageView, mMessageView, mProgressWheel);
 +                mLoadBitmapTask.execute(getFile());
 +            }
          }
      }
  
                  return true;
              }
              case R.id.action_send_file: {
 -                mContainerActivity.getFileOperationsHelper().sendDownloadedFile(getFile());
 -                return true;
 +                if (getFile().isImage() && !getFile().isDown()){
 +                    mContainerActivity.getFileOperationsHelper().sendCachedImage(getFile());
 +                    return true;
 +                } else {
 +                    mContainerActivity.getFileOperationsHelper().sendDownloadedFile(getFile());
 +                    return true;
 +                }
              }
              case R.id.action_sync_file: {
                  mContainerActivity.getFileOperationsHelper().syncFile(getFile());
                      imageView.setBackground(backrepeat);
                  }
  
-                 imageView.setImageBitmap(bitmap);
+                 if (result.ocFile.getMimetype().equalsIgnoreCase("image/gif")){
+                     imageView.setGifImage(result.ocFile);
+                 } else {
+                     imageView.setImageBitmap(bitmap);
+                 }
                  imageView.setVisibility(View.VISIBLE);
                  mBitmap  = bitmap;  // needs to be kept for recycling when not useful
              }