2/N Remove last injection from QSCustomizer
Bug: 168904199 Test: atest SystemUITests && manual Change-Id: Ie3453144012af7c34013947e3730a289dd5375e3
This commit is contained in:
@@ -32,17 +32,12 @@ import android.widget.Toolbar;
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.internal.logging.UiEventLogger;
|
||||
import com.android.internal.logging.UiEventLoggerImpl;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.plugins.qs.QS;
|
||||
import com.android.systemui.qs.QSDetailClipper;
|
||||
import com.android.systemui.qs.QSEditEvent;
|
||||
import com.android.systemui.statusbar.phone.LightBarController;
|
||||
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* Allows full-screen customization of QS, through show() and hide().
|
||||
*
|
||||
@@ -53,15 +48,12 @@ public class QSCustomizer extends LinearLayout {
|
||||
|
||||
static final int MENU_RESET = Menu.FIRST;
|
||||
static final String EXTRA_QS_CUSTOMIZING = "qs_customizing";
|
||||
private static final String TAG = "QSCustomizer";
|
||||
|
||||
private final QSDetailClipper mClipper;
|
||||
private final LightBarController mLightBarController;
|
||||
private final View mTransparentView;
|
||||
|
||||
private boolean isShown;
|
||||
private RecyclerView mRecyclerView;
|
||||
private Toolbar mToolbar;
|
||||
private final RecyclerView mRecyclerView;
|
||||
private boolean mCustomizing;
|
||||
private NotificationsQuickSettingsContainer mNotifQsContainer;
|
||||
private QS mQs;
|
||||
@@ -69,59 +61,47 @@ public class QSCustomizer extends LinearLayout {
|
||||
private int mY;
|
||||
private boolean mOpening;
|
||||
private boolean mIsShowingNavBackdrop;
|
||||
private UiEventLogger mUiEventLogger = new UiEventLoggerImpl();
|
||||
|
||||
@Inject
|
||||
public QSCustomizer(Context context, AttributeSet attrs,
|
||||
LightBarController lightBarController) {
|
||||
public QSCustomizer(Context context, AttributeSet attrs) {
|
||||
super(new ContextThemeWrapper(context, R.style.edit_theme), attrs);
|
||||
|
||||
LayoutInflater.from(getContext()).inflate(R.layout.qs_customize_panel_content, this);
|
||||
mClipper = new QSDetailClipper(findViewById(R.id.customize_container));
|
||||
mToolbar = findViewById(com.android.internal.R.id.action_bar);
|
||||
Toolbar toolbar = findViewById(com.android.internal.R.id.action_bar);
|
||||
TypedValue value = new TypedValue();
|
||||
mContext.getTheme().resolveAttribute(android.R.attr.homeAsUpIndicator, value, true);
|
||||
mToolbar.setNavigationIcon(
|
||||
toolbar.setNavigationIcon(
|
||||
getResources().getDrawable(value.resourceId, mContext.getTheme()));
|
||||
|
||||
mToolbar.getMenu().add(Menu.NONE, MENU_RESET, 0,
|
||||
toolbar.getMenu().add(Menu.NONE, MENU_RESET, 0,
|
||||
mContext.getString(com.android.internal.R.string.reset));
|
||||
mToolbar.setTitle(R.string.qs_edit);
|
||||
toolbar.setTitle(R.string.qs_edit);
|
||||
mRecyclerView = findViewById(android.R.id.list);
|
||||
mTransparentView = findViewById(R.id.customizer_transparent_view);
|
||||
DefaultItemAnimator animator = new DefaultItemAnimator();
|
||||
animator.setMoveDuration(TileAdapter.MOVE_DURATION);
|
||||
mRecyclerView.setItemAnimator(animator);
|
||||
mLightBarController = lightBarController;
|
||||
updateNavBackDrop(getResources().getConfiguration());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
updateNavBackDrop(newConfig);
|
||||
updateResources();
|
||||
}
|
||||
|
||||
private void updateResources() {
|
||||
void updateResources() {
|
||||
LayoutParams lp = (LayoutParams) mTransparentView.getLayoutParams();
|
||||
lp.height = mContext.getResources().getDimensionPixelSize(
|
||||
com.android.internal.R.dimen.quick_qs_offset_height);
|
||||
mTransparentView.setLayoutParams(lp);
|
||||
}
|
||||
|
||||
private void updateNavBackDrop(Configuration newConfig) {
|
||||
void updateNavBackDrop(Configuration newConfig, LightBarController lightBarController) {
|
||||
View navBackdrop = findViewById(R.id.nav_bar_background);
|
||||
mIsShowingNavBackdrop = newConfig.smallestScreenWidthDp >= 600
|
||||
|| newConfig.orientation != Configuration.ORIENTATION_LANDSCAPE;
|
||||
if (navBackdrop != null) {
|
||||
navBackdrop.setVisibility(mIsShowingNavBackdrop ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
updateNavColors();
|
||||
updateNavColors(lightBarController);
|
||||
}
|
||||
|
||||
private void updateNavColors() {
|
||||
mLightBarController.setQsCustomizing(mIsShowingNavBackdrop && isShown);
|
||||
void updateNavColors(LightBarController lightBarController) {
|
||||
lightBarController.setQsCustomizing(mIsShowingNavBackdrop && isShown);
|
||||
}
|
||||
|
||||
public void setContainer(NotificationsQuickSettingsContainer notificationsQsContainer) {
|
||||
@@ -137,17 +117,15 @@ public class QSCustomizer extends LinearLayout {
|
||||
*/
|
||||
void show(int x, int y, TileAdapter tileAdapter) {
|
||||
if (!isShown) {
|
||||
int containerLocation[] = findViewById(R.id.customize_container).getLocationOnScreen();
|
||||
int[] containerLocation = findViewById(R.id.customize_container).getLocationOnScreen();
|
||||
mX = x - containerLocation[0];
|
||||
mY = y - containerLocation[1];
|
||||
mUiEventLogger.log(QSEditEvent.QS_EDIT_OPEN);
|
||||
isShown = true;
|
||||
mOpening = true;
|
||||
setVisibility(View.VISIBLE);
|
||||
mClipper.animateCircularClip(mX, mY, true, new ExpandAnimatorListener(tileAdapter));
|
||||
mNotifQsContainer.setCustomizerAnimating(true);
|
||||
mNotifQsContainer.setCustomizerShowing(true);
|
||||
updateNavColors();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,7 +139,6 @@ public class QSCustomizer extends LinearLayout {
|
||||
setCustomizing(true);
|
||||
mNotifQsContainer.setCustomizerAnimating(false);
|
||||
mNotifQsContainer.setCustomizerShowing(true);
|
||||
updateNavColors();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,7 +170,6 @@ public class QSCustomizer extends LinearLayout {
|
||||
}
|
||||
mNotifQsContainer.setCustomizerAnimating(animate);
|
||||
mNotifQsContainer.setCustomizerShowing(false);
|
||||
updateNavColors();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,7 +189,7 @@ public class QSCustomizer extends LinearLayout {
|
||||
/** @param x,y Location on screen of animation center.
|
||||
*/
|
||||
public void setEditLocation(int x, int y) {
|
||||
int containerLocation[] = findViewById(R.id.customize_container).getLocationOnScreen();
|
||||
int[] containerLocation = findViewById(R.id.customize_container).getLocationOnScreen();
|
||||
mX = x - containerLocation[0];
|
||||
mY = y - containerLocation[1];
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.android.systemui.qs.customize;
|
||||
import static com.android.systemui.qs.customize.QSCustomizer.EXTRA_QS_CUSTOMIZING;
|
||||
import static com.android.systemui.qs.customize.QSCustomizer.MENU_RESET;
|
||||
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
@@ -37,7 +38,10 @@ import com.android.systemui.qs.QSEditEvent;
|
||||
import com.android.systemui.qs.QSFragment;
|
||||
import com.android.systemui.qs.QSTileHost;
|
||||
import com.android.systemui.qs.dagger.QSScope;
|
||||
import com.android.systemui.statusbar.phone.LightBarController;
|
||||
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.util.ViewController;
|
||||
|
||||
@@ -54,17 +58,17 @@ public class QSCustomizerController extends ViewController<QSCustomizer> {
|
||||
private final TileAdapter mTileAdapter;
|
||||
private final ScreenLifecycle mScreenLifecycle;
|
||||
private final KeyguardStateController mKeyguardStateController;
|
||||
private final LightBarController mLightBarController;
|
||||
private final ConfigurationController mConfigurationController;
|
||||
private final UiEventLogger mUiEventLogger;
|
||||
private final Toolbar mToolbar;
|
||||
|
||||
private final OnMenuItemClickListener mOnMenuItemClickListener = new OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case MENU_RESET:
|
||||
mUiEventLogger.log(QSEditEvent.QS_EDIT_RESET);
|
||||
reset();
|
||||
break;
|
||||
if (item.getItemId() == MENU_RESET) {
|
||||
mUiEventLogger.log(QSEditEvent.QS_EDIT_RESET);
|
||||
reset();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -72,25 +76,36 @@ public class QSCustomizerController extends ViewController<QSCustomizer> {
|
||||
|
||||
private final KeyguardStateController.Callback mKeyguardCallback =
|
||||
new KeyguardStateController.Callback() {
|
||||
@Override
|
||||
public void onKeyguardShowingChanged() {
|
||||
if (!mView.isAttachedToWindow()) return;
|
||||
if (mKeyguardStateController.isShowing() && !mView.isOpening()) {
|
||||
hide();
|
||||
}
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public void onKeyguardShowingChanged() {
|
||||
if (!mView.isAttachedToWindow()) return;
|
||||
if (mKeyguardStateController.isShowing() && !mView.isOpening()) {
|
||||
hide();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private final ConfigurationListener mConfigurationListener = new ConfigurationListener() {
|
||||
@Override
|
||||
public void onConfigChanged(Configuration newConfig) {
|
||||
mView.updateNavBackDrop(newConfig, mLightBarController);
|
||||
mView.updateResources();
|
||||
}
|
||||
};
|
||||
|
||||
@Inject
|
||||
protected QSCustomizerController(QSCustomizer view, TileQueryHelper tileQueryHelper,
|
||||
QSTileHost qsTileHost, TileAdapter tileAdapter, ScreenLifecycle screenLifecycle,
|
||||
KeyguardStateController keyguardStateController, UiEventLogger uiEventLogger) {
|
||||
KeyguardStateController keyguardStateController, LightBarController lightBarController,
|
||||
ConfigurationController configurationController, UiEventLogger uiEventLogger) {
|
||||
super(view);
|
||||
mTileQueryHelper = tileQueryHelper;
|
||||
mQsTileHost = qsTileHost;
|
||||
mTileAdapter = tileAdapter;
|
||||
mScreenLifecycle = screenLifecycle;
|
||||
mKeyguardStateController = keyguardStateController;
|
||||
mLightBarController = lightBarController;
|
||||
mConfigurationController = configurationController;
|
||||
mUiEventLogger = uiEventLogger;
|
||||
|
||||
mToolbar = mView.findViewById(com.android.internal.R.id.action_bar);
|
||||
@@ -98,6 +113,10 @@ public class QSCustomizerController extends ViewController<QSCustomizer> {
|
||||
|
||||
@Override
|
||||
protected void onViewAttached() {
|
||||
mView.updateNavBackDrop(getResources().getConfiguration(), mLightBarController);
|
||||
|
||||
mConfigurationController.addCallback(mConfigurationListener);
|
||||
|
||||
mTileQueryHelper.setListener(mTileAdapter);
|
||||
int halfMargin =
|
||||
getResources().getDimensionPixelSize(R.dimen.qs_tile_margin_horizontal) / 2;
|
||||
@@ -119,18 +138,14 @@ public class QSCustomizerController extends ViewController<QSCustomizer> {
|
||||
recyclerView.addItemDecoration(mTileAdapter.getMarginItemDecoration());
|
||||
|
||||
mToolbar.setOnMenuItemClickListener(mOnMenuItemClickListener);
|
||||
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
hide();
|
||||
}
|
||||
});
|
||||
mToolbar.setNavigationOnClickListener(v -> hide());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onViewDetached() {
|
||||
mTileQueryHelper.setListener(null);
|
||||
mToolbar.setOnMenuItemClickListener(null);
|
||||
mConfigurationController.removeCallback(mConfigurationListener);
|
||||
}
|
||||
|
||||
|
||||
@@ -150,9 +165,11 @@ public class QSCustomizerController extends ViewController<QSCustomizer> {
|
||||
mView.showImmediately();
|
||||
} else {
|
||||
mView.show(x, y, mTileAdapter);
|
||||
mUiEventLogger.log(QSEditEvent.QS_EDIT_OPEN);
|
||||
}
|
||||
mTileQueryHelper.queryTiles(mQsTileHost);
|
||||
mKeyguardStateController.addCallback(mKeyguardCallback);
|
||||
mView.updateNavColors(mLightBarController);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,6 +177,7 @@ public class QSCustomizerController extends ViewController<QSCustomizer> {
|
||||
public void setQs(QSFragment qsFragment) {
|
||||
mView.setQs(qsFragment);
|
||||
}
|
||||
|
||||
/** */
|
||||
public void restoreInstanceState(Bundle savedInstanceState) {
|
||||
boolean customizing = savedInstanceState.getBoolean(EXTRA_QS_CUSTOMIZING);
|
||||
@@ -213,6 +231,7 @@ public class QSCustomizerController extends ViewController<QSCustomizer> {
|
||||
mView.setCustomizing(false);
|
||||
save();
|
||||
mView.hide(animate);
|
||||
mView.updateNavColors(mLightBarController);
|
||||
mKeyguardStateController.removeCallback(mKeyguardCallback);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ import android.view.View;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.qs.QSPanel;
|
||||
import com.android.systemui.qs.QuickQSPanel;
|
||||
import com.android.systemui.qs.customize.QSCustomizer;
|
||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
@@ -104,11 +103,6 @@ public class InjectionInflationController {
|
||||
* Creates the QuickQSPanel.
|
||||
*/
|
||||
QuickQSPanel createQuickQSPanel();
|
||||
|
||||
/**
|
||||
* Creates the QSCustomizer.
|
||||
*/
|
||||
QSCustomizer createQSCustomizer();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user