diff options
author | mar-v-in <github@rvin.mooo.com> | 2014-07-01 00:15:30 +0200 |
---|---|---|
committer | mar-v-in <github@rvin.mooo.com> | 2014-07-01 00:15:30 +0200 |
commit | d1d414c006aa6b7b80b25b34f0c75a92a9603a85 (patch) | |
tree | 6375bd8a5436c866824190318d10d183d8548ab6 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service | |
parent | 38823b73a31ae0fb82d7e385c141f1170127c4dd (diff) | |
parent | a9010045889d307ede37d154b0a2fece566c1845 (diff) | |
download | open-keychain-d1d414c006aa6b7b80b25b34f0c75a92a9603a85.tar.gz open-keychain-d1d414c006aa6b7b80b25b34f0c75a92a9603a85.tar.bz2 open-keychain-d1d414c006aa6b7b80b25b34f0c75a92a9603a85.zip |
Merge branch 'master' into improve-file-more
Conflicts:
OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java
OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFileFragment.java
OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java
OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/FileDialogFragment.java
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service')
2 files changed, 107 insertions, 13 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java index f88df5301..7f91ab490 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java @@ -59,23 +59,23 @@ public class OperationResultParcel implements Parcelable { public static class LogEntryParcel implements Parcelable { public final LogLevel mLevel; public final LogType mType; - public final String[] mParameters; + public final Object[] mParameters; public final int mIndent; - public LogEntryParcel(LogLevel level, LogType type, String[] parameters, int indent) { + public LogEntryParcel(LogLevel level, LogType type, int indent, Object... parameters) { mLevel = level; mType = type; mParameters = parameters; mIndent = indent; } - public LogEntryParcel(LogLevel level, LogType type, String[] parameters) { - this(level, type, parameters, 0); + public LogEntryParcel(LogLevel level, LogType type, Object... parameters) { + this(level, type, 0, parameters); } public LogEntryParcel(Parcel source) { mLevel = LogLevel.values()[source.readInt()]; mType = LogType.values()[source.readInt()]; - mParameters = source.createStringArray(); + mParameters = (Object[]) source.readSerializable(); mIndent = source.readInt(); } @@ -88,7 +88,7 @@ public class OperationResultParcel implements Parcelable { public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mLevel.ordinal()); dest.writeInt(mType.ordinal()); - dest.writeStringArray(mParameters); + dest.writeSerializable(mParameters); dest.writeInt(mIndent); } @@ -164,8 +164,8 @@ public class OperationResultParcel implements Parcelable { MSG_IP_UID_CERT_BAD (R.string.msg_ip_uid_cert_bad), MSG_IP_UID_CERT_ERROR (R.string.msg_ip_uid_cert_error), MSG_IP_UID_CERT_GOOD (R.string.msg_ip_uid_cert_good), - MSG_IP_UID_CERTS_UNKNOWN (R.string.msg_ip_uid_certs_unknown), - MSG_IP_UID_CLASSIFYING (R.string.msg_ip_uid_classifying), + MSG_IP_UID_CERTS_UNKNOWN (R.plurals.msg_ip_uid_certs_unknown), + MSG_IP_UID_CLASSIFYING (R.plurals.msg_ip_uid_classifying), MSG_IP_UID_REORDER(R.string.msg_ip_uid_reorder), MSG_IP_UID_PROCESSING (R.string.msg_ip_uid_processing), MSG_IP_UID_REVOKED (R.string.msg_ip_uid_revoked), @@ -209,9 +209,9 @@ public class OperationResultParcel implements Parcelable { MSG_KC_SUB_REVOKE_BAD_ERR (R.string.msg_kc_sub_revoke_bad_err), MSG_KC_SUB_REVOKE_BAD (R.string.msg_kc_sub_revoke_bad), MSG_KC_SUB_REVOKE_DUP (R.string.msg_kc_sub_revoke_dup), - MSG_KC_SUCCESS_BAD (R.string.msg_kc_success_bad), + MSG_KC_SUCCESS_BAD (R.plurals.msg_kc_success_bad), MSG_KC_SUCCESS_BAD_AND_RED (R.string.msg_kc_success_bad_and_red), - MSG_KC_SUCCESS_REDUNDANT (R.string.msg_kc_success_redundant), + MSG_KC_SUCCESS_REDUNDANT (R.plurals.msg_kc_success_redundant), MSG_KC_SUCCESS (R.string.msg_kc_success), MSG_KC_UID_BAD_ERR (R.string.msg_kc_uid_bad_err), MSG_KC_UID_BAD_LOCAL (R.string.msg_kc_uid_bad_local), @@ -296,13 +296,13 @@ public class OperationResultParcel implements Parcelable { public static class OperationLog extends ArrayList<LogEntryParcel> { /// Simple convenience method - public void add(LogLevel level, LogType type, String[] parameters, int indent) { + public void add(LogLevel level, LogType type, int indent, Object... parameters) { Log.d(Constants.TAG, type.toString()); - add(new OperationResultParcel.LogEntryParcel(level, type, parameters, indent)); + add(new OperationResultParcel.LogEntryParcel(level, type, indent, parameters)); } public void add(LogLevel level, LogType type, int indent) { - add(new OperationResultParcel.LogEntryParcel(level, type, null, indent)); + add(new OperationResultParcel.LogEntryParcel(level, type, indent, (Object[]) null)); } public boolean containsWarnings() { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java index 6c44b01f1..fd3d4ed00 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java @@ -1,6 +1,19 @@ package org.sufficientlysecure.keychain.service; +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.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 abstract class OperationResults { @@ -67,6 +80,87 @@ public abstract class OperationResults { } }; + public void displayNotify(final Activity activity) { + + int resultType = getResult(); + + String str; + int duration, color; + + // Not an overall failure + if ((resultType & ImportResult.RESULT_ERROR) == 0) { + String withWarnings; + + // Any warnings? + if ((resultType & ImportResult.RESULT_WITH_WARNINGS) > 0) { + duration = 0; + color = Style.ORANGE; + withWarnings = activity.getResources().getString(R.string.import_with_warnings); + } else { + duration = SuperToast.Duration.LONG; + color = Style.GREEN; + withWarnings = ""; + } + + // New and updated keys + if (this.isOkBoth()) { + str = activity.getResources().getQuantityString( + R.plurals.import_keys_added_and_updated_1, mNewKeys, mNewKeys); + str += activity.getResources().getQuantityString( + R.plurals.import_keys_added_and_updated_2, mUpdatedKeys, mUpdatedKeys, withWarnings); + } else if (isOkUpdated()) { + str = activity.getResources().getQuantityString( + R.plurals.import_keys_updated, mUpdatedKeys, mUpdatedKeys, withWarnings); + } else if (isOkNew()) { + str = activity.getResources().getQuantityString( + R.plurals.import_keys_added, mNewKeys, mNewKeys, withWarnings); + } else { + duration = 0; + color = Style.RED; + str = "internal error"; + } + + } else { + duration = 0; + color = Style.RED; + if (isFailNothing()) { + str = activity.getString(R.string.import_error_nothing); + } else { + str = activity.getString(R.string.import_error); + } + } + + // TODO: externalize into Notify class? + 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.import_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, ImportResult.this); + activity.startActivity(intent); + } + } + )); + } + toast.show(); + + } + } public static class SaveKeyringResult extends OperationResultParcel { |