diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsActivity.java
index 44917d12e..a26b47929 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsActivity.java
@@ -10,6 +10,7 @@ import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.activity.BriarActivity;
+import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
import javax.inject.Inject;
@@ -19,7 +20,8 @@ import androidx.lifecycle.ViewModelProviders;
import static org.briarproject.briar.android.conversation.ConversationActivity.CONTACT_ID;
-public class ConversationSettingsActivity extends BriarActivity {
+public class ConversationSettingsActivity extends BriarActivity implements
+ BaseFragmentListener {
@Inject
ViewModelProvider.Factory viewModelFactory;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsFragment.java
index c57b97690..cd3de1883 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsFragment.java
@@ -2,37 +2,40 @@ package org.briarproject.briar.android.conversation;
import android.content.Context;
import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Switch;
import org.briarproject.bramble.api.db.DatabaseExecutor;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.TransactionManager;
+import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.briar.R;
+import org.briarproject.briar.android.fragment.BaseFragment;
import org.briarproject.briar.api.autodelete.AutoDeleteManager;
import java.util.concurrent.Executor;
import java.util.logging.Logger;
+import javax.annotation.Nullable;
import javax.inject.Inject;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelProviders;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.SwitchPreference;
import static java.util.logging.Level.WARNING;
import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.briar.android.util.UiUtils.observeOnce;
import static org.briarproject.briar.api.autodelete.AutoDeleteConstants.NO_AUTO_DELETE_TIMER;
-public class ConversationSettingsFragment extends PreferenceFragmentCompat
- implements Preference.OnPreferenceChangeListener {
+@MethodsNotNullByDefault
+@ParametersNotNullByDefault
+public class ConversationSettingsFragment extends BaseFragment {
- private static final String DM_ENABLE = "pref_key_disappearing_messages";
- private static final String DM_EXPLANATION =
- "pref_key_disappearing_messages_explanation";
- private static final String DM_LEARN_MORE =
- "pref_key_disappearing_messages_learn_more";
+ public static final String TAG =
+ ConversationSettingsFragment.class.getName();
private static final Logger LOG =
Logger.getLogger(ConversationSettingsFragment.class.getName());
@@ -52,10 +55,15 @@ public class ConversationSettingsFragment extends PreferenceFragmentCompat
private ConversationSettingsActivity listener;
- private SwitchPreference enableDisappearingMessages;
+ private Switch switchDisappearingMessages;
private volatile boolean disappearingMessages = false;
+ @Override
+ public String getUniqueTag() {
+ return TAG;
+ }
+
@Override
public void onAttach(Context context) {
super.onAttach(context);
@@ -64,15 +72,25 @@ public class ConversationSettingsFragment extends PreferenceFragmentCompat
}
@Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- addPreferencesFromResource(R.xml.conversation_settings);
+ public View onCreateView(LayoutInflater inflater,
+ @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ View contentView =
+ inflater.inflate(R.layout.fragment_conversation_settings,
+ container, false);
- enableDisappearingMessages = findPreference(DM_ENABLE);
+ switchDisappearingMessages =
+ contentView.findViewById(R.id.switchDisappearingMessages);
- enableDisappearingMessages.setOnPreferenceChangeListener(this);
+ switchDisappearingMessages
+ .setOnCheckedChangeListener((button, value) -> {
+ viewModel.setAutoDeleteTimerEnabled(value);
+ });
viewModel = ViewModelProviders.of(requireActivity(), viewModelFactory)
.get(ConversationViewModel.class);
+
+ return contentView;
}
private ConversationViewModel viewModel;
@@ -80,14 +98,10 @@ public class ConversationSettingsFragment extends PreferenceFragmentCompat
@Override
public void onStart() {
super.onStart();
- setSettingsEnabled(false);
+ switchDisappearingMessages.setEnabled(false);
loadSettings();
}
- private void setSettingsEnabled(boolean enabled) {
- enableDisappearingMessages.setEnabled(enabled);
- }
-
private void loadSettings() {
observeOnce(viewModel.getContact(), this, c -> {
dbExecutor.execute(() -> {
@@ -107,18 +121,9 @@ public class ConversationSettingsFragment extends PreferenceFragmentCompat
private void displaySettings() {
listener.runOnUiThreadUnlessDestroyed(() -> {
- enableDisappearingMessages.setChecked(disappearingMessages);
- setSettingsEnabled(true);
+ switchDisappearingMessages.setChecked(disappearingMessages);
+ switchDisappearingMessages.setEnabled(true);
});
}
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- if (preference == enableDisappearingMessages) {
- boolean dmSetting = (Boolean) newValue;
- viewModel.setAutoDeleteTimerEnabled(dmSetting);
- }
- return true;
- }
-
}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/LinkPreference.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/LinkPreference.java
deleted file mode 100644
index 0ee8ce861..000000000
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/LinkPreference.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.briarproject.briar.android.conversation;
-
-import android.content.Context;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.style.URLSpan;
-import android.util.AttributeSet;
-import android.widget.TextView;
-
-import org.briarproject.briar.R;
-
-import androidx.preference.Preference;
-import androidx.preference.PreferenceViewHolder;
-
-class LinkPreference extends Preference {
-
- public LinkPreference(Context context,
- AttributeSet attrs, int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- init();
- }
-
- public LinkPreference(Context context, AttributeSet attrs,
- int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- init();
- }
-
- public LinkPreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- }
-
- public LinkPreference(Context context) {
- super(context);
- init();
- }
-
- private void init() {
- setLayoutResource(
- R.layout.conversation_settings_disappearing_messages_learn_more);
- }
-
- @Override
- public void onBindViewHolder(PreferenceViewHolder holder) {
- super.onBindViewHolder(holder);
- TextView link = (TextView) holder.findViewById(R.id.link);
-
- SpannableStringBuilder ssb = new SpannableStringBuilder();
- ssb.append(link.getText());
- ssb.setSpan(new URLSpan("#"), 0, ssb.length(),
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
- link.setText(ssb, TextView.BufferType.SPANNABLE);
- }
-
-}
diff --git a/briar-android/src/main/res/layout/fragment_conversation_settings.xml b/briar-android/src/main/res/layout/fragment_conversation_settings.xml
new file mode 100644
index 000000000..377282d71
--- /dev/null
+++ b/briar-android/src/main/res/layout/fragment_conversation_settings.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/briar-android/src/main/res/xml/conversation_settings.xml b/briar-android/src/main/res/xml/conversation_settings.xml
deleted file mode 100644
index e59423973..000000000
--- a/briar-android/src/main/res/xml/conversation_settings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-