summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2023-12-15 15:15:38 +0100
committerThomas <tschneider.ac@gmail.com>2023-12-15 15:15:38 +0100
commit4711d5fd236c7f1f414905d22027588fc519e0b2 (patch)
tree40a98c88793633e6d0c184d33c0b740afb662b0f
parent0861becc5659cd674f620a9a639ebca9651259cb (diff)
Make links and media clickable when composing
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java36
-rw-r--r--app/src/main/res/layouts/mastodon/layout/drawer_media_list.xml28
-rw-r--r--app/src/main/res/layouts/mastodon/layout/drawer_status_simple.xml19
-rw-r--r--app/src/main/res/values/strings.xml1
4 files changed, 84 insertions, 0 deletions
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 948dc3d12..b2c2d41f4 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
@@ -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;
@@ -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;
@@ -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;
@@ -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)),
diff --git a/app/src/main/res/layouts/mastodon/layout/drawer_media_list.xml b/app/src/main/res/layouts/mastodon/layout/drawer_media_list.xml
new file mode 100644
index 000000000..fc24bf21d
--- /dev/null
+++ b/app/src/main/res/layouts/mastodon/layout/drawer_media_list.xml
@@ -0,0 +1,28 @@
+<?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
diff --git a/app/src/main/res/layouts/mastodon/layout/drawer_status_simple.xml b/app/src/main/res/layouts/mastodon/layout/drawer_status_simple.xml
index 344f88f17..2fb386fd5 100644
--- a/app/src/main/res/layouts/mastodon/layout/drawer_status_simple.xml
+++ b/app/src/main/res/layouts/mastodon/layout/drawer_status_simple.xml
@@ -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
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 07da9ce33..ea49a4198 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -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