OC-2968: Filter out ownCloud from the list of apps able to receive the file
authormasensio <masensio@solidgear.es>
Mon, 17 Feb 2014 12:54:02 +0000 (13:54 +0100)
committermasensio <masensio@solidgear.es>
Mon, 17 Feb 2014 12:54:02 +0000 (13:54 +0100)
res/values/strings.xml
src/com/owncloud/android/files/FileOperationsHelper.java
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
src/com/owncloud/android/ui/dialog/ActivityChooserDialog.java
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

index 822cb2a..af81699 100644 (file)
        <string name="unshare_link_file_no_exist">Unable to unshare this file or folder. It does not exist.</string>
        <string name="unshare_link_file_error">An error occurred while trying to unshare this file or folder</string>
        
-       <string name="send_file_title_intent">Send</string>
+       <string name="activity_chooser_send_file_title">Send</string>
 </resources>
index 82e0aaa..a0927b2 100644 (file)
@@ -161,24 +161,22 @@ public class FileOperationsHelper {
         }
     }
     
-    public void sendFile(OCFile file, FileActivity callerActivity) {
-        // Obtain the file
-        if (!file.isDown()) {  // Download the file
-            Log_OC.d(TAG, file.getRemotePath() + " : File must be downloaded");           
+    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 {
-            sendDownloadedFile(file, callerActivity);
+            Log_OC.wtf(TAG, "Trying to send a NULL OCFile");
         }
-        
-        
-    }
-    
-    public void sendDownloadedFile(OCFile file, FileActivity callerActivity) {
-        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
-        // set MimeType
-        sharingIntent.setType(file.getMimetype());
-        sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getStoragePath()));
-        callerActivity.startActivity(Intent.createChooser(sharingIntent, callerActivity.getString(R.string.send_file_title_intent))); 
     }
 
-    
 }
index 6769857..c5f49bc 100644 (file)
@@ -1633,6 +1633,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
     }
     
     private void sendDownloadedFile(){
+        dismissLoadingDialog();
         getFileOperationsHelper().sendDownloadedFile(mWaitingToSend, this);
         mWaitingToSend = null;
     }
index dc15f69..71d6760 100644 (file)
@@ -98,23 +98,46 @@ public class ActivityChooserDialog  extends SherlockDialogFragment {
         Collections.sort(activities, new ResolveInfo.DisplayNameComparator(pm)); 
         mAdapter = new ActivityAdapter(getSherlockActivity(), pm, activities);
         
-        return new AlertDialog.Builder(getSherlockActivity())
-                   .setTitle(R.string.activity_chooser_title)
-                   .setAdapter(mAdapter, new DialogInterface.OnClickListener() {
-                           @Override
-                           public void onClick(DialogInterface dialog, int which) {
-                               // Add the information of the chosen activity to the intent to send 
-                               ResolveInfo chosen = mAdapter.getItem(which);
-                               ActivityInfo actInfo = chosen.activityInfo;
-                               ComponentName name=new ComponentName(actInfo.applicationInfo.packageName, actInfo.name);
-                               mIntent.setComponent(name);                               
-                               
-                               // Create a new share resource
-                               FileOperationsHelper foh = new FileOperationsHelper();
-                               foh.shareFileWithLinkToApp(mFile, mIntent, (FileActivity)getSherlockActivity()); 
-                           }
-                       })
-                   .create();
+        boolean sendAction = mIntent.getBooleanExtra(Intent.ACTION_SEND, false);
+        
+        if (sendAction) {
+        
+            return new AlertDialog.Builder(getSherlockActivity())
+                       .setTitle(R.string.activity_chooser_title)
+                       .setAdapter(mAdapter, new DialogInterface.OnClickListener() {
+                               @Override
+                               public void onClick(DialogInterface dialog, int which) {
+                                   // Add the information of the chosen activity to the intent to send 
+                                   ResolveInfo chosen = mAdapter.getItem(which);
+                                   ActivityInfo actInfo = chosen.activityInfo;
+                                   ComponentName name=new ComponentName(actInfo.applicationInfo.packageName, actInfo.name);
+                                   mIntent.setComponent(name);                               
+                                   
+                                   // Send the file
+                                   ((FileActivity)getSherlockActivity()).startActivity(mIntent);
+
+                               }
+                           })
+                       .create();
+        } else {
+            return new AlertDialog.Builder(getSherlockActivity())
+                       .setTitle(R.string.activity_chooser_send_file_title)
+                       .setAdapter(mAdapter, new DialogInterface.OnClickListener() {
+                               @Override
+                               public void onClick(DialogInterface dialog, int which) {
+                                   // Add the information of the chosen activity to the intent to send 
+                                   ResolveInfo chosen = mAdapter.getItem(which);
+                                   ActivityInfo actInfo = chosen.activityInfo;
+                                   ComponentName name=new ComponentName(actInfo.applicationInfo.packageName, actInfo.name);
+                                   mIntent.setComponent(name);                               
+                            
+                                   // Create a new share resource
+                                   FileOperationsHelper foh = new FileOperationsHelper();
+                                   foh.shareFileWithLinkToApp(mFile, mIntent, (FileActivity)getSherlockActivity()); 
+                               }
+                           })
+                       .create();
+        }
     }
 
     
index 43f3734..f4fb2f8 100644 (file)
@@ -362,6 +362,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName
             case R.id.action_send_file: {
                 // 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);