diff --git a/briar-android/res/layout/dropdown_author.xml b/briar-android/res/layout/dropdown_author.xml new file mode 100644 index 000000000..461268243 --- /dev/null +++ b/briar-android/res/layout/dropdown_author.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/briar-android/res/values/dimens.xml b/briar-android/res/values/dimens.xml index 181b5b992..8c11314ab 100644 --- a/briar-android/res/values/dimens.xml +++ b/briar-android/res/values/dimens.xml @@ -26,4 +26,6 @@ 56dp + 32dp + diff --git a/briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java b/briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java index 2aa2358f4..8e774ceb7 100644 --- a/briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java +++ b/briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java @@ -1,6 +1,7 @@ package org.briarproject.android.identity; import android.content.Context; +import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; @@ -8,14 +9,14 @@ import android.widget.SpinnerAdapter; import android.widget.TextView; import org.briarproject.R; -import org.briarproject.android.util.LayoutUtils; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; -import static android.text.TextUtils.TruncateAt.END; +import im.delight.android.identicons.IdenticonView; + import static org.briarproject.android.identity.LocalAuthorItem.ANONYMOUS; import static org.briarproject.android.identity.LocalAuthorItem.NEW; @@ -49,17 +50,32 @@ implements SpinnerAdapter { @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { - TextView name = new TextView(ctx); - name.setTextSize(18); - name.setSingleLine(); - name.setEllipsize(END); - int pad = LayoutUtils.getPadding(ctx); - name.setPadding(pad, pad, pad, pad); + View view; + if (convertView == null) { + LayoutInflater inflater = + (LayoutInflater) ctx + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + view = inflater.inflate(R.layout.dropdown_author, parent, false); + } else + view = convertView; + + TextView name = (TextView) view.findViewById(R.id.nameView); + IdenticonView identicon = + (IdenticonView) view.findViewById(R.id.identiconView); + LocalAuthorItem item = getItem(position); - if (item == ANONYMOUS) name.setText(R.string.anonymous); - else if (item == NEW) name.setText(R.string.new_identity_item); - else name.setText(item.getLocalAuthor().getName()); - return name; + if (item == ANONYMOUS) { + name.setText(R.string.anonymous); + identicon.setVisibility(View.INVISIBLE); + } else if (item == NEW) { + name.setText(R.string.new_identity_item); + identicon.setVisibility(View.INVISIBLE); + } else { + name.setText(item.getLocalAuthor().getName()); + identicon.setVisibility(View.VISIBLE); + identicon.show(item.getLocalAuthor().getId().getBytes()); + } + return view; } public LocalAuthorItem getItem(int position) { @@ -78,15 +94,7 @@ implements SpinnerAdapter { } public View getView(int position, View convertView, ViewGroup parent) { - TextView name = new TextView(ctx); - name.setTextSize(18); - name.setSingleLine(); - name.setEllipsize(END); - LocalAuthorItem item = getItem(position); - if (item == ANONYMOUS) name.setText(R.string.anonymous); - else if (item == NEW) name.setText(R.string.new_identity_item); - else name.setText(item.getLocalAuthor().getName()); - return name; + return getDropDownView(position, convertView, parent); } @Override