add 'copy fingerprint' in context menu of own key

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java |  7 
src/main/java/eu/siacs/conversations/ui/OmemoActivity.java       | 28 +
2 files changed, 22 insertions(+), 13 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java 🔗

@@ -1336,6 +1336,13 @@ public class EditAccountActivity extends OmemoActivity
                     this.mAccount.getAxolotlService().getOwnFingerprint();
             if (ownAxolotlFingerprint != null && Config.supportOmemo()) {
                 this.binding.axolotlFingerprintBox.setVisibility(View.VISIBLE);
+                this.binding.axolotlFingerprintBox.setOnCreateContextMenuListener(
+                        (menu, v, menuInfo) -> {
+                            getMenuInflater().inflate(R.menu.omemo_key_context, menu);
+                            menu.findItem(R.id.verify_scan).setVisible(false);
+                            menu.findItem(R.id.distrust_key).setVisible(false);
+                            this.mSelectedFingerprint = ownAxolotlFingerprint;
+                        });
                 if (ownAxolotlFingerprint.equals(messageFingerprint)) {
                     this.binding.ownFingerprintDesc.setTextColor(
                             MaterialColors.getColor(

src/main/java/eu/siacs/conversations/ui/OmemoActivity.java 🔗

@@ -22,7 +22,7 @@ import eu.siacs.conversations.utils.XmppUri;
 public abstract class OmemoActivity extends XmppActivity {
 
     private Account mSelectedAccount;
-    private String mSelectedFingerprint;
+    protected String mSelectedFingerprint;
 
     protected XmppUri mPendingFingerprintVerificationUri = null;
 
@@ -50,25 +50,27 @@ public abstract class OmemoActivity extends XmppActivity {
                 distrust.setVisible(
                         status.isVerified() || (!status.isActive() && status.isTrusted()));
             }
+            // TODO can we rework this into using Intents?
             this.mSelectedAccount = (Account) account;
             this.mSelectedFingerprint = (String) fingerprint;
         }
     }
 
     @Override
-    public boolean onContextItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.distrust_key:
-                showPurgeKeyDialog(mSelectedAccount, mSelectedFingerprint);
-                break;
-            case R.id.copy_omemo_key:
-                copyOmemoFingerprint(mSelectedFingerprint);
-                break;
-            case R.id.verify_scan:
-                ScanActivity.scan(this);
-                break;
+    public boolean onContextItemSelected(final MenuItem item) {
+        final var itemId = item.getItemId();
+        if (itemId == R.id.distrust_key) {
+            showPurgeKeyDialog(mSelectedAccount, mSelectedFingerprint);
+            return true;
+        } else if (itemId == R.id.copy_omemo_key) {
+            copyOmemoFingerprint(mSelectedFingerprint);
+            return true;
+        } else if (itemId == R.id.verify_scan) {
+            ScanActivity.scan(this);
+            return true;
+        } else {
+            return super.onContextItemSelected(item);
         }
-        return true;
     }
 
     @Override