From 2d0c48d054e22ac48c446eaff8ffb530f90f5dd0 Mon Sep 17 00:00:00 2001 From: Alex Popov Date: Wed, 7 Jan 2026 04:27:40 +0300 Subject: [PATCH 1/4] Make Peertube instance URL clickable in help text --- .../PeertubeInstanceListFragment.java | 22 +++++++++++++++++-- .../res/layout/fragment_instance_list.xml | 1 - 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java b/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java index 81fddbcfb..32bba8ebc 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java @@ -5,6 +5,10 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.text.InputType; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.method.LinkMovementMethod; +import android.text.style.URLSpan; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -84,8 +88,22 @@ public class PeertubeInstanceListFragment extends Fragment { @Nullable final Bundle savedInstanceState) { super.onViewCreated(rootView, savedInstanceState); - binding.instanceHelpTV.setText(getString(R.string.peertube_instance_url_help, - getString(R.string.peertube_instance_list_url))); + final String instanceListUrl = getString(R.string.peertube_instance_list_url); + final String helpText = getString(R.string.peertube_instance_url_help, instanceListUrl); + final SpannableString spannableString = new SpannableString(helpText); + + final int urlStart = helpText.indexOf(instanceListUrl); + if (urlStart != -1) { + spannableString.setSpan( + new URLSpan(instanceListUrl), + urlStart, + urlStart + instanceListUrl.length(), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ); + } + + binding.instanceHelpTV.setText(spannableString); + binding.instanceHelpTV.setMovementMethod(LinkMovementMethod.getInstance()); binding.addInstanceButton.setOnClickListener(v -> showAddItemDialog(requireContext())); binding.instances.setLayoutManager(new LinearLayoutManager(requireContext())); diff --git a/app/src/main/res/layout/fragment_instance_list.xml b/app/src/main/res/layout/fragment_instance_list.xml index 2e976b286..0b5cb4ad7 100644 --- a/app/src/main/res/layout/fragment_instance_list.xml +++ b/app/src/main/res/layout/fragment_instance_list.xml @@ -11,7 +11,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" - android:autoLink="web" android:text="@string/peertube_instance_url_help" /> Date: Wed, 7 Jan 2026 04:28:59 +0300 Subject: [PATCH 2/4] Make Peertube instance URL clickable in help text using HTML --- .../PeertubeInstanceListFragment.java | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java b/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java index 32bba8ebc..17ec69d86 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java @@ -4,11 +4,9 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; +import android.text.Html; import android.text.InputType; -import android.text.SpannableString; -import android.text.Spanned; import android.text.method.LinkMovementMethod; -import android.text.style.URLSpan; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -89,21 +87,11 @@ public class PeertubeInstanceListFragment extends Fragment { super.onViewCreated(rootView, savedInstanceState); final String instanceListUrl = getString(R.string.peertube_instance_list_url); - final String helpText = getString(R.string.peertube_instance_url_help, instanceListUrl); - final SpannableString spannableString = new SpannableString(helpText); - - final int urlStart = helpText.indexOf(instanceListUrl); - if (urlStart != -1) { - spannableString.setSpan( - new URLSpan(instanceListUrl), - urlStart, - urlStart + instanceListUrl.length(), - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ); - } - - binding.instanceHelpTV.setText(spannableString); + final String helpText = getString(R.string.peertube_instance_url_help, + "" + instanceListUrl + ""); + binding.instanceHelpTV.setText(Html.fromHtml(helpText, Html.FROM_HTML_MODE_LEGACY)); binding.instanceHelpTV.setMovementMethod(LinkMovementMethod.getInstance()); + binding.addInstanceButton.setOnClickListener(v -> showAddItemDialog(requireContext())); binding.instances.setLayoutManager(new LinearLayoutManager(requireContext())); From b8c938b145c6651ab847d97198a91249d7b98416 Mon Sep 17 00:00:00 2001 From: Alex Popov Date: Wed, 7 Jan 2026 04:39:14 +0300 Subject: [PATCH 3/4] Make Peertube instance help text URL clickable --- .../schabi/newpipe/settings/PeertubeInstanceListFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java b/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java index 17ec69d86..ed8c6b269 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java @@ -91,7 +91,7 @@ public class PeertubeInstanceListFragment extends Fragment { "" + instanceListUrl + ""); binding.instanceHelpTV.setText(Html.fromHtml(helpText, Html.FROM_HTML_MODE_LEGACY)); binding.instanceHelpTV.setMovementMethod(LinkMovementMethod.getInstance()); - + binding.addInstanceButton.setOnClickListener(v -> showAddItemDialog(requireContext())); binding.instances.setLayoutManager(new LinearLayoutManager(requireContext())); From 3b249e9160d821b7c13cf5883f45c7e160e4474f Mon Sep 17 00:00:00 2001 From: Alex Popov Date: Wed, 7 Jan 2026 05:05:47 +0300 Subject: [PATCH 4/4] Use HtmlCompat for rendering clickable Peertube instance URL in help text --- .../newpipe/settings/PeertubeInstanceListFragment.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java b/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java index ed8c6b269..14b369f8c 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java @@ -4,9 +4,10 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; -import android.text.Html; import android.text.InputType; import android.text.method.LinkMovementMethod; + +import androidx.core.text.HtmlCompat; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -89,7 +90,8 @@ public class PeertubeInstanceListFragment extends Fragment { final String instanceListUrl = getString(R.string.peertube_instance_list_url); final String helpText = getString(R.string.peertube_instance_url_help, "" + instanceListUrl + ""); - binding.instanceHelpTV.setText(Html.fromHtml(helpText, Html.FROM_HTML_MODE_LEGACY)); + binding.instanceHelpTV.setText(HtmlCompat.fromHtml(helpText, + HtmlCompat.FROM_HTML_MODE_LEGACY)); binding.instanceHelpTV.setMovementMethod(LinkMovementMethod.getInstance()); binding.addInstanceButton.setOnClickListener(v -> showAddItemDialog(requireContext()));