From 125186885d5b9f8b2c414e5959b82419c51cb748 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Fri, 10 Apr 2020 02:18:37 +0300 Subject: [PATCH] emoji_reactions: show keyboard as dialog --- .../tusky/adapter/StatusBaseViewHolder.java | 13 ++++++++++++- app/src/main/res/layout/item_status.xml | 17 +++++++++++++++-- .../main/res/layout/item_status_detailed.xml | 18 ++++++++++++++++-- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java index 6965bf22..a9465c54 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java @@ -50,6 +50,7 @@ import com.keylesspalace.tusky.util.ThemeUtils; import com.keylesspalace.tusky.util.TimestampUtils; import com.keylesspalace.tusky.util.ViewExtensionsKt; import com.keylesspalace.tusky.view.MediaPreviewImageView; +import com.keylesspalace.tusky.view.EmojiKeyboard; import com.keylesspalace.tusky.viewdata.PollOptionViewData; import com.keylesspalace.tusky.viewdata.PollViewData; import com.keylesspalace.tusky.viewdata.PollViewDataKt; @@ -79,6 +80,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder { private SparkButton reblogButton; private SparkButton favouriteButton; private SparkButton bookmarkButton; + private ImageButton reactButton; private ImageButton moreButton; protected MediaPreviewImageView[] mediaPreviews; private ImageView[] mediaOverlays; @@ -131,6 +133,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder { favouriteButton = itemView.findViewById(R.id.status_favourite); bookmarkButton = itemView.findViewById(R.id.status_bookmark); moreButton = itemView.findViewById(R.id.status_more); + reactButton = itemView.findViewById(R.id.status_emoji_react); emojiReactionsView = itemView.findViewById(R.id.status_emoji_reactions); /* Disabled, because it doesn't handle parent resizes. It must be fixed and can be enabled again */ @@ -710,8 +713,16 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder { } private void setEmojiReactions(@Nullable List reactions, final StatusActionListener listener, final String statusId) { + if(reactButton != null) { + reactButton.setOnClickListener(v -> { + EmojiKeyboard.show(reactButton.getContext(), statusId, EmojiKeyboard.UNICODE_MODE, (id, emoji) -> { + listener.onEmojiReact(true, emoji, id); + }); + }); + } + if(emojiReactionsView != null ) { - if( reactions != null && reactions.size() > 0) { + if(reactions != null && reactions.size() > 0) { emojiReactionsView.setVisibility(View.VISIBLE); FlexboxLayoutManager lm = new FlexboxLayoutManager(emojiReactionsView.getContext()); emojiReactionsView.setLayoutManager(lm); diff --git a/app/src/main/res/layout/item_status.xml b/app/src/main/res/layout/item_status.xml index 885ba3bd..3048c5db 100644 --- a/app/src/main/res/layout/item_status.xml +++ b/app/src/main/res/layout/item_status.xml @@ -369,7 +369,7 @@ android:contentDescription="@string/action_favourite" android:importantForAccessibility="no" android:padding="4dp" - app:layout_constraintEnd_toStartOf="@id/status_bookmark" + app:layout_constraintEnd_toStartOf="@id/status_emoji_react" app:layout_constraintStart_toEndOf="@id/status_inset" app:layout_constraintTop_toTopOf="@id/status_inset" sparkbutton:activeImage="@drawable/ic_favourite_active_24dp" @@ -378,6 +378,19 @@ sparkbutton:primaryColor="@color/tusky_orange" sparkbutton:secondaryColor="@color/tusky_orange_light" /> + + + + +