diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/HomeControlsPlugin.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/HomeControlsPlugin.java new file mode 100644 index 0000000000000..cac673fdbf0b1 --- /dev/null +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/HomeControlsPlugin.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2019 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; + +import android.view.ViewGroup; + +import com.android.systemui.plugins.annotations.ProvidesInterface; + +/** + * Test plugin for home controls + */ +@ProvidesInterface(action = HomeControlsPlugin.ACTION, version = HomeControlsPlugin.VERSION) +public interface HomeControlsPlugin extends Plugin { + + String ACTION = "com.android.systemui.action.PLUGIN_HOME_CONTROLS"; + int VERSION = 1; + + /** + * Pass the container for the plugin to use however it wants. Ideally the plugin impl + * will add home controls to this space. + */ + void sendParentGroup(ViewGroup group); +} diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml index 7d403b24354c6..7a9400887c757 100644 --- a/packages/SystemUI/res/layout/status_bar_expanded.xml +++ b/packages/SystemUI/res/layout/status_bar_expanded.xml @@ -55,6 +55,19 @@ android:clipChildren="false" systemui:viewType="com.android.systemui.plugins.qs.QS" /> + + + + () { + + @Override + public void onPluginConnected(HomeControlsPlugin plugin, + Context pluginContext) { + plugin.sendParentGroup(mHomeControlsLayout); + } + + @Override + public void onPluginDisconnected(HomeControlsPlugin plugin) { + + } + }, HomeControlsPlugin.class, false); } @Override @@ -1270,9 +1291,11 @@ public class NotificationPanelView extends PanelView implements if (mQsExpandImmediate) { mNotificationStackScroller.setVisibility(View.GONE); mQsFrame.setVisibility(View.VISIBLE); + mHomeControlsLayout.setVisibility(View.VISIBLE); } else { mNotificationStackScroller.setVisibility(View.VISIBLE); mQsFrame.setVisibility(View.GONE); + mHomeControlsLayout.setVisibility(View.GONE); } } return false; @@ -1551,6 +1574,7 @@ public class NotificationPanelView extends PanelView implements if (mKeyguardShowing && isQsSplitEnabled()) { mNotificationStackScroller.setVisibility(View.VISIBLE); mQsFrame.setVisibility(View.VISIBLE); + mHomeControlsLayout.setVisibility(View.GONE); } if (oldState == StatusBarState.KEYGUARD @@ -2099,8 +2123,10 @@ public class NotificationPanelView extends PanelView implements t = (expandedHeight - panelHeightQsCollapsed) / (panelHeightQsExpanded - panelHeightQsCollapsed); } - setQsExpansion(mQsMinExpansionHeight - + t * (mQsMaxExpansionHeight - mQsMinExpansionHeight)); + float targetHeight = mQsMinExpansionHeight + + t * (mQsMaxExpansionHeight - mQsMinExpansionHeight); + setQsExpansion(targetHeight); + mHomeControlsLayout.setTranslationY(targetHeight); } updateExpandedHeight(expandedHeight); updateHeader();