diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSContainer.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSContainer.java
new file mode 100644
index 0000000000000..3270587e72669
--- /dev/null
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSContainer.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.systemui.plugins.qs;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.RelativeLayout;
+
+public abstract class QSContainer extends FrameLayout {
+
+ public static final String ACTION = "com.android.systemui.action.PLUGIN_QS";
+
+ // This should be incremented any time this class or ActivityStarter or BaseStatusBarHeader
+ // change in incompatible ways.
+ public static final int VERSION = 1;
+
+ public QSContainer(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public abstract void setPanelView(HeightListener notificationPanelView);
+ public abstract BaseStatusBarHeader getHeader();
+
+ public abstract int getQsMinExpansionHeight();
+ public abstract int getDesiredHeight();
+ public abstract void setHeightOverride(int desiredHeight);
+ public abstract void setHeaderClickable(boolean qsExpansionEnabled);
+ public abstract boolean isCustomizing();
+ public abstract void setOverscrolling(boolean overscrolling);
+ public abstract void setExpanded(boolean qsExpanded);
+ public abstract void setListening(boolean listening);
+ public abstract boolean isShowingDetail();
+ public abstract void closeDetail();
+ public abstract void setKeyguardShowing(boolean keyguardShowing);
+ public abstract void animateHeaderSlidingIn(long delay);
+ public abstract void animateHeaderSlidingOut();
+ public abstract void setQsExpansion(float qsExpansionFraction, float headerTranslation);
+ public abstract void setHeaderListening(boolean listening);
+ public abstract void notifyCustomizeChanged();
+
+ public abstract void setContainer(ViewGroup container);
+
+ public interface HeightListener {
+ void onQsHeightChanged();
+ }
+
+ public interface Callback {
+ void onShowingDetail(DetailAdapter detail, int x, int y);
+ void onToggleStateChanged(boolean state);
+ void onScanStateChanged(boolean state);
+ }
+
+ public interface DetailAdapter {
+ CharSequence getTitle();
+ Boolean getToggleState();
+ default boolean getToggleEnabled() {
+ return true;
+ }
+ View createDetailView(Context context, View convertView, ViewGroup parent);
+ Intent getSettingsIntent();
+ void setToggleState(boolean state);
+ int getMetricsCategory();
+
+ /**
+ * Indicates whether the detail view wants to have its header (back button, title and
+ * toggle) shown.
+ */
+ default boolean hasHeader() { return true; }
+ }
+
+ public abstract static class BaseStatusBarHeader extends RelativeLayout {
+
+ public BaseStatusBarHeader(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public abstract int getCollapsedHeight();
+ public abstract int getExpandedHeight();
+
+ public abstract void setExpanded(boolean b);
+ public abstract void setExpansion(float headerExpansionFraction);
+ public abstract void setListening(boolean listening);
+ public abstract void updateEverything();
+ public abstract void setActivityStarter(ActivityStarter activityStarter);
+ public abstract void setCallback(Callback qsPanelCallback);
+ public abstract View getExpandView();
+ }
+
+ /**
+ * An interface to start activities. This is used to as a callback from the views to
+ * {@link PhoneStatusBar} to allow custom handling for starting the activity, i.e. dismissing the
+ * Keyguard.
+ */
+ public static interface ActivityStarter {
+
+ void startPendingIntentDismissingKeyguard(PendingIntent intent);
+ void startActivity(Intent intent, boolean dismissShade);
+ void startActivity(Intent intent, boolean dismissShade, Callback callback);
+ void preventNextAnimation();
+
+ interface Callback {
+ void onActivityStarted(int resultCode);
+ }
+ }
+}
diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml
index 26c733950bf05..9e0a6fe4f6c51 100644
--- a/packages/SystemUI/res/layout/qs_panel.xml
+++ b/packages/SystemUI/res/layout/qs_panel.xml
@@ -13,7 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
+
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index 3d70969e336d3..0339e038ebdf7 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -19,7 +19,7 @@
-
+ android:clipChildren="false"
+ systemui:viewType="com.android.systemui.plugins.qs.QSContainer" />
{
return true;
}
- public interface DetailAdapter {
- CharSequence getTitle();
- Boolean getToggleState();
- default boolean getToggleEnabled() {
- return true;
- }
- View createDetailView(Context context, View convertView, ViewGroup parent);
- Intent getSettingsIntent();
- void setToggleState(boolean state);
- int getMetricsCategory();
-
- /**
- * @return the height in px the content of the detail view should take.
- */
- default int getDetailViewHeight() { throw new UnsupportedOperationException(); };
-
- /**
- * Indicates whether the detail view wants to have its header (back button, title and
- * toggle) shown.
- */
- default boolean hasHeader() { return true; }
- }
-
// safe to call from any thread
public void addCallback(Callback callback) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
index 0de1e3022b6c9..3493d2454983c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
@@ -33,10 +33,11 @@ import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toolbar;
import android.widget.Toolbar.OnMenuItemClickListener;
+
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto;
import com.android.systemui.R;
-import com.android.systemui.qs.QSContainer;
+import com.android.systemui.plugins.qs.QSContainer;
import com.android.systemui.qs.QSDetailClipper;
import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java
index 985bc9fdf4bb4..b61a81cbfdccd 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java
@@ -40,6 +40,7 @@ import com.android.settingslib.BatteryInfo;
import com.android.settingslib.graph.UsageView;
import com.android.systemui.BatteryMeterDrawable;
import com.android.systemui.R;
+import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.BatteryController;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index 8d8474a135b4d..18bde27fc6b4e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -32,6 +32,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.systemui.R;
+import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.QSDetailItems;
import com.android.systemui.qs.QSDetailItems.Item;
import com.android.systemui.qs.QSTile;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
index c3e9b6e4dcc98..61bad771b6e01 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
@@ -28,6 +28,7 @@ import android.widget.Button;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.systemui.R;
+import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.QSDetailItems;
import com.android.systemui.qs.QSDetailItems.Item;
import com.android.systemui.qs.QSTile;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
index 0de5105485dc2..7de883e2505d9 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
@@ -24,12 +24,12 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-import android.widget.Switch;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settingslib.net.DataUsageController;
import com.android.systemui.R;
+import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.QSIconView;
import com.android.systemui.qs.QSTile;
import com.android.systemui.qs.SignalTileView;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
index 91821bad988af..89bb1d2c9d8f2 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
@@ -37,6 +37,7 @@ import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.SysUIToast;
+import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.volume.ZenModePanel;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java
index cc875ac0a2ba9..b5fbfe05d3680 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java
@@ -22,6 +22,7 @@ import android.provider.Settings;
import android.util.Pair;
import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
index ba79a18f4ef22..27306fcfcd00b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
@@ -31,6 +31,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settingslib.wifi.AccessPoint;
import com.android.systemui.R;
+import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.QSDetailItems;
import com.android.systemui.qs.QSDetailItems.Item;
import com.android.systemui.qs.QSIconView;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/car/CarNavigationBarController.java b/packages/SystemUI/src/com/android/systemui/statusbar/car/CarNavigationBarController.java
index da57f7a75338d..baff6806dc73c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/car/CarNavigationBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/car/CarNavigationBarController.java
@@ -15,17 +15,14 @@
*/
package com.android.systemui.statusbar.car;
-import android.app.ActivityManager;
import android.app.ActivityManager.StackId;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
-import android.os.Handler;
import android.support.v4.util.SimpleArrayMap;
import android.util.Log;
import android.util.SparseBooleanArray;
@@ -33,7 +30,7 @@ import android.view.View;
import android.widget.LinearLayout;
import com.android.systemui.R;
-import com.android.systemui.statusbar.phone.ActivityStarter;
+import com.android.systemui.plugins.qs.QSContainer.ActivityStarter;
import java.net.URISyntaxException;
import java.util.ArrayList;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
deleted file mode 100644
index 8f689c6c00b37..0000000000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.systemui.statusbar.phone;
-
-import android.app.PendingIntent;
-import android.content.Intent;
-
-/**
- * An interface to start activities. This is used to as a callback from the views to
- * {@link PhoneStatusBar} to allow custom handling for starting the activity, i.e. dismissing the
- * Keyguard.
- */
-public interface ActivityStarter {
- void startPendingIntentDismissingKeyguard(PendingIntent intent);
- void startActivity(Intent intent, boolean dismissShade);
- void startActivity(Intent intent, boolean dismissShade, Callback callback);
- void preventNextAnimation();
-
- interface Callback {
- void onActivityStarted(int resultCode);
- }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BaseStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BaseStatusBarHeader.java
deleted file mode 100644
index 79eef43d4e2ed..0000000000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BaseStatusBarHeader.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.systemui.statusbar.phone;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.RelativeLayout;
-import com.android.systemui.qs.QSPanel;
-import com.android.systemui.qs.QSPanel.Callback;
-import com.android.systemui.statusbar.policy.BatteryController;
-import com.android.systemui.statusbar.policy.NetworkControllerImpl;
-import com.android.systemui.statusbar.policy.NextAlarmController;
-import com.android.systemui.statusbar.policy.UserInfoController;
-
-public abstract class BaseStatusBarHeader extends RelativeLayout implements
- NetworkControllerImpl.EmergencyListener {
-
- public BaseStatusBarHeader(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public abstract int getCollapsedHeight();
- public abstract int getExpandedHeight();
-
- public abstract void setExpanded(boolean b);
- public abstract void setExpansion(float headerExpansionFraction);
- public abstract void setListening(boolean listening);
- public abstract void updateEverything();
- public abstract void setActivityStarter(ActivityStarter activityStarter);
- public abstract void setQSPanel(QSPanel qSPanel);
- public abstract void setBatteryController(BatteryController batteryController);
- public abstract void setNextAlarmController(NextAlarmController nextAlarmController);
- public abstract void setUserInfoController(UserInfoController userInfoController);
- public abstract void setCallback(Callback qsPanelCallback);
-}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index 8cabfb93bf327..0a391ebda5be1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -61,6 +61,7 @@ import com.android.systemui.EventLogTags;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.assist.AssistManager;
+import com.android.systemui.plugins.qs.QSContainer.ActivityStarter;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.KeyguardAffordanceView;
import com.android.systemui.statusbar.KeyguardIndicationController;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
index 0de06c90ecef0..af9454ceab135 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
@@ -18,7 +18,6 @@ package com.android.systemui.statusbar.phone;
import android.content.Context;
import android.content.Intent;
-import android.os.UserHandle;
import android.os.UserManager;
import android.provider.ContactsContract;
import android.text.TextUtils;
@@ -31,8 +30,8 @@ import android.widget.Button;
import android.widget.FrameLayout;
import com.android.systemui.R;
+import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.QSPanel;
-import com.android.systemui.qs.QSTile;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
import com.android.systemui.statusbar.policy.UserSwitcherController;
@@ -183,7 +182,7 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
return false;
}
- protected QSTile.DetailAdapter getUserDetailAdapter() {
+ protected DetailAdapter getUserDetailAdapter() {
return mUserSwitcherController.userDetailAdapter;
}
}
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 812c5c151ce9b..5d1af2f5591c5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -50,7 +50,7 @@ import com.android.systemui.EventLogTags;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.classifier.FalsingManager;
-import com.android.systemui.qs.QSContainer;
+import com.android.systemui.plugins.qs.QSContainer;
import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.ExpandableView;
import com.android.systemui.statusbar.FlingAnimationUtils;
@@ -70,7 +70,7 @@ public class NotificationPanelView extends PanelView implements
ExpandableView.OnHeightChangedListener,
View.OnClickListener, NotificationStackScrollLayout.OnOverscrollTopChangedListener,
KeyguardAffordanceHelper.Callback, NotificationStackScrollLayout.OnEmptySpaceClickListener,
- HeadsUpManager.OnHeadsUpChangedListener {
+ HeadsUpManager.OnHeadsUpChangedListener, QSContainer.HeightListener {
private static final boolean DEBUG = false;
@@ -242,7 +242,7 @@ public class NotificationPanelView extends PanelView implements
public void onInflated(View v) {
mQsContainer = (QSContainer) v.findViewById(R.id.quick_settings_container);
mQsContainer.setPanelView(NotificationPanelView.this);
- mQsContainer.getHeader().findViewById(R.id.expand_indicator)
+ mQsContainer.getHeader().getExpandView()
.setOnClickListener(NotificationPanelView.this);
// recompute internal state when qspanel height changes
@@ -2011,7 +2011,7 @@ public class NotificationPanelView extends PanelView implements
}
public void closeQsDetail() {
- mQsContainer.getQsPanel().closeDetail();
+ mQsContainer.closeDetail();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java
index 36e59db1ac7b3..8b1fcd6b104f9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java
@@ -24,10 +24,10 @@ import android.view.View;
import android.view.ViewStub;
import android.view.WindowInsets;
import android.widget.FrameLayout;
+
import com.android.systemui.AutoReinflateContainer;
import com.android.systemui.R;
-import com.android.systemui.qs.QSContainer;
-import com.android.systemui.qs.customize.QSCustomizer;
+import com.android.systemui.plugins.qs.QSContainer;
/**
* The container with notification stack scroller and quick settings inside.
@@ -130,8 +130,8 @@ public class NotificationsQuickSettingsContainer extends FrameLayout
@Override
public void onInflated(View v) {
- QSCustomizer customizer = ((QSContainer) v).getCustomizer();
- customizer.setContainer(this);
+ QSContainer container = (QSContainer) v;
+ container.setContainer(this);
}
public void setQsExpanded(boolean expanded) {
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 082fde422ce97..40303c4ac37cb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -141,7 +141,10 @@ import com.android.systemui.classifier.FalsingManager;
import com.android.systemui.doze.DozeHost;
import com.android.systemui.doze.DozeLog;
import com.android.systemui.keyguard.KeyguardViewMediator;
-import com.android.systemui.qs.QSContainer;
+import com.android.systemui.plugins.qs.QSContainer.ActivityStarter;
+import com.android.systemui.plugins.qs.QSContainer.BaseStatusBarHeader;
+import com.android.systemui.plugins.qs.QSContainer;
+import com.android.systemui.qs.QSContainerImpl;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.recents.ScreenPinningRequest;
import com.android.systemui.recents.events.EventBus;
@@ -933,10 +936,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
public void onInflated(View v) {
QSContainer qsContainer = (QSContainer) v.findViewById(
R.id.quick_settings_container);
- qsContainer.setHost(qsh);
- mQSPanel = qsContainer.getQsPanel();
- mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
- mKeyguardStatusBar.setQSPanel(mQSPanel);
+ if (qsContainer instanceof QSContainerImpl) {
+ ((QSContainerImpl) qsContainer).setHost(qsh);
+ mQSPanel = ((QSContainerImpl) qsContainer).getQsPanel();
+ mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
+ mKeyguardStatusBar.setQSPanel(mQSPanel);
+ }
mHeader = qsContainer.getHeader();
initSignalCluster(mHeader);
mHeader.setActivityStarter(PhoneStatusBar.this);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
index 3ad09d11ea0ad..b0b86beee333c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
@@ -37,12 +37,15 @@ import com.android.internal.logging.MetricsProto;
import com.android.keyguard.KeyguardStatusView;
import com.android.systemui.FontSizeUtils;
import com.android.systemui.R;
+import com.android.systemui.plugins.qs.QSContainer.ActivityStarter;
+import com.android.systemui.plugins.qs.QSContainer.BaseStatusBarHeader;
import com.android.systemui.qs.QSPanel;
-import com.android.systemui.qs.QSPanel.Callback;
+import com.android.systemui.plugins.qs.QSContainer.Callback;
import com.android.systemui.qs.QuickQSPanel;
import com.android.systemui.qs.TouchAnimator;
import com.android.systemui.qs.TouchAnimator.Builder;
import com.android.systemui.statusbar.policy.BatteryController;
+import com.android.systemui.statusbar.policy.NetworkController.EmergencyListener;
import com.android.systemui.statusbar.policy.NextAlarmController;
import com.android.systemui.statusbar.policy.NextAlarmController.NextAlarmChangeCallback;
import com.android.systemui.statusbar.policy.UserInfoController;
@@ -50,7 +53,7 @@ import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChange
import com.android.systemui.tuner.TunerService;
public class QuickStatusBarHeader extends BaseStatusBarHeader implements
- NextAlarmChangeCallback, OnClickListener, OnUserInfoChangedListener {
+ NextAlarmChangeCallback, OnClickListener, OnUserInfoChangedListener, EmergencyListener {
private static final String TAG = "QuickStatusBarHeader";
@@ -254,6 +257,11 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
updateListeners();
}
+ @Override
+ public View getExpandView() {
+ return findViewById(R.id.expand_indicator);
+ }
+
@Override
public void updateEverything() {
post(() -> {
@@ -293,7 +301,6 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
mActivityStarter = activityStarter;
}
- @Override
public void setQSPanel(final QSPanel qsPanel) {
mQsPanel = qsPanel;
setupHost(qsPanel.getHost());
@@ -354,17 +361,14 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
true /* dismissShade */);
}
- @Override
public void setNextAlarmController(NextAlarmController nextAlarmController) {
mNextAlarmController = nextAlarmController;
}
- @Override
public void setBatteryController(BatteryController batteryController) {
// Don't care
}
- @Override
public void setUserInfoController(UserInfoController userInfoController) {
userInfoController.addListener(this);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
index c3becb08e031b..30d1c54b40966 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
@@ -50,15 +50,14 @@ import android.widget.BaseAdapter;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.internal.util.UserIcons;
-import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.settingslib.RestrictedLockUtils;
import com.android.systemui.GuestResumeSessionReceiver;
import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.SystemUISecondaryUserService;
-import com.android.systemui.qs.QSTile;
+import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.tiles.UserDetailView;
-import com.android.systemui.statusbar.phone.ActivityStarter;
+import com.android.systemui.plugins.qs.QSContainer.ActivityStarter;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import java.io.FileDescriptor;
@@ -793,7 +792,7 @@ public class UserSwitcherController {
}
}
- public final QSTile.DetailAdapter userDetailAdapter = new QSTile.DetailAdapter() {
+ public final DetailAdapter userDetailAdapter = new DetailAdapter() {
private final Intent USER_SETTINGS_INTENT = new Intent(Settings.ACTION_USER_SETTINGS);
@Override