aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-11-17 14:33:08 +0100
committerVincent Breitmoser <valodim@mugenguild.com>2016-01-06 16:24:13 +0100
commit0c7c58f3764217eaf32656679530f86618a6e198 (patch)
tree9aabd19ef0347c7527edd910c2047c871f1b8d2e /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui
parent1754a88ac39e061dd36afd72f8a04e8d5e59751c (diff)
downloadopen-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.java45
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);