Loading k9mail/src/main/java/com/fsck/k9/activity/compose/RecipientMvpView.java +6 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,12 @@ public class RecipientMvpView implements OnFocusChangeListener, OnClickListener bccView.addTextChangedListener(textWatcher); } public void setRecipientTokensShowCryptoEnabled(boolean isEnabled) { toView.setShowCryptoEnabled(isEnabled); ccView.setShowCryptoEnabled(isEnabled); bccView.setShowCryptoEnabled(isEnabled); } public void setCryptoProvider(String openPgpProvider) { // TODO move "show advanced" into settings, or somewhere? toView.setCryptoProvider(openPgpProvider, false); Loading k9mail/src/main/java/com/fsck/k9/activity/compose/RecipientPresenter.java +2 −0 Original line number Diff line number Diff line Loading @@ -427,6 +427,8 @@ public class RecipientPresenter implements PermissionPingCallback { throw new IllegalStateException("must have cached crypto status to redraw it!"); } recipientMvpView.setRecipientTokensShowCryptoEnabled(cachedCryptoStatus.isEncryptionEnabled()); CryptoStatusDisplayType cryptoStatusDisplayType = cachedCryptoStatus.getCryptoStatusDisplayType(); if (cryptoStatusDisplayType == CryptoStatusDisplayType.ERROR) { recipientMvpView.showErrorOpenPgpRetrieveStatus(); Loading k9mail/src/main/java/com/fsck/k9/view/RecipientSelectView.java +63 −30 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ public class RecipientSelectView extends TokenCompleteTextView<Recipient> implem @Nullable private String cryptoProvider; private boolean showAdvancedInfo; private boolean showCryptoEnabled; @Nullable private LoaderManager loaderManager; Loading Loading @@ -130,40 +131,17 @@ public class RecipientSelectView extends TokenCompleteTextView<Recipient> implem boolean hasCryptoProvider = cryptoProvider != null; if (!hasCryptoProvider) { holder.cryptoStatusSimple.setVisibility(View.GONE); holder.cryptoStatusRed.setVisibility(View.GONE); holder.cryptoStatusOrange.setVisibility(View.GONE); holder.cryptoStatusGreen.setVisibility(View.GONE); holder.hideCryptoState(); return; } boolean isAvailable = recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_TRUSTED || recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_UNTRUSTED; if (!showAdvancedInfo) { holder.cryptoStatusRed.setVisibility(View.GONE); holder.cryptoStatusOrange.setVisibility(View.GONE); holder.cryptoStatusGreen.setVisibility(View.GONE); if (recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_TRUSTED || recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_UNTRUSTED) { holder.cryptoStatusSimple.setVisibility(View.VISIBLE); holder.showSimpleCryptoState(isAvailable, showCryptoEnabled); } else { holder.cryptoStatusSimple.setVisibility(View.GONE); } return; } if (recipient.cryptoStatus == RecipientCryptoStatus.UNAVAILABLE) { holder.cryptoStatusRed.setVisibility(View.VISIBLE); holder.cryptoStatusOrange.setVisibility(View.GONE); holder.cryptoStatusGreen.setVisibility(View.GONE); } else if (recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_UNTRUSTED) { holder.cryptoStatusRed.setVisibility(View.GONE); holder.cryptoStatusOrange.setVisibility(View.VISIBLE); holder.cryptoStatusGreen.setVisibility(View.GONE); } else if (recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_TRUSTED) { holder.cryptoStatusRed.setVisibility(View.GONE); holder.cryptoStatusOrange.setVisibility(View.GONE); holder.cryptoStatusGreen.setVisibility(View.VISIBLE); boolean isVerified = recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_TRUSTED; holder.showAdvancedCryptoState(isAvailable, isVerified); } } Loading Loading @@ -282,6 +260,26 @@ public class RecipientSelectView extends TokenCompleteTextView<Recipient> implem alternatesAdapter.setShowAdvancedInfo(showAdvancedInfo); } public void setShowCryptoEnabled(boolean showCryptoEnabled) { this.showCryptoEnabled = showCryptoEnabled; redrawAllTokens(); } private void redrawAllTokens() { Editable text = getText(); if (text == null) { return; } RecipientTokenSpan[] recipientSpans = text.getSpans(0, text.length(), RecipientTokenSpan.class); for (RecipientTokenSpan recipientSpan : recipientSpans) { bindObjectView(recipientSpan.getToken(), recipientSpan.view); } invalidate(); } public void addRecipients(Recipient... recipients) { for (Recipient recipient : recipients) { addObject(recipient); Loading Loading @@ -528,6 +526,8 @@ public class RecipientSelectView extends TokenCompleteTextView<Recipient> implem final View cryptoStatusOrange; final View cryptoStatusGreen; final View cryptoStatusSimple; final View cryptoStatusSimpleEnabled; final View cryptoStatusSimpleError; RecipientTokenViewHolder(View view) { Loading @@ -536,7 +536,40 @@ public class RecipientSelectView extends TokenCompleteTextView<Recipient> implem cryptoStatusRed = view.findViewById(R.id.contact_crypto_status_red); cryptoStatusOrange = view.findViewById(R.id.contact_crypto_status_orange); cryptoStatusGreen = view.findViewById(R.id.contact_crypto_status_green); cryptoStatusSimple = view.findViewById(R.id.contact_crypto_status_icon_simple); cryptoStatusSimpleEnabled = view.findViewById(R.id.contact_crypto_status_icon_simple_enabled); cryptoStatusSimpleError = view.findViewById(R.id.contact_crypto_status_icon_simple_error); } void showSimpleCryptoState(boolean isAvailable, boolean isShowEnabled) { cryptoStatusRed.setVisibility(View.GONE); cryptoStatusOrange.setVisibility(View.GONE); cryptoStatusGreen.setVisibility(View.GONE); cryptoStatusSimple.setVisibility(!isShowEnabled && isAvailable ? View.VISIBLE : View.GONE); cryptoStatusSimpleEnabled.setVisibility(isShowEnabled && isAvailable ? View.VISIBLE : View.GONE); cryptoStatusSimpleError.setVisibility(isShowEnabled && !isAvailable ? View.VISIBLE : View.GONE); } void showAdvancedCryptoState(boolean isAvailable, boolean isVerified) { cryptoStatusRed.setVisibility(!isAvailable ? View.VISIBLE : View.GONE); cryptoStatusOrange.setVisibility(isAvailable && !isVerified ? View.VISIBLE : View.GONE); cryptoStatusGreen.setVisibility(isAvailable && isVerified ? View.VISIBLE : View.GONE); cryptoStatusSimple.setVisibility(View.GONE); cryptoStatusSimpleEnabled.setVisibility(View.GONE); cryptoStatusSimpleError.setVisibility(View.GONE); } void hideCryptoState() { cryptoStatusRed.setVisibility(View.GONE); cryptoStatusOrange.setVisibility(View.GONE); cryptoStatusGreen.setVisibility(View.GONE); cryptoStatusSimple.setVisibility(View.GONE); cryptoStatusSimpleEnabled.setVisibility(View.GONE); cryptoStatusSimpleError.setVisibility(View.GONE); } } Loading k9mail/src/main/res/layout/recipient_token_item.xml +31 −3 Original line number Diff line number Diff line Loading @@ -15,9 +15,8 @@ /> <TextView android:layout_width="0dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:id="@android:id/text1" android:layout_gravity="center_vertical" android:layout_marginLeft="8dp" Loading @@ -27,6 +26,36 @@ tools:text="Name" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/contact_crypto_status_icon_simple" android:src="@drawable/ic_status_corner" android:visibility="gone" android:tint="?openpgp_black" tools:visibility="visible" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/contact_crypto_status_icon_simple_enabled" android:src="@drawable/ic_status_corner" android:visibility="gone" android:tint="?openpgp_green" tools:visibility="visible" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/contact_crypto_status_icon_simple_error" android:src="@drawable/ic_status_corner" android:visibility="gone" android:tint="?openpgp_red" tools:visibility="visible" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" Loading @@ -49,7 +78,6 @@ android:src="@drawable/status_dots_2" android:tint="?attr/openpgp_orange" android:visibility="gone" tools:visibility="visible" /> <ImageView Loading Loading
k9mail/src/main/java/com/fsck/k9/activity/compose/RecipientMvpView.java +6 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,12 @@ public class RecipientMvpView implements OnFocusChangeListener, OnClickListener bccView.addTextChangedListener(textWatcher); } public void setRecipientTokensShowCryptoEnabled(boolean isEnabled) { toView.setShowCryptoEnabled(isEnabled); ccView.setShowCryptoEnabled(isEnabled); bccView.setShowCryptoEnabled(isEnabled); } public void setCryptoProvider(String openPgpProvider) { // TODO move "show advanced" into settings, or somewhere? toView.setCryptoProvider(openPgpProvider, false); Loading
k9mail/src/main/java/com/fsck/k9/activity/compose/RecipientPresenter.java +2 −0 Original line number Diff line number Diff line Loading @@ -427,6 +427,8 @@ public class RecipientPresenter implements PermissionPingCallback { throw new IllegalStateException("must have cached crypto status to redraw it!"); } recipientMvpView.setRecipientTokensShowCryptoEnabled(cachedCryptoStatus.isEncryptionEnabled()); CryptoStatusDisplayType cryptoStatusDisplayType = cachedCryptoStatus.getCryptoStatusDisplayType(); if (cryptoStatusDisplayType == CryptoStatusDisplayType.ERROR) { recipientMvpView.showErrorOpenPgpRetrieveStatus(); Loading
k9mail/src/main/java/com/fsck/k9/view/RecipientSelectView.java +63 −30 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ public class RecipientSelectView extends TokenCompleteTextView<Recipient> implem @Nullable private String cryptoProvider; private boolean showAdvancedInfo; private boolean showCryptoEnabled; @Nullable private LoaderManager loaderManager; Loading Loading @@ -130,40 +131,17 @@ public class RecipientSelectView extends TokenCompleteTextView<Recipient> implem boolean hasCryptoProvider = cryptoProvider != null; if (!hasCryptoProvider) { holder.cryptoStatusSimple.setVisibility(View.GONE); holder.cryptoStatusRed.setVisibility(View.GONE); holder.cryptoStatusOrange.setVisibility(View.GONE); holder.cryptoStatusGreen.setVisibility(View.GONE); holder.hideCryptoState(); return; } boolean isAvailable = recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_TRUSTED || recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_UNTRUSTED; if (!showAdvancedInfo) { holder.cryptoStatusRed.setVisibility(View.GONE); holder.cryptoStatusOrange.setVisibility(View.GONE); holder.cryptoStatusGreen.setVisibility(View.GONE); if (recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_TRUSTED || recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_UNTRUSTED) { holder.cryptoStatusSimple.setVisibility(View.VISIBLE); holder.showSimpleCryptoState(isAvailable, showCryptoEnabled); } else { holder.cryptoStatusSimple.setVisibility(View.GONE); } return; } if (recipient.cryptoStatus == RecipientCryptoStatus.UNAVAILABLE) { holder.cryptoStatusRed.setVisibility(View.VISIBLE); holder.cryptoStatusOrange.setVisibility(View.GONE); holder.cryptoStatusGreen.setVisibility(View.GONE); } else if (recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_UNTRUSTED) { holder.cryptoStatusRed.setVisibility(View.GONE); holder.cryptoStatusOrange.setVisibility(View.VISIBLE); holder.cryptoStatusGreen.setVisibility(View.GONE); } else if (recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_TRUSTED) { holder.cryptoStatusRed.setVisibility(View.GONE); holder.cryptoStatusOrange.setVisibility(View.GONE); holder.cryptoStatusGreen.setVisibility(View.VISIBLE); boolean isVerified = recipient.cryptoStatus == RecipientCryptoStatus.AVAILABLE_TRUSTED; holder.showAdvancedCryptoState(isAvailable, isVerified); } } Loading Loading @@ -282,6 +260,26 @@ public class RecipientSelectView extends TokenCompleteTextView<Recipient> implem alternatesAdapter.setShowAdvancedInfo(showAdvancedInfo); } public void setShowCryptoEnabled(boolean showCryptoEnabled) { this.showCryptoEnabled = showCryptoEnabled; redrawAllTokens(); } private void redrawAllTokens() { Editable text = getText(); if (text == null) { return; } RecipientTokenSpan[] recipientSpans = text.getSpans(0, text.length(), RecipientTokenSpan.class); for (RecipientTokenSpan recipientSpan : recipientSpans) { bindObjectView(recipientSpan.getToken(), recipientSpan.view); } invalidate(); } public void addRecipients(Recipient... recipients) { for (Recipient recipient : recipients) { addObject(recipient); Loading Loading @@ -528,6 +526,8 @@ public class RecipientSelectView extends TokenCompleteTextView<Recipient> implem final View cryptoStatusOrange; final View cryptoStatusGreen; final View cryptoStatusSimple; final View cryptoStatusSimpleEnabled; final View cryptoStatusSimpleError; RecipientTokenViewHolder(View view) { Loading @@ -536,7 +536,40 @@ public class RecipientSelectView extends TokenCompleteTextView<Recipient> implem cryptoStatusRed = view.findViewById(R.id.contact_crypto_status_red); cryptoStatusOrange = view.findViewById(R.id.contact_crypto_status_orange); cryptoStatusGreen = view.findViewById(R.id.contact_crypto_status_green); cryptoStatusSimple = view.findViewById(R.id.contact_crypto_status_icon_simple); cryptoStatusSimpleEnabled = view.findViewById(R.id.contact_crypto_status_icon_simple_enabled); cryptoStatusSimpleError = view.findViewById(R.id.contact_crypto_status_icon_simple_error); } void showSimpleCryptoState(boolean isAvailable, boolean isShowEnabled) { cryptoStatusRed.setVisibility(View.GONE); cryptoStatusOrange.setVisibility(View.GONE); cryptoStatusGreen.setVisibility(View.GONE); cryptoStatusSimple.setVisibility(!isShowEnabled && isAvailable ? View.VISIBLE : View.GONE); cryptoStatusSimpleEnabled.setVisibility(isShowEnabled && isAvailable ? View.VISIBLE : View.GONE); cryptoStatusSimpleError.setVisibility(isShowEnabled && !isAvailable ? View.VISIBLE : View.GONE); } void showAdvancedCryptoState(boolean isAvailable, boolean isVerified) { cryptoStatusRed.setVisibility(!isAvailable ? View.VISIBLE : View.GONE); cryptoStatusOrange.setVisibility(isAvailable && !isVerified ? View.VISIBLE : View.GONE); cryptoStatusGreen.setVisibility(isAvailable && isVerified ? View.VISIBLE : View.GONE); cryptoStatusSimple.setVisibility(View.GONE); cryptoStatusSimpleEnabled.setVisibility(View.GONE); cryptoStatusSimpleError.setVisibility(View.GONE); } void hideCryptoState() { cryptoStatusRed.setVisibility(View.GONE); cryptoStatusOrange.setVisibility(View.GONE); cryptoStatusGreen.setVisibility(View.GONE); cryptoStatusSimple.setVisibility(View.GONE); cryptoStatusSimpleEnabled.setVisibility(View.GONE); cryptoStatusSimpleError.setVisibility(View.GONE); } } Loading
k9mail/src/main/res/layout/recipient_token_item.xml +31 −3 Original line number Diff line number Diff line Loading @@ -15,9 +15,8 @@ /> <TextView android:layout_width="0dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:id="@android:id/text1" android:layout_gravity="center_vertical" android:layout_marginLeft="8dp" Loading @@ -27,6 +26,36 @@ tools:text="Name" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/contact_crypto_status_icon_simple" android:src="@drawable/ic_status_corner" android:visibility="gone" android:tint="?openpgp_black" tools:visibility="visible" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/contact_crypto_status_icon_simple_enabled" android:src="@drawable/ic_status_corner" android:visibility="gone" android:tint="?openpgp_green" tools:visibility="visible" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/contact_crypto_status_icon_simple_error" android:src="@drawable/ic_status_corner" android:visibility="gone" android:tint="?openpgp_red" tools:visibility="visible" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" Loading @@ -49,7 +78,6 @@ android:src="@drawable/status_dots_2" android:tint="?attr/openpgp_orange" android:visibility="gone" tools:visibility="visible" /> <ImageView Loading