Commit c0f8c744 authored by Thomas's avatar Thomas
Browse files

- Add media display for quoted messages

parent f7fff2f0
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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" />

+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>
+1 −0
Original line number Diff line number Diff line
@@ -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>