diff --git a/build.gradle b/build.gradle
index 65949f4af9367756e7c0605c8d4c5e35e3bde3d1..df82bc36b177b244ba46132e1acdaa457c2cd9d4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -101,6 +101,7 @@ dependencies {
implementation 'com.github.singpolyma:android-identicons:master-SNAPSHOT'
implementation 'org.snikket:webrtc-android:107.0.0'
implementation 'com.github.woltapp:blurhash:master'
+ implementation 'com.caverock:androidsvg-aar:1.4'
// INSERT
}
diff --git a/src/cheogram/res/layout/button_grid_item.xml b/src/cheogram/res/layout/button_grid_item.xml
index ca45d316e7998c2229183c8105cb82f8327807c2..8a43c885aaac68cf8f620ce4916cbaba2c8af6c6 100644
--- a/src/cheogram/res/layout/button_grid_item.xml
+++ b/src/cheogram/res/layout/button_grid_item.xml
@@ -5,6 +5,8 @@
diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java
index 9fd2739ac092f2094441b34765187392adce1f2c..c4abfaec7948451667076bfeac7e8b95ab9befff 100644
--- a/src/main/java/eu/siacs/conversations/entities/Conversation.java
+++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java
@@ -5,6 +5,9 @@ import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.DataSetObserver;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
import android.graphics.Rect;
import android.net.Uri;
import android.text.Editable;
@@ -34,6 +37,7 @@ import android.webkit.WebMessage;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebChromeClient;
+import android.util.DisplayMetrics;
import android.util.Pair;
import android.util.SparseArray;
@@ -49,6 +53,8 @@ import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.viewpager.widget.ViewPager;
+import com.caverock.androidsvg.SVG;
+
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.textfield.TextInputLayout;
import com.google.common.base.Optional;
@@ -1858,6 +1864,18 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
mValue.setContent(getItem(position).getValue());
execute();
});
+
+ final SVG icon = getItem(position).getIcon();
+ if (icon != null) {
+ v.post(() -> {
+ icon.setDocumentPreserveAspectRatio(com.caverock.androidsvg.PreserveAspectRatio.TOP);
+ Bitmap bitmap = Bitmap.createBitmap(v.getHeight(), v.getHeight(), Bitmap.Config.ARGB_8888);
+ Canvas bmcanvas = new Canvas(bitmap);
+ icon.renderToCanvas(bmcanvas);
+ v.setCompoundDrawablesRelativeWithIntrinsicBounds(new BitmapDrawable(bitmap), null, null, null);
+ });
+ }
+
return v;
}
};
@@ -1931,6 +1949,18 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
} else {
theOptions.remove(defaultOption);
binding.defaultButton.setVisibility(View.VISIBLE);
+
+ final SVG defaultIcon = defaultOption.getIcon();
+ if (defaultIcon != null) {
+ defaultIcon.setDocumentPreserveAspectRatio(com.caverock.androidsvg.PreserveAspectRatio.TOP);
+ DisplayMetrics display = mPager.getContext().getResources().getDisplayMetrics();
+ Bitmap bitmap = Bitmap.createBitmap((int)(display.heightPixels*display.density/4), (int)(display.heightPixels*display.density/4), Bitmap.Config.ARGB_8888);
+ bitmap.setDensity(display.densityDpi);
+ Canvas bmcanvas = new Canvas(bitmap);
+ defaultIcon.renderToCanvas(bmcanvas);
+ binding.defaultButton.setCompoundDrawablesRelativeWithIntrinsicBounds(null, new BitmapDrawable(bitmap), null, null);
+ }
+
binding.defaultButton.setText(defaultOption.toString());
binding.defaultButton.setOnClickListener((view) -> {
mValue.setContent(defaultOption.getValue());
diff --git a/src/main/java/eu/siacs/conversations/xmpp/forms/Option.java b/src/main/java/eu/siacs/conversations/xmpp/forms/Option.java
index fb5139dd5762f5f6a7b362a3c065815cdf332772..f810fffec8a602af3b4f2734cb38867ec93b593e 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/forms/Option.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/forms/Option.java
@@ -1,5 +1,7 @@
package eu.siacs.conversations.xmpp.forms;
+import com.caverock.androidsvg.SVG;
+import com.caverock.androidsvg.SVGParseException;
import java.util.ArrayList;
import java.util.List;
import eu.siacs.conversations.xml.Element;
@@ -7,6 +9,7 @@ import eu.siacs.conversations.xml.Element;
public class Option {
protected final String value;
protected final String label;
+ protected final SVG icon;
public static List