diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java index 53dc5c636..87e15269a 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -288,11 +288,11 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList followingBtn.setOnClickListener(this::onFollowersOrFollowingClick); username.setOnLongClickListener(v->{ - String username=account.acct; - if(!username.contains("@")){ - username+="@"+AccountSessionManager.getInstance().getAccount(accountID).domain; + String usernameString=account.acct; + if(!usernameString.contains("@")){ + usernameString+="@"+AccountSessionManager.getInstance().getAccount(accountID).domain; } - UiUtils.copyText(getActivity(), '@'+username); + UiUtils.copyText(username, '@'+usernameString); return true; }); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java index a6a5e79d7..4cfb9101b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java @@ -263,7 +263,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{ } private boolean onShareLongClick(View v){ - UiUtils.copyText(v.getContext(), item.status.url); + UiUtils.copyText(v, item.status.url); return true; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java index bf917c6ad..45962e587 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java @@ -203,8 +203,10 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{ args.putParcelable("status", Parcels.wrap(item.status)); args.putParcelable("reportAccount", Parcels.wrap(item.status.account)); Nav.go(item.parentFragment.getActivity(), ReportReasonChoiceFragment.class, args); - }else if(id==R.id.open_in_browser){ + }else if(id==R.id.open_in_browser) { UiUtils.launchWebBrowser(activity, item.status.url); + }else if(id==R.id.copy_link){ + UiUtils.copyText(parent, item.status.url); }else if(id==R.id.follow){ if(relationship==null) return true; @@ -320,6 +322,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{ menu.findItem(R.id.pin).setVisible(item.status!=null && isOwnPost && !item.status.pinned); menu.findItem(R.id.unpin).setVisible(item.status!=null && isOwnPost && item.status.pinned); menu.findItem(R.id.open_in_browser).setVisible(item.status!=null); + menu.findItem(R.id.copy_link).setVisible(item.status!=null); MenuItem blockDomain=menu.findItem(R.id.block_domain); MenuItem mute=menu.findItem(R.id.mute); MenuItem block=menu.findItem(R.id.block); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java b/mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java index e3a1bfc61..74189a796 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java @@ -24,7 +24,7 @@ public class ClickableLinksDelegate { private TextView view; private final Runnable longClickRunnable = () -> { - if (selectedSpan != null) selectedSpan.onLongClick(view.getContext()); + if (selectedSpan != null) selectedSpan.onLongClick(view); }; public ClickableLinksDelegate(TextView view) { diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/text/LinkSpan.java b/mastodon/src/main/java/org/joinmastodon/android/ui/text/LinkSpan.java index 9cc570efe..fac4e7bb3 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/text/LinkSpan.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/text/LinkSpan.java @@ -3,6 +3,7 @@ package org.joinmastodon.android.ui.text; import android.content.Context; import android.text.TextPaint; import android.text.style.CharacterStyle; +import android.view.View; import org.joinmastodon.android.ui.utils.UiUtils; @@ -40,8 +41,8 @@ public class LinkSpan extends CharacterStyle { } } - public void onLongClick(Context context) { - UiUtils.copyText(context, getType() == Type.URL ? link : text); + public void onLongClick(View view) { + UiUtils.copyText(view, getType() == Type.URL ? link : text); } public String getLink(){ diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index d95b2d4e7..413319737 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -32,6 +32,7 @@ import android.provider.OpenableColumns; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; +import android.view.HapticFeedbackConstants; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -810,14 +811,13 @@ public class UiUtils{ launchWebBrowser(context, url); } - public static void copyText(Context context, String text) { + public static void copyText(View v, String text) { + Context context = v.getContext(); context.getSystemService(ClipboardManager.class).setPrimaryClip(ClipData.newPlainText(null, text)); if(Build.VERSION.SDK_INT= Build.VERSION_CODES.O) vibrator.vibrate(VibrationEffect.createOneShot(50, VibrationEffect.DEFAULT_AMPLITUDE)); - else vibrator.vibrate(50); + v.performHapticFeedback(HapticFeedbackConstants.CONTEXT_CLICK); } private static String getSystemProperty(String key){ diff --git a/mastodon/src/main/res/menu/post.xml b/mastodon/src/main/res/menu/post.xml index b78f16622..e0c21c1a6 100644 --- a/mastodon/src/main/res/menu/post.xml +++ b/mastodon/src/main/res/menu/post.xml @@ -11,5 +11,6 @@ + \ No newline at end of file diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 2a9ff5afb..cdb69a967 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -87,4 +87,5 @@ Reblog with visibility Post about this Hashtags you follow + Copy link to post \ No newline at end of file diff --git a/metadata/en-US/changelogs/63.txt b/metadata/en-US/changelogs/63.txt index cdc37253f..918eecd34 100644 --- a/metadata/en-US/changelogs/63.txt +++ b/metadata/en-US/changelogs/63.txt @@ -1,2 +1,3 @@ - Reblog with specific visibility on long-click - List of followed hashtags +- Long-click links to copy them