diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java index 7997e9317..e484ede5a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java @@ -115,6 +115,7 @@ public final class Constants { public static final class Pref { public static final String PASSPHRASE_CACHE_SUBS = "passphraseCacheSubs"; + public static final String PASSPHRASE_CACHE_LAST_TTL = "passphraseCacheLastTtl"; public static final String LANGUAGE = "language"; public static final String KEY_SERVERS = "keyServers"; public static final String PREF_VERSION = "keyServersDefaultVersion"; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java index c92f5ecb2..c87c5eb66 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PassphraseDialogActivity.java @@ -210,6 +210,8 @@ public class PassphraseDialogActivity extends FragmentActivity { vTimeToLiveLayout.setVisibility(mRequiredInput.mSkipCaching ? View.GONE : View.VISIBLE); mTimeToLiveSpinner = (CacheTTLSpinner) mLayout.findViewById(R.id.ttl_spinner); + int ttlSeconds = Preferences.getPreferences(getContext()).getCacheTtlSeconds(); + mTimeToLiveSpinner.setSelectedTimeToLive(ttlSeconds); alert.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @@ -426,6 +428,8 @@ public class PassphraseDialogActivity extends FragmentActivity { final Passphrase passphrase = new Passphrase(mPassphraseEditText); final int timeToLiveSeconds = mTimeToLiveSpinner.getSelectedTimeToLive(); + Preferences.getPreferences(getContext()).setCacheTtlSeconds(timeToLiveSeconds); + // Early breakout if we are dealing with a symmetric key if (mRequiredInput.mType == RequiredInputType.PASSPHRASE_SYMMETRIC) { if (!mRequiredInput.mSkipCaching) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CacheTTLSpinner.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CacheTTLSpinner.java index 9cdbaa6c5..b8b7d6274 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CacheTTLSpinner.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CacheTTLSpinner.java @@ -67,4 +67,14 @@ public class CacheTTLSpinner extends AppCompatSpinner { Object item = getAdapter().getItem(selectedItemPosition); return ((Cursor) item).getInt(1); } + + public void setSelectedTimeToLive(int ttlSeconds) { + for (int i = 0; i < TTL_TIMES.length; i++) { + boolean isSelectedOrLast = ttlSeconds <= TTL_TIMES[i] || (i == TTL_TIMES.length - 1); + if (isSelectedOrLast) { + setSelection(i); + break; + } + } + } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java index f36ab37aa..9d5f84293 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java @@ -96,6 +96,16 @@ public class Preferences { return mSharedPreferences.getBoolean(Pref.PASSPHRASE_CACHE_SUBS, false); } + public int getCacheTtlSeconds() { + return mSharedPreferences.getInt(Pref.PASSPHRASE_CACHE_LAST_TTL, 0); + } + + public void setCacheTtlSeconds(int ttlSeconds) { + SharedPreferences.Editor editor = mSharedPreferences.edit(); + editor.putInt(Pref.PASSPHRASE_CACHE_LAST_TTL, ttlSeconds); + editor.commit(); + } + public boolean getCachedConsolidate() { return mSharedPreferences.getBoolean(Pref.CACHED_CONSOLIDATE, false); }