Implement 'Get link' button
authormasensio <masensio@solidgear.es>
Thu, 12 Nov 2015 09:50:39 +0000 (10:50 +0100)
committerDavid A. Velasco <dvelasco@solidgear.es>
Wed, 25 Nov 2015 08:32:25 +0000 (09:32 +0100)
src/com/owncloud/android/files/FileOperationsHelper.java
src/com/owncloud/android/ui/activity/ShareActivity.java
src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java
src/com/owncloud/android/ui/fragment/ShareFileFragment.java

index fa9de8c..2f0e16c 100644 (file)
@@ -174,6 +174,30 @@ public class FileOperationsHelper {
         }
     }
 
+    public void getFileWithLink(OCFile file){
+        if (isSharedSupported()) {
+            if (file != null) {
+                mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext().
+                        getString(R.string.wait_a_moment));
+
+                Intent service = new Intent(mFileActivity, OperationsService.class);
+                service.setAction(OperationsService.ACTION_CREATE_SHARE_VIA_LINK);
+                service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
+                service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
+                mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service);
+
+            } else {
+                Log_OC.wtf(TAG, "Trying to open a NULL OCFile");
+            }
+        } else {
+            // Show a Message
+            Toast t = Toast.makeText(
+                    mFileActivity, mFileActivity.getString(R.string.share_link_no_support_share_api),
+                    Toast.LENGTH_LONG
+            );
+            t.show();
+        }
+    }
 
     public void shareFileWithLinkOLD(OCFile file) {
 
index 9c4d33e..0098da4 100644 (file)
@@ -25,11 +25,13 @@ import android.app.SearchManager;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentTransaction;
 
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.operations.CreateShareViaLinkOperation;
 import com.owncloud.android.providers.UsersAndGroupsSearchProvider;
 
 import com.owncloud.android.lib.common.operations.RemoteOperation;
@@ -37,10 +39,13 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.resources.shares.OCShare;
 import com.owncloud.android.lib.resources.shares.ShareType;
+import com.owncloud.android.ui.dialog.ShareLinkToDialog;
 import com.owncloud.android.ui.fragment.SearchShareesFragment;
 import com.owncloud.android.ui.fragment.ShareFileFragment;
 import com.owncloud.android.utils.GetShareWithUsersAsyncTask;
 
+import org.apache.http.protocol.HTTP;
+
 
 /**
  * Activity for sharing files
@@ -55,6 +60,8 @@ public class ShareActivity extends FileActivity
     private static final String TAG_SHARE_FRAGMENT = "SHARE_FRAGMENT";
     private static final String TAG_SEARCH_FRAGMENT = "SEARCH_USER_AND_GROUPS_FRAGMENT";
 
+    /** Tag for dialog */
+    private static final String FTAG_CHOOSER_DIALOG = "CHOOSER_DIALOG";
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -156,6 +163,20 @@ public class ShareActivity extends FileActivity
         if (result.isSuccess()) {
             Log_OC.d(TAG, "Refreshing view on successful operation");
             refreshSharesFromStorageManager();
+
+            if (operation instanceof CreateShareViaLinkOperation) {
+                // Send link to the app
+                String link = ((OCShare) (result.getData().get(0))).getShareLink();
+                Log_OC.d(TAG, "Share link = " + link);
+
+                Intent intentToShareLink = new Intent(Intent.ACTION_SEND);
+                intentToShareLink.putExtra(Intent.EXTRA_TEXT, link);
+                intentToShareLink.setType(HTTP.PLAIN_TEXT_TYPE);
+                String[] packagesToExclude = new String[]{getPackageName()};
+                DialogFragment chooserDialog = ShareLinkToDialog.newInstance(intentToShareLink,
+                        packagesToExclude, getFile());
+                chooserDialog.show(getSupportFragmentManager(), FTAG_CHOOSER_DIALOG);
+            }
         }
     }
 
index a315a1d..dad573e 100644 (file)
@@ -151,9 +151,14 @@ public class ShareLinkToDialog  extends DialogFragment {
                                 ((FileActivity)getActivity()).startActivity(mIntent);
 
                             } else {
-                                // Create a new share resource
-                                ((ComponentsGetter)getActivity()).getFileOperationsHelper()
-                                    .shareFileWithLinkToApp(mFile, "", mIntent);
+//                                // Create a new share resource
+//                                ((ComponentsGetter)getActivity()).getFileOperationsHelper()
+//                                    .shareFileWithLinkToApp(mFile, "", mIntent);
+                                // Send the intent
+                                dialog.dismiss();    // explicitly added for Android 2.x devices
+
+                                // Send the file
+                                ((FileActivity)getActivity()).startActivity(mIntent);
                             }
                         }
         })
index d9a9b44..f30eaf2 100644 (file)
@@ -23,8 +23,10 @@ package com.owncloud.android.ui.fragment;
 
 import android.accounts.Account;
 import android.app.Activity;
+import android.content.Intent;
 import android.graphics.Bitmap;
 import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
 import android.support.v4.app.Fragment;
 import android.support.v7.widget.AppCompatButton;
 import android.view.LayoutInflater;
@@ -42,6 +44,7 @@ import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
+import com.owncloud.android.files.FileOperationsHelper;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.shares.OCShare;
 import com.owncloud.android.lib.resources.shares.ShareType;
@@ -52,6 +55,7 @@ import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.MimetypeIconUtil;
 
 import java.text.SimpleDateFormat;
+
 import java.util.ArrayList;
 import java.util.Date;
 
@@ -73,10 +77,13 @@ public class ShareFileFragment extends Fragment
 
     private static final String TAG = ShareFileFragment.class.getSimpleName();
 
-    // the fragment initialization parameters
+    /** The fragment initialization parameters */
     private static final String ARG_FILE = "FILE";
     private static final String ARG_ACCOUNT = "ACCOUNT";
 
+//    /** Tag for dialog */
+//    private static final String FTAG_CHOOSER_DIALOG = "CHOOSER_DIALOG";
+
     /** File to share, received as a parameter in construction time */
     private OCFile mFile;
 
@@ -494,7 +501,18 @@ public class ShareFileFragment extends Fragment
             }
             getExpirationDateSection().setVisibility(View.VISIBLE);
             getPasswordSection().setVisibility(View.VISIBLE);
-            getGetLinkButton().setVisibility(View.VISIBLE);
+            // GetLink button
+            AppCompatButton getLinkButton = getGetLinkButton();
+            getLinkButton.setVisibility(View.VISIBLE);
+            getLinkButton.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    //GetLink from the server and show ShareLinkToDialog
+                    ((FileActivity) getActivity()).getFileOperationsHelper().
+                            getFileWithLink(mFile);
+
+                }
+            });
 
             /// update state of expiration date switch and message depending on expiration date
             /// update state of expiration date switch and message depending on expiration date
@@ -594,7 +612,6 @@ public class ShareFileFragment extends Fragment
         return (AppCompatButton) getView().findViewById(R.id.shareViewLinkGetLinkButton);
     }
 
-
     /**
      * This interface must be implemented by activities that contain this
      * fragment to allow an interaction in this fragment to be communicated