diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index ae83567ed159f..2e24403d460f3 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -28,10 +28,12 @@ import android.metrics.LogMaker; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.provider.Settings; import android.service.quicksettings.Tile; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; +import android.widget.FrameLayout; import android.widget.LinearLayout; import com.android.internal.logging.MetricsLogger; @@ -49,6 +51,8 @@ import com.android.systemui.qs.customize.QSCustomizer; import com.android.systemui.qs.external.CustomTile; import com.android.systemui.settings.BrightnessController; import com.android.systemui.settings.ToggleSliderView; +import com.android.systemui.shared.plugins.PluginManager; +import com.android.systemui.statusbar.phone.NPVPluginManager; import com.android.systemui.statusbar.policy.BrightnessMirrorController; import com.android.systemui.statusbar.policy.BrightnessMirrorController.BrightnessMirrorListener; import com.android.systemui.tuner.TunerService; @@ -98,6 +102,10 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne private BrightnessMirrorController mBrightnessMirrorController; private View mDivider; + private FrameLayout mPluginFrame; + private final PluginManager mPluginManager; + private NPVPluginManager mNPVPluginManager; + public QSPanel(Context context) { this(context, null); } @@ -106,9 +114,13 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne this(context, attrs, null); } + public QSPanel(Context context, AttributeSet attrs, DumpController dumpController) { + this(context, attrs, dumpController, null); + } + @Inject public QSPanel(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs, - DumpController dumpController) { + DumpController dumpController, PluginManager pluginManager) { super(context, attrs); mContext = context; @@ -136,6 +148,15 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne mBrightnessController = new BrightnessController(getContext(), findViewById(R.id.brightness_slider)); mDumpController = dumpController; + mPluginManager = pluginManager; + if (mPluginManager != null && Settings.System.getInt( + mContext.getContentResolver(), "npv_plugin_flag", 0) == 2) { + mPluginFrame = (FrameLayout) LayoutInflater.from(mContext).inflate( + R.layout.status_bar_expanded_plugin_frame, this, false); + addView(mPluginFrame); + mNPVPluginManager = new NPVPluginManager(mPluginFrame, mPluginManager); + } + } protected void addDivider() { @@ -377,6 +398,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne if (mListening) { refreshAllTiles(); } + if (mNPVPluginManager != null) mNPVPluginManager.setListening(listening); } public void setListening(boolean listening, boolean expanded) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 177294b1f45ed..9ab635cad4183 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -43,6 +43,7 @@ import android.hardware.biometrics.BiometricSourceType; import android.os.PowerManager; import android.os.SystemClock; import android.provider.DeviceConfig; +import android.provider.Settings; import android.util.AttributeSet; import android.util.Log; import android.util.MathUtils; @@ -541,7 +542,10 @@ public class NotificationPanelView extends PanelView implements mQsNavbarScrim = findViewById(R.id.qs_navbar_scrim); mLastOrientation = getResources().getConfiguration().orientation; mPluginFrame = findViewById(R.id.plugin_frame); - mNPVPluginManager = new NPVPluginManager(mPluginFrame, mPluginManager); + if (Settings.System.getInt( + mContext.getContentResolver(), "npv_plugin_flag", 0) == 1) { + mNPVPluginManager = new NPVPluginManager(mPluginFrame, mPluginManager); + } initBottomArea(); @@ -778,7 +782,7 @@ public class NotificationPanelView extends PanelView implements mPluginFrame.setLayoutParams(lp); } - mNPVPluginManager.replaceFrameLayout(mPluginFrame); + if (mNPVPluginManager != null) mNPVPluginManager.replaceFrameLayout(mPluginFrame); } private void initBottomArea() { @@ -808,8 +812,10 @@ public class NotificationPanelView extends PanelView implements int oldMaxHeight = mQsMaxExpansionHeight; if (mQs != null) { mQsMinExpansionHeight = mKeyguardShowing ? 0 : mQs.getQsMinExpansionHeight(); - mNPVPluginManager.setYOffset(mQsMinExpansionHeight); - mQsMinExpansionHeight += mNPVPluginManager.getHeight(); + if (mNPVPluginManager != null) { + mNPVPluginManager.setYOffset(mQsMinExpansionHeight); + mQsMinExpansionHeight += mNPVPluginManager.getHeight(); + } mQsMaxExpansionHeight = mQs.getDesiredHeight(); mNotificationStackScroller.setMaxTopPadding( mQsMaxExpansionHeight + mQsNotificationTopPadding); @@ -1915,9 +1921,11 @@ public class NotificationPanelView extends PanelView implements mBarState != StatusBarState.KEYGUARD && (!mQsExpanded || mQsExpansionFromOverscroll)); updateEmptyShadeView(); - mNPVPluginManager.changeVisibility((mBarState != StatusBarState.KEYGUARD) - ? View.VISIBLE - : View.INVISIBLE); + if (mNPVPluginManager != null) { + mNPVPluginManager.changeVisibility((mBarState != StatusBarState.KEYGUARD) + ? View.VISIBLE + : View.INVISIBLE); + } mQsNavbarScrim.setVisibility(mBarState == StatusBarState.SHADE && mQsExpanded && !mStackScrollerOverscrolling && mQsScrimEnabled ? View.VISIBLE @@ -1975,7 +1983,9 @@ public class NotificationPanelView extends PanelView implements float qsExpansionFraction = getQsExpansionFraction(); mQs.setQsExpansion(qsExpansionFraction, getHeaderTranslation()); int heightDiff = mQs.getDesiredHeight() - mQs.getQsMinExpansionHeight(); - mNPVPluginManager.setExpansion(qsExpansionFraction, getHeaderTranslation(), heightDiff); + if (mNPVPluginManager != null) { + mNPVPluginManager.setExpansion(qsExpansionFraction, getHeaderTranslation(), heightDiff); + } mNotificationStackScroller.setQsExpansionFraction(qsExpansionFraction); } @@ -2396,7 +2406,7 @@ public class NotificationPanelView extends PanelView implements appearAmount = mNotificationStackScroller.calculateAppearFractionBypass(); } startHeight = -mQs.getQsMinExpansionHeight(); - startHeight -= mNPVPluginManager.getHeight(); + if (mNPVPluginManager != null) startHeight -= mNPVPluginManager.getHeight(); } float translation = MathUtils.lerp(startHeight, 0, Math.min(1.0f, appearAmount)) @@ -2540,7 +2550,7 @@ public class NotificationPanelView extends PanelView implements mKeyguardStatusBar.setListening(listening); if (mQs == null) return; mQs.setListening(listening); - mNPVPluginManager.setListening(listening); + if (mNPVPluginManager != null) mNPVPluginManager.setListening(listening); } @Override