summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Matt Pietal <mpietal@google.com> 2019-08-22 14:28:21 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-08-22 14:28:21 +0000
commit1e48ab52d570e797a5e02bcfecf04b7160551c3b (patch)
tree50c3069000e6320d63d5d6e9c6576f18b85f0cc6
parentc19e3196619eeddef6ed03d3760239a74667adcd (diff)
parent50c8b50b37743383f73ccf02ba14f5106b551cdf (diff)
Merge "Controls: Add a temporary space for home controls integration"
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/HomeControlsPlugin.java36
-rw-r--r--packages/SystemUI/res/layout/status_bar_expanded.xml13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java30
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();