Slightly refactor SettingsActivity
This commit is contained in:
parent
92a2a30619
commit
c88e704af1
|
@ -15,7 +15,6 @@ import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.preference.EditTextPreference;
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceFragmentCompat;
|
import androidx.preference.PreferenceFragmentCompat;
|
||||||
import androidx.preference.PreferenceGroup;
|
import androidx.preference.PreferenceGroup;
|
||||||
|
@ -27,16 +26,14 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import dummydomain.yetanothercallblocker.preference.IntListPreference;
|
|
||||||
import dummydomain.yetanothercallblocker.utils.DebuggingUtils;
|
import dummydomain.yetanothercallblocker.utils.DebuggingUtils;
|
||||||
import dummydomain.yetanothercallblocker.utils.FileUtils;
|
import dummydomain.yetanothercallblocker.utils.FileUtils;
|
||||||
import dummydomain.yetanothercallblocker.utils.PackageManagerUtils;
|
import dummydomain.yetanothercallblocker.utils.PackageManagerUtils;
|
||||||
import dummydomain.yetanothercallblocker.work.UpdateScheduler;
|
import dummydomain.yetanothercallblocker.work.UpdateScheduler;
|
||||||
|
|
||||||
import static java.util.Objects.requireNonNull;
|
|
||||||
|
|
||||||
public class SettingsActivity extends AppCompatActivity
|
public class SettingsActivity extends AppCompatActivity
|
||||||
implements PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
|
implements PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
|
||||||
|
|
||||||
|
@ -183,9 +180,7 @@ public class SettingsActivity extends AppCompatActivity
|
||||||
private void initRootScreen(String rootKey) {
|
private void initRootScreen(String rootKey) {
|
||||||
if (rootKey != null) return;
|
if (rootKey != null) return;
|
||||||
|
|
||||||
SwitchPreferenceCompat incomingCallNotificationPref =
|
setPrefChangeListener(Settings.PREF_INCOMING_CALL_NOTIFICATIONS, (pref, newValue) -> {
|
||||||
requireNonNull(findPreference(Settings.PREF_INCOMING_CALL_NOTIFICATIONS));
|
|
||||||
incomingCallNotificationPref.setOnPreferenceChangeListener((preference, newValue) -> {
|
|
||||||
if (Boolean.TRUE.equals(newValue)) {
|
if (Boolean.TRUE.equals(newValue)) {
|
||||||
PermissionHelper.checkPermissions(requireActivity(), true, false, false);
|
PermissionHelper.checkPermissions(requireActivity(), true, false, false);
|
||||||
}
|
}
|
||||||
|
@ -198,15 +193,12 @@ public class SettingsActivity extends AppCompatActivity
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
requireNonNull((SwitchPreferenceCompat) findPreference(Settings.PREF_BLOCK_NEGATIVE_SIA_NUMBERS))
|
setPrefChangeListener(Settings.PREF_BLOCK_NEGATIVE_SIA_NUMBERS, callBlockingListener);
|
||||||
.setOnPreferenceChangeListener(callBlockingListener);
|
setPrefChangeListener(Settings.PREF_BLOCK_HIDDEN_NUMBERS, callBlockingListener);
|
||||||
requireNonNull((SwitchPreferenceCompat) findPreference(Settings.PREF_BLOCK_HIDDEN_NUMBERS))
|
setPrefChangeListener(Settings.PREF_BLOCK_BLACKLISTED, callBlockingListener);
|
||||||
.setOnPreferenceChangeListener(callBlockingListener);
|
|
||||||
requireNonNull((SwitchPreferenceCompat) findPreference(Settings.PREF_BLOCK_BLACKLISTED))
|
|
||||||
.setOnPreferenceChangeListener(callBlockingListener);
|
|
||||||
|
|
||||||
SwitchPreferenceCompat callScreeningPref =
|
SwitchPreferenceCompat callScreeningPref =
|
||||||
requireNonNull(findPreference(PREF_USE_CALL_SCREENING_SERVICE));
|
requirePreference(PREF_USE_CALL_SCREENING_SERVICE);
|
||||||
callScreeningPref.setChecked(PermissionHelper.isCallScreeningHeld(requireContext()));
|
callScreeningPref.setChecked(PermissionHelper.isCallScreeningHeld(requireContext()));
|
||||||
callScreeningPref.setOnPreferenceChangeListener((preference, newValue) -> {
|
callScreeningPref.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
if (Boolean.TRUE.equals(newValue)) {
|
if (Boolean.TRUE.equals(newValue)) {
|
||||||
|
@ -228,9 +220,7 @@ public class SettingsActivity extends AppCompatActivity
|
||||||
callScreeningPref.setVisible(false);
|
callScreeningPref.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
SwitchPreferenceCompat monitoringPref =
|
setPrefChangeListener(Settings.PREF_USE_MONITORING_SERVICE, (pref, newValue) -> {
|
||||||
requireNonNull(findPreference(Settings.PREF_USE_MONITORING_SERVICE));
|
|
||||||
monitoringPref.setOnPreferenceChangeListener((preference, newValue) -> {
|
|
||||||
boolean enabled = Boolean.TRUE.equals(newValue);
|
boolean enabled = Boolean.TRUE.equals(newValue);
|
||||||
Context context = requireContext();
|
Context context = requireContext();
|
||||||
|
|
||||||
|
@ -246,7 +236,7 @@ public class SettingsActivity extends AppCompatActivity
|
||||||
});
|
});
|
||||||
|
|
||||||
SwitchPreferenceCompat nonPersistentAutoUpdatePref =
|
SwitchPreferenceCompat nonPersistentAutoUpdatePref =
|
||||||
requireNonNull(findPreference(PREF_AUTO_UPDATE_ENABLED));
|
requirePreference(PREF_AUTO_UPDATE_ENABLED);
|
||||||
nonPersistentAutoUpdatePref.setChecked(updateScheduler.isAutoUpdateScheduled());
|
nonPersistentAutoUpdatePref.setChecked(updateScheduler.isAutoUpdateScheduled());
|
||||||
nonPersistentAutoUpdatePref.setOnPreferenceChangeListener((preference, newValue) -> {
|
nonPersistentAutoUpdatePref.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
if (Boolean.TRUE.equals(newValue)) {
|
if (Boolean.TRUE.equals(newValue)) {
|
||||||
|
@ -257,41 +247,35 @@ public class SettingsActivity extends AppCompatActivity
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
SwitchPreferenceCompat useContactsPref =
|
setPrefChangeListener(Settings.PREF_USE_CONTACTS, (preference, newValue) -> {
|
||||||
requireNonNull(findPreference(Settings.PREF_USE_CONTACTS));
|
|
||||||
useContactsPref.setOnPreferenceChangeListener((preference, newValue) -> {
|
|
||||||
if (Boolean.TRUE.equals(newValue)) {
|
if (Boolean.TRUE.equals(newValue)) {
|
||||||
PermissionHelper.checkPermissions(requireActivity(), false, false, true);
|
PermissionHelper.checkPermissions(requireActivity(), false, false, true);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
IntListPreference uiModePref = requireNonNull(findPreference(Settings.PREF_UI_MODE));
|
setPrefChangeListener(Settings.PREF_UI_MODE, (preference, newValue) -> {
|
||||||
uiModePref.setOnPreferenceChangeListener((preference, newValue) -> {
|
|
||||||
App.setUiMode(Integer.parseInt((String) newValue));
|
App.setUiMode(Integer.parseInt((String) newValue));
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Preference notificationChannelSettings = requireNonNull(
|
requirePreference(PREF_NOTIFICATION_CHANNEL_SETTINGS)
|
||||||
findPreference(PREF_NOTIFICATION_CHANNEL_SETTINGS));
|
.setOnPreferenceClickListener(preference -> {
|
||||||
notificationChannelSettings.setOnPreferenceClickListener(preference -> {
|
Intent intent = new Intent(
|
||||||
Intent intent = new Intent(
|
android.provider.Settings.ACTION_APP_NOTIFICATION_SETTINGS);
|
||||||
android.provider.Settings.ACTION_APP_NOTIFICATION_SETTINGS);
|
intent.putExtra(android.provider.Settings.EXTRA_APP_PACKAGE,
|
||||||
intent.putExtra(android.provider.Settings.EXTRA_APP_PACKAGE,
|
BuildConfig.APPLICATION_ID);
|
||||||
BuildConfig.APPLICATION_ID);
|
startActivity(intent);
|
||||||
startActivity(intent);
|
return true;
|
||||||
return true;
|
});
|
||||||
});
|
|
||||||
|
|
||||||
Preference legacyCategory = requireNonNull(findPreference(PREF_CATEGORY_NOTIFICATIONS_LEGACY));
|
requirePreference(PREF_CATEGORY_NOTIFICATIONS_LEGACY).setVisible(false);
|
||||||
legacyCategory.setVisible(false);
|
|
||||||
} else {
|
} else {
|
||||||
Preference modernCategory = requireNonNull(findPreference(PREF_CATEGORY_NOTIFICATIONS));
|
requirePreference(PREF_CATEGORY_NOTIFICATIONS).setVisible(false);
|
||||||
modernCategory.setVisible(false);
|
|
||||||
|
|
||||||
SwitchPreferenceCompat blockedCallNotificationsPref =
|
SwitchPreferenceCompat blockedCallNotificationsPref =
|
||||||
requireNonNull(findPreference(PREF_NOTIFICATIONS_BLOCKED_NON_PERSISTENT));
|
requirePreference(PREF_NOTIFICATIONS_BLOCKED_NON_PERSISTENT);
|
||||||
blockedCallNotificationsPref.setChecked(
|
blockedCallNotificationsPref.setChecked(
|
||||||
App.getSettings().getNotificationsForBlockedCalls());
|
App.getSettings().getNotificationsForBlockedCalls());
|
||||||
blockedCallNotificationsPref.setOnPreferenceChangeListener((pref, newValue) -> {
|
blockedCallNotificationsPref.setOnPreferenceChangeListener((pref, newValue) -> {
|
||||||
|
@ -331,8 +315,7 @@ public class SettingsActivity extends AppCompatActivity
|
||||||
+ ". " + getString(R.string.country_codes_info_summary_addition,
|
+ ". " + getString(R.string.country_codes_info_summary_addition,
|
||||||
App.getSettings().getCachedAutoDetectedCountryCode());
|
App.getSettings().getCachedAutoDetectedCountryCode());
|
||||||
|
|
||||||
Preference countryCodesInfoPreference
|
Preference countryCodesInfoPreference = requirePreference(PREF_COUNTRY_CODES_INFO);
|
||||||
= requireNonNull(findPreference(PREF_COUNTRY_CODES_INFO));
|
|
||||||
countryCodesInfoPreference.setSummary(countryCodesExplanationSummary);
|
countryCodesInfoPreference.setSummary(countryCodesExplanationSummary);
|
||||||
countryCodesInfoPreference.setOnPreferenceClickListener(preference -> {
|
countryCodesInfoPreference.setOnPreferenceClickListener(preference -> {
|
||||||
new AlertDialog.Builder(requireActivity())
|
new AlertDialog.Builder(requireActivity())
|
||||||
|
@ -355,15 +338,11 @@ public class SettingsActivity extends AppCompatActivity
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
EditTextPreference countryCodePreference
|
setPrefChangeListener(Settings.PREF_COUNTRY_CODE_OVERRIDE, countryCodeChangeListener);
|
||||||
= requireNonNull(findPreference(Settings.PREF_COUNTRY_CODE_OVERRIDE));
|
setPrefChangeListener(Settings.PREF_COUNTRY_CODE_FOR_REVIEWS_OVERRIDE,
|
||||||
countryCodePreference.setOnPreferenceChangeListener(countryCodeChangeListener);
|
countryCodeChangeListener);
|
||||||
|
|
||||||
EditTextPreference countryCodeForReviewsPreference
|
requirePreference(PREF_EXPORT_LOGCAT)
|
||||||
= requireNonNull(findPreference(Settings.PREF_COUNTRY_CODE_FOR_REVIEWS_OVERRIDE));
|
|
||||||
countryCodeForReviewsPreference.setOnPreferenceChangeListener(countryCodeChangeListener);
|
|
||||||
|
|
||||||
requireNonNull((Preference) findPreference(PREF_EXPORT_LOGCAT))
|
|
||||||
.setOnPreferenceClickListener(preference -> {
|
.setOnPreferenceClickListener(preference -> {
|
||||||
exportLogcat();
|
exportLogcat();
|
||||||
return true;
|
return true;
|
||||||
|
@ -393,5 +372,17 @@ public class SettingsActivity extends AppCompatActivity
|
||||||
FileUtils.shareFile(activity, new File(path));
|
FileUtils.shareFile(activity, new File(path));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setPrefChangeListener(@NonNull CharSequence key,
|
||||||
|
Preference.OnPreferenceChangeListener listener) {
|
||||||
|
requirePreference(key).setOnPreferenceChangeListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
private <T extends Preference> T requirePreference(@NonNull CharSequence key) {
|
||||||
|
return Objects.requireNonNull(findPreference(key));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue