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>
This commit is contained in:
@@ -11,6 +11,7 @@ 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;
|
||||
@@ -19,11 +20,20 @@ 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);
|
||||
@@ -32,6 +42,75 @@ public class RecentsSettings extends SettingsPreferenceFragment implements
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user