SettingsActivity.java

 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}