This repository has been archived on 2025-09-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
android_packages_apps_Cherish/src/com/cherish/settings/fragments/RecentsSettings.java
SpiritCroc a8ff719262 Slim recents [2/3]
@SKULSHADY: Cleanup, fixes and adapt for SettingsPreferenceFragment
@rohanpurohit: bringup to 10

Change-Id: I7fa5703534c9eb76a555db9a6d3349cc2b6a2b2d
Signed-off-by: rohan <purohit.rohan@gmail.com>
2020-04-28 17:25:49 +07:00

128 lines
5.0 KiB
Java

package com.cherish.settings.fragments;
import com.android.internal.logging.nano.MetricsProto;
import android.app.Activity;
import android.content.Context;
import android.content.ContentResolver;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.SystemProperties;
import android.os.UserHandle;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceCategory;
import androidx.preference.Preference.OnPreferenceChangeListener;
import androidx.preference.SwitchPreference;
import android.provider.Settings;
import com.android.settings.R;
import java.util.Arrays;
import java.util.HashSet;
import com.cherish.settings.preferences.SystemSettingMasterSwitchPreference;
import com.android.settings.SettingsPreferenceFragment;
public class RecentsSettings extends SettingsPreferenceFragment implements
OnPreferenceChangeListener {
private static final String PREF_STOCK_RECENTS_CATEGORY = "stock_recents_category";
private static final String PREF_ALTERNATIVE_RECENTS_CATEGORY = "alternative_recents_category";
private static final String PREF_SWIPE_UP_ENABLED = "swipe_up_enabled_warning";
private PreferenceCategory mStockRecentsCategory;
private PreferenceCategory mAlternativeRecentsCategory;
private Context mContext;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.cherish_settings_recents);
ContentResolver resolver = getActivity().getContentResolver();
mStockRecentsCategory = (PreferenceCategory) findPreference(PREF_STOCK_RECENTS_CATEGORY);
mAlternativeRecentsCategory =
(PreferenceCategory) findPreference(PREF_ALTERNATIVE_RECENTS_CATEGORY);
// Alternative recents en-/disabling
Preference.OnPreferenceChangeListener alternativeRecentsChangeListener =
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
updateDependencies(preference, (Boolean) newValue);
return true;
}
};
for (int i = 0; i < mAlternativeRecentsCategory.getPreferenceCount(); i++) {
Preference preference = mAlternativeRecentsCategory.getPreference(i);
if (preference instanceof SystemSettingMasterSwitchPreference) {
preference.setOnPreferenceChangeListener(alternativeRecentsChangeListener);
}
}
updateDependencies();
// Warning for alternative recents when gesture navigation is enabled,
// which directly controls quickstep (launcher) recents.
final int navigationMode = getActivity().getResources()
.getInteger(com.android.internal.R.integer.config_navBarInteractionMode);
// config_navBarInteractionMode:
// 0: 3 button mode (supports slim recents)
// 1: 2 button mode (currently does not support alternative recents)
// 2: gesture only (currently does not support alternative recents)
if (navigationMode != 0) {
for (int i = 0; i < mAlternativeRecentsCategory.getPreferenceCount(); i++) {
Preference preference = mAlternativeRecentsCategory.getPreference(i);
if (PREF_SWIPE_UP_ENABLED.equals(preference.getKey())) {
// We want to have that one enabled
continue;
}
preference.setEnabled(false);
}
} else {
mAlternativeRecentsCategory.removePreference(findPreference(PREF_SWIPE_UP_ENABLED));
}
}
private void updateDependencies() {
updateDependencies(null, null);
}
private void updateDependencies(Preference updatedPreference, Boolean newValue) {
// Disable stock recents category if alternative enabled
boolean alternativeRecentsEnabled = newValue != null && newValue;
if (!alternativeRecentsEnabled) {
for (int i = 0; i < mAlternativeRecentsCategory.getPreferenceCount(); i++) {
Preference preference = mAlternativeRecentsCategory.getPreference(i);
if (preference == updatedPreference) {
// Already used newValue
continue;
}
if (preference instanceof SystemSettingMasterSwitchPreference
&& ((SystemSettingMasterSwitchPreference) preference).isChecked()) {
alternativeRecentsEnabled = true;
break;
}
}
}
if (mStockRecentsCategory != null) {
mStockRecentsCategory.setEnabled(!alternativeRecentsEnabled);
}
}
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
return false;
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
}