Search in sources :

Example 1 with KeysCardBinding

use of de.pixart.messenger.databinding.KeysCardBinding in project Pix-Art-Messenger by kriztan.

the class TrustKeysActivity method populateView.

private void populateView() {
    setTitle(getString(R.string.trust_omemo_fingerprints));
    binding.ownKeysDetails.removeAllViews();
    binding.foreignKeys.removeAllViews();
    boolean hasOwnKeys = false;
    boolean hasForeignKeys = false;
    for (final String fingerprint : ownKeysToTrust.keySet()) {
        hasOwnKeys = true;
        addFingerprintRowWithListeners(binding.ownKeysDetails, mAccount, fingerprint, false, FingerprintStatus.createActive(ownKeysToTrust.get(fingerprint)), false, false, new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                ownKeysToTrust.put(fingerprint, isChecked);
            // own fingerprints have no impact on locked status.
            }
        });
    }
    synchronized (this.foreignKeysToTrust) {
        for (Map.Entry<Jid, Map<String, Boolean>> entry : foreignKeysToTrust.entrySet()) {
            hasForeignKeys = true;
            KeysCardBinding keysCardBinding = DataBindingUtil.inflate(getLayoutInflater(), R.layout.keys_card, binding.foreignKeys, false);
            // final LinearLayout layout = (LinearLayout) getLayoutInflater().inflate(R.layout.keys_card, foreignKeys, false);
            final Jid jid = entry.getKey();
            keysCardBinding.foreignKeysTitle.setText(jid.toString());
            keysCardBinding.foreignKeysTitle.setOnClickListener(v -> switchToContactDetails(mAccount.getRoster().getContact(jid)));
            final Map<String, Boolean> fingerprints = entry.getValue();
            for (final String fingerprint : fingerprints.keySet()) {
                addFingerprintRowWithListeners(keysCardBinding.foreignKeysDetails, mAccount, fingerprint, false, FingerprintStatus.createActive(fingerprints.get(fingerprint)), false, false, (buttonView, isChecked) -> {
                    fingerprints.put(fingerprint, isChecked);
                    lockOrUnlockAsNeeded();
                });
            }
            if (fingerprints.size() == 0) {
                keysCardBinding.noKeysToAccept.setVisibility(View.VISIBLE);
                if (hasNoOtherTrustedKeys(jid)) {
                    if (!mAccount.getRoster().getContact(jid).mutualPresenceSubscription()) {
                        keysCardBinding.noKeysToAccept.setText(R.string.error_no_keys_to_trust_presence);
                    } else {
                        keysCardBinding.noKeysToAccept.setText(R.string.error_no_keys_to_trust_server_error);
                    }
                } else {
                    keysCardBinding.noKeysToAccept.setText(getString(R.string.no_keys_just_confirm, mAccount.getRoster().getContact(jid).getDisplayName()));
                }
            } else {
                keysCardBinding.noKeysToAccept.setVisibility(View.GONE);
            }
            binding.foreignKeys.addView(keysCardBinding.foreignKeysCard);
        }
    }
    if ((hasOwnKeys || foreignActuallyHasKeys()) && mUseCameraHintShown.compareAndSet(false, true)) {
        showCameraToast();
    }
    binding.ownKeysTitle.setText(mAccount.getJid().toBareJid().toString());
    binding.ownKeysCard.setVisibility(hasOwnKeys ? View.VISIBLE : View.GONE);
    binding.foreignKeys.setVisibility(hasForeignKeys ? View.VISIBLE : View.GONE);
    if (hasPendingKeyFetches()) {
        setFetching();
        lock();
    } else {
        if (!hasForeignKeys && hasNoOtherTrustedKeys()) {
            binding.keyErrorMessageCard.setVisibility(View.VISIBLE);
            if (lastFetchReport == AxolotlService.FetchStatus.ERROR || mAccount.getAxolotlService().fetchMapHasErrors(contactJids)) {
                if (anyWithoutMutualPresenceSubscription(contactJids)) {
                    binding.keyErrorMessage.setText(R.string.error_no_keys_to_trust_presence);
                } else {
                    binding.keyErrorMessage.setText(R.string.error_no_keys_to_trust_server_error);
                }
            } else {
                binding.keyErrorMessage.setText(R.string.error_no_keys_to_trust);
            }
            binding.ownKeysDetails.removeAllViews();
            binding.ownKeysCard.setVisibility(View.GONE);
            binding.foreignKeys.removeAllViews();
            binding.foreignKeys.setVisibility(View.GONE);
        }
        lockOrUnlockAsNeeded();
        setDone();
    }
}
Also used : Jid(de.pixart.messenger.xmpp.jid.Jid) KeysCardBinding(de.pixart.messenger.databinding.KeysCardBinding) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) Map(java.util.Map) CompoundButton(android.widget.CompoundButton)

Aggregations

CompoundButton (android.widget.CompoundButton)1 KeysCardBinding (de.pixart.messenger.databinding.KeysCardBinding)1 Jid (de.pixart.messenger.xmpp.jid.Jid)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1