mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 19:38:21 +00:00
Merge "Move feature flags that have been changed to the top of the list." into tm-qpr-dev
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package com.android.launcher3.config;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import com.android.launcher3.BuildConfig;
|
||||
import com.android.launcher3.Utilities;
|
||||
@@ -343,7 +344,15 @@ public final class FeatureFlags {
|
||||
for (DebugFlag flag : sDebugFlags) {
|
||||
flag.initialize(context);
|
||||
}
|
||||
sDebugFlags.sort((f1, f2) -> f1.key.compareToIgnoreCase(f2.key));
|
||||
|
||||
sDebugFlags.sort((f1, f2) -> {
|
||||
// Sort first by any prefs that the user has changed, then alphabetically.
|
||||
int changeComparison = Boolean.compare(f2.mHasBeenChangedAtLeastOnce,
|
||||
f1.mHasBeenChangedAtLeastOnce);
|
||||
return changeComparison != 0
|
||||
? changeComparison
|
||||
: f1.key.compareToIgnoreCase(f2.key);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,6 +408,7 @@ public final class FeatureFlags {
|
||||
public static class DebugFlag extends BooleanFlag {
|
||||
|
||||
public final String description;
|
||||
protected boolean mHasBeenChangedAtLeastOnce;
|
||||
protected boolean mCurrentValue;
|
||||
|
||||
public DebugFlag(String key, boolean defaultValue, String description) {
|
||||
@@ -416,8 +426,10 @@ public final class FeatureFlags {
|
||||
}
|
||||
|
||||
public void initialize(Context context) {
|
||||
mCurrentValue = context.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE)
|
||||
.getBoolean(key, defaultValue);
|
||||
SharedPreferences prefs =
|
||||
context.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE);
|
||||
mHasBeenChangedAtLeastOnce = prefs.contains(key);
|
||||
mCurrentValue = prefs.getBoolean(key, defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -52,12 +52,17 @@ public final class FlagTogglerPrefUi {
|
||||
public void putBoolean(String key, boolean value) {
|
||||
for (DebugFlag flag : FeatureFlags.getDebugFlags()) {
|
||||
if (flag.key.equals(key)) {
|
||||
SharedPreferences.Editor editor = mContext.getSharedPreferences(
|
||||
FLAGS_PREF_NAME, Context.MODE_PRIVATE).edit();
|
||||
if (value == flag.defaultValue) {
|
||||
SharedPreferences prefs = mContext.getSharedPreferences(
|
||||
FLAGS_PREF_NAME, Context.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = prefs.edit();
|
||||
// We keep the key in the prefs even if it has the default value, because it's a
|
||||
// signal that it has been changed at one point.
|
||||
if (!prefs.contains(key) && value == flag.defaultValue) {
|
||||
editor.remove(key).apply();
|
||||
flag.mHasBeenChangedAtLeastOnce = false;
|
||||
} else {
|
||||
editor.putBoolean(key, value).apply();
|
||||
flag.mHasBeenChangedAtLeastOnce = true;
|
||||
}
|
||||
updateMenu();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user