summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java39
1 files changed, 33 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index b68a8b7..954bd53 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -42,7 +42,6 @@ import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
-import android.content.res.ThemeChangeRequest.RequestType;
import android.content.res.ThemeConfig;
import android.content.res.Resources;
import android.database.ContentObserver;
@@ -188,6 +187,7 @@ import com.android.systemui.statusbar.stack.NotificationStackScrollLayout.OnChil
import com.android.systemui.statusbar.stack.StackStateAnimator;
import com.android.systemui.statusbar.stack.StackViewState;
import com.android.systemui.volume.VolumeComponent;
+import cyanogenmod.app.CMContextConstants;
import cyanogenmod.app.CustomTileListenerService;
import cyanogenmod.app.StatusBarPanelCustomTile;
@@ -216,6 +216,7 @@ import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARE
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_WARNING;
import cyanogenmod.providers.CMSettings;
+import cyanogenmod.themes.IThemeService;
public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener,
@@ -419,6 +420,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private int mNavigationIconHints = 0;
private HandlerThread mHandlerThread;
+ private IThemeService mThemeService;
+ private long mLastThemeChangeTime = 0;
+
Runnable mLongPressBrightnessChange = new Runnable() {
@Override
public void run() {
@@ -860,6 +864,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mScreenPinningRequest = new ScreenPinningRequest(mContext);
updateCustomRecentsLongPressHandler(true);
+
+ mThemeService = IThemeService.Stub.asInterface(ServiceManager.getService(
+ CMContextConstants.CM_THEME_SERVICE));
}
// ================================================================================
@@ -3794,6 +3801,13 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
// this will make sure the keyguard is showing
showKeyguard();
}
+
+ // update mLastThemeChangeTime
+ try {
+ mLastThemeChangeTime = mThemeService.getLastThemeChangeTime();
+ } catch (RemoteException e) {
+ /* ignore */
+ }
}
private void removeAllViews(ViewGroup parent) {
@@ -3847,8 +3861,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
/**
* Determines if we need to recreate the status bar due to a theme change. We currently
- * check if the overlay for the status bar, fonts, or icons, or forced update count have
- * changed.
+ * check if the overlay for the status bar, fonts, or icons, or last theme change time is
+ * greater than mLastThemeChangeTime
*
* @param oldTheme
* @param newTheme
@@ -3861,17 +3875,24 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
final String overlay = newTheme.getOverlayForStatusBar();
final String icons = newTheme.getIconPackPkgName();
final String fonts = newTheme.getFontPkgName();
+ boolean isNewThemeChange = false;
+ try {
+ isNewThemeChange = mLastThemeChangeTime < mThemeService.getLastThemeChangeTime();
+ } catch (RemoteException e) {
+ /* ignore */
+ }
return oldTheme == null ||
(overlay != null && !overlay.equals(oldTheme.getOverlayForStatusBar()) ||
(fonts != null && !fonts.equals(oldTheme.getFontPkgName())) ||
(icons != null && !icons.equals(oldTheme.getIconPackPkgName())) ||
- newTheme.getLastThemeChangeRequestType() == RequestType.THEME_UPDATED);
+ isNewThemeChange);
}
/**
* Determines if we need to update the navbar resources due to a theme change. We currently
- * check if the overlay for the navbar, or request type is {@link RequestType.THEME_UPDATED}.
+ * check if the overlay for the navbar, or last theme change time is greater than
+ * mLastThemeChangeTime
*
* @param oldTheme
* @param newTheme
@@ -3882,10 +3903,16 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (newTheme == null) return false;
final String overlay = newTheme.getOverlayForNavBar();
+ boolean isNewThemeChange = false;
+ try {
+ isNewThemeChange = mLastThemeChangeTime < mThemeService.getLastThemeChangeTime();
+ } catch (RemoteException e) {
+ /* ignore */
+ }
return oldTheme == null ||
(overlay != null && !overlay.equals(oldTheme.getOverlayForNavBar()) ||
- newTheme.getLastThemeChangeRequestType() == RequestType.THEME_UPDATED);
+ isNewThemeChange);
}
protected void loadDimens() {