diff options
author | Thomas <tschneider.ac@gmail.com> | 2024-01-23 18:48:42 +0100 |
---|---|---|
committer | Thomas <tschneider.ac@gmail.com> | 2024-01-23 18:48:42 +0100 |
commit | 7ab24d900b493d4ae9f68fb9ed5498a591cbc619 (patch) | |
tree | dc0821e4c7265cbf4a565b0a1c2a5ad6e521a54c | |
parent | 773322b60a9f8ca6a3cb2200c4bfa052b992f1b8 (diff) |
Indicator with pronouns
6 files changed, 82 insertions, 8 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java index cb3437eaa..c6ef8d87a 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java @@ -143,6 +143,8 @@ public class Status implements Serializable, Cloneable { public transient MathJaxView mathJaxView; public String lemmy_post_id; + public transient String pronouns = null; + @Override public boolean equals(@Nullable Object obj) { boolean same = false; 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 695207270..05e1c9135 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 @@ -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.Emoji; 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.Poll; 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) { Status status = statusList.get(position); StatusSimpleViewHolder holder = (StatusSimpleViewHolder) viewHolder; + if (status.media_attachments != null && status.media_attachments.size() > 0) { holder.binding.simpleMedia.removeAllViews(); 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) { 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; 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 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) { holder.binding.buttonMathsComposer.setVisibility(View.VISIBLE); holder.binding.buttonMathsComposer.setOnClickListener(v -> { 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 e088e0af2..a659d4aef 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 @@ -58,7 +58,6 @@ import android.os.Looper; import android.text.Html; import android.text.SpannableString; import android.text.TextUtils; -import android.util.Log; import android.util.TypedValue; import android.view.LayoutInflater; 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.admin.AdminAccountActivity; 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.Reaction; 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"); - + 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)) { holder.binding.quotedMessage.cardviewContainer.setCardElevation((int) Helper.convertDpToPixel(5, context)); holder.binding.quotedMessage.dividerCard.setVisibility(View.GONE); diff --git a/app/src/main/res/layouts/mastodon/layout/drawer_status.xml b/app/src/main/res/layouts/mastodon/layout/drawer_status.xml index d331c73d4..4cae9d71f 100644 --- a/app/src/main/res/layouts/mastodon/layout/drawer_status.xml +++ b/app/src/main/res/layouts/mastodon/layout/drawer_status.xml @@ -163,13 +163,25 @@ <androidx.appcompat.widget.AppCompatTextView 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_height="wrap_content" android:layout_marginStart="6dp" android:layout_weight="1" + android:visibility="invisible" + tools:visibility="visible" + android:textColor="?colorPrimary" android:ellipsize="end" android:singleLine="true" - tools:text="@tools:sample/full_names" /> + tools:text="He/Him" /> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/local_only" diff --git a/app/src/main/res/layouts/mastodon/layout/drawer_status_compose.xml b/app/src/main/res/layouts/mastodon/layout/drawer_status_compose.xml index b3fdd1c6b..506fb0a99 100644 --- a/app/src/main/res/layouts/mastodon/layout/drawer_status_compose.xml +++ b/app/src/main/res/layouts/mastodon/layout/drawer_status_compose.xml @@ -42,8 +42,31 @@ app:layout_constraintTop_toTopOf="parent"> </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 android:id="@+id/content_spoiler" android:layout_width="0dp" @@ -57,7 +80,7 @@ android:visibility="gone" app:layout_constraintEnd_toStartOf="@id/button_emoji" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/laTexView_container" + app:layout_constraintTop_toBottomOf="@+id/genders" tools:visibility="visible" /> <com.google.android.material.button.MaterialButton diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 13f0b11f5..7a0c32a81 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -638,6 +638,8 @@ <string name="followers_only">Followers only</string> <string name="other">Other</string> <string name="eg_sensitive_content">Eg.: Sensitive Content</string> + <string name="Pronouns">Pronouns</string> + <string name="add_status">Add status</string> <string name="remove_status">Remove status</string> <string name="post_message">Posting messageā¦</string> |