From: masensio Date: Thu, 12 Nov 2015 09:50:39 +0000 (+0100) Subject: Implement 'Get link' button X-Git-Tag: oc-android-1.9^2~10^2~10 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/68550e9977754ebd2cf13eb45627f5841767c4ba?ds=inline;hp=--cc Implement 'Get link' button --- 68550e9977754ebd2cf13eb45627f5841767c4ba diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index fa9de8cc..2f0e16ca 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -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) { diff --git a/src/com/owncloud/android/ui/activity/ShareActivity.java b/src/com/owncloud/android/ui/activity/ShareActivity.java index 9c4d33ef..0098da49 100644 --- a/src/com/owncloud/android/ui/activity/ShareActivity.java +++ b/src/com/owncloud/android/ui/activity/ShareActivity.java @@ -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); + } } } diff --git a/src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java b/src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java index a315a1d5..dad573e1 100644 --- a/src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java +++ b/src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java @@ -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); } } }) diff --git a/src/com/owncloud/android/ui/fragment/ShareFileFragment.java b/src/com/owncloud/android/ui/fragment/ShareFileFragment.java index d9a9b44a..f30eaf2b 100644 --- a/src/com/owncloud/android/ui/fragment/ShareFileFragment.java +++ b/src/com/owncloud/android/ui/fragment/ShareFileFragment.java @@ -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