Highlight selected message's fingerprint in list
This commit is contained in:
parent
e07853ea62
commit
2b3bb02261
|
@ -110,6 +110,7 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
|
||||||
private LinearLayout keys;
|
private LinearLayout keys;
|
||||||
private LinearLayout tags;
|
private LinearLayout tags;
|
||||||
private boolean showDynamicTags;
|
private boolean showDynamicTags;
|
||||||
|
private String messageFingerprint;
|
||||||
|
|
||||||
private DialogInterface.OnClickListener addToPhonebook = new DialogInterface.OnClickListener() {
|
private DialogInterface.OnClickListener addToPhonebook = new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
|
@ -192,6 +193,7 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
|
||||||
} catch (final InvalidJidException ignored) {
|
} catch (final InvalidJidException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this.messageFingerprint = getIntent().getStringExtra("fingerprint");
|
||||||
setContentView(R.layout.activity_contact_details);
|
setContentView(R.layout.activity_contact_details);
|
||||||
|
|
||||||
contactJidTv = (TextView) findViewById(R.id.details_contactjid);
|
contactJidTv = (TextView) findViewById(R.id.details_contactjid);
|
||||||
|
@ -385,7 +387,8 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
|
||||||
}
|
}
|
||||||
for(final IdentityKey identityKey : xmppConnectionService.databaseBackend.loadIdentityKeys(
|
for(final IdentityKey identityKey : xmppConnectionService.databaseBackend.loadIdentityKeys(
|
||||||
contact.getAccount(), contact.getJid().toBareJid().toString())) {
|
contact.getAccount(), contact.getJid().toBareJid().toString())) {
|
||||||
hasKeys |= addFingerprintRow(keys, contact.getAccount(), identityKey);
|
boolean highlight = identityKey.getFingerprint().replaceAll("\\s", "").equals(messageFingerprint);
|
||||||
|
hasKeys |= addFingerprintRow(keys, contact.getAccount(), identityKey, highlight);
|
||||||
}
|
}
|
||||||
if (contact.getPgpKeyId() != 0) {
|
if (contact.getPgpKeyId() != 0) {
|
||||||
hasKeys = true;
|
hasKeys = true;
|
||||||
|
|
|
@ -392,12 +392,13 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
|
||||||
highlightInConference(user);
|
highlightInConference(user);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
activity.switchToContactDetails(message.getContact());
|
activity.switchToContactDetails(message.getContact(), message.getAxolotlFingerprint());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Account account = message.getConversation().getAccount();
|
Account account = message.getConversation().getAccount();
|
||||||
Intent intent = new Intent(activity, EditAccountActivity.class);
|
Intent intent = new Intent(activity, EditAccountActivity.class);
|
||||||
intent.putExtra("jid", account.getJid().toBareJid().toString());
|
intent.putExtra("jid", account.getJid().toBareJid().toString());
|
||||||
|
intent.putExtra("fingerprint", message.getAxolotlFingerprint());
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,6 +74,7 @@ public class EditAccountActivity extends XmppActivity implements OnAccountUpdate
|
||||||
|
|
||||||
private Jid jidToEdit;
|
private Jid jidToEdit;
|
||||||
private Account mAccount;
|
private Account mAccount;
|
||||||
|
private String messageFingerprint;
|
||||||
|
|
||||||
private boolean mFetchingAvatar = false;
|
private boolean mFetchingAvatar = false;
|
||||||
|
|
||||||
|
@ -388,6 +389,7 @@ public class EditAccountActivity extends XmppActivity implements OnAccountUpdate
|
||||||
} catch (final InvalidJidException | NullPointerException ignored) {
|
} catch (final InvalidJidException | NullPointerException ignored) {
|
||||||
this.jidToEdit = null;
|
this.jidToEdit = null;
|
||||||
}
|
}
|
||||||
|
this.messageFingerprint = getIntent().getStringExtra("fingerprint");
|
||||||
if (this.jidToEdit != null) {
|
if (this.jidToEdit != null) {
|
||||||
this.mRegisterNew.setVisibility(View.GONE);
|
this.mRegisterNew.setVisibility(View.GONE);
|
||||||
if (getActionBar() != null) {
|
if (getActionBar() != null) {
|
||||||
|
@ -571,7 +573,8 @@ public class EditAccountActivity extends XmppActivity implements OnAccountUpdate
|
||||||
if(ownKey.equals(identityKey)) {
|
if(ownKey.equals(identityKey)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
hasKeys |= addFingerprintRow(keys, mAccount, identityKey);
|
boolean highlight = identityKey.getFingerprint().replaceAll("\\s", "").equals(messageFingerprint);
|
||||||
|
hasKeys |= addFingerprintRow(keys, mAccount, identityKey, highlight);
|
||||||
}
|
}
|
||||||
if (hasKeys) {
|
if (hasKeys) {
|
||||||
keysCard.setVisibility(View.VISIBLE);
|
keysCard.setVisibility(View.VISIBLE);
|
||||||
|
|
|
@ -118,7 +118,7 @@ public class TrustKeysActivity extends XmppActivity implements OnKeyStatusUpdate
|
||||||
boolean hasForeignKeys = false;
|
boolean hasForeignKeys = false;
|
||||||
for(final IdentityKey identityKey : ownKeysToTrust.keySet()) {
|
for(final IdentityKey identityKey : ownKeysToTrust.keySet()) {
|
||||||
hasOwnKeys = true;
|
hasOwnKeys = true;
|
||||||
addFingerprintRowWithListeners(ownKeys, contact.getAccount(), identityKey,
|
addFingerprintRowWithListeners(ownKeys, contact.getAccount(), identityKey, false,
|
||||||
Trust.fromBoolean(ownKeysToTrust.get(identityKey)), false,
|
Trust.fromBoolean(ownKeysToTrust.get(identityKey)), false,
|
||||||
new CompoundButton.OnCheckedChangeListener() {
|
new CompoundButton.OnCheckedChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -134,7 +134,7 @@ public class TrustKeysActivity extends XmppActivity implements OnKeyStatusUpdate
|
||||||
}
|
}
|
||||||
for(final IdentityKey identityKey : foreignKeysToTrust.keySet()) {
|
for(final IdentityKey identityKey : foreignKeysToTrust.keySet()) {
|
||||||
hasForeignKeys = true;
|
hasForeignKeys = true;
|
||||||
addFingerprintRowWithListeners(foreignKeys, contact.getAccount(), identityKey,
|
addFingerprintRowWithListeners(foreignKeys, contact.getAccount(), identityKey, false,
|
||||||
Trust.fromBoolean(foreignKeysToTrust.get(identityKey)), false,
|
Trust.fromBoolean(foreignKeysToTrust.get(identityKey)), false,
|
||||||
new CompoundButton.OnCheckedChangeListener() {
|
new CompoundButton.OnCheckedChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -424,10 +424,15 @@ public abstract class XmppActivity extends Activity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void switchToContactDetails(Contact contact) {
|
public void switchToContactDetails(Contact contact) {
|
||||||
|
switchToContactDetails(contact, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void switchToContactDetails(Contact contact, String messageFingerprint) {
|
||||||
Intent intent = new Intent(this, ContactDetailsActivity.class);
|
Intent intent = new Intent(this, ContactDetailsActivity.class);
|
||||||
intent.setAction(ContactDetailsActivity.ACTION_VIEW_CONTACT);
|
intent.setAction(ContactDetailsActivity.ACTION_VIEW_CONTACT);
|
||||||
intent.putExtra("account", contact.getAccount().getJid().toBareJid().toString());
|
intent.putExtra("account", contact.getAccount().getJid().toBareJid().toString());
|
||||||
intent.putExtra("contact", contact.getJid().toString());
|
intent.putExtra("contact", contact.getJid().toString());
|
||||||
|
intent.putExtra("fingerprint", messageFingerprint);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -608,11 +613,11 @@ public abstract class XmppActivity extends Activity {
|
||||||
builder.create().show();
|
builder.create().show();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean addFingerprintRow(LinearLayout keys, final Account account, IdentityKey identityKey) {
|
protected boolean addFingerprintRow(LinearLayout keys, final Account account, IdentityKey identityKey, boolean highlight) {
|
||||||
final String fingerprint = identityKey.getFingerprint().replaceAll("\\s", "");
|
final String fingerprint = identityKey.getFingerprint().replaceAll("\\s", "");
|
||||||
final SQLiteAxolotlStore.Trust trust = account.getAxolotlService()
|
final SQLiteAxolotlStore.Trust trust = account.getAxolotlService()
|
||||||
.getFingerprintTrust(fingerprint);
|
.getFingerprintTrust(fingerprint);
|
||||||
return addFingerprintRowWithListeners(keys, account, identityKey, trust, true,
|
return addFingerprintRowWithListeners(keys, account, identityKey, highlight, trust, true,
|
||||||
new CompoundButton.OnCheckedChangeListener() {
|
new CompoundButton.OnCheckedChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
|
@ -636,12 +641,13 @@ public abstract class XmppActivity extends Activity {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean addFingerprintRowWithListeners(LinearLayout keys, final Account account,
|
protected boolean addFingerprintRowWithListeners(LinearLayout keys, final Account account,
|
||||||
final IdentityKey identityKey,
|
final IdentityKey identityKey,
|
||||||
SQLiteAxolotlStore.Trust trust,
|
boolean highlight,
|
||||||
boolean showTag,
|
SQLiteAxolotlStore.Trust trust,
|
||||||
CompoundButton.OnCheckedChangeListener
|
boolean showTag,
|
||||||
onCheckedChangeListener,
|
CompoundButton.OnCheckedChangeListener
|
||||||
View.OnClickListener onClickListener) {
|
onCheckedChangeListener,
|
||||||
|
View.OnClickListener onClickListener) {
|
||||||
if (trust == SQLiteAxolotlStore.Trust.COMPROMISED) {
|
if (trust == SQLiteAxolotlStore.Trust.COMPROMISED) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -688,6 +694,12 @@ public abstract class XmppActivity extends Activity {
|
||||||
} else {
|
} else {
|
||||||
keyType.setVisibility(View.GONE);
|
keyType.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
if (highlight) {
|
||||||
|
keyType.setTextColor(getResources().getColor(R.color.accent));
|
||||||
|
keyType.setText(getString(R.string.axolotl_fingerprint_selected_message));
|
||||||
|
} else {
|
||||||
|
keyType.setText(getString(R.string.axolotl_fingerprint));
|
||||||
|
}
|
||||||
|
|
||||||
key.setText(CryptoHelper.prettifyFingerprint(identityKey.getFingerprint()));
|
key.setText(CryptoHelper.prettifyFingerprint(identityKey.getFingerprint()));
|
||||||
keys.addView(view);
|
keys.addView(view);
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
android:textColor="@color/black54"
|
android:textColor="@color/black54"
|
||||||
android:layout_alignParentLeft="true"
|
android:layout_alignParentLeft="true"
|
||||||
android:layout_below="@+id/key"
|
android:layout_below="@+id/key"
|
||||||
|
android:maxLines="1"
|
||||||
android:textSize="?attr/TextSizeInfo"/>
|
android:textSize="?attr/TextSizeInfo"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
|
@ -209,6 +209,7 @@
|
||||||
<string name="your_fingerprint">Your fingerprint</string>
|
<string name="your_fingerprint">Your fingerprint</string>
|
||||||
<string name="otr_fingerprint">OTR fingerprint</string>
|
<string name="otr_fingerprint">OTR fingerprint</string>
|
||||||
<string name="axolotl_fingerprint">Axolotl fingerprint</string>
|
<string name="axolotl_fingerprint">Axolotl fingerprint</string>
|
||||||
|
<string name="axolotl_fingerprint_selected_message">Axolotl fingerprint of message</string>
|
||||||
<string name="this_device_axolotl_fingerprint">Own Axolotl fingerprint</string>
|
<string name="this_device_axolotl_fingerprint">Own Axolotl fingerprint</string>
|
||||||
<string name="other_devices">Other devices</string>
|
<string name="other_devices">Other devices</string>
|
||||||
<string name="trust_keys">Trust Axolotl Keys</string>
|
<string name="trust_keys">Trust Axolotl Keys</string>
|
||||||
|
|
Loading…
Reference in New Issue