1package eu.siacs.conversations.ui.activity;
2
3import android.app.Notification;
4import android.os.Bundle;
5
6import androidx.databinding.DataBindingUtil;
7import androidx.preference.PreferenceFragmentCompat;
8
9import com.google.common.collect.ImmutableSet;
10
11import eu.siacs.conversations.R;
12import eu.siacs.conversations.databinding.ActivitySettingsBinding;
13import eu.siacs.conversations.ui.Activities;
14import eu.siacs.conversations.ui.XmppActivity;
15import eu.siacs.conversations.ui.fragment.settings.MainSettingsFragment;
16import eu.siacs.conversations.ui.fragment.settings.NotificationsSettingsFragment;
17import eu.siacs.conversations.ui.fragment.settings.XmppPreferenceFragment;
18
19import java.util.Collections;
20
21public class SettingsActivity extends XmppActivity {
22
23 @Override
24 protected void refreshUiReal() {}
25
26 @Override
27 protected void onBackendConnected() {
28 final var fragmentManager = getSupportFragmentManager();
29 final var currentFragment = fragmentManager.findFragmentById(R.id.fragment_container);
30 if (currentFragment instanceof XmppPreferenceFragment xmppPreferenceFragment) {
31 xmppPreferenceFragment.onBackendConnected();
32 }
33 }
34
35 @Override
36 protected void onCreate(final Bundle savedInstanceState) {
37 super.onCreate(savedInstanceState);
38 final ActivitySettingsBinding binding =
39 DataBindingUtil.setContentView(this, R.layout.activity_settings);
40 setSupportActionBar(binding.materialToolbar);
41 Activities.setStatusAndNavigationBarColors(this, binding.getRoot());
42
43 final var intent = getIntent();
44 final var categories = intent == null ? Collections.emptySet() : intent.getCategories();
45 final PreferenceFragmentCompat preferenceFragment;
46 if (ImmutableSet.of(Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES)
47 .equals(categories)) {
48 preferenceFragment = new NotificationsSettingsFragment();
49 } else {
50 preferenceFragment = new MainSettingsFragment();
51 }
52
53 final var fragmentManager = getSupportFragmentManager();
54 final var currentFragment = fragmentManager.findFragmentById(R.id.fragment_container);
55 if (currentFragment == null) {
56 fragmentManager
57 .beginTransaction()
58 .replace(R.id.fragment_container, preferenceFragment)
59 .commit();
60 }
61 binding.materialToolbar.setNavigationOnClickListener(
62 view -> {
63 if (fragmentManager.getBackStackEntryCount() == 0) {
64 finish();
65 } else {
66 fragmentManager.popBackStack();
67 }
68 });
69 }
70}