Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +30 −0 Original line number Diff line number Diff line Loading @@ -769,6 +769,36 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.quotedMessage.spoiler.setText(null); holder.binding.quotedMessage.statusContent.setVisibility(View.VISIBLE); } // Display media attachments in quoted message if (statusToDeal.getQuote().media_attachments != null && !statusToDeal.getQuote().media_attachments.isEmpty()) { List<Attachment> quoteAttachments = statusToDeal.getQuote().media_attachments; Attachment firstAttachment = quoteAttachments.get(0); String url = firstAttachment.preview_url != null ? firstAttachment.preview_url : firstAttachment.url; Glide.with(context).load(url).into(holder.binding.quotedMessage.quotedMedia); holder.binding.quotedMessage.quotedMedia.setVisibility(View.VISIBLE); holder.binding.quotedMessage.quotedMedia.setOnClickListener(v -> { Intent mediaIntent = new Intent(context, MediaActivity.class); Bundle args = new Bundle(); args.putInt(Helper.ARG_MEDIA_POSITION, 0); args.putSerializable(Helper.ARG_MEDIA_ARRAY, new ArrayList<>(quoteAttachments)); new CachedBundle(context).insertBundle(args, Helper.getCurrentAccount(context), bundleId -> { Bundle bundle = new Bundle(); bundle.putLong(Helper.ARG_INTENT_ID, bundleId); mediaIntent.putExtras(bundle); context.startActivity(mediaIntent); }); }); if (quoteAttachments.size() > 1) { holder.binding.quotedMessage.quotedMediaMore.setVisibility(View.VISIBLE); holder.binding.quotedMessage.quotedMediaCount.setText( context.getString(R.string.plus_media, quoteAttachments.size() - 1)); } else { holder.binding.quotedMessage.quotedMediaMore.setVisibility(View.GONE); } } else { holder.binding.quotedMessage.quotedMedia.setVisibility(View.GONE); holder.binding.quotedMessage.quotedMediaMore.setVisibility(View.GONE); } holder.binding.quotedMessage.cardviewContainer.setVisibility(View.VISIBLE); } else { holder.binding.quotedMessage.cardviewContainer.setVisibility(View.GONE); Loading app/src/main/res/layouts/mastodon/layout/drawer_status.xml +1 −1 Original line number Diff line number Diff line Loading @@ -465,7 +465,7 @@ <include android:id="@+id/quoted_message" layout="@layout/drawer_status_simple" layout="@layout/drawer_status_quoted" android:visibility="gone" tools:visibility="visible" /> Loading app/src/main/res/layouts/mastodon/layout/drawer_status_quoted.xml 0 → 100644 +137 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?><!-- Copyright 2026 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> --> <com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/cardview_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/card_margin" android:layout_marginTop="@dimen/card_margin" android:clipChildren="false" android:clipToPadding="false" app:cardElevation="0dp" app:strokeWidth="0dp"> <View android:id="@+id/divider_card" android:layout_width="match_parent" android:layout_height="1px" android:background="?colorOutline" /> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/main_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="6dp" android:clipChildren="false" android:clipToPadding="false" android:orientation="vertical"> <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/status_user_info" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal" android:padding="6dp"> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/avatar" android:layout_width="20dp" android:layout_height="20dp" android:scaleType="centerInside" tools:src="@drawable/ic_person" /> <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:maxLines="1" tools:text="Display Name" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="6dp" android:alpha="0.7" android:ellipsize="end" android:maxLines="1" tools:text="\@username\@instance.test" /> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> <app.fedilab.android.mastodon.helper.CustomTextView android:id="@+id/spoiler" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginTop="6dp" tools:text="Warning: Lorem Ipsum below" /> <app.fedilab.android.mastodon.helper.CustomTextView android:id="@+id/status_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginTop="6dp" android:textIsSelectable="true" tools:maxLines="10" tools:text="@tools:sample/lorem/random" /> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/quoted_media" android:layout_width="match_parent" android:layout_height="200dp" android:layout_marginHorizontal="6dp" android:layout_marginTop="6dp" android:adjustViewBounds="true" android:scaleType="centerCrop" android:visibility="gone" tools:src="@tools:sample/backgrounds/scenic" tools:visibility="visible" /> <LinearLayout android:id="@+id/quoted_media_more" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginTop="4dp" android:orientation="horizontal" android:visibility="gone"> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/quoted_media_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:alpha="0.7" android:textSize="12sp" tools:text="+3 media" /> </LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat> </com.google.android.material.card.MaterialCardView> app/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ <string name="open_with">Open with</string> <string name="validate">Validate</string> <string name="media">Media</string> <string name="plus_media">+%d media</string> <string name="share_with">Share with</string> <string name="shared_via">Shared via Fedilab</string> <string name="replies">Replies</string> Loading Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +30 −0 Original line number Diff line number Diff line Loading @@ -769,6 +769,36 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.quotedMessage.spoiler.setText(null); holder.binding.quotedMessage.statusContent.setVisibility(View.VISIBLE); } // Display media attachments in quoted message if (statusToDeal.getQuote().media_attachments != null && !statusToDeal.getQuote().media_attachments.isEmpty()) { List<Attachment> quoteAttachments = statusToDeal.getQuote().media_attachments; Attachment firstAttachment = quoteAttachments.get(0); String url = firstAttachment.preview_url != null ? firstAttachment.preview_url : firstAttachment.url; Glide.with(context).load(url).into(holder.binding.quotedMessage.quotedMedia); holder.binding.quotedMessage.quotedMedia.setVisibility(View.VISIBLE); holder.binding.quotedMessage.quotedMedia.setOnClickListener(v -> { Intent mediaIntent = new Intent(context, MediaActivity.class); Bundle args = new Bundle(); args.putInt(Helper.ARG_MEDIA_POSITION, 0); args.putSerializable(Helper.ARG_MEDIA_ARRAY, new ArrayList<>(quoteAttachments)); new CachedBundle(context).insertBundle(args, Helper.getCurrentAccount(context), bundleId -> { Bundle bundle = new Bundle(); bundle.putLong(Helper.ARG_INTENT_ID, bundleId); mediaIntent.putExtras(bundle); context.startActivity(mediaIntent); }); }); if (quoteAttachments.size() > 1) { holder.binding.quotedMessage.quotedMediaMore.setVisibility(View.VISIBLE); holder.binding.quotedMessage.quotedMediaCount.setText( context.getString(R.string.plus_media, quoteAttachments.size() - 1)); } else { holder.binding.quotedMessage.quotedMediaMore.setVisibility(View.GONE); } } else { holder.binding.quotedMessage.quotedMedia.setVisibility(View.GONE); holder.binding.quotedMessage.quotedMediaMore.setVisibility(View.GONE); } holder.binding.quotedMessage.cardviewContainer.setVisibility(View.VISIBLE); } else { holder.binding.quotedMessage.cardviewContainer.setVisibility(View.GONE); Loading
app/src/main/res/layouts/mastodon/layout/drawer_status.xml +1 −1 Original line number Diff line number Diff line Loading @@ -465,7 +465,7 @@ <include android:id="@+id/quoted_message" layout="@layout/drawer_status_simple" layout="@layout/drawer_status_quoted" android:visibility="gone" tools:visibility="visible" /> Loading
app/src/main/res/layouts/mastodon/layout/drawer_status_quoted.xml 0 → 100644 +137 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?><!-- Copyright 2026 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> --> <com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/cardview_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/card_margin" android:layout_marginTop="@dimen/card_margin" android:clipChildren="false" android:clipToPadding="false" app:cardElevation="0dp" app:strokeWidth="0dp"> <View android:id="@+id/divider_card" android:layout_width="match_parent" android:layout_height="1px" android:background="?colorOutline" /> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/main_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="6dp" android:clipChildren="false" android:clipToPadding="false" android:orientation="vertical"> <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/status_user_info" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal" android:padding="6dp"> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/avatar" android:layout_width="20dp" android:layout_height="20dp" android:scaleType="centerInside" tools:src="@drawable/ic_person" /> <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:maxLines="1" tools:text="Display Name" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="6dp" android:alpha="0.7" android:ellipsize="end" android:maxLines="1" tools:text="\@username\@instance.test" /> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> <app.fedilab.android.mastodon.helper.CustomTextView android:id="@+id/spoiler" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginTop="6dp" tools:text="Warning: Lorem Ipsum below" /> <app.fedilab.android.mastodon.helper.CustomTextView android:id="@+id/status_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginTop="6dp" android:textIsSelectable="true" tools:maxLines="10" tools:text="@tools:sample/lorem/random" /> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/quoted_media" android:layout_width="match_parent" android:layout_height="200dp" android:layout_marginHorizontal="6dp" android:layout_marginTop="6dp" android:adjustViewBounds="true" android:scaleType="centerCrop" android:visibility="gone" tools:src="@tools:sample/backgrounds/scenic" tools:visibility="visible" /> <LinearLayout android:id="@+id/quoted_media_more" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginTop="4dp" android:orientation="horizontal" android:visibility="gone"> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/quoted_media_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:alpha="0.7" android:textSize="12sp" tools:text="+3 media" /> </LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat> </com.google.android.material.card.MaterialCardView>
app/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ <string name="open_with">Open with</string> <string name="validate">Validate</string> <string name="media">Media</string> <string name="plus_media">+%d media</string> <string name="share_with">Share with</string> <string name="shared_via">Shared via Fedilab</string> <string name="replies">Replies</string> Loading