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

Commit b9a6d4d0 authored by Daniel Sandler's avatar Daniel Sandler Committed by Android (Google) Code Review
Browse files

Merge "New InboxStyle template for expanded notifications."

parents e1e87485 879c5e07
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -3775,6 +3775,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" />
@@ -1085,6 +1090,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" />