Fixes colors for clickable elements in toots
This commit is contained in:
parent
b3833cb4a6
commit
2e8b11528d
|
@ -36,6 +36,7 @@ import android.text.style.ClickableSpan;
|
||||||
import android.text.style.ForegroundColorSpan;
|
import android.text.style.ForegroundColorSpan;
|
||||||
import android.text.style.ImageSpan;
|
import android.text.style.ImageSpan;
|
||||||
import android.text.style.URLSpan;
|
import android.text.style.URLSpan;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
|
@ -516,9 +517,9 @@ public class Status implements Parcelable{
|
||||||
status.getAccount().makeEmojisAccount(context, null);
|
status.getAccount().makeEmojisAccount(context, null);
|
||||||
String displayName;
|
String displayName;
|
||||||
if( status.getReblog() != null){
|
if( status.getReblog() != null){
|
||||||
displayName = String.format("@%s",status.getReblog().getAccount().getAcct());
|
displayName = status.getReblog().getAccount().getDisplay_name();
|
||||||
}else {
|
}else {
|
||||||
displayName = String.format("@%s",status.getAccount().getAcct());
|
displayName = status.getAccount().getDisplay_name();
|
||||||
}
|
}
|
||||||
displayNameSpan = new SpannableString(displayName);
|
displayNameSpan = new SpannableString(displayName);
|
||||||
|
|
||||||
|
@ -746,21 +747,16 @@ public class Status implements Parcelable{
|
||||||
public void updateDrawState(TextPaint ds) {
|
public void updateDrawState(TextPaint ds) {
|
||||||
super.updateDrawState(ds);
|
super.updateDrawState(ds);
|
||||||
ds.setUnderlineText(false);
|
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,
|
matchStart, matchEnd,
|
||||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
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;
|
SpannableString spannableStringT;
|
||||||
|
@ -791,20 +787,14 @@ public class Status implements Parcelable{
|
||||||
public void updateDrawState(TextPaint ds) {
|
public void updateDrawState(TextPaint ds) {
|
||||||
super.updateDrawState(ds);
|
super.updateDrawState(ds);
|
||||||
ds.setUnderlineText(false);
|
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);
|
}, 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 ) {
|
if( accountsMentionUnknown.size() > 0 ) {
|
||||||
|
@ -824,21 +814,16 @@ public class Status implements Parcelable{
|
||||||
public void updateDrawState(TextPaint ds) {
|
public void updateDrawState(TextPaint ds) {
|
||||||
super.updateDrawState(ds);
|
super.updateDrawState(ds);
|
||||||
ds.setUnderlineText(false);
|
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,
|
startPosition, endPosition,
|
||||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
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) {
|
public void updateDrawState(TextPaint ds) {
|
||||||
super.updateDrawState(ds);
|
super.updateDrawState(ds);
|
||||||
ds.setUnderlineText(false);
|
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,
|
startPosition, endPosition,
|
||||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
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();
|
it.remove();
|
||||||
|
@ -936,21 +916,16 @@ public class Status implements Parcelable{
|
||||||
public void updateDrawState(TextPaint ds) {
|
public void updateDrawState(TextPaint ds) {
|
||||||
super.updateDrawState(ds);
|
super.updateDrawState(ds);
|
||||||
ds.setUnderlineText(false);
|
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,
|
startPosition, endPosition,
|
||||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
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) {
|
public void updateDrawState(TextPaint ds) {
|
||||||
super.updateDrawState(ds);
|
super.updateDrawState(ds);
|
||||||
ds.setUnderlineText(false);
|
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);
|
}, 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;
|
return spannableStringT;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ import android.support.v7.widget.PopupMenu;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.Spannable;
|
import android.text.Spannable;
|
||||||
|
import android.text.SpannableString;
|
||||||
import android.text.Spanned;
|
import android.text.Spanned;
|
||||||
import android.text.method.LinkMovementMethod;
|
import android.text.method.LinkMovementMethod;
|
||||||
import android.text.style.ForegroundColorSpan;
|
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.setVisibility(View.VISIBLE);
|
||||||
holder.status_account_displayname.setText(context.getResources().getString(R.string.reblog_by, status.getAccount().getUsername()));
|
holder.status_account_displayname.setText(context.getResources().getString(R.string.reblog_by, status.getAccount().getUsername()));
|
||||||
if( status.getReblog().getAccount().getDisplay_name().length() > 0)
|
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
|
else
|
||||||
holder.status_account_displayname_owner.setText( status.getReblog().getAccount().getAcct().replace("@",""));
|
holder.status_account_displayname_owner.setText( status.getReblog().getAccount().getAcct().replace("@",""));
|
||||||
holder.status_account_displayname_owner.setVisibility(View.VISIBLE);
|
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
|
//-------- END -> Displays name & emoji in toot header
|
||||||
|
|
||||||
//Change the color in gray for accounts in DARK Theme only
|
//Change the color in gray for accounts in DARK Theme only
|
||||||
Spannable wordtoSpan = status.getDisplayNameSpan();
|
Spannable wordtoSpan;
|
||||||
Pattern hashAcct;
|
Pattern hashAcct;
|
||||||
if( status.getReblog() != null) {
|
if( status.getReblog() != null) {
|
||||||
|
wordtoSpan = new SpannableString("@" + status.getReblog().getAccount().getAcct());
|
||||||
hashAcct = Pattern.compile("(@" + status.getReblog().getAccount().getAcct() + ")");
|
hashAcct = Pattern.compile("(@" + status.getReblog().getAccount().getAcct() + ")");
|
||||||
}else
|
}else {
|
||||||
hashAcct = Pattern.compile("(@"+status.getAccount().getAcct()+")");
|
wordtoSpan = new SpannableString("@" + status.getAccount().getAcct());
|
||||||
|
hashAcct = Pattern.compile("(@" + status.getAccount().getAcct() + ")");
|
||||||
if( wordtoSpan != null && hashAcct != null){
|
}
|
||||||
|
if( hashAcct != null){
|
||||||
Matcher matcherAcct = hashAcct.matcher(wordtoSpan);
|
Matcher matcherAcct = hashAcct.matcher(wordtoSpan);
|
||||||
while (matcherAcct.find()){
|
while (matcherAcct.find()){
|
||||||
int matchStart = matcherAcct.start(1);
|
int matchStart = matcherAcct.start(1);
|
||||||
|
|
Loading…
Reference in New Issue