diff options
3 files changed, 52 insertions, 63 deletions
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 51a4af87a436..3291aa0e2099 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java @@ -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];      } diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java index 9cef87eb0479..0f1616768eca 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java @@ -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);          }      } diff --git a/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java b/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java index e79d432b3b15..4b4e1df21bd0 100644 --- a/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java +++ b/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java @@ -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();      }  |