Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc7b9b7c authored by Vincent Breitmoser's avatar Vincent Breitmoser
Browse files

propagate display of "enabled" status to recipient tokens

parent 4fd39e3b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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);
+2 −0
Original line number Diff line number Diff line
@@ -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();
+63 −30
Original line number Diff line number Diff line
@@ -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;

@@ -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);
        }
    }

@@ -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);
@@ -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) {
@@ -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);
        }
    }

+31 −3
Original line number Diff line number Diff line
@@ -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"
@@ -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"
@@ -49,7 +78,6 @@
        android:src="@drawable/status_dots_2"
        android:tint="?attr/openpgp_orange"
        android:visibility="gone"
        tools:visibility="visible"
        />

    <ImageView