Browse Source

resolves #1456 - show nice error message instead of crash via exception

AndyScherzinger 7 years ago
parent
commit
fa976159b7

+ 12 - 20
src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -34,6 +34,7 @@ import android.os.Build;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.os.Process;
 import android.os.Process;
 import android.support.annotation.DrawableRes;
 import android.support.annotation.DrawableRes;
+import android.support.annotation.NonNull;
 import android.support.annotation.StringRes;
 import android.support.annotation.StringRes;
 import android.support.v4.app.FragmentStatePagerAdapter;
 import android.support.v4.app.FragmentStatePagerAdapter;
 import android.util.DisplayMetrics;
 import android.util.DisplayMetrics;
@@ -121,7 +122,7 @@ public class PreviewImageFragment extends FileFragment {
      *                              {@link FragmentStatePagerAdapter}
      *                              {@link FragmentStatePagerAdapter}
      *                              ; TODO better solution
      *                              ; TODO better solution
      */
      */
-    public static PreviewImageFragment newInstance(OCFile imageFile, boolean ignoreFirstSavedState) {
+    public static PreviewImageFragment newInstance(@NonNull OCFile imageFile, boolean ignoreFirstSavedState) {
         PreviewImageFragment frag = new PreviewImageFragment();
         PreviewImageFragment frag = new PreviewImageFragment();
         Bundle args = new Bundle();
         Bundle args = new Bundle();
         args.putParcelable(ARG_FILE, imageFile);
         args.putParcelable(ARG_FILE, imageFile);
@@ -152,7 +153,7 @@ public class PreviewImageFragment extends FileFragment {
     public void onCreate(Bundle savedInstanceState) {
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
         Bundle args = getArguments();
         Bundle args = getArguments();
-        setFile((OCFile) args.getParcelable(ARG_FILE));
+        setFile(args.getParcelable(ARG_FILE));
         // TODO better in super, but needs to check ALL the class extending FileFragment;
         // TODO better in super, but needs to check ALL the class extending FileFragment;
         // not right now
         // not right now
 
 
@@ -218,15 +219,8 @@ public class PreviewImageFragment extends FileFragment {
                 mIgnoreFirstSavedState = false;
                 mIgnoreFirstSavedState = false;
             }
             }
         }
         }
-        if (getFile() == null) {
-            throw new IllegalStateException("Instanced with a NULL OCFile");
-        }
-        if (!getFile().isDown()) {
-            throw new IllegalStateException("There is no local file to preview");
-        }
     }
     }
 
 
-
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
@@ -236,19 +230,17 @@ public class PreviewImageFragment extends FileFragment {
         outState.putParcelable(PreviewImageFragment.EXTRA_FILE, getFile());
         outState.putParcelable(PreviewImageFragment.EXTRA_FILE, getFile());
     }
     }
 
 
-
     @Override
     @Override
     public void onStart() {
     public void onStart() {
         super.onStart();
         super.onStart();
-        if (getFile() != null) {
+        if (getFile() != null && !getFile().isDown()) {
+            showErrorMessage(R.string.preview_image_error_no_local_file);
+        } else if (getFile() != null) {
             mLoadBitmapTask = new LoadBitmapTask(mImageView);
             mLoadBitmapTask = new LoadBitmapTask(mImageView);
-            //mLoadBitmapTask.execute(new String[]{getFile().getStoragePath()});
-//            mLoadBitmapTask.execute(getFile().getStoragePath());
             mLoadBitmapTask.execute(getFile());
             mLoadBitmapTask.execute(getFile());
         }
         }
     }
     }
 
 
-
     @Override
     @Override
     public void onStop() {
     public void onStop() {
         Log_OC.d(TAG, "onStop starts");
         Log_OC.d(TAG, "onStop starts");
@@ -557,7 +549,7 @@ public class PreviewImageFragment extends FileFragment {
             if (result.bitmap != null || result.drawable != null) {
             if (result.bitmap != null || result.drawable != null) {
                 showLoadedImage(result);
                 showLoadedImage(result);
             } else {
             } else {
-                showErrorMessage();
+                showErrorMessage(mErrorMessageId);
             }
             }
             if (result.bitmap != null && mBitmap != result.bitmap) {
             if (result.bitmap != null && mBitmap != result.bitmap) {
                 // unused bitmap, release it! (just in case)
                 // unused bitmap, release it! (just in case)
@@ -632,11 +624,11 @@ public class PreviewImageFragment extends FileFragment {
             mImageView.setVisibility(View.VISIBLE);
             mImageView.setVisibility(View.VISIBLE);
 
 
         }
         }
+    }
 
 
-        private void showErrorMessage() {
-            mImageView.setBackgroundColor(Color.TRANSPARENT);
-            setMessageForMultiList(mErrorMessageId, R.string.preview_sorry, R.drawable.file_image);
-        }
+    private void showErrorMessage(@StringRes int errorMessageId) {
+        mImageView.setBackgroundColor(Color.TRANSPARENT);
+        setMessageForMultiList(R.string.preview_sorry, errorMessageId, R.drawable.file_image);
     }
     }
 
 
     private void setMultiListLoadingMessage() {
     private void setMultiListLoadingMessage() {
@@ -655,9 +647,9 @@ public class PreviewImageFragment extends FileFragment {
             mMultiListMessage.setText(message);
             mMultiListMessage.setText(message);
             mMultiListIcon.setImageResource(icon);
             mMultiListIcon.setImageResource(icon);
 
 
+            mMultiListMessage.setVisibility(View.VISIBLE);
             mMultiListIcon.setVisibility(View.VISIBLE);
             mMultiListIcon.setVisibility(View.VISIBLE);
             mMultiListProgress.setVisibility(View.GONE);
             mMultiListProgress.setVisibility(View.GONE);
-
         }
         }
     }
     }
 
 

+ 6 - 9
src/main/java/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java

@@ -138,22 +138,19 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
     
     
     public Fragment getItem(int i) {
     public Fragment getItem(int i) {
         OCFile file = mImageFiles.get(i);
         OCFile file = mImageFiles.get(i);
-        Fragment fragment = null;
+        Fragment fragment;
         if (file.isDown()) {
         if (file.isDown()) {
-            fragment = PreviewImageFragment.newInstance(file,
-                    mObsoletePositions.contains(Integer.valueOf(i)));
+            fragment = PreviewImageFragment.newInstance(file, mObsoletePositions.contains(i));
             
             
-        } else if (mDownloadErrors.contains(Integer.valueOf(i))) {
+        } else if (mDownloadErrors.contains(i)) {
             fragment = FileDownloadFragment.newInstance(file, mAccount, true);
             fragment = FileDownloadFragment.newInstance(file, mAccount, true);
             ((FileDownloadFragment)fragment).setError(true);
             ((FileDownloadFragment)fragment).setError(true);
-            mDownloadErrors.remove(Integer.valueOf(i));
+            mDownloadErrors.remove(i);
             
             
         } else {
         } else {
-            fragment = FileDownloadFragment.newInstance(
-                    file, mAccount, mObsoletePositions.contains(Integer.valueOf(i))
-            );
+            fragment = FileDownloadFragment.newInstance(file, mAccount, mObsoletePositions.contains(i));
         }
         }
-        mObsoletePositions.remove(Integer.valueOf(i));
+        mObsoletePositions.remove(i);
         return fragment;
         return fragment;
     }
     }
 
 

+ 2 - 1
src/main/res/values/strings.xml

@@ -342,9 +342,10 @@
     <string name="conflict_use_local_version">local version</string>
     <string name="conflict_use_local_version">local version</string>
     <string name="conflict_use_server_version">server version</string>
     <string name="conflict_use_server_version">server version</string>
 
 
-    <string name="preview_sorry">Sorry.</string>
+    <string name="preview_sorry">Sorry</string>
     <string name="preview_image_description">Image preview</string>
     <string name="preview_image_description">Image preview</string>
     <string name="preview_image_error_unknown_format">Unable to show image</string>
     <string name="preview_image_error_unknown_format">Unable to show image</string>
+    <string name="preview_image_error_no_local_file">There is no local file to preview</string>
 
 
     <string name="error__upload__local_file_not_copied">%1$s could not be copied to %2$s local folder</string>
     <string name="error__upload__local_file_not_copied">%1$s could not be copied to %2$s local folder</string>
     <string name="prefs_instant_upload_path_title">Instant upload folder</string>
     <string name="prefs_instant_upload_path_title">Instant upload folder</string>