Indicator with pronouns

This commit is contained in:
Thomas 2024-01-23 18:48:42 +01:00
parent 773322b60a
commit 7ab24d900b
6 changed files with 82 additions and 8 deletions

View file

@ -143,6 +143,8 @@ public class Status implements Serializable, Cloneable {
public transient MathJaxView mathJaxView; public transient MathJaxView mathJaxView;
public String lemmy_post_id; public String lemmy_post_id;
public transient String pronouns = null;
@Override @Override
public boolean equals(@Nullable Object obj) { public boolean equals(@Nullable Object obj) {
boolean same = false; boolean same = false;

View file

@ -113,6 +113,7 @@ import app.fedilab.android.mastodon.client.entities.api.Account;
import app.fedilab.android.mastodon.client.entities.api.Attachment; import app.fedilab.android.mastodon.client.entities.api.Attachment;
import app.fedilab.android.mastodon.client.entities.api.Emoji; import app.fedilab.android.mastodon.client.entities.api.Emoji;
import app.fedilab.android.mastodon.client.entities.api.EmojiInstance; import app.fedilab.android.mastodon.client.entities.api.EmojiInstance;
import app.fedilab.android.mastodon.client.entities.api.Field;
import app.fedilab.android.mastodon.client.entities.api.Mention; import app.fedilab.android.mastodon.client.entities.api.Mention;
import app.fedilab.android.mastodon.client.entities.api.Poll; import app.fedilab.android.mastodon.client.entities.api.Poll;
import app.fedilab.android.mastodon.client.entities.api.Status; import app.fedilab.android.mastodon.client.entities.api.Status;
@ -1358,6 +1359,7 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
if (getItemViewType(position) == TYPE_NORMAL) { if (getItemViewType(position) == TYPE_NORMAL) {
Status status = statusList.get(position); Status status = statusList.get(position);
StatusSimpleViewHolder holder = (StatusSimpleViewHolder) viewHolder; StatusSimpleViewHolder holder = (StatusSimpleViewHolder) viewHolder;
if (status.media_attachments != null && status.media_attachments.size() > 0) { if (status.media_attachments != null && status.media_attachments.size() > 0) {
holder.binding.simpleMedia.removeAllViews(); holder.binding.simpleMedia.removeAllViews();
List<Attachment> attachmentList = statusList.get(position).media_attachments; List<Attachment> attachmentList = statusList.get(position).media_attachments;
@ -1421,13 +1423,30 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
} else if (getItemViewType(position) == TYPE_COMPOSE) { } else if (getItemViewType(position) == TYPE_COMPOSE) {
Status statusDraft = statusList.get(position); Status statusDraft = statusList.get(position);
if(position > 0 && getItemViewType(position -1 ) == TYPE_NORMAL) {
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 = field.value;
break;
}
}
}
}
ComposeViewHolder holder = (ComposeViewHolder) viewHolder; ComposeViewHolder holder = (ComposeViewHolder) viewHolder;
boolean extraFeatures = sharedpreferences.getBoolean(context.getString(R.string.SET_EXTAND_EXTRA_FEATURES) + MainActivity.currentUserID + MainActivity.currentInstance, false); 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); boolean mathsComposer = sharedpreferences.getBoolean(context.getString(R.string.SET_MATHS_COMPOSER), true);
boolean forwardTag = sharedpreferences.getBoolean(context.getString(R.string.SET_FORWARD_TAGS_IN_REPLY), false); boolean forwardTag = sharedpreferences.getBoolean(context.getString(R.string.SET_FORWARD_TAGS_IN_REPLY), false);
if(statusDraft.pronouns != null) {
holder.binding.genders.setVisibility(View.VISIBLE);
holder.binding.pronouns.setText(statusDraft.pronouns);
} else {
holder.binding.genders.setVisibility(View.GONE);
}
if (mathsComposer) { if (mathsComposer) {
holder.binding.buttonMathsComposer.setVisibility(View.VISIBLE); holder.binding.buttonMathsComposer.setVisibility(View.VISIBLE);
holder.binding.buttonMathsComposer.setOnClickListener(v -> { holder.binding.buttonMathsComposer.setOnClickListener(v -> {

View file

@ -58,7 +58,6 @@ import android.os.Looper;
import android.text.Html; import android.text.Html;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MotionEvent; import android.view.MotionEvent;
@ -148,6 +147,7 @@ import app.fedilab.android.mastodon.activities.StatusInfoActivity;
import app.fedilab.android.mastodon.activities.TimelineActivity; import app.fedilab.android.mastodon.activities.TimelineActivity;
import app.fedilab.android.mastodon.activities.admin.AdminAccountActivity; import app.fedilab.android.mastodon.activities.admin.AdminAccountActivity;
import app.fedilab.android.mastodon.client.entities.api.Attachment; import app.fedilab.android.mastodon.client.entities.api.Attachment;
import app.fedilab.android.mastodon.client.entities.api.Field;
import app.fedilab.android.mastodon.client.entities.api.Poll; import app.fedilab.android.mastodon.client.entities.api.Poll;
import app.fedilab.android.mastodon.client.entities.api.Reaction; import app.fedilab.android.mastodon.client.entities.api.Reaction;
import app.fedilab.android.mastodon.client.entities.api.Status; import app.fedilab.android.mastodon.client.entities.api.Status;
@ -482,7 +482,23 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
} }
String loadMediaType = sharedpreferences.getString(context.getString(R.string.SET_LOAD_MEDIA_TYPE), "ALWAYS"); 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 = field.value;
break;
}
}
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);
} else {
holder.binding.pronouns.setVisibility(View.INVISIBLE);
}
if (statusToDeal.quote != null && (statusToDeal.spoiler_text == null || statusToDeal.spoiler_text.trim().isEmpty() || statusToDeal.isExpended)) { if (statusToDeal.quote != null && (statusToDeal.spoiler_text == null || statusToDeal.spoiler_text.trim().isEmpty() || statusToDeal.isExpended)) {
holder.binding.quotedMessage.cardviewContainer.setCardElevation((int) Helper.convertDpToPixel(5, context)); holder.binding.quotedMessage.cardviewContainer.setCardElevation((int) Helper.convertDpToPixel(5, context));
holder.binding.quotedMessage.dividerCard.setVisibility(View.GONE); holder.binding.quotedMessage.dividerCard.setVisibility(View.GONE);

View file

@ -163,13 +163,25 @@
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/display_name" android:id="@+id/display_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:ellipsize="end"
android:singleLine="true"
tools:text="@tools:sample/full_names" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/pronouns"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="6dp" android:layout_marginStart="6dp"
android:layout_weight="1" android:layout_weight="1"
android:visibility="invisible"
tools:visibility="visible"
android:textColor="?colorPrimary"
android:ellipsize="end" android:ellipsize="end"
android:singleLine="true" android:singleLine="true"
tools:text="@tools:sample/full_names" /> tools:text="He/Him" />
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/local_only" android:id="@+id/local_only"

View file

@ -42,8 +42,31 @@
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/genders"
android:visibility="gone"
tools:visibility="visible"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@id/button_emoji"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/laTexView_container"
android:orientation="horizontal"
android:layout_marginStart="6dp"
>
<com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Pronouns"/>
<com.google.android.material.textview.MaterialTextView
android:layout_marginStart="10dp"
android:id="@+id/pronouns"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
android:textColor="?colorPrimary"
tools:text="He/Him"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</androidx.appcompat.widget.LinearLayoutCompat>
<com.google.android.material.textfield.MaterialAutoCompleteTextView <com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/content_spoiler" android:id="@+id/content_spoiler"
android:layout_width="0dp" android:layout_width="0dp"
@ -57,7 +80,7 @@
android:visibility="gone" android:visibility="gone"
app:layout_constraintEnd_toStartOf="@id/button_emoji" app:layout_constraintEnd_toStartOf="@id/button_emoji"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/laTexView_container" app:layout_constraintTop_toBottomOf="@+id/genders"
tools:visibility="visible" /> tools:visibility="visible" />
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton

View file

@ -638,6 +638,8 @@
<string name="followers_only">Followers only</string> <string name="followers_only">Followers only</string>
<string name="other">Other</string> <string name="other">Other</string>
<string name="eg_sensitive_content">Eg.: Sensitive Content</string> <string name="eg_sensitive_content">Eg.: Sensitive Content</string>
<string name="Pronouns">Pronouns</string>
<string name="add_status">Add status</string> <string name="add_status">Add status</string>
<string name="remove_status">Remove status</string> <string name="remove_status">Remove status</string>
<string name="post_message">Posting message…</string> <string name="post_message">Posting message…</string>