diff options
| author | 2019-08-22 14:28:21 +0000 | |
|---|---|---|
| committer | 2019-08-22 14:28:21 +0000 | |
| commit | 1e48ab52d570e797a5e02bcfecf04b7160551c3b (patch) | |
| tree | 50c3069000e6320d63d5d6e9c6576f18b85f0cc6 | |
| parent | c19e3196619eeddef6ed03d3760239a74667adcd (diff) | |
| parent | 50c8b50b37743383f73ccf02ba14f5106b551cdf (diff) | |
Merge "Controls: Add a temporary space for home controls integration"
3 files changed, 77 insertions, 2 deletions
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 000000000000..cac673fdbf0b --- /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 7d403b24354c..7a9400887c75 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" /> + <!-- Temporary area to test out home controls --> + <LinearLayout + android:id="@+id/home_controls_layout" + android:layout_width="match_parent" + android:layout_height="125dp" + android:layout_gravity="@integer/notification_panel_layout_gravity" + android:visibility="gone" + android:padding="8dp" + android:layout_margin="5dp" + android:background="?android:attr/colorBackgroundFloating" + android:orientation="vertical"> + </LinearLayout> + <com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout android:id="@+id/notification_stack_scroller" android:layout_marginTop="@dimen/notification_panel_margin_top" diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index c17173063fc9..c76cdcb85c34 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -53,6 +53,7 @@ import android.view.ViewGroup; import android.view.WindowInsets; import android.view.accessibility.AccessibilityManager; import android.widget.FrameLayout; +import android.widget.LinearLayout; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; @@ -68,10 +69,13 @@ import com.android.systemui.R; import com.android.systemui.fragments.FragmentHostManager; import com.android.systemui.fragments.FragmentHostManager.FragmentListener; import com.android.systemui.plugins.FalsingManager; +import com.android.systemui.plugins.HomeControlsPlugin; +import com.android.systemui.plugins.PluginListener; import com.android.systemui.plugins.qs.QS; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener; import com.android.systemui.qs.QSFragment; +import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.GestureRecorder; @@ -192,6 +196,7 @@ public class NotificationPanelView extends PanelView implements private View mQsNavbarScrim; protected NotificationsQuickSettingsContainer mNotificationContainerParent; protected NotificationStackScrollLayout mNotificationStackScroller; + protected LinearLayout mHomeControlsLayout; private boolean mAnimateNextPositionUpdate; private int mTrackingPointer; @@ -450,6 +455,7 @@ public class NotificationPanelView extends PanelView implements mBigClockContainer = findViewById(R.id.big_clock_container); keyguardClockSwitch.setBigClockContainer(mBigClockContainer); + mHomeControlsLayout = findViewById(R.id.home_controls_layout); mNotificationContainerParent = findViewById(R.id.notification_container_parent); mNotificationStackScroller = findViewById(R.id.notification_stack_scroller); mNotificationStackScroller.setOnHeightChangedListener(this); @@ -480,6 +486,21 @@ public class NotificationPanelView extends PanelView implements } } }); + + Dependency.get(PluginManager.class).addPluginListener( + new PluginListener<HomeControlsPlugin>() { + + @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(); |