Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 166392ff authored by Aaron Heuckroth's avatar Aaron Heuckroth
Browse files

Creates a new grid-based global actions menu on power button hold.

Test: Automated tests should pass. Menu should render at correct size, shape, and position for 0-9 action items.

Bug: 121385065

Change-Id: I3448e7e333ea8fdaeb09a241249ce7521920169e
parent dc05a4e1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ public class FeatureFlagUtils {
    public static final String SAFETY_HUB = "settings_safety_hub";
    public static final String SCREENRECORD_LONG_PRESS = "settings_screenrecord_long_press";
    public static final String AOD_IMAGEWALLPAPER_ENABLED = "settings_aod_imagewallpaper_enabled";
    public static final String GLOBAL_ACTIONS_GRID_ENABLED = "settings_global_actions_grid_enabled";

    private static final Map<String, String> DEFAULT_FLAGS;
    private static final Set<String> OBSERVABLE_FLAGS;
@@ -60,6 +61,7 @@ public class FeatureFlagUtils {
        DEFAULT_FLAGS.put(SAFETY_HUB, "false");
        DEFAULT_FLAGS.put(SCREENRECORD_LONG_PRESS, "false");
        DEFAULT_FLAGS.put(AOD_IMAGEWALLPAPER_ENABLED, "false");
        DEFAULT_FLAGS.put(GLOBAL_ACTIONS_GRID_ENABLED, "false");

        OBSERVABLE_FLAGS = new HashSet<>();
        OBSERVABLE_FLAGS.add(AOD_IMAGEWALLPAPER_ENABLED);
+83 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.globalactions.GlobalActionsGridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@id/global_actions_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:clipToPadding="false"
    android:theme="@style/qs_theme"
    android:gravity="bottom|center"
    android:clipChildren="false"
>

    <LinearLayout
        android:layout_height="290dp"
        android:layout_width="412dp"
        android:gravity="bottom"
        android:padding="0dp"
        android:layout_marginBottom="@dimen/global_actions_grid_container_bottom_margin"
    >
        <!-- For separated items-->
        <LinearLayout
            android:id="@+id/separated_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/global_actions_grid_side_margin"
            android:layout_marginRight="@dimen/global_actions_grid_side_margin"
            android:paddingTop="@dimen/global_actions_grid_top_padding"
            android:paddingLeft="@dimen/global_actions_grid_left_padding"
            android:paddingBottom="@dimen/global_actions_grid_bottom_padding"
            android:paddingRight="@dimen/global_actions_grid_right_padding"
            android:orientation="vertical"
            android:background="?android:attr/colorBackgroundFloating"
            android:translationZ="@dimen/global_actions_translate"
        />

        <Space android:layout_width="match_parent" android:layout_height="2dp"
               android:layout_weight="1" />

        <!-- Grid of action items -->
        <com.android.systemui.globalactions.ListGridLayout
            android:id="@android:id/list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:orientation="horizontal"
            android:layoutDirection="rtl"
            android:layout_marginRight="@dimen/global_actions_grid_side_margin"
            android:translationZ="@dimen/global_actions_translate"
            android:paddingLeft="@dimen/global_actions_grid_left_padding"
            android:paddingRight="@dimen/global_actions_grid_right_padding"
            android:paddingTop="@dimen/global_actions_grid_top_padding"
            android:paddingBottom="@dimen/global_actions_grid_bottom_padding"
            android:background="?android:attr/colorBackgroundFloating"
        >
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|right"
                android:visibility="gone"
                android:gravity="bottom"
                android:orientation="vertical"
            />
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|right"
                android:visibility="gone"
                android:gravity="bottom"
                android:orientation="vertical"
            />
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|right"
                android:visibility="gone"
                android:gravity="bottom"
                android:orientation="vertical"
            />
        </com.android.systemui.globalactions.ListGridLayout>
    </LinearLayout>

</com.android.systemui.globalactions.GlobalActionsGridLayout>
+61 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 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.
-->

<!-- RelativeLayouts have an issue enforcing minimum heights, so just
     work around this for now with LinearLayouts. -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="72dp"
    android:layout_height="72dp"
    android:gravity="center"
    android:orientation="vertical"
    android:layout_marginTop="@dimen/global_actions_grid_item_vertical_margin"
    android:layout_marginBottom="@dimen/global_actions_grid_item_vertical_margin"
    android:layout_marginLeft="@dimen/global_actions_grid_item_side_margin"
    android:layout_marginRight="@dimen/global_actions_grid_item_side_margin"
    android:paddingEnd="4dip"
    android:paddingStart="4dip">

    <ImageView
        android:id="@*android:id/icon"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_gravity="center"
        android:scaleType="center"
        android:alpha="?android:attr/primaryContentAlpha"
    />

    <TextView
        android:id="@*android:id/message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|center_horizontal"
        android:paddingTop="10dp"
        android:gravity="center"
        android:textSize="12sp"
        android:textAppearance="?android:attr/textAppearanceSmall"
    />

    <TextView
        android:id="@*android:id/status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|center_horizontal"
        android:gravity="center"
        android:textColor="?android:attr/textColorTertiary"
        android:textAppearance="?android:attr/textAppearanceSmall"
    />
</LinearLayout>
+12 −0
Original line number Diff line number Diff line
@@ -834,6 +834,18 @@

    <dimen name="global_actions_panel_width">120dp</dimen>

    <dimen name="global_actions_grid_container_bottom_margin">16dp</dimen>

    <dimen name="global_actions_grid_side_margin">4dp</dimen>
    <dimen name="global_actions_grid_separated_panel_width">104dp</dimen>
    <dimen name="global_actions_grid_top_padding">8dp</dimen>
    <dimen name="global_actions_grid_bottom_padding">8dp</dimen>
    <dimen name="global_actions_grid_left_padding">4dp</dimen>
    <dimen name="global_actions_grid_right_padding">4dp</dimen>

    <dimen name="global_actions_grid_item_side_margin">12dp</dimen>
    <dimen name="global_actions_grid_item_vertical_margin">8dp</dimen>

    <dimen name="global_actions_top_padding">120dp</dimen>

    <dimen name="global_actions_padding">12dp</dimen>
+4 −4
Original line number Diff line number Diff line
@@ -26,11 +26,11 @@ import android.widget.LinearLayout;
 * Layout class representing the Global Actions menu which appears when the power button is held.
 */
public abstract class MultiListLayout extends LinearLayout {
    boolean mHasOutsideTouch;
    boolean mHasSeparatedView;
    protected boolean mHasOutsideTouch;
    protected boolean mHasSeparatedView;

    int mExpectedSeparatedItemCount;
    int mExpectedListItemCount;
    protected int mExpectedSeparatedItemCount;
    protected int mExpectedListItemCount;

    public MultiListLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
Loading