Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-09-17 14:24:06 +0300
committerStefan Niedermann <info@niedermann.it>2021-09-17 14:24:51 +0300
commitff2cab8f5c932ce50480728c008d83d66ce37f5b (patch)
tree72212515710393cd3351afbe4f65a2fd84edad48 /app/src/main/java/it/niedermann/owncloud
parentb6afb118548475fb2f44aaf562d76d7cc9019d33 (diff)
#1348 Make translations easier by removing HTML markup from strings
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentContributingTab.java9
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentCreditsTab.java13
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentLicenseTab.java12
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java43
4 files changed, 47 insertions, 30 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentContributingTab.java b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentContributingTab.java
index 2e17e45d..90a9a3bc 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentContributingTab.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentContributingTab.java
@@ -1,6 +1,9 @@
package it.niedermann.owncloud.notes.about;
+import static it.niedermann.owncloud.notes.shared.util.SupportUtil.setTextWithURL;
+
import android.os.Bundle;
+import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -17,9 +20,9 @@ public class AboutFragmentContributingTab extends Fragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final var binding = FragmentAboutContributionTabBinding.inflate(inflater, container, false);
- SupportUtil.setHtml(binding.aboutSource, R.string.about_source, getString(R.string.url_source));
- SupportUtil.setHtml(binding.aboutIssues, R.string.about_issues, getString(R.string.url_issues));
- SupportUtil.setHtml(binding.aboutTranslate, R.string.about_translate, getString(R.string.url_translations));
+ setTextWithURL(binding.aboutSource, getResources(), R.string.about_source, R.string.url_source, R.string.url_source);
+ setTextWithURL(binding.aboutIssues, getResources(), R.string.about_issues, R.string.url_issues, R.string.url_issues);
+ setTextWithURL(binding.aboutTranslate, getResources(), R.string.about_translate, R.string.url_translations, R.string.url_translations);
return binding.getRoot();
}
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentCreditsTab.java b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentCreditsTab.java
index f92ca9ee..028bfa4e 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentCreditsTab.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentCreditsTab.java
@@ -1,6 +1,11 @@
package it.niedermann.owncloud.notes.about;
+import static it.niedermann.owncloud.notes.shared.util.SupportUtil.setTextWithURL;
+import static it.niedermann.owncloud.notes.shared.util.SupportUtil.strong;
+import static it.niedermann.owncloud.notes.shared.util.SupportUtil.url;
+
import android.os.Bundle;
+import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -11,16 +16,16 @@ import androidx.fragment.app.Fragment;
import it.niedermann.owncloud.notes.BuildConfig;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.databinding.FragmentAboutCreditsTabBinding;
-import it.niedermann.owncloud.notes.shared.util.SupportUtil;
public class AboutFragmentCreditsTab extends Fragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final var binding = FragmentAboutCreditsTabBinding.inflate(inflater, container, false);
- SupportUtil.setHtml(binding.aboutVersion, R.string.about_version, "v" + BuildConfig.VERSION_NAME);
- SupportUtil.setHtml(binding.aboutMaintainer, R.string.about_maintainer);
- SupportUtil.setHtml(binding.aboutTranslators, R.string.about_translators_transifex, getString(R.string.url_translations));
+ binding.aboutVersion.setText(getString(R.string.about_version, strong(BuildConfig.VERSION_NAME)));
+ binding.aboutMaintainer.setText(url(getString(R.string.about_maintainer), getString(R.string.url_maintainer)));
+ binding.aboutMaintainer.setMovementMethod(new LinkMovementMethod());
+ setTextWithURL(binding.aboutTranslators, getResources(), R.string.about_translators_transifex, R.string.about_translators_transifex_label, R.string.url_translations);
return binding.getRoot();
}
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentLicenseTab.java b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentLicenseTab.java
index da8cbbd4..10cc02c7 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentLicenseTab.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentLicenseTab.java
@@ -1,5 +1,7 @@
package it.niedermann.owncloud.notes.about;
+import static it.niedermann.owncloud.notes.shared.util.SupportUtil.setTextWithURL;
+
import android.content.Intent;
import android.content.res.ColorStateList;
import android.net.Uri;
@@ -17,21 +19,17 @@ import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.branding.BrandedFragment;
import it.niedermann.owncloud.notes.branding.BrandingUtil;
import it.niedermann.owncloud.notes.databinding.FragmentAboutLicenseTabBinding;
-import it.niedermann.owncloud.notes.shared.util.SupportUtil;
public class AboutFragmentLicenseTab extends BrandedFragment {
private FragmentAboutLicenseTabBinding binding;
- private void openLicense() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.url_license))));
- }
-
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
binding = FragmentAboutLicenseTabBinding.inflate(inflater, container, false);
- binding.aboutAppLicenseButton.setOnClickListener((v) -> openLicense());
- SupportUtil.setHtml(binding.aboutIconsDisclaimer, R.string.about_icons_disclaimer, getString(R.string.about_app_icon_author));
+ setTextWithURL(binding.aboutIconsDisclaimerAppIcon, getResources(), R.string.about_icons_disclaimer_app_icon, R.string.about_app_icon_author_link_label, R.string.url_about_icon_author);
+ setTextWithURL(binding.aboutIconsDisclaimerMdiIcons, getResources(), R.string.about_icons_disclaimer_mdi_icons, R.string.about_icons_disclaimer_mdi, R.string.url_about_icons_disclaimer_mdi);
+ binding.aboutAppLicenseButton.setOnClickListener((v) -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.url_license)))));
return binding.getRoot();
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java
index 27fec716..d914c13f 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java
@@ -1,31 +1,42 @@
package it.niedermann.owncloud.notes.shared.util;
+import android.content.res.Resources;
+import android.graphics.Typeface;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.Spanned;
import android.text.method.LinkMovementMethod;
+import android.text.style.StyleSpan;
+import android.text.style.URLSpan;
import android.widget.TextView;
import androidx.annotation.NonNull;
-import androidx.core.text.HtmlCompat;
+import androidx.annotation.StringRes;
-/**
- * Some helper functionality in alike the Android support library.
- * Currently, it offers methods for working with HTML string resources.
- */
public class SupportUtil {
private SupportUtil() {
throw new UnsupportedOperationException("Do not instantiate this util class.");
}
- /**
- * Fills a {@link TextView} with HTML content and activates links in that {@link TextView}.
- *
- * @param view The {@link TextView} which should be filled.
- * @param stringId The string resource containing HTML tags (escaped by <code>&lt;</code>)
- * @param formatArgs Arguments for the string resource.
- */
- public static void setHtml(@NonNull TextView view, int stringId, Object... formatArgs) {
- view.setText(HtmlCompat.fromHtml(
- view.getResources().getString(stringId, formatArgs), HtmlCompat.FROM_HTML_MODE_LEGACY));
- view.setMovementMethod(LinkMovementMethod.getInstance());
+ public static SpannableString strong(@NonNull CharSequence text) {
+ final var spannable = new SpannableString(text);
+ spannable.setSpan(new StyleSpan(Typeface.BOLD), 0, spannable.length(), 0);
+ return spannable;
+ }
+
+ public static SpannableString url(@NonNull CharSequence text, @NonNull String target) {
+ final var spannable = new SpannableString(text);
+ spannable.setSpan(new URLSpan(target), 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ return spannable;
+ }
+
+ public static void setTextWithURL(@NonNull TextView textView, @NonNull Resources resources, @StringRes int containerTextId, @StringRes int linkLabelId, @StringRes int urlId) {
+ final String linkLabel = resources.getString(linkLabelId);
+ final String finalText = resources.getString(containerTextId, linkLabel);
+ final var spannable = new SpannableString(finalText);
+ spannable.setSpan(new URLSpan(resources.getString(urlId)), finalText.indexOf(linkLabel), finalText.indexOf(linkLabel) + linkLabel.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ textView.setText(spannable);
+ textView.setMovementMethod(new LinkMovementMethod());
}
}