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

Commit 879c5e07 authored by Daniel Sandler's avatar Daniel Sandler
Browse files

New InboxStyle template for expanded notifications.

Bug: 6336834
Change-Id: I67b273350b984673cbfb19267451a3782d0477fc
parent b4bc99e8
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -3756,6 +3756,12 @@ package android.app {
    method public android.app.Notification.Builder setWhen(long);
  }
  public static class Notification.InboxStyle {
    ctor public Notification.InboxStyle(android.app.Notification.Builder);
    method public android.app.Notification.InboxStyle addLine(java.lang.CharSequence);
    method public android.app.Notification build();
  }
  public class NotificationManager {
    method public void cancel(int);
    method public void cancel(java.lang.String, int);
+56 −0
Original line number Diff line number Diff line
@@ -1696,4 +1696,60 @@ public class Notification implements Parcelable
            return wip;
        }
    }

    /**
     * Helper class for generating large-format notifications that include a list of (up to 5) strings.
     * 
     * This class is a "rebuilder": It consumes a Builder object and modifies its behavior, like so:
     * <pre class="prettyprint">
     * Notification noti = new Notification.DigestStyle(
     *      new Notification.Builder()
     *         .setContentTitle(&quot;New mail from &quot; + sender.toString())
     *         .setContentText(subject)
     *         .setSmallIcon(R.drawable.new_mail)
     *         .setLargeIcon(aBitmap))
     *      .addLine(str1)
     *      .addLine(str2)
     *      .build();
     * </pre>
     * 
     * @see Notification#bigContentView
     */
    public static class InboxStyle {
        private Builder mBuilder;
        private ArrayList<CharSequence> mTexts = new ArrayList<CharSequence>(5);

        public InboxStyle(Builder builder) {
            mBuilder = builder;
        }

        public InboxStyle addLine(CharSequence cs) {
            mTexts.add(cs);
            return this;
        }

        private RemoteViews makeBigContentView() {
            RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(R.layout.notification_template_inbox);

            int[] rowIds = {R.id.inbox_text0, R.id.inbox_text1, R.id.inbox_text2, R.id.inbox_text3, R.id.inbox_text4};
            
            int i=0;
            while (i < mTexts.size() && i < rowIds.length) {
                CharSequence str = mTexts.get(i);
                if (str != null && !str.equals("")) {
                    contentView.setViewVisibility(rowIds[i], View.VISIBLE);
                    contentView.setTextViewText(rowIds[i], str);
                }
                i++;
            }

            return contentView;
        }

        public Notification build() {
            Notification wip = mBuilder.getNotification();
            wip.bigContentView = makeBigContentView();
            return wip;
        }
    }
}
+177 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2012 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.
-->

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/status_bar_latest_event_content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
    <ImageView android:id="@+id/icon"
        android:layout_width="@dimen/notification_large_icon_width"
        android:layout_height="@dimen/notification_large_icon_height"
        android:background="@android:drawable/notify_panel_notification_icon_bg_tile"
        android:scaleType="center"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="fill_vertical"
        android:layout_marginLeft="@dimen/notification_large_icon_width"
        android:minHeight="@dimen/notification_large_icon_height"
        android:orientation="vertical"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:paddingTop="4dp"
        android:paddingBottom="4dp"
        android:gravity="center_vertical"
        >
        <LinearLayout
            android:id="@+id/line1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >
            <TextView android:id="@+id/title"
                android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:ellipsize="marquee"
                android:fadingEdge="horizontal"
                android:layout_weight="1"
                />
            <ViewStub android:id="@+id/time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="0"
                android:visibility="gone"
                android:layout="@layout/notification_template_part_time"
                />
            <ViewStub android:id="@+id/chronometer"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="0"
                android:visibility="gone"
                android:layout="@layout/notification_template_part_chronometer"
                />
        </LinearLayout>
        <TextView android:id="@+id/text2"
            android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Line2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="-2dp"
            android:layout_marginBottom="-2dp"
            android:singleLine="true"
            android:fadingEdge="horizontal"
            android:ellipsize="marquee"
            android:visibility="gone"
            />
        <TextView android:id="@+id/inbox_text0"
            android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:ellipsize="end"
            android:visibility="gone"
            />
        <TextView android:id="@+id/inbox_text1"
            android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:ellipsize="end"
            android:visibility="gone"
            />
        <TextView android:id="@+id/inbox_text2"
            android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:ellipsize="end"
            android:visibility="gone"
            />
        <TextView android:id="@+id/inbox_text3"
            android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:ellipsize="end"
            android:visibility="gone"
            />
        <TextView android:id="@+id/inbox_text4"
            android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:ellipsize="end"
            android:visibility="gone"
            />
        <LinearLayout
            android:id="@+id/line3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >
            <TextView android:id="@+id/text"
                android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_gravity="center"
                android:singleLine="true"
                android:ellipsize="marquee"
                android:fadingEdge="horizontal"
                />
            <TextView android:id="@+id/info"
                android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Info"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="0"
                android:singleLine="true"
                android:gravity="center"
                android:paddingLeft="8dp"
                />
            <ImageView android:id="@+id/right_icon"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="0"
                android:scaleType="center"
                android:paddingLeft="8dp"
                android:visibility="gone"
                android:drawableAlpha="180"
                />
        </LinearLayout>
        <ProgressBar
            android:id="@android:id/progress"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="gone"
            style="?android:attr/progressBarStyleHorizontal"
            />
        <LinearLayout
        	android:id="@+id/actions"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="gone"
	        >
	        <!-- actions will be added here -->
        </LinearLayout>
    </LinearLayout>
</FrameLayout>
+6 −0
Original line number Diff line number Diff line
@@ -205,6 +205,11 @@
  <java-symbol type="id" name="big_picture" />
  <java-symbol type="id" name="big_text" />
  <java-symbol type="id" name="chronometer" />
  <java-symbol type="id" name="inbox_text0" />
  <java-symbol type="id" name="inbox_text1" />
  <java-symbol type="id" name="inbox_text2" />
  <java-symbol type="id" name="inbox_text3" />
  <java-symbol type="id" name="inbox_text4" />

  <java-symbol type="attr" name="actionModeShareDrawable" />
  <java-symbol type="attr" name="alertDialogCenterButtons" />
@@ -1084,6 +1089,7 @@
  <java-symbol type="layout" name="notification_template_big_picture" />
  <java-symbol type="layout" name="notification_template_part_time" />
  <java-symbol type="layout" name="notification_template_part_chronometer" />
  <java-symbol type="layout" name="notification_template_inbox" />

  <java-symbol type="anim" name="slide_in_child_bottom" />
  <java-symbol type="anim" name="slide_in_right" />