From 4e0349987014fd5574a3513008bacd0b65c29b06 Mon Sep 17 00:00:00 2001 From: Rodrigo Sanabria Date: Mon, 24 Aug 2020 13:52:23 +0200 Subject: [PATCH 1/2] Add long press option to copy content to clipboard resolve #128 --- .../gotify/messages/ListMessageAdapter.java | 46 +++++++++++-------- app/src/main/res/values/strings.xml | 1 + 2 files changed, 29 insertions(+), 18 deletions(-) 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..72ac5c9f 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; @@ -36,11 +39,7 @@ public class ListMessageAdapter extends RecyclerView.Adapter items, + ListMessageAdapter(Context context, Settings settings, Picasso picasso, List items, Delete delete) { super(); this.context = context; @@ -49,13 +48,8 @@ public class ListMessageAdapter extends RecyclerView.Adapter getItems() { @@ -86,16 +80,14 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position) { holder.message.setText(message.message.getMessage()); } holder.title.setText(message.message.getTitle()); - picasso.load(Utils.resolveAbsoluteUrl(settings.url() + "/", message.image)) - .error(R.drawable.ic_alarm) - .placeholder(R.drawable.ic_placeholder) - .into(holder.image); + picasso.load(Utils.resolveAbsoluteUrl(settings.url() + "/", message.image)).error(R.drawable.ic_alarm) + .placeholder(R.drawable.ic_placeholder).into(holder.image); holder.setDateTime(message.message.getDate()); holder.date.setOnClickListener((ignored) -> holder.switchPreciseDate()); - holder.delete.setOnClickListener( - (ignored) -> delete.delete(holder.getAdapterPosition(), message.message, false)); + holder.delete + .setOnClickListener((ignored) -> delete.delete(holder.getAdapterPosition(), message.message, false)); } @Override @@ -133,6 +125,7 @@ static class ViewHolder extends RecyclerView.ViewHolder { ButterKnife.bind(this, view); preciseDate = false; dateTime = null; + enableCopyToClipboard(); } void switchPreciseDate() { @@ -157,6 +150,23 @@ 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 From efffba96db99c15525c5a0da70164c971dff81bb Mon Sep 17 00:00:00 2001 From: Rodrigo Sanabria Date: Mon, 24 Aug 2020 23:46:14 +0200 Subject: [PATCH 2/2] Fix formatting issues --- .../gotify/messages/ListMessageAdapter.java | 63 ++++++++++++------- 1 file changed, 42 insertions(+), 21 deletions(-) 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 72ac5c9f..02aad069 100644 --- a/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java +++ b/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java @@ -39,7 +39,11 @@ public class ListMessageAdapter extends RecyclerView.Adapter items, + ListMessageAdapter( + Context context, + Settings settings, + Picasso picasso, + List items, Delete delete) { super(); this.context = context; @@ -48,8 +52,13 @@ public class ListMessageAdapter extends RecyclerView.Adapter getItems() { @@ -80,14 +89,16 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position) { holder.message.setText(message.message.getMessage()); } holder.title.setText(message.message.getTitle()); - picasso.load(Utils.resolveAbsoluteUrl(settings.url() + "/", message.image)).error(R.drawable.ic_alarm) - .placeholder(R.drawable.ic_placeholder).into(holder.image); + picasso.load(Utils.resolveAbsoluteUrl(settings.url() + "/", message.image)) + .error(R.drawable.ic_alarm) + .placeholder(R.drawable.ic_placeholder) + .into(holder.image); holder.setDateTime(message.message.getDate()); holder.date.setOnClickListener((ignored) -> holder.switchPreciseDate()); - holder.delete - .setOnClickListener((ignored) -> delete.delete(holder.getAdapterPosition(), message.message, false)); + holder.delete.setOnClickListener( + (ignored) -> delete.delete(holder.getAdapterPosition(), message.message, false)); } @Override @@ -152,20 +163,30 @@ void updateDate() { } 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; - }); + 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; + }); } }