@SKULSHADY: Cleanup, fixes and adapt for SettingsPreferenceFragment @rohanpurohit: bringup to 10 Change-Id: I7fa5703534c9eb76a555db9a6d3349cc2b6a2b2d Signed-off-by: rohan <purohit.rohan@gmail.com>
128 lines
5.0 KiB
Java
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;
|
|
}
|
|
}
|