This CL adds the following controllers for dealing with Controls in SystemUI: * ControlsController - Handles favorites and communication with other controllers * ControlsBindingController - Handles binding to the different services and comunication with them. * ControlsProviderLifecycleManager - Handles binding with one service and forwards API calls to it. * ControlsListingController - Handles finding and listing apps that satisfy the service requirement Additionally, this CL adds first versions of the management screen to add or remove favorites. These are persisted. To enable: * adb shell settings put secure systemui.controls_available 1 * restart To launch management activity: * Enable controls * adb shell am start com.android.systemui/.controls.management.ControlsProviderSelectorActivity Missing from this CL: * Multi user support * Documentation in the controller classes * Graceful rebinding * Throttling of Binder calls * Better dumps Test: atest com.android.systemui.controls Test: manual testing of favorite management activities Bug: 147732882 Change-Id: Ib4932b7f8fd3f2e3ee0ef1c28ddda1bec66c41e4
73 lines
2.8 KiB
XML
73 lines
2.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
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.
|
|
-->
|
|
<androidx.constraintlayout.widget.ConstraintLayout
|
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="100dp"
|
|
android:padding="15dp"
|
|
android:clickable="true"
|
|
android:focusable="true">
|
|
|
|
<ImageView
|
|
android:id="@+id/icon"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
app:layout_constraintStart_toStartOf="parent"
|
|
app:layout_constraintTop_toTopOf="parent" />
|
|
|
|
<TextView
|
|
android:id="@+id/status"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:textSize="12sp"
|
|
android:textColor="?android:attr/textColorPrimary"
|
|
android:fontFamily="@*android:string/config_bodyFontFamily"
|
|
android:paddingLeft="3dp"
|
|
app:layout_constraintBottom_toBottomOf="@+id/icon"
|
|
app:layout_constraintStart_toEndOf="@+id/icon" />
|
|
|
|
<TextView
|
|
android:id="@+id/title"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:textSize="18sp"
|
|
android:textColor="?android:attr/textColorPrimary"
|
|
android:fontFamily="@*android:string/config_headlineFontFamily"
|
|
app:layout_constraintBottom_toTopOf="@+id/subtitle"
|
|
app:layout_constraintStart_toStartOf="parent"
|
|
app:layout_constraintTop_toBottomOf="@+id/icon" />
|
|
|
|
<TextView
|
|
android:id="@+id/subtitle"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:textSize="16sp"
|
|
android:textColor="?android:attr/textColorSecondary"
|
|
android:fontFamily="@*android:string/config_headlineFontFamily"
|
|
app:layout_constraintBottom_toBottomOf="parent"
|
|
app:layout_constraintStart_toStartOf="parent" />
|
|
|
|
<CheckBox
|
|
android:id="@+id/favorite"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
app:layout_constraintEnd_toEndOf="parent"
|
|
app:layout_constraintTop_toTopOf="parent"
|
|
app:layout_constraintBottom_toBottomOf="parent"/>
|
|
</androidx.constraintlayout.widget.ConstraintLayout>
|