Merge branch 'develop' into send_file_pr311_with_develop
authormasensio <masensio@solidgear.es>
Wed, 19 Feb 2014 07:51:58 +0000 (08:51 +0100)
committermasensio <masensio@solidgear.es>
Wed, 19 Feb 2014 07:51:58 +0000 (08:51 +0100)
1  2 
src/com/owncloud/android/files/FileOperationsHelper.java
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
src/com/owncloud/android/ui/fragment/FileDetailFragment.java
src/com/owncloud/android/ui/fragment/OCFileListFragment.java
src/com/owncloud/android/ui/preview/PreviewImageFragment.java
src/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@@ -28,8 -28,8 +28,8 @@@ import android.widget.Toast
  
  import com.owncloud.android.R;
  import com.owncloud.android.datamodel.OCFile;
- import com.owncloud.android.lib.accounts.OwnCloudAccount;
- import com.owncloud.android.lib.network.webdav.WebdavUtils;
+ import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
+ import com.owncloud.android.lib.common.network.WebdavUtils;
  import com.owncloud.android.services.OperationsService;
  import com.owncloud.android.ui.activity.FileActivity;
  import com.owncloud.android.ui.dialog.ActivityChooserDialog;
@@@ -135,11 -135,11 +135,11 @@@ public class FileOperationsHelper 
      public boolean isSharedSupported(FileActivity callerActivity) {
          if (callerActivity.getAccount() != null) {
              AccountManager accountManager = AccountManager.get(callerActivity);
-             return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_SUPPORTS_SHARE_API));
+             return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), Constants.KEY_SUPPORTS_SHARE_API));
          }
          return false;
      }
 -
 +    
      
      public void unshareFileWithLink(OCFile file, FileActivity callerActivity) {
          
              
          }
      }
 +    
 +    public void sendDownloadedFile(OCFile file, FileActivity callerActivity) {
 +        if (file != null) {
 +            Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND);
 +            // set MimeType
 +            sendIntent.setType(file.getMimetype());
 +            sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getStoragePath()));
 +            sendIntent.putExtra(Intent.ACTION_SEND, true);      // Send Action
 +            
 +            // Show dialog, without the own app
 +            String[] packagesToExclude = new String[] { callerActivity.getPackageName() };
 +            DialogFragment chooserDialog = ActivityChooserDialog.newInstance(sendIntent, packagesToExclude, file);
 +            chooserDialog.show(callerActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG);
 +
 +        } else {
 +            Log_OC.wtf(TAG, "Trying to send a NULL OCFile");
 +        }
 +    }
 +
  }
@@@ -67,9 -67,9 +67,9 @@@ import com.owncloud.android.files.servi
  import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
  import com.owncloud.android.operations.CreateFolderOperation;
  
- import com.owncloud.android.lib.operations.common.RemoteOperation;
- import com.owncloud.android.lib.operations.common.RemoteOperationResult;
- import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;
+ import com.owncloud.android.lib.common.operations.RemoteOperation;
+ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
  import com.owncloud.android.operations.CreateShareOperation;
  import com.owncloud.android.operations.RemoveFileOperation;
  import com.owncloud.android.operations.RenameFileOperation;
@@@ -86,6 -86,7 +86,6 @@@ import com.owncloud.android.ui.fragment
  import com.owncloud.android.ui.fragment.FileFragment;
  import com.owncloud.android.ui.fragment.OCFileListFragment;
  import com.owncloud.android.ui.preview.PreviewImageActivity;
 -import com.owncloud.android.ui.preview.PreviewImageFragment;
  import com.owncloud.android.ui.preview.PreviewMediaFragment;
  import com.owncloud.android.ui.preview.PreviewVideoActivity;
  import com.owncloud.android.utils.DisplayUtils;
@@@ -119,8 -120,7 +119,8 @@@ OCFileListFragment.ContainerActivity, F
  
      private static final String KEY_WAITING_TO_PREVIEW = "WAITING_TO_PREVIEW";
      private static final String KEY_SYNC_IN_PROGRESS = "SYNC_IN_PROGRESS";
 -    private static final String KEY_REFRESH_SHARES_IN_PROGRESS = "SHARES_IN_PROGRESS";
 +    //private static final String KEY_REFRESH_SHARES_IN_PROGRESS = "SHARES_IN_PROGRESS";
 +    private static final String KEY_WAITING_TO_SEND = "WAITING_TO_SEND";
  
      public static final int DIALOG_SHORT_WAIT = 0;
      private static final int DIALOG_CHOOSE_UPLOAD_SOURCE = 1;
      private boolean mSyncInProgress = false;
      //private boolean mRefreshSharesInProgress = false;
  
 +    private OCFile mWaitingToSend;
 +
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          Log_OC.d(TAG, "onCreate() start");
              mWaitingToPreview = (OCFile) savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW);
              mSyncInProgress = savedInstanceState.getBoolean(KEY_SYNC_IN_PROGRESS);
              //mRefreshSharesInProgress = savedInstanceState.getBoolean(KEY_REFRESH_SHARES_IN_PROGRESS);
 +            mWaitingToSend = (OCFile) savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND);
             
          } else {
              mWaitingToPreview = null;
              mSyncInProgress = false;
              //mRefreshSharesInProgress = false;
 +            mWaitingToSend = null;
          }        
  
          /// USER INTERFACE
          outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW, mWaitingToPreview);
          outState.putBoolean(FileDisplayActivity.KEY_SYNC_IN_PROGRESS, mSyncInProgress);
          //outState.putBoolean(FileDisplayActivity.KEY_REFRESH_SHARES_IN_PROGRESS, mRefreshSharesInProgress);
 +        outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND, mWaitingToSend);
  
          Log_OC.d(TAG, "onSaveInstanceState() end");
      }
                  refreshSecondFragment(intent.getAction(), downloadedRemotePath, intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false));
              }
  
 +            if (mWaitingToSend != null) {
 +                mWaitingToSend = getStorageManager().getFileByPath(mWaitingToSend.getRemotePath()); // Update the file to send
 +                if (mWaitingToSend.isDown()) {
 +                    sendDownloadedFile();
 +                }
 +            }
 +            
              removeStickyBroadcast(intent);
          }
  
      }
      */
  
 +    /**
 +     * Requests the download of the received {@link OCFile} , updates the UI
 +     * to monitor the download progress and prepares the activity to send the file
 +     * when the download finishes.
 +     * 
 +     * @param file          {@link OCFile} to download and preview.
 +     */
 +    @Override
 +    public void startDownloadForSending(OCFile file) {
 +        mWaitingToSend = file;
 +        requestForDownload(mWaitingToSend);
 +        updateFragmentsVisibility(true);
 +    }
 +    
 +    private void requestForDownload(OCFile file) {
 +        Account account = getAccount();
 +        if (!mDownloaderBinder.isDownloading(account, file)) {
 +            Intent i = new Intent(this, FileDownloader.class);
 +            i.putExtra(FileDownloader.EXTRA_ACCOUNT, account);
 +            i.putExtra(FileDownloader.EXTRA_FILE, file);
 +            startService(i);
 +        }
 +    }
 +    
 +    private void sendDownloadedFile(){
 +        dismissLoadingDialog();
 +        getFileOperationsHelper().sendDownloadedFile(mWaitingToSend, this);
 +        mWaitingToSend = null;
 +    }
 +    
  }
@@@ -50,11 -50,11 +50,11 @@@ import com.owncloud.android.files.servi
  import com.owncloud.android.files.services.FileUploader;
  import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
  import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
- import com.owncloud.android.lib.network.OnDatatransferProgressListener;
- import com.owncloud.android.lib.operations.common.OnRemoteOperationListener;
- import com.owncloud.android.lib.operations.common.RemoteOperation;
- import com.owncloud.android.lib.operations.common.RemoteOperationResult;
- import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;
+ import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
+ import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
+ import com.owncloud.android.lib.common.operations.RemoteOperation;
+ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
  import com.owncloud.android.operations.RemoveFileOperation;
  import com.owncloud.android.operations.RenameFileOperation;
  import com.owncloud.android.operations.SynchronizeFileOperation;
@@@ -376,19 -376,6 +376,19 @@@ public class FileDetailFragment extend
                  synchronizeFile();
                  return true;
              }
 +            case R.id.action_send_file: {
 +                FileDisplayActivity activity = (FileDisplayActivity) getSherlockActivity();
 +                // Obtain the file
 +                if (!getFile().isDown()) {  // Download the file                    
 +                    //activity.showLoadingDialog();
 +                    Log_OC.d(TAG, getFile().getRemotePath() + " : File must be downloaded");
 +                    activity.startDownloadForSending(getFile());
 +                    
 +                } else {
 +                    activity.getFileOperationsHelper().sendDownloadedFile(getFile(), activity);
 +                }
 +                return true;
 +            }
              default:
                  return false;
          }
@@@ -27,8 -27,8 +27,8 @@@ import com.owncloud.android.datamodel.F
  import com.owncloud.android.datamodel.OCFile;
  import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
  import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
- import com.owncloud.android.lib.operations.common.OnRemoteOperationListener;
- import com.owncloud.android.lib.operations.common.RemoteOperation;
+ import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
+ import com.owncloud.android.lib.common.operations.RemoteOperation;
  import com.owncloud.android.operations.RemoveFileOperation;
  import com.owncloud.android.operations.RenameFileOperation;
  import com.owncloud.android.operations.SynchronizeFileOperation;
@@@ -44,6 -44,8 +44,6 @@@ import com.owncloud.android.utils.Log_O
  
  import android.accounts.Account;
  import android.app.Activity;
 -import android.content.Intent;
 -import android.net.Uri;
  import android.os.Bundle;
  import android.os.Handler;
  import android.view.ContextMenu;
@@@ -220,7 -222,7 +220,7 @@@ public class OCFileListFragment extend
              toHide.add(R.id.action_cancel_upload);
              toHide.add(R.id.action_sync_file);
              toHide.add(R.id.action_see_details);
 -            toHide.add(R.id.action_share_file);
 +            toHide.add(R.id.action_send_file);
              if (    mContainerActivity.getFileDownloaderBinder().isDownloading(AccountUtils.getCurrentOwnCloudAccount(getActivity()), targetFile) ||
                      mContainerActivity.getFileUploaderBinder().isUploading(AccountUtils.getCurrentOwnCloudAccount(getActivity()), targetFile)           ) {
                  toDisable.add(R.id.action_rename_file);
                  return true;
              }
              case R.id.action_send_file: {
 -                Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
 -                // set MimeType
 -                sharingIntent.setType(mTargetFile.getMimetype());
 -                sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+mTargetFile.getStoragePath()));
 -                startActivity(Intent.createChooser(sharingIntent, "Share via")); 
 +                // Obtain the file
 +                if (!mTargetFile.isDown()) {  // Download the file
 +                    ((FileDisplayActivity) getSherlockActivity()).showLoadingDialog();
 +                    Log_OC.d(TAG, mTargetFile.getRemotePath() + " : File must be downloaded");
 +                    mContainerActivity.startDownloadForSending(mTargetFile);
 +                    
 +                } else {
 +                
 +                    FileDisplayActivity activity = (FileDisplayActivity) getSherlockActivity();
 +                    activity.getFileOperationsHelper().sendDownloadedFile(mTargetFile, activity);
 +                }
                  return true;
              }
              default:
           * @param uploading     Flag signaling if the file is now uploading.
           */
          public void onTransferStateChanged(OCFile file, boolean downloading, boolean uploading);
 +
 +        void startDownloadForSending(OCFile file);
          
      }
      
@@@ -52,10 -52,10 +52,10 @@@ import com.actionbarsherlock.view.MenuI
  import com.owncloud.android.R;
  import com.owncloud.android.datamodel.FileDataStorageManager;
  import com.owncloud.android.datamodel.OCFile;
- import com.owncloud.android.lib.network.webdav.WebdavUtils;
- import com.owncloud.android.lib.operations.common.OnRemoteOperationListener;
- import com.owncloud.android.lib.operations.common.RemoteOperation;
- import com.owncloud.android.lib.operations.common.RemoteOperationResult;
+ import com.owncloud.android.lib.common.network.WebdavUtils;
+ import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
+ import com.owncloud.android.lib.common.operations.RemoteOperation;
+ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
  import com.owncloud.android.operations.RemoveFileOperation;
  import com.owncloud.android.ui.activity.FileActivity;
  import com.owncloud.android.ui.fragment.ConfirmationDialogFragment;
@@@ -311,8 -311,7 +311,8 @@@ public class PreviewImageFragment exten
                  return true;
              }
              case R.id.action_send_file: {
 -                shareFile();
 +                FileActivity act = (FileActivity)getSherlockActivity();
 +                act.getFileOperationsHelper().sendDownloadedFile(getFile(), act);
                  return true;
              }
              
          }
      }
      
 -    private void shareFile(){
 -        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
 -        // set MimeType
 -        sharingIntent.setType(getFile().getMimetype());
 -        sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+getFile().getStoragePath()));
 -        startActivity(Intent.createChooser(sharingIntent, "Share via"));
 -    }
 -
 -    
  
      private void seeDetails() {
          ((FileFragment.ContainerActivity)getActivity()).showDetails(getFile());        
@@@ -57,10 -57,10 +57,10 @@@ import com.owncloud.android.datamodel.O
  import com.owncloud.android.media.MediaControlView;
  import com.owncloud.android.media.MediaService;
  import com.owncloud.android.media.MediaServiceBinder;
- import com.owncloud.android.lib.network.webdav.WebdavUtils;
- import com.owncloud.android.lib.operations.common.OnRemoteOperationListener;
- import com.owncloud.android.lib.operations.common.RemoteOperation;
- import com.owncloud.android.lib.operations.common.RemoteOperationResult;
+ import com.owncloud.android.lib.common.network.WebdavUtils;
+ import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
+ import com.owncloud.android.lib.common.operations.RemoteOperation;
+ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
  import com.owncloud.android.operations.RemoveFileOperation;
  import com.owncloud.android.ui.activity.FileActivity;
  import com.owncloud.android.ui.activity.FileDisplayActivity;
@@@ -351,9 -351,6 +351,9 @@@ public class PreviewMediaFragment exten
                  seeDetails();
                  return true;
              }
 +            case R.id.action_send_file: {
 +                sendFile();
 +            }
              
              default:
                  return false;
          
      }
  
 +    private void sendFile() {
 +        stopPreview(false);
 +        FileActivity activity = (FileActivity)((FileFragment.ContainerActivity)getActivity());
 +        activity.getFileOperationsHelper().sendDownloadedFile(getFile(), activity);
 +        
 +    }
  
      private void seeDetails() {
          stopPreview(false);