Update icon tint color when the user toggles Dark theme
- Reload theme in slice provider when Dark theme mode changes for slices - Reload theme in onCreate of Panel activity for its non-slice header - Remove applyTheme from individual slices Test: robotest Fixes: 153700819 Change-Id: I40a7d2817c4b9100d7b2f2962a69c8a9ce6f7906
This commit is contained in:
@@ -140,8 +140,11 @@ public class SettingsSliceProvider extends SliceProvider {
|
||||
@VisibleForTesting
|
||||
Map<Uri, SliceData> mSliceWeakDataCache;
|
||||
|
||||
@VisibleForTesting
|
||||
final Map<Uri, SliceBackgroundWorker> mPinnedWorkers = new ArrayMap<>();
|
||||
|
||||
private boolean mNightMode;
|
||||
|
||||
public SettingsSliceProvider() {
|
||||
super(READ_SEARCH_INDEXABLES);
|
||||
}
|
||||
@@ -150,6 +153,8 @@ public class SettingsSliceProvider extends SliceProvider {
|
||||
public boolean onCreateSliceProvider() {
|
||||
mSlicesDatabaseAccessor = new SlicesDatabaseAccessor(getContext());
|
||||
mSliceWeakDataCache = new WeakHashMap<>();
|
||||
mNightMode = Utils.isNightMode(getContext());
|
||||
getContext().setTheme(R.style.Theme_SettingsBase);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -201,6 +206,13 @@ public class SettingsSliceProvider extends SliceProvider {
|
||||
return null;
|
||||
}
|
||||
|
||||
final boolean nightMode = Utils.isNightMode(getContext());
|
||||
if (mNightMode != nightMode) {
|
||||
Log.d(TAG, "Night mode changed, reload theme");
|
||||
mNightMode = nightMode;
|
||||
getContext().getTheme().rebase();
|
||||
}
|
||||
|
||||
// Before adding a slice to {@link CustomSliceManager}, please get approval
|
||||
// from the Settings team.
|
||||
if (CustomSliceRegistry.isValidUri(sliceUri)) {
|
||||
|
||||
@@ -73,8 +73,6 @@ public class SliceBuilderUtils {
|
||||
* {@param sliceData} is an inline controller.
|
||||
*/
|
||||
public static Slice buildSlice(Context context, SliceData sliceData) {
|
||||
// Reload theme for switching dark mode on/off
|
||||
context.getTheme().applyStyle(R.style.Theme_Settings_Home, true /* force */);
|
||||
Log.d(TAG, "Creating slice for: " + sliceData.getPreferenceController());
|
||||
final BasePreferenceController controller = getPreferenceController(context, sliceData);
|
||||
FeatureFactory.getFactory(context).getMetricsFeatureProvider()
|
||||
|
||||
Reference in New Issue
Block a user