@@ -35,6 +35,7 @@ import java.util.List;
import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.PgpEngine;
+import eu.siacs.conversations.crypto.axolotl.AxolotlService;
import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.ListItem;
@@ -363,13 +364,13 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
View view = inflater.inflate(R.layout.contact_key, keys, false);
TextView key = (TextView) view.findViewById(R.id.key);
TextView keyType = (TextView) view.findViewById(R.id.key_type);
- ImageButton remove = (ImageButton) view
+ ImageButton removeButton = (ImageButton) view
.findViewById(R.id.button_remove);
- remove.setVisibility(View.VISIBLE);
+ removeButton.setVisibility(View.VISIBLE);
keyType.setText("OTR Fingerprint");
key.setText(CryptoHelper.prettifyFingerprint(otrFingerprint));
keys.addView(view);
- remove.setOnClickListener(new OnClickListener() {
+ removeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@@ -384,19 +385,47 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
TextView key = (TextView) view.findViewById(R.id.key);
TextView keyType = (TextView) view.findViewById(R.id.key_type);
TextView keyTrust = (TextView) view.findViewById(R.id.key_trust);
- ImageButton remove = (ImageButton) view
+ ImageButton removeButton = (ImageButton) view
.findViewById(R.id.button_remove);
- remove.setVisibility(View.VISIBLE);
- keyTrust.setVisibility(View.VISIBLE);
+ ImageButton trustButton = (ImageButton) view
+ .findViewById(R.id.button_trust);
+ final AxolotlService axolotlService = contact.getAccount().getAxolotlService();
+ final String fingerprint = identityKey.getFingerprint().replaceAll("\\s", "");
+ final Jid bareJid = contactJid.toBareJid();
+ AxolotlService.SQLiteAxolotlStore.Trust trust = contact.getAccount().getAxolotlService()
+ .getFingerprintTrust(bareJid.toString(), fingerprint);
+ switch (trust) {
+ case TRUSTED:
+ removeButton.setVisibility(View.VISIBLE);
+ //Log.d(Config.LOGTAG, AxolotlService.getLogprefix(contact.getAccount()) + "Setting remove button visible!");
+ break;
+ case UNDECIDED:
+ case UNTRUSTED:
+ //Log.d(Config.LOGTAG, AxolotlService.getLogprefix(contact.getAccount()) + "Setting trust button visible!");
+ trustButton.setVisibility(View.VISIBLE);
+ break;
+ }
keyType.setText("Axolotl Fingerprint");
key.setText(CryptoHelper.prettifyFingerprint(identityKey.getFingerprint()));
- keyTrust.setText(contact.getAccount().getAxolotlService().getFingerprintTrust(contact.getJid().toBareJid().toString(), identityKey.getFingerprint().replaceAll("\\s","")).toString());
+ keyTrust.setText(trust.toString());
+ keyTrust.setVisibility(View.VISIBLE);
keys.addView(view);
- remove.setOnClickListener(new OnClickListener() {
-
+ removeButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ axolotlService.setFingerprintTrust(bareJid.toString(), fingerprint,
+ AxolotlService.SQLiteAxolotlStore.Trust.UNTRUSTED);
+ refreshUi();
+ xmppConnectionService.updateConversationUi();
+ }
+ });
+ trustButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- //confirmToDeleteFingerprint(otrFingerprint);
+ axolotlService.setFingerprintTrust(bareJid.toString(), fingerprint,
+ AxolotlService.SQLiteAxolotlStore.Trust.TRUSTED);
+ refreshUi();
+ xmppConnectionService.updateConversationUi();
}
});
}
@@ -50,4 +50,14 @@
android:src="?attr/icon_remove"
android:visibility="invisible" />
+ <ImageButton
+ android:id="@+id/button_trust"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_centerVertical="true"
+ android:background="?android:selectableItemBackground"
+ android:padding="@dimen/image_button_padding"
+ android:src="?attr/icon_done"
+ android:visibility="invisible" />
</RelativeLayout>
@@ -18,6 +18,7 @@
<item name="attr/icon_download">@drawable/ic_file_download_white_24dp</item>
<item name="attr/icon_edit">@drawable/ic_edit_white_24dp</item>
<item name="attr/icon_edit_dark">@drawable/ic_edit_grey600_24dp</item>
+ <item name="attr/icon_done">@drawable/ic_done_black_24dp</item>
<item name="attr/icon_group">@drawable/ic_group_white_24dp</item>
<item name="attr/icon_new">@drawable/ic_add_white_24dp</item>
<item name="attr/icon_new_attachment">@drawable/ic_attach_file_white_24dp</item>
@@ -14,6 +14,7 @@
<attr name="icon_download" format="reference"/>
<attr name="icon_edit" format="reference"/>
<attr name="icon_edit_dark" format="reference"/>
+ <attr name="icon_done" format="reference"/>
<attr name="icon_group" format="reference"/>
<attr name="icon_new" format="reference"/>
<attr name="icon_new_attachment" format="reference"/>
@@ -18,6 +18,7 @@
<item name="attr/icon_download">@drawable/ic_action_download</item>
<item name="attr/icon_edit">@drawable/ic_action_edit</item>
<item name="attr/icon_edit_dark">@drawable/ic_action_edit_dark</item>
+ <item name="attr/icon_done">@drawable/ic_action_done</item>
<item name="attr/icon_group">@drawable/ic_action_group</item>
<item name="attr/icon_new">@drawable/ic_action_new</item>