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:
Jason Chiu
2020-05-11 16:13:47 +08:00
parent 7a31f2da60
commit 8ac1e4d49d
11 changed files with 83 additions and 32 deletions

View File

@@ -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)) {