From 03b4907311da2ae2b1ddb15f5e95b7c1a840e45e Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Wed, 7 Mar 2018 15:20:09 -0300
Subject: [PATCH] Disable settings until they have been loaded

In practise, this is not noticeable in the UI.
Only when the database is congested, it should become visible and
prevent a crash when the sound setting is clicked.
---
 .../briar/android/settings/SettingsFragment.java  | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java
index d781e6bffb..dd049fbcad 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java
@@ -128,6 +128,8 @@ public class SettingsFragment extends PreferenceFragmentCompat
 				"pref_key_notify_lock_screen");
 		notifySound = findPreference("pref_key_notify_sound");
 
+		setSettingsEnabled(false);
+
 		enableBluetooth.setOnPreferenceChangeListener(this);
 		torNetwork.setOnPreferenceChangeListener(this);
 		notifyPrivateMessages.setOnPreferenceChangeListener(this);
@@ -248,9 +250,22 @@ public class SettingsFragment extends PreferenceFragmentCompat
 				text = getString(R.string.notify_sound_setting_disabled);
 			}
 			notifySound.setSummary(text);
+			setSettingsEnabled(true);
 		});
 	}
 
+	private void setSettingsEnabled(boolean enabled) {
+		enableBluetooth.setEnabled(enabled);
+		torNetwork.setEnabled(enabled);
+		notifyPrivateMessages.setEnabled(enabled);
+		notifyGroupMessages.setEnabled(enabled);
+		notifyForumPosts.setEnabled(enabled);
+		notifyBlogPosts.setEnabled(enabled);
+		notifyVibration.setEnabled(enabled);
+		notifyLockscreen.setEnabled(enabled);
+		notifySound.setEnabled(enabled);
+	}
+
 	private void triggerFeedback() {
 		androidExecutor.runOnBackgroundThread(() -> ACRA.getErrorReporter()
 				.handleException(new UserFeedback(), false));
-- 
GitLab