Loading packages/SystemUI/src/com/android/systemui/qs/QSDetailDisplayer.java 0 → 100644 +45 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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.qs; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.plugins.qs.DetailAdapter; import javax.inject.Inject; /** * Proxy class for talking with the QSPanel and showing custom content within it. */ @SysUISingleton public class QSDetailDisplayer { private QSPanelController mQsPanelController; @Inject public QSDetailDisplayer() { } public void setQsPanelController(QSPanelController qsPanelController) { mQsPanelController = qsPanelController; } /** Show the supplied DetailAdapter in the Quick Settings. */ public void showDetailAdapter(DetailAdapter detailAdapter, int x, int y) { if (mQsPanelController != null) { mQsPanelController.showDetailDapater(detailAdapter, x, y); } } } packages/SystemUI/src/com/android/systemui/qs/QSFooter.java +0 −12 Original line number Diff line number Diff line Loading @@ -17,22 +17,10 @@ package com.android.systemui.qs; import android.view.View; import androidx.annotation.Nullable; /** * The bottom footer of the quick settings panel. */ public interface QSFooter { /** * Sets the given {@link QSPanel} to be the one that will display the quick settings. */ void setQSPanel(@Nullable QSPanel panel); /** * Sets the given {@link QuickQSPanel} to be the one associated with quick settings. */ default void setQQSPanel(@Nullable QuickQSPanel panel) {}; /** * Sets whether or not the footer should be visible. * Loading packages/SystemUI/src/com/android/systemui/qs/QSFooterView.java +1 −19 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ public class QSFooterView extends FrameLayout { private boolean mShouldShowBuildText; private boolean mQsDisabled; private QuickQSPanel mQuickQsPanel; private boolean mExpanded; Loading Loading @@ -115,8 +114,6 @@ public class QSFooterView extends FrameLayout { updateResources(); addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> updateAnimator(right - left)); setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); setBuildText(); } Loading @@ -139,9 +136,7 @@ public class QSFooterView extends FrameLayout { } } private void updateAnimator(int width) { int numTiles = mQuickQsPanel != null ? mQuickQsPanel.getNumQuickTiles() : QuickQSPanel.getDefaultMaxTiles(); void updateAnimator(int width, int numTiles) { int size = mContext.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_size) - mContext.getResources().getDimensionPixelSize(dimen.qs_quick_tile_padding); int remaining = (width - numTiles * size) / (numTiles - 1); Loading Loading @@ -289,19 +284,6 @@ public class QSFooterView extends FrameLayout { return mExpanded && mMultiUserSwitch.isMultiUserEnabled(); } /** */ public void setQSPanel(final QSPanel qsPanel) { if (qsPanel != null) { mMultiUserSwitch.setQsPanel(qsPanel); qsPanel.setFooterPageIndicator(mPageIndicator); } } public void setQQSPanel(@Nullable QuickQSPanel panel) { mQuickQsPanel = panel; } void onUserInfoChanged(Drawable picture, boolean isGuestUser) { if (picture != null && isGuestUser && !(picture instanceof UserIconDrawable)) { picture = picture.getConstantState().newDrawable(getResources()).mutate(); Loading packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java +18 −16 Original line number Diff line number Diff line Loading @@ -26,8 +26,6 @@ import android.view.View; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.Nullable; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.keyguard.KeyguardUpdateMonitor; Loading @@ -35,6 +33,7 @@ import com.android.systemui.R; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.qs.dagger.QSScope; import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.phone.MultiUserSwitch; import com.android.systemui.statusbar.phone.SettingsButton; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.UserInfoController; Loading @@ -55,11 +54,15 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme private final DeviceProvisionedController mDeviceProvisionedController; private final UserTracker mUserTracker; private final QSPanelController mQsPanelController; private final QSDetailDisplayer mQsDetailDisplayer; private final QuickQSPanelController mQuickQSPanelController; private final TunerService mTunerService; private final MetricsLogger mMetricsLogger; private final SettingsButton mSettingsButton; private final TextView mBuildText; private final View mEdit; private final MultiUserSwitch mMultiUserSwitch; private final PageIndicator mPageIndicator; private final UserInfoController.OnUserInfoChangedListener mOnUserInfoChangedListener = new UserInfoController.OnUserInfoChangedListener() { Loading Loading @@ -119,8 +122,9 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme QSFooterViewController(QSFooterView view, UserManager userManager, UserInfoController userInfoController, ActivityStarter activityStarter, DeviceProvisionedController deviceProvisionedController, UserTracker userTracker, QSPanelController qsPanelController, TunerService tunerService, MetricsLogger metricsLogger) { QSPanelController qsPanelController, QSDetailDisplayer qsDetailDisplayer, QuickQSPanelController quickQSPanelController, TunerService tunerService, MetricsLogger metricsLogger) { super(view); mUserManager = userManager; mUserInfoController = userInfoController; Loading @@ -128,17 +132,24 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme mDeviceProvisionedController = deviceProvisionedController; mUserTracker = userTracker; mQsPanelController = qsPanelController; mQsDetailDisplayer = qsDetailDisplayer; mQuickQSPanelController = quickQSPanelController; mTunerService = tunerService; mMetricsLogger = metricsLogger; mSettingsButton = mView.findViewById(R.id.settings_button); mBuildText = mView.findViewById(R.id.build); mEdit = mView.findViewById(android.R.id.edit); mMultiUserSwitch = mView.findViewById(R.id.multi_user_switch); mPageIndicator = mView.findViewById(R.id.footer_page_indicator); } @Override protected void onViewAttached() { mView.addOnLayoutChangeListener( (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> mView.updateAnimator( right - left, mQuickQSPanelController.getNumQuickTiles())); mSettingsButton.setOnClickListener(mSettingsOnClickListener); mBuildText.setOnLongClickListener(view -> { CharSequence buildText = mBuildText.getText(); Loading @@ -158,6 +169,8 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme mActivityStarter.postQSRunnableDismissingKeyguard(() -> mQsPanelController.showEdit(view))); mMultiUserSwitch.setQSDetailDisplayer(mQsDetailDisplayer); mQsPanelController.setFooterPageIndicator(mPageIndicator); mView.updateEverything(isTunerEnabled()); } Loading @@ -166,12 +179,6 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme setListening(false); } @Override public void setQSPanel(@Nullable QSPanel panel) { mView.setQSPanel(panel); } @Override public void setVisibility(int visibility) { mView.setVisibility(visibility); Loading Loading @@ -219,11 +226,6 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme mView.setExpandClickListener(onClickListener); } @Override public void setQQSPanel(@Nullable QuickQSPanel panel) { mView.setQQSPanel(panel); } @Override public void disable(int state1, int state2, boolean animate) { mView.disable(state2, isTunerEnabled()); Loading packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +8 −5 Original line number Diff line number Diff line Loading @@ -80,6 +80,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler; private final InjectionInflationController mInjectionInflater; private final CommandQueue mCommandQueue; private final QSDetailDisplayer mQsDetailDisplayer; private final QSFragmentComponent.Factory mQsComponentFactory; private final QSTileHost mHost; private boolean mShowCollapsedOnKeyguard; Loading @@ -102,9 +104,12 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler, InjectionInflationController injectionInflater, QSTileHost qsTileHost, StatusBarStateController statusBarStateController, CommandQueue commandQueue, QSDetailDisplayer qsDetailDisplayer, QSFragmentComponent.Factory qsComponentFactory) { mRemoteInputQuickSettingsDisabler = remoteInputQsDisabler; mInjectionInflater = injectionInflater; mCommandQueue = commandQueue; mQsDetailDisplayer = qsDetailDisplayer; mQsComponentFactory = qsComponentFactory; commandQueue.observe(getLifecycle(), this); mHost = qsTileHost; Loading Loading @@ -144,6 +149,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca mQSPanelController.setHeaderContainer(view.findViewById(R.id.header_text_container)); mFooter = qsFragmentComponent.getQSFooter(); mQsDetailDisplayer.setQsPanelController(mQSPanelController); mQSContainerImplController = qsFragmentComponent.getQSContainerImplController(); mQSContainerImplController.init(); mContainer = mQSContainerImplController.getView(); Loading Loading @@ -183,6 +190,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca setListening(false); } mQSCustomizerController.setQs(null); mQsDetailDisplayer.setQsPanelController(null); } @Override Loading Loading @@ -254,7 +262,6 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca public void setHost(QSTileHost qsh) { mHeader.setQSPanel(mQSPanelController.getView()); mFooter.setQSPanel(mQSPanelController.getView()); mQSDetail.setHost(qsh); } Loading Loading @@ -321,10 +328,6 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca return mQSPanelController; } public QSPanel getQsPanel() { return mQSPanelController.getView(); } @Override public boolean isShowingDetail() { return mQSCustomizerController.isCustomizing() || mQSDetail.isShowingDetail(); Loading Loading
packages/SystemUI/src/com/android/systemui/qs/QSDetailDisplayer.java 0 → 100644 +45 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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.qs; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.plugins.qs.DetailAdapter; import javax.inject.Inject; /** * Proxy class for talking with the QSPanel and showing custom content within it. */ @SysUISingleton public class QSDetailDisplayer { private QSPanelController mQsPanelController; @Inject public QSDetailDisplayer() { } public void setQsPanelController(QSPanelController qsPanelController) { mQsPanelController = qsPanelController; } /** Show the supplied DetailAdapter in the Quick Settings. */ public void showDetailAdapter(DetailAdapter detailAdapter, int x, int y) { if (mQsPanelController != null) { mQsPanelController.showDetailDapater(detailAdapter, x, y); } } }
packages/SystemUI/src/com/android/systemui/qs/QSFooter.java +0 −12 Original line number Diff line number Diff line Loading @@ -17,22 +17,10 @@ package com.android.systemui.qs; import android.view.View; import androidx.annotation.Nullable; /** * The bottom footer of the quick settings panel. */ public interface QSFooter { /** * Sets the given {@link QSPanel} to be the one that will display the quick settings. */ void setQSPanel(@Nullable QSPanel panel); /** * Sets the given {@link QuickQSPanel} to be the one associated with quick settings. */ default void setQQSPanel(@Nullable QuickQSPanel panel) {}; /** * Sets whether or not the footer should be visible. * Loading
packages/SystemUI/src/com/android/systemui/qs/QSFooterView.java +1 −19 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ public class QSFooterView extends FrameLayout { private boolean mShouldShowBuildText; private boolean mQsDisabled; private QuickQSPanel mQuickQsPanel; private boolean mExpanded; Loading Loading @@ -115,8 +114,6 @@ public class QSFooterView extends FrameLayout { updateResources(); addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> updateAnimator(right - left)); setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); setBuildText(); } Loading @@ -139,9 +136,7 @@ public class QSFooterView extends FrameLayout { } } private void updateAnimator(int width) { int numTiles = mQuickQsPanel != null ? mQuickQsPanel.getNumQuickTiles() : QuickQSPanel.getDefaultMaxTiles(); void updateAnimator(int width, int numTiles) { int size = mContext.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_size) - mContext.getResources().getDimensionPixelSize(dimen.qs_quick_tile_padding); int remaining = (width - numTiles * size) / (numTiles - 1); Loading Loading @@ -289,19 +284,6 @@ public class QSFooterView extends FrameLayout { return mExpanded && mMultiUserSwitch.isMultiUserEnabled(); } /** */ public void setQSPanel(final QSPanel qsPanel) { if (qsPanel != null) { mMultiUserSwitch.setQsPanel(qsPanel); qsPanel.setFooterPageIndicator(mPageIndicator); } } public void setQQSPanel(@Nullable QuickQSPanel panel) { mQuickQsPanel = panel; } void onUserInfoChanged(Drawable picture, boolean isGuestUser) { if (picture != null && isGuestUser && !(picture instanceof UserIconDrawable)) { picture = picture.getConstantState().newDrawable(getResources()).mutate(); Loading
packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java +18 −16 Original line number Diff line number Diff line Loading @@ -26,8 +26,6 @@ import android.view.View; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.Nullable; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.keyguard.KeyguardUpdateMonitor; Loading @@ -35,6 +33,7 @@ import com.android.systemui.R; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.qs.dagger.QSScope; import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.phone.MultiUserSwitch; import com.android.systemui.statusbar.phone.SettingsButton; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.UserInfoController; Loading @@ -55,11 +54,15 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme private final DeviceProvisionedController mDeviceProvisionedController; private final UserTracker mUserTracker; private final QSPanelController mQsPanelController; private final QSDetailDisplayer mQsDetailDisplayer; private final QuickQSPanelController mQuickQSPanelController; private final TunerService mTunerService; private final MetricsLogger mMetricsLogger; private final SettingsButton mSettingsButton; private final TextView mBuildText; private final View mEdit; private final MultiUserSwitch mMultiUserSwitch; private final PageIndicator mPageIndicator; private final UserInfoController.OnUserInfoChangedListener mOnUserInfoChangedListener = new UserInfoController.OnUserInfoChangedListener() { Loading Loading @@ -119,8 +122,9 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme QSFooterViewController(QSFooterView view, UserManager userManager, UserInfoController userInfoController, ActivityStarter activityStarter, DeviceProvisionedController deviceProvisionedController, UserTracker userTracker, QSPanelController qsPanelController, TunerService tunerService, MetricsLogger metricsLogger) { QSPanelController qsPanelController, QSDetailDisplayer qsDetailDisplayer, QuickQSPanelController quickQSPanelController, TunerService tunerService, MetricsLogger metricsLogger) { super(view); mUserManager = userManager; mUserInfoController = userInfoController; Loading @@ -128,17 +132,24 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme mDeviceProvisionedController = deviceProvisionedController; mUserTracker = userTracker; mQsPanelController = qsPanelController; mQsDetailDisplayer = qsDetailDisplayer; mQuickQSPanelController = quickQSPanelController; mTunerService = tunerService; mMetricsLogger = metricsLogger; mSettingsButton = mView.findViewById(R.id.settings_button); mBuildText = mView.findViewById(R.id.build); mEdit = mView.findViewById(android.R.id.edit); mMultiUserSwitch = mView.findViewById(R.id.multi_user_switch); mPageIndicator = mView.findViewById(R.id.footer_page_indicator); } @Override protected void onViewAttached() { mView.addOnLayoutChangeListener( (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> mView.updateAnimator( right - left, mQuickQSPanelController.getNumQuickTiles())); mSettingsButton.setOnClickListener(mSettingsOnClickListener); mBuildText.setOnLongClickListener(view -> { CharSequence buildText = mBuildText.getText(); Loading @@ -158,6 +169,8 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme mActivityStarter.postQSRunnableDismissingKeyguard(() -> mQsPanelController.showEdit(view))); mMultiUserSwitch.setQSDetailDisplayer(mQsDetailDisplayer); mQsPanelController.setFooterPageIndicator(mPageIndicator); mView.updateEverything(isTunerEnabled()); } Loading @@ -166,12 +179,6 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme setListening(false); } @Override public void setQSPanel(@Nullable QSPanel panel) { mView.setQSPanel(panel); } @Override public void setVisibility(int visibility) { mView.setVisibility(visibility); Loading Loading @@ -219,11 +226,6 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme mView.setExpandClickListener(onClickListener); } @Override public void setQQSPanel(@Nullable QuickQSPanel panel) { mView.setQQSPanel(panel); } @Override public void disable(int state1, int state2, boolean animate) { mView.disable(state2, isTunerEnabled()); Loading
packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +8 −5 Original line number Diff line number Diff line Loading @@ -80,6 +80,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler; private final InjectionInflationController mInjectionInflater; private final CommandQueue mCommandQueue; private final QSDetailDisplayer mQsDetailDisplayer; private final QSFragmentComponent.Factory mQsComponentFactory; private final QSTileHost mHost; private boolean mShowCollapsedOnKeyguard; Loading @@ -102,9 +104,12 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler, InjectionInflationController injectionInflater, QSTileHost qsTileHost, StatusBarStateController statusBarStateController, CommandQueue commandQueue, QSDetailDisplayer qsDetailDisplayer, QSFragmentComponent.Factory qsComponentFactory) { mRemoteInputQuickSettingsDisabler = remoteInputQsDisabler; mInjectionInflater = injectionInflater; mCommandQueue = commandQueue; mQsDetailDisplayer = qsDetailDisplayer; mQsComponentFactory = qsComponentFactory; commandQueue.observe(getLifecycle(), this); mHost = qsTileHost; Loading Loading @@ -144,6 +149,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca mQSPanelController.setHeaderContainer(view.findViewById(R.id.header_text_container)); mFooter = qsFragmentComponent.getQSFooter(); mQsDetailDisplayer.setQsPanelController(mQSPanelController); mQSContainerImplController = qsFragmentComponent.getQSContainerImplController(); mQSContainerImplController.init(); mContainer = mQSContainerImplController.getView(); Loading Loading @@ -183,6 +190,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca setListening(false); } mQSCustomizerController.setQs(null); mQsDetailDisplayer.setQsPanelController(null); } @Override Loading Loading @@ -254,7 +262,6 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca public void setHost(QSTileHost qsh) { mHeader.setQSPanel(mQSPanelController.getView()); mFooter.setQSPanel(mQSPanelController.getView()); mQSDetail.setHost(qsh); } Loading Loading @@ -321,10 +328,6 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca return mQSPanelController; } public QSPanel getQsPanel() { return mQSPanelController.getView(); } @Override public boolean isShowingDetail() { return mQSCustomizerController.isCustomizing() || mQSDetail.isShowingDetail(); Loading