diff --git a/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java b/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java index 3c6da03f..02aad069 100644 --- a/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java +++ b/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java @@ -1,5 +1,7 @@ package com.github.gotify.messages; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.text.util.Linkify; import android.view.LayoutInflater; @@ -8,6 +10,7 @@ import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; @@ -133,6 +136,7 @@ static class ViewHolder extends RecyclerView.ViewHolder { ButterKnife.bind(this, view); preciseDate = false; dateTime = null; + enableCopyToClipboard(); } void switchPreciseDate() { @@ -157,6 +161,33 @@ void updateDate() { } date.setText(text); } + + private void enableCopyToClipboard() { + super.itemView.setOnLongClickListener( + view -> { + ClipboardManager clipboard = + (ClipboardManager) + view.getContext() + .getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = + ClipData.newPlainText( + "GotifyMessageContent", message.getText().toString()); + + if (clipboard != null) { + clipboard.setPrimaryClip(clip); + Toast toast = + Toast.makeText( + view.getContext(), + view.getContext() + .getString( + R.string.message_copied_to_clipboard), + Toast.LENGTH_SHORT); + toast.show(); + } + + return true; + }); + } } public interface Delete { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7daf1135..a52569e7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -74,4 +74,5 @@ Title Content Priority + Content copied to clipboard