OpenPGP key display in muc details is now prettier and linked to openkeychain

This commit is contained in:
iNPUTmice 2014-06-01 10:22:42 +02:00
parent ca49603c85
commit 5d0e1374b2
3 changed files with 46 additions and 9 deletions

View file

@ -35,6 +35,15 @@
android:textColor="#5b5b5b"
android:singleLine="true"
/>
<TextView
android:id="@+id/key"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="#5b5b5b"
android:typeface="monospace"
android:visibility="gone"
/>
</LinearLayout>
</RelativeLayout>

View file

@ -303,4 +303,13 @@ public class PgpEngine {
Intent result = api.executeApi(params, null, null);
return (PendingIntent) result.getParcelableExtra(OpenPgpApi.RESULT_INTENT);
}
public PendingIntent getIntentForKey(Account account, long pgpKeyId) {
Intent params = new Intent();
params.setAction(OpenPgpApi.ACTION_GET_KEY);
params.putExtra(OpenPgpApi.EXTRA_KEY_ID, pgpKeyId);
params.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, account.getJid());
Intent result = api.executeApi(params, null, null);
return (PendingIntent) result.getParcelableExtra(OpenPgpApi.RESULT_INTENT);
}
}

View file

@ -6,13 +6,16 @@ import java.util.List;
import org.openintents.openpgp.util.OpenPgpUtils;
import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.PgpEngine;
import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.MucOptions;
import eu.siacs.conversations.entities.MucOptions.User;
import eu.siacs.conversations.utils.UIHelper;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.IntentSender.SendIntentException;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
@ -169,19 +172,35 @@ public class MucDetailsActivity extends XmppActivity {
}
this.users.clear();
this.users.addAll(conversation.getMucOptions().getUsers());
//contactsAdapter.notifyDataSetChanged();
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
membersView.removeAllViews();
for(User contact : conversation.getMucOptions().getUsers()) {
for(final User contact : conversation.getMucOptions().getUsers()) {
View view = (View) inflater.inflate(R.layout.contact, null);
((TextView) view.findViewById(R.id.contact_display_name))
.setText(contact.getName());
TextView displayName = (TextView) view.findViewById(R.id.contact_display_name);
TextView key = (TextView) view.findViewById(R.id.key);
displayName.setText(contact.getName());
TextView role = (TextView) view.findViewById(R.id.contact_jid);
if (contact.getPgpKeyId()==0) {
role.setText(getReadableRole(contact.getRole()));
} else {
role.setText(getReadableRole(contact.getRole())+" \u00B7 "+OpenPgpUtils.convertKeyIdToHex(contact.getPgpKeyId()));
role.setText(getReadableRole(contact.getRole()));
if (contact.getPgpKeyId()!=0) {
key.setVisibility(View.VISIBLE);
key.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
PgpEngine pgp = xmppConnectionService.getPgpEngine();
if (pgp!=null) {
PendingIntent intent = pgp.getIntentForKey(conversation.getAccount(), contact.getPgpKeyId());
if (intent!=null) {
try {
startIntentSenderForResult(intent.getIntentSender(), 0, null, 0, 0, 0);
} catch (SendIntentException e) {
}
}
}
}
});
key.setText(OpenPgpUtils.convertKeyIdToHex(contact.getPgpKeyId()));
}
ImageView imageView = (ImageView) view
.findViewById(R.id.contact_photo);