Deals with translations
This commit is contained in:
parent
09802c4860
commit
a5593cd517
|
@ -1581,7 +1581,7 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onRetrieveEmoji(Status status, SpannableString spannableString, Boolean error) {
|
||||
public void onRetrieveEmoji(Status status) {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -443,7 +443,7 @@ public class Status implements Parcelable {
|
|||
|
||||
public void makeClickable(Context context){
|
||||
|
||||
SpannableString spannableStringContent, spannableStringCW, spannableStringTranslated;
|
||||
SpannableString spannableStringContent, spannableStringCW;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
spannableStringContent = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getContent():status.getContent(), Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
|
@ -455,22 +455,31 @@ public class Status implements Parcelable {
|
|||
//noinspection deprecation
|
||||
spannableStringCW = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getSpoiler_text():status.getSpoiler_text()));
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContent_translated(), Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
//noinspection deprecation
|
||||
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContent_translated()));
|
||||
|
||||
status.setContentSpan(treatment(context, spannableStringContent));
|
||||
status.setContentSpanCW(treatment(context, spannableStringCW));
|
||||
status.setContentSpanTranslated(treatment(context, spannableStringTranslated));
|
||||
isClickable = true;
|
||||
}
|
||||
|
||||
|
||||
public void makeClickableTranslation(Context context){
|
||||
|
||||
SpannableString spannableStringTranslated;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContent_translated(), Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
//noinspection deprecation
|
||||
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContent_translated()));
|
||||
|
||||
status.setContentSpanTranslated(treatment(context, spannableStringTranslated));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void makeEmojis(final Context context, final OnRetrieveEmojiInterface listener){
|
||||
|
||||
final SpannableString spannableStringContent, spannableStringCW, spannableStringTranslated;
|
||||
final SpannableString spannableStringContent;
|
||||
final SpannableString spannableStringCW;
|
||||
SpannableString spannableStringTranslated = null;
|
||||
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
|
@ -478,22 +487,27 @@ public class Status implements Parcelable {
|
|||
else
|
||||
//noinspection deprecation
|
||||
spannableStringContent = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getContent():status.getContent()));
|
||||
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
spannableStringCW = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getSpoiler_text():status.getSpoiler_text(), Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
//noinspection deprecation
|
||||
spannableStringCW = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getSpoiler_text():status.getSpoiler_text()));
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContent_translated(), Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
//noinspection deprecation
|
||||
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContent_translated()));
|
||||
if( status.getContent_translated() != null) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContent_translated(), Html.FROM_HTML_MODE_LEGACY));
|
||||
else
|
||||
//noinspection deprecation
|
||||
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContent_translated()));
|
||||
}
|
||||
|
||||
final List<Emojis> emojis = status.getReblog() != null ? status.getReblog().getEmojis() : status.getEmojis();
|
||||
if( emojis != null && emojis.size() > 0 ) {
|
||||
final int[] i = {0};
|
||||
for (final Emojis emoji : emojis) {
|
||||
final SpannableString finalSpannableStringTranslated = spannableStringTranslated;
|
||||
Glide.with(context)
|
||||
.asBitmap()
|
||||
.load(emoji.getUrl())
|
||||
|
@ -509,7 +523,8 @@ public class Status implements Parcelable {
|
|||
if( i[0] == (emojis.size())) {
|
||||
status.setContentSpan(spannableStringContent);
|
||||
status.setContentSpanCW(spannableStringCW);
|
||||
status.setContentSpanTranslated(spannableStringTranslated);
|
||||
if( finalSpannableStringTranslated != null)
|
||||
status.setContentSpanTranslated(finalSpannableStringTranslated);
|
||||
listener.onRetrieveEmoji(status);
|
||||
}
|
||||
return false;
|
||||
|
@ -541,11 +556,11 @@ public class Status implements Parcelable {
|
|||
endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
}
|
||||
if (spannableStringTranslated.toString().contains(targetedEmoji)) {
|
||||
if (finalSpannableStringTranslated != null && finalSpannableStringTranslated.toString().contains(targetedEmoji)) {
|
||||
//emojis can be used several times so we have to loop
|
||||
for (int startPosition = -1; (startPosition = spannableStringTranslated.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
||||
for (int startPosition = -1; (startPosition = finalSpannableStringTranslated.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
||||
final int endPosition = startPosition + targetedEmoji.length();
|
||||
spannableStringTranslated.setSpan(
|
||||
finalSpannableStringTranslated.setSpan(
|
||||
new ImageSpan(context,
|
||||
Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context),
|
||||
(int) Helper.convertDpToPixel(20, context), false)), startPosition,
|
||||
|
@ -556,7 +571,8 @@ public class Status implements Parcelable {
|
|||
if( i[0] == (emojis.size())) {
|
||||
status.setContentSpan(spannableStringContent);
|
||||
status.setContentSpanCW(spannableStringCW);
|
||||
status.setContentSpanTranslated(spannableStringTranslated);
|
||||
if( finalSpannableStringTranslated != null)
|
||||
status.setContentSpanTranslated(finalSpannableStringTranslated);
|
||||
listener.onRetrieveEmoji(status);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -248,7 +248,12 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
|||
holder.notification_status_content.setTypeface(tf);
|
||||
String content;
|
||||
|
||||
if( status.getContents() != null){
|
||||
if( !status.isClickable())
|
||||
status.makeClickable(context);
|
||||
if( !status.isEmojiFound())
|
||||
status.makeEmojis(context, NotificationsListAdapter.this);
|
||||
|
||||
/*if( status.getContents() != null){
|
||||
holder.notification_status_content.setText(status.getContents(), TextView.BufferType.SPANNABLE);
|
||||
}else {
|
||||
content = status.getContent();
|
||||
|
@ -267,8 +272,9 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
|||
position,
|
||||
true, NotificationsListAdapter.this);*/
|
||||
|
||||
holder.notification_status_content.setText(spannableString, TextView.BufferType.SPANNABLE);
|
||||
}
|
||||
// holder.notification_status_content.setText(spannableString, TextView.BufferType.SPANNABLE);
|
||||
//}
|
||||
|
||||
holder.notification_status_content.setMovementMethod(null);
|
||||
holder.notification_status_content.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
holder.status_favorite_count.setText(String.valueOf(status.getFavourites_count()));
|
||||
|
@ -900,8 +906,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
|||
|
||||
|
||||
@Override
|
||||
public void onRetrieveEmoji(Status status, SpannableString spannableString, Boolean error) {
|
||||
status.setContents(spannableString);
|
||||
public void onRetrieveEmoji(Status status) {
|
||||
if( !status.isEmojiFound()) {
|
||||
for (int i = 0; i < notificationsListAdapter.getItemCount(); i++) {
|
||||
if (notificationsListAdapter.getItemAt(i) != null && notificationsListAdapter.getItemAt(i).getStatus() != null && notificationsListAdapter.getItemAt(i).getStatus().getId().equals(status.getId())) {
|
||||
|
|
|
@ -468,6 +468,43 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
holder.status_spoiler.setText(status.getContentSpanCW());
|
||||
|
||||
|
||||
//Manages translations
|
||||
final MyTransL myTransL = MyTransL.getInstance(MyTransL.translatorEngine.YANDEX);
|
||||
myTransL.setObfuscation(true);
|
||||
myTransL.setYandexAPIKey(Helper.YANDEX_KEY);
|
||||
holder.status_translate.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if( !status.isTranslated() ){
|
||||
myTransL.translate(status.getContent(), myTransL.getLocale(), new Results() {
|
||||
@Override
|
||||
public void onSuccess(Translate translate) {
|
||||
if( translate.getTranslatedContent() != null) {
|
||||
status.setTranslated(true);
|
||||
status.setTranslationShown(true);
|
||||
status.setContent_translated(translate.getTranslatedContent());
|
||||
status.makeClickableTranslation(context);
|
||||
holder.status_content_translated.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
statusListAdapter.notifyDataSetChanged();
|
||||
}else {
|
||||
Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onFail(HttpsConnectionException e) {
|
||||
Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
}else {
|
||||
status.setTranslationShown(!status.isTranslationShown());
|
||||
statusListAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
});
|
||||
//-------- END -> Manages translations
|
||||
|
||||
|
||||
|
||||
//Displays name & emoji in toot header
|
||||
final String displayName;
|
||||
final String username;
|
||||
|
@ -743,8 +780,11 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
imgReply = ContextCompat.getDrawable(context, R.drawable.ic_reply);
|
||||
|
||||
|
||||
assert imgFav != null;
|
||||
imgFav.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
assert imgReblog != null;
|
||||
imgReblog.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
assert imgReply != null;
|
||||
imgReply.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
|
||||
holder.status_favorite_count.setCompoundDrawables(imgFav, null, null, null);
|
||||
|
@ -767,6 +807,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
changeDrawableColor(context, R.drawable.ic_pin_drop,R.color.black);
|
||||
imgPin = ContextCompat.getDrawable(context, R.drawable.ic_pin_drop);
|
||||
}
|
||||
assert imgPin != null;
|
||||
imgPin.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f));
|
||||
holder.status_pin.setImageDrawable(imgPin);
|
||||
|
||||
|
@ -884,36 +925,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
return false;
|
||||
}
|
||||
});
|
||||
final MyTransL myTransL = MyTransL.getInstance(MyTransL.translatorEngine.YANDEX);
|
||||
myTransL.setObfuscation(true);
|
||||
myTransL.setYandexAPIKey(Helper.YANDEX_KEY);
|
||||
holder.status_translate.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if( !status.isTranslated() ){
|
||||
myTransL.translate(status.getContent(), myTransL.getLocale(), new Results() {
|
||||
@Override
|
||||
public void onSuccess(Translate translate) {
|
||||
if( translate.getTranslatedContent() != null) {
|
||||
status.setTranslated(true);
|
||||
status.setTranslationShown(true);
|
||||
status.setContent_translated(translate.getTranslatedContent());
|
||||
statusListAdapter.notifyDataSetChanged();
|
||||
}else {
|
||||
Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onFail(HttpsConnectionException e) {
|
||||
Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
}else {
|
||||
status.setTranslationShown(!status.isTranslationShown());
|
||||
statusListAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
holder.yandex_translate.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue