From 42fc189367683493971db1b8129875fd484c172f Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Wed, 19 Feb 2014 18:00:49 +0100 Subject: [PATCH] Implemented option to copy shared link in clipboard instead of trusting in external clipboard front-ends --- AndroidManifest.xml | 11 ++-- res/drawable-hdpi/copy_link.png | Bin 0 -> 3342 bytes res/drawable-ldpi/copy_link.png | Bin 0 -> 1518 bytes res/drawable-mdpi/copy_link.png | Bin 0 -> 2273 bytes res/drawable-xhdpi/copy_link.png | Bin 0 -> 5241 bytes res/values/strings.xml | 5 +- .../android/files/FileOperationsHelper.java | 4 +- .../ui/activity/CopyToClipboardActivity.java | 66 +++++++++++++++++++++ ...tyChooserDialog.java => ShareLinkToDialog.java} | 25 +++++--- 9 files changed, 96 insertions(+), 15 deletions(-) create mode 100644 res/drawable-hdpi/copy_link.png create mode 100644 res/drawable-ldpi/copy_link.png create mode 100644 res/drawable-mdpi/copy_link.png create mode 100644 res/drawable-xhdpi/copy_link.png create mode 100644 src/com/owncloud/android/ui/activity/CopyToClipboardActivity.java rename src/com/owncloud/android/ui/dialog/{ActivityChooserDialog.java => ShareLinkToDialog.java} (83%) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 141d56a8..c92af064 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -80,12 +80,10 @@ - + - - - + + + diff --git a/res/drawable-hdpi/copy_link.png b/res/drawable-hdpi/copy_link.png new file mode 100644 index 0000000000000000000000000000000000000000..35df55f7513e417eb3d41f523cd0eb49b0020909 GIT binary patch literal 3342 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 Y10!}?k&FNX7XSbN07*qoM6N<$g8tuk(f|Me literal 0 HcmV?d00001 diff --git a/res/drawable-ldpi/copy_link.png b/res/drawable-ldpi/copy_link.png new file mode 100644 index 0000000000000000000000000000000000000000..b3caf5228774a3a8180263cbd0c54d621f682846 GIT binary patch literal 1518 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 of %1$d files could not be sync\'ed (%2$d conflicts) Some local files were forgotten %1$d files out of the %2$s directory could not be copied into - As of version 1.3.16, files uploaded from this device are copied into the local %1$s folder to prevent data loss when a single file is synced with multiple accounts.\n\nDue to this change, all files uploaded in previous versions of this app were copied into the %2$s folder. However, an error prevented the completion of this operation during account synchronization. You may either leave the file(s) as is and remove the link to %3$s, or move the file(s) into the %1$s directory and retain the link to %4$s.\n\nListed below are the local file(s), and the the remote file(s) in %5$s they were linked to. + As of version 1.3.16, files uploaded from this device are copied into the local %1$s folder to prevent data loss when a single file is synced with multiple accounts.\n\nDue to this change, all files uploaded in previous versions of this app were copied into the %2$s folder. However, an error prevented the completion of this operation during account synchronization. You may either leave the file(s) as is and remove the link to %3$s, or move the file(s) into the %1$s directory and retain the link to %4$s.\n\nListed below are the local file(s), and the remote file(s) in %5$s they were linked to. Folder %1$s does not exist anymore "Move all" "All files were moved" @@ -252,4 +252,7 @@ An error occurred while trying to share this file or folder Unable to unshare this file or folder. It does not exist. An error occurred while trying to unshare this file or folder + + Copy link + Copied to clipboard diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index 61fde2db..c14d84dc 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -33,7 +33,7 @@ import com.owncloud.android.lib.network.webdav.WebdavUtils; import com.owncloud.android.lib.utils.OwnCloudVersion; import com.owncloud.android.services.OperationsService; import com.owncloud.android.ui.activity.FileActivity; -import com.owncloud.android.ui.dialog.ActivityChooserDialog; +import com.owncloud.android.ui.dialog.ShareLinkToDialog; import com.owncloud.android.utils.Log_OC; /** @@ -89,7 +89,7 @@ public class FileOperationsHelper { String link = "https://fake.url"; Intent intent = createShareWithLinkIntent(link); String[] packagesToExclude = new String[] { callerActivity.getPackageName() }; - DialogFragment chooserDialog = ActivityChooserDialog.newInstance(intent, packagesToExclude, file); + DialogFragment chooserDialog = ShareLinkToDialog.newInstance(intent, packagesToExclude, file); chooserDialog.show(callerActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG); } else { diff --git a/src/com/owncloud/android/ui/activity/CopyToClipboardActivity.java b/src/com/owncloud/android/ui/activity/CopyToClipboardActivity.java new file mode 100644 index 00000000..7c546412 --- /dev/null +++ b/src/com/owncloud/android/ui/activity/CopyToClipboardActivity.java @@ -0,0 +1,66 @@ +/* ownCloud Android client application + * Copyright (C) 2012-2014 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package com.owncloud.android.ui.activity; + +import com.owncloud.android.R; + +import android.app.Activity; +import android.content.ClipData; +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; +import android.text.ClipboardManager; +import android.widget.Toast; + +/** + * Activity copying the text of the received Intent into the system clibpoard. + * + * @author David A. Velasco + */ +@SuppressWarnings("deprecation") +public class CopyToClipboardActivity extends Activity { + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // get the clipboard system service + ClipboardManager clipboardManager = (ClipboardManager) this.getSystemService(CLIPBOARD_SERVICE); + + // get the text to copy into the clipboard + Intent intent = getIntent(); + CharSequence text = intent.getCharSequenceExtra(Intent.EXTRA_TEXT); + + // and put the text the clipboard + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { + // API level >= 11 -> modern Clipboard + ClipData clip = ClipData.newPlainText("ownCloud was here", text); + ((android.content.ClipboardManager)clipboardManager).setPrimaryClip(clip); + + } else { + // API level >= 11 -> legacy Clipboard + clipboardManager.setText(text); + } + + // alert the user that the text is in the clipboard and we're done + Toast.makeText(this, R.string.clipboard_text_copied, Toast.LENGTH_SHORT).show(); + + finish(); + } + +} diff --git a/src/com/owncloud/android/ui/dialog/ActivityChooserDialog.java b/src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java similarity index 83% rename from src/com/owncloud/android/ui/dialog/ActivityChooserDialog.java rename to src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java index dc15f69a..e0e76d14 100644 --- a/src/com/owncloud/android/ui/dialog/ActivityChooserDialog.java +++ b/src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java @@ -43,6 +43,7 @@ import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.FileOperationsHelper; +import com.owncloud.android.ui.activity.CopyToClipboardActivity; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.utils.Log_OC; @@ -52,19 +53,19 @@ import com.owncloud.android.utils.Log_OC; * * @author David A. Velasco */ -public class ActivityChooserDialog extends SherlockDialogFragment { +public class ShareLinkToDialog extends SherlockDialogFragment { - private final static String TAG = ActivityChooserDialog.class.getSimpleName(); - private final static String ARG_INTENT = ActivityChooserDialog.class.getSimpleName() + ".ARG_INTENT"; - private final static String ARG_PACKAGES_TO_EXCLUDE = ActivityChooserDialog.class.getSimpleName() + ".ARG_PACKAGES_TO_EXCLUDE"; - private final static String ARG_FILE_TO_SHARE = ActivityChooserDialog.class.getSimpleName() + ".FILE_TO_SHARE"; + private final static String TAG = ShareLinkToDialog.class.getSimpleName(); + private final static String ARG_INTENT = ShareLinkToDialog.class.getSimpleName() + ".ARG_INTENT"; + private final static String ARG_PACKAGES_TO_EXCLUDE = ShareLinkToDialog.class.getSimpleName() + ".ARG_PACKAGES_TO_EXCLUDE"; + private final static String ARG_FILE_TO_SHARE = ShareLinkToDialog.class.getSimpleName() + ".FILE_TO_SHARE"; private ActivityAdapter mAdapter; private OCFile mFile; private Intent mIntent; - public static ActivityChooserDialog newInstance(Intent intent, String[] packagesToExclude, OCFile fileToShare) { - ActivityChooserDialog f = new ActivityChooserDialog(); + public static ShareLinkToDialog newInstance(Intent intent, String[] packagesToExclude, OCFile fileToShare) { + ShareLinkToDialog f = new ShareLinkToDialog(); Bundle args = new Bundle(); args.putParcelable(ARG_INTENT, intent); args.putStringArray(ARG_PACKAGES_TO_EXCLUDE, packagesToExclude); @@ -73,7 +74,7 @@ public class ActivityChooserDialog extends SherlockDialogFragment { return f; } - public ActivityChooserDialog() { + public ShareLinkToDialog() { super(); Log_OC.d(TAG, "constructor"); } @@ -95,6 +96,14 @@ public class ActivityChooserDialog extends SherlockDialogFragment { it.remove(); } } + + // add activity for copy to clipboard + Intent copyToClipboardIntent = new Intent(getSherlockActivity(), CopyToClipboardActivity.class); + List copyToClipboard = pm.queryIntentActivities(copyToClipboardIntent, 0); + if (!copyToClipboard.isEmpty()) { + activities.add(copyToClipboard.get(0)); + } + Collections.sort(activities, new ResolveInfo.DisplayNameComparator(pm)); mAdapter = new ActivityAdapter(getSherlockActivity(), pm, activities); -- 2.11.0