Update image of play/pause button when audio playback starts
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / preview / PreviewImageActivity.java
index a55ae16..74ce769 100644 (file)
@@ -17,6 +17,8 @@
  */
 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;
@@ -28,6 +30,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;
@@ -134,7 +137,6 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
         position = (position >= 0) ? position : 0;
         mViewPager.setAdapter(mPreviewImagePagerAdapter); 
         mViewPager.setOnPageChangeListener(this);
-        Log.e(TAG, "Setting initial position " + position);
         mViewPager.setCurrentItem(position);
         if (position == 0 && !mFile.isDown()) {
             // this is necessary because mViewPager.setCurrentItem(0) just after setting the adapter does not result in a call to #onPageSelected(0) 
@@ -146,7 +148,6 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
     @Override
     public void onStart() {
         super.onStart();
-        Log.e(TAG, "PREVIEW ACTIVITY ON START");
         mDownloadConnection = new PreviewImageServiceConnection();
         bindService(new Intent(this, FileDownloader.class), mDownloadConnection, Context.BIND_AUTO_CREATE);
         mUploadConnection = new PreviewImageServiceConnection();
@@ -167,11 +168,10 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
         public void onServiceConnected(ComponentName component, IBinder service) {
                 
             if (component.equals(new ComponentName(PreviewImageActivity.this, FileDownloader.class))) {
-                Log.e(TAG, "PREVIEW_IMAGE Download service connected");
                 mDownloaderBinder = (FileDownloaderBinder) service;
                 if (mRequestWaitingForBinder) {
                     mRequestWaitingForBinder = false;
-                    Log.e(TAG, "Simulating reselection of current page after connection of download binder");
+                    Log.d(TAG, "Simulating reselection of current page after connection of download binder");
                     onPageSelected(mViewPager.getCurrentItem());
                 }
                     
@@ -237,17 +237,17 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
     @Override
     protected void onResume() {
         super.onResume();
-        Log.e(TAG, "PREVIEW 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");
         super.onPostResume();
-        Log.e(TAG, "PREVIEW ACTIVITY ONPOSTRESUME");
     }
     
     @Override
@@ -321,13 +321,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) {
-        Log.e(TAG, "REQUEST FOR DOWNLOAD : " + file.getFileName());
         if (mDownloaderBinder == null) {
-            Log.e(TAG, "requestForDownload called without binder to download service");
+            Log.d(TAG, "requestForDownload called without binder to download service");
             
         } else if (!mDownloaderBinder.isDownloading(mAccount, file)) {
             Intent i = new Intent(this, FileDownloader.class);
@@ -344,7 +346,6 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
      */
     @Override
     public void onPageSelected(int position) {
-        Log.e(TAG, "onPageSelected " + position);
         if (mDownloaderBinder == null) {
             mRequestWaitingForBinder = true;
             
@@ -352,8 +353,9 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
             OCFile currentFile = mPreviewImagePagerAdapter.getFileAt(position); 
             getSupportActionBar().setTitle(currentFile.getFileName());
             if (!currentFile.isDown()) {
-                requestForDownload(currentFile);
-                //updateCurrentDownloadFragment(true);        
+                if (!mPreviewImagePagerAdapter.pendingErrorAt(position)) {
+                    requestForDownload(currentFile);
+                }
             }
         }
     }
@@ -383,15 +385,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.
      * 
@@ -409,23 +402,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
-                    Log.e(TAG, "downloaded file FOUND in adapter");
+                if (position >= 0 && intent.getAction().equals(FileDownloader.DOWNLOAD_FINISH_MESSAGE)) {
                     if (downloadWasFine) {
-                        mPreviewImagePagerAdapter.updateFile(position, file);
-                        //Log.e(TAG, "BEFORE NOTIFY DATA SET CHANGED");
-                        mPreviewImagePagerAdapter.notifyDataSetChanged();
-                        //Log.e(TAG, "AFTER NOTIFY DATA SET CHANGED");
+                        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.d(TAG, "Download finished, but the fragment is offscreen");
                 }
                 
             }
@@ -437,16 +426,8 @@ public class PreviewImageActivity extends SherlockFragmentActivity implements Fi
 
     @Override
     public boolean onTouch(View v, MotionEvent event) {
-        Log.e(TAG, "TOUCH!!! **********************");
-        if (event.getAction() == MotionEvent.ACTION_DOWN) {
-            Log.e(TAG, "TOUCH DOWN!!! **********************");
-            
-        } else if (event.getAction() == MotionEvent.ACTION_UP) {
-            Log.e(TAG, "TOUCH UP!!! **********************");
-            toggleFullScreen();
-            
-        } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
-            Log.e(TAG, "TOUCH MOVE!!! **********************");
+        if (event.getAction() == MotionEvent.ACTION_UP) {
+           toggleFullScreen();
         }
         return true;
     }