Forráskód Böngészése

Implement checkboards for svg

Mario Danic 8 éve
szülő
commit
c0f4b80c43

+ 44 - 25
src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -114,10 +114,10 @@ public class PreviewImageFragment extends FileFragment {
      *
      * This method hides to client objects the need of doing the construction in two steps.
      *
-     * @param imageFile                 An {@link OCFile} to preview as an image in the fragment
-     * @param ignoreFirstSavedState     Flag to work around an unexpected behaviour of
-     *                                  {@link FragmentStatePagerAdapter}
-     *                                  ; TODO better solution
+     * @param imageFile             An {@link OCFile} to preview as an image in the fragment
+     * @param ignoreFirstSavedState Flag to work around an unexpected behaviour of
+     *                              {@link FragmentStatePagerAdapter}
+     *                              ; TODO better solution
      */
     public static PreviewImageFragment newInstance(OCFile imageFile, boolean ignoreFirstSavedState) {
         PreviewImageFragment frag = new PreviewImageFragment();
@@ -130,13 +130,13 @@ public class PreviewImageFragment extends FileFragment {
 
 
     /**
-     *  Creates an empty fragment for image previews.
+     * Creates an empty fragment for image previews.
      *
-     *  MUST BE KEPT: the system uses it when tries to reinstantiate a fragment automatically
-     *  (for instance, when the device is turned a aside).
+     * MUST BE KEPT: the system uses it when tries to reinstantiate a fragment automatically
+     * (for instance, when the device is turned a aside).
      *
-     *  DO NOT CALL IT: an {@link OCFile} and {@link Account} must be provided for a successful
-     *  construction
+     * DO NOT CALL IT: an {@link OCFile} and {@link Account} must be provided for a successful
+     * construction
      */
     public PreviewImageFragment() {
         mIgnoreFirstSavedState = false;
@@ -185,7 +185,7 @@ public class PreviewImageFragment extends FileFragment {
                 toggleImageBackground();
             }
         });
-        
+
         mMultiView = (RelativeLayout) view.findViewById(R.id.multi_view);
 
         setupMultiView(view);
@@ -342,7 +342,7 @@ public class PreviewImageFragment extends FileFragment {
             case R.id.action_share_file:
                 mContainerActivity.getFileOperationsHelper().showShareFile(getFile());
                 return true;
-            
+
             case R.id.action_open_file_with:
                 openFile();
                 return true;
@@ -544,35 +544,53 @@ public class PreviewImageFragment extends FileFragment {
         private void showLoadedImage(LoadImage result) {
             final ImageViewCustom imageView = mImageViewRef.get();
             Bitmap bitmap = result.bitmap;
+
+
             if (imageView != null) {
-                if(bitmap != null) {
+                if (bitmap != null) {
                     Log_OC.d(TAG, "Showing image with resolution " + bitmap.getWidth() + "x" +
                             bitmap.getHeight());
                 }
 
-                if (result.ocFile.getMimetype().equalsIgnoreCase("image/png")) {
+                if (result.ocFile.getMimetype().equalsIgnoreCase("image/png") ||
+                        result.ocFile.getMimetype().equals("image/svg+xml")) {
                     if (getResources() != null) {
                         Resources r = getResources();
                         Drawable[] layers = new Drawable[2];
                         layers[0] = r.getDrawable(R.color.white);
-                        Drawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap);
+                        Drawable bitmapDrawable;
+                        if (result.ocFile.getMimetype().equalsIgnoreCase("image/png") ) {
+                            bitmapDrawable = new BitmapDrawable(getResources(), bitmap);
+                        } else {
+                            bitmapDrawable = result.drawable;
+                        }
                         layers[1] = bitmapDrawable;
                         LayerDrawable layerDrawable = new LayerDrawable(layers);
-                        layerDrawable.setLayerHeight(0, convertDpToPixel(bitmap.getHeight(), getActivity()));
-                        layerDrawable.setLayerHeight(1, convertDpToPixel(bitmap.getHeight(), getActivity()));
-                        layerDrawable.setLayerWidth(0, convertDpToPixel(bitmap.getWidth(), getActivity()));
-                        layerDrawable.setLayerWidth(1, convertDpToPixel(bitmap.getWidth(), getActivity()));
+                        if (result.ocFile.getMimetype().equalsIgnoreCase("image/png") ) {
+                            layerDrawable.setLayerHeight(0, convertDpToPixel(bitmap.getHeight(), getActivity()));
+                            layerDrawable.setLayerHeight(1, convertDpToPixel(bitmap.getHeight(), getActivity()));
+                            layerDrawable.setLayerWidth(0, convertDpToPixel(bitmap.getWidth(), getActivity()));
+                            layerDrawable.setLayerWidth(1, convertDpToPixel(bitmap.getWidth(), getActivity()));
+                        } else {
+                            layerDrawable.setLayerHeight(0, convertDpToPixel(bitmapDrawable.getIntrinsicHeight(),
+                                    getActivity()));
+                            layerDrawable.setLayerHeight(1, convertDpToPixel(bitmapDrawable.getIntrinsicHeight(),
+                                    getActivity()));
+                            layerDrawable.setLayerWidth(0, convertDpToPixel(bitmapDrawable.getIntrinsicWidth(),
+                                    getActivity()));
+                            layerDrawable.setLayerWidth(1, convertDpToPixel(bitmapDrawable.getIntrinsicWidth(),
+                                    getActivity()));
+                        }
                         imageView.setImageDrawable(layerDrawable);
                     } else {
                         imageView.setImageBitmap(bitmap);
                     }
                 }
 
-                if (result.ocFile.getMimetype().equalsIgnoreCase("image/svg+xml")) {
-                    imageView.setImageDrawable(result.drawable);
-                } else if (result.ocFile.getMimetype().equalsIgnoreCase("image/gif")) {
+                if (result.ocFile.getMimetype().equalsIgnoreCase("image/gif")) {
                     imageView.setGIFImageFromStoragePath(result.ocFile.getStoragePath());
-                } else if (!result.ocFile.getMimetype().equalsIgnoreCase("image/png")) {
+                } else if (!result.ocFile.getMimetype().equalsIgnoreCase("image/png") &&
+                        !result.ocFile.getMimetype().equals("image/svg+xml")) {
                     imageView.setImageBitmap(bitmap);
                 }
 
@@ -620,8 +638,8 @@ public class PreviewImageFragment extends FileFragment {
      * Helper method to test if an {@link OCFile} can be passed to a {@link PreviewImageFragment}
      * to be previewed.
      *
-     * @param file      File to test if can be previewed.
-     * @return          'True' if the file can be handled by the fragment.
+     * @param file File to test if can be previewed.
+     * @return 'True' if the file can be handled by the fragment.
      */
     public static boolean canBePreviewed(OCFile file) {
         return (file != null && MimeTypeUtil.isImage(file));
@@ -637,7 +655,8 @@ public class PreviewImageFragment extends FileFragment {
     }
 
     private void toggleImageBackground() {
-        if (getFile() != null && getFile().getMimetype().equalsIgnoreCase("image/png") && getActivity() != null
+        if (getFile() != null && (getFile().getMimetype().equalsIgnoreCase("image/png") ||
+                getFile().getMimetype().equalsIgnoreCase("image/svg+xml")) && getActivity() != null
                 && getActivity() instanceof PreviewImageActivity && getResources() != null) {
             PreviewImageActivity previewImageActivity = (PreviewImageActivity) getActivity();
             LayerDrawable layerDrawable = (LayerDrawable) mImageView.getDrawable();