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

Commit 1bfd08f2 authored by Mady Mellor's avatar Mady Mellor Committed by Android (Google) Code Review
Browse files

Merge changes from topic 'nmr-plugin'

* changes:
  Add snooze to notification menu row
  Add snooze listener so that a plugin can snooze a notification
  Change NotificationGuts to contain a view
  Rename notification settings icon row / gear to notification menu row
  Create + implement plugin for NotificationSettingsIconRow
parents 10f91087 04d7a0fc
Loading
Loading
Loading
Loading
+74 −0
Original line number Diff line number Diff line

package com.android.systemui.plugins.statusbar;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.service.notification.StatusBarNotification;
import android.view.View;

import java.util.ArrayList;

import com.android.systemui.plugins.Plugin;

public interface NotificationMenuRowProvider extends Plugin {

    public static final String ACTION = "com.android.systemui.action.PLUGIN_NOTIFICATION_MENU_ROW";

    public static final int VERSION = 1;

    /**
     * Returns a list of items to populate the menu 'behind' a notification.
     */
    public ArrayList<MenuItem> getMenuItems(Context context);

    public interface OnMenuClickListener {
        public void onMenuClicked(View row, int x, int y, MenuItem menu);

        public void onMenuReset(View row);
    }

    public interface GutsInteractionListener {
        public void onInteraction(View view);

        public void closeGuts(View view);
    }

    public interface GutsContent {
        public void setInteractionListener(GutsInteractionListener listener);

        public View getContentView();

        public boolean handleCloseControls();
    }

    public interface SnoozeGutsContent extends GutsContent {
        public void setSnoozeListener(SnoozeListener listener);

        public void setStatusBarNotification(StatusBarNotification sbn);
    }

    public interface SnoozeListener {
        public void snoozeNotification(StatusBarNotification sbn, long snoozeUntil);
    }

    public static class MenuItem {
        public Drawable icon;
        public String menuDescription;
        public View menuView;
        public GutsContent gutsContent;

        public MenuItem(Drawable i, String s, GutsContent content) {
            icon = i;
            menuDescription = s;
            gutsContent = content;
        }

        public View getGutsView() {
            return gutsContent.getContentView();
        }

        public boolean onTouch(View v, int x, int y) {
            return false;
        }
    }
}
+12 −0
Original line number Diff line number Diff line
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z"
        android:fillColor="#757575"/>
    <path
        android:pathData="M12.5,7H11v6l5.25,3.15 0.75,-1.23 -4.5,-2.67z"
        android:fillColor="#757575"/>
</vector>
+1 −122
Original line number Diff line number Diff line
@@ -23,125 +23,4 @@
    android:visibility="gone"
    android:clickable="true"
    android:gravity="top|start"
    android:orientation="vertical"
    android:paddingStart="@*android:dimen/notification_content_margin_start"
    android:paddingEnd="8dp"
    android:background="@color/notification_guts_bg_color"
    android:theme="@*android:style/Theme.DeviceDefault.Light">

    <!-- header -->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="20dp"
        android:paddingEnd="8dp"
        android:paddingBottom="15dp"
        android:id="@+id/notification_guts_header">
        <TextView
            android:id="@+id/pkgname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            style="@style/TextAppearance.NotificationGuts.Secondary" />
        <TextView
            android:id="@+id/channel_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_below="@id/pkgname"
            style="@style/TextAppearance.NotificationGuts.Header" />
        <Switch
            android:id="@+id/channel_enabled_switch"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:background="@null" />
    </RelativeLayout>
    <!-- Importance radio buttons -->
    <LinearLayout
        android:id="@+id/importance"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <RadioGroup
            android:id="@+id/importance_buttons"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingEnd="@*android:dimen/notification_content_margin_end">
            <RadioButton
                android:id="@+id/high_importance"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/notification_inline_importance_height"
                style="@style/TextAppearance.NotificationGuts.Radio"
                android:buttonTint="@color/notification_guts_buttons" />
            <RadioButton
                android:id="@+id/default_importance"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/notification_inline_importance_height"
                style="@style/TextAppearance.NotificationGuts.Radio"
                android:buttonTint="@color/notification_guts_buttons" />
            <RadioButton
                android:id="@+id/low_importance"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/notification_inline_importance_height"
                style="@style/TextAppearance.NotificationGuts.Radio"
                android:buttonTint="@color/notification_guts_buttons" />
            <RadioButton
                android:id="@+id/min_importance"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/notification_inline_importance_height"
                style="@style/TextAppearance.NotificationGuts.Radio"
                android:buttonTint="@color/notification_guts_buttons" />
        </RadioGroup>
        <LinearLayout
            android:id="@+id/importance_buttons_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <include layout="@layout/notification_guts_importance_text"/>
            <include layout="@layout/notification_guts_importance_text"/>
            <include layout="@layout/notification_guts_importance_text"/>
            <include layout="@layout/notification_guts_importance_text"/>
        </LinearLayout>
    </LinearLayout>
    <!-- Channel Disabled Text -->
    <TextView
        android:id="@+id/channel_disabled"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/notification_channel_disabled"
        style="@style/TextAppearance.NotificationGuts.Secondary" />
    <!-- Settings and Done buttons -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:paddingTop="16dp"
        android:paddingBottom="8dp" >

        <TextView
            android:id="@+id/more_settings"
            android:text="@string/notification_more_settings"
            android:layout_width="wrap_content"
            android:layout_height="36dp"
            style="@style/TextAppearance.NotificationGuts.Button"
            android:background="@drawable/btn_borderless_rect"
            android:gravity="center"
            android:paddingEnd="8dp"
            android:paddingStart="8dp"
            android:focusable="true" />

        <TextView
            android:id="@+id/done"
            android:text="@string/notification_done"
            android:layout_width="wrap_content"
            android:layout_height="36dp"
            style="@style/TextAppearance.NotificationGuts.Button"
            android:background="@drawable/btn_borderless_rect"
            android:gravity="center"
            android:layout_marginStart="8dp"
            android:layout_marginEnd="8dp"
            android:focusable="true"/>
    </LinearLayout>
</com.android.systemui.statusbar.NotificationGuts>
    android:theme="@*android:style/Theme.DeviceDefault.Light"/>
+146 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
    Copyright 2017, 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.
-->

<com.android.systemui.statusbar.NotificationInfo
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/notification_guts"
        android:clickable="true"
        android:gravity="top|start"
        android:orientation="vertical"
        android:paddingStart="@*android:dimen/notification_content_margin_start"
        android:paddingEnd="8dp"
        android:background="@color/notification_guts_bg_color"
        android:theme="@*android:style/Theme.DeviceDefault.Light">

    <!-- header -->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="20dp"
        android:paddingEnd="8dp"
        android:paddingBottom="15dp"
        android:id="@+id/notification_guts_header">
        <TextView
            android:id="@+id/pkgname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            style="@style/TextAppearance.NotificationGuts.Secondary" />
        <TextView
            android:id="@+id/channel_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_below="@id/pkgname"
            style="@style/TextAppearance.NotificationGuts.Header" />
        <Switch
            android:id="@+id/channel_enabled_switch"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:background="@null" />
    </RelativeLayout>
    <!-- Importance radio buttons -->
    <LinearLayout
        android:id="@+id/importance"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <RadioGroup
            android:id="@+id/importance_buttons"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingEnd="@*android:dimen/notification_content_margin_end">
            <RadioButton
                android:id="@+id/high_importance"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/notification_inline_importance_height"
                style="@style/TextAppearance.NotificationGuts.Radio"
                android:buttonTint="@color/notification_guts_buttons" />
            <RadioButton
                android:id="@+id/default_importance"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/notification_inline_importance_height"
                style="@style/TextAppearance.NotificationGuts.Radio"
                android:buttonTint="@color/notification_guts_buttons" />
            <RadioButton
                android:id="@+id/low_importance"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/notification_inline_importance_height"
                style="@style/TextAppearance.NotificationGuts.Radio"
                android:buttonTint="@color/notification_guts_buttons" />
            <RadioButton
                android:id="@+id/min_importance"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/notification_inline_importance_height"
                style="@style/TextAppearance.NotificationGuts.Radio"
                android:buttonTint="@color/notification_guts_buttons" />
        </RadioGroup>
        <LinearLayout
            android:id="@+id/importance_buttons_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <include layout="@layout/notification_guts_importance_text"/>
            <include layout="@layout/notification_guts_importance_text"/>
            <include layout="@layout/notification_guts_importance_text"/>
            <include layout="@layout/notification_guts_importance_text"/>
        </LinearLayout>
    </LinearLayout>
    <!-- Channel Disabled Text -->
    <TextView
        android:id="@+id/channel_disabled"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/notification_channel_disabled"
        style="@style/TextAppearance.NotificationGuts.Secondary" />
    <!-- Settings and Done buttons -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:paddingTop="16dp"
        android:paddingBottom="8dp" >

        <TextView
            android:id="@+id/more_settings"
            android:text="@string/notification_more_settings"
            android:layout_width="wrap_content"
            android:layout_height="36dp"
            style="@style/TextAppearance.NotificationGuts.Button"
            android:background="@drawable/btn_borderless_rect"
            android:gravity="center"
            android:paddingEnd="8dp"
            android:paddingStart="8dp"
            android:focusable="true" />

        <TextView
            android:id="@+id/done"
            android:text="@string/notification_done"
            android:layout_width="wrap_content"
            android:layout_height="36dp"
            style="@style/TextAppearance.NotificationGuts.Button"
            android:background="@drawable/btn_borderless_rect"
            android:gravity="center"
            android:layout_marginStart="8dp"
            android:layout_marginEnd="8dp"
            android:focusable="true"/>
    </LinearLayout>
</com.android.systemui.statusbar.NotificationInfo>
+3 −17
Original line number Diff line number Diff line
@@ -14,23 +14,9 @@
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<com.android.systemui.statusbar.NotificationSettingsIconRow
<com.android.systemui.statusbar.NotificationMenuRow
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:systemui="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="invisible"
    >

    <com.android.systemui.statusbar.AlphaOptimizedImageView
        android:id="@+id/gear_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="@dimen/notification_gear_padding"
        android:src="@drawable/ic_settings"
        android:tint="@color/notification_gear_color"
        android:alpha="0"
        android:background="?android:attr/selectableItemBackgroundBorderless"
        />

</com.android.systemui.statusbar.NotificationSettingsIconRow>
 No newline at end of file
    android:visibility="invisible"/>
 No newline at end of file
Loading