2/N Remove last injection from QSCustomizer

Bug: 168904199
Test: atest SystemUITests && manual
Change-Id: Ie3453144012af7c34013947e3730a289dd5375e3
This commit is contained in:
Dave Mankoff
2020-10-16 17:35:29 -04:00
parent 7d5df19aad
commit bad683f142
3 changed files with 52 additions and 63 deletions

View File

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

View File

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

View File

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