From 137bba3741f2428b9469b4002573cef5d3380113 Mon Sep 17 00:00:00 2001 From: stom79 Date: Thu, 31 Jan 2019 18:01:08 +0100 Subject: [PATCH] Fix issue #780 --- .../activities/ShowConversationActivity.java | 13 +++++++++++- .../mastodon/client/Entities/Status.java | 11 ++++++++++ .../mastodon/drawers/StatusListAdapter.java | 2 +- .../res/drawable-anydpi/ic_show_hidden.xml | 9 +++++++++ .../res/layout/conversation_action_bar.xml | 20 +++++++++++++++---- 5 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 app/src/main/res/drawable-anydpi/ic_show_hidden.xml diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java index 9678e1125..c0855d4f7 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java @@ -150,7 +150,7 @@ public class ShowConversationActivity extends BaseActivity implements OnRetriev ImageView action_expand = getSupportActionBar().getCustomView().findViewById(R.id.action_expand); title.setText(R.string.conversation); ImageView close_conversation = getSupportActionBar().getCustomView().findViewById(R.id.close_conversation); - + ImageView action_unhide = getSupportActionBar().getCustomView().findViewById(R.id.action_unhide); if( expanded) action_expand.setImageResource(R.drawable.ic_expand_less); else @@ -185,6 +185,17 @@ public class ShowConversationActivity extends BaseActivity implements OnRetriev startActivity(intent); } }); + action_unhide.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if( statuses != null && statuses.size() > 0) { + for (Status status : statuses) { + status.setShowSpoiler(!status.isShowSpoiler()); + } + statusListAdapter.notifyItemRangeChanged(0, statuses.size()); + } + } + }); action_expand.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java index 031cf3608..521a479f8 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java @@ -120,6 +120,7 @@ public class Status implements Parcelable{ private String conversationId; private boolean isExpanded = false; private int numberLines = -1; + private boolean showSpoiler = false; public Status(){} private List conversationProfilePicture; @@ -182,6 +183,7 @@ public class Status implements Parcelable{ dest.writeByte(this.isFavAnimated ? (byte) 1 : (byte) 0); dest.writeString(this.scheduled_at); dest.writeString(this.contentType); + dest.writeByte(this.showSpoiler ? (byte) 1 : (byte) 0); } protected Status(Parcel in) { @@ -238,6 +240,7 @@ public class Status implements Parcelable{ this.isFavAnimated = in.readByte() != 0; this.scheduled_at = in.readString(); this.contentType = in.readString(); + this.showSpoiler = in.readByte() != 0; } public static final Creator CREATOR = new Creator() { @@ -1291,4 +1294,12 @@ public class Status implements Parcelable{ public void setContentType(String contentType) { this.contentType = contentType; } + + public boolean isShowSpoiler() { + return showSpoiler; + } + + public void setShowSpoiler(boolean showSpoiler) { + this.showSpoiler = showSpoiler; + } } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java index 5626279cf..dafc78809 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java @@ -1149,7 +1149,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct if (status.getReblog() == null) { if (status.getSpoiler_text() != null && status.getSpoiler_text().trim().length() > 0) { holder.status_spoiler_container.setVisibility(View.VISIBLE); - if (!status.isSpoilerShown() && !expand_cw) { + if (!status.isSpoilerShown() && !expand_cw && !status.isShowSpoiler()) { holder.status_content_container.setVisibility(View.GONE); if (status.getMentions().size() > 0) holder.status_spoiler_mention_container.setVisibility(View.VISIBLE); diff --git a/app/src/main/res/drawable-anydpi/ic_show_hidden.xml b/app/src/main/res/drawable-anydpi/ic_show_hidden.xml new file mode 100644 index 000000000..6c95a5d29 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_show_hidden.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/conversation_action_bar.xml b/app/src/main/res/layout/conversation_action_bar.xml index 16ff38815..7b7c7b040 100644 --- a/app/src/main/res/layout/conversation_action_bar.xml +++ b/app/src/main/res/layout/conversation_action_bar.xml @@ -58,10 +58,22 @@ android:textSize="14sp" android:id="@+id/toolbar_title" /> +