Copy priate messages.

This commit is contained in:
Docile-Alligator 2022-05-13 20:18:07 +08:00
parent 9a994ca531
commit 345392a833
4 changed files with 69 additions and 20 deletions

View File

@ -225,12 +225,6 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, message.getAuthor());
mActivity.startActivity(intent);
});
((DataViewHolder) holder).contentCustomMarkwonView.setOnClickListener(view -> {
if (((DataViewHolder) holder).contentCustomMarkwonView.getSelectionStart() == -1 && ((DataViewHolder) holder).contentCustomMarkwonView.getSelectionEnd() == -1) {
holder.itemView.performClick();
}
});
}
}
}
@ -330,6 +324,12 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
contentCustomMarkwonView.setTextColor(mSecondaryTextColor);
contentCustomMarkwonView.setMovementMethod(LinkMovementMethod.getInstance());
contentCustomMarkwonView.setOnClickListener(view -> {
if (contentCustomMarkwonView.getSelectionStart() == -1 && contentCustomMarkwonView.getSelectionEnd() == -1) {
itemView.performClick();
}
});
}
}

View File

@ -1,5 +1,8 @@
package ml.docilealligator.infinityforreddit.adapters;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
@ -11,6 +14,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
@ -154,7 +158,6 @@ public class PrivateMessagesDetailRecyclerViewAdapter extends RecyclerView.Adapt
if (holder instanceof MessageViewHolder) {
mMarkwon.setMarkdown(((MessageViewHolder) holder).messageTextView, message.getBody());
((MessageViewHolder) holder).messageTextView.setOnClickListener(view -> ((MessageViewHolder) holder).itemView.performClick());
if (mShowElapsedTime) {
((MessageViewHolder) holder).timeTextView.setText(Utils.getElapsedTime(mViewPrivateMessagesActivity, message.getTimeUTC()));
} else {
@ -164,11 +167,12 @@ public class PrivateMessagesDetailRecyclerViewAdapter extends RecyclerView.Adapt
((MessageViewHolder) holder).messageTextView.setOnClickListener(view -> {
if (((MessageViewHolder) holder).timeTextView.getVisibility() != View.VISIBLE) {
((MessageViewHolder) holder).timeTextView.setVisibility(View.VISIBLE);
mViewPrivateMessagesActivity.delayTransition();
((MessageViewHolder) holder).copyImageView.setVisibility(View.VISIBLE);
} else {
((MessageViewHolder) holder).timeTextView.setVisibility(View.GONE);
mViewPrivateMessagesActivity.delayTransition();
((MessageViewHolder) holder).copyImageView.setVisibility(View.GONE);
}
mViewPrivateMessagesActivity.delayTransition();
});
}
@ -246,17 +250,40 @@ public class PrivateMessagesDetailRecyclerViewAdapter extends RecyclerView.Adapt
class MessageViewHolder extends RecyclerView.ViewHolder {
TextView messageTextView;
TextView timeTextView;
ImageView copyImageView;
public MessageViewHolder(@NonNull View itemView) {
super(itemView);
}
void setBaseView(TextView messageTextView, TextView timeTextView) {
void setBaseView(TextView messageTextView, TextView timeTextView, ImageView copyImageView) {
this.messageTextView = messageTextView;
this.timeTextView = timeTextView;
this.copyImageView = copyImageView;
messageTextView.setTextColor(Color.WHITE);
timeTextView.setTextColor(mSecondaryTextColor);
copyImageView.setColorFilter(mSecondaryTextColor, android.graphics.PorterDuff.Mode.SRC_IN);
copyImageView.setOnClickListener(view -> {
Message message;
if (getBindingAdapterPosition() == 0) {
message = mMessage;
} else {
message = mMessage.getReplies().get(getBindingAdapterPosition() - 1);
}
if (message != null) {
ClipboardManager clipboard = (ClipboardManager) mViewPrivateMessagesActivity.getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard != null) {
ClipData clip = ClipData.newPlainText("simple text", message.getBody());
clipboard.setPrimaryClip(clip);
Toast.makeText(mViewPrivateMessagesActivity, R.string.copy_success, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(mViewPrivateMessagesActivity, R.string.copy_failed, Toast.LENGTH_SHORT).show();
}
}
});
}
}
@ -265,14 +292,15 @@ public class PrivateMessagesDetailRecyclerViewAdapter extends RecyclerView.Adapt
TextView messageTextView;
@BindView(R.id.time_text_view_item_private_message_sent)
TextView timeTextView;
@BindView(R.id.copy_image_view_item_private_message_sent)
ImageView copyImageView;
SentMessageViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
setBaseView(messageTextView, timeTextView);
setBaseView(messageTextView, timeTextView, copyImageView);
messageTextView.setTextColor(mSentMessageTextColor);
}
}
@ -283,11 +311,13 @@ public class PrivateMessagesDetailRecyclerViewAdapter extends RecyclerView.Adapt
TextView messageTextView;
@BindView(R.id.time_text_view_item_private_message_received)
TextView timeTextView;
@BindView(R.id.copy_image_view_item_private_message_received)
ImageView copyImageView;
ReceivedMessageViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
setBaseView(messageTextView, timeTextView);
setBaseView(messageTextView, timeTextView, copyImageView);
messageTextView.setTextColor(mReceivedMessageTextColor);
}

View File

@ -15,8 +15,7 @@
android:layout_height="36dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/barrier3" />
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/message_text_view_item_private_message_received"
@ -44,18 +43,24 @@
android:textSize="?attr/font_default"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/avatar_image_view_item_private_message_received"
app:layout_constraintTop_toBottomOf="@id/message_text_view_item_private_message_received"
app:layout_constraintWidth_max="wrap"
app:layout_constraintWidth_percent="0.7"
app:layout_constraintHorizontal_bias="0" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier3"
<ImageView
android:id="@+id/copy_image_view_item_private_message_received"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="start"
app:constraint_referenced_ids="message_text_view_item_private_message_received, time_text_view_item_private_message_received" />
android:padding="16dp"
android:src="@drawable/ic_copy_24dp"
android:clickable="true"
android:focusable="true"
android:background="?attr/actionBarItemBackground"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@id/time_text_view_item_private_message_received"
app:layout_constraintTop_toBottomOf="@id/message_text_view_item_private_message_received"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -40,4 +40,18 @@
app:layout_constraintWidth_percent="0.7"
app:layout_constraintHorizontal_bias="1" />
<ImageView
android:id="@+id/copy_image_view_item_private_message_sent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:src="@drawable/ic_copy_24dp"
android:clickable="true"
android:focusable="true"
android:background="?attr/actionBarItemBackground"
android:visibility="gone"
app:layout_constraintEnd_toStartOf="@id/time_text_view_item_private_message_sent"
app:layout_constraintTop_toBottomOf="@id/message_text_view_item_private_message_sent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>