Merge pull request #152 from owncloud/oauth_login
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / preview / PreviewImageActivity.java
index 5148987..9b3e7d8 100644 (file)
@@ -2,9 +2,8 @@
  *   Copyright (C) 2012-2013  ownCloud Inc.
  *
  *   This program is free software: you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation, either version 2 of the License, or
- *   (at your option) any later version.
+ *   it under the terms of the GNU General Public License version 2,
+ *   as published by the Free Software Foundation.
  *
  *   This program is distributed in the hope that it will be useful,
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -17,8 +16,6 @@
  */
 package com.owncloud.android.ui.preview;
 
-import org.apache.commons.httpclient.methods.PostMethod;
-
 import android.accounts.Account;
 import android.app.Dialog;
 import android.app.ProgressDialog;
@@ -30,9 +27,7 @@ import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.IBinder;
-import android.support.v4.app.Fragment;
 import android.support.v4.view.ViewPager;
-import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnTouchListener;
@@ -53,6 +48,7 @@ import com.owncloud.android.ui.fragment.FileDetailFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
 
 import com.owncloud.android.AccountUtils;
+import com.owncloud.android.Log_OC;
 import com.owncloud.android.R;
 
 /**
@@ -171,12 +167,12 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
                 mDownloaderBinder = (FileDownloaderBinder) service;
                 if (mRequestWaitingForBinder) {
                     mRequestWaitingForBinder = false;
-                    Log.d(TAG, "Simulating reselection of current page after connection of download binder");
+                    Log_OC.d(TAG, "Simulating reselection of current page after connection of download binder");
                     onPageSelected(mViewPager.getCurrentItem());
                 }
                     
             } else if (component.equals(new ComponentName(PreviewImageActivity.this, FileUploader.class))) {
-                Log.d(TAG, "Upload service connected");
+                Log_OC.d(TAG, "Upload service connected");
                 mUploaderBinder = (FileUploaderBinder) service;
             } else {
                 return;
@@ -187,10 +183,10 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
         @Override
         public void onServiceDisconnected(ComponentName component) {
             if (component.equals(new ComponentName(PreviewImageActivity.this, FileDownloader.class))) {
-                Log.d(TAG, "Download service suddenly disconnected");
+                Log_OC.d(TAG, "Download service suddenly disconnected");
                 mDownloaderBinder = null;
             } else if (component.equals(new ComponentName(PreviewImageActivity.this, FileUploader.class))) {
-                Log.d(TAG, "Upload service suddenly disconnected");
+                Log_OC.d(TAG, "Upload service suddenly disconnected");
                 mUploaderBinder = null;
             }
         }
@@ -237,15 +233,16 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
     @Override
     protected void onResume() {
         super.onResume();
-        Log.e(TAG, "ACTIVITY, ONRESUME");
+        //Log.e(TAG, "ACTIVITY, ONRESUME");
         mDownloadFinishReceiver = new DownloadFinishReceiver();
         IntentFilter filter = new IntentFilter(FileDownloader.DOWNLOAD_FINISH_MESSAGE);
+        filter.addAction(FileDownloader.DOWNLOAD_ADDED_MESSAGE);
         registerReceiver(mDownloadFinishReceiver, filter);
     }
 
     @Override
     protected void onPostResume() {
-        Log.e(TAG, "ACTIVITY, ONPOSTRESUME");
+        //Log.e(TAG, "ACTIVITY, ONPOSTRESUME");
         super.onPostResume();
     }
     
@@ -320,12 +317,15 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
         showDetailsIntent.putExtra(FileDetailFragment.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this));
         showDetailsIntent.putExtra(FileDetailActivity.EXTRA_MODE, FileDetailActivity.MODE_DETAILS);
         startActivity(showDetailsIntent);
+        int pos = mPreviewImagePagerAdapter.getFilePosition(file);
+        file = mPreviewImagePagerAdapter.getFileAt(pos);
+        
     }
 
     
     private void requestForDownload(OCFile file) {
         if (mDownloaderBinder == null) {
-            Log.d(TAG, "requestForDownload called without binder to download service");
+            Log_OC.d(TAG, "requestForDownload called without binder to download service");
             
         } else if (!mDownloaderBinder.isDownloading(mAccount, file)) {
             Intent i = new Intent(this, FileDownloader.class);
@@ -349,19 +349,16 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
             OCFile currentFile = mPreviewImagePagerAdapter.getFileAt(position); 
             getSupportActionBar().setTitle(currentFile.getFileName());
             if (!currentFile.isDown()) {
-                requestForDownload(currentFile);
-            /*} else {
-                FileFragment fragment = mPreviewImagePagerAdapter.getFragmentAt(mViewPager.getCurrentItem());
-                if (fragment instanceof PreviewImageFragment) {
-                    ((PreviewImageFragment)fragment).showError();
-                }*/
+                if (!mPreviewImagePagerAdapter.pendingErrorAt(position)) {
+                    requestForDownload(currentFile);
+                }
             }
         }
     }
     
     /**
      * Called when the scroll state changes. Useful for discovering when the user begins dragging, 
-     * when the pager is automatically settling to the current page, or when it is fully stopped/idle.
+     * when the pager is automatically settling to the current page. when it is fully stopped/idle.
      * 
      * @param   State       The new scroll state (SCROLL_STATE_IDLE, _DRAGGING, _SETTLING
      */
@@ -384,15 +381,6 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
     }
     
 
-    private void updateCurrentDownloadFragment(boolean transferring) {
-        FileFragment fragment = mPreviewImagePagerAdapter.getFragmentAt(mViewPager.getCurrentItem());
-        if (fragment instanceof FileDownloadFragment) {
-            ((FileDownloadFragment) fragment).updateView(transferring); 
-            //mViewPager.invalidate();
-        }
-    }
-    
-    
     /**
      * Class waiting for broadcast events from the {@link FielDownloader} service.
      * 
@@ -410,20 +398,19 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
                 OCFile file = mStorageManager.getFileByPath(downloadedRemotePath);
                 int position = mPreviewImagePagerAdapter.getFilePosition(file);
                 boolean downloadWasFine = intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false);
-                boolean isCurrent =  (mViewPager.getCurrentItem() == position);
+                //boolean isOffscreen =  Math.abs((mViewPager.getCurrentItem() - position)) <= mViewPager.getOffscreenPageLimit();
                 
-                if (position >= 0) {
-                    /// ITS MY BUSSINESS
+                if (position >= 0 && intent.getAction().equals(FileDownloader.DOWNLOAD_FINISH_MESSAGE)) {
                     if (downloadWasFine) {
-                        mPreviewImagePagerAdapter.updateFile(position, file);
-                        mPreviewImagePagerAdapter.notifyDataSetChanged();
+                        mPreviewImagePagerAdapter.updateFile(position, file);   
                         
-                    } else if (isCurrent) {
-                        updateCurrentDownloadFragment(false);
+                    } else {
+                        mPreviewImagePagerAdapter.updateWithDownloadError(position);
                     }
+                    mPreviewImagePagerAdapter.notifyDataSetChanged();   // will trigger the creation of new fragments
                     
                 } else {
-                    Log.e(TAG, "DOWNLOADED FILE NOT FOUND IN ADAPTER ");
+                    Log_OC.d(TAG, "Download finished, but the fragment is offscreen");
                 }
                 
             }