diff --git a/src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java b/src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java index 26931f07a..e128def93 100644 --- a/src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java @@ -1,6 +1,7 @@ package eu.siacs.conversations.ui; import android.content.Intent; +import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.util.Log; @@ -29,6 +30,8 @@ import eu.siacs.conversations.Config; import eu.siacs.conversations.R; import eu.siacs.conversations.crypto.axolotl.AxolotlService; import eu.siacs.conversations.crypto.axolotl.FingerprintStatus; +import eu.siacs.conversations.databinding.ActivityTrustKeysBinding; +import eu.siacs.conversations.databinding.KeysCardBinding; import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.utils.CryptoHelper; @@ -38,19 +41,13 @@ import eu.siacs.conversations.xmpp.OnKeyStatusUpdated; import eu.siacs.conversations.xmpp.jid.InvalidJidException; import eu.siacs.conversations.xmpp.jid.Jid; +import static android.databinding.DataBindingUtil.inflate; + public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdated { private List contactJids; private Account mAccount; private Conversation mConversation; - private TextView keyErrorMessage; - private LinearLayout keyErrorMessageCard; - private TextView ownKeysTitle; - private LinearLayout ownKeys; - private LinearLayout ownKeysCard; - private LinearLayout foreignKeys; - private Button mSaveButton; - private Button mCancelButton; private AtomicBoolean mUseCameraHintShown = new AtomicBoolean(false); @@ -75,6 +72,7 @@ public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdat } }; private Toast mUseCameraHintToast = null; + private ActivityTrustKeysBinding binding; @Override protected void refreshUiReal() { @@ -85,7 +83,7 @@ public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdat @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_trust_keys); + this.binding = DataBindingUtil.setContentView(this,R.layout.activity_trust_keys); this.contactJids = new ArrayList<>(); for(String jid : getIntent().getStringArrayExtra("contacts")) { try { @@ -95,16 +93,8 @@ public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdat } } - keyErrorMessageCard = (LinearLayout) findViewById(R.id.key_error_message_card); - keyErrorMessage = (TextView) findViewById(R.id.key_error_message); - ownKeysTitle = (TextView) findViewById(R.id.own_keys_title); - ownKeys = (LinearLayout) findViewById(R.id.own_keys_details); - ownKeysCard = (LinearLayout) findViewById(R.id.own_keys_card); - foreignKeys = (LinearLayout) findViewById(R.id.foreign_keys); - mCancelButton = (Button) findViewById(R.id.cancel_button); - mCancelButton.setOnClickListener(mCancelButtonListener); - mSaveButton = (Button) findViewById(R.id.save_button); - mSaveButton.setOnClickListener(mSaveButtonListener); + binding.cancelButton.setOnClickListener(mCancelButtonListener); + binding.saveButton.setOnClickListener(mSaveButtonListener); if (getSupportActionBar() != null) { @@ -185,13 +175,13 @@ public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdat private void populateView() { setTitle(getString(R.string.trust_omemo_fingerprints)); - ownKeys.removeAllViews(); - foreignKeys.removeAllViews(); + binding.ownKeysDetails.removeAllViews(); + binding.foreignKeys.removeAllViews(); boolean hasOwnKeys = false; boolean hasForeignKeys = false; for(final String fingerprint : ownKeysToTrust.keySet()) { hasOwnKeys = true; - addFingerprintRowWithListeners(ownKeys, mAccount, fingerprint, false, + addFingerprintRowWithListeners(binding.ownKeysDetails, mAccount, fingerprint, false, FingerprintStatus.createActive(ownKeysToTrust.get(fingerprint)), false, false, new CompoundButton.OnCheckedChangeListener() { @Override @@ -206,46 +196,36 @@ public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdat synchronized (this.foreignKeysToTrust) { for (Map.Entry> entry : foreignKeysToTrust.entrySet()) { hasForeignKeys = true; - final LinearLayout layout = (LinearLayout) getLayoutInflater().inflate(R.layout.keys_card, foreignKeys, false); + 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(); - final TextView header = (TextView) layout.findViewById(R.id.foreign_keys_title); - final LinearLayout keysContainer = (LinearLayout) layout.findViewById(R.id.foreign_keys_details); - final TextView informNoKeys = (TextView) layout.findViewById(R.id.no_keys_to_accept); - header.setText(jid.toString()); - header.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - switchToContactDetails(mAccount.getRoster().getContact(jid)); - } - }); + keysCardBinding.foreignKeysTitle.setText(jid.toString()); + keysCardBinding.foreignKeysTitle.setOnClickListener(v -> switchToContactDetails(mAccount.getRoster().getContact(jid))); final Map fingerprints = entry.getValue(); for (final String fingerprint : fingerprints.keySet()) { - addFingerprintRowWithListeners(keysContainer, mAccount, fingerprint, false, + addFingerprintRowWithListeners(keysCardBinding.foreignKeysDetails, mAccount, fingerprint, false, FingerprintStatus.createActive(fingerprints.get(fingerprint)), false, false, - new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - fingerprints.put(fingerprint, isChecked); - lockOrUnlockAsNeeded(); - } + (buttonView, isChecked) -> { + fingerprints.put(fingerprint, isChecked); + lockOrUnlockAsNeeded(); } ); } if (fingerprints.size() == 0) { - informNoKeys.setVisibility(View.VISIBLE); + keysCardBinding.noKeysToAccept.setVisibility(View.VISIBLE); if (hasNoOtherTrustedKeys(jid)) { if (!mAccount.getRoster().getContact(jid).mutualPresenceSubscription()) { - informNoKeys.setText(R.string.error_no_keys_to_trust_presence); + keysCardBinding.noKeysToAccept.setText(R.string.error_no_keys_to_trust_presence); } else { - informNoKeys.setText(R.string.error_no_keys_to_trust_server_error); + keysCardBinding.noKeysToAccept.setText(R.string.error_no_keys_to_trust_server_error); } } else { - informNoKeys.setText(getString(R.string.no_keys_just_confirm, mAccount.getRoster().getContact(jid).getDisplayName())); + keysCardBinding.noKeysToAccept.setText(getString(R.string.no_keys_just_confirm, mAccount.getRoster().getContact(jid).getDisplayName())); } } else { - informNoKeys.setVisibility(View.GONE); + keysCardBinding.noKeysToAccept.setVisibility(View.GONE); } - foreignKeys.addView(layout); + binding.foreignKeys.addView(keysCardBinding.foreignKeysCard); } } @@ -253,29 +233,29 @@ public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdat showCameraToast(); } - ownKeysTitle.setText(mAccount.getJid().toBareJid().toString()); - ownKeysCard.setVisibility(hasOwnKeys ? View.VISIBLE : View.GONE); - foreignKeys.setVisibility(hasForeignKeys ? View.VISIBLE : View.GONE); + 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()) { - keyErrorMessageCard.setVisibility(View.VISIBLE); + binding.keyErrorMessageCard.setVisibility(View.VISIBLE); if (lastFetchReport == AxolotlService.FetchStatus.ERROR || mAccount.getAxolotlService().fetchMapHasErrors(contactJids)) { if (anyWithoutMutualPresenceSubscription(contactJids)) { - keyErrorMessage.setText(R.string.error_no_keys_to_trust_presence); + binding.keyErrorMessage.setText(R.string.error_no_keys_to_trust_presence); } else { - keyErrorMessage.setText(R.string.error_no_keys_to_trust_server_error); + binding.keyErrorMessage.setText(R.string.error_no_keys_to_trust_server_error); } } else { - keyErrorMessage.setText(R.string.error_no_keys_to_trust); + binding.keyErrorMessage.setText(R.string.error_no_keys_to_trust); } - ownKeys.removeAllViews(); - ownKeysCard.setVisibility(View.GONE); - foreignKeys.removeAllViews(); - foreignKeys.setVisibility(View.GONE); + binding.ownKeysDetails.removeAllViews(); + binding.ownKeysCard.setVisibility(View.GONE); + binding.foreignKeys.removeAllViews(); + binding.foreignKeys.setVisibility(View.GONE); } lockOrUnlockAsNeeded(); setDone(); @@ -441,13 +421,13 @@ public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdat } private void unlock() { - mSaveButton.setEnabled(true); - mSaveButton.setTextColor(getPrimaryTextColor()); + binding.saveButton.setEnabled(true); + binding.saveButton.setTextColor(getPrimaryTextColor()); } private void lock() { - mSaveButton.setEnabled(false); - mSaveButton.setTextColor(getSecondaryTextColor()); + binding.saveButton.setEnabled(false); + binding.saveButton.setTextColor(getSecondaryTextColor()); } private void lockOrUnlockAsNeeded() { @@ -465,10 +445,10 @@ public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdat } private void setDone() { - mSaveButton.setText(getString(R.string.done)); + binding.saveButton.setText(getString(R.string.done)); } private void setFetching() { - mSaveButton.setText(getString(R.string.fetching_keys)); + binding.saveButton.setText(getString(R.string.fetching_keys)); } } diff --git a/src/main/res/layout/activity_trust_keys.xml b/src/main/res/layout/activity_trust_keys.xml index cf14e8e98..7ba6fd674 100644 --- a/src/main/res/layout/activity_trust_keys.xml +++ b/src/main/res/layout/activity_trust_keys.xml @@ -1,129 +1,141 @@ - - + - + + + android:layout_above="@+id/button_bar" + android:layout_alignParentTop="true"> + android:orientation="vertical"> - - - - - - - - - - - + android:layout_marginBottom="@dimen/activity_vertical_margin" + android:layout_marginLeft="@dimen/activity_horizontal_margin" + android:layout_marginRight="@dimen/activity_horizontal_margin" + android:layout_marginTop="@dimen/activity_vertical_margin" + android:visibility="gone"> + + + + + + + + + + + + + + + + + + + + + + + + + - + +