Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +36 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; import android.view.inputmethod.InputMethodManager; import android.webkit.URLUtil; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.GridView; Loading @@ -59,6 +60,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.AppCompatEditText; import androidx.appcompat.widget.LinearLayoutCompat; import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityOptionsCompat; import androidx.core.content.ContextCompat; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.ViewModelProvider; Loading Loading @@ -101,9 +103,11 @@ import app.fedilab.android.activities.MainActivity; import app.fedilab.android.databinding.ComposeAttachmentItemBinding; import app.fedilab.android.databinding.ComposePollBinding; import app.fedilab.android.databinding.ComposePollItemBinding; import app.fedilab.android.databinding.DrawerMediaListBinding; import app.fedilab.android.databinding.DrawerStatusComposeBinding; import app.fedilab.android.databinding.DrawerStatusSimpleBinding; import app.fedilab.android.mastodon.activities.ComposeActivity; import app.fedilab.android.mastodon.activities.MediaActivity; 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; Loading Loading @@ -1343,6 +1347,38 @@ 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; for(Attachment attachment: attachmentList) { DrawerMediaListBinding drawerMediaListBinding = DrawerMediaListBinding.inflate(LayoutInflater.from(context), holder.binding.simpleMedia, false); Glide.with(drawerMediaListBinding.media.getContext()) .load(attachment.preview_url) .into(drawerMediaListBinding.media); if(attachment.filename != null) { drawerMediaListBinding.mediaName.setText(attachment.filename); } else if (attachment.preview_url != null){ drawerMediaListBinding.mediaName.setText(URLUtil.guessFileName(attachment.preview_url, null, null)); } drawerMediaListBinding.getRoot().setOnClickListener(v->{ Intent mediaIntent = new Intent(context, MediaActivity.class); Bundle b = new Bundle(); ArrayList<Attachment> attachments = new ArrayList<>(); attachments.add(attachment); b.putSerializable(Helper.ARG_MEDIA_ARRAY, attachments); mediaIntent.putExtras(b); ActivityOptionsCompat options = ActivityOptionsCompat .makeSceneTransitionAnimation((Activity) context, drawerMediaListBinding.media, attachment.url); context.startActivity(mediaIntent, options.toBundle()); }); holder.binding.simpleMedia.addView(drawerMediaListBinding.getRoot()); } holder.binding.simpleMediaContainer.setVisibility(View.VISIBLE); } else { holder.binding.simpleMediaContainer.setVisibility(View.GONE); } holder.binding.statusContent.setText( status.getSpanContent(context, new WeakReference<>(holder.binding.statusContent), () -> notifyItemChanged(position)), Loading app/src/main/res/layouts/mastodon/layout/drawer_media_list.xml 0 → 100644 +28 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/media" android:contentDescription="@string/thumbnail" android:layout_margin="5dp" android:layout_width="30dp" android:layout_height="30dp" tools:src="@tools:sample/avatars" android:layout_gravity="center" android:scaleType="centerCrop" /> <TextView android:id="@+id/media_name" android:contentDescription="@string/thumbnail" android:layout_margin="5dp" android:layout_marginStart="10dp" android:ellipsize="end" android:layout_gravity="center" android:maxLines="1" android:layout_width="0dp" android:layout_weight="1" tools:text="@tools:sample/lorem/random" android:layout_height="wrap_content" /> </LinearLayout> No newline at end of file app/src/main/res/layouts/mastodon/layout/drawer_status_simple.xml +19 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,25 @@ android:textIsSelectable="true" tools:maxLines="10" tools:text="@tools:sample/lorem/random" /> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/simple_media_container" android:visibility="gone" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginTop="6dp" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="?colorPrimary" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/simple_media"/> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> </com.google.android.material.card.MaterialCardView> No newline at end of file app/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2035,4 +2035,5 @@ <string name="set_custom_accent_value_light_description">Color that will be applied to the light theme</string> <string name="set_custom_accent_value_dark_description">Color that will be applied to the dark theme</string> <string name="thumbnail">Thumbnail</string> </resources> No newline at end of file Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +36 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; import android.view.inputmethod.InputMethodManager; import android.webkit.URLUtil; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.GridView; Loading @@ -59,6 +60,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.AppCompatEditText; import androidx.appcompat.widget.LinearLayoutCompat; import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityOptionsCompat; import androidx.core.content.ContextCompat; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.ViewModelProvider; Loading Loading @@ -101,9 +103,11 @@ import app.fedilab.android.activities.MainActivity; import app.fedilab.android.databinding.ComposeAttachmentItemBinding; import app.fedilab.android.databinding.ComposePollBinding; import app.fedilab.android.databinding.ComposePollItemBinding; import app.fedilab.android.databinding.DrawerMediaListBinding; import app.fedilab.android.databinding.DrawerStatusComposeBinding; import app.fedilab.android.databinding.DrawerStatusSimpleBinding; import app.fedilab.android.mastodon.activities.ComposeActivity; import app.fedilab.android.mastodon.activities.MediaActivity; 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; Loading Loading @@ -1343,6 +1347,38 @@ 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; for(Attachment attachment: attachmentList) { DrawerMediaListBinding drawerMediaListBinding = DrawerMediaListBinding.inflate(LayoutInflater.from(context), holder.binding.simpleMedia, false); Glide.with(drawerMediaListBinding.media.getContext()) .load(attachment.preview_url) .into(drawerMediaListBinding.media); if(attachment.filename != null) { drawerMediaListBinding.mediaName.setText(attachment.filename); } else if (attachment.preview_url != null){ drawerMediaListBinding.mediaName.setText(URLUtil.guessFileName(attachment.preview_url, null, null)); } drawerMediaListBinding.getRoot().setOnClickListener(v->{ Intent mediaIntent = new Intent(context, MediaActivity.class); Bundle b = new Bundle(); ArrayList<Attachment> attachments = new ArrayList<>(); attachments.add(attachment); b.putSerializable(Helper.ARG_MEDIA_ARRAY, attachments); mediaIntent.putExtras(b); ActivityOptionsCompat options = ActivityOptionsCompat .makeSceneTransitionAnimation((Activity) context, drawerMediaListBinding.media, attachment.url); context.startActivity(mediaIntent, options.toBundle()); }); holder.binding.simpleMedia.addView(drawerMediaListBinding.getRoot()); } holder.binding.simpleMediaContainer.setVisibility(View.VISIBLE); } else { holder.binding.simpleMediaContainer.setVisibility(View.GONE); } holder.binding.statusContent.setText( status.getSpanContent(context, new WeakReference<>(holder.binding.statusContent), () -> notifyItemChanged(position)), Loading
app/src/main/res/layouts/mastodon/layout/drawer_media_list.xml 0 → 100644 +28 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/media" android:contentDescription="@string/thumbnail" android:layout_margin="5dp" android:layout_width="30dp" android:layout_height="30dp" tools:src="@tools:sample/avatars" android:layout_gravity="center" android:scaleType="centerCrop" /> <TextView android:id="@+id/media_name" android:contentDescription="@string/thumbnail" android:layout_margin="5dp" android:layout_marginStart="10dp" android:ellipsize="end" android:layout_gravity="center" android:maxLines="1" android:layout_width="0dp" android:layout_weight="1" tools:text="@tools:sample/lorem/random" android:layout_height="wrap_content" /> </LinearLayout> No newline at end of file
app/src/main/res/layouts/mastodon/layout/drawer_status_simple.xml +19 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,25 @@ android:textIsSelectable="true" tools:maxLines="10" tools:text="@tools:sample/lorem/random" /> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/simple_media_container" android:visibility="gone" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="6dp" android:layout_marginTop="6dp" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="?colorPrimary" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/simple_media"/> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> </com.google.android.material.card.MaterialCardView> No newline at end of file
app/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2035,4 +2035,5 @@ <string name="set_custom_accent_value_light_description">Color that will be applied to the light theme</string> <string name="set_custom_accent_value_dark_description">Color that will be applied to the dark theme</string> <string name="thumbnail">Thumbnail</string> </resources> No newline at end of file