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/org/sufficientlysecure/keychain/ui | |
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/org/sufficientlysecure/keychain/ui')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsCacheTTLFragment.java | 45 |
1 files changed, 36 insertions, 9 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); |