diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2015-11-17 14:33:08 +0100 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2016-01-06 16:24:13 +0100 |
commit | 0c7c58f3764217eaf32656679530f86618a6e198 (patch) | |
tree | 9aabd19ef0347c7527edd910c2047c871f1b8d2e /OpenKeychain/src/main/java | |
parent | 1754a88ac39e061dd36afd72f8a04e8d5e59751c (diff) | |
download | open-keychain-0c7c58f3764217eaf32656679530f86618a6e198.tar.gz open-keychain-0c7c58f3764217eaf32656679530f86618a6e198.tar.bz2 open-keychain-0c7c58f3764217eaf32656679530f86618a6e198.zip |
inline-ttl: save changes in ttl settings
Diffstat (limited to 'OpenKeychain/src/main/java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsCacheTTLFragment.java | 45 | ||||
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java | 40 |
2 files changed, 60 insertions, 25 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsCacheTTLFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsCacheTTLFragment.java index b383082ed..5faed81ec 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsCacheTTLFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsCacheTTLFragment.java @@ -19,10 +19,10 @@ package org.sufficientlysecure.keychain.ui; import java.util.ArrayList; -import java.util.Collections; 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; @@ -37,6 +37,7 @@ 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; @@ -80,8 +81,13 @@ public class SettingsCacheTTLFragment extends Fragment { } - private void saveKeyserverList() { - // Preferences.getPreferences(getActivity()).setKeyServers(servers); + 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<CacheTTLListAdapter.ViewHolder> { @@ -100,6 +106,20 @@ public class SettingsCacheTTLFragment extends Fragment { } + public CacheTTLPrefs getPrefs() { + ArrayList<String> ttls = new ArrayList<>(); + int defaultTtl = 0; + for (int i = 0; i < mPositionIsChecked.size(); i++) { + if (mPositionIsChecked.get(i)) { + ttls.add(Integer.toString(CacheTTLPrefs.CACHE_TTLS.get(i))); + if (i == mDefaultPosition) { + defaultTtl = CacheTTLPrefs.CACHE_TTLS.get(i); + } + } + } + return new CacheTTLPrefs(ttls, defaultTtl); + } + @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) @@ -144,21 +164,28 @@ public class SettingsCacheTTLFragment extends Fragment { boolean isDefault = position == mDefaultPosition; mTitle.setText(CacheTTLPrefs.CACHE_TTL_NAMES.get(ttl)); - mChecked.setChecked(isChecked); + // avoid some ui flicker by skipping unnecessary updates + if (mChecked.isChecked() != isChecked) { + mChecked.setChecked(isChecked); + } + if (mIsDefault.isChecked() != isDefault) { + mIsDefault.setChecked(isDefault); + } mIsDefault.setEnabled(isChecked); - mIsDefault.setChecked(isDefault); mChecked.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { setTtlChecked(position); + savePreference(); } }); mIsDefault.setOnClickListener(!isChecked ? null : new OnClickListener() { @Override public void onClick(View v) { - setDefault(position); + setTtlDefault(position); + savePreference(); } }); @@ -191,7 +218,7 @@ public class SettingsCacheTTLFragment extends Fragment { int i = mDefaultPosition; while (--i >= 0) { if (mPositionIsChecked.get(i)) { - setDefault(i); + setTtlDefault(i); return; } } @@ -200,7 +227,7 @@ public class SettingsCacheTTLFragment extends Fragment { i = mDefaultPosition; while (++i < mPositionIsChecked.size()) { if (mPositionIsChecked.get(i)) { - setDefault(i); + setTtlDefault(i); return; } } @@ -210,7 +237,7 @@ public class SettingsCacheTTLFragment extends Fragment { } - private void setDefault(int position) { + private void setTtlDefault(int position) { int previousDefaultPosition = mDefaultPosition; mDefaultPosition = position; notifyItemChanged(previousDefaultPosition); 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 2b3c3350a..8074d8eb1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java @@ -98,21 +98,6 @@ public class Preferences { editor.commit(); } - public CacheTTLPrefs getPassphraseCacheTtl() { - Set<String> pref = mSharedPreferences.getStringSet(Constants.Pref.PASSPHRASE_CACHE_TTLS, null); - if (pref == null) { - return CacheTTLPrefs.getDefault(); - } - int def = mSharedPreferences.getInt(Pref.PASSPHRASE_CACHE_DEFAULT, 0); - return new CacheTTLPrefs(pref, def); - } - - public void setPassphraseCacheTtl(int value) { - SharedPreferences.Editor editor = mSharedPreferences.edit(); - editor.putInt(Constants.Pref.PASSPHRASE_CACHE_TTLS, value); - editor.commit(); - } - public boolean getPassphraseCacheSubs() { return mSharedPreferences.getBoolean(Pref.PASSPHRASE_CACHE_SUBS, false); } @@ -315,6 +300,22 @@ public class Preferences { } + public CacheTTLPrefs getPassphraseCacheTtl() { + Set<String> pref = mSharedPreferences.getStringSet(Constants.Pref.PASSPHRASE_CACHE_TTLS, null); + if (pref == null) { + return CacheTTLPrefs.getDefault(); + } + int def = mSharedPreferences.getInt(Pref.PASSPHRASE_CACHE_DEFAULT, 300); + return new CacheTTLPrefs(pref, def); + } + + public void setPassphraseCacheTtl(CacheTTLPrefs prefs) { + SharedPreferences.Editor editor = mSharedPreferences.edit(); + editor.putStringSet(Constants.Pref.PASSPHRASE_CACHE_TTLS, prefs.getStringSet()); + editor.putInt(Pref.PASSPHRASE_CACHE_DEFAULT, prefs.defaultTtl); + editor.commit(); + } + public static class CacheTTLPrefs implements Serializable { public static final Map<Integer,Integer> CACHE_TTL_NAMES; public static final ArrayList<Integer> CACHE_TTLS; @@ -331,7 +332,6 @@ public class Preferences { Collections.sort(CACHE_TTLS); } - public HashSet<Integer> ttlTimes; public int defaultTtl; @@ -343,6 +343,14 @@ public class Preferences { } } + public HashSet<String> getStringSet() { + HashSet<String> ttlTimeStrings = new HashSet<>(); + for (Integer ttlTime : ttlTimes) { + ttlTimeStrings.add(Integer.toString(ttlTime)); + } + return ttlTimeStrings; + } + public static CacheTTLPrefs getDefault() { ArrayList<String> ttlStrings = new ArrayList<>(); ttlStrings.add(Integer.toString(60 * 5)); |