diff --git a/src/cheogram/java/com/cheogram/android/GridView.java b/src/cheogram/java/com/cheogram/android/GridView.java new file mode 100644 index 0000000000000000000000000000000000000000..4301c958a66eee88bbc90032b76c61d0d3324278 --- /dev/null +++ b/src/cheogram/java/com/cheogram/android/GridView.java @@ -0,0 +1,38 @@ +package com.cheogram.android; + +import android.content.Context; +import android.util.AttributeSet; + +// https://blog.jayway.com/2012/10/04/how-to-make-the-height-of-a-gridview-wrap-its-content/ +public class GridView extends android.widget.GridView { + public GridView(Context context) { + super(context); + } + + public GridView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public GridView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int heightSpec; + + if (getLayoutParams().height == LayoutParams.WRAP_CONTENT) { + // The great Android "hackatlon", the love, the magic. + // The two leftmost bits in the height measure spec have + // a special meaning, hence we can't use them to describe height. + heightSpec = MeasureSpec.makeMeasureSpec( + Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); + } + else { + // Any other height should be respected as is. + heightSpec = heightMeasureSpec; + } + + super.onMeasure(widthMeasureSpec, heightSpec); + } +} diff --git a/src/cheogram/java/eu/siacs/conversations/xmpp/Option.java b/src/cheogram/java/eu/siacs/conversations/xmpp/Option.java new file mode 100644 index 0000000000000000000000000000000000000000..f882c0c7a3717b1026b01bde7ed6bbfc4b83a90e --- /dev/null +++ b/src/cheogram/java/eu/siacs/conversations/xmpp/Option.java @@ -0,0 +1,41 @@ +package eu.siacs.conversations.xmpp; + +import java.util.ArrayList; +import java.util.List; +import eu.siacs.conversations.xml.Element; + +public class Option { + protected final String value; + protected final String label; + + public static List