summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2024-02-23 15:57:31 +0100
committerThomas <tschneider.ac@gmail.com>2024-02-23 15:57:31 +0100
commit2ecd51230fbd883317f7074a6684dc941c135f26 (patch)
treebb3a330d8de17b68a0999c2fe545d3eaeacd0737
parent53b8f9e1599ff8a6cef16af6d74e6f2c5a067bf3 (diff)
parentf87c63acec8699b283736116743533e8bd323a42 (diff)
Merge branch 'improve_pronouns_support' into develop
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/PronounsHelper.java44
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/AccountsSearchAdapter.java16
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java14
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java21
-rw-r--r--app/src/main/res/values/strings.xml2
-rw-r--r--app/src/main/res/xml/pref_timelines.xml7
6 files changed, 87 insertions, 17 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/PronounsHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/PronounsHelper.java
new file mode 100644
index 000000000..dd30eddb5
--- /dev/null
+++ b/app/src/main/java/app/fedilab/android/mastodon/helper/PronounsHelper.java
@@ -0,0 +1,44 @@
+package app.fedilab.android.mastodon.helper;
+/* Copyright 2024 Thomas Schneider
+ *
+ * This file is a part of Fedilab
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the
+ * GNU General Public License as published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * Fedilab 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 Fedilab; if not,
+ * see <http://www.gnu.org/licenses>. */
+import java.util.ArrayList;
+import java.util.List;
+
+public class PronounsHelper {
+
+ public static List<String> pronouns = new ArrayList<>() {
+ {
+ add("pronoun");
+ add("pronouns");
+ add("pronoms");
+ add("pronom");
+ add("pronombres");
+ add("לשון פנייה");
+ add("כינויי גוף");
+ add("pronomen");
+ add("pronomina");
+ add("称谓");
+ add("pronomes");
+ add("pronome");
+ add("pronomi");
+ add("pronomoj");
+ add("zaimki");
+ add("voornaamwoorden");
+ add("riochdairean");
+ add("כינויי גוף");
+ add("personlig pronomen");
+ }
+ };
+}
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/AccountsSearchAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/AccountsSearchAdapter.java
index 974b23258..40449cdf6 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/AccountsSearchAdapter.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/AccountsSearchAdapter.java
@@ -15,6 +15,7 @@ package app.fedilab.android.mastodon.ui.drawer;
* see <http://www.gnu.org/licenses>. */
import android.content.Context;
+import android.content.SharedPreferences;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -23,16 +24,19 @@ import android.widget.Filter;
import android.widget.Filterable;
import androidx.annotation.NonNull;
+import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
+import app.fedilab.android.R;
import app.fedilab.android.databinding.DrawerAccountSearchBinding;
import app.fedilab.android.mastodon.client.entities.api.Account;
import app.fedilab.android.mastodon.client.entities.api.Field;
import app.fedilab.android.mastodon.helper.Helper;
import app.fedilab.android.mastodon.helper.MastodonHelper;
+import app.fedilab.android.mastodon.helper.PronounsHelper;
public class AccountsSearchAdapter extends ArrayAdapter<Account> implements Filterable {
@@ -119,10 +123,14 @@ public class AccountsSearchAdapter extends ArrayAdapter<Account> implements Filt
holder.binding.accountDn.setText(account.display_name);
holder.binding.accountDn.setVisibility(View.VISIBLE);
account.pronouns = null;
- for (Field field : account.fields) {
- if (field.name.trim().equalsIgnoreCase("pronouns")) {
- account.pronouns = Helper.parseHtml(field.value);
- break;
+ SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
+ boolean pronounsSupport = sharedpreferences.getBoolean(getContext().getString(R.string.SET_PRONOUNS_SUPPORT), true);
+ if(pronounsSupport) {
+ for (Field field : account.fields) {
+ if (PronounsHelper.pronouns.contains(field.name.toLowerCase().trim())) {
+ account.pronouns = Helper.parseHtml(field.value);
+ break;
+ }
}
}
if (account.pronouns != null) {
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java
index 1578e4de9..220db6802 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java
@@ -128,6 +128,7 @@ import app.fedilab.android.mastodon.helper.ComposeHelper;
import app.fedilab.android.mastodon.helper.Helper;
import app.fedilab.android.mastodon.helper.LongClickLinkMovementMethod;
import app.fedilab.android.mastodon.helper.MastodonHelper;
+import app.fedilab.android.mastodon.helper.PronounsHelper;
import app.fedilab.android.mastodon.helper.ThemeHelper;
import app.fedilab.android.mastodon.imageeditor.EditImageActivity;
import app.fedilab.android.mastodon.viewmodel.mastodon.AccountsVM;
@@ -1426,11 +1427,14 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
Status statusFromUser = statusList.get(position - 1);
Account accountFromUser = statusFromUser.account;
statusFromUser.pronouns = null;
- if (accountFromUser.fields != null && accountFromUser.fields.size() > 0) {
- for (Field field : accountFromUser.fields) {
- if (field.name.toLowerCase().startsWith("pronoun")) {
- statusList.get(position).pronouns = Helper.parseHtml(field.value);
- break;
+ boolean pronounsSupport = sharedpreferences.getBoolean(context.getString(R.string.SET_PRONOUNS_SUPPORT), true);
+ if(pronounsSupport) {
+ if (accountFromUser.fields != null && accountFromUser.fields.size() > 0) {
+ for (Field field : accountFromUser.fields) {
+ if (PronounsHelper.pronouns.contains(field.name.toLowerCase().trim())) {
+ statusList.get(position).pronouns = Helper.parseHtml(field.value);
+ break;
+ }
}
}
}
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java
index 479c8746c..596d25fa4 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java
@@ -169,6 +169,7 @@ import app.fedilab.android.mastodon.helper.Helper;
import app.fedilab.android.mastodon.helper.LongClickLinkMovementMethod;
import app.fedilab.android.mastodon.helper.MastodonHelper;
import app.fedilab.android.mastodon.helper.MediaHelper;
+import app.fedilab.android.mastodon.helper.PronounsHelper;
import app.fedilab.android.mastodon.helper.SpannableHelper;
import app.fedilab.android.mastodon.helper.ThemeHelper;
import app.fedilab.android.mastodon.helper.TimelineHelper;
@@ -481,17 +482,21 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
}
String loadMediaType = sharedpreferences.getString(context.getString(R.string.SET_LOAD_MEDIA_TYPE), "ALWAYS");
- if (statusToDeal.pronouns == null && statusToDeal.account.fields != null && statusToDeal.account.fields.size() > 0) {
- for (Field field : statusToDeal.account.fields) {
- if (field.name.toLowerCase().startsWith("pronoun")) {
- statusToDeal.pronouns = Helper.parseHtml(field.value);
- break;
+ boolean pronounsSupport = sharedpreferences.getBoolean(context.getString(R.string.SET_PRONOUNS_SUPPORT), true);
+ if(pronounsSupport) {
+ if (statusToDeal.pronouns == null && statusToDeal.account.fields != null && statusToDeal.account.fields.size() > 0) {
+ for (Field field : statusToDeal.account.fields) {
+ if (PronounsHelper.pronouns.contains(field.name.toLowerCase().trim())) {
+ statusToDeal.pronouns = Helper.parseHtml(field.value);
+ break;
+ }
+ }
+ if (statusToDeal.pronouns == null) {
+ statusToDeal.pronouns = "none";
}
- }
- if (statusToDeal.pronouns == null) {
- statusToDeal.pronouns = "none";
}
}
+
if (statusToDeal.pronouns != null && !statusToDeal.pronouns.equalsIgnoreCase("none")) {
holder.binding.pronouns.setVisibility(View.VISIBLE);
holder.binding.pronouns.setText(statusToDeal.pronouns);
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7a0c32a81..22177660b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -639,6 +639,7 @@
<string name="other">Other</string>
<string name="eg_sensitive_content">Eg.: Sensitive Content</string>
<string name="Pronouns">Pronouns</string>
+ <string name="pronouns_support">Pronouns support</string>
<string name="add_status">Add status</string>
<string name="remove_status">Remove status</string>
@@ -1197,6 +1198,7 @@
<string name="SET_MARKDOWN_SUPPORT" translatable="false">SET_MARKDOWN_SUPPORT</string>
<string name="SET_TRUNCATE_LINKS" translatable="false">SET_TRUNCATE_LINKS</string>
<string name="SET_UNDERLINE_CLICKABLE" translatable="false">SET_UNDERLINE_CLICKABLE</string>
+ <string name="SET_PRONOUNS_SUPPORT" translatable="false">SET_PRONOUNS_SUPPORT</string>
<string name="SET_TRUNCATE_LINKS_MAX" translatable="false">SET_TRUNCATE_LINKS_MAX</string>
<string name="SET_HIDE_SINGLE_MEDIA_WITH_CARD" translatable="false">SET_HIDE_SINGLE_MEDIA_WITH_CARD</string>
diff --git a/app/src/main/res/xml/pref_timelines.xml b/app/src/main/res/xml/pref_timelines.xml
index 90ad7ca0c..4f47cb44e 100644
--- a/app/src/main/res/xml/pref_timelines.xml
+++ b/app/src/main/res/xml/pref_timelines.xml
@@ -79,6 +79,13 @@
app:singleLineTitle="false"
app:title="@string/underline_links" />
+ <SwitchPreferenceCompat
+ android:defaultValue="true"
+ app:iconSpaceReserved="false"
+ app:key="@string/SET_PRONOUNS_SUPPORT"
+ app:singleLineTitle="false"
+ app:title="@string/pronouns_support" />
+
<androidx.preference.SeekBarPreference
android:defaultValue="30"
android:max="150"