Clean up list of identity keys.

This commit is contained in:
Moxie Marlinspike 2013-05-23 17:47:42 -07:00
parent 5e2b31af60
commit 3743c57edd
4 changed files with 73 additions and 22 deletions

View File

@ -1,9 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<org.thoughtcrime.securesms.IdentityKeyView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:orientation="horizontal"
android:padding="15dip">
android:layout_height="wrap_content"
android:paddingRight="10dip">
<FrameLayout android:id="@+id/contact_photo_frame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:visibility="visible">
<QuickContactBadge android:id="@+id/contact_photo_badge"
style="?android:attr/quickContactBadgeStyleWindowLarge"
android:visibility="gone" />
<ImageView android:id="@+id/contact_photo_image"
android:layout_width="60dp"
android:layout_height="60dp"
android:cropToPadding="true"
android:scaleType="centerCrop"
android:visibility="gone" />
</FrameLayout>
<TextView android:id="@+id/identity_name"
android:layout_width="wrap_content"
@ -13,8 +30,22 @@
android:layout_marginTop="6dip"
android:layout_marginRight="5dip"
android:layout_marginLeft="5dip"
android:layout_alignTop="@id/contact_photo_frame"
android:layout_toRightOf="@id/contact_photo_frame"
android:layout_alignWithParentIfMissing="true"
android:ellipsize="marquee"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
android:textColor="#000000"/>
<TextView android:id="@+id/fingerprint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:singleLine="true"
android:layout_marginBottom="10dip"
android:layout_marginLeft="5dip"
android:layout_alignBottom="@id/contact_photo_frame"
android:layout_toRightOf="@id/contact_photo_frame"
android:layout_toLeftOf="@id/date"
android:ellipsize="end" />
</org.thoughtcrime.securesms.IdentityKeyView>

View File

@ -3,9 +3,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingLeft="16dip"
android:paddingRight="16dip">
android:orientation="vertical">
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"

View File

@ -17,9 +17,12 @@
package org.thoughtcrime.securesms;
import android.content.Context;
import android.os.Build;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.QuickContactBadge;
import android.widget.RelativeLayout;
import android.widget.TextView;
@ -38,6 +41,9 @@ public class IdentityKeyView extends RelativeLayout
{
private TextView identityName;
private TextView fingerprint;
private QuickContactBadge contactBadge;
private ImageView contactImage;
private Recipients recipients;
private IdentityKey identityKey;
@ -46,17 +52,28 @@ public class IdentityKeyView extends RelativeLayout
public IdentityKeyView(Context context) {
super(context);
LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
li.inflate(R.layout.identity_key_view, this, true);
initializeResources();
}
public IdentityKeyView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}
@Override
public void onFinishInflate() {
this.identityName = (TextView)findViewById(R.id.identity_name);
this.fingerprint = (TextView)findViewById(R.id.fingerprint);
this.contactBadge = (QuickContactBadge)findViewById(R.id.contact_photo_badge);
this.contactImage = (ImageView)findViewById(R.id.contact_photo_image);
if (isBadgeEnabled()) {
this.contactBadge.setVisibility(View.VISIBLE);
this.contactImage.setVisibility(View.GONE);
} else {
this.contactBadge.setVisibility(View.GONE);
this.contactImage.setVisibility(View.VISIBLE);
}
}
public void set(IdentityDatabase.Identity identity) {
this.recipients = identity.getRecipients();
this.identityKey = identity.getIdentityKey();
@ -64,14 +81,19 @@ public class IdentityKeyView extends RelativeLayout
this.recipients.addListener(this);
identityName.setText(recipients.toShortString());
fingerprint.setText(identity.getIdentityKey().getFingerprint());
contactBadge.setImageBitmap(recipients.getPrimaryRecipient().getContactPhoto());
contactBadge.assignContactFromPhone(recipients.getPrimaryRecipient().getNumber(), true);
contactImage.setImageBitmap(recipients.getPrimaryRecipient().getContactPhoto());
}
public IdentityKey getIdentityKey() {
return this.identityKey;
}
private void initializeResources() {
this.identityName = (TextView)findViewById(R.id.identity_name);
private boolean isBadgeEnabled() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
}
@Override

View File

@ -66,10 +66,12 @@ public class ReviewIdentitiesFragment extends SherlockListFragment
private class IdentitiesListAdapter extends CursorAdapter {
private final MasterSecret masterSecret;
private final LayoutInflater inflater;
public IdentitiesListAdapter(Context context, Cursor cursor, MasterSecret masterSecret) {
super(context, cursor);
this.masterSecret = masterSecret;
this.inflater = LayoutInflater.from(context);
}
@Override
@ -82,9 +84,7 @@ public class ReviewIdentitiesFragment extends SherlockListFragment
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
IdentityKeyView identityKeyView = new IdentityKeyView(context);
bindView(identityKeyView, context, cursor);
return identityKeyView;
return inflater.inflate(R.layout.identity_key_view, parent, false);
}
}
}