From 094924cd1c6cb4810dfc22818aab3bd6059c3ea3 Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Tue, 12 Dec 2017 21:55:34 +0100 Subject: [PATCH] Refresh the key profile list on pref_issuer changes Looks like 6b56a24c274994135fac95ad03678b4c668d2db3 introduced a regression after all --- .../main/java/me/impy/aegis/MainActivity.java | 8 +++-- .../me/impy/aegis/PreferencesActivity.java | 31 ++++++++++++++----- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/me/impy/aegis/MainActivity.java b/app/src/main/java/me/impy/aegis/MainActivity.java index 84bfcf01..21a75917 100644 --- a/app/src/main/java/me/impy/aegis/MainActivity.java +++ b/app/src/main/java/me/impy/aegis/MainActivity.java @@ -147,14 +147,16 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter } private void onPreferencesResult(int resultCode, Intent data) { - if (resultCode != RESULT_OK) { - return; + // refresh the entire key profile list if needed + if (data.getBooleanExtra("needsRefresh", false)) { + _keyProfileAdapter.notifyDataSetChanged(); } - // TODO: create a custom layout to show a message AND a checkbox + // perform any pending actions int action = data.getIntExtra("action", -1); switch (action) { case PreferencesActivity.ACTION_EXPORT: + // TODO: create a custom layout to show a message AND a checkbox final boolean[] checked = {true}; AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this) .setTitle("Export the database") diff --git a/app/src/main/java/me/impy/aegis/PreferencesActivity.java b/app/src/main/java/me/impy/aegis/PreferencesActivity.java index 147c4530..fa7fde1e 100644 --- a/app/src/main/java/me/impy/aegis/PreferencesActivity.java +++ b/app/src/main/java/me/impy/aegis/PreferencesActivity.java @@ -1,6 +1,5 @@ package me.impy.aegis; -import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; @@ -28,13 +27,26 @@ public class PreferencesActivity extends AppCompatActivity { } public static class PreferencesFragment extends PreferenceFragment { + private Intent _result = new Intent(); + + private void setResult() { + getActivity().setResult(RESULT_OK, _result); + } + + private void finish() { + setResult(); + getActivity().finish(); + } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); - final Preference nightModePreference = findPreference("pref_night_mode"); + // set the result intent in advance + setResult(); + + Preference nightModePreference = findPreference("pref_night_mode"); nightModePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { @@ -47,12 +59,17 @@ public class PreferencesActivity extends AppCompatActivity { exportPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - Intent intent = new Intent(); - intent.putExtra("action", ACTION_EXPORT); + _result.putExtra("action", ACTION_EXPORT); + finish(); + return true; + } + }); - Activity activity = getActivity(); - activity.setResult(RESULT_OK, intent); - activity.finish(); + Preference issuerPreference = findPreference("pref_issuer"); + issuerPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + _result.putExtra("needsRefresh", true); return true; } });