aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service
diff options
context:
space:
mode:
authormar-v-in <github@rvin.mooo.com>2014-07-01 00:15:30 +0200
committermar-v-in <github@rvin.mooo.com>2014-07-01 00:15:30 +0200
commitd1d414c006aa6b7b80b25b34f0c75a92a9603a85 (patch)
tree6375bd8a5436c866824190318d10d183d8548ab6 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service
parent38823b73a31ae0fb82d7e385c141f1170127c4dd (diff)
parenta9010045889d307ede37d154b0a2fece566c1845 (diff)
downloadopen-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')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java26
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java94
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 {