Improved error messages in gallery for images that can not be loaded
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / preview / PreviewImagePagerAdapter.java
index c6fd7ca..b6b2837 100644 (file)
@@ -36,7 +36,7 @@ import android.view.ViewGroup;
 
 import com.owncloud.android.datamodel.DataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.ui.fragment.FileDownloadFragment;
+import com.owncloud.android.ui.fragment.FileFragment;
 
 /**
  * Adapter class that provides Fragment instances  
@@ -51,6 +51,7 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
     private Vector<OCFile> mImageFiles;
     private Account mAccount;
     private Set<Object> mObsoleteFragments;
+    private Set<Integer> mObsoletePositions;
     private DataStorageManager mStorageManager;
     
     /*
@@ -70,7 +71,7 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
      */
     public PreviewImagePagerAdapter(FragmentManager fragmentManager, OCFile parentFolder, Account account, DataStorageManager storageManager) {
         super(fragmentManager);
-
+        
         if (fragmentManager == null) {
             throw new IllegalArgumentException("NULL FragmentManager instance");
         }
@@ -85,6 +86,8 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
         mStorageManager = storageManager;
         mImageFiles = mStorageManager.getDirectoryImages(parentFolder); 
         mObsoleteFragments = new HashSet<Object>();
+        mObsoletePositions = new HashSet<Integer>();
+        //mFragmentManager = fragmentManager;
     }
 
     
@@ -99,13 +102,12 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
 
     
     public Fragment getItem(int i) {
-        Log.e(TAG, "GETTING PAGE " + i);
         OCFile file = mImageFiles.get(i);
         Fragment fragment = null;
         if (file.isDown()) {
-            fragment = new PreviewImageFragment(file, mAccount);
+            fragment = new PreviewImageFragment(file, mAccount, mObsoletePositions.contains(Integer.valueOf(i)));
         } else {
-            fragment = new FileDownloadFragment(file, mAccount);
+            fragment = new FileDownloadFragment(file, mAccount, mObsoletePositions.contains(Integer.valueOf(i)));
         }
         return fragment;
     }
@@ -125,13 +127,13 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
     }
 
     public void updateFile(int position, OCFile file) {
-        mImageFiles.set(position, file);
         mObsoleteFragments.add(instantiateItem(null, position));
+        mObsoletePositions.add(Integer.valueOf(position));
+        mImageFiles.set(position, file);
     }
     
     @Override
     public int getItemPosition(Object object) {
-        Log.e(TAG, "getItemPosition ");
         if (mObsoleteFragments.contains(object)) {
             mObsoleteFragments.remove(object);
             return POSITION_NONE;
@@ -140,11 +142,26 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
     }
 
 
-    /* *
+    /**
+     * Should not be used for not already started fragments...
+     *  
+     * @return
+     */
+    protected FileFragment getFragmentAt(int position) {
+        try {
+            return (FileFragment) instantiateItem(null, position);
+            
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+
+    /* -*
      * Called when a change in the shown pages is going to start being made.
      * 
      * @param   container   The containing View which is displaying this adapter's page views.
-     * -/
+     */
     @Override
     public void startUpdate(ViewGroup container) {
         Log.e(TAG, "** startUpdate");
@@ -183,7 +200,7 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
         }
         fragment.setMenuVisibility(false);
         mFragments.set(position, fragment);
-        Log.e(TAG, "** \t adding fragment at position " + position + ", containerId " + container.getId());
+        //Log.e(TAG, "** \t adding fragment at position " + position + ", containerId " + container.getId());
         mCurTransaction.add(container.getId(), fragment);
 
         return fragment;
@@ -289,6 +306,6 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter {
                 }
             }
         }
-    } */
-    
+    }
+    */
 }