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 949f63028..b3b01245e 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 @@ -36,6 +36,7 @@ import android.text.style.ClickableSpan; import android.text.style.ForegroundColorSpan; import android.text.style.ImageSpan; import android.text.style.URLSpan; +import android.util.Log; import android.view.View; import com.bumptech.glide.Glide; @@ -516,9 +517,9 @@ public class Status implements Parcelable{ status.getAccount().makeEmojisAccount(context, null); String displayName; if( status.getReblog() != null){ - displayName = String.format("@%s",status.getReblog().getAccount().getAcct()); + displayName = status.getReblog().getAccount().getDisplay_name(); }else { - displayName = String.format("@%s",status.getAccount().getAcct()); + displayName = status.getAccount().getDisplay_name(); } displayNameSpan = new SpannableString(displayName); @@ -746,21 +747,16 @@ public class Status implements Parcelable{ public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); + if (theme == THEME_DARK) + ds.setColor(ContextCompat.getColor(context, R.color.dark_link_toot)); + else if (theme == THEME_BLACK) + ds.setColor(ContextCompat.getColor(context, R.color.black_link_toot)); + else if (theme == THEME_LIGHT) + ds.setColor(ContextCompat.getColor(context, R.color.mastodonC4)); } }, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart){ - if( theme == THEME_DARK) - spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.dark_link_toot)), matchStart, matchEnd, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if( theme == THEME_BLACK) - spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.black_link_toot)), matchStart, matchEnd, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if( theme == THEME_LIGHT) - spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.mastodonC4)), matchStart, matchEnd, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - } } SpannableString spannableStringT; @@ -791,20 +787,14 @@ public class Status implements Parcelable{ public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); + if (theme == THEME_DARK) + ds.setColor(ContextCompat.getColor(context, R.color.dark_link_toot)); + else if (theme == THEME_BLACK) + ds.setColor(ContextCompat.getColor(context, R.color.black_link_toot)); + else if (theme == THEME_LIGHT) + ds.setColor(ContextCompat.getColor(context, R.color.mastodonC4)); } }, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - if( matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart) - if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart) { - if (theme == THEME_DARK) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.dark_link_toot)), matchStart, matchEnd, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if (theme == THEME_BLACK) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.black_link_toot)), matchStart, matchEnd, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if (theme == THEME_LIGHT) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.mastodonC4)), matchStart, matchEnd, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - } } if( accountsMentionUnknown.size() > 0 ) { @@ -824,21 +814,16 @@ public class Status implements Parcelable{ public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); + if (theme == THEME_DARK) + ds.setColor(ContextCompat.getColor(context, R.color.dark_link_toot)); + else if (theme == THEME_BLACK) + ds.setColor(ContextCompat.getColor(context, R.color.black_link_toot)); + else if (theme == THEME_LIGHT) + ds.setColor(ContextCompat.getColor(context, R.color.mastodonC4)); } }, startPosition, endPosition, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - if(endPosition <= spannableStringT.toString().length() && endPosition >= startPosition){ - if (theme == THEME_DARK) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.dark_link_toot)), startPosition, endPosition, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if (theme == THEME_BLACK) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.dark_link_toot)), startPosition, endPosition, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if (theme == THEME_LIGHT) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.mastodonC4)), startPosition, endPosition, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - } } } } @@ -891,22 +876,17 @@ public class Status implements Parcelable{ public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); + if (theme == THEME_DARK) + ds.setColor(ContextCompat.getColor(context, R.color.dark_link_toot)); + else if (theme == THEME_BLACK) + ds.setColor(ContextCompat.getColor(context, R.color.black_link_toot)); + else if (theme == THEME_LIGHT) + ds.setColor(ContextCompat.getColor(context, R.color.mastodonC4)); } }, startPosition, endPosition, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); } - if(endPosition <= spannableStringT.toString().length() && endPosition >= startPosition){ - if (theme == THEME_DARK) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.dark_link_toot)), startPosition, endPosition, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if (theme == THEME_BLACK) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.black_link_toot)), startPosition, endPosition, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if (theme == THEME_LIGHT) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.mastodonC4)), startPosition, endPosition, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - } } } it.remove(); @@ -936,21 +916,16 @@ public class Status implements Parcelable{ public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); + if (theme == THEME_DARK) + ds.setColor(ContextCompat.getColor(context, R.color.dark_link_toot)); + else if (theme == THEME_BLACK) + ds.setColor(ContextCompat.getColor(context, R.color.black_link_toot)); + else if (theme == THEME_LIGHT) + ds.setColor(ContextCompat.getColor(context, R.color.mastodonC4)); } }, startPosition, endPosition, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - if(endPosition <= spannableStringT.toString().length() && endPosition >= startPosition){ - if (theme == THEME_DARK) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.dark_link_toot)), startPosition, endPosition, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if (theme == THEME_BLACK) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.black_link_toot)), startPosition, endPosition, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if (theme == THEME_LIGHT) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.mastodonC4)), startPosition, endPosition, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - } } } @@ -975,19 +950,15 @@ public class Status implements Parcelable{ public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); + if (theme == THEME_DARK) + ds.setColor(ContextCompat.getColor(context, R.color.dark_link_toot)); + else if (theme == THEME_BLACK) + ds.setColor(ContextCompat.getColor(context, R.color.black_link_toot)); + else if (theme == THEME_LIGHT) + ds.setColor(ContextCompat.getColor(context, R.color.mastodonC4)); } }, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - if( matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart){ - if (theme == THEME_DARK) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.dark_link_toot)), matchStart, matchEnd, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if (theme == THEME_BLACK) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.black_link_toot)), matchStart, matchEnd, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - else if (theme == THEME_LIGHT) - spannableStringT.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.mastodonC4)), matchStart, matchEnd, - Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - } + } return spannableStringT; } 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 ba75a400e..d34845a16 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 @@ -39,6 +39,7 @@ import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; import android.text.Html; import android.text.Spannable; +import android.text.SpannableString; import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.text.style.ForegroundColorSpan; @@ -726,7 +727,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct holder.status_account_displayname.setVisibility(View.VISIBLE); holder.status_account_displayname.setText(context.getResources().getString(R.string.reblog_by, status.getAccount().getUsername())); if( status.getReblog().getAccount().getDisplay_name().length() > 0) - holder.status_account_displayname_owner.setText( status.getReblog().getAccount().getDisplay_name()); + holder.status_account_displayname_owner.setText( status.getDisplayNameSpan(), TextView.BufferType.SPANNABLE); else holder.status_account_displayname_owner.setText( status.getReblog().getAccount().getAcct().replace("@","")); holder.status_account_displayname_owner.setVisibility(View.VISIBLE); @@ -742,14 +743,16 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct //-------- END -> Displays name & emoji in toot header //Change the color in gray for accounts in DARK Theme only - Spannable wordtoSpan = status.getDisplayNameSpan(); + Spannable wordtoSpan; Pattern hashAcct; if( status.getReblog() != null) { + wordtoSpan = new SpannableString("@" + status.getReblog().getAccount().getAcct()); hashAcct = Pattern.compile("(@" + status.getReblog().getAccount().getAcct() + ")"); - }else - hashAcct = Pattern.compile("(@"+status.getAccount().getAcct()+")"); - - if( wordtoSpan != null && hashAcct != null){ + }else { + wordtoSpan = new SpannableString("@" + status.getAccount().getAcct()); + hashAcct = Pattern.compile("(@" + status.getAccount().getAcct() + ")"); + } + if( hashAcct != null){ Matcher matcherAcct = hashAcct.matcher(wordtoSpan); while (matcherAcct.find()){ int matchStart = matcherAcct.start(1);