summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstom79 <tschneider.ac@gmail.com>2018-10-24 18:29:12 +0200
committerstom79 <tschneider.ac@gmail.com>2018-10-24 18:29:12 +0200
commit4938f82dcedc23c3b2194e1eb7e30deb5c85fe15 (patch)
treedaa59253d71c1a8b7b5c92b010f885e1556f03d8
parentaf10073cdf2f71fb5b3897291128f2e638ca0686 (diff)
Prepares release 1.17.6
-rw-r--r--app/build.gradle2
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java158
2 files changed, 142 insertions, 18 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 80e7097fb..1eebf90f4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,7 +7,7 @@ android {
applicationId "fr.gouv.etalab.mastodon"
minSdkVersion 15
targetSdkVersion 28
- versionCode 162
+ versionCode 163
versionName "1.17.6"
}
flavorDimensions "default"
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java
index ff98cbb29..5ab1f8473 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java
@@ -18,10 +18,12 @@ import android.app.Activity;
import android.content.*;
import android.content.Context;
import android.graphics.Bitmap;
+import android.os.Build;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
+import android.text.Html;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
@@ -45,6 +47,8 @@ import fr.gouv.etalab.mastodon.activities.ShowAccountActivity;
import fr.gouv.etalab.mastodon.helper.Helper;
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveEmojiAccountInterface;
+import static android.support.v4.text.HtmlCompat.FROM_HTML_MODE_LEGACY;
+
/**
* Created by Thomas on 23/04/2017.
@@ -479,7 +483,6 @@ public class Account implements Parcelable {
return spannableString;
}
-
public void makeEmojisAccount(final Context context, final OnRetrieveEmojiAccountInterface listener){
if( ((Activity)context).isFinishing() )
return;
@@ -488,11 +491,127 @@ public class Account implements Parcelable {
if( account.getDisplay_name() != null)
displayNameSpan = new SpannableString(account.getDisplay_name());
+ if( account.getFields() != null && account.getFields().size() > 0) {
+ Iterator it = account.getFields().entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry) it.next();
+ SpannableString fieldSpan;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
+ fieldSpan = new SpannableString(Html.fromHtml((String)pair.getValue(), FROM_HTML_MODE_LEGACY));
+ else
+ //noinspection deprecation
+ fieldSpan = new SpannableString(Html.fromHtml((String)pair.getValue()));
+ fieldsSpan.put(new SpannableString((String)pair.getKey()), fieldSpan);
+ }
+ account.setFieldsSpan(fieldsSpan);
+ }
+ final List<Emojis> emojis = account.getEmojis();
+ if( emojis != null && emojis.size() > 0 ) {
+
+ final int[] i = {0};
+ for (final Emojis emoji : emojis) {
+ fields = account.getFields();
+ try {
+ Glide.with(context)
+ .asBitmap()
+ .load(emoji.getUrl())
+ .into(new SimpleTarget<Bitmap>() {
+ @Override
+ public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
+ final String targetedEmoji = ":" + emoji.getShortcode() + ":";
+
+ if (noteSpan != null && noteSpan.toString().contains(targetedEmoji)) {
+ //emojis can be used several times so we have to loop
+ for (int startPosition = -1; (startPosition = noteSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
+ final int endPosition = startPosition + targetedEmoji.length();
+ if (endPosition <= noteSpan.toString().length() && endPosition >= startPosition)
+ noteSpan.setSpan(
+ new ImageSpan(context,
+ Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context),
+ (int) Helper.convertDpToPixel(20, context), false)), startPosition,
+ endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+ }
+ }
+ if (displayNameSpan != null && displayNameSpan.toString().contains(targetedEmoji)) {
+ //emojis can be used several times so we have to loop
+ for (int startPosition = -1; (startPosition = displayNameSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
+ final int endPosition = startPosition + targetedEmoji.length();
+ if (endPosition <= displayNameSpan.toString().length() && endPosition >= startPosition)
+ displayNameSpan.setSpan(
+ new ImageSpan(context,
+ Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context),
+ (int) Helper.convertDpToPixel(20, context), false)), startPosition,
+ endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+ }
+ }
+ Iterator it = fieldsSpan.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry pair = (Map.Entry) it.next();
+ SpannableString fieldSpan = (SpannableString) pair.getValue();
+ SpannableString keySpan = (SpannableString) pair.getKey();
+ if (fieldSpan.toString().contains(targetedEmoji)) {
+ //emojis can be used several times so we have to loop
+ for (int startPosition = -1; (startPosition = fieldSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
+ final int endPosition = startPosition + targetedEmoji.length();
+ if (endPosition <= fieldSpan.toString().length() && endPosition >= startPosition)
+ fieldSpan.setSpan(
+ new ImageSpan(context,
+ Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context),
+ (int) Helper.convertDpToPixel(20, context), false)), startPosition,
+ endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+ }
+ fieldsSpan.put((SpannableString) pair.getKey(), fieldSpan);
+ }else
+ fieldsSpan.put(keySpan, fieldSpan);
+ /*if (keySpan.toString().contains(targetedEmoji)) {
+ //emojis can be used several times so we have to loop
+ for (int startPosition = -1; (startPosition = keySpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
+ final int endPosition = startPosition + targetedEmoji.length();
+ if (endPosition <= keySpan.toString().length() && endPosition >= startPosition)
+ keySpan.setSpan(
+ new ImageSpan(context,
+ Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context),
+ (int) Helper.convertDpToPixel(20, context), false)), startPosition,
+ endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+ }
+
+ SpannableString obj = fieldsSpan.remove(pair.getKey());
+ fieldsSpan.put(keySpan, obj);
+ }else
+ fieldsSpan.put(keySpan, fieldSpan);*/
+ }
+
+ i[0]++;
+ if (i[0] == (emojis.size())) {
+ if (noteSpan != null)
+ account.setNoteSpan(noteSpan);
+ account.setFieldsSpan(fieldsSpan);
+ if (listener != null)
+ listener.onRetrieveEmojiAccount(account);
+ }
+ }
+ });
+ }catch (Exception ignored){}
+
+ }
+ }
+ }
+
+
+ /*public void makeEmojisAccount(final Context context, final OnRetrieveEmojiAccountInterface listener){
+ if( ((Activity)context).isFinishing() )
+ return;
+
+ noteSpan = account.getNoteSpan();
+
+ if( account.getDisplay_name() != null)
+ displayNameSpan = new SpannableString(account.getDisplay_name());
final List<Emojis> emojis = account.getEmojis();
if( emojis != null && emojis.size() > 0 ) {
final int[] i = {0};
for (final Emojis emoji : emojis) {
fields = account.getFields();
+ Log.v(Helper.TAG,"emoji: " + emoji.getShortcode());
try {
Glide.with(context)
.asBitmap()
@@ -501,7 +620,7 @@ public class Account implements Parcelable {
@Override
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
final String targetedEmoji = ":" + emoji.getShortcode() + ":";
-
+ Log.v(Helper.TAG,"targetedEmoji: " + emoji.getShortcode());
if (noteSpan != null && noteSpan.toString().contains(targetedEmoji)) {
//emojis can be used several times so we have to loop
for (int startPosition = -1; (startPosition = noteSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
@@ -530,7 +649,11 @@ public class Account implements Parcelable {
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
SpannableString fieldSpan = new SpannableString((String)pair.getValue());
+ SpannableString keySpan = new SpannableString((String)pair.getKey());
+
+
if (fieldSpan.toString().contains(targetedEmoji)) {
+ Log.v(Helper.TAG,"fieldSpan: " + fieldSpan.toString());
//emojis can be used several times so we have to loop
for (int startPosition = -1; (startPosition = fieldSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
final int endPosition = startPosition + targetedEmoji.length();
@@ -541,22 +664,23 @@ public class Account implements Parcelable {
(int) Helper.convertDpToPixel(20, context), false)), startPosition,
endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
- SpannableString keySpan = new SpannableString((String)pair.getKey());
- if (keySpan.toString().contains(targetedEmoji)) {
- //emojis can be used several times so we have to loop
- for (int startPosition = -1; (startPosition = keySpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
- final int endPosition = startPosition + targetedEmoji.length();
- if (endPosition <= keySpan.toString().length() && endPosition >= startPosition)
- keySpan.setSpan(
- new ImageSpan(context,
- Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context),
- (int) Helper.convertDpToPixel(20, context), false)), startPosition,
- endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
- }
-
+ }
+ if (keySpan.toString().contains(targetedEmoji)) {
+ Log.v(Helper.TAG,"keySpan: " + keySpan.toString());
+ //emojis can be used several times so we have to loop
+ for (int startPosition = -1; (startPosition = keySpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
+ final int endPosition = startPosition + targetedEmoji.length();
+ if (endPosition <= keySpan.toString().length() && endPosition >= startPosition)
+ keySpan.setSpan(
+ new ImageSpan(context,
+ Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context),
+ (int) Helper.convertDpToPixel(20, context), false)), startPosition,
+ endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
- fieldsSpan.put(keySpan, fieldSpan);
+
}
+ fieldsSpan.put(keySpan, fieldSpan);
+
}
@@ -574,7 +698,7 @@ public class Account implements Parcelable {
}
}
- }
+ }*/
}