aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-05-28 18:55:34 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-05-28 18:55:34 +0200
commit1deb5dbfda73b0fa72c132c318d9fb7a46aafeee (patch)
treeda116bcdc4cee59efb77afa3f571b52c127532b0 /OpenKeychain/src/main/java
parent34c26fe5d1b0ae3b69a264d56e2b3752711410ca (diff)
downloadopen-keychain-1deb5dbfda73b0fa72c132c318d9fb7a46aafeee.tar.gz
open-keychain-1deb5dbfda73b0fa72c132c318d9fb7a46aafeee.tar.bz2
open-keychain-1deb5dbfda73b0fa72c132c318d9fb7a46aafeee.zip
preserve state in DecryptTextActivity
Diffstat (limited to 'OpenKeychain/src/main/java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java25
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java26
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java27
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java2
4 files changed, 55 insertions, 25 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
index c5f9821d3..e13365feb 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
@@ -60,6 +60,7 @@ public abstract class DecryptFragment extends CryptoOperationFragment implements
LoaderManager.LoaderCallbacks<Cursor> {
public static final int LOADER_ID_UNIFIED = 0;
+ public static final String ARG_DECRYPT_VERIFY_RESULT = "decrypt_verify_result";
protected LinearLayout mResultLayout;
protected ImageView mEncryptionIcon;
@@ -75,6 +76,7 @@ public abstract class DecryptFragment extends CryptoOperationFragment implements
private LinearLayout mErrorOverlayLayout;
private OpenPgpSignatureResult mSignatureResult;
+ private DecryptVerifyResult mDecryptVerifyResult;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
@@ -105,6 +107,27 @@ public abstract class DecryptFragment extends CryptoOperationFragment implements
});
}
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ outState.putParcelable(ARG_DECRYPT_VERIFY_RESULT, mDecryptVerifyResult);
+ }
+
+ @Override
+ public void onViewStateRestored(Bundle savedInstanceState) {
+ super.onViewStateRestored(savedInstanceState);
+
+ if (savedInstanceState == null) {
+ return;
+ }
+
+ DecryptVerifyResult result = savedInstanceState.getParcelable(ARG_DECRYPT_VERIFY_RESULT);
+ if (result != null) {
+ loadVerifyResult(result);
+ }
+ }
+
private void lookupUnknownKey(long unknownKeyId) {
// Message is received after importing is done in KeychainIntentService
@@ -183,7 +206,9 @@ public abstract class DecryptFragment extends CryptoOperationFragment implements
*/
protected void loadVerifyResult(DecryptVerifyResult decryptVerifyResult) {
+ mDecryptVerifyResult = decryptVerifyResult;
mSignatureResult = decryptVerifyResult.getSignatureResult();
+
mResultLayout.setVisibility(View.VISIBLE);
// unsigned data
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java
index e2eba3947..0c463c2cd 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java
@@ -21,6 +21,7 @@ package org.sufficientlysecure.keychain.ui;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
+import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.view.View;
import android.widget.Toast;
@@ -46,8 +47,6 @@ public class DecryptTextActivity extends BaseActivity {
// intern
public static final String ACTION_DECRYPT_FROM_CLIPBOARD = Constants.INTENT_PREFIX + "DECRYPT_TEXT_FROM_CLIPBOARD";
- DecryptTextFragment mFragment;
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -148,6 +147,10 @@ public class DecryptTextActivity extends BaseActivity {
extras = new Bundle();
}
+ if (savedInstanceState != null) {
+ return;
+ }
+
if (Intent.ACTION_SEND.equals(action) && type != null) {
Log.d(Constants.TAG, "ACTION_SEND");
Log.logDebugBundle(extras, "SEND extras");
@@ -158,7 +161,7 @@ public class DecryptTextActivity extends BaseActivity {
sharedText = getPgpContent(sharedText);
if (sharedText != null) {
- loadFragment(savedInstanceState, sharedText);
+ loadFragment(sharedText);
} else {
Log.e(Constants.TAG, "EXTRA_TEXT does not contain PGP content!");
Toast.makeText(this, R.string.error_invalid_data, Toast.LENGTH_LONG).show();
@@ -176,7 +179,7 @@ public class DecryptTextActivity extends BaseActivity {
extraText = getPgpContent(extraText);
if (extraText != null) {
- loadFragment(savedInstanceState, extraText);
+ loadFragment(extraText);
} else {
Log.e(Constants.TAG, "EXTRA_TEXT does not contain PGP content!");
Toast.makeText(this, R.string.error_invalid_data, Toast.LENGTH_LONG).show();
@@ -189,7 +192,7 @@ public class DecryptTextActivity extends BaseActivity {
String text = getPgpContent(clipboardText);
if (text != null) {
- loadFragment(savedInstanceState, text);
+ loadFragment(text);
} else {
returnInvalidResult();
}
@@ -209,21 +212,14 @@ public class DecryptTextActivity extends BaseActivity {
finish();
}
- private void loadFragment(Bundle savedInstanceState, String ciphertext) {
- // However, if we're being restored from a previous state,
- // then we don't need to do anything and should return or else
- // we could end up with overlapping fragments.
- if (savedInstanceState != null) {
- return;
- }
-
+ private void loadFragment(String ciphertext) {
// Create an instance of the fragment
- mFragment = DecryptTextFragment.newInstance(ciphertext);
+ Fragment frag = DecryptTextFragment.newInstance(ciphertext);
// Add the fragment to the 'fragment_container' FrameLayout
// NOTE: We use commitAllowingStateLoss() to prevent weird crashes!
getSupportFragmentManager().beginTransaction()
- .replace(R.id.decrypt_text_fragment_container, mFragment)
+ .replace(R.id.decrypt_text_fragment_container, frag)
.commitAllowingStateLoss();
// do it immediately!
getSupportFragmentManager().executePendingTransactions();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
index 381da6f0d..a666c2357 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
@@ -28,8 +28,6 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.LinearLayout;
import android.widget.TextView;
import org.sufficientlysecure.keychain.Constants;
@@ -48,17 +46,15 @@ import java.io.UnsupportedEncodingException;
public class DecryptTextFragment extends DecryptFragment {
public static final String ARG_CIPHERTEXT = "ciphertext";
+ public static final String ARG_SHOW_MENU = "show_menu";
// view
private TextView mText;
// model
private String mCiphertext;
- private boolean mShowMenuOptions = false;
+ private boolean mShowMenuOptions;
- /**
- * Creates new instance of this fragment
- */
public static DecryptTextFragment newInstance(String ciphertext) {
DecryptTextFragment frag = new DecryptTextFragment();
@@ -115,11 +111,24 @@ public class DecryptTextFragment extends DecryptFragment {
setHasOptionsMenu(true);
- String ciphertext = getArguments().getString(ARG_CIPHERTEXT);
- if (ciphertext != null) {
- mCiphertext = ciphertext;
+ Bundle args = savedInstanceState == null ? getArguments() : savedInstanceState;
+ mCiphertext = args.getString(ARG_CIPHERTEXT);
+ mShowMenuOptions = args.getBoolean(ARG_SHOW_MENU, false);
+
+ if (savedInstanceState == null) {
cryptoOperation(new CryptoInputParcel());
}
+
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ outState.putString(ARG_CIPHERTEXT, mCiphertext);
+ outState.putBoolean(ARG_SHOW_MENU, mShowMenuOptions);
+ // no need to save the decrypted text, it's in the textview
+
}
@Override
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java
index 10c1aca0c..dd85a6e46 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java
@@ -219,7 +219,7 @@ public class KeyFormattingUtils {
// NOTE: Even though v3 keys are not imported we need to support both fingerprints for
// display/comparison before import
if (fingerprint.length != 16 && fingerprint.length != 20) {
- throw new AssertionError("No valid v3 or v4 fingerprint!");
+ throw new IllegalArgumentException("No valid v3 or v4 fingerprint!");
}
return Hex.toHexString(fingerprint).toLowerCase(Locale.ENGLISH);