Enable copying podcast title and host (#7830)

This commit is contained in:
John 2025-06-26 12:05:49 +03:00 committed by GitHub
parent 5b43cfe5c0
commit e818aefd13
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 66 additions and 9 deletions

View File

@ -1,5 +1,7 @@
package de.danoeh.antennapod.ui.screen.episode;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
@ -189,9 +191,28 @@ public class ItemFragment extends Fragment {
}
actionButton2.onClick(getContext());
});
txtvPodcast.setOnLongClickListener(v -> {
copyToClipboard(requireContext(), txtvPodcast.getText().toString());
return true;
});
txtvTitle.setOnLongClickListener(v -> {
copyToClipboard(requireContext(), txtvTitle.getText().toString());
return true;
});
return layout;
}
public void copyToClipboard(Context context, String text) {
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard != null) {
ClipData clip = ClipData.newPlainText(text, text);
clipboard.setPrimaryClip(clip);
if (Build.VERSION.SDK_INT <= 32) {
EventBus.getDefault().post(new MessageEvent(getString(R.string.copied_to_clipboard)));
}
}
}
private void showOnDemandConfigBalloon(boolean offerStreaming) {
final boolean isLocaleRtl = TextUtils.getLayoutDirectionFromLocale(Locale.getDefault())
== View.LAYOUT_DIRECTION_RTL;

View File

@ -2,6 +2,7 @@ package de.danoeh.antennapod.ui.screen.feed;
import android.content.ActivityNotFoundException;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
@ -15,6 +16,7 @@ import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
@ -82,14 +84,7 @@ public class FeedInfoFragment extends Fragment implements MaterialToolbar.OnMenu
@Override
public void onClick(View v) {
if (feed != null && feed.getDownloadUrl() != null) {
String url = feed.getDownloadUrl();
ClipData clipData = ClipData.newPlainText(url, url);
android.content.ClipboardManager cm = (android.content.ClipboardManager) getContext()
.getSystemService(Context.CLIPBOARD_SERVICE);
cm.setPrimaryClip(clipData);
if (Build.VERSION.SDK_INT <= 32) {
EventBus.getDefault().post(new MessageEvent(getString(R.string.copied_to_clipboard)));
}
copyToClipboard(requireContext(), feed.getDownloadUrl());
}
}
};
@ -128,7 +123,14 @@ public class FeedInfoFragment extends Fragment implements MaterialToolbar.OnMenu
StatisticsFragment fragment = new StatisticsFragment();
((MainActivity) getActivity()).loadChildFragment(fragment, TransitionEffect.SLIDE);
});
viewBinding.header.txtvTitle.setOnLongClickListener(v -> {
copyToClipboard(requireContext(), viewBinding.header.txtvTitle.getText().toString());
return true;
});
viewBinding.header.txtvAuthor.setOnLongClickListener(v -> {
copyToClipboard(requireContext(), viewBinding.header.txtvAuthor.getText().toString());
return true;
});
return viewBinding.getRoot();
}
@ -164,6 +166,17 @@ public class FeedInfoFragment extends Fragment implements MaterialToolbar.OnMenu
horizontalSpacing, viewBinding.infoContainer.getPaddingBottom());
}
public void copyToClipboard(Context context, String text) {
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard != null) {
ClipData clip = ClipData.newPlainText(text, text);
clipboard.setPrimaryClip(clip);
if (Build.VERSION.SDK_INT <= 32) {
EventBus.getDefault().post(new MessageEvent(getString(R.string.copied_to_clipboard)));
}
}
}
private void showFeed() {
Log.d(TAG, "Language is " + feed.getLanguage());
Log.d(TAG, "Author is " + feed.getAuthor());

View File

@ -1,7 +1,11 @@
package de.danoeh.antennapod.ui.screen.feed;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.LightingColorFilter;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
@ -554,6 +558,25 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
FeedItemFilterDialog.newInstance(feed).show(getChildFragmentManager(), null);
});
viewBinding.header.txtvFailure.setOnClickListener(v -> showErrorDetails());
viewBinding.header.txtvAuthor.setOnLongClickListener(view -> {
copyToClipboard(requireContext(), viewBinding.header.txtvAuthor.getText().toString());
return true;
});
viewBinding.header.txtvTitle.setOnLongClickListener(view -> {
copyToClipboard(requireContext(), viewBinding.header.txtvTitle.getText().toString());
return true;
});
}
public void copyToClipboard(Context context, String text) {
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard != null) {
ClipData clip = ClipData.newPlainText(text, text);
clipboard.setPrimaryClip(clip);
if (Build.VERSION.SDK_INT <= 32) {
EventBus.getDefault().post(new MessageEvent(getString(R.string.copied_to_clipboard)));
}
}
}
private void showErrorDetails() {