Merge branch 'share_link_show_shared_files' into share_link__new_share
authormasensio <masensio@solidgear.es>
Thu, 30 Jan 2014 17:54:54 +0000 (18:54 +0100)
committermasensio <masensio@solidgear.es>
Thu, 30 Jan 2014 17:54:54 +0000 (18:54 +0100)
1  2 
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@@ -45,6 -45,7 +45,7 @@@ import android.provider.MediaStore
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentManager;
  import android.support.v4.app.FragmentTransaction;
+ import android.support.v4.content.LocalBroadcastManager;
  import android.util.Log;
  import android.view.View;
  import android.view.ViewGroup;
@@@ -69,19 -70,16 +70,18 @@@ import com.owncloud.android.files.servi
  import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
  import com.owncloud.android.operations.CreateFolderOperation;
  
- import com.owncloud.android.operations.GetSharesOperation;
  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.ShareType;
  import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;
  
 +import com.owncloud.android.operations.CreateShareOperation;
  import com.owncloud.android.operations.RemoveFileOperation;
  import com.owncloud.android.operations.RenameFileOperation;
  import com.owncloud.android.operations.SynchronizeFileOperation;
  import com.owncloud.android.operations.SynchronizeFolderOperation;
+ import com.owncloud.android.services.OperationsService;
  import com.owncloud.android.syncadapter.FileSyncService;
  import com.owncloud.android.ui.dialog.EditNameDialog;
  import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener;
@@@ -116,6 -114,7 +116,7 @@@ OCFileListFragment.ContainerActivity, F
      private SyncBroadcastReceiver mSyncBroadcastReceiver;
      private UploadFinishReceiver mUploadFinishReceiver;
      private DownloadFinishReceiver mDownloadFinishReceiver;
+     private OperationsServiceReceiver mOperationsServiceReceiver;
      private FileDownloaderBinder mDownloaderBinder = null;
      private FileUploaderBinder mUploaderBinder = null;
      private ServiceConnection mDownloadConnection = null, mUploadConnection = null;
          downloadIntentFilter.addAction(FileDownloader.getDownloadFinishMessage());
          mDownloadFinishReceiver = new DownloadFinishReceiver();
          registerReceiver(mDownloadFinishReceiver, downloadIntentFilter);
+         
+         // Listen for messages from the OperationsService
+         IntentFilter operationsIntentFilter = new IntentFilter(OperationsService.ACTION_OPERATION_ADDED);
+         operationsIntentFilter.addAction(OperationsService.ACTION_OPERATION_FINISHED);
+         mOperationsServiceReceiver = new OperationsServiceReceiver();
+         LocalBroadcastManager.getInstance(this).registerReceiver(mOperationsServiceReceiver, operationsIntentFilter);
      
          Log_OC.d(TAG, "onResume() end");
      }
              unregisterReceiver(mDownloadFinishReceiver);
              mDownloadFinishReceiver = null;
          }
+         if (mOperationsServiceReceiver != null) {
+             LocalBroadcastManager.getInstance(this).unregisterReceiver(mOperationsServiceReceiver);
+             mOperationsServiceReceiver = null;
+         }
          Log_OC.d(TAG, "onPause() end");
      }
  
              return (accountName != null && getAccount() != null && accountName.equals(getAccount().name));
          }
      }
+     
+     
+     /**
+      * Class waiting for broadcast events from the {@link OperationsService}.
+      * 
+      * Updates the list of files when a get for shares is finished; at this moment the refresh of shares is the only
+      * operation performed in {@link OperationsService}.
+      * 
+      * In the future will handle the progress or finalization of all the operations performed in {@link OperationsService}, 
+      * probably all the operations associated to the app model. 
+      */
+     private class OperationsServiceReceiver extends BroadcastReceiver {
+         @Override
+         public void onReceive(Context context, Intent intent) {
+             if (OperationsService.ACTION_OPERATION_ADDED.equals(intent.getAction())) {
+                 
+             } else if (OperationsService.ACTION_OPERATION_FINISHED.equals(intent.getAction())) {
+                 mRefreshSharesInProgress = false;
+                 
+                 Account account = intent.getParcelableExtra(OperationsService.EXTRA_ACCOUNT);
+                 RemoteOperationResult getSharesResult = (RemoteOperationResult)intent.getSerializableExtra(OperationsService.EXTRA_RESULT);
+                 if (getAccount() != null && account.name.equals(getAccount().name)
+                         && mStorageManager != null
+                         ) {
+                     refeshListOfFilesFragment();
+                 }
+                 if ((getSharesResult != null) &&
+                         RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED.equals(getSharesResult.getCode())) {
+                     mLastSslUntrustedServerResult = getSharesResult;
+                     showDialog(DIALOG_SSL_VALIDATOR); 
+                 }
+                 setSupportProgressBarIndeterminateVisibility(mRefreshSharesInProgress || mSyncInProgress);
+             }
+             
+         }
+             
+     }
  
  
      /**
  
          } else if (operation instanceof CreateFolderOperation) {
              onCreateFolderOperationFinish((CreateFolderOperation)operation, result);
-             
-         } else if (operation instanceof GetSharesOperation) {
-             onGetSharesOperationFinish((GetSharesOperation) operation, result);
          }
      }
  
  
-     /** Updates the data about shared files
-      * 
-      * @param operation     Get Shared Files
-      * @param result        Result of the operation
-      */
-     private void onGetSharesOperationFinish(GetSharesOperation operation, RemoteOperationResult result) {
-         // Refresh the filelist with the information
-         refeshListOfFilesFragment();  
-         
-         mRefreshSharesInProgress = false;
-         
-         if (!mSyncInProgress) {
-             setSupportProgressBarIndeterminateVisibility(false);
-         }
-     }
      /**
       * Updates the view associated to the activity after the finish of an operation trying to remove a 
       * file. 
      
      private void startGetShares() {
          // Get shared files/folders
-         RemoteOperation getShares = new GetSharesOperation(mStorageManager);
-         getShares.execute(getAccount(), this, this, mHandler, this);
+         Intent intent = new Intent(this, OperationsService.class);
+         intent.putExtra(OperationsService.EXTRA_ACCOUNT, getAccount());
+         startService(intent);
          
          mRefreshSharesInProgress = true;
          setSupportProgressBarIndeterminateVisibility(true);
          
      }
 +
 +    @Override
 +    public void shareFileWithLink(OCFile file) {
 +            CreateShareOperation createShare = new CreateShareOperation(file.getRemotePath(), ShareType.PUBLIC_LINK, "", false, "", 1);
 +            createShare.execute(getAccount(), this, this, mHandler, this);
 +        
 +    }
      
- //    public void enableDisableViewGroup(ViewGroup viewGroup, boolean enabled) {
- //        int childCount = viewGroup.getChildCount();
- //        for (int i = 0; i < childCount; i++) {
- //          View view = viewGroup.getChildAt(i);
- //          view.setEnabled(enabled);
- //          view.setClickable(!enabled);
- //          if (view instanceof ViewGroup) {
- //            enableDisableViewGroup((ViewGroup) view, enabled);
- //          }
- //        }
- //      }
  }