diff options
Diffstat (limited to 'OpenKeychain/src/main/java')
4 files changed, 102 insertions, 5 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpCertifyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpCertifyOperation.java index ffa2181e1..3a29faec3 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpCertifyOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpCertifyOperation.java @@ -1,7 +1,5 @@  package org.sufficientlysecure.keychain.pgp; -import android.content.Context; -  import org.spongycastle.openpgp.PGPException;  import org.sufficientlysecure.keychain.Constants;  import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException; @@ -10,7 +8,6 @@ import org.sufficientlysecure.keychain.provider.ProviderHelper.NotFoundException  import org.sufficientlysecure.keychain.service.CertifyActionsParcel;  import org.sufficientlysecure.keychain.service.CertifyActionsParcel.CertifyAction;  import org.sufficientlysecure.keychain.service.results.CertifyResult; -import org.sufficientlysecure.keychain.service.results.EditKeyResult;  import org.sufficientlysecure.keychain.service.results.OperationResult.LogType;  import org.sufficientlysecure.keychain.service.results.OperationResult.OperationLog;  import org.sufficientlysecure.keychain.service.results.SaveKeyringResult; @@ -141,6 +138,11 @@ public class PgpCertifyOperation {          } +        if (certifyOk == 0) { +            log.add(LogType.MSG_CRT_ERROR_NOTHING, 0); +            return new CertifyResult(CertifyResult.RESULT_ERROR, log, certifyOk, certifyError); +        } +          log.add(LogType.MSG_CRT_SUCCESS, 0);          return new CertifyResult(CertifyResult.RESULT_OK, log, certifyOk, certifyError); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/CertifyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/CertifyResult.java index cf54238ec..49bc613bd 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/CertifyResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/CertifyResult.java @@ -18,7 +18,21 @@  package org.sufficientlysecure.keychain.service.results; +import android.app.Activity; +import android.content.Intent;  import android.os.Parcel; +import android.os.Parcelable; +import android.view.View; + +import com.github.johnpersano.supertoasts.SuperCardToast; +import com.github.johnpersano.supertoasts.SuperToast; +import com.github.johnpersano.supertoasts.SuperToast.Duration; +import com.github.johnpersano.supertoasts.util.OnClickWrapper; +import com.github.johnpersano.supertoasts.util.Style; + +import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.ui.LogDisplayActivity; +import org.sufficientlysecure.keychain.ui.LogDisplayFragment;  public class CertifyResult extends OperationResult { @@ -37,11 +51,15 @@ public class CertifyResult extends OperationResult {      /** Construct from a parcel - trivial because we have no extra data. */      public CertifyResult(Parcel source) {          super(source); +        mCertifyOk = source.readInt(); +        mCertifyError = source.readInt();      }      @Override      public void writeToParcel(Parcel dest, int flags) {          super.writeToParcel(dest, flags); +        dest.writeInt(mCertifyOk); +        dest.writeInt(mCertifyError);      }      public static Creator<CertifyResult> CREATOR = new Creator<CertifyResult>() { @@ -54,4 +72,80 @@ public class CertifyResult extends OperationResult {          }      }; +    public SuperCardToast createNotify(final Activity activity) { + +        int resultType = getResult(); + +        String str; +        int duration, color; + +        // Not an overall failure +        if ((resultType & OperationResult.RESULT_ERROR) == 0) { +            String withWarnings; + +            duration = Duration.EXTRA_LONG; +            color = Style.GREEN; +            withWarnings = ""; + +            // Any warnings? +            if ((resultType & ImportKeyResult.RESULT_WARNINGS) > 0) { +                duration = 0; +                color = Style.ORANGE; +                withWarnings += activity.getString(R.string.with_warnings); +            } +            if ((resultType & ImportKeyResult.RESULT_CANCELLED) > 0) { +                duration = 0; +                color = Style.ORANGE; +                withWarnings += activity.getString(R.string.with_cancelled); +            } + +            // New and updated keys +            str = activity.getResources().getQuantityString( +                    R.plurals.certify_keys_ok, mCertifyOk, mCertifyOk, withWarnings); +            if (mCertifyError > 0) { +                // definitely switch to warning-style message in this case! +                duration = 0; +                color = Style.RED; +                str += " " + activity.getResources().getQuantityString( +                        R.plurals.certify_keys_with_errors, mCertifyError, mCertifyError); +            } + +        } else { +            duration = 0; +            color = Style.RED; +            str = activity.getResources().getQuantityString(R.plurals.certify_error, +                    mCertifyError, mCertifyError); +        } + +        boolean button = getLog() != null && !getLog().isEmpty(); +        SuperCardToast toast = new SuperCardToast(activity, +                button ? SuperToast.Type.BUTTON : SuperToast.Type.STANDARD, +                Style.getStyle(color, SuperToast.Animations.POPUP)); +        toast.setText(str); +        toast.setDuration(duration); +        toast.setIndeterminate(duration == 0); +        toast.setSwipeToDismiss(true); +        // If we have a log and it's non-empty, show a View Log button +        if (button) { +            toast.setButtonIcon(R.drawable.ic_action_view_as_list, +                    activity.getResources().getString(R.string.view_log)); +            toast.setButtonTextColor(activity.getResources().getColor(R.color.black)); +            toast.setTextColor(activity.getResources().getColor(R.color.black)); +            toast.setOnClickWrapper(new OnClickWrapper("supercardtoast", +                    new SuperToast.OnClickListener() { +                        @Override +                        public void onClick(View view, Parcelable token) { +                            Intent intent = new Intent( +                                    activity, LogDisplayActivity.class); +                            intent.putExtra(LogDisplayFragment.EXTRA_RESULT, CertifyResult.this); +                            activity.startActivity(intent); +                        } +                    } +            )); +        } + +        return toast; + +    } +  } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ImportKeyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ImportKeyResult.java index b5174bc63..fa0dc6af3 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ImportKeyResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/ImportKeyResult.java @@ -124,12 +124,12 @@ public class ImportKeyResult extends OperationResult {              if ((resultType & ImportKeyResult.RESULT_WARNINGS) > 0) {                  duration = 0;                  color = Style.ORANGE; -                withWarnings += activity.getString(R.string.import_with_warnings); +                withWarnings += activity.getString(R.string.with_warnings);              }              if ((resultType & ImportKeyResult.RESULT_CANCELLED) > 0) {                  duration = 0;                  color = Style.ORANGE; -                withWarnings += activity.getString(R.string.import_with_cancelled); +                withWarnings += activity.getString(R.string.with_cancelled);              }              // New and updated keys diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java index 90e1d0037..5613aa794 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/OperationResult.java @@ -521,6 +521,7 @@ public abstract class OperationResult implements Parcelable {          MSG_CRT_CERTIFY_ALL (LogLevel.DEBUG, R.string.msg_crt_certify_all),          MSG_CRT_CERTIFY_SOME (LogLevel.DEBUG, R.plurals.msg_crt_certify_some),          MSG_CRT_ERROR_MASTER_NOT_FOUND (LogLevel.ERROR, R.string.msg_crt_error_master_not_found), +        MSG_CRT_ERROR_NOTHING (LogLevel.ERROR, R.string.msg_crt_error_nothing),          MSG_CRT_ERROR_UNLOCK (LogLevel.ERROR, R.string.msg_crt_error_unlock),          MSG_CRT_FP_MISMATCH (LogLevel.WARN, R.string.msg_crt_fp_mismatch),          MSG_CRT (LogLevel.START, R.string.msg_crt),  | 
