diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml
index a76982975..0061677bb 100644
--- a/OpenKeychain/src/main/AndroidManifest.xml
+++ b/OpenKeychain/src/main/AndroidManifest.xml
@@ -496,11 +496,6 @@
android:configChanges="orientation|screenSize|keyboardHidden|keyboard"
android:label="@string/title_smartpgp_authorities_preference"
android:windowSoftInputMode="stateHidden" />
-
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package org.sufficientlysecure.keychain.ui;
-
-import java.util.ArrayList;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-
-import org.sufficientlysecure.keychain.R;
-import org.sufficientlysecure.keychain.ui.base.BaseActivity;
-import org.sufficientlysecure.keychain.util.Preferences.CacheTTLPrefs;
-
-
-public class SettingsCacheTTLActivity extends BaseActivity {
-
- public static final String EXTRA_TTL_PREF = "ttl_pref";
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- Intent intent = getIntent();
- CacheTTLPrefs ttlPrefs = (CacheTTLPrefs) intent.getSerializableExtra(EXTRA_TTL_PREF);
- loadFragment(savedInstanceState, ttlPrefs);
-
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- finish();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-
- @Override
- protected void initLayout() {
- setContentView(R.layout.settings_cache_ttl);
- }
-
- private void loadFragment(Bundle savedInstanceState, CacheTTLPrefs ttlPrefs) {
- // 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;
- }
-
- SettingsCacheTTLFragment fragment = SettingsCacheTTLFragment.newInstance(ttlPrefs);
-
- // Add the fragment to the 'fragment_container' FrameLayout
- // NOTE: We use commitAllowingStateLoss() to prevent weird crashes!
- getSupportFragmentManager().beginTransaction()
- .replace(R.id.settings_cache_ttl_fragment, fragment)
- .commitAllowingStateLoss();
- // do it immediately!
- getSupportFragmentManager().executePendingTransactions();
- }
-}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsCacheTTLFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsCacheTTLFragment.java
deleted file mode 100644
index 26f5dbee7..000000000
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsCacheTTLFragment.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2015 Vincent Breitmoser
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package org.sufficientlysecure.keychain.ui;
-
-
-import java.util.ArrayList;
-
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.CheckBox;
-import android.widget.TextView;
-
-import org.sufficientlysecure.keychain.R;
-import org.sufficientlysecure.keychain.ui.util.Notify;
-import org.sufficientlysecure.keychain.ui.util.Notify.Style;
-import org.sufficientlysecure.keychain.ui.util.recyclerview.DividerItemDecoration;
-import org.sufficientlysecure.keychain.util.Preferences;
-import org.sufficientlysecure.keychain.util.Preferences.CacheTTLPrefs;
-
-
-public class SettingsCacheTTLFragment extends Fragment {
-
- public static final String ARG_TTL_PREFS = "ttl_prefs";
-
- private CacheTTLListAdapter mAdapter;
-
- public static SettingsCacheTTLFragment newInstance(CacheTTLPrefs ttlPrefs) {
- Bundle args = new Bundle();
- args.putSerializable(ARG_TTL_PREFS, ttlPrefs);
-
- SettingsCacheTTLFragment fragment = new SettingsCacheTTLFragment();
- fragment.setArguments(args);
-
- return fragment;
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
- savedInstanceState) {
-
- return inflater.inflate(R.layout.settings_cache_ttl_fragment, null);
- }
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
-
- CacheTTLPrefs prefs = (CacheTTLPrefs) getArguments().getSerializable(ARG_TTL_PREFS);
-
- mAdapter = new CacheTTLListAdapter(prefs);
-
- RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.cache_ttl_recycler_view);
- recyclerView.setHasFixedSize(true);
- recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
- recyclerView.setAdapter(mAdapter);
- recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST,
- true));
-
- }
-
- private void savePreference() {
- FragmentActivity activity = getActivity();
- if (activity == null) {
- return;
- }
- CacheTTLPrefs prefs = mAdapter.getPrefs();
- Preferences.getPreferences(activity).setPassphraseCacheTtl(prefs);
- }
-
- public class CacheTTLListAdapter extends RecyclerView.Adapter {
-
- private final ArrayList mPositionIsChecked;
-
- public CacheTTLListAdapter(CacheTTLPrefs prefs) {
- this.mPositionIsChecked = new ArrayList<>();
- for (int ttlTime : CacheTTLPrefs.CACHE_TTLS) {
- mPositionIsChecked.add(prefs.ttlTimes.contains(ttlTime));
- }
-
- }
-
- public CacheTTLPrefs getPrefs() {
- ArrayList ttls = new ArrayList<>();
- for (int i = 0; i < mPositionIsChecked.size(); i++) {
- if (mPositionIsChecked.get(i)) {
- ttls.add(Integer.toString(CacheTTLPrefs.CACHE_TTLS.get(i)));
- }
- }
- return new CacheTTLPrefs(ttls);
- }
-
- @Override
- public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.settings_cache_ttl_item, parent, false);
- return new ViewHolder(view);
- }
-
- @Override
- public void onBindViewHolder(final ViewHolder holder, int position) {
- holder.bind(position);
- }
-
- @Override
- public int getItemCount() {
- return mPositionIsChecked.size();
- }
-
- public class ViewHolder extends RecyclerView.ViewHolder {
-
- CheckBox mChecked;
- TextView mTitle;
-
- public ViewHolder(View itemView) {
- super(itemView);
- mChecked = (CheckBox) itemView.findViewById(R.id.ttl_selected);
- mTitle = (TextView) itemView.findViewById(R.id.ttl_title);
-
- itemView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- mChecked.performClick();
- }
- });
- }
-
- public void bind(final int position) {
-
- int ttl = CacheTTLPrefs.CACHE_TTLS.get(position);
- boolean isChecked = mPositionIsChecked.get(position);
-
- mTitle.setText(CacheTTLPrefs.CACHE_TTL_NAMES.get(ttl));
- // avoid some ui flicker by skipping unnecessary updates
- if (mChecked.isChecked() != isChecked) {
- mChecked.setChecked(isChecked);
- }
-
- mChecked.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- setTtlChecked(position);
- savePreference();
- }
- });
-
- }
-
- private void setTtlChecked(int position) {
- boolean isChecked = mPositionIsChecked.get(position);
- int checkedItems = countCheckedItems();
-
- boolean isLastChecked = isChecked && checkedItems == 1;
- boolean isOneTooMany = !isChecked && checkedItems >= 3;
- if (isLastChecked) {
- Notify.create(getActivity(), R.string.settings_cache_ttl_at_least_one, Style.ERROR).show();
- } else if (isOneTooMany) {
- Notify.create(getActivity(), R.string.settings_cache_ttl_max_three, Style.ERROR).show();
- } else {
- mPositionIsChecked.set(position, !isChecked);
- }
- notifyItemChanged(position);
- }
-
- private int countCheckedItems() {
- int result = 0;
- for (boolean isChecked : mPositionIsChecked) {
- if (isChecked) {
- result += 1;
- }
- }
- return result;
- }
-
- }
-
- }
-}
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 efaabbad2..9cdbaa6c5 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
@@ -26,32 +26,36 @@ import android.support.v7.widget.AppCompatSpinner;
import android.util.AttributeSet;
import org.sufficientlysecure.keychain.R;
-import org.sufficientlysecure.keychain.util.Preferences;
-import org.sufficientlysecure.keychain.util.Preferences.CacheTTLPrefs;
public class CacheTTLSpinner extends AppCompatSpinner {
+ public static final int[] TTL_TIMES = {
+ 0,
+ 60 * 60,
+ 60 * 60 * 24,
+ Integer.MAX_VALUE
+ };
+ public static final int[] TTL_STRINGS = {
+ R.string.cache_ttl_lock_screen,
+ R.string.cache_ttl_one_hour,
+ R.string.cache_ttl_one_day,
+ R.string.cache_ttl_forever
+ };
public CacheTTLSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
- initView(context);
+ initView();
}
public CacheTTLSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
- initView(context);
+ initView();
}
- private void initView(Context context) {
-
- CacheTTLPrefs prefs = Preferences.getPreferences(context).getPassphraseCacheTtl();
- MatrixCursor cursor = new MatrixCursor(new String[] { "_id", "TTL", "description" }, 5);
- int i = 0;
- for (int ttl : CacheTTLPrefs.CACHE_TTLS) {
- if ( ! prefs.ttlTimes.contains(ttl)) {
- continue;
- }
- cursor.addRow(new Object[] { i++, ttl, getContext().getString(CacheTTLPrefs.CACHE_TTL_NAMES.get(ttl)) });
+ private void initView() {
+ MatrixCursor cursor = new MatrixCursor(new String[] { "_id", "TTL", "description" }, TTL_TIMES.length);
+ for (int i = 0; i < TTL_TIMES.length; i++) {
+ cursor.addRow(new Object[] { i, TTL_TIMES[i], getContext().getString(TTL_STRINGS[i]) });
}
setAdapter(new SimpleCursorAdapter(getContext(), R.layout.simple_item, cursor,
@@ -63,5 +67,4 @@ public class CacheTTLSpinner extends AppCompatSpinner {
Object item = getAdapter().getItem(selectedItemPosition);
return ((Cursor) item).getInt(1);
}
-
}
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 9c3edbd39..f36ab37aa 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java
@@ -19,6 +19,10 @@
package org.sufficientlysecure.keychain.util;
+import java.net.Proxy;
+import java.util.ArrayList;
+import java.util.ListIterator;
+
import android.accounts.Account;
import android.annotation.SuppressLint;
import android.content.ContentResolver;
@@ -31,21 +35,9 @@ import android.preference.PreferenceManager;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.Constants.Pref;
import org.sufficientlysecure.keychain.KeychainApplication;
-import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.keyimport.HkpKeyserverAddress;
import org.sufficientlysecure.keychain.service.KeyserverSyncAdapterService;
-import java.io.Serializable;
-import java.net.Proxy;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
-
/**
* Singleton Implementation of a Preference Helper
*/
@@ -307,67 +299,6 @@ public class Preferences {
!ContentResolver.getPeriodicSyncs(account, authority).isEmpty();
}
- public CacheTTLPrefs getPassphraseCacheTtl() {
- Set pref = mSharedPreferences.getStringSet(Constants.Pref.PASSPHRASE_CACHE_TTLS, null);
- if (pref == null) {
- return CacheTTLPrefs.getDefault();
- }
- return new CacheTTLPrefs(pref);
- }
-
- public void setPassphraseCacheTtl(CacheTTLPrefs prefs) {
- SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putStringSet(Constants.Pref.PASSPHRASE_CACHE_TTLS, prefs.getStringSet());
- editor.commit();
- }
-
- public static class CacheTTLPrefs implements Serializable {
- public static final Map CACHE_TTL_NAMES;
- public static final ArrayList CACHE_TTLS;
-
- static {
- HashMap cacheTtlNames = new HashMap<>();
- cacheTtlNames.put(0, R.string.cache_ttl_lock_screen);
- cacheTtlNames.put(60 * 10, R.string.cache_ttl_ten_minutes);
- cacheTtlNames.put(60 * 30, R.string.cache_ttl_thirty_minutes);
- cacheTtlNames.put(60 * 60, R.string.cache_ttl_one_hour);
- cacheTtlNames.put(60 * 60 * 3, R.string.cache_ttl_three_hours);
- cacheTtlNames.put(60 * 60 * 24, R.string.cache_ttl_one_day);
- cacheTtlNames.put(60 * 60 * 24 * 3, R.string.cache_ttl_three_days);
- cacheTtlNames.put(Integer.MAX_VALUE, R.string.cache_ttl_forever);
- CACHE_TTL_NAMES = Collections.unmodifiableMap(cacheTtlNames);
-
- CACHE_TTLS = new ArrayList<>(CacheTTLPrefs.CACHE_TTL_NAMES.keySet());
- Collections.sort(CACHE_TTLS);
- }
-
- public HashSet ttlTimes;
-
- public CacheTTLPrefs(Collection ttlStrings) {
- ttlTimes = new HashSet<>();
- for (String ttlString : ttlStrings) {
- ttlTimes.add(Integer.parseInt(ttlString));
- }
- }
-
- public HashSet getStringSet() {
- HashSet ttlTimeStrings = new HashSet<>();
- for (Integer ttlTime : ttlTimes) {
- ttlTimeStrings.add(Integer.toString(ttlTime));
- }
- return ttlTimeStrings;
- }
-
- public static CacheTTLPrefs getDefault() {
- ArrayList ttlStrings = new ArrayList<>();
- ttlStrings.add(Integer.toString(0));
- ttlStrings.add(Integer.toString(60 * 60));
- ttlStrings.add(Integer.toString(60 * 60 * 24));
- return new CacheTTLPrefs(ttlStrings);
- }
-
- }
-
// cloud prefs
public CloudSearchPrefs getCloudSearchPrefs() {
diff --git a/OpenKeychain/src/main/res/layout/settings_cache_ttl_fragment.xml b/OpenKeychain/src/main/res/layout/settings_cache_ttl_fragment.xml
deleted file mode 100644
index 4a34bc5bc..000000000
--- a/OpenKeychain/src/main/res/layout/settings_cache_ttl_fragment.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index 13484be6e..8b66b5f6b 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -20,7 +20,6 @@
"Apps"
"OpenPGP keyservers"
"SmartPGP: Trusted authorities"
- "Customize 'Remember' choices"
"Change Password"
"Share fingerprint with…"
"Share key with…"
@@ -164,7 +163,6 @@
"Encryption algorithm"
"Hash algorithm"
"Encrypt with password"
- "Customize 'Remember' choices"
"Remember passwords by subkey"
"Text compression"
"File compression"
@@ -1754,16 +1752,9 @@
"Edit Subkeys"
"Search for\n'%s'"
"until screen off"
- "for ten minutes"
- "for thirty minutes"
"for one hour"
- "for three hours"
"for one day"
- "for three days"
- "forever"
- "Pick up to three."
- "At least one item must be selected!"
- "Can\'t select more than three items!"
+ "until cleared"
"Remember"
"No PGP app was found on the security token"
"Install PGP?"
diff --git a/OpenKeychain/src/main/res/xml/passphrase_preferences.xml b/OpenKeychain/src/main/res/xml/passphrase_preferences.xml
index 0d9db1d51..f60090e2b 100644
--- a/OpenKeychain/src/main/res/xml/passphrase_preferences.xml
+++ b/OpenKeychain/src/main/res/xml/passphrase_preferences.xml
@@ -1,8 +1,5 @@
-