From f78fbcffa5754665ae4744b854b306da749c854a Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Wed, 10 May 2017 20:20:22 +0200 Subject: display open pgp key id in account details and allow to delete --- .../pixart/messenger/ui/EditAccountActivity.java | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'src/main/java/de/pixart/messenger/ui/EditAccountActivity.java') diff --git a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java index ab1cbc836..320823120 100644 --- a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java +++ b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java @@ -36,6 +36,8 @@ import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; +import org.openintents.openpgp.util.OpenPgpUtils; + import java.util.Arrays; import java.util.List; import java.util.Set; @@ -93,13 +95,18 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat private TextView mSessionEst; private TextView mOtrFingerprint; private TextView mAxolotlFingerprint; + private TextView mPgpFingerprint; private TextView mOwnFingerprintDesc; + private TextView mOtrFingerprintDesc; + private TextView getmPgpFingerprintDesc; private TextView mAccountJidLabel; private ImageView mAvatar; private RelativeLayout mOtrFingerprintBox; private RelativeLayout mAxolotlFingerprintBox; + private RelativeLayout mPgpFingerprintBox; private ImageButton mOtrFingerprintToClipboardButton; private ImageButton mAxolotlFingerprintToClipboardButton; + private ImageButton mPgpDeleteFingerprintButton; private LinearLayout keys; private LinearLayout keysCard; private LinearLayout mNamePort; @@ -512,7 +519,12 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat this.mServerInfoHttpUpload = (TextView) findViewById(R.id.server_info_http_upload); this.mPushRow = (TableRow) findViewById(R.id.push_row); this.mServerInfoPush = (TextView) findViewById(R.id.server_info_push); + this.mPgpFingerprintBox = (RelativeLayout) findViewById(R.id.pgp_fingerprint_box); + this.mPgpFingerprint = (TextView) findViewById(R.id.pgp_fingerprint); + this.getmPgpFingerprintDesc = (TextView) findViewById(R.id.pgp_fingerprint_desc); + this.mPgpDeleteFingerprintButton = (ImageButton) findViewById(R.id.action_delete_pgp); this.mOtrFingerprint = (TextView) findViewById(R.id.otr_fingerprint); + this.mOtrFingerprintDesc = (TextView) findViewById(R.id.otr_fingerprint_desc); this.mOtrFingerprintBox = (RelativeLayout) findViewById(R.id.otr_fingerprint_box); this.mOtrFingerprintToClipboardButton = (ImageButton) findViewById(R.id.action_copy_to_clipboard); this.mAxolotlFingerprint = (TextView) findViewById(R.id.axolotl_fingerprint); @@ -932,8 +944,36 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat } else { this.mServerInfoPush.setText(R.string.server_info_unavailable); } + final long pgpKeyId = this.mAccount.getPgpId(); + if (pgpKeyId != 0 && Config.supportOpenPgp()) { + OnClickListener openPgp = new OnClickListener() { + @Override + public void onClick(View view) { + launchOpenKeyChain(pgpKeyId); + } + }; + OnClickListener delete = new OnClickListener() { + @Override + public void onClick(View view) { + showDeletePgpDialog(); + } + }; + this.mPgpFingerprintBox.setVisibility(View.VISIBLE); + this.mPgpFingerprint.setText(OpenPgpUtils.convertKeyIdToHex(pgpKeyId)); + this.mPgpFingerprint.setOnClickListener(openPgp); + if ("pgp".equals(messageFingerprint)) { + this.getmPgpFingerprintDesc.setTextColor(ContextCompat.getColor(this, R.color.accent)); + } + this.getmPgpFingerprintDesc.setOnClickListener(openPgp); + this.mPgpDeleteFingerprintButton.setOnClickListener(delete); + } else { + this.mPgpFingerprintBox.setVisibility(View.GONE); + } final String otrFingerprint = this.mAccount.getOtrFingerprint(); if (otrFingerprint != null && Config.supportOtr()) { + if ("otr".equals(messageFingerprint)) { + this.mOtrFingerprintDesc.setTextColor(ContextCompat.getColor(this, R.color.accent)); + } this.mOtrFingerprintBox.setVisibility(View.VISIBLE); this.mOtrFingerprint.setText(CryptoHelper.prettifyFingerprint(otrFingerprint)); this.mOtrFingerprintToClipboardButton @@ -1022,6 +1062,24 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat } } + private void showDeletePgpDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.unpublish_pgp); + builder.setMessage(R.string.unpublish_pgp_message); + builder.setNegativeButton(R.string.cancel, null); + builder.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + mAccount.setPgpSignId(0); + mAccount.unsetPgpSignature(); + xmppConnectionService.databaseBackend.updateAccount(mAccount); + xmppConnectionService.sendPresence(mAccount); + refreshUiReal(); + } + }); + builder.create().show(); + } + private void showOsOptimizationWarning(boolean showBatteryWarning, boolean showDataSaverWarning) { this.mOsOptimizations.setVisibility(showBatteryWarning || showDataSaverWarning ? View.VISIBLE : View.GONE); if (showDataSaverWarning) { -- cgit v1.2.3