Commit 2ecd5123 authored by Thomas's avatar Thomas
Browse files

Merge branch 'improve_pronouns_support' into develop

parents 53b8f9e1 f87c63ac
Loading
Loading
Loading
Loading
+44 −0
Original line number Diff line number Diff line
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");
        }
    };
}
+12 −4
Original line number Diff line number Diff line
@@ -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,12 +123,16 @@ public class AccountsSearchAdapter extends ArrayAdapter<Account> implements Filt
        holder.binding.accountDn.setText(account.display_name);
        holder.binding.accountDn.setVisibility(View.VISIBLE);
        account.pronouns = null;
        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 (field.name.trim().equalsIgnoreCase("pronouns")) {
                if (PronounsHelper.pronouns.contains(field.name.toLowerCase().trim())) {
                    account.pronouns = Helper.parseHtml(field.value);
                    break;
                }
            }
        }
        if (account.pronouns != null) {
            holder.binding.pronouns.setText(account.pronouns);
            holder.binding.pronouns.setVisibility(View.VISIBLE);
+9 −5
Original line number Diff line number Diff line
@@ -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,15 +1427,18 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
                Status statusFromUser = statusList.get(position - 1);
                Account accountFromUser = statusFromUser.account;
                statusFromUser.pronouns = null;
                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 (field.name.toLowerCase().startsWith("pronoun")) {
                            if (PronounsHelper.pronouns.contains(field.name.toLowerCase().trim())) {
                                statusList.get(position).pronouns = Helper.parseHtml(field.value);
                                break;
                            }
                        }
                    }
                }
            }
            ComposeViewHolder holder = (ComposeViewHolder) viewHolder;
            boolean extraFeatures = sharedpreferences.getBoolean(context.getString(R.string.SET_EXTAND_EXTRA_FEATURES) + MainActivity.currentUserID + MainActivity.currentInstance, false);
            boolean mathsComposer = sharedpreferences.getBoolean(context.getString(R.string.SET_MATHS_COMPOSER), true);
+13 −8
Original line number Diff line number Diff line
@@ -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,9 +482,11 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
        }

        String loadMediaType = sharedpreferences.getString(context.getString(R.string.SET_LOAD_MEDIA_TYPE), "ALWAYS");
        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 (field.name.toLowerCase().startsWith("pronoun")) {
                    if (PronounsHelper.pronouns.contains(field.name.toLowerCase().trim())) {
                        statusToDeal.pronouns = Helper.parseHtml(field.value);
                        break;
                    }
@@ -492,6 +495,8 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                    statusToDeal.pronouns = "none";
                }
            }
        }

        if (statusToDeal.pronouns != null && !statusToDeal.pronouns.equalsIgnoreCase("none")) {
            holder.binding.pronouns.setVisibility(View.VISIBLE);
            holder.binding.pronouns.setText(statusToDeal.pronouns);
+2 −0
Original line number Diff line number Diff line
@@ -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>
Loading