Merge "Extract plugin interface for QS"

This commit is contained in:
TreeHugger Robot
2016-09-27 18:52:53 +00:00
committed by Android (Google) Code Review
26 changed files with 208 additions and 171 deletions

View File

@@ -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);
}
}
}

View File

@@ -13,7 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
<com.android.systemui.qs.QSContainer
<com.android.systemui.qs.QSContainerImpl
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/quick_settings_container"
android:layout_width="match_parent"
@@ -38,4 +38,4 @@
<include android:id="@+id/qs_customize" layout="@layout/qs_customize_panel"
android:visibility="gone" />
</com.android.systemui.qs.QSContainer>
</com.android.systemui.qs.QSContainerImpl>

View File

@@ -19,7 +19,7 @@
<com.android.systemui.statusbar.phone.NotificationPanelView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
xmlns:systemui="http://schemas.android.com/apk/res-auto"
android:id="@+id/notification_panel"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -39,14 +39,15 @@
android:clipToPadding="false"
android:clipChildren="false">
<com.android.systemui.AutoReinflateContainer
<com.android.systemui.PluginInflateContainer
android:id="@+id/qs_auto_reinflate_container"
android:layout="@layout/qs_panel"
android:layout_width="@dimen/notification_panel_width"
android:layout_height="match_parent"
android:layout_gravity="@integer/notification_panel_layout_gravity"
android:clipToPadding="false"
android:clipChildren="false" />
android:clipChildren="false"
systemui:viewType="com.android.systemui.plugins.qs.QSContainer" />
<com.android.systemui.statusbar.stack.NotificationStackScrollLayout
android:id="@+id/notification_stack_scroller"

View File

@@ -14,13 +14,13 @@
package com.android.systemui.qs;
import android.graphics.Path;
import android.util.Log;
import android.view.View;
import android.view.View.OnAttachStateChangeListener;
import android.view.View.OnLayoutChangeListener;
import android.widget.TextView;
import com.android.systemui.plugins.qs.QSContainer;
import com.android.systemui.qs.PagedTileLayout.PageListener;
import com.android.systemui.qs.QSPanel.QSTileLayout;
import com.android.systemui.qs.QSTile.Host.Callback;

View File

@@ -24,14 +24,16 @@ import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.FrameLayout;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.plugins.qs.QSContainer;
import com.android.systemui.qs.customize.QSCustomizer;
import com.android.systemui.statusbar.phone.BaseStatusBarHeader;
import com.android.systemui.statusbar.phone.NotificationPanelView;
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
import com.android.systemui.statusbar.phone.QSTileHost;
import com.android.systemui.statusbar.phone.QuickStatusBarHeader;
import com.android.systemui.statusbar.stack.StackStateAnimator;
/**
@@ -39,7 +41,7 @@ import com.android.systemui.statusbar.stack.StackStateAnimator;
*
* Also manages animations for the QS Header and Panel.
*/
public class QSContainer extends FrameLayout {
public class QSContainerImpl extends QSContainer {
private static final String TAG = "QSContainer";
private static final boolean DEBUG = false;
@@ -49,7 +51,7 @@ public class QSContainer extends FrameLayout {
private int mHeightOverride = -1;
protected QSPanel mQSPanel;
private QSDetail mQSDetail;
protected BaseStatusBarHeader mHeader;
protected QuickStatusBarHeader mHeader;
protected float mQsExpansion;
private boolean mQsExpanded;
private boolean mHeaderAnimating;
@@ -59,10 +61,10 @@ public class QSContainer extends FrameLayout {
private long mDelay;
private QSAnimator mQSAnimator;
private QSCustomizer mQSCustomizer;
private NotificationPanelView mPanelView;
private HeightListener mPanelView;
private boolean mListening;
public QSContainer(Context context, AttributeSet attrs) {
public QSContainerImpl(Context context, AttributeSet attrs) {
super(context, attrs);
}
@@ -71,7 +73,7 @@ public class QSContainer extends FrameLayout {
super.onFinishInflate();
mQSPanel = (QSPanel) findViewById(R.id.quick_settings_panel);
mQSDetail = (QSDetail) findViewById(R.id.qs_detail);
mHeader = (BaseStatusBarHeader) findViewById(R.id.header);
mHeader = (QuickStatusBarHeader) findViewById(R.id.header);
mQSDetail.setQsPanel(mQSPanel, mHeader);
mQSAnimator = new QSAnimator(this, (QuickQSPanel) mHeader.findViewById(R.id.quick_qs_panel),
mQSPanel);
@@ -92,7 +94,7 @@ public class QSContainer extends FrameLayout {
mQSAnimator.setHost(qsh);
}
public void setPanelView(NotificationPanelView panelView) {
public void setPanelView(HeightListener panelView) {
mPanelView = panelView;
}
@@ -137,6 +139,13 @@ public class QSContainer extends FrameLayout {
updateBottom();
}
@Override
public void setContainer(ViewGroup container) {
if (container instanceof NotificationsQuickSettingsContainer) {
mQSCustomizer.setContainer((NotificationsQuickSettingsContainer) container);
}
}
/**
* The height this view wants to be. This is different from {@link #getMeasuredHeight} such that
* during closing the detail panel, this already returns the smaller height.
@@ -291,6 +300,11 @@ public class QSContainer extends FrameLayout {
.start();
}
@Override
public void closeDetail() {
mQSPanel.closeDetail();
}
private final ViewTreeObserver.OnPreDrawListener mStartHeaderSlidingIn
= new ViewTreeObserver.OnPreDrawListener() {
@Override

View File

@@ -35,8 +35,9 @@ import android.widget.TextView;
import com.android.internal.logging.MetricsLogger;
import com.android.systemui.FontSizeUtils;
import com.android.systemui.R;
import com.android.systemui.qs.QSTile.DetailAdapter;
import com.android.systemui.statusbar.phone.BaseStatusBarHeader;
import com.android.systemui.plugins.qs.QSContainer.BaseStatusBarHeader;
import com.android.systemui.plugins.qs.QSContainer.Callback;
import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.statusbar.phone.QSTileHost;
public class QSDetail extends LinearLayout {
@@ -151,7 +152,7 @@ public class QSDetail extends LinearLayout {
public void handleShowingDetail(final QSTile.DetailAdapter adapter, int x, int y,
public void handleShowingDetail(final DetailAdapter adapter, int x, int y,
boolean toggleQs) {
final boolean showingDetail = adapter != null;
setClickable(showingDetail);
@@ -287,7 +288,7 @@ public class QSDetail extends LinearLayout {
mDetailAdapter != null && mDetailAdapter.getToggleEnabled());
}
protected QSPanel.Callback mQsPanelCallback = new QSPanel.Callback() {
protected Callback mQsPanelCallback = new Callback() {
@Override
public void onToggleStateChanged(final boolean state) {
post(new Runnable() {

View File

@@ -30,7 +30,8 @@ import android.widget.LinearLayout;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.systemui.R;
import com.android.systemui.qs.QSTile.DetailAdapter;
import com.android.systemui.plugins.qs.QSContainer;
import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.QSTile.Host.Callback;
import com.android.systemui.qs.customize.QSCustomizer;
import com.android.systemui.qs.external.CustomTile;
@@ -59,7 +60,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
protected boolean mExpanded;
protected boolean mListening;
private Callback mCallback;
private QSContainer.Callback mCallback;
private BrightnessController mBrightnessController;
protected QSTileHost mHost;
@@ -170,7 +171,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
return mBrightnessView;
}
public void setCallback(Callback callback) {
public void setCallback(QSContainer.Callback callback) {
mCallback = callback;
}
@@ -542,12 +543,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
public QSTile.Callback callback;
}
public interface Callback {
void onShowingDetail(DetailAdapter detail, int x, int y);
void onToggleStateChanged(boolean state);
void onScanStateChanged(boolean state);
}
public interface QSTileLayout {
void addTile(TileRecord tile);
void removeTile(TileRecord tile);

View File

@@ -27,12 +27,11 @@ import android.os.Message;
import android.util.ArraySet;
import android.util.Log;
import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settingslib.RestrictedLockUtils;
import com.android.systemui.plugins.qs.QSContainer.DetailAdapter;
import com.android.systemui.qs.QSTile.State;
import com.android.systemui.qs.external.TileServices;
import com.android.systemui.statusbar.phone.ManagedProfileController;
@@ -42,7 +41,6 @@ import com.android.systemui.statusbar.policy.CastController;
import com.android.systemui.statusbar.policy.FlashlightController;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.Listenable;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.RotationLockController;
@@ -147,29 +145,6 @@ public abstract class QSTile<TState extends State> {
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) {

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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;
}
}

View File

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

View File

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

View File

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

View File

@@ -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);
}

View File

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